@statezero/core 0.2.36 → 0.2.38

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 (301) hide show
  1. package/dist/adaptors/vue/components/LayoutRenderer.js +166 -0
  2. package/dist/adaptors/vue/components/defaults/AlertElement.js +31 -0
  3. package/dist/adaptors/vue/components/defaults/DisplayElement.js +44 -0
  4. package/dist/adaptors/vue/components/defaults/DividerElement.js +10 -0
  5. package/dist/adaptors/vue/components/defaults/ErrorBlock.js +24 -0
  6. package/dist/adaptors/vue/components/defaults/GroupElement.js +41 -0
  7. package/dist/adaptors/vue/components/defaults/LabelElement.js +21 -0
  8. package/dist/adaptors/vue/components/defaults/TabsElement.js +38 -0
  9. package/package.json +7 -6
  10. package/dist/actions/backend1/django_app/calculate-hash.d.ts +0 -57
  11. package/dist/actions/backend1/django_app/calculate-hash.js +0 -80
  12. package/dist/actions/backend1/django_app/calculate-hash.schema.json +0 -148
  13. package/dist/actions/backend1/django_app/get-current-username.d.ts +0 -29
  14. package/dist/actions/backend1/django_app/get-current-username.js +0 -65
  15. package/dist/actions/backend1/django_app/get-current-username.schema.json +0 -47
  16. package/dist/actions/backend1/django_app/get-server-status.d.ts +0 -38
  17. package/dist/actions/backend1/django_app/get-server-status.js +0 -68
  18. package/dist/actions/backend1/django_app/get-server-status.schema.json +0 -93
  19. package/dist/actions/backend1/django_app/get-user-info.d.ts +0 -44
  20. package/dist/actions/backend1/django_app/get-user-info.js +0 -70
  21. package/dist/actions/backend1/django_app/get-user-info.schema.json +0 -127
  22. package/dist/actions/backend1/django_app/index.d.ts +0 -1
  23. package/dist/actions/backend1/django_app/index.js +0 -6
  24. package/dist/actions/backend1/django_app/process-data.d.ts +0 -51
  25. package/dist/actions/backend1/django_app/process-data.js +0 -78
  26. package/dist/actions/backend1/django_app/process-data.schema.json +0 -117
  27. package/dist/actions/backend1/django_app/send-notification.d.ts +0 -55
  28. package/dist/actions/backend1/django_app/send-notification.js +0 -81
  29. package/dist/actions/backend1/django_app/send-notification.schema.json +0 -175
  30. package/dist/actions/backend1/index.d.ts +0 -1
  31. package/dist/actions/backend1/index.js +0 -1
  32. package/dist/actions/default/django_app/calculate-hash.d.ts +0 -57
  33. package/dist/actions/default/django_app/calculate-hash.js +0 -80
  34. package/dist/actions/default/django_app/calculate-hash.schema.json +0 -148
  35. package/dist/actions/default/django_app/get-current-username.d.ts +0 -29
  36. package/dist/actions/default/django_app/get-current-username.js +0 -65
  37. package/dist/actions/default/django_app/get-current-username.schema.json +0 -47
  38. package/dist/actions/default/django_app/get-server-status.d.ts +0 -38
  39. package/dist/actions/default/django_app/get-server-status.js +0 -68
  40. package/dist/actions/default/django_app/get-server-status.schema.json +0 -93
  41. package/dist/actions/default/django_app/get-user-info.d.ts +0 -44
  42. package/dist/actions/default/django_app/get-user-info.js +0 -70
  43. package/dist/actions/default/django_app/get-user-info.schema.json +0 -127
  44. package/dist/actions/default/django_app/index.d.ts +0 -1
  45. package/dist/actions/default/django_app/index.js +0 -6
  46. package/dist/actions/default/django_app/process-data.d.ts +0 -51
  47. package/dist/actions/default/django_app/process-data.js +0 -78
  48. package/dist/actions/default/django_app/process-data.schema.json +0 -117
  49. package/dist/actions/default/django_app/send-notification.d.ts +0 -55
  50. package/dist/actions/default/django_app/send-notification.js +0 -81
  51. package/dist/actions/default/django_app/send-notification.schema.json +0 -175
  52. package/dist/actions/default/index.d.ts +0 -1
  53. package/dist/actions/default/index.js +0 -1
  54. package/dist/actions/index.d.ts +0 -1
  55. package/dist/actions/index.js +0 -5
  56. package/dist/adaptors/react/composables.d.ts +0 -1
  57. package/dist/adaptors/react/composables.js +0 -4
  58. package/dist/adaptors/react/index.d.ts +0 -1
  59. package/dist/adaptors/react/index.js +0 -1
  60. package/dist/adaptors/vue/components/defaults/index.d.ts +0 -7
  61. package/dist/adaptors/vue/components/defaults/index.js +0 -31
  62. package/dist/adaptors/vue/components/index.d.ts +0 -1
  63. package/dist/adaptors/vue/components/index.js +0 -7
  64. package/dist/adaptors/vue/composables.d.ts +0 -2
  65. package/dist/adaptors/vue/composables.js +0 -44
  66. package/dist/adaptors/vue/index.d.ts +0 -3
  67. package/dist/adaptors/vue/index.js +0 -4
  68. package/dist/adaptors/vue/reactivity.d.ts +0 -18
  69. package/dist/adaptors/vue/reactivity.js +0 -132
  70. package/dist/cli/commands/sync.d.ts +0 -6
  71. package/dist/cli/commands/sync.js +0 -30
  72. package/dist/cli/commands/syncActions.d.ts +0 -46
  73. package/dist/cli/commands/syncActions.js +0 -717
  74. package/dist/cli/commands/syncModels.d.ts +0 -132
  75. package/dist/cli/commands/syncModels.js +0 -1120
  76. package/dist/cli/configFileLoader.d.ts +0 -10
  77. package/dist/cli/configFileLoader.js +0 -85
  78. package/dist/cli/index.d.ts +0 -2
  79. package/dist/cli/index.js +0 -22
  80. package/dist/config.d.ts +0 -57
  81. package/dist/config.js +0 -273
  82. package/dist/core/eventReceivers.d.ts +0 -185
  83. package/dist/core/eventReceivers.js +0 -266
  84. package/dist/core/utils.d.ts +0 -8
  85. package/dist/core/utils.js +0 -62
  86. package/dist/errorHandler.d.ts +0 -21
  87. package/dist/errorHandler.js +0 -27
  88. package/dist/filtering/localFiltering.d.ts +0 -110
  89. package/dist/filtering/localFiltering.js +0 -1080
  90. package/dist/flavours/django/dates.d.ts +0 -34
  91. package/dist/flavours/django/dates.js +0 -113
  92. package/dist/flavours/django/errors.d.ts +0 -138
  93. package/dist/flavours/django/errors.js +0 -195
  94. package/dist/flavours/django/f.d.ts +0 -6
  95. package/dist/flavours/django/f.js +0 -91
  96. package/dist/flavours/django/files.d.ts +0 -62
  97. package/dist/flavours/django/files.js +0 -355
  98. package/dist/flavours/django/makeApiCall.d.ts +0 -36
  99. package/dist/flavours/django/makeApiCall.js +0 -169
  100. package/dist/flavours/django/manager.d.ts +0 -204
  101. package/dist/flavours/django/manager.js +0 -222
  102. package/dist/flavours/django/model.d.ts +0 -137
  103. package/dist/flavours/django/model.js +0 -366
  104. package/dist/flavours/django/operationFactory.d.ts +0 -73
  105. package/dist/flavours/django/operationFactory.js +0 -248
  106. package/dist/flavours/django/q.d.ts +0 -70
  107. package/dist/flavours/django/q.js +0 -43
  108. package/dist/flavours/django/queryExecutor.d.ts +0 -149
  109. package/dist/flavours/django/queryExecutor.js +0 -590
  110. package/dist/flavours/django/querySet.d.ts +0 -301
  111. package/dist/flavours/django/querySet.js +0 -736
  112. package/dist/flavours/django/serializers.d.ts +0 -39
  113. package/dist/flavours/django/serializers.js +0 -296
  114. package/dist/flavours/django/tempPk.d.ts +0 -31
  115. package/dist/flavours/django/tempPk.js +0 -92
  116. package/dist/flavours/django/utils.d.ts +0 -19
  117. package/dist/flavours/django/utils.js +0 -29
  118. package/dist/index.d.ts +0 -46
  119. package/dist/index.js +0 -48
  120. package/dist/models/backend1/django_app/comprehensivemodel.d.ts +0 -894
  121. package/dist/models/backend1/django_app/comprehensivemodel.js +0 -71
  122. package/dist/models/backend1/django_app/comprehensivemodel.schema.json +0 -870
  123. package/dist/models/backend1/django_app/custompkmodel.d.ts +0 -92
  124. package/dist/models/backend1/django_app/custompkmodel.js +0 -69
  125. package/dist/models/backend1/django_app/custompkmodel.schema.json +0 -71
  126. package/dist/models/backend1/django_app/dailyrate.d.ts +0 -230
  127. package/dist/models/backend1/django_app/dailyrate.js +0 -71
  128. package/dist/models/backend1/django_app/dailyrate.schema.json +0 -212
  129. package/dist/models/backend1/django_app/deepmodellevel1.d.ts +0 -140
  130. package/dist/models/backend1/django_app/deepmodellevel1.js +0 -72
  131. package/dist/models/backend1/django_app/deepmodellevel1.schema.json +0 -114
  132. package/dist/models/backend1/django_app/deepmodellevel2.d.ts +0 -118
  133. package/dist/models/backend1/django_app/deepmodellevel2.js +0 -71
  134. package/dist/models/backend1/django_app/deepmodellevel2.schema.json +0 -92
  135. package/dist/models/backend1/django_app/deepmodellevel3.d.ts +0 -92
  136. package/dist/models/backend1/django_app/deepmodellevel3.js +0 -69
  137. package/dist/models/backend1/django_app/deepmodellevel3.schema.json +0 -69
  138. package/dist/models/backend1/django_app/dummymodel.d.ts +0 -134
  139. package/dist/models/backend1/django_app/dummymodel.js +0 -71
  140. package/dist/models/backend1/django_app/dummymodel.schema.json +0 -109
  141. package/dist/models/backend1/django_app/dummyrelatedmodel.d.ts +0 -92
  142. package/dist/models/backend1/django_app/dummyrelatedmodel.js +0 -69
  143. package/dist/models/backend1/django_app/dummyrelatedmodel.schema.json +0 -69
  144. package/dist/models/backend1/django_app/filetest.d.ts +0 -140
  145. package/dist/models/backend1/django_app/filetest.js +0 -69
  146. package/dist/models/backend1/django_app/filetest.schema.json +0 -111
  147. package/dist/models/backend1/django_app/index.d.ts +0 -1
  148. package/dist/models/backend1/django_app/index.js +0 -21
  149. package/dist/models/backend1/django_app/m2mdepthtestlevel1.d.ts +0 -118
  150. package/dist/models/backend1/django_app/m2mdepthtestlevel1.js +0 -71
  151. package/dist/models/backend1/django_app/m2mdepthtestlevel1.schema.json +0 -94
  152. package/dist/models/backend1/django_app/m2mdepthtestlevel2.d.ts +0 -118
  153. package/dist/models/backend1/django_app/m2mdepthtestlevel2.js +0 -71
  154. package/dist/models/backend1/django_app/m2mdepthtestlevel2.schema.json +0 -94
  155. package/dist/models/backend1/django_app/m2mdepthtestlevel3.d.ts +0 -134
  156. package/dist/models/backend1/django_app/m2mdepthtestlevel3.js +0 -71
  157. package/dist/models/backend1/django_app/m2mdepthtestlevel3.schema.json +0 -112
  158. package/dist/models/backend1/django_app/modelwithcustompkrelation.d.ts +0 -118
  159. package/dist/models/backend1/django_app/modelwithcustompkrelation.js +0 -71
  160. package/dist/models/backend1/django_app/modelwithcustompkrelation.schema.json +0 -93
  161. package/dist/models/backend1/django_app/modelwithrestrictedfields.d.ts +0 -134
  162. package/dist/models/backend1/django_app/modelwithrestrictedfields.js +0 -71
  163. package/dist/models/backend1/django_app/modelwithrestrictedfields.schema.json +0 -111
  164. package/dist/models/backend1/django_app/namefiltercustompkmodel.d.ts +0 -92
  165. package/dist/models/backend1/django_app/namefiltercustompkmodel.js +0 -69
  166. package/dist/models/backend1/django_app/namefiltercustompkmodel.schema.json +0 -71
  167. package/dist/models/backend1/django_app/order.d.ts +0 -220
  168. package/dist/models/backend1/django_app/order.js +0 -71
  169. package/dist/models/backend1/django_app/order.schema.json +0 -203
  170. package/dist/models/backend1/django_app/orderitem.d.ts +0 -172
  171. package/dist/models/backend1/django_app/orderitem.js +0 -72
  172. package/dist/models/backend1/django_app/orderitem.schema.json +0 -149
  173. package/dist/models/backend1/django_app/product.d.ts +0 -254
  174. package/dist/models/backend1/django_app/product.js +0 -71
  175. package/dist/models/backend1/django_app/product.schema.json +0 -277
  176. package/dist/models/backend1/django_app/productcategory.d.ts +0 -92
  177. package/dist/models/backend1/django_app/productcategory.js +0 -69
  178. package/dist/models/backend1/django_app/productcategory.schema.json +0 -70
  179. package/dist/models/backend1/django_app/rateplan.d.ts +0 -92
  180. package/dist/models/backend1/django_app/rateplan.js +0 -69
  181. package/dist/models/backend1/django_app/rateplan.schema.json +0 -70
  182. package/dist/models/backend1/django_app/restrictedfieldrelatedmodel.d.ts +0 -108
  183. package/dist/models/backend1/django_app/restrictedfieldrelatedmodel.js +0 -69
  184. package/dist/models/backend1/django_app/restrictedfieldrelatedmodel.schema.json +0 -87
  185. package/dist/models/backend1/fileobject.d.ts +0 -4
  186. package/dist/models/backend1/fileobject.js +0 -9
  187. package/dist/models/backend1/index.d.ts +0 -2
  188. package/dist/models/backend1/index.js +0 -2
  189. package/dist/models/default/django_app/comprehensivemodel.d.ts +0 -894
  190. package/dist/models/default/django_app/comprehensivemodel.js +0 -71
  191. package/dist/models/default/django_app/comprehensivemodel.schema.json +0 -870
  192. package/dist/models/default/django_app/custompkmodel.d.ts +0 -92
  193. package/dist/models/default/django_app/custompkmodel.js +0 -69
  194. package/dist/models/default/django_app/custompkmodel.schema.json +0 -71
  195. package/dist/models/default/django_app/dailyrate.d.ts +0 -230
  196. package/dist/models/default/django_app/dailyrate.js +0 -71
  197. package/dist/models/default/django_app/dailyrate.schema.json +0 -212
  198. package/dist/models/default/django_app/deepmodellevel1.d.ts +0 -128
  199. package/dist/models/default/django_app/deepmodellevel1.js +0 -72
  200. package/dist/models/default/django_app/deepmodellevel1.schema.json +0 -102
  201. package/dist/models/default/django_app/deepmodellevel2.d.ts +0 -106
  202. package/dist/models/default/django_app/deepmodellevel2.js +0 -71
  203. package/dist/models/default/django_app/deepmodellevel2.schema.json +0 -80
  204. package/dist/models/default/django_app/deepmodellevel3.d.ts +0 -80
  205. package/dist/models/default/django_app/deepmodellevel3.js +0 -69
  206. package/dist/models/default/django_app/deepmodellevel3.schema.json +0 -57
  207. package/dist/models/default/django_app/dummymodel.d.ts +0 -122
  208. package/dist/models/default/django_app/dummymodel.js +0 -71
  209. package/dist/models/default/django_app/dummymodel.schema.json +0 -97
  210. package/dist/models/default/django_app/dummyrelatedmodel.d.ts +0 -80
  211. package/dist/models/default/django_app/dummyrelatedmodel.js +0 -69
  212. package/dist/models/default/django_app/dummyrelatedmodel.schema.json +0 -57
  213. package/dist/models/default/django_app/filetest.d.ts +0 -128
  214. package/dist/models/default/django_app/filetest.js +0 -69
  215. package/dist/models/default/django_app/filetest.schema.json +0 -99
  216. package/dist/models/default/django_app/index.d.ts +0 -1
  217. package/dist/models/default/django_app/index.js +0 -21
  218. package/dist/models/default/django_app/m2mdepthtestlevel1.d.ts +0 -118
  219. package/dist/models/default/django_app/m2mdepthtestlevel1.js +0 -71
  220. package/dist/models/default/django_app/m2mdepthtestlevel1.schema.json +0 -94
  221. package/dist/models/default/django_app/m2mdepthtestlevel2.d.ts +0 -118
  222. package/dist/models/default/django_app/m2mdepthtestlevel2.js +0 -71
  223. package/dist/models/default/django_app/m2mdepthtestlevel2.schema.json +0 -94
  224. package/dist/models/default/django_app/m2mdepthtestlevel3.d.ts +0 -134
  225. package/dist/models/default/django_app/m2mdepthtestlevel3.js +0 -71
  226. package/dist/models/default/django_app/m2mdepthtestlevel3.schema.json +0 -112
  227. package/dist/models/default/django_app/modelwithcustompkrelation.d.ts +0 -118
  228. package/dist/models/default/django_app/modelwithcustompkrelation.js +0 -71
  229. package/dist/models/default/django_app/modelwithcustompkrelation.schema.json +0 -93
  230. package/dist/models/default/django_app/modelwithrestrictedfields.d.ts +0 -134
  231. package/dist/models/default/django_app/modelwithrestrictedfields.js +0 -71
  232. package/dist/models/default/django_app/modelwithrestrictedfields.schema.json +0 -111
  233. package/dist/models/default/django_app/namefiltercustompkmodel.d.ts +0 -92
  234. package/dist/models/default/django_app/namefiltercustompkmodel.js +0 -69
  235. package/dist/models/default/django_app/namefiltercustompkmodel.schema.json +0 -71
  236. package/dist/models/default/django_app/order.d.ts +0 -220
  237. package/dist/models/default/django_app/order.js +0 -71
  238. package/dist/models/default/django_app/order.schema.json +0 -203
  239. package/dist/models/default/django_app/orderitem.d.ts +0 -172
  240. package/dist/models/default/django_app/orderitem.js +0 -72
  241. package/dist/models/default/django_app/orderitem.schema.json +0 -149
  242. package/dist/models/default/django_app/product.d.ts +0 -254
  243. package/dist/models/default/django_app/product.js +0 -71
  244. package/dist/models/default/django_app/product.schema.json +0 -277
  245. package/dist/models/default/django_app/productcategory.d.ts +0 -92
  246. package/dist/models/default/django_app/productcategory.js +0 -69
  247. package/dist/models/default/django_app/productcategory.schema.json +0 -70
  248. package/dist/models/default/django_app/rateplan.d.ts +0 -92
  249. package/dist/models/default/django_app/rateplan.js +0 -69
  250. package/dist/models/default/django_app/rateplan.schema.json +0 -70
  251. package/dist/models/default/django_app/restrictedfieldrelatedmodel.d.ts +0 -108
  252. package/dist/models/default/django_app/restrictedfieldrelatedmodel.js +0 -69
  253. package/dist/models/default/django_app/restrictedfieldrelatedmodel.schema.json +0 -87
  254. package/dist/models/default/fileobject.d.ts +0 -4
  255. package/dist/models/default/fileobject.js +0 -9
  256. package/dist/models/default/index.d.ts +0 -2
  257. package/dist/models/default/index.js +0 -2
  258. package/dist/models/index.d.ts +0 -1
  259. package/dist/models/index.js +0 -5
  260. package/dist/react-entry.d.ts +0 -2
  261. package/dist/react-entry.js +0 -2
  262. package/dist/reactiveAdaptor.d.ts +0 -24
  263. package/dist/reactiveAdaptor.js +0 -38
  264. package/dist/reset.d.ts +0 -15
  265. package/dist/reset.js +0 -97
  266. package/dist/setup.d.ts +0 -15
  267. package/dist/setup.js +0 -33
  268. package/dist/syncEngine/cache/cache.d.ts +0 -75
  269. package/dist/syncEngine/cache/cache.js +0 -355
  270. package/dist/syncEngine/metrics/metricOptCalcs.d.ts +0 -79
  271. package/dist/syncEngine/metrics/metricOptCalcs.js +0 -284
  272. package/dist/syncEngine/registries/metricRegistry.d.ts +0 -58
  273. package/dist/syncEngine/registries/metricRegistry.js +0 -171
  274. package/dist/syncEngine/registries/modelStoreRegistry.d.ts +0 -11
  275. package/dist/syncEngine/registries/modelStoreRegistry.js +0 -63
  276. package/dist/syncEngine/registries/querysetStoreGraph.d.ts +0 -41
  277. package/dist/syncEngine/registries/querysetStoreGraph.js +0 -174
  278. package/dist/syncEngine/registries/querysetStoreRegistry.d.ts +0 -72
  279. package/dist/syncEngine/registries/querysetStoreRegistry.js +0 -335
  280. package/dist/syncEngine/stores/metricStore.d.ts +0 -55
  281. package/dist/syncEngine/stores/metricStore.js +0 -222
  282. package/dist/syncEngine/stores/modelStore.d.ts +0 -53
  283. package/dist/syncEngine/stores/modelStore.js +0 -565
  284. package/dist/syncEngine/stores/operation.d.ts +0 -139
  285. package/dist/syncEngine/stores/operation.js +0 -291
  286. package/dist/syncEngine/stores/operationEventHandlers.d.ts +0 -8
  287. package/dist/syncEngine/stores/operationEventHandlers.js +0 -322
  288. package/dist/syncEngine/stores/querysetStore.d.ts +0 -60
  289. package/dist/syncEngine/stores/querysetStore.js +0 -294
  290. package/dist/syncEngine/stores/reactivity.d.ts +0 -3
  291. package/dist/syncEngine/stores/reactivity.js +0 -4
  292. package/dist/syncEngine/stores/utils.d.ts +0 -14
  293. package/dist/syncEngine/stores/utils.js +0 -32
  294. package/dist/syncEngine/sync.d.ts +0 -46
  295. package/dist/syncEngine/sync.js +0 -389
  296. package/dist/testing.d.ts +0 -63
  297. package/dist/testing.js +0 -175
  298. package/dist/vue-entry.d.ts +0 -15
  299. package/dist/vue-entry.js +0 -7
  300. /package/{src → dist}/adaptors/vue/components/layout.css +0 -0
  301. /package/{src → dist}/adaptors/vue/components/layout.tailwind.css +0 -0
@@ -1,75 +0,0 @@
1
- /**
2
- * Simple IndexedDB key-value store with batched operations
3
- */
4
- export class IndexedDBStore {
5
- constructor(dbName: any, options?: {});
6
- dbName: any;
7
- storeName: any;
8
- batchDelay: any;
9
- version: any;
10
- resetOnErrors: any;
11
- pendingOps: any[];
12
- activeCommit: Promise<void> | null;
13
- _destroyed: boolean;
14
- dbPromise: Promise<any>;
15
- /**
16
- * Attempt to open the database, with automatic recovery if it fails
17
- */
18
- _openDatabaseWithRecovery(): Promise<any>;
19
- /**
20
- * Open the database
21
- */
22
- _openDatabase(): Promise<any>;
23
- /**
24
- * Delete the database
25
- */
26
- _deleteDatabase(): Promise<any>;
27
- /**
28
- * Retrieve a value by key
29
- */
30
- get(key: any): Promise<any>;
31
- /**
32
- * Store a value with the given key
33
- */
34
- set(key: any, value: any): Promise<any>;
35
- /**
36
- * Remove a key-value pair
37
- */
38
- delete(key: any): Promise<any>;
39
- /**
40
- * Delete the entire database
41
- */
42
- destroy(): Promise<void>;
43
- /**
44
- * Kick off a batch if none is running
45
- */
46
- _startCommitIfNeeded(): Promise<void>;
47
- /**
48
- * Add this method to the IndexedDBStore class
49
- */
50
- getAllKeys(): Promise<any>;
51
- /**
52
- * Get all entries from the store
53
- * @returns {Promise<Array<[any, any]>>} Array of [key, value] pairs
54
- */
55
- getAll(): Promise<Array<[any, any]>>;
56
- /**
57
- * Execute all pending operations in one transaction
58
- */
59
- _executeBatch(): Promise<void>;
60
- }
61
- export class Cache {
62
- constructor(dbName: any, options?: {}, onHydrated?: null);
63
- store: IndexedDBStore;
64
- localMap: Map<any, any>;
65
- hydrate(): Promise<void>;
66
- get(key: any): any;
67
- set(key: any, value: any): void;
68
- delete(key: any): void;
69
- getAllKeys(): Promise<any>;
70
- /**
71
- * Clear all entries from the cache
72
- * Clears the in-memory map and schedules deletion of all keys in IndexedDB
73
- */
74
- clear(): void;
75
- }
@@ -1,355 +0,0 @@
1
- const dbConnections = new Map();
2
- /**
3
- * Simple IndexedDB key-value store with batched operations
4
- */
5
- export class IndexedDBStore {
6
- constructor(dbName, options = {}) {
7
- this.dbName = dbName;
8
- this.storeName = options.storeName || "keyval-store";
9
- this.batchDelay = options.batchDelay || 50;
10
- this.version = options.version || 5;
11
- // List of error names or messages that should trigger database deletion
12
- this.resetOnErrors = options.resetOnErrors || [
13
- "VersionError",
14
- "InvalidStateError",
15
- "Failed to open database"
16
- ];
17
- // Queue of pending operations
18
- this.pendingOps = [];
19
- this.activeCommit = null;
20
- // Whether destroy() has been called
21
- this._destroyed = false;
22
- // Open the database once
23
- this.dbPromise = this._openDatabaseWithRecovery();
24
- }
25
- /**
26
- * Attempt to open the database, with automatic recovery if it fails
27
- */
28
- async _openDatabaseWithRecovery() {
29
- try {
30
- return await this._openDatabase();
31
- }
32
- catch (error) {
33
- // Check if this is an error type that should trigger reset
34
- const shouldReset = this.resetOnErrors.some(errorPattern => error.name === errorPattern ||
35
- error.message.includes(errorPattern));
36
- if (shouldReset) {
37
- console.warn(`[IndexedDBStore] Database error detected, attempting to reset database "${this.dbName}":`, error);
38
- try {
39
- // Delete the database
40
- await this._deleteDatabase();
41
- console.log(`[IndexedDBStore] Successfully deleted database "${this.dbName}", attempting to reopen...`);
42
- // Try to open it again at the desired version
43
- return await this._openDatabase();
44
- }
45
- catch (resetError) {
46
- console.error(`[IndexedDBStore] Failed to recover database "${this.dbName}":`, resetError);
47
- throw resetError;
48
- }
49
- }
50
- else {
51
- // Not a recoverable error
52
- throw error;
53
- }
54
- }
55
- }
56
- /**
57
- * Open the database
58
- */
59
- _openDatabase() {
60
- return new Promise((resolve, reject) => {
61
- const openRequest = indexedDB.open(this.dbName, this.version);
62
- openRequest.onupgradeneeded = () => {
63
- try {
64
- // Create the object store if it doesn't exist
65
- if (!openRequest.result.objectStoreNames.contains(this.storeName)) {
66
- openRequest.result.createObjectStore(this.storeName);
67
- }
68
- }
69
- catch (error) {
70
- console.error(`[IndexedDBStore] Error during upgrade:`, error);
71
- // Error during upgrade should reject the promise
72
- reject(error);
73
- }
74
- };
75
- openRequest.onsuccess = () => resolve(openRequest.result);
76
- openRequest.onerror = () => reject(new Error(`Failed to open database: ${openRequest.error}`));
77
- });
78
- }
79
- /**
80
- * Delete the database
81
- */
82
- _deleteDatabase() {
83
- return new Promise((resolve, reject) => {
84
- const deleteRequest = indexedDB.deleteDatabase(this.dbName);
85
- deleteRequest.onsuccess = () => resolve();
86
- deleteRequest.onerror = () => reject(new Error(`Failed to delete database: ${deleteRequest.error}`));
87
- });
88
- }
89
- /**
90
- * Retrieve a value by key
91
- */
92
- async get(key) {
93
- if (this._destroyed) {
94
- throw new Error("Database has been destroyed");
95
- }
96
- // Schedule the get in the next batch
97
- const getPromise = new Promise((resolve, reject) => {
98
- this.pendingOps.push({ operation: "get", key, resolve, reject });
99
- });
100
- // Wait for that batch to run (or reject if destroyed)
101
- await this._startCommitIfNeeded();
102
- return getPromise;
103
- }
104
- /**
105
- * Store a value with the given key
106
- */
107
- async set(key, value) {
108
- if (this._destroyed) {
109
- throw new Error("Database has been destroyed");
110
- }
111
- // Schedule the set in the next batch with a promise
112
- const setPromise = new Promise((resolve, reject) => {
113
- this.pendingOps.push({ operation: "set", key, value, resolve, reject });
114
- });
115
- // Wait for that batch to run (or reject if destroyed)
116
- await this._startCommitIfNeeded();
117
- return setPromise;
118
- }
119
- /**
120
- * Remove a key-value pair
121
- */
122
- async delete(key) {
123
- if (this._destroyed) {
124
- throw new Error("Database has been destroyed");
125
- }
126
- // Schedule the delete in the next batch with a promise
127
- const deletePromise = new Promise((resolve, reject) => {
128
- this.pendingOps.push({ operation: "delete", key, resolve, reject });
129
- });
130
- // Wait for that batch to run (or reject if destroyed)
131
- await this._startCommitIfNeeded();
132
- return deletePromise;
133
- }
134
- /**
135
- * Delete the entire database
136
- */
137
- async destroy() {
138
- // Prevent any future actions
139
- this._destroyed = true;
140
- // Reject all pending operations
141
- const error = new Error("Database has been destroyed");
142
- for (const op of this.pendingOps) {
143
- if (op.reject) {
144
- op.reject(error);
145
- }
146
- }
147
- this.pendingOps = [];
148
- try {
149
- // Close current connection if we have one
150
- const db = await this.dbPromise;
151
- db.close();
152
- // Drop the whole database
153
- await new Promise((resolve, reject) => {
154
- const deleteRequest = indexedDB.deleteDatabase(this.dbName);
155
- deleteRequest.onsuccess = () => resolve();
156
- deleteRequest.onerror = () => reject(deleteRequest.error);
157
- });
158
- }
159
- catch (error) {
160
- // If database opening failed, we can safely ignore this
161
- // as there's no active connection to close
162
- }
163
- }
164
- /**
165
- * Kick off a batch if none is running
166
- */
167
- _startCommitIfNeeded() {
168
- if (this._destroyed) {
169
- return Promise.reject(new Error("Database has been destroyed"));
170
- }
171
- if (!this.activeCommit) {
172
- this.activeCommit = this._executeBatch();
173
- }
174
- return this.activeCommit;
175
- }
176
- /**
177
- * Add this method to the IndexedDBStore class
178
- */
179
- async getAllKeys() {
180
- if (this._destroyed) {
181
- throw new Error("Database has been destroyed");
182
- }
183
- const db = await this.dbPromise;
184
- const tx = db.transaction(this.storeName, "readonly");
185
- const store = tx.objectStore(this.storeName);
186
- return new Promise((resolve, reject) => {
187
- const request = store.getAllKeys();
188
- request.onsuccess = () => resolve(request.result);
189
- request.onerror = () => reject(request.error);
190
- });
191
- }
192
- /**
193
- * Get all entries from the store
194
- * @returns {Promise<Array<[any, any]>>} Array of [key, value] pairs
195
- */
196
- async getAll() {
197
- if (this._destroyed) {
198
- throw new Error("Database has been destroyed");
199
- }
200
- // Use a direct transaction for better performance with large datasets
201
- const db = await this.dbPromise;
202
- const tx = db.transaction(this.storeName, "readonly");
203
- const store = tx.objectStore(this.storeName);
204
- // Get all keys and values
205
- const keysRequest = store.getAllKeys();
206
- const valuesRequest = store.getAll();
207
- // Wait for both requests to complete
208
- const [keys, values] = await Promise.all([
209
- new Promise((resolve, reject) => {
210
- keysRequest.onsuccess = () => resolve(keysRequest.result);
211
- keysRequest.onerror = () => reject(keysRequest.error);
212
- }),
213
- new Promise((resolve, reject) => {
214
- valuesRequest.onsuccess = () => resolve(valuesRequest.result);
215
- valuesRequest.onerror = () => reject(valuesRequest.error);
216
- })
217
- ]);
218
- // Combine keys and values into entries
219
- return keys.map((key, index) => [key, values[index]]);
220
- }
221
- /**
222
- * Execute all pending operations in one transaction
223
- */
224
- async _executeBatch() {
225
- // Brief pause so multiple ops can be coalesced
226
- await new Promise((r) => setTimeout(r, this.batchDelay));
227
- try {
228
- // If we were destroyed in the meantime, abort and reject all pending operations
229
- if (this._destroyed) {
230
- const error = new Error("Database has been destroyed");
231
- // Reject all pending operations
232
- for (const op of this.pendingOps) {
233
- if (op.reject) {
234
- op.reject(error);
235
- }
236
- }
237
- this.pendingOps = [];
238
- return;
239
- }
240
- const db = await this.dbPromise;
241
- const tx = db.transaction(this.storeName, "readwrite");
242
- const store = tx.objectStore(this.storeName);
243
- // Drain the queue
244
- for (const op of this.pendingOps) {
245
- switch (op.operation) {
246
- case "get": {
247
- const req = store.get(op.key);
248
- req.onsuccess = () => op.resolve(req.result);
249
- req.onerror = () => op.reject(req.error);
250
- break;
251
- }
252
- case "set": {
253
- const req = store.put(op.value, op.key);
254
- req.onsuccess = () => op.resolve();
255
- req.onerror = () => op.reject(req.error);
256
- break;
257
- }
258
- case "delete": {
259
- const req = store.delete(op.key);
260
- req.onsuccess = () => op.resolve();
261
- req.onerror = () => op.reject(req.error);
262
- break;
263
- }
264
- }
265
- }
266
- this.pendingOps = [];
267
- // Wait for the transaction to finish or fail
268
- await new Promise((resolve, reject) => {
269
- tx.oncomplete = () => resolve();
270
- tx.onerror = () => reject(tx.error);
271
- tx.onabort = (e) => reject(e.target.error);
272
- });
273
- }
274
- catch (error) {
275
- // If there's an error, make sure to reject all pending operations that have a reject function
276
- for (const op of this.pendingOps) {
277
- if (op.reject) {
278
- op.reject(error);
279
- }
280
- }
281
- this.pendingOps = [];
282
- throw error; // Re-throw to propagate the error
283
- }
284
- finally {
285
- // Allow a new batch to start
286
- this.activeCommit = null;
287
- }
288
- }
289
- }
290
- export class Cache {
291
- constructor(dbName, options = {}, onHydrated = null) {
292
- this.store = new IndexedDBStore(dbName, options);
293
- this.localMap = new Map();
294
- // don't await - will hydrate during app setup
295
- this.hydrate()
296
- .then(result => {
297
- if (typeof onHydrated === 'function') {
298
- onHydrated(result);
299
- }
300
- })
301
- .catch(err => {
302
- console.error(`Cache hydration failed for "${dbName}":`, err);
303
- });
304
- }
305
- async hydrate() {
306
- this.localMap = new Map(await this.store.getAll());
307
- }
308
- get(key) {
309
- return this.localMap.get(key);
310
- }
311
- set(key, value) {
312
- this.localMap.set(key, value);
313
- try {
314
- this.store.set(key, structuredClone(value));
315
- }
316
- catch (e) {
317
- const badFields = Object.entries(value).map(([k, v]) => {
318
- try {
319
- structuredClone(v);
320
- return null;
321
- }
322
- catch {
323
- return k;
324
- }
325
- }).filter(Boolean);
326
- console.warn(`Cache.set failed for "${key}", problematic fields: ${badFields.join(', ')}`, e.message);
327
- }
328
- }
329
- delete(key) {
330
- this.localMap.delete(key);
331
- this.store.delete(key);
332
- }
333
- async getAllKeys() {
334
- return await this.store.getAllKeys();
335
- }
336
- /**
337
- * Clear all entries from the cache
338
- * Clears the in-memory map and schedules deletion of all keys in IndexedDB
339
- */
340
- clear() {
341
- // Clear the in-memory map
342
- this.localMap.clear();
343
- // Get all keys from the store and delete them
344
- this.store.getAll()
345
- .then(entries => {
346
- // Delete each key from the store
347
- entries.forEach(([key]) => {
348
- this.store.delete(key);
349
- });
350
- })
351
- .catch(err => {
352
- console.error('Error clearing cache:', err);
353
- });
354
- }
355
- }
@@ -1,79 +0,0 @@
1
- /**
2
- * Base class for metric calculation strategies with operations
3
- */
4
- export class MetricCalculationStrategy {
5
- /**
6
- * Calculate metric based on ground truth and operations
7
- */
8
- calculateWithOperations(baseValue: any, operations: any, field: any, ModelClass: any): any;
9
- /**
10
- * Get initial value for the metric type
11
- * Override in subclasses if needed
12
- */
13
- getInitialValue(): number;
14
- /**
15
- * Process a single operation - implement in subclasses
16
- */
17
- reduceOperation(currentValue: any, operation: any, field: any): void;
18
- /**
19
- * Safely get a numeric value from an object
20
- */
21
- safeGetValue(obj: any, field: any): number;
22
- }
23
- /**
24
- * Count strategy implementation
25
- */
26
- export class CountStrategy extends MetricCalculationStrategy {
27
- reduceOperation(currentCount: any, operation: any, field: any): any;
28
- }
29
- /**
30
- * Sum strategy implementation
31
- */
32
- export class SumStrategy extends MetricCalculationStrategy {
33
- reduceOperation(currentSum: any, operation: any, field: any): any;
34
- }
35
- /**
36
- * Min strategy implementation
37
- */
38
- export class MinStrategy extends MetricCalculationStrategy {
39
- reduceOperation(currentMin: any, operation: any, field: any): any;
40
- }
41
- /**
42
- * Max strategy implementation
43
- */
44
- export class MaxStrategy extends MetricCalculationStrategy {
45
- reduceOperation(currentMax: any, operation: any, field: any): any;
46
- }
47
- /**
48
- * Factory class for creating the appropriate strategy
49
- */
50
- export class MetricStrategyFactory {
51
- static "__#private@#customStrategies": Map<any, any>;
52
- static "__#private@#defaultStrategies": Map<string, () => CountStrategy>;
53
- /**
54
- * Clear all custom strategy overrides
55
- */
56
- static clearCustomStrategies(): void;
57
- /**
58
- * Generate a unique key for the strategy map
59
- * @private
60
- * @param {string} metricType - The type of metric (count, sum, min, max)
61
- * @param {Function} ModelClass - The model class
62
- * @returns {string} A unique key
63
- */
64
- private static "__#private@#generateStrategyKey";
65
- /**
66
- * Override a strategy for a specific metric type and model class
67
- * @param {string} metricType - The type of metric (count, sum, min, max)
68
- * @param {Function|null} ModelClass - The model class or null for a generic override
69
- * @param {MetricCalculationStrategy} strategy - The strategy to use
70
- */
71
- static overrideStrategy(metricType: string, ModelClass: Function | null, strategy: MetricCalculationStrategy): void;
72
- /**
73
- * Get the appropriate strategy for a model class and metric type
74
- * @param {string} metricType - The type of metric (count, sum, min, max)
75
- * @param {Function} ModelClass - The model class
76
- * @returns {MetricCalculationStrategy} The appropriate strategy
77
- */
78
- static getStrategy(metricType: string, ModelClass: Function): MetricCalculationStrategy;
79
- }