@ember-data-mirror/serializer 5.6.0-alpha.5 → 5.6.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/addon-main.cjs +1 -1
  2. package/dist/index.js +1 -301
  3. package/dist/json-api.js +1 -514
  4. package/dist/json.js +1 -6
  5. package/dist/rest.js +1 -1245
  6. package/dist/transform.js +1 -313
  7. package/package.json +7 -20
  8. package/unstable-preview-types/index.d.ts +81 -238
  9. package/unstable-preview-types/json-api.d.ts +2 -497
  10. package/unstable-preview-types/json.d.ts +2 -1048
  11. package/unstable-preview-types/rest.d.ts +2 -555
  12. package/unstable-preview-types/transform.d.ts +3 -7
  13. package/dist/index.js.map +0 -1
  14. package/dist/json-CYP2BhR9.js +0 -1349
  15. package/dist/json-CYP2BhR9.js.map +0 -1
  16. package/dist/json-api.js.map +0 -1
  17. package/dist/json.js.map +0 -1
  18. package/dist/rest.js.map +0 -1
  19. package/dist/transform.js.map +0 -1
  20. package/unstable-preview-types/-private/embedded-records-mixin.d.ts +0 -99
  21. package/unstable-preview-types/-private/embedded-records-mixin.d.ts.map +0 -1
  22. package/unstable-preview-types/-private/transforms/boolean.d.ts +0 -49
  23. package/unstable-preview-types/-private/transforms/boolean.d.ts.map +0 -1
  24. package/unstable-preview-types/-private/transforms/boolean.type-test.d.ts +0 -4
  25. package/unstable-preview-types/-private/transforms/boolean.type-test.d.ts.map +0 -1
  26. package/unstable-preview-types/-private/transforms/date.d.ts +0 -30
  27. package/unstable-preview-types/-private/transforms/date.d.ts.map +0 -1
  28. package/unstable-preview-types/-private/transforms/number.d.ts +0 -31
  29. package/unstable-preview-types/-private/transforms/number.d.ts.map +0 -1
  30. package/unstable-preview-types/-private/transforms/string.d.ts +0 -31
  31. package/unstable-preview-types/-private/transforms/string.d.ts.map +0 -1
  32. package/unstable-preview-types/-private/transforms/transform.d.ts +0 -121
  33. package/unstable-preview-types/-private/transforms/transform.d.ts.map +0 -1
  34. package/unstable-preview-types/-private/utils.d.ts +0 -6
  35. package/unstable-preview-types/-private/utils.d.ts.map +0 -1
  36. package/unstable-preview-types/index.d.ts.map +0 -1
  37. package/unstable-preview-types/json-api.d.ts.map +0 -1
  38. package/unstable-preview-types/json.d.ts.map +0 -1
  39. package/unstable-preview-types/rest.d.ts.map +0 -1
  40. package/unstable-preview-types/transform.d.ts.map +0 -1
package/dist/transform.js CHANGED
@@ -1,313 +1 @@
1
- import EmberObject from '@ember/object';
2
- import { TransformName } from '@warp-drive-mirror/core-types/symbols';
3
-
4
- /**
5
- The `Transform` class is used to serialize and deserialize model
6
- attributes when they are saved or loaded from an
7
- adapter. Subclassing `Transform` is useful for creating custom
8
- attributes. All subclasses of `Transform` must implement a
9
- `serialize` and a `deserialize` method.
10
-
11
- Example
12
-
13
- ```js [app/transforms/temperature.js]
14
-
15
- // Converts centigrade in the JSON to fahrenheit in the app
16
- export default class TemperatureTransform {
17
- deserialize(serialized, options) {
18
- return (serialized * 1.8) + 32;
19
- }
20
-
21
- serialize(deserialized, options) {
22
- return (deserialized - 32) / 1.8;
23
- }
24
-
25
- static create() {
26
- return new this();
27
- }
28
- }
29
- ```
30
-
31
- Usage
32
-
33
- ```js [app/models/requirement.js]
34
- import Model, { attr } from '@ember-data-mirror/model';
35
-
36
- export default class RequirementModel extends Model {
37
- @attr('string') name;
38
- @attr('temperature') temperature;
39
- }
40
- ```
41
-
42
- The options passed into the `attr` function when the attribute is
43
- declared on the model is also available in the transform.
44
-
45
- ```js [app/models/post.js]
46
- import Model, { attr } from '@ember-data-mirror/model';
47
-
48
- export default class PostModel extends Model {
49
- @attr('string') title;
50
- @attr('markdown', {
51
- markdown: {
52
- gfm: false,
53
- sanitize: true
54
- }
55
- })
56
- markdown;
57
- }
58
- ```
59
-
60
- ```js [app/transforms/markdown.js]
61
- export default class MarkdownTransform {
62
- serialize(deserialized, options) {
63
- return deserialized.raw;
64
- }
65
-
66
- deserialize(serialized, options) {
67
- let markdownOptions = options.markdown || {};
68
-
69
- return marked(serialized, markdownOptions);
70
- }
71
-
72
- static create() {
73
- return new this();
74
- }
75
- }
76
- ```
77
-
78
- @class Transform
79
- @public
80
- */
81
- /**
82
- When given a deserialized value from a record attribute this
83
- method must return the serialized value.
84
-
85
- Example
86
-
87
- ```javascript
88
- serialize(deserialized, options) {
89
- return deserialized ? null : Number(deserialized);
90
- }
91
- ```
92
-
93
- @public
94
- @param deserialized The deserialized value
95
- @param options hash of options passed to `attr`
96
- @return The serialized value
97
- */
98
- /**
99
- When given a serialized value from a JSON object this method must
100
- return the deserialized value for the record attribute.
101
-
102
- Example
103
-
104
- ```javascript
105
- deserialize(serialized, options) {
106
- return empty(serialized) ? null : Number(serialized);
107
- }
108
- ```
109
-
110
- @public
111
- @param serialized The serialized value
112
- @param options hash of options passed to `attr`
113
- @return The deserialized value
114
- */
115
-
116
- const Transform = EmberObject;
117
-
118
- /**
119
- The `BooleanTransform` class is used to serialize and deserialize
120
- boolean attributes on Ember Data record objects. This transform is
121
- used when `boolean` is passed as the type parameter to the
122
- [attr](/ember-data/release/functions/@ember-data%2Fmodel/attr) function.
123
-
124
- Usage
125
-
126
- ```js [app/models/user.js]
127
- import Model, { attr } from '@ember-data-mirror/model';
128
-
129
- export default class UserModel extends Model {
130
- @attr('boolean') isAdmin;
131
- @attr('string') name;
132
- @attr('string') email;
133
- }
134
- ```
135
-
136
- By default, the boolean transform only allows for values of `true` or
137
- `false`. You can opt into allowing `null` values for
138
- boolean attributes via `attr('boolean', { allowNull: true })`
139
-
140
- ```js [app/models/user.js]
141
- import Model, { attr } from '@ember-data-mirror/model';
142
-
143
- export default class UserModel extends Model {
144
- @attr('string') email;
145
- @attr('string') username;
146
- @attr('boolean', { allowNull: true }) wantsWeeklyEmail;
147
- }
148
- ```
149
-
150
- @class BooleanTransform
151
- @public
152
- */
153
- class BooleanTransform {
154
- deserialize(serialized, options) {
155
- if ((serialized === null || serialized === undefined) && options?.allowNull === true) {
156
- return null;
157
- }
158
- if (typeof serialized === 'boolean') {
159
- return serialized;
160
- } else if (typeof serialized === 'string') {
161
- return /^(true|t|1)$/i.test(serialized);
162
- } else if (typeof serialized === 'number') {
163
- return serialized === 1;
164
- } else {
165
- return false;
166
- }
167
- }
168
- serialize(deserialized, options) {
169
- if ((deserialized === null || deserialized === undefined) && options?.allowNull === true) {
170
- return null;
171
- }
172
- return Boolean(deserialized);
173
- }
174
- static create() {
175
- return new this();
176
- }
177
- }
178
-
179
- /**
180
- The `DateTransform` class is used to serialize and deserialize
181
- date attributes on Ember Data record objects. This transform is used
182
- when `date` is passed as the type parameter to the
183
- [attr](/ember-data/release/functions/@ember-data%2Fmodel/attr) function. It uses the [`ISO 8601`](https://en.wikipedia.org/wiki/ISO_8601)
184
- standard.
185
-
186
- ```js [app/models/score.js]
187
- import Model, { attr, belongsTo } from '@ember-data-mirror/model';
188
-
189
- export default class ScoreModel extends Model {
190
- @attr('number') value;
191
- @belongsTo('player') player;
192
- @attr('date') date;
193
- }
194
- ```
195
-
196
- @class DateTransform
197
- @public
198
- */
199
-
200
- class DateTransform {
201
- deserialize(serialized, _options) {
202
- if (typeof serialized === 'string') {
203
- let offset = serialized.indexOf('+');
204
- if (offset !== -1 && serialized.length - 5 === offset) {
205
- offset += 3;
206
- return new Date(serialized.slice(0, offset) + ':' + serialized.slice(offset));
207
- }
208
- return new Date(serialized);
209
- } else if (typeof serialized === 'number') {
210
- return new Date(serialized);
211
- } else if (serialized === null || serialized === undefined) {
212
- // if the value is null return null
213
- // if the value is not present in the data return undefined
214
- return serialized;
215
- } else {
216
- return null;
217
- }
218
- }
219
- serialize(date, _options) {
220
- // @ts-expect-error isNaN accepts date as it is coercible
221
- if (date instanceof Date && !isNaN(date)) {
222
- return date.toISOString();
223
- } else {
224
- return null;
225
- }
226
- }
227
- [TransformName] = 'date';
228
- static create() {
229
- return new this();
230
- }
231
- }
232
- function isNumber(value) {
233
- return value === value && value !== Infinity && value !== -Infinity;
234
- }
235
-
236
- /**
237
- The `NumberTransform` class is used to serialize and deserialize
238
- numeric attributes on Ember Data record objects. This transform is
239
- used when `number` is passed as the type parameter to the
240
- [attr](/ember-data/release/functions/@ember-data%2Fmodel/attr) function.
241
-
242
- Usage
243
-
244
- ```js [app/models/score.js]
245
- import Model, { attr, belongsTo } from '@ember-data-mirror/model';
246
-
247
- export default class ScoreModel extends Model {
248
- @attr('number') value;
249
- @belongsTo('player') player;
250
- @attr('date') date;
251
- }
252
- ```
253
-
254
- @class NumberTransform
255
- @public
256
- */
257
- class NumberTransform {
258
- deserialize(serialized, _options) {
259
- if (serialized === '' || serialized === null || serialized === undefined) {
260
- return null;
261
- } else {
262
- const transformed = Number(serialized);
263
- return isNumber(transformed) ? transformed : null;
264
- }
265
- }
266
- serialize(deserialized, _options) {
267
- if (deserialized === '' || deserialized === null || deserialized === undefined) {
268
- return null;
269
- } else {
270
- const transformed = Number(deserialized);
271
- return isNumber(transformed) ? transformed : null;
272
- }
273
- }
274
- [TransformName] = 'number';
275
- static create() {
276
- return new this();
277
- }
278
- }
279
-
280
- /**
281
- The `StringTransform` class is used to serialize and deserialize
282
- string attributes on Ember Data record objects. This transform is
283
- used when `string` is passed as the type parameter to the
284
- [attr](/ember-data/release/functions/@ember-data%2Fmodel/attr) function.
285
-
286
- Usage
287
-
288
- ```js [app/models/user.js]
289
- import Model, { attr, belongsTo } from '@ember-data-mirror/model';
290
-
291
- export default class UserModel extends Model {
292
- @attr('boolean') isAdmin;
293
- @attr('string') name;
294
- @attr('string') email;
295
- }
296
- ```
297
-
298
- @class StringTransform
299
- @public
300
- */
301
- class StringTransform {
302
- deserialize(serialized, _options) {
303
- return !serialized && serialized !== '' ? null : String(serialized);
304
- }
305
- serialize(deserialized, _options) {
306
- return !deserialized && deserialized !== '' ? null : String(deserialized);
307
- }
308
- [TransformName] = 'string';
309
- static create() {
310
- return new this();
311
- }
312
- }
313
- export { BooleanTransform, DateTransform, NumberTransform, StringTransform, Transform as default };
1
+ export { BooleanTransform, DateTransform, NumberTransform, StringTransform, Transform as default } from '@warp-drive-mirror/legacy/serializer/transform';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ember-data-mirror/serializer",
3
- "version": "5.6.0-alpha.5",
3
+ "version": "5.6.0-beta.1",
4
4
  "description": "Provides Legacy JSON, JSON:API and REST Implementations of the Serializer Interface for use with @ember-data-mirror/store",
5
5
  "keywords": [
6
6
  "ember-addon"
@@ -41,38 +41,25 @@
41
41
  "types": "./unstable-preview-types/index.d.ts"
42
42
  }
43
43
  },
44
- "peerDependencies": {
45
- "@warp-drive-mirror/core-types": "5.6.0-alpha.5",
46
- "@ember-data-mirror/legacy-compat": "5.6.0-alpha.5",
47
- "@ember-data-mirror/request-utils": "5.6.0-alpha.5",
48
- "@ember-data-mirror/store": "5.6.0-alpha.5"
49
- },
44
+ "peerDependencies": {},
50
45
  "dependencies": {
51
46
  "@embroider/macros": "^1.16.12",
52
47
  "ember-cli-test-info": "^1.0.0",
53
48
  "ember-cli-string-utils": "^1.1.0",
54
49
  "ember-cli-path-utils": "^1.0.0",
55
50
  "@ember/edition-utils": "1.2.0",
56
- "@warp-drive-mirror/build-config": "5.6.0-alpha.5"
51
+ "@warp-drive-mirror/core": "5.6.0-beta.0",
52
+ "@warp-drive-mirror/utilities": "5.6.0-beta.0",
53
+ "@warp-drive-mirror/legacy": "5.6.0-beta.0"
57
54
  },
58
55
  "devDependencies": {
59
56
  "@babel/core": "^7.26.10",
60
57
  "@babel/plugin-transform-typescript": "^7.27.0",
61
58
  "@babel/preset-env": "^7.26.9",
62
59
  "@babel/preset-typescript": "^7.27.0",
63
- "@ember-data-mirror/model": "5.6.0-alpha.5",
64
- "@ember-data-mirror/request": "5.6.0-alpha.5",
65
- "@ember-data-mirror/request-utils": "5.6.0-alpha.5",
66
- "@ember-data-mirror/store": "5.6.0-alpha.5",
67
- "@ember-data-mirror/legacy-compat": "5.6.0-alpha.5",
68
- "@ember/test-waiters": "^4.1.0",
69
- "@glimmer/component": "^2.0.0",
70
- "@warp-drive-mirror/core-types": "5.6.0-alpha.5",
71
- "@warp-drive/internal-config": "5.6.0-alpha.5",
72
- "decorator-transforms": "^2.3.0",
73
- "ember-source": "~6.3.0",
60
+ "@warp-drive/internal-config": "5.6.0-beta.1",
74
61
  "typescript": "^5.8.3",
75
- "vite": "^5.4.15"
62
+ "vite": "^7.0.0"
76
63
  },
77
64
  "volta": {
78
65
  "extends": "../../../../../../package.json"