@warp-drive/legacy 5.10.0-alpha.2 → 5.10.0-alpha.21

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 (413) hide show
  1. package/README.md +91 -8
  2. package/blueprints/adapter/files/__root__/__path__/__name__.js +1 -0
  3. package/blueprints/adapter/index.js +27 -0
  4. package/blueprints/adapter-test/index.js +33 -0
  5. package/blueprints/adapter-test/qunit-files/__root__/__path__/__test__.js +1 -0
  6. package/blueprints/model/HELP.md +26 -0
  7. package/blueprints/model/files/__root__/__path__/__name__.js +1 -0
  8. package/blueprints/model/index.js +27 -0
  9. package/blueprints/model-test/index.js +33 -0
  10. package/blueprints/model-test/qunit-files/__root__/__path__/__test__.js +1 -0
  11. package/blueprints/serializer/files/__root__/__path__/__name__.js +1 -0
  12. package/blueprints/serializer/index.js +27 -0
  13. package/blueprints/serializer-test/index.js +33 -0
  14. package/blueprints/serializer-test/qunit-files/__root__/__path__/__test__.js +1 -0
  15. package/blueprints/transform/files/__root__/__path__/__name__.js +1 -0
  16. package/blueprints/transform/index.js +17 -0
  17. package/blueprints/transform-test/index.js +33 -0
  18. package/blueprints/transform-test/qunit-files/__root__/__path__/__test__.js +1 -0
  19. package/dist/{-private-DccRZQsm.js → -private-0_Oc-M3x.js} +10 -17
  20. package/dist/-private-0_Oc-M3x.js.map +1 -0
  21. package/dist/{-private-DQ6Iap2t.js → -private-L2BtGGYa.js} +8 -14
  22. package/dist/{-private-DQ6Iap2t.js.map → -private-L2BtGGYa.js.map} +1 -1
  23. package/dist/adapter/-private.d.ts +2 -12
  24. package/dist/adapter/-private.d.ts.map +1 -1
  25. package/dist/adapter/-private.js +1 -1
  26. package/dist/adapter/error.d.ts +1 -1
  27. package/dist/adapter/error.js +54 -2
  28. package/dist/adapter/error.js.map +1 -1
  29. package/dist/adapter/json-api.d.ts +5 -5
  30. package/dist/adapter/json-api.d.ts.map +1 -1
  31. package/dist/adapter/json-api.js +10 -4
  32. package/dist/adapter/json-api.js.map +1 -1
  33. package/dist/adapter/rest.d.ts +1 -1
  34. package/dist/adapter/rest.js +23 -5
  35. package/dist/adapter/rest.js.map +1 -1
  36. package/dist/{adapter-eYo2pIuM.js → adapter-AwGvdMSZ.js} +45 -6
  37. package/dist/adapter-AwGvdMSZ.js.map +1 -0
  38. package/dist/{adapter-CARrK3-8.d.ts → adapter-DvDVeaCc.d.ts} +9 -6
  39. package/dist/adapter-DvDVeaCc.d.ts.map +1 -0
  40. package/dist/adapter.d.ts +1 -1
  41. package/dist/adapter.js +1 -1
  42. package/dist/compat/-private.d.ts +1 -1
  43. package/dist/compat/-private.js +1 -1
  44. package/dist/compat/builders.d.ts +10 -8
  45. package/dist/compat/builders.d.ts.map +1 -1
  46. package/dist/compat/builders.js +15 -9
  47. package/dist/compat/builders.js.map +1 -1
  48. package/dist/compat/extensions.d.ts +1 -1
  49. package/dist/compat/extensions.js +23 -2
  50. package/dist/compat/extensions.js.map +1 -1
  51. package/dist/compat/utils.d.ts +17 -2
  52. package/dist/compat/utils.d.ts.map +1 -1
  53. package/dist/compat/utils.js +19 -2
  54. package/dist/compat/utils.js.map +1 -1
  55. package/dist/{compat-DcHVxuuZ.js → compat-C-yQnbkF.js} +61 -8
  56. package/dist/compat-C-yQnbkF.js.map +1 -0
  57. package/dist/{compat-BbNNmTM-.d.ts → compat-DoWEarkU.d.ts} +30 -17
  58. package/dist/compat-DoWEarkU.d.ts.map +1 -0
  59. package/dist/compat.d.ts +1 -1
  60. package/dist/compat.js +1 -1
  61. package/dist/{error-CzkyXr1Q.d.ts → error-798wGD3r.d.ts} +49 -3
  62. package/dist/error-798wGD3r.d.ts.map +1 -0
  63. package/dist/{errors-CS110tMl.js → errors-BEExAZtv.js} +42 -32
  64. package/dist/errors-BEExAZtv.js.map +1 -0
  65. package/dist/{extensions-DumNm4dA.d.ts → extensions-DcEz1lKv.d.ts} +18 -3
  66. package/dist/extensions-DcEz1lKv.d.ts.map +1 -0
  67. package/dist/index.d.ts +17 -2
  68. package/dist/index.d.ts.map +1 -1
  69. package/dist/index.js +25 -7
  70. package/dist/index.js.map +1 -1
  71. package/dist/{json-BXNPTlcH.js → json-Baaga4BP.js} +10 -5
  72. package/dist/json-Baaga4BP.js.map +1 -0
  73. package/dist/model/-private.d.ts +1 -1
  74. package/dist/model/-private.js +1 -1
  75. package/dist/model/migration-support.d.ts +19 -4
  76. package/dist/model/migration-support.d.ts.map +1 -1
  77. package/dist/model/migration-support.js +25 -7
  78. package/dist/model/migration-support.js.map +1 -1
  79. package/dist/{model-DWH9f__L.js → model-Be-e84FX.js} +19 -12
  80. package/dist/model-Be-e84FX.js.map +1 -0
  81. package/dist/{model-62hn5_PD.d.ts → model-DAdY1ibr.d.ts} +13 -26
  82. package/dist/model-DAdY1ibr.d.ts.map +1 -0
  83. package/dist/{unpkg/dev-deprecated/model-fragments-DSqu0ptR.js → model-fragments-DCHMDr5f.js} +32 -18
  84. package/dist/model-fragments-DCHMDr5f.js.map +1 -0
  85. package/dist/model-fragments.d.ts +31 -19
  86. package/dist/model-fragments.d.ts.map +1 -1
  87. package/dist/model-fragments.js +1 -1
  88. package/dist/model.d.ts +12 -11
  89. package/dist/model.d.ts.map +1 -1
  90. package/dist/model.js +2 -2
  91. package/dist/{rest-0NhtexIq.d.ts → rest-CmFneLJH.d.ts} +18 -8
  92. package/dist/rest-CmFneLJH.d.ts.map +1 -0
  93. package/dist/{runtime--fcdnjmJ-DMTJ0Kb3.js → runtime--fcdnjmJ-5yaSpa-d.js} +2 -3
  94. package/dist/{runtime--fcdnjmJ-DMTJ0Kb3.js.map → runtime--fcdnjmJ-5yaSpa-d.js.map} +1 -1
  95. package/dist/{schema-provider-DguGmQDS.js → schema-provider-BAB8DyMr.js} +22 -21
  96. package/dist/schema-provider-BAB8DyMr.js.map +1 -0
  97. package/dist/serializer/json-api.d.ts +1 -2
  98. package/dist/serializer/json-api.d.ts.map +1 -1
  99. package/dist/serializer/json-api.js +7 -3
  100. package/dist/serializer/json-api.js.map +1 -1
  101. package/dist/serializer/json.d.ts +2 -2
  102. package/dist/serializer/json.d.ts.map +1 -1
  103. package/dist/serializer/json.js +1 -1
  104. package/dist/serializer/rest.d.ts +4 -4
  105. package/dist/serializer/rest.d.ts.map +1 -1
  106. package/dist/serializer/rest.js +12 -5
  107. package/dist/serializer/rest.js.map +1 -1
  108. package/dist/serializer/transform.d.ts +9 -10
  109. package/dist/serializer/transform.d.ts.map +1 -1
  110. package/dist/serializer/transform.js +14 -10
  111. package/dist/serializer/transform.js.map +1 -1
  112. package/dist/serializer.d.ts +2 -2
  113. package/dist/serializer.d.ts.map +1 -1
  114. package/dist/serializer.js +42 -3
  115. package/dist/serializer.js.map +1 -1
  116. package/dist/{store-C4qYzXei.js → store-BLKEsJyw.js} +13 -7
  117. package/dist/store-BLKEsJyw.js.map +1 -0
  118. package/dist/store.d.ts +3 -2
  119. package/dist/store.d.ts.map +1 -1
  120. package/dist/store.js +1 -1
  121. package/dist/unpkg/dev/{-private-CrEyBE-B.js → -private-BprUAEe_.js} +8 -14
  122. package/dist/unpkg/{dev-deprecated/-private-CrEyBE-B.js.map → dev/-private-BprUAEe_.js.map} +1 -1
  123. package/dist/unpkg/dev/{-private-vOhxVExH.js → -private-Dch4SxkU.js} +10 -17
  124. package/dist/unpkg/dev/-private-Dch4SxkU.js.map +1 -0
  125. package/dist/unpkg/dev/adapter/-private.js +1 -1
  126. package/dist/unpkg/dev/adapter/error.js +54 -2
  127. package/dist/unpkg/dev/adapter/error.js.map +1 -1
  128. package/dist/unpkg/dev/adapter/json-api.js +10 -4
  129. package/dist/unpkg/dev/adapter/json-api.js.map +1 -1
  130. package/dist/unpkg/dev/adapter/rest.js +23 -5
  131. package/dist/unpkg/dev/adapter/rest.js.map +1 -1
  132. package/dist/unpkg/dev/{adapter-oLwyr47q.js → adapter-BAn4SeUA.js} +45 -6
  133. package/dist/unpkg/dev/adapter-BAn4SeUA.js.map +1 -0
  134. package/dist/unpkg/dev/adapter.js +1 -1
  135. package/dist/unpkg/dev/compat/-private.js +1 -1
  136. package/dist/unpkg/dev/compat/builders.js +15 -9
  137. package/dist/unpkg/dev/compat/builders.js.map +1 -1
  138. package/dist/unpkg/dev/compat/extensions.js +23 -2
  139. package/dist/unpkg/dev/compat/extensions.js.map +1 -1
  140. package/dist/unpkg/dev/compat/utils.js +19 -2
  141. package/dist/unpkg/dev/compat/utils.js.map +1 -1
  142. package/dist/unpkg/dev/{compat-DNQT2TQx.js → compat-BdovRRzQ.js} +62 -10
  143. package/dist/unpkg/dev/compat-BdovRRzQ.js.map +1 -0
  144. package/dist/unpkg/dev/compat.js +1 -1
  145. package/dist/unpkg/dev/{errors-DnzvLM2A.js → errors-CGvbM6WH.js} +42 -32
  146. package/dist/unpkg/dev/errors-CGvbM6WH.js.map +1 -0
  147. package/dist/unpkg/dev/index.js +25 -7
  148. package/dist/unpkg/dev/index.js.map +1 -1
  149. package/dist/unpkg/{dev-deprecated/json-DDJji3V3.js → dev/json-BlSBe84o.js} +10 -5
  150. package/dist/unpkg/dev/json-BlSBe84o.js.map +1 -0
  151. package/dist/unpkg/dev/model/-private.js +1 -1
  152. package/dist/unpkg/dev/model/migration-support.js +24 -6
  153. package/dist/unpkg/dev/model/migration-support.js.map +1 -1
  154. package/dist/unpkg/dev/{model-BxPIR7m2.js → model-QCZr8eec.js} +19 -12
  155. package/dist/unpkg/dev/model-QCZr8eec.js.map +1 -0
  156. package/dist/{model-fragments-DSqu0ptR.js → unpkg/dev/model-fragments-DCHMDr5f.js} +32 -18
  157. package/dist/unpkg/dev/model-fragments-DCHMDr5f.js.map +1 -0
  158. package/dist/unpkg/dev/model-fragments.js +1 -1
  159. package/dist/unpkg/dev/model.js +2 -2
  160. package/dist/unpkg/dev/{runtime--fcdnjmJ-DMTJ0Kb3.js → runtime--fcdnjmJ-5yaSpa-d.js} +2 -3
  161. package/dist/unpkg/dev/{runtime--fcdnjmJ-DMTJ0Kb3.js.map → runtime--fcdnjmJ-5yaSpa-d.js.map} +1 -1
  162. package/dist/unpkg/dev/{schema-provider-CI_a48ja.js → schema-provider-IMFO9Kgw.js} +18 -17
  163. package/dist/unpkg/dev/schema-provider-IMFO9Kgw.js.map +1 -0
  164. package/dist/unpkg/dev/serializer/json-api.js +7 -3
  165. package/dist/unpkg/dev/serializer/json-api.js.map +1 -1
  166. package/dist/unpkg/dev/serializer/json.js +1 -1
  167. package/dist/unpkg/dev/serializer/rest.js +12 -5
  168. package/dist/unpkg/dev/serializer/rest.js.map +1 -1
  169. package/dist/unpkg/dev/serializer/transform.js +14 -10
  170. package/dist/unpkg/dev/serializer/transform.js.map +1 -1
  171. package/dist/unpkg/dev/serializer.js +42 -3
  172. package/dist/unpkg/dev/serializer.js.map +1 -1
  173. package/dist/unpkg/dev/{store-D_V8-HQl.js → store-BiXsLLAu.js} +13 -7
  174. package/dist/unpkg/dev/store-BiXsLLAu.js.map +1 -0
  175. package/dist/unpkg/dev/store.js +1 -1
  176. package/dist/unpkg/dev/{util-dSKEgQDp.js → util-CI7b4vAE.js} +2 -3
  177. package/dist/unpkg/dev/{util-dSKEgQDp.js.map → util-CI7b4vAE.js.map} +1 -1
  178. package/dist/unpkg/{prod/utils-DYC9utVJ.js → dev/utils-_O0MjUTU.js} +2 -3
  179. package/dist/unpkg/dev/{utils-DYC9utVJ.js.map → utils-_O0MjUTU.js.map} +1 -1
  180. package/dist/unpkg/dev-deprecated/{-private-CrEyBE-B.js → -private-BprUAEe_.js} +8 -14
  181. package/dist/unpkg/{dev/-private-CrEyBE-B.js.map → dev-deprecated/-private-BprUAEe_.js.map} +1 -1
  182. package/dist/unpkg/dev-deprecated/{-private-vOhxVExH.js → -private-Dch4SxkU.js} +10 -17
  183. package/dist/unpkg/dev-deprecated/-private-Dch4SxkU.js.map +1 -0
  184. package/dist/unpkg/dev-deprecated/adapter/-private.js +1 -1
  185. package/dist/unpkg/dev-deprecated/adapter/error.js +54 -2
  186. package/dist/unpkg/dev-deprecated/adapter/error.js.map +1 -1
  187. package/dist/unpkg/dev-deprecated/adapter/json-api.js +10 -4
  188. package/dist/unpkg/dev-deprecated/adapter/json-api.js.map +1 -1
  189. package/dist/unpkg/dev-deprecated/adapter/rest.js +23 -5
  190. package/dist/unpkg/dev-deprecated/adapter/rest.js.map +1 -1
  191. package/dist/unpkg/dev-deprecated/{adapter-oLwyr47q.js → adapter-BAn4SeUA.js} +45 -6
  192. package/dist/unpkg/dev-deprecated/adapter-BAn4SeUA.js.map +1 -0
  193. package/dist/unpkg/dev-deprecated/adapter.js +1 -1
  194. package/dist/unpkg/dev-deprecated/compat/-private.js +1 -1
  195. package/dist/unpkg/dev-deprecated/compat/builders.js +15 -9
  196. package/dist/unpkg/dev-deprecated/compat/builders.js.map +1 -1
  197. package/dist/unpkg/dev-deprecated/compat/extensions.js +23 -2
  198. package/dist/unpkg/dev-deprecated/compat/extensions.js.map +1 -1
  199. package/dist/unpkg/dev-deprecated/compat/utils.js +19 -2
  200. package/dist/unpkg/dev-deprecated/compat/utils.js.map +1 -1
  201. package/dist/unpkg/dev-deprecated/{compat-CeT0PnVX.js → compat-CPVriwH0.js} +62 -10
  202. package/dist/unpkg/dev-deprecated/compat-CPVriwH0.js.map +1 -0
  203. package/dist/unpkg/dev-deprecated/compat.js +1 -1
  204. package/dist/unpkg/dev-deprecated/{errors-jHQESeNQ.js → errors-yPc7D7r3.js} +42 -32
  205. package/dist/unpkg/dev-deprecated/errors-yPc7D7r3.js.map +1 -0
  206. package/dist/unpkg/dev-deprecated/index.js +25 -7
  207. package/dist/unpkg/dev-deprecated/index.js.map +1 -1
  208. package/dist/unpkg/{dev/json-DDJji3V3.js → dev-deprecated/json-BlSBe84o.js} +10 -5
  209. package/dist/unpkg/dev-deprecated/json-BlSBe84o.js.map +1 -0
  210. package/dist/unpkg/dev-deprecated/model/-private.js +1 -1
  211. package/dist/unpkg/dev-deprecated/model/migration-support.js +24 -6
  212. package/dist/unpkg/dev-deprecated/model/migration-support.js.map +1 -1
  213. package/dist/unpkg/dev-deprecated/{model-BeGORt6h.js → model-B0ZNLaHO.js} +19 -12
  214. package/dist/unpkg/dev-deprecated/model-B0ZNLaHO.js.map +1 -0
  215. package/dist/unpkg/{prod-deprecated/model-fragments-DSqu0ptR.js → dev-deprecated/model-fragments-DCHMDr5f.js} +32 -18
  216. package/dist/unpkg/dev-deprecated/model-fragments-DCHMDr5f.js.map +1 -0
  217. package/dist/unpkg/dev-deprecated/model-fragments.js +1 -1
  218. package/dist/unpkg/dev-deprecated/model.js +2 -2
  219. package/dist/unpkg/dev-deprecated/{runtime--fcdnjmJ-DMTJ0Kb3.js → runtime--fcdnjmJ-5yaSpa-d.js} +2 -3
  220. package/dist/unpkg/dev-deprecated/{runtime--fcdnjmJ-DMTJ0Kb3.js.map → runtime--fcdnjmJ-5yaSpa-d.js.map} +1 -1
  221. package/dist/unpkg/dev-deprecated/{schema-provider-NmtdR4n_.js → schema-provider-DGWYnFno.js} +18 -17
  222. package/dist/unpkg/dev-deprecated/schema-provider-DGWYnFno.js.map +1 -0
  223. package/dist/unpkg/dev-deprecated/serializer/json-api.js +7 -3
  224. package/dist/unpkg/dev-deprecated/serializer/json-api.js.map +1 -1
  225. package/dist/unpkg/dev-deprecated/serializer/json.js +1 -1
  226. package/dist/unpkg/dev-deprecated/serializer/rest.js +12 -5
  227. package/dist/unpkg/dev-deprecated/serializer/rest.js.map +1 -1
  228. package/dist/unpkg/dev-deprecated/serializer/transform.js +14 -10
  229. package/dist/unpkg/dev-deprecated/serializer/transform.js.map +1 -1
  230. package/dist/unpkg/dev-deprecated/serializer.js +42 -3
  231. package/dist/unpkg/dev-deprecated/serializer.js.map +1 -1
  232. package/dist/unpkg/dev-deprecated/{store-BCOLSC6z.js → store-Ci8k7Lh6.js} +13 -7
  233. package/dist/unpkg/dev-deprecated/store-Ci8k7Lh6.js.map +1 -0
  234. package/dist/unpkg/dev-deprecated/store.js +1 -1
  235. package/dist/unpkg/dev-deprecated/{util-CXA3RNYH.js → util-DL_8JecH.js} +2 -3
  236. package/dist/unpkg/dev-deprecated/{util-CXA3RNYH.js.map → util-DL_8JecH.js.map} +1 -1
  237. package/dist/unpkg/dev-deprecated/{utils-DQkMqhDv.js → utils-DyGjRZ14.js} +2 -3
  238. package/dist/unpkg/dev-deprecated/{utils-DQkMqhDv.js.map → utils-DyGjRZ14.js.map} +1 -1
  239. package/dist/unpkg/{prod-deprecated/-private-B4bxoTuK.js → prod/-private-Dc9yg98O.js} +8 -14
  240. package/dist/unpkg/{prod-deprecated/-private-B4bxoTuK.js.map → prod/-private-Dc9yg98O.js.map} +1 -1
  241. package/dist/unpkg/prod/{-private-SfXkkHKd.js → -private-DuRzYAyW.js} +9 -15
  242. package/dist/unpkg/prod/-private-DuRzYAyW.js.map +1 -0
  243. package/dist/unpkg/prod/adapter/-private.js +1 -1
  244. package/dist/unpkg/prod/adapter/error.js +54 -2
  245. package/dist/unpkg/prod/adapter/error.js.map +1 -1
  246. package/dist/unpkg/prod/adapter/json-api.js +10 -4
  247. package/dist/unpkg/prod/adapter/json-api.js.map +1 -1
  248. package/dist/unpkg/prod/adapter/rest.js +23 -5
  249. package/dist/unpkg/prod/adapter/rest.js.map +1 -1
  250. package/dist/unpkg/prod/{adapter-DQ9UA7FC.js → adapter-D0HCLrwm.js} +45 -6
  251. package/dist/unpkg/prod/adapter-D0HCLrwm.js.map +1 -0
  252. package/dist/unpkg/prod/adapter.js +1 -1
  253. package/dist/unpkg/prod/compat/-private.js +1 -1
  254. package/dist/unpkg/prod/compat/builders.js +15 -9
  255. package/dist/unpkg/prod/compat/builders.js.map +1 -1
  256. package/dist/unpkg/prod/compat/extensions.js +23 -2
  257. package/dist/unpkg/prod/compat/extensions.js.map +1 -1
  258. package/dist/unpkg/prod/compat/utils.js +19 -2
  259. package/dist/unpkg/prod/compat/utils.js.map +1 -1
  260. package/dist/unpkg/{prod-deprecated/compat-DxiVkCUb.js → prod/compat-PrUuencH.js} +62 -10
  261. package/dist/unpkg/prod/compat-PrUuencH.js.map +1 -0
  262. package/dist/unpkg/prod/compat.js +1 -1
  263. package/dist/unpkg/prod/{errors-DQDfNqVx.js → errors-Bw8niCo8.js} +38 -27
  264. package/dist/unpkg/prod/errors-Bw8niCo8.js.map +1 -0
  265. package/dist/unpkg/prod/index.js +25 -7
  266. package/dist/unpkg/prod/index.js.map +1 -1
  267. package/dist/unpkg/prod/{json-BD1kRTfB.js → json-D1bH8enA.js} +10 -5
  268. package/dist/unpkg/prod/json-D1bH8enA.js.map +1 -0
  269. package/dist/unpkg/prod/model/-private.js +1 -1
  270. package/dist/unpkg/prod/model/migration-support.js +24 -6
  271. package/dist/unpkg/prod/model/migration-support.js.map +1 -1
  272. package/dist/unpkg/prod/{model-CYMA-e_S.js → model-QtC0IWbE.js} +19 -12
  273. package/dist/unpkg/prod/model-QtC0IWbE.js.map +1 -0
  274. package/dist/unpkg/prod/model-fragments-DCHMDr5f.js +348 -0
  275. package/dist/unpkg/prod/model-fragments-DCHMDr5f.js.map +1 -0
  276. package/dist/unpkg/prod/model-fragments.js +1 -1
  277. package/dist/unpkg/prod/model.js +2 -2
  278. package/dist/unpkg/prod/runtime--fcdnjmJ-5yaSpa-d.js +52 -0
  279. package/dist/unpkg/prod/{runtime--fcdnjmJ-DMTJ0Kb3.js.map → runtime--fcdnjmJ-5yaSpa-d.js.map} +1 -1
  280. package/dist/unpkg/prod/{schema-provider-05U1H-Kl.js → schema-provider-DPOzTa8e.js} +18 -17
  281. package/dist/unpkg/prod/schema-provider-DPOzTa8e.js.map +1 -0
  282. package/dist/unpkg/prod/serializer/json-api.js +7 -3
  283. package/dist/unpkg/prod/serializer/json-api.js.map +1 -1
  284. package/dist/unpkg/prod/serializer/json.js +1 -1
  285. package/dist/unpkg/prod/serializer/rest.js +12 -5
  286. package/dist/unpkg/prod/serializer/rest.js.map +1 -1
  287. package/dist/unpkg/prod/serializer/transform.js +14 -10
  288. package/dist/unpkg/prod/serializer/transform.js.map +1 -1
  289. package/dist/unpkg/prod/serializer.js +42 -3
  290. package/dist/unpkg/prod/serializer.js.map +1 -1
  291. package/dist/unpkg/{prod-deprecated/store-0L2CkYzh.js → prod/store-BsSkzWgk.js} +13 -7
  292. package/dist/unpkg/{prod-deprecated/store-0L2CkYzh.js.map → prod/store-BsSkzWgk.js.map} +1 -1
  293. package/dist/unpkg/prod/store.js +1 -1
  294. package/dist/unpkg/prod/{util-dSKEgQDp.js → util-CI7b4vAE.js} +2 -3
  295. package/dist/unpkg/prod/{util-dSKEgQDp.js.map → util-CI7b4vAE.js.map} +1 -1
  296. package/dist/unpkg/{dev/utils-DYC9utVJ.js → prod/utils-_O0MjUTU.js} +2 -3
  297. package/dist/unpkg/prod/{utils-DYC9utVJ.js.map → utils-_O0MjUTU.js.map} +1 -1
  298. package/dist/unpkg/{prod/-private-B4bxoTuK.js → prod-deprecated/-private-Dc9yg98O.js} +8 -14
  299. package/dist/unpkg/{prod/-private-B4bxoTuK.js.map → prod-deprecated/-private-Dc9yg98O.js.map} +1 -1
  300. package/dist/unpkg/prod-deprecated/{-private-SfXkkHKd.js → -private-DuRzYAyW.js} +9 -15
  301. package/dist/unpkg/prod-deprecated/-private-DuRzYAyW.js.map +1 -0
  302. package/dist/unpkg/prod-deprecated/adapter/-private.js +1 -1
  303. package/dist/unpkg/prod-deprecated/adapter/error.js +54 -2
  304. package/dist/unpkg/prod-deprecated/adapter/error.js.map +1 -1
  305. package/dist/unpkg/prod-deprecated/adapter/json-api.js +10 -4
  306. package/dist/unpkg/prod-deprecated/adapter/json-api.js.map +1 -1
  307. package/dist/unpkg/prod-deprecated/adapter/rest.js +23 -5
  308. package/dist/unpkg/prod-deprecated/adapter/rest.js.map +1 -1
  309. package/dist/unpkg/prod-deprecated/{adapter-DQ9UA7FC.js → adapter-D0HCLrwm.js} +45 -6
  310. package/dist/unpkg/prod-deprecated/adapter-D0HCLrwm.js.map +1 -0
  311. package/dist/unpkg/prod-deprecated/adapter.js +1 -1
  312. package/dist/unpkg/prod-deprecated/compat/-private.js +1 -1
  313. package/dist/unpkg/prod-deprecated/compat/builders.js +15 -9
  314. package/dist/unpkg/prod-deprecated/compat/builders.js.map +1 -1
  315. package/dist/unpkg/prod-deprecated/compat/extensions.js +23 -2
  316. package/dist/unpkg/prod-deprecated/compat/extensions.js.map +1 -1
  317. package/dist/unpkg/prod-deprecated/compat/utils.js +19 -2
  318. package/dist/unpkg/prod-deprecated/compat/utils.js.map +1 -1
  319. package/dist/unpkg/{prod/compat-DxiVkCUb.js → prod-deprecated/compat-PrUuencH.js} +62 -10
  320. package/dist/unpkg/prod-deprecated/compat-PrUuencH.js.map +1 -0
  321. package/dist/unpkg/prod-deprecated/compat.js +1 -1
  322. package/dist/unpkg/prod-deprecated/{errors-ii4L43_1.js → errors-D20lKboZ.js} +38 -27
  323. package/dist/unpkg/prod-deprecated/errors-D20lKboZ.js.map +1 -0
  324. package/dist/unpkg/prod-deprecated/index.js +25 -7
  325. package/dist/unpkg/prod-deprecated/index.js.map +1 -1
  326. package/dist/unpkg/prod-deprecated/{json-BD1kRTfB.js → json-D1bH8enA.js} +10 -5
  327. package/dist/unpkg/prod-deprecated/json-D1bH8enA.js.map +1 -0
  328. package/dist/unpkg/prod-deprecated/model/-private.js +1 -1
  329. package/dist/unpkg/prod-deprecated/model/migration-support.js +24 -6
  330. package/dist/unpkg/prod-deprecated/model/migration-support.js.map +1 -1
  331. package/dist/unpkg/prod-deprecated/{model-D3oCPHtM.js → model-B946S2pl.js} +19 -12
  332. package/dist/unpkg/prod-deprecated/model-B946S2pl.js.map +1 -0
  333. package/dist/unpkg/{dev/model-fragments-DSqu0ptR.js → prod-deprecated/model-fragments-DCHMDr5f.js} +32 -18
  334. package/dist/unpkg/prod-deprecated/model-fragments-DCHMDr5f.js.map +1 -0
  335. package/dist/unpkg/prod-deprecated/model-fragments.js +1 -1
  336. package/dist/unpkg/prod-deprecated/model.js +2 -2
  337. package/dist/unpkg/prod-deprecated/{runtime--fcdnjmJ-DMTJ0Kb3.js → runtime--fcdnjmJ-5yaSpa-d.js} +2 -3
  338. package/dist/unpkg/prod-deprecated/{runtime--fcdnjmJ-DMTJ0Kb3.js.map → runtime--fcdnjmJ-5yaSpa-d.js.map} +1 -1
  339. package/dist/unpkg/prod-deprecated/{schema-provider-CKH_bnnS.js → schema-provider-xcaytn9y.js} +18 -17
  340. package/dist/unpkg/prod-deprecated/schema-provider-xcaytn9y.js.map +1 -0
  341. package/dist/unpkg/prod-deprecated/serializer/json-api.js +7 -3
  342. package/dist/unpkg/prod-deprecated/serializer/json-api.js.map +1 -1
  343. package/dist/unpkg/prod-deprecated/serializer/json.js +1 -1
  344. package/dist/unpkg/prod-deprecated/serializer/rest.js +12 -5
  345. package/dist/unpkg/prod-deprecated/serializer/rest.js.map +1 -1
  346. package/dist/unpkg/prod-deprecated/serializer/transform.js +14 -10
  347. package/dist/unpkg/prod-deprecated/serializer/transform.js.map +1 -1
  348. package/dist/unpkg/prod-deprecated/serializer.js +42 -3
  349. package/dist/unpkg/prod-deprecated/serializer.js.map +1 -1
  350. package/dist/unpkg/{prod/store-RGGc1ilN.js → prod-deprecated/store-Dsw2f4s-.js} +13 -7
  351. package/dist/unpkg/{prod/store-RGGc1ilN.js.map → prod-deprecated/store-Dsw2f4s-.js.map} +1 -1
  352. package/dist/unpkg/prod-deprecated/store.js +1 -1
  353. package/dist/unpkg/prod-deprecated/{util-CQQdHX3n.js → util-CVu5_VeN.js} +2 -3
  354. package/dist/unpkg/prod-deprecated/{util-CQQdHX3n.js.map → util-CVu5_VeN.js.map} +1 -1
  355. package/dist/unpkg/prod-deprecated/{utils-BMI_JwFP.js → utils-z1h-zTls.js} +2 -3
  356. package/dist/unpkg/prod-deprecated/{utils-BMI_JwFP.js.map → utils-z1h-zTls.js.map} +1 -1
  357. package/dist/{util-Bnx8nm-D.js → util-fMuLguoj.js} +2 -3
  358. package/dist/{util-Bnx8nm-D.js.map → util-fMuLguoj.js.map} +1 -1
  359. package/dist/{utils-ZAytYep8.js → utils-UqBsN9IU.js} +2 -3
  360. package/dist/{utils-ZAytYep8.js.map → utils-UqBsN9IU.js.map} +1 -1
  361. package/logos/README.md +1 -1
  362. package/package.json +17 -12
  363. package/dist/-private-DccRZQsm.js.map +0 -1
  364. package/dist/adapter-CARrK3-8.d.ts.map +0 -1
  365. package/dist/adapter-eYo2pIuM.js.map +0 -1
  366. package/dist/compat-BbNNmTM-.d.ts.map +0 -1
  367. package/dist/compat-DcHVxuuZ.js.map +0 -1
  368. package/dist/error-CzkyXr1Q.d.ts.map +0 -1
  369. package/dist/errors-CS110tMl.js.map +0 -1
  370. package/dist/extensions-DumNm4dA.d.ts.map +0 -1
  371. package/dist/json-BXNPTlcH.js.map +0 -1
  372. package/dist/model-62hn5_PD.d.ts.map +0 -1
  373. package/dist/model-DWH9f__L.js.map +0 -1
  374. package/dist/model-fragments-DSqu0ptR.js.map +0 -1
  375. package/dist/rest-0NhtexIq.d.ts.map +0 -1
  376. package/dist/schema-provider-DguGmQDS.js.map +0 -1
  377. package/dist/store-C4qYzXei.js.map +0 -1
  378. package/dist/unpkg/dev/-private-vOhxVExH.js.map +0 -1
  379. package/dist/unpkg/dev/adapter-oLwyr47q.js.map +0 -1
  380. package/dist/unpkg/dev/compat-DNQT2TQx.js.map +0 -1
  381. package/dist/unpkg/dev/errors-DnzvLM2A.js.map +0 -1
  382. package/dist/unpkg/dev/json-DDJji3V3.js.map +0 -1
  383. package/dist/unpkg/dev/model-BxPIR7m2.js.map +0 -1
  384. package/dist/unpkg/dev/model-fragments-DSqu0ptR.js.map +0 -1
  385. package/dist/unpkg/dev/schema-provider-CI_a48ja.js.map +0 -1
  386. package/dist/unpkg/dev/store-D_V8-HQl.js.map +0 -1
  387. package/dist/unpkg/dev-deprecated/-private-vOhxVExH.js.map +0 -1
  388. package/dist/unpkg/dev-deprecated/adapter-oLwyr47q.js.map +0 -1
  389. package/dist/unpkg/dev-deprecated/compat-CeT0PnVX.js.map +0 -1
  390. package/dist/unpkg/dev-deprecated/errors-jHQESeNQ.js.map +0 -1
  391. package/dist/unpkg/dev-deprecated/json-DDJji3V3.js.map +0 -1
  392. package/dist/unpkg/dev-deprecated/model-BeGORt6h.js.map +0 -1
  393. package/dist/unpkg/dev-deprecated/model-fragments-DSqu0ptR.js.map +0 -1
  394. package/dist/unpkg/dev-deprecated/schema-provider-NmtdR4n_.js.map +0 -1
  395. package/dist/unpkg/dev-deprecated/store-BCOLSC6z.js.map +0 -1
  396. package/dist/unpkg/prod/-private-SfXkkHKd.js.map +0 -1
  397. package/dist/unpkg/prod/adapter-DQ9UA7FC.js.map +0 -1
  398. package/dist/unpkg/prod/compat-DxiVkCUb.js.map +0 -1
  399. package/dist/unpkg/prod/errors-DQDfNqVx.js.map +0 -1
  400. package/dist/unpkg/prod/json-BD1kRTfB.js.map +0 -1
  401. package/dist/unpkg/prod/model-CYMA-e_S.js.map +0 -1
  402. package/dist/unpkg/prod/model-fragments-DSqu0ptR.js +0 -334
  403. package/dist/unpkg/prod/model-fragments-DSqu0ptR.js.map +0 -1
  404. package/dist/unpkg/prod/runtime--fcdnjmJ-DMTJ0Kb3.js +0 -53
  405. package/dist/unpkg/prod/schema-provider-05U1H-Kl.js.map +0 -1
  406. package/dist/unpkg/prod-deprecated/-private-SfXkkHKd.js.map +0 -1
  407. package/dist/unpkg/prod-deprecated/adapter-DQ9UA7FC.js.map +0 -1
  408. package/dist/unpkg/prod-deprecated/compat-DxiVkCUb.js.map +0 -1
  409. package/dist/unpkg/prod-deprecated/errors-ii4L43_1.js.map +0 -1
  410. package/dist/unpkg/prod-deprecated/json-BD1kRTfB.js.map +0 -1
  411. package/dist/unpkg/prod-deprecated/model-D3oCPHtM.js.map +0 -1
  412. package/dist/unpkg/prod-deprecated/model-fragments-DSqu0ptR.js.map +0 -1
  413. package/dist/unpkg/prod-deprecated/schema-provider-CKH_bnnS.js.map +0 -1
@@ -1,10 +1,10 @@
1
- import { a as normalizeResponseHelper, c as assertIdentifierHasId, l as SnapshotRecordArray, n as FetchManager, o as iterateData, r as SaveOp, s as payloadIsNotBlank, t as upgradeStore } from "./-private-vOhxVExH.js";
1
+ import { a as normalizeResponseHelper, c as assertIdentifierHasId, l as SnapshotRecordArray, n as FetchManager, o as iterateData, r as SaveOp, s as payloadIsNotBlank, t as upgradeStore } from "./-private-Dch4SxkU.js";
2
2
  import { recordIdentifierFor } from "@warp-drive/core";
3
3
  import { getOwner } from "@ember/application";
4
4
  import { _deprecatingNormalize, assertPrivateStore } from "@warp-drive/core/store/-private";
5
5
  import { waitFor } from "@warp-drive/core/signals/-leaked";
6
6
 
7
- //#region src/compat/legacy-network-handler/legacy-data-fetch.ts
7
+ // src/compat/legacy-network-handler/legacy-data-fetch.ts
8
8
  function _findHasMany(adapter, store, identifier, link, relationship, options) {
9
9
  /* @__PURE__ */ upgradeStore(store);
10
10
  return Promise.resolve().then(() => {
@@ -189,8 +189,7 @@ function validateRelationshipEntry({ id }, { id: parentModelID }) {
189
189
  return !!id && id.toString() === parentModelID;
190
190
  }
191
191
 
192
- //#endregion
193
- //#region ../../node_modules/.pnpm/@embroider+macros@1.20.7/node_modules/@embroider/macros/src/addon/runtime.js
192
+ // ../../node_modules/.pnpm/@embroider+macros@1.21.4/node_modules/@embroider/macros/src/addon/runtime.js
194
193
  function config(packageRoot) {
195
194
  return runtimeConfig.packages[packageRoot];
196
195
  }
@@ -297,8 +296,7 @@ if (updaters) {
297
296
  for (let updater of updaters) updater(methods);
298
297
  }
299
298
 
300
- //#endregion
301
- //#region src/compat/legacy-network-handler/legacy-network-handler.ts
299
+ // src/compat/legacy-network-handler/legacy-network-handler.ts
302
300
  const PotentialLegacyOperations = /* @__PURE__ */ new Set([
303
301
  "findRecord",
304
302
  "findAll",
@@ -316,6 +314,9 @@ const PotentialLegacyOperations = /* @__PURE__ */ new Set([
316
314
  * `deleteRecord` requests using the store's configured {@link MinimumAdapterInterface | adapter}
317
315
  * and {@link MinimumSerializerInterface | serializer}, passing any other
318
316
  * request through to the next handler unchanged.
317
+ *
318
+ * @summary Legacy `RequestManager` handler that fulfills find, query, create, update, and delete operations through
319
+ * the store's adapters and serializers, passing other requests along.
319
320
  */
320
321
  const LegacyNetworkHandler = { request(context, next) {
321
322
  if (context.request.url || !context.request.op || !PotentialLegacyOperations.has(context.request.op)) return next(context.request);
@@ -582,17 +583,57 @@ function queryRecord(context) {
582
583
  });
583
584
  }
584
585
 
585
- //#endregion
586
- //#region src/compat.ts
586
+ // src/compat.ts
587
+ /**
588
+ * Helps an app migrate incrementally from legacy EmberData patterns to modern ***Warp*Drive**.
589
+ *
590
+ * ## Why it exists
591
+ *
592
+ * While migrating, you may need to:
593
+ *
594
+ * - keep Adapters and Serializers working on a Store whose requests go through the
595
+ * {@link RequestManager}
596
+ * - keep the deprecated request methods such as `store.findRecord` and `store.query`, which
597
+ * Adapters fulfill, working while you move calls to `store.request`
598
+ * - adopt modern patterns one piece at a time rather than all at once
599
+ *
600
+ * ## What it provides
601
+ *
602
+ * - {@link LegacyNetworkHandler}, a request handler that fulfills those legacy requests through
603
+ * the store's Adapters and Serializers and passes every other request along
604
+ * - {@link adapterFor}, {@link serializerFor}, {@link normalize}, {@link pushPayload} and
605
+ * {@link serializeRecord}, the store methods for working with Adapters and Serializers, and
606
+ * {@link LegacyStoreCompat}, the Store type that includes them
607
+ *
608
+ * The Store that [useLegacyStore](/api/@warp-drive/legacy/functions/useLegacyStore) produces
609
+ * adds `LegacyNetworkHandler` to its RequestManager unless `linksMode` is `true`. The hooks
610
+ * that present `Model` instances live in [@warp-drive/legacy/model](/api/@warp-drive/legacy/model/),
611
+ * not here.
612
+ *
613
+ * ## When to use it
614
+ *
615
+ * Only during a migration from legacy EmberData to modern ***Warp*Drive**. It lets you adopt
616
+ * modern patterns incrementally while your existing Adapters and Serializers keep working. For
617
+ * incremental migration strategies, see the [Migration Guide](/upgrading/v5/) and the
618
+ * [Two Store Migration Strategy](/upgrading/v5/two-store-migration).
619
+ *
620
+ * @module
621
+ * @summary Legacy store support for adapters and serializers: the `LegacyNetworkHandler` plus store methods such as
622
+ * `adapterFor`, `serializerFor`, `normalize` and `pushPayload`.
623
+ */
587
624
  /**
588
625
  * Extends the signature of {@link Store} with additional
589
626
  * methods available when using the legacy network layer.
590
627
  *
628
+ * @summary Legacy `Store` type extended with `adapterFor`, `serializerFor`, `normalize`, `pushPayload`, and
629
+ * `serializeRecord` from the adapter and serializer network layer.
591
630
  * @public
592
631
  * @noInheritDoc
593
632
  * @legacy
594
633
  */
595
634
  /**
635
+ * @summary Deprecated alias of `LegacyStoreCompat`, the `Store` type extended with legacy adapter and serializer
636
+ * methods.
596
637
  * @deprecated - use {@link LegacyStoreCompat} instead
597
638
  */
598
639
  /**
@@ -604,6 +645,8 @@ If no `person` adapter is found, this method will look
604
645
  for an `application` adapter (the default adapter for
605
646
  your entire application).
606
647
 
648
+ @summary Legacy store method that returns the cached adapter for a model type, falling back to the `application`
649
+ adapter.
607
650
  @public
608
651
  @param modelName
609
652
  */
@@ -651,6 +694,8 @@ your entire application).
651
694
  If a serializer cannot be found on the adapter, it will fall back
652
695
  to an instance of `JSONSerializer`.
653
696
 
697
+ @summary Legacy store method that returns the cached serializer for a model type, falling back to the
698
+ `application` serializer, or `null` if neither exists.
654
699
  @public
655
700
  @param modelName the record to serialize
656
701
  */
@@ -703,6 +748,8 @@ store.push(store.normalize(modelName, data));
703
748
  });
704
749
  ```
705
750
 
751
+ @summary Legacy store method that converts a raw payload into the normalized document `store.push` expects, using
752
+ the serializer for the given model type.
706
753
  @legacy
707
754
  @public
708
755
  @param modelName The name of the model type for this payload
@@ -778,6 +825,8 @@ store.pushPayload(pushData); // Will use the application serializer
778
825
  store.pushPayload('post', pushData); // Will use the post serializer
779
826
  ```
780
827
 
828
+ @summary Legacy store method that pushes a raw payload into the store after the application serializer, or the
829
+ given model type's serializer, normalizes it.
781
830
  @public
782
831
  @param modelName Optionally, a model type used to determine which serializer will be used
783
832
  @param inputPayload
@@ -798,6 +847,8 @@ function pushPayload(modelName, inputPayload) {
798
847
  /**
799
848
  * Serializes a record using the store's legacy network layer, as with
800
849
  * {@link LegacyStoreCompat.serializeRecord | store.serializeRecord}.
850
+ *
851
+ * @summary Legacy store method that serializes a record into a payload using its model type's serializer.
801
852
  */
802
853
  function serializeRecord(record, options) {
803
854
  /* @__PURE__ */ upgradeStore(this);
@@ -807,6 +858,8 @@ function serializeRecord(record, options) {
807
858
  /**
808
859
  * Destroys any adapters/serializers the legacy network layer has created
809
860
  * for this store, invoked when the store itself is destroyed.
861
+ *
862
+ * @summary Legacy store teardown hook that destroys every adapter and serializer instance the store has cached.
810
863
  */
811
864
  function cleanup() {
812
865
  /* @__PURE__ */ upgradeStore(this);
@@ -820,6 +873,5 @@ function cleanup() {
820
873
  }
821
874
  }
822
875
 
823
- //#endregion
824
876
  export { serializeRecord as a, pushPayload as i, cleanup as n, serializerFor as o, normalize as r, LegacyNetworkHandler as s, adapterFor as t };
825
- //# sourceMappingURL=compat-CeT0PnVX.js.map
877
+ //# sourceMappingURL=compat-CPVriwH0.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compat-CPVriwH0.js","names":["upgradeStore","iterateData","payloadIsNotBlank","normalizeResponseHelper","_findHasMany","adapter","store","identifier","link","relationship","options","promise","Promise","resolve","then","snapshot","_fetchManager","createSnapshot","useLink","relatedLink","href","test","Error","findHasMany","adapterPayload","type","name","JSON","stringify","modelClass","modelFor","serializer","serializerFor","payload","id","Array","isArray","data","syncRelationshipDataFromLink","_push","_findBelongsTo","adapterFor","findBelongsTo","links","meta","parentIdentifier","relationshipData","index","ensureRelationshipIsSetToParent","relatedDataHash","parentPayload","relationships","included","push","parentRelationship","inverse","getInverse","inverseKey","kind","relationshipDataPointsToParent","inspect","thing","quotedType","quotedInverse","expected","expectedModel","got","prefix","path","other","relationshipFetched","includedRecord","message","join","fixRelationshipData","inverseForRelationship","key","definition","schema","fields","get","length","lhs_relationshipName","parentType","i","entry","validateRelationshipEntry","relationshipKind","parentRelationshipData","relData","found","find","v","Object","assign","parentModelID","toString","each","array","Array","isArray","Error","macroCondition","predicate","config","packageRoot","runtimeConfig","packages","getGlobalConfig","global","isTesting","g","e","Boolean","setTesting","globalThis","__embroider_macros__runtime_config__","localConfig","initializeRuntimeMacrosConfig","Object","assign","updaterMethods","setConfig","value","setGlobalConfig","key","updaters","window","_embroider_macros_runtime_config","undefined","methods","updater","waitFor","assertPrivateStore","upgradeStore","FetchManager","SaveOp","assertIdentifierHasId","_findBelongsTo","_findHasMany","payloadIsNotBlank","normalizeResponseHelper","SnapshotRecordArray","getGlobalConfig","getGlobalConfig0","PotentialLegacyOperations","Set","LegacyNetworkHandler","request","context","next","url","op","has","store","_fetchManager","findRecord","findAll","query","queryRecord","findBelongsTo","findHasMany","saveRecord","data","records","identifiers","options","record","links","useLink","field","identifier","pendingRequest","getPendingFetch","test","Error","String","related","Array","isArray","length","manager","reload","scheduleFetch","fetchDataIfNeededForIdentifier","adapter","adapterFor","type","fetches","i","Promise","all","operation","cache","willCommit","saveOptions","Object","assign","fetchManagerPromise","scheduleSave","then","payload","result","_join","didCommit","content","lifetimes","didRequest","status","peekRecord","catch","e","err","adapterDidInvalidate","error","isAdapterError","code","serializer","serializerFor","extractErrors","errorsHash","modelFor","id","errors","errorsHashToArray","getErrors","jsonApiErrors","title","detail","source","pointer","commitWasRejected","makeArray","value","PRIMARY_ATTRIBUTE_KEY","out","keys","forEach","key","messages","push","promise","_instanceCache","recordIsLoaded","snapshot","shouldReloadRecord","createSnapshot","backgroundReload","shouldBackgroundReloadRecord","resolve","maybeRecordArray","recordArrayManager","_live","get","snapshotArray","shouldReload","shouldReloadAll","fetch","isUpdating","_findAll","peekAll","shouldBackgroundReloadAll","isAsyncFlush","schema","adapterPayload","_push","_recordArray","WarpDrive","debug","LOG_REQUESTS","globalThis","getWarpDriveRuntimeConfig","console","log","disableTestWaiter","recordArray","getCollection","populateManagedArray","assertSingleResourceDocument","getGlobalConfig0","getOwner","recordIdentifierFor","_deprecatingNormalize","FetchManager","upgradeStore","LegacyNetworkHandler","adapterFor","modelName","_allowMissing","test","Error","isDestroying","isDestroyed","_adapterCache","Object","create","normalizedModelName","adapter","owner","lookup","undefined","application","serializerFor","_serializerCache","serializer","normalize","payload","schema","modelFor","pushPayload","inputPayload","serializeRecord","record","options","_fetchManager","createSnapshot","serialize","cleanup","adapterName","destroy","serializerName"],"sources":["../../../src/compat/legacy-network-handler/legacy-data-fetch.ts","../../../../../node_modules/.pnpm/@embroider+macros@1.21.4/node_modules/@embroider/macros/src/addon/runtime.js","../../../src/compat/legacy-network-handler/legacy-network-handler.ts","../../../src/compat.ts"],"sourcesContent":["import type { Store } from '@warp-drive/core';\nimport { DEBUG } from '@warp-drive/core/build-config/env';\nimport { assert } from '@warp-drive/core/build-config/macros';\nimport type { BaseFinderOptions } from '@warp-drive/core/types';\nimport type { PersistedResourceKey, ResourceKey } from '@warp-drive/core/types/identifier';\nimport type { LegacyRelationshipField as RelationshipSchema } from '@warp-drive/core/types/schema/fields';\nimport type { ExistingResourceObject, JsonApiDocument } from '@warp-drive/core/types/spec/json-api-raw';\n\nimport { upgradeStore } from '../-private.ts';\nimport { iterateData, payloadIsNotBlank } from './legacy-data-utils.ts';\nimport type { MinimumAdapterInterface } from './minimum-adapter-interface.ts';\nimport { normalizeResponseHelper } from './serializer-response.ts';\n\nexport function _findHasMany(\n adapter: MinimumAdapterInterface,\n store: Store,\n identifier: ResourceKey,\n link: string | null | { href: string },\n relationship: RelationshipSchema,\n options: BaseFinderOptions\n): Promise<PersistedResourceKey[]> {\n upgradeStore(store);\n const promise = Promise.resolve().then(() => {\n const snapshot = store._fetchManager.createSnapshot(identifier, options);\n const useLink = !link || typeof link === 'string';\n const relatedLink = useLink ? link : link.href;\n assert(\n `Attempted to load a hasMany relationship from a specified 'link' in the original payload, but the specified link is empty. You must provide a valid 'link' in the original payload to use 'findHasMany'`,\n relatedLink\n );\n assert(\n `Expected the adapter to implement 'findHasMany' but it does not`,\n typeof adapter.findHasMany === 'function'\n );\n return adapter.findHasMany(store, snapshot, relatedLink, relationship);\n });\n\n return promise.then((adapterPayload) => {\n assert(\n `You made a 'findHasMany' request for a ${identifier.type}'s '${\n relationship.name\n }' relationship, using link '${JSON.stringify(link)}' , but the adapter's response did not have any data`,\n payloadIsNotBlank(adapterPayload)\n );\n const modelClass = store.modelFor(relationship.type);\n\n const serializer = store.serializerFor(relationship.type);\n let payload = normalizeResponseHelper(serializer, store, modelClass, adapterPayload, null, 'findHasMany');\n\n assert(\n `fetched the hasMany relationship '${relationship.name}' for ${identifier.type}:${\n identifier.id\n } with link '${JSON.stringify(\n link\n )}', but no data member is present in the response. If no data exists, the response should set { data: [] }`,\n 'data' in payload && Array.isArray(payload.data)\n );\n\n payload = syncRelationshipDataFromLink(store, payload, identifier as ResourceIdentity, relationship);\n return store._push(payload, true) as PersistedResourceKey[];\n }, null);\n}\n\nexport function _findBelongsTo(\n store: Store,\n identifier: ResourceKey,\n link: string | null | { href: string },\n relationship: RelationshipSchema,\n options: BaseFinderOptions\n): Promise<PersistedResourceKey | null> {\n upgradeStore(store);\n const promise = Promise.resolve().then(() => {\n const adapter = store.adapterFor(identifier.type);\n assert(`You tried to load a belongsTo relationship but you have no adapter (for ${identifier.type})`, adapter);\n assert(\n `You tried to load a belongsTo relationship from a specified 'link' in the original payload but your adapter does not implement 'findBelongsTo'`,\n typeof adapter.findBelongsTo === 'function'\n );\n const snapshot = store._fetchManager.createSnapshot(identifier, options);\n const useLink = !link || typeof link === 'string';\n const relatedLink = useLink ? link : link.href;\n assert(\n `Attempted to load a belongsTo relationship from a specified 'link' in the original payload, but the specified link is empty. You must provide a valid 'link' in the original payload to use 'findBelongsTo'`,\n relatedLink\n );\n return adapter.findBelongsTo(store, snapshot, relatedLink, relationship);\n });\n\n return promise.then((adapterPayload) => {\n const modelClass = store.modelFor(relationship.type);\n const serializer = store.serializerFor(relationship.type);\n let payload = normalizeResponseHelper(serializer, store, modelClass, adapterPayload, null, 'findBelongsTo');\n\n assert(\n `fetched the belongsTo relationship '${relationship.name}' for ${identifier.type}:${\n identifier.id\n } with link '${JSON.stringify(\n link\n )}', but no data member is present in the response. If no data exists, the response should set { data: null }`,\n 'data' in payload && (payload.data === null || (typeof payload.data === 'object' && !Array.isArray(payload.data)))\n );\n\n if (!payload.data && !payload.links && !payload.meta) {\n return null;\n }\n\n payload = syncRelationshipDataFromLink(store, payload, identifier as ResourceIdentity, relationship);\n\n return store._push(payload, true) as PersistedResourceKey | null;\n }, null);\n}\n\n// sync\n// iterate over records in payload.data\n// for each record\n// assert that record.relationships[inverse] is either undefined (so we can fix it)\n// or provide a data: {id, type} that matches the record that requested it\n// return the relationship data for the parent\nfunction syncRelationshipDataFromLink(\n store: Store,\n payload: JsonApiDocument,\n parentIdentifier: ResourceIdentity,\n relationship: RelationshipSchema\n) {\n // ensure the right hand side (incoming payload) points to the parent record that\n // requested this relationship\n const relationshipData = payload.data\n ? iterateData(payload.data, (data, index) => {\n const { id, type } = data;\n ensureRelationshipIsSetToParent(data, parentIdentifier, store, relationship, index);\n return { id, type };\n })\n : null;\n\n const relatedDataHash = {} as JsonApiDocument;\n\n if ('meta' in payload) {\n relatedDataHash.meta = payload.meta;\n }\n if ('links' in payload) {\n relatedDataHash.links = payload.links;\n }\n if ('data' in payload) {\n relatedDataHash.data = relationshipData;\n }\n\n // now, push the left hand side (the parent record) to ensure things are in sync, since\n // the payload will be pushed with store._push\n const parentPayload = {\n id: parentIdentifier.id,\n type: parentIdentifier.type,\n relationships: {\n [relationship.name]: relatedDataHash,\n },\n };\n\n if (!Array.isArray(payload.included)) {\n payload.included = [];\n }\n payload.included.push(parentPayload);\n\n return payload;\n}\n\ntype ResourceIdentity = { id: string; type: string };\ntype RelationshipData = ResourceIdentity | ResourceIdentity[] | null;\n\nfunction ensureRelationshipIsSetToParent(\n payload: ExistingResourceObject,\n parentIdentifier: ResourceIdentity,\n store: Store,\n parentRelationship: RelationshipSchema,\n index: number\n) {\n const { id, type } = payload;\n\n if (!payload.relationships) {\n payload.relationships = {};\n }\n const { relationships } = payload;\n\n const inverse = getInverse(store, parentIdentifier, parentRelationship, type);\n if (inverse) {\n const { inverseKey, kind } = inverse;\n\n const relationshipData = relationships[inverseKey]?.data;\n\n if (DEBUG) {\n if (\n typeof relationshipData !== 'undefined' &&\n !relationshipDataPointsToParent(relationshipData, parentIdentifier)\n ) {\n const inspect = function inspect(thing: unknown) {\n return `'${JSON.stringify(thing)}'`;\n };\n const quotedType = inspect(type);\n const quotedInverse = inspect(inverseKey);\n const expected = inspect({\n id: parentIdentifier.id,\n type: parentIdentifier.type,\n });\n const expectedModel = `${parentIdentifier.type}:${parentIdentifier.id}`;\n const got = inspect(relationshipData);\n const prefix = typeof index === 'number' ? `data[${index}]` : `data`;\n const path = `${prefix}.relationships.${inverseKey}.data`;\n const data = Array.isArray(relationshipData) ? relationshipData[0] : relationshipData;\n const other = data ? `<${data.type}:${data.id}>` : null;\n const relationshipFetched = `${expectedModel}.${parentRelationship.kind}(\"${parentRelationship.name}\")`;\n const includedRecord = `<${type}:${id}>`;\n const message = [\n `Encountered mismatched relationship: WarpDrive expected ${path} in the payload from ${relationshipFetched} to include ${expected} but got ${got} instead.\\n`,\n `The ${includedRecord} record loaded at ${prefix} in the payload specified ${other} as its ${quotedInverse}, but should have specified ${expectedModel} (the record the relationship is being loaded from) as its ${quotedInverse} instead.`,\n `This could mean that the response for ${relationshipFetched} may have accidentally returned ${quotedType} records that aren't related to ${expectedModel} and could be related to a different ${parentIdentifier.type} record instead.`,\n `WarpDrive has corrected the ${includedRecord} record's ${quotedInverse} relationship to ${expectedModel} so that ${relationshipFetched} will include ${includedRecord}.`,\n `Please update the response from the server or change your serializer to either ensure that the response for only includes ${quotedType} records that specify ${expectedModel} as their ${quotedInverse}, or omit the ${quotedInverse} relationship from the response.`,\n ].join('\\n');\n\n assert(message);\n }\n }\n\n if (kind !== 'hasMany' || typeof relationshipData !== 'undefined') {\n relationships[inverseKey] = relationships[inverseKey] || {};\n relationships[inverseKey].data = fixRelationshipData(relationshipData ?? null, kind, parentIdentifier);\n }\n }\n}\n\nfunction inverseForRelationship(store: Store, identifier: { type: string; id?: string }, key: string) {\n const definition = store.schema.fields(identifier).get(key);\n if (!definition) {\n return null;\n }\n assert(\n `Expected the field definition to be a relationship`,\n definition.kind === 'hasMany' || definition.kind === 'belongsTo'\n );\n assert(\n `Expected the relationship defintion to specify the inverse type or null.`,\n definition.options?.inverse === null ||\n (typeof definition.options?.inverse === 'string' && definition.options.inverse.length > 0)\n );\n return definition.options.inverse;\n}\n\nfunction getInverse(\n store: Store,\n parentIdentifier: ResourceIdentity,\n parentRelationship: RelationshipSchema,\n type: string\n) {\n const { name: lhs_relationshipName } = parentRelationship;\n const { type: parentType } = parentIdentifier;\n const inverseKey = inverseForRelationship(store, { type: parentType }, lhs_relationshipName);\n\n if (inverseKey) {\n const definition = store.schema.fields({ type }).get(inverseKey);\n assert(\n `Expected the field definition to be a relationship`,\n definition && (definition.kind === 'hasMany' || definition.kind === 'belongsTo')\n );\n return {\n inverseKey,\n kind: definition.kind,\n };\n }\n}\n\nfunction relationshipDataPointsToParent(relationshipData: RelationshipData, identifier: ResourceIdentity): boolean {\n if (relationshipData === null) {\n return false;\n }\n\n if (Array.isArray(relationshipData)) {\n if (relationshipData.length === 0) {\n return false;\n }\n for (let i = 0; i < relationshipData.length; i++) {\n const entry = relationshipData[i];\n if (validateRelationshipEntry(entry, identifier)) {\n return true;\n }\n }\n } else {\n return validateRelationshipEntry(relationshipData, identifier);\n }\n\n return false;\n}\n\nfunction fixRelationshipData(\n relationshipData: RelationshipData,\n relationshipKind: 'hasMany' | 'belongsTo',\n { id, type }: ResourceIdentity\n) {\n const parentRelationshipData = {\n id,\n type,\n };\n\n let payload: { type: string; id: string } | { type: string; id: string }[];\n\n if (relationshipKind === 'hasMany') {\n const relData = (relationshipData as { type: string; id: string }[]) || [];\n if (relationshipData) {\n assert('expected the relationship data to be an array', Array.isArray(relationshipData));\n // these arrays could be massive so this is better than filter\n // Note: this is potentially problematic if type/id are not in the\n // same state of normalization.\n const found = relationshipData.find((v) => {\n return v.type === parentRelationshipData.type && v.id === parentRelationshipData.id;\n });\n if (!found) {\n relData.push(parentRelationshipData);\n }\n } else {\n relData.push(parentRelationshipData);\n }\n payload = relData;\n } else {\n const relData = (relationshipData as { type: string; id: string }) || {};\n Object.assign(relData, parentRelationshipData);\n payload = relData;\n }\n\n return payload;\n}\n\nfunction validateRelationshipEntry({ id }: ResourceIdentity, { id: parentModelID }: ResourceIdentity): boolean {\n return !!id && id.toString() === parentModelID;\n}\n","/*\n These are the runtime implementations for the javascript macros that have\n runtime implementations.\n\n Not every macro has a runtime implementation, some only make sense in the\n build and always run there.\n\n Even when we have runtime implementations, we are still careful to emit static\n errors during the build wherever possible, and runtime errors when necessary,\n so that you're not surprised when you switch from runtime-mode to compile-time\n mode.\n*/\n\n/*\n CAUTION: in classic builds, this file gets shared by all present copies of\n @embroider/macros. If you want to change its public API, you need to rename it\n and update `pathToRuntime` in ../babel/state.ts to point at it, so that your\n babel plugin and runtime will match.\n*/\n\nexport function each(array) {\n if (!Array.isArray(array)) {\n throw new Error(`the argument to the each() macro must be an array`);\n }\n return array;\n}\n\nexport function macroCondition(predicate) {\n return predicate;\n}\n\n// This is here as a compile target for `getConfig` and `getOwnConfig` when\n// we're in runtime mode. This is not public API to call from your own code.\nexport function config(packageRoot) {\n return runtimeConfig.packages[packageRoot];\n}\n\nexport function getGlobalConfig() {\n return runtimeConfig.global;\n}\n\nexport function isTesting() {\n let g = runtimeConfig.global;\n let e = g && g['@embroider/macros'];\n return Boolean(e && e.isTesting);\n}\n\nexport function setTesting(isTesting) {\n if (!runtimeConfig.global) {\n runtimeConfig.global = {};\n }\n if (!runtimeConfig.global['@embroider/macros']) {\n runtimeConfig.global['@embroider/macros'] = {};\n }\n runtimeConfig.global['@embroider/macros'].isTesting = Boolean(isTesting);\n}\n\n// Welcome intrepid developer!\n//\n// While this data is \"global\", this is a private variable.\n//\n// do not build features based off of its contents,\n// or assume it will have the same name in future releases.\nconst runtimeConfig = globalThis.__embroider_macros__runtime_config__ ||= {};\n\nruntimeConfig.packages ||= {};\nruntimeConfig.global ||= {};\n\n// In the off chance there are duplicate copies of @embroider/macros in the dep graph\n// (due to the package manager messing up)\n// Let's try to merge them together via the above global well known variable\nconst localConfig = initializeRuntimeMacrosConfig();\n\nObject.assign(runtimeConfig.packages, localConfig.packages);\nObject.assign(runtimeConfig.global, localConfig.global);\n\n// this exists to be targeted by our babel plugin\nfunction initializeRuntimeMacrosConfig() {\n return { packages: {}, global: {} };\n}\n\nfunction updaterMethods() {\n return {\n config,\n getGlobalConfig,\n setConfig(packageRoot, value) {\n runtimeConfig.packages[packageRoot] = value;\n },\n setGlobalConfig(key, value) {\n runtimeConfig.global[key] = value;\n },\n };\n}\n\n// this is how runtime config can get injected at boot. I'm not sure yet if this\n// should be public API, but we certainly need it internally to set things like\n// the global fastboot.isRunning.\n//\n// consumers of this API push a function onto\n// window._embroider_macros_runtime_config. The function is given four methods\n// which allow it to read and write the per-package and global configs. The\n// reason for allowing both read & write is that merging strategies are up to\n// each consumers -- read first, then merge, then write.\n//\n// For an example user of this API, see where we generate\n// embroider_macros_fastboot_init.js' in @embroider/core.\nlet updaters = typeof window !== 'undefined' ? window._embroider_macros_runtime_config : undefined;\nif (updaters) {\n let methods = updaterMethods();\n for (let updater of updaters) {\n updater(methods);\n }\n}\n","import type { Store, StoreRequestContext } from '@warp-drive/core';\nimport { LOG_REQUESTS } from '@warp-drive/core/build-config/debugging';\nimport { DEBUG, TESTING } from '@warp-drive/core/build-config/env';\nimport { assert } from '@warp-drive/core/build-config/macros';\nimport type { Future, Handler, NextFn } from '@warp-drive/core/request';\nimport { waitFor } from '@warp-drive/core/signals/-leaked';\nimport { assertPrivateStore, type LegacyQueryArray } from '@warp-drive/core/store/-private';\nimport type { ModelSchema } from '@warp-drive/core/types';\nimport type { PersistedResourceKey, ResourceKey } from '@warp-drive/core/types/identifier';\nimport type { ImmutableRequestInfo, StructuredDataDocument } from '@warp-drive/core/types/request';\nimport type { LegacyRelationshipField as RelationshipSchema } from '@warp-drive/core/types/schema/fields';\nimport type { SingleResourceDataDocument } from '@warp-drive/core/types/spec/document';\nimport type { ApiError } from '@warp-drive/core/types/spec/error';\nimport type {\n CollectionResourceDocument,\n JsonApiDocument,\n Links,\n PaginationLinks,\n SingleResourceDocument,\n} from '@warp-drive/core/types/spec/json-api-raw';\n\nimport { upgradeStore } from '../-private.ts';\nimport { FetchManager, SaveOp } from './fetch-manager.ts';\nimport { assertIdentifierHasId } from './identifier-has-id.ts';\nimport { _findBelongsTo, _findHasMany } from './legacy-data-fetch.ts';\nimport { payloadIsNotBlank } from './legacy-data-utils.ts';\nimport type { MinimumAdapterInterface } from './minimum-adapter-interface.ts';\nimport type { MinimumSerializerInterface } from './minimum-serializer-interface.ts';\nimport { normalizeResponseHelper } from './serializer-response.ts';\nimport { SnapshotRecordArray } from './snapshot-record-array.ts';\nimport type { Snapshot } from './snapshot.ts';\n\ntype AdapterErrors = Error & { errors?: unknown[]; isAdapterError?: true; code?: string };\ntype SerializerWithParseErrors = MinimumSerializerInterface & {\n extractErrors?(store: Store, modelClass: ModelSchema, error: AdapterErrors, recordId: string | null): unknown;\n};\n\nconst PotentialLegacyOperations = new Set([\n 'findRecord',\n 'findAll',\n 'query',\n 'queryRecord',\n 'findBelongsTo',\n 'findHasMany',\n 'updateRecord',\n 'createRecord',\n 'deleteRecord',\n]);\n\n/**\n * A {@link Handler} that fulfills legacy `findRecord`/`findAll`/`query`/\n * `queryRecord`/`findBelongsTo`/`findHasMany`/`createRecord`/`updateRecord`/\n * `deleteRecord` requests using the store's configured {@link MinimumAdapterInterface | adapter}\n * and {@link MinimumSerializerInterface | serializer}, passing any other\n * request through to the next handler unchanged.\n *\n * @summary Legacy `RequestManager` handler that fulfills find, query, create, update, and delete operations through\n * the store's adapters and serializers, passing other requests along.\n */\nexport const LegacyNetworkHandler: Handler = {\n request<T>(context: StoreRequestContext, next: NextFn<T>): Future<T> | Promise<StructuredDataDocument<T>> {\n // if we are not a legacy request, move on\n if (context.request.url || !context.request.op || !PotentialLegacyOperations.has(context.request.op)) {\n return next(context.request);\n }\n\n const { store } = context.request;\n upgradeStore(store);\n if (!store._fetchManager) {\n store._fetchManager = new FetchManager(store);\n }\n\n switch (context.request.op) {\n case 'findRecord':\n return findRecord(context);\n case 'findAll':\n return findAll(context);\n case 'query':\n return query(context);\n case 'queryRecord':\n return queryRecord(context);\n case 'findBelongsTo':\n return findBelongsTo(context);\n case 'findHasMany':\n return findHasMany(context);\n case 'updateRecord':\n return saveRecord(context);\n case 'createRecord':\n return saveRecord(context);\n case 'deleteRecord':\n return saveRecord(context);\n default:\n return next(context.request);\n }\n },\n};\n\nfunction findBelongsTo<T>(context: StoreRequestContext): Promise<T> {\n const { store, data, records: identifiers } = context.request;\n const { options, record, links, useLink, field } = data as {\n record: ResourceKey;\n options: Record<string, unknown>;\n links?: Links;\n useLink: boolean;\n field: RelationshipSchema;\n };\n const identifier = identifiers?.[0];\n upgradeStore(store);\n\n // short circuit if we are already loading\n const pendingRequest = identifier && store._fetchManager.getPendingFetch(identifier as PersistedResourceKey, options);\n if (pendingRequest) {\n return pendingRequest as Promise<T>;\n }\n\n if (useLink) {\n assert(`Expected a related link when calling store.findBelongsTo, found ${String(links)}`, links && links.related);\n return _findBelongsTo(store, record, links.related, field, options) as Promise<T>;\n }\n\n assert(`Expected an identifier`, Array.isArray(identifiers) && identifiers.length === 1);\n\n const manager = store._fetchManager;\n assertIdentifierHasId(identifier);\n\n return options.reload\n ? (manager.scheduleFetch(identifier, options, context.request) as Promise<T>)\n : (manager.fetchDataIfNeededForIdentifier(identifier, options, context.request) as Promise<T>);\n}\n\nfunction findHasMany<T>(context: StoreRequestContext): Promise<T> {\n const { store, data, records: identifiers } = context.request;\n const { options, record, links, useLink, field } = data as {\n record: ResourceKey;\n options: Record<string, unknown>;\n links?: PaginationLinks | Links;\n useLink: boolean;\n field: RelationshipSchema;\n };\n upgradeStore(store);\n\n // link case\n if (useLink) {\n const adapter = store.adapterFor(record.type);\n /*\n If a relationship was originally populated by the adapter as a link\n (as opposed to a list of IDs), this method is called when the\n relationship is fetched.\n\n The link (which is usually a URL) is passed through unchanged, so the\n adapter can make whatever request it wants.\n\n The usual use-case is for the server to register a URL as a link, and\n then use that URL in the future to make a request for the relationship.\n */\n assert(`You tried to load a hasMany relationship but you have no adapter (for ${record.type})`, adapter);\n assert(\n `You tried to load a hasMany relationship from a specified 'link' in the original payload but your adapter does not implement 'findHasMany'`,\n typeof adapter.findHasMany === 'function'\n );\n assert(`Expected a related link when calling store.findHasMany, found ${String(links)}`, links && links.related);\n\n return _findHasMany(adapter, store, record, links.related, field, options) as Promise<T>;\n }\n\n // identifiers case\n assert(`Expected an array of identifiers to fetch`, Array.isArray(identifiers));\n const fetches = new Array<globalThis.Promise<ResourceKey>>(identifiers.length);\n const manager = store._fetchManager;\n\n for (let i = 0; i < identifiers.length; i++) {\n const identifier = identifiers[i];\n // TODO we probably can be lenient here and return from cache for the isNew case\n assertIdentifierHasId(identifier);\n fetches[i] = options.reload\n ? manager.scheduleFetch(identifier, options, context.request)\n : manager.fetchDataIfNeededForIdentifier(identifier, options, context.request);\n }\n\n return Promise.all(fetches) as Promise<T>;\n}\n\nfunction saveRecord<T>(context: StoreRequestContext): Promise<T> {\n const { store, data, op: operation } = context.request;\n const { options, record: identifier } = data as { record: ResourceKey; options: Record<string, unknown> };\n\n upgradeStore(store);\n assertPrivateStore(store);\n\n store.cache.willCommit(identifier, context);\n\n const saveOptions = Object.assign(\n { [SaveOp]: operation as 'updateRecord' | 'deleteRecord' | 'createRecord' },\n options\n );\n const fetchManagerPromise = store._fetchManager.scheduleSave(identifier, saveOptions);\n\n return fetchManagerPromise\n .then((payload) => {\n let result: SingleResourceDataDocument;\n store._join(() => {\n // @ts-expect-error we don't have access to a response in legacy\n result = store.cache.didCommit(identifier, { request: context.request, content: payload });\n });\n\n // blatantly lie if we were a createRecord request\n // to give some semblance of cache-control to the\n // CachePolicy while legacy is still around\n if (store.lifetimes?.didRequest && operation === 'createRecord') {\n store.lifetimes.didRequest(context.request, { status: 201 } as Response, null, store);\n }\n return store.peekRecord(result!.data!);\n })\n .catch((e: unknown) => {\n let err = e;\n if (!e) {\n err = new Error(`Unknown Error Occurred During Request`);\n } else if (typeof e === 'string') {\n err = new Error(e);\n }\n adapterDidInvalidate(store, identifier, err as Error);\n throw err;\n }) as Promise<T>;\n}\n\nfunction adapterDidInvalidate(\n store: Store,\n identifier: ResourceKey,\n error: Error & { errors?: ApiError[]; isAdapterError?: true; code?: string }\n) {\n upgradeStore(store);\n if (error && error.isAdapterError === true && error.code === 'InvalidError') {\n const serializer = store.serializerFor(identifier.type) as SerializerWithParseErrors;\n\n // TODO @deprecate extractErrors being called\n // TODO remove extractErrors from the default serializers.\n if (serializer && typeof serializer.extractErrors === 'function') {\n const errorsHash = serializer.extractErrors(\n store,\n store.modelFor(identifier.type),\n error,\n identifier.id\n ) as Record<string, string | string[]>;\n error.errors = errorsHashToArray(errorsHash);\n }\n }\n const cache = store.cache;\n\n if (error.errors) {\n assert(\n `Expected the cache in use by resource ${String(\n identifier\n )} to have a getErrors(identifier) method for retrieving errors.`,\n typeof cache.getErrors === 'function'\n );\n\n let jsonApiErrors: ApiError[] = error.errors;\n if (jsonApiErrors.length === 0) {\n jsonApiErrors = [{ title: 'Invalid Error', detail: '', source: { pointer: '/data' } }];\n }\n cache.commitWasRejected(identifier, jsonApiErrors);\n } else {\n cache.commitWasRejected(identifier);\n }\n}\n\nfunction makeArray<T>(value: T | T[]): T[] {\n return Array.isArray(value) ? value : [value];\n}\n\nconst PRIMARY_ATTRIBUTE_KEY = 'base';\nfunction errorsHashToArray(errors: Record<string, string | string[]>): ApiError[] {\n const out: ApiError[] = [];\n\n if (errors) {\n Object.keys(errors).forEach((key) => {\n const messages = makeArray(errors[key]);\n for (let i = 0; i < messages.length; i++) {\n let title = 'Invalid Attribute';\n let pointer = `/data/attributes/${key}`;\n if (key === PRIMARY_ATTRIBUTE_KEY) {\n title = 'Invalid Document';\n pointer = `/data`;\n }\n out.push({\n title: title,\n detail: messages[i],\n source: {\n pointer: pointer,\n },\n });\n }\n });\n }\n\n return out;\n}\n\nfunction findRecord<T>(context: StoreRequestContext): Promise<T> {\n const { store, data } = context.request;\n const { record: identifier, options } = data as {\n record: PersistedResourceKey;\n options: { reload?: boolean; backgroundReload?: boolean };\n };\n upgradeStore(store);\n assertPrivateStore(store);\n let promise: Promise<ResourceKey>;\n\n // if not loaded start loading\n if (!store._instanceCache.recordIsLoaded(identifier)) {\n promise = store._fetchManager.fetchDataIfNeededForIdentifier(identifier, options, context.request);\n\n // Refetch if the reload option is passed\n } else if (options.reload) {\n assertIdentifierHasId(identifier);\n\n promise = store._fetchManager.scheduleFetch(identifier, options, context.request);\n } else {\n let snapshot: Snapshot | null = null;\n const adapter = store.adapterFor(identifier.type);\n\n // Refetch the record if the adapter thinks the record is stale\n if (\n typeof options.reload === 'undefined' &&\n adapter.shouldReloadRecord &&\n adapter.shouldReloadRecord(store, (snapshot = store._fetchManager.createSnapshot(identifier, options)))\n ) {\n assertIdentifierHasId(identifier);\n if (DEBUG) {\n promise = store._fetchManager.scheduleFetch(\n identifier,\n Object.assign({}, options, { reload: true }),\n context.request\n );\n } else {\n options.reload = true;\n promise = store._fetchManager.scheduleFetch(identifier, options, context.request);\n }\n } else {\n // Trigger the background refetch if backgroundReload option is passed\n if (\n options.backgroundReload !== false &&\n (options.backgroundReload ||\n !adapter.shouldBackgroundReloadRecord ||\n adapter.shouldBackgroundReloadRecord(\n store,\n snapshot || store._fetchManager.createSnapshot(identifier, options)\n ))\n ) {\n assertIdentifierHasId(identifier);\n\n if (DEBUG) {\n void store._fetchManager.scheduleFetch(\n identifier,\n Object.assign({}, options, { backgroundReload: true }),\n context.request\n );\n } else {\n options.backgroundReload = true;\n void store._fetchManager.scheduleFetch(identifier, options, context.request);\n }\n }\n\n // Return the cached record\n promise = Promise.resolve(identifier);\n }\n }\n\n return promise.then((i: ResourceKey) => store.peekRecord(i)) as Promise<T>;\n}\n\nfunction findAll<T>(context: StoreRequestContext): Promise<T> {\n const { store, data } = context.request;\n const { type, options } = data as {\n type: string;\n options: { reload?: boolean; backgroundReload?: boolean };\n };\n upgradeStore(store);\n assertPrivateStore(store);\n const adapter = store.adapterFor(type);\n\n assert(`You tried to load all records but you have no adapter (for ${type})`, adapter);\n assert(\n `You tried to load all records but your adapter does not implement 'findAll'`,\n typeof adapter.findAll === 'function'\n );\n\n // avoid initializing the liveArray just to set `isUpdating`\n const maybeRecordArray = store.recordArrayManager._live.get(type);\n const snapshotArray = new SnapshotRecordArray(store, type, options);\n\n const shouldReload =\n options.reload ||\n (options.reload !== false &&\n ((adapter.shouldReloadAll && adapter.shouldReloadAll(store, snapshotArray)) ||\n (!adapter.shouldReloadAll && snapshotArray.length === 0)));\n\n let fetch: Promise<T> | undefined;\n if (shouldReload) {\n // oxlint-disable-next-line no-unused-expressions\n maybeRecordArray && (maybeRecordArray.isUpdating = true);\n fetch = _findAll(adapter, store, type, snapshotArray, context.request, true);\n } else {\n fetch = Promise.resolve(store.peekAll(type)) as Promise<T>;\n\n if (\n options.backgroundReload ||\n (options.backgroundReload !== false &&\n (!adapter.shouldBackgroundReloadAll || adapter.shouldBackgroundReloadAll(store, snapshotArray)))\n ) {\n // oxlint-disable-next-line no-unused-expressions\n maybeRecordArray && (maybeRecordArray.isUpdating = true);\n void _findAll(adapter, store, type, snapshotArray, context.request, false);\n }\n }\n\n return fetch;\n}\n\nfunction _findAll<T>(\n adapter: MinimumAdapterInterface,\n store: Store,\n type: string,\n snapshotArray: SnapshotRecordArray,\n request: ImmutableRequestInfo,\n isAsyncFlush: boolean\n): Promise<T> {\n const schema = store.modelFor(type);\n let promise: Promise<T> = Promise.resolve().then(() =>\n adapter.findAll(store, schema, null, snapshotArray)\n ) as Promise<T>;\n\n promise = promise.then((adapterPayload: T) => {\n assert(\n `You made a 'findAll' request for '${type}' records, but the adapter's response did not have any data`,\n payloadIsNotBlank(adapterPayload)\n );\n upgradeStore(store);\n const serializer = store.serializerFor(type);\n const payload = normalizeResponseHelper(serializer, store, schema, adapterPayload, null, 'findAll');\n\n store._push(payload, isAsyncFlush);\n snapshotArray._recordArray.isUpdating = false;\n\n if (LOG_REQUESTS) {\n // oxlint-disable-next-line no-console\n console.log(`request: findAll<${type}> background reload complete`);\n }\n return snapshotArray._recordArray;\n }) as Promise<T>;\n\n if (TESTING) {\n if (!request.disableTestWaiter) {\n promise = waitFor(promise);\n }\n }\n\n return promise;\n}\n\nfunction query<T>(context: StoreRequestContext): Promise<T> {\n const { store, data } = context.request;\n upgradeStore(store);\n assertPrivateStore(store);\n let { options } = data as {\n options: { _recordArray?: LegacyQueryArray; adapterOptions?: Record<string, unknown> };\n };\n // oxlint-disable-next-line no-shadow\n const { type, query } = data as {\n type: string;\n query: Record<string, unknown>;\n options: { _recordArray?: LegacyQueryArray; adapterOptions?: Record<string, unknown> };\n };\n const adapter = store.adapterFor(type);\n\n assert(`You tried to make a query but you have no adapter (for ${type})`, adapter);\n assert(`You tried to make a query but your adapter does not implement 'query'`, typeof adapter.query === 'function');\n\n const recordArray =\n options._recordArray ||\n store.recordArrayManager.getCollection({\n type,\n query,\n });\n\n if (DEBUG) {\n options = Object.assign({}, options);\n delete options._recordArray;\n } else {\n delete options._recordArray;\n }\n const schema = store.modelFor(type);\n const promise = Promise.resolve().then(() => adapter.query(store, schema, query, recordArray, options));\n\n return promise.then((adapterPayload) => {\n const serializer = store.serializerFor(type);\n const payload = normalizeResponseHelper(serializer, store, schema, adapterPayload, null, 'query');\n const identifiers = store._push(payload, true);\n\n assert(\n 'The response to store.query is expected to be an array but it was a single record. Please wrap your response in an array or use `store.queryRecord` to query for a single record.',\n Array.isArray(identifiers)\n );\n\n store.recordArrayManager.populateManagedArray(recordArray, identifiers, payload as CollectionResourceDocument);\n\n return recordArray;\n }) as Promise<T>;\n}\n\nfunction assertSingleResourceDocument(payload: JsonApiDocument): asserts payload is SingleResourceDocument {\n assert(\n `Expected the primary data returned by the serializer for a 'queryRecord' response to be a single object or null but instead it was an array.`,\n !Array.isArray(payload.data)\n );\n}\n\nfunction queryRecord<T>(context: StoreRequestContext): Promise<T> {\n const { store, data } = context.request;\n // oxlint-disable-next-line no-shadow\n const { type, query, options } = data as { type: string; query: Record<string, unknown>; options: object };\n upgradeStore(store);\n const adapter = store.adapterFor(type);\n\n assert(`You tried to make a query but you have no adapter (for ${type})`, adapter);\n assert(\n `You tried to make a query but your adapter does not implement 'queryRecord'`,\n typeof adapter.queryRecord === 'function'\n );\n\n const schema = store.modelFor(type);\n const promise = Promise.resolve().then(() => adapter.queryRecord(store, schema, query, options)) as Promise<T>;\n\n return promise.then((adapterPayload: T) => {\n const serializer = store.serializerFor(type);\n const payload = normalizeResponseHelper(\n serializer,\n store,\n schema,\n adapterPayload as Record<string, unknown>,\n null,\n 'queryRecord'\n );\n\n assertSingleResourceDocument(payload);\n\n const identifier = store._push(payload, true) as ResourceKey;\n return identifier ? store.peekRecord(identifier) : null;\n }) as Promise<T>;\n}\n","/**\n * Helps an app migrate incrementally from legacy EmberData patterns to modern ***Warp*Drive**.\n *\n * ## Why it exists\n *\n * While migrating, you may need to:\n *\n * - keep Adapters and Serializers working on a Store whose requests go through the\n * {@link RequestManager}\n * - keep the deprecated request methods such as `store.findRecord` and `store.query`, which\n * Adapters fulfill, working while you move calls to `store.request`\n * - adopt modern patterns one piece at a time rather than all at once\n *\n * ## What it provides\n *\n * - {@link LegacyNetworkHandler}, a request handler that fulfills those legacy requests through\n * the store's Adapters and Serializers and passes every other request along\n * - {@link adapterFor}, {@link serializerFor}, {@link normalize}, {@link pushPayload} and\n * {@link serializeRecord}, the store methods for working with Adapters and Serializers, and\n * {@link LegacyStoreCompat}, the Store type that includes them\n *\n * The Store that [useLegacyStore](/api/@warp-drive/legacy/functions/useLegacyStore) produces\n * adds `LegacyNetworkHandler` to its RequestManager unless `linksMode` is `true`. The hooks\n * that present `Model` instances live in [@warp-drive/legacy/model](/api/@warp-drive/legacy/model/),\n * not here.\n *\n * ## When to use it\n *\n * Only during a migration from legacy EmberData to modern ***Warp*Drive**. It lets you adopt\n * modern patterns incrementally while your existing Adapters and Serializers keep working. For\n * incremental migration strategies, see the [Migration Guide](/upgrading/v5/) and the\n * [Two Store Migration Strategy](/upgrading/v5/two-store-migration).\n *\n * @module\n * @summary Legacy store support for adapters and serializers: the `LegacyNetworkHandler` plus store methods such as\n * `adapterFor`, `serializerFor`, `normalize` and `pushPayload`.\n */\n\nimport { getOwner } from '@ember/application';\n\n// RequestManager is imported only so the @module comment can {@link} it.\n// oxlint-disable-next-line no-unused-vars\nimport { recordIdentifierFor, type RequestManager, type Store } from '@warp-drive/core';\nimport { assert } from '@warp-drive/core/build-config/macros';\nimport { _deprecatingNormalize } from '@warp-drive/core/store/-private';\nimport type { ObjectValue } from '@warp-drive/core/types/json/raw';\nimport type { SingleResourceDocument } from '@warp-drive/core/types/spec/json-api-raw';\n\nimport { FetchManager, upgradeStore } from './compat/-private.ts';\nimport type {\n AdapterPayload,\n MinimumAdapterInterface,\n} from './compat/legacy-network-handler/minimum-adapter-interface.ts';\nimport type {\n MinimumSerializerInterface,\n SerializerOptions,\n} from './compat/legacy-network-handler/minimum-serializer-interface.ts';\n\nexport { LegacyNetworkHandler } from './compat/legacy-network-handler/legacy-network-handler.ts';\n\nexport type { MinimumAdapterInterface, MinimumSerializerInterface, SerializerOptions, AdapterPayload };\n\n/**\n * Extends the signature of {@link Store} with additional\n * methods available when using the legacy network layer.\n *\n * @summary Legacy `Store` type extended with `adapterFor`, `serializerFor`, `normalize`, `pushPayload`, and\n * `serializeRecord` from the adapter and serializer network layer.\n * @public\n * @noInheritDoc\n * @legacy\n */\nexport interface LegacyStoreCompat extends Store {\n /**\n * @private\n */\n _fetchManager: FetchManager;\n\n /**\n * Returns the adapter instance for the given model type, instantiating\n * it (and caching the instance) if necessary. See {@link adapterFor}.\n */\n adapterFor(this: Store, modelName: string): MinimumAdapterInterface;\n /**\n * Same as the single-argument overload, but returns `undefined` instead\n * of throwing/asserting when `_allowMissing` is `true` and no adapter\n * is found.\n */\n adapterFor(this: Store, modelName: string, _allowMissing: true): MinimumAdapterInterface | undefined;\n\n /**\n * Returns the serializer instance for the given model type, instantiating\n * it (and caching the instance) if necessary. See {@link serializerFor}.\n */\n serializerFor<K extends string>(modelName: K, _allowMissing?: boolean): MinimumSerializerInterface | null;\n\n /**\n * Normalizes a payload for the given model type using its serializer.\n * See {@link normalize}.\n */\n normalize(modelName: string, payload: ObjectValue): ObjectValue;\n\n /**\n * Pushes a payload into the store using the appropriate serializer to\n * normalize it first. See {@link pushPayload}.\n */\n pushPayload(modelName: string, payload: ObjectValue): void;\n\n /**\n * Serializes a record using its serializer. See {@link serializeRecord}.\n */\n serializeRecord(record: unknown, options?: SerializerOptions): unknown;\n\n /**\n * @private\n */\n _adapterCache: Record<string, MinimumAdapterInterface & { store: Store }>;\n /**\n * @private\n */\n _serializerCache: Record<string, MinimumSerializerInterface & { store: Store }>;\n}\n\n/**\n * @summary Deprecated alias of `LegacyStoreCompat`, the `Store` type extended with legacy adapter and serializer\n * methods.\n * @deprecated - use {@link LegacyStoreCompat} instead\n */\nexport type CompatStore = LegacyStoreCompat;\n\n/**\n Returns an instance of the adapter for a given type. For\n example, `adapterFor('person')` will return an instance of\n the adapter located at `app/adapters/person.js`\n\n If no `person` adapter is found, this method will look\n for an `application` adapter (the default adapter for\n your entire application).\n\n @summary Legacy store method that returns the cached adapter for a model type, falling back to the `application`\n adapter.\n @public\n @param modelName\n*/\nexport function adapterFor(this: Store, modelName: string): MinimumAdapterInterface;\nexport function adapterFor(this: Store, modelName: string, _allowMissing: true): MinimumAdapterInterface | undefined;\nexport function adapterFor(this: Store, modelName: string, _allowMissing?: true): MinimumAdapterInterface | undefined {\n assert(\n `Attempted to call store.adapterFor(), but the store instance has already been destroyed.`,\n !(this.isDestroying || this.isDestroyed)\n );\n assert(`You need to pass a model name to the store's adapterFor method`, modelName);\n assert(\n `Passing classes to store.adapterFor has been removed. Please pass a dasherized string instead of ${modelName}`,\n typeof modelName === 'string'\n );\n upgradeStore(this);\n this._adapterCache =\n this._adapterCache || (Object.create(null) as Record<string, MinimumAdapterInterface & { store: Store }>);\n\n const normalizedModelName = _deprecatingNormalize(modelName);\n\n const { _adapterCache } = this;\n let adapter: (MinimumAdapterInterface & { store: Store }) | undefined = _adapterCache[normalizedModelName];\n if (adapter) {\n return adapter;\n }\n\n const owner = getOwner(this)!;\n\n // name specific adapter\n adapter = owner.lookup(`adapter:${normalizedModelName}`) as (MinimumAdapterInterface & { store: Store }) | undefined;\n if (adapter !== undefined) {\n _adapterCache[normalizedModelName] = adapter;\n return adapter;\n }\n\n // no adapter found for the specific name, fallback and check for application adapter\n adapter = _adapterCache.application || owner.lookup('adapter:application');\n if (adapter !== undefined) {\n _adapterCache[normalizedModelName] = adapter;\n _adapterCache.application = adapter;\n return adapter;\n }\n\n assert(\n `No adapter was found for '${modelName}' and no 'application' adapter was found as a fallback.`,\n _allowMissing\n );\n}\n\n/**\n Returns an instance of the serializer for a given type. For\n example, `serializerFor('person')` will return an instance of\n `App.PersonSerializer`.\n\n If no `App.PersonSerializer` is found, this method will look\n for an `App.ApplicationSerializer` (the default serializer for\n your entire application).\n\n If a serializer cannot be found on the adapter, it will fall back\n to an instance of `JSONSerializer`.\n\n @summary Legacy store method that returns the cached serializer for a model type, falling back to the\n `application` serializer, or `null` if neither exists.\n @public\n @param modelName the record to serialize\n */\nexport function serializerFor(this: Store, modelName: string): MinimumSerializerInterface | null {\n assert(\n `Attempted to call store.serializerFor(), but the store instance has already been destroyed.`,\n !(this.isDestroying || this.isDestroyed)\n );\n assert(`You need to pass a model name to the store's serializerFor method`, modelName);\n assert(\n `Passing classes to store.serializerFor has been removed. Please pass a dasherized string instead of ${modelName}`,\n typeof modelName === 'string'\n );\n upgradeStore(this);\n this._serializerCache =\n this._serializerCache || (Object.create(null) as Record<string, MinimumSerializerInterface & { store: Store }>);\n const normalizedModelName = _deprecatingNormalize(modelName);\n\n const { _serializerCache } = this;\n let serializer: (MinimumSerializerInterface & { store: Store }) | undefined = _serializerCache[normalizedModelName];\n if (serializer) {\n return serializer;\n }\n\n // by name\n const owner = getOwner(this)!;\n serializer = owner.lookup(`serializer:${normalizedModelName}`) as\n | (MinimumSerializerInterface & { store: Store })\n | undefined;\n if (serializer !== undefined) {\n _serializerCache[normalizedModelName] = serializer;\n return serializer;\n }\n\n // no serializer found for the specific model, fallback and check for application serializer\n serializer = _serializerCache.application || owner.lookup('serializer:application');\n if (serializer !== undefined) {\n _serializerCache[normalizedModelName] = serializer;\n _serializerCache.application = serializer;\n return serializer;\n }\n\n return null;\n}\n\n/**\n `normalize` converts a json payload into the normalized form expected by\n {@link Store.push | push} using the serializer specified by `modelName`\n\n :::warning\n Generally it would be better to invoke the serializer yourself directly,\n or write a more specialized normalization utility.\n :::\n\n Example\n\n ```js\n socket.on('message', function(message) {\n let modelName = message.model;\n let data = message.data;\n store.push(store.normalize(modelName, data));\n });\n ```\n\n @summary Legacy store method that converts a raw payload into the normalized document `store.push` expects, using\n the serializer for the given model type.\n @legacy\n @public\n @param modelName The name of the model type for this payload\n @return The normalized payload\n*/\n// TODO @runspired @deprecate users should call normalize on the associated serializer directly\nexport function normalize(this: Store, modelName: string, payload: ObjectValue): SingleResourceDocument {\n upgradeStore(this);\n assert(\n `Attempted to call store.normalize(), but the store instance has already been destroyed.`,\n !(this.isDestroying || this.isDestroyed)\n );\n assert(`You need to pass a model name to the store's normalize method`, modelName);\n assert(\n `Passing classes to store methods has been removed. Please pass a dasherized string instead of ${typeof modelName}`,\n typeof modelName === 'string'\n );\n const normalizedModelName = _deprecatingNormalize(modelName);\n const serializer = this.serializerFor(normalizedModelName);\n const schema = this.modelFor(normalizedModelName);\n assert(\n `You must define a normalize method in your serializer in order to call store.normalize`,\n typeof serializer?.normalize === 'function'\n );\n return serializer.normalize(schema, payload);\n}\n\n/**\n Push some raw data into the store.\n\n This method can be used both to push in brand new\n records, as well as to update existing records. You\n can push in more than one type of object at once.\n All objects should be in the format expected by the\n serializer.\n\n ```js [app/serializers/application.js]\n import RESTSerializer from '@warp-drive/legacy/serializer/rest';\n\n export default class ApplicationSerializer extends RESTSerializer;\n ```\n\n ```js\n let pushData = {\n posts: [\n { id: 1, postTitle: \"Great post\", commentIds: [2] }\n ],\n comments: [\n { id: 2, commentBody: \"Insightful comment\" }\n ]\n }\n\n store.pushPayload(pushData);\n ```\n\n By default, the data will be deserialized using a default\n serializer (the application serializer if it exists).\n\n Alternatively, `pushPayload` will accept a model type which\n will determine which serializer will process the payload.\n\n ```js [app/serializers/application.js]\n import RESTSerializer from '@warp-drive/legacy/serializer/rest';\n\n export default class ApplicationSerializer extends RESTSerializer;\n ```\n\n ```js [app/serializers/post.js]\n import JSONSerializer from '@warp-drive/legacy/serializer/json';\n\n export default JSONSerializer;\n ```\n\n ```js\n store.pushPayload(pushData); // Will use the application serializer\n store.pushPayload('post', pushData); // Will use the post serializer\n ```\n\n @summary Legacy store method that pushes a raw payload into the store after the application serializer, or the\n given model type's serializer, normalizes it.\n @public\n @param modelName Optionally, a model type used to determine which serializer will be used\n @param inputPayload\n */\n// TODO @runspired @deprecate pushPayload in favor of looking up the serializer\nexport function pushPayload(this: Store, modelName: string, inputPayload: ObjectValue): void {\n upgradeStore(this);\n assert(\n `Attempted to call store.pushPayload(), but the store instance has already been destroyed.`,\n !(this.isDestroying || this.isDestroyed)\n );\n\n const payload: ObjectValue = inputPayload || (modelName as unknown as ObjectValue);\n const normalizedModelName = inputPayload ? _deprecatingNormalize(modelName) : 'application';\n const serializer = this.serializerFor(normalizedModelName);\n\n assert(\n `You cannot use 'store.pushPayload(<type>, <payload>)' unless the serializer for '${normalizedModelName}' defines 'pushPayload'`,\n serializer && typeof serializer.pushPayload === 'function'\n );\n serializer.pushPayload(this, payload);\n}\n\n/**\n * Serializes a record using the store's legacy network layer, as with\n * {@link LegacyStoreCompat.serializeRecord | store.serializeRecord}.\n *\n * @summary Legacy store method that serializes a record into a payload using its model type's serializer.\n */\n// TODO @runspired @deprecate records should implement their own serialization if desired\nexport function serializeRecord(this: Store, record: unknown, options?: SerializerOptions): unknown {\n upgradeStore(this);\n // TODO we used to check if the record was destroyed here\n if (!this._fetchManager) {\n this._fetchManager = new FetchManager(this);\n }\n\n return this._fetchManager.createSnapshot(recordIdentifierFor(record)).serialize(options);\n}\n\n/**\n * Destroys any adapters/serializers the legacy network layer has created\n * for this store, invoked when the store itself is destroyed.\n *\n * @summary Legacy store teardown hook that destroys every adapter and serializer instance the store has cached.\n */\nexport function cleanup(this: Store): void {\n upgradeStore(this);\n // enqueue destruction of any adapters/serializers we have created\n for (const adapterName in this._adapterCache) {\n const adapter = this._adapterCache[adapterName];\n if (typeof adapter.destroy === 'function') {\n adapter.destroy();\n }\n }\n\n for (const serializerName in this._serializerCache) {\n const serializer = this._serializerCache[serializerName];\n if (typeof serializer.destroy === 'function') {\n serializer.destroy();\n }\n }\n}\n"],"ignoreList":[1],"mappings":";;;;;;;AAaA,SAAgBI,aACdC,SACAC,OACAC,YACAC,MACAC,cACAC,SACiC;CACjCV,6BAAaM,KAAK;CAgBlB,OAfgBM,QAAQC,QAAQ,CAAC,CAACC,WAAW;EAC3C,MAAMC,WAAWT,MAAMU,cAAcC,eAAeV,YAAYG,OAAO;EAEvE,MAAMS,cADU,CAACX,QAAQ,OAAOA,SAAS,WACXA,OAAOA,KAAKY;EAC1C,EAAAC,SAAA;GAAA,IAAA,CAAAA,MAAA,MAAA,IAAAC,MACE,yMAAyM;EAAA,EAAA,CACzMH,WAAW;EAEb,EAAAE,SAAA;GAAA,IAAA,CAAAA,MAAA,MAAA,IAAAC,MACE,iEAAiE;EAAA,EAAA,CACjE,OAAOjB,QAAQkB,gBAAgB,UAAU;EAE3C,OAAOlB,QAAQkB,YAAYjB,OAAOS,UAAUI,aAAaV,YAAY;CACvE,CAEOE,CAAO,CAACG,MAAMU,mBAAmB;EACtC,EAAAH,SAAA;GAAA,IAAA,CAAAA,MAAA,MAAA,IAAAC,MACE,0CAA0Cf,WAAWkB,KAAI,MACvDhB,aAAaiB,KAAI,8BACYC,KAAKC,UAAUpB,IAAI,EAAC,qDAAsD;EAAA,EAAA,CACzGN,kBAAkBsB,cAAc,CAAC;EAEnC,MAAMK,aAAavB,MAAMwB,SAASrB,aAAagB,IAAI;EAEnD,MAAMM,aAAazB,MAAM0B,cAAcvB,aAAagB,IAAI;EACxD,IAAIQ,UAAU9B,wBAAwB4B,YAAYzB,OAAOuB,YAAYL,gBAAgB,MAAM,aAAa;EAExG,EAAAH,SAAA;GAAA,IAAA,CAAAA,MAAA,MAAA,IAAAC,MACE,qCAAqCb,aAAaiB,KAAI,QAASnB,WAAWkB,KAAI,GAC5ElB,WAAW2B,GAAE,cACAP,KAAKC,UAClBpB,IACF,EAAC,0GAA2G;EAAA,EAAA,CAC5G,UAAUyB,WAAWE,MAAMC,QAAQH,QAAQI,IAAI,CAAC;EAGlDJ,UAAUK,6BAA6BhC,OAAO2B,SAAS1B,YAAgCE,YAAY;EACnG,OAAOH,MAAMiC,MAAMN,SAAS,IAAI;CAClC,GAAG,IAAI;AACT;AAEA,SAAgBO,eACdlC,OACAC,YACAC,MACAC,cACAC,SACsC;CACtCV,6BAAaM,KAAK;CAkBlB,OAjBgBM,QAAQC,QAAQ,CAAC,CAACC,WAAW;EAC3C,MAAMT,UAAUC,MAAMmC,WAAWlC,WAAWkB,IAAI;EAChD,EAAAJ,SAAA;GAAA,IAAA,CAAAA,MAAA,MAAA,IAAAC,MAAO,2EAA2Ef,WAAWkB,KAAI,EAAG;EAAA,EAAA,CAAEpB,OAAO;EAC7G,EAAAgB,SAAA;GAAA,IAAA,CAAAA,MAAA,MAAA,IAAAC,MACE,gJAAgJ;EAAA,EAAA,CAChJ,OAAOjB,QAAQqC,kBAAkB,UAAU;EAE7C,MAAM3B,WAAWT,MAAMU,cAAcC,eAAeV,YAAYG,OAAO;EAEvE,MAAMS,cADU,CAACX,QAAQ,OAAOA,SAAS,WACXA,OAAOA,KAAKY;EAC1C,EAAAC,SAAA;GAAA,IAAA,CAAAA,MAAA,MAAA,IAAAC,MACE,6MAA6M;EAAA,EAAA,CAC7MH,WAAW;EAEb,OAAOd,QAAQqC,cAAcpC,OAAOS,UAAUI,aAAaV,YAAY;CACzE,CAEOE,CAAO,CAACG,MAAMU,mBAAmB;EACtC,MAAMK,aAAavB,MAAMwB,SAASrB,aAAagB,IAAI;EACnD,MAAMM,aAAazB,MAAM0B,cAAcvB,aAAagB,IAAI;EACxD,IAAIQ,UAAU9B,wBAAwB4B,YAAYzB,OAAOuB,YAAYL,gBAAgB,MAAM,eAAe;EAE1G,EAAAH,SAAA;GAAA,IAAA,CAAAA,MAAA,MAAA,IAAAC,MACE,uCAAuCb,aAAaiB,KAAI,QAASnB,WAAWkB,KAAI,GAC9ElB,WAAW2B,GAAE,cACAP,KAAKC,UAClBpB,IACF,EAAC,4GAA6G;EAAA,EAAA,CAC9G,UAAUyB,YAAYA,QAAQI,SAAS,QAAS,OAAOJ,QAAQI,SAAS,YAAY,CAACF,MAAMC,QAAQH,QAAQI,IAAI,EAAG;EAGpH,IAAI,CAACJ,QAAQI,QAAQ,CAACJ,QAAQU,SAAS,CAACV,QAAQW,MAC9C,OAAO;EAGTX,UAAUK,6BAA6BhC,OAAO2B,SAAS1B,YAAgCE,YAAY;EAEnG,OAAOH,MAAMiC,MAAMN,SAAS,IAAI;CAClC,GAAG,IAAI;AACT;AAQA,SAASK,6BACPhC,OACA2B,SACAY,kBACApC,cACA;CAGA,MAAMqC,mBAAmBb,QAAQI,OAC7BpC,YAAYgC,QAAQI,OAAOA,MAAMU,UAAU;EACzC,MAAM,EAAEb,IAAIT,SAASY;EACrBW,gCAAgCX,MAAMQ,kBAAkBvC,OAAOG,cAAcsC,KAAK;EAClF,OAAO;GAAEb;GAAIT;EAAK;CACpB,CAAC,IACD;CAEJ,MAAMwB,kBAAkB,CAAC;CAEzB,IAAI,UAAUhB,SACZgB,gBAAgBL,OAAOX,QAAQW;CAEjC,IAAI,WAAWX,SACbgB,gBAAgBN,QAAQV,QAAQU;CAElC,IAAI,UAAUV,SACZgB,gBAAgBZ,OAAOS;CAKzB,MAAMI,gBAAgB;EACpBhB,IAAIW,iBAAiBX;EACrBT,MAAMoB,iBAAiBpB;EACvB0B,eAAe,GACZ1C,aAAaiB,OAAOuB,gBACvB;CACF;CAEA,IAAI,CAACd,MAAMC,QAAQH,QAAQmB,QAAQ,GACjCnB,QAAQmB,WAAW,CAAA;CAErBnB,QAAQmB,SAASC,KAAKH,aAAa;CAEnC,OAAOjB;AACT;AAKA,SAASe,gCACPf,SACAY,kBACAvC,OACAgD,oBACAP,OACA;CACA,MAAM,EAAEb,IAAIT,SAASQ;CAErB,IAAI,CAACA,QAAQkB,eACXlB,QAAQkB,gBAAgB,CAAC;CAE3B,MAAM,EAAEA,kBAAkBlB;CAE1B,MAAMsB,UAAUC,WAAWlD,OAAOuC,kBAAkBS,oBAAoB7B,IAAI;CAC5E,IAAI8B,SAAS;EACX,MAAM,EAAEE,YAAYC,SAASH;EAE7B,MAAMT,mBAAmBK,cAAcM,WAAW,EAAEpB;EAGlD,IACE,OAAOS,qBAAqB,eAC5B,CAACa,+BAA+Bb,kBAAkBD,gBAAgB,GAClE;GACA,MAAMe,UAAU,SAASA,QAAQC,OAAgB;IAC/C,OAAO,IAAIlC,KAAKC,UAAUiC,KAAK,EAAC;GAClC;GACA,MAAMC,aAAaF,QAAQnC,IAAI;GAC/B,MAAMsC,gBAAgBH,QAAQH,UAAU;GACxC,MAAMO,WAAWJ,QAAQ;IACvB1B,IAAIW,iBAAiBX;IACrBT,MAAMoB,iBAAiBpB;GACzB,CAAC;GACD,MAAMwC,gBAAgB,GAAGpB,iBAAiBpB,KAAI,GAAIoB,iBAAiBX;GACnE,MAAMgC,MAAMN,QAAQd,gBAAgB;GACpC,MAAMqB,SAAS,OAAOpB,UAAU,WAAW,QAAQA,MAAK,KAAM;GAC9D,MAAMqB,OAAO,GAAGD,OAAM,iBAAkBV,WAAU;GAClD,MAAMpB,OAAOF,MAAMC,QAAQU,gBAAgB,IAAIA,iBAAiB,KAAKA;GACrE,MAAMuB,QAAQhC,OAAO,IAAIA,KAAKZ,KAAI,GAAIY,KAAKH,GAAE,KAAM;GACnD,MAAMoC,sBAAsB,GAAGL,cAAa,GAAIX,mBAAmBI,KAAI,IAAKJ,mBAAmB5B,KAAI;GACnG,MAAM6C,iBAAiB,IAAI9C,KAAI,GAAIS,GAAE;GACrC,MAAMsC,UAAU;IACd,2DAA2DJ,KAAI,uBAAwBE,oBAAmB,cAAeN,SAAQ,WAAYE,IAAG;IAChJ,OAAOK,eAAc,oBAAqBJ,OAAM,4BAA6BE,MAAK,UAAWN,cAAa,8BAA+BE,cAAa,6DAA8DF,cAAa;IACjO,yCAAyCO,oBAAmB,kCAAmCR,WAAU,kCAAmCG,cAAa,uCAAwCpB,iBAAiBpB,KAAI;IACtN,+BAA+B8C,eAAc,YAAaR,cAAa,mBAAoBE,cAAa,WAAYK,oBAAmB,gBAAiBC,eAAc;IACtK,6HAA6HT,WAAU,wBAAyBG,cAAa,YAAaF,cAAa,gBAAiBA,cAAa;GAAkC,CACxQ,CAACU,KAAK,IAAI;GAEX,EAAApD,SAAA;IAAA,IAAA,CAAAA,MAAA,MAAA,IAAAC,MAAOkD,OAAO;GAAA,EAAA,CAAA,KAAA;EAChB;EAGF,IAAId,SAAS,aAAa,OAAOZ,qBAAqB,aAAa;GACjEK,cAAcM,cAAcN,cAAcM,eAAe,CAAC;GAC1DN,cAAcM,WAAW,CAACpB,OAAOqC,oBAAoB5B,oBAAoB,MAAMY,MAAMb,gBAAgB;EACvG;CACF;AACF;AAEA,SAAS8B,uBAAuBrE,OAAcC,YAA2CqE,KAAa;CACpG,MAAMC,aAAavE,MAAMwE,OAAOC,OAAOxE,UAAU,CAAC,CAACyE,IAAIJ,GAAG;CAC1D,IAAI,CAACC,YACH,OAAO;CAET,EAAAxD,SAAA;EAAA,IAAA,CAAAA,MAAA,MAAA,IAAAC,MACE,oDAAoD;CAAA,EAAA,CACpDuD,WAAWnB,SAAS,aAAamB,WAAWnB,SAAS,WAAW;CAElE,EAAArC,SAAA;EAAA,IAAA,CAAAA,MAAA,MAAA,IAAAC,MACE,0EAA0E;CAAA,EAAA,CAC1EuD,WAAWnE,SAAS6C,YAAY,QAC7B,OAAOsB,WAAWnE,SAAS6C,YAAY,YAAYsB,WAAWnE,QAAQ6C,QAAQ0B,SAAS,CAAE;CAE9F,OAAOJ,WAAWnE,QAAQ6C;AAC5B;AAEA,SAASC,WACPlD,OACAuC,kBACAS,oBACA7B,MACA;CACA,MAAM,EAAEC,MAAMwD,yBAAyB5B;CACvC,MAAM,EAAE7B,MAAM0D,eAAetC;CAC7B,MAAMY,aAAakB,uBAAuBrE,OAAO,EAAEmB,MAAM0D,WAAW,GAAGD,oBAAoB;CAE3F,IAAIzB,YAAY;EACd,MAAMoB,aAAavE,MAAMwE,OAAOC,OAAO,EAAEtD,KAAK,CAAC,CAAC,CAACuD,IAAIvB,UAAU;EAC/D,EAAApC,SAAA;GAAA,IAAA,CAAAA,MAAA,MAAA,IAAAC,MACE,oDAAoD;EAAA,EAAA,CACpDuD,eAAeA,WAAWnB,SAAS,aAAamB,WAAWnB,SAAS,YAAY;EAElF,OAAO;GACLD;GACAC,MAAMmB,WAAWnB;EACnB;CACF;AACF;AAEA,SAASC,+BAA+Bb,kBAAoCvC,YAAuC;CACjH,IAAIuC,qBAAqB,MACvB,OAAO;CAGT,IAAIX,MAAMC,QAAQU,gBAAgB,GAAG;EACnC,IAAIA,iBAAiBmC,WAAW,GAC9B,OAAO;EAET,KAAK,IAAIG,IAAI,GAAGA,IAAItC,iBAAiBmC,QAAQG,KAAK;GAChD,MAAMC,QAAQvC,iBAAiBsC;GAC/B,IAAIE,0BAA0BD,OAAO9E,UAAU,GAC7C,OAAO;EAEX;CACF,OACE,OAAO+E,0BAA0BxC,kBAAkBvC,UAAU;CAG/D,OAAO;AACT;AAEA,SAASmE,oBACP5B,kBACAyC,kBACA,EAAErD,IAAIT,QACN;CACA,MAAM+D,yBAAyB;EAC7BtD;EACAT;CACF;CAEA,IAAIQ;CAEJ,IAAIsD,qBAAqB,WAAW;EAClC,MAAME,UAAW3C,oBAAuD,CAAA;EACxE,IAAIA,kBAAkB;GACpB,EAAAzB,SAAA;IAAA,IAAA,CAAAA,MAAA,MAAA,IAAAC,MAAO,+CAA+C;GAAA,EAAA,CAAEa,MAAMC,QAAQU,gBAAgB,CAAC;GAOvF,IAAI,CAHUA,iBAAiB6C,MAAMC,MAAM;IACzC,OAAOA,EAAEnE,SAAS+D,uBAAuB/D,QAAQmE,EAAE1D,OAAOsD,uBAAuBtD;GACnF,CACKwD,GACHD,QAAQpC,KAAKmC,sBAAsB;EAEvC,OACEC,QAAQpC,KAAKmC,sBAAsB;EAErCvD,UAAUwD;CACZ,OAAO;EACL,MAAMA,UAAW3C,oBAAqD,CAAC;EACvE+C,OAAOC,OAAOL,SAASD,sBAAsB;EAC7CvD,UAAUwD;CACZ;CAEA,OAAOxD;AACT;AAEA,SAASqD,0BAA0B,EAAEpD,MAAwB,EAAEA,IAAI6D,iBAA4C;CAC7G,OAAO,CAAC,CAAC7D,MAAMA,GAAG8D,SAAS,MAAMD;AACnC;;;ACzSA,SAAgBS,OAAOC,aAAa;CAClC,OAAOC,cAAcC,SAASF;AAChC;AAEA,SAAgBG,kBAAkB;CAChC,OAAOF,cAAcG;AACvB;AAwBA,MAAMH,gBAAgBS,WAAWC,yCAAyC,CAAC;AAE3EV,cAAcC,aAAa,CAAC;AAC5BD,cAAcG,WAAW,CAAC;AAK1B,MAAMQ,cAAcC,8BAA8B;AAElDC,OAAOC,OAAOd,cAAcC,UAAUU,YAAYV,QAAQ;AAC1DY,OAAOC,OAAOd,cAAcG,QAAQQ,YAAYR,MAAM;AAGtD,SAASS,gCAAgC;CAAA,OA7EvC;EAAC,YAAW,CAAC;EAAE,UAAS;GAAC,qBAAoB,EAAC,aAAY,MAAK;GAAE,aAAY;IAAC,SAAQ;KAAC,oCAAmC;KAAM,aAAY;KAAM,oBAAmB;KAAM,aAAY;KAAM,mBAAkB;KAAM,sBAAqB;KAAM,qBAAoB;KAAM,iBAAgB;KAAM,qBAAoB;KAAM,kBAAiB;KAAM,gBAAe;KAAM,gCAA+B;KAAM,gBAAe;KAAM,sBAAqB;KAAM,wCAAuC;IAAK;IAAE,gBAAe;IAAM,sBAAqB;IAAK,cAAa;IAAK,gBAAe;KAAC,uBAAsB;KAAK,6BAA4B;KAAK,6BAA4B;KAAK,4BAA2B;KAAK,mCAAkC;KAAK,2BAA0B;KAAK,8BAA6B;KAAK,iCAAgC;KAAK,6DAA4D;KAAK,wCAAuC;KAAK,8BAA6B;KAAK,2BAA0B;KAAK,iCAAgC;KAAK,gCAA+B;IAAI;IAAE,YAAW;KAAC,wCAAuC;KAAM,oCAAmC;KAAM,uBAAsB;IAAI;IAAE,iBAAgB;KAAC,oCAAmC;KAAK,aAAY;KAAK,oBAAmB;KAAK,aAAY;KAAK,mBAAkB;KAAK,sBAAqB;KAAK,qBAAoB;KAAK,iBAAgB;KAAK,qBAAoB;KAAK,kBAAiB;KAAK,gBAAe;KAAK,gCAA+B;KAAK,gBAAe;KAAK,sBAAqB;KAAK,wCAAuC;IAAI;IAAE,OAAM;KAAC,WAAU;KAAK,cAAa;KAAM,SAAQ;KAAK,gBAAe;KAAM,SAAQ;KAAK,iBAAgB;IAAK;GAAC;EAAC;CAAC;AA+EhsD;AAEA,SAASG,iBAAiB;CACxB,OAAO;EACLjB;EACAI;EACAc,UAAUjB,aAAakB,OAAO;GAC5BjB,cAAcC,SAASF,eAAekB;EACxC;EACAC,gBAAgBC,KAAKF,OAAO;GAC1BjB,cAAcG,OAAOgB,OAAOF;EAC9B;CACF;AACF;AAcA,IAAIG,WAAW,OAAOC,WAAW,cAAcA,OAAOC,mCAAmCC;AACzF,IAAIH,UAAU;CACZ,IAAII,UAAUT,eAAe;CAC7B,KAAK,IAAIU,WAAWL,UAClBK,QAAQD,OAAO;AAEnB;;;AC3EA,MAAMe,4CAA4B,IAAIC,IAAI;CACxC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AAAc,CACf;;;;;;;;;;;AAYD,MAAaC,uBAAgC,EAC3CC,QAAWC,SAA8BC,MAAiE;CAExG,IAAID,QAAQD,QAAQG,OAAO,CAACF,QAAQD,QAAQI,MAAM,CAACP,0BAA0BQ,IAAIJ,QAAQD,QAAQI,EAAE,GACjG,OAAOF,KAAKD,QAAQD,OAAO;CAG7B,MAAM,EAAEM,UAAUL,QAAQD;CAC1Bd,6BAAaoB,KAAK;CAClB,IAAI,CAACA,MAAMC,eACTD,MAAMC,gBAAgB,IAAIpB,aAAamB,KAAK;CAG9C,QAAQL,QAAQD,QAAQI,IAAxB;EACE,KAAK,cACH,OAAOI,WAAWP,OAAO;EAC3B,KAAK,WACH,OAAOQ,QAAQR,OAAO;EACxB,KAAK,SACH,OAAOS,MAAMT,OAAO;EACtB,KAAK,eACH,OAAOU,YAAYV,OAAO;EAC5B,KAAK,iBACH,OAAOW,cAAcX,OAAO;EAC9B,KAAK,eACH,OAAOY,YAAYZ,OAAO;EAC5B,KAAK,gBACH,OAAOa,WAAWb,OAAO;EAC3B,KAAK,gBACH,OAAOa,WAAWb,OAAO;EAC3B,KAAK,gBACH,OAAOa,WAAWb,OAAO;EAC3B,SACE,OAAOC,KAAKD,QAAQD,OAAO;CAC/B;AACF,EACF;AAEA,SAASY,cAAiBX,SAA0C;CAClE,MAAM,EAAEK,OAAOS,MAAMC,SAASC,gBAAgBhB,QAAQD;CACtD,MAAM,EAAEkB,SAASC,QAAQC,OAAOC,SAASC,UAAUP;CAOnD,MAAMQ,aAAaN,cAAc;CACjC/B,6BAAaoB,KAAK;CAGlB,MAAMkB,iBAAiBD,cAAcjB,MAAMC,cAAckB,gBAAgBF,YAAoCL,OAAO;CACpH,IAAIM,gBACF,OAAOA;CAGT,IAAIH,SAAS;EACX,EAAAK,SAAA;GAAA,IAAA,CAAAA,MAAA,MAAA,IAAAC,MAAO,mEAAmEC,OAAOR,KAAK,GAAG;EAAA,EAAA,CAAEA,SAASA,MAAMS,OAAO;EACjH,OAAOvC,eAAegB,OAAOa,QAAQC,MAAMS,SAASP,OAAOJ,OAAO;CACpE;CAEA,EAAAQ,SAAA;EAAA,IAAA,CAAAA,MAAA,MAAA,IAAAC,MAAO,wBAAwB;CAAA,EAAA,CAAEG,MAAMC,QAAQd,WAAW,KAAKA,YAAYe,WAAW,CAAC;CAEvF,MAAMC,UAAU3B,MAAMC;CACtBlB,sBAAsBkC,UAAU;CAEhC,OAAOL,QAAQgB,SACVD,QAAQE,cAAcZ,YAAYL,SAASjB,QAAQD,OAAO,IAC1DiC,QAAQG,+BAA+Bb,YAAYL,SAASjB,QAAQD,OAAO;AAClF;AAEA,SAASa,YAAeZ,SAA0C;CAChE,MAAM,EAAEK,OAAOS,MAAMC,SAASC,gBAAgBhB,QAAQD;CACtD,MAAM,EAAEkB,SAASC,QAAQC,OAAOC,SAASC,UAAUP;CAOnD7B,6BAAaoB,KAAK;CAGlB,IAAIe,SAAS;EACX,MAAMgB,UAAU/B,MAAMgC,WAAWnB,OAAOoB,IAAI;EAY5C,EAAAb,SAAA;GAAA,IAAA,CAAAA,MAAA,MAAA,IAAAC,MAAO,yEAAyER,OAAOoB,KAAI,EAAG;EAAA,EAAA,CAAEF,OAAO;EACvG,EAAAX,SAAA;GAAA,IAAA,CAAAA,MAAA,MAAA,IAAAC,MACE,4IAA4I;EAAA,EAAA,CAC5I,OAAOU,QAAQxB,gBAAgB,UAAU;EAE3C,EAAAa,SAAA;GAAA,IAAA,CAAAA,MAAA,MAAA,IAAAC,MAAO,iEAAiEC,OAAOR,KAAK,GAAG;EAAA,EAAA,CAAEA,SAASA,MAAMS,OAAO;EAE/G,OAAOtC,aAAa8C,SAAS/B,OAAOa,QAAQC,MAAMS,SAASP,OAAOJ,OAAO;CAC3E;CAGA,EAAAQ,SAAA;EAAA,IAAA,CAAAA,MAAA,MAAA,IAAAC,MAAO,2CAA2C;CAAA,EAAA,CAAEG,MAAMC,QAAQd,WAAW,CAAC;CAC9E,MAAMuB,UAAU,IAAIV,MAAuCb,YAAYe,MAAM;CAC7E,MAAMC,UAAU3B,MAAMC;CAEtB,KAAK,IAAIkC,IAAI,GAAGA,IAAIxB,YAAYe,QAAQS,KAAK;EAC3C,MAAMlB,aAAaN,YAAYwB;EAE/BpD,sBAAsBkC,UAAU;EAChCiB,QAAQC,KAAKvB,QAAQgB,SACjBD,QAAQE,cAAcZ,YAAYL,SAASjB,QAAQD,OAAO,IAC1DiC,QAAQG,+BAA+Bb,YAAYL,SAASjB,QAAQD,OAAO;CACjF;CAEA,OAAO0C,QAAQC,IAAIH,OAAO;AAC5B;AAEA,SAAS1B,WAAcb,SAA0C;CAC/D,MAAM,EAAEK,OAAOS,MAAMX,IAAIwC,cAAc3C,QAAQD;CAC/C,MAAM,EAAEkB,SAASC,QAAQI,eAAeR;CAExC7B,6BAAaoB,KAAK;CAClBrB,mBAAmBqB,KAAK;CAExBA,MAAMuC,MAAMC,WAAWvB,YAAYtB,OAAO;CAE1C,MAAM8C,cAAcC,OAAOC,OACzB,GAAG7D,SAASwD,UAA8D,GAC1E1B,OACF;CAGA,OAF4BZ,MAAMC,cAAc4C,aAAa5B,YAAYwB,WAElEG,CAAmB,CACvBE,MAAMC,YAAY;EACjB,IAAIC;EACJhD,MAAMiD,YAAY;GAEhBD,SAAShD,MAAMuC,MAAMW,UAAUjC,YAAY;IAAEvB,SAASC,QAAQD;IAASyD,SAASJ;GAAQ,CAAC;EAC3F,CAAC;EAKD,IAAI/C,MAAMoD,WAAWC,cAAcf,cAAc,gBAC/CtC,MAAMoD,UAAUC,WAAW1D,QAAQD,SAAS,EAAE4D,QAAQ,IAAI,GAAe,MAAMtD,KAAK;EAEtF,OAAOA,MAAMuD,WAAWP,OAAQvC,IAAK;CACvC,CAAC,CAAC,CACD+C,OAAOC,MAAe;EACrB,IAAIC,MAAMD;EACV,IAAI,CAACA,GACHC,sBAAM,IAAIrC,MAAM,uCAAuC;OAClD,IAAI,OAAOoC,MAAM,UACtBC,MAAM,IAAIrC,MAAMoC,CAAC;EAEnBE,qBAAqB3D,OAAOiB,YAAYyC,GAAY;EACpD,MAAMA;CACR,CAAC;AACL;AAEA,SAASC,qBACP3D,OACAiB,YACA2C,OACA;CACAhF,6BAAaoB,KAAK;CAClB,IAAI4D,SAASA,MAAMC,mBAAmB,QAAQD,MAAME,SAAS,gBAAgB;EAC3E,MAAMC,aAAa/D,MAAMgE,cAAc/C,WAAWgB,IAAI;EAItD,IAAI8B,cAAc,OAAOA,WAAWE,kBAAkB,YAOpDL,MAAMS,SAASC,kBANIP,WAAWE,cAC5BjE,OACAA,MAAMmE,SAASlD,WAAWgB,IAAI,GAC9B2B,OACA3C,WAAWmD,EAEoBF,CAAU;CAE/C;CACA,MAAM3B,QAAQvC,MAAMuC;CAEpB,IAAIqB,MAAMS,QAAQ;EAChB,EAAAjD,SAAA;GAAA,IAAA,CAAAA,MAAA,MAAA,IAAAC,MACE,yCAAyCC,OACvCL,UACF,EAAC,+DAAgE;EAAA,EAAA,CACjE,OAAOsB,MAAMgC,cAAc,UAAU;EAGvC,IAAIC,gBAA4BZ,MAAMS;EACtC,IAAIG,cAAc9C,WAAW,GAC3B8C,gBAAgB,CAAC;GAAEC,OAAO;GAAiBC,QAAQ;GAAIC,QAAQ,EAAEC,SAAS,QAAQ;EAAE,CAAC;EAEvFrC,MAAMsC,kBAAkB5D,YAAYuD,aAAa;CACnD,OACEjC,MAAMsC,kBAAkB5D,UAAU;AAEtC;AAEA,SAAS6D,UAAaC,OAAqB;CACzC,OAAOvD,MAAMC,QAAQsD,KAAK,IAAIA,QAAQ,CAACA,KAAK;AAC9C;AAEA,MAAMC,wBAAwB;AAC9B,SAASV,kBAAkBD,QAAuD;CAChF,MAAMY,MAAkB,CAAA;CAExB,IAAIZ,QACF3B,OAAOwC,KAAKb,MAAM,CAAC,CAACc,SAASC,QAAQ;EACnC,MAAMC,WAAWP,UAAUT,OAAOe,IAAI;EACtC,KAAK,IAAIjD,IAAI,GAAGA,IAAIkD,SAAS3D,QAAQS,KAAK;GACxC,IAAIsC,QAAQ;GACZ,IAAIG,UAAU,oBAAoBQ;GAClC,IAAIA,QAAQJ,uBAAuB;IACjCP,QAAQ;IACRG,UAAU;GACZ;GACAK,IAAIK,KAAK;IACAb;IACPC,QAAQW,SAASlD;IACjBwC,QAAQ,EACGC,QACX;GACF,CAAC;EACH;CACF,CAAC;CAGH,OAAOK;AACT;AAEA,SAAS/E,WAAcP,SAA0C;CAC/D,MAAM,EAAEK,OAAOS,SAASd,QAAQD;CAChC,MAAM,EAAEmB,QAAQI,YAAYL,YAAYH;CAIxC7B,6BAAaoB,KAAK;CAClBrB,mBAAmBqB,KAAK;CACxB,IAAIuF;CAGJ,IAAI,CAACvF,MAAMwF,eAAeC,eAAexE,UAAU,GACjDsE,UAAUvF,MAAMC,cAAc6B,+BAA+Bb,YAAYL,SAASjB,QAAQD,OAAO;MAG5F,IAAIkB,QAAQgB,QAAQ;EACzB7C,sBAAsBkC,UAAU;EAEhCsE,UAAUvF,MAAMC,cAAc4B,cAAcZ,YAAYL,SAASjB,QAAQD,OAAO;CAClF,OAAO;EACL,IAAIgG,WAA4B;EAChC,MAAM3D,UAAU/B,MAAMgC,WAAWf,WAAWgB,IAAI;EAGhD,IACE,OAAOrB,QAAQgB,WAAW,eAC1BG,QAAQ4D,sBACR5D,QAAQ4D,mBAAmB3F,OAAQ0F,WAAW1F,MAAMC,cAAc2F,eAAe3E,YAAYL,OAAO,CAAE,GACtG;GACA7B,sBAAsBkC,UAAU;GAE9BsE,UAAUvF,MAAMC,cAAc4B,cAC5BZ,YACAyB,OAAOC,OAAO,CAAC,GAAG/B,SAAS,EAAEgB,QAAQ,KAAK,CAAC,GAC3CjC,QAAQD,OACV;EAKJ,OAAO;GAEL,IACEkB,QAAQiF,qBAAqB,UAC5BjF,QAAQiF,oBACP,CAAC9D,QAAQ+D,gCACT/D,QAAQ+D,6BACN9F,OACA0F,YAAY1F,MAAMC,cAAc2F,eAAe3E,YAAYL,OAAO,CACpE,IACF;IACA7B,sBAAsBkC,UAAU;IAG9B,AAAKjB,MAAMC,cAAc4B,cACvBZ,YACAyB,OAAOC,OAAO,CAAC,GAAG/B,SAAS,EAAEiF,kBAAkB,KAAK,CAAC,GACrDlG,QAAQD,OACV;GAKJ;GAGA6F,UAAUnD,QAAQ2D,QAAQ9E,UAAU;EACtC;CACF;CAEA,OAAOsE,QAAQzC,MAAMX,MAAmBnC,MAAMuD,WAAWpB,CAAC,CAAC;AAC7D;AAEA,SAAShC,QAAWR,SAA0C;CAC5D,MAAM,EAAEK,OAAOS,SAASd,QAAQD;CAChC,MAAM,EAAEuC,MAAMrB,YAAYH;CAI1B7B,6BAAaoB,KAAK;CAClBrB,mBAAmBqB,KAAK;CACxB,MAAM+B,UAAU/B,MAAMgC,WAAWC,IAAI;CAErC,EAAAb,SAAA;EAAA,IAAA,CAAAA,MAAA,MAAA,IAAAC,MAAO,8DAA8DY,KAAI,EAAG;CAAA,EAAA,CAAEF,OAAO;CACrF,EAAAX,SAAA;EAAA,IAAA,CAAAA,MAAA,MAAA,IAAAC,MACE,6EAA6E;CAAA,EAAA,CAC7E,OAAOU,QAAQ5B,YAAY,UAAU;CAIvC,MAAM6F,mBAAmBhG,MAAMiG,mBAAmBC,MAAMC,IAAIlE,IAAI;CAChE,MAAMmE,gBAAgB,IAAIhH,oBAAoBY,OAAOiC,MAAMrB,OAAO;CAElE,MAAMyF,eACJzF,QAAQgB,UACPhB,QAAQgB,WAAW,UAChBG,QAAQuE,mBAAmBvE,QAAQuE,gBAAgBtG,OAAOoG,aAAa,KACtE,CAACrE,QAAQuE,mBAAmBF,cAAc1E,WAAW;CAE5D,IAAI6E;CACJ,IAAIF,cAAc;EAEhBL,qBAAqBA,iBAAiBQ,aAAa;EACnDD,QAAQE,SAAS1E,SAAS/B,OAAOiC,MAAMmE,eAAezG,QAAQD,SAAS,IAAI;CAC7E,OAAO;EACL6G,QAAQnE,QAAQ2D,QAAQ/F,MAAM0G,QAAQzE,IAAI,CAAC;EAE3C,IACErB,QAAQiF,oBACPjF,QAAQiF,qBAAqB,UAC3B,CAAC9D,QAAQ4E,6BAA6B5E,QAAQ4E,0BAA0B3G,OAAOoG,aAAa,IAC/F;GAEAJ,qBAAqBA,iBAAiBQ,aAAa;GACnD,AAAKC,SAAS1E,SAAS/B,OAAOiC,MAAMmE,eAAezG,QAAQD,SAAS,KAAK;EAC3E;CACF;CAEA,OAAO6G;AACT;AAEA,SAASE,SACP1E,SACA/B,OACAiC,MACAmE,eACA1G,SACAkH,cACY;CACZ,MAAMC,SAAS7G,MAAMmE,SAASlC,IAAI;CAClC,IAAIsD,UAAsBnD,QAAQ2D,QAAQ,CAAC,CAACjD,WAC1Cf,QAAQ5B,QAAQH,OAAO6G,QAAQ,MAAMT,aAAa,CACpD;CAEAb,UAAUA,QAAQzC,MAAMgE,mBAAsB;EAC5C,EAAA1F,SAAA;GAAA,IAAA,CAAAA,MAAA,MAAA,IAAAC,MACE,qCAAqCY,KAAI,4DAA6D;EAAA,EAAA,CACtG/C,kBAAkB4H,cAAc,CAAC;EAEnClI,6BAAaoB,KAAK;EAClB,MAAM+D,aAAa/D,MAAMgE,cAAc/B,IAAI;EAC3C,MAAMc,UAAU5D,wBAAwB4E,YAAY/D,OAAO6G,QAAQC,gBAAgB,MAAM,SAAS;EAElG9G,MAAM+G,MAAMhE,SAAS6D,YAAY;EACjCR,cAAcY,aAAaR,aAAa;EAAM,IAAAlH,gBAAA,CAAA,CAAA2H,UAAAC,MAAAC,gBAAAC,WAAAC,0BAAA,CAAA,CAAAH,MAAAC,cAI5CG,QAAQC,IAAI,oBAAoBtF,KAAI,6BAA8B;EAEpE,OAAOmE,cAAcY;CACvB,CAAC;CAGC,IAAI,CAACtH,QAAQ8H,mBACXjC,UAAU7G,QAAQ6G,OAAO;CAI7B,OAAOA;AACT;AAEA,SAASnF,MAAST,SAA0C;CAC1D,MAAM,EAAEK,OAAOS,SAASd,QAAQD;CAChCd,6BAAaoB,KAAK;CAClBrB,mBAAmBqB,KAAK;CACxB,IAAI,EAAEY,YAAYH;CAIlB,MAAM,EAAEwB,MAAM7B,UAAUK;CAKxB,MAAMsB,UAAU/B,MAAMgC,WAAWC,IAAI;CAErC,EAAAb,SAAA;EAAA,IAAA,CAAAA,MAAA,MAAA,IAAAC,MAAO,0DAA0DY,KAAI,EAAG;CAAA,EAAA,CAAEF,OAAO;CACjF,EAAAX,SAAA;EAAA,IAAA,CAAAA,MAAA,MAAA,IAAAC,MAAO,uEAAuE;CAAA,EAAA,CAAE,OAAOU,QAAQ3B,UAAU,UAAU;CAEnH,MAAMqH,cACJ7G,QAAQoG,gBACRhH,MAAMiG,mBAAmByB,cAAc;EACrCzF;EACA7B;CACF,CAAC;CAGDQ,UAAU8B,OAAOC,OAAO,CAAC,GAAG/B,OAAO;CACnC,OAAOA,QAAQoG;CAIjB,MAAMH,SAAS7G,MAAMmE,SAASlC,IAAI;CAGlC,OAFgBG,QAAQ2D,QAAQ,CAAC,CAACjD,WAAWf,QAAQ3B,MAAMJ,OAAO6G,QAAQzG,OAAOqH,aAAa7G,OAAO,CAE9F2E,CAAO,CAACzC,MAAMgE,mBAAmB;EACtC,MAAM/C,aAAa/D,MAAMgE,cAAc/B,IAAI;EAC3C,MAAMc,UAAU5D,wBAAwB4E,YAAY/D,OAAO6G,QAAQC,gBAAgB,MAAM,OAAO;EAChG,MAAMnG,cAAcX,MAAM+G,MAAMhE,SAAS,IAAI;EAE7C,EAAA3B,SAAA;GAAA,IAAA,CAAAA,MAAA,MAAA,IAAAC,MACE,mLAAmL;EAAA,EAAA,CACnLG,MAAMC,QAAQd,WAAW,CAAC;EAG5BX,MAAMiG,mBAAmB0B,qBAAqBF,aAAa9G,aAAaoC,OAAqC;EAE7G,OAAO0E;CACT,CAAC;AACH;AAEA,SAASG,6BAA6B7E,SAAqE;CACzG,EAAA3B,SAAA;EAAA,IAAA,CAAAA,MAAA,MAAA,IAAAC,MACE,8IAA8I;CAAA,EAAA,CAC9I,CAACG,MAAMC,QAAQsB,QAAQtC,IAAI,CAAC;AAEhC;AAEA,SAASJ,YAAeV,SAA0C;CAChE,MAAM,EAAEK,OAAOS,SAASd,QAAQD;CAEhC,MAAM,EAAEuC,MAAM7B,OAAOQ,YAAYH;CACjC7B,6BAAaoB,KAAK;CAClB,MAAM+B,UAAU/B,MAAMgC,WAAWC,IAAI;CAErC,EAAAb,SAAA;EAAA,IAAA,CAAAA,MAAA,MAAA,IAAAC,MAAO,0DAA0DY,KAAI,EAAG;CAAA,EAAA,CAAEF,OAAO;CACjF,EAAAX,SAAA;EAAA,IAAA,CAAAA,MAAA,MAAA,IAAAC,MACE,6EAA6E;CAAA,EAAA,CAC7E,OAAOU,QAAQ1B,gBAAgB,UAAU;CAG3C,MAAMwG,SAAS7G,MAAMmE,SAASlC,IAAI;CAGlC,OAFgBG,QAAQ2D,QAAQ,CAAC,CAACjD,WAAWf,QAAQ1B,YAAYL,OAAO6G,QAAQzG,OAAOQ,OAAO,CAEvF2E,CAAO,CAACzC,MAAMgE,mBAAsB;EACzC,MAAM/C,aAAa/D,MAAMgE,cAAc/B,IAAI;EAC3C,MAAMc,UAAU5D,wBACd4E,YACA/D,OACA6G,QACAC,gBACA,MACA,aACF;EAEAc,6BAA6B7E,OAAO;EAEpC,MAAM9B,aAAajB,MAAM+G,MAAMhE,SAAS,IAAI;EAC5C,OAAO9B,aAAajB,MAAMuD,WAAWtC,UAAU,IAAI;CACrD,CAAC;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnZA,SAAgBmH,WAAwBC,WAAmBC,eAA2D;CACpH,EAAAC,SAAA;EAAA,IAAA,CAAAA,MAAA,MAAA,IAAAC,MACE,0FAA0F;CAAA,EAAA,CAC1F,EAAE,KAAKC,gBAAgB,KAAKC,YAAY;CAE1C,EAAAH,SAAA;EAAA,IAAA,CAAAA,MAAA,MAAA,IAAAC,MAAO,gEAAgE;CAAA,EAAA,CAAEH,SAAS;CAClF,EAAAE,SAAA;EAAA,IAAA,CAAAA,MAAA,MAAA,IAAAC,MACE,oGAAoGH,WAAW;CAAA,EAAA,CAC/G,OAAOA,cAAc,QAAQ;CAE/BH,6BAAa,IAAI;CACjB,KAAKS,gBACH,KAAKA,iBAAkBC,OAAOC,OAAO,IAAI;CAE3C,MAAMC,sBAAsBd,sBAAsBK,SAAS;CAE3D,MAAM,EAAEM,kBAAkB;CAC1B,IAAII,UAAoEJ,cAAcG;CACtF,IAAIC,SACF,OAAOA;CAGT,MAAMC,QAAQlB,SAAS,IAAI;CAG3BiB,UAAUC,MAAMC,OAAO,WAAWH,qBAAqB;CACvD,IAAIC,YAAYG,QAAW;EACzBP,cAAcG,uBAAuBC;EACrC,OAAOA;CACT;CAGAA,UAAUJ,cAAcQ,eAAeH,MAAMC,OAAO,qBAAqB;CACzE,IAAIF,YAAYG,QAAW;EACzBP,cAAcG,uBAAuBC;EACrCJ,cAAcQ,cAAcJ;EAC5B,OAAOA;CACT;CAEA,EAAAR,SAAA;EAAA,IAAA,CAAAA,MAAA,MAAA,IAAAC,MACE,6BAA6BH,UAAS,wDAAyD;CAAA,EAAA,CAC/FC,aAAa;AAEjB;;;;;;;;;;;;;;;;;;AAmBA,SAAgBc,cAA2Bf,WAAsD;CAC/F,EAAAE,SAAA;EAAA,IAAA,CAAAA,MAAA,MAAA,IAAAC,MACE,6FAA6F;CAAA,EAAA,CAC7F,EAAE,KAAKC,gBAAgB,KAAKC,YAAY;CAE1C,EAAAH,SAAA;EAAA,IAAA,CAAAA,MAAA,MAAA,IAAAC,MAAO,mEAAmE;CAAA,EAAA,CAAEH,SAAS;CACrF,EAAAE,SAAA;EAAA,IAAA,CAAAA,MAAA,MAAA,IAAAC,MACE,uGAAuGH,WAAW;CAAA,EAAA,CAClH,OAAOA,cAAc,QAAQ;CAE/BH,6BAAa,IAAI;CACjB,KAAKmB,mBACH,KAAKA,oBAAqBT,OAAOC,OAAO,IAAI;CAC9C,MAAMC,sBAAsBd,sBAAsBK,SAAS;CAE3D,MAAM,EAAEgB,qBAAqB;CAC7B,IAAIC,aAA0ED,iBAAiBP;CAC/F,IAAIQ,YACF,OAAOA;CAIT,MAAMN,QAAQlB,SAAS,IAAI;CAC3BwB,aAAaN,MAAMC,OAAO,cAAcH,qBAAqB;CAG7D,IAAIQ,eAAeJ,QAAW;EAC5BG,iBAAiBP,uBAAuBQ;EACxC,OAAOA;CACT;CAGAA,aAAaD,iBAAiBF,eAAeH,MAAMC,OAAO,wBAAwB;CAClF,IAAIK,eAAeJ,QAAW;EAC5BG,iBAAiBP,uBAAuBQ;EACxCD,iBAAiBF,cAAcG;EAC/B,OAAOA;CACT;CAEA,OAAO;AACT;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BA,SAAgBC,UAAuBlB,WAAmBmB,SAA8C;CACtGtB,6BAAa,IAAI;CACjB,EAAAK,SAAA;EAAA,IAAA,CAAAA,MAAA,MAAA,IAAAC,MACE,yFAAyF;CAAA,EAAA,CACzF,EAAE,KAAKC,gBAAgB,KAAKC,YAAY;CAE1C,EAAAH,SAAA;EAAA,IAAA,CAAAA,MAAA,MAAA,IAAAC,MAAO,+DAA+D;CAAA,EAAA,CAAEH,SAAS;CACjF,EAAAE,SAAA;EAAA,IAAA,CAAAA,MAAA,MAAA,IAAAC,MACE,iGAAiG,OAAOH,WAAW;CAAA,EAAA,CACnH,OAAOA,cAAc,QAAQ;CAE/B,MAAMS,sBAAsBd,sBAAsBK,SAAS;CAC3D,MAAMiB,aAAa,KAAKF,cAAcN,mBAAmB;CACzD,MAAMW,SAAS,KAAKC,SAASZ,mBAAmB;CAChD,EAAAP,SAAA;EAAA,IAAA,CAAAA,MAAA,MAAA,IAAAC,MACE,wFAAwF;CAAA,EAAA,CACxF,OAAOc,YAAYC,cAAc,UAAU;CAE7C,OAAOD,WAAWC,UAAUE,QAAQD,OAAO;AAC7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4DA,SAAgBG,YAAyBtB,WAAmBuB,cAAiC;CAC3F1B,6BAAa,IAAI;CACjB,EAAAK,SAAA;EAAA,IAAA,CAAAA,MAAA,MAAA,IAAAC,MACE,2FAA2F;CAAA,EAAA,CAC3F,EAAE,KAAKC,gBAAgB,KAAKC,YAAY;CAG1C,MAAMc,UAAuBI,gBAAiBvB;CAC9C,MAAMS,sBAAsBc,eAAe5B,sBAAsBK,SAAS,IAAI;CAC9E,MAAMiB,aAAa,KAAKF,cAAcN,mBAAmB;CAEzD,EAAAP,SAAA;EAAA,IAAA,CAAAA,MAAA,MAAA,IAAAC,MACE,oFAAoFM,oBAAmB,wBAAyB;CAAA,EAAA,CAChIQ,cAAc,OAAOA,WAAWK,gBAAgB,UAAU;CAE5DL,WAAWK,YAAY,MAAMH,OAAO;AACtC;;;;;;;AASA,SAAgBK,gBAA6BC,QAAiBC,SAAsC;CAClG7B,6BAAa,IAAI;CAEjB,IAAI,CAAC,KAAK8B,eACR,KAAKA,gBAAgB,IAAI/B,aAAa,IAAI;CAG5C,OAAO,KAAK+B,cAAcC,eAAelC,oBAAoB+B,MAAM,CAAC,CAAC,CAACI,UAAUH,OAAO;AACzF;;;;;;;AAQA,SAAgBI,UAA2B;CACzCjC,6BAAa,IAAI;CAEjB,KAAK,MAAMkC,eAAe,KAAKzB,eAAe;EAC5C,MAAMI,UAAU,KAAKJ,cAAcyB;EACnC,IAAI,OAAOrB,QAAQsB,YAAY,YAC7BtB,QAAQsB,QAAQ;CAEpB;CAEA,KAAK,MAAMC,kBAAkB,KAAKjB,kBAAkB;EAClD,MAAMC,aAAa,KAAKD,iBAAiBiB;EACzC,IAAI,OAAOhB,WAAWe,YAAY,YAChCf,WAAWe,QAAQ;CAEvB;AACF"}
@@ -1,3 +1,3 @@
1
- import { a as serializeRecord, i as pushPayload, n as cleanup, o as serializerFor, r as normalize, s as LegacyNetworkHandler, t as adapterFor } from "./compat-CeT0PnVX.js";
1
+ import { a as serializeRecord, i as pushPayload, n as cleanup, o as serializerFor, r as normalize, s as LegacyNetworkHandler, t as adapterFor } from "./compat-CPVriwH0.js";
2
2
 
3
3
  export { LegacyNetworkHandler, adapterFor, cleanup, normalize, pushPayload, serializeRecord, serializerFor };
@@ -1,5 +1,5 @@
1
- import { t as upgradeStore } from "./-private-vOhxVExH.js";
2
- import { n as decorateMethodV2, r as initializeDeferredDecorator, t as decorateFieldV2 } from "./runtime--fcdnjmJ-DMTJ0Kb3.js";
1
+ import { t as upgradeStore } from "./-private-Dch4SxkU.js";
2
+ import { n as decorateMethodV2 } from "./runtime--fcdnjmJ-5yaSpa-d.js";
3
3
  import { assertPrivateStore, createLegacyManyArray, fastPush, isPrivateStore, isResourceKey, recordIdentifierFor, storeFor } from "@warp-drive/core/store/-private";
4
4
  import { Context } from "@warp-drive/core/reactive/-private";
5
5
  import { defineNonEnumerableSignal, defineSignal, memoized, notifyInternalSignal } from "@warp-drive/core/signals/-leaked";
@@ -10,13 +10,11 @@ import PromiseProxyMixin from "@ember/object/promise-proxy-mixin";
10
10
  import ObjectProxy from "@ember/object/proxy";
11
11
  import { A } from "@ember/array";
12
12
  import ArrayProxy from "@ember/array/proxy";
13
- import { mapBy, not } from "@ember/object/computed";
14
13
 
15
- //#region src/model/-private/promise-proxy-base.js
14
+ // src/model/-private/promise-proxy-base.js
16
15
  const PromiseObject = ObjectProxy.extend(PromiseProxyMixin);
17
16
 
18
- //#endregion
19
- //#region src/model/-private/promise-belongs-to.ts
17
+ // src/model/-private/promise-belongs-to.ts
20
18
  const LegacyPromiseProxy = Symbol.for("LegacyPromiseProxy");
21
19
  const Extended = PromiseObject;
22
20
  /**
@@ -55,8 +53,7 @@ Use \`record.belongsTo(relationshipName).meta()\` instead.`);
55
53
  };
56
54
  PromiseBelongsTo.prototype[LegacyPromiseProxy] = true;
57
55
 
58
- //#endregion
59
- //#region src/model/-private/promise-many-array.ts
56
+ // src/model/-private/promise-many-array.ts
60
57
  /**
61
58
  This class is returned as the result of accessing an async hasMany relationship
62
59
  on an instance of a Model extending from `@warp-drive/legacy/model`.
@@ -70,6 +67,8 @@ In your JS code you should resolve the promise first.
70
67
  const comments = await post.comments;
71
68
  ```
72
69
 
70
+ @summary Legacy promise-like, iterable proxy returned by an async `hasMany` on a `Model`, which templates can
71
+ consume while the related records load.
73
72
  @public
74
73
  */
75
74
  var PromiseManyArray = class {
@@ -240,8 +239,7 @@ function tapPromise(proxy, promise) {
240
239
  });
241
240
  }
242
241
 
243
- //#endregion
244
- //#region src/model/-private/debug/assert-polymorphic-type.ts
242
+ // src/model/-private/debug/assert-polymorphic-type.ts
245
243
  let assertPolymorphicType = function assertPolymorphicType(parentIdentifier, parentDefinition, addedIdentifier, store) {
246
244
  if (parentDefinition.inverseIsImplicit) return;
247
245
  if (parentDefinition.isPolymorphic) {
@@ -257,8 +255,7 @@ let assertPolymorphicType = function assertPolymorphicType(parentIdentifier, par
257
255
  }
258
256
  };
259
257
 
260
- //#endregion
261
- //#region src/model/-private/references/has-many.ts
258
+ // src/model/-private/references/has-many.ts
262
259
  function isResourceIdentiferWithRelatedLinks$1(value) {
263
260
  return Boolean(value && value.links && value.links.related);
264
261
  }
@@ -798,8 +795,7 @@ function ensureRefCanSubscribe(rel) {
798
795
  return true;
799
796
  }
800
797
 
801
- //#endregion
802
- //#region src/model/-private/references/belongs-to.ts
798
+ // src/model/-private/references/belongs-to.ts
803
799
  function isResourceIdentiferWithRelatedLinks(value) {
804
800
  return Boolean(value && value.links && value.links.related);
805
801
  }
@@ -1294,8 +1290,7 @@ var BelongsToReference = class {
1294
1290
  };
1295
1291
  defineNonEnumerableSignal(BelongsToReference.prototype, "_ref", 0);
1296
1292
 
1297
- //#endregion
1298
- //#region src/model/-private/legacy-relationships-support.ts
1293
+ // src/model/-private/legacy-relationships-support.ts
1299
1294
  const LEGACY_SUPPORT = getOrSetGlobal("LEGACY_SUPPORT", /* @__PURE__ */ new Map());
1300
1295
  function releaseLegacySupport(identifier) {
1301
1296
  const support = LEGACY_SUPPORT.get(identifier);
@@ -1581,16 +1576,17 @@ var LegacySupport = class {
1581
1576
  if (this.graph) {
1582
1577
  if (!resource) return;
1583
1578
  const { definition, state } = relationship;
1584
- /* @__PURE__ */ upgradeStore(this.store);
1585
- const adapter = this.store.adapterFor?.(definition.type);
1586
- const { isStale, hasDematerializedInverse, hasReceivedData, isEmpty, shouldForceReload } = state;
1587
- const allInverseRecordsAreLoaded = areAllInverseRecordsLoaded(this.store, resource);
1588
- const identifiers = resource.data;
1589
- const shouldFindViaLink = resource.links && resource.links.related && (typeof adapter?.findHasMany === "function" || typeof identifiers === "undefined") && (shouldForceReload || hasDematerializedInverse || isStale || !allInverseRecordsAreLoaded && !isEmpty);
1590
1579
  const field = this.store.schema.fields({ type: definition.inverseType }).get(definition.key);
1591
1580
  ((test) => {
1592
1581
  if (!test) throw new Error(`Expected a hasMany field definition for ${definition.inverseType}.${definition.key}`);
1593
1582
  })(field && field.kind === "hasMany");
1583
+ /* @__PURE__ */ upgradeStore(this.store);
1584
+ const isLinksMode = Boolean(field.options.linksMode);
1585
+ const adapter = isLinksMode ? void 0 : this.store.adapterFor?.(definition.type);
1586
+ const { isStale, hasDematerializedInverse, hasReceivedData, isEmpty, shouldForceReload } = state;
1587
+ const allInverseRecordsAreLoaded = areAllInverseRecordsLoaded(this.store, resource);
1588
+ const identifiers = resource.data;
1589
+ const shouldFindViaLink = resource.links && resource.links.related && (isLinksMode || typeof adapter?.findHasMany === "function" || typeof identifiers === "undefined") && (shouldForceReload || hasDematerializedInverse || isStale || !allInverseRecordsAreLoaded && !isEmpty);
1594
1590
  const request = {
1595
1591
  useLink: shouldFindViaLink,
1596
1592
  field,
@@ -1612,6 +1608,12 @@ var LegacySupport = class {
1612
1608
  method: "GET",
1613
1609
  records: identifiers || [],
1614
1610
  data: request,
1611
+ options: {
1612
+ field,
1613
+ identifier: parentIdentifier,
1614
+ links: resource.links,
1615
+ meta: resource.meta
1616
+ },
1615
1617
  [EnableHydration]: false
1616
1618
  } : {
1617
1619
  op: "findHasMany",
@@ -1677,6 +1679,12 @@ var LegacySupport = class {
1677
1679
  method: "GET",
1678
1680
  records: identifier ? [identifier] : [],
1679
1681
  data: request,
1682
+ options: {
1683
+ field,
1684
+ identifier: parentIdentifier,
1685
+ links: resource.links,
1686
+ meta: resource.meta
1687
+ },
1680
1688
  [EnableHydration]: false
1681
1689
  } : {
1682
1690
  op: "findBelongsTo",
@@ -1806,8 +1814,7 @@ function getRealFieldName(context, key) {
1806
1814
  return field ? field.sourceKey ?? field.name : key;
1807
1815
  }
1808
1816
 
1809
- //#endregion
1810
- //#region src/model/-private/errors.ts
1817
+ // src/model/-private/errors.ts
1811
1818
  const ArrayProxyWithCustomOverrides = ArrayProxy;
1812
1819
  /**
1813
1820
  Holds validation errors for a given record, organized by attribute names.
@@ -1935,15 +1942,17 @@ var Errors = class extends ArrayProxyWithCustomOverrides {
1935
1942
  @public
1936
1943
  @type {Array}
1937
1944
  */
1938
- static {
1939
- decorateFieldV2(this.prototype, "messages", [mapBy("content", "message")]);
1945
+ get messages() {
1946
+ return A(this.content.map((error) => error.message));
1940
1947
  }
1941
- #messages = (initializeDeferredDecorator(this, "messages"), void 0);
1942
1948
  /**
1943
1949
  @property content
1944
1950
  @type {Array}
1945
1951
  @private
1946
1952
  */
1953
+ static {
1954
+ decorateMethodV2(this.prototype, "messages", [computed("content.@each.message")]);
1955
+ }
1947
1956
  get content() {
1948
1957
  return A();
1949
1958
  }
@@ -1972,10 +1981,9 @@ var Errors = class extends ArrayProxyWithCustomOverrides {
1972
1981
  @public
1973
1982
  @readonly
1974
1983
  */
1975
- static {
1976
- decorateFieldV2(this.prototype, "isEmpty", [not("length")]);
1984
+ get isEmpty() {
1985
+ return !this.length;
1977
1986
  }
1978
- #isEmpty = (initializeDeferredDecorator(this, "isEmpty"), void 0);
1979
1987
  /**
1980
1988
  Manually adds errors to the record. This will trigger the `becameInvalid` event/ lifecycle method on
1981
1989
  the record and transition the record into an `invalid` state.
@@ -2007,6 +2015,9 @@ var Errors = class extends ArrayProxyWithCustomOverrides {
2007
2015
  @param {String} attribute - the property name of an attribute or relationship
2008
2016
  @param {string[]|string} messages - an error message or array of error messages for the attribute
2009
2017
  */
2018
+ static {
2019
+ decorateMethodV2(this.prototype, "isEmpty", [computed("length")]);
2020
+ }
2010
2021
  add(attribute, messages) {
2011
2022
  const errors = this._findOrCreateMessages(attribute, messages);
2012
2023
  this.addObjects(errors);
@@ -2130,6 +2141,5 @@ var Errors = class extends ArrayProxyWithCustomOverrides {
2130
2141
  }
2131
2142
  };
2132
2143
 
2133
- //#endregion
2134
2144
  export { PromiseManyArray as a, releaseLegacySupport as i, LEGACY_SUPPORT as n, PromiseBelongsTo as o, lookupLegacySupport as r, Errors as t };
2135
- //# sourceMappingURL=errors-jHQESeNQ.js.map
2145
+ //# sourceMappingURL=errors-yPc7D7r3.js.map