@ember-data/model 5.4.0-alpha.64 → 5.4.0-alpha.70

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 (71) hide show
  1. package/addon-main.cjs +5 -0
  2. package/blueprints/model/index.js +18 -5
  3. package/blueprints/model-test/index.js +16 -10
  4. package/blueprints/model-test/qunit-files/__root__/__path__/__test__.js +4 -5
  5. package/{addon → dist}/-private.js +2 -2
  6. package/{addon/has-many-BuTJfT5a.js → dist/has-many-CR10J-rp.js} +49 -26
  7. package/dist/has-many-CR10J-rp.js.map +1 -0
  8. package/dist/hooks-BNw6VdLr.js +75 -0
  9. package/dist/hooks-BNw6VdLr.js.map +1 -0
  10. package/dist/hooks.js +2 -0
  11. package/{addon → dist}/hooks.js.map +1 -1
  12. package/dist/index.js +4 -0
  13. package/{addon → dist}/index.js.map +1 -1
  14. package/dist/migration-support.js +211 -0
  15. package/dist/migration-support.js.map +1 -0
  16. package/{addon/model-DJ9C4aZ-.js → dist/model-CsbDNxap.js} +821 -250
  17. package/dist/model-CsbDNxap.js.map +1 -0
  18. package/dist/schema-provider-C5vR7TBr.js +256 -0
  19. package/dist/schema-provider-C5vR7TBr.js.map +1 -0
  20. package/package.json +39 -59
  21. package/unstable-preview-types/-private/attr.d.ts.map +1 -1
  22. package/unstable-preview-types/-private/belongs-to.d.ts.map +1 -1
  23. package/unstable-preview-types/-private/debug/assert-polymorphic-type.d.ts +2 -2
  24. package/unstable-preview-types/-private/debug/assert-polymorphic-type.d.ts.map +1 -1
  25. package/unstable-preview-types/-private/errors.d.ts +2 -5
  26. package/unstable-preview-types/-private/errors.d.ts.map +1 -1
  27. package/unstable-preview-types/-private/has-many.d.ts.map +1 -1
  28. package/unstable-preview-types/-private/hooks.d.ts.map +1 -1
  29. package/unstable-preview-types/-private/legacy-relationships-support.d.ts +16 -20
  30. package/unstable-preview-types/-private/legacy-relationships-support.d.ts.map +1 -1
  31. package/unstable-preview-types/-private/many-array.d.ts +11 -13
  32. package/unstable-preview-types/-private/many-array.d.ts.map +1 -1
  33. package/unstable-preview-types/-private/model-methods.d.ts +6 -5
  34. package/unstable-preview-types/-private/model-methods.d.ts.map +1 -1
  35. package/unstable-preview-types/-private/model.d.ts +38 -35
  36. package/unstable-preview-types/-private/model.d.ts.map +1 -1
  37. package/unstable-preview-types/-private/notify-changes.d.ts +1 -1
  38. package/unstable-preview-types/-private/notify-changes.d.ts.map +1 -1
  39. package/unstable-preview-types/-private/promise-belongs-to.d.ts +1 -2
  40. package/unstable-preview-types/-private/promise-belongs-to.d.ts.map +1 -1
  41. package/unstable-preview-types/-private/promise-many-array.d.ts +4 -4
  42. package/unstable-preview-types/-private/promise-many-array.d.ts.map +1 -1
  43. package/unstable-preview-types/-private/record-state.d.ts +3 -4
  44. package/unstable-preview-types/-private/record-state.d.ts.map +1 -1
  45. package/unstable-preview-types/-private/references/belongs-to.d.ts +4 -4
  46. package/unstable-preview-types/-private/references/belongs-to.d.ts.map +1 -1
  47. package/unstable-preview-types/-private/references/has-many.d.ts +7 -7
  48. package/unstable-preview-types/-private/references/has-many.d.ts.map +1 -1
  49. package/unstable-preview-types/-private/schema-provider.d.ts +46 -15
  50. package/unstable-preview-types/-private/schema-provider.d.ts.map +1 -1
  51. package/unstable-preview-types/-private/type-utils.d.ts +64 -0
  52. package/unstable-preview-types/-private/type-utils.d.ts.map +1 -0
  53. package/unstable-preview-types/-private.d.ts +4 -3
  54. package/unstable-preview-types/-private.d.ts.map +1 -1
  55. package/unstable-preview-types/index.d.ts +20 -20
  56. package/unstable-preview-types/index.d.ts.map +1 -1
  57. package/unstable-preview-types/migration-support.d.ts +45 -6
  58. package/unstable-preview-types/migration-support.d.ts.map +1 -1
  59. package/addon/has-many-BuTJfT5a.js.map +0 -1
  60. package/addon/hooks-BMoEt0SI.js +0 -176
  61. package/addon/hooks-BMoEt0SI.js.map +0 -1
  62. package/addon/hooks.js +0 -1
  63. package/addon/index.js +0 -3
  64. package/addon/migration-support.js +0 -118
  65. package/addon/migration-support.js.map +0 -1
  66. package/addon/model-DJ9C4aZ-.js.map +0 -1
  67. package/addon/util-CSYkrwfb.js +0 -35
  68. package/addon/util-CSYkrwfb.js.map +0 -1
  69. package/addon-main.js +0 -94
  70. package/unstable-preview-types/-private/promise-proxy-base.d.ts +0 -35
  71. /package/{addon → dist}/-private.js.map +0 -0
@@ -0,0 +1,211 @@
1
+ import { recordIdentifierFor } from '@ember-data/store';
2
+ import { getOrSetGlobal } from '@warp-drive/core-types/-private';
3
+ import { Type } from '@warp-drive/core-types/symbols';
4
+ import '@ember/object';
5
+ import '@ember-data/store/-private';
6
+ import '@ember/debug';
7
+ import '@ember/string';
8
+ import { macroCondition, getGlobalConfig } from '@embroider/macros';
9
+ import { u as unloadRecord, s as serialize, b as save, r as rollbackAttributes, c as reload, h as hasMany, E as Errors, d as destroyRecord, e as deleteRecord, f as RecordState, g as changedAttributes, i as belongsTo, j as createSnapshot } from "./model-CsbDNxap";
10
+ import 'ember-inflector';
11
+ import '@ember/application';
12
+ import { b as buildSchema } from "./schema-provider-C5vR7TBr";
13
+
14
+ // 'isDestroying', 'isDestroyed'
15
+ const LegacyFields = ['_createSnapshot', 'adapterError', 'belongsTo', 'changedAttributes', 'constructor', 'currentState', 'deleteRecord', 'destroyRecord', 'dirtyType', 'errors', 'hasDirtyAttributes', 'hasMany', 'isDeleted', 'isEmpty', 'isError', 'isLoaded', 'isLoading', 'isNew', 'isSaving', 'isValid', 'reload', 'rollbackAttributes', 'save', 'serialize', 'unloadRecord'];
16
+ const LegacySupport = getOrSetGlobal('LegacySupport', new WeakMap());
17
+ function legacySupport(record, options, prop) {
18
+ let state = LegacySupport.get(record);
19
+ if (!state) {
20
+ state = {};
21
+ LegacySupport.set(record, state);
22
+ }
23
+ switch (prop) {
24
+ case '_createSnapshot':
25
+ return createSnapshot;
26
+ case 'adapterError':
27
+ return record.currentState.adapterError;
28
+ case 'belongsTo':
29
+ return belongsTo;
30
+ case 'changedAttributes':
31
+ return changedAttributes;
32
+ case 'constructor':
33
+ return state._constructor = state._constructor || {
34
+ isModel: true,
35
+ name: `Record<${recordIdentifierFor(record).type}>`,
36
+ modelName: recordIdentifierFor(record).type
37
+ };
38
+ case 'currentState':
39
+ return state.recordState = state.recordState || new RecordState(record);
40
+ case 'deleteRecord':
41
+ return deleteRecord;
42
+ case 'destroyRecord':
43
+ return destroyRecord;
44
+ case 'dirtyType':
45
+ return record.currentState.dirtyType;
46
+ case 'errors':
47
+ // @ts-expect-error
48
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call
49
+ return state.errors = state.errors || Errors.create({
50
+ __record: record
51
+ });
52
+ case 'hasDirtyAttributes':
53
+ return record.currentState.isDirty;
54
+ case 'hasMany':
55
+ return hasMany;
56
+ case 'isDeleted':
57
+ return record.currentState.isDeleted;
58
+ case 'isEmpty':
59
+ return record.currentState.isEmpty;
60
+ case 'isError':
61
+ return record.currentState.isError;
62
+ case 'isLoaded':
63
+ return record.currentState.isLoaded;
64
+ case 'isLoading':
65
+ return record.currentState.isLoading;
66
+ case 'isNew':
67
+ return record.currentState.isNew;
68
+ case 'isSaving':
69
+ return record.currentState.isSaving;
70
+ case 'isValid':
71
+ return record.currentState.isValid;
72
+ case 'reload':
73
+ return reload;
74
+ case 'rollbackAttributes':
75
+ return rollbackAttributes;
76
+ case 'save':
77
+ return save;
78
+ case 'serialize':
79
+ return serialize;
80
+ case 'unloadRecord':
81
+ return unloadRecord;
82
+ default:
83
+ macroCondition(getGlobalConfig().WarpDrive.env.DEBUG) ? (test => {
84
+ {
85
+ throw new Error(`${prop} is not a supported legacy field`);
86
+ }
87
+ })() : {};
88
+ }
89
+ }
90
+ legacySupport[Type] = '@legacy';
91
+ function withDefaults(schema) {
92
+ schema.legacy = true;
93
+ schema.identity = {
94
+ kind: '@id',
95
+ name: 'id'
96
+ };
97
+ LegacyFields.forEach(field => {
98
+ schema.fields.push({
99
+ type: '@legacy',
100
+ name: field,
101
+ kind: 'derived'
102
+ });
103
+ });
104
+ schema.fields.push({
105
+ name: 'isReloading',
106
+ kind: '@local',
107
+ type: 'boolean',
108
+ options: {
109
+ defaultValue: false
110
+ }
111
+ });
112
+ schema.fields.push({
113
+ name: 'isDestroying',
114
+ kind: '@local',
115
+ type: 'boolean',
116
+ options: {
117
+ defaultValue: false
118
+ }
119
+ });
120
+ schema.fields.push({
121
+ name: 'isDestroyed',
122
+ kind: '@local',
123
+ type: 'boolean',
124
+ options: {
125
+ defaultValue: false
126
+ }
127
+ });
128
+ return schema;
129
+ }
130
+ function registerDerivations(schema) {
131
+ schema.registerDerivation(legacySupport);
132
+ }
133
+ class DelegatingSchemaService {
134
+ _preferred;
135
+ _secondary;
136
+ constructor(store, schema) {
137
+ this._preferred = schema;
138
+ this._secondary = buildSchema(store);
139
+ }
140
+ hasResource(resource) {
141
+ return this._preferred.hasResource(resource) || this._secondary.hasResource(resource);
142
+ }
143
+ hasTrait(type) {
144
+ if (this._preferred.hasResource({
145
+ type
146
+ })) {
147
+ return this._preferred.hasTrait(type);
148
+ }
149
+ return this._secondary.hasTrait(type);
150
+ }
151
+ resourceHasTrait(resource, trait) {
152
+ if (this._preferred.hasResource(resource)) {
153
+ return this._preferred.resourceHasTrait(resource, trait);
154
+ }
155
+ return this._secondary.resourceHasTrait(resource, trait);
156
+ }
157
+ fields(resource) {
158
+ if (this._preferred.hasResource(resource)) {
159
+ return this._preferred.fields(resource);
160
+ }
161
+ return this._secondary.fields(resource);
162
+ }
163
+ transformation(name) {
164
+ return this._preferred.transformation(name);
165
+ }
166
+ hashFn(name) {
167
+ return this._preferred.hashFn(name);
168
+ }
169
+ derivation(name) {
170
+ return this._preferred.derivation(name);
171
+ }
172
+ resource(resource) {
173
+ if (this._preferred.hasResource(resource)) {
174
+ return this._preferred.resource(resource);
175
+ }
176
+ return this._secondary.resource(resource);
177
+ }
178
+ registerResources(schemas) {
179
+ this._preferred.registerResources(schemas);
180
+ }
181
+ registerResource(schema) {
182
+ this._preferred.registerResource(schema);
183
+ }
184
+ registerTransformation(transform) {
185
+ this._preferred.registerTransformation(transform);
186
+ }
187
+ registerDerivation(derivation) {
188
+ this._preferred.registerDerivation(derivation);
189
+ }
190
+ registerHashFn(hashFn) {
191
+ this._preferred.registerHashFn(hashFn);
192
+ }
193
+ }
194
+ if (macroCondition(getGlobalConfig().WarpDrive.deprecations.ENABLE_LEGACY_SCHEMA_SERVICE)) {
195
+ DelegatingSchemaService.prototype.attributesDefinitionFor = function (resource) {
196
+ if (this._preferred.hasResource(resource)) {
197
+ return this._preferred.attributesDefinitionFor(resource);
198
+ }
199
+ return this._secondary.attributesDefinitionFor(resource);
200
+ };
201
+ DelegatingSchemaService.prototype.relationshipsDefinitionFor = function (resource) {
202
+ if (this._preferred.hasResource(resource)) {
203
+ return this._preferred.relationshipsDefinitionFor(resource);
204
+ }
205
+ return this._secondary.relationshipsDefinitionFor(resource);
206
+ };
207
+ DelegatingSchemaService.prototype.doesTypeExist = function (type) {
208
+ return this._preferred.doesTypeExist?.(type) || this._secondary.doesTypeExist?.(type) || false;
209
+ };
210
+ }
211
+ export { DelegatingSchemaService, registerDerivations, withDefaults };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration-support.js","sources":["../src/migration-support.ts"],"sourcesContent":["import type Store from '@ember-data/store';\nimport { recordIdentifierFor } from '@ember-data/store';\nimport type { SchemaService } from '@ember-data/store/types';\nimport { ENABLE_LEGACY_SCHEMA_SERVICE } from '@warp-drive/build-config/deprecations';\nimport { assert } from '@warp-drive/build-config/macros';\nimport type { StableRecordIdentifier } from '@warp-drive/core-types';\nimport { getOrSetGlobal } from '@warp-drive/core-types/-private';\nimport type { ObjectValue } from '@warp-drive/core-types/json/raw';\nimport type { Derivation, HashFn, Transformation } from '@warp-drive/core-types/schema/concepts';\nimport type { FieldSchema, ResourceSchema } from '@warp-drive/core-types/schema/fields';\nimport { Type } from '@warp-drive/core-types/symbols';\nimport type { WithPartial } from '@warp-drive/core-types/utils';\n\nimport { Errors } from './-private';\nimport type { MinimalLegacyRecord } from './-private/model-methods';\nimport {\n belongsTo,\n changedAttributes,\n createSnapshot,\n deleteRecord,\n destroyRecord,\n hasMany,\n reload,\n rollbackAttributes,\n save,\n serialize,\n unloadRecord,\n} from './-private/model-methods';\nimport RecordState from './-private/record-state';\nimport { buildSchema } from './hooks';\n\ntype AttributesSchema = ReturnType<Exclude<SchemaService['attributesDefinitionFor'], undefined>>;\ntype RelationshipsSchema = ReturnType<Exclude<SchemaService['relationshipsDefinitionFor'], undefined>>;\n\n// 'isDestroying', 'isDestroyed'\nconst LegacyFields = [\n '_createSnapshot',\n 'adapterError',\n 'belongsTo',\n 'changedAttributes',\n 'constructor',\n 'currentState',\n 'deleteRecord',\n 'destroyRecord',\n 'dirtyType',\n 'errors',\n 'hasDirtyAttributes',\n 'hasMany',\n 'isDeleted',\n 'isEmpty',\n 'isError',\n 'isLoaded',\n 'isLoading',\n 'isNew',\n 'isSaving',\n 'isValid',\n 'reload',\n 'rollbackAttributes',\n 'save',\n 'serialize',\n 'unloadRecord',\n];\n\nconst LegacySupport = getOrSetGlobal('LegacySupport', new WeakMap<MinimalLegacyRecord, Record<string, unknown>>());\n\nfunction legacySupport(record: MinimalLegacyRecord, options: ObjectValue | null, prop: string): unknown {\n let state = LegacySupport.get(record);\n if (!state) {\n state = {};\n LegacySupport.set(record, state);\n }\n\n switch (prop) {\n case '_createSnapshot':\n return createSnapshot;\n case 'adapterError':\n return record.currentState.adapterError;\n case 'belongsTo':\n return belongsTo;\n case 'changedAttributes':\n return changedAttributes;\n case 'constructor':\n return (state._constructor = state._constructor || {\n isModel: true,\n name: `Record<${recordIdentifierFor(record).type}>`,\n modelName: recordIdentifierFor(record).type,\n });\n case 'currentState':\n return (state.recordState = state.recordState || new RecordState(record));\n case 'deleteRecord':\n return deleteRecord;\n case 'destroyRecord':\n return destroyRecord;\n case 'dirtyType':\n return record.currentState.dirtyType;\n case 'errors':\n // @ts-expect-error\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n return (state.errors = state.errors || Errors.create({ __record: record }));\n case 'hasDirtyAttributes':\n return record.currentState.isDirty;\n case 'hasMany':\n return hasMany;\n case 'isDeleted':\n return record.currentState.isDeleted;\n case 'isEmpty':\n return record.currentState.isEmpty;\n case 'isError':\n return record.currentState.isError;\n case 'isLoaded':\n return record.currentState.isLoaded;\n case 'isLoading':\n return record.currentState.isLoading;\n case 'isNew':\n return record.currentState.isNew;\n case 'isSaving':\n return record.currentState.isSaving;\n case 'isValid':\n return record.currentState.isValid;\n case 'reload':\n return reload;\n case 'rollbackAttributes':\n return rollbackAttributes;\n case 'save':\n return save;\n case 'serialize':\n return serialize;\n case 'unloadRecord':\n return unloadRecord;\n default:\n assert(`${prop} is not a supported legacy field`, false);\n }\n}\nlegacySupport[Type] = '@legacy';\n\nexport function withDefaults(schema: WithPartial<ResourceSchema, 'legacy' | 'identity'>): ResourceSchema {\n schema.legacy = true;\n schema.identity = { kind: '@id', name: 'id' };\n\n LegacyFields.forEach((field) => {\n schema.fields.push({\n type: '@legacy',\n name: field,\n kind: 'derived',\n });\n });\n schema.fields.push({\n name: 'isReloading',\n kind: '@local',\n type: 'boolean',\n options: { defaultValue: false },\n });\n schema.fields.push({\n name: 'isDestroying',\n kind: '@local',\n type: 'boolean',\n options: { defaultValue: false },\n });\n schema.fields.push({\n name: 'isDestroyed',\n kind: '@local',\n type: 'boolean',\n options: { defaultValue: false },\n });\n return schema as ResourceSchema;\n}\n\nexport function registerDerivations(schema: SchemaService) {\n schema.registerDerivation(legacySupport);\n}\n\nexport interface DelegatingSchemaService {\n attributesDefinitionFor?(resource: StableRecordIdentifier | { type: string }): AttributesSchema;\n relationshipsDefinitionFor?(resource: StableRecordIdentifier | { type: string }): RelationshipsSchema;\n doesTypeExist?(type: string): boolean;\n}\nexport class DelegatingSchemaService implements SchemaService {\n _preferred!: SchemaService;\n _secondary!: SchemaService;\n\n constructor(store: Store, schema: SchemaService) {\n this._preferred = schema;\n this._secondary = buildSchema(store);\n }\n hasResource(resource: StableRecordIdentifier | { type: string }): boolean {\n return this._preferred.hasResource(resource) || this._secondary.hasResource(resource);\n }\n hasTrait(type: string): boolean {\n if (this._preferred.hasResource({ type })) {\n return this._preferred.hasTrait(type);\n }\n return this._secondary.hasTrait(type);\n }\n resourceHasTrait(resource: StableRecordIdentifier | { type: string }, trait: string): boolean {\n if (this._preferred.hasResource(resource)) {\n return this._preferred.resourceHasTrait(resource, trait);\n }\n return this._secondary.resourceHasTrait(resource, trait);\n }\n fields(resource: StableRecordIdentifier | { type: string }): Map<string, FieldSchema> {\n if (this._preferred.hasResource(resource)) {\n return this._preferred.fields(resource);\n }\n return this._secondary.fields(resource);\n }\n transformation(name: string): Transformation {\n return this._preferred.transformation(name);\n }\n hashFn(name: string): HashFn {\n return this._preferred.hashFn(name);\n }\n derivation(name: string): Derivation {\n return this._preferred.derivation(name);\n }\n resource(resource: StableRecordIdentifier | { type: string }): ResourceSchema {\n if (this._preferred.hasResource(resource)) {\n return this._preferred.resource(resource);\n }\n return this._secondary.resource(resource);\n }\n registerResources(schemas: ResourceSchema[]): void {\n this._preferred.registerResources(schemas);\n }\n registerResource(schema: ResourceSchema): void {\n this._preferred.registerResource(schema);\n }\n registerTransformation(transform: Transformation): void {\n this._preferred.registerTransformation(transform);\n }\n registerDerivation<R, T, FM extends ObjectValue | null>(derivation: Derivation<R, T, FM>): void {\n this._preferred.registerDerivation(derivation);\n }\n registerHashFn(hashFn: HashFn): void {\n this._preferred.registerHashFn(hashFn);\n }\n}\n\nif (ENABLE_LEGACY_SCHEMA_SERVICE) {\n DelegatingSchemaService.prototype.attributesDefinitionFor = function (\n resource: StableRecordIdentifier | { type: string }\n ) {\n if (this._preferred.hasResource(resource)) {\n return this._preferred.attributesDefinitionFor!(resource);\n }\n\n return this._secondary.attributesDefinitionFor!(resource);\n };\n DelegatingSchemaService.prototype.relationshipsDefinitionFor = function (\n resource: StableRecordIdentifier | { type: string }\n ) {\n if (this._preferred.hasResource(resource)) {\n return this._preferred.relationshipsDefinitionFor!(resource);\n }\n\n return this._secondary.relationshipsDefinitionFor!(resource);\n };\n DelegatingSchemaService.prototype.doesTypeExist = function (type: string) {\n return this._preferred.doesTypeExist?.(type) || this._secondary.doesTypeExist?.(type) || false;\n };\n}\n"],"names":["LegacyFields","LegacySupport","getOrSetGlobal","WeakMap","legacySupport","record","options","prop","state","get","set","createSnapshot","currentState","adapterError","belongsTo","changedAttributes","_constructor","isModel","name","recordIdentifierFor","type","modelName","recordState","RecordState","deleteRecord","destroyRecord","dirtyType","errors","Errors","create","__record","isDirty","hasMany","isDeleted","isEmpty","isError","isLoaded","isLoading","isNew","isSaving","isValid","reload","rollbackAttributes","save","serialize","unloadRecord","macroCondition","getGlobalConfig","WarpDrive","env","DEBUG","test","Error","Type","withDefaults","schema","legacy","identity","kind","forEach","field","fields","push","defaultValue","registerDerivations","registerDerivation","DelegatingSchemaService","_preferred","_secondary","constructor","store","buildSchema","hasResource","resource","hasTrait","resourceHasTrait","trait","transformation","hashFn","derivation","registerResources","schemas","registerResource","registerTransformation","transform","registerHashFn","deprecations","ENABLE_LEGACY_SCHEMA_SERVICE","prototype","attributesDefinitionFor","relationshipsDefinitionFor","doesTypeExist"],"mappings":"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"}