@warp-drive/legacy 5.8.0-alpha.9 → 5.8.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.
- package/README.md +14 -27
- package/declarations/adapter/error.d.ts +7 -7
- package/declarations/adapter/json-api.d.ts +2 -2
- package/declarations/adapter/rest.d.ts +21 -104
- package/declarations/adapter.d.ts +2 -2
- package/declarations/compat/builders/find-all.d.ts +6 -6
- package/declarations/compat/builders/find-record.d.ts +8 -8
- package/declarations/compat/builders/query.d.ts +12 -12
- package/declarations/compat/legacy-network-handler/minimum-serializer-interface.d.ts +16 -24
- package/declarations/compat/utils.d.ts +13 -13
- package/declarations/compat.d.ts +31 -5
- package/declarations/index.d.ts +25 -8
- package/declarations/model/-private/legacy-relationships-support.d.ts +2 -2
- package/declarations/model/-private/model.d.ts +10 -51
- package/declarations/model/-private/promise-many-array.d.ts +0 -18
- package/declarations/model/-private/references/belongs-to.d.ts +18 -28
- package/declarations/model/-private/references/has-many.d.ts +13 -15
- package/declarations/model/migration-support.d.ts +42 -19
- package/declarations/model-fragments/extensions/fragment-array.d.ts +16 -0
- package/declarations/model-fragments/extensions/fragment.d.ts +15 -0
- package/declarations/model-fragments/hooks/model-for.d.ts +20 -0
- package/declarations/model-fragments/index.d.ts +5 -0
- package/declarations/model-fragments/instance-initializers/fragment-extensions.d.ts +9 -0
- package/declarations/model-fragments/utilities/with-array-defaults.d.ts +15 -0
- package/declarations/model-fragments/utilities/with-fragment-array-defaults.d.ts +20 -0
- package/declarations/model-fragments/utilities/with-fragment-defaults.d.ts +19 -0
- package/declarations/model-fragments/utilities/with-legacy.d.ts +3 -0
- package/declarations/model-fragments.d.ts +9 -0
- package/declarations/model.d.ts +2 -2
- package/declarations/serializer/-private/embedded-records-mixin.d.ts +1 -1
- package/declarations/serializer/json-api.d.ts +7 -6
- package/declarations/serializer/json.d.ts +3 -3
- package/declarations/serializer.d.ts +5 -6
- package/dist/{-private-B1pSSN52.js → -private-BG3bMiKp.js} +2 -1
- package/dist/adapter/-private.js +1 -1
- package/dist/adapter/error.js +9 -9
- package/dist/adapter/json-api.js +1 -1
- package/dist/adapter/rest.js +33 -117
- package/dist/adapter.js +2 -2
- package/dist/compat/-private.js +1 -1
- package/dist/compat/builders.js +26 -26
- package/dist/compat/utils.js +13 -14
- package/dist/compat.js +28 -8
- package/dist/{errors-COviC59J.js → errors-Cz5KrzBk.js} +113 -120
- package/dist/{hooks-Bp8SIQBU.js → hooks-D6diaM34.js} +1 -1
- package/dist/index.js +25 -8
- package/dist/{json-ksWOHRfq.js → json-ChdEfB0X.js} +12 -27
- package/dist/model/-private.js +1 -1
- package/dist/model/migration-support.js +55 -25
- package/dist/model-for-CqXsIKws.js +221 -0
- package/dist/model-fragments.js +76 -0
- package/dist/model.js +3 -3
- package/dist/{schema-provider-JlCneqZH.js → schema-provider-DJCV_6AF.js} +44 -87
- package/dist/{serialize-into-hash-BnYvPex3.js → serialize-into-hash-DPZYoF-i.js} +1 -1
- package/dist/serializer/json-api.js +18 -45
- package/dist/serializer/json.js +1 -1
- package/dist/serializer/rest.js +10 -10
- package/dist/serializer.js +5 -6
- package/dist/store.js +2 -1
- package/dist/unpkg/dev/-private-DtjBbEgy.js +1206 -0
- package/dist/unpkg/dev/adapter/-private.js +1 -0
- package/dist/unpkg/dev/adapter/error.js +335 -0
- package/dist/unpkg/dev/adapter/json-api.js +271 -0
- package/dist/unpkg/dev/adapter/rest.js +1171 -0
- package/dist/unpkg/dev/adapter.js +1252 -0
- package/dist/unpkg/dev/compat/-private.js +1 -0
- package/dist/unpkg/dev/compat/builders.js +275 -0
- package/dist/unpkg/dev/compat/extensions.js +242 -0
- package/dist/unpkg/dev/compat/utils.js +223 -0
- package/dist/unpkg/dev/compat.js +1147 -0
- package/dist/unpkg/dev/errors-DmGGJr3T.js +2562 -0
- package/dist/unpkg/dev/hooks-CkYiE6Ud.js +73 -0
- package/dist/unpkg/dev/index.js +197 -0
- package/dist/unpkg/dev/json-Cu1LNgmQ.js +1256 -0
- package/dist/unpkg/dev/model/-private.js +1 -0
- package/dist/unpkg/dev/model/migration-support.js +553 -0
- package/dist/unpkg/dev/model-for-CqXsIKws.js +221 -0
- package/dist/unpkg/dev/model-fragments.js +76 -0
- package/dist/unpkg/dev/model.js +678 -0
- package/dist/unpkg/dev/runtime-BPCpkOf1-BKOwiRJp.js +65 -0
- package/dist/unpkg/dev/schema-provider-DDVYxmUV.js +2186 -0
- package/dist/unpkg/dev/serialize-into-hash-B2xDbuo5.js +259 -0
- package/dist/unpkg/dev/serializer/json-api.js +649 -0
- package/dist/unpkg/dev/serializer/json.js +4 -0
- package/dist/unpkg/dev/serializer/rest.js +1242 -0
- package/dist/unpkg/dev/serializer/transform.js +278 -0
- package/dist/unpkg/dev/serializer.js +248 -0
- package/dist/unpkg/dev/store.js +637 -0
- package/dist/unpkg/dev/util-DvanW33H.js +20 -0
- package/dist/unpkg/dev/utils-BhvS1iTS.js +8 -0
- package/dist/unpkg/dev-deprecated/-private-DtjBbEgy.js +1206 -0
- package/dist/unpkg/dev-deprecated/adapter/-private.js +1 -0
- package/dist/unpkg/dev-deprecated/adapter/error.js +335 -0
- package/dist/unpkg/dev-deprecated/adapter/json-api.js +271 -0
- package/dist/unpkg/dev-deprecated/adapter/rest.js +1171 -0
- package/dist/unpkg/dev-deprecated/adapter.js +1252 -0
- package/dist/unpkg/dev-deprecated/compat/-private.js +1 -0
- package/dist/unpkg/dev-deprecated/compat/builders.js +275 -0
- package/dist/unpkg/dev-deprecated/compat/extensions.js +242 -0
- package/dist/unpkg/dev-deprecated/compat/utils.js +223 -0
- package/dist/unpkg/dev-deprecated/compat.js +1147 -0
- package/dist/unpkg/dev-deprecated/errors-Spt6ubMd.js +2565 -0
- package/dist/unpkg/dev-deprecated/hooks-DOXegvhL.js +73 -0
- package/dist/unpkg/dev-deprecated/index.js +196 -0
- package/dist/unpkg/dev-deprecated/json-Cu1LNgmQ.js +1256 -0
- package/dist/unpkg/dev-deprecated/model/-private.js +1 -0
- package/dist/unpkg/dev-deprecated/model/migration-support.js +570 -0
- package/dist/unpkg/dev-deprecated/model-for-CqXsIKws.js +221 -0
- package/dist/unpkg/dev-deprecated/model-fragments.js +76 -0
- package/dist/unpkg/dev-deprecated/model.js +682 -0
- package/dist/unpkg/dev-deprecated/runtime-BPCpkOf1-BKOwiRJp.js +65 -0
- package/dist/unpkg/dev-deprecated/schema-provider-BP6_8N-V.js +2211 -0
- package/dist/unpkg/dev-deprecated/serialize-into-hash-B2xDbuo5.js +259 -0
- package/dist/unpkg/dev-deprecated/serializer/json-api.js +649 -0
- package/dist/unpkg/dev-deprecated/serializer/json.js +4 -0
- package/dist/unpkg/dev-deprecated/serializer/rest.js +1242 -0
- package/dist/unpkg/dev-deprecated/serializer/transform.js +278 -0
- package/dist/unpkg/dev-deprecated/serializer.js +248 -0
- package/dist/unpkg/dev-deprecated/store.js +637 -0
- package/dist/unpkg/dev-deprecated/util-CWr5WQOT.js +24 -0
- package/dist/unpkg/dev-deprecated/utils-C9PJehtL.js +12 -0
- package/dist/unpkg/prod/-private-BdyZaGEh.js +971 -0
- package/dist/unpkg/prod/adapter/-private.js +1 -0
- package/dist/unpkg/prod/adapter/error.js +330 -0
- package/dist/unpkg/prod/adapter/json-api.js +266 -0
- package/dist/unpkg/prod/adapter/rest.js +1134 -0
- package/dist/unpkg/prod/adapter.js +1219 -0
- package/dist/unpkg/prod/compat/-private.js +1 -0
- package/dist/unpkg/prod/compat/builders.js +210 -0
- package/dist/unpkg/prod/compat/extensions.js +232 -0
- package/dist/unpkg/prod/compat/utils.js +218 -0
- package/dist/unpkg/prod/compat.js +727 -0
- package/dist/unpkg/prod/errors-BGVFCBmi.js +2314 -0
- package/dist/unpkg/prod/hooks-BztVA_x0.js +41 -0
- package/dist/unpkg/prod/index.js +151 -0
- package/dist/unpkg/prod/json-BWrZ5546.js +1243 -0
- package/dist/unpkg/prod/model/-private.js +1 -0
- package/dist/unpkg/prod/model/migration-support.js +546 -0
- package/dist/unpkg/prod/model-for-CqXsIKws.js +221 -0
- package/dist/unpkg/prod/model-fragments.js +76 -0
- package/dist/unpkg/prod/model.js +593 -0
- package/dist/unpkg/prod/runtime-BPCpkOf1-BKOwiRJp.js +65 -0
- package/dist/unpkg/prod/schema-provider-DJtD_8jZ.js +1861 -0
- package/dist/unpkg/prod/serialize-into-hash-DGlzQteF.js +215 -0
- package/dist/unpkg/prod/serializer/json-api.js +592 -0
- package/dist/unpkg/prod/serializer/json.js +4 -0
- package/dist/unpkg/prod/serializer/rest.js +1210 -0
- package/dist/unpkg/prod/serializer/transform.js +278 -0
- package/dist/unpkg/prod/serializer.js +248 -0
- package/dist/unpkg/prod/store.js +505 -0
- package/dist/unpkg/prod/util-DvanW33H.js +20 -0
- package/dist/unpkg/prod/utils-BhvS1iTS.js +8 -0
- package/dist/unpkg/prod-deprecated/-private-BdyZaGEh.js +971 -0
- package/dist/unpkg/prod-deprecated/adapter/-private.js +1 -0
- package/dist/unpkg/prod-deprecated/adapter/error.js +330 -0
- package/dist/unpkg/prod-deprecated/adapter/json-api.js +266 -0
- package/dist/unpkg/prod-deprecated/adapter/rest.js +1134 -0
- package/dist/unpkg/prod-deprecated/adapter.js +1219 -0
- package/dist/unpkg/prod-deprecated/compat/-private.js +1 -0
- package/dist/unpkg/prod-deprecated/compat/builders.js +210 -0
- package/dist/unpkg/prod-deprecated/compat/extensions.js +232 -0
- package/dist/unpkg/prod-deprecated/compat/utils.js +218 -0
- package/dist/unpkg/prod-deprecated/compat.js +727 -0
- package/dist/unpkg/prod-deprecated/errors-CdDaK81x.js +2317 -0
- package/dist/unpkg/prod-deprecated/hooks-yId87yyG.js +41 -0
- package/dist/unpkg/prod-deprecated/index.js +150 -0
- package/dist/unpkg/prod-deprecated/json-BWrZ5546.js +1243 -0
- package/dist/unpkg/prod-deprecated/model/-private.js +1 -0
- package/dist/unpkg/prod-deprecated/model/migration-support.js +563 -0
- package/dist/unpkg/prod-deprecated/model-for-CqXsIKws.js +221 -0
- package/dist/unpkg/prod-deprecated/model-fragments.js +76 -0
- package/dist/unpkg/prod-deprecated/model.js +596 -0
- package/dist/unpkg/prod-deprecated/runtime-BPCpkOf1-BKOwiRJp.js +65 -0
- package/dist/unpkg/prod-deprecated/schema-provider-CjX55uSY.js +1904 -0
- package/dist/unpkg/prod-deprecated/serialize-into-hash-DGlzQteF.js +215 -0
- package/dist/unpkg/prod-deprecated/serializer/json-api.js +592 -0
- package/dist/unpkg/prod-deprecated/serializer/json.js +4 -0
- package/dist/unpkg/prod-deprecated/serializer/rest.js +1210 -0
- package/dist/unpkg/prod-deprecated/serializer/transform.js +278 -0
- package/dist/unpkg/prod-deprecated/serializer.js +248 -0
- package/dist/unpkg/prod-deprecated/store.js +505 -0
- package/dist/unpkg/prod-deprecated/util-B6cn-i93.js +23 -0
- package/dist/unpkg/prod-deprecated/utils-BUWwQwCh.js +11 -0
- package/logos/README.md +2 -2
- package/logos/logo-yellow-slab.svg +1 -0
- package/logos/word-mark-black.svg +1 -0
- package/logos/word-mark-white.svg +1 -0
- package/package.json +14 -6
- package/logos/NCC-1701-a-blue.svg +0 -4
- package/logos/NCC-1701-a-gold.svg +0 -4
- package/logos/NCC-1701-a-gold_100.svg +0 -1
- package/logos/NCC-1701-a-gold_base-64.txt +0 -1
- package/logos/NCC-1701-a.svg +0 -4
- package/logos/docs-badge.svg +0 -2
- package/logos/ember-data-logo-dark.svg +0 -12
- package/logos/ember-data-logo-light.svg +0 -12
- package/logos/social1.png +0 -0
- package/logos/social2.png +0 -0
- package/logos/warp-drive-logo-dark.svg +0 -4
- package/logos/warp-drive-logo-gold.svg +0 -4
package/dist/compat/utils.js
CHANGED
|
@@ -6,7 +6,6 @@ import { macroCondition, getGlobalConfig } from '@embroider/macros';
|
|
|
6
6
|
and more consistent use of IDs and types.
|
|
7
7
|
|
|
8
8
|
@module
|
|
9
|
-
@deprecated
|
|
10
9
|
*/
|
|
11
10
|
|
|
12
11
|
let MismatchReporter = function () {};
|
|
@@ -33,7 +32,7 @@ let NormalizedType = str => {
|
|
|
33
32
|
* changes during normalization. This is useful for instrumenting
|
|
34
33
|
* to discover places where usage in the app is not consistent.
|
|
35
34
|
*
|
|
36
|
-
* @param
|
|
35
|
+
* @param fn - a function which takes a mismatch-type ('formatted-id' | 'formatted-type'), actual, and expected value
|
|
37
36
|
* @public
|
|
38
37
|
*/
|
|
39
38
|
function configureMismatchReporter(fn) {
|
|
@@ -45,7 +44,7 @@ function configureMismatchReporter(fn) {
|
|
|
45
44
|
* fails validation. This is useful for instrumenting
|
|
46
45
|
* to discover places where usage in the app is not consistent.
|
|
47
46
|
*
|
|
48
|
-
* @param
|
|
47
|
+
* @param fn - a function which takes a message and a condition
|
|
49
48
|
* @public
|
|
50
49
|
*/
|
|
51
50
|
function configureAssertFn(fn) {
|
|
@@ -62,7 +61,7 @@ function configureAssertFn(fn) {
|
|
|
62
61
|
* the configured mismatch reporter and assert functions will
|
|
63
62
|
* be called.
|
|
64
63
|
*
|
|
65
|
-
* @param
|
|
64
|
+
* @param fn - a function which takes a string and returns a string
|
|
66
65
|
* @public
|
|
67
66
|
*/
|
|
68
67
|
function configureTypeNormalization(fn) {
|
|
@@ -95,8 +94,8 @@ const NORMALIZED_TYPES = new Map();
|
|
|
95
94
|
* formattedType('PostComment'); // => 'post-comment'
|
|
96
95
|
* ```
|
|
97
96
|
*
|
|
98
|
-
* @param
|
|
99
|
-
* @return
|
|
97
|
+
* @param type the potentially un-normalized type
|
|
98
|
+
* @return the normalized type
|
|
100
99
|
* @public
|
|
101
100
|
*/
|
|
102
101
|
function formattedType(type) {
|
|
@@ -131,8 +130,8 @@ function formattedType(type) {
|
|
|
131
130
|
* formattedId(null); // => null
|
|
132
131
|
* ```
|
|
133
132
|
*
|
|
134
|
-
* @param
|
|
135
|
-
* @return
|
|
133
|
+
* @param id the potentially un-normalized id
|
|
134
|
+
* @return the normalized id
|
|
136
135
|
* @public
|
|
137
136
|
*/
|
|
138
137
|
|
|
@@ -172,9 +171,9 @@ function expectId(id) {
|
|
|
172
171
|
* isEquivType('posts', null); // false
|
|
173
172
|
* ```
|
|
174
173
|
*
|
|
175
|
-
* @param
|
|
176
|
-
* @param
|
|
177
|
-
* @return
|
|
174
|
+
* @param expected a potentially unnormalized type to match against
|
|
175
|
+
* @param actual a potentially unnormalized type to match against
|
|
176
|
+
* @return true if the types are equivalent
|
|
178
177
|
* @public
|
|
179
178
|
*/
|
|
180
179
|
function isEquivType(expected, actual) {
|
|
@@ -205,9 +204,9 @@ function isEquivType(expected, actual) {
|
|
|
205
204
|
* isEquivId(1, null); // false
|
|
206
205
|
* ```
|
|
207
206
|
*
|
|
208
|
-
* @param
|
|
209
|
-
* @param
|
|
210
|
-
* @return
|
|
207
|
+
* @param expected a potentially un-normalized id to match against
|
|
208
|
+
* @param actual a potentially un-normalized id to match against
|
|
209
|
+
* @return true if the ids are equivalent
|
|
211
210
|
* @public
|
|
212
211
|
*/
|
|
213
212
|
function isEquivId(expected, actual) {
|
package/dist/compat.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { getOwner } from '@ember/application';
|
|
2
2
|
import { recordIdentifierFor } from '@warp-drive/core';
|
|
3
|
-
import { assertPrivateStore,
|
|
3
|
+
import { assertPrivateStore, _deprecatingNormalize } from '@warp-drive/core/store/-private';
|
|
4
4
|
import '@warp-drive/core/reactive/-private';
|
|
5
|
-
import { p as payloadIsNotBlank, n as normalizeResponseHelper, i as iterateData, F as FetchManager, S as SaveOp, a as assertIdentifierHasId, b as SnapshotRecordArray } from "./-private-
|
|
5
|
+
import { p as payloadIsNotBlank, n as normalizeResponseHelper, i as iterateData, F as FetchManager, S as SaveOp, a as assertIdentifierHasId, b as SnapshotRecordArray } from "./-private-BG3bMiKp.js";
|
|
6
6
|
import { macroCondition, getGlobalConfig } from '@embroider/macros';
|
|
7
|
+
import { waitFor } from '@warp-drive/core/signals/-leaked';
|
|
7
8
|
function _findHasMany(adapter, store, identifier, link, relationship, options) {
|
|
8
9
|
const promise = Promise.resolve().then(() => {
|
|
9
10
|
const snapshot = store._fetchManager.createSnapshot(identifier, options);
|
|
@@ -162,7 +163,7 @@ function ensureRelationshipIsSetToParent(payload, parentIdentifier, store, paren
|
|
|
162
163
|
const other = data ? `<${data.type}:${data.id}>` : null;
|
|
163
164
|
const relationshipFetched = `${expectedModel}.${parentRelationship.kind}("${parentRelationship.name}")`;
|
|
164
165
|
const includedRecord = `<${type}:${id}>`;
|
|
165
|
-
const message = [`Encountered mismatched relationship:
|
|
166
|
+
const message = [`Encountered mismatched relationship: WarpDrive expected ${path} in the payload from ${relationshipFetched} to include ${expected} but got ${got} instead.\n`, `The ${includedRecord} record loaded at ${prefix} in the payload specified ${other} as its ${quotedInverse}, but should have specified ${expectedModel} (the record the relationship is being loaded from) as its ${quotedInverse} instead.`, `This could mean that the response for ${relationshipFetched} may have accidentally returned ${quotedType} records that aren't related to ${expectedModel} and could be related to a different ${parentIdentifier.type} record instead.`, `WarpDrive has corrected the ${includedRecord} record's ${quotedInverse} relationship to ${expectedModel} so that ${relationshipFetched} will include ${includedRecord}.`, `Please update the response from the server or change your serializer to either ensure that the response for only includes ${quotedType} records that specify ${expectedModel} as their ${quotedInverse}, or omit the ${quotedInverse} relationship from the response.`].join('\n');
|
|
166
167
|
macroCondition(getGlobalConfig().WarpDrive.env.DEBUG) ? (test => {
|
|
167
168
|
{
|
|
168
169
|
throw new Error(message);
|
|
@@ -736,6 +737,19 @@ function queryRecord(context) {
|
|
|
736
737
|
});
|
|
737
738
|
}
|
|
738
739
|
|
|
740
|
+
/**
|
|
741
|
+
* Extends the signature of {@link Store} with additional
|
|
742
|
+
* methods available when using the legacy network layer.
|
|
743
|
+
*
|
|
744
|
+
* @public
|
|
745
|
+
* @noInheritDoc
|
|
746
|
+
* @legacy
|
|
747
|
+
*/
|
|
748
|
+
|
|
749
|
+
/**
|
|
750
|
+
* @deprecated - use {@link LegacyStoreCompat} instead
|
|
751
|
+
*/
|
|
752
|
+
|
|
739
753
|
/**
|
|
740
754
|
Returns an instance of the adapter for a given type. For
|
|
741
755
|
example, `adapterFor('person')` will return an instance of
|
|
@@ -857,8 +871,13 @@ function serializerFor(modelName) {
|
|
|
857
871
|
}
|
|
858
872
|
|
|
859
873
|
/**
|
|
860
|
-
`normalize` converts a json payload into the normalized form
|
|
861
|
-
|
|
874
|
+
`normalize` converts a json payload into the normalized form expected by
|
|
875
|
+
{@link Store.push | push} using the serializer specified by `modelName`
|
|
876
|
+
|
|
877
|
+
:::warning
|
|
878
|
+
Generally it would be better to invoke the serializer yourself directly,
|
|
879
|
+
or write a more specialized normalization utility.
|
|
880
|
+
:::
|
|
862
881
|
|
|
863
882
|
Example
|
|
864
883
|
|
|
@@ -870,6 +889,7 @@ function serializerFor(modelName) {
|
|
|
870
889
|
});
|
|
871
890
|
```
|
|
872
891
|
|
|
892
|
+
@legacy
|
|
873
893
|
@public
|
|
874
894
|
@param modelName The name of the model type for this payload
|
|
875
895
|
@return The normalized payload
|
|
@@ -912,7 +932,7 @@ function normalize(modelName, payload) {
|
|
|
912
932
|
serializer.
|
|
913
933
|
|
|
914
934
|
```js [app/serializers/application.js]
|
|
915
|
-
import RESTSerializer from '@
|
|
935
|
+
import RESTSerializer from '@warp-drive/legacy/serializer/rest';
|
|
916
936
|
|
|
917
937
|
export default class ApplicationSerializer extends RESTSerializer;
|
|
918
938
|
```
|
|
@@ -937,13 +957,13 @@ function normalize(modelName, payload) {
|
|
|
937
957
|
will determine which serializer will process the payload.
|
|
938
958
|
|
|
939
959
|
```js [app/serializers/application.js]
|
|
940
|
-
import RESTSerializer from '@
|
|
960
|
+
import RESTSerializer from '@warp-drive/legacy/serializer/rest';
|
|
941
961
|
|
|
942
962
|
export default class ApplicationSerializer extends RESTSerializer;
|
|
943
963
|
```
|
|
944
964
|
|
|
945
965
|
```js [app/serializers/post.js]
|
|
946
|
-
import JSONSerializer from '@
|
|
966
|
+
import JSONSerializer from '@warp-drive/legacy/serializer/json';
|
|
947
967
|
|
|
948
968
|
export default JSONSerializer;
|
|
949
969
|
```
|