@warp-drive/legacy 5.6.0-alpha.11

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 (211) hide show
  1. package/CHANGELOG.md +1 -0
  2. package/LICENSE.md +23 -0
  3. package/README.md +54 -0
  4. package/addon-main.cjs +5 -0
  5. package/declarations/adapter/-private/build-url-mixin.d.ts +34 -0
  6. package/declarations/adapter/-private/build-url-mixin.d.ts.map +1 -0
  7. package/declarations/adapter/-private/fastboot-interface.d.ts +9 -0
  8. package/declarations/adapter/-private/fastboot-interface.d.ts.map +1 -0
  9. package/declarations/adapter/-private/utils/continue-on-reject.d.ts +8 -0
  10. package/declarations/adapter/-private/utils/continue-on-reject.d.ts.map +1 -0
  11. package/declarations/adapter/-private/utils/determine-body-promise.d.ts +5 -0
  12. package/declarations/adapter/-private/utils/determine-body-promise.d.ts.map +1 -0
  13. package/declarations/adapter/-private/utils/fetch.d.ts +9 -0
  14. package/declarations/adapter/-private/utils/fetch.d.ts.map +1 -0
  15. package/declarations/adapter/-private/utils/parse-response-headers.d.ts +2 -0
  16. package/declarations/adapter/-private/utils/parse-response-headers.d.ts.map +1 -0
  17. package/declarations/adapter/-private/utils/serialize-into-hash.d.ts +7 -0
  18. package/declarations/adapter/-private/utils/serialize-into-hash.d.ts.map +1 -0
  19. package/declarations/adapter/-private/utils/serialize-query-params.d.ts +6 -0
  20. package/declarations/adapter/-private/utils/serialize-query-params.d.ts.map +1 -0
  21. package/declarations/adapter/-private.d.ts +6 -0
  22. package/declarations/adapter/-private.d.ts.map +1 -0
  23. package/declarations/adapter/error.d.ts +188 -0
  24. package/declarations/adapter/error.d.ts.map +1 -0
  25. package/declarations/adapter/json-api.d.ts +234 -0
  26. package/declarations/adapter/json-api.d.ts.map +1 -0
  27. package/declarations/adapter/rest.d.ts +823 -0
  28. package/declarations/adapter/rest.d.ts.map +1 -0
  29. package/declarations/adapter.d.ts +801 -0
  30. package/declarations/adapter.d.ts.map +1 -0
  31. package/declarations/compat/-private.d.ts +14 -0
  32. package/declarations/compat/-private.d.ts.map +1 -0
  33. package/declarations/compat/builders/find-all.d.ts +33 -0
  34. package/declarations/compat/builders/find-all.d.ts.map +1 -0
  35. package/declarations/compat/builders/find-record.d.ts +54 -0
  36. package/declarations/compat/builders/find-record.d.ts.map +1 -0
  37. package/declarations/compat/builders/query.d.ts +61 -0
  38. package/declarations/compat/builders/query.d.ts.map +1 -0
  39. package/declarations/compat/builders/save-record.d.ts +32 -0
  40. package/declarations/compat/builders/save-record.d.ts.map +1 -0
  41. package/declarations/compat/builders/utils.d.ts +4 -0
  42. package/declarations/compat/builders/utils.d.ts.map +1 -0
  43. package/declarations/compat/builders.d.ts +15 -0
  44. package/declarations/compat/builders.d.ts.map +1 -0
  45. package/declarations/compat/legacy-network-handler/fetch-manager.d.ts +47 -0
  46. package/declarations/compat/legacy-network-handler/fetch-manager.d.ts.map +1 -0
  47. package/declarations/compat/legacy-network-handler/identifier-has-id.d.ts +3 -0
  48. package/declarations/compat/legacy-network-handler/identifier-has-id.d.ts.map +1 -0
  49. package/declarations/compat/legacy-network-handler/legacy-data-fetch.d.ts +12 -0
  50. package/declarations/compat/legacy-network-handler/legacy-data-fetch.d.ts.map +1 -0
  51. package/declarations/compat/legacy-network-handler/legacy-data-utils.d.ts +6 -0
  52. package/declarations/compat/legacy-network-handler/legacy-data-utils.d.ts.map +1 -0
  53. package/declarations/compat/legacy-network-handler/legacy-network-handler.d.ts +3 -0
  54. package/declarations/compat/legacy-network-handler/legacy-network-handler.d.ts.map +1 -0
  55. package/declarations/compat/legacy-network-handler/minimum-adapter-interface.d.ts +527 -0
  56. package/declarations/compat/legacy-network-handler/minimum-adapter-interface.d.ts.map +1 -0
  57. package/declarations/compat/legacy-network-handler/minimum-serializer-interface.d.ts +224 -0
  58. package/declarations/compat/legacy-network-handler/minimum-serializer-interface.d.ts.map +1 -0
  59. package/declarations/compat/legacy-network-handler/serializer-response.d.ts +7 -0
  60. package/declarations/compat/legacy-network-handler/serializer-response.d.ts.map +1 -0
  61. package/declarations/compat/legacy-network-handler/snapshot-record-array.d.ts +89 -0
  62. package/declarations/compat/legacy-network-handler/snapshot-record-array.d.ts.map +1 -0
  63. package/declarations/compat/legacy-network-handler/snapshot.d.ts +237 -0
  64. package/declarations/compat/legacy-network-handler/snapshot.d.ts.map +1 -0
  65. package/declarations/compat/utils.d.ts +138 -0
  66. package/declarations/compat/utils.d.ts.map +1 -0
  67. package/declarations/compat.d.ts +134 -0
  68. package/declarations/compat.d.ts.map +1 -0
  69. package/declarations/model/-private/attr.d.ts +165 -0
  70. package/declarations/model/-private/attr.d.ts.map +1 -0
  71. package/declarations/model/-private/attr.type-test.d.ts +2 -0
  72. package/declarations/model/-private/attr.type-test.d.ts.map +1 -0
  73. package/declarations/model/-private/belongs-to.d.ts +173 -0
  74. package/declarations/model/-private/belongs-to.d.ts.map +1 -0
  75. package/declarations/model/-private/belongs-to.type-test.d.ts +2 -0
  76. package/declarations/model/-private/belongs-to.type-test.d.ts.map +1 -0
  77. package/declarations/model/-private/debug/assert-polymorphic-type.d.ts +6 -0
  78. package/declarations/model/-private/debug/assert-polymorphic-type.d.ts.map +1 -0
  79. package/declarations/model/-private/errors.d.ts +290 -0
  80. package/declarations/model/-private/errors.d.ts.map +1 -0
  81. package/declarations/model/-private/has-many.d.ts +164 -0
  82. package/declarations/model/-private/has-many.d.ts.map +1 -0
  83. package/declarations/model/-private/has-many.type-test.d.ts +2 -0
  84. package/declarations/model/-private/has-many.type-test.d.ts.map +1 -0
  85. package/declarations/model/-private/hooks.d.ts +11 -0
  86. package/declarations/model/-private/hooks.d.ts.map +1 -0
  87. package/declarations/model/-private/legacy-relationships-support.d.ts +57 -0
  88. package/declarations/model/-private/legacy-relationships-support.d.ts.map +1 -0
  89. package/declarations/model/-private/model-for-mixin.d.ts +4 -0
  90. package/declarations/model/-private/model-for-mixin.d.ts.map +1 -0
  91. package/declarations/model/-private/model-methods.d.ts +35 -0
  92. package/declarations/model/-private/model-methods.d.ts.map +1 -0
  93. package/declarations/model/-private/model.d.ts +1270 -0
  94. package/declarations/model/-private/model.d.ts.map +1 -0
  95. package/declarations/model/-private/model.type-test.d.ts +2 -0
  96. package/declarations/model/-private/model.type-test.d.ts.map +1 -0
  97. package/declarations/model/-private/notify-changes.d.ts +5 -0
  98. package/declarations/model/-private/notify-changes.d.ts.map +1 -0
  99. package/declarations/model/-private/promise-belongs-to.d.ts +40 -0
  100. package/declarations/model/-private/promise-belongs-to.d.ts.map +1 -0
  101. package/declarations/model/-private/promise-many-array.d.ts +126 -0
  102. package/declarations/model/-private/promise-many-array.d.ts.map +1 -0
  103. package/declarations/model/-private/promise-proxy-base.d.ts +3 -0
  104. package/declarations/model/-private/promise-proxy-base.d.ts.map +1 -0
  105. package/declarations/model/-private/record-state.d.ts +78 -0
  106. package/declarations/model/-private/record-state.d.ts.map +1 -0
  107. package/declarations/model/-private/references/belongs-to.d.ts +495 -0
  108. package/declarations/model/-private/references/belongs-to.d.ts.map +1 -0
  109. package/declarations/model/-private/references/has-many.d.ts +504 -0
  110. package/declarations/model/-private/references/has-many.d.ts.map +1 -0
  111. package/declarations/model/-private/schema-provider.d.ts +63 -0
  112. package/declarations/model/-private/schema-provider.d.ts.map +1 -0
  113. package/declarations/model/-private/type-utils.d.ts +57 -0
  114. package/declarations/model/-private/type-utils.d.ts.map +1 -0
  115. package/declarations/model/-private/util.d.ts +6 -0
  116. package/declarations/model/-private/util.d.ts.map +1 -0
  117. package/declarations/model/-private.d.ts +8 -0
  118. package/declarations/model/-private.d.ts.map +1 -0
  119. package/declarations/model/migration-support.d.ts +287 -0
  120. package/declarations/model/migration-support.d.ts.map +1 -0
  121. package/declarations/model/migration-support.type-test.d.ts +2 -0
  122. package/declarations/model/migration-support.type-test.d.ts.map +1 -0
  123. package/declarations/model.d.ts +50 -0
  124. package/declarations/model.d.ts.map +1 -0
  125. package/declarations/serializer/-private/embedded-records-mixin.d.ts +97 -0
  126. package/declarations/serializer/-private/embedded-records-mixin.d.ts.map +1 -0
  127. package/declarations/serializer/-private/transforms/boolean.d.ts +47 -0
  128. package/declarations/serializer/-private/transforms/boolean.d.ts.map +1 -0
  129. package/declarations/serializer/-private/transforms/boolean.type-test.d.ts +2 -0
  130. package/declarations/serializer/-private/transforms/boolean.type-test.d.ts.map +1 -0
  131. package/declarations/serializer/-private/transforms/date.d.ts +28 -0
  132. package/declarations/serializer/-private/transforms/date.d.ts.map +1 -0
  133. package/declarations/serializer/-private/transforms/number.d.ts +29 -0
  134. package/declarations/serializer/-private/transforms/number.d.ts.map +1 -0
  135. package/declarations/serializer/-private/transforms/string.d.ts +29 -0
  136. package/declarations/serializer/-private/transforms/string.d.ts.map +1 -0
  137. package/declarations/serializer/-private/transforms/transform.d.ts +119 -0
  138. package/declarations/serializer/-private/transforms/transform.d.ts.map +1 -0
  139. package/declarations/serializer/-private/utils.d.ts +4 -0
  140. package/declarations/serializer/-private/utils.d.ts.map +1 -0
  141. package/declarations/serializer/json-api.d.ts +496 -0
  142. package/declarations/serializer/json-api.d.ts.map +1 -0
  143. package/declarations/serializer/json.d.ts +1047 -0
  144. package/declarations/serializer/json.d.ts.map +1 -0
  145. package/declarations/serializer/rest.d.ts +554 -0
  146. package/declarations/serializer/rest.d.ts.map +1 -0
  147. package/declarations/serializer/transform.d.ts +6 -0
  148. package/declarations/serializer/transform.d.ts.map +1 -0
  149. package/declarations/serializer.d.ts +258 -0
  150. package/declarations/serializer.d.ts.map +1 -0
  151. package/dist/-private-DFfBszo5.js +1182 -0
  152. package/dist/-private-DFfBszo5.js.map +1 -0
  153. package/dist/adapter/-private.js +1 -0
  154. package/dist/adapter/-private.js.map +1 -0
  155. package/dist/adapter/error.js +254 -0
  156. package/dist/adapter/error.js.map +1 -0
  157. package/dist/adapter/json-api.js +129 -0
  158. package/dist/adapter/json-api.js.map +1 -0
  159. package/dist/adapter/rest.js +1262 -0
  160. package/dist/adapter/rest.js.map +1 -0
  161. package/dist/adapter.js +1284 -0
  162. package/dist/adapter.js.map +1 -0
  163. package/dist/compat/-private.js +1 -0
  164. package/dist/compat/-private.js.map +1 -0
  165. package/dist/compat/builders.js +292 -0
  166. package/dist/compat/builders.js.map +1 -0
  167. package/dist/compat/utils.js +225 -0
  168. package/dist/compat/utils.js.map +1 -0
  169. package/dist/compat.js +999 -0
  170. package/dist/compat.js.map +1 -0
  171. package/dist/errors-D74uk36r.js +2541 -0
  172. package/dist/errors-D74uk36r.js.map +1 -0
  173. package/dist/json-BCH3fil7.js +1349 -0
  174. package/dist/json-BCH3fil7.js.map +1 -0
  175. package/dist/model/-private.js +2 -0
  176. package/dist/model/-private.js.map +1 -0
  177. package/dist/model/migration-support.js +453 -0
  178. package/dist/model/migration-support.js.map +1 -0
  179. package/dist/model.js +736 -0
  180. package/dist/model.js.map +1 -0
  181. package/dist/runtime-BPCpkOf1-BKOwiRJp.js +65 -0
  182. package/dist/runtime-BPCpkOf1-BKOwiRJp.js.map +1 -0
  183. package/dist/schema-provider-CXFLTMjg.js +2228 -0
  184. package/dist/schema-provider-CXFLTMjg.js.map +1 -0
  185. package/dist/serialize-into-hash-BxfqWC8u.js +260 -0
  186. package/dist/serialize-into-hash-BxfqWC8u.js.map +1 -0
  187. package/dist/serializer/json-api.js +514 -0
  188. package/dist/serializer/json-api.js.map +1 -0
  189. package/dist/serializer/json.js +6 -0
  190. package/dist/serializer/json.js.map +1 -0
  191. package/dist/serializer/rest.js +1245 -0
  192. package/dist/serializer/rest.js.map +1 -0
  193. package/dist/serializer/transform.js +313 -0
  194. package/dist/serializer/transform.js.map +1 -0
  195. package/dist/serializer.js +252 -0
  196. package/dist/serializer.js.map +1 -0
  197. package/logos/NCC-1701-a-blue.svg +4 -0
  198. package/logos/NCC-1701-a-gold.svg +4 -0
  199. package/logos/NCC-1701-a-gold_100.svg +1 -0
  200. package/logos/NCC-1701-a-gold_base-64.txt +1 -0
  201. package/logos/NCC-1701-a.svg +4 -0
  202. package/logos/README.md +4 -0
  203. package/logos/docs-badge.svg +2 -0
  204. package/logos/ember-data-logo-dark.svg +12 -0
  205. package/logos/ember-data-logo-light.svg +12 -0
  206. package/logos/github-header.svg +444 -0
  207. package/logos/social1.png +0 -0
  208. package/logos/social2.png +0 -0
  209. package/logos/warp-drive-logo-dark.svg +4 -0
  210. package/logos/warp-drive-logo-gold.svg +4 -0
  211. package/package.json +72 -0
@@ -0,0 +1,287 @@
1
+ /**
2
+ * This module provides support for migrating away from @ember-data/model
3
+ * to @warp-drive/schema-record.
4
+ *
5
+ * It includes:
6
+ *
7
+ * - A `withDefaults` function to assist in creating a schema in LegacyMode
8
+ * - A `registerDerivations` function to register the derivations necessary to support LegacyMode
9
+ * - A `DelegatingSchemaService` that can be used to provide a schema service that works with both
10
+ * @ember-data/model and @warp-drive/schema-record simultaneously for migration purposes.
11
+ * - A `WithLegacy` type util that can be used to create a type that includes the legacy
12
+ * properties and methods of a record.
13
+ *
14
+ * Using LegacyMode features on a ReactiveResource *requires* the use of these derivations and schema
15
+ * additions. LegacyMode is not intended to be a long-term solution, but rather a stepping stone
16
+ * to assist in more rapidly adopting modern WarpDrive features.
17
+ *
18
+ * @module
19
+ */
20
+ import type { Store } from '@warp-drive/core';
21
+ import type { SchemaService } from '@warp-drive/core/types';
22
+ import type { ChangedAttributesHash } from '@warp-drive/core/types/cache';
23
+ import type { StableRecordIdentifier } from '@warp-drive/core/types/identifier';
24
+ import type { ObjectValue } from '@warp-drive/core/types/json/raw';
25
+ import type { TypedRecordInstance, TypeFromInstance } from '@warp-drive/core/types/record';
26
+ import type { Derivation, HashFn, Transformation } from '@warp-drive/core/types/schema/concepts';
27
+ import type { ArrayField, DerivedField, FieldSchema, GenericField, HashField, LegacyResourceSchema, ObjectField, ObjectSchema, ResourceSchema } from '@warp-drive/core/types/schema/fields';
28
+ import type { WithPartial } from '@warp-drive/core/types/utils';
29
+ import type { Snapshot } from '../compat/-private.ts';
30
+ import type { MinimalLegacyRecord } from './-private/model-methods.ts';
31
+ import { belongsTo, hasMany } from './-private/model-methods.ts';
32
+ import RecordState from './-private/record-state.ts';
33
+ import type BelongsToReference from './-private/references/belongs-to.ts';
34
+ import type HasManyReference from './-private/references/has-many.ts';
35
+ import type { _MaybeBelongsToFields, MaybeHasManyFields } from './-private/type-utils.ts';
36
+ export type WithLegacyDerivations<T extends TypedRecordInstance> = T & MinimalLegacyRecord & {
37
+ belongsTo: typeof belongsTo;
38
+ hasMany: typeof hasMany;
39
+ };
40
+ type AttributesSchema = ReturnType<Exclude<SchemaService['attributesDefinitionFor'], undefined>>;
41
+ type RelationshipsSchema = ReturnType<Exclude<SchemaService['relationshipsDefinitionFor'], undefined>>;
42
+ interface LegacyModeRecord<T extends TypedRecordInstance> {
43
+ id: string | null;
44
+ serialize(options?: Record<string, unknown>): unknown;
45
+ destroyRecord(options?: Record<string, unknown>): Promise<this>;
46
+ unloadRecord(): void;
47
+ changedAttributes(): ChangedAttributesHash;
48
+ rollbackAttributes(): void;
49
+ _createSnapshot(): Snapshot<T>;
50
+ save(options?: Record<string, unknown>): Promise<this>;
51
+ reload(options?: Record<string, unknown>): Promise<T>;
52
+ belongsTo<K extends _MaybeBelongsToFields<T>>(prop: K): BelongsToReference<T, K>;
53
+ hasMany<K extends MaybeHasManyFields<T>>(prop: K): HasManyReference<T, K>;
54
+ deleteRecord(): void;
55
+ adapterError: unknown;
56
+ constructor: {
57
+ modelName: TypeFromInstance<T>;
58
+ };
59
+ currentState: RecordState;
60
+ dirtyType: 'deleted' | 'created' | 'updated' | '';
61
+ errors: unknown;
62
+ hasDirtyAttributes: boolean;
63
+ isDeleted: boolean;
64
+ isEmpty: boolean;
65
+ isError: boolean;
66
+ isLoaded: boolean;
67
+ isLoading: boolean;
68
+ isDestroying: boolean;
69
+ isDestroyed: boolean;
70
+ isNew: boolean;
71
+ isSaving: boolean;
72
+ isValid: boolean;
73
+ }
74
+ /**
75
+ * A Type utility that enables quickly adding type information for the fields
76
+ * defined by `import { withDefaults } from '@ember-data/model/migration-support'`.
77
+ *
78
+ * Example:
79
+ *
80
+ * ```ts
81
+ * import { withDefaults, WithLegacy } from '@ember-data/model/migration-support';
82
+ * import { Type } from '@warp-drive/core-types/symbols';
83
+ * import type { HasMany } from '@ember-data/model';
84
+ *
85
+ * export const UserSchema = withDefaults({
86
+ * type: 'user',
87
+ * fields: [
88
+ * { name: 'firstName', kind: 'attribute' },
89
+ * { name: 'lastName', kind: 'attribute' },
90
+ * { name: 'age', kind: 'attribute' },
91
+ * { name: 'friends',
92
+ * kind: 'hasMany',
93
+ * type: 'user',
94
+ * options: { inverse: 'friends', async: false }
95
+ * },
96
+ * { name: 'bestFriend',
97
+ * kind: 'belongsTo',
98
+ * type: 'user',
99
+ * options: { inverse: null, async: false }
100
+ * },
101
+ * ],
102
+ * });
103
+ *
104
+ * export type User = WithLegacy<{
105
+ * firstName: string;
106
+ * lastName: string;
107
+ * age: number;
108
+ * friends: HasMany<User>;
109
+ * bestFriend: User | null;
110
+ * [Type]: 'user';
111
+ * }>
112
+ * ```
113
+ *
114
+ */
115
+ export type WithLegacy<T extends TypedRecordInstance> = T & LegacyModeRecord<T>;
116
+ /**
117
+ * A function which adds the necessary fields to a schema and marks it as
118
+ * being in LegacyMode. This is used to support the legacy features of
119
+ * @ember-data/model while migrating to WarpDrive.
120
+ *
121
+ * Example:
122
+ *
123
+ * ```ts
124
+ * import { withDefaults, WithLegacy } from '@ember-data/model/migration-support';
125
+ * import { Type } from '@warp-drive/core-types/symbols';
126
+ * import type { HasMany } from '@ember-data/model';
127
+ *
128
+ * export const UserSchema = withDefaults({
129
+ * type: 'user',
130
+ * fields: [
131
+ * { name: 'firstName', kind: 'attribute' },
132
+ * { name: 'lastName', kind: 'attribute' },
133
+ * { name: 'age', kind: 'attribute' },
134
+ * { name: 'friends',
135
+ * kind: 'hasMany',
136
+ * type: 'user',
137
+ * options: { inverse: 'friends', async: false }
138
+ * },
139
+ * { name: 'bestFriend',
140
+ * kind: 'belongsTo',
141
+ * type: 'user',
142
+ * options: { inverse: null, async: false }
143
+ * },
144
+ * ],
145
+ * });
146
+ *
147
+ * export type User = WithLegacy<{
148
+ * firstName: string;
149
+ * lastName: string;
150
+ * age: number;
151
+ * friends: HasMany<User>;
152
+ * bestFriend: User | null;
153
+ * [Type]: 'user';
154
+ * }>
155
+ * ```
156
+ *
157
+ * Using this function require registering the derivations
158
+ * it requires with the schema service.
159
+ *
160
+ * ```ts
161
+ * import { registerDerivations } from '@ember-data/model/migration-support';
162
+ *
163
+ * registerDerivations(schema);
164
+ * ```
165
+ *
166
+ * @param {LegacyResourceSchema} schema The schema to add legacy support to.
167
+ * @return {LegacyResourceSchema} The schema with legacy support added.
168
+ * @public
169
+ */
170
+ export declare function withDefaults(schema: WithPartial<LegacyResourceSchema, 'legacy' | 'identity'>): LegacyResourceSchema;
171
+ /**
172
+ * A function which registers the necessary derivations to support
173
+ * the LegacyMode features of @ember-data/model while migrating to WarpDrive.
174
+ *
175
+ * This must be called in order to use the fields added by:
176
+ *
177
+ * ```ts
178
+ * import { withDefaults } from '@ember-data/model/migration-support';
179
+ * ```
180
+ *
181
+ * @param {SchemaService} schema The schema service to register the derivations with.
182
+ * @return {void}
183
+ * @public
184
+ */
185
+ export declare function registerDerivations(schema: SchemaService): void;
186
+ /**
187
+ * A class which provides a schema service that delegates between
188
+ * a primary schema service and one that supports legacy model
189
+ * classes as its schema source.
190
+ *
191
+ * When the primary schema service has a schema for the given
192
+ * resource, it will be used. Otherwise, the fallback schema
193
+ * service will be used.
194
+ *
195
+ * This can be used when incrementally migrating from Models to
196
+ * ReactiveResources by enabling unmigrated Models to continue to
197
+ * provide their own schema information to the application.
198
+ *
199
+ * ```ts
200
+ * import { DelegatingSchemaService } from '@ember-data/model/migration-support';
201
+ * import { SchemaService } from '@warp-drive/schema-record';
202
+ *
203
+ * class AppStore extends Store {
204
+ * createSchemaService() {
205
+ * const schema = new SchemaService();
206
+ * return new DelegatingSchemaService(this, schema);
207
+ * }
208
+ * }
209
+ * ```
210
+ *
211
+ * All calls to register resources, derivations, transformations, hash functions
212
+ * etc. will be delegated to the primary schema service.
213
+ *
214
+ * @class DelegatingSchemaService
215
+ * @public
216
+ */
217
+ export interface DelegatingSchemaService {
218
+ attributesDefinitionFor?(resource: StableRecordIdentifier | {
219
+ type: string;
220
+ }): AttributesSchema;
221
+ relationshipsDefinitionFor?(resource: StableRecordIdentifier | {
222
+ type: string;
223
+ }): RelationshipsSchema;
224
+ doesTypeExist?(type: string): boolean;
225
+ }
226
+ export declare class DelegatingSchemaService implements SchemaService {
227
+ _preferred: SchemaService;
228
+ _secondary: SchemaService;
229
+ constructor(store: Store, schema: SchemaService);
230
+ isDelegated(resource: StableRecordIdentifier | {
231
+ type: string;
232
+ }): boolean;
233
+ resourceTypes(): Readonly<string[]>;
234
+ hasResource(resource: StableRecordIdentifier | {
235
+ type: string;
236
+ }): boolean;
237
+ hasTrait(type: string): boolean;
238
+ resourceHasTrait(resource: StableRecordIdentifier | {
239
+ type: string;
240
+ }, trait: string): boolean;
241
+ fields(resource: StableRecordIdentifier | {
242
+ type: string;
243
+ }): Map<string, FieldSchema>;
244
+ transformation(field: GenericField | ObjectField | ArrayField | {
245
+ type: string;
246
+ }): Transformation;
247
+ hashFn(field: HashField | {
248
+ type: string;
249
+ }): HashFn;
250
+ derivation(field: DerivedField | {
251
+ type: string;
252
+ }): Derivation;
253
+ resource(resource: StableRecordIdentifier | {
254
+ type: string;
255
+ }): ResourceSchema | ObjectSchema;
256
+ registerResources(schemas: Array<ResourceSchema | ObjectSchema>): void;
257
+ registerResource(schema: ResourceSchema | ObjectSchema): void;
258
+ registerTransformation(transform: Transformation): void;
259
+ registerDerivation<R, T, FM extends ObjectValue | null>(derivation: Derivation<R, T, FM>): void;
260
+ registerHashFn(hashFn: HashFn): void;
261
+ /**
262
+ * This is an internal method used to register behaviors for legacy mode.
263
+ * It is not intended for public use.
264
+ *
265
+ * We do think a generalized `kind` registration system would be useful,
266
+ * but we have not yet designed it.
267
+ *
268
+ * See https://github.com/emberjs/data/issues/9534
269
+ *
270
+ * @internal
271
+ */
272
+ _registerMode(mode: string, kinds: unknown): void;
273
+ /**
274
+ * This is an internal method used to enable legacy behaviors for legacy mode.
275
+ * It is not intended for public use.
276
+ *
277
+ * We do think a generalized `kind` registration system would be useful,
278
+ * but we have not yet designed it.
279
+ *
280
+ * See https://github.com/emberjs/data/issues/9534
281
+ *
282
+ * @internal
283
+ */
284
+ _kind(mode: string, kind: 'belongsTo' | 'hasMany'): () => unknown;
285
+ }
286
+ export {};
287
+ //# sourceMappingURL=migration-support.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration-support.d.ts","sourceRoot":"","sources":["../../src/model/migration-support.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=migration-support.type-test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration-support.type-test.d.ts","sourceRoot":"","sources":["../../src/model/migration-support.type-test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * This package provides a Presentation Model for resource data in an WarpDrive Cache.
3
+ *
4
+ * Models are defined as classes extending from `import Model from '@ember-data/model';` and the
5
+ * attributes and relationships on these classes are parsed at runtime to supply static "schema"
6
+ * to WarpDrive's SchemaService.
7
+ *
8
+ * Resource data for individual resources fetched from your API is presented to the UI via instances
9
+ * of the `Model`s you define. An instantiated `Model` is referred to as a `record`.
10
+
11
+ When we refer to the `ModelClass` as opposed to a `Model` or `Record` we are referring
12
+ specifically to the class definition and the static schema methods present on it.
13
+
14
+ When we refer to a `record` we refer to a specific class instance presenting
15
+ the resource data for a given `type` and `id`.
16
+
17
+ ### Defining a Model
18
+
19
+ ```js [app/models/person.js]
20
+ import Model, { attr, belongsTo, hasMany } from '@ember-data/model';
21
+
22
+ export default class PersonModel extends Model {
23
+ @attr name;
24
+
25
+ @belongsTo('pet', { inverse: 'owners', async: false }) dog;
26
+
27
+ @hasMany('person', { inverse: 'friends', async: true }) friends;
28
+ }
29
+ ```
30
+
31
+ ### modelName convention
32
+
33
+ By convention, the name of a given model (its `type`) matches the name
34
+ of the file in the `app/models` folder and should be lowercase, singular
35
+ and dasherized.
36
+
37
+ @module
38
+ */
39
+ export { attr } from './model/-private/attr';
40
+ export { belongsTo } from './model/-private/belongs-to';
41
+ export { hasMany } from './model/-private/has-many';
42
+ export { Model } from './model/-private/model';
43
+ export { Model as default } from './model/-private/model';
44
+ export type { PromiseBelongsTo as AsyncBelongsTo } from './model/-private/promise-belongs-to';
45
+ export type { PromiseManyArray as AsyncHasMany } from './model/-private/promise-many-array';
46
+ export type { RelatedCollection as ManyArray } from '@warp-drive/core/store/-private';
47
+ export type { RelatedCollection as HasMany } from '@warp-drive/core/store/-private';
48
+ export { instantiateRecord, teardownRecord, modelFor } from './model/-private/hooks';
49
+ export { buildSchema } from './model/-private/schema-provider';
50
+ //# sourceMappingURL=model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAAE,KAAK,IAAI,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAE1D,YAAY,EAAE,gBAAgB,IAAI,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAC9F,YAAY,EAAE,gBAAgB,IAAI,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAC5F,YAAY,EAAE,iBAAiB,IAAI,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACtF,YAAY,EAAE,iBAAiB,IAAI,OAAO,EAAE,MAAM,iCAAiC,CAAC;AACpF,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACrF,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ ## Using Embedded Records
3
+
4
+ `EmbeddedRecordsMixin` supports serializing embedded records.
5
+
6
+ To set up embedded records, include the mixin when extending a serializer,
7
+ then define and configure embedded (model) relationships.
8
+
9
+ Note that embedded records will serialize with the serializer for their model instead of the serializer in which they are defined.
10
+
11
+ Note also that this mixin does not work with JSONAPISerializer because the JSON:API specification does not describe how to format embedded resources.
12
+
13
+ Below is an example of a per-type serializer (`post` type).
14
+
15
+ ```js [app/serializers/post.js]
16
+ import RESTSerializer, { EmbeddedRecordsMixin } from '@ember-data/serializer/rest';
17
+
18
+ export default class PostSerializer extends RESTSerializer.extend(EmbeddedRecordsMixin) {
19
+ attrs = {
20
+ author: { embedded: 'always' },
21
+ comments: { serialize: 'ids' }
22
+ }
23
+ }
24
+ ```
25
+ Note that this use of `{ embedded: 'always' }` is unrelated to
26
+ the `{ embedded: 'always' }` that is defined as an option on `attr` as part of
27
+ defining a model while working with the `ActiveModelSerializer`. Nevertheless,
28
+ using `{ embedded: 'always' }` as an option to `attr` is not a valid way to set up
29
+ embedded records.
30
+
31
+ The `attrs` option for a resource `{ embedded: 'always' }` is shorthand for:
32
+
33
+ ```js
34
+ {
35
+ serialize: 'records',
36
+ deserialize: 'records'
37
+ }
38
+ ```
39
+
40
+ ### Configuring Attrs
41
+
42
+ A resource's `attrs` option may be set to use `ids`, `records` or false for the
43
+ `serialize` and `deserialize` settings.
44
+
45
+ The `attrs` property can be set on the `ApplicationSerializer` or a per-type
46
+ serializer.
47
+
48
+ In the case where embedded JSON is expected while extracting a payload (reading)
49
+ the setting is `deserialize: 'records'`, there is no need to use `ids` when
50
+ extracting as that is the default behaviour without this mixin if you are using
51
+ the vanilla `EmbeddedRecordsMixin`. Likewise, to embed JSON in the payload while
52
+ serializing `serialize: 'records'` is the setting to use. There is an option of
53
+ not embedding JSON in the serialized payload by using `serialize: 'ids'`. If you
54
+ do not want the relationship sent at all, you can use `serialize: false`.
55
+
56
+
57
+ ### EmbeddedRecordsMixin defaults
58
+ If you do not overwrite `attrs` for a specific relationship, the `EmbeddedRecordsMixin`
59
+ will behave in the following way:
60
+
61
+ BelongsTo: `{ serialize: 'id', deserialize: 'id' }`
62
+ HasMany: `{ serialize: false, deserialize: 'ids' }`
63
+
64
+ ### Model Relationships
65
+
66
+ Embedded records must have a model defined to be extracted and serialized. Note that
67
+ when defining any relationships on your model such as `belongsTo` and `hasMany`, you
68
+ should not both specify `async: true` and also indicate through the serializer's
69
+ `attrs` attribute that the related model should be embedded for deserialization.
70
+ If a model is declared embedded for deserialization (`embedded: 'always'` or `deserialize: 'records'`),
71
+ then do not use `async: true`.
72
+
73
+ To successfully extract and serialize embedded records the model relationships
74
+ must be set up correctly. See the
75
+ [defining relationships](https://guides.emberjs.com/current/models/relationships)
76
+ section of the **Defining Models** guide page.
77
+
78
+ Records without an `id` property are not considered embedded records, model
79
+ instances must have an `id` property to be used with Ember Data.
80
+
81
+ ### Example JSON payloads, Models and Serializers
82
+
83
+ **When customizing a serializer it is important to grok what the customizations
84
+ are. Please read the docs for the methods this mixin provides, in case you need
85
+ to modify it to fit your specific needs.**
86
+
87
+ For example, review the docs for each method of this mixin:
88
+ * [normalize](/ember-data/release/classes/EmbeddedRecordsMixin/methods/normalize?anchor=normalize)
89
+ * [serializeBelongsTo](/ember-data/release/classes/EmbeddedRecordsMixin/methods/serializeBelongsTo?anchor=serializeBelongsTo)
90
+ * [serializeHasMany](/ember-data/release/classes/EmbeddedRecordsMixin/methods/serializeHasMany?anchor=serializeHasMany)
91
+
92
+ @class EmbeddedRecordsMixin
93
+ @public
94
+ */
95
+ export const EmbeddedRecordsMixin: Mixin;
96
+ import Mixin from '@ember/object/mixin';
97
+ //# sourceMappingURL=embedded-records-mixin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embedded-records-mixin.d.ts","sourceRoot":"","sources":["../../../src/serializer/-private/embedded-records-mixin.js"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6FE;AACF,yCAghBG;kBAlnBe,qBAAqB"}
@@ -0,0 +1,47 @@
1
+ import type { TransformName } from '@warp-drive/core/types/symbols';
2
+ /**
3
+ The `BooleanTransform` class is used to serialize and deserialize
4
+ boolean attributes on Ember Data record objects. This transform is
5
+ used when `boolean` is passed as the type parameter to the
6
+ [attr](/ember-data/release/functions/@ember-data%2Fmodel/attr) function.
7
+
8
+ Usage
9
+
10
+ ```js [app/models/user.js]
11
+ import { Model, attr } from '@warp-drive/legacy/model';
12
+
13
+ export default class UserModel extends Model {
14
+ @attr('boolean') isAdmin;
15
+ @attr('string') name;
16
+ @attr('string') email;
17
+ }
18
+ ```
19
+
20
+ By default, the boolean transform only allows for values of `true` or
21
+ `false`. You can opt into allowing `null` values for
22
+ boolean attributes via `attr('boolean', { allowNull: true })`
23
+
24
+ ```js [app/models/user.js]
25
+ import { Model, attr } from '@warp-drive/legacy/model';
26
+
27
+ export default class UserModel extends Model {
28
+ @attr('string') email;
29
+ @attr('string') username;
30
+ @attr('boolean', { allowNull: true }) wantsWeeklyEmail;
31
+ }
32
+ ```
33
+
34
+ @class BooleanTransform
35
+ @public
36
+ */
37
+ export declare class BooleanTransform {
38
+ deserialize(serialized: boolean | null | number | string, options?: {
39
+ allowNull?: boolean;
40
+ }): boolean | null;
41
+ serialize(deserialized: boolean | null, options?: {
42
+ allowNull?: boolean;
43
+ }): boolean | null;
44
+ [TransformName]: 'boolean';
45
+ static create(): BooleanTransform;
46
+ }
47
+ //# sourceMappingURL=boolean.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boolean.d.ts","sourceRoot":"","sources":["../../../../src/serializer/-private/transforms/boolean.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAEpE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,qBAAa,gBAAgB;IAC3B,WAAW,CAAC,UAAU,EAAE,OAAO,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,GAAG,IAAI;IAgB5G,SAAS,CAAC,YAAY,EAAE,OAAO,GAAG,IAAI,EAAE,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,GAAG,IAAI;IAQlF,CAAC,aAAa,CAAC,EAAE,SAAS,CAAC;IAEnC,MAAM,CAAC,MAAM;CAGd"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=boolean.type-test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boolean.type-test.d.ts","sourceRoot":"","sources":["../../../../src/serializer/-private/transforms/boolean.type-test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,28 @@
1
+ import { TransformName } from '@warp-drive/core/types/symbols';
2
+ /**
3
+ The `DateTransform` class is used to serialize and deserialize
4
+ date attributes on Ember Data record objects. This transform is used
5
+ when `date` is passed as the type parameter to the
6
+ [attr](/ember-data/release/functions/@ember-data%2Fmodel/attr) function. It uses the [`ISO 8601`](https://en.wikipedia.org/wiki/ISO_8601)
7
+ standard.
8
+
9
+ ```js [app/models/score.js]
10
+ import Model, { attr, belongsTo } from '@ember-data/model';
11
+
12
+ export default class ScoreModel extends Model {
13
+ @attr('number') value;
14
+ @belongsTo('player') player;
15
+ @attr('date') date;
16
+ }
17
+ ```
18
+
19
+ @class DateTransform
20
+ @public
21
+ */
22
+ export declare class DateTransform {
23
+ deserialize(serialized: string | number | null, _options?: Record<string, unknown>): Date | null;
24
+ serialize(date: Date, _options?: Record<string, unknown>): string | null;
25
+ [TransformName]: "date";
26
+ static create(): DateTransform;
27
+ }
28
+ //# sourceMappingURL=date.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../../../../src/serializer/-private/transforms/date.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,qBAAa,aAAa;IACxB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAoBlF,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI;IASxE,CAAC,aAAa,CAAC,EAAG,MAAM,CAAU;IAElC,MAAM,CAAC,MAAM;CAGd"}
@@ -0,0 +1,29 @@
1
+ import { TransformName } from '@warp-drive/core/types/symbols';
2
+ /**
3
+ The `NumberTransform` class is used to serialize and deserialize
4
+ numeric attributes on Ember Data record objects. This transform is
5
+ used when `number` is passed as the type parameter to the
6
+ [attr](/ember-data/release/functions/@ember-data%2Fmodel/attr) function.
7
+
8
+ Usage
9
+
10
+ ```js [app/models/score.js]
11
+ import Model, { attr, belongsTo } from '@ember-data/model';
12
+
13
+ export default class ScoreModel extends Model {
14
+ @attr('number') value;
15
+ @belongsTo('player') player;
16
+ @attr('date') date;
17
+ }
18
+ ```
19
+
20
+ @class NumberTransform
21
+ @public
22
+ */
23
+ export declare class NumberTransform {
24
+ deserialize(serialized: string | number | null | undefined, _options?: Record<string, unknown>): number | null;
25
+ serialize(deserialized: string | number | null | undefined, _options?: Record<string, unknown>): number | null;
26
+ [TransformName]: "number";
27
+ static create(): NumberTransform;
28
+ }
29
+ //# sourceMappingURL=number.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"number.d.ts","sourceRoot":"","sources":["../../../../src/serializer/-private/transforms/number.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAM/D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,eAAe;IAC1B,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI;IAU9G,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI;IAU9G,CAAC,aAAa,CAAC,EAAG,QAAQ,CAAU;IAEpC,MAAM,CAAC,MAAM;CAGd"}
@@ -0,0 +1,29 @@
1
+ import { TransformName } from '@warp-drive/core/types/symbols';
2
+ /**
3
+ The `StringTransform` class is used to serialize and deserialize
4
+ string attributes on Ember Data record objects. This transform is
5
+ used when `string` is passed as the type parameter to the
6
+ [attr](/ember-data/release/functions/@ember-data%2Fmodel/attr) function.
7
+
8
+ Usage
9
+
10
+ ```js [app/models/user.js]
11
+ import Model, { attr, belongsTo } from '@ember-data/model';
12
+
13
+ export default class UserModel extends Model {
14
+ @attr('boolean') isAdmin;
15
+ @attr('string') name;
16
+ @attr('string') email;
17
+ }
18
+ ```
19
+
20
+ @class StringTransform
21
+ @public
22
+ */
23
+ export declare class StringTransform {
24
+ deserialize(serialized: unknown, _options?: Record<string, unknown>): string | null;
25
+ serialize(deserialized: unknown, _options?: Record<string, unknown>): string | null;
26
+ [TransformName]: "string";
27
+ static create(): StringTransform;
28
+ }
29
+ //# sourceMappingURL=string.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../../../../src/serializer/-private/transforms/string.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,eAAe;IAC1B,WAAW,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI;IAGnF,SAAS,CAAC,YAAY,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI;IAInF,CAAC,aAAa,CAAC,EAAG,QAAQ,CAAU;IAEpC,MAAM,CAAC,MAAM;CAGd"}