@ember-data/model 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 +210 -0
- package/README.md +5 -0
- package/blueprints/model/files/__root__/__path__/__name__.js +1 -5
- package/blueprints/model/index.js +8 -150
- package/blueprints/model-test/index.js +10 -14
- package/blueprints/model-test/qunit-files/__root__/__path__/__test__.js +1 -13
- package/dist/-private.d.ts +1 -0
- package/dist/-private.js +1 -1
- package/dist/hooks.d.ts +2 -0
- package/dist/hooks.js +3 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +3 -1
- package/dist/migration-support.d.ts +1 -0
- package/dist/migration-support.js +1 -1
- package/package.json +20 -27
- package/unstable-preview-types/-private.d.ts +0 -2
- package/unstable-preview-types/hooks.d.ts +2 -2
- package/unstable-preview-types/index.d.ts +3 -41
- package/unstable-preview-types/migration-support.d.ts +0 -21
- package/blueprints/model/native-files/__root__/__path__/__name__.js +0 -5
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
# @ember-data/model Changelog
|
|
2
|
+
|
|
3
|
+
## v5.8.0 (2025-10-07)
|
|
4
|
+
|
|
5
|
+
#### :house: Internal
|
|
6
|
+
|
|
7
|
+
* [#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))
|
|
8
|
+
|
|
9
|
+
#### Committers: (1)
|
|
10
|
+
|
|
11
|
+
Chris Thoburn ([@runspired](https://github.com/runspired))
|
|
12
|
+
|
|
13
|
+
## v5.7.0 (2025-08-26)
|
|
14
|
+
|
|
15
|
+
#### :house: Internal
|
|
16
|
+
|
|
17
|
+
* [#10130](https://github.com/warp-drive-data/warp-drive/pull/10130) chore: bump pnpm version ([@runspired](https://github.com/runspired))
|
|
18
|
+
* [#10129](https://github.com/warp-drive-data/warp-drive/pull/10129) chore: bump typescript to 5.9 ([@runspired](https://github.com/runspired))
|
|
19
|
+
* [#10124](https://github.com/warp-drive-data/warp-drive/pull/10124) chore: mark a few types as private ([@runspired](https://github.com/runspired))
|
|
20
|
+
|
|
21
|
+
#### Committers: (1)
|
|
22
|
+
|
|
23
|
+
Chris Thoburn ([@runspired](https://github.com/runspired))
|
|
24
|
+
|
|
25
|
+
## v5.6.0 (2025-07-01)
|
|
26
|
+
|
|
27
|
+
#### :memo: Documentation
|
|
28
|
+
|
|
29
|
+
* [#9991](https://github.com/warp-drive-data/warp-drive/pull/9991) chore: improve output of typedoc ([@runspired](https://github.com/runspired))
|
|
30
|
+
* [#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))
|
|
31
|
+
|
|
32
|
+
#### :rocket: Enhancement
|
|
33
|
+
|
|
34
|
+
* [#10011](https://github.com/warp-drive-data/warp-drive/pull/10011) feat: @warp-drive/core/build-config ([@runspired](https://github.com/runspired))
|
|
35
|
+
* [#10005](https://github.com/warp-drive-data/warp-drive/pull/10005) feat: @warp-drive/legacy ([@runspired](https://github.com/runspired))
|
|
36
|
+
|
|
37
|
+
#### :bug: Bug Fix
|
|
38
|
+
|
|
39
|
+
* [#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))
|
|
40
|
+
|
|
41
|
+
#### :house: Internal
|
|
42
|
+
|
|
43
|
+
* [#10042](https://github.com/warp-drive-data/warp-drive/pull/10042) chore: upgrade to vite7 ([@runspired](https://github.com/runspired))
|
|
44
|
+
* [#10040](https://github.com/warp-drive-data/warp-drive/pull/10040) chore: isolated declarations ([@runspired](https://github.com/runspired))
|
|
45
|
+
* [#10039](https://github.com/warp-drive-data/warp-drive/pull/10039) chore: bump pnpm ([@runspired](https://github.com/runspired))
|
|
46
|
+
|
|
47
|
+
#### Committers: (1)
|
|
48
|
+
|
|
49
|
+
Chris Thoburn ([@runspired](https://github.com/runspired))
|
|
50
|
+
|
|
51
|
+
## v5.5.0 (2025-05-08)
|
|
52
|
+
|
|
53
|
+
#### :memo: Documentation
|
|
54
|
+
|
|
55
|
+
* [#9975](https://github.com/warp-drive-data/warp-drive/pull/9975) types: fixup PolarisMode schema types to check better ([@runspired](https://github.com/runspired))
|
|
56
|
+
* [#9971](https://github.com/warp-drive-data/warp-drive/pull/9971) docs: add more documentation and type utils around LegacyMode and potential migration paths ([@runspired](https://github.com/runspired))
|
|
57
|
+
|
|
58
|
+
#### :rocket: Enhancement
|
|
59
|
+
|
|
60
|
+
* [#9971](https://github.com/warp-drive-data/warp-drive/pull/9971) docs: add more documentation and type utils around LegacyMode and potential migration paths ([@runspired](https://github.com/runspired))
|
|
61
|
+
* [#9965](https://github.com/warp-drive-data/warp-drive/pull/9965) feat: universal reactivity hooks ([@runspired](https://github.com/runspired))
|
|
62
|
+
|
|
63
|
+
#### :house: Internal
|
|
64
|
+
|
|
65
|
+
* [#9965](https://github.com/warp-drive-data/warp-drive/pull/9965) feat: universal reactivity hooks ([@runspired](https://github.com/runspired))
|
|
66
|
+
* [#9964](https://github.com/warp-drive-data/warp-drive/pull/9964) chore: refactor PromiseState and RequestState to prep for @warp-drive/core ([@runspired](https://github.com/runspired))
|
|
67
|
+
|
|
68
|
+
#### Committers: (1)
|
|
69
|
+
|
|
70
|
+
Chris Thoburn ([@runspired](https://github.com/runspired))
|
|
71
|
+
|
|
72
|
+
## v5.4.0 (2025-04-11)
|
|
73
|
+
|
|
74
|
+
#### :memo: Documentation
|
|
75
|
+
|
|
76
|
+
* [#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))
|
|
77
|
+
|
|
78
|
+
#### :rocket: Enhancement
|
|
79
|
+
|
|
80
|
+
* [#9896](https://github.com/warp-drive-data/warp-drive/pull/9896) feat: whoa debugging ([@runspired](https://github.com/runspired))
|
|
81
|
+
* [#9883](https://github.com/warp-drive-data/warp-drive/pull/9883) feat: make documents react to cache updates ([@runspired](https://github.com/runspired))
|
|
82
|
+
* [#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))
|
|
83
|
+
* [#9757](https://github.com/warp-drive-data/warp-drive/pull/9757) feat: schema type utils ([@runspired](https://github.com/runspired))
|
|
84
|
+
* [#9676](https://github.com/warp-drive-data/warp-drive/pull/9676) Feat: hasMany linksMode ([@leoeuclids](https://github.com/leoeuclids))
|
|
85
|
+
* [#9585](https://github.com/warp-drive-data/warp-drive/pull/9585) chore: stub out linksMode work ([@runspired](https://github.com/runspired))
|
|
86
|
+
* [#9541](https://github.com/warp-drive-data/warp-drive/pull/9541) feat: eslint-plugin-(ember-data|warp-drive) ([@runspired](https://github.com/runspired))
|
|
87
|
+
|
|
88
|
+
#### :bug: Bug Fix
|
|
89
|
+
|
|
90
|
+
* [#9698](https://github.com/warp-drive-data/warp-drive/pull/9698) fix: Don't notify changes for attributes not registered with the schema ([@gitKrystan](https://github.com/gitKrystan))
|
|
91
|
+
* [#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))
|
|
92
|
+
* [#9566](https://github.com/warp-drive-data/warp-drive/pull/9566) fix: attr should support transforms with union serialized types ([@runspired](https://github.com/runspired))
|
|
93
|
+
|
|
94
|
+
#### :house: Internal
|
|
95
|
+
|
|
96
|
+
* [#9780](https://github.com/warp-drive-data/warp-drive/pull/9780) chore: bump @glimmer/component ([@runspired](https://github.com/runspired))
|
|
97
|
+
* [#9759](https://github.com/warp-drive-data/warp-drive/pull/9759) chore: Improve contributing experience ([@runspired](https://github.com/runspired))
|
|
98
|
+
* [#9752](https://github.com/warp-drive-data/warp-drive/pull/9752) chore: tooling upgrades to support WarpDrive package unification ([@runspired](https://github.com/runspired))
|
|
99
|
+
* [#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))
|
|
100
|
+
* [#9699](https://github.com/warp-drive-data/warp-drive/pull/9699) chore: update to pnpm 10 ([@runspired](https://github.com/runspired))
|
|
101
|
+
* [#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))
|
|
102
|
+
* [#9620](https://github.com/warp-drive-data/warp-drive/pull/9620) Starwars ([@NullVoxPopuli](https://github.com/NullVoxPopuli))
|
|
103
|
+
* [#9596](https://github.com/warp-drive-data/warp-drive/pull/9596) chore: Remove unused `--report-unused-disable-directives` flag ([@gitKrystan](https://github.com/gitKrystan))
|
|
104
|
+
* [#9490](https://github.com/warp-drive-data/warp-drive/pull/9490) Add export point for direct export of blueprints ([@Baltazore](https://github.com/Baltazore))
|
|
105
|
+
|
|
106
|
+
#### Committers: (6)
|
|
107
|
+
|
|
108
|
+
Markus Sanin ([@mkszepp](https://github.com/mkszepp))
|
|
109
|
+
Chris Thoburn ([@runspired](https://github.com/runspired))
|
|
110
|
+
Leo Euclides ([@leoeuclids](https://github.com/leoeuclids))
|
|
111
|
+
Krystan HuffMenne ([@gitKrystan](https://github.com/gitKrystan))
|
|
112
|
+
[@NullVoxPopuli](https://github.com/NullVoxPopuli)
|
|
113
|
+
Kirill Shaplyko ([@Baltazore](https://github.com/Baltazore))
|
|
114
|
+
|
|
115
|
+
## v5.3.4 (2024-06-15)
|
|
116
|
+
|
|
117
|
+
#### :memo: Documentation
|
|
118
|
+
|
|
119
|
+
* [#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))
|
|
120
|
+
|
|
121
|
+
#### :rocket: Enhancement
|
|
122
|
+
|
|
123
|
+
* [#9471](https://github.com/warp-drive-data/warp-drive/pull/9471) feat: npx warp-drive ([@runspired](https://github.com/runspired))
|
|
124
|
+
* [#9468](https://github.com/warp-drive-data/warp-drive/pull/9468) feat: string utils 🌌 ([@runspired](https://github.com/runspired))
|
|
125
|
+
* [#9464](https://github.com/warp-drive-data/warp-drive/pull/9464) feat: implement support for legacy hasMany and belongsTo relationship reads ([@runspired](https://github.com/runspired))
|
|
126
|
+
* [#9407](https://github.com/warp-drive-data/warp-drive/pull/9407) feat: v2 addons ([@runspired](https://github.com/runspired))
|
|
127
|
+
* [#9453](https://github.com/warp-drive-data/warp-drive/pull/9453) feat: update SchemaService to reflect RFC updates ([@runspired](https://github.com/runspired))
|
|
128
|
+
* [#9448](https://github.com/warp-drive-data/warp-drive/pull/9448) feat: impl SchemaService RFC ([@runspired](https://github.com/runspired))
|
|
129
|
+
* [#9450](https://github.com/warp-drive-data/warp-drive/pull/9450) feat: improve typing around Model and createRecord ([@runspired](https://github.com/runspired))
|
|
130
|
+
* [#9387](https://github.com/warp-drive-data/warp-drive/pull/9387) feat: better types for legacy store methods ([@runspired](https://github.com/runspired))
|
|
131
|
+
* [#9366](https://github.com/warp-drive-data/warp-drive/pull/9366) feat: typed Model ([@runspired](https://github.com/runspired))
|
|
132
|
+
* [#9317](https://github.com/warp-drive-data/warp-drive/pull/9317) feat: ensure data utils work well with legacy relationship proxies ([@runspired](https://github.com/runspired))
|
|
133
|
+
* [#9260](https://github.com/warp-drive-data/warp-drive/pull/9260) feat: ember specific data utils ([@runspired](https://github.com/runspired))
|
|
134
|
+
* [#9256](https://github.com/warp-drive-data/warp-drive/pull/9256) feat: improve alpha types support ([@runspired](https://github.com/runspired))
|
|
135
|
+
* [#9250](https://github.com/warp-drive-data/warp-drive/pull/9250) feat: fix types for legacy decorator syntax ([@runspired](https://github.com/runspired))
|
|
136
|
+
* [#9249](https://github.com/warp-drive-data/warp-drive/pull/9249) chore: handle declare statements in module rewriting ([@runspired](https://github.com/runspired))
|
|
137
|
+
* [#9245](https://github.com/warp-drive-data/warp-drive/pull/9245) feat: add consumer types for Model APIs ([@runspired](https://github.com/runspired))
|
|
138
|
+
* [#9244](https://github.com/warp-drive-data/warp-drive/pull/9244) feat: improves consumer-facing store types ([@runspired](https://github.com/runspired))
|
|
139
|
+
|
|
140
|
+
#### :bug: Bug Fix
|
|
141
|
+
|
|
142
|
+
* [#9265](https://github.com/warp-drive-data/warp-drive/pull/9265) feat: Improve config handling for polyfillUUID ([@MehulKChaudhari](https://github.com/MehulKChaudhari))
|
|
143
|
+
|
|
144
|
+
#### :house: Internal
|
|
145
|
+
|
|
146
|
+
* [#9476](https://github.com/warp-drive-data/warp-drive/pull/9476) chore: cleanup symbol usage ([@runspired](https://github.com/runspired))
|
|
147
|
+
* [#9463](https://github.com/warp-drive-data/warp-drive/pull/9463) types: ManyArray => HasMany ([@runspired](https://github.com/runspired))
|
|
148
|
+
* [#9292](https://github.com/warp-drive-data/warp-drive/pull/9292) feat: add new build-config package ([@runspired](https://github.com/runspired))
|
|
149
|
+
* [#9370](https://github.com/warp-drive-data/warp-drive/pull/9370) chore: rename macros ([@runspired](https://github.com/runspired))
|
|
150
|
+
* [#9303](https://github.com/warp-drive-data/warp-drive/pull/9303) infra: setup mirror and types publishing ([@runspired](https://github.com/runspired))
|
|
151
|
+
* [#9279](https://github.com/warp-drive-data/warp-drive/pull/9279) types: branded transforms and improve types needed for serializers ([@runspired](https://github.com/runspired))
|
|
152
|
+
|
|
153
|
+
#### Committers: (2)
|
|
154
|
+
|
|
155
|
+
Chris Thoburn ([@runspired](https://github.com/runspired))
|
|
156
|
+
Mehul Kiran Chaudhari ([@MehulKChaudhari](https://github.com/MehulKChaudhari))
|
|
157
|
+
|
|
158
|
+
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)
|
|
159
|
+
|
|
160
|
+
## v5.3.1 (2024-02-24)
|
|
161
|
+
|
|
162
|
+
#### :evergreen_tree: New Deprecation
|
|
163
|
+
|
|
164
|
+
* [#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))
|
|
165
|
+
|
|
166
|
+
#### :memo: Documentation
|
|
167
|
+
|
|
168
|
+
* [#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))
|
|
169
|
+
* [#9072](https://github.com/warp-drive-data/warp-drive/pull/9072) feat: advanced JSON:API queries & basic request example ([@runspired](https://github.com/runspired))
|
|
170
|
+
|
|
171
|
+
#### :rocket: Enhancement
|
|
172
|
+
|
|
173
|
+
* [#9220](https://github.com/warp-drive-data/warp-drive/pull/9220) feat: request infra improvements ([@runspired](https://github.com/runspired))
|
|
174
|
+
* [#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))
|
|
175
|
+
* [#9094](https://github.com/warp-drive-data/warp-drive/pull/9094) feat: support legacy attribute behaviors in SchemaRecord ([@gitKrystan](https://github.com/gitKrystan))
|
|
176
|
+
* [#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))
|
|
177
|
+
* [#9072](https://github.com/warp-drive-data/warp-drive/pull/9072) feat: advanced JSON:API queries & basic request example ([@runspired](https://github.com/runspired))
|
|
178
|
+
* [#8949](https://github.com/warp-drive-data/warp-drive/pull/8949) feat:prepare for universal reactivity ([@runspired](https://github.com/runspired))
|
|
179
|
+
* [#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))
|
|
180
|
+
|
|
181
|
+
#### :bug: Bug Fix
|
|
182
|
+
|
|
183
|
+
* [#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))
|
|
184
|
+
* [#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))
|
|
185
|
+
|
|
186
|
+
#### :house: Internal
|
|
187
|
+
|
|
188
|
+
* [#9110](https://github.com/warp-drive-data/warp-drive/pull/9110) Stricter typescript-eslint config ([@gitKrystan](https://github.com/gitKrystan))
|
|
189
|
+
* [#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))
|
|
190
|
+
* [#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))
|
|
191
|
+
* [#9055](https://github.com/warp-drive-data/warp-drive/pull/9055) Fix ESLint for VSCode ([@gitKrystan](https://github.com/gitKrystan))
|
|
192
|
+
* [#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))
|
|
193
|
+
* [#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))
|
|
194
|
+
* [#9050](https://github.com/warp-drive-data/warp-drive/pull/9050) chore: use composite mode for tsc ([@runspired](https://github.com/runspired))
|
|
195
|
+
* [#9049](https://github.com/warp-drive-data/warp-drive/pull/9049) chore: incremental tsc builds ([@runspired](https://github.com/runspired))
|
|
196
|
+
* [#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))
|
|
197
|
+
* [#9029](https://github.com/warp-drive-data/warp-drive/pull/9029) chore: add @warp-drive/core as home for shared code ([@runspired](https://github.com/runspired))
|
|
198
|
+
* [#9028](https://github.com/warp-drive-data/warp-drive/pull/9028) chore: more isolated types ([@runspired](https://github.com/runspired))
|
|
199
|
+
* [#9025](https://github.com/warp-drive-data/warp-drive/pull/9025) chore: reconfigure request package type location ([@runspired](https://github.com/runspired))
|
|
200
|
+
* [#9021](https://github.com/warp-drive-data/warp-drive/pull/9021) chore: cleanup ember-data/-private types ([@runspired](https://github.com/runspired))
|
|
201
|
+
* [#9019](https://github.com/warp-drive-data/warp-drive/pull/9019) chore: make model types strict ([@runspired](https://github.com/runspired))
|
|
202
|
+
* [#9006](https://github.com/warp-drive-data/warp-drive/pull/9006) chore (internal): convert builder and request tests to use diagnostic+runner ([@runspired](https://github.com/runspired))
|
|
203
|
+
* [#8931](https://github.com/warp-drive-data/warp-drive/pull/8931) chore: package infra for schema-record ([@runspired](https://github.com/runspired))
|
|
204
|
+
* [#8930](https://github.com/warp-drive-data/warp-drive/pull/8930) chore: get last request for any record on instantiation ([@runspired](https://github.com/runspired))
|
|
205
|
+
|
|
206
|
+
#### Committers: (2)
|
|
207
|
+
|
|
208
|
+
Krystan HuffMenne ([@gitKrystan](https://github.com/gitKrystan))
|
|
209
|
+
Chris Thoburn ([@runspired](https://github.com/runspired))
|
|
210
|
+
|
package/README.md
CHANGED
|
@@ -28,6 +28,11 @@
|
|
|
28
28
|
|
|
29
29
|
# @ember-data/model
|
|
30
30
|
|
|
31
|
+
> [!WARNING]
|
|
32
|
+
> **⚠️ This is a legacy package** not recommended for new applications.
|
|
33
|
+
>
|
|
34
|
+
> Use schema objects from [@warp-drive/core](https://warp-drive.io/api/@warp-drive/core/) instead.
|
|
35
|
+
|
|
31
36
|
Runtime classes for use as a source of ResourceSchema and as a ReactiveResource for older "legacy" EmberData/WarpDrive configurations.
|
|
32
37
|
|
|
33
38
|
If using more recent versions of WarpDrive, install this via [@warp-drive/legacy](https://www.npmjs.com/package/@warp-drive/legacy) instead.
|
|
@@ -1,11 +1,3 @@
|
|
|
1
|
-
const path = require('path');
|
|
2
|
-
const EOL = require('os').EOL;
|
|
3
|
-
|
|
4
|
-
const { has } = require('@ember/edition-utils');
|
|
5
|
-
|
|
6
|
-
const inflection = require('inflection');
|
|
7
|
-
const stringUtils = require('ember-cli-string-utils');
|
|
8
|
-
|
|
9
1
|
module.exports = {
|
|
10
2
|
description: 'Generates an ember-data Model.',
|
|
11
3
|
|
|
@@ -13,151 +5,17 @@ module.exports = {
|
|
|
13
5
|
|
|
14
6
|
root: __dirname,
|
|
15
7
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
if (hasOctane && process.env.EMBER_EDITION === 'classic') {
|
|
19
|
-
hasOctane = false; //forcible override
|
|
20
|
-
}
|
|
21
|
-
let rootPath = hasOctane ? 'native-files' : 'files';
|
|
22
|
-
return path.join(__dirname, rootPath);
|
|
23
|
-
},
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
locals(options) {
|
|
27
|
-
let attrs = [];
|
|
28
|
-
let needs = [];
|
|
29
|
-
let entityOptions = options.entity.options;
|
|
30
|
-
let includeHasMany = false;
|
|
31
|
-
let includeBelongsTo = false;
|
|
32
|
-
let includeAttr = false;
|
|
33
|
-
|
|
34
|
-
for (let name in entityOptions) {
|
|
35
|
-
let type = entityOptions[name] || '';
|
|
36
|
-
let foreignModel = name;
|
|
37
|
-
if (type.indexOf(':') > -1) {
|
|
38
|
-
foreignModel = type.split(':')[1];
|
|
39
|
-
type = type.split(':')[0];
|
|
40
|
-
}
|
|
41
|
-
let dasherizedName = stringUtils.dasherize(name);
|
|
42
|
-
let camelizedName = stringUtils.camelize(name);
|
|
43
|
-
let dasherizedType = stringUtils.dasherize(type);
|
|
44
|
-
let dasherizedForeignModel = stringUtils.dasherize(foreignModel);
|
|
45
|
-
let dasherizedForeignModelSingular = inflection.singularize(dasherizedForeignModel);
|
|
46
|
-
|
|
47
|
-
let attr;
|
|
48
|
-
if (/has-many/.test(dasherizedType)) {
|
|
49
|
-
includeHasMany = true;
|
|
50
|
-
let camelizedNamePlural = inflection.pluralize(camelizedName);
|
|
51
|
-
attr = {
|
|
52
|
-
name: dasherizedForeignModelSingular,
|
|
53
|
-
type: dasherizedType,
|
|
54
|
-
propertyName: camelizedNamePlural,
|
|
55
|
-
};
|
|
56
|
-
} else if (/belongs-to/.test(dasherizedType)) {
|
|
57
|
-
includeBelongsTo = true;
|
|
58
|
-
attr = {
|
|
59
|
-
name: dasherizedForeignModel,
|
|
60
|
-
type: dasherizedType,
|
|
61
|
-
propertyName: camelizedName,
|
|
62
|
-
};
|
|
63
|
-
} else {
|
|
64
|
-
includeAttr = true;
|
|
65
|
-
attr = {
|
|
66
|
-
name: dasherizedName,
|
|
67
|
-
type: dasherizedType,
|
|
68
|
-
propertyName: camelizedName,
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
attrs.push(attr);
|
|
72
|
-
|
|
73
|
-
if (/has-many|belongs-to/.test(dasherizedType)) {
|
|
74
|
-
needs.push("'model:" + dasherizedForeignModelSingular + "'");
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
if (attrs.length) {
|
|
79
|
-
let attrTransformer, attrSeparator;
|
|
8
|
+
async locals(options) {
|
|
9
|
+
const { generateModelSource } = await import('warp-drive/generators/model');
|
|
80
10
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
}
|
|
85
|
-
if (hasOctane) {
|
|
86
|
-
attrTransformer = nativeAttr;
|
|
87
|
-
attrSeparator = ';';
|
|
88
|
-
} else {
|
|
89
|
-
attrTransformer = classicAttr;
|
|
90
|
-
attrSeparator = ',';
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
attrs = attrs.map(attrTransformer);
|
|
94
|
-
attrs = ' ' + attrs.join(attrSeparator + EOL + ' ');
|
|
95
|
-
if (hasOctane) {
|
|
96
|
-
attrs = attrs + attrSeparator;
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
let needsDeduplicated = needs.filter(function (need, i) {
|
|
101
|
-
return needs.indexOf(need) === i;
|
|
11
|
+
const entityOptions = options.entity.options;
|
|
12
|
+
const rawAttrs = Object.keys(entityOptions).map((name) => {
|
|
13
|
+
const type = entityOptions[name];
|
|
14
|
+
return type ? `${name}:${type}` : name;
|
|
102
15
|
});
|
|
103
|
-
needs = ' needs: [' + needsDeduplicated.join(', ') + ']';
|
|
104
|
-
|
|
105
|
-
let importedModules = [];
|
|
106
|
-
if (includeAttr) {
|
|
107
|
-
importedModules.push('attr');
|
|
108
|
-
}
|
|
109
|
-
if (includeBelongsTo) {
|
|
110
|
-
importedModules.push('belongsTo');
|
|
111
|
-
}
|
|
112
|
-
if (includeHasMany) {
|
|
113
|
-
importedModules.push('hasMany');
|
|
114
|
-
}
|
|
115
|
-
importedModules = importedModules.join(', ');
|
|
116
16
|
|
|
117
17
|
return {
|
|
118
|
-
|
|
119
|
-
attrs,
|
|
120
|
-
needs,
|
|
18
|
+
content: generateModelSource(options.entity.name, rawAttrs),
|
|
121
19
|
};
|
|
122
20
|
},
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
function nativeAttr(attr) {
|
|
126
|
-
let name = attr.name,
|
|
127
|
-
type = attr.type,
|
|
128
|
-
propertyName = attr.propertyName,
|
|
129
|
-
result;
|
|
130
|
-
|
|
131
|
-
if (type === 'belongs-to') {
|
|
132
|
-
result = "@belongsTo('" + name + "', { async: false, inverse: null })";
|
|
133
|
-
} else if (type === 'has-many') {
|
|
134
|
-
result = "@hasMany('" + name + "', { async: false, inverse: null })";
|
|
135
|
-
} else if (type === '') {
|
|
136
|
-
result = '@attr';
|
|
137
|
-
} else {
|
|
138
|
-
result = "@attr('" + type + "')";
|
|
139
|
-
}
|
|
140
|
-
return result + ' ' + propertyName;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
function classicAttr(attr) {
|
|
144
|
-
let name = attr.name,
|
|
145
|
-
type = attr.type,
|
|
146
|
-
propertyName = attr.propertyName,
|
|
147
|
-
result;
|
|
148
|
-
|
|
149
|
-
if (type === 'belongs-to') {
|
|
150
|
-
result = "belongsTo('" + name + "', { async: false, inverse: null })";
|
|
151
|
-
} else if (type === 'has-many') {
|
|
152
|
-
result = "hasMany('" + name + "', { async: false, inverse: null })";
|
|
153
|
-
} else if (type === '') {
|
|
154
|
-
//"If you don't specify the type of the attribute, it will be whatever was provided by the server"
|
|
155
|
-
//https://emberjs.com/guides/models/defining-models/
|
|
156
|
-
result = 'attr()';
|
|
157
|
-
} else {
|
|
158
|
-
result = "attr('" + type + "')";
|
|
159
|
-
}
|
|
160
|
-
return propertyName + ': ' + result;
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
|
|
21
|
+
};
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
const path = require('path');
|
|
2
2
|
|
|
3
|
-
const testInfo = require('ember-cli-test-info');
|
|
4
|
-
const { dasherize } = require('ember-cli-string-utils');
|
|
5
|
-
|
|
6
|
-
const ModelBlueprint = require('../model');
|
|
7
|
-
|
|
8
3
|
module.exports = {
|
|
9
4
|
description: 'Generates an EmberData Model unit test',
|
|
10
|
-
supportsAddon() {
|
|
5
|
+
supportsAddon() {
|
|
6
|
+
return false;
|
|
7
|
+
},
|
|
11
8
|
|
|
12
9
|
root: __dirname,
|
|
13
10
|
|
|
@@ -22,18 +19,17 @@ module.exports = {
|
|
|
22
19
|
};
|
|
23
20
|
},
|
|
24
21
|
|
|
25
|
-
locals(options) {
|
|
26
|
-
const
|
|
22
|
+
async locals(options) {
|
|
23
|
+
const { generateUnitTestSource } = await import('warp-drive/generators/tests');
|
|
24
|
+
const { dasherize } = await import('warp-drive/generators/strings');
|
|
27
25
|
const modulePrefix = dasherize(options.project.config().modulePrefix);
|
|
26
|
+
|
|
28
27
|
return {
|
|
29
|
-
|
|
30
|
-
friendlyTestDescription: testInfo.description(options.entity.name, 'Unit', 'Model'),
|
|
31
|
-
modulePrefix,
|
|
28
|
+
content: generateUnitTestSource('Model', options.entity.name, modulePrefix),
|
|
32
29
|
};
|
|
33
30
|
},
|
|
34
31
|
|
|
35
32
|
filesPath() {
|
|
36
|
-
return path.join(__dirname, 'qunit-files')
|
|
37
|
-
}
|
|
33
|
+
return path.join(__dirname, 'qunit-files');
|
|
34
|
+
},
|
|
38
35
|
};
|
|
39
|
-
|
|
@@ -1,13 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import { module, test } from 'qunit';
|
|
3
|
-
|
|
4
|
-
module('<%= friendlyTestDescription %>', function (hooks) {
|
|
5
|
-
setupTest(hooks);
|
|
6
|
-
|
|
7
|
-
// Replace this with your real tests.
|
|
8
|
-
test('it exists', function (assert) {
|
|
9
|
-
const store = this.owner.lookup('service:store');
|
|
10
|
-
const model = store.createRecord('<%= dasherizedModuleName %>', {});
|
|
11
|
-
assert.ok(model, 'model exists');
|
|
12
|
-
});
|
|
13
|
-
});
|
|
1
|
+
<%- content %>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type * from "@warp-drive/legacy/model/-private";
|
package/dist/-private.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from
|
|
1
|
+
export * from "@warp-drive/legacy/model/-private"
|
package/dist/hooks.d.ts
ADDED
package/dist/hooks.js
CHANGED
|
@@ -1 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
import { buildSchema, instantiateRecord, modelFor, teardownRecord } from "@warp-drive/legacy/model";
|
|
2
|
+
|
|
3
|
+
export { buildSchema, instantiateRecord, modelFor, teardownRecord };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import model_default, { AsyncBelongsTo, AsyncHasMany, HasMany, ManyArray, attr, belongsTo, buildSchema, hasMany, instantiateRecord, modelFor, teardownRecord } from "@warp-drive/legacy/model";
|
|
2
|
+
export { type AsyncBelongsTo, type AsyncHasMany, type HasMany, type ManyArray, attr, belongsTo, buildSchema, model_default as default, hasMany, instantiateRecord, modelFor, teardownRecord };
|
package/dist/index.js
CHANGED
|
@@ -1 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
import model_default, { attr, belongsTo, buildSchema, hasMany, instantiateRecord, modelFor, teardownRecord } from "@warp-drive/legacy/model";
|
|
2
|
+
|
|
3
|
+
export { attr, belongsTo, buildSchema, model_default as default, hasMany, instantiateRecord, modelFor, teardownRecord };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type * from "@warp-drive/legacy/model/migration-support";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from
|
|
1
|
+
export * from "@warp-drive/legacy/model/migration-support"
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ember-data/model",
|
|
3
|
-
"version": "5.9.0-beta.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "5.9.0-beta.2",
|
|
4
|
+
"description": "(Legacy) Ember implementation of a resource presentation layer for use with @ember-data/store",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ember-addon"
|
|
7
7
|
],
|
|
@@ -19,13 +19,13 @@
|
|
|
19
19
|
"version": 2
|
|
20
20
|
},
|
|
21
21
|
"files": [
|
|
22
|
-
"unstable-preview-types",
|
|
23
22
|
"blueprints",
|
|
24
23
|
"addon-main.cjs",
|
|
25
24
|
"dist",
|
|
26
25
|
"README.md",
|
|
27
26
|
"LICENSE.md",
|
|
28
|
-
"logos"
|
|
27
|
+
"logos",
|
|
28
|
+
"unstable-preview-types"
|
|
29
29
|
],
|
|
30
30
|
"exports": {
|
|
31
31
|
".": {
|
|
@@ -41,29 +41,22 @@
|
|
|
41
41
|
"types": "./unstable-preview-types/index.d.ts"
|
|
42
42
|
}
|
|
43
43
|
},
|
|
44
|
-
"peerDependencies": {},
|
|
45
44
|
"dependencies": {
|
|
46
|
-
"@
|
|
47
|
-
"@
|
|
48
|
-
"
|
|
49
|
-
"
|
|
50
|
-
"
|
|
51
|
-
"@warp-drive/core": "5.9.0-beta.0",
|
|
52
|
-
"@warp-drive/legacy": "5.9.0-beta.0",
|
|
53
|
-
"@warp-drive/utilities": "5.9.0-beta.0"
|
|
45
|
+
"@embroider/macros": "^1.20.6",
|
|
46
|
+
"@warp-drive/core": "5.9.0-beta.2",
|
|
47
|
+
"@warp-drive/legacy": "5.9.0-beta.2",
|
|
48
|
+
"@warp-drive/utilities": "5.9.0-beta.2",
|
|
49
|
+
"warp-drive": "0.2.0-beta.2"
|
|
54
50
|
},
|
|
55
51
|
"devDependencies": {
|
|
56
|
-
"@babel/core": "^7.
|
|
57
|
-
"@babel/plugin-transform-typescript": "^7.
|
|
58
|
-
"@babel/preset-env": "^7.
|
|
59
|
-
"@babel/preset-typescript": "^7.
|
|
60
|
-
"@warp-drive/internal-config": "5.9.0-beta.
|
|
61
|
-
"expect-type": "^1.
|
|
62
|
-
"
|
|
63
|
-
"
|
|
64
|
-
},
|
|
65
|
-
"volta": {
|
|
66
|
-
"extends": "../../package.json"
|
|
52
|
+
"@babel/core": "^7.29.7",
|
|
53
|
+
"@babel/plugin-transform-typescript": "^7.29.7",
|
|
54
|
+
"@babel/preset-env": "^7.29.7",
|
|
55
|
+
"@babel/preset-typescript": "^7.29.7",
|
|
56
|
+
"@warp-drive/internal-config": "5.9.0-beta.2",
|
|
57
|
+
"expect-type": "^1.4.0",
|
|
58
|
+
"tsdown": "^0.22.14",
|
|
59
|
+
"typescript-7": "npm:typescript@7.1.0-dev.20260828.1"
|
|
67
60
|
},
|
|
68
61
|
"typesVersions": {
|
|
69
62
|
"*": {
|
|
@@ -73,9 +66,9 @@
|
|
|
73
66
|
}
|
|
74
67
|
},
|
|
75
68
|
"scripts": {
|
|
76
|
-
"
|
|
77
|
-
"build:pkg": "
|
|
69
|
+
"check:types": "node ./node_modules/typescript-7/bin/tsc --noEmit",
|
|
70
|
+
"build:pkg": "node node_modules/tsdown/dist/run.mjs",
|
|
78
71
|
"sync": "echo \"syncing\"",
|
|
79
|
-
"start": "
|
|
72
|
+
"start": "node node_modules/tsdown/dist/run.mjs --watch"
|
|
80
73
|
}
|
|
81
74
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
declare module '@ember-data/model/hooks' {
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
import { buildSchema, instantiateRecord, modelFor, teardownRecord } from "@warp-drive/legacy/model";
|
|
3
|
+
export { buildSchema, instantiateRecord, modelFor, teardownRecord };
|
|
4
4
|
}
|
|
@@ -1,45 +1,7 @@
|
|
|
1
|
+
/// <reference path="./-private.d.ts" />
|
|
1
2
|
/// <reference path="./migration-support.d.ts" />
|
|
2
3
|
/// <reference path="./hooks.d.ts" />
|
|
3
|
-
/// <reference path="./-private.d.ts" />
|
|
4
4
|
declare module '@ember-data/model' {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
*
|
|
8
|
-
* Models are defined as classes extending from `import Model from '@ember-data/model';` and the
|
|
9
|
-
* attributes and relationships on these classes are parsed at runtime to supply static "schema"
|
|
10
|
-
* to EmberData's SchemaService.
|
|
11
|
-
*
|
|
12
|
-
* Resource data for individual resources fetched from your API is presented to the UI via instances
|
|
13
|
-
* of the `Model`s you define. An instantiated `Model` is referred to as a `record`.
|
|
14
|
-
|
|
15
|
-
When we refer to the `ModelClass` as opposed to a `Model` or `Record` we are referring
|
|
16
|
-
specifically to the class definition and the static schema methods present on it.
|
|
17
|
-
|
|
18
|
-
When we refer to a `record` we refer to a specific class instance presenting
|
|
19
|
-
the resource data for a given `type` and `id`.
|
|
20
|
-
|
|
21
|
-
### Defining a Model
|
|
22
|
-
|
|
23
|
-
```js [app/models/person.js]
|
|
24
|
-
import Model, { attr, belongsTo, hasMany } from '@ember-data/model';
|
|
25
|
-
|
|
26
|
-
export default class PersonModel extends Model {
|
|
27
|
-
@attr name;
|
|
28
|
-
|
|
29
|
-
@belongsTo('pet', { inverse: 'owners', async: false }) dog;
|
|
30
|
-
|
|
31
|
-
@hasMany('person', { inverse: 'friends', async: true }) friends;
|
|
32
|
-
}
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
### modelName convention
|
|
36
|
-
|
|
37
|
-
By convention, the name of a given model (its `type`) matches the name
|
|
38
|
-
of the file in the `app/models` folder and should be lowercase, singular
|
|
39
|
-
and dasherized.
|
|
40
|
-
|
|
41
|
-
@module
|
|
42
|
-
*/
|
|
43
|
-
export { default, attr, belongsTo, hasMany, instantiateRecord, teardownRecord, modelFor, buildSchema, type ManyArray, type HasMany, type AsyncHasMany, type AsyncBelongsTo } from "@warp-drive/legacy/model";
|
|
44
|
-
|
|
5
|
+
import model_default, { AsyncBelongsTo, AsyncHasMany, HasMany, ManyArray, attr, belongsTo, buildSchema, hasMany, instantiateRecord, modelFor, teardownRecord } from "@warp-drive/legacy/model";
|
|
6
|
+
export { type AsyncBelongsTo, type AsyncHasMany, type HasMany, type ManyArray, attr, belongsTo, buildSchema, model_default as default, hasMany, instantiateRecord, modelFor, teardownRecord };
|
|
45
7
|
}
|
|
@@ -1,24 +1,3 @@
|
|
|
1
1
|
declare module '@ember-data/model/migration-support' {
|
|
2
|
-
/**
|
|
3
|
-
* This module provides support for migrating away from @ember-data/model
|
|
4
|
-
* to @warp-drive/schema-record.
|
|
5
|
-
*
|
|
6
|
-
* It includes:
|
|
7
|
-
*
|
|
8
|
-
* - A `withDefaults` function to assist in creating a schema in LegacyMode
|
|
9
|
-
* - A `registerDerivations` function to register the derivations necessary to support LegacyMode
|
|
10
|
-
* - A `DelegatingSchemaService` that can be used to provide a schema service that works with both
|
|
11
|
-
* @ember-data/model and @warp-drive/schema-record simultaneously for migration purposes.
|
|
12
|
-
* - A `WithLegacy` type util that can be used to create a type that includes the legacy
|
|
13
|
-
* properties and methods of a record.
|
|
14
|
-
*
|
|
15
|
-
* Using LegacyMode features on a ReactiveResource *requires* the use of these derivations and schema
|
|
16
|
-
* additions. LegacyMode is not intended to be a long-term solution, but rather a stepping stone
|
|
17
|
-
* to assist in more rapidly adopting modern WarpDrive features.
|
|
18
|
-
*
|
|
19
|
-
* @module
|
|
20
|
-
*/
|
|
21
|
-
export * from "@warp-drive/legacy/model/migration-support";
|
|
22
2
|
export type * from "@warp-drive/legacy/model/migration-support";
|
|
23
|
-
|
|
24
3
|
}
|