data
data copied to clipboard
ts: registries
Brings the registry concept from @types/ember-data into our own types, in the process surfacing a number of rough edges that make this approach unwieldy.
Specific issues include:
- the lack of anything in the registries leads to accidental narrowing internally that we then have to work around (I found a few not-so-hard workarounds, but they aren't great).
- registries can only be populated from module-scope declarations
- registry declarations cannot overwrite each-other
This has the effect of making registries something our tests can't use effectively, which also means they are something that addons for ember-data cannot use effectively. We can get around this with extensive casting and by adding keys to the registries in module-scope that lack any real value (we just set them to null
), but as more of the library becomes typed and as we begin using type info from the value portion of the ModelRegistry these workarounds will become more and more onerous.
In addition, today @types/ember-data does have a concept of a registry for shapes of data in the cache, which may differ from the shape handed to the UI. The pattern of key: keysof User
for validating that key maps to an attribute or relationship on the model wouldn't be correct for us to use for cache APIs, though most existing model APIs could continue to use that pattern. That said, addons like ember-m3 that allow complex attributes may choose to provide a complex key path (a path with dot notation) for accessing a value deeper in. This pattern would not work for such a case, and so design work in that area would be needed.
This catches us between a rock and a hard place. If we do the design work for registry values, and land registries as part of our library types then our consumers will have amazing ergonomics while we will suffer. If instead we decide against registries, then our tests won't suffer but our consumers will be forced to extensively cast values or work with APIs that lack the type safety they could have had.
A middle-ground option is to publish consumer types that are wholly divorced from our library types (effectively the @types/* pattern but published from our own repo). These types could-never be utilized by our library or test code directly, because doing so would force that code onto the registry pattern (since we can't type something as string
when it is implementing something that is supposed to be typed as keyof ModelRegistry
for instance). The obvious downside to this is that any changes to library code require a corresponding change to the published types that we must carefully validate. Out-of-sync or inadequate types could become a common maintenance headache.
Asset Size Report for e599ea9d19e8154daf29c8c98b9c90163455d847
IE11 Builds
EmberData increased by -8.0 B (+39.0 B compressed) which is within the allowed tolerance of 75 bytes uncompressed
Warnings
⚠️ The uncompressed size of the package @ember-data/model has increased by +4.0 B. ⚠️ The uncompressed size of the package @ember-data/adapter has increased by +25.0 B.
Changeset
EmberData +198.05 KB +8.0 B (+40.82 KB +39.0 B compressed)
@ember-data/store +81.49 KB -21.0 B (+16.8 KB -102.38 B compressed)
@ember-data/store/-private +80.58 KB -21.0 B (+16.61 KB -102.38 B compressed)
@ember-data/model +32.11 KB +4.0 B (+6.62 KB +19.5 B compressed)
@ember-data/model/-private +31.64 KB +4.0 B (+6.52 KB +19.5 B compressed)
@ember-data/adapter +17.94 KB +25.0 B (+3.7 KB +121.88 B compressed)
@ember-data/adapter/-private +3.86 KB +25.0 B (+815.52 B +121.88 B compressed)
Full Asset Analysis (IE11)
Asset Size Report
=================
Library: EmberData
┌────────────┬─────────────┐
│ (index) │ Values │
├────────────┼─────────────┤
│ bytes │ '198.05 KB' │
│ compressed │ '40.82 KB' │
│ packages │ 8 │
│ modules │ 44 │
└────────────┴─────────────┘
Package: @ember-data/store
┌──────────────┬────────────┐
│ (index) │ Values │
├──────────────┼────────────┤
│ bytes │ '81.49 KB' │
│ compressed │ '16.80 KB' │
│ % Of Library │ '41.1' │
└──────────────┴────────────┘
Module | Bytes | Compressed | % of Package | % Of Library
-----------------------------------------------------------------------------------------------------
@ember-data/store/-private | 80.58 KB | 16.61 KB | 98.9 | 40.7
@ember-data/store/index | 936.00 B | 192.90 B | 1.1 | 0.5
Package: @ember-data/model
┌──────────────┬────────────┐
│ (index) │ Values │
├──────────────┼────────────┤
│ bytes │ '32.11 KB' │
│ compressed │ '6.62 KB' │
│ % Of Library │ '16.2' │
└──────────────┴────────────┘
Module | Bytes | Compressed | % of Package | % Of Library
-----------------------------------------------------------------------------------------------------
@ember-data/model/-private | 31.64 KB | 6.52 KB | 98.5 | 16.0
@ember-data/model/index | 486.00 B | 100.16 B | 1.5 | 0.2
Package: @ember-data/record-data
┌──────────────┬────────────┐
│ (index) │ Values │
├──────────────┼────────────┤
│ bytes │ '25.74 KB' │
│ compressed │ '5.31 KB' │
│ % Of Library │ '13.0' │
└──────────────┴────────────┘
Module | Bytes | Compressed | % of Package | % Of Library
-----------------------------------------------------------------------------------------------------
@ember-data/record-data/-private | 25.74 KB | 5.31 KB | 100.0 | 13.0
Package: @ember-data/serializer
┌──────────────┬────────────┐
│ (index) │ Values │
├──────────────┼────────────┤
│ bytes │ '21.13 KB' │
│ compressed │ '4.35 KB' │
│ % Of Library │ '10.7' │
└──────────────┴────────────┘
Module | Bytes | Compressed | % of Package | % Of Library
-----------------------------------------------------------------------------------------------------
@ember-data/serializer/json | 7.84 KB | 1.62 KB | 37.1 | 4.0
@ember-data/serializer/-private | 5.81 KB | 1.20 KB | 27.5 | 2.9
@ember-data/serializer/json-api | 3.96 KB | 835.31 B | 18.7 | 2.0
@ember-data/serializer/rest | 3.04 KB | 642.61 B | 14.4 | 1.5
@ember-data/serializer/index | 273.00 B | 56.26 B | 1.3 | 0.1
@ember-data/serializer/transform | 215.00 B | 44.31 B | 1.0 | 0.1
Package: @ember-data/adapter
┌──────────────┬────────────┐
│ (index) │ Values │
├──────────────┼────────────┤
│ bytes │ '17.94 KB' │
│ compressed │ '3.70 KB' │
│ % Of Library │ '9.1' │
└──────────────┴────────────┘
Module | Bytes | Compressed | % of Package | % Of Library
-----------------------------------------------------------------------------------------------------
@ember-data/adapter/rest | 9.22 KB | 1.90 KB | 51.4 | 4.7
@ember-data/adapter/-private | 3.86 KB | 815.52 B | 21.5 | 2.0
@ember-data/adapter/error | 1.98 KB | 417.14 B | 11.0 | 1.0
@ember-data/adapter/index | 1.51 KB | 318.83 B | 8.4 | 0.8
@ember-data/adapter/json-api | 1.37 KB | 289.15 B | 7.6 | 0.7
Package: ember-data
┌──────────────┬───────────┐
│ (index) │ Values │
├──────────────┼───────────┤
│ bytes │ '9.49 KB' │
│ compressed │ '1.96 KB' │
│ % Of Library │ '4.8' │
└──────────────┴───────────┘
Module | Bytes | Compressed | % of Package | % Of Library
-----------------------------------------------------------------------------------------------------
ember-data/index | 2.42 KB | 509.88 B | 25.5 | 1.2
ember-data/-private | 2.12 KB | 447.64 B | 22.4 | 1.1
ember-data/adapters/errors | 1.19 KB | 250.82 B | 12.5 | 0.6
ember-data/setup-container | 520.00 B | 107.17 B | 5.4 | 0.3
ember-data/relationships | 318.00 B | 65.53 B | 3.3 | 0.2
ember-data/serializers/embedded-records-mixin | 274.00 B | 56.47 B | 2.8 | 0.1
ember-data/serializers/json-api | 251.00 B | 51.73 B | 2.6 | 0.1
ember-data/adapters/json-api | 245.00 B | 50.49 B | 2.5 | 0.1
ember-data/serializers/json | 243.00 B | 50.08 B | 2.5 | 0.1
ember-data/serializers/rest | 243.00 B | 50.08 B | 2.5 | 0.1
ember-data/transform | 241.00 B | 49.66 B | 2.5 | 0.1
ember-data/adapters/rest | 237.00 B | 48.84 B | 2.4 | 0.1
ember-data/serializer | 232.00 B | 47.81 B | 2.4 | 0.1
ember-data/adapter | 226.00 B | 46.57 B | 2.3 | 0.1
ember-data/model | 222.00 B | 45.75 B | 2.3 | 0.1
ember-data/store | 222.00 B | 45.75 B | 2.3 | 0.1
ember-data/attr | 218.00 B | 44.92 B | 2.2 | 0.1
ember-data/version | 162.00 B | 33.38 B | 1.7 | 0.1
Package: ember-inflector
┌──────────────┬───────────┐
│ (index) │ Values │
├──────────────┼───────────┤
│ bytes │ '7.07 KB' │
│ compressed │ '1.46 KB' │
│ % Of Library │ '3.6' │
└──────────────┴───────────┘
Module | Bytes | Compressed | % of Package | % Of Library
-----------------------------------------------------------------------------------------------------
ember-inflector/lib/system/inflector | 3.11 KB | 656.21 B | 44.0 | 1.6
ember-inflector/lib/system/inflections | 1.59 KB | 335.32 B | 22.5 | 0.8
ember-inflector/lib/helpers/pluralize | 506.00 B | 104.28 B | 7.0 | 0.2
ember-inflector/index | 473.00 B | 97.48 B | 6.5 | 0.2
ember-inflector/lib/system | 471.00 B | 97.07 B | 6.5 | 0.2
ember-inflector/lib/utils/make-helper | 352.00 B | 72.54 B | 4.9 | 0.2
ember-inflector/lib/system/string | 332.00 B | 68.42 B | 4.6 | 0.2
ember-inflector/lib/helpers/singularize | 296.00 B | 61.00 B | 4.1 | 0.1
Package: @ember-data/debug
┌──────────────┬────────────┐
│ (index) │ Values │
├──────────────┼────────────┤
│ bytes │ '3.07 KB' │
│ compressed │ '647.55 B' │
│ % Of Library │ '1.5' │
└──────────────┴────────────┘
Module | Bytes | Compressed | % of Package | % Of Library
-----------------------------------------------------------------------------------------------------
@ember-data/debug/index | 2.58 KB | 544.50 B | 84.1 | 1.3
@ember-data/debug/setup | 500.00 B | 103.04 B | 15.9 | 0.2
Modern Builds
EmberData increased by -8.0 B (+43.0 B compressed) which is within the allowed tolerance of 75 bytes uncompressed
Warnings
⚠️ The uncompressed size of the package @ember-data/model has increased by +4.0 B. ⚠️ The uncompressed size of the package @ember-data/adapter has increased by +25.0 B.
Changeset
EmberData +178.9 KB +8.0 B (+39.01 KB +43.0 B compressed)
@ember-data/store +71.92 KB -21.0 B (+15.68 KB -112.88 B compressed)
@ember-data/store/-private +71.01 KB -21.0 B (+15.49 KB -112.88 B compressed)
@ember-data/model +28.56 KB +4.0 B (+6.23 KB +21.5 B compressed)
@ember-data/model/-private +28.09 KB +4.0 B (+6.13 KB +21.5 B compressed)
@ember-data/adapter +16.0 KB +25.0 B (+3.49 KB +134.38 B compressed)
@ember-data/adapter/-private +3.8 KB +25.0 B (+847.64 B +134.38 B compressed)
Full Asset Analysis (Modern)
Asset Size Report
=================
Library: EmberData
┌────────────┬─────────────┐
│ (index) │ Values │
├────────────┼─────────────┤
│ bytes │ '178.90 KB' │
│ compressed │ '39.01 KB' │
│ packages │ 8 │
│ modules │ 44 │
└────────────┴─────────────┘
Package: @ember-data/store
┌──────────────┬────────────┐
│ (index) │ Values │
├──────────────┼────────────┤
│ bytes │ '71.92 KB' │
│ compressed │ '15.68 KB' │
│ % Of Library │ '40.2' │
└──────────────┴────────────┘
Module | Bytes | Compressed | % of Package | % Of Library
-----------------------------------------------------------------------------------------------------
@ember-data/store/-private | 71.01 KB | 15.49 KB | 98.7 | 39.7
@ember-data/store/index | 936.00 B | 204.11 B | 1.3 | 0.5
Package: @ember-data/model
┌──────────────┬────────────┐
│ (index) │ Values │
├──────────────┼────────────┤
│ bytes │ '28.56 KB' │
│ compressed │ '6.23 KB' │
│ % Of Library │ '16.0' │
└──────────────┴────────────┘
Module | Bytes | Compressed | % of Package | % Of Library
-----------------------------------------------------------------------------------------------------
@ember-data/model/-private | 28.09 KB | 6.13 KB | 98.3 | 15.7
@ember-data/model/index | 486.00 B | 105.98 B | 1.7 | 0.3
Package: @ember-data/record-data
┌──────────────┬────────────┐
│ (index) │ Values │
├──────────────┼────────────┤
│ bytes │ '23.77 KB' │
│ compressed │ '5.18 KB' │
│ % Of Library │ '13.3' │
└──────────────┴────────────┘
Module | Bytes | Compressed | % of Package | % Of Library
-----------------------------------------------------------------------------------------------------
@ember-data/record-data/-private | 23.77 KB | 5.18 KB | 100.0 | 13.3
Package: @ember-data/serializer
┌──────────────┬────────────┐
│ (index) │ Values │
├──────────────┼────────────┤
│ bytes │ '19.65 KB' │
│ compressed │ '4.29 KB' │
│ % Of Library │ '11.0' │
└──────────────┴────────────┘
Module | Bytes | Compressed | % of Package | % Of Library
-----------------------------------------------------------------------------------------------------
@ember-data/serializer/json | 7.21 KB | 1.57 KB | 36.7 | 4.0
@ember-data/serializer/-private | 5.49 KB | 1.20 KB | 27.9 | 3.1
@ember-data/serializer/json-api | 3.73 KB | 832.16 B | 19.0 | 2.1
@ember-data/serializer/rest | 2.76 KB | 616.70 B | 14.1 | 1.5
@ember-data/serializer/index | 258.00 B | 56.26 B | 1.3 | 0.1
@ember-data/serializer/transform | 215.00 B | 46.88 B | 1.1 | 0.1
Package: @ember-data/adapter
┌──────────────┬────────────┐
│ (index) │ Values │
├──────────────┼────────────┤
│ bytes │ '16.00 KB' │
│ compressed │ '3.49 KB' │
│ % Of Library │ '8.9' │
└──────────────┴────────────┘
Module | Bytes | Compressed | % of Package | % Of Library
-----------------------------------------------------------------------------------------------------
@ember-data/adapter/rest | 8.12 KB | 1.77 KB | 50.8 | 4.5
@ember-data/adapter/-private | 3.80 KB | 847.64 B | 23.7 | 2.1
@ember-data/adapter/error | 1.94 KB | 433.74 B | 12.1 | 1.1
@ember-data/adapter/index | 1.10 KB | 245.33 B | 6.9 | 0.6
@ember-data/adapter/json-api | 1.04 KB | 232.90 B | 6.5 | 0.6
Package: ember-data
┌──────────────┬───────────┐
│ (index) │ Values │
├──────────────┼───────────┤
│ bytes │ '9.49 KB' │
│ compressed │ '2.07 KB' │
│ % Of Library │ '5.3' │
└──────────────┴───────────┘
Module | Bytes | Compressed | % of Package | % Of Library
-----------------------------------------------------------------------------------------------------
ember-data/index | 2.42 KB | 539.50 B | 25.5 | 1.4
ember-data/-private | 2.12 KB | 473.65 B | 22.4 | 1.2
ember-data/adapters/errors | 1.19 KB | 265.39 B | 12.5 | 0.7
ember-data/setup-container | 520.00 B | 113.39 B | 5.4 | 0.3
ember-data/relationships | 318.00 B | 69.34 B | 3.3 | 0.2
ember-data/serializers/embedded-records-mixin | 274.00 B | 59.75 B | 2.8 | 0.1
ember-data/serializers/json-api | 251.00 B | 54.73 B | 2.6 | 0.1
ember-data/adapters/json-api | 245.00 B | 53.42 B | 2.5 | 0.1
ember-data/serializers/json | 243.00 B | 52.99 B | 2.5 | 0.1
ember-data/serializers/rest | 243.00 B | 52.99 B | 2.5 | 0.1
ember-data/transform | 241.00 B | 52.55 B | 2.5 | 0.1
ember-data/adapters/rest | 237.00 B | 51.68 B | 2.4 | 0.1
ember-data/serializer | 232.00 B | 50.59 B | 2.4 | 0.1
ember-data/adapter | 226.00 B | 49.28 B | 2.3 | 0.1
ember-data/model | 222.00 B | 48.41 B | 2.3 | 0.1
ember-data/store | 222.00 B | 48.41 B | 2.3 | 0.1
ember-data/attr | 218.00 B | 47.53 B | 2.2 | 0.1
ember-data/version | 162.00 B | 35.32 B | 1.7 | 0.1
Package: ember-inflector
┌──────────────┬───────────┐
│ (index) │ Values │
├──────────────┼───────────┤
│ bytes │ '6.70 KB' │
│ compressed │ '1.46 KB' │
│ % Of Library │ '3.7' │
└──────────────┴───────────┘
Module | Bytes | Compressed | % of Package | % Of Library
-----------------------------------------------------------------------------------------------------
ember-inflector/lib/system/inflector | 2.88 KB | 643.09 B | 43.0 | 1.6
ember-inflector/lib/system/inflections | 1.59 KB | 354.80 B | 23.7 | 0.9
ember-inflector/index | 473.00 B | 103.14 B | 6.9 | 0.3
ember-inflector/lib/system | 471.00 B | 102.71 B | 6.9 | 0.3
ember-inflector/lib/helpers/pluralize | 373.00 B | 81.34 B | 5.4 | 0.2
ember-inflector/lib/utils/make-helper | 352.00 B | 76.76 B | 5.1 | 0.2
ember-inflector/lib/system/string | 318.00 B | 69.34 B | 4.6 | 0.2
ember-inflector/lib/helpers/singularize | 296.00 B | 64.54 B | 4.3 | 0.2
Package: @ember-data/debug
┌──────────────┬────────────┐
│ (index) │ Values │
├──────────────┼────────────┤
│ bytes │ '2.81 KB' │
│ compressed │ '627.17 B' │
│ % Of Library │ '1.6' │
└──────────────┴────────────┘
Module | Bytes | Compressed | % of Package | % Of Library
-----------------------------------------------------------------------------------------------------
@ember-data/debug/index | 2.32 KB | 518.35 B | 82.6 | 1.3
@ember-data/debug/setup | 499.00 B | 108.81 B | 17.4 | 0.3
Modern Builds (No Rollup)
🛑 The size of the library EmberData has increased by +143.0 B (+71.0 B compressed) which exceeds the failure threshold of 75 bytes.
Warnings
⚠️ The uncompressed size of the package @ember-data/store has increased by +114.0 B. ⚠️ The uncompressed size of the package @ember-data/model has increased by +4.0 B. ⚠️ The uncompressed size of the package @ember-data/adapter has increased by +25.0 B.
Changeset
EmberData +220.68 KB +143.0 B (+42.43 KB +71.0 B compressed)
@ember-data/store +97.83 KB +114.0 B (+18.81 KB +56.6 B compressed)
@ember-data/store/-private/system/core-store +17.25 KB -50.0 B (+3.32 KB -24.83 B compressed)
@ember-data/store/-private/system/fetch-manager +4.97 KB +28.0 B (+979.45 B +13.9 B compressed)
@ember-data/store/-private/identifiers/cache +3.97 KB -8.0 B (+782.56 B -3.97 B compressed)
@ember-data/store/-private/system/store/internal-model-factory +2.82 KB -2.0 B (+555.48 B -0.99 B compressed)
@ember-data/store/-private/system/internal-model-map +881.0 B -5.0 B (+169.39 B -2.48 B compressed)
@ember-data/store/-private/ts-interfaces/registries +151.0 B +151.0 B (+29.03 B +74.97 B compressed)
@ember-data/model +32.63 KB +4.0 B (+6.27 KB +1.99 B compressed)
@ember-data/model/-private/system/relationships/relationship-meta +1.26 KB +4.0 B (+247.45 B +1.99 B compressed)
@ember-data/adapter +18.13 KB +25.0 B (+3.49 KB +12.41 B compressed)
@ember-data/adapter/-private/utils/serialize-into-hash +372.0 B +25.0 B (+71.52 B +12.41 B compressed)
Full Asset Analysis (Modern)
Asset Size Report
=================
Library: EmberData
┌────────────┬─────────────┐
│ (index) │ Values │
├────────────┼─────────────┤
│ bytes │ '220.68 KB' │
│ compressed │ '42.43 KB' │
│ packages │ 8 │
│ modules │ 150 │
└────────────┴─────────────┘
Package: @ember-data/store
┌──────────────┬────────────┐
│ (index) │ Values │
├──────────────┼────────────┤
│ bytes │ '97.83 KB' │
│ compressed │ '18.81 KB' │
│ % Of Library │ '44.3' │
└──────────────┴────────────┘
Module | Bytes | Compressed | % of Package | % Of Library
--------------------------------------------------------------------------------------------------------------------------------------
@ember-data/store/-private/system/core-store | 17.25 KB | 3.32 KB | 17.6 | 7.8
@ember-data/store/-private/system/model/internal-model | 14.45 KB | 2.78 KB | 14.8 | 6.5
@ember-data/store/-private/system/model/states | 5.44 KB | 1.05 KB | 5.6 | 2.5
@ember-data/store/-private/system/fetch-manager | 4.97 KB | 979.45 B | 5.1 | 2.3
@ember-data/store/-private/system/store/finders | 4.57 KB | 900.62 B | 4.7 | 2.1
@ember-data/store/-private/system/record-array-manager | 4.19 KB | 824.28 B | 4.3 | 1.9
@ember-data/store/-private/identifiers/cache | 3.97 KB | 782.56 B | 4.1 | 1.8
@ember-data/store/-private/index | 3.57 KB | 702.76 B | 3.6 | 1.6
@ember-data/store/-private/system/store/record-data-store-wrapper | 3.41 KB | 670.65 B | 3.5 | 1.5
@ember-data/store/-private/system/snapshot | 3.10 KB | 611.24 B | 3.2 | 1.4
@ember-data/store/-private/system/store/internal-model-factory | 2.82 KB | 555.48 B | 2.9 | 1.3
@ember-data/store/-private/system/record-arrays/record-array | 2.28 KB | 449.15 B | 2.3 | 1.0
@ember-data/store/-private/system/ds-model-store | 1.96 KB | 386.09 B | 2.0 | 0.9
@ember-data/store/-private/system/request-cache | 1.89 KB | 371.28 B | 1.9 | 0.9
@ember-data/store/-private/system/references/has-many | 1.53 KB | 301.68 B | 1.6 | 0.7
@ember-data/store/-private/system/schema-definition-service | 1.51 KB | 297.83 B | 1.5 | 0.7
@ember-data/store/-private/system/references/belongs-to | 1.32 KB | 260.34 B | 1.4 | 0.6
@ember-data/store/-private/system/model/shim-model-class | 1.32 KB | 259.38 B | 1.3 | 0.6
@ember-data/store/-private/system/store/serializer-response | 1.14 KB | 224.57 B | 1.2 | 0.5
@ember-data/store/-private/identifiers/utils/uuid-v4 | 1.05 KB | 207.27 B | 1.1 | 0.5
@ember-data/store/-private/system/references/record | 982.00 B | 188.81 B | 1.0 | 0.4
@ember-data/store/-private/system/record-arrays/adapter-populated-record-array | 967.00 B | 185.93 B | 1.0 | 0.4
@ember-data/store/index | 936.00 B | 179.97 B | 0.9 | 0.4
@ember-data/store/-private/system/references/reference | 934.00 B | 179.58 B | 0.9 | 0.4
@ember-data/store/-private/system/internal-model-map | 881.00 B | 169.39 B | 0.9 | 0.4
@ember-data/store/-private/system/errors-utils | 798.00 B | 153.43 B | 0.8 | 0.4
@ember-data/store/-private/system/snapshot-record-array | 753.00 B | 144.78 B | 0.8 | 0.3
@ember-data/store/-private/system/record-notification-manager | 697.00 B | 134.01 B | 0.7 | 0.3
@ember-data/store/-private/utils/construct-resource | 695.00 B | 133.63 B | 0.7 | 0.3
@ember-data/store/-private/system/promise-proxies | 607.00 B | 116.71 B | 0.6 | 0.3
@ember-data/store/-private/system/references | 598.00 B | 114.98 B | 0.6 | 0.3
@ember-data/store/-private/system/store/common | 527.00 B | 101.32 B | 0.5 | 0.2
@ember-data/store/-private/system/coerce-id | 496.00 B | 95.36 B | 0.5 | 0.2
@ember-data/store/-private/system/record-arrays | 487.00 B | 93.63 B | 0.5 | 0.2
@ember-data/store/-private/system/identity-map | 450.00 B | 86.52 B | 0.4 | 0.2
@ember-data/store/-private/ts-interfaces/identifier | 400.00 B | 76.91 B | 0.4 | 0.2
@ember-data/store/-private/utils/symbol | 393.00 B | 75.56 B | 0.4 | 0.2
@ember-data/store/-private/system/record-data-for | 390.00 B | 74.98 B | 0.4 | 0.2
@ember-data/store/-private/identifiers/is-stable-identifier | 327.00 B | 62.87 B | 0.3 | 0.1
@ember-data/store/-private/ts-interfaces/fetch-manager | 316.00 B | 60.75 B | 0.3 | 0.1
@ember-data/store/-private/utils/promise-record | 290.00 B | 55.76 B | 0.3 | 0.1
@ember-data/store/-private/system/backburner | 269.00 B | 51.72 B | 0.3 | 0.1
@ember-data/store/-private/system/deprecated-evented | 257.00 B | 49.41 B | 0.3 | 0.1
@ember-data/store/-private/system/normalize-model-name | 220.00 B | 42.30 B | 0.2 | 0.1
@ember-data/store/-private/utils/is-non-empty-string | 212.00 B | 40.76 B | 0.2 | 0.1
@ember-data/store/-debug/index | 210.00 B | 40.37 B | 0.2 | 0.1
@ember-data/store/-private/ts-interfaces/minimum-serializer-interface | 169.00 B | 32.49 B | 0.2 | 0.1
@ember-data/store/-private/ts-interfaces/record-data-record-wrapper | 167.00 B | 32.11 B | 0.2 | 0.1
@ember-data/store/-private/ts-interfaces/minimum-adapter-interface | 166.00 B | 31.91 B | 0.2 | 0.1
@ember-data/store/-private/ts-interfaces/record-data-store-wrapper | 166.00 B | 31.91 B | 0.2 | 0.1
@ember-data/store/-private/ts-interfaces/schema-definition-service | 166.00 B | 31.91 B | 0.2 | 0.1
@ember-data/store/-private/ts-interfaces/record-data-json-api | 161.00 B | 30.95 B | 0.2 | 0.1
@ember-data/store/-private/ts-interfaces/ember-data-json-api | 160.00 B | 30.76 B | 0.2 | 0.1
@ember-data/store/-private/ts-interfaces/record-data-schemas | 160.00 B | 30.76 B | 0.2 | 0.1
@ember-data/store/-private/ts-interfaces/promise-proxies | 156.00 B | 29.99 B | 0.2 | 0.1
@ember-data/store/-private/ts-interfaces/record-instance | 156.00 B | 29.99 B | 0.2 | 0.1
@ember-data/store/-private/ts-interfaces/record-data | 152.00 B | 29.22 B | 0.2 | 0.1
@ember-data/store/-private/ts-interfaces/registries | 151.00 B | 29.03 B | 0.2 | 0.1
@ember-data/store/-private/ts-interfaces/ds-model | 149.00 B | 28.64 B | 0.1 | 0.1
@ember-data/store/-private/ts-interfaces/store | 146.00 B | 28.07 B | 0.1 | 0.1
@ember-data/store/-private/ts-interfaces/utils | 146.00 B | 28.07 B | 0.1 | 0.1
Package: @ember-data/model
┌──────────────┬────────────┐
│ (index) │ Values │
├──────────────┼────────────┤
│ bytes │ '32.63 KB' │
│ compressed │ '6.27 KB' │
│ % Of Library │ '14.8' │
└──────────────┴────────────┘
Module | Bytes | Compressed | % of Package | % Of Library
-------------------------------------------------------------------------------------------------------------------------
@ember-data/model/-private/model | 9.89 KB | 1.90 KB | 30.3 | 4.5
@ember-data/model/-private/record-state | 6.17 KB | 1.19 KB | 18.9 | 2.8
@ember-data/model/-private/system/promise-many-array | 3.80 KB | 748.91 B | 11.7 | 1.7
@ember-data/model/-private/system/many-array | 2.85 KB | 561.06 B | 8.7 | 1.3
@ember-data/model/-private/errors | 2.08 KB | 410.31 B | 6.4 | 0.9
@ember-data/model/-private/index | 1.42 KB | 279.95 B | 4.4 | 0.6
@ember-data/model/-private/system/relationships/relationship-meta | 1.26 KB | 247.45 B | 3.9 | 0.6
@ember-data/model/-private/attr | 857.00 B | 164.78 B | 2.6 | 0.4
@ember-data/model/-private/notify-changes | 845.00 B | 162.47 B | 2.5 | 0.4
@ember-data/model/-private/belongs-to | 687.00 B | 132.09 B | 2.1 | 0.3
@ember-data/model/-private/has-many | 648.00 B | 124.59 B | 1.9 | 0.3
@ember-data/model/index | 486.00 B | 93.44 B | 1.5 | 0.2
@ember-data/model/-private/system/promise-belongs-to | 447.00 B | 85.94 B | 1.3 | 0.2
@ember-data/model/-private/util | 442.00 B | 84.98 B | 1.3 | 0.2
@ember-data/model/-private/system/diff-array | 438.00 B | 84.21 B | 1.3 | 0.2
@ember-data/model/-private/system/model-for-mixin | 431.00 B | 82.87 B | 1.3 | 0.2
Package: @ember-data/record-data
┌──────────────┬────────────┐
│ (index) │ Values │
├──────────────┼────────────┤
│ bytes │ '30.84 KB' │
│ compressed │ '5.93 KB' │
│ % Of Library │ '14.0' │
└──────────────┴────────────┘
Module | Bytes | Compressed | % of Package | % Of Library
-------------------------------------------------------------------------------------------------------------------------------------
@ember-data/record-data/-private/record-data | 8.21 KB | 1.58 KB | 26.6 | 3.7
@ember-data/record-data/-private/graph/index | 4.86 KB | 956.76 B | 15.8 | 2.2
@ember-data/record-data/-private/graph/operations/replace-related-records | 3.14 KB | 618.16 B | 10.2 | 1.4
@ember-data/record-data/-private/graph/-edge-definition | 2.83 KB | 557.02 B | 9.2 | 1.3
@ember-data/record-data/-private/relationships/state/has-many | 2.01 KB | 395.70 B | 6.5 | 0.9
@ember-data/record-data/-private/relationships/state/belongs-to | 1.92 KB | 378.59 B | 6.2 | 0.9
@ember-data/record-data/-private/graph/operations/update-relationship | 1.50 KB | 295.91 B | 4.9 | 0.7
@ember-data/record-data/-private/graph/-utils | 1.05 KB | 206.69 B | 3.4 | 0.5
@ember-data/record-data/-private/graph/operations/replace-related-record | 1.04 KB | 204.00 B | 3.4 | 0.5
@ember-data/record-data/-private/index | 977.00 B | 187.85 B | 3.1 | 0.4
@ember-data/record-data/-private/graph/operations/add-to-related-records | 788.00 B | 151.51 B | 2.5 | 0.3
@ember-data/record-data/-private/relationships/state/implicit | 692.00 B | 133.05 B | 2.2 | 0.3
@ember-data/record-data/-private/graph/operations/remove-from-related-records | 667.00 B | 128.24 B | 2.1 | 0.3
@ember-data/record-data/-private/coerce-id | 406.00 B | 78.06 B | 1.3 | 0.2
@ember-data/record-data/-private/graph/-state | 293.00 B | 56.33 B | 0.9 | 0.1
@ember-data/record-data/-private/normalize-link | 238.00 B | 45.76 B | 0.8 | 0.1
@ember-data/record-data/-private/ts-interfaces/relationship-record-data | 171.00 B | 32.87 B | 0.5 | 0.1
@ember-data/record-data/-private/graph/-operations | 150.00 B | 28.84 B | 0.5 | 0.1
Package: @ember-data/serializer
┌──────────────┬────────────┐
│ (index) │ Values │
├──────────────┼────────────┤
│ bytes │ '22.08 KB' │
│ compressed │ '4.25 KB' │
│ % Of Library │ '10.0' │
└──────────────┴────────────┘
Module | Bytes | Compressed | % of Package | % Of Library
--------------------------------------------------------------------------------------------------------------
@ember-data/serializer/json | 7.21 KB | 1.39 KB | 32.7 | 3.3
@ember-data/serializer/-private/embedded-records-mixin | 4.39 KB | 863.89 B | 19.9 | 2.0
@ember-data/serializer/json-api | 3.73 KB | 733.72 B | 16.9 | 1.7
@ember-data/serializer/rest | 2.76 KB | 543.75 B | 12.5 | 1.3
@ember-data/serializer/-private/index | 1.18 KB | 232.65 B | 5.4 | 0.5
@ember-data/serializer/-private/transforms/date | 523.00 B | 100.56 B | 2.3 | 0.2
@ember-data/serializer/-private/transforms/boolean | 507.00 B | 97.48 B | 2.2 | 0.2
@ember-data/serializer/-private/transforms/number | 446.00 B | 85.75 B | 2.0 | 0.2
@ember-data/serializer/-private/transforms/string | 368.00 B | 70.75 B | 1.6 | 0.2
@ember-data/serializer/-private/utils | 303.00 B | 58.25 B | 1.3 | 0.1
@ember-data/serializer/index | 258.00 B | 49.60 B | 1.1 | 0.1
@ember-data/serializer/-private/transforms/transform | 257.00 B | 49.41 B | 1.1 | 0.1
@ember-data/serializer/transform | 215.00 B | 41.33 B | 1.0 | 0.1
Package: @ember-data/adapter
┌──────────────┬────────────┐
│ (index) │ Values │
├──────────────┼────────────┤
│ bytes │ '18.13 KB' │
│ compressed │ '3.49 KB' │
│ % Of Library │ '8.2' │
└──────────────┴────────────┘
Module | Bytes | Compressed | % of Package | % Of Library
-----------------------------------------------------------------------------------------------------------------
@ember-data/adapter/rest | 8.12 KB | 1.56 KB | 44.8 | 3.7
@ember-data/adapter/error | 1.94 KB | 382.43 B | 10.7 | 0.9
@ember-data/adapter/-private/build-url-mixin | 1.93 KB | 380.70 B | 10.7 | 0.9
@ember-data/adapter/index | 1.10 KB | 216.31 B | 6.1 | 0.5
@ember-data/adapter/json-api | 1.04 KB | 205.35 B | 5.8 | 0.5
@ember-data/adapter/-private/index | 1.03 KB | 203.04 B | 5.7 | 0.5
@ember-data/adapter/-private/utils/serialize-query-params | 792.00 B | 152.28 B | 4.3 | 0.4
@ember-data/adapter/-private/utils/determine-body-promise | 566.00 B | 108.82 B | 3.0 | 0.3
@ember-data/adapter/-private/utils/parse-response-headers | 480.00 B | 92.29 B | 2.6 | 0.2
@ember-data/adapter/-private/utils/fetch | 454.00 B | 87.29 B | 2.4 | 0.2
@ember-data/adapter/-private/utils/serialize-into-hash | 372.00 B | 71.52 B | 2.0 | 0.2
@ember-data/adapter/-private/utils/continue-on-reject | 222.00 B | 42.68 B | 1.2 | 0.1
@ember-data/adapter/-private/fastboot-interface | 147.00 B | 28.26 B | 0.8 | 0.1
Package: ember-data
┌──────────────┬───────────┐
│ (index) │ Values │
├──────────────┼───────────┤
│ bytes │ '9.65 KB' │
│ compressed │ '1.86 KB' │
│ % Of Library │ '4.4' │
└──────────────┴───────────┘
Module | Bytes | Compressed | % of Package | % Of Library
-----------------------------------------------------------------------------------------------------
ember-data/index | 2.42 KB | 475.68 B | 25.0 | 1.1
ember-data/-private/index | 1.93 KB | 379.55 B | 20.0 | 0.9
ember-data/adapters/errors | 1.19 KB | 233.99 B | 12.3 | 0.5
ember-data/setup-container | 520.00 B | 99.98 B | 5.3 | 0.2
ember-data/-private/core | 366.00 B | 70.37 B | 3.7 | 0.2
ember-data/relationships | 318.00 B | 61.14 B | 3.2 | 0.1
ember-data/serializers/embedded-records-mixin | 274.00 B | 52.68 B | 2.8 | 0.1
ember-data/serializers/json-api | 251.00 B | 48.26 B | 2.5 | 0.1
ember-data/adapters/json-api | 245.00 B | 47.10 B | 2.5 | 0.1
ember-data/serializers/json | 243.00 B | 46.72 B | 2.5 | 0.1
ember-data/serializers/rest | 243.00 B | 46.72 B | 2.5 | 0.1
ember-data/transform | 241.00 B | 46.33 B | 2.4 | 0.1
ember-data/adapters/rest | 237.00 B | 45.56 B | 2.4 | 0.1
ember-data/serializer | 232.00 B | 44.60 B | 2.3 | 0.1
ember-data/adapter | 226.00 B | 43.45 B | 2.3 | 0.1
ember-data/model | 222.00 B | 42.68 B | 2.2 | 0.1
ember-data/store | 222.00 B | 42.68 B | 2.2 | 0.1
ember-data/attr | 218.00 B | 41.91 B | 2.2 | 0.1
ember-data/version | 162.00 B | 31.14 B | 1.6 | 0.1
Package: ember-inflector
┌──────────────┬───────────┐
│ (index) │ Values │
├──────────────┼───────────┤
│ bytes │ '6.70 KB' │
│ compressed │ '1.29 KB' │
│ % Of Library │ '3.0' │
└──────────────┴───────────┘
Module | Bytes | Compressed | % of Package | % Of Library
-----------------------------------------------------------------------------------------------------
ember-inflector/lib/system/inflector | 2.88 KB | 567.02 B | 43.0 | 1.3
ember-inflector/lib/system/inflections | 1.59 KB | 312.83 B | 23.7 | 0.7
ember-inflector/index | 473.00 B | 90.94 B | 6.9 | 0.2
ember-inflector/lib/system | 471.00 B | 90.56 B | 6.9 | 0.2
ember-inflector/lib/helpers/pluralize | 373.00 B | 71.71 B | 5.4 | 0.2
ember-inflector/lib/utils/make-helper | 352.00 B | 67.68 B | 5.1 | 0.2
ember-inflector/lib/system/string | 318.00 B | 61.14 B | 4.6 | 0.1
ember-inflector/lib/helpers/singularize | 296.00 B | 56.91 B | 4.3 | 0.1
Package: @ember-data/debug
┌──────────────┬────────────┐
│ (index) │ Values │
├──────────────┼────────────┤
│ bytes │ '2.81 KB' │
│ compressed │ '552.98 B' │
│ % Of Library │ '1.3' │
└──────────────┴────────────┘
Module | Bytes | Compressed | % of Package | % Of Library
-----------------------------------------------------------------------------------------------------
@ember-data/debug/index | 2.32 KB | 457.03 B | 82.6 | 1.1
@ember-data/debug/setup | 499.00 B | 95.94 B | 17.4 | 0.2
Performance Report for e599ea9d19e8154daf29c8c98b9c90163455d847
Scenario - materialization: ☑️ Performance is stable
☑️ duration phase no difference [-9ms to 16ms] ☑️ Phase [navigationStart] => [start-find-all] phase no difference [-11ms to 3ms] ☑️ Phase [start-find-all] => [start-materialization] phase no difference [-3ms to 16ms] ☑️ Phase [start-materialization] => [end-materialization] phase no difference [-1ms to 5ms] ☑️ Phase [end-materialization] => [Test End] phase no difference [-1ms to 5ms]
Scenario - unload: ☑️ Performance is stable
☑️ duration phase no difference [-13ms to 9ms] ☑️ Phase [navigationStart] => [start-push-payload] phase no difference [-5ms to 9ms] ☑️ Phase [start-push-payload] => [start-unload-records] phase no difference [-10ms to 5ms] ☑️ Phase [start-unload-records] => [end-unload-records] phase no difference [-5ms to 2ms] ☑️ Phase [end-unload-records] => [Test End] phase no difference [0ms to 0ms]
Scenario - destroy: ☑️ Performance is stable
☑️ duration phase no difference [-21ms to 6ms] ☑️ Phase [navigationStart] => [start-push-payload] phase no difference [-5ms to 10ms] ☑️ Phase [start-push-payload] => [start-destroy-records] phase no difference [-17ms to 1ms] ☑️ Phase [start-destroy-records] => [end-destroy-records] phase no difference [-4ms to 2ms] ☑️ Phase [end-destroy-records] => [Test End] phase no difference [0ms to 0ms]
Scenario - add-children: ☑️ Performance is stable
☑️ duration phase no difference [-22ms to 2ms] ☑️ Phase [navigationStart] => [start-push-initial-payload] phase no difference [-14ms to 7ms] ✅ Phase [start-push-initial-payload] => [start-push-update-payload] phase estimated improvement -7ms [-11ms to -4ms] OR -1.4% [-2.05% to -0.67%] ☑️ Phase [start-push-update-payload] => [end-push-update-payload] phase no difference [-1ms to 2ms] ☑️ Phase [end-push-update-payload] => [Test End] phase no difference [-1ms to 1ms]
Scenario - unused-relationships: ☑️ Performance is stable
☑️ duration phase no difference [-17ms to 10ms] ☑️ Phase [navigationStart] => [start-push-payload] phase no difference [-8ms to 5ms] ☑️ Phase [start-push-payload] => [end-push-payload] phase no difference [-11ms to 8ms] ⚠️ Phase [end-push-payload] => [Test End] phase estimated regression +1ms [0ms to 2ms] OR +0.84% [0.13% to 1.59%]