@ember-data/serializer 4.11.0 → 4.12.0-beta.0

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 (39) hide show
  1. package/addon/-private.js +209 -0
  2. package/addon/-private.js.map +1 -0
  3. package/addon/{-private/embedded-records-mixin.js → embedded-records-mixin-0a9e9148.js} +87 -146
  4. package/addon/embedded-records-mixin-0a9e9148.js.map +1 -0
  5. package/addon/index.js +178 -0
  6. package/addon/index.js.map +1 -0
  7. package/addon/json-api.js +96 -233
  8. package/addon/json-api.js.map +1 -0
  9. package/addon/json.js +198 -432
  10. package/addon/json.js.map +1 -0
  11. package/addon/rest.js +133 -270
  12. package/addon/rest.js.map +1 -0
  13. package/addon/{-private/transforms/transform.js → transform-63fba437.js} +9 -15
  14. package/addon/transform-63fba437.js.map +1 -0
  15. package/addon/transform.js +2 -2
  16. package/addon/transform.js.map +1 -0
  17. package/addon-main.js +90 -0
  18. package/package.json +39 -8
  19. package/addon/-private/index.js +0 -11
  20. package/addon/-private/transforms/boolean.js +0 -70
  21. package/addon/-private/transforms/date.js +0 -59
  22. package/addon/-private/transforms/number.js +0 -57
  23. package/addon/-private/transforms/string.js +0 -38
  24. package/addon/index.ts +0 -259
  25. package/blueprints/serializer/files/__root__/__path__/__name__.js +0 -4
  26. package/blueprints/serializer/index.js +0 -14
  27. package/blueprints/serializer/native-files/__root__/__path__/__name__.js +0 -4
  28. package/blueprints/serializer-test/index.js +0 -29
  29. package/blueprints/serializer-test/mocha-files/__root__/__path__/__test__.js +0 -20
  30. package/blueprints/serializer-test/mocha-rfc-232-files/__root__/__path__/__test__.js +0 -25
  31. package/blueprints/serializer-test/qunit-files/__root__/__path__/__test__.js +0 -24
  32. package/blueprints/transform/files/__root__/__path__/__name__.js +0 -11
  33. package/blueprints/transform/index.js +0 -7
  34. package/blueprints/transform/native-files/__root__/__path__/__name__.js +0 -11
  35. package/blueprints/transform-test/index.js +0 -29
  36. package/blueprints/transform-test/mocha-files/__root__/__path__/__test__.js +0 -17
  37. package/blueprints/transform-test/mocha-rfc-232-files/__root__/__path__/__test__.js +0 -14
  38. package/blueprints/transform-test/qunit-files/__root__/__path__/__test__.js +0 -13
  39. package/index.js +0 -25
@@ -0,0 +1,209 @@
1
+ export { e as EmbeddedRecordsMixin } from "./embedded-records-mixin-0a9e9148";
2
+ import { T as Transform } from "./transform-63fba437";
3
+ import { isNone } from '@ember/utils';
4
+
5
+ /**
6
+ @module @ember-data/serializer
7
+ */
8
+
9
+ /**
10
+ The `BooleanTransform` class is used to serialize and deserialize
11
+ boolean attributes on Ember Data record objects. This transform is
12
+ used when `boolean` is passed as the type parameter to the
13
+ [attr](/ember-data/release/functions/@ember-data%2Fmodel/attr) function.
14
+
15
+ Usage
16
+
17
+ ```app/models/user.js
18
+ import Model, { attr } from '@ember-data/model';
19
+
20
+ export default class UserModel extends Model {
21
+ @attr('boolean') isAdmin;
22
+ @attr('string') name;
23
+ @attr('string') email;
24
+ }
25
+ ```
26
+
27
+ By default, the boolean transform only allows for values of `true` or
28
+ `false`. You can opt into allowing `null` values for
29
+ boolean attributes via `attr('boolean', { allowNull: true })`
30
+
31
+ ```app/models/user.js
32
+ import Model, { attr } from '@ember-data/model';
33
+
34
+ export default class UserModel extends Model {
35
+ @attr('string') email;
36
+ @attr('string') username;
37
+ @attr('boolean', { allowNull: true }) wantsWeeklyEmail;
38
+ }
39
+ ```
40
+
41
+ @class BooleanTransform
42
+ @public
43
+ @extends Transform
44
+ */
45
+ class BooleanTransform extends Transform {
46
+ deserialize(serialized, options) {
47
+ if (isNone(serialized) && options.allowNull === true) {
48
+ return null;
49
+ }
50
+ let type = typeof serialized;
51
+ if (type === 'boolean') {
52
+ return serialized;
53
+ } else if (type === 'string') {
54
+ return /^(true|t|1)$/i.test(serialized);
55
+ } else if (type === 'number') {
56
+ return serialized === 1;
57
+ } else {
58
+ return false;
59
+ }
60
+ }
61
+ serialize(deserialized, options) {
62
+ if (isNone(deserialized) && options.allowNull === true) {
63
+ return null;
64
+ }
65
+ return Boolean(deserialized);
66
+ }
67
+ }
68
+
69
+ /**
70
+ @module @ember-data/serializer
71
+ */
72
+
73
+ /**
74
+ The `DateTransform` class is used to serialize and deserialize
75
+ date attributes on Ember Data record objects. This transform is used
76
+ when `date` is passed as the type parameter to the
77
+ [attr](/ember-data/release/functions/@ember-data%2Fmodel/attr) function. It uses the [`ISO 8601`](https://en.wikipedia.org/wiki/ISO_8601)
78
+ standard.
79
+
80
+ ```app/models/score.js
81
+ import Model, { attr, belongsTo } from '@ember-data/model';
82
+
83
+ export default class ScoreModel extends Model {
84
+ @attr('number') value;
85
+ @belongsTo('player') player;
86
+ @attr('date') date;
87
+ }
88
+ ```
89
+
90
+ @class DateTransform
91
+ @public
92
+ @extends Transform
93
+ */
94
+
95
+ class DateTransform extends Transform {
96
+ deserialize(serialized) {
97
+ let type = typeof serialized;
98
+ if (type === 'string') {
99
+ let offset = serialized.indexOf('+');
100
+ if (offset !== -1 && serialized.length - 5 === offset) {
101
+ offset += 3;
102
+ return new Date(serialized.slice(0, offset) + ':' + serialized.slice(offset));
103
+ }
104
+ return new Date(serialized);
105
+ } else if (type === 'number') {
106
+ return new Date(serialized);
107
+ } else if (serialized === null || serialized === undefined) {
108
+ // if the value is null return null
109
+ // if the value is not present in the data return undefined
110
+ return serialized;
111
+ } else {
112
+ return null;
113
+ }
114
+ }
115
+ serialize(date) {
116
+ if (date instanceof Date && !isNaN(date)) {
117
+ return date.toISOString();
118
+ } else {
119
+ return null;
120
+ }
121
+ }
122
+ }
123
+
124
+ /**
125
+ @module @ember-data/serializer
126
+ */
127
+
128
+ function isNumber(value) {
129
+ return value === value && value !== Infinity && value !== -Infinity;
130
+ }
131
+
132
+ /**
133
+ The `NumberTransform` class is used to serialize and deserialize
134
+ numeric attributes on Ember Data record objects. This transform is
135
+ used when `number` is passed as the type parameter to the
136
+ [attr](/ember-data/release/functions/@ember-data%2Fmodel/attr) function.
137
+
138
+ Usage
139
+
140
+ ```app/models/score.js
141
+ import Model, { attr, belongsTo } from '@ember-data/model';
142
+
143
+ export default class ScoreModel extends Model {
144
+ @attr('number') value;
145
+ @belongsTo('player') player;
146
+ @attr('date') date;
147
+ }
148
+ ```
149
+
150
+ @class NumberTransform
151
+ @public
152
+ @extends Transform
153
+ */
154
+ class NumberTransform extends Transform {
155
+ deserialize(serialized) {
156
+ let transformed;
157
+ if (serialized === '' || serialized === null || serialized === undefined) {
158
+ return null;
159
+ } else {
160
+ transformed = Number(serialized);
161
+ return isNumber(transformed) ? transformed : null;
162
+ }
163
+ }
164
+ serialize(deserialized) {
165
+ let transformed;
166
+ if (deserialized === '' || deserialized === null || deserialized === undefined) {
167
+ return null;
168
+ } else {
169
+ transformed = Number(deserialized);
170
+ return isNumber(transformed) ? transformed : null;
171
+ }
172
+ }
173
+ }
174
+
175
+ /**
176
+ @module @ember-data/serializer
177
+ */
178
+
179
+ /**
180
+ The `StringTransform` class is used to serialize and deserialize
181
+ string attributes on Ember Data record objects. This transform is
182
+ used when `string` is passed as the type parameter to the
183
+ [attr](/ember-data/release/functions/@ember-data%2Fmodel/attr) function.
184
+
185
+ Usage
186
+
187
+ ```app/models/user.js
188
+ import Model, { attr, belongsTo } from '@ember-data/model';
189
+
190
+ export default class UserModel extends Model {
191
+ @attr('boolean') isAdmin;
192
+ @attr('string') name;
193
+ @attr('string') email;
194
+ }
195
+ ```
196
+
197
+ @class StringTransform
198
+ @public
199
+ @extends Transform
200
+ */
201
+ class StringTransform extends Transform {
202
+ deserialize(serialized) {
203
+ return isNone(serialized) ? null : String(serialized);
204
+ }
205
+ serialize(deserialized) {
206
+ return isNone(deserialized) ? null : String(deserialized);
207
+ }
208
+ }
209
+ export { BooleanTransform, DateTransform, NumberTransform, StringTransform, Transform };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"-private.js","sources":["../src/-private/transforms/boolean.js","../src/-private/transforms/date.js","../src/-private/transforms/number.js","../src/-private/transforms/string.js"],"sourcesContent":["import { isNone } from '@ember/utils';\n\nimport Transform from './transform';\n\n/**\n @module @ember-data/serializer\n*/\n\n/**\n The `BooleanTransform` class is used to serialize and deserialize\n boolean attributes on Ember Data record objects. This transform is\n used when `boolean` is passed as the type parameter to the\n [attr](/ember-data/release/functions/@ember-data%2Fmodel/attr) function.\n\n Usage\n\n ```app/models/user.js\n import Model, { attr } from '@ember-data/model';\n\n export default class UserModel extends Model {\n @attr('boolean') isAdmin;\n @attr('string') name;\n @attr('string') email;\n }\n ```\n\n By default, the boolean transform only allows for values of `true` or\n `false`. You can opt into allowing `null` values for\n boolean attributes via `attr('boolean', { allowNull: true })`\n\n ```app/models/user.js\n import Model, { attr } from '@ember-data/model';\n\n export default class UserModel extends Model {\n @attr('string') email;\n @attr('string') username;\n @attr('boolean', { allowNull: true }) wantsWeeklyEmail;\n }\n ```\n\n @class BooleanTransform\n @public\n @extends Transform\n */\nexport default class BooleanTransform extends Transform {\n deserialize(serialized, options) {\n if (isNone(serialized) && options.allowNull === true) {\n return null;\n }\n\n let type = typeof serialized;\n if (type === 'boolean') {\n return serialized;\n } else if (type === 'string') {\n return /^(true|t|1)$/i.test(serialized);\n } else if (type === 'number') {\n return serialized === 1;\n } else {\n return false;\n }\n }\n\n serialize(deserialized, options) {\n if (isNone(deserialized) && options.allowNull === true) {\n return null;\n }\n\n return Boolean(deserialized);\n }\n}\n","import Transform from './transform';\n\n/**\n @module @ember-data/serializer\n*/\n\n/**\n The `DateTransform` class is used to serialize and deserialize\n date attributes on Ember Data record objects. This transform is used\n when `date` is passed as the type parameter to the\n [attr](/ember-data/release/functions/@ember-data%2Fmodel/attr) function. It uses the [`ISO 8601`](https://en.wikipedia.org/wiki/ISO_8601)\n standard.\n\n ```app/models/score.js\n import Model, { attr, belongsTo } from '@ember-data/model';\n\n export default class ScoreModel extends Model {\n @attr('number') value;\n @belongsTo('player') player;\n @attr('date') date;\n }\n ```\n\n @class DateTransform\n @public\n @extends Transform\n */\n\nexport default class DateTransform extends Transform {\n deserialize(serialized) {\n let type = typeof serialized;\n\n if (type === 'string') {\n let offset = serialized.indexOf('+');\n\n if (offset !== -1 && serialized.length - 5 === offset) {\n offset += 3;\n return new Date(serialized.slice(0, offset) + ':' + serialized.slice(offset));\n }\n return new Date(serialized);\n } else if (type === 'number') {\n return new Date(serialized);\n } else if (serialized === null || serialized === undefined) {\n // if the value is null return null\n // if the value is not present in the data return undefined\n return serialized;\n } else {\n return null;\n }\n }\n\n serialize(date) {\n if (date instanceof Date && !isNaN(date)) {\n return date.toISOString();\n } else {\n return null;\n }\n }\n}\n","import Transform from './transform';\n\n/**\n @module @ember-data/serializer\n*/\n\nfunction isNumber(value) {\n return value === value && value !== Infinity && value !== -Infinity;\n}\n\n/**\n The `NumberTransform` class is used to serialize and deserialize\n numeric attributes on Ember Data record objects. This transform is\n used when `number` is passed as the type parameter to the\n [attr](/ember-data/release/functions/@ember-data%2Fmodel/attr) function.\n\n Usage\n\n ```app/models/score.js\n import Model, { attr, belongsTo } from '@ember-data/model';\n\n export default class ScoreModel extends Model {\n @attr('number') value;\n @belongsTo('player') player;\n @attr('date') date;\n }\n ```\n\n @class NumberTransform\n @public\n @extends Transform\n */\nexport default class NumberTransform extends Transform {\n deserialize(serialized) {\n let transformed;\n\n if (serialized === '' || serialized === null || serialized === undefined) {\n return null;\n } else {\n transformed = Number(serialized);\n\n return isNumber(transformed) ? transformed : null;\n }\n }\n\n serialize(deserialized) {\n let transformed;\n\n if (deserialized === '' || deserialized === null || deserialized === undefined) {\n return null;\n } else {\n transformed = Number(deserialized);\n\n return isNumber(transformed) ? transformed : null;\n }\n }\n}\n","import { isNone as none } from '@ember/utils';\n\nimport Transform from './transform';\n\n/**\n @module @ember-data/serializer\n*/\n\n/**\n The `StringTransform` class is used to serialize and deserialize\n string attributes on Ember Data record objects. This transform is\n used when `string` is passed as the type parameter to the\n [attr](/ember-data/release/functions/@ember-data%2Fmodel/attr) function.\n\n Usage\n\n ```app/models/user.js\n import Model, { attr, belongsTo } from '@ember-data/model';\n\n export default class UserModel extends Model {\n @attr('boolean') isAdmin;\n @attr('string') name;\n @attr('string') email;\n }\n ```\n\n @class StringTransform\n @public\n @extends Transform\n */\nexport default class StringTransform extends Transform {\n deserialize(serialized) {\n return none(serialized) ? null : String(serialized);\n }\n serialize(deserialized) {\n return none(deserialized) ? null : String(deserialized);\n }\n}\n"],"names":["BooleanTransform","Transform","deserialize","serialized","options","isNone","allowNull","type","test","serialize","deserialized","Boolean","DateTransform","offset","indexOf","length","Date","slice","undefined","date","isNaN","toISOString","isNumber","value","Infinity","NumberTransform","transformed","Number","StringTransform","none","String"],"mappings":"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"}