@warp-drive/core 5.8.0-beta.0 → 5.8.0-beta.1

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 (275) hide show
  1. package/README.md +23 -36
  2. package/declarations/build-config.d.ts +18 -1
  3. package/declarations/configure.d.ts +1 -1
  4. package/declarations/graph/-private/-edge-definition.d.ts +12 -2
  5. package/declarations/index.d.ts +90 -8
  6. package/declarations/reactive/-private/default-mode.d.ts +1 -1
  7. package/declarations/reactive/-private/document.d.ts +58 -46
  8. package/declarations/reactive/-private/fields/extension.d.ts +1 -1
  9. package/declarations/reactive/-private/fields/managed-array.d.ts +2 -2
  10. package/declarations/reactive/-private/fields/managed-object.d.ts +1 -1
  11. package/declarations/reactive/-private/record.d.ts +10 -1
  12. package/declarations/reactive/-private/schema.d.ts +77 -4
  13. package/declarations/reactive/-private.d.ts +1 -0
  14. package/declarations/reactive.d.ts +13 -8
  15. package/declarations/request/-private/types.d.ts +1 -1
  16. package/declarations/request.d.ts +47 -0
  17. package/declarations/signals/-leaked.d.ts +2 -0
  18. package/declarations/signals/-private.d.ts +6 -0
  19. package/declarations/{store/-private/new-core-tmp → signals}/promise-state.d.ts +2 -1
  20. package/declarations/{store/-private/new-core-tmp → signals}/request-state.d.ts +6 -6
  21. package/declarations/{store/-private/new-core-tmp → signals}/request-subscription.d.ts +4 -4
  22. package/declarations/store/-private/cache-handler/types.d.ts +2 -16
  23. package/declarations/store/-private/caches/instance-cache.d.ts +5 -6
  24. package/declarations/store/-private/default-cache-policy.d.ts +147 -129
  25. package/declarations/store/-private/managers/cache-capabilities-manager.d.ts +1 -1
  26. package/declarations/store/-private/managers/cache-key-manager.d.ts +26 -8
  27. package/declarations/store/-private/managers/cache-manager.d.ts +7 -18
  28. package/declarations/store/-private/managers/notification-manager.d.ts +1 -1
  29. package/declarations/store/-private/record-arrays/legacy-many-array.d.ts +1 -1
  30. package/declarations/store/-private/record-arrays/resource-array.d.ts +1 -1
  31. package/declarations/store/-private/store-service.d.ts +43 -64
  32. package/declarations/store/-private.d.ts +0 -6
  33. package/declarations/store/-types/q/cache-capabilities-manager.d.ts +1 -1
  34. package/declarations/store/deprecated/-private.d.ts +2 -2
  35. package/declarations/store/deprecated/store.d.ts +33 -32
  36. package/declarations/store.d.ts +1 -0
  37. package/declarations/types/cache.d.ts +8 -6
  38. package/declarations/types/record.d.ts +132 -0
  39. package/declarations/types/request.d.ts +26 -14
  40. package/declarations/types/schema/fields.d.ts +37 -13
  41. package/declarations/{store/-types/q → types/schema}/schema-service.d.ts +15 -13
  42. package/declarations/types/spec/document.d.ts +34 -0
  43. package/declarations/types/symbols.d.ts +2 -2
  44. package/declarations/types.d.ts +1 -1
  45. package/dist/build-config.js +1 -1
  46. package/dist/configure-DPUFCemT.js +1940 -0
  47. package/dist/configure.js +2 -1
  48. package/dist/default-cache-policy-D7_u4YRH.js +572 -0
  49. package/dist/{context-C_7OLieY.js → future-BKkJJkj7.js} +174 -174
  50. package/dist/graph/-private.js +16 -6
  51. package/dist/{request-state-C955e0AL.js → index-CQP2NSqg.js} +8830 -9427
  52. package/dist/index.js +6 -382
  53. package/dist/reactive/-private.js +1 -1
  54. package/dist/reactive.js +4 -903
  55. package/dist/request.js +49 -1
  56. package/dist/signals/-leaked.js +1 -0
  57. package/dist/store/-private.js +1 -2
  58. package/dist/store.js +1 -533
  59. package/dist/symbols-3C1OkYtZ.js +39 -0
  60. package/dist/types/-private.js +1 -1
  61. package/dist/types/record.js +127 -0
  62. package/dist/types/request.js +14 -12
  63. package/dist/types/runtime.js +1 -1
  64. package/dist/types/schema/fields.js +14 -0
  65. package/dist/types/schema/schema-service.js +0 -0
  66. package/dist/types/symbols.js +2 -2
  67. package/dist/unpkg/dev/-leaked-Co0EI6Go.js +1939 -0
  68. package/dist/unpkg/dev/build-config/babel-macros.js +1 -0
  69. package/dist/unpkg/dev/build-config/canary-features.js +1 -0
  70. package/dist/unpkg/dev/build-config/debugging.js +1 -0
  71. package/dist/unpkg/dev/build-config/deprecations.js +1 -0
  72. package/dist/unpkg/dev/build-config/env.js +1 -0
  73. package/dist/unpkg/dev/build-config/macros.js +1 -0
  74. package/dist/unpkg/dev/build-config.js +1 -0
  75. package/dist/unpkg/dev/configure.js +1 -0
  76. package/dist/unpkg/dev/future-DFfOzSoe.js +672 -0
  77. package/dist/unpkg/dev/graph/-private.js +3132 -0
  78. package/dist/unpkg/dev/index-BzcBOnw9.js +9392 -0
  79. package/dist/unpkg/dev/index.js +6 -0
  80. package/dist/unpkg/dev/reactive/-private.js +1 -0
  81. package/dist/unpkg/dev/reactive.js +3 -0
  82. package/dist/unpkg/dev/request.js +49 -0
  83. package/dist/unpkg/dev/runtime-E1M51_-O.js +135 -0
  84. package/dist/unpkg/dev/signals/-leaked.js +1 -0
  85. package/dist/unpkg/dev/store/-private.js +55 -0
  86. package/dist/unpkg/dev/store.js +558 -0
  87. package/dist/unpkg/dev/types/-private.js +69 -0
  88. package/dist/unpkg/dev/types/cache/aliases.js +0 -0
  89. package/dist/unpkg/dev/types/cache/change.js +0 -0
  90. package/dist/unpkg/dev/types/cache/mutations.js +0 -0
  91. package/dist/unpkg/dev/types/cache/operations.js +0 -0
  92. package/dist/unpkg/dev/types/cache/relationship.js +0 -0
  93. package/dist/unpkg/dev/types/cache.js +0 -0
  94. package/dist/unpkg/dev/types/graph.js +0 -0
  95. package/dist/unpkg/dev/types/identifier.js +61 -0
  96. package/dist/unpkg/dev/types/json/raw.js +0 -0
  97. package/dist/unpkg/dev/types/params.js +0 -0
  98. package/dist/unpkg/dev/types/record.js +191 -0
  99. package/dist/unpkg/dev/types/request.js +77 -0
  100. package/dist/unpkg/dev/types/runtime.js +34 -0
  101. package/dist/unpkg/dev/types/schema/concepts.js +0 -0
  102. package/dist/unpkg/dev/types/schema/fields.js +505 -0
  103. package/dist/unpkg/dev/types/schema/fields.type-test.js +0 -0
  104. package/dist/unpkg/dev/types/schema/schema-service.js +0 -0
  105. package/dist/unpkg/dev/types/spec/document.js +0 -0
  106. package/dist/unpkg/dev/types/spec/error.js +0 -0
  107. package/dist/unpkg/dev/types/spec/json-api-raw.js +0 -0
  108. package/dist/unpkg/dev/types/symbols.js +84 -0
  109. package/dist/unpkg/dev/types/utils.js +0 -0
  110. package/dist/unpkg/dev/types.js +0 -0
  111. package/dist/unpkg/dev/utils/string.js +91 -0
  112. package/dist/unpkg/dev-deprecated/-leaked-DjMeRqdU.js +1939 -0
  113. package/dist/unpkg/dev-deprecated/-private-3C1OkYtZ.js +39 -0
  114. package/dist/unpkg/dev-deprecated/build-config/babel-macros.js +1 -0
  115. package/dist/unpkg/dev-deprecated/build-config/canary-features.js +1 -0
  116. package/dist/unpkg/dev-deprecated/build-config/debugging.js +1 -0
  117. package/dist/unpkg/dev-deprecated/build-config/deprecations.js +1 -0
  118. package/dist/unpkg/dev-deprecated/build-config/env.js +1 -0
  119. package/dist/unpkg/dev-deprecated/build-config/macros.js +1 -0
  120. package/dist/unpkg/dev-deprecated/build-config.js +1 -0
  121. package/dist/unpkg/dev-deprecated/configure.js +1 -0
  122. package/dist/unpkg/dev-deprecated/future-DFfOzSoe.js +672 -0
  123. package/dist/unpkg/dev-deprecated/graph/-private.js +3327 -0
  124. package/dist/unpkg/dev-deprecated/index-6TnTv-WG.js +10007 -0
  125. package/dist/unpkg/dev-deprecated/index.js +5 -0
  126. package/dist/unpkg/dev-deprecated/reactive/-private.js +1 -0
  127. package/dist/unpkg/dev-deprecated/reactive.js +3 -0
  128. package/dist/unpkg/dev-deprecated/request.js +49 -0
  129. package/dist/unpkg/dev-deprecated/runtime-DAu5b0IR.js +135 -0
  130. package/dist/unpkg/dev-deprecated/signals/-leaked.js +1 -0
  131. package/dist/unpkg/dev-deprecated/store/-private.js +1 -0
  132. package/dist/unpkg/dev-deprecated/store.js +558 -0
  133. package/dist/unpkg/dev-deprecated/types/-private.js +69 -0
  134. package/dist/unpkg/dev-deprecated/types/cache/aliases.js +0 -0
  135. package/dist/unpkg/dev-deprecated/types/cache/change.js +0 -0
  136. package/dist/unpkg/dev-deprecated/types/cache/mutations.js +0 -0
  137. package/dist/unpkg/dev-deprecated/types/cache/operations.js +0 -0
  138. package/dist/unpkg/dev-deprecated/types/cache/relationship.js +0 -0
  139. package/dist/unpkg/dev-deprecated/types/cache.js +0 -0
  140. package/dist/unpkg/dev-deprecated/types/graph.js +0 -0
  141. package/dist/unpkg/dev-deprecated/types/identifier.js +61 -0
  142. package/dist/unpkg/dev-deprecated/types/json/raw.js +0 -0
  143. package/dist/unpkg/dev-deprecated/types/params.js +0 -0
  144. package/dist/unpkg/dev-deprecated/types/record.js +191 -0
  145. package/dist/unpkg/dev-deprecated/types/request.js +77 -0
  146. package/dist/unpkg/dev-deprecated/types/runtime.js +34 -0
  147. package/dist/unpkg/dev-deprecated/types/schema/concepts.js +0 -0
  148. package/dist/unpkg/dev-deprecated/types/schema/fields.js +505 -0
  149. package/dist/unpkg/dev-deprecated/types/schema/fields.type-test.js +0 -0
  150. package/dist/unpkg/dev-deprecated/types/schema/schema-service.js +0 -0
  151. package/dist/unpkg/dev-deprecated/types/spec/document.js +0 -0
  152. package/dist/unpkg/dev-deprecated/types/spec/error.js +0 -0
  153. package/dist/unpkg/dev-deprecated/types/spec/json-api-raw.js +0 -0
  154. package/dist/unpkg/dev-deprecated/types/symbols.js +84 -0
  155. package/dist/unpkg/dev-deprecated/types/utils.js +0 -0
  156. package/dist/unpkg/dev-deprecated/types.js +0 -0
  157. package/dist/unpkg/dev-deprecated/utils/string.js +91 -0
  158. package/dist/unpkg/prod/-leaked-DUONXQDB.js +1676 -0
  159. package/dist/unpkg/prod/-private-sql1_mdx.js +39 -0
  160. package/dist/unpkg/prod/build-config/babel-macros.js +1 -0
  161. package/dist/unpkg/prod/build-config/canary-features.js +1 -0
  162. package/dist/unpkg/prod/build-config/debugging.js +1 -0
  163. package/dist/unpkg/prod/build-config/deprecations.js +1 -0
  164. package/dist/unpkg/prod/build-config/env.js +1 -0
  165. package/dist/unpkg/prod/build-config/macros.js +1 -0
  166. package/dist/unpkg/prod/build-config.js +1 -0
  167. package/dist/unpkg/prod/configure.js +2 -0
  168. package/dist/unpkg/prod/graph/-private.js +2235 -0
  169. package/dist/unpkg/prod/handler-EU_8ncB2.js +1619 -0
  170. package/dist/unpkg/prod/index.js +483 -0
  171. package/dist/unpkg/prod/promise-cache-DIT8Ypjq.js +19 -0
  172. package/dist/unpkg/prod/reactive/-private.js +1 -0
  173. package/dist/unpkg/prod/reactive.js +30 -0
  174. package/dist/unpkg/prod/request-BrJSCG6r.js +421 -0
  175. package/dist/unpkg/prod/request.js +2 -0
  176. package/dist/unpkg/prod/schema-BSkHyoWz.js +5219 -0
  177. package/dist/unpkg/prod/signals/-leaked.js +1 -0
  178. package/dist/unpkg/prod/store/-private.js +126 -0
  179. package/dist/unpkg/prod/store.js +437 -0
  180. package/dist/unpkg/prod/types/-private.js +49 -0
  181. package/dist/unpkg/prod/types/cache/aliases.js +0 -0
  182. package/dist/unpkg/prod/types/cache/change.js +0 -0
  183. package/dist/unpkg/prod/types/cache/mutations.js +0 -0
  184. package/dist/unpkg/prod/types/cache/operations.js +0 -0
  185. package/dist/unpkg/prod/types/cache/relationship.js +0 -0
  186. package/dist/unpkg/prod/types/cache.js +0 -0
  187. package/dist/unpkg/prod/types/graph.js +0 -0
  188. package/dist/unpkg/prod/types/identifier.js +61 -0
  189. package/dist/unpkg/prod/types/json/raw.js +0 -0
  190. package/dist/unpkg/prod/types/params.js +0 -0
  191. package/dist/unpkg/prod/types/record.js +191 -0
  192. package/dist/unpkg/prod/types/request.js +77 -0
  193. package/dist/unpkg/prod/types/runtime.js +34 -0
  194. package/dist/unpkg/prod/types/schema/concepts.js +0 -0
  195. package/dist/unpkg/prod/types/schema/fields.js +505 -0
  196. package/dist/unpkg/prod/types/schema/fields.type-test.js +0 -0
  197. package/dist/unpkg/prod/types/schema/schema-service.js +0 -0
  198. package/dist/unpkg/prod/types/spec/document.js +0 -0
  199. package/dist/unpkg/prod/types/spec/error.js +0 -0
  200. package/dist/unpkg/prod/types/spec/json-api-raw.js +0 -0
  201. package/dist/unpkg/prod/types/symbols.js +84 -0
  202. package/dist/unpkg/prod/types/utils.js +0 -0
  203. package/dist/unpkg/prod/types.js +0 -0
  204. package/dist/unpkg/prod/utils/string.js +72 -0
  205. package/dist/unpkg/prod-deprecated/-leaked-DRNv9VIX.js +1676 -0
  206. package/dist/unpkg/prod-deprecated/-private-3C1OkYtZ.js +39 -0
  207. package/dist/unpkg/prod-deprecated/build-config/babel-macros.js +1 -0
  208. package/dist/unpkg/prod-deprecated/build-config/canary-features.js +1 -0
  209. package/dist/unpkg/prod-deprecated/build-config/debugging.js +1 -0
  210. package/dist/unpkg/prod-deprecated/build-config/deprecations.js +1 -0
  211. package/dist/unpkg/prod-deprecated/build-config/env.js +1 -0
  212. package/dist/unpkg/prod-deprecated/build-config/macros.js +1 -0
  213. package/dist/unpkg/prod-deprecated/build-config.js +1 -0
  214. package/dist/unpkg/prod-deprecated/configure.js +2 -0
  215. package/dist/unpkg/prod-deprecated/graph/-private.js +2408 -0
  216. package/dist/unpkg/prod-deprecated/handler-CCIu4sQ3.js +334 -0
  217. package/dist/unpkg/prod-deprecated/hooks-Dv4Np0MY.js +26 -0
  218. package/dist/unpkg/prod-deprecated/index.js +483 -0
  219. package/dist/unpkg/prod-deprecated/promise-cache-DIT8Ypjq.js +19 -0
  220. package/dist/unpkg/prod-deprecated/reactive/-private.js +1 -0
  221. package/dist/unpkg/prod-deprecated/reactive.js +5 -0
  222. package/dist/unpkg/prod-deprecated/request-BrJSCG6r.js +421 -0
  223. package/dist/unpkg/prod-deprecated/request.js +2 -0
  224. package/dist/unpkg/prod-deprecated/schema-CJcjHv0E.js +6939 -0
  225. package/dist/unpkg/prod-deprecated/signals/-leaked.js +1 -0
  226. package/dist/unpkg/prod-deprecated/store/-private.js +88 -0
  227. package/dist/unpkg/prod-deprecated/store.js +437 -0
  228. package/dist/unpkg/prod-deprecated/types/-private.js +49 -0
  229. package/dist/unpkg/prod-deprecated/types/cache/aliases.js +0 -0
  230. package/dist/unpkg/prod-deprecated/types/cache/change.js +0 -0
  231. package/dist/unpkg/prod-deprecated/types/cache/mutations.js +0 -0
  232. package/dist/unpkg/prod-deprecated/types/cache/operations.js +0 -0
  233. package/dist/unpkg/prod-deprecated/types/cache/relationship.js +0 -0
  234. package/dist/unpkg/prod-deprecated/types/cache.js +0 -0
  235. package/dist/unpkg/prod-deprecated/types/graph.js +0 -0
  236. package/dist/unpkg/prod-deprecated/types/identifier.js +61 -0
  237. package/dist/unpkg/prod-deprecated/types/json/raw.js +0 -0
  238. package/dist/unpkg/prod-deprecated/types/params.js +0 -0
  239. package/dist/unpkg/prod-deprecated/types/record.js +191 -0
  240. package/dist/unpkg/prod-deprecated/types/request.js +77 -0
  241. package/dist/unpkg/prod-deprecated/types/runtime.js +34 -0
  242. package/dist/unpkg/prod-deprecated/types/schema/concepts.js +0 -0
  243. package/dist/unpkg/prod-deprecated/types/schema/fields.js +505 -0
  244. package/dist/unpkg/prod-deprecated/types/schema/fields.type-test.js +0 -0
  245. package/dist/unpkg/prod-deprecated/types/schema/schema-service.js +0 -0
  246. package/dist/unpkg/prod-deprecated/types/spec/document.js +0 -0
  247. package/dist/unpkg/prod-deprecated/types/spec/error.js +0 -0
  248. package/dist/unpkg/prod-deprecated/types/spec/json-api-raw.js +0 -0
  249. package/dist/unpkg/prod-deprecated/types/symbols.js +84 -0
  250. package/dist/unpkg/prod-deprecated/types/utils.js +0 -0
  251. package/dist/unpkg/prod-deprecated/types.js +0 -0
  252. package/dist/unpkg/prod-deprecated/utils/string.js +72 -0
  253. package/logos/README.md +2 -2
  254. package/logos/logo-yellow-slab.svg +1 -0
  255. package/logos/word-mark-black.svg +1 -0
  256. package/logos/word-mark-white.svg +1 -0
  257. package/package.json +12 -4
  258. package/declarations/store/-private/new-core-tmp/expensive-subscription.d.ts +0 -24
  259. package/dist/configure-C3x8YXzL.js +0 -181
  260. package/logos/NCC-1701-a-blue.svg +0 -4
  261. package/logos/NCC-1701-a-gold.svg +0 -4
  262. package/logos/NCC-1701-a-gold_100.svg +0 -1
  263. package/logos/NCC-1701-a-gold_base-64.txt +0 -1
  264. package/logos/NCC-1701-a.svg +0 -4
  265. package/logos/docs-badge.svg +0 -2
  266. package/logos/ember-data-logo-dark.svg +0 -12
  267. package/logos/ember-data-logo-light.svg +0 -12
  268. package/logos/social1.png +0 -0
  269. package/logos/social2.png +0 -0
  270. package/logos/warp-drive-logo-dark.svg +0 -4
  271. package/logos/warp-drive-logo-gold.svg +0 -4
  272. /package/declarations/{store/-private/new-core-tmp → signals}/reactivity/configure.d.ts +0 -0
  273. /package/declarations/{store/-private/new-core-tmp → signals}/reactivity/internal.d.ts +0 -0
  274. /package/declarations/{store/-private/new-core-tmp → signals}/reactivity/signal.d.ts +0 -0
  275. /package/dist/{symbols-sql1_mdx.js → unpkg/dev/-private-sql1_mdx.js} +0 -0
@@ -0,0 +1,421 @@
1
+ import { STRUCTURED, IS_FUTURE } from './types/request.js';
2
+ import { getOrSetGlobal } from './types/-private.js';
3
+ import { a as setRequestResult } from "./promise-cache-DIT8Ypjq.js";
4
+ function upgradeHeaders(headers) {
5
+ headers.clone = () => {
6
+ return new Headers(headers);
7
+ };
8
+ headers.toJSON = () => {
9
+ return Array.from(headers);
10
+ };
11
+ return headers;
12
+ }
13
+ function cloneResponseProperties(response) {
14
+ const {
15
+ headers,
16
+ ok,
17
+ redirected,
18
+ status,
19
+ statusText,
20
+ type,
21
+ url
22
+ } = response;
23
+ upgradeHeaders(headers);
24
+ return {
25
+ headers: headers,
26
+ ok,
27
+ redirected,
28
+ status,
29
+ statusText,
30
+ type,
31
+ url
32
+ };
33
+ }
34
+ class ContextOwner {
35
+ hasSetStream = false;
36
+ hasSetResponse = false;
37
+ hasSubscribers = false;
38
+ stream = createDeferred();
39
+ response = null;
40
+ nextCalled = 0;
41
+ constructor(request, god, isRoot = false) {
42
+ this.isRoot = isRoot;
43
+ this.requestId = god.id;
44
+ this.controller = request.controller || god.controller;
45
+ this.stream.promise.sizeHint = 0;
46
+ if (request.controller) {
47
+ if (request.controller !== god.controller) {
48
+ god.controller.signal.addEventListener('abort', () => {
49
+ this.controller.abort(god.controller.signal.reason);
50
+ });
51
+ }
52
+ delete request.controller;
53
+ }
54
+ let enhancedRequest = Object.assign({
55
+ signal: this.controller.signal
56
+ }, request);
57
+ {
58
+ if (request.headers) {
59
+ upgradeHeaders(request.headers);
60
+ }
61
+ }
62
+ this.enhancedRequest = enhancedRequest;
63
+ this.request = request;
64
+ this.god = god;
65
+ this.stream.promise = this.stream.promise.then(stream => {
66
+ if (this.god.stream === stream && this.hasSubscribers) {
67
+ this.god.stream = null;
68
+ }
69
+ return stream;
70
+ });
71
+ }
72
+ get hasRequestedStream() {
73
+ return this.god.hasRequestedStream;
74
+ }
75
+ getResponse() {
76
+ if (this.hasSetResponse) {
77
+ return this.response;
78
+ }
79
+ if (this.nextCalled === 1) {
80
+ return this.god.response;
81
+ }
82
+ return null;
83
+ }
84
+ getStream() {
85
+ if (this.isRoot) {
86
+ this.god.hasRequestedStream = true;
87
+ }
88
+ if (!this.hasSetResponse) {
89
+ const hint = this.god.response?.headers?.get('content-length');
90
+ this.stream.promise.sizeHint = hint ? parseInt(hint, 10) : 0;
91
+ }
92
+ this.hasSubscribers = true;
93
+ return this.stream.promise;
94
+ }
95
+ abort(reason) {
96
+ this.controller.abort(reason);
97
+ }
98
+ setStream(stream) {
99
+ if (!this.hasSetStream) {
100
+ this.hasSetStream = true;
101
+ if (!(stream instanceof Promise)) {
102
+ this.god.stream = stream;
103
+ }
104
+ // @ts-expect-error
105
+ this.stream.resolve(stream);
106
+ }
107
+ }
108
+ resolveStream() {
109
+ this.setStream(this.nextCalled === 1 ? this.god.stream : null);
110
+ }
111
+ setResponse(response) {
112
+ if (this.hasSetResponse) {
113
+ return;
114
+ }
115
+ this.hasSetResponse = true;
116
+ if (response instanceof Response) {
117
+ // TODO potentially avoid cloning in prod
118
+ let responseData = cloneResponseProperties(response);
119
+ this.response = responseData;
120
+ this.god.response = responseData;
121
+ const sizeHint = response.headers?.get('content-length');
122
+ this.stream.promise.sizeHint = sizeHint ? parseInt(sizeHint, 10) : 0;
123
+ } else {
124
+ this.response = response;
125
+ this.god.response = response;
126
+ }
127
+ }
128
+ }
129
+ class Context {
130
+ /** @internal */
131
+
132
+ /** @internal */
133
+
134
+ /** @internal */
135
+
136
+ constructor(owner, isCacheHandler) {
137
+ this.id = owner.requestId;
138
+ this.___owner = owner;
139
+ this.request = owner.enhancedRequest;
140
+ this._isCacheHandler = isCacheHandler;
141
+ this._finalized = false;
142
+ }
143
+ setStream(stream) {
144
+ this.___owner.setStream(stream);
145
+ }
146
+ setResponse(response) {
147
+ this.___owner.setResponse(response);
148
+ }
149
+ setIdentifier(identifier) {
150
+ this.___owner.god.identifier = identifier;
151
+ }
152
+ get hasRequestedStream() {
153
+ return this.___owner.hasRequestedStream;
154
+ }
155
+
156
+ /** @private */
157
+ _finalize() {
158
+ this._finalized = true;
159
+ }
160
+ }
161
+ const IS_CACHE_HANDLER = getOrSetGlobal('IS_CACHE_HANDLER', Symbol('IS_CACHE_HANDLER'));
162
+ function curryFuture(owner, inbound, outbound) {
163
+ owner.setStream(inbound.getStream());
164
+ inbound.then(doc => {
165
+ const document = {
166
+ [STRUCTURED]: true,
167
+ request: owner.request,
168
+ response: doc.response,
169
+ content: doc.content
170
+ };
171
+ outbound.resolve(document);
172
+ }, error => {
173
+ if (isDoc(error)) {
174
+ owner.setStream(owner.god.stream);
175
+ }
176
+ if (!error || !(error instanceof Error)) {
177
+ try {
178
+ throw new Error(error ? error : `Request Rejected with an Unknown Error`);
179
+ } catch (e) {
180
+ if (error && typeof error === 'object') {
181
+ Object.assign(e, error);
182
+ e.message = error.message || `Request Rejected with an Unknown Error`;
183
+ }
184
+ error = e;
185
+ }
186
+ }
187
+ error[STRUCTURED] = true;
188
+ error.request = owner.request;
189
+ error.response = owner.getResponse();
190
+ error.error = error.error || error.message;
191
+ outbound.reject(error);
192
+ });
193
+ return outbound.promise;
194
+ }
195
+ function isDoc(doc) {
196
+ return doc && doc[STRUCTURED] === true;
197
+ }
198
+ function ensureDoc(owner, content, isError) {
199
+ if (isDoc(content)) {
200
+ return content;
201
+ }
202
+ if (isError) {
203
+ return {
204
+ [STRUCTURED]: true,
205
+ request: owner.request,
206
+ response: owner.getResponse(),
207
+ error: content
208
+ };
209
+ }
210
+ return {
211
+ [STRUCTURED]: true,
212
+ request: owner.request,
213
+ response: owner.getResponse(),
214
+ content: content
215
+ };
216
+ }
217
+
218
+ /**
219
+ * Additional properties exposed on errors thrown by the
220
+ * {@link Fetch | Fetch Handler}.
221
+ *
222
+ * In the case of an Abort or system/browser level issue,
223
+ * this extends {@link DOMException}.
224
+ *
225
+ * Else it extends from {@link AggregateError} if the
226
+ * response includes an array of errors, falling back
227
+ * to {@link Error} as its base.
228
+ */
229
+
230
+ function enhanceReason(reason) {
231
+ return new DOMException(reason || 'The user aborted a request.', 'AbortError');
232
+ }
233
+ function handleOutcome(owner, inbound, outbound) {
234
+ inbound.then(content => {
235
+ if (owner.controller.signal.aborted) {
236
+ // the next function did not respect the signal, we handle it here
237
+ outbound.reject(enhanceReason(owner.controller.signal.reason));
238
+ return;
239
+ }
240
+ if (isDoc(content)) {
241
+ owner.setStream(owner.god.stream);
242
+ content = content.content;
243
+ }
244
+ const document = {
245
+ [STRUCTURED]: true,
246
+ request: owner.request,
247
+ response: owner.getResponse(),
248
+ content
249
+ };
250
+ outbound.resolve(document);
251
+ }, error => {
252
+ if (isDoc(error)) {
253
+ owner.setStream(owner.god.stream);
254
+ }
255
+ if (!error || !(error instanceof Error)) {
256
+ try {
257
+ throw new Error(error ? error : `Request Rejected with an Unknown Error`);
258
+ } catch (e) {
259
+ if (error && typeof error === 'object') {
260
+ Object.assign(e, error);
261
+ e.message = error.message || `Request Rejected with an Unknown Error`;
262
+ }
263
+ error = e;
264
+ }
265
+ }
266
+ error[STRUCTURED] = true;
267
+ error.request = owner.request;
268
+ error.response = owner.getResponse();
269
+ error.error = error.error || error.message;
270
+ outbound.reject(error);
271
+ });
272
+ return outbound.promise;
273
+ }
274
+ function isCacheHandler(handler, index) {
275
+ return index === 0 && Boolean(handler[IS_CACHE_HANDLER]);
276
+ }
277
+ function executeNextHandler(wares, request, i, god) {
278
+ const owner = new ContextOwner(request, god, i === 0);
279
+ function next(r) {
280
+ owner.nextCalled++;
281
+ return executeNextHandler(wares, r, i + 1, god);
282
+ }
283
+ const _isCacheHandler = isCacheHandler(wares[i], i);
284
+ const context = new Context(owner, _isCacheHandler);
285
+ let outcome;
286
+ try {
287
+ outcome = wares[i].request(context, next);
288
+ if (_isCacheHandler) {
289
+ context._finalize();
290
+ }
291
+ if (!!outcome && _isCacheHandler) {
292
+ if (!(outcome instanceof Promise)) {
293
+ setRequestResult(owner.requestId, {
294
+ isError: false,
295
+ result: ensureDoc(owner, outcome, false)
296
+ });
297
+ outcome = Promise.resolve(outcome);
298
+ }
299
+ }
300
+ } catch (e) {
301
+ if (_isCacheHandler) {
302
+ setRequestResult(owner.requestId, {
303
+ isError: true,
304
+ result: ensureDoc(owner, e, true)
305
+ });
306
+ }
307
+ // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors
308
+ outcome = Promise.reject(e);
309
+ }
310
+ const future = createFuture(owner);
311
+ if (isFuture(outcome)) {
312
+ return curryFuture(owner, outcome, future);
313
+ }
314
+ return handleOutcome(owner, outcome, future);
315
+ }
316
+ function isFuture(maybe) {
317
+ return Boolean(maybe && maybe instanceof Promise && maybe[IS_FUTURE] === true);
318
+ }
319
+ function createDeferred() {
320
+ let resolve;
321
+ let reject;
322
+ const promise = new Promise((res, rej) => {
323
+ resolve = res;
324
+ reject = rej;
325
+ });
326
+ return {
327
+ resolve,
328
+ reject,
329
+ promise
330
+ };
331
+ }
332
+ function upgradePromise(promise, future) {
333
+ promise[IS_FUTURE] = true;
334
+ // eslint-disable-next-line @typescript-eslint/unbound-method
335
+ promise.getStream = future.getStream;
336
+ // eslint-disable-next-line @typescript-eslint/unbound-method
337
+ promise.abort = future.abort;
338
+ // eslint-disable-next-line @typescript-eslint/unbound-method
339
+ promise.onFinalize = future.onFinalize;
340
+ promise.id = future.id;
341
+ promise.lid = future.lid;
342
+ promise.requester = future.requester;
343
+ return promise;
344
+ }
345
+ function createFuture(owner) {
346
+ const deferred = createDeferred();
347
+ let {
348
+ promise
349
+ } = deferred;
350
+ let cbs;
351
+ promise = promise.finally(() => {
352
+ owner.resolveStream();
353
+ if (cbs) {
354
+ cbs.forEach(cb => cb());
355
+ }
356
+ });
357
+ promise.onFinalize = fn => {
358
+ cbs = cbs || [];
359
+ cbs.push(fn);
360
+ };
361
+ promise[IS_FUTURE] = true;
362
+ promise.getStream = () => {
363
+ return owner.getStream();
364
+ };
365
+ promise.abort = reason => {
366
+ owner.abort(enhanceReason(reason));
367
+ };
368
+ promise.id = owner.requestId;
369
+ promise.lid = owner.god.identifier;
370
+ promise.requester = owner.god.requester;
371
+ deferred.promise = promise;
372
+ return deferred;
373
+ }
374
+
375
+ /**
376
+ * Brands the supplied object with the supplied response type.
377
+ *
378
+ * ```ts
379
+ * import type { ReactiveDataDocument } from '@warp-drive/core/reactive';
380
+ * import { withResponseType } from '@warp-drive/core/request';
381
+ * import type { User } from '#/data/user.ts'
382
+ *
383
+ * const result = await store.request(
384
+ * withResponseType<ReactiveDataDocument<User>>({ url: '/users/1' })
385
+ * );
386
+ *
387
+ * result.content.data; // will have type User
388
+ * ```
389
+ *
390
+ */
391
+ function withResponseType(obj) {
392
+ return obj;
393
+ }
394
+
395
+ /**
396
+ * Brands the supplied object with the supplied response type
397
+ * wrapped in {@link ReactiveDataDocument}. This is a convenience for
398
+ * the common case of using {@link withResponseType} with `ReactiveDataDocument`.
399
+ *
400
+ * ```ts
401
+ * import { withReactiveResponse } from '@warp-drive/core/request';
402
+ * import type { User } from '#/data/user.ts'
403
+ *
404
+ * const result = await store.request(
405
+ * withReactiveResponse<User>({ url: '/users/1' })
406
+ * );
407
+ *
408
+ * result.content.data; // will have type User
409
+ * ```
410
+ *
411
+ * @public
412
+ */
413
+ function withReactiveResponse(obj) {
414
+ return obj;
415
+ }
416
+
417
+ /**
418
+ * @deprecated use {@link withResponseType} instead
419
+ */
420
+ const withBrand = withResponseType;
421
+ export { IS_CACHE_HANDLER as I, withResponseType as a, withReactiveResponse as b, cloneResponseProperties as c, createDeferred as d, executeNextHandler as e, upgradePromise as u, withBrand as w };
@@ -0,0 +1,2 @@
1
+ export { d as createDeferred, w as withBrand, b as withReactiveResponse, a as withResponseType } from "./request-BrJSCG6r.js";
2
+ export { b as getPromiseResult, s as setPromiseResult } from "./promise-cache-DIT8Ypjq.js";