@multiplatform.one/frappe 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (858) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +241 -0
  3. package/dist/cjs/auth.cjs +50 -0
  4. package/dist/cjs/auth.native.js +100 -0
  5. package/dist/cjs/auth.native.js.map +1 -0
  6. package/dist/cjs/auth.spec.cjs +322 -0
  7. package/dist/cjs/auth.spec.native.js +329 -0
  8. package/dist/cjs/auth.spec.native.js.map +1 -0
  9. package/dist/cjs/call.cjs +45 -0
  10. package/dist/cjs/call.native.js +93 -0
  11. package/dist/cjs/call.native.js.map +1 -0
  12. package/dist/cjs/call.spec.cjs +427 -0
  13. package/dist/cjs/call.spec.native.js +430 -0
  14. package/dist/cjs/call.spec.native.js.map +1 -0
  15. package/dist/cjs/collection.cjs +278 -0
  16. package/dist/cjs/collection.native.js +494 -0
  17. package/dist/cjs/collection.native.js.map +1 -0
  18. package/dist/cjs/collection.spec.cjs +186 -0
  19. package/dist/cjs/collection.spec.native.js +216 -0
  20. package/dist/cjs/collection.spec.native.js.map +1 -0
  21. package/dist/cjs/common/types.cjs +18 -0
  22. package/dist/cjs/common/types.native.js +21 -0
  23. package/dist/cjs/common/types.native.js.map +1 -0
  24. package/dist/cjs/common/types.spec.cjs +266 -0
  25. package/dist/cjs/common/types.spec.native.js +271 -0
  26. package/dist/cjs/common/types.spec.native.js.map +1 -0
  27. package/dist/cjs/core/http.cjs +289 -0
  28. package/dist/cjs/core/http.native.js +484 -0
  29. package/dist/cjs/core/http.native.js.map +1 -0
  30. package/dist/cjs/core/http.spec.cjs +1259 -0
  31. package/dist/cjs/core/http.spec.native.js +1401 -0
  32. package/dist/cjs/core/http.spec.native.js.map +1 -0
  33. package/dist/cjs/core/types.cjs +53 -0
  34. package/dist/cjs/core/types.native.js +178 -0
  35. package/dist/cjs/core/types.native.js.map +1 -0
  36. package/dist/cjs/core/wire.cjs +53 -0
  37. package/dist/cjs/core/wire.native.js +56 -0
  38. package/dist/cjs/core/wire.native.js.map +1 -0
  39. package/dist/cjs/core/wire.spec.cjs +478 -0
  40. package/dist/cjs/core/wire.spec.native.js +482 -0
  41. package/dist/cjs/core/wire.spec.native.js.map +1 -0
  42. package/dist/cjs/db.cjs +355 -0
  43. package/dist/cjs/db.native.js +469 -0
  44. package/dist/cjs/db.native.js.map +1 -0
  45. package/dist/cjs/db.spec.cjs +862 -0
  46. package/dist/cjs/db.spec.native.js +865 -0
  47. package/dist/cjs/db.spec.native.js.map +1 -0
  48. package/dist/cjs/devtools/FrappeDevtoolsPanel.cjs +838 -0
  49. package/dist/cjs/devtools/FrappeDevtoolsPanel.native.js +919 -0
  50. package/dist/cjs/devtools/FrappeDevtoolsPanel.native.js.map +1 -0
  51. package/dist/cjs/devtools/index.cjs +30 -0
  52. package/dist/cjs/devtools/index.native.js +33 -0
  53. package/dist/cjs/devtools/index.native.js.map +1 -0
  54. package/dist/cjs/devtools/plugin.cjs +39 -0
  55. package/dist/cjs/devtools/plugin.native.js +56 -0
  56. package/dist/cjs/devtools/plugin.native.js.map +1 -0
  57. package/dist/cjs/devtools/theme.cjs +55 -0
  58. package/dist/cjs/devtools/theme.native.js +58 -0
  59. package/dist/cjs/devtools/theme.native.js.map +1 -0
  60. package/dist/cjs/doctype.cjs +410 -0
  61. package/dist/cjs/doctype.native.js +521 -0
  62. package/dist/cjs/doctype.native.js.map +1 -0
  63. package/dist/cjs/doctype.spec.cjs +460 -0
  64. package/dist/cjs/doctype.spec.native.js +538 -0
  65. package/dist/cjs/doctype.spec.native.js.map +1 -0
  66. package/dist/cjs/file.cjs +41 -0
  67. package/dist/cjs/file.native.js +84 -0
  68. package/dist/cjs/file.native.js.map +1 -0
  69. package/dist/cjs/file.spec.cjs +315 -0
  70. package/dist/cjs/file.spec.native.js +342 -0
  71. package/dist/cjs/file.spec.native.js.map +1 -0
  72. package/dist/cjs/fixtureDb.cjs +212 -0
  73. package/dist/cjs/fixtureDb.native.js +313 -0
  74. package/dist/cjs/fixtureDb.native.js.map +1 -0
  75. package/dist/cjs/fixtures.cjs +199 -0
  76. package/dist/cjs/fixtures.native.js +400 -0
  77. package/dist/cjs/fixtures.native.js.map +1 -0
  78. package/dist/cjs/frappeApp.cjs +117 -0
  79. package/dist/cjs/frappeApp.native.js +179 -0
  80. package/dist/cjs/frappeApp.native.js.map +1 -0
  81. package/dist/cjs/frappeApp.spec.cjs +306 -0
  82. package/dist/cjs/frappeApp.spec.native.js +308 -0
  83. package/dist/cjs/frappeApp.spec.native.js.map +1 -0
  84. package/dist/cjs/frappeReact.cjs +314 -0
  85. package/dist/cjs/frappeReact.native.js +351 -0
  86. package/dist/cjs/frappeReact.native.js.map +1 -0
  87. package/dist/cjs/frappeReact.spec.cjs +531 -0
  88. package/dist/cjs/frappeReact.spec.native.js +670 -0
  89. package/dist/cjs/frappeReact.spec.native.js.map +1 -0
  90. package/dist/cjs/index.cjs +149 -0
  91. package/dist/cjs/index.native.js +152 -0
  92. package/dist/cjs/index.native.js.map +1 -0
  93. package/dist/cjs/optimistic.cjs +28 -0
  94. package/dist/cjs/optimistic.native.js +31 -0
  95. package/dist/cjs/optimistic.native.js.map +1 -0
  96. package/dist/cjs/optimistic.spec.cjs +11 -0
  97. package/dist/cjs/optimistic.spec.native.js +19 -0
  98. package/dist/cjs/optimistic.spec.native.js.map +1 -0
  99. package/dist/cjs/pacer.cjs +200 -0
  100. package/dist/cjs/pacer.native.js +274 -0
  101. package/dist/cjs/pacer.native.js.map +1 -0
  102. package/dist/cjs/pacer.spec.cjs +470 -0
  103. package/dist/cjs/pacer.spec.native.js +537 -0
  104. package/dist/cjs/pacer.spec.native.js.map +1 -0
  105. package/dist/cjs/plugin/index.cjs +124 -0
  106. package/dist/cjs/plugin/index.native.js +193 -0
  107. package/dist/cjs/plugin/index.native.js.map +1 -0
  108. package/dist/cjs/realtime.cjs +265 -0
  109. package/dist/cjs/realtime.native.js +387 -0
  110. package/dist/cjs/realtime.native.js.map +1 -0
  111. package/dist/cjs/realtime.spec.cjs +326 -0
  112. package/dist/cjs/realtime.spec.native.js +392 -0
  113. package/dist/cjs/realtime.spec.native.js.map +1 -0
  114. package/dist/cjs/sync/backfill.cjs +314 -0
  115. package/dist/cjs/sync/backfill.native.js +487 -0
  116. package/dist/cjs/sync/backfill.native.js.map +1 -0
  117. package/dist/cjs/sync/backfill.spec.cjs +586 -0
  118. package/dist/cjs/sync/backfill.spec.native.js +712 -0
  119. package/dist/cjs/sync/backfill.spec.native.js.map +1 -0
  120. package/dist/cjs/sync/debug.spec.cjs +125 -0
  121. package/dist/cjs/sync/debug.spec.native.js +133 -0
  122. package/dist/cjs/sync/debug.spec.native.js.map +1 -0
  123. package/dist/cjs/sync/filters.cjs +311 -0
  124. package/dist/cjs/sync/filters.native.js +446 -0
  125. package/dist/cjs/sync/filters.native.js.map +1 -0
  126. package/dist/cjs/sync/filters.spec.cjs +168 -0
  127. package/dist/cjs/sync/filters.spec.native.js +173 -0
  128. package/dist/cjs/sync/filters.spec.native.js.map +1 -0
  129. package/dist/cjs/sync/index.cjs +303 -0
  130. package/dist/cjs/sync/index.native.js +462 -0
  131. package/dist/cjs/sync/index.native.js.map +1 -0
  132. package/dist/cjs/sync/merge.cjs +435 -0
  133. package/dist/cjs/sync/merge.native.js +717 -0
  134. package/dist/cjs/sync/merge.native.js.map +1 -0
  135. package/dist/cjs/sync/merge.spec.cjs +908 -0
  136. package/dist/cjs/sync/merge.spec.native.js +937 -0
  137. package/dist/cjs/sync/merge.spec.native.js.map +1 -0
  138. package/dist/cjs/sync/multiOrderBy.spec.cjs +165 -0
  139. package/dist/cjs/sync/multiOrderBy.spec.native.js +229 -0
  140. package/dist/cjs/sync/multiOrderBy.spec.native.js.map +1 -0
  141. package/dist/cjs/sync/mutationEngine.cjs +781 -0
  142. package/dist/cjs/sync/mutationEngine.native.js +1159 -0
  143. package/dist/cjs/sync/mutationEngine.native.js.map +1 -0
  144. package/dist/cjs/sync/mutationEngine.spec.cjs +1158 -0
  145. package/dist/cjs/sync/mutationEngine.spec.native.js +1173 -0
  146. package/dist/cjs/sync/mutationEngine.spec.native.js.map +1 -0
  147. package/dist/cjs/sync/mutationJournal.cjs +150 -0
  148. package/dist/cjs/sync/mutationJournal.native.js +282 -0
  149. package/dist/cjs/sync/mutationJournal.native.js.map +1 -0
  150. package/dist/cjs/sync/mutationJournal.spec.cjs +330 -0
  151. package/dist/cjs/sync/mutationJournal.spec.native.js +333 -0
  152. package/dist/cjs/sync/mutationJournal.spec.native.js.map +1 -0
  153. package/dist/cjs/sync/mutations.spec.cjs +327 -0
  154. package/dist/cjs/sync/mutations.spec.native.js +330 -0
  155. package/dist/cjs/sync/mutations.spec.native.js.map +1 -0
  156. package/dist/cjs/sync/normalizedCache.cjs +140 -0
  157. package/dist/cjs/sync/normalizedCache.native.js +229 -0
  158. package/dist/cjs/sync/normalizedCache.native.js.map +1 -0
  159. package/dist/cjs/sync/normalizedCache.spec.cjs +302 -0
  160. package/dist/cjs/sync/normalizedCache.spec.native.js +311 -0
  161. package/dist/cjs/sync/normalizedCache.spec.native.js.map +1 -0
  162. package/dist/cjs/sync/persistence.cjs +627 -0
  163. package/dist/cjs/sync/persistence.native.js +911 -0
  164. package/dist/cjs/sync/persistence.native.js.map +1 -0
  165. package/dist/cjs/sync/persistence.spec.cjs +562 -0
  166. package/dist/cjs/sync/persistence.spec.native.js +572 -0
  167. package/dist/cjs/sync/persistence.spec.native.js.map +1 -0
  168. package/dist/cjs/sync/realtime.cjs +214 -0
  169. package/dist/cjs/sync/realtime.native.js +340 -0
  170. package/dist/cjs/sync/realtime.native.js.map +1 -0
  171. package/dist/cjs/sync/realtime.spec.cjs +499 -0
  172. package/dist/cjs/sync/realtime.spec.native.js +512 -0
  173. package/dist/cjs/sync/realtime.spec.native.js.map +1 -0
  174. package/dist/cjs/sync/rehydration.cjs +323 -0
  175. package/dist/cjs/sync/rehydration.native.js +531 -0
  176. package/dist/cjs/sync/rehydration.native.js.map +1 -0
  177. package/dist/cjs/sync/rehydration.spec.cjs +731 -0
  178. package/dist/cjs/sync/rehydration.spec.native.js +736 -0
  179. package/dist/cjs/sync/rehydration.spec.native.js.map +1 -0
  180. package/dist/cjs/sync/storage.cjs +142 -0
  181. package/dist/cjs/sync/storage.native.js +209 -0
  182. package/dist/cjs/sync/storage.native.js.map +1 -0
  183. package/dist/cjs/sync/storage.spec.cjs +446 -0
  184. package/dist/cjs/sync/storage.spec.native.js +470 -0
  185. package/dist/cjs/sync/storage.spec.native.js.map +1 -0
  186. package/dist/cjs/sync/subscriptionManager.cjs +487 -0
  187. package/dist/cjs/sync/subscriptionManager.native.js +948 -0
  188. package/dist/cjs/sync/subscriptionManager.native.js.map +1 -0
  189. package/dist/cjs/sync/subscriptionManager.spec.cjs +1102 -0
  190. package/dist/cjs/sync/subscriptionManager.spec.native.js +1136 -0
  191. package/dist/cjs/sync/subscriptionManager.spec.native.js.map +1 -0
  192. package/dist/cjs/sync/subscriptions.spec.cjs +937 -0
  193. package/dist/cjs/sync/subscriptions.spec.native.js +969 -0
  194. package/dist/cjs/sync/subscriptions.spec.native.js.map +1 -0
  195. package/dist/cjs/sync/syncModule.spec.cjs +206 -0
  196. package/dist/cjs/sync/syncModule.spec.native.js +222 -0
  197. package/dist/cjs/sync/syncModule.spec.native.js.map +1 -0
  198. package/dist/cjs/sync/types.cjs +99 -0
  199. package/dist/cjs/sync/types.native.js +102 -0
  200. package/dist/cjs/sync/types.native.js.map +1 -0
  201. package/dist/cjs/sync/types.spec.cjs +246 -0
  202. package/dist/cjs/sync/types.spec.native.js +256 -0
  203. package/dist/cjs/sync/types.spec.native.js.map +1 -0
  204. package/dist/cjs/sync/virtualPageManager.cjs +821 -0
  205. package/dist/cjs/sync/virtualPageManager.native.js +1125 -0
  206. package/dist/cjs/sync/virtualPageManager.native.js.map +1 -0
  207. package/dist/cjs/sync/virtualPageManager.spec.cjs +801 -0
  208. package/dist/cjs/sync/virtualPageManager.spec.native.js +873 -0
  209. package/dist/cjs/sync/virtualPageManager.spec.native.js.map +1 -0
  210. package/dist/cjs/util.cjs +31 -0
  211. package/dist/cjs/util.native.js +34 -0
  212. package/dist/cjs/util.native.js.map +1 -0
  213. package/dist/cjs/util.spec.cjs +43 -0
  214. package/dist/cjs/util.spec.native.js +48 -0
  215. package/dist/cjs/util.spec.native.js.map +1 -0
  216. package/dist/esm/auth.mjs +25 -0
  217. package/dist/esm/auth.mjs.map +1 -0
  218. package/dist/esm/auth.native.js +72 -0
  219. package/dist/esm/auth.native.js.map +1 -0
  220. package/dist/esm/auth.spec.mjs +323 -0
  221. package/dist/esm/auth.spec.mjs.map +1 -0
  222. package/dist/esm/auth.spec.native.js +327 -0
  223. package/dist/esm/auth.spec.native.js.map +1 -0
  224. package/dist/esm/call.mjs +20 -0
  225. package/dist/esm/call.mjs.map +1 -0
  226. package/dist/esm/call.native.js +65 -0
  227. package/dist/esm/call.native.js.map +1 -0
  228. package/dist/esm/call.spec.mjs +428 -0
  229. package/dist/esm/call.spec.mjs.map +1 -0
  230. package/dist/esm/call.spec.native.js +428 -0
  231. package/dist/esm/call.spec.native.js.map +1 -0
  232. package/dist/esm/collection.mjs +250 -0
  233. package/dist/esm/collection.mjs.map +1 -0
  234. package/dist/esm/collection.native.js +463 -0
  235. package/dist/esm/collection.native.js.map +1 -0
  236. package/dist/esm/collection.spec.mjs +187 -0
  237. package/dist/esm/collection.spec.mjs.map +1 -0
  238. package/dist/esm/collection.spec.native.js +214 -0
  239. package/dist/esm/collection.spec.native.js.map +1 -0
  240. package/dist/esm/common/types.mjs +2 -0
  241. package/dist/esm/common/types.mjs.map +1 -0
  242. package/dist/esm/common/types.native.js +2 -0
  243. package/dist/esm/common/types.native.js.map +1 -0
  244. package/dist/esm/common/types.spec.mjs +267 -0
  245. package/dist/esm/common/types.spec.mjs.map +1 -0
  246. package/dist/esm/common/types.spec.native.js +269 -0
  247. package/dist/esm/common/types.spec.native.js.map +1 -0
  248. package/dist/esm/core/http.mjs +258 -0
  249. package/dist/esm/core/http.mjs.map +1 -0
  250. package/dist/esm/core/http.native.js +450 -0
  251. package/dist/esm/core/http.native.js.map +1 -0
  252. package/dist/esm/core/http.spec.mjs +1260 -0
  253. package/dist/esm/core/http.spec.mjs.map +1 -0
  254. package/dist/esm/core/http.spec.native.js +1399 -0
  255. package/dist/esm/core/http.spec.native.js.map +1 -0
  256. package/dist/esm/core/types.mjs +26 -0
  257. package/dist/esm/core/types.mjs.map +1 -0
  258. package/dist/esm/core/types.native.js +148 -0
  259. package/dist/esm/core/types.native.js.map +1 -0
  260. package/dist/esm/core/wire.mjs +23 -0
  261. package/dist/esm/core/wire.mjs.map +1 -0
  262. package/dist/esm/core/wire.native.js +23 -0
  263. package/dist/esm/core/wire.native.js.map +1 -0
  264. package/dist/esm/core/wire.spec.mjs +479 -0
  265. package/dist/esm/core/wire.spec.mjs.map +1 -0
  266. package/dist/esm/core/wire.spec.native.js +480 -0
  267. package/dist/esm/core/wire.spec.native.js.map +1 -0
  268. package/dist/esm/db.mjs +329 -0
  269. package/dist/esm/db.mjs.map +1 -0
  270. package/dist/esm/db.native.js +440 -0
  271. package/dist/esm/db.native.js.map +1 -0
  272. package/dist/esm/db.spec.mjs +863 -0
  273. package/dist/esm/db.spec.mjs.map +1 -0
  274. package/dist/esm/db.spec.native.js +863 -0
  275. package/dist/esm/db.spec.native.js.map +1 -0
  276. package/dist/esm/devtools/FrappeDevtoolsPanel.mjs +813 -0
  277. package/dist/esm/devtools/FrappeDevtoolsPanel.mjs.map +1 -0
  278. package/dist/esm/devtools/FrappeDevtoolsPanel.native.js +880 -0
  279. package/dist/esm/devtools/FrappeDevtoolsPanel.native.js.map +1 -0
  280. package/dist/esm/devtools/index.mjs +4 -0
  281. package/dist/esm/devtools/index.mjs.map +1 -0
  282. package/dist/esm/devtools/index.native.js +4 -0
  283. package/dist/esm/devtools/index.native.js.map +1 -0
  284. package/dist/esm/devtools/plugin.mjs +14 -0
  285. package/dist/esm/devtools/plugin.mjs.map +1 -0
  286. package/dist/esm/devtools/plugin.native.js +17 -0
  287. package/dist/esm/devtools/plugin.native.js.map +1 -0
  288. package/dist/esm/devtools/theme.mjs +30 -0
  289. package/dist/esm/devtools/theme.mjs.map +1 -0
  290. package/dist/esm/devtools/theme.native.js +30 -0
  291. package/dist/esm/devtools/theme.native.js.map +1 -0
  292. package/dist/esm/doctype.mjs +381 -0
  293. package/dist/esm/doctype.mjs.map +1 -0
  294. package/dist/esm/doctype.native.js +489 -0
  295. package/dist/esm/doctype.native.js.map +1 -0
  296. package/dist/esm/doctype.spec.mjs +461 -0
  297. package/dist/esm/doctype.spec.mjs.map +1 -0
  298. package/dist/esm/doctype.spec.native.js +536 -0
  299. package/dist/esm/doctype.spec.native.js.map +1 -0
  300. package/dist/esm/file.mjs +16 -0
  301. package/dist/esm/file.mjs.map +1 -0
  302. package/dist/esm/file.native.js +56 -0
  303. package/dist/esm/file.native.js.map +1 -0
  304. package/dist/esm/file.spec.mjs +316 -0
  305. package/dist/esm/file.spec.mjs.map +1 -0
  306. package/dist/esm/file.spec.native.js +340 -0
  307. package/dist/esm/file.spec.native.js.map +1 -0
  308. package/dist/esm/fixtureDb.mjs +187 -0
  309. package/dist/esm/fixtureDb.mjs.map +1 -0
  310. package/dist/esm/fixtureDb.native.js +285 -0
  311. package/dist/esm/fixtureDb.native.js.map +1 -0
  312. package/dist/esm/fixtures.mjs +174 -0
  313. package/dist/esm/fixtures.mjs.map +1 -0
  314. package/dist/esm/fixtures.native.js +372 -0
  315. package/dist/esm/fixtures.native.js.map +1 -0
  316. package/dist/esm/frappeApp.mjs +92 -0
  317. package/dist/esm/frappeApp.mjs.map +1 -0
  318. package/dist/esm/frappeApp.native.js +151 -0
  319. package/dist/esm/frappeApp.native.js.map +1 -0
  320. package/dist/esm/frappeApp.spec.mjs +307 -0
  321. package/dist/esm/frappeApp.spec.mjs.map +1 -0
  322. package/dist/esm/frappeApp.spec.native.js +306 -0
  323. package/dist/esm/frappeApp.spec.native.js.map +1 -0
  324. package/dist/esm/frappeReact.mjs +286 -0
  325. package/dist/esm/frappeReact.mjs.map +1 -0
  326. package/dist/esm/frappeReact.native.js +320 -0
  327. package/dist/esm/frappeReact.native.js.map +1 -0
  328. package/dist/esm/frappeReact.spec.mjs +532 -0
  329. package/dist/esm/frappeReact.spec.mjs.map +1 -0
  330. package/dist/esm/frappeReact.spec.native.js +668 -0
  331. package/dist/esm/frappeReact.spec.native.js.map +1 -0
  332. package/dist/esm/index.mjs +25 -0
  333. package/dist/esm/index.mjs.map +1 -0
  334. package/dist/esm/index.native.js +25 -0
  335. package/dist/esm/index.native.js.map +1 -0
  336. package/dist/esm/optimistic.mjs +3 -0
  337. package/dist/esm/optimistic.mjs.map +1 -0
  338. package/dist/esm/optimistic.native.js +3 -0
  339. package/dist/esm/optimistic.native.js.map +1 -0
  340. package/dist/esm/optimistic.spec.mjs +12 -0
  341. package/dist/esm/optimistic.spec.mjs.map +1 -0
  342. package/dist/esm/optimistic.spec.native.js +17 -0
  343. package/dist/esm/optimistic.spec.native.js.map +1 -0
  344. package/dist/esm/pacer.mjs +173 -0
  345. package/dist/esm/pacer.mjs.map +1 -0
  346. package/dist/esm/pacer.native.js +244 -0
  347. package/dist/esm/pacer.native.js.map +1 -0
  348. package/dist/esm/pacer.spec.mjs +447 -0
  349. package/dist/esm/pacer.spec.mjs.map +1 -0
  350. package/dist/esm/pacer.spec.native.js +511 -0
  351. package/dist/esm/pacer.spec.native.js.map +1 -0
  352. package/dist/esm/plugin/index.mjs +99 -0
  353. package/dist/esm/plugin/index.mjs.map +1 -0
  354. package/dist/esm/plugin/index.native.js +165 -0
  355. package/dist/esm/plugin/index.native.js.map +1 -0
  356. package/dist/esm/realtime.mjs +239 -0
  357. package/dist/esm/realtime.mjs.map +1 -0
  358. package/dist/esm/realtime.native.js +358 -0
  359. package/dist/esm/realtime.native.js.map +1 -0
  360. package/dist/esm/realtime.spec.mjs +327 -0
  361. package/dist/esm/realtime.spec.mjs.map +1 -0
  362. package/dist/esm/realtime.spec.native.js +390 -0
  363. package/dist/esm/realtime.spec.native.js.map +1 -0
  364. package/dist/esm/sync/backfill.mjs +287 -0
  365. package/dist/esm/sync/backfill.mjs.map +1 -0
  366. package/dist/esm/sync/backfill.native.js +457 -0
  367. package/dist/esm/sync/backfill.native.js.map +1 -0
  368. package/dist/esm/sync/backfill.spec.mjs +563 -0
  369. package/dist/esm/sync/backfill.spec.mjs.map +1 -0
  370. package/dist/esm/sync/backfill.spec.native.js +686 -0
  371. package/dist/esm/sync/backfill.spec.native.js.map +1 -0
  372. package/dist/esm/sync/debug.spec.mjs +102 -0
  373. package/dist/esm/sync/debug.spec.mjs.map +1 -0
  374. package/dist/esm/sync/debug.spec.native.js +107 -0
  375. package/dist/esm/sync/debug.spec.native.js.map +1 -0
  376. package/dist/esm/sync/filters.mjs +276 -0
  377. package/dist/esm/sync/filters.mjs.map +1 -0
  378. package/dist/esm/sync/filters.native.js +408 -0
  379. package/dist/esm/sync/filters.native.js.map +1 -0
  380. package/dist/esm/sync/filters.spec.mjs +169 -0
  381. package/dist/esm/sync/filters.spec.mjs.map +1 -0
  382. package/dist/esm/sync/filters.spec.native.js +171 -0
  383. package/dist/esm/sync/filters.spec.native.js.map +1 -0
  384. package/dist/esm/sync/index.mjs +278 -0
  385. package/dist/esm/sync/index.mjs.map +1 -0
  386. package/dist/esm/sync/index.native.js +434 -0
  387. package/dist/esm/sync/index.native.js.map +1 -0
  388. package/dist/esm/sync/merge.mjs +396 -0
  389. package/dist/esm/sync/merge.mjs.map +1 -0
  390. package/dist/esm/sync/merge.native.js +675 -0
  391. package/dist/esm/sync/merge.native.js.map +1 -0
  392. package/dist/esm/sync/merge.spec.mjs +909 -0
  393. package/dist/esm/sync/merge.spec.mjs.map +1 -0
  394. package/dist/esm/sync/merge.spec.native.js +935 -0
  395. package/dist/esm/sync/merge.spec.native.js.map +1 -0
  396. package/dist/esm/sync/multiOrderBy.spec.mjs +166 -0
  397. package/dist/esm/sync/multiOrderBy.spec.mjs.map +1 -0
  398. package/dist/esm/sync/multiOrderBy.spec.native.js +227 -0
  399. package/dist/esm/sync/multiOrderBy.spec.native.js.map +1 -0
  400. package/dist/esm/sync/mutationEngine.mjs +756 -0
  401. package/dist/esm/sync/mutationEngine.mjs.map +1 -0
  402. package/dist/esm/sync/mutationEngine.native.js +1131 -0
  403. package/dist/esm/sync/mutationEngine.native.js.map +1 -0
  404. package/dist/esm/sync/mutationEngine.spec.mjs +1159 -0
  405. package/dist/esm/sync/mutationEngine.spec.mjs.map +1 -0
  406. package/dist/esm/sync/mutationEngine.spec.native.js +1171 -0
  407. package/dist/esm/sync/mutationEngine.spec.native.js.map +1 -0
  408. package/dist/esm/sync/mutationJournal.mjs +124 -0
  409. package/dist/esm/sync/mutationJournal.mjs.map +1 -0
  410. package/dist/esm/sync/mutationJournal.native.js +253 -0
  411. package/dist/esm/sync/mutationJournal.native.js.map +1 -0
  412. package/dist/esm/sync/mutationJournal.spec.mjs +331 -0
  413. package/dist/esm/sync/mutationJournal.spec.mjs.map +1 -0
  414. package/dist/esm/sync/mutationJournal.spec.native.js +331 -0
  415. package/dist/esm/sync/mutationJournal.spec.native.js.map +1 -0
  416. package/dist/esm/sync/mutations.spec.mjs +328 -0
  417. package/dist/esm/sync/mutations.spec.mjs.map +1 -0
  418. package/dist/esm/sync/mutations.spec.native.js +328 -0
  419. package/dist/esm/sync/mutations.spec.native.js.map +1 -0
  420. package/dist/esm/sync/normalizedCache.mjs +115 -0
  421. package/dist/esm/sync/normalizedCache.mjs.map +1 -0
  422. package/dist/esm/sync/normalizedCache.native.js +201 -0
  423. package/dist/esm/sync/normalizedCache.native.js.map +1 -0
  424. package/dist/esm/sync/normalizedCache.spec.mjs +303 -0
  425. package/dist/esm/sync/normalizedCache.spec.mjs.map +1 -0
  426. package/dist/esm/sync/normalizedCache.spec.native.js +309 -0
  427. package/dist/esm/sync/normalizedCache.spec.native.js.map +1 -0
  428. package/dist/esm/sync/persistence.mjs +602 -0
  429. package/dist/esm/sync/persistence.mjs.map +1 -0
  430. package/dist/esm/sync/persistence.native.js +883 -0
  431. package/dist/esm/sync/persistence.native.js.map +1 -0
  432. package/dist/esm/sync/persistence.spec.mjs +563 -0
  433. package/dist/esm/sync/persistence.spec.mjs.map +1 -0
  434. package/dist/esm/sync/persistence.spec.native.js +570 -0
  435. package/dist/esm/sync/persistence.spec.native.js.map +1 -0
  436. package/dist/esm/sync/realtime.mjs +189 -0
  437. package/dist/esm/sync/realtime.mjs.map +1 -0
  438. package/dist/esm/sync/realtime.native.js +312 -0
  439. package/dist/esm/sync/realtime.native.js.map +1 -0
  440. package/dist/esm/sync/realtime.spec.mjs +500 -0
  441. package/dist/esm/sync/realtime.spec.mjs.map +1 -0
  442. package/dist/esm/sync/realtime.spec.native.js +510 -0
  443. package/dist/esm/sync/realtime.spec.native.js.map +1 -0
  444. package/dist/esm/sync/rehydration.mjs +298 -0
  445. package/dist/esm/sync/rehydration.mjs.map +1 -0
  446. package/dist/esm/sync/rehydration.native.js +503 -0
  447. package/dist/esm/sync/rehydration.native.js.map +1 -0
  448. package/dist/esm/sync/rehydration.spec.mjs +732 -0
  449. package/dist/esm/sync/rehydration.spec.mjs.map +1 -0
  450. package/dist/esm/sync/rehydration.spec.native.js +734 -0
  451. package/dist/esm/sync/rehydration.spec.native.js.map +1 -0
  452. package/dist/esm/sync/storage.mjs +116 -0
  453. package/dist/esm/sync/storage.mjs.map +1 -0
  454. package/dist/esm/sync/storage.native.js +180 -0
  455. package/dist/esm/sync/storage.native.js.map +1 -0
  456. package/dist/esm/sync/storage.spec.mjs +423 -0
  457. package/dist/esm/sync/storage.spec.mjs.map +1 -0
  458. package/dist/esm/sync/storage.spec.native.js +444 -0
  459. package/dist/esm/sync/storage.spec.native.js.map +1 -0
  460. package/dist/esm/sync/subscriptionManager.mjs +462 -0
  461. package/dist/esm/sync/subscriptionManager.mjs.map +1 -0
  462. package/dist/esm/sync/subscriptionManager.native.js +920 -0
  463. package/dist/esm/sync/subscriptionManager.native.js.map +1 -0
  464. package/dist/esm/sync/subscriptionManager.spec.mjs +1079 -0
  465. package/dist/esm/sync/subscriptionManager.spec.mjs.map +1 -0
  466. package/dist/esm/sync/subscriptionManager.spec.native.js +1110 -0
  467. package/dist/esm/sync/subscriptionManager.spec.native.js.map +1 -0
  468. package/dist/esm/sync/subscriptions.spec.mjs +914 -0
  469. package/dist/esm/sync/subscriptions.spec.mjs.map +1 -0
  470. package/dist/esm/sync/subscriptions.spec.native.js +943 -0
  471. package/dist/esm/sync/subscriptions.spec.native.js.map +1 -0
  472. package/dist/esm/sync/syncModule.spec.mjs +207 -0
  473. package/dist/esm/sync/syncModule.spec.mjs.map +1 -0
  474. package/dist/esm/sync/syncModule.spec.native.js +220 -0
  475. package/dist/esm/sync/syncModule.spec.native.js.map +1 -0
  476. package/dist/esm/sync/types.mjs +65 -0
  477. package/dist/esm/sync/types.mjs.map +1 -0
  478. package/dist/esm/sync/types.native.js +65 -0
  479. package/dist/esm/sync/types.native.js.map +1 -0
  480. package/dist/esm/sync/types.spec.mjs +247 -0
  481. package/dist/esm/sync/types.spec.mjs.map +1 -0
  482. package/dist/esm/sync/types.spec.native.js +254 -0
  483. package/dist/esm/sync/types.spec.native.js.map +1 -0
  484. package/dist/esm/sync/virtualPageManager.mjs +794 -0
  485. package/dist/esm/sync/virtualPageManager.mjs.map +1 -0
  486. package/dist/esm/sync/virtualPageManager.native.js +1095 -0
  487. package/dist/esm/sync/virtualPageManager.native.js.map +1 -0
  488. package/dist/esm/sync/virtualPageManager.spec.mjs +802 -0
  489. package/dist/esm/sync/virtualPageManager.spec.mjs.map +1 -0
  490. package/dist/esm/sync/virtualPageManager.spec.native.js +871 -0
  491. package/dist/esm/sync/virtualPageManager.spec.native.js.map +1 -0
  492. package/dist/esm/util.mjs +6 -0
  493. package/dist/esm/util.mjs.map +1 -0
  494. package/dist/esm/util.native.js +6 -0
  495. package/dist/esm/util.native.js.map +1 -0
  496. package/dist/esm/util.spec.mjs +20 -0
  497. package/dist/esm/util.spec.mjs.map +1 -0
  498. package/dist/esm/util.spec.native.js +22 -0
  499. package/dist/esm/util.spec.native.js.map +1 -0
  500. package/dist/jsx/auth.mjs +25 -0
  501. package/dist/jsx/auth.mjs.map +1 -0
  502. package/dist/jsx/auth.native.js +100 -0
  503. package/dist/jsx/auth.native.js.map +1 -0
  504. package/dist/jsx/auth.spec.mjs +323 -0
  505. package/dist/jsx/auth.spec.mjs.map +1 -0
  506. package/dist/jsx/auth.spec.native.js +329 -0
  507. package/dist/jsx/auth.spec.native.js.map +1 -0
  508. package/dist/jsx/call.mjs +20 -0
  509. package/dist/jsx/call.mjs.map +1 -0
  510. package/dist/jsx/call.native.js +93 -0
  511. package/dist/jsx/call.native.js.map +1 -0
  512. package/dist/jsx/call.spec.mjs +428 -0
  513. package/dist/jsx/call.spec.mjs.map +1 -0
  514. package/dist/jsx/call.spec.native.js +430 -0
  515. package/dist/jsx/call.spec.native.js.map +1 -0
  516. package/dist/jsx/collection.mjs +250 -0
  517. package/dist/jsx/collection.mjs.map +1 -0
  518. package/dist/jsx/collection.native.js +494 -0
  519. package/dist/jsx/collection.native.js.map +1 -0
  520. package/dist/jsx/collection.spec.mjs +187 -0
  521. package/dist/jsx/collection.spec.mjs.map +1 -0
  522. package/dist/jsx/collection.spec.native.js +216 -0
  523. package/dist/jsx/collection.spec.native.js.map +1 -0
  524. package/dist/jsx/common/types.mjs +2 -0
  525. package/dist/jsx/common/types.mjs.map +1 -0
  526. package/dist/jsx/common/types.native.js +21 -0
  527. package/dist/jsx/common/types.native.js.map +1 -0
  528. package/dist/jsx/common/types.spec.mjs +267 -0
  529. package/dist/jsx/common/types.spec.mjs.map +1 -0
  530. package/dist/jsx/common/types.spec.native.js +271 -0
  531. package/dist/jsx/common/types.spec.native.js.map +1 -0
  532. package/dist/jsx/core/http.mjs +258 -0
  533. package/dist/jsx/core/http.mjs.map +1 -0
  534. package/dist/jsx/core/http.native.js +484 -0
  535. package/dist/jsx/core/http.native.js.map +1 -0
  536. package/dist/jsx/core/http.spec.mjs +1260 -0
  537. package/dist/jsx/core/http.spec.mjs.map +1 -0
  538. package/dist/jsx/core/http.spec.native.js +1401 -0
  539. package/dist/jsx/core/http.spec.native.js.map +1 -0
  540. package/dist/jsx/core/types.mjs +26 -0
  541. package/dist/jsx/core/types.mjs.map +1 -0
  542. package/dist/jsx/core/types.native.js +178 -0
  543. package/dist/jsx/core/types.native.js.map +1 -0
  544. package/dist/jsx/core/wire.mjs +23 -0
  545. package/dist/jsx/core/wire.mjs.map +1 -0
  546. package/dist/jsx/core/wire.native.js +56 -0
  547. package/dist/jsx/core/wire.native.js.map +1 -0
  548. package/dist/jsx/core/wire.spec.mjs +479 -0
  549. package/dist/jsx/core/wire.spec.mjs.map +1 -0
  550. package/dist/jsx/core/wire.spec.native.js +482 -0
  551. package/dist/jsx/core/wire.spec.native.js.map +1 -0
  552. package/dist/jsx/db.mjs +329 -0
  553. package/dist/jsx/db.mjs.map +1 -0
  554. package/dist/jsx/db.native.js +469 -0
  555. package/dist/jsx/db.native.js.map +1 -0
  556. package/dist/jsx/db.spec.mjs +863 -0
  557. package/dist/jsx/db.spec.mjs.map +1 -0
  558. package/dist/jsx/db.spec.native.js +865 -0
  559. package/dist/jsx/db.spec.native.js.map +1 -0
  560. package/dist/jsx/devtools/FrappeDevtoolsPanel.mjs +813 -0
  561. package/dist/jsx/devtools/FrappeDevtoolsPanel.mjs.map +1 -0
  562. package/dist/jsx/devtools/FrappeDevtoolsPanel.native.js +919 -0
  563. package/dist/jsx/devtools/FrappeDevtoolsPanel.native.js.map +1 -0
  564. package/dist/jsx/devtools/index.mjs +4 -0
  565. package/dist/jsx/devtools/index.mjs.map +1 -0
  566. package/dist/jsx/devtools/index.native.js +33 -0
  567. package/dist/jsx/devtools/index.native.js.map +1 -0
  568. package/dist/jsx/devtools/plugin.mjs +14 -0
  569. package/dist/jsx/devtools/plugin.mjs.map +1 -0
  570. package/dist/jsx/devtools/plugin.native.js +56 -0
  571. package/dist/jsx/devtools/plugin.native.js.map +1 -0
  572. package/dist/jsx/devtools/theme.mjs +30 -0
  573. package/dist/jsx/devtools/theme.mjs.map +1 -0
  574. package/dist/jsx/devtools/theme.native.js +58 -0
  575. package/dist/jsx/devtools/theme.native.js.map +1 -0
  576. package/dist/jsx/doctype.mjs +381 -0
  577. package/dist/jsx/doctype.mjs.map +1 -0
  578. package/dist/jsx/doctype.native.js +521 -0
  579. package/dist/jsx/doctype.native.js.map +1 -0
  580. package/dist/jsx/doctype.spec.mjs +461 -0
  581. package/dist/jsx/doctype.spec.mjs.map +1 -0
  582. package/dist/jsx/doctype.spec.native.js +538 -0
  583. package/dist/jsx/doctype.spec.native.js.map +1 -0
  584. package/dist/jsx/file.mjs +16 -0
  585. package/dist/jsx/file.mjs.map +1 -0
  586. package/dist/jsx/file.native.js +84 -0
  587. package/dist/jsx/file.native.js.map +1 -0
  588. package/dist/jsx/file.spec.mjs +316 -0
  589. package/dist/jsx/file.spec.mjs.map +1 -0
  590. package/dist/jsx/file.spec.native.js +342 -0
  591. package/dist/jsx/file.spec.native.js.map +1 -0
  592. package/dist/jsx/fixtureDb.mjs +187 -0
  593. package/dist/jsx/fixtureDb.mjs.map +1 -0
  594. package/dist/jsx/fixtureDb.native.js +313 -0
  595. package/dist/jsx/fixtureDb.native.js.map +1 -0
  596. package/dist/jsx/fixtures.mjs +174 -0
  597. package/dist/jsx/fixtures.mjs.map +1 -0
  598. package/dist/jsx/fixtures.native.js +400 -0
  599. package/dist/jsx/fixtures.native.js.map +1 -0
  600. package/dist/jsx/frappeApp.mjs +92 -0
  601. package/dist/jsx/frappeApp.mjs.map +1 -0
  602. package/dist/jsx/frappeApp.native.js +179 -0
  603. package/dist/jsx/frappeApp.native.js.map +1 -0
  604. package/dist/jsx/frappeApp.spec.mjs +307 -0
  605. package/dist/jsx/frappeApp.spec.mjs.map +1 -0
  606. package/dist/jsx/frappeApp.spec.native.js +308 -0
  607. package/dist/jsx/frappeApp.spec.native.js.map +1 -0
  608. package/dist/jsx/frappeReact.mjs +286 -0
  609. package/dist/jsx/frappeReact.mjs.map +1 -0
  610. package/dist/jsx/frappeReact.native.js +351 -0
  611. package/dist/jsx/frappeReact.native.js.map +1 -0
  612. package/dist/jsx/frappeReact.spec.mjs +532 -0
  613. package/dist/jsx/frappeReact.spec.mjs.map +1 -0
  614. package/dist/jsx/frappeReact.spec.native.js +670 -0
  615. package/dist/jsx/frappeReact.spec.native.js.map +1 -0
  616. package/dist/jsx/index.js +25 -0
  617. package/dist/jsx/index.js.map +1 -0
  618. package/dist/jsx/index.mjs +25 -0
  619. package/dist/jsx/index.mjs.map +1 -0
  620. package/dist/jsx/index.native.js +152 -0
  621. package/dist/jsx/index.native.js.map +1 -0
  622. package/dist/jsx/optimistic.mjs +3 -0
  623. package/dist/jsx/optimistic.mjs.map +1 -0
  624. package/dist/jsx/optimistic.native.js +31 -0
  625. package/dist/jsx/optimistic.native.js.map +1 -0
  626. package/dist/jsx/optimistic.spec.mjs +12 -0
  627. package/dist/jsx/optimistic.spec.mjs.map +1 -0
  628. package/dist/jsx/optimistic.spec.native.js +19 -0
  629. package/dist/jsx/optimistic.spec.native.js.map +1 -0
  630. package/dist/jsx/pacer.mjs +173 -0
  631. package/dist/jsx/pacer.mjs.map +1 -0
  632. package/dist/jsx/pacer.native.js +274 -0
  633. package/dist/jsx/pacer.native.js.map +1 -0
  634. package/dist/jsx/pacer.spec.mjs +447 -0
  635. package/dist/jsx/pacer.spec.mjs.map +1 -0
  636. package/dist/jsx/pacer.spec.native.js +537 -0
  637. package/dist/jsx/pacer.spec.native.js.map +1 -0
  638. package/dist/jsx/plugin/index.mjs +99 -0
  639. package/dist/jsx/plugin/index.mjs.map +1 -0
  640. package/dist/jsx/plugin/index.native.js +193 -0
  641. package/dist/jsx/plugin/index.native.js.map +1 -0
  642. package/dist/jsx/realtime.mjs +239 -0
  643. package/dist/jsx/realtime.mjs.map +1 -0
  644. package/dist/jsx/realtime.native.js +387 -0
  645. package/dist/jsx/realtime.native.js.map +1 -0
  646. package/dist/jsx/realtime.spec.mjs +327 -0
  647. package/dist/jsx/realtime.spec.mjs.map +1 -0
  648. package/dist/jsx/realtime.spec.native.js +392 -0
  649. package/dist/jsx/realtime.spec.native.js.map +1 -0
  650. package/dist/jsx/sync/backfill.mjs +287 -0
  651. package/dist/jsx/sync/backfill.mjs.map +1 -0
  652. package/dist/jsx/sync/backfill.native.js +487 -0
  653. package/dist/jsx/sync/backfill.native.js.map +1 -0
  654. package/dist/jsx/sync/backfill.spec.mjs +563 -0
  655. package/dist/jsx/sync/backfill.spec.mjs.map +1 -0
  656. package/dist/jsx/sync/backfill.spec.native.js +712 -0
  657. package/dist/jsx/sync/backfill.spec.native.js.map +1 -0
  658. package/dist/jsx/sync/debug.spec.mjs +102 -0
  659. package/dist/jsx/sync/debug.spec.mjs.map +1 -0
  660. package/dist/jsx/sync/debug.spec.native.js +133 -0
  661. package/dist/jsx/sync/debug.spec.native.js.map +1 -0
  662. package/dist/jsx/sync/filters.mjs +276 -0
  663. package/dist/jsx/sync/filters.mjs.map +1 -0
  664. package/dist/jsx/sync/filters.native.js +446 -0
  665. package/dist/jsx/sync/filters.native.js.map +1 -0
  666. package/dist/jsx/sync/filters.spec.mjs +169 -0
  667. package/dist/jsx/sync/filters.spec.mjs.map +1 -0
  668. package/dist/jsx/sync/filters.spec.native.js +173 -0
  669. package/dist/jsx/sync/filters.spec.native.js.map +1 -0
  670. package/dist/jsx/sync/index.mjs +278 -0
  671. package/dist/jsx/sync/index.mjs.map +1 -0
  672. package/dist/jsx/sync/index.native.js +462 -0
  673. package/dist/jsx/sync/index.native.js.map +1 -0
  674. package/dist/jsx/sync/merge.mjs +396 -0
  675. package/dist/jsx/sync/merge.mjs.map +1 -0
  676. package/dist/jsx/sync/merge.native.js +717 -0
  677. package/dist/jsx/sync/merge.native.js.map +1 -0
  678. package/dist/jsx/sync/merge.spec.mjs +909 -0
  679. package/dist/jsx/sync/merge.spec.mjs.map +1 -0
  680. package/dist/jsx/sync/merge.spec.native.js +937 -0
  681. package/dist/jsx/sync/merge.spec.native.js.map +1 -0
  682. package/dist/jsx/sync/multiOrderBy.spec.mjs +166 -0
  683. package/dist/jsx/sync/multiOrderBy.spec.mjs.map +1 -0
  684. package/dist/jsx/sync/multiOrderBy.spec.native.js +229 -0
  685. package/dist/jsx/sync/multiOrderBy.spec.native.js.map +1 -0
  686. package/dist/jsx/sync/mutationEngine.mjs +756 -0
  687. package/dist/jsx/sync/mutationEngine.mjs.map +1 -0
  688. package/dist/jsx/sync/mutationEngine.native.js +1159 -0
  689. package/dist/jsx/sync/mutationEngine.native.js.map +1 -0
  690. package/dist/jsx/sync/mutationEngine.spec.mjs +1159 -0
  691. package/dist/jsx/sync/mutationEngine.spec.mjs.map +1 -0
  692. package/dist/jsx/sync/mutationEngine.spec.native.js +1173 -0
  693. package/dist/jsx/sync/mutationEngine.spec.native.js.map +1 -0
  694. package/dist/jsx/sync/mutationJournal.mjs +124 -0
  695. package/dist/jsx/sync/mutationJournal.mjs.map +1 -0
  696. package/dist/jsx/sync/mutationJournal.native.js +282 -0
  697. package/dist/jsx/sync/mutationJournal.native.js.map +1 -0
  698. package/dist/jsx/sync/mutationJournal.spec.mjs +331 -0
  699. package/dist/jsx/sync/mutationJournal.spec.mjs.map +1 -0
  700. package/dist/jsx/sync/mutationJournal.spec.native.js +333 -0
  701. package/dist/jsx/sync/mutationJournal.spec.native.js.map +1 -0
  702. package/dist/jsx/sync/mutations.spec.mjs +328 -0
  703. package/dist/jsx/sync/mutations.spec.mjs.map +1 -0
  704. package/dist/jsx/sync/mutations.spec.native.js +330 -0
  705. package/dist/jsx/sync/mutations.spec.native.js.map +1 -0
  706. package/dist/jsx/sync/normalizedCache.mjs +115 -0
  707. package/dist/jsx/sync/normalizedCache.mjs.map +1 -0
  708. package/dist/jsx/sync/normalizedCache.native.js +229 -0
  709. package/dist/jsx/sync/normalizedCache.native.js.map +1 -0
  710. package/dist/jsx/sync/normalizedCache.spec.mjs +303 -0
  711. package/dist/jsx/sync/normalizedCache.spec.mjs.map +1 -0
  712. package/dist/jsx/sync/normalizedCache.spec.native.js +311 -0
  713. package/dist/jsx/sync/normalizedCache.spec.native.js.map +1 -0
  714. package/dist/jsx/sync/persistence.mjs +602 -0
  715. package/dist/jsx/sync/persistence.mjs.map +1 -0
  716. package/dist/jsx/sync/persistence.native.js +911 -0
  717. package/dist/jsx/sync/persistence.native.js.map +1 -0
  718. package/dist/jsx/sync/persistence.spec.mjs +563 -0
  719. package/dist/jsx/sync/persistence.spec.mjs.map +1 -0
  720. package/dist/jsx/sync/persistence.spec.native.js +572 -0
  721. package/dist/jsx/sync/persistence.spec.native.js.map +1 -0
  722. package/dist/jsx/sync/realtime.mjs +189 -0
  723. package/dist/jsx/sync/realtime.mjs.map +1 -0
  724. package/dist/jsx/sync/realtime.native.js +340 -0
  725. package/dist/jsx/sync/realtime.native.js.map +1 -0
  726. package/dist/jsx/sync/realtime.spec.mjs +500 -0
  727. package/dist/jsx/sync/realtime.spec.mjs.map +1 -0
  728. package/dist/jsx/sync/realtime.spec.native.js +512 -0
  729. package/dist/jsx/sync/realtime.spec.native.js.map +1 -0
  730. package/dist/jsx/sync/rehydration.mjs +298 -0
  731. package/dist/jsx/sync/rehydration.mjs.map +1 -0
  732. package/dist/jsx/sync/rehydration.native.js +531 -0
  733. package/dist/jsx/sync/rehydration.native.js.map +1 -0
  734. package/dist/jsx/sync/rehydration.spec.mjs +732 -0
  735. package/dist/jsx/sync/rehydration.spec.mjs.map +1 -0
  736. package/dist/jsx/sync/rehydration.spec.native.js +736 -0
  737. package/dist/jsx/sync/rehydration.spec.native.js.map +1 -0
  738. package/dist/jsx/sync/storage.mjs +116 -0
  739. package/dist/jsx/sync/storage.mjs.map +1 -0
  740. package/dist/jsx/sync/storage.native.js +209 -0
  741. package/dist/jsx/sync/storage.native.js.map +1 -0
  742. package/dist/jsx/sync/storage.spec.mjs +423 -0
  743. package/dist/jsx/sync/storage.spec.mjs.map +1 -0
  744. package/dist/jsx/sync/storage.spec.native.js +470 -0
  745. package/dist/jsx/sync/storage.spec.native.js.map +1 -0
  746. package/dist/jsx/sync/subscriptionManager.mjs +462 -0
  747. package/dist/jsx/sync/subscriptionManager.mjs.map +1 -0
  748. package/dist/jsx/sync/subscriptionManager.native.js +948 -0
  749. package/dist/jsx/sync/subscriptionManager.native.js.map +1 -0
  750. package/dist/jsx/sync/subscriptionManager.spec.mjs +1079 -0
  751. package/dist/jsx/sync/subscriptionManager.spec.mjs.map +1 -0
  752. package/dist/jsx/sync/subscriptionManager.spec.native.js +1136 -0
  753. package/dist/jsx/sync/subscriptionManager.spec.native.js.map +1 -0
  754. package/dist/jsx/sync/subscriptions.spec.mjs +914 -0
  755. package/dist/jsx/sync/subscriptions.spec.mjs.map +1 -0
  756. package/dist/jsx/sync/subscriptions.spec.native.js +969 -0
  757. package/dist/jsx/sync/subscriptions.spec.native.js.map +1 -0
  758. package/dist/jsx/sync/syncModule.spec.mjs +207 -0
  759. package/dist/jsx/sync/syncModule.spec.mjs.map +1 -0
  760. package/dist/jsx/sync/syncModule.spec.native.js +222 -0
  761. package/dist/jsx/sync/syncModule.spec.native.js.map +1 -0
  762. package/dist/jsx/sync/types.mjs +65 -0
  763. package/dist/jsx/sync/types.mjs.map +1 -0
  764. package/dist/jsx/sync/types.native.js +102 -0
  765. package/dist/jsx/sync/types.native.js.map +1 -0
  766. package/dist/jsx/sync/types.spec.mjs +247 -0
  767. package/dist/jsx/sync/types.spec.mjs.map +1 -0
  768. package/dist/jsx/sync/types.spec.native.js +256 -0
  769. package/dist/jsx/sync/types.spec.native.js.map +1 -0
  770. package/dist/jsx/sync/virtualPageManager.mjs +794 -0
  771. package/dist/jsx/sync/virtualPageManager.mjs.map +1 -0
  772. package/dist/jsx/sync/virtualPageManager.native.js +1125 -0
  773. package/dist/jsx/sync/virtualPageManager.native.js.map +1 -0
  774. package/dist/jsx/sync/virtualPageManager.spec.mjs +802 -0
  775. package/dist/jsx/sync/virtualPageManager.spec.mjs.map +1 -0
  776. package/dist/jsx/sync/virtualPageManager.spec.native.js +873 -0
  777. package/dist/jsx/sync/virtualPageManager.spec.native.js.map +1 -0
  778. package/dist/jsx/util.mjs +6 -0
  779. package/dist/jsx/util.mjs.map +1 -0
  780. package/dist/jsx/util.native.js +34 -0
  781. package/dist/jsx/util.native.js.map +1 -0
  782. package/dist/jsx/util.spec.mjs +20 -0
  783. package/dist/jsx/util.spec.mjs.map +1 -0
  784. package/dist/jsx/util.spec.native.js +48 -0
  785. package/dist/jsx/util.spec.native.js.map +1 -0
  786. package/package.json +96 -0
  787. package/src/auth.spec.ts +363 -0
  788. package/src/auth.ts +29 -0
  789. package/src/call.spec.ts +541 -0
  790. package/src/call.ts +21 -0
  791. package/src/collection.spec.ts +213 -0
  792. package/src/collection.ts +328 -0
  793. package/src/common/types.spec.ts +294 -0
  794. package/src/common/types.ts +41 -0
  795. package/src/core/http.spec.ts +1128 -0
  796. package/src/core/http.ts +324 -0
  797. package/src/core/types.ts +85 -0
  798. package/src/core/wire.spec.ts +570 -0
  799. package/src/core/wire.ts +487 -0
  800. package/src/db.spec.ts +1004 -0
  801. package/src/db.ts +589 -0
  802. package/src/devtools/FrappeDevtoolsPanel.tsx +873 -0
  803. package/src/devtools/index.ts +3 -0
  804. package/src/devtools/plugin.tsx +13 -0
  805. package/src/devtools/theme.ts +42 -0
  806. package/src/doctype.spec.ts +451 -0
  807. package/src/doctype.ts +828 -0
  808. package/src/file.spec.ts +347 -0
  809. package/src/file.ts +27 -0
  810. package/src/fixtureDb.ts +208 -0
  811. package/src/fixtures.ts +268 -0
  812. package/src/frappeApp.spec.ts +382 -0
  813. package/src/frappeApp.ts +125 -0
  814. package/src/frappeReact.spec.ts +505 -0
  815. package/src/frappeReact.ts +598 -0
  816. package/src/index.ts +215 -0
  817. package/src/optimistic.spec.ts +13 -0
  818. package/src/optimistic.ts +39 -0
  819. package/src/pacer.spec.ts +493 -0
  820. package/src/pacer.ts +426 -0
  821. package/src/plugin/README.md +162 -0
  822. package/src/plugin/index.ts +141 -0
  823. package/src/realtime.spec.ts +453 -0
  824. package/src/realtime.ts +279 -0
  825. package/src/sync/backfill.spec.ts +714 -0
  826. package/src/sync/backfill.ts +378 -0
  827. package/src/sync/debug.spec.ts +110 -0
  828. package/src/sync/filters.spec.ts +223 -0
  829. package/src/sync/filters.ts +513 -0
  830. package/src/sync/index.ts +412 -0
  831. package/src/sync/merge.spec.ts +812 -0
  832. package/src/sync/merge.ts +532 -0
  833. package/src/sync/multiOrderBy.spec.ts +187 -0
  834. package/src/sync/mutationEngine.spec.ts +1418 -0
  835. package/src/sync/mutationEngine.ts +957 -0
  836. package/src/sync/mutationJournal.spec.ts +337 -0
  837. package/src/sync/mutationJournal.ts +157 -0
  838. package/src/sync/mutations.spec.ts +358 -0
  839. package/src/sync/normalizedCache.spec.ts +262 -0
  840. package/src/sync/normalizedCache.ts +152 -0
  841. package/src/sync/persistence.spec.ts +908 -0
  842. package/src/sync/persistence.ts +802 -0
  843. package/src/sync/realtime.spec.ts +769 -0
  844. package/src/sync/realtime.ts +259 -0
  845. package/src/sync/rehydration.spec.ts +923 -0
  846. package/src/sync/rehydration.ts +362 -0
  847. package/src/sync/storage.spec.ts +473 -0
  848. package/src/sync/storage.ts +174 -0
  849. package/src/sync/subscriptionManager.spec.ts +1226 -0
  850. package/src/sync/subscriptionManager.ts +577 -0
  851. package/src/sync/subscriptions.spec.ts +1048 -0
  852. package/src/sync/syncModule.spec.ts +217 -0
  853. package/src/sync/types.spec.ts +276 -0
  854. package/src/sync/types.ts +384 -0
  855. package/src/sync/virtualPageManager.spec.ts +825 -0
  856. package/src/sync/virtualPageManager.ts +1069 -0
  857. package/src/util.spec.ts +17 -0
  858. package/src/util.ts +5 -0
@@ -0,0 +1,1399 @@
1
+ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
2
+ import { HttpClient } from "./http.native.js";
3
+ import { AuthType, FrappeError, HttpMethod } from "./types.native.js";
4
+ describe("HttpClient", function () {
5
+ var client;
6
+ var baseURL = "https://api.example.com";
7
+ var getMockFetch = function getMockFetch2() {
8
+ return vi.mocked(fetch);
9
+ };
10
+ beforeEach(function () {
11
+ client = new HttpClient(baseURL);
12
+ global.fetch = vi.fn();
13
+ });
14
+ afterEach(function () {
15
+ vi.restoreAllMocks();
16
+ });
17
+ describe("constructor", function () {
18
+ it("should initialize with base URL", function () {
19
+ var httpClient = new HttpClient(baseURL);
20
+ expect(httpClient).toBeDefined();
21
+ });
22
+ it("should accept auth config", function () {
23
+ var httpClient = new HttpClient(baseURL, {
24
+ useToken: true,
25
+ token: "test-token",
26
+ type: AuthType.Bearer
27
+ });
28
+ expect(httpClient).toBeDefined();
29
+ });
30
+ it("should accept retry config", function () {
31
+ var httpClient = new HttpClient(baseURL, void 0, {
32
+ maxRetries: 5,
33
+ baseDelayMs: 500,
34
+ exponentialBackoff: false
35
+ });
36
+ expect(httpClient).toBeDefined();
37
+ });
38
+ });
39
+ describe("request", function () {
40
+ it("should make basic GET request", async function () {
41
+ var mockPayload = {
42
+ data: "test"
43
+ };
44
+ var mockHeaders = new Headers({
45
+ "Content-Type": "application/json"
46
+ });
47
+ var mockRes = {
48
+ ok: true,
49
+ headers: mockHeaders,
50
+ status: 200,
51
+ json: async function json() {
52
+ return mockPayload;
53
+ }
54
+ };
55
+ global.fetch = vi.fn().mockResolvedValue(mockRes);
56
+ var result = await client.request(HttpMethod.Get, "/test", {});
57
+ expect(fetch).toHaveBeenCalledWith(`${baseURL}/test`, expect.objectContaining({
58
+ method: "GET",
59
+ credentials: "include"
60
+ }));
61
+ expect(result.payload).toEqual(mockPayload);
62
+ expect(result.headers).toBe(mockHeaders);
63
+ expect(result.status).toBe(200);
64
+ expect(result._res).toBe(mockRes);
65
+ });
66
+ it("should make POST request with JSON body", async function () {
67
+ var _getMockFetch_mock_calls__, _getMockFetch_mock_calls_;
68
+ var requestBody = {
69
+ foo: "bar",
70
+ nested: {
71
+ value: 123
72
+ }
73
+ };
74
+ var mockPayload = {
75
+ success: true
76
+ };
77
+ var mockHeaders = new Headers({
78
+ "Content-Type": "application/json"
79
+ });
80
+ var mockRes = {
81
+ ok: true,
82
+ headers: mockHeaders,
83
+ status: 200,
84
+ json: async function json() {
85
+ return mockPayload;
86
+ }
87
+ };
88
+ global.fetch = vi.fn().mockResolvedValue(mockRes);
89
+ var result = await client.request(HttpMethod.Post, "/test", {
90
+ body: requestBody
91
+ });
92
+ expect(fetch).toHaveBeenCalledWith(`${baseURL}/test`, expect.objectContaining({
93
+ method: "POST",
94
+ body: JSON.stringify(requestBody),
95
+ headers: expect.any(Headers),
96
+ credentials: "include"
97
+ }));
98
+ var calledHeaders = (_getMockFetch_mock_calls_ = getMockFetch().mock.calls[0]) === null || _getMockFetch_mock_calls_ === void 0 ? void 0 : (_getMockFetch_mock_calls__ = _getMockFetch_mock_calls_[1]) === null || _getMockFetch_mock_calls__ === void 0 ? void 0 : _getMockFetch_mock_calls__.headers;
99
+ expect(calledHeaders === null || calledHeaders === void 0 ? void 0 : calledHeaders.get("Content-Type")).toBe("application/json");
100
+ expect(result.payload).toEqual(mockPayload);
101
+ expect(result.status).toBe(200);
102
+ });
103
+ it("should handle FormData body", async function () {
104
+ var formData = new FormData();
105
+ formData.append("field", "value");
106
+ var mockRes = {
107
+ ok: true,
108
+ headers: new Headers({
109
+ "Content-Type": "application/json"
110
+ }),
111
+ status: 200,
112
+ json: async function json() {
113
+ return {
114
+ success: true
115
+ };
116
+ }
117
+ };
118
+ global.fetch = vi.fn().mockResolvedValue(mockRes);
119
+ var result = await client.request(HttpMethod.Post, "/upload", {
120
+ body: formData
121
+ });
122
+ expect(fetch).toHaveBeenCalledWith(`${baseURL}/upload`, expect.objectContaining({
123
+ method: "POST",
124
+ body: formData,
125
+ headers: expect.any(Headers),
126
+ credentials: "include"
127
+ }));
128
+ expect(result.payload).toEqual({
129
+ success: true
130
+ });
131
+ });
132
+ it("should handle URLSearchParams body", async function () {
133
+ var params = new URLSearchParams();
134
+ params.append("key", "value");
135
+ var mockRes = {
136
+ ok: true,
137
+ headers: new Headers({
138
+ "Content-Type": "text/plain"
139
+ }),
140
+ status: 200,
141
+ text: async function text() {
142
+ return "success";
143
+ }
144
+ };
145
+ global.fetch = vi.fn().mockResolvedValue(mockRes);
146
+ var result = await client.request(HttpMethod.Post, "/form", {
147
+ body: params
148
+ });
149
+ expect(fetch).toHaveBeenCalledWith(`${baseURL}/form`, expect.objectContaining({
150
+ method: "POST",
151
+ body: params,
152
+ credentials: "include"
153
+ }));
154
+ expect(result.payload).toBe("success");
155
+ });
156
+ it("should convert object to FormData when Content-Type is multipart/form-data", async function () {
157
+ var _getMockFetch_mock_calls__, _getMockFetch_mock_calls_;
158
+ var requestBody = {
159
+ field1: "value1",
160
+ field2: "value2"
161
+ };
162
+ var mockRes = {
163
+ ok: true,
164
+ headers: new Headers({
165
+ "Content-Type": "application/json"
166
+ }),
167
+ status: 200,
168
+ json: async function json() {
169
+ return {
170
+ success: true
171
+ };
172
+ }
173
+ };
174
+ global.fetch = vi.fn().mockResolvedValue(mockRes);
175
+ await client.request(HttpMethod.Post, "/test", {
176
+ body: requestBody,
177
+ headers: {
178
+ "Content-Type": "multipart/form-data"
179
+ }
180
+ });
181
+ var calledBody = (_getMockFetch_mock_calls_ = getMockFetch().mock.calls[0]) === null || _getMockFetch_mock_calls_ === void 0 ? void 0 : (_getMockFetch_mock_calls__ = _getMockFetch_mock_calls_[1]) === null || _getMockFetch_mock_calls__ === void 0 ? void 0 : _getMockFetch_mock_calls__.body;
182
+ expect(calledBody).toBeInstanceOf(FormData);
183
+ });
184
+ it("should convert object to URLSearchParams when Content-Type is application/x-www-form-urlencoded", async function () {
185
+ var _getMockFetch_mock_calls__, _getMockFetch_mock_calls_;
186
+ var requestBody = {
187
+ field1: "value1",
188
+ field2: "value2"
189
+ };
190
+ var mockRes = {
191
+ ok: true,
192
+ headers: new Headers({
193
+ "Content-Type": "text/plain"
194
+ }),
195
+ status: 200,
196
+ text: async function text() {
197
+ return "success";
198
+ }
199
+ };
200
+ global.fetch = vi.fn().mockResolvedValue(mockRes);
201
+ await client.request(HttpMethod.Post, "/test", {
202
+ body: requestBody,
203
+ headers: {
204
+ "Content-Type": "application/x-www-form-urlencoded"
205
+ }
206
+ });
207
+ var calledBody = (_getMockFetch_mock_calls_ = getMockFetch().mock.calls[0]) === null || _getMockFetch_mock_calls_ === void 0 ? void 0 : (_getMockFetch_mock_calls__ = _getMockFetch_mock_calls_[1]) === null || _getMockFetch_mock_calls__ === void 0 ? void 0 : _getMockFetch_mock_calls__.body;
208
+ expect(calledBody).toBe("field1=value1&field2=value2");
209
+ });
210
+ it("should handle text response", async function () {
211
+ var textResponse = "Plain text response";
212
+ var mockHeaders = new Headers({
213
+ "Content-Type": "text/plain"
214
+ });
215
+ var mockRes = {
216
+ ok: true,
217
+ headers: mockHeaders,
218
+ status: 200,
219
+ text: async function text() {
220
+ return textResponse;
221
+ }
222
+ };
223
+ global.fetch = vi.fn().mockResolvedValue(mockRes);
224
+ var result = await client.request(HttpMethod.Get, "/text", {});
225
+ expect(result.payload).toBe(textResponse);
226
+ expect(result.headers).toBe(mockHeaders);
227
+ expect(result.status).toBe(200);
228
+ });
229
+ it("should throw FrappeError on non-ok response", async function () {
230
+ var errorPayload = {
231
+ message: "Bad Request",
232
+ details: "Invalid input"
233
+ };
234
+ global.fetch = vi.fn().mockResolvedValue({
235
+ ok: false,
236
+ status: 400,
237
+ statusText: "Bad Request",
238
+ headers: new Headers({
239
+ "Content-Type": "application/json"
240
+ }),
241
+ json: async function json() {
242
+ return errorPayload;
243
+ }
244
+ });
245
+ await expect(client.request(HttpMethod.Post, "/test", {})).rejects.toThrow(FrappeError);
246
+ try {
247
+ await client.request(HttpMethod.Post, "/test", {});
248
+ } catch (error) {
249
+ expect(error).toBeInstanceOf(FrappeError);
250
+ expect(error.status).toBe(400);
251
+ expect(error.message).toBe("Bad Request");
252
+ expect(error.data).toEqual(errorPayload);
253
+ }
254
+ });
255
+ it("should handle network errors", async function () {
256
+ var networkError = new Error("Network error");
257
+ global.fetch = vi.fn().mockRejectedValue(networkError);
258
+ await expect(client.request(HttpMethod.Get, "/test", {})).rejects.toThrow("Network error");
259
+ });
260
+ });
261
+ describe("authentication", function () {
262
+ it("should add Bearer token to headers", async function () {
263
+ var _getMockFetch_mock_calls__, _getMockFetch_mock_calls_, _getMockFetch_mock_calls__1, _getMockFetch_mock_calls_1;
264
+ var token = "test-bearer-token";
265
+ var authClient = new HttpClient(baseURL, {
266
+ useToken: true,
267
+ token,
268
+ type: AuthType.Bearer
269
+ });
270
+ var mockRes = {
271
+ ok: true,
272
+ headers: new Headers({
273
+ "Content-Type": "application/json"
274
+ }),
275
+ status: 200,
276
+ json: async function json() {
277
+ return {
278
+ success: true
279
+ };
280
+ }
281
+ };
282
+ global.fetch = vi.fn().mockResolvedValue(mockRes);
283
+ await authClient.request(HttpMethod.Get, "/test", {});
284
+ var calledHeaders = (_getMockFetch_mock_calls_ = getMockFetch().mock.calls[0]) === null || _getMockFetch_mock_calls_ === void 0 ? void 0 : (_getMockFetch_mock_calls__ = _getMockFetch_mock_calls_[1]) === null || _getMockFetch_mock_calls__ === void 0 ? void 0 : _getMockFetch_mock_calls__.headers;
285
+ expect(calledHeaders === null || calledHeaders === void 0 ? void 0 : calledHeaders.get("Authorization")).toBe(`Bearer ${token}`);
286
+ expect((_getMockFetch_mock_calls_1 = getMockFetch().mock.calls[0]) === null || _getMockFetch_mock_calls_1 === void 0 ? void 0 : (_getMockFetch_mock_calls__1 = _getMockFetch_mock_calls_1[1]) === null || _getMockFetch_mock_calls__1 === void 0 ? void 0 : _getMockFetch_mock_calls__1.credentials).toBe("omit");
287
+ });
288
+ it("should add token auth to headers", async function () {
289
+ var _getMockFetch_mock_calls__, _getMockFetch_mock_calls_;
290
+ var token = "test-token";
291
+ var authClient = new HttpClient(baseURL, {
292
+ useToken: true,
293
+ token,
294
+ type: AuthType.Token
295
+ });
296
+ var mockRes = {
297
+ ok: true,
298
+ headers: new Headers({
299
+ "Content-Type": "application/json"
300
+ }),
301
+ status: 200,
302
+ json: async function json() {
303
+ return {
304
+ success: true
305
+ };
306
+ }
307
+ };
308
+ global.fetch = vi.fn().mockResolvedValue(mockRes);
309
+ await authClient.request(HttpMethod.Get, "/test", {});
310
+ var calledHeaders = (_getMockFetch_mock_calls_ = getMockFetch().mock.calls[0]) === null || _getMockFetch_mock_calls_ === void 0 ? void 0 : (_getMockFetch_mock_calls__ = _getMockFetch_mock_calls_[1]) === null || _getMockFetch_mock_calls__ === void 0 ? void 0 : _getMockFetch_mock_calls__.headers;
311
+ expect(calledHeaders === null || calledHeaders === void 0 ? void 0 : calledHeaders.get("Authorization")).toBe(`token ${token}`);
312
+ });
313
+ it("should support token as function", async function () {
314
+ var _getMockFetch_mock_calls__, _getMockFetch_mock_calls_;
315
+ var token = "dynamic-token";
316
+ var authClient = new HttpClient(baseURL, {
317
+ useToken: true,
318
+ token: async function token1() {
319
+ return token;
320
+ },
321
+ type: AuthType.Bearer
322
+ });
323
+ var mockRes = {
324
+ ok: true,
325
+ headers: new Headers({
326
+ "Content-Type": "application/json"
327
+ }),
328
+ status: 200,
329
+ json: async function json() {
330
+ return {
331
+ success: true
332
+ };
333
+ }
334
+ };
335
+ global.fetch = vi.fn().mockResolvedValue(mockRes);
336
+ await authClient.request(HttpMethod.Get, "/test", {});
337
+ var calledHeaders = (_getMockFetch_mock_calls_ = getMockFetch().mock.calls[0]) === null || _getMockFetch_mock_calls_ === void 0 ? void 0 : (_getMockFetch_mock_calls__ = _getMockFetch_mock_calls_[1]) === null || _getMockFetch_mock_calls__ === void 0 ? void 0 : _getMockFetch_mock_calls__.headers;
338
+ expect(calledHeaders === null || calledHeaders === void 0 ? void 0 : calledHeaders.get("Authorization")).toBe(`Bearer ${token}`);
339
+ });
340
+ it("should add CSRF token for non-GET requests without token auth", async function () {
341
+ var _getMockFetch_mock_calls__, _getMockFetch_mock_calls_;
342
+ var csrfToken = "csrf-test-token";
343
+ Object.defineProperty(global, "document", {
344
+ value: {
345
+ cookie: `frappe-csrf-token=${csrfToken}; path=/`
346
+ },
347
+ writable: true
348
+ });
349
+ Object.defineProperty(global, "window", {
350
+ value: {},
351
+ writable: true
352
+ });
353
+ var mockRes = {
354
+ ok: true,
355
+ headers: new Headers({
356
+ "Content-Type": "application/json"
357
+ }),
358
+ status: 200,
359
+ json: async function json() {
360
+ return {
361
+ success: true
362
+ };
363
+ }
364
+ };
365
+ global.fetch = vi.fn().mockResolvedValue(mockRes);
366
+ await client.request(HttpMethod.Post, "/test", {});
367
+ var calledHeaders = (_getMockFetch_mock_calls_ = getMockFetch().mock.calls[0]) === null || _getMockFetch_mock_calls_ === void 0 ? void 0 : (_getMockFetch_mock_calls__ = _getMockFetch_mock_calls_[1]) === null || _getMockFetch_mock_calls__ === void 0 ? void 0 : _getMockFetch_mock_calls__.headers;
368
+ expect(calledHeaders === null || calledHeaders === void 0 ? void 0 : calledHeaders.get("X-Frappe-CSRF-Token")).toBe(csrfToken);
369
+ Object.defineProperty(global, "document", {
370
+ value: void 0,
371
+ configurable: true
372
+ });
373
+ Object.defineProperty(global, "window", {
374
+ value: void 0,
375
+ configurable: true
376
+ });
377
+ });
378
+ it("should use credentials include when not using token auth", async function () {
379
+ var _getMockFetch_mock_calls__, _getMockFetch_mock_calls_;
380
+ var mockRes = {
381
+ ok: true,
382
+ headers: new Headers({
383
+ "Content-Type": "application/json"
384
+ }),
385
+ status: 200,
386
+ json: async function json() {
387
+ return {
388
+ success: true
389
+ };
390
+ }
391
+ };
392
+ global.fetch = vi.fn().mockResolvedValue(mockRes);
393
+ await client.request(HttpMethod.Get, "/test", {});
394
+ expect((_getMockFetch_mock_calls_ = getMockFetch().mock.calls[0]) === null || _getMockFetch_mock_calls_ === void 0 ? void 0 : (_getMockFetch_mock_calls__ = _getMockFetch_mock_calls_[1]) === null || _getMockFetch_mock_calls__ === void 0 ? void 0 : _getMockFetch_mock_calls__.credentials).toBe("include");
395
+ });
396
+ it("should set token dynamically via function", async function () {
397
+ var _getMockFetch_mock_calls__, _getMockFetch_mock_calls_;
398
+ var tokenFn = vi.fn().mockResolvedValue("new-token");
399
+ var authClient = new HttpClient(baseURL, {
400
+ useToken: true,
401
+ token: tokenFn
402
+ });
403
+ var mockRes = {
404
+ ok: true,
405
+ headers: new Headers({
406
+ "Content-Type": "application/json"
407
+ }),
408
+ status: 200,
409
+ json: async function json() {
410
+ return {
411
+ success: true
412
+ };
413
+ }
414
+ };
415
+ global.fetch = vi.fn().mockResolvedValue(mockRes);
416
+ await authClient.request(HttpMethod.Get, "/test", {});
417
+ var calledHeaders = (_getMockFetch_mock_calls_ = getMockFetch().mock.calls[0]) === null || _getMockFetch_mock_calls_ === void 0 ? void 0 : (_getMockFetch_mock_calls__ = _getMockFetch_mock_calls_[1]) === null || _getMockFetch_mock_calls__ === void 0 ? void 0 : _getMockFetch_mock_calls__.headers;
418
+ expect(calledHeaders === null || calledHeaders === void 0 ? void 0 : calledHeaders.get("Authorization")).toBe("Bearer new-token");
419
+ expect(tokenFn).toHaveBeenCalledTimes(1);
420
+ });
421
+ });
422
+ describe("retry logic", function () {
423
+ it("should retry on retry-able status codes", async function () {
424
+ var retryClient = new HttpClient(baseURL, void 0, {
425
+ maxRetries: 2,
426
+ baseDelayMs: 10,
427
+ retryStatusCodes: [503]
428
+ });
429
+ var attempt = 0;
430
+ global.fetch = vi.fn().mockImplementation(async function () {
431
+ attempt++;
432
+ if (attempt < 3) {
433
+ return {
434
+ ok: false,
435
+ status: 503,
436
+ statusText: "Service Unavailable",
437
+ headers: new Headers({
438
+ "Content-Type": "text/plain"
439
+ }),
440
+ text: async function text() {
441
+ return "Service temporarily unavailable";
442
+ }
443
+ };
444
+ }
445
+ return {
446
+ ok: true,
447
+ headers: new Headers({
448
+ "Content-Type": "application/json"
449
+ }),
450
+ status: 200,
451
+ json: async function json() {
452
+ return {
453
+ success: true
454
+ };
455
+ }
456
+ };
457
+ });
458
+ var result = await retryClient.request(HttpMethod.Get, "/test", {});
459
+ expect(fetch).toHaveBeenCalledTimes(3);
460
+ expect(result.payload).toEqual({
461
+ success: true
462
+ });
463
+ });
464
+ it("should retry on network errors when configured", async function () {
465
+ var retryClient = new HttpClient(baseURL, void 0, {
466
+ maxRetries: 1,
467
+ baseDelayMs: 10,
468
+ retryOnNetworkError: true
469
+ });
470
+ var attempt = 0;
471
+ global.fetch = vi.fn().mockImplementation(async function () {
472
+ attempt++;
473
+ if (attempt === 1) {
474
+ throw new Error("Network error");
475
+ }
476
+ return {
477
+ ok: true,
478
+ headers: new Headers({
479
+ "Content-Type": "application/json"
480
+ }),
481
+ status: 200,
482
+ json: async function json() {
483
+ return {
484
+ success: true
485
+ };
486
+ }
487
+ };
488
+ });
489
+ var result = await retryClient.request(HttpMethod.Get, "/test", {});
490
+ expect(fetch).toHaveBeenCalledTimes(2);
491
+ expect(result.payload).toEqual({
492
+ success: true
493
+ });
494
+ });
495
+ it("should not retry on non-retry-able status codes", async function () {
496
+ var retryClient = new HttpClient(baseURL, void 0, {
497
+ maxRetries: 2,
498
+ baseDelayMs: 10,
499
+ retryStatusCodes: [503]
500
+ });
501
+ global.fetch = vi.fn().mockResolvedValue({
502
+ ok: false,
503
+ status: 400,
504
+ statusText: "Bad Request",
505
+ headers: new Headers({
506
+ "Content-Type": "text/plain"
507
+ }),
508
+ text: async function text() {
509
+ return "Bad request";
510
+ }
511
+ });
512
+ await expect(retryClient.request(HttpMethod.Get, "/test", {})).rejects.toThrow(FrappeError);
513
+ expect(fetch).toHaveBeenCalledTimes(1);
514
+ });
515
+ it("should use exponential backoff when configured", async function () {
516
+ var retryClient = new HttpClient(baseURL, void 0, {
517
+ maxRetries: 3,
518
+ baseDelayMs: 100,
519
+ exponentialBackoff: true,
520
+ maxDelayMs: 500,
521
+ retryStatusCodes: [503]
522
+ });
523
+ var delays = [];
524
+ vi.spyOn(global, "setTimeout").mockImplementation(function (fn, delay) {
525
+ delays.push(delay || 0);
526
+ if (typeof fn === "function") fn();
527
+ return 0;
528
+ });
529
+ var attempt = 0;
530
+ global.fetch = vi.fn().mockImplementation(async function () {
531
+ attempt++;
532
+ if (attempt <= 3) {
533
+ return {
534
+ ok: false,
535
+ status: 503,
536
+ statusText: "Service Unavailable",
537
+ headers: new Headers({
538
+ "Content-Type": "text/plain"
539
+ }),
540
+ text: async function text() {
541
+ return "Service unavailable";
542
+ }
543
+ };
544
+ }
545
+ return {
546
+ ok: true,
547
+ headers: new Headers({
548
+ "Content-Type": "application/json"
549
+ }),
550
+ status: 200,
551
+ json: async function json() {
552
+ return {
553
+ success: true
554
+ };
555
+ }
556
+ };
557
+ });
558
+ var result = await retryClient.request(HttpMethod.Get, "/test", {});
559
+ expect(delays[0]).toBe(100);
560
+ expect(delays[1]).toBe(200);
561
+ expect(delays[2]).toBe(400);
562
+ expect(result.payload).toEqual({
563
+ success: true
564
+ });
565
+ });
566
+ it("should respect maxDelayMs", async function () {
567
+ var retryClient = new HttpClient(baseURL, void 0, {
568
+ maxRetries: 3,
569
+ baseDelayMs: 100,
570
+ exponentialBackoff: true,
571
+ maxDelayMs: 150,
572
+ retryStatusCodes: [503]
573
+ });
574
+ var delays = [];
575
+ vi.spyOn(global, "setTimeout").mockImplementation(function (fn, delay) {
576
+ delays.push(delay || 0);
577
+ if (typeof fn === "function") fn();
578
+ return 0;
579
+ });
580
+ var attempt = 0;
581
+ global.fetch = vi.fn().mockImplementation(async function () {
582
+ attempt++;
583
+ if (attempt <= 3) {
584
+ return {
585
+ ok: false,
586
+ status: 503,
587
+ statusText: "Service Unavailable",
588
+ headers: new Headers({
589
+ "Content-Type": "text/plain"
590
+ }),
591
+ text: async function text() {
592
+ return "Service unavailable";
593
+ }
594
+ };
595
+ }
596
+ return {
597
+ ok: true,
598
+ headers: new Headers({
599
+ "Content-Type": "application/json"
600
+ }),
601
+ status: 200,
602
+ json: async function json() {
603
+ return {
604
+ success: true
605
+ };
606
+ }
607
+ };
608
+ });
609
+ var result = await retryClient.request(HttpMethod.Get, "/test", {});
610
+ expect(delays[0]).toBe(100);
611
+ expect(delays[1]).toBe(150);
612
+ expect(delays[2]).toBe(150);
613
+ expect(result.payload).toEqual({
614
+ success: true
615
+ });
616
+ });
617
+ it("should use custom shouldRetry function", async function () {
618
+ var shouldRetry = vi.fn(function (_err, attempt2) {
619
+ return attempt2 < 2;
620
+ });
621
+ var retryClient = new HttpClient(baseURL, void 0, {
622
+ maxRetries: 3,
623
+ baseDelayMs: 10,
624
+ shouldRetry
625
+ });
626
+ var attempt = 0;
627
+ global.fetch = vi.fn().mockImplementation(async function () {
628
+ attempt++;
629
+ if (attempt < 3) {
630
+ return {
631
+ ok: false,
632
+ status: 500,
633
+ statusText: "Internal Server Error",
634
+ headers: new Headers({
635
+ "Content-Type": "text/plain"
636
+ }),
637
+ text: async function text() {
638
+ return "Server error";
639
+ }
640
+ };
641
+ }
642
+ return {
643
+ ok: true,
644
+ headers: new Headers({
645
+ "Content-Type": "application/json"
646
+ }),
647
+ status: 200,
648
+ json: async function json() {
649
+ return {
650
+ success: true
651
+ };
652
+ }
653
+ };
654
+ });
655
+ var result = await retryClient.request(HttpMethod.Get, "/test", {});
656
+ expect(shouldRetry).toHaveBeenCalledTimes(2);
657
+ expect(fetch).toHaveBeenCalledTimes(3);
658
+ expect(result.payload).toEqual({
659
+ success: true
660
+ });
661
+ });
662
+ it("should throw last error after max retries", async function () {
663
+ var retryClient = new HttpClient(baseURL, void 0, {
664
+ maxRetries: 2,
665
+ baseDelayMs: 10,
666
+ retryStatusCodes: [503]
667
+ });
668
+ global.fetch = vi.fn().mockResolvedValue({
669
+ ok: false,
670
+ status: 503,
671
+ statusText: "Service Unavailable",
672
+ headers: new Headers({
673
+ "Content-Type": "text/plain"
674
+ }),
675
+ text: async function text() {
676
+ return "Service unavailable";
677
+ }
678
+ });
679
+ await expect(retryClient.request(HttpMethod.Get, "/test", {})).rejects.toThrow(FrappeError);
680
+ expect(fetch).toHaveBeenCalledTimes(3);
681
+ });
682
+ });
683
+ describe("convenience methods", function () {
684
+ beforeEach(function () {
685
+ var mockRes = {
686
+ ok: true,
687
+ headers: new Headers({
688
+ "Content-Type": "application/json"
689
+ }),
690
+ status: 200,
691
+ json: async function json() {
692
+ return {
693
+ success: true
694
+ };
695
+ }
696
+ };
697
+ global.fetch = vi.fn().mockResolvedValue(mockRes);
698
+ });
699
+ describe("get", function () {
700
+ it("should make GET request without params", async function () {
701
+ var result = await client.get("/test");
702
+ expect(fetch).toHaveBeenCalledWith(`${baseURL}/test`, expect.objectContaining({
703
+ method: "GET"
704
+ }));
705
+ expect(result.payload).toEqual({
706
+ success: true
707
+ });
708
+ });
709
+ it("should make GET request with params", async function () {
710
+ await client.get("/test", {
711
+ foo: "bar",
712
+ num: 123,
713
+ bool: true,
714
+ nullValue: null,
715
+ undefinedValue: void 0
716
+ });
717
+ expect(fetch).toHaveBeenCalledWith(`${baseURL}/test?foo=bar&num=123&bool=true`, expect.objectContaining({
718
+ method: "GET"
719
+ }));
720
+ });
721
+ it("should handle complex params", async function () {
722
+ await client.get("/test", {
723
+ array: [1, 2, 3],
724
+ object: {
725
+ nested: "value"
726
+ }
727
+ });
728
+ expect(fetch).toHaveBeenCalledWith(`${baseURL}/test?array=%5B1%2C2%2C3%5D&object=%7B%22nested%22%3A%22value%22%7D`, expect.objectContaining({
729
+ method: "GET"
730
+ }));
731
+ });
732
+ it("should pass custom headers", async function () {
733
+ var _getMockFetch_mock_calls__, _getMockFetch_mock_calls_;
734
+ await client.get("/test", {}, {
735
+ "X-Custom": "header"
736
+ });
737
+ var calledHeaders = (_getMockFetch_mock_calls_ = getMockFetch().mock.calls[0]) === null || _getMockFetch_mock_calls_ === void 0 ? void 0 : (_getMockFetch_mock_calls__ = _getMockFetch_mock_calls_[1]) === null || _getMockFetch_mock_calls__ === void 0 ? void 0 : _getMockFetch_mock_calls__.headers;
738
+ expect(calledHeaders === null || calledHeaders === void 0 ? void 0 : calledHeaders.get("X-Custom")).toBe("header");
739
+ });
740
+ });
741
+ describe("post", function () {
742
+ it("should make POST request without body", async function () {
743
+ var result = await client.post("/test");
744
+ expect(fetch).toHaveBeenCalledWith(`${baseURL}/test`, expect.objectContaining({
745
+ method: "POST"
746
+ }));
747
+ expect(result.payload).toEqual({
748
+ success: true
749
+ });
750
+ });
751
+ it("should make POST request with body", async function () {
752
+ var body = {
753
+ data: "test"
754
+ };
755
+ var result = await client.post("/test", body);
756
+ expect(fetch).toHaveBeenCalledWith(`${baseURL}/test`, expect.objectContaining({
757
+ method: "POST",
758
+ body: JSON.stringify(body)
759
+ }));
760
+ expect(result.payload).toEqual({
761
+ success: true
762
+ });
763
+ });
764
+ it("should pass custom headers", async function () {
765
+ var _getMockFetch_mock_calls__, _getMockFetch_mock_calls_;
766
+ await client.post("/test", {}, {
767
+ "X-Custom": "header"
768
+ });
769
+ var calledHeaders = (_getMockFetch_mock_calls_ = getMockFetch().mock.calls[0]) === null || _getMockFetch_mock_calls_ === void 0 ? void 0 : (_getMockFetch_mock_calls__ = _getMockFetch_mock_calls_[1]) === null || _getMockFetch_mock_calls__ === void 0 ? void 0 : _getMockFetch_mock_calls__.headers;
770
+ expect(calledHeaders === null || calledHeaders === void 0 ? void 0 : calledHeaders.get("X-Custom")).toBe("header");
771
+ });
772
+ });
773
+ describe("put", function () {
774
+ it("should make PUT request", async function () {
775
+ var body = {
776
+ data: "test"
777
+ };
778
+ var result = await client.put("/test", body);
779
+ expect(fetch).toHaveBeenCalledWith(`${baseURL}/test`, expect.objectContaining({
780
+ method: "PUT",
781
+ body: JSON.stringify(body)
782
+ }));
783
+ expect(result.payload).toEqual({
784
+ success: true
785
+ });
786
+ });
787
+ it("should pass custom headers", async function () {
788
+ var _getMockFetch_mock_calls__, _getMockFetch_mock_calls_;
789
+ await client.put("/test", {}, {
790
+ "X-Custom": "header"
791
+ });
792
+ var calledHeaders = (_getMockFetch_mock_calls_ = getMockFetch().mock.calls[0]) === null || _getMockFetch_mock_calls_ === void 0 ? void 0 : (_getMockFetch_mock_calls__ = _getMockFetch_mock_calls_[1]) === null || _getMockFetch_mock_calls__ === void 0 ? void 0 : _getMockFetch_mock_calls__.headers;
793
+ expect(calledHeaders === null || calledHeaders === void 0 ? void 0 : calledHeaders.get("X-Custom")).toBe("header");
794
+ });
795
+ });
796
+ describe("delete", function () {
797
+ it("should make DELETE request", async function () {
798
+ var result = await client.delete("/test");
799
+ expect(fetch).toHaveBeenCalledWith(`${baseURL}/test`, expect.objectContaining({
800
+ method: "DELETE"
801
+ }));
802
+ expect(result.payload).toEqual({
803
+ success: true
804
+ });
805
+ });
806
+ it("should make DELETE request with body", async function () {
807
+ var body = {
808
+ id: "123"
809
+ };
810
+ var result = await client.delete("/test", body);
811
+ expect(fetch).toHaveBeenCalledWith(`${baseURL}/test`, expect.objectContaining({
812
+ method: "DELETE",
813
+ body: JSON.stringify(body)
814
+ }));
815
+ expect(result.payload).toEqual({
816
+ success: true
817
+ });
818
+ });
819
+ it("should pass custom headers", async function () {
820
+ var _getMockFetch_mock_calls__, _getMockFetch_mock_calls_;
821
+ await client.delete("/test", void 0, {
822
+ "X-Custom": "header"
823
+ });
824
+ var calledHeaders = (_getMockFetch_mock_calls_ = getMockFetch().mock.calls[0]) === null || _getMockFetch_mock_calls_ === void 0 ? void 0 : (_getMockFetch_mock_calls__ = _getMockFetch_mock_calls_[1]) === null || _getMockFetch_mock_calls__ === void 0 ? void 0 : _getMockFetch_mock_calls__.headers;
825
+ expect(calledHeaders === null || calledHeaders === void 0 ? void 0 : calledHeaders.get("X-Custom")).toBe("header");
826
+ });
827
+ });
828
+ describe("head", function () {
829
+ it("should make HEAD request and return response", async function () {
830
+ var mockRes = {
831
+ ok: true,
832
+ headers: new Headers({
833
+ "Content-Type": "application/json",
834
+ "Content-Length": "1234"
835
+ }),
836
+ status: 200,
837
+ text: async function text() {
838
+ return "";
839
+ },
840
+ json: async function json() {
841
+ return {};
842
+ }
843
+ };
844
+ global.fetch = vi.fn().mockResolvedValue(mockRes);
845
+ var response = await client.head("/test");
846
+ expect(fetch).toHaveBeenCalledWith(`${baseURL}/test`, expect.objectContaining({
847
+ method: "HEAD"
848
+ }));
849
+ expect(response.headers.get("Content-Type")).toBe("application/json");
850
+ expect(response.headers.get("Content-Length")).toBe("1234");
851
+ expect(response.status).toBe(200);
852
+ });
853
+ it("should make HEAD request with params", async function () {
854
+ var mockRes = {
855
+ ok: true,
856
+ headers: new Headers(),
857
+ status: 200,
858
+ text: async function text() {
859
+ return "";
860
+ },
861
+ json: async function json() {
862
+ return {};
863
+ }
864
+ };
865
+ global.fetch = vi.fn().mockResolvedValue(mockRes);
866
+ var response = await client.head("/test", {
867
+ check: "true"
868
+ });
869
+ expect(fetch).toHaveBeenCalledWith(`${baseURL}/test?check=true`, expect.objectContaining({
870
+ method: "HEAD"
871
+ }));
872
+ expect(response.status).toBe(200);
873
+ });
874
+ it("should pass custom headers", async function () {
875
+ var _getMockFetch_mock_calls__, _getMockFetch_mock_calls_;
876
+ var mockRes = {
877
+ ok: true,
878
+ headers: new Headers(),
879
+ status: 200,
880
+ text: async function text() {
881
+ return "";
882
+ },
883
+ json: async function json() {
884
+ return {};
885
+ }
886
+ };
887
+ global.fetch = vi.fn().mockResolvedValue(mockRes);
888
+ await client.head("/test", {}, {
889
+ "X-Custom": "header"
890
+ });
891
+ var calledHeaders = (_getMockFetch_mock_calls_ = getMockFetch().mock.calls[0]) === null || _getMockFetch_mock_calls_ === void 0 ? void 0 : (_getMockFetch_mock_calls__ = _getMockFetch_mock_calls_[1]) === null || _getMockFetch_mock_calls__ === void 0 ? void 0 : _getMockFetch_mock_calls__.headers;
892
+ expect(calledHeaders === null || calledHeaders === void 0 ? void 0 : calledHeaders.get("X-Custom")).toBe("header");
893
+ });
894
+ it("should throw FrappeError on non-ok response", async function () {
895
+ global.fetch = vi.fn().mockResolvedValue({
896
+ ok: false,
897
+ status: 404,
898
+ statusText: "Not Found",
899
+ headers: new Headers(),
900
+ text: async function text() {
901
+ return "Not found";
902
+ }
903
+ });
904
+ await expect(client.head("/test")).rejects.toThrow(FrappeError);
905
+ try {
906
+ await client.head("/test");
907
+ } catch (error) {
908
+ expect(error).toBeInstanceOf(FrappeError);
909
+ expect(error.status).toBe(404);
910
+ expect(error.message).toBe("Not Found");
911
+ }
912
+ });
913
+ it("should use credentials include when not using token auth", async function () {
914
+ var _getMockFetch_mock_calls__, _getMockFetch_mock_calls_;
915
+ var mockRes = {
916
+ ok: true,
917
+ headers: new Headers(),
918
+ status: 200,
919
+ text: async function text() {
920
+ return "";
921
+ },
922
+ json: async function json() {
923
+ return {};
924
+ }
925
+ };
926
+ global.fetch = vi.fn().mockResolvedValue(mockRes);
927
+ await client.head("/test");
928
+ expect((_getMockFetch_mock_calls_ = getMockFetch().mock.calls[0]) === null || _getMockFetch_mock_calls_ === void 0 ? void 0 : (_getMockFetch_mock_calls__ = _getMockFetch_mock_calls_[1]) === null || _getMockFetch_mock_calls__ === void 0 ? void 0 : _getMockFetch_mock_calls__.credentials).toBe("include");
929
+ });
930
+ it("should use credentials omit and add auth header when using token auth", async function () {
931
+ var _getMockFetch_mock_calls__, _getMockFetch_mock_calls_, _getMockFetch_mock_calls__1, _getMockFetch_mock_calls_1;
932
+ var authClient = new HttpClient(baseURL, {
933
+ useToken: true,
934
+ token: "test-token",
935
+ type: AuthType.Bearer
936
+ });
937
+ var mockRes = {
938
+ ok: true,
939
+ headers: new Headers(),
940
+ status: 200,
941
+ text: async function text() {
942
+ return "";
943
+ },
944
+ json: async function json() {
945
+ return {};
946
+ }
947
+ };
948
+ global.fetch = vi.fn().mockResolvedValue(mockRes);
949
+ await authClient.head("/test");
950
+ expect((_getMockFetch_mock_calls_ = getMockFetch().mock.calls[0]) === null || _getMockFetch_mock_calls_ === void 0 ? void 0 : (_getMockFetch_mock_calls__ = _getMockFetch_mock_calls_[1]) === null || _getMockFetch_mock_calls__ === void 0 ? void 0 : _getMockFetch_mock_calls__.credentials).toBe("omit");
951
+ var calledHeaders = (_getMockFetch_mock_calls_1 = getMockFetch().mock.calls[0]) === null || _getMockFetch_mock_calls_1 === void 0 ? void 0 : (_getMockFetch_mock_calls__1 = _getMockFetch_mock_calls_1[1]) === null || _getMockFetch_mock_calls__1 === void 0 ? void 0 : _getMockFetch_mock_calls__1.headers;
952
+ expect(calledHeaders === null || calledHeaders === void 0 ? void 0 : calledHeaders.get("Authorization")).toBe("Bearer test-token");
953
+ });
954
+ });
955
+ });
956
+ describe("edge cases", function () {
957
+ it("should handle empty response", async function () {
958
+ var mockRes = {
959
+ ok: true,
960
+ headers: new Headers(),
961
+ status: 200,
962
+ text: async function text() {
963
+ return "";
964
+ },
965
+ json: async function json() {
966
+ throw new Error("Invalid JSON");
967
+ }
968
+ };
969
+ global.fetch = vi.fn().mockResolvedValue(mockRes);
970
+ var result = await client.request(HttpMethod.Get, "/empty", {});
971
+ expect(result.payload).toBe("");
972
+ expect(result.status).toBe(200);
973
+ });
974
+ it("should handle ArrayBuffer body", async function () {
975
+ var _getMockFetch_mock_calls__, _getMockFetch_mock_calls_;
976
+ var buffer = new ArrayBuffer(8);
977
+ var mockRes = {
978
+ ok: true,
979
+ headers: new Headers({
980
+ "Content-Type": "application/json"
981
+ }),
982
+ status: 200,
983
+ json: async function json() {
984
+ return {
985
+ success: true
986
+ };
987
+ }
988
+ };
989
+ global.fetch = vi.fn().mockResolvedValue(mockRes);
990
+ await client.request(HttpMethod.Post, "/binary", {
991
+ body: buffer
992
+ });
993
+ expect((_getMockFetch_mock_calls_ = getMockFetch().mock.calls[0]) === null || _getMockFetch_mock_calls_ === void 0 ? void 0 : (_getMockFetch_mock_calls__ = _getMockFetch_mock_calls_[1]) === null || _getMockFetch_mock_calls__ === void 0 ? void 0 : _getMockFetch_mock_calls__.body).toBe(buffer);
994
+ });
995
+ it("should handle Blob body", async function () {
996
+ var _getMockFetch_mock_calls__, _getMockFetch_mock_calls_;
997
+ var blob = new Blob(["test"], {
998
+ type: "text/plain"
999
+ });
1000
+ var mockRes = {
1001
+ ok: true,
1002
+ headers: new Headers({
1003
+ "Content-Type": "application/json"
1004
+ }),
1005
+ status: 200,
1006
+ json: async function json() {
1007
+ return {
1008
+ success: true
1009
+ };
1010
+ }
1011
+ };
1012
+ global.fetch = vi.fn().mockResolvedValue(mockRes);
1013
+ await client.request(HttpMethod.Post, "/blob", {
1014
+ body: blob
1015
+ });
1016
+ expect((_getMockFetch_mock_calls_ = getMockFetch().mock.calls[0]) === null || _getMockFetch_mock_calls_ === void 0 ? void 0 : (_getMockFetch_mock_calls__ = _getMockFetch_mock_calls_[1]) === null || _getMockFetch_mock_calls__ === void 0 ? void 0 : _getMockFetch_mock_calls__.body).toBe(blob);
1017
+ });
1018
+ it("should handle ArrayBufferView body", async function () {
1019
+ var _getMockFetch_mock_calls__, _getMockFetch_mock_calls_;
1020
+ var uint8Array = new Uint8Array([1, 2, 3, 4]);
1021
+ var mockRes = {
1022
+ ok: true,
1023
+ headers: new Headers({
1024
+ "Content-Type": "application/json"
1025
+ }),
1026
+ status: 200,
1027
+ json: async function json() {
1028
+ return {
1029
+ success: true
1030
+ };
1031
+ }
1032
+ };
1033
+ global.fetch = vi.fn().mockResolvedValue(mockRes);
1034
+ await client.request(HttpMethod.Post, "/typed-array", {
1035
+ body: uint8Array
1036
+ });
1037
+ expect((_getMockFetch_mock_calls_ = getMockFetch().mock.calls[0]) === null || _getMockFetch_mock_calls_ === void 0 ? void 0 : (_getMockFetch_mock_calls__ = _getMockFetch_mock_calls_[1]) === null || _getMockFetch_mock_calls__ === void 0 ? void 0 : _getMockFetch_mock_calls__.body).toBe(uint8Array);
1038
+ });
1039
+ it("should handle relative paths", async function () {
1040
+ var mockRes = {
1041
+ ok: true,
1042
+ headers: new Headers({
1043
+ "Content-Type": "application/json"
1044
+ }),
1045
+ status: 200,
1046
+ json: async function json() {
1047
+ return {
1048
+ success: true
1049
+ };
1050
+ }
1051
+ };
1052
+ global.fetch = vi.fn().mockResolvedValue(mockRes);
1053
+ await client.request(HttpMethod.Get, "relative/path", {});
1054
+ expect(fetch).toHaveBeenCalledWith(`${baseURL}/relative/path`, expect.any(Object));
1055
+ });
1056
+ it("should handle absolute paths", async function () {
1057
+ var mockRes = {
1058
+ ok: true,
1059
+ headers: new Headers({
1060
+ "Content-Type": "application/json"
1061
+ }),
1062
+ status: 200,
1063
+ json: async function json() {
1064
+ return {
1065
+ success: true
1066
+ };
1067
+ }
1068
+ };
1069
+ global.fetch = vi.fn().mockResolvedValue(mockRes);
1070
+ await client.request(HttpMethod.Get, "/absolute/path", {});
1071
+ expect(fetch).toHaveBeenCalledWith(`${baseURL}/absolute/path`, expect.any(Object));
1072
+ });
1073
+ it("should handle error response with _server_messages", async function () {
1074
+ var errorPayload = {
1075
+ _server_messages: "Server error messages",
1076
+ exc: "Exception details",
1077
+ message: "Error message"
1078
+ };
1079
+ global.fetch = vi.fn().mockResolvedValue({
1080
+ ok: false,
1081
+ status: 500,
1082
+ statusText: "Internal Server Error",
1083
+ headers: new Headers({
1084
+ "Content-Type": "application/json"
1085
+ }),
1086
+ json: async function json() {
1087
+ return errorPayload;
1088
+ }
1089
+ });
1090
+ try {
1091
+ await client.request(HttpMethod.Post, "/test", {});
1092
+ } catch (error) {
1093
+ expect(error).toBeInstanceOf(FrappeError);
1094
+ expect(error.message).toBe("Error message");
1095
+ }
1096
+ });
1097
+ it("should handle error response with exc", async function () {
1098
+ var errorPayload = {
1099
+ exc: "Exception details"
1100
+ };
1101
+ global.fetch = vi.fn().mockResolvedValue({
1102
+ ok: false,
1103
+ status: 500,
1104
+ statusText: "Internal Server Error",
1105
+ headers: new Headers({
1106
+ "Content-Type": "application/json"
1107
+ }),
1108
+ json: async function json() {
1109
+ return errorPayload;
1110
+ }
1111
+ });
1112
+ try {
1113
+ await client.request(HttpMethod.Post, "/test", {});
1114
+ } catch (error) {
1115
+ expect(error).toBeInstanceOf(FrappeError);
1116
+ expect(error.message).toBe("Exception details");
1117
+ }
1118
+ });
1119
+ it("should handle FormData with Blob values", async function () {
1120
+ var _getMockFetch_mock_calls__, _getMockFetch_mock_calls_;
1121
+ var blob = new Blob(["file content"], {
1122
+ type: "text/plain"
1123
+ });
1124
+ var requestBody = {
1125
+ field: "value",
1126
+ file: blob
1127
+ };
1128
+ var mockRes = {
1129
+ ok: true,
1130
+ headers: new Headers({
1131
+ "Content-Type": "application/json"
1132
+ }),
1133
+ status: 200,
1134
+ json: async function json() {
1135
+ return {
1136
+ success: true
1137
+ };
1138
+ }
1139
+ };
1140
+ global.fetch = vi.fn().mockResolvedValue(mockRes);
1141
+ await client.request(HttpMethod.Post, "/upload", {
1142
+ body: requestBody,
1143
+ headers: {
1144
+ "Content-Type": "multipart/form-data"
1145
+ }
1146
+ });
1147
+ var calledBody = (_getMockFetch_mock_calls_ = getMockFetch().mock.calls[0]) === null || _getMockFetch_mock_calls_ === void 0 ? void 0 : (_getMockFetch_mock_calls__ = _getMockFetch_mock_calls_[1]) === null || _getMockFetch_mock_calls__ === void 0 ? void 0 : _getMockFetch_mock_calls__.body;
1148
+ expect(calledBody).toBeInstanceOf(FormData);
1149
+ });
1150
+ it("should skip non-string values in URLSearchParams conversion", async function () {
1151
+ var _getMockFetch_mock_calls__, _getMockFetch_mock_calls_;
1152
+ var requestBody = {
1153
+ field1: "value1",
1154
+ field2: 123,
1155
+ field3: null,
1156
+ field4: void 0
1157
+ };
1158
+ var mockRes = {
1159
+ ok: true,
1160
+ headers: new Headers({
1161
+ "Content-Type": "text/plain"
1162
+ }),
1163
+ status: 200,
1164
+ text: async function text() {
1165
+ return "success";
1166
+ }
1167
+ };
1168
+ global.fetch = vi.fn().mockResolvedValue(mockRes);
1169
+ await client.request(HttpMethod.Post, "/test", {
1170
+ body: requestBody,
1171
+ headers: {
1172
+ "Content-Type": "application/x-www-form-urlencoded"
1173
+ }
1174
+ });
1175
+ var calledBody = (_getMockFetch_mock_calls_ = getMockFetch().mock.calls[0]) === null || _getMockFetch_mock_calls_ === void 0 ? void 0 : (_getMockFetch_mock_calls__ = _getMockFetch_mock_calls_[1]) === null || _getMockFetch_mock_calls__ === void 0 ? void 0 : _getMockFetch_mock_calls__.body;
1176
+ expect(calledBody).toBe("field1=value1");
1177
+ });
1178
+ it("should handle ReadableStream body", async function () {
1179
+ var _getMockFetch_mock_calls__, _getMockFetch_mock_calls_;
1180
+ var stream = new ReadableStream();
1181
+ var mockRes = {
1182
+ ok: true,
1183
+ headers: new Headers({
1184
+ "Content-Type": "application/json"
1185
+ }),
1186
+ status: 200,
1187
+ json: async function json() {
1188
+ return {
1189
+ success: true
1190
+ };
1191
+ }
1192
+ };
1193
+ global.fetch = vi.fn().mockResolvedValue(mockRes);
1194
+ await client.request(HttpMethod.Post, "/stream", {
1195
+ body: stream
1196
+ });
1197
+ expect((_getMockFetch_mock_calls_ = getMockFetch().mock.calls[0]) === null || _getMockFetch_mock_calls_ === void 0 ? void 0 : (_getMockFetch_mock_calls__ = _getMockFetch_mock_calls_[1]) === null || _getMockFetch_mock_calls__ === void 0 ? void 0 : _getMockFetch_mock_calls__.body).toBe(stream);
1198
+ });
1199
+ it("should handle global frappe csrf token", async function () {
1200
+ var _getMockFetch_mock_calls__, _getMockFetch_mock_calls_;
1201
+ Object.defineProperty(global, "document", {
1202
+ value: {
1203
+ cookie: ""
1204
+ },
1205
+ writable: true,
1206
+ configurable: true
1207
+ });
1208
+ Object.defineProperty(global, "window", {
1209
+ value: {},
1210
+ writable: true,
1211
+ configurable: true
1212
+ });
1213
+ Object.defineProperty(global, "frappe", {
1214
+ value: {
1215
+ csrf_token: "global-csrf-token"
1216
+ },
1217
+ writable: true,
1218
+ configurable: true
1219
+ });
1220
+ var mockRes = {
1221
+ ok: true,
1222
+ headers: new Headers({
1223
+ "Content-Type": "application/json"
1224
+ }),
1225
+ status: 200,
1226
+ json: async function json() {
1227
+ return {
1228
+ success: true
1229
+ };
1230
+ }
1231
+ };
1232
+ global.fetch = vi.fn().mockResolvedValue(mockRes);
1233
+ await client.request(HttpMethod.Post, "/test", {});
1234
+ var calledHeaders = (_getMockFetch_mock_calls_ = getMockFetch().mock.calls[0]) === null || _getMockFetch_mock_calls_ === void 0 ? void 0 : (_getMockFetch_mock_calls__ = _getMockFetch_mock_calls_[1]) === null || _getMockFetch_mock_calls__ === void 0 ? void 0 : _getMockFetch_mock_calls__.headers;
1235
+ expect(calledHeaders === null || calledHeaders === void 0 ? void 0 : calledHeaders.get("X-Frappe-CSRF-Token")).toBe("global-csrf-token");
1236
+ Object.defineProperty(global, "document", {
1237
+ value: void 0,
1238
+ configurable: true
1239
+ });
1240
+ Object.defineProperty(global, "window", {
1241
+ value: void 0,
1242
+ configurable: true
1243
+ });
1244
+ Object.defineProperty(global, "frappe", {
1245
+ value: void 0,
1246
+ configurable: true
1247
+ });
1248
+ });
1249
+ it("should prefer frappe-csrf-token cookie over csrf_token", async function () {
1250
+ var _getMockFetch_mock_calls__, _getMockFetch_mock_calls_;
1251
+ Object.defineProperty(global, "document", {
1252
+ value: {
1253
+ cookie: "frappe-csrf-token=preferred; csrf_token=fallback"
1254
+ },
1255
+ writable: true
1256
+ });
1257
+ Object.defineProperty(global, "window", {
1258
+ value: {},
1259
+ writable: true
1260
+ });
1261
+ var mockRes = {
1262
+ ok: true,
1263
+ headers: new Headers({
1264
+ "Content-Type": "application/json"
1265
+ }),
1266
+ status: 200,
1267
+ json: async function json() {
1268
+ return {
1269
+ success: true
1270
+ };
1271
+ }
1272
+ };
1273
+ global.fetch = vi.fn().mockResolvedValue(mockRes);
1274
+ await client.request(HttpMethod.Post, "/test", {});
1275
+ var calledHeaders = (_getMockFetch_mock_calls_ = getMockFetch().mock.calls[0]) === null || _getMockFetch_mock_calls_ === void 0 ? void 0 : (_getMockFetch_mock_calls__ = _getMockFetch_mock_calls_[1]) === null || _getMockFetch_mock_calls__ === void 0 ? void 0 : _getMockFetch_mock_calls__.headers;
1276
+ expect(calledHeaders === null || calledHeaders === void 0 ? void 0 : calledHeaders.get("X-Frappe-CSRF-Token")).toBe("preferred");
1277
+ Object.defineProperty(global, "document", {
1278
+ value: void 0,
1279
+ configurable: true
1280
+ });
1281
+ Object.defineProperty(global, "window", {
1282
+ value: void 0,
1283
+ configurable: true
1284
+ });
1285
+ });
1286
+ it("should use csrf_token cookie as fallback", async function () {
1287
+ var _getMockFetch_mock_calls__, _getMockFetch_mock_calls_;
1288
+ Object.defineProperty(global, "document", {
1289
+ value: {
1290
+ cookie: "csrf_token=fallback"
1291
+ },
1292
+ writable: true
1293
+ });
1294
+ Object.defineProperty(global, "window", {
1295
+ value: {},
1296
+ writable: true
1297
+ });
1298
+ var mockRes = {
1299
+ ok: true,
1300
+ headers: new Headers({
1301
+ "Content-Type": "application/json"
1302
+ }),
1303
+ status: 200,
1304
+ json: async function json() {
1305
+ return {
1306
+ success: true
1307
+ };
1308
+ }
1309
+ };
1310
+ global.fetch = vi.fn().mockResolvedValue(mockRes);
1311
+ await client.request(HttpMethod.Post, "/test", {});
1312
+ var calledHeaders = (_getMockFetch_mock_calls_ = getMockFetch().mock.calls[0]) === null || _getMockFetch_mock_calls_ === void 0 ? void 0 : (_getMockFetch_mock_calls__ = _getMockFetch_mock_calls_[1]) === null || _getMockFetch_mock_calls__ === void 0 ? void 0 : _getMockFetch_mock_calls__.headers;
1313
+ expect(calledHeaders === null || calledHeaders === void 0 ? void 0 : calledHeaders.get("X-Frappe-CSRF-Token")).toBe("fallback");
1314
+ Object.defineProperty(global, "document", {
1315
+ value: void 0,
1316
+ configurable: true
1317
+ });
1318
+ Object.defineProperty(global, "window", {
1319
+ value: void 0,
1320
+ configurable: true
1321
+ });
1322
+ });
1323
+ it("should not add CSRF token for GET requests", async function () {
1324
+ var _getMockFetch_mock_calls__, _getMockFetch_mock_calls_;
1325
+ Object.defineProperty(global, "document", {
1326
+ value: {
1327
+ cookie: "frappe-csrf-token=test-token"
1328
+ },
1329
+ writable: true
1330
+ });
1331
+ Object.defineProperty(global, "window", {
1332
+ value: {},
1333
+ writable: true
1334
+ });
1335
+ var mockRes = {
1336
+ ok: true,
1337
+ headers: new Headers({
1338
+ "Content-Type": "application/json"
1339
+ }),
1340
+ status: 200,
1341
+ json: async function json() {
1342
+ return {
1343
+ success: true
1344
+ };
1345
+ }
1346
+ };
1347
+ global.fetch = vi.fn().mockResolvedValue(mockRes);
1348
+ await client.request(HttpMethod.Get, "/test", {});
1349
+ var calledHeaders = (_getMockFetch_mock_calls_ = getMockFetch().mock.calls[0]) === null || _getMockFetch_mock_calls_ === void 0 ? void 0 : (_getMockFetch_mock_calls__ = _getMockFetch_mock_calls_[1]) === null || _getMockFetch_mock_calls__ === void 0 ? void 0 : _getMockFetch_mock_calls__.headers;
1350
+ expect(calledHeaders === null || calledHeaders === void 0 ? void 0 : calledHeaders.get("X-Frappe-CSRF-Token")).toBeNull();
1351
+ Object.defineProperty(global, "document", {
1352
+ value: void 0,
1353
+ configurable: true
1354
+ });
1355
+ Object.defineProperty(global, "window", {
1356
+ value: void 0,
1357
+ configurable: true
1358
+ });
1359
+ });
1360
+ it("should handle cookie with special characters", async function () {
1361
+ var _getMockFetch_mock_calls__, _getMockFetch_mock_calls_;
1362
+ Object.defineProperty(global, "document", {
1363
+ value: {
1364
+ cookie: "frappe-csrf-token=%2Ftest%2Ftoken%3D"
1365
+ },
1366
+ writable: true
1367
+ });
1368
+ Object.defineProperty(global, "window", {
1369
+ value: {},
1370
+ writable: true
1371
+ });
1372
+ var mockRes = {
1373
+ ok: true,
1374
+ headers: new Headers({
1375
+ "Content-Type": "application/json"
1376
+ }),
1377
+ status: 200,
1378
+ json: async function json() {
1379
+ return {
1380
+ success: true
1381
+ };
1382
+ }
1383
+ };
1384
+ global.fetch = vi.fn().mockResolvedValue(mockRes);
1385
+ await client.request(HttpMethod.Post, "/test", {});
1386
+ var calledHeaders = (_getMockFetch_mock_calls_ = getMockFetch().mock.calls[0]) === null || _getMockFetch_mock_calls_ === void 0 ? void 0 : (_getMockFetch_mock_calls__ = _getMockFetch_mock_calls_[1]) === null || _getMockFetch_mock_calls__ === void 0 ? void 0 : _getMockFetch_mock_calls__.headers;
1387
+ expect(calledHeaders === null || calledHeaders === void 0 ? void 0 : calledHeaders.get("X-Frappe-CSRF-Token")).toBe("/test/token=");
1388
+ Object.defineProperty(global, "document", {
1389
+ value: void 0,
1390
+ configurable: true
1391
+ });
1392
+ Object.defineProperty(global, "window", {
1393
+ value: void 0,
1394
+ configurable: true
1395
+ });
1396
+ });
1397
+ });
1398
+ });
1399
+ //# sourceMappingURL=http.spec.native.js.map