@ember-data/serializer 4.10.0-alpha.3 → 4.10.0-alpha.5

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