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