@ember-data/store 4.4.0-alpha.8 → 4.4.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 (32) hide show
  1. package/addon/-private/system/core-store.ts +119 -130
  2. package/addon/-private/system/ds-model-store.ts +10 -1
  3. package/addon/-private/system/fetch-manager.ts +21 -48
  4. package/addon/-private/system/model/internal-model.ts +160 -264
  5. package/addon/-private/system/{promise-proxies.ts → promise-proxies.js} +21 -31
  6. package/addon/-private/system/{record-array-manager.ts → record-array-manager.js} +60 -87
  7. package/addon/-private/system/record-arrays/adapter-populated-record-array.js +95 -0
  8. package/addon/-private/system/record-arrays/{record-array.ts → record-array.js} +75 -96
  9. package/addon/-private/system/record-data-for.ts +0 -2
  10. package/addon/-private/system/references/belongs-to.ts +2 -3
  11. package/addon/-private/system/references/has-many.ts +2 -4
  12. package/addon/-private/system/schema-definition-service.ts +2 -2
  13. package/addon/-private/system/snapshot-record-array.ts +11 -12
  14. package/addon/-private/system/snapshot.ts +7 -24
  15. package/addon/-private/system/store/common.js +1 -24
  16. package/addon/-private/system/store/finders.js +5 -53
  17. package/addon/-private/system/store/internal-model-factory.ts +7 -8
  18. package/addon/-private/system/store/record-data-store-wrapper.ts +2 -7
  19. package/addon/-private/system/store/serializer-response.js +71 -0
  20. package/addon/-private/ts-interfaces/ds-model.ts +7 -15
  21. package/addon/-private/ts-interfaces/ember-data-json-api.ts +0 -3
  22. package/addon/-private/ts-interfaces/minimum-adapter-interface.ts +20 -19
  23. package/addon/-private/ts-interfaces/minimum-serializer-interface.ts +6 -27
  24. package/addon/-private/ts-interfaces/record-data.ts +1 -4
  25. package/addon/-private/ts-interfaces/record-instance.ts +1 -3
  26. package/addon/-private/ts-interfaces/store.ts +0 -1
  27. package/addon/-private/utils/promise-record.ts +3 -3
  28. package/index.js +0 -3
  29. package/package.json +6 -7
  30. package/addon/-private/system/promise-proxy-base.js +0 -7
  31. package/addon/-private/system/record-arrays/adapter-populated-record-array.ts +0 -129
  32. package/addon/-private/system/store/serializer-response.ts +0 -85
@@ -1,85 +0,0 @@
1
- import { assert } from '@ember/debug';
2
- import { DEBUG } from '@glimmer/env';
3
-
4
- import { JsonApiDocument } from '../../ts-interfaces/ember-data-json-api';
5
- import { AdapterPayload } from '../../ts-interfaces/minimum-adapter-interface';
6
- import { MinimumSerializerInterface, RequestType } from '../../ts-interfaces/minimum-serializer-interface';
7
- import CoreStore from '../core-store';
8
- import ShimModelClass from '../model/shim-model-class';
9
-
10
- /**
11
- This is a helper method that validates a JSON API top-level document
12
-
13
- The format of a document is described here:
14
- http://jsonapi.org/format/#document-top-level
15
-
16
- @internal
17
- */
18
- function validateDocumentStructure(doc?: AdapterPayload | JsonApiDocument): asserts doc is JsonApiDocument {
19
- if (DEBUG) {
20
- let errors: string[] = [];
21
- if (!doc || typeof doc !== 'object') {
22
- errors.push('Top level of a JSON API document must be an object');
23
- } else {
24
- if (!('data' in doc) && !('errors' in doc) && !('meta' in doc)) {
25
- errors.push('One or more of the following keys must be present: "data", "errors", "meta".');
26
- } else {
27
- if ('data' in doc && 'errors' in doc) {
28
- errors.push('Top level keys "errors" and "data" cannot both be present in a JSON API document');
29
- }
30
- }
31
- if ('data' in doc) {
32
- if (!(doc.data === null || Array.isArray(doc.data) || typeof doc.data === 'object')) {
33
- errors.push('data must be null, an object, or an array');
34
- }
35
- }
36
- if ('meta' in doc) {
37
- if (typeof doc.meta !== 'object') {
38
- errors.push('meta must be an object');
39
- }
40
- }
41
- if ('errors' in doc) {
42
- if (!Array.isArray(doc.errors)) {
43
- errors.push('errors must be an array');
44
- }
45
- }
46
- if ('links' in doc) {
47
- if (typeof doc.links !== 'object') {
48
- errors.push('links must be an object');
49
- }
50
- }
51
- if ('jsonapi' in doc) {
52
- if (typeof doc.jsonapi !== 'object') {
53
- errors.push('jsonapi must be an object');
54
- }
55
- }
56
- if ('included' in doc) {
57
- if (typeof doc.included !== 'object') {
58
- errors.push('included must be an array');
59
- }
60
- }
61
- }
62
-
63
- assert(
64
- `Response must be normalized to a valid JSON API document:\n\t* ${errors.join('\n\t* ')}`,
65
- errors.length === 0
66
- );
67
- }
68
- }
69
-
70
- export function normalizeResponseHelper(
71
- serializer: MinimumSerializerInterface | null,
72
- store: CoreStore,
73
- modelClass: ShimModelClass,
74
- payload: AdapterPayload,
75
- id: string | null,
76
- requestType: RequestType
77
- ): JsonApiDocument {
78
- let normalizedResponse = serializer
79
- ? serializer.normalizeResponse(store, modelClass, payload, id, requestType)
80
- : payload;
81
-
82
- validateDocumentStructure(normalizedResponse);
83
-
84
- return normalizedResponse;
85
- }