@statezero/core 0.2.38 → 0.2.40

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 (294) hide show
  1. package/dist/actions/backend1/django_app/calculate-hash.d.ts +57 -0
  2. package/dist/actions/backend1/django_app/calculate-hash.js +80 -0
  3. package/dist/actions/backend1/django_app/calculate-hash.schema.json +148 -0
  4. package/dist/actions/backend1/django_app/get-current-username.d.ts +29 -0
  5. package/dist/actions/backend1/django_app/get-current-username.js +65 -0
  6. package/dist/actions/backend1/django_app/get-current-username.schema.json +47 -0
  7. package/dist/actions/backend1/django_app/get-server-status.d.ts +38 -0
  8. package/dist/actions/backend1/django_app/get-server-status.js +68 -0
  9. package/dist/actions/backend1/django_app/get-server-status.schema.json +93 -0
  10. package/dist/actions/backend1/django_app/get-user-info.d.ts +44 -0
  11. package/dist/actions/backend1/django_app/get-user-info.js +70 -0
  12. package/dist/actions/backend1/django_app/get-user-info.schema.json +127 -0
  13. package/dist/actions/backend1/django_app/index.d.ts +1 -0
  14. package/dist/actions/backend1/django_app/index.js +6 -0
  15. package/dist/actions/backend1/django_app/process-data.d.ts +51 -0
  16. package/dist/actions/backend1/django_app/process-data.js +78 -0
  17. package/dist/actions/backend1/django_app/process-data.schema.json +117 -0
  18. package/dist/actions/backend1/django_app/send-notification.d.ts +55 -0
  19. package/dist/actions/backend1/django_app/send-notification.js +81 -0
  20. package/dist/actions/backend1/django_app/send-notification.schema.json +175 -0
  21. package/dist/actions/backend1/index.d.ts +1 -0
  22. package/dist/actions/backend1/index.js +1 -0
  23. package/dist/actions/default/django_app/calculate-hash.d.ts +57 -0
  24. package/dist/actions/default/django_app/calculate-hash.js +80 -0
  25. package/dist/actions/default/django_app/calculate-hash.schema.json +148 -0
  26. package/dist/actions/default/django_app/get-current-username.d.ts +29 -0
  27. package/dist/actions/default/django_app/get-current-username.js +65 -0
  28. package/dist/actions/default/django_app/get-current-username.schema.json +47 -0
  29. package/dist/actions/default/django_app/get-server-status.d.ts +38 -0
  30. package/dist/actions/default/django_app/get-server-status.js +68 -0
  31. package/dist/actions/default/django_app/get-server-status.schema.json +93 -0
  32. package/dist/actions/default/django_app/get-user-info.d.ts +44 -0
  33. package/dist/actions/default/django_app/get-user-info.js +70 -0
  34. package/dist/actions/default/django_app/get-user-info.schema.json +127 -0
  35. package/dist/actions/default/django_app/index.d.ts +1 -0
  36. package/dist/actions/default/django_app/index.js +6 -0
  37. package/dist/actions/default/django_app/process-data.d.ts +51 -0
  38. package/dist/actions/default/django_app/process-data.js +78 -0
  39. package/dist/actions/default/django_app/process-data.schema.json +117 -0
  40. package/dist/actions/default/django_app/send-notification.d.ts +55 -0
  41. package/dist/actions/default/django_app/send-notification.js +81 -0
  42. package/dist/actions/default/django_app/send-notification.schema.json +175 -0
  43. package/dist/actions/default/index.d.ts +1 -0
  44. package/dist/actions/default/index.js +1 -0
  45. package/dist/actions/index.d.ts +1 -0
  46. package/dist/actions/index.js +5 -0
  47. package/dist/adaptors/react/composables.d.ts +1 -0
  48. package/dist/adaptors/react/composables.js +4 -0
  49. package/dist/adaptors/react/index.d.ts +1 -0
  50. package/dist/adaptors/react/index.js +1 -0
  51. package/dist/adaptors/vue/components/LayoutRenderer.js +46 -49
  52. package/dist/adaptors/vue/components/defaults/index.d.ts +7 -0
  53. package/dist/adaptors/vue/components/defaults/index.js +31 -0
  54. package/dist/adaptors/vue/components/index.d.ts +1 -0
  55. package/dist/adaptors/vue/components/index.js +7 -0
  56. package/dist/adaptors/vue/composables.d.ts +2 -0
  57. package/dist/adaptors/vue/composables.js +44 -0
  58. package/dist/adaptors/vue/index.d.ts +3 -0
  59. package/dist/adaptors/vue/index.js +4 -0
  60. package/dist/adaptors/vue/reactivity.d.ts +18 -0
  61. package/dist/adaptors/vue/reactivity.js +132 -0
  62. package/dist/cli/commands/sync.d.ts +6 -0
  63. package/dist/cli/commands/sync.js +30 -0
  64. package/dist/cli/commands/syncActions.d.ts +46 -0
  65. package/dist/cli/commands/syncActions.js +717 -0
  66. package/dist/cli/commands/syncModels.d.ts +132 -0
  67. package/dist/cli/commands/syncModels.js +1120 -0
  68. package/dist/cli/configFileLoader.d.ts +10 -0
  69. package/dist/cli/configFileLoader.js +85 -0
  70. package/dist/cli/index.d.ts +2 -0
  71. package/dist/cli/index.js +22 -0
  72. package/dist/config.d.ts +57 -0
  73. package/dist/config.js +273 -0
  74. package/dist/core/eventReceivers.d.ts +185 -0
  75. package/dist/core/eventReceivers.js +266 -0
  76. package/dist/core/utils.d.ts +8 -0
  77. package/dist/core/utils.js +62 -0
  78. package/dist/errorHandler.d.ts +21 -0
  79. package/dist/errorHandler.js +27 -0
  80. package/dist/filtering/localFiltering.d.ts +110 -0
  81. package/dist/filtering/localFiltering.js +1080 -0
  82. package/dist/flavours/django/dates.d.ts +34 -0
  83. package/dist/flavours/django/dates.js +113 -0
  84. package/dist/flavours/django/errors.d.ts +138 -0
  85. package/dist/flavours/django/errors.js +195 -0
  86. package/dist/flavours/django/f.d.ts +6 -0
  87. package/dist/flavours/django/f.js +91 -0
  88. package/dist/flavours/django/files.d.ts +62 -0
  89. package/dist/flavours/django/files.js +355 -0
  90. package/dist/flavours/django/makeApiCall.d.ts +36 -0
  91. package/dist/flavours/django/makeApiCall.js +169 -0
  92. package/dist/flavours/django/manager.d.ts +204 -0
  93. package/dist/flavours/django/manager.js +222 -0
  94. package/dist/flavours/django/model.d.ts +137 -0
  95. package/dist/flavours/django/model.js +366 -0
  96. package/dist/flavours/django/operationFactory.d.ts +73 -0
  97. package/dist/flavours/django/operationFactory.js +248 -0
  98. package/dist/flavours/django/q.d.ts +70 -0
  99. package/dist/flavours/django/q.js +43 -0
  100. package/dist/flavours/django/queryExecutor.d.ts +149 -0
  101. package/dist/flavours/django/queryExecutor.js +590 -0
  102. package/dist/flavours/django/querySet.d.ts +301 -0
  103. package/dist/flavours/django/querySet.js +736 -0
  104. package/dist/flavours/django/serializers.d.ts +39 -0
  105. package/dist/flavours/django/serializers.js +296 -0
  106. package/dist/flavours/django/tempPk.d.ts +31 -0
  107. package/dist/flavours/django/tempPk.js +92 -0
  108. package/dist/flavours/django/utils.d.ts +19 -0
  109. package/dist/flavours/django/utils.js +29 -0
  110. package/dist/index.d.ts +46 -0
  111. package/dist/index.js +48 -0
  112. package/dist/models/backend1/django_app/comprehensivemodel.d.ts +894 -0
  113. package/dist/models/backend1/django_app/comprehensivemodel.js +71 -0
  114. package/dist/models/backend1/django_app/comprehensivemodel.schema.json +870 -0
  115. package/dist/models/backend1/django_app/custompkmodel.d.ts +92 -0
  116. package/dist/models/backend1/django_app/custompkmodel.js +69 -0
  117. package/dist/models/backend1/django_app/custompkmodel.schema.json +71 -0
  118. package/dist/models/backend1/django_app/dailyrate.d.ts +230 -0
  119. package/dist/models/backend1/django_app/dailyrate.js +71 -0
  120. package/dist/models/backend1/django_app/dailyrate.schema.json +212 -0
  121. package/dist/models/backend1/django_app/deepmodellevel1.d.ts +140 -0
  122. package/dist/models/backend1/django_app/deepmodellevel1.js +72 -0
  123. package/dist/models/backend1/django_app/deepmodellevel1.schema.json +114 -0
  124. package/dist/models/backend1/django_app/deepmodellevel2.d.ts +118 -0
  125. package/dist/models/backend1/django_app/deepmodellevel2.js +71 -0
  126. package/dist/models/backend1/django_app/deepmodellevel2.schema.json +92 -0
  127. package/dist/models/backend1/django_app/deepmodellevel3.d.ts +92 -0
  128. package/dist/models/backend1/django_app/deepmodellevel3.js +69 -0
  129. package/dist/models/backend1/django_app/deepmodellevel3.schema.json +69 -0
  130. package/dist/models/backend1/django_app/dummymodel.d.ts +134 -0
  131. package/dist/models/backend1/django_app/dummymodel.js +71 -0
  132. package/dist/models/backend1/django_app/dummymodel.schema.json +109 -0
  133. package/dist/models/backend1/django_app/dummyrelatedmodel.d.ts +92 -0
  134. package/dist/models/backend1/django_app/dummyrelatedmodel.js +69 -0
  135. package/dist/models/backend1/django_app/dummyrelatedmodel.schema.json +69 -0
  136. package/dist/models/backend1/django_app/filetest.d.ts +140 -0
  137. package/dist/models/backend1/django_app/filetest.js +69 -0
  138. package/dist/models/backend1/django_app/filetest.schema.json +111 -0
  139. package/dist/models/backend1/django_app/index.d.ts +1 -0
  140. package/dist/models/backend1/django_app/index.js +21 -0
  141. package/dist/models/backend1/django_app/m2mdepthtestlevel1.d.ts +118 -0
  142. package/dist/models/backend1/django_app/m2mdepthtestlevel1.js +71 -0
  143. package/dist/models/backend1/django_app/m2mdepthtestlevel1.schema.json +94 -0
  144. package/dist/models/backend1/django_app/m2mdepthtestlevel2.d.ts +118 -0
  145. package/dist/models/backend1/django_app/m2mdepthtestlevel2.js +71 -0
  146. package/dist/models/backend1/django_app/m2mdepthtestlevel2.schema.json +94 -0
  147. package/dist/models/backend1/django_app/m2mdepthtestlevel3.d.ts +134 -0
  148. package/dist/models/backend1/django_app/m2mdepthtestlevel3.js +71 -0
  149. package/dist/models/backend1/django_app/m2mdepthtestlevel3.schema.json +112 -0
  150. package/dist/models/backend1/django_app/modelwithcustompkrelation.d.ts +118 -0
  151. package/dist/models/backend1/django_app/modelwithcustompkrelation.js +71 -0
  152. package/dist/models/backend1/django_app/modelwithcustompkrelation.schema.json +93 -0
  153. package/dist/models/backend1/django_app/modelwithrestrictedfields.d.ts +134 -0
  154. package/dist/models/backend1/django_app/modelwithrestrictedfields.js +71 -0
  155. package/dist/models/backend1/django_app/modelwithrestrictedfields.schema.json +111 -0
  156. package/dist/models/backend1/django_app/namefiltercustompkmodel.d.ts +92 -0
  157. package/dist/models/backend1/django_app/namefiltercustompkmodel.js +69 -0
  158. package/dist/models/backend1/django_app/namefiltercustompkmodel.schema.json +71 -0
  159. package/dist/models/backend1/django_app/order.d.ts +220 -0
  160. package/dist/models/backend1/django_app/order.js +71 -0
  161. package/dist/models/backend1/django_app/order.schema.json +203 -0
  162. package/dist/models/backend1/django_app/orderitem.d.ts +172 -0
  163. package/dist/models/backend1/django_app/orderitem.js +72 -0
  164. package/dist/models/backend1/django_app/orderitem.schema.json +149 -0
  165. package/dist/models/backend1/django_app/product.d.ts +254 -0
  166. package/dist/models/backend1/django_app/product.js +71 -0
  167. package/dist/models/backend1/django_app/product.schema.json +277 -0
  168. package/dist/models/backend1/django_app/productcategory.d.ts +92 -0
  169. package/dist/models/backend1/django_app/productcategory.js +69 -0
  170. package/dist/models/backend1/django_app/productcategory.schema.json +70 -0
  171. package/dist/models/backend1/django_app/rateplan.d.ts +92 -0
  172. package/dist/models/backend1/django_app/rateplan.js +69 -0
  173. package/dist/models/backend1/django_app/rateplan.schema.json +70 -0
  174. package/dist/models/backend1/django_app/restrictedfieldrelatedmodel.d.ts +108 -0
  175. package/dist/models/backend1/django_app/restrictedfieldrelatedmodel.js +69 -0
  176. package/dist/models/backend1/django_app/restrictedfieldrelatedmodel.schema.json +87 -0
  177. package/dist/models/backend1/fileobject.d.ts +4 -0
  178. package/dist/models/backend1/fileobject.js +9 -0
  179. package/dist/models/backend1/index.d.ts +2 -0
  180. package/dist/models/backend1/index.js +2 -0
  181. package/dist/models/default/django_app/comprehensivemodel.d.ts +894 -0
  182. package/dist/models/default/django_app/comprehensivemodel.js +71 -0
  183. package/dist/models/default/django_app/comprehensivemodel.schema.json +870 -0
  184. package/dist/models/default/django_app/custompkmodel.d.ts +92 -0
  185. package/dist/models/default/django_app/custompkmodel.js +69 -0
  186. package/dist/models/default/django_app/custompkmodel.schema.json +71 -0
  187. package/dist/models/default/django_app/dailyrate.d.ts +230 -0
  188. package/dist/models/default/django_app/dailyrate.js +71 -0
  189. package/dist/models/default/django_app/dailyrate.schema.json +212 -0
  190. package/dist/models/default/django_app/deepmodellevel1.d.ts +128 -0
  191. package/dist/models/default/django_app/deepmodellevel1.js +72 -0
  192. package/dist/models/default/django_app/deepmodellevel1.schema.json +102 -0
  193. package/dist/models/default/django_app/deepmodellevel2.d.ts +106 -0
  194. package/dist/models/default/django_app/deepmodellevel2.js +71 -0
  195. package/dist/models/default/django_app/deepmodellevel2.schema.json +80 -0
  196. package/dist/models/default/django_app/deepmodellevel3.d.ts +80 -0
  197. package/dist/models/default/django_app/deepmodellevel3.js +69 -0
  198. package/dist/models/default/django_app/deepmodellevel3.schema.json +57 -0
  199. package/dist/models/default/django_app/dummymodel.d.ts +122 -0
  200. package/dist/models/default/django_app/dummymodel.js +71 -0
  201. package/dist/models/default/django_app/dummymodel.schema.json +97 -0
  202. package/dist/models/default/django_app/dummyrelatedmodel.d.ts +80 -0
  203. package/dist/models/default/django_app/dummyrelatedmodel.js +69 -0
  204. package/dist/models/default/django_app/dummyrelatedmodel.schema.json +57 -0
  205. package/dist/models/default/django_app/filetest.d.ts +128 -0
  206. package/dist/models/default/django_app/filetest.js +69 -0
  207. package/dist/models/default/django_app/filetest.schema.json +99 -0
  208. package/dist/models/default/django_app/index.d.ts +1 -0
  209. package/dist/models/default/django_app/index.js +21 -0
  210. package/dist/models/default/django_app/m2mdepthtestlevel1.d.ts +118 -0
  211. package/dist/models/default/django_app/m2mdepthtestlevel1.js +71 -0
  212. package/dist/models/default/django_app/m2mdepthtestlevel1.schema.json +94 -0
  213. package/dist/models/default/django_app/m2mdepthtestlevel2.d.ts +118 -0
  214. package/dist/models/default/django_app/m2mdepthtestlevel2.js +71 -0
  215. package/dist/models/default/django_app/m2mdepthtestlevel2.schema.json +94 -0
  216. package/dist/models/default/django_app/m2mdepthtestlevel3.d.ts +134 -0
  217. package/dist/models/default/django_app/m2mdepthtestlevel3.js +71 -0
  218. package/dist/models/default/django_app/m2mdepthtestlevel3.schema.json +112 -0
  219. package/dist/models/default/django_app/modelwithcustompkrelation.d.ts +118 -0
  220. package/dist/models/default/django_app/modelwithcustompkrelation.js +71 -0
  221. package/dist/models/default/django_app/modelwithcustompkrelation.schema.json +93 -0
  222. package/dist/models/default/django_app/modelwithrestrictedfields.d.ts +134 -0
  223. package/dist/models/default/django_app/modelwithrestrictedfields.js +71 -0
  224. package/dist/models/default/django_app/modelwithrestrictedfields.schema.json +111 -0
  225. package/dist/models/default/django_app/namefiltercustompkmodel.d.ts +92 -0
  226. package/dist/models/default/django_app/namefiltercustompkmodel.js +69 -0
  227. package/dist/models/default/django_app/namefiltercustompkmodel.schema.json +71 -0
  228. package/dist/models/default/django_app/order.d.ts +220 -0
  229. package/dist/models/default/django_app/order.js +71 -0
  230. package/dist/models/default/django_app/order.schema.json +203 -0
  231. package/dist/models/default/django_app/orderitem.d.ts +172 -0
  232. package/dist/models/default/django_app/orderitem.js +72 -0
  233. package/dist/models/default/django_app/orderitem.schema.json +149 -0
  234. package/dist/models/default/django_app/product.d.ts +254 -0
  235. package/dist/models/default/django_app/product.js +71 -0
  236. package/dist/models/default/django_app/product.schema.json +277 -0
  237. package/dist/models/default/django_app/productcategory.d.ts +92 -0
  238. package/dist/models/default/django_app/productcategory.js +69 -0
  239. package/dist/models/default/django_app/productcategory.schema.json +70 -0
  240. package/dist/models/default/django_app/rateplan.d.ts +92 -0
  241. package/dist/models/default/django_app/rateplan.js +69 -0
  242. package/dist/models/default/django_app/rateplan.schema.json +70 -0
  243. package/dist/models/default/django_app/restrictedfieldrelatedmodel.d.ts +108 -0
  244. package/dist/models/default/django_app/restrictedfieldrelatedmodel.js +69 -0
  245. package/dist/models/default/django_app/restrictedfieldrelatedmodel.schema.json +87 -0
  246. package/dist/models/default/fileobject.d.ts +4 -0
  247. package/dist/models/default/fileobject.js +9 -0
  248. package/dist/models/default/index.d.ts +2 -0
  249. package/dist/models/default/index.js +2 -0
  250. package/dist/models/index.d.ts +1 -0
  251. package/dist/models/index.js +5 -0
  252. package/dist/react-entry.d.ts +2 -0
  253. package/dist/react-entry.js +2 -0
  254. package/dist/reactiveAdaptor.d.ts +24 -0
  255. package/dist/reactiveAdaptor.js +38 -0
  256. package/dist/reset.d.ts +15 -0
  257. package/dist/reset.js +97 -0
  258. package/dist/setup.d.ts +15 -0
  259. package/dist/setup.js +33 -0
  260. package/dist/syncEngine/cache/cache.d.ts +75 -0
  261. package/dist/syncEngine/cache/cache.js +355 -0
  262. package/dist/syncEngine/metrics/metricOptCalcs.d.ts +79 -0
  263. package/dist/syncEngine/metrics/metricOptCalcs.js +284 -0
  264. package/dist/syncEngine/registries/metricRegistry.d.ts +58 -0
  265. package/dist/syncEngine/registries/metricRegistry.js +171 -0
  266. package/dist/syncEngine/registries/modelStoreRegistry.d.ts +11 -0
  267. package/dist/syncEngine/registries/modelStoreRegistry.js +63 -0
  268. package/dist/syncEngine/registries/querysetStoreGraph.d.ts +41 -0
  269. package/dist/syncEngine/registries/querysetStoreGraph.js +174 -0
  270. package/dist/syncEngine/registries/querysetStoreRegistry.d.ts +72 -0
  271. package/dist/syncEngine/registries/querysetStoreRegistry.js +335 -0
  272. package/dist/syncEngine/stores/metricStore.d.ts +55 -0
  273. package/dist/syncEngine/stores/metricStore.js +222 -0
  274. package/dist/syncEngine/stores/modelStore.d.ts +53 -0
  275. package/dist/syncEngine/stores/modelStore.js +565 -0
  276. package/dist/syncEngine/stores/operation.d.ts +139 -0
  277. package/dist/syncEngine/stores/operation.js +291 -0
  278. package/dist/syncEngine/stores/operationEventHandlers.d.ts +8 -0
  279. package/dist/syncEngine/stores/operationEventHandlers.js +348 -0
  280. package/dist/syncEngine/stores/querysetStore.d.ts +60 -0
  281. package/dist/syncEngine/stores/querysetStore.js +294 -0
  282. package/dist/syncEngine/stores/reactivity.d.ts +3 -0
  283. package/dist/syncEngine/stores/reactivity.js +4 -0
  284. package/dist/syncEngine/stores/utils.d.ts +14 -0
  285. package/dist/syncEngine/stores/utils.js +32 -0
  286. package/dist/syncEngine/sync.d.ts +51 -0
  287. package/dist/syncEngine/sync.js +419 -0
  288. package/dist/testing.d.ts +63 -0
  289. package/dist/testing.js +175 -0
  290. package/dist/vue-entry.d.ts +15 -0
  291. package/dist/vue-entry.js +7 -0
  292. package/package.json +6 -7
  293. package/dist/adaptors/vue/components/layout.tailwind.css +0 -51
  294. /package/{dist → src}/adaptors/vue/components/layout.css +0 -0
@@ -0,0 +1,204 @@
1
+ /**
2
+ * @typedef {Object} SerializerOptions
3
+ * @property {number} [depth] - How deep to serialize nested objects.
4
+ * @property {string[]} [fields] - List of fields to include.
5
+ * @property {number} [limit] - Maximum number of items to retrieve.
6
+ * @property {number} [offset] - Offset for pagination.
7
+ * @property {number} [overfetch] - Overfetch additional items.
8
+ * @property {string} [namespace] - Custom namespace for real-time updates.
9
+ */
10
+ /**
11
+ * Manager class providing helper methods to work with QuerySets and models.
12
+ *
13
+ * @class Manager
14
+ */
15
+ export class Manager {
16
+ /**
17
+ * Creates a new Manager.
18
+ *
19
+ * @param {Function} ModelClass - The model's constructor.
20
+ * @param {Function} [QuerySetClass=QuerySet] - The QuerySet class to use.
21
+ */
22
+ constructor(ModelClass: Function, QuerySetClass?: Function);
23
+ ModelClass: Function;
24
+ QuerySetClass: Function;
25
+ /**
26
+ * Creates a new QuerySet instance.
27
+ *
28
+ * @returns {QuerySet} A new QuerySet instance for the model.
29
+ */
30
+ newQuerySet(): QuerySet<any>;
31
+ /**
32
+ * Retrieves a single model instance matching the provided filters.
33
+ *
34
+ * @param {Object} [filters] - The filters to apply.
35
+ * @param {SerializerOptions} [serializerOptions] - Options for serialization.
36
+ * @returns {Promise<Model>} A promise that resolves to the model instance.
37
+ */
38
+ get(filters?: Object, serializerOptions?: SerializerOptions): Promise<Model>;
39
+ /**
40
+ * Filters the QuerySet based on the provided conditions.
41
+ *
42
+ * @param {*} conditions - The filter conditions.
43
+ * @returns {QuerySet} A new QuerySet instance with the filters applied.
44
+ */
45
+ filter(conditions: any): QuerySet<any>;
46
+ /**
47
+ * Excludes the specified conditions from the QuerySet.
48
+ *
49
+ * @param {*} conditions - The conditions to exclude.
50
+ * @returns {QuerySet} A new QuerySet instance with the conditions excluded.
51
+ */
52
+ exclude(conditions: any): QuerySet<any>;
53
+ /**
54
+ * Returns a QuerySet representing all records.
55
+ *
56
+ * @returns {QuerySet} A new QuerySet instance.
57
+ */
58
+ all(): QuerySet<any>;
59
+ /**
60
+ * Returns a QuerySet that executes remotely without updating local stores.
61
+ *
62
+ * @returns {QuerySet} A remote-only QuerySet instance.
63
+ */
64
+ remote(): QuerySet<any>;
65
+ /**
66
+ * Deletes records in the QuerySet.
67
+ *
68
+ * @returns {Promise<[number, Object]>} A promise that resolves to an array where the first element is
69
+ * the number of records deleted and the second is an object with details.
70
+ */
71
+ delete(): Promise<[number, Object]>;
72
+ /**
73
+ * Counts the number of records matching the current query.
74
+ *
75
+ * @param {string} [field] - Optional field to count (defaults to 'pk')
76
+ * @returns {Promise<number>} A promise that resolves to the count
77
+ */
78
+ count(field?: string): Promise<number>;
79
+ /**
80
+ * Computes the sum of values for the specified field.
81
+ *
82
+ * @param {string} field - The field to sum
83
+ * @returns {Promise<number>} A promise that resolves to the sum
84
+ */
85
+ sum(field: string): Promise<number>;
86
+ /**
87
+ * Computes the average value for the specified field.
88
+ *
89
+ * @param {string} field - The field to average
90
+ * @returns {Promise<number>} A promise that resolves to the average
91
+ */
92
+ avg(field: string): Promise<number>;
93
+ /**
94
+ * Finds the minimum value for the specified field.
95
+ *
96
+ * @param {string} field - The field to find the minimum value for
97
+ * @returns {Promise<any>} A promise that resolves to the minimum value
98
+ */
99
+ min(field: string): Promise<any>;
100
+ /**
101
+ * Finds the maximum value for the specified field.
102
+ *
103
+ * @param {string} field - The field to find the maximum value for
104
+ * @returns {Promise<any>} A promise that resolves to the maximum value
105
+ */
106
+ max(field: string): Promise<any>;
107
+ /**
108
+ * Checks if any records exist that match the current query.
109
+ *
110
+ * @returns {Promise<boolean>} A promise that resolves to true if records exist, otherwise false
111
+ */
112
+ exists(): Promise<boolean>;
113
+ /**
114
+ * Orders the QuerySet by the provided fields.
115
+ *
116
+ * @param {...(string|any)} fields - The fields to order by. Supports nested paths and descending order
117
+ * (prefix field with '-').
118
+ * @returns {QuerySet} A new QuerySet instance with the order applied.
119
+ */
120
+ orderBy(...fields: (string | any)[]): QuerySet<any>;
121
+ /**
122
+ * Creates a new model instance using the provided data, then saves it.
123
+ *
124
+ * @param {*} data - The data to create the model instance.
125
+ * @returns {Promise<*>} A promise that resolves to the newly created model instance.
126
+ */
127
+ create(data: any): Promise<any>;
128
+ /**
129
+ * Creates multiple model instances using the provided model instances.
130
+ *
131
+ * @param {Array<Model>} modelInstances - Array of unsaved model instances to create.
132
+ * @returns {Promise<Array<*>>} A promise that resolves to an array of newly created model instances.
133
+ */
134
+ bulkCreate(modelInstances: Array<Model>): Promise<Array<any>>;
135
+ /**
136
+ * Fetches all records using the current QuerySet.
137
+ *
138
+ * @param {SerializerOptions} [serializerOptions] - Options for serialization.
139
+ * @returns {Promise<Array<*>>} A promise that resolves to an array of model instances.
140
+ */
141
+ fetch(serializerOptions?: SerializerOptions): Promise<Array<any>>;
142
+ /**
143
+ * Retrieves or creates a model instance based on lookup fields and defaults.
144
+ *
145
+ * @param {*} lookupFields - The fields to lookup the model.
146
+ * @param {Object} [defaults={}] - Default values to use when creating a new instance.
147
+ * @returns {Promise<ResultTuple>} A promise that resolves to a ResultTuple containing the model instance
148
+ * and a boolean indicating whether it was created.
149
+ */
150
+ getOrCreate(lookupFields: any, defaults?: Object): Promise<ResultTuple>;
151
+ /**
152
+ * Updates or creates a model instance based on lookup fields and defaults.
153
+ *
154
+ * @param {*} lookupFields - The fields to lookup the model.
155
+ * @param {Object} [defaults={}] - Default values to use when updating or creating the instance.
156
+ * @returns {Promise<ResultTuple>} A promise that resolves to a ResultTuple containing the model instance
157
+ * and a boolean indicating whether it was created.
158
+ */
159
+ updateOrCreate(lookupFields: any, defaults?: Object): Promise<ResultTuple>;
160
+ /**
161
+ * Applies a search to the QuerySet using the specified search query and fields.
162
+ *
163
+ * @param {string} searchQuery - The search query.
164
+ * @param {string[]} [searchFields] - The fields to search in.
165
+ * @returns {QuerySet} A new QuerySet instance with the search applied.
166
+ */
167
+ search(searchQuery: string, searchFields?: string[]): QuerySet<any>;
168
+ /**
169
+ * Returns a QuerySet marked as optimistic-only, meaning operations will only
170
+ * update local state without making backend API calls.
171
+ *
172
+ * @returns {QuerySet} A new QuerySet with optimistic-only mode enabled.
173
+ */
174
+ get optimistic(): QuerySet<any>;
175
+ }
176
+ export type SerializerOptions = {
177
+ /**
178
+ * - How deep to serialize nested objects.
179
+ */
180
+ depth?: number | undefined;
181
+ /**
182
+ * - List of fields to include.
183
+ */
184
+ fields?: string[] | undefined;
185
+ /**
186
+ * - Maximum number of items to retrieve.
187
+ */
188
+ limit?: number | undefined;
189
+ /**
190
+ * - Offset for pagination.
191
+ */
192
+ offset?: number | undefined;
193
+ /**
194
+ * - Overfetch additional items.
195
+ */
196
+ overfetch?: number | undefined;
197
+ /**
198
+ * - Custom namespace for real-time updates.
199
+ */
200
+ namespace?: string | undefined;
201
+ };
202
+ import { QuerySet } from './querySet.js';
203
+ import { Model } from './model.js';
204
+ import { ResultTuple } from './queryExecutor.js';
@@ -0,0 +1,222 @@
1
+ import { QuerySet } from './querySet.js';
2
+ import { Model } from './model.js';
3
+ import { QueryExecutor, ResultTuple } from './queryExecutor.js';
4
+ import axios from 'axios';
5
+ /**
6
+ * @typedef {Object} SerializerOptions
7
+ * @property {number} [depth] - How deep to serialize nested objects.
8
+ * @property {string[]} [fields] - List of fields to include.
9
+ * @property {number} [limit] - Maximum number of items to retrieve.
10
+ * @property {number} [offset] - Offset for pagination.
11
+ * @property {number} [overfetch] - Overfetch additional items.
12
+ * @property {string} [namespace] - Custom namespace for real-time updates.
13
+ */
14
+ /**
15
+ * Manager class providing helper methods to work with QuerySets and models.
16
+ *
17
+ * @class Manager
18
+ */
19
+ export class Manager {
20
+ /**
21
+ * Creates a new Manager.
22
+ *
23
+ * @param {Function} ModelClass - The model's constructor.
24
+ * @param {Function} [QuerySetClass=QuerySet] - The QuerySet class to use.
25
+ */
26
+ constructor(ModelClass, QuerySetClass = QuerySet) {
27
+ this.ModelClass = ModelClass;
28
+ this.QuerySetClass = QuerySetClass;
29
+ }
30
+ /**
31
+ * Creates a new QuerySet instance.
32
+ *
33
+ * @returns {QuerySet} A new QuerySet instance for the model.
34
+ */
35
+ newQuerySet() {
36
+ return new this.QuerySetClass(this.ModelClass);
37
+ }
38
+ /**
39
+ * Retrieves a single model instance matching the provided filters.
40
+ *
41
+ * @param {Object} [filters] - The filters to apply.
42
+ * @param {SerializerOptions} [serializerOptions] - Options for serialization.
43
+ * @returns {Promise<Model>} A promise that resolves to the model instance.
44
+ */
45
+ async get(filters, serializerOptions) {
46
+ return this.newQuerySet().get(filters, serializerOptions);
47
+ }
48
+ /**
49
+ * Filters the QuerySet based on the provided conditions.
50
+ *
51
+ * @param {*} conditions - The filter conditions.
52
+ * @returns {QuerySet} A new QuerySet instance with the filters applied.
53
+ */
54
+ filter(conditions) {
55
+ return this.newQuerySet().filter(conditions);
56
+ }
57
+ /**
58
+ * Excludes the specified conditions from the QuerySet.
59
+ *
60
+ * @param {*} conditions - The conditions to exclude.
61
+ * @returns {QuerySet} A new QuerySet instance with the conditions excluded.
62
+ */
63
+ exclude(conditions) {
64
+ return this.newQuerySet().exclude(conditions);
65
+ }
66
+ /**
67
+ * Returns a QuerySet representing all records.
68
+ *
69
+ * @returns {QuerySet} A new QuerySet instance.
70
+ */
71
+ all() {
72
+ return this.newQuerySet();
73
+ }
74
+ /**
75
+ * Returns a QuerySet that executes remotely without updating local stores.
76
+ *
77
+ * @returns {QuerySet} A remote-only QuerySet instance.
78
+ */
79
+ remote() {
80
+ return this.newQuerySet().remote();
81
+ }
82
+ /**
83
+ * Deletes records in the QuerySet.
84
+ *
85
+ * @returns {Promise<[number, Object]>} A promise that resolves to an array where the first element is
86
+ * the number of records deleted and the second is an object with details.
87
+ */
88
+ async delete() {
89
+ return await QueryExecutor.execute(this.newQuerySet(), 'delete');
90
+ }
91
+ /**
92
+ * Counts the number of records matching the current query.
93
+ *
94
+ * @param {string} [field] - Optional field to count (defaults to 'pk')
95
+ * @returns {Promise<number>} A promise that resolves to the count
96
+ */
97
+ async count(field) {
98
+ return await QueryExecutor.execute(this.newQuerySet(), 'count', { field });
99
+ }
100
+ /**
101
+ * Computes the sum of values for the specified field.
102
+ *
103
+ * @param {string} field - The field to sum
104
+ * @returns {Promise<number>} A promise that resolves to the sum
105
+ */
106
+ async sum(field) {
107
+ return await QueryExecutor.execute(this.newQuerySet(), 'sum', { field });
108
+ }
109
+ /**
110
+ * Computes the average value for the specified field.
111
+ *
112
+ * @param {string} field - The field to average
113
+ * @returns {Promise<number>} A promise that resolves to the average
114
+ */
115
+ async avg(field) {
116
+ return await QueryExecutor.execute(this.newQuerySet(), 'avg', { field });
117
+ }
118
+ /**
119
+ * Finds the minimum value for the specified field.
120
+ *
121
+ * @param {string} field - The field to find the minimum value for
122
+ * @returns {Promise<any>} A promise that resolves to the minimum value
123
+ */
124
+ async min(field) {
125
+ return await QueryExecutor.execute(this.newQuerySet(), 'min', { field });
126
+ }
127
+ /**
128
+ * Finds the maximum value for the specified field.
129
+ *
130
+ * @param {string} field - The field to find the maximum value for
131
+ * @returns {Promise<any>} A promise that resolves to the maximum value
132
+ */
133
+ async max(field) {
134
+ return await QueryExecutor.execute(this.newQuerySet(), 'max', { field });
135
+ }
136
+ /**
137
+ * Checks if any records exist that match the current query.
138
+ *
139
+ * @returns {Promise<boolean>} A promise that resolves to true if records exist, otherwise false
140
+ */
141
+ async exists() {
142
+ return await QueryExecutor.execute(this.newQuerySet(), 'exists');
143
+ }
144
+ /**
145
+ * Orders the QuerySet by the provided fields.
146
+ *
147
+ * @param {...(string|any)} fields - The fields to order by. Supports nested paths and descending order
148
+ * (prefix field with '-').
149
+ * @returns {QuerySet} A new QuerySet instance with the order applied.
150
+ */
151
+ orderBy(...fields) {
152
+ return this.newQuerySet().orderBy(...fields);
153
+ }
154
+ /**
155
+ * Creates a new model instance using the provided data, then saves it.
156
+ *
157
+ * @param {*} data - The data to create the model instance.
158
+ * @returns {Promise<*>} A promise that resolves to the newly created model instance.
159
+ */
160
+ async create(data) {
161
+ return this.newQuerySet().create(data);
162
+ }
163
+ /**
164
+ * Creates multiple model instances using the provided model instances.
165
+ *
166
+ * @param {Array<Model>} modelInstances - Array of unsaved model instances to create.
167
+ * @returns {Promise<Array<*>>} A promise that resolves to an array of newly created model instances.
168
+ */
169
+ async bulkCreate(modelInstances) {
170
+ return this.newQuerySet().bulkCreate(modelInstances);
171
+ }
172
+ /**
173
+ * Fetches all records using the current QuerySet.
174
+ *
175
+ * @param {SerializerOptions} [serializerOptions] - Options for serialization.
176
+ * @returns {Promise<Array<*>>} A promise that resolves to an array of model instances.
177
+ */
178
+ async fetch(serializerOptions) {
179
+ return this.newQuerySet().fetch(serializerOptions);
180
+ }
181
+ /**
182
+ * Retrieves or creates a model instance based on lookup fields and defaults.
183
+ *
184
+ * @param {*} lookupFields - The fields to lookup the model.
185
+ * @param {Object} [defaults={}] - Default values to use when creating a new instance.
186
+ * @returns {Promise<ResultTuple>} A promise that resolves to a ResultTuple containing the model instance
187
+ * and a boolean indicating whether it was created.
188
+ */
189
+ async getOrCreate(lookupFields, defaults = {}) {
190
+ return this.newQuerySet().getOrCreate(lookupFields, defaults);
191
+ }
192
+ /**
193
+ * Updates or creates a model instance based on lookup fields and defaults.
194
+ *
195
+ * @param {*} lookupFields - The fields to lookup the model.
196
+ * @param {Object} [defaults={}] - Default values to use when updating or creating the instance.
197
+ * @returns {Promise<ResultTuple>} A promise that resolves to a ResultTuple containing the model instance
198
+ * and a boolean indicating whether it was created.
199
+ */
200
+ async updateOrCreate(lookupFields, defaults = {}) {
201
+ return this.newQuerySet().updateOrCreate(lookupFields, defaults);
202
+ }
203
+ /**
204
+ * Applies a search to the QuerySet using the specified search query and fields.
205
+ *
206
+ * @param {string} searchQuery - The search query.
207
+ * @param {string[]} [searchFields] - The fields to search in.
208
+ * @returns {QuerySet} A new QuerySet instance with the search applied.
209
+ */
210
+ search(searchQuery, searchFields) {
211
+ return this.newQuerySet().search(searchQuery, searchFields);
212
+ }
213
+ /**
214
+ * Returns a QuerySet marked as optimistic-only, meaning operations will only
215
+ * update local state without making backend API calls.
216
+ *
217
+ * @returns {QuerySet} A new QuerySet with optimistic-only mode enabled.
218
+ */
219
+ get optimistic() {
220
+ return this.newQuerySet()._optimistic();
221
+ }
222
+ }
@@ -0,0 +1,137 @@
1
+ /**
2
+ * A constructor for a Model.
3
+ *
4
+ * @typedef {Function} ModelConstructor
5
+ * @param {any} data - Data to initialize the model.
6
+ * @returns {Model}
7
+ *
8
+ * @property {Manager} objects - The model's manager.
9
+ * @property {string} configKey - The configuration key.
10
+ * @property {string} modelName - The model name.
11
+ * @property {string} primaryKeyField - The primary key field (default 'id').
12
+ */
13
+ /**
14
+ * Base Model class with integrated API implementation.
15
+ *
16
+ * @abstract
17
+ */
18
+ export class Model {
19
+ /**
20
+ * Creates a new Model instance.
21
+ *
22
+ * @param {any} [data={}] - The data for initialization.
23
+ */
24
+ static instanceCache: Map<any, any>;
25
+ /**
26
+ * Remote-only manager that skips local store updates.
27
+ */
28
+ static get remote(): any;
29
+ /**
30
+ * Instantiate from pk using queryset scoped singletons
31
+ */
32
+ static fromPk(pk: any, querySet: any): any;
33
+ /**
34
+ * Validates that the provided data object only contains keys
35
+ * defined in the model's allowed fields. Supports nested fields
36
+ * using double underscore notation (e.g., author__name).
37
+ *
38
+ * @param {Object} data - The object to validate.
39
+ * @throws {ValidationError} If an unknown key is found.
40
+ */
41
+ static validateFields(data: Object): void;
42
+ /**
43
+ * Static method to validate data without creating an instance
44
+ * @param {Object} data - Data to validate
45
+ * @param {string} validateType - 'create' or 'update'
46
+ * @param {boolean} partial - Whether to allow partial validation
47
+ * @returns {Promise<boolean>} Promise that resolves to true if valid, throws error if invalid
48
+ */
49
+ static validate(data: Object, validateType?: string, partial?: boolean): Promise<boolean>;
50
+ /**
51
+ * Get field permissions for the current user (cached on the class)
52
+ * @param {boolean} refresh - Force refresh the cached permissions
53
+ * @returns {Promise<{visible_fields: string[], creatable_fields: string[], editable_fields: string[]}>}
54
+ */
55
+ static getFieldPermissions(refresh?: boolean): Promise<{
56
+ visible_fields: string[];
57
+ creatable_fields: string[];
58
+ editable_fields: string[];
59
+ }>;
60
+ constructor(data?: {});
61
+ serializer: ModelSerializer;
62
+ _data: {};
63
+ _pk: any;
64
+ __version: number;
65
+ touch(): void;
66
+ /**
67
+ * Sets the primary key of the model instance.
68
+ *
69
+ * @param {number|undefined} value - The new primary key value.
70
+ */
71
+ set pk(value: number | undefined);
72
+ /**
73
+ * Returns the primary key of the model instance.
74
+ *
75
+ * @returns {number|undefined} The primary key.
76
+ */
77
+ get pk(): number | undefined;
78
+ /**
79
+ * Gets a field value from the internal data store
80
+ *
81
+ * @param {string} field - The field name
82
+ * @returns {any} The field value
83
+ */
84
+ getField(field: string): any;
85
+ /**
86
+ * Sets a field value in the internal data store
87
+ *
88
+ * @param {string} field - The field name
89
+ * @param {any} value - The field value to set
90
+ */
91
+ setField(field: string, value: any): void;
92
+ /**
93
+ * Serializes the model instance.
94
+ *
95
+ * By default, it returns all enumerable own properties.
96
+ * Subclasses should override this to return specific keys.
97
+ *
98
+ * @param {boolean} includeRepr - Whether to include the repr field (for caching). Default: false.
99
+ * @returns {Object} The serialized model data.
100
+ */
101
+ serialize(includeRepr?: boolean): Object;
102
+ /**
103
+ * Saves the model instance by either creating a new record or updating an existing one.
104
+ *
105
+ * @returns {Promise<Model>} A promise that resolves to the updated model instance.
106
+ */
107
+ save(): Promise<Model>;
108
+ /**
109
+ * Deletes the instance from the database.
110
+ *
111
+ * Returns a tuple with the number of objects deleted and an object mapping
112
+ * model names to the number of objects deleted, matching Django's behavior.
113
+ *
114
+ * @returns {Promise<[number, Object]>} A promise that resolves to the deletion result.
115
+ * @throws {Error} If the instance has not been saved (no primary key).
116
+ */
117
+ delete(): Promise<[number, Object]>;
118
+ /**
119
+ * Refreshes the model instance with data from the database.
120
+ *
121
+ * @returns {Promise<void>} A promise that resolves when the instance has been refreshed.
122
+ * @throws {Error} If the instance has not been saved (no primary key).
123
+ */
124
+ refreshFromDb(): Promise<void>;
125
+ /**
126
+ * Validates the model instance using the same serialize behavior as save()
127
+ * @param {string} validateType - 'create' or 'update' (defaults to auto-detect)
128
+ * @param {boolean} partial - Whether to allow partial validation
129
+ * @returns {Promise<boolean>} Promise that resolves to true if valid, throws error if invalid
130
+ */
131
+ validate(validateType?: string, partial?: boolean): Promise<boolean>;
132
+ }
133
+ /**
134
+ * A constructor for a Model.
135
+ */
136
+ export type ModelConstructor = Function;
137
+ import { ModelSerializer } from "./serializers.js";