@warp-drive-mirror/build-config 0.0.0-beta.7 → 4.13.0-alpha.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/dist/index.js CHANGED
@@ -119,6 +119,621 @@ function getEnv() {
119
119
  * @public
120
120
  */
121
121
  const DEPRECATE_CATCH_ALL = '99.0';
122
+
123
+ /**
124
+ * **id: ember-data:rsvp-unresolved-async**
125
+ *
126
+ * Deprecates when a request promise did not resolve prior to the store tearing down.
127
+ *
128
+ * Note: in most cases even with the promise guard that is now being deprecated
129
+ * a test crash would still be encountered.
130
+ *
131
+ * To resolve: Tests or Fastboot instances which crash need to find triggers requests
132
+ * and properly await them before tearing down.
133
+ *
134
+ * @property DEPRECATE_RSVP_PROMISE
135
+ * @since 4.4
136
+ * @until 5.0
137
+ * @public
138
+ */
139
+ const DEPRECATE_RSVP_PROMISE = '4.4';
140
+
141
+ /**
142
+ * **id: ember-data:model-save-promise**
143
+ *
144
+ * Affects
145
+ * - model.save / store.saveRecord
146
+ * - model.reload
147
+ *
148
+ * Deprecates the promise-proxy returned by these methods in favor of
149
+ * a Promise return value.
150
+ *
151
+ * To resolve this deprecation, `await` or `.then` the return value
152
+ * before doing work with the result instead of accessing values via
153
+ * the proxy.
154
+ *
155
+ * To continue utilizing flags such as `isPending` in your templates
156
+ * consider using [ember-promise-helpers](https://github.com/fivetanley/ember-promise-helpers)
157
+ *
158
+ * @property DEPRECATE_SAVE_PROMISE_ACCESS
159
+ * @since 4.4
160
+ * @until 5.0
161
+ * @public
162
+ */
163
+ const DEPRECATE_SAVE_PROMISE_ACCESS = '4.4';
164
+
165
+ /**
166
+ * **id: ember-data:deprecate-snapshot-model-class-access**
167
+ *
168
+ * Deprecates accessing the factory class for a given resource type
169
+ * via properties on various classes.
170
+ *
171
+ * Guards
172
+ *
173
+ * - SnapshotRecordArray.type
174
+ * - Snapshot.type
175
+ * - RecordArray.type
176
+ *
177
+ * Use `store.modelFor(<resource-type>)` instead.
178
+ *
179
+ * @property DEPRECATE_SNAPSHOT_MODEL_CLASS_ACCESS
180
+ * @since 4.5
181
+ * @until 5.0
182
+ * @public
183
+ */
184
+ const DEPRECATE_SNAPSHOT_MODEL_CLASS_ACCESS = '4.5';
185
+
186
+ /**
187
+ * **id: ember-data:deprecate-store-find**
188
+ *
189
+ * Deprecates using `store.find` instead of `store.findRecord`. Typically
190
+ * `store.find` is a mistaken call that occurs when using implicit route behaviors
191
+ * in Ember which attempt to derive how to load data via parsing the route params
192
+ * for a route which does not implement a `model` hook.
193
+ *
194
+ * To resolve, use `store.findRecord`. This may require implementing an associated
195
+ * route's `model() {}` hook.
196
+ *
197
+ * @property DEPRECATE_STORE_FIND
198
+ * @since 4.5
199
+ * @until 5.0
200
+ * @public
201
+ */
202
+ const DEPRECATE_STORE_FIND = '4.5';
203
+
204
+ /**
205
+ * **id: ember-data:deprecate-has-record-for-id**
206
+ *
207
+ * Deprecates `store.hasRecordForId(type, id)` in favor of `store.peekRecord({ type, id }) !== null`.
208
+ *
209
+ * Broadly speaking, while the ability to query for presence is important, a key distinction exists
210
+ * between these methods that make relying on `hasRecordForId` unsafe, as it may report `true` for a
211
+ * record which is not-yet loaded and un-peekable. `peekRecord` offers a safe mechanism by which to check
212
+ * for whether a record is present in a usable manner.
213
+ *
214
+ * @property DEPRECATE_HAS_RECORD
215
+ * @since 4.5
216
+ * @until 5.0
217
+ * @public
218
+ */
219
+ const DEPRECATE_HAS_RECORD = '4.5';
220
+
221
+ /**
222
+ * **id: ember-data:deprecate-string-arg-schemas**
223
+ *
224
+ * Deprecates `schema.attributesDefinitionFor(type)` and
225
+ * `schema.relationshipsDefinitionFor(type)` in favor of
226
+ * a consistent object signature (`identifier | { type }`).
227
+ *
228
+ * To resolve change
229
+ *
230
+ * ```diff
231
+ * - store.getSchemaDefinitionService().attributesDefinitionFor('user')
232
+ * + store.getSchemaDefinitionService().attributesDefinitionFor({ type: 'user' })
233
+ * ```
234
+ *
235
+ * @property DEPRECATE_STRING_ARG_SCHEMAS
236
+ * @since 4.5
237
+ * @until 5.0
238
+ * @public
239
+ */
240
+ const DEPRECATE_STRING_ARG_SCHEMAS = '4.5';
241
+
242
+ /**
243
+ * **id: ember-data:deprecate-secret-adapter-fallback**
244
+ *
245
+ * Deprecates the secret `-json-api` fallback adapter in favor
246
+ * or an explicit "catch all" application adapter. In addition
247
+ * to this deprecation ensuring the user has explicitly chosen an
248
+ * adapter, this ensures that the user may choose to use no adapter
249
+ * at all.
250
+ *
251
+ * Simplest fix:
252
+ *
253
+ * *<project>/app/adapters/application.js*
254
+ * ```js
255
+ * export { default } from '@ember-data-mirror/adapter/json-api';
256
+ * ```
257
+ *
258
+ * @property DEPRECATE_JSON_API_FALLBACK
259
+ * @since 4.5
260
+ * @until 5.0
261
+ * @public
262
+ */
263
+ const DEPRECATE_JSON_API_FALLBACK = '4.5';
264
+
265
+ /**
266
+ * **id: ember-data:deprecate-model-reopen**
267
+ *
268
+ * ----
269
+ *
270
+ * For properties known ahead of time, instead of
271
+ *
272
+ * ```ts
273
+ * class User extends Model { @attr firstName; }
274
+ *
275
+ * User.reopen({ lastName: attr() });
276
+ * ```
277
+ *
278
+ * Extend `User` again or include it in the initial definition.
279
+ *
280
+ * ```ts
281
+ * class User extends Model { @attr firstName; @attr lastName }
282
+ * ```
283
+ *
284
+ * For properties generated dynamically, consider registering
285
+ * a `SchemaDefinitionService` with the store , as such services
286
+ * are capable of dynamically adjusting their schemas, and utilize
287
+ * the `instantiateRecord` hook to create a Proxy based class that
288
+ * can react to the changes in the schema.
289
+ *
290
+ *
291
+ * Use Foo extends Model to extend your class instead
292
+ *
293
+ *
294
+ *
295
+ *
296
+ * **id: ember-data:deprecate-model-reopenclass**
297
+ *
298
+ * ----
299
+ *
300
+ * Instead of reopenClass, define `static` properties with native class syntax
301
+ * or add them to the final object.
302
+ *
303
+ * ```ts
304
+ * // instead of
305
+ * User.reopenClass({ aStaticMethod() {} });
306
+ *
307
+ * // do this
308
+ * class User {
309
+ * static aStaticMethod() {}
310
+ * }
311
+ *
312
+ * // or do this
313
+ * User.aStaticMethod = function() {}
314
+ * ```
315
+ *
316
+ *
317
+ * @property DEPRECATE_MODEL_REOPEN
318
+ * @since 4.7
319
+ * @until 5.0
320
+ * @public
321
+ */
322
+ const DEPRECATE_MODEL_REOPEN = '4.7';
323
+
324
+ /**
325
+ * **id: ember-data:deprecate-early-static**
326
+ *
327
+ * This deprecation triggers if static computed properties
328
+ * or methods are triggered without looking up the record
329
+ * via the store service's `modelFor` hook. Accessing this
330
+ * static information without looking up the model via the
331
+ * store most commonly occurs when
332
+ *
333
+ * - using ember-cli-mirage (to fix, refactor to not use its auto-discovery of ember-data models)
334
+ * - importing a model class and accessing its static information via the import
335
+ *
336
+ * Instead of
337
+ *
338
+ * ```js
339
+ * import User from 'my-app/models/user';
340
+ *
341
+ * const relationships = User.relationshipsByName;
342
+ * ```
343
+ *
344
+ * Do *at least* this
345
+ *
346
+ * ```js
347
+ * const relationships = store.modelFor('user').relationshipsByName;
348
+ * ```
349
+ *
350
+ * However, the much more future proof refactor is to not use `modelFor` at all but instead
351
+ * to utilize the schema service for this static information.
352
+ *
353
+ * ```js
354
+ * const relationships = store.getSchemaDefinitionService().relationshipsDefinitionFor({ type: 'user' });
355
+ * ```
356
+ *
357
+ *
358
+ * @property DEPRECATE_EARLY_STATIC
359
+ * @since 4.7
360
+ * @until 5.0
361
+ * @public
362
+ */
363
+ const DEPRECATE_EARLY_STATIC = '4.7';
364
+
365
+ /**
366
+ * **id: ember-data:deprecate-errors-hash-to-array-helper**
367
+ * **id: ember-data:deprecate-errors-array-to-hash-helper**
368
+ * **id: ember-data:deprecate-normalize-modelname-helper**
369
+ *
370
+ * Deprecates `errorsHashToArray` `errorsArrayToHash` and `normalizeModelName`
371
+ *
372
+ * Users making use of these (already private) utilities can trivially copy them
373
+ * into their own codebase to continue using them, though we recommend refactoring
374
+ * to a more direct conversion into the expected errors format for the errors helpers.
375
+ *
376
+ * For refactoring normalizeModelName we also recommend following the guidance in
377
+ * [RFC#740 Deprecate Non-Strict Types](https://github.com/emberjs/rfcs/pull/740).
378
+ *
379
+ *
380
+ * @property DEPRECATE_HELPERS
381
+ * @since 4.7
382
+ * @until 5.0
383
+ * @public
384
+ */
385
+ const DEPRECATE_HELPERS = '4.7';
386
+
387
+ /**
388
+ * **id: ember-data:deprecate-promise-many-array-behavior**
389
+ *
390
+ * [RFC Documentation](https://rfcs.emberjs.com/id/0745-ember-data-deprecate-methods-on-promise-many-array)
391
+ *
392
+ * This deprecation deprecates accessing values on the asynchronous proxy
393
+ * in favor of first "resolving" or "awaiting" the promise to retrieve a
394
+ * synchronous value.
395
+ *
396
+ * Template iteration of the asynchronous value will still work and not trigger
397
+ * the deprecation, but all JS access should be avoided and HBS access for anything
398
+ * but `{{#each}}` should also be refactored.
399
+ *
400
+ * Recommended approaches include using the addon `ember-promise-helpers`, using
401
+ * Ember's `resource` pattern (including potentially the addon `ember-data-resources`),
402
+ * resolving the value in routes/provider components, or using the references API.
403
+ *
404
+ * An example of using the [hasMany](https://api.emberjs.com/ember-data/4.11/classes/Model/methods/hasMany?anchor=hasMany) [reference API](https://api.emberjs.com/ember-data/release/classes/HasManyReference):
405
+ *
406
+ * ```ts
407
+ * // get the synchronous "ManyArray" value for the asynchronous "friends" relationship.
408
+ * // note, this will return `null` if the relationship has not been loaded yet
409
+ * const value = person.hasMany('friends').value();
410
+ *
411
+ * // to get just the list of related IDs
412
+ * const ids = person.hasMany('friends').ids();
413
+ * ```
414
+ *
415
+ * References participate in autotracking and getters/cached getters etc. which consume them
416
+ * will recompute if the value changes.
417
+ *
418
+ * @property DEPRECATE_PROMISE_MANY_ARRAY_BEHAVIORS
419
+ * @since 4.7
420
+ * @until 5.0
421
+ * @public
422
+ */
423
+ const DEPRECATE_PROMISE_MANY_ARRAY_BEHAVIORS = '4.7';
424
+
425
+ /**
426
+ * **id: ember-data:deprecate-non-strict-relationships**
427
+ *
428
+ * Deprecates when belongsTo and hasMany relationships are defined
429
+ * without specifying the inverse record's type.
430
+ *
431
+ * Instead of
432
+ *
433
+ * ```ts
434
+ * class Company extends Model {
435
+ * @hasMany() employees;
436
+ * }
437
+ * class Employee extends Model {
438
+ * @belongsTo() company;
439
+ * }
440
+ * ```
441
+ *
442
+ * Use
443
+ *
444
+ * ```ts
445
+ * class Company extends Model {
446
+ * @hasMany('employee', { async: true, inverse: 'company' }) employees;
447
+ * }
448
+ *
449
+ * class Employee extends Model {
450
+ * @belongsTo('company', { async: true, inverse: 'employees' }) company;
451
+ * }
452
+ * ```
453
+ *
454
+ * @property DEPRECATE_RELATIONSHIPS_WITHOUT_TYPE
455
+ * @since 4.7
456
+ * @until 5.0
457
+ * @public
458
+ */
459
+ const DEPRECATE_RELATIONSHIPS_WITHOUT_TYPE = '4.7';
460
+
461
+ /**
462
+ * **id: ember-data:deprecate-non-strict-relationships**
463
+ *
464
+ * Deprecates when belongsTo and hasMany relationships are defined
465
+ * without specifying whether the relationship is asynchronous.
466
+ *
467
+ * The current behavior is that relationships which do not define
468
+ * this setting are aschronous (`{ async: true }`).
469
+ *
470
+ * Instead of
471
+ *
472
+ * ```ts
473
+ * class Company extends Model {
474
+ * @hasMany('employee') employees;
475
+ * }
476
+ * class Employee extends Model {
477
+ * @belongsTo('company') company;
478
+ * }
479
+ * ```
480
+ *
481
+ * Use
482
+ *
483
+ * ```ts
484
+ * class Company extends Model {
485
+ * @hasMany('employee', { async: true, inverse: 'company' }) employees;
486
+ * }
487
+ *
488
+ * class Employee extends Model {
489
+ * @belongsTo('company', { async: true, inverse: 'employees' }) company;
490
+ * }
491
+ * ```
492
+ *
493
+ * @property DEPRECATE_RELATIONSHIPS_WITHOUT_ASYNC
494
+ * @since 4.7
495
+ * @until 5.0
496
+ * @public
497
+ */
498
+ const DEPRECATE_RELATIONSHIPS_WITHOUT_ASYNC = '4.7';
499
+
500
+ /**
501
+ * **id: ember-data:deprecate-non-strict-relationships**
502
+ *
503
+ * Deprecates when belongsTo and hasMany relationships are defined
504
+ * without specifying the inverse field on the related type.
505
+ *
506
+ * The current behavior is that relationships which do not define
507
+ * this setting have their inverse determined at runtime, which is
508
+ * potentially non-deterministic when mixins and polymorphism are involved.
509
+ *
510
+ * If an inverse relationship exists and you wish changes on one side to
511
+ * reflect onto the other side, use the inverse key. If you wish to not have
512
+ * changes reflected or no inverse relationship exists, specify `inverse: null`.
513
+ *
514
+ * Instead of
515
+ *
516
+ * ```ts
517
+ * class Company extends Model {
518
+ * @hasMany('employee') employees;
519
+ * }
520
+ * class Employee extends Model {
521
+ * @belongsTo('company') company;
522
+ * }
523
+ * ```
524
+ *
525
+ * Use
526
+ *
527
+ * ```ts
528
+ * class Company extends Model {
529
+ * @hasMany('employee', { async: true, inverse: 'company' }) employees;
530
+ * }
531
+ *
532
+ * class Employee extends Model {
533
+ * @belongsTo('company', { async: true, inverse: 'employees' }) company;
534
+ * }
535
+ * ```
536
+ *
537
+ * Instead of
538
+ *
539
+ * ```ts
540
+ * class Company extends Model {
541
+ * @hasMany('employee') employees;
542
+ * }
543
+ * class Employee extends Model {
544
+ * @attr name;
545
+ * }
546
+ * ```
547
+ *
548
+ * Use
549
+ *
550
+ * ```ts
551
+ * class Company extends Model {
552
+ * @hasMany('employee', { async: true, inverse: null }) employees;
553
+ * }
554
+ *
555
+ * class Employee extends Model {
556
+ * @attr name;
557
+ * }
558
+ * ```
559
+ *
560
+ * @property DEPRECATE_RELATIONSHIPS_WITHOUT_INVERSE
561
+ * @since 4.7
562
+ * @until 5.0
563
+ * @public
564
+ */
565
+ const DEPRECATE_RELATIONSHIPS_WITHOUT_INVERSE = '4.7';
566
+
567
+ /**
568
+ * **id: ember-data:no-a-with-array-like**
569
+ *
570
+ * Deprecates when calling `A()` on an EmberData ArrayLike class
571
+ * is detected. This deprecation may not always trigger due to complexities
572
+ * in ember-source versions and the use (or disabling) of prototype extensions.
573
+ *
574
+ * To fix, just use the native array methods instead of the EmberArray methods
575
+ * and refrain from wrapping the array in `A()`.
576
+ *
577
+ * Note that some computed property macros may themselves utilize `A()`, in which
578
+ * scenario the computed properties need to be upgraded to octane syntax.
579
+ *
580
+ * For instance, instead of:
581
+ *
582
+ * ```ts
583
+ * class extends Component {
584
+ * @filterBy('items', 'isComplete') completedItems;
585
+ * }
586
+ * ```
587
+ *
588
+ * Use the following:
589
+ *
590
+ * ```ts
591
+ * class extends Component {
592
+ * get completedItems() {
593
+ * return this.items.filter(item => item.isComplete);
594
+ * }
595
+ * }
596
+ * ```
597
+ *
598
+ * @property DEPRECATE_A_USAGE
599
+ * @since 4.7
600
+ * @until 5.0
601
+ * @public
602
+ */
603
+ const DEPRECATE_A_USAGE = '4.7';
604
+
605
+ /**
606
+ * **id: ember-data:deprecate-promise-proxies**
607
+ *
608
+ * Additional Reading: [RFC#846 Deprecate Proxies](https://rfcs.emberjs.com/id/0846-ember-data-deprecate-proxies)
609
+ *
610
+ * Deprecates using the proxy object/proxy array capabilities of values returned from
611
+ *
612
+ * - `store.findRecord`
613
+ * - `store.findAll`
614
+ * - `store.query`
615
+ * - `store.queryRecord`
616
+ * - `record.save`
617
+ * - `recordArray.save`
618
+ * - `recordArray.update`
619
+ *
620
+ * These methods will now return a native Promise that resolves with the value.
621
+ *
622
+ * Note that this does not deprecate the proxy behaviors of `PromiseBelongsTo`. See RFC for reasoning.
623
+ * The opportunity should still be taken if available to stop using these proxy behaviors; however, this class
624
+ * will remain until `import Model from '@ember-data-mirror/model';` is deprecated more broadly.
625
+ *
626
+ * @property DEPRECATE_PROMISE_PROXIES
627
+ * @since 4.7
628
+ * @until 5.0
629
+ * @public
630
+ */
631
+ const DEPRECATE_PROMISE_PROXIES = '4.7';
632
+
633
+ /**
634
+ * **id: ember-data:deprecate-array-like**
635
+ *
636
+ * Deprecates Ember "Array-like" methods on RecordArray and ManyArray.
637
+ *
638
+ * These are the arrays returned respectively by `store.peekAll()`, `store.findAll()`and
639
+ * hasMany relationships on instance of Model or `record.hasMany('relationshipName').value()`.
640
+ *
641
+ * The appropriate refactor is to treat these arrays as native arrays and to use native array methods.
642
+ *
643
+ * For instance, instead of:
644
+ *
645
+ * ```ts
646
+ * users.firstObject;
647
+ * ```
648
+ *
649
+ * Use:
650
+ *
651
+ * ```ts
652
+ * users[0];
653
+ * // or
654
+ * users.at(0);
655
+ * ```
656
+ *
657
+ * @property DEPRECATE_ARRAY_LIKE
658
+ * @since 4.7
659
+ * @until 5.0
660
+ * @public
661
+ */
662
+ const DEPRECATE_ARRAY_LIKE = '4.7';
663
+
664
+ /**
665
+ * **id: <none yet assigned>**
666
+ *
667
+ * This is a planned deprecation which will trigger when observer or computed
668
+ * chains are used to watch for changes on any EmberData RecordArray, ManyArray
669
+ * or PromiseManyArray.
670
+ *
671
+ * Support for these chains is currently guarded by the inactive deprecation flag
672
+ * listed here.
673
+ *
674
+ * @property DEPRECATE_COMPUTED_CHAINS
675
+ * @since 5.0
676
+ * @until 6.0
677
+ * @public
678
+ */
679
+ const DEPRECATE_COMPUTED_CHAINS = '5.0';
680
+
681
+ /**
682
+ * **id: ember-data:non-explicit-relationships**
683
+ *
684
+ * Deprecates when polymorphic relationships are detected via inheritance or mixins
685
+ * and no polymorphic relationship configuration has been setup.
686
+ *
687
+ * For further reading please review [RFC#793](https://rfcs.emberjs.com/id/0793-polymporphic-relations-without-inheritance)
688
+ * which introduced support for explicit relationship polymorphism without
689
+ * mixins or inheritance.
690
+ *
691
+ * You may still use mixins and inheritance to setup your polymorphism; however, the class
692
+ * structure is no longer what drives the design. Instead polymorphism is "traits" based or "structural":
693
+ * so long as each model which can satisfy the polymorphic relationship defines the inverse in the same
694
+ * way they work.
695
+ *
696
+ * Notably: `inverse: null` relationships can receive any type as a record with no additional configuration
697
+ * at all.
698
+ *
699
+ * Example Polymorphic Relationship Configuration
700
+ *
701
+ * ```ts
702
+ * // polymorphic relationship
703
+ * class Tag extends Model {
704
+ * @hasMany("taggable", { async: false, polymorphic: true, inverse: "tags" }) tagged;
705
+ * }
706
+ *
707
+ * // an inverse concrete relationship (e.g. satisfies "taggable")
708
+ * class Post extends Model {
709
+ * @hasMany("tag", { async: false, inverse: "tagged", as: "taggable" }) tags;
710
+ * }
711
+ * ```
712
+ *
713
+ * @property DEPRECATE_NON_EXPLICIT_POLYMORPHISM
714
+ * @since 4.7
715
+ * @until 5.0
716
+ * @public
717
+ */
718
+ const DEPRECATE_NON_EXPLICIT_POLYMORPHISM = '4.7';
719
+
720
+ /**
721
+ * **id: ember-data:deprecate-many-array-duplicates**
722
+ *
723
+ * When the flag is `true` (default), adding duplicate records to a `ManyArray`
724
+ * is deprecated in non-production environments. In production environments,
725
+ * duplicate records added to a `ManyArray` will be deduped and no error will
726
+ * be thrown.
727
+ *
728
+ * When the flag is `false`, an error will be thrown when duplicates are added.
729
+ *
730
+ * @property DEPRECATE_MANY_ARRAY_DUPLICATES
731
+ * @since 5.3
732
+ * @until 6.0
733
+ * @public
734
+ */
735
+ const DEPRECATE_MANY_ARRAY_DUPLICATES = '4.12'; // '5.3';
736
+
122
737
  /**
123
738
  * **id: ember-data:deprecate-non-strict-types**
124
739
  *
@@ -177,42 +792,6 @@ const DEPRECATE_NON_STRICT_TYPES = '5.3';
177
792
  */
178
793
  const DEPRECATE_NON_STRICT_ID = '5.3';
179
794
 
180
- /**
181
- * **id: <none yet assigned>**
182
- *
183
- * This is a planned deprecation which will trigger when observer or computed
184
- * chains are used to watch for changes on any EmberData LiveArray, CollectionRecordArray,
185
- * ManyArray or PromiseManyArray.
186
- *
187
- * Support for these chains is currently guarded by the deprecation flag
188
- * listed here, enabling removal of the behavior if desired.
189
- *
190
- * @property DEPRECATE_COMPUTED_CHAINS
191
- * @since 5.0
192
- * @until 6.0
193
- * @public
194
- */
195
- const DEPRECATE_COMPUTED_CHAINS = '5.0';
196
-
197
- /**
198
- * **id: ember-data:deprecate-legacy-imports**
199
- *
200
- * Deprecates when importing from `ember-data/*` instead of `@ember-data/*`
201
- * in order to prepare for the eventual removal of the legacy `ember-data/*`
202
- *
203
- * All imports from `ember-data/*` should be updated to `@ember-data/*`
204
- * except for `ember-data/store`. When you are using `ember-data` (as opposed to
205
- * installing the indivudal packages) you should import from `ember-data/store`
206
- * instead of `@ember-data-mirror/store` in order to receive the appropriate configuration
207
- * of defaults.
208
- *
209
- * @property DEPRECATE_LEGACY_IMPORTS
210
- * @since 5.3
211
- * @until 6.0
212
- * @public
213
- */
214
- const DEPRECATE_LEGACY_IMPORTS = '5.3';
215
-
216
795
  /**
217
796
  * **id: ember-data:deprecate-non-unique-collection-payloads**
218
797
  *
@@ -403,23 +982,6 @@ const DEPRECATE_NON_UNIQUE_PAYLOADS = '5.3';
403
982
  */
404
983
  const DEPRECATE_RELATIONSHIP_REMOTE_UPDATE_CLEARING_LOCAL_STATE = '5.3';
405
984
 
406
- /**
407
- * **id: ember-data:deprecate-many-array-duplicates**
408
- *
409
- * When the flag is `true` (default), adding duplicate records to a `ManyArray`
410
- * is deprecated in non-production environments. In production environments,
411
- * duplicate records added to a `ManyArray` will be deduped and no error will
412
- * be thrown.
413
- *
414
- * When the flag is `false`, an error will be thrown when duplicates are added.
415
- *
416
- * @property DEPRECATE_MANY_ARRAY_DUPLICATES
417
- * @since 5.3
418
- * @until 6.0
419
- * @public
420
- */
421
- const DEPRECATE_MANY_ARRAY_DUPLICATES = '5.3';
422
-
423
985
  /**
424
986
  * **id: ember-data:deprecate-store-extends-ember-object**
425
987
  *
@@ -491,44 +1053,90 @@ const ENABLE_LEGACY_SCHEMA_SERVICE = '5.4';
491
1053
  */
492
1054
  const DEPRECATE_EMBER_INFLECTOR = '5.3';
493
1055
 
1056
+ /**
1057
+ * This is a special flag that can be used to opt-in early to receiving deprecations introduced in 5.x
1058
+ * which have had their infra backported to 4.x versions of EmberData.
1059
+ *
1060
+ * When this flag is not present or set to `true`, the deprecations from the 5.x branch
1061
+ * will not print their messages and the deprecation cannot be resolved.
1062
+ *
1063
+ * When this flag is present and set to `false`, the deprecations from the 5.x branch will
1064
+ * print and can be resolved.
1065
+ *
1066
+ * @property DISABLE_6X_DEPRECATIONS
1067
+ * @since 4.13
1068
+ * @until 5.0
1069
+ * @public
1070
+ */
1071
+ const DISABLE_6X_DEPRECATIONS = '6.0';
1072
+
494
1073
  const CURRENT_DEPRECATIONS = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProperty({
495
1074
  __proto__: null,
1075
+ DEPRECATE_ARRAY_LIKE,
1076
+ DEPRECATE_A_USAGE,
496
1077
  DEPRECATE_CATCH_ALL,
497
1078
  DEPRECATE_COMPUTED_CHAINS,
1079
+ DEPRECATE_EARLY_STATIC,
498
1080
  DEPRECATE_EMBER_INFLECTOR,
499
- DEPRECATE_LEGACY_IMPORTS,
1081
+ DEPRECATE_HAS_RECORD,
1082
+ DEPRECATE_HELPERS,
1083
+ DEPRECATE_JSON_API_FALLBACK,
500
1084
  DEPRECATE_MANY_ARRAY_DUPLICATES,
1085
+ DEPRECATE_MODEL_REOPEN,
1086
+ DEPRECATE_NON_EXPLICIT_POLYMORPHISM,
501
1087
  DEPRECATE_NON_STRICT_ID,
502
1088
  DEPRECATE_NON_STRICT_TYPES,
503
1089
  DEPRECATE_NON_UNIQUE_PAYLOADS,
1090
+ DEPRECATE_PROMISE_MANY_ARRAY_BEHAVIORS,
1091
+ DEPRECATE_PROMISE_PROXIES,
1092
+ DEPRECATE_RELATIONSHIPS_WITHOUT_ASYNC,
1093
+ DEPRECATE_RELATIONSHIPS_WITHOUT_INVERSE,
1094
+ DEPRECATE_RELATIONSHIPS_WITHOUT_TYPE,
504
1095
  DEPRECATE_RELATIONSHIP_REMOTE_UPDATE_CLEARING_LOCAL_STATE,
1096
+ DEPRECATE_RSVP_PROMISE,
1097
+ DEPRECATE_SAVE_PROMISE_ACCESS,
1098
+ DEPRECATE_SNAPSHOT_MODEL_CLASS_ACCESS,
505
1099
  DEPRECATE_STORE_EXTENDS_EMBER_OBJECT,
1100
+ DEPRECATE_STORE_FIND,
1101
+ DEPRECATE_STRING_ARG_SCHEMAS,
1102
+ DISABLE_6X_DEPRECATIONS,
506
1103
  ENABLE_LEGACY_SCHEMA_SERVICE
507
1104
  }, Symbol.toStringTag, { value: 'Module' }));
508
1105
 
509
1106
  function deprecationIsResolved(deprecatedSince, compatVersion) {
510
1107
  return semver.lte(semver.minVersion(deprecatedSince), semver.minVersion(compatVersion));
511
1108
  }
512
- function getDeprecations(compatVersion) {
1109
+ const NextMajorVersion = '5.';
1110
+ function deprecationIsNextMajorCycle(deprecatedSince) {
1111
+ return deprecatedSince.startsWith(NextMajorVersion);
1112
+ }
1113
+ function getDeprecations(compatVersion, deprecations) {
513
1114
  const flags = {};
514
1115
  const keys = Object.keys(CURRENT_DEPRECATIONS);
1116
+ const DISABLE_6X_DEPRECATIONS = deprecations?.DISABLE_6X_DEPRECATIONS ?? true;
515
1117
  keys.forEach(flag => {
516
1118
  const deprecatedSince = CURRENT_DEPRECATIONS[flag];
1119
+ const isDeactivatedDeprecationNotice = DISABLE_6X_DEPRECATIONS && deprecationIsNextMajorCycle(deprecatedSince);
517
1120
  let flagState = true; // default to no code-stripping
518
1121
 
519
- // if we are told we are compatible with a version
520
- // we check if we can strip this flag
521
- if (compatVersion) {
522
- const isResolved = deprecationIsResolved(deprecatedSince, compatVersion);
523
- // if we've resolved, we strip (by setting the flag to false)
524
- /*
1122
+ if (!isDeactivatedDeprecationNotice) {
1123
+ // if we have a specific flag setting, use it
1124
+ if (typeof deprecations?.[flag] === 'boolean') {
1125
+ flagState = deprecations?.[flag];
1126
+ } else if (compatVersion) {
1127
+ // if we are told we are compatible with a version
1128
+ // we check if we can strip this flag
1129
+ const isResolved = deprecationIsResolved(deprecatedSince, compatVersion);
1130
+ // if we've resolved, we strip (by setting the flag to false)
1131
+ /*
525
1132
  if (DEPRECATED_FEATURE) {
526
1133
  // deprecated code path
527
1134
  } else {
528
1135
  // if needed a non-deprecated code path
529
1136
  }
530
- */
531
- flagState = !isResolved;
1137
+ */
1138
+ flagState = !isResolved;
1139
+ }
532
1140
  }
533
1141
 
534
1142
  // console.log(`${flag}=${flagState} (${deprecatedSince} <= ${compatVersion})`);
@@ -629,7 +1237,7 @@ function setConfig(context, appRoot, config) {
629
1237
 
630
1238
  const debugOptions = Object.assign({}, LOGGING, config.debug);
631
1239
  const env = getEnv();
632
- const DEPRECATIONS = getDeprecations(config.compatWith || null);
1240
+ const DEPRECATIONS = getDeprecations(config.compatWith || null, config.deprecations);
633
1241
  const FEATURES = getFeatures(env.PRODUCTION);
634
1242
  const includeDataAdapterInProduction = typeof config.includeDataAdapterInProduction === 'boolean' ? config.includeDataAdapterInProduction : true;
635
1243
  const includeDataAdapter = env.PRODUCTION ? includeDataAdapterInProduction : true;