@ember-data-mirror/store 5.9.0-beta.0 → 5.9.0-beta.2

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.
package/CHANGELOG.md ADDED
@@ -0,0 +1,253 @@
1
+ # @ember-data-mirror/store Changelog
2
+
3
+ ## v5.8.0 (2025-10-07)
4
+
5
+ #### :house: Internal
6
+
7
+ * [#10397](https://github.com/warp-drive-data/warp-drive/pull/10397) chore: begin converting core-tests to diagnostic and vite minimal ([@runspired](https://github.com/runspired))
8
+ * [#10349](https://github.com/warp-drive-data/warp-drive/pull/10349) chore: update all emberjs/data links to warp-drive-data/warp-drive ([@runspired](https://github.com/runspired))
9
+
10
+ #### Committers: (1)
11
+
12
+ Chris Thoburn ([@runspired](https://github.com/runspired))
13
+
14
+ ## v5.7.0 (2025-08-26)
15
+
16
+ #### :house: Internal
17
+
18
+ * [#10130](https://github.com/warp-drive-data/warp-drive/pull/10130) chore: bump pnpm version ([@runspired](https://github.com/runspired))
19
+ * [#10129](https://github.com/warp-drive-data/warp-drive/pull/10129) chore: bump typescript to 5.9 ([@runspired](https://github.com/runspired))
20
+ * [#10124](https://github.com/warp-drive-data/warp-drive/pull/10124) chore: mark a few types as private ([@runspired](https://github.com/runspired))
21
+ * [#10083](https://github.com/warp-drive-data/warp-drive/pull/10083) Fix deprecation handling for blueprint/tutorial ([@runspired](https://github.com/runspired))
22
+
23
+ #### Committers: (1)
24
+
25
+ Chris Thoburn ([@runspired](https://github.com/runspired))
26
+
27
+ ## v5.6.0 (2025-07-01)
28
+
29
+ #### :memo: Documentation
30
+
31
+ * [#9995](https://github.com/warp-drive-data/warp-drive/pull/9995) docs: add docs for Checkout, instantiateRecord, teardownRecorod ([@richgt](https://github.com/richgt))
32
+ * [#9991](https://github.com/warp-drive-data/warp-drive/pull/9991) chore: improve output of typedoc ([@runspired](https://github.com/runspired))
33
+ * [#9989](https://github.com/warp-drive-data/warp-drive/pull/9989) [BREAKING] docs: integrate API docs to the new docs site ([@runspired](https://github.com/runspired))
34
+ * [#9983](https://github.com/warp-drive-data/warp-drive/pull/9983) feat: revamp guide, make builder typing easier ([@runspired](https://github.com/runspired))
35
+ * [#9940](https://github.com/warp-drive-data/warp-drive/pull/9940) feat: improved manual ([@runspired](https://github.com/runspired))
36
+
37
+ #### :rocket: Enhancement
38
+
39
+ * [#10011](https://github.com/warp-drive-data/warp-drive/pull/10011) feat: @warp-drive-mirror/core/build-config ([@runspired](https://github.com/runspired))
40
+ * [#9998](https://github.com/warp-drive-data/warp-drive/pull/9998) feat: extract @ember-data-mirror/store => @warp-drive-mirror/core ([@runspired](https://github.com/runspired))
41
+
42
+ #### :bug: Bug Fix
43
+
44
+ * [#9982](https://github.com/warp-drive-data/warp-drive/pull/9982) fix: simplify peer configuration to avoid bringing extra copies of glimmer/validator ([@runspired](https://github.com/runspired))
45
+
46
+ #### :house: Internal
47
+
48
+ * [#10042](https://github.com/warp-drive-data/warp-drive/pull/10042) chore: upgrade to vite7 ([@runspired](https://github.com/runspired))
49
+ * [#10040](https://github.com/warp-drive-data/warp-drive/pull/10040) chore: isolated declarations ([@runspired](https://github.com/runspired))
50
+ * [#10039](https://github.com/warp-drive-data/warp-drive/pull/10039) chore: bump pnpm ([@runspired](https://github.com/runspired))
51
+ * [#9994](https://github.com/warp-drive-data/warp-drive/pull/9994) chore: [@warp-drive-mirror/core] migrate @warp-drive-mirror/core-types @ember-data-mirror/request ([@runspired](https://github.com/runspired))
52
+
53
+ #### Committers: (2)
54
+
55
+ Rich Glazerman ([@richgt](https://github.com/richgt))
56
+ Chris Thoburn ([@runspired](https://github.com/runspired))
57
+
58
+ ## v5.5.0 (2025-05-08)
59
+
60
+ #### :memo: Documentation
61
+
62
+ * [#9975](https://github.com/warp-drive-data/warp-drive/pull/9975) types: fixup PolarisMode schema types to check better ([@runspired](https://github.com/runspired))
63
+
64
+ #### :rocket: Enhancement
65
+
66
+ * [#9968](https://github.com/warp-drive-data/warp-drive/pull/9968) feat: unlock universal 🌌 ([@runspired](https://github.com/runspired))
67
+ * [#9965](https://github.com/warp-drive-data/warp-drive/pull/9965) feat: universal reactivity hooks ([@runspired](https://github.com/runspired))
68
+
69
+ #### :bug: Bug Fix
70
+
71
+ * [#9947](https://github.com/warp-drive-data/warp-drive/pull/9947) fix: dont notify during population if the array is a collection ([@runspired](https://github.com/runspired))
72
+
73
+ #### :house: Internal
74
+
75
+ * [#9965](https://github.com/warp-drive-data/warp-drive/pull/9965) feat: universal reactivity hooks ([@runspired](https://github.com/runspired))
76
+ * [#9964](https://github.com/warp-drive-data/warp-drive/pull/9964) chore: refactor PromiseState and RequestState to prep for @warp-drive-mirror/core ([@runspired](https://github.com/runspired))
77
+
78
+ #### Committers: (1)
79
+
80
+ Chris Thoburn ([@runspired](https://github.com/runspired))
81
+
82
+ ## v5.4.0 (2025-04-11)
83
+
84
+ #### :memo: Documentation
85
+
86
+ * [#9911](https://github.com/warp-drive-data/warp-drive/pull/9911) Add a URL to the deprecate Store extends EmberObject ([@kategengler](https://github.com/kategengler))
87
+ * [#9648](https://github.com/warp-drive-data/warp-drive/pull/9648) docs: cleanup usage pattern for RequestManager configuration on store ([@runspired](https://github.com/runspired))
88
+ * [#9586](https://github.com/warp-drive-data/warp-drive/pull/9586) Fix `until` in deprecation warning `ember-data:schema-service-updates` (must be 6.0 instead of 5.0) ([@mkszepp](https://github.com/mkszepp))
89
+
90
+ #### :rocket: Enhancement
91
+
92
+ * [#9884](https://github.com/warp-drive-data/warp-drive/pull/9884) feat: cache patch operations for relationships and documents ([@runspired](https://github.com/runspired))
93
+ * [#9896](https://github.com/warp-drive-data/warp-drive/pull/9896) feat: whoa debugging ([@runspired](https://github.com/runspired))
94
+ * [#9883](https://github.com/warp-drive-data/warp-drive/pull/9883) feat: make documents react to cache updates ([@runspired](https://github.com/runspired))
95
+ * [#9769](https://github.com/warp-drive-data/warp-drive/pull/9769) chore: remove restriction on new field kinds being used with legacy mode ([@runspired](https://github.com/runspired))
96
+ * [#9766](https://github.com/warp-drive-data/warp-drive/pull/9766) feat: improve debuggability of SchemaRecord, RecordArray and Identifier ([@runspired](https://github.com/runspired))
97
+ * [#9757](https://github.com/warp-drive-data/warp-drive/pull/9757) feat: schema type utils ([@runspired](https://github.com/runspired))
98
+ * [#9676](https://github.com/warp-drive-data/warp-drive/pull/9676) Feat: hasMany linksMode ([@leoeuclids](https://github.com/leoeuclids))
99
+ * [#9686](https://github.com/warp-drive-data/warp-drive/pull/9686) feat: immutable records should show only remote state, make builder types more useful ([@runspired](https://github.com/runspired))
100
+ * [#9683](https://github.com/warp-drive-data/warp-drive/pull/9683) feat: runtime logging activation ([@runspired](https://github.com/runspired))
101
+ * [#9585](https://github.com/warp-drive-data/warp-drive/pull/9585) chore: stub out linksMode work ([@runspired](https://github.com/runspired))
102
+ * [#9541](https://github.com/warp-drive-data/warp-drive/pull/9541) feat: eslint-plugin-(ember-data|warp-drive) ([@runspired](https://github.com/runspired))
103
+ * [#9503](https://github.com/warp-drive-data/warp-drive/pull/9503) feat: request deduping & <Request /> invalidate subscriptions ([@runspired](https://github.com/runspired))
104
+ * [#8698](https://github.com/warp-drive-data/warp-drive/pull/8698) feat: DataWorker | robust cross-tab request deduplication and replay ([@runspired](https://github.com/runspired))
105
+
106
+ #### :bug: Bug Fix
107
+
108
+ * [#9592](https://github.com/warp-drive-data/warp-drive/pull/9592) fix: add ember-source as explicit peer-dep for use of @ember/debug ([@runspired](https://github.com/runspired))
109
+ * [#9583](https://github.com/warp-drive-data/warp-drive/pull/9583) feat|doc|fix: cleanup includes story ([@runspired](https://github.com/runspired))
110
+
111
+ #### :house: Internal
112
+
113
+ * [#9780](https://github.com/warp-drive-data/warp-drive/pull/9780) chore: bump @glimmer/component ([@runspired](https://github.com/runspired))
114
+ * [#9761](https://github.com/warp-drive-data/warp-drive/pull/9761) chore: reduce simple Map/Set ops ([@runspired](https://github.com/runspired))
115
+ * [#9759](https://github.com/warp-drive-data/warp-drive/pull/9759) chore: Improve contributing experience ([@runspired](https://github.com/runspired))
116
+ * [#9752](https://github.com/warp-drive-data/warp-drive/pull/9752) chore: tooling upgrades to support WarpDrive package unification ([@runspired](https://github.com/runspired))
117
+ * [#9705](https://github.com/warp-drive-data/warp-drive/pull/9705) chore: make diagnostic shutdown safer, use bun for holodeck server ([@runspired](https://github.com/runspired))
118
+ * [#9699](https://github.com/warp-drive-data/warp-drive/pull/9699) chore: update to pnpm 10 ([@runspired](https://github.com/runspired))
119
+ * [#9697](https://github.com/warp-drive-data/warp-drive/pull/9697) chore: [BREAKING to prior alpha/betas] prepare SchemaRecord for stable, lockdown exports ([@runspired](https://github.com/runspired))
120
+ * [#9677](https://github.com/warp-drive-data/warp-drive/pull/9677) chore: fixup deprecation-removed test variants ([@runspired](https://github.com/runspired))
121
+ * [#9635](https://github.com/warp-drive-data/warp-drive/pull/9635) fix: resort imports to fix lint ([@runspired](https://github.com/runspired))
122
+ * [#9629](https://github.com/warp-drive-data/warp-drive/pull/9629) fix: restore * versions and setup publish to not overwrite them ([@runspired](https://github.com/runspired))
123
+ * [#9620](https://github.com/warp-drive-data/warp-drive/pull/9620) Starwars ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
124
+ * [#9596](https://github.com/warp-drive-data/warp-drive/pull/9596) chore: Remove unused `--report-unused-disable-directives` flag ([@gitKrystan](https://github.com/gitKrystan))
125
+ * [#9509](https://github.com/warp-drive-data/warp-drive/pull/9509) chore: cleanup CacheHandler factoring ([@runspired](https://github.com/runspired))
126
+
127
+ #### Committers: (6)
128
+
129
+ Katie Gengler ([@kategengler](https://github.com/kategengler))
130
+ Chris Thoburn ([@runspired](https://github.com/runspired))
131
+ Markus Sanin ([@mkszepp](https://github.com/mkszepp))
132
+ Leo Euclides ([@leoeuclids](https://github.com/leoeuclids))
133
+ [@NullVoxPopuli](https://github.com/NullVoxPopuli)
134
+ Krystan HuffMenne ([@gitKrystan](https://github.com/gitKrystan))
135
+
136
+ ## v5.3.4 (2024-06-15)
137
+
138
+ #### :evergreen_tree: New Deprecation
139
+
140
+ * [#9403](https://github.com/warp-drive-data/warp-drive/pull/9403) feat: deprecate store extending EmberObject ([@runspired](https://github.com/runspired))
141
+
142
+ #### :memo: Documentation
143
+
144
+ * [#9378](https://github.com/warp-drive-data/warp-drive/pull/9378) Update some docs to string ids ([@wagenet](https://github.com/wagenet))
145
+ * [#9328](https://github.com/warp-drive-data/warp-drive/pull/9328) chore: update READMEs with status and dist tag info ([@runspired](https://github.com/runspired))
146
+
147
+ #### :rocket: Enhancement
148
+
149
+ * [#9474](https://github.com/warp-drive-data/warp-drive/pull/9474) Improve query types for legacy-compat/builders ([@gitKrystan](https://github.com/gitKrystan))
150
+ * [#9471](https://github.com/warp-drive-data/warp-drive/pull/9471) feat: npx warp-drive ([@runspired](https://github.com/runspired))
151
+ * [#9468](https://github.com/warp-drive-data/warp-drive/pull/9468) feat: string utils 🌌 ([@runspired](https://github.com/runspired))
152
+ * [#9407](https://github.com/warp-drive-data/warp-drive/pull/9407) feat: v2 addons ([@runspired](https://github.com/runspired))
153
+ * [#9453](https://github.com/warp-drive-data/warp-drive/pull/9453) feat: update SchemaService to reflect RFC updates ([@runspired](https://github.com/runspired))
154
+ * [#9448](https://github.com/warp-drive-data/warp-drive/pull/9448) feat: impl SchemaService RFC ([@runspired](https://github.com/runspired))
155
+ * [#9450](https://github.com/warp-drive-data/warp-drive/pull/9450) feat: improve typing around Model and createRecord ([@runspired](https://github.com/runspired))
156
+ * [#9444](https://github.com/warp-drive-data/warp-drive/pull/9444) feat: rename LifetimesService => CachePolicy for clarity ([@runspired](https://github.com/runspired))
157
+ * [#9396](https://github.com/warp-drive-data/warp-drive/pull/9396) fix: Resolve promise types for props passed to `store.createRecord()` ([@seanCodes](https://github.com/seanCodes))
158
+ * [#9387](https://github.com/warp-drive-data/warp-drive/pull/9387) feat: better types for legacy store methods ([@runspired](https://github.com/runspired))
159
+ * [#9366](https://github.com/warp-drive-data/warp-drive/pull/9366) feat: typed Model ([@runspired](https://github.com/runspired))
160
+ * [#9359](https://github.com/warp-drive-data/warp-drive/pull/9359) feat: type checked builders and inferred request types from builders ([@runspired](https://github.com/runspired))
161
+ * [#9352](https://github.com/warp-drive-data/warp-drive/pull/9352) feat: make setKeyInfoForResource public ([@runspired](https://github.com/runspired))
162
+ * [#9277](https://github.com/warp-drive-data/warp-drive/pull/9277) feat: implement managed object for schemaRecord ([@richgt](https://github.com/richgt))
163
+ * [#9319](https://github.com/warp-drive-data/warp-drive/pull/9319) Add @ember-data-mirror/legacy-compat/builders ([@gitKrystan](https://github.com/gitKrystan))
164
+ * [#9314](https://github.com/warp-drive-data/warp-drive/pull/9314) feat: improve lifetime handling of ad-hoc createRecord requests ([@runspired](https://github.com/runspired))
165
+ * [#9260](https://github.com/warp-drive-data/warp-drive/pull/9260) feat: ember specific data utils ([@runspired](https://github.com/runspired))
166
+ * [#9249](https://github.com/warp-drive-data/warp-drive/pull/9249) chore: handle declare statements in module rewriting ([@runspired](https://github.com/runspired))
167
+ * [#9245](https://github.com/warp-drive-data/warp-drive/pull/9245) feat: add consumer types for Model APIs ([@runspired](https://github.com/runspired))
168
+ * [#9244](https://github.com/warp-drive-data/warp-drive/pull/9244) feat: improves consumer-facing store types ([@runspired](https://github.com/runspired))
169
+
170
+ #### :bug: Bug Fix
171
+
172
+ * [#9459](https://github.com/warp-drive-data/warp-drive/pull/9459) fix: ensure cachehandler responses are cast to documents ([@runspired](https://github.com/runspired))
173
+ * [#9383](https://github.com/warp-drive-data/warp-drive/pull/9383) fix: ensure cache-handler clones full errors ([@runspired](https://github.com/runspired))
174
+ * [#9265](https://github.com/warp-drive-data/warp-drive/pull/9265) feat: Improve config handling for polyfillUUID ([@MehulKChaudhari](https://github.com/MehulKChaudhari))
175
+
176
+ #### :house: Internal
177
+
178
+ * [#9476](https://github.com/warp-drive-data/warp-drive/pull/9476) chore: cleanup symbol usage ([@runspired](https://github.com/runspired))
179
+ * [#9292](https://github.com/warp-drive-data/warp-drive/pull/9292) feat: add new build-config package ([@runspired](https://github.com/runspired))
180
+ * [#9392](https://github.com/warp-drive-data/warp-drive/pull/9392) Fix some typos after reading code ([@Baltazore](https://github.com/Baltazore))
181
+ * [#9370](https://github.com/warp-drive-data/warp-drive/pull/9370) chore: rename macros ([@runspired](https://github.com/runspired))
182
+
183
+ #### Committers: (7)
184
+
185
+ Chris Thoburn ([@runspired](https://github.com/runspired))
186
+ Peter Wagenet ([@wagenet](https://github.com/wagenet))
187
+ Krystan HuffMenne ([@gitKrystan](https://github.com/gitKrystan))
188
+ Sean Juarez ([@seanCodes](https://github.com/seanCodes))
189
+ Rich Glazerman ([@richgt](https://github.com/richgt))
190
+ Mehul Kiran Chaudhari ([@MehulKChaudhari](https://github.com/MehulKChaudhari))
191
+ Kirill Shaplyko ([@Baltazore](https://github.com/Baltazore))
192
+
193
+ For the full project changelog see [https://github.com/warp-drive-data/warp-drive/blob/main/CHANGELOG.md](https://github.com/warp-drive-data/warp-drive/blob/main/CHANGELOG.md)
194
+
195
+ ## v5.3.1 (2024-02-24)
196
+
197
+ #### :evergreen_tree: New Deprecation
198
+
199
+ * [#9189](https://github.com/warp-drive-data/warp-drive/pull/9189) fix: mutating ManyArray should handle duplicates gracefully (with deprecation) ([@gitKrystan](https://github.com/gitKrystan))
200
+
201
+ #### :memo: Documentation
202
+
203
+ * [#9162](https://github.com/warp-drive-data/warp-drive/pull/9162) feat: improve store.request documentation ([@runspired](https://github.com/runspired))
204
+ * [#9159](https://github.com/warp-drive-data/warp-drive/pull/9159) fix: support full range of json:api for references, update docs ([@runspired](https://github.com/runspired))
205
+ * [#9072](https://github.com/warp-drive-data/warp-drive/pull/9072) feat: advanced JSON:API queries & basic request example ([@runspired](https://github.com/runspired))
206
+ * [#9070](https://github.com/warp-drive-data/warp-drive/pull/9070) docs: fix note notation to make use of github formatting ([@runspired](https://github.com/runspired))
207
+
208
+ #### :rocket: Enhancement
209
+
210
+ * [#9220](https://github.com/warp-drive-data/warp-drive/pull/9220) feat: request infra improvements ([@runspired](https://github.com/runspired))
211
+ * [#9163](https://github.com/warp-drive-data/warp-drive/pull/9163) feat: improved lifetimes-service capabilities ([@runspired](https://github.com/runspired))
212
+ * [#9159](https://github.com/warp-drive-data/warp-drive/pull/9159) fix: support full range of json:api for references, update docs ([@runspired](https://github.com/runspired))
213
+ * [#9094](https://github.com/warp-drive-data/warp-drive/pull/9094) feat: support legacy attribute behaviors in SchemaRecord ([@gitKrystan](https://github.com/gitKrystan))
214
+ * [#9095](https://github.com/warp-drive-data/warp-drive/pull/9095) feat (internal): support legacy model behaviors in SchemaRecord legacy mode ([@runspired](https://github.com/runspired))
215
+ * [#9072](https://github.com/warp-drive-data/warp-drive/pull/9072) feat: advanced JSON:API queries & basic request example ([@runspired](https://github.com/runspired))
216
+ * [#8949](https://github.com/warp-drive-data/warp-drive/pull/8949) feat:prepare for universal reactivity ([@runspired](https://github.com/runspired))
217
+ * [#8946](https://github.com/warp-drive-data/warp-drive/pull/8946) feat (private): implement resource relationships for SchemaRecord ([@runspired](https://github.com/runspired))
218
+ * [#8935](https://github.com/warp-drive-data/warp-drive/pull/8935) feat: (private) implement basic field support for schema-record ([@runspired](https://github.com/runspired))
219
+ * [#8921](https://github.com/warp-drive-data/warp-drive/pull/8921) feat: Improved Fetch Errors ([@runspired](https://github.com/runspired))
220
+
221
+ #### :bug: Bug Fix
222
+
223
+ * [#9189](https://github.com/warp-drive-data/warp-drive/pull/9189) fix: mutating ManyArray should handle duplicates gracefully (with deprecation) ([@gitKrystan](https://github.com/gitKrystan))
224
+ * [#9183](https://github.com/warp-drive-data/warp-drive/pull/9183) fix: keep a backreference for previously merged identifiers ([@runspired](https://github.com/runspired))
225
+ * [#8927](https://github.com/warp-drive-data/warp-drive/pull/8927) fix: live-array delete sync should not clear the set on length match ([@runspired](https://github.com/runspired))
226
+ * [#9159](https://github.com/warp-drive-data/warp-drive/pull/9159) fix: support full range of json:api for references, update docs ([@runspired](https://github.com/runspired))
227
+
228
+ #### :house: Internal
229
+
230
+ * [#9110](https://github.com/warp-drive-data/warp-drive/pull/9110) Stricter typescript-eslint config ([@gitKrystan](https://github.com/gitKrystan))
231
+ * [#9058](https://github.com/warp-drive-data/warp-drive/pull/9058) Switch from eslint-plugin-prettier to running prettier directly ([@gitKrystan](https://github.com/gitKrystan))
232
+ * [#9057](https://github.com/warp-drive-data/warp-drive/pull/9057) Add eslint-plugin-n to eslint config for node files ([@gitKrystan](https://github.com/gitKrystan))
233
+ * [#9055](https://github.com/warp-drive-data/warp-drive/pull/9055) Fix ESLint for VSCode ([@gitKrystan](https://github.com/gitKrystan))
234
+ * [#9051](https://github.com/warp-drive-data/warp-drive/pull/9051) chore: use references for tsc, add checks to schema-record, bun to run scripts ([@runspired](https://github.com/runspired))
235
+ * [#9032](https://github.com/warp-drive-data/warp-drive/pull/9032) chore(types): split out lint and type commands to be per-package ([@runspired](https://github.com/runspired))
236
+ * [#9050](https://github.com/warp-drive-data/warp-drive/pull/9050) chore: use composite mode for tsc ([@runspired](https://github.com/runspired))
237
+ * [#9049](https://github.com/warp-drive-data/warp-drive/pull/9049) chore: incremental tsc builds ([@runspired](https://github.com/runspired))
238
+ * [#9046](https://github.com/warp-drive-data/warp-drive/pull/9046) chore: reduce number of things turbo builds for build ([@runspired](https://github.com/runspired))
239
+ * [#9027](https://github.com/warp-drive-data/warp-drive/pull/9027) chore: improve types for store package ([@runspired](https://github.com/runspired))
240
+ * [#9029](https://github.com/warp-drive-data/warp-drive/pull/9029) chore: add @warp-drive-mirror/core as home for shared code ([@runspired](https://github.com/runspired))
241
+ * [#9028](https://github.com/warp-drive-data/warp-drive/pull/9028) chore: more isolated types ([@runspired](https://github.com/runspired))
242
+ * [#9025](https://github.com/warp-drive-data/warp-drive/pull/9025) chore: reconfigure request package type location ([@runspired](https://github.com/runspired))
243
+ * [#9021](https://github.com/warp-drive-data/warp-drive/pull/9021) chore: cleanup ember-data/-private types ([@runspired](https://github.com/runspired))
244
+ * [#9019](https://github.com/warp-drive-data/warp-drive/pull/9019) chore: make model types strict ([@runspired](https://github.com/runspired))
245
+ * [#9016](https://github.com/warp-drive-data/warp-drive/pull/9016) chore: make type-only files strict ([@runspired](https://github.com/runspired))
246
+ * [#8931](https://github.com/warp-drive-data/warp-drive/pull/8931) chore: package infra for schema-record ([@runspired](https://github.com/runspired))
247
+ * [#8906](https://github.com/warp-drive-data/warp-drive/pull/8906) feat: expand mock-server capabilities, add to main tests ([@runspired](https://github.com/runspired))
248
+
249
+ #### Committers: (2)
250
+
251
+ Krystan HuffMenne ([@gitKrystan](https://github.com/gitKrystan))
252
+ Chris Thoburn ([@runspired](https://github.com/runspired))
253
+
package/README.md CHANGED
@@ -28,6 +28,11 @@
28
28
 
29
29
  # @ember-data-mirror/store
30
30
 
31
+ > [!WARNING]
32
+ > **⚠️ This is a legacy package** not recommended for new applications.
33
+ >
34
+ > Use [@warp-drive-mirror/core](https://warp-drive.io/api/@warp-drive-mirror/core/) instead.
35
+
31
36
  <p align="center">⚡️ The lightweight reactive data library for JavaScript applications</p>
32
37
 
33
38
  This package provides [*Ember***Data**](https://github.com/warp-drive-data/warp-drive/)'s `Store` class.
@@ -0,0 +1 @@
1
+ export * from "@warp-drive-mirror/core/store/-private";
package/dist/-private.js CHANGED
@@ -1 +1 @@
1
- export * from '@warp-drive-mirror/core/store/-private';
1
+ export * from "@warp-drive-mirror/core/store/-private"
@@ -0,0 +1,2 @@
1
+ import { setupSignals } from "@warp-drive-mirror/core/configure";
2
+ export { setupSignals };
package/dist/configure.js CHANGED
@@ -1 +1,3 @@
1
- export { setupSignals } from '@warp-drive-mirror/core/configure';
1
+ import { setupSignals } from "@warp-drive-mirror/core/configure";
2
+
3
+ export { setupSignals };
@@ -0,0 +1,2 @@
1
+ import { CacheHandler, CacheOperation, CachePolicy, Document, DocumentCacheOperation, NotificationType, Store, StoreRequestContext, StoreRequestInput, recordIdentifierFor, setIdentifierForgetMethod, setIdentifierGenerationMethod, setIdentifierResetMethod, setIdentifierUpdateMethod, setKeyInfoForResource, storeFor } from "@warp-drive-mirror/core";
2
+ export { CacheHandler, type CacheOperation, type CachePolicy, type Document, type DocumentCacheOperation, type NotificationType, type StoreRequestContext, type StoreRequestInput, Store as default, recordIdentifierFor, setIdentifierForgetMethod, setIdentifierGenerationMethod, setIdentifierResetMethod, setIdentifierUpdateMethod, setKeyInfoForResource, storeFor };
package/dist/index.js CHANGED
@@ -1,196 +1,220 @@
1
- import { deprecate } from '@ember/debug';
2
- import { macroCondition, getGlobalConfig, dependencySatisfies, importSync } from '@embroider/macros';
3
- export { CacheHandler, Store as default, recordIdentifierFor, setIdentifierForgetMethod, setIdentifierGenerationMethod, setIdentifierResetMethod, setIdentifierUpdateMethod, setKeyInfoForResource, storeFor } from '@warp-drive-mirror/core';
4
- import { setupSignals } from '@warp-drive-mirror/core/configure';
5
- import { peekTransient } from '@warp-drive-mirror/core/types/-private';
1
+ import { deprecate } from "@ember/debug";
2
+ import { dependencySatisfies, getGlobalConfig, importSync, macroCondition } from "@embroider/macros";
3
+ import { CacheHandler, Store, recordIdentifierFor, setIdentifierForgetMethod, setIdentifierGenerationMethod, setIdentifierResetMethod, setIdentifierUpdateMethod, setKeyInfoForResource, storeFor } from "@warp-drive-mirror/core";
4
+ import { setupSignals } from "@warp-drive-mirror/core/configure";
5
+ import { peekTransient } from "@warp-drive-mirror/core/types/-private";
6
6
 
7
+ //#region src/index.ts
7
8
  /**
8
- * This package provides [*Ember***Data**](https://github.com/warp-drive-data/warp-drive/)'s `Store` class.
9
- *
10
- * A {@link Store} coordinates interaction between your application, a {@link Cache},
11
- * and sources of data (such as your API or a local persistence layer) accessed via a {@link RequestManager}.
12
- *
13
- * Optionally, a Store can be configured to hydrate the response data into rich presentation classes.
14
- *
15
- * ## 🔨 Creating A Store
16
- *
17
- * To use a `Store` we will need to do few things: add a {@link Cache}
18
- * to store data **in-memory**, add a {@link Handler} to fetch data from a source,
19
- * and implement `instantiateRecord` to tell the store how to display the data for individual resources.
20
- *
21
- * > **Note**
22
- * > If you are using the package `ember-data` then a JSON:API cache, RequestManager, LegacyNetworkHandler,
23
- * > and `instantiateRecord` are configured for you by default.
24
- *
25
- * ### Configuring A Cache
26
- *
27
- * To start, let's install a [JSON:API](https://jsonapi.org/) cache. If your app uses `GraphQL` or `REST` other
28
- * caches may better fit your data. You can author your own cache by creating one that
29
- * conforms to the {@link Cache | spec}.
30
- *
31
- * The package `@ember-data-mirror/json-api` provides a [JSON:API](https://jsonapi.org/) cache we can use.
32
- * After installing it, we can configure the store to use this cache.
33
- *
34
- * ```js
35
- * import Store from '@ember-data-mirror/store';
36
- * import Cache from '@ember-data-mirror/json-api';
37
- *
38
- * class extends Store {
39
- * createCache(storeWrapper) {
40
- * return new Cache(storeWrapper);
41
- * }
42
- * }
43
- * ```
44
- *
45
- * Now that we have a `cache` let's setup something to handle fetching
46
- * and saving data via our API.
47
- *
48
- * > **Note**
49
- * > The `ember-data` package automatically includes and configures
50
- * > the `@ember-data-mirror/json-api` cache for you.
51
- *
52
- * ### Handling Requests
53
- *
54
- * When *Ember***Data** needs to fetch or save data it will pass that request to your application's `RequestManager` for fulfillment. How this fulfillment occurs (in-memory, device storage, via single or multiple API requests, etc.) is then up to the registered request handlers.
55
- *
56
- * To start, let's install the `RequestManager` from `@ember-data-mirror/request` and the basic `Fetch` handler from ``@ember-data-mirror/request/fetch`.
57
- *
58
- * > **Note**
59
- * > If your app uses `GraphQL`, `REST` or different conventions for `JSON:API` than your cache expects, other handlers may better fit your data. You can author your own handler by creating one that conforms to the [handler interface](https://github.com/warp-drive-data/warp-drive/tree/main/packages/request#handling-requests).
60
- *
61
- * ```ts
62
- * import Store from '@ember-data-mirror/store';
63
- * import RequestManager from '@ember-data-mirror/request';
64
- * import Fetch from '@ember-data-mirror/request/fetch';
65
- *
66
- * export default class extends Store {
67
- * requestManager = new RequestManager()
68
- * .use([Fetch]);
69
- * }
70
- * ```
71
- *
72
- * **Using RequestManager as a Service**
73
- *
74
- * Alternatively if you have configured the `RequestManager` to be a service you may re-use it.
75
- *
76
- * *app/services/request.js*
77
- * ```ts
78
- * import RequestManager from '@ember-data-mirror/request';
79
- * import Fetch from '@ember-data-mirror/request/fetch';
80
- *
81
- * export default {
82
- * create() {
83
- * return new RequestManager()
84
- * .use([Fetch])
85
- * .useCache(CacheHandler);
86
- * }
87
- * }
88
- * ```
89
- *
90
- * *app/services/store.js*
91
- * ```ts
92
- * import Store from '@ember-data-mirror/store';
93
- * import { service } from '@ember/service';
94
- *
95
- * export default class extends Store {
96
- * @service('request') requestManager
97
- * }
98
- * ```
99
- *
100
- *
101
- * ### Presenting Data from the Cache
102
- *
103
- * Now that we have a source and a cache for our data, we need to configure how
104
- * the Store delivers that data back to our application. We do this via the {@link Store.instantiateRecord | instantiateRecord hook}
105
- * which allows us to transform the data for a resource before handing it to the application.
106
- *
107
- * A naive way to present the data would be to return it as JSON. Typically instead
108
- * this hook will be used to add reactivity and make each unique resource a singleton,
109
- * ensuring that if the cache updates our presented data will reflect the new state.
110
- *
111
- * Below is an example of using the hooks `instantiateRecord` and a `teardownRecord`
112
- * to provide minimal read-only reactive state for simple resources.
113
- *
114
- * ```ts
115
- * import Store, { recordIdentifierFor } from '@ember-data-mirror/store';
116
- * import { TrackedObject } from 'tracked-built-ins';
117
- *
118
- * class extends Store {
119
- * instantiateRecord(identifier) {
120
- * const { cache, notifications } = this;
121
- *
122
- * // create a TrackedObject with our attributes, id and type
123
- * const record = new TrackedObject(Object.assign({}, cache.peek(identifier)));
124
- * record.type = identifier.type;
125
- * record.id = identifier.id;
126
- *
127
- * notifications.subscribe(identifier, (_, change) => {
128
- * if (change === 'attributes') {
129
- * Object.assign(record, cache.peek(identifier));
130
- * }
131
- * });
132
- *
133
- * return record;
134
- * }
135
- * }
136
- * ```
137
- *
138
- * Because `instantiateRecord` is opaque to the nature of the record, an implementation
139
- * can be anything from a fairly simple object to a robust proxy that intelligently links
140
- * together associated records through relationships.
141
- *
142
- * This also enables creating a record that separates `edit` flows from `create` flows
143
- * entirely. A record class might choose to implement a `checkout`method that gives access
144
- * to an editable instance while the primary record continues to be read-only and reflect
145
- * only persisted (non-mutated) state.
146
- *
147
- * Typically you will choose an existing record implementation such as `@ember-data-mirror/model`
148
- * for your application.
149
- *
150
- * Because of the boundaries around instantiation and the cache, record implementations
151
- * should be capable of interop both with each other and with any `Cache`. Due to this,
152
- * if needed an application can utilize multiple record implementations and multiple cache
153
- * implementations either to support enhanced features for only a subset of records or to
154
- * be able to incrementally migrate from one record/cache to another record or cache.
155
- *
156
- * > **Note**
157
- * > The `ember-data` package automatically includes the `@ember-data-mirror/model`
158
- * > package and configures it for you.
159
- *
160
- * @module
161
- */
9
+ * This package provides [*Ember***Data**](https://github.com/warp-drive-data/warp-drive/)'s `Store` class.
10
+ *
11
+ * A {@link Store} coordinates interaction between your application, a {@link Cache},
12
+ * and sources of data (such as your API or a local persistence layer) accessed via a {@link RequestManager}.
13
+ *
14
+ * Optionally, a Store can be configured to hydrate the response data into rich presentation classes.
15
+ *
16
+ * ## 🔨 Creating A Store
17
+ *
18
+ * To use a `Store` we will need to do few things: add a {@link Cache}
19
+ * to store data **in-memory**, add a {@link Handler} to fetch data from a source,
20
+ * and implement `instantiateRecord` to tell the store how to display the data for individual resources.
21
+ *
22
+ * > **Note**
23
+ * > If you are using the package `ember-data` then a JSON:API cache, RequestManager, LegacyNetworkHandler,
24
+ * > and `instantiateRecord` are configured for you by default.
25
+ *
26
+ * ### Configuring A Cache
27
+ *
28
+ * To start, let's install a [JSON:API](https://jsonapi.org/) cache. If your app uses `GraphQL` or `REST` other
29
+ * caches may better fit your data. You can author your own cache by creating one that
30
+ * conforms to the {@link Cache | spec}.
31
+ *
32
+ * The package `@ember-data-mirror/json-api` provides a [JSON:API](https://jsonapi.org/) cache we can use.
33
+ * After installing it, we can configure the store to use this cache.
34
+ *
35
+ * ```js
36
+ * import Store from '@ember-data-mirror/store';
37
+ * import Cache from '@ember-data-mirror/json-api';
38
+ *
39
+ * class extends Store {
40
+ * createCache(storeWrapper) {
41
+ * return new Cache(storeWrapper);
42
+ * }
43
+ * }
44
+ * ```
45
+ *
46
+ * Now that we have a `cache` let's setup something to handle fetching
47
+ * and saving data via our API.
48
+ *
49
+ * > **Note**
50
+ * > The `ember-data` package automatically includes and configures
51
+ * > the `@ember-data-mirror/json-api` cache for you.
52
+ *
53
+ * ### Handling Requests
54
+ *
55
+ * When *Ember***Data** needs to fetch or save data it will pass that request to your application's `RequestManager` for fulfillment. How this fulfillment occurs (in-memory, device storage, via single or multiple API requests, etc.) is then up to the registered request handlers.
56
+ *
57
+ * To start, let's install the `RequestManager` from `@ember-data-mirror/request` and the basic `Fetch` handler from ``@ember-data-mirror/request/fetch`.
58
+ *
59
+ * > **Note**
60
+ * > If your app uses `GraphQL`, `REST` or different conventions for `JSON:API` than your cache expects, other handlers may better fit your data. You can author your own handler by creating one that conforms to the [handler interface](https://github.com/warp-drive-data/warp-drive/tree/main/packages/request#handling-requests).
61
+ *
62
+ * ```ts
63
+ * import Store from '@ember-data-mirror/store';
64
+ * import RequestManager from '@ember-data-mirror/request';
65
+ * import Fetch from '@ember-data-mirror/request/fetch';
66
+ *
67
+ * export default class extends Store {
68
+ * requestManager = new RequestManager()
69
+ * .use([Fetch]);
70
+ * }
71
+ * ```
72
+ *
73
+ * **Using RequestManager as a Service**
74
+ *
75
+ * Alternatively if you have configured the `RequestManager` to be a service you may re-use it.
76
+ *
77
+ * *app/services/request.js*
78
+ * ```ts
79
+ * import RequestManager from '@ember-data-mirror/request';
80
+ * import Fetch from '@ember-data-mirror/request/fetch';
81
+ *
82
+ * export default {
83
+ * create() {
84
+ * return new RequestManager()
85
+ * .use([Fetch])
86
+ * .useCache(CacheHandler);
87
+ * }
88
+ * }
89
+ * ```
90
+ *
91
+ * *app/services/store.js*
92
+ * ```ts
93
+ * import Store from '@ember-data-mirror/store';
94
+ * import { service } from '@ember/service';
95
+ *
96
+ * export default class extends Store {
97
+ * @service('request') requestManager
98
+ * }
99
+ * ```
100
+ *
101
+ *
102
+ * ### Presenting Data from the Cache
103
+ *
104
+ * Now that we have a source and a cache for our data, we need to configure how
105
+ * the Store delivers that data back to our application. We do this via the {@link Store.instantiateRecord | instantiateRecord hook}
106
+ * which allows us to transform the data for a resource before handing it to the application.
107
+ *
108
+ * A naive way to present the data would be to return it as JSON. Typically instead
109
+ * this hook will be used to add reactivity and make each unique resource a singleton,
110
+ * ensuring that if the cache updates our presented data will reflect the new state.
111
+ *
112
+ * Below is an example of using the hooks `instantiateRecord` and a `teardownRecord`
113
+ * to provide minimal read-only reactive state for simple resources.
114
+ *
115
+ * ```ts
116
+ * import Store, { recordIdentifierFor } from '@ember-data-mirror/store';
117
+ * import { TrackedObject } from 'tracked-built-ins';
118
+ *
119
+ * class extends Store {
120
+ * instantiateRecord(identifier) {
121
+ * const { cache, notifications } = this;
122
+ *
123
+ * // create a TrackedObject with our attributes, id and type
124
+ * const record = new TrackedObject(Object.assign({}, cache.peek(identifier)));
125
+ * record.type = identifier.type;
126
+ * record.id = identifier.id;
127
+ *
128
+ * notifications.subscribe(identifier, (_, change) => {
129
+ * if (change === 'attributes') {
130
+ * Object.assign(record, cache.peek(identifier));
131
+ * }
132
+ * });
133
+ *
134
+ * return record;
135
+ * }
136
+ * }
137
+ * ```
138
+ *
139
+ * Because `instantiateRecord` is opaque to the nature of the record, an implementation
140
+ * can be anything from a fairly simple object to a robust proxy that intelligently links
141
+ * together associated records through relationships.
142
+ *
143
+ * This also enables creating a record that separates `edit` flows from `create` flows
144
+ * entirely. A record class might choose to implement a `checkout`method that gives access
145
+ * to an editable instance while the primary record continues to be read-only and reflect
146
+ * only persisted (non-mutated) state.
147
+ *
148
+ * Typically you will choose an existing record implementation such as `@ember-data-mirror/model`
149
+ * for your application.
150
+ *
151
+ * Because of the boundaries around instantiation and the cache, record implementations
152
+ * should be capable of interop both with each other and with any `Cache`. Due to this,
153
+ * if needed an application can utilize multiple record implementations and multiple cache
154
+ * implementations either to support enhanced features for only a subset of records or to
155
+ * be able to incrementally migrate from one record/cache to another record or cache.
156
+ *
157
+ * > **Note**
158
+ * > The `ember-data` package automatically includes the `@ember-data-mirror/model`
159
+ * > package and configures it for you.
160
+ *
161
+ * @module
162
+ */
162
163
  if (macroCondition(getGlobalConfig().WarpDriveMirror.deprecations.DEPRECATE_TRACKING_PACKAGE)) {
163
- let hasEmberDataTracking = false;
164
- let hasWarpDriveEmber = false;
165
- let hasRegisteredFromEmberPackage = false;
166
- if (macroCondition(dependencySatisfies('@warp-drive-mirror/ember', '*'))) {
167
- hasWarpDriveEmber = true;
168
- hasRegisteredFromEmberPackage = peekTransient('signalHooks') !== null;
169
- }
170
- if (macroCondition(dependencySatisfies('@ember-data-mirror/tracking', '*'))) {
171
- hasEmberDataTracking = true;
172
- if (!hasRegisteredFromEmberPackage) {
173
- // @ts-expect-error
174
- const {
175
- buildSignalConfig
176
- } = importSync('@ember-data-mirror/tracking');
177
- // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
178
- setupSignals(buildSignalConfig);
179
- }
180
- }
181
-
182
- // we should probably still print here if @ember-data-mirror/tracking is present
183
- if (!hasRegisteredFromEmberPackage) {
184
- const message = [`Using WarpDrive with EmberJS requires configuring it to use Ember's reactivity system.`, `Previously this was provided by installing the package '@ember-data-mirror/tracking', but this package is now deprecated.`, ``, `To resolve this deprecation, follow these steps:`, hasEmberDataTracking ? `- remove "@ember-data-mirror/tracking" and (if needed) "@ember-data-types/tracking" from your project in both your package.json and tsconfig.json` : false, hasWarpDriveEmber ? false : `- add "@warp-drive-mirror/ember" to your project in your package.json (and run install)`, '- add the following import to your app.js file:', '', '\t```', `\timport '@warp-drive-mirror/ember/install';`, '\t```', ``, '- mark this deprecation as resolved in your project by adding the following to your WarpDrive config in ember-cli-build.js:', '', '\t```', '\tconst { setConfig } = await import("@warp-drive-mirror/build-config");', '\tsetConfig(app, __dirname, {', '\t deprecations: {', '\t DEPRECATE_TRACKING_PACKAGE: false,', '\t },', '\t});', '\t```', ``, `For more information, see the Package Unification RFC: https://rfcs.emberjs.com/id/1075-warp-drive-package-unification/`].filter(l => l !== false).join('\n');
185
- deprecate(message, false, {
186
- id: 'warp-drive.deprecate-tracking-package',
187
- until: '6.0.0',
188
- for: 'warp-drive',
189
- since: {
190
- enabled: '5.3.4',
191
- available: '4.13'
192
- },
193
- url: 'https://deprecations.emberjs.com/id/warp-drive.deprecate-tracking-package'
194
- });
195
- }
164
+ let hasEmberDataTracking = false;
165
+ let hasWarpDriveEmber = false;
166
+ let hasRegisteredFromEmberPackage = false;
167
+ if (macroCondition(dependencySatisfies("@warp-drive-mirror/ember", "*"))) {
168
+ hasWarpDriveEmber = true;
169
+ hasRegisteredFromEmberPackage = peekTransient("signalHooks") !== null;
170
+ }
171
+ if (macroCondition(dependencySatisfies("@ember-data-mirror/tracking", "*"))) {
172
+ hasEmberDataTracking = true;
173
+ if (!hasRegisteredFromEmberPackage) {
174
+ const { buildSignalConfig } = importSync("@ember-data-mirror/tracking");
175
+ setupSignals(buildSignalConfig);
176
+ }
177
+ }
178
+ if (!hasRegisteredFromEmberPackage) {
179
+ const message = [
180
+ `Using WarpDrive with EmberJS requires configuring it to use Ember's reactivity system.`,
181
+ `Previously this was provided by installing the package '@ember-data-mirror/tracking', but this package is now deprecated.`,
182
+ ``,
183
+ `To resolve this deprecation, follow these steps:`,
184
+ hasEmberDataTracking ? `- remove "@ember-data-mirror/tracking" and (if needed) "@ember-data-types/tracking" from your project in both your package.json and tsconfig.json` : false,
185
+ hasWarpDriveEmber ? false : `- add "@warp-drive-mirror/ember" to your project in your package.json (and run install)`,
186
+ "- add the following import to your app.js file:",
187
+ "",
188
+ " ```",
189
+ `\timport '@warp-drive-mirror/ember/install';`,
190
+ " ```",
191
+ ``,
192
+ "- mark this deprecation as resolved in your project by adding the following to your WarpDrive config in ember-cli-build.js:",
193
+ "",
194
+ " ```",
195
+ " const { setConfig } = await import(\"@warp-drive-mirror/build-config\");",
196
+ " setConfig(app, __dirname, {",
197
+ " deprecations: {",
198
+ " DEPRECATE_TRACKING_PACKAGE: false,",
199
+ " },",
200
+ " });",
201
+ " ```",
202
+ ``,
203
+ `For more information, see the Package Unification RFC: https://rfcs.emberjs.com/id/1075-warp-drive-package-unification/`
204
+ ].filter((l) => l !== false).join("\n");
205
+ deprecate(message, false, {
206
+ id: "warp-drive.deprecate-tracking-package",
207
+ until: "6.0.0",
208
+ for: "warp-drive",
209
+ since: {
210
+ enabled: "5.3.4",
211
+ available: "4.13"
212
+ },
213
+ url: "https://deprecations.emberjs.com/id/warp-drive.deprecate-tracking-package"
214
+ });
215
+ }
196
216
  }
217
+
218
+ //#endregion
219
+ export { CacheHandler, Store as default, recordIdentifierFor, setIdentifierForgetMethod, setIdentifierGenerationMethod, setIdentifierResetMethod, setIdentifierUpdateMethod, setKeyInfoForResource, storeFor };
220
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["deprecate","dependencySatisfies","importSync","macroCondition","getGlobalConfig","Store","setupSignals","peekTransient","default","CacheHandler","recordIdentifierFor","storeFor","setIdentifierGenerationMethod","setIdentifierUpdateMethod","setIdentifierForgetMethod","setIdentifierResetMethod","setKeyInfoForResource","WarpDrive","deprecations","DEPRECATE_TRACKING_PACKAGE","hasEmberDataTracking","hasWarpDriveEmber","hasRegisteredFromEmberPackage","buildSignalConfig","message","filter","l","join","id","until","for","since","enabled","available","url"],"sources":["../src/index.ts"],"sourcesContent":["/**\n * This package provides [*Ember***Data**](https://github.com/warp-drive-data/warp-drive/)'s `Store` class.\n *\n * A {@link Store} coordinates interaction between your application, a {@link Cache},\n * and sources of data (such as your API or a local persistence layer) accessed via a {@link RequestManager}.\n *\n * Optionally, a Store can be configured to hydrate the response data into rich presentation classes.\n *\n * ## 🔨 Creating A Store\n *\n * To use a `Store` we will need to do few things: add a {@link Cache}\n * to store data **in-memory**, add a {@link Handler} to fetch data from a source,\n * and implement `instantiateRecord` to tell the store how to display the data for individual resources.\n *\n * > **Note**\n * > If you are using the package `ember-data` then a JSON:API cache, RequestManager, LegacyNetworkHandler,\n * > and `instantiateRecord` are configured for you by default.\n *\n * ### Configuring A Cache\n *\n * To start, let's install a [JSON:API](https://jsonapi.org/) cache. If your app uses `GraphQL` or `REST` other\n * caches may better fit your data. You can author your own cache by creating one that\n * conforms to the {@link Cache | spec}.\n *\n * The package `@ember-data-mirror/json-api` provides a [JSON:API](https://jsonapi.org/) cache we can use.\n * After installing it, we can configure the store to use this cache.\n *\n * ```js\n * import Store from '@ember-data-mirror/store';\n * import Cache from '@ember-data-mirror/json-api';\n *\n * class extends Store {\n * createCache(storeWrapper) {\n * return new Cache(storeWrapper);\n * }\n * }\n * ```\n *\n * Now that we have a `cache` let's setup something to handle fetching\n * and saving data via our API.\n *\n * > **Note**\n * > The `ember-data` package automatically includes and configures\n * > the `@ember-data-mirror/json-api` cache for you.\n *\n * ### Handling Requests\n *\n * When *Ember***Data** needs to fetch or save data it will pass that request to your application's `RequestManager` for fulfillment. How this fulfillment occurs (in-memory, device storage, via single or multiple API requests, etc.) is then up to the registered request handlers.\n *\n * To start, let's install the `RequestManager` from `@ember-data-mirror/request` and the basic `Fetch` handler from ``@ember-data-mirror/request/fetch`.\n *\n * > **Note**\n * > If your app uses `GraphQL`, `REST` or different conventions for `JSON:API` than your cache expects, other handlers may better fit your data. You can author your own handler by creating one that conforms to the [handler interface](https://github.com/warp-drive-data/warp-drive/tree/main/packages/request#handling-requests).\n *\n * ```ts\n * import Store from '@ember-data-mirror/store';\n * import RequestManager from '@ember-data-mirror/request';\n * import Fetch from '@ember-data-mirror/request/fetch';\n *\n * export default class extends Store {\n * requestManager = new RequestManager()\n * .use([Fetch]);\n * }\n * ```\n *\n * **Using RequestManager as a Service**\n *\n * Alternatively if you have configured the `RequestManager` to be a service you may re-use it.\n *\n * *app/services/request.js*\n * ```ts\n * import RequestManager from '@ember-data-mirror/request';\n * import Fetch from '@ember-data-mirror/request/fetch';\n *\n * export default {\n * create() {\n * return new RequestManager()\n * .use([Fetch])\n * .useCache(CacheHandler);\n * }\n * }\n * ```\n *\n * *app/services/store.js*\n * ```ts\n * import Store from '@ember-data-mirror/store';\n * import { service } from '@ember/service';\n *\n * export default class extends Store {\n * @service('request') requestManager\n * }\n * ```\n *\n *\n * ### Presenting Data from the Cache\n *\n * Now that we have a source and a cache for our data, we need to configure how\n * the Store delivers that data back to our application. We do this via the {@link Store.instantiateRecord | instantiateRecord hook}\n * which allows us to transform the data for a resource before handing it to the application.\n *\n * A naive way to present the data would be to return it as JSON. Typically instead\n * this hook will be used to add reactivity and make each unique resource a singleton,\n * ensuring that if the cache updates our presented data will reflect the new state.\n *\n * Below is an example of using the hooks `instantiateRecord` and a `teardownRecord`\n * to provide minimal read-only reactive state for simple resources.\n *\n * ```ts\n * import Store, { recordIdentifierFor } from '@ember-data-mirror/store';\n * import { TrackedObject } from 'tracked-built-ins';\n *\n * class extends Store {\n * instantiateRecord(identifier) {\n * const { cache, notifications } = this;\n *\n * // create a TrackedObject with our attributes, id and type\n * const record = new TrackedObject(Object.assign({}, cache.peek(identifier)));\n * record.type = identifier.type;\n * record.id = identifier.id;\n *\n * notifications.subscribe(identifier, (_, change) => {\n * if (change === 'attributes') {\n * Object.assign(record, cache.peek(identifier));\n * }\n * });\n *\n * return record;\n * }\n * }\n * ```\n *\n * Because `instantiateRecord` is opaque to the nature of the record, an implementation\n * can be anything from a fairly simple object to a robust proxy that intelligently links\n * together associated records through relationships.\n *\n * This also enables creating a record that separates `edit` flows from `create` flows\n * entirely. A record class might choose to implement a `checkout`method that gives access\n * to an editable instance while the primary record continues to be read-only and reflect\n * only persisted (non-mutated) state.\n *\n * Typically you will choose an existing record implementation such as `@ember-data-mirror/model`\n * for your application.\n *\n * Because of the boundaries around instantiation and the cache, record implementations\n * should be capable of interop both with each other and with any `Cache`. Due to this,\n * if needed an application can utilize multiple record implementations and multiple cache\n * implementations either to support enhanced features for only a subset of records or to\n * be able to incrementally migrate from one record/cache to another record or cache.\n *\n * > **Note**\n * > The `ember-data` package automatically includes the `@ember-data-mirror/model`\n * > package and configures it for you.\n *\n * @module\n */\nimport { deprecate } from '@ember/debug';\n\nimport { dependencySatisfies, importSync, macroCondition } from '@embroider/macros';\n\n// oxlint-disable-next-line no-unused-vars\nimport { type RequestManager, Store } from '@warp-drive-mirror/core';\nimport { DEPRECATE_TRACKING_PACKAGE } from '@warp-drive-mirror/core/build-config/deprecations';\nimport { setupSignals } from '@warp-drive-mirror/core/configure';\n// oxlint-disable-next-line no-unused-vars\nimport type { Handler } from '@warp-drive-mirror/core/request';\nimport { peekTransient } from '@warp-drive-mirror/core/types/-private';\n// oxlint-disable-next-line no-unused-vars\nimport type { Cache } from '@warp-drive-mirror/core/types/cache';\n\nexport { Store as default };\n\nexport {\n type StoreRequestContext,\n CacheHandler,\n type Document,\n type CachePolicy,\n type StoreRequestInput,\n recordIdentifierFor,\n storeFor,\n type DocumentCacheOperation,\n type CacheOperation,\n type NotificationType,\n setIdentifierGenerationMethod,\n setIdentifierUpdateMethod,\n setIdentifierForgetMethod,\n setIdentifierResetMethod,\n setKeyInfoForResource,\n} from '@warp-drive-mirror/core';\n\nif (DEPRECATE_TRACKING_PACKAGE) {\n let hasEmberDataTracking = false;\n let hasWarpDriveEmber = false;\n let hasRegisteredFromEmberPackage = false;\n\n if (macroCondition(dependencySatisfies('@warp-drive-mirror/ember', '*'))) {\n hasWarpDriveEmber = true;\n hasRegisteredFromEmberPackage = peekTransient('signalHooks') !== null;\n }\n\n if (macroCondition(dependencySatisfies('@ember-data-mirror/tracking', '*'))) {\n hasEmberDataTracking = true;\n\n if (!hasRegisteredFromEmberPackage) {\n // @ts-expect-error\n const { buildSignalConfig } = importSync('@ember-data-mirror/tracking');\n // oxlint-disable-next-line typescript/no-unsafe-argument\n setupSignals(buildSignalConfig);\n }\n }\n\n // we should probably still print here if @ember-data-mirror/tracking is present\n if (!hasRegisteredFromEmberPackage) {\n const message = [\n `Using WarpDrive with EmberJS requires configuring it to use Ember's reactivity system.`,\n `Previously this was provided by installing the package '@ember-data-mirror/tracking', but this package is now deprecated.`,\n ``,\n `To resolve this deprecation, follow these steps:`,\n hasEmberDataTracking\n ? `- remove \"@ember-data-mirror/tracking\" and (if needed) \"@ember-data-types/tracking\" from your project in both your package.json and tsconfig.json`\n : false,\n hasWarpDriveEmber ? false : `- add \"@warp-drive-mirror/ember\" to your project in your package.json (and run install)`,\n '- add the following import to your app.js file:',\n '',\n '\\t```',\n `\\timport '@warp-drive-mirror/ember/install';`,\n '\\t```',\n ``,\n '- mark this deprecation as resolved in your project by adding the following to your WarpDrive config in ember-cli-build.js:',\n '',\n '\\t```',\n '\\tconst { setConfig } = await import(\"@warp-drive-mirror/build-config\");',\n '\\tsetConfig(app, __dirname, {',\n '\\t deprecations: {',\n '\\t DEPRECATE_TRACKING_PACKAGE: false,',\n '\\t },',\n '\\t});',\n '\\t```',\n ``,\n `For more information, see the Package Unification RFC: https://rfcs.emberjs.com/id/1075-warp-drive-package-unification/`,\n ]\n .filter((l) => l !== false)\n .join('\\n');\n\n deprecate(message, false, {\n id: 'warp-drive.deprecate-tracking-package',\n until: '6.0.0',\n for: 'warp-drive',\n since: {\n enabled: '5.3.4',\n available: '4.13',\n },\n url: 'https://deprecations.emberjs.com/id/warp-drive.deprecate-tracking-package',\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6LA,IAAAG,eAAAC,gBAAA,CAAA,CAAAa,UAAAC,aAAAC,0BAAA,GAAgC;CAC9B,IAAIC,uBAAuB;CAC3B,IAAIC,oBAAoB;CACxB,IAAIC,gCAAgC;CAEpC,IAAInB,eAAeF,oBAAoB,qBAAqB,GAAG,CAAC,GAAG;EACjEoB,oBAAoB;EACpBC,gCAAgCf,cAAc,aAAa,MAAM;CACnE;CAEA,IAAIJ,eAAeF,oBAAoB,wBAAwB,GAAG,CAAC,GAAG;EACpEmB,uBAAuB;EAEvB,IAAI,CAACE,+BAA+B;GAElC,MAAM,EAAEC,sBAAsBrB,WAAW,sBAAsB;GAE/DI,aAAaiB,iBAAiB;EAChC;CACF;CAGA,IAAI,CAACD,+BAA+B;EAClC,MAAME,UAAU;GACd;GACA;GACA;GACA;GACAJ,uBACI,+IACA;GACJC,oBAAoB,QAAQ;GAC5B;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EAAyH,CAC1H,CACEI,QAAQC,MAAMA,MAAM,KAAK,CAAC,CAC1BC,KAAK,IAAI;EAEZ3B,UAAUwB,SAAS,OAAO;GACxBI,IAAI;GACJC,OAAO;GACPC,KAAK;GACLC,OAAO;IACLC,SAAS;IACTC,WAAW;GACb;GACAC,KAAK;EACP,CAAC;CACH;AACF"}
@@ -0,0 +1,2 @@
1
+ import { BaseFinderOptions, CacheCapabilitiesManager, FindAllOptions, FindRecordOptions, LegacyResourceQuery, ModelSchema, QueryOptions, SchemaService } from "@warp-drive-mirror/core/types";
2
+ export type { BaseFinderOptions, CacheCapabilitiesManager, FindAllOptions, FindRecordOptions, LegacyResourceQuery, ModelSchema, QueryOptions, SchemaService };
package/dist/types.js CHANGED
@@ -1 +0,0 @@
1
-
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ember-data-mirror/store",
3
- "version": "5.9.0-beta.0",
4
- "description": "The core of EmberData. Provides the Store service which coordinates the cache with the network and presentation layers.",
3
+ "version": "5.9.0-beta.2",
4
+ "description": "(Legacy) EmberData Store service which coordinates the cache with the network and presentation layers.",
5
5
  "keywords": [
6
6
  "ember-addon"
7
7
  ],
@@ -13,12 +13,12 @@
13
13
  "license": "MIT",
14
14
  "author": "Chris Thoburn <runspired@users.noreply.github.com>",
15
15
  "files": [
16
- "unstable-preview-types",
17
16
  "addon-main.cjs",
18
17
  "dist",
19
18
  "README.md",
20
19
  "LICENSE.md",
21
- "logos"
20
+ "logos",
21
+ "unstable-preview-types"
22
22
  ],
23
23
  "exports": {
24
24
  ".": {
@@ -32,11 +32,11 @@
32
32
  }
33
33
  },
34
34
  "dependencies": {
35
- "@embroider/macros": "^1.18.1",
36
- "@warp-drive-mirror/core": "5.9.0-beta.0"
35
+ "@embroider/macros": "^1.20.6",
36
+ "@warp-drive-mirror/core": "5.9.0-beta.2"
37
37
  },
38
38
  "peerDependencies": {
39
- "@ember-data-mirror/tracking": "5.9.0-beta.0",
39
+ "@ember-data-mirror/tracking": "5.9.0-beta.2",
40
40
  "@ember/test-waiters": "^3.1.0 || ^4.0.0"
41
41
  },
42
42
  "peerDependenciesMeta": {
@@ -48,19 +48,16 @@
48
48
  }
49
49
  },
50
50
  "devDependencies": {
51
- "@babel/core": "^7.28.3",
52
- "@babel/plugin-transform-typescript": "^7.28.0",
53
- "@babel/preset-env": "^7.28.3",
54
- "@babel/preset-typescript": "^7.27.1",
55
- "@warp-drive/internal-config": "5.9.0-beta.0",
56
- "@ember-data-mirror/tracking": "5.9.0-beta.0",
57
- "@ember/test-waiters": "^4.1.1",
58
- "ember-source": "~6.6.0",
59
- "typescript": "^5.9.2",
60
- "vite": "^7.1.3"
61
- },
62
- "volta": {
63
- "extends": "../../../../../../package.json"
51
+ "@babel/core": "^7.29.7",
52
+ "@babel/plugin-transform-typescript": "^7.29.7",
53
+ "@babel/preset-env": "^7.29.7",
54
+ "@babel/preset-typescript": "^7.29.7",
55
+ "@ember-data-mirror/tracking": "5.9.0-beta.2",
56
+ "@ember/test-waiters": "^4.1.2",
57
+ "@warp-drive/internal-config": "5.9.0-beta.2",
58
+ "ember-source": "~7.2.0",
59
+ "tsdown": "^0.22.14",
60
+ "typescript-7": "npm:typescript@7.1.0-dev.20260828.1"
64
61
  },
65
62
  "ember-addon": {
66
63
  "main": "addon-main.cjs",
@@ -78,9 +75,9 @@
78
75
  }
79
76
  },
80
77
  "scripts": {
81
- "lint": "eslint . --quiet --cache --cache-strategy=content",
82
- "build:pkg": "vite build;",
78
+ "check:types": "node ./node_modules/typescript-7/bin/tsc --noEmit",
79
+ "build:pkg": "node node_modules/tsdown/dist/run.mjs",
83
80
  "sync": "echo \"syncing\"",
84
- "start": "vite"
81
+ "start": "node node_modules/tsdown/dist/run.mjs --watch"
85
82
  }
86
83
  }
@@ -1,4 +1,3 @@
1
1
  declare module '@ember-data-mirror/store/-private' {
2
2
  export * from "@warp-drive-mirror/core/store/-private";
3
-
4
3
  }
@@ -1,17 +1,4 @@
1
1
  declare module '@ember-data-mirror/store/configure' {
2
- /**
3
- * Provides a configuration API for the reactivity system
4
- * that WarpDrive should use.
5
- *
6
- * @module
7
- */
8
- /**
9
- * Configures the signals implementation to use. Supports multiple
10
- * implementations simultaneously.
11
- *
12
- * @public
13
- * @param {function} buildConfig - a function that takes options and returns a configuration object
14
- */
15
- export { setupSignals } from "@warp-drive-mirror/core/configure";
16
-
2
+ import { setupSignals } from "@warp-drive-mirror/core/configure";
3
+ export { setupSignals };
17
4
  }
@@ -1,9 +1,7 @@
1
+ /// <reference path="./-private.d.ts" />
1
2
  /// <reference path="./types.d.ts" />
2
3
  /// <reference path="./configure.d.ts" />
3
- /// <reference path="./-private.d.ts" />
4
4
  declare module '@ember-data-mirror/store' {
5
- import { Store } from "@warp-drive-mirror/core";
6
- export { Store as default };
7
- export { type StoreRequestContext, CacheHandler, type Document, type CachePolicy, type StoreRequestInput, recordIdentifierFor, storeFor, type DocumentCacheOperation, type CacheOperation, type NotificationType, setIdentifierGenerationMethod, setIdentifierUpdateMethod, setIdentifierForgetMethod, setIdentifierResetMethod, setKeyInfoForResource } from "@warp-drive-mirror/core";
8
-
5
+ import { CacheHandler, CacheOperation, CachePolicy, Document, DocumentCacheOperation, NotificationType, Store, StoreRequestContext, StoreRequestInput, recordIdentifierFor, setIdentifierForgetMethod, setIdentifierGenerationMethod, setIdentifierResetMethod, setIdentifierUpdateMethod, setKeyInfoForResource, storeFor } from "@warp-drive-mirror/core";
6
+ export { CacheHandler, type CacheOperation, type CachePolicy, type Document, type DocumentCacheOperation, type NotificationType, type StoreRequestContext, type StoreRequestInput, Store as default, recordIdentifierFor, setIdentifierForgetMethod, setIdentifierGenerationMethod, setIdentifierResetMethod, setIdentifierUpdateMethod, setKeyInfoForResource, storeFor };
9
7
  }
@@ -1,4 +1,4 @@
1
1
  declare module '@ember-data-mirror/store/types' {
2
- export type { CacheCapabilitiesManager, ModelSchema, SchemaService, BaseFinderOptions, FindRecordOptions, LegacyResourceQuery, QueryOptions, FindAllOptions } from "@warp-drive-mirror/core/types";
3
-
2
+ import { BaseFinderOptions, CacheCapabilitiesManager, FindAllOptions, FindRecordOptions, LegacyResourceQuery, ModelSchema, QueryOptions, SchemaService } from "@warp-drive-mirror/core/types";
3
+ export type { BaseFinderOptions, CacheCapabilitiesManager, FindAllOptions, FindRecordOptions, LegacyResourceQuery, ModelSchema, QueryOptions, SchemaService };
4
4
  }