@warp-drive/legacy 5.9.0-alpha.21 → 5.9.0-alpha.22

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 (467) hide show
  1. package/dist/-private-DQ6Iap2t.js +193 -0
  2. package/dist/-private-DQ6Iap2t.js.map +1 -0
  3. package/dist/-private-DccRZQsm.js +904 -0
  4. package/dist/-private-DccRZQsm.js.map +1 -0
  5. package/dist/adapter/-private.d.ts +33 -0
  6. package/dist/adapter/-private.d.ts.map +1 -0
  7. package/dist/adapter/-private.js +3 -1
  8. package/dist/adapter/error.d.ts +2 -0
  9. package/dist/adapter/error.js +422 -453
  10. package/dist/adapter/error.js.map +1 -0
  11. package/{declarations → dist}/adapter/json-api.d.ts +30 -29
  12. package/dist/adapter/json-api.d.ts.map +1 -0
  13. package/dist/adapter/json-api.js +265 -143
  14. package/dist/adapter/json-api.js.map +1 -0
  15. package/dist/adapter/rest.d.ts +2 -0
  16. package/dist/adapter/rest.js +937 -1136
  17. package/dist/adapter/rest.js.map +1 -0
  18. package/dist/adapter-CARrK3-8.d.ts +784 -0
  19. package/dist/adapter-CARrK3-8.d.ts.map +1 -0
  20. package/dist/adapter-XgLAkYVs.js +1130 -0
  21. package/dist/adapter-XgLAkYVs.js.map +1 -0
  22. package/dist/adapter.d.ts +2 -0
  23. package/dist/adapter.js +1 -1248
  24. package/dist/compat/-private.d.ts +2 -0
  25. package/dist/compat/-private.js +3 -1
  26. package/dist/compat/builders.d.ts +169 -0
  27. package/dist/compat/builders.d.ts.map +1 -0
  28. package/dist/compat/builders.js +205 -245
  29. package/dist/compat/builders.js.map +1 -0
  30. package/dist/compat/extensions.d.ts +2 -0
  31. package/dist/compat/extensions.js +265 -304
  32. package/dist/compat/extensions.js.map +1 -0
  33. package/dist/compat/utils.d.ts +151 -0
  34. package/dist/compat/utils.d.ts.map +1 -0
  35. package/dist/compat/utils.js +187 -206
  36. package/dist/compat/utils.js.map +1 -0
  37. package/dist/compat-BbNNmTM-.d.ts +1386 -0
  38. package/dist/compat-BbNNmTM-.d.ts.map +1 -0
  39. package/dist/compat-g__Pfy2S.js +734 -0
  40. package/dist/compat-g__Pfy2S.js.map +1 -0
  41. package/dist/compat.d.ts +2 -0
  42. package/dist/compat.js +1 -1036
  43. package/dist/error-CzkyXr1Q.d.ts +435 -0
  44. package/dist/error-CzkyXr1Q.d.ts.map +1 -0
  45. package/dist/errors-LQhmDVdd.js +2134 -0
  46. package/dist/errors-LQhmDVdd.js.map +1 -0
  47. package/dist/extensions-DumNm4dA.d.ts +102 -0
  48. package/dist/extensions-DumNm4dA.d.ts.map +1 -0
  49. package/dist/index.d.ts +243 -0
  50. package/dist/index.d.ts.map +1 -0
  51. package/dist/index.js +267 -339
  52. package/dist/index.js.map +1 -0
  53. package/dist/json-BXNPTlcH.js +1106 -0
  54. package/dist/json-BXNPTlcH.js.map +1 -0
  55. package/dist/model/-private.d.ts +3 -0
  56. package/dist/model/-private.js +3 -1
  57. package/dist/model/migration-support.d.ts +335 -0
  58. package/dist/model/migration-support.d.ts.map +1 -0
  59. package/dist/model/migration-support.js +504 -575
  60. package/dist/model/migration-support.js.map +1 -0
  61. package/dist/model-62hn5_PD.d.ts +3107 -0
  62. package/dist/model-62hn5_PD.d.ts.map +1 -0
  63. package/dist/model-BtIEHqYZ.js +683 -0
  64. package/dist/model-BtIEHqYZ.js.map +1 -0
  65. package/dist/model-fragments-Dpn9285r.js +334 -0
  66. package/dist/model-fragments-Dpn9285r.js.map +1 -0
  67. package/dist/model-fragments.d.ts +294 -0
  68. package/dist/model-fragments.d.ts.map +1 -0
  69. package/dist/model-fragments.js +2 -94
  70. package/dist/model.d.ts +404 -0
  71. package/dist/model.d.ts.map +1 -0
  72. package/dist/model.js +3 -670
  73. package/{declarations/adapter/rest.d.ts → dist/rest-0NhtexIq.d.ts} +183 -173
  74. package/dist/rest-0NhtexIq.d.ts.map +1 -0
  75. package/dist/runtime-BPCpkOf1-BgO3Lyjx.js +53 -0
  76. package/dist/runtime-BPCpkOf1-BgO3Lyjx.js.map +1 -0
  77. package/dist/schema-provider-DsKuB5Wb.js +1929 -0
  78. package/dist/schema-provider-DsKuB5Wb.js.map +1 -0
  79. package/{declarations → dist}/serializer/json-api.d.ts +3 -0
  80. package/dist/serializer/json-api.d.ts.map +1 -0
  81. package/dist/serializer/json-api.js +527 -519
  82. package/dist/serializer/json-api.js.map +1 -0
  83. package/{declarations → dist}/serializer/json.d.ts +3 -0
  84. package/dist/serializer/json.d.ts.map +1 -0
  85. package/dist/serializer/json.js +3 -6
  86. package/{declarations/serializer/-private/embedded-records-mixin.d.ts → dist/serializer/rest.d.ts} +56 -1
  87. package/dist/serializer/rest.d.ts.map +1 -0
  88. package/dist/serializer/rest.js +958 -1199
  89. package/dist/serializer/rest.js.map +1 -0
  90. package/dist/serializer/transform.d.ts +313 -0
  91. package/dist/serializer/transform.d.ts.map +1 -0
  92. package/dist/serializer/transform.js +283 -308
  93. package/dist/serializer/transform.js.map +1 -0
  94. package/dist/serializer.d.ts +151 -0
  95. package/dist/serializer.d.ts.map +1 -0
  96. package/dist/serializer.js +205 -205
  97. package/dist/serializer.js.map +1 -0
  98. package/dist/store-C4qYzXei.js +473 -0
  99. package/dist/store-C4qYzXei.js.map +1 -0
  100. package/dist/store.d.ts +13 -0
  101. package/dist/store.d.ts.map +1 -0
  102. package/dist/store.js +1 -641
  103. package/dist/unpkg/dev/-private-CrEyBE-B.js +189 -0
  104. package/dist/unpkg/dev/-private-CrEyBE-B.js.map +1 -0
  105. package/dist/unpkg/dev/-private-vOhxVExH.js +896 -0
  106. package/dist/unpkg/dev/-private-vOhxVExH.js.map +1 -0
  107. package/dist/unpkg/dev/adapter/-private.js +3 -1
  108. package/dist/unpkg/dev/adapter/error.js +421 -452
  109. package/dist/unpkg/dev/adapter/error.js.map +1 -0
  110. package/dist/unpkg/dev/adapter/json-api.js +239 -257
  111. package/dist/unpkg/dev/adapter/json-api.js.map +1 -0
  112. package/dist/unpkg/dev/adapter/rest.js +935 -1134
  113. package/dist/unpkg/dev/adapter/rest.js.map +1 -0
  114. package/dist/unpkg/dev/adapter-Cw0uSl8d.js +1129 -0
  115. package/dist/unpkg/dev/adapter-Cw0uSl8d.js.map +1 -0
  116. package/dist/unpkg/dev/adapter.js +1 -1247
  117. package/dist/unpkg/dev/compat/-private.js +3 -1
  118. package/dist/unpkg/dev/compat/builders.js +204 -247
  119. package/dist/unpkg/dev/compat/builders.js.map +1 -0
  120. package/dist/unpkg/dev/compat/extensions.js +264 -303
  121. package/dist/unpkg/dev/compat/extensions.js.map +1 -0
  122. package/dist/unpkg/dev/compat/utils.js +186 -205
  123. package/dist/unpkg/dev/compat/utils.js.map +1 -0
  124. package/dist/unpkg/dev/compat-CeyxXB7K.js +825 -0
  125. package/dist/unpkg/dev/compat-CeyxXB7K.js.map +1 -0
  126. package/dist/unpkg/dev/compat.js +1 -1178
  127. package/dist/unpkg/dev/errors-1javxsPo.js +2127 -0
  128. package/dist/unpkg/dev/errors-1javxsPo.js.map +1 -0
  129. package/dist/unpkg/dev/index.js +266 -344
  130. package/dist/unpkg/dev/index.js.map +1 -0
  131. package/dist/unpkg/dev/json-DDJji3V3.js +1104 -0
  132. package/dist/unpkg/dev/json-DDJji3V3.js.map +1 -0
  133. package/dist/unpkg/dev/model/-private.js +3 -1
  134. package/dist/unpkg/dev/model/migration-support.js +481 -549
  135. package/dist/unpkg/dev/model/migration-support.js.map +1 -0
  136. package/dist/unpkg/dev/model-C9Xb1R1x.js +655 -0
  137. package/dist/unpkg/dev/model-C9Xb1R1x.js.map +1 -0
  138. package/dist/unpkg/dev/model-fragments-Dpn9285r.js +334 -0
  139. package/dist/unpkg/dev/model-fragments-Dpn9285r.js.map +1 -0
  140. package/dist/unpkg/dev/model-fragments.js +2 -94
  141. package/dist/unpkg/dev/model.js +3 -681
  142. package/dist/unpkg/dev/runtime-BPCpkOf1-BgO3Lyjx.js +53 -0
  143. package/dist/unpkg/dev/runtime-BPCpkOf1-BgO3Lyjx.js.map +1 -0
  144. package/dist/unpkg/dev/schema-provider-Dy6c1J5f.js +1834 -0
  145. package/dist/unpkg/dev/schema-provider-Dy6c1J5f.js.map +1 -0
  146. package/dist/unpkg/dev/serializer/json-api.js +514 -634
  147. package/dist/unpkg/dev/serializer/json-api.js.map +1 -0
  148. package/dist/unpkg/dev/serializer/json.js +3 -4
  149. package/dist/unpkg/dev/serializer/rest.js +954 -1196
  150. package/dist/unpkg/dev/serializer/rest.js.map +1 -0
  151. package/dist/unpkg/dev/serializer/transform.js +283 -308
  152. package/dist/unpkg/dev/serializer/transform.js.map +1 -0
  153. package/dist/unpkg/dev/serializer.js +205 -205
  154. package/dist/unpkg/dev/serializer.js.map +1 -0
  155. package/dist/unpkg/dev/store-D_V8-HQl.js +472 -0
  156. package/dist/unpkg/dev/store-D_V8-HQl.js.map +1 -0
  157. package/dist/unpkg/dev/store.js +1 -649
  158. package/dist/unpkg/dev/util-dSKEgQDp.js +12 -0
  159. package/dist/unpkg/dev/util-dSKEgQDp.js.map +1 -0
  160. package/dist/unpkg/dev/utils-DYC9utVJ.js +11 -0
  161. package/dist/unpkg/dev/utils-DYC9utVJ.js.map +1 -0
  162. package/dist/unpkg/dev-deprecated/-private-CrEyBE-B.js +189 -0
  163. package/dist/unpkg/dev-deprecated/-private-CrEyBE-B.js.map +1 -0
  164. package/dist/unpkg/dev-deprecated/-private-vOhxVExH.js +896 -0
  165. package/dist/unpkg/dev-deprecated/-private-vOhxVExH.js.map +1 -0
  166. package/dist/unpkg/dev-deprecated/adapter/-private.js +3 -1
  167. package/dist/unpkg/dev-deprecated/adapter/error.js +421 -452
  168. package/dist/unpkg/dev-deprecated/adapter/error.js.map +1 -0
  169. package/dist/unpkg/dev-deprecated/adapter/json-api.js +239 -257
  170. package/dist/unpkg/dev-deprecated/adapter/json-api.js.map +1 -0
  171. package/dist/unpkg/dev-deprecated/adapter/rest.js +935 -1134
  172. package/dist/unpkg/dev-deprecated/adapter/rest.js.map +1 -0
  173. package/dist/unpkg/dev-deprecated/adapter-Cw0uSl8d.js +1129 -0
  174. package/dist/unpkg/dev-deprecated/adapter-Cw0uSl8d.js.map +1 -0
  175. package/dist/unpkg/dev-deprecated/adapter.js +1 -1247
  176. package/dist/unpkg/dev-deprecated/compat/-private.js +3 -1
  177. package/dist/unpkg/dev-deprecated/compat/builders.js +204 -247
  178. package/dist/unpkg/dev-deprecated/compat/builders.js.map +1 -0
  179. package/dist/unpkg/dev-deprecated/compat/extensions.js +264 -303
  180. package/dist/unpkg/dev-deprecated/compat/extensions.js.map +1 -0
  181. package/dist/unpkg/dev-deprecated/compat/utils.js +186 -205
  182. package/dist/unpkg/dev-deprecated/compat/utils.js.map +1 -0
  183. package/dist/unpkg/dev-deprecated/compat-DmAgB2NS.js +825 -0
  184. package/dist/unpkg/dev-deprecated/compat-DmAgB2NS.js.map +1 -0
  185. package/dist/unpkg/dev-deprecated/compat.js +1 -1178
  186. package/dist/unpkg/dev-deprecated/errors-C4_aOhY5.js +2128 -0
  187. package/dist/unpkg/dev-deprecated/errors-C4_aOhY5.js.map +1 -0
  188. package/dist/unpkg/dev-deprecated/index.js +266 -343
  189. package/dist/unpkg/dev-deprecated/index.js.map +1 -0
  190. package/dist/unpkg/dev-deprecated/json-DDJji3V3.js +1104 -0
  191. package/dist/unpkg/dev-deprecated/json-DDJji3V3.js.map +1 -0
  192. package/dist/unpkg/dev-deprecated/model/-private.js +3 -1
  193. package/dist/unpkg/dev-deprecated/model/migration-support.js +492 -566
  194. package/dist/unpkg/dev-deprecated/model/migration-support.js.map +1 -0
  195. package/dist/unpkg/dev-deprecated/model-CvSMYkgs.js +660 -0
  196. package/dist/unpkg/dev-deprecated/model-CvSMYkgs.js.map +1 -0
  197. package/dist/unpkg/dev-deprecated/model-fragments-Dpn9285r.js +334 -0
  198. package/dist/unpkg/dev-deprecated/model-fragments-Dpn9285r.js.map +1 -0
  199. package/dist/unpkg/dev-deprecated/model-fragments.js +2 -94
  200. package/dist/unpkg/dev-deprecated/model.js +3 -685
  201. package/dist/unpkg/dev-deprecated/runtime-BPCpkOf1-BgO3Lyjx.js +53 -0
  202. package/dist/unpkg/dev-deprecated/runtime-BPCpkOf1-BgO3Lyjx.js.map +1 -0
  203. package/dist/unpkg/dev-deprecated/schema-provider-Cqttza94.js +1835 -0
  204. package/dist/unpkg/dev-deprecated/schema-provider-Cqttza94.js.map +1 -0
  205. package/dist/unpkg/dev-deprecated/serializer/json-api.js +514 -634
  206. package/dist/unpkg/dev-deprecated/serializer/json-api.js.map +1 -0
  207. package/dist/unpkg/dev-deprecated/serializer/json.js +3 -4
  208. package/dist/unpkg/dev-deprecated/serializer/rest.js +954 -1196
  209. package/dist/unpkg/dev-deprecated/serializer/rest.js.map +1 -0
  210. package/dist/unpkg/dev-deprecated/serializer/transform.js +283 -308
  211. package/dist/unpkg/dev-deprecated/serializer/transform.js.map +1 -0
  212. package/dist/unpkg/dev-deprecated/serializer.js +205 -205
  213. package/dist/unpkg/dev-deprecated/serializer.js.map +1 -0
  214. package/dist/unpkg/dev-deprecated/store-BX7GvXC_.js +472 -0
  215. package/dist/unpkg/dev-deprecated/store-BX7GvXC_.js.map +1 -0
  216. package/dist/unpkg/dev-deprecated/store.js +1 -649
  217. package/dist/unpkg/dev-deprecated/util-9mgEBJ3W.js +18 -0
  218. package/dist/unpkg/dev-deprecated/util-9mgEBJ3W.js.map +1 -0
  219. package/dist/unpkg/dev-deprecated/utils-Cl86-e7F.js +17 -0
  220. package/dist/unpkg/dev-deprecated/utils-Cl86-e7F.js.map +1 -0
  221. package/dist/unpkg/prod/-private-B4bxoTuK.js +160 -0
  222. package/dist/unpkg/prod/-private-B4bxoTuK.js.map +1 -0
  223. package/dist/unpkg/prod/-private-SfXkkHKd.js +745 -0
  224. package/dist/unpkg/prod/-private-SfXkkHKd.js.map +1 -0
  225. package/dist/unpkg/prod/adapter/-private.js +3 -1
  226. package/dist/unpkg/prod/adapter/error.js +418 -447
  227. package/dist/unpkg/prod/adapter/error.js.map +1 -0
  228. package/dist/unpkg/prod/adapter/json-api.js +236 -252
  229. package/dist/unpkg/prod/adapter/json-api.js.map +1 -0
  230. package/dist/unpkg/prod/adapter/rest.js +911 -1097
  231. package/dist/unpkg/prod/adapter/rest.js.map +1 -0
  232. package/dist/unpkg/prod/adapter-Wnk7jizX.js +1111 -0
  233. package/dist/unpkg/prod/adapter-Wnk7jizX.js.map +1 -0
  234. package/dist/unpkg/prod/adapter.js +1 -1214
  235. package/dist/unpkg/prod/compat/-private.js +3 -1
  236. package/dist/unpkg/prod/compat/builders.js +165 -182
  237. package/dist/unpkg/prod/compat/builders.js.map +1 -0
  238. package/dist/unpkg/prod/compat/extensions.js +252 -283
  239. package/dist/unpkg/prod/compat/extensions.js.map +1 -0
  240. package/dist/unpkg/prod/compat/utils.js +183 -200
  241. package/dist/unpkg/prod/compat/utils.js.map +1 -0
  242. package/dist/unpkg/prod/compat-CJ87MzDn.js +547 -0
  243. package/dist/unpkg/prod/compat-CJ87MzDn.js.map +1 -0
  244. package/dist/unpkg/prod/compat.js +1 -742
  245. package/dist/unpkg/prod/errors-Co7YWHoA.js +1977 -0
  246. package/dist/unpkg/prod/errors-Co7YWHoA.js.map +1 -0
  247. package/dist/unpkg/prod/index.js +245 -308
  248. package/dist/unpkg/prod/index.js.map +1 -0
  249. package/dist/unpkg/prod/json-BD1kRTfB.js +1080 -0
  250. package/dist/unpkg/prod/json-BD1kRTfB.js.map +1 -0
  251. package/dist/unpkg/prod/model/-private.js +3 -1
  252. package/dist/unpkg/prod/model/migration-support.js +477 -542
  253. package/dist/unpkg/prod/model/migration-support.js.map +1 -0
  254. package/dist/unpkg/prod/model-BzoOmtka.js +603 -0
  255. package/dist/unpkg/prod/model-BzoOmtka.js.map +1 -0
  256. package/dist/unpkg/prod/model-fragments-Dpn9285r.js +334 -0
  257. package/dist/unpkg/prod/model-fragments-Dpn9285r.js.map +1 -0
  258. package/dist/unpkg/prod/model-fragments.js +2 -94
  259. package/dist/unpkg/prod/model.js +3 -596
  260. package/dist/unpkg/prod/runtime-BPCpkOf1-BgO3Lyjx.js +53 -0
  261. package/dist/unpkg/prod/runtime-BPCpkOf1-BgO3Lyjx.js.map +1 -0
  262. package/dist/unpkg/prod/schema-provider-CKZcqWyP.js +1622 -0
  263. package/dist/unpkg/prod/schema-provider-CKZcqWyP.js.map +1 -0
  264. package/dist/unpkg/prod/serializer/json-api.js +497 -592
  265. package/dist/unpkg/prod/serializer/json-api.js.map +1 -0
  266. package/dist/unpkg/prod/serializer/json.js +3 -4
  267. package/dist/unpkg/prod/serializer/rest.js +938 -1166
  268. package/dist/unpkg/prod/serializer/rest.js.map +1 -0
  269. package/dist/unpkg/prod/serializer/transform.js +283 -308
  270. package/dist/unpkg/prod/serializer/transform.js.map +1 -0
  271. package/dist/unpkg/prod/serializer.js +205 -205
  272. package/dist/unpkg/prod/serializer.js.map +1 -0
  273. package/dist/unpkg/prod/store-RGGc1ilN.js +392 -0
  274. package/dist/unpkg/prod/store-RGGc1ilN.js.map +1 -0
  275. package/dist/unpkg/prod/store.js +1 -517
  276. package/dist/unpkg/prod/util-dSKEgQDp.js +12 -0
  277. package/dist/unpkg/prod/util-dSKEgQDp.js.map +1 -0
  278. package/dist/unpkg/prod/utils-DYC9utVJ.js +11 -0
  279. package/dist/unpkg/prod/utils-DYC9utVJ.js.map +1 -0
  280. package/dist/unpkg/prod-deprecated/-private-B4bxoTuK.js +160 -0
  281. package/dist/unpkg/prod-deprecated/-private-B4bxoTuK.js.map +1 -0
  282. package/dist/unpkg/prod-deprecated/-private-SfXkkHKd.js +745 -0
  283. package/dist/unpkg/prod-deprecated/-private-SfXkkHKd.js.map +1 -0
  284. package/dist/unpkg/prod-deprecated/adapter/-private.js +3 -1
  285. package/dist/unpkg/prod-deprecated/adapter/error.js +418 -447
  286. package/dist/unpkg/prod-deprecated/adapter/error.js.map +1 -0
  287. package/dist/unpkg/prod-deprecated/adapter/json-api.js +236 -252
  288. package/dist/unpkg/prod-deprecated/adapter/json-api.js.map +1 -0
  289. package/dist/unpkg/prod-deprecated/adapter/rest.js +911 -1097
  290. package/dist/unpkg/prod-deprecated/adapter/rest.js.map +1 -0
  291. package/{declarations/adapter.d.ts → dist/unpkg/prod-deprecated/adapter-Wnk7jizX.js} +445 -110
  292. package/dist/unpkg/prod-deprecated/adapter-Wnk7jizX.js.map +1 -0
  293. package/dist/unpkg/prod-deprecated/adapter.js +1 -1214
  294. package/dist/unpkg/prod-deprecated/compat/-private.js +3 -1
  295. package/dist/unpkg/prod-deprecated/compat/builders.js +165 -182
  296. package/dist/unpkg/prod-deprecated/compat/builders.js.map +1 -0
  297. package/dist/unpkg/prod-deprecated/compat/extensions.js +252 -283
  298. package/dist/unpkg/prod-deprecated/compat/extensions.js.map +1 -0
  299. package/dist/unpkg/prod-deprecated/compat/utils.js +183 -200
  300. package/dist/unpkg/prod-deprecated/compat/utils.js.map +1 -0
  301. package/dist/unpkg/prod-deprecated/compat-CJ87MzDn.js +547 -0
  302. package/dist/unpkg/prod-deprecated/compat-CJ87MzDn.js.map +1 -0
  303. package/dist/unpkg/prod-deprecated/compat.js +1 -742
  304. package/dist/unpkg/prod-deprecated/errors-C-opde61.js +1978 -0
  305. package/dist/unpkg/prod-deprecated/errors-C-opde61.js.map +1 -0
  306. package/dist/unpkg/prod-deprecated/index.js +245 -307
  307. package/dist/unpkg/prod-deprecated/index.js.map +1 -0
  308. package/dist/unpkg/prod-deprecated/json-BD1kRTfB.js +1080 -0
  309. package/dist/unpkg/prod-deprecated/json-BD1kRTfB.js.map +1 -0
  310. package/dist/unpkg/prod-deprecated/model/-private.js +3 -1
  311. package/dist/unpkg/prod-deprecated/model/migration-support.js +488 -559
  312. package/dist/unpkg/prod-deprecated/model/migration-support.js.map +1 -0
  313. package/dist/unpkg/prod-deprecated/model-C0bTXzGn.js +604 -0
  314. package/dist/unpkg/prod-deprecated/model-C0bTXzGn.js.map +1 -0
  315. package/dist/unpkg/prod-deprecated/model-fragments-Dpn9285r.js +334 -0
  316. package/dist/unpkg/prod-deprecated/model-fragments-Dpn9285r.js.map +1 -0
  317. package/dist/unpkg/prod-deprecated/model-fragments.js +2 -94
  318. package/dist/unpkg/prod-deprecated/model.js +3 -599
  319. package/dist/unpkg/prod-deprecated/runtime-BPCpkOf1-BgO3Lyjx.js +53 -0
  320. package/dist/unpkg/prod-deprecated/runtime-BPCpkOf1-BgO3Lyjx.js.map +1 -0
  321. package/dist/unpkg/prod-deprecated/schema-provider-lH3qP5tw.js +1635 -0
  322. package/dist/unpkg/prod-deprecated/schema-provider-lH3qP5tw.js.map +1 -0
  323. package/dist/unpkg/prod-deprecated/serializer/json-api.js +497 -592
  324. package/dist/unpkg/prod-deprecated/serializer/json-api.js.map +1 -0
  325. package/dist/unpkg/prod-deprecated/serializer/json.js +3 -4
  326. package/dist/unpkg/prod-deprecated/serializer/rest.js +938 -1166
  327. package/dist/unpkg/prod-deprecated/serializer/rest.js.map +1 -0
  328. package/dist/unpkg/prod-deprecated/serializer/transform.js +283 -308
  329. package/dist/unpkg/prod-deprecated/serializer/transform.js.map +1 -0
  330. package/dist/unpkg/prod-deprecated/serializer.js +205 -205
  331. package/dist/unpkg/prod-deprecated/serializer.js.map +1 -0
  332. package/dist/unpkg/prod-deprecated/store-0L2CkYzh.js +392 -0
  333. package/dist/unpkg/prod-deprecated/store-0L2CkYzh.js.map +1 -0
  334. package/dist/unpkg/prod-deprecated/store.js +1 -517
  335. package/dist/unpkg/prod-deprecated/util-CQQdHX3n.js +14 -0
  336. package/dist/unpkg/prod-deprecated/util-CQQdHX3n.js.map +1 -0
  337. package/dist/unpkg/prod-deprecated/utils-BMI_JwFP.js +13 -0
  338. package/dist/unpkg/prod-deprecated/utils-BMI_JwFP.js.map +1 -0
  339. package/dist/util-Bnx8nm-D.js +29 -0
  340. package/dist/util-Bnx8nm-D.js.map +1 -0
  341. package/dist/utils-ZAytYep8.js +28 -0
  342. package/dist/utils-ZAytYep8.js.map +1 -0
  343. package/package.json +13 -13
  344. package/declarations/adapter/-private/build-url-mixin.d.ts +0 -189
  345. package/declarations/adapter/-private/fastboot-interface.d.ts +0 -8
  346. package/declarations/adapter/-private/utils/continue-on-reject.d.ts +0 -1
  347. package/declarations/adapter/-private/utils/determine-body-promise.d.ts +0 -4
  348. package/declarations/adapter/-private/utils/fetch.d.ts +0 -8
  349. package/declarations/adapter/-private/utils/parse-response-headers.d.ts +0 -1
  350. package/declarations/adapter/-private/utils/serialize-into-hash.d.ts +0 -6
  351. package/declarations/adapter/-private/utils/serialize-query-params.d.ts +0 -5
  352. package/declarations/adapter/-private.d.ts +0 -5
  353. package/declarations/adapter/error.d.ts +0 -431
  354. package/declarations/compat/-private.d.ts +0 -13
  355. package/declarations/compat/builders/find-all.d.ts +0 -34
  356. package/declarations/compat/builders/find-record.d.ts +0 -56
  357. package/declarations/compat/builders/query.d.ts +0 -66
  358. package/declarations/compat/builders/save-record.d.ts +0 -34
  359. package/declarations/compat/builders/utils.d.ts +0 -3
  360. package/declarations/compat/builders.d.ts +0 -14
  361. package/declarations/compat/extensions.d.ts +0 -99
  362. package/declarations/compat/legacy-network-handler/fetch-manager.d.ts +0 -55
  363. package/declarations/compat/legacy-network-handler/identifier-has-id.d.ts +0 -2
  364. package/declarations/compat/legacy-network-handler/legacy-data-fetch.d.ts +0 -11
  365. package/declarations/compat/legacy-network-handler/legacy-data-utils.d.ts +0 -5
  366. package/declarations/compat/legacy-network-handler/legacy-network-handler.d.ts +0 -9
  367. package/declarations/compat/legacy-network-handler/minimum-adapter-interface.d.ts +0 -528
  368. package/declarations/compat/legacy-network-handler/minimum-serializer-interface.d.ts +0 -220
  369. package/declarations/compat/legacy-network-handler/serializer-response.d.ts +0 -6
  370. package/declarations/compat/legacy-network-handler/snapshot-record-array.d.ts +0 -110
  371. package/declarations/compat/legacy-network-handler/snapshot.d.ts +0 -255
  372. package/declarations/compat/utils.d.ts +0 -148
  373. package/declarations/compat.d.ts +0 -189
  374. package/declarations/index.d.ts +0 -244
  375. package/declarations/model/-private/attr.d.ts +0 -191
  376. package/declarations/model/-private/belongs-to.d.ts +0 -195
  377. package/declarations/model/-private/debug/assert-polymorphic-type.d.ts +0 -5
  378. package/declarations/model/-private/errors.d.ts +0 -289
  379. package/declarations/model/-private/has-many.d.ts +0 -162
  380. package/declarations/model/-private/hooks.d.ts +0 -36
  381. package/declarations/model/-private/legacy-relationships-support.d.ts +0 -47
  382. package/declarations/model/-private/model-for-mixin.d.ts +0 -3
  383. package/declarations/model/-private/model-methods.d.ts +0 -39
  384. package/declarations/model/-private/model.d.ts +0 -1279
  385. package/declarations/model/-private/notify-changes.d.ts +0 -4
  386. package/declarations/model/-private/promise-belongs-to.d.ts +0 -40
  387. package/declarations/model/-private/promise-many-array.d.ts +0 -130
  388. package/declarations/model/-private/record-state.d.ts +0 -58
  389. package/declarations/model/-private/references/belongs-to.d.ts +0 -488
  390. package/declarations/model/-private/references/has-many.d.ts +0 -498
  391. package/declarations/model/-private/schema-provider.d.ts +0 -66
  392. package/declarations/model/-private/type-utils.d.ts +0 -57
  393. package/declarations/model/-private/util.d.ts +0 -5
  394. package/declarations/model/-private.d.ts +0 -8
  395. package/declarations/model/migration-support.d.ts +0 -306
  396. package/declarations/model-fragments/extensions/fragment-array.d.ts +0 -54
  397. package/declarations/model-fragments/extensions/fragment.d.ts +0 -50
  398. package/declarations/model-fragments/hooks/model-for.d.ts +0 -27
  399. package/declarations/model-fragments/index.d.ts +0 -13
  400. package/declarations/model-fragments/instance-initializers/fragment-extensions.d.ts +0 -15
  401. package/declarations/model-fragments/utilities/with-array-defaults.d.ts +0 -56
  402. package/declarations/model-fragments/utilities/with-fragment-array-defaults.d.ts +0 -38
  403. package/declarations/model-fragments/utilities/with-fragment-defaults.d.ts +0 -34
  404. package/declarations/model-fragments/utilities/with-legacy.d.ts +0 -11
  405. package/declarations/model-fragments.d.ts +0 -9
  406. package/declarations/model.d.ts +0 -49
  407. package/declarations/serializer/-private/transforms/boolean.d.ts +0 -60
  408. package/declarations/serializer/-private/transforms/date.d.ts +0 -42
  409. package/declarations/serializer/-private/transforms/number.d.ts +0 -42
  410. package/declarations/serializer/-private/transforms/string.d.ts +0 -42
  411. package/declarations/serializer/-private/transforms/transform.d.ts +0 -118
  412. package/declarations/serializer/-private/utils.d.ts +0 -27
  413. package/declarations/serializer/rest.d.ts +0 -51
  414. package/declarations/serializer/transform.d.ts +0 -5
  415. package/declarations/serializer.d.ts +0 -252
  416. package/declarations/store/-private.d.ts +0 -223
  417. package/declarations/store.d.ts +0 -10
  418. package/dist/-private-BG3bMiKp.js +0 -1211
  419. package/dist/errors-DZKA206g.js +0 -2589
  420. package/dist/hooks-BvOqJBei.js +0 -105
  421. package/dist/json-DU8m1pGf.js +0 -1336
  422. package/dist/model-for-CXkJw59V.js +0 -297
  423. package/dist/runtime-BPCpkOf1-BKOwiRJp.js +0 -65
  424. package/dist/schema-provider-DtPOp0d7.js +0 -2382
  425. package/dist/serialize-into-hash-DPZYoF-i.js +0 -261
  426. package/dist/unpkg/dev/-private-DtjBbEgy.js +0 -1206
  427. package/dist/unpkg/dev/errors-DngRU-If.js +0 -2585
  428. package/dist/unpkg/dev/hooks-UuiLxWxS.js +0 -104
  429. package/dist/unpkg/dev/json-K2Y9z6MN.js +0 -1333
  430. package/dist/unpkg/dev/model-for-CXkJw59V.js +0 -297
  431. package/dist/unpkg/dev/runtime-BPCpkOf1-BKOwiRJp.js +0 -65
  432. package/dist/unpkg/dev/schema-provider-0D7f-QOn.js +0 -2272
  433. package/dist/unpkg/dev/serialize-into-hash-B2xDbuo5.js +0 -259
  434. package/dist/unpkg/dev/util-DvanW33H.js +0 -20
  435. package/dist/unpkg/dev/utils-BhvS1iTS.js +0 -8
  436. package/dist/unpkg/dev-deprecated/-private-DtjBbEgy.js +0 -1206
  437. package/dist/unpkg/dev-deprecated/errors-Bzidntpi.js +0 -2588
  438. package/dist/unpkg/dev-deprecated/hooks-DVXhMW14.js +0 -104
  439. package/dist/unpkg/dev-deprecated/json-K2Y9z6MN.js +0 -1333
  440. package/dist/unpkg/dev-deprecated/model-for-CXkJw59V.js +0 -297
  441. package/dist/unpkg/dev-deprecated/runtime-BPCpkOf1-BKOwiRJp.js +0 -65
  442. package/dist/unpkg/dev-deprecated/schema-provider-ZwO5_fZw.js +0 -2292
  443. package/dist/unpkg/dev-deprecated/serialize-into-hash-B2xDbuo5.js +0 -259
  444. package/dist/unpkg/dev-deprecated/util-CWr5WQOT.js +0 -24
  445. package/dist/unpkg/dev-deprecated/utils-C9PJehtL.js +0 -12
  446. package/dist/unpkg/prod/-private-BdyZaGEh.js +0 -971
  447. package/dist/unpkg/prod/errors-B-PWeYlW.js +0 -2337
  448. package/dist/unpkg/prod/hooks-Bx-zBziU.js +0 -72
  449. package/dist/unpkg/prod/json-Qewu-UN9.js +0 -1300
  450. package/dist/unpkg/prod/model-for-CXkJw59V.js +0 -297
  451. package/dist/unpkg/prod/runtime-BPCpkOf1-BKOwiRJp.js +0 -65
  452. package/dist/unpkg/prod/schema-provider-BgRqk8i9.js +0 -1951
  453. package/dist/unpkg/prod/serialize-into-hash-DGlzQteF.js +0 -215
  454. package/dist/unpkg/prod/util-DvanW33H.js +0 -20
  455. package/dist/unpkg/prod/utils-BhvS1iTS.js +0 -8
  456. package/dist/unpkg/prod-deprecated/-private-BdyZaGEh.js +0 -971
  457. package/dist/unpkg/prod-deprecated/errors-Dl2J9d1D.js +0 -2340
  458. package/dist/unpkg/prod-deprecated/hooks-Cm60wWTf.js +0 -72
  459. package/dist/unpkg/prod-deprecated/json-Qewu-UN9.js +0 -1300
  460. package/dist/unpkg/prod-deprecated/model-for-CXkJw59V.js +0 -297
  461. package/dist/unpkg/prod-deprecated/runtime-BPCpkOf1-BKOwiRJp.js +0 -65
  462. package/dist/unpkg/prod-deprecated/schema-provider-Dh6tRqVI.js +0 -1980
  463. package/dist/unpkg/prod-deprecated/serialize-into-hash-DGlzQteF.js +0 -215
  464. package/dist/unpkg/prod-deprecated/util-B6cn-i93.js +0 -23
  465. package/dist/unpkg/prod-deprecated/utils-BUWwQwCh.js +0 -11
  466. package/dist/util-Dul6TZts.js +0 -35
  467. package/dist/utils-Cqw9eRj5.js +0 -23
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.js","names":["getOrSetGlobal","macroCondition","getGlobalConfig","_AdapterError","errors","message","isAdapterError","error","Error","call","stack","description","fileName","lineNumber","name","number","title","detail","prototype","Object","create","code","extend","extendFn","AdapterError","ErrorClass","defaultMessage","ParentErrorClass","WarpDrive","env","DEBUG","test","Array","isArray","InvalidError","TimeoutError","AbortError","UnauthorizedError","ForbiddenError","NotFoundError","ConflictError","ServerError"],"sources":["../../src/adapter/error.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unsafe-assignment */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type { RequestManager } from '@warp-drive/core';\nimport { assert } from '@warp-drive/core/build-config/macros';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type { Handler } from '@warp-drive/core/request';\nimport { getOrSetGlobal } from '@warp-drive/core/types/-private';\nimport type { ApiError } from '@warp-drive/core/types/spec/error';\n\nfunction _AdapterError(this: AdapterRequestError, errors: ApiError[], message = 'Adapter operation failed') {\n this.isAdapterError = true;\n const error = Error.call(this, message);\n\n if (error) {\n this.stack = error.stack;\n // @ts-expect-error untyped\n this.description = error.description;\n // @ts-expect-error untyped\n this.fileName = error.fileName;\n // @ts-expect-error untyped\n this.lineNumber = error.lineNumber;\n this.message = error.message;\n this.name = error.name;\n // @ts-expect-error untyped\n this.number = error.number;\n }\n\n this.errors = errors || [\n {\n title: 'Adapter Error',\n detail: message,\n },\n ];\n}\n\n/**\n * The shape of the errors thrown/returned by {@link AdapterError} and its subclasses.\n */\nexport interface AdapterRequestError<T extends string = string> extends Error {\n /**\n * A property signifying that an Error uses the {@link AdapterRequestError} interface.\n */\n isAdapterError: true;\n /**\n * A short code identifying the kind of error, e.g. `'NotFoundError'`.\n */\n code: T;\n /**\n * The {json:api} formatted errors associated with the request.\n */\n errors: ApiError[];\n}\n/**\n * The static interface shared by {@link AdapterError} and its subclasses,\n * allowing further subclassing via {@link AdapterRequestErrorConstructor.extend | extend}.\n */\nexport interface AdapterRequestErrorConstructor<Instance extends AdapterRequestError = AdapterRequestError> {\n new (errors?: unknown[], message?: string): Instance;\n /**\n * Creates a new {@link AdapterRequestErrorConstructor} that inherits from this one.\n */\n extend(options: { message: string }): AdapterRequestErrorConstructor;\n}\n\n_AdapterError.prototype = Object.create(Error.prototype);\n\n_AdapterError.prototype.code = 'AdapterError';\n_AdapterError.extend = extendFn(_AdapterError as unknown as AdapterRequestErrorConstructor);\n\n/**\n * The {@link AdapterRequestError} shape thrown by the {@link AdapterError} constructor.\n */\nexport type AdapterError = AdapterRequestError<'AdapterError'>;\n/**\n * :::danger\n * ⚠️ **This is LEGACY documentation** for a feature that is no longer encouraged to be used.\n * If starting a new app or thinking of implementing a new adapter, consider writing a\n * {@link Handler} instead to be used with the {@link RequestManager}\n * :::\n *\n * An `AdapterError` is used by an adapter to signal that an error occurred\n * during a request to an external API. It indicates a generic error, and\n * subclasses are used to indicate specific error states.\n *\n * To create a custom error to signal a specific error state in communicating\n * with an external API, extend the `AdapterError`. For example, if the\n * external API exclusively used HTTP `503 Service Unavailable` to indicate\n * it was closed for maintenance:\n *\n * ```js [app/adapters/maintenance-error.js]\n * import AdapterError from '@warp-drive/legacy/adapter/error';\n *\n * export default AdapterError.extend({ message: \"Down for maintenance.\" });\n * ```\n *\n * This error would then be returned by an adapter's `handleResponse` method:\n *\n * ```js [app/adapters/application.js]\n * import JSONAPIAdapter from '@warp-drive/legacy/adapter/json-api';\n * import MaintenanceError from './maintenance-error';\n *\n * export default class ApplicationAdapter extends JSONAPIAdapter {\n * handleResponse(status) {\n * if (503 === status) {\n * return new MaintenanceError();\n * }\n *\n * return super.handleResponse(...arguments);\n * }\n * }\n * ```\n *\n * And can then be detected in an application and used to send the user to an\n * `under-maintenance` route:\n *\n * ```js [app/routes/application.js]\n * import MaintenanceError from '../adapters/maintenance-error';\n *\n * export default class ApplicationRoute extends Route {\n * actions: {\n * error(error, transition) {\n * if (error instanceof MaintenanceError) {\n * this.transitionTo('under-maintenance');\n * return;\n * }\n *\n * // ...other error handling logic\n * }\n * }\n * }\n * ```\n *\n * ### Signaling an Error Without Extending `AdapterError`\n *\n * Extending `AdapterError` (or one of its subclasses) is a convenience, not\n * a requirement. WarpDrive only inspects an error for the {@link AdapterRequestError}\n * shape: an `isAdapterError` flag, a `code`, and an {json:api}-formatted\n * `errors` array. Any object satisfying that shape — including a plain\n * `Error` with those properties attached — will be handled identically to\n * an instance created via `new AdapterError()` or one of its subclasses.\n *\n * This is useful when you'd rather not introduce a class hierarchy, or\n * when the error needs to be constructed from data you don't control\n * (for example, re-throwing an error surfaced by a third-party library):\n *\n * ```js [app/adapters/application.js]\n * import JSONAPIAdapter from '@warp-drive/legacy/adapter/json-api';\n *\n * export default class ApplicationAdapter extends JSONAPIAdapter {\n * handleResponse(status, headers, payload) {\n * if (status === 503) {\n * const error = new Error('Down for maintenance.');\n * error.isAdapterError = true;\n * error.code = 'MaintenanceError';\n * error.errors = [{ title: 'Service Unavailable', detail: 'Down for maintenance.' }];\n * return error;\n * }\n *\n * return super.handleResponse(status, headers, payload);\n * }\n * }\n * ```\n *\n * Because `code` is just a string you control, `error instanceof AdapterError`\n * checks won't match a plain object built this way — consumers should\n * instead branch on `error.isAdapterError && error.code === 'MaintenanceError'`,\n * or on whichever of the {@link AdapterError} subclasses' `code` values\n * (e.g. `'InvalidError'`, `'NotFoundError'`) the error's `code` matches.\n *\n * @public\n */\nexport const AdapterError: AdapterRequestErrorConstructor<AdapterError> = getOrSetGlobal(\n 'AdapterError',\n _AdapterError as unknown as AdapterRequestErrorConstructor<AdapterError>\n);\ntype ErrorExtender = (opts: { message?: string }) => AdapterRequestErrorConstructor;\nfunction extendFn(ErrorClass: AdapterRequestErrorConstructor): ErrorExtender {\n return function ({ message: defaultMessage }: { message?: string } = {}) {\n return extend(ErrorClass, defaultMessage);\n };\n}\n\nfunction extend<Final extends AdapterRequestError>(\n ParentErrorClass: AdapterRequestErrorConstructor,\n defaultMessage?: string\n): AdapterRequestErrorConstructor<Final> {\n const ErrorClass = function (this: AdapterRequestError, errors: ApiError[], message?: string) {\n assert('`AdapterError` expects json-api formatted errors array.', Array.isArray(errors || []));\n ParentErrorClass.call(this, errors, message || defaultMessage);\n };\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n ErrorClass.prototype = Object.create(ParentErrorClass.prototype);\n ErrorClass.extend = extendFn(ErrorClass as unknown as AdapterRequestErrorConstructor);\n\n return ErrorClass as unknown as AdapterRequestErrorConstructor<Final>;\n}\n\n/**\n * The {@link AdapterRequestError} shape thrown by the {@link InvalidError} constructor.\n */\n// TODO @deprecate extractError documentation\nexport type InvalidError = AdapterRequestError<'InvalidError'>;\n/**\n * An `InvalidError` is used by an adapter to signal that the external API\n * was unable to process a request because the content was not semantically\n * correct or meaningful per the API. Usually, this means a record failed\n * some form of server-side validation. When a promise from an adapter is\n * rejected with an `InvalidError` the record will transition to the\n * `invalid` state and the errors will be set to the `errors` property on\n * the record.\n *\n * For WarpDrive to correctly map errors to their corresponding properties\n * on the model, WarpDrive expects each error to be a valid {json:api} error\n * object with a `source.pointer` that matches the property name. For\n * example, if you had a `Post` model that looked like this:\n *\n * ```js [app/models/post.js]\n * import { Model, attr } from '@warp-drive/legacy/model';\n *\n * export default class PostModel extends Model {\n * @attr('string') title;\n * @attr('string') content;\n * }\n * ```\n *\n * To show an error from the server related to the `title` and `content`\n * properties your adapter could return a promise that rejects with an\n * `InvalidError` that looks like this:\n *\n * ```js [app/adapters/post.js]\n * import RSVP from 'RSVP';\n * import RESTAdapter from '@warp-drive/legacy/adapter/rest';\n * import { InvalidError } from '@warp-drive/legacy/adapter/error';\n *\n * export default class ApplicationAdapter extends RESTAdapter {\n * updateRecord() {\n * // Fictional adapter that always rejects\n * return RSVP.reject(new InvalidError([\n * {\n * detail: 'Must be unique',\n * source: { pointer: '/data/attributes/title' }\n * },\n * {\n * detail: 'Must not be blank',\n * source: { pointer: '/data/attributes/content' }\n * }\n * ]));\n * }\n * }\n * ```\n *\n * Your backend may use different property names for your records; the\n * store will attempt to extract and normalize the errors using the\n * serializer's `extractErrors` method before the errors get added to the\n * model. As a result, it is safe for the `InvalidError` to wrap the error\n * payload unaltered.\n *\n * @public\n */\nexport const InvalidError: AdapterRequestErrorConstructor<InvalidError> = getOrSetGlobal(\n 'InvalidError',\n extend<InvalidError>(AdapterError, 'The adapter rejected the commit because it was invalid')\n);\nInvalidError.prototype.code = 'InvalidError';\n\n/**\n * The {@link AdapterRequestError} shape thrown by the {@link TimeoutError} constructor.\n */\nexport type TimeoutError = AdapterRequestError<'TimeoutError'>;\n/**\n * A `TimeoutError` is used by an adapter to signal that a request to the\n * external API has timed out, i.e. no response was received from the\n * external API within an allowed time period.\n *\n * An example use case would be to warn the user to check their internet\n * connection if an adapter operation has timed out:\n *\n * ```js [app/routes/application.js]\n * import { TimeoutError } from '@warp-drive/legacy/adapter/error';\n *\n * export default class ApplicationRoute extends Route {\n * @action\n * error(error, transition) {\n * if (error instanceof TimeoutError) {\n * // alert the user\n * alert('Are you still connected to the Internet?');\n * return;\n * }\n *\n * // ...other error handling logic\n * }\n * }\n * ```\n *\n * @public\n */\nexport const TimeoutError: AdapterRequestErrorConstructor<TimeoutError> = getOrSetGlobal(\n 'TimeoutError',\n extend(AdapterError, 'The adapter operation timed out')\n);\nTimeoutError.prototype.code = 'TimeoutError';\n\n/**\n * The {@link AdapterRequestError} shape thrown by the {@link AbortError} constructor.\n */\nexport type AbortError = AdapterRequestError<'AbortError'>;\n/**\n * An `AbortError` is used by an adapter to signal that a request to the\n * external API was aborted. For example, this can occur if the user\n * navigates away from the current page after a request to the external API\n * has been initiated but before a response has been received.\n *\n * Because an aborted request is typically expected (the user chose to\n * navigate away, or a newer request superseded this one) rather than\n * exceptional, an example use case would be to silently ignore it instead\n * of surfacing an error to the user:\n *\n * ```js [app/routes/application.js]\n * import { AbortError } from '@warp-drive/legacy/adapter/error';\n *\n * export default class ApplicationRoute extends Route {\n * @action\n * error(error, transition) {\n * if (error instanceof AbortError) {\n * // the request was aborted, nothing to report\n * return;\n * }\n *\n * // ...other error handling logic\n * }\n * }\n * ```\n *\n * @public\n */\nexport const AbortError: AdapterRequestErrorConstructor<AbortError> = getOrSetGlobal(\n 'AbortError',\n extend(AdapterError, 'The adapter operation was aborted')\n);\nAbortError.prototype.code = 'AbortError';\n\n/**\n * The {@link AdapterRequestError} shape thrown by the {@link UnauthorizedError} constructor.\n */\nexport type UnauthorizedError = AdapterRequestError<'UnauthorizedError'>;\n/**\n * A `UnauthorizedError` equates to an HTTP `401 Unauthorized` response\n * status. It is used by an adapter to signal that a request to the external\n * API was rejected because authorization is required and has failed or has\n * not yet been provided.\n *\n * An example use case would be to redirect the user to a login route if a\n * request is unauthorized:\n *\n * ```js [app/routes/application.js]\n * import { UnauthorizedError } from '@warp-drive/legacy/adapter/error';\n *\n * export default class ApplicationRoute extends Route {\n * @action\n * error(error, transition) {\n * if (error instanceof UnauthorizedError) {\n * // go to the login route\n * this.transitionTo('login');\n * return;\n * }\n *\n * // ...other error handling logic\n * }\n * }\n * ```\n *\n * @public\n */\nexport const UnauthorizedError: AdapterRequestErrorConstructor<UnauthorizedError> = getOrSetGlobal(\n 'UnauthorizedError',\n extend(AdapterError, 'The adapter operation is unauthorized')\n);\nUnauthorizedError.prototype.code = 'UnauthorizedError';\n\n/**\n * The {@link AdapterRequestError} shape thrown by the {@link ForbiddenError} constructor.\n */\nexport type ForbiddenError = AdapterRequestError<'ForbiddenError'>;\n/**\n * A `ForbiddenError` equates to an HTTP `403 Forbidden` response status.\n * It is used by an adapter to signal that a request to the external API was\n * valid but the server is refusing to respond to it. If authorization was\n * provided and is valid, then the authenticated user does not have the\n * necessary permissions for the request.\n *\n * Unlike an {@link UnauthorizedError}, retrying the request with different\n * credentials will not help; the currently authenticated user simply lacks\n * permission. An example use case would be to show the user a \"you don't\n * have access to this\" message rather than redirecting them to log in:\n *\n * ```js [app/routes/application.js]\n * import { ForbiddenError } from '@warp-drive/legacy/adapter/error';\n *\n * export default class ApplicationRoute extends Route {\n * @action\n * error(error, transition) {\n * if (error instanceof ForbiddenError) {\n * this.transitionTo('forbidden');\n * return;\n * }\n *\n * // ...other error handling logic\n * }\n * }\n * ```\n *\n * @public\n */\nexport const ForbiddenError: AdapterRequestErrorConstructor<ForbiddenError> = getOrSetGlobal(\n 'ForbiddenError',\n extend(AdapterError, 'The adapter operation is forbidden')\n);\nForbiddenError.prototype.code = 'ForbiddenError';\n\n/**\n * The {@link AdapterRequestError} shape thrown by the {@link NotFoundError} constructor.\n */\nexport type NotFoundError = AdapterRequestError<'NotFoundError'>;\n/**\n * A `NotFoundError` equates to an HTTP `404 Not Found` response status.\n * It is used by an adapter to signal that a request to the external API\n * was rejected because the resource could not be found on the API.\n *\n * An example use case would be to detect if the user has entered a route\n * for a specific model that does not exist. For example:\n *\n * ```js [app/routes/post.js]\n * import { NotFoundError } from '@warp-drive/legacy/adapter/error';\n *\n * export default class PostRoute extends Route {\n * @service store;\n * model(params) {\n * return this.store.findRecord('post', params.post_id);\n * }\n * @action\n * error(error, transition) {\n * if (error instanceof NotFoundError) {\n * // redirect to a list of all posts instead\n * this.transitionTo('posts');\n * } else {\n * // otherwise let the error bubble\n * return true;\n * }\n * }\n * }\n * ```\n *\n * @public\n */\nexport const NotFoundError: AdapterRequestErrorConstructor<NotFoundError> = getOrSetGlobal(\n 'NotFoundError',\n extend(AdapterError, 'The adapter could not find the resource')\n);\nNotFoundError.prototype.code = 'NotFoundError';\n\n/**\n * The {@link AdapterRequestError} shape thrown by the {@link ConflictError} constructor.\n */\nexport type ConflictError = AdapterRequestError<'ConflictError'>;\n/**\n * A `ConflictError` equates to an HTTP `409 Conflict` response status.\n * It is used by an adapter to indicate that the request could not be\n * processed because of a conflict in the request. An example scenario\n * would be when creating a record with a client-generated ID but that ID\n * is already known to the external API.\n *\n * An example use case would be to surface a conflict-specific message so\n * the user can retry with different input:\n *\n * ```js [app/routes/application.js]\n * import { ConflictError } from '@warp-drive/legacy/adapter/error';\n *\n * export default class ApplicationRoute extends Route {\n * @action\n * error(error, transition) {\n * if (error instanceof ConflictError) {\n * alert('That identifier is already in use, please choose another.');\n * return;\n * }\n *\n * // ...other error handling logic\n * }\n * }\n * ```\n *\n * @public\n */\nexport const ConflictError: AdapterRequestErrorConstructor<ConflictError> = getOrSetGlobal(\n 'ConflictError',\n extend(AdapterError, 'The adapter operation failed due to a conflict')\n);\nConflictError.prototype.code = 'ConflictError';\n\n/**\n * The {@link AdapterRequestError} shape thrown by the {@link ServerError} constructor.\n */\nexport type ServerError = AdapterRequestError<'ServerError'>;\n/**\n * A `ServerError` equates to an HTTP `500 Internal Server Error` response\n * status. It is used by the adapter to indicate that a request has failed\n * because of an error in the external API, and is unlikely to succeed if\n * retried immediately.\n *\n * An example use case would be to show a generic \"something went wrong on\n * our end\" message rather than one implying the user made a mistake:\n *\n * ```js [app/routes/application.js]\n * import { ServerError } from '@warp-drive/legacy/adapter/error';\n *\n * export default class ApplicationRoute extends Route {\n * @action\n * error(error, transition) {\n * if (error instanceof ServerError) {\n * alert('Something went wrong on our end. Please try again later.');\n * return;\n * }\n *\n * // ...other error handling logic\n * }\n * }\n * ```\n *\n * @public\n */\nexport const ServerError: AdapterRequestErrorConstructor<ServerError> = getOrSetGlobal(\n 'ServerError',\n extend(AdapterError, 'The adapter operation failed due to a server error')\n);\nServerError.prototype.code = 'ServerError';\n"],"mappings":";;;;AAUA,SAASG,cAAyCC,QAAoBC,UAAU,4BAA4B;CAC1G,KAAKC,iBAAiB;CACtB,MAAMC,QAAQC,MAAMC,KAAK,MAAMJ,OAAO;CAEtC,IAAIE,OAAO;EACT,KAAKG,QAAQH,MAAMG;EAEnB,KAAKC,cAAcJ,MAAMI;EAEzB,KAAKC,WAAWL,MAAMK;EAEtB,KAAKC,aAAaN,MAAMM;EACxB,KAAKR,UAAUE,MAAMF;EACrB,KAAKS,OAAOP,MAAMO;EAElB,KAAKC,SAASR,MAAMQ;CACtB;CAEA,KAAKX,SAASA,UAAU,CACtB;EACEY,OAAO;EACPC,QAAQZ;CACV,CAAC;AAEL;;;;;;;;AA+BAF,cAAce,YAAYC,OAAOC,OAAOZ,MAAMU,SAAS;AAEvDf,cAAce,UAAUG,OAAO;AAC/BlB,cAAcmB,SAASC,SAASpB,aAA0D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwG1F,MAAaqB,eAA6DxB,eACxE,gBACAG,aACF;AAEA,SAASoB,SAASE,YAA2D;CAC3E,OAAO,SAAU,EAAEpB,SAASqB,mBAAyC,CAAC,GAAG;EACvE,OAAOJ,OAAOG,YAAYC,cAAc;CAC1C;AACF;AAEA,SAASJ,OACPK,kBACAD,gBACuC;CACvC,MAAMD,aAAa,SAAqCrB,QAAoBC,SAAkB;EAC5FJ,eAAAC,gBAAA,CAAA,CAAA0B,UAAAC,IAAAC,KAAA,OAAAC,SAAA;GAAA,IAAA,CAAAA,MAAA,MAAA,IAAAvB,MAAO,yDAAyD;EAAA,EAAA,CAAEwB,MAAMC,QAAQ7B,UAAU,CAAA,CAAE,CAAC;EAC7FuB,iBAAiBlB,KAAK,MAAML,QAAQC,WAAWqB,cAAc;CAC/D;CAEAD,WAAWP,YAAYC,OAAOC,OAAOO,iBAAiBT,SAAS;CAC/DO,WAAWH,SAASC,SAASE,UAAuD;CAEpF,OAAOA;AACT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgEA,MAAaS,eAA6DlC,eACxE,gBACAsB,OAAqBE,cAAc,wDAAwD,CAC7F;AACAU,aAAahB,UAAUG,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiC9B,MAAac,eAA6DnC,eACxE,gBACAsB,OAAOE,cAAc,iCAAiC,CACxD;AACAW,aAAajB,UAAUG,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmC9B,MAAae,aAAyDpC,eACpE,cACAsB,OAAOE,cAAc,mCAAmC,CAC1D;AACAY,WAAWlB,UAAUG,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkC5B,MAAagB,oBAAuErC,eAClF,qBACAsB,OAAOE,cAAc,uCAAuC,CAC9D;AACAa,kBAAkBnB,UAAUG,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCnC,MAAaiB,iBAAiEtC,eAC5E,kBACAsB,OAAOE,cAAc,oCAAoC,CAC3D;AACAc,eAAepB,UAAUG,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqChC,MAAakB,gBAA+DvC,eAC1E,iBACAsB,OAAOE,cAAc,yCAAyC,CAChE;AACAe,cAAcrB,UAAUG,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkC/B,MAAamB,gBAA+DxC,eAC1E,iBACAsB,OAAOE,cAAc,gDAAgD,CACvE;AACAgB,cAActB,UAAUG,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiC/B,MAAaoB,cAA2DzC,eACtE,eACAsB,OAAOE,cAAc,oDAAoD,CAC3E;AACAiB,YAAYvB,UAAUG,OAAO"}
@@ -1,10 +1,9 @@
1
- import type { Store } from "@warp-drive/core";
2
- import type { ModelSchema } from "@warp-drive/core/types";
3
- import type { HTTPMethod } from "@warp-drive/core/types/request";
4
- import type { AdapterPayload } from "../compat.js";
5
- import type { Snapshot, SnapshotRecordArray } from "../compat/-private.js";
6
- import type { FetchRequestInit, JQueryRequestInit, QueryState } from "./rest.js";
7
- import { RESTAdapter } from "./rest.js";
1
+ import { _ as AdapterPayload, m as Snapshot, p as SnapshotRecordArray } from "../compat-BbNNmTM-.js";
2
+ import { i as RESTAdapter, n as JQueryRequestInit, r as QueryState, t as FetchRequestInit } from "../rest-0NhtexIq.js";
3
+ import { Store } from "@warp-drive/core";
4
+ import { HTTPMethod } from "@warp-drive/core/types/request";
5
+ import { ModelSchema } from "@warp-drive/core/types";
6
+ //#region src/adapter/json-api.d.ts
8
7
  /**
9
8
  ## Overview
10
9
 
@@ -147,20 +146,20 @@ Requests for the `person` model would now target
147
146
  @constructor
148
147
  */
149
148
  declare class JSONAPIAdapter extends RESTAdapter {
150
- /**
151
- * The `Content-Type` header used when serializing request bodies
152
- * that don't otherwise specify one.
153
- */
154
- _defaultContentType: string;
155
- /**
149
+ /**
150
+ * The `Content-Type` header used when serializing request bodies
151
+ * that don't otherwise specify one.
152
+ */
153
+ _defaultContentType: string;
154
+ /**
156
155
  @private
157
156
  @param {String} url
158
157
  @param {String} type The request type GET, POST, PUT, DELETE etc.
159
158
  @param {Object} options
160
159
  @return {Object}
161
160
  */
162
- ajaxOptions(url: string, type: HTTPMethod, options?: JQueryAjaxSettings | RequestInit): JQueryRequestInit | FetchRequestInit;
163
- /**
161
+ ajaxOptions(url: string, type: HTTPMethod, options?: JQueryAjaxSettings | RequestInit): JQueryRequestInit | FetchRequestInit;
162
+ /**
164
163
  By default the JSONAPIAdapter will send each find request coming from a `store.find`
165
164
  or from accessing a relationship separately to the server. If your server supports passing
166
165
  ids as a query string, you can set coalesceFindRequests to true to coalesce all find requests
@@ -216,19 +215,19 @@ declare class JSONAPIAdapter extends RESTAdapter {
216
215
  @public
217
216
  @type {Boolean}
218
217
  */
219
- get coalesceFindRequests(): boolean;
220
- set coalesceFindRequests(value: boolean);
221
- findMany(store: Store, type: ModelSchema, ids: string[], snapshots: Snapshot[]): Promise<AdapterPayload>;
222
- /**
223
- * Determines the pathname for a given type.
224
- *
225
- * Unlike the base `BuildURLMixin` implementation, dasherizes (rather
226
- * than camelizes) the type name before pluralizing it, per the
227
- * {json:api} convention for member names.
228
- */
229
- pathForType(modelName: string): string;
230
- updateRecord(store: Store, schema: ModelSchema, snapshot: Snapshot): Promise<AdapterPayload>;
231
- /**
218
+ get coalesceFindRequests(): boolean;
219
+ set coalesceFindRequests(value: boolean);
220
+ findMany(store: Store, type: ModelSchema, ids: string[], snapshots: Snapshot[]): Promise<AdapterPayload>;
221
+ /**
222
+ * Determines the pathname for a given type.
223
+ *
224
+ * Unlike the base `BuildURLMixin` implementation, dasherizes (rather
225
+ * than camelizes) the type name before pluralizing it, per the
226
+ * {json:api} convention for member names.
227
+ */
228
+ pathForType(modelName: string): string;
229
+ updateRecord(store: Store, schema: ModelSchema, snapshot: Snapshot): Promise<AdapterPayload>;
230
+ /**
232
231
  Used by `findAll` and `findRecord` to build the query's `data` hash
233
232
  supplied to the ajax method.
234
233
 
@@ -237,6 +236,8 @@ declare class JSONAPIAdapter extends RESTAdapter {
237
236
  @param {Snapshot} snapshot
238
237
  @return {Object}
239
238
  */
240
- buildQuery(snapshot: Snapshot | SnapshotRecordArray): QueryState;
239
+ buildQuery(snapshot: Snapshot | SnapshotRecordArray): QueryState;
241
240
  }
241
+ //#endregion
242
242
  export { JSONAPIAdapter };
243
+ //# sourceMappingURL=json-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-api.d.ts","names":[],"sources":["../../src/adapter/json-api.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA2JM,uBAAuB;;;;;EAK3B;;;;;;;;EASA,YACE,aACA,MAAM,YACN,UAAS,qBAAqB,cAC7B,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAgEnB;MAQA,qBAAqB;EAIzB,SAAS,OAAO,OAAO,MAAM,aAAa,eAAe,WAAW,aAAa,QAAQ;;;;;;;;EAYzF,YAAY;EAKZ,aAAa,OAAO,OAAO,QAAQ,aAAa,UAAU,WAAW,QAAQ;;;;;;;;;;EAoB7E,WAAW,UAAU,WAAW,sBAAsB"}
@@ -1,144 +1,266 @@
1
- import { dasherize, pluralize } from '@warp-drive/utilities/string';
2
- import '@ember/debug';
3
- import { macroCondition, getGlobalConfig } from '@embroider/macros';
4
- import { b as serializeIntoHash } from "../serialize-into-hash-DPZYoF-i.js";
5
- import { RESTAdapter } from './rest.js';
6
-
7
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
8
-
9
- class JSONAPIAdapter extends RESTAdapter {
10
- /**
11
- * The `Content-Type` header used when serializing request bodies
12
- * that don't otherwise specify one.
13
- */
14
- _defaultContentType = 'application/vnd.api+json';
15
-
16
- /**
17
- @private
18
- @param {String} url
19
- @param {String} type The request type GET, POST, PUT, DELETE etc.
20
- @param {Object} options
21
- @return {Object}
22
- */
23
- ajaxOptions(url, type, options = {}) {
24
- const hash = super.ajaxOptions(url, type, options);
25
- const headers = hash.headers = hash.headers || {};
26
- headers['Accept'] = headers['Accept'] || 'application/vnd.api+json';
27
- return hash;
28
- }
29
-
30
- /**
31
- By default the JSONAPIAdapter will send each find request coming from a `store.find`
32
- or from accessing a relationship separately to the server. If your server supports passing
33
- ids as a query string, you can set coalesceFindRequests to true to coalesce all find requests
34
- within a single runloop.
35
- For example, if you have an initial payload of:
36
- ```javascript
37
- {
38
- data: {
39
- id: 1,
40
- type: 'post',
41
- relationship: {
42
- comments: {
43
- data: [
44
- { id: 1, type: 'comment' },
45
- { id: 2, type: 'comment' }
46
- ]
47
- }
48
- }
49
- }
50
- }
51
- ```
52
- By default calling `post.comments` will trigger the following requests(assuming the
53
- comments haven't been loaded before):
54
- ```
55
- GET /comments/1
56
- GET /comments/2
57
- ```
58
- If you set coalesceFindRequests to `true` it will instead trigger the following request:
59
- ```
60
- GET /comments?filter[id]=1,2
61
- ```
62
- Setting coalesceFindRequests to `true` also works for `store.find` requests and `belongsTo`
63
- relationships accessed within the same runloop. If you set `coalesceFindRequests: true`
64
- ```javascript
65
- store.findRecord('comment', 1);
66
- store.findRecord('comment', 2);
67
- ```
68
- will also send a request to: `GET /comments?filter[id]=1,2`
69
- Note: Requests coalescing rely on URL building strategy. So if you override `buildURL` in your app
70
- `groupRecordsForFindMany` more likely should be overridden as well in order for coalescing to work.
71
- @property coalesceFindRequests
72
- @public
73
- @type {Boolean}
74
- */
75
- get coalesceFindRequests() {
76
- const coalesceFindRequests = this._coalesceFindRequests;
77
- if (typeof coalesceFindRequests === 'boolean') {
78
- return coalesceFindRequests;
79
- }
80
- return this._coalesceFindRequests = false;
81
- }
82
- set coalesceFindRequests(value) {
83
- this._coalesceFindRequests = value;
84
- }
85
- findMany(store, type, ids, snapshots) {
86
- const url = this.buildURL(type.modelName, ids, snapshots, 'findMany');
87
- return this.ajax(url, 'GET', {
88
- data: {
89
- filter: {
90
- id: ids.join(',')
91
- }
92
- }
93
- });
94
- }
95
-
96
- /**
97
- * Determines the pathname for a given type.
98
- *
99
- * Unlike the base `BuildURLMixin` implementation, dasherizes (rather
100
- * than camelizes) the type name before pluralizing it, per the
101
- * {json:api} convention for member names.
102
- */
103
- pathForType(modelName) {
104
- const dasherized = dasherize(modelName);
105
- return pluralize(dasherized);
106
- }
107
- updateRecord(store, schema, snapshot) {
108
- const data = serializeIntoHash(store, schema, snapshot);
109
- const type = snapshot.modelName;
110
- const id = snapshot.id;
111
- macroCondition(getGlobalConfig().WarpDrive.env.DEBUG) ? (test => {
112
- if (!test) {
113
- throw new Error(`Attempted to update the ${type} record, but the record has no id`);
114
- }
115
- })(typeof id === 'string' && id.length > 0) : {};
116
- const url = this.buildURL(type, id, snapshot, 'updateRecord');
117
- return this.ajax(url, 'PATCH', {
118
- data: data
119
- });
120
- }
121
-
122
- /**
123
- Used by `findAll` and `findRecord` to build the query's `data` hash
124
- supplied to the ajax method.
125
- @since 2.5.0
126
- @public
127
- @param {Snapshot} snapshot
128
- @return {Object}
129
- */
130
- buildQuery(snapshot) {
131
- const query = {};
132
- if (snapshot) {
133
- const {
134
- include
135
- } = snapshot;
136
- const normalizedInclude = Array.isArray(include) ? include.join(',') : include;
137
- if (normalizedInclude) {
138
- query.include = normalizedInclude;
139
- }
140
- }
141
- return query;
142
- }
1
+ import { t as serializeIntoHash } from "../-private-DQ6Iap2t.js";
2
+ import { RESTAdapter } from "./rest.js";
3
+ import { getGlobalConfig, macroCondition } from "@embroider/macros";
4
+ import { dasherize, pluralize } from "@warp-drive/utilities/string";
5
+
6
+ //#region src/adapter/json-api.ts
7
+ /**
8
+ ## Overview
9
+
10
+ :::danger
11
+ ⚠️ **This is LEGACY documentation** for a feature that is no longer encouraged to be used.
12
+ If starting a new app or thinking of implementing a new adapter, consider writing a
13
+ {@link Handler} instead to be used with the {@link RequestManager}
14
+ :::
15
+
16
+ The `JSONAPIAdapter` is an adapter whichtransforms the store's
17
+ requests into HTTP requests that follow the [JSON API format](http://jsonapi.org/format/).
18
+
19
+ ## JSON API Conventions
20
+
21
+ The JSONAPIAdapter uses JSON API conventions for building the URL
22
+ for a record and selecting the HTTP verb to use with a request. The
23
+ actions you can take on a record map onto the following URLs in the
24
+ JSON API adapter:
25
+
26
+ <table>
27
+ <tr>
28
+ <th>
29
+ Action
30
+ </th>
31
+ <th>
32
+ HTTP Verb
33
+ </th>
34
+ <th>
35
+ URL
36
+ </th>
37
+ </tr>
38
+ <tr>
39
+ <th>
40
+ `store.findRecord('post', 123)`
41
+ </th>
42
+ <td>
43
+ GET
44
+ </td>
45
+ <td>
46
+ /posts/123
47
+ </td>
48
+ </tr>
49
+ <tr>
50
+ <th>
51
+ `store.findAll('post')`
52
+ </th>
53
+ <td>
54
+ GET
55
+ </td>
56
+ <td>
57
+ /posts
58
+ </td>
59
+ </tr>
60
+ <tr>
61
+ <th>
62
+ Update `postRecord.save()`
63
+ </th>
64
+ <td>
65
+ PATCH
66
+ </td>
67
+ <td>
68
+ /posts/123
69
+ </td>
70
+ </tr>
71
+ <tr>
72
+ <th>
73
+ Create `store.createRecord('post').save()`
74
+ </th>
75
+ <td>
76
+ POST
77
+ </td>
78
+ <td>
79
+ /posts
80
+ </td>
81
+ </tr>
82
+ <tr>
83
+ <th>
84
+ Delete `postRecord.destroyRecord()`
85
+ </th>
86
+ <td>
87
+ DELETE
88
+ </td>
89
+ <td>
90
+ /posts/123
91
+ </td>
92
+ </tr>
93
+ </table>
94
+
95
+ ## Success and failure
96
+
97
+ The JSONAPIAdapter will consider a success any response with a
98
+ status code of the 2xx family ("Success"), as well as 304 ("Not
99
+ Modified"). Any other status code will be considered a failure.
100
+
101
+ On success, the request promise will be resolved with the full
102
+ response payload.
103
+
104
+ Failed responses with status code 422 ("Unprocessable Entity") will
105
+ be considered "invalid". The response will be discarded, except for
106
+ the `errors` key. The request promise will be rejected with a
107
+ `InvalidError`. This error object will encapsulate the saved
108
+ `errors` value.
109
+
110
+ Any other status codes will be treated as an adapter error. The
111
+ request promise will be rejected, similarly to the invalid case,
112
+ but with an instance of `AdapterError` instead.
113
+
114
+ ### Endpoint path customization
115
+
116
+ Endpoint paths can be prefixed with a `namespace` by setting the
117
+ namespace property on the adapter:
118
+
119
+ ```js [app/adapters/application.js]
120
+ import { JSONAPIAdapter } from '@warp-drive/legacy/adapter/json-api';
121
+
122
+ export default class ApplicationAdapter extends JSONAPIAdapter {
123
+ namespace = 'api/1';
143
124
  }
144
- export { JSONAPIAdapter };
125
+ ```
126
+ Requests for the `person` model would now target `/api/1/people/1`.
127
+
128
+ ### Host customization
129
+
130
+ An adapter can target other hosts by setting the `host` property.
131
+
132
+ ```js [app/adapters/application.js]
133
+ import JSONAPIAdapter from '@warp-drive/legacy/adapter/json-api';
134
+
135
+ export default class ApplicationAdapter extends JSONAPIAdapter {
136
+ host = 'https://api.example.com';
137
+ }
138
+ ```
139
+
140
+ Requests for the `person` model would now target
141
+ `https://api.example.com/people/1`.
142
+
143
+ @since 1.13.0
144
+ @class JSONAPIAdapter
145
+ @public
146
+ @constructor
147
+ */
148
+ var JSONAPIAdapter = class extends RESTAdapter {
149
+ /**
150
+ * The `Content-Type` header used when serializing request bodies
151
+ * that don't otherwise specify one.
152
+ */
153
+ _defaultContentType = "application/vnd.api+json";
154
+ /**
155
+ @private
156
+ @param {String} url
157
+ @param {String} type The request type GET, POST, PUT, DELETE etc.
158
+ @param {Object} options
159
+ @return {Object}
160
+ */
161
+ ajaxOptions(url, type, options = {}) {
162
+ const hash = super.ajaxOptions(url, type, options);
163
+ const headers = hash.headers = hash.headers || {};
164
+ headers["Accept"] = headers["Accept"] || "application/vnd.api+json";
165
+ return hash;
166
+ }
167
+ /**
168
+ By default the JSONAPIAdapter will send each find request coming from a `store.find`
169
+ or from accessing a relationship separately to the server. If your server supports passing
170
+ ids as a query string, you can set coalesceFindRequests to true to coalesce all find requests
171
+ within a single runloop.
172
+ For example, if you have an initial payload of:
173
+ ```javascript
174
+ {
175
+ data: {
176
+ id: 1,
177
+ type: 'post',
178
+ relationship: {
179
+ comments: {
180
+ data: [
181
+ { id: 1, type: 'comment' },
182
+ { id: 2, type: 'comment' }
183
+ ]
184
+ }
185
+ }
186
+ }
187
+ }
188
+ ```
189
+ By default calling `post.comments` will trigger the following requests(assuming the
190
+ comments haven't been loaded before):
191
+ ```
192
+ GET /comments/1
193
+ GET /comments/2
194
+ ```
195
+ If you set coalesceFindRequests to `true` it will instead trigger the following request:
196
+ ```
197
+ GET /comments?filter[id]=1,2
198
+ ```
199
+ Setting coalesceFindRequests to `true` also works for `store.find` requests and `belongsTo`
200
+ relationships accessed within the same runloop. If you set `coalesceFindRequests: true`
201
+ ```javascript
202
+ store.findRecord('comment', 1);
203
+ store.findRecord('comment', 2);
204
+ ```
205
+ will also send a request to: `GET /comments?filter[id]=1,2`
206
+ Note: Requests coalescing rely on URL building strategy. So if you override `buildURL` in your app
207
+ `groupRecordsForFindMany` more likely should be overridden as well in order for coalescing to work.
208
+ @property coalesceFindRequests
209
+ @public
210
+ @type {Boolean}
211
+ */
212
+ get coalesceFindRequests() {
213
+ const coalesceFindRequests = this._coalesceFindRequests;
214
+ if (typeof coalesceFindRequests === "boolean") return coalesceFindRequests;
215
+ return this._coalesceFindRequests = false;
216
+ }
217
+ set coalesceFindRequests(value) {
218
+ this._coalesceFindRequests = value;
219
+ }
220
+ findMany(store, type, ids, snapshots) {
221
+ const url = this.buildURL(type.modelName, ids, snapshots, "findMany");
222
+ return this.ajax(url, "GET", { data: { filter: { id: ids.join(",") } } });
223
+ }
224
+ /**
225
+ * Determines the pathname for a given type.
226
+ *
227
+ * Unlike the base `BuildURLMixin` implementation, dasherizes (rather
228
+ * than camelizes) the type name before pluralizing it, per the
229
+ * {json:api} convention for member names.
230
+ */
231
+ pathForType(modelName) {
232
+ const dasherized = dasherize(modelName);
233
+ return pluralize(dasherized);
234
+ }
235
+ updateRecord(store, schema, snapshot) {
236
+ const data = serializeIntoHash(store, schema, snapshot);
237
+ const type = snapshot.modelName;
238
+ const id = snapshot.id;
239
+ macroCondition(getGlobalConfig().WarpDrive.env.DEBUG) && ((test) => {
240
+ if (!test) throw new Error(`Attempted to update the ${type} record, but the record has no id`);
241
+ })(typeof id === "string" && id.length > 0);
242
+ const url = this.buildURL(type, id, snapshot, "updateRecord");
243
+ return this.ajax(url, "PATCH", { data });
244
+ }
245
+ /**
246
+ Used by `findAll` and `findRecord` to build the query's `data` hash
247
+ supplied to the ajax method.
248
+ @since 2.5.0
249
+ @public
250
+ @param {Snapshot} snapshot
251
+ @return {Object}
252
+ */
253
+ buildQuery(snapshot) {
254
+ const query = {};
255
+ if (snapshot) {
256
+ const { include } = snapshot;
257
+ const normalizedInclude = Array.isArray(include) ? include.join(",") : include;
258
+ if (normalizedInclude) query.include = normalizedInclude;
259
+ }
260
+ return query;
261
+ }
262
+ };
263
+
264
+ //#endregion
265
+ export { JSONAPIAdapter };
266
+ //# sourceMappingURL=json-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-api.js","names":["dasherize","pluralize","serializeIntoHash","RESTAdapter","macroCondition","getGlobalConfig","JSONAPIAdapter","_defaultContentType","ajaxOptions","url","type","options","hash","headers","coalesceFindRequests","_coalesceFindRequests","value","findMany","store","ids","snapshots","buildURL","modelName","ajax","data","filter","id","join","pathForType","dasherized","updateRecord","schema","snapshot","WarpDrive","env","DEBUG","test","Error","length","buildQuery","query","include","normalizedInclude","Array","isArray"],"sources":["../../src/adapter/json-api.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type { RequestManager, Store } from '@warp-drive/core';\nimport { assert } from '@warp-drive/core/build-config/macros';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type { Handler } from '@warp-drive/core/request';\nimport type { ModelSchema } from '@warp-drive/core/types';\nimport type { HTTPMethod } from '@warp-drive/core/types/request';\nimport { dasherize, pluralize } from '@warp-drive/utilities/string';\n\nimport type { AdapterPayload } from '../compat.ts';\nimport type { Snapshot, SnapshotRecordArray } from '../compat/-private.ts';\nimport { serializeIntoHash } from './-private.ts';\nimport type { FetchRequestInit, JQueryRequestInit, QueryState } from './rest.ts';\nimport { RESTAdapter } from './rest.ts';\n/**\n ## Overview\n\n :::danger\n ⚠️ **This is LEGACY documentation** for a feature that is no longer encouraged to be used.\n If starting a new app or thinking of implementing a new adapter, consider writing a\n {@link Handler} instead to be used with the {@link RequestManager}\n :::\n\n The `JSONAPIAdapter` is an adapter whichtransforms the store's\n requests into HTTP requests that follow the [JSON API format](http://jsonapi.org/format/).\n\n ## JSON API Conventions\n\n The JSONAPIAdapter uses JSON API conventions for building the URL\n for a record and selecting the HTTP verb to use with a request. The\n actions you can take on a record map onto the following URLs in the\n JSON API adapter:\n\n<table>\n <tr>\n <th>\n Action\n </th>\n <th>\n HTTP Verb\n </th>\n <th>\n URL\n </th>\n </tr>\n <tr>\n <th>\n `store.findRecord('post', 123)`\n </th>\n <td>\n GET\n </td>\n <td>\n /posts/123\n </td>\n </tr>\n <tr>\n <th>\n `store.findAll('post')`\n </th>\n <td>\n GET\n </td>\n <td>\n /posts\n </td>\n </tr>\n <tr>\n <th>\n Update `postRecord.save()`\n </th>\n <td>\n PATCH\n </td>\n <td>\n /posts/123\n </td>\n </tr>\n <tr>\n <th>\n Create `store.createRecord('post').save()`\n </th>\n <td>\n POST\n </td>\n <td>\n /posts\n </td>\n </tr>\n <tr>\n <th>\n Delete `postRecord.destroyRecord()`\n </th>\n <td>\n DELETE\n </td>\n <td>\n /posts/123\n </td>\n </tr>\n</table>\n\n ## Success and failure\n\n The JSONAPIAdapter will consider a success any response with a\n status code of the 2xx family (\"Success\"), as well as 304 (\"Not\n Modified\"). Any other status code will be considered a failure.\n\n On success, the request promise will be resolved with the full\n response payload.\n\n Failed responses with status code 422 (\"Unprocessable Entity\") will\n be considered \"invalid\". The response will be discarded, except for\n the `errors` key. The request promise will be rejected with a\n `InvalidError`. This error object will encapsulate the saved\n `errors` value.\n\n Any other status codes will be treated as an adapter error. The\n request promise will be rejected, similarly to the invalid case,\n but with an instance of `AdapterError` instead.\n\n ### Endpoint path customization\n\n Endpoint paths can be prefixed with a `namespace` by setting the\n namespace property on the adapter:\n\n ```js [app/adapters/application.js]\n import { JSONAPIAdapter } from '@warp-drive/legacy/adapter/json-api';\n\n export default class ApplicationAdapter extends JSONAPIAdapter {\n namespace = 'api/1';\n }\n ```\n Requests for the `person` model would now target `/api/1/people/1`.\n\n ### Host customization\n\n An adapter can target other hosts by setting the `host` property.\n\n ```js [app/adapters/application.js]\n import JSONAPIAdapter from '@warp-drive/legacy/adapter/json-api';\n\n export default class ApplicationAdapter extends JSONAPIAdapter {\n host = 'https://api.example.com';\n }\n ```\n\n Requests for the `person` model would now target\n `https://api.example.com/people/1`.\n\n @since 1.13.0\n @class JSONAPIAdapter\n @public\n @constructor\n*/\nclass JSONAPIAdapter extends RESTAdapter {\n /**\n * The `Content-Type` header used when serializing request bodies\n * that don't otherwise specify one.\n */\n _defaultContentType = 'application/vnd.api+json';\n\n /**\n @private\n @param {String} url\n @param {String} type The request type GET, POST, PUT, DELETE etc.\n @param {Object} options\n @return {Object}\n */\n ajaxOptions(\n url: string,\n type: HTTPMethod,\n options: JQueryAjaxSettings | RequestInit = {}\n ): JQueryRequestInit | FetchRequestInit {\n const hash = super.ajaxOptions(url, type, options) as FetchRequestInit;\n const headers: HeadersInit = (hash.headers = hash.headers || {});\n headers['Accept'] = (headers['Accept'] as string) || 'application/vnd.api+json';\n\n return hash;\n }\n\n /**\n By default the JSONAPIAdapter will send each find request coming from a `store.find`\n or from accessing a relationship separately to the server. If your server supports passing\n ids as a query string, you can set coalesceFindRequests to true to coalesce all find requests\n within a single runloop.\n\n For example, if you have an initial payload of:\n\n ```javascript\n {\n data: {\n id: 1,\n type: 'post',\n relationship: {\n comments: {\n data: [\n { id: 1, type: 'comment' },\n { id: 2, type: 'comment' }\n ]\n }\n }\n }\n }\n ```\n\n By default calling `post.comments` will trigger the following requests(assuming the\n comments haven't been loaded before):\n\n ```\n GET /comments/1\n GET /comments/2\n ```\n\n If you set coalesceFindRequests to `true` it will instead trigger the following request:\n\n ```\n GET /comments?filter[id]=1,2\n ```\n\n Setting coalesceFindRequests to `true` also works for `store.find` requests and `belongsTo`\n relationships accessed within the same runloop. If you set `coalesceFindRequests: true`\n\n ```javascript\n store.findRecord('comment', 1);\n store.findRecord('comment', 2);\n ```\n\n will also send a request to: `GET /comments?filter[id]=1,2`\n\n Note: Requests coalescing rely on URL building strategy. So if you override `buildURL` in your app\n `groupRecordsForFindMany` more likely should be overridden as well in order for coalescing to work.\n\n @property coalesceFindRequests\n @public\n @type {Boolean}\n */\n get coalesceFindRequests() {\n const coalesceFindRequests = this._coalesceFindRequests;\n if (typeof coalesceFindRequests === 'boolean') {\n return coalesceFindRequests;\n }\n return (this._coalesceFindRequests = false);\n }\n\n set coalesceFindRequests(value: boolean) {\n this._coalesceFindRequests = value;\n }\n\n findMany(store: Store, type: ModelSchema, ids: string[], snapshots: Snapshot[]): Promise<AdapterPayload> {\n const url = this.buildURL(type.modelName, ids, snapshots, 'findMany');\n return this.ajax(url, 'GET', { data: { filter: { id: ids.join(',') } } });\n }\n\n /**\n * Determines the pathname for a given type.\n *\n * Unlike the base `BuildURLMixin` implementation, dasherizes (rather\n * than camelizes) the type name before pluralizing it, per the\n * {json:api} convention for member names.\n */\n pathForType(modelName: string): string {\n const dasherized = dasherize(modelName);\n return pluralize(dasherized);\n }\n\n updateRecord(store: Store, schema: ModelSchema, snapshot: Snapshot): Promise<AdapterPayload> {\n const data = serializeIntoHash(store, schema, snapshot);\n const type = snapshot.modelName;\n const id = snapshot.id;\n assert(`Attempted to update the ${type} record, but the record has no id`, typeof id === 'string' && id.length > 0);\n\n const url = this.buildURL(type, id, snapshot, 'updateRecord');\n\n return this.ajax(url, 'PATCH', { data: data });\n }\n\n /**\n Used by `findAll` and `findRecord` to build the query's `data` hash\n supplied to the ajax method.\n\n @since 2.5.0\n @public\n @param {Snapshot} snapshot\n @return {Object}\n */\n buildQuery(snapshot: Snapshot | SnapshotRecordArray): QueryState {\n const query: QueryState = {};\n\n if (snapshot) {\n const { include } = snapshot;\n const normalizedInclude = Array.isArray(include) ? include.join(',') : include;\n\n if (normalizedInclude) {\n query.include = normalizedInclude;\n }\n }\n\n return query;\n }\n}\n\nexport { JSONAPIAdapter };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2JA,IAAMM,iBAAN,cAA6BH,YAAY;;;;;CAKvCI,sBAAsB;;;;;;;;CAStBC,YACEC,KACAC,MACAC,UAA4C,CAAC,GACP;EACtC,MAAMC,OAAO,MAAMJ,YAAYC,KAAKC,MAAMC,OAAO;EACjD,MAAME,UAAwBD,KAAKC,UAAUD,KAAKC,WAAW,CAAC;EAC9DA,QAAQ,YAAaA,QAAQ,aAAwB;EAErD,OAAOD;CACT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0DA,IAAIE,uBAAuB;EACzB,MAAMA,uBAAuB,KAAKC;EAClC,IAAI,OAAOD,yBAAyB,WAClC,OAAOA;EAET,OAAQ,KAAKC,wBAAwB;CACvC;CAEA,IAAID,qBAAqBE,OAAgB;EACvC,KAAKD,wBAAwBC;CAC/B;CAEAC,SAASC,OAAcR,MAAmBS,KAAeC,WAAgD;EACvG,MAAMX,MAAM,KAAKY,SAASX,KAAKY,WAAWH,KAAKC,WAAW,UAAU;EACpE,OAAO,KAAKG,KAAKd,KAAK,OAAO,EAAEe,MAAM,EAAEC,QAAQ,EAAEC,IAAIP,IAAIQ,KAAK,GAAG,EAAE,EAAE,EAAE,CAAC;CAC1E;;;;;;;;CASAC,YAAYN,WAA2B;EACrC,MAAMO,aAAa7B,UAAUsB,SAAS;EACtC,OAAOrB,UAAU4B,UAAU;CAC7B;CAEAC,aAAaZ,OAAca,QAAqBC,UAA6C;EAC3F,MAAMR,OAAOtB,kBAAkBgB,OAAOa,QAAQC,QAAQ;EACtD,MAAMtB,OAAOsB,SAASV;EACtB,MAAMI,KAAKM,SAASN;EACpBtB,eAAAC,gBAAA,CAAA,CAAA4B,UAAAC,IAAAC,KAAA,OAAAC,SAAA;GAAA,IAAA,CAAAA,MAAA,MAAA,IAAAC,MAAO,2BAA2B3B,KAAI,kCAAmC;EAAA,EAAA,CAAE,OAAOgB,OAAO,YAAYA,GAAGY,SAAS,CAAC;EAElH,MAAM7B,MAAM,KAAKY,SAASX,MAAMgB,IAAIM,UAAU,cAAc;EAE5D,OAAO,KAAKT,KAAKd,KAAK,SAAS,EAAQe,KAAK,CAAC;CAC/C;;;;;;;;;CAWAe,WAAWP,UAAsD;EAC/D,MAAMQ,QAAoB,CAAC;EAE3B,IAAIR,UAAU;GACZ,MAAM,EAAES,YAAYT;GACpB,MAAMU,oBAAoBC,MAAMC,QAAQH,OAAO,IAAIA,QAAQd,KAAK,GAAG,IAAIc;GAEvE,IAAIC,mBACFF,MAAMC,UAAUC;EAEpB;EAEA,OAAOF;CACT;AACF"}
@@ -0,0 +1,2 @@
1
+ import { a as RequestData, i as RESTAdapter, n as JQueryRequestInit, o as fetchOptions, r as QueryState, t as FetchRequestInit } from "../rest-0NhtexIq.js";
2
+ export { FetchRequestInit, JQueryRequestInit, QueryState, RESTAdapter, RequestData, fetchOptions };