Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG]: Consume array access to autotrack hasMany #7330

Merged
merged 1 commit into from Oct 9, 2020

Conversation

snewcomer
Copy link
Contributor

@snewcomer snewcomer commented Sep 20, 2020

close #7311 emberjs/ember.js#19101 #7328 emberjs/ember.js#19139
ref emberjs/ember.js#19105 #7281

Another related autotracking fix for errorsFor #7273

In this PR

Has Many Arrays implement the Mutable Array mixin. We need to instrument length and objectAt in order to ensure autotracking works.

To do

Follow up: convert to class based && ts file

@snewcomer snewcomer added the Bug label Sep 20, 2020
@snewcomer snewcomer self-assigned this Sep 20, 2020
@github-actions
Copy link

github-actions bot commented Sep 20, 2020

Performance Report for a92c2aa

Relationship Analysis
                        -------------

__/\\\\\\\\\\\\\____/\\\\____________/\\\\____/\\\\\\\\\_____
 _\/\\\/////////\\\_\/\\\\\\________/\\\\\\__/\\\///////\\\___
  _\/\\\_______\/\\\_\/\\\//\\\____/\\\//\\\_\///______\//\\\__
   _\/\\\\\\\\\\\\\/__\/\\\\///\\\/\\\/_\/\\\___________/\\\/___
    _\/\\\/////////____\/\\\__\///\\\/___\/\\\________/\\\//_____
     _\/\\\_____________\/\\\____\///_____\/\\\_____/\\\//________
      _\/\\\_____________\/\\\_____________\/\\\___/\\\/___________
       _\/\\\_____________\/\\\_____________\/\\\__/\\\\\\\\\\\\\\\_
        _\///______________\///______________\///__\///////////////__


                          Runtime Edition

        PM2 is a Production Process Manager for Node.js applications
                     with a built-in Load Balancer.

                Start and Daemonize any application:
                $ pm2 start app.js

                Load Balance 4 instances of api.js:
                $ pm2 start api.js -i 4

                Monitor in production:
                $ pm2 monitor

                Make pm2 auto-boot at server restart:
                $ pm2 startup

                To go further checkout:
                http://pm2.io/


                        -------------

[PM2] Spawning PM2 daemon with pm2_home=/home/runner/.pm2
[PM2] PM2 Successfully daemonized
[PM2] Starting /home/runner/work/data/data/bin/relationship-performance-tracking/src/har-remix.js in fork_mode (1 instance)
[PM2] Done.
┌─────┬────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id  │ name       │ namespace   │ version │ mode    │ pid      │ uptime │ ↺    │ status    │ cpu      │ mem      │ user     │ watching │
├─────┼────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 0   │ control    │ default     │ N/A     │ fork    │ 3197     │ 0s     │ 0    │ online    │ 0%       │ 28.2mb   │ runner   │ disabled │
└─────┴────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘
[PM2] Starting /home/runner/work/data/data/bin/relationship-performance-tracking/src/har-remix.js in fork_mode (1 instance)
[PM2] Done.
┌─────┬───────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id  │ name          │ namespace   │ version │ mode    │ pid      │ uptime │ ↺    │ status    │ cpu      │ mem      │ user     │ watching │
├─────┼───────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 0   │ control       │ default     │ N/A     │ fork    │ 3197     │ 0s     │ 0    │ online    │ 0%       │ 71.2mb   │ runner   │ disabled │
│ 1   │ experiment    │ default     │ N/A     │ fork    │ 3236     │ 0s     │ 0    │ online    │ 0%       │ 21.5mb   │ runner   │ disabled │
└─────┴───────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘

===============================================================================
Processing CHANGELOG.md CODE_OF_CONDUCT.md CONTRIBUTING.md README.md RELEASE.md bin lerna.json node_modules package.json packages tmp tsconfig.json yarn.lock
[PM2] [v] Modules Stopped
[PM2] Applying action deleteProcessId on app [all](ids: [ 0, 1 ])
[PM2] [control](0) ✓
[PM2] [experiment](1) ✓
[PM2] [v] All Applications Stopped
[PM2] [v] PM2 Daemon Stopped

@github-actions
Copy link

github-actions bot commented Sep 20, 2020

Asset Size Report for a92c2aa

IE11 Builds

The size of the library EmberData has increased by 93.0 B (29.0 B compressed) which exceeds the failure threshold of 15 bytes.

Warnings

The uncompressed size of the package @ember-data/model has increased by 93.0 B.

Changeset


EmberData 160.01 KB +93.0 B (34.35 KB +29.0 B compressed)
    @ember-data/model 13.55 KB +93.0 B (2.91 KB +29.0 B compressed)
        @ember-data/model/-private 13.07 KB +93.0 B (2.81 KB +29.0 B compressed)

Full Asset Analysis (IE11)

Asset Size Report
=================


Library: EmberData
┌────────────┬─────────────┐
│  (index)   │   Values    │
├────────────┼─────────────┤
│   bytes    │ '160.01 KB' │
│ compressed │ '34.35 KB'  │
│  packages  │      9      │
│  modules   │     46      │
└────────────┴─────────────┘

Package: @ember-data/store
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '68.84 KB' │
│  compressed  │ '14.78 KB' │
│ % Of Library │   '43.0'   │
└──────────────┴────────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	@ember-data/store/-private                        | 67.93 KB  | 14.58 KB   | 98.7          | 42.5
	@ember-data/store/index                           | 936.00 B  | 200.91 B   | 1.3           | 0.6

Package: @ember-data/record-data
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '22.61 KB' │
│  compressed  │ '4.85 KB'  │
│ % Of Library │   '14.1'   │
└──────────────┴────────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	@ember-data/record-data/-private                  | 22.61 KB  | 4.85 KB    | 100.0         | 14.1

Package: @ember-data/serializer
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '19.32 KB' │
│  compressed  │ '4.15 KB'  │
│ % Of Library │   '12.1'   │
└──────────────┴────────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	@ember-data/serializer/json                       | 7.10 KB   | 1.52 KB    | 36.8          | 4.4
	@ember-data/serializer/-private                   | 5.36 KB   | 1.15 KB    | 27.7          | 3.3
	@ember-data/serializer/json-api                   | 3.71 KB   | 814.82 B   | 19.2          | 2.3
	@ember-data/serializer/rest                       | 2.70 KB   | 593.94 B   | 14.0          | 1.7
	@ember-data/serializer/index                      | 243.00 B  | 52.16 B    | 1.2           | 0.1
	@ember-data/serializer/transform                  | 215.00 B  | 46.15 B    | 1.1           | 0.1

Package: @ember-data/adapter
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '14.77 KB' │
│  compressed  │ '3.17 KB'  │
│ % Of Library │   '9.2'    │
└──────────────┴────────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	@ember-data/adapter/rest                          | 7.80 KB   | 1.67 KB    | 52.8          | 4.9
	@ember-data/adapter/-private                      | 3.54 KB   | 777.68 B   | 24.0          | 2.2
	@ember-data/adapter/error                         | 1.91 KB   | 420.50 B   | 13.0          | 1.2
	@ember-data/adapter/json-api                      | 830.00 B  | 178.16 B   | 5.5           | 0.5
	@ember-data/adapter/index                         | 719.00 B  | 154.33 B   | 4.8           | 0.4

Package: @ember-data/model
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '13.55 KB' │
│  compressed  │ '2.91 KB'  │
│ % Of Library │   '8.5'    │
└──────────────┴────────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	@ember-data/model/-private                        | 13.07 KB  | 2.81 KB    | 96.5          | 8.2
	@ember-data/model/index                           | 486.00 B  | 104.32 B   | 3.5           | 0.3

Package: ember-data
┌──────────────┬───────────┐
│   (index)    │  Values   │
├──────────────┼───────────┤
│    bytes     │ '9.28 KB' │
│  compressed  │ '1.99 KB' │
│ % Of Library │   '5.8'   │
└──────────────┴───────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	ember-data/index                                  | 2.32 KB   | 510.65 B   | 25.0          | 1.5
	ember-data/-private                               | 2.02 KB   | 444.97 B   | 21.8          | 1.3
	ember-data/adapters/errors                        | 1.19 KB   | 261.23 B   | 12.8          | 0.7
	ember-data/setup-container                        | 503.00 B  | 107.96 B   | 5.3           | 0.3
	ember-data/relationships                          | 318.00 B  | 68.25 B    | 3.3           | 0.2
	ember-data/serializers/embedded-records-mixin     | 274.00 B  | 58.81 B    | 2.9           | 0.2
	ember-data/serializers/json-api                   | 251.00 B  | 53.87 B    | 2.6           | 0.2
	ember-data/adapters/json-api                      | 245.00 B  | 52.58 B    | 2.6           | 0.1
	ember-data/serializers/json                       | 243.00 B  | 52.16 B    | 2.6           | 0.1
	ember-data/serializers/rest                       | 243.00 B  | 52.16 B    | 2.6           | 0.1
	ember-data/transform                              | 241.00 B  | 51.73 B    | 2.5           | 0.1
	ember-data/adapters/rest                          | 237.00 B  | 50.87 B    | 2.5           | 0.1
	ember-data/serializer                             | 232.00 B  | 49.79 B    | 2.4           | 0.1
	ember-data/adapter                                | 226.00 B  | 48.51 B    | 2.4           | 0.1
	ember-data/model                                  | 222.00 B  | 47.65 B    | 2.3           | 0.1
	ember-data/store                                  | 222.00 B  | 47.65 B    | 2.3           | 0.1
	ember-data/attr                                   | 218.00 B  | 46.79 B    | 2.3           | 0.1
	ember-data/version                                | 162.00 B  | 34.77 B    | 1.7           | 0.1

Package: ember-inflector
┌──────────────┬───────────┐
│   (index)    │  Values   │
├──────────────┼───────────┤
│    bytes     │ '7.90 KB' │
│  compressed  │ '1.70 KB' │
│ % Of Library │   '4.9'   │
└──────────────┴───────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	ember-inflector/lib/system/inflector              | 2.76 KB   | 605.96 B   | 34.9          | 1.7
	ember-inflector/lib/system/inflections            | 1.57 KB   | 345.58 B   | 19.9          | 1.0
	ember-inflector/index                             | 1.12 KB   | 246.42 B   | 14.2          | 0.7
	ember-inflector/lib/ext/string                    | 783.00 B  | 168.07 B   | 9.7           | 0.5
	ember-inflector/lib/system                        | 452.00 B  | 97.02 B    | 5.6           | 0.3
	ember-inflector/lib/system/string                 | 351.00 B  | 75.34 B    | 4.3           | 0.2
	ember-inflector/lib/helpers/pluralize             | 348.00 B  | 74.69 B    | 4.3           | 0.2
	ember-inflector/lib/utils/make-helper             | 308.00 B  | 66.11 B    | 3.8           | 0.2
	ember-inflector/lib/helpers/singularize           | 271.00 B  | 58.17 B    | 3.3           | 0.2

Package: @ember-data/debug
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '2.68 KB'  │
│  compressed  │ '588.79 B' │
│ % Of Library │   '1.7'    │
└──────────────┴────────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	@ember-data/debug/index                           | 2.19 KB   | 481.67 B   | 81.8          | 1.4
	@ember-data/debug/setup                           | 499.00 B  | 107.11 B   | 18.2          | 0.3

Package: @ember/ordered-set
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '1.05 KB'  │
│  compressed  │ '231.39 B' │
│ % Of Library │   '0.7'    │
└──────────────┴────────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	@ember/ordered-set/index                          | 1.05 KB   | 231.39 B   | 100.0         | 0.7

Modern Builds

The size of the library EmberData has increased by 93.0 B (29.0 B compressed) which exceeds the failure threshold of 15 bytes.

Warnings

The uncompressed size of the package @ember-data/model has increased by 93.0 B.

Changeset


EmberData 160.01 KB +93.0 B (34.35 KB +29.0 B compressed)
    @ember-data/model 13.55 KB +93.0 B (2.91 KB +29.0 B compressed)
        @ember-data/model/-private 13.07 KB +93.0 B (2.81 KB +29.0 B compressed)

Full Asset Analysis (Modern)

Asset Size Report
=================


Library: EmberData
┌────────────┬─────────────┐
│  (index)   │   Values    │
├────────────┼─────────────┤
│   bytes    │ '160.01 KB' │
│ compressed │ '34.35 KB'  │
│  packages  │      9      │
│  modules   │     46      │
└────────────┴─────────────┘

Package: @ember-data/store
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '68.84 KB' │
│  compressed  │ '14.78 KB' │
│ % Of Library │   '43.0'   │
└──────────────┴────────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	@ember-data/store/-private                        | 67.93 KB  | 14.58 KB   | 98.7          | 42.5
	@ember-data/store/index                           | 936.00 B  | 200.91 B   | 1.3           | 0.6

Package: @ember-data/record-data
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '22.61 KB' │
│  compressed  │ '4.85 KB'  │
│ % Of Library │   '14.1'   │
└──────────────┴────────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	@ember-data/record-data/-private                  | 22.61 KB  | 4.85 KB    | 100.0         | 14.1

Package: @ember-data/serializer
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '19.32 KB' │
│  compressed  │ '4.15 KB'  │
│ % Of Library │   '12.1'   │
└──────────────┴────────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	@ember-data/serializer/json                       | 7.10 KB   | 1.52 KB    | 36.8          | 4.4
	@ember-data/serializer/-private                   | 5.36 KB   | 1.15 KB    | 27.7          | 3.3
	@ember-data/serializer/json-api                   | 3.71 KB   | 814.82 B   | 19.2          | 2.3
	@ember-data/serializer/rest                       | 2.70 KB   | 593.94 B   | 14.0          | 1.7
	@ember-data/serializer/index                      | 243.00 B  | 52.16 B    | 1.2           | 0.1
	@ember-data/serializer/transform                  | 215.00 B  | 46.15 B    | 1.1           | 0.1

Package: @ember-data/adapter
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '14.77 KB' │
│  compressed  │ '3.17 KB'  │
│ % Of Library │   '9.2'    │
└──────────────┴────────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	@ember-data/adapter/rest                          | 7.80 KB   | 1.67 KB    | 52.8          | 4.9
	@ember-data/adapter/-private                      | 3.54 KB   | 777.68 B   | 24.0          | 2.2
	@ember-data/adapter/error                         | 1.91 KB   | 420.50 B   | 13.0          | 1.2
	@ember-data/adapter/json-api                      | 830.00 B  | 178.16 B   | 5.5           | 0.5
	@ember-data/adapter/index                         | 719.00 B  | 154.33 B   | 4.8           | 0.4

Package: @ember-data/model
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '13.55 KB' │
│  compressed  │ '2.91 KB'  │
│ % Of Library │   '8.5'    │
└──────────────┴────────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	@ember-data/model/-private                        | 13.07 KB  | 2.81 KB    | 96.5          | 8.2
	@ember-data/model/index                           | 486.00 B  | 104.32 B   | 3.5           | 0.3

Package: ember-data
┌──────────────┬───────────┐
│   (index)    │  Values   │
├──────────────┼───────────┤
│    bytes     │ '9.28 KB' │
│  compressed  │ '1.99 KB' │
│ % Of Library │   '5.8'   │
└──────────────┴───────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	ember-data/index                                  | 2.32 KB   | 510.65 B   | 25.0          | 1.5
	ember-data/-private                               | 2.02 KB   | 444.97 B   | 21.8          | 1.3
	ember-data/adapters/errors                        | 1.19 KB   | 261.23 B   | 12.8          | 0.7
	ember-data/setup-container                        | 503.00 B  | 107.96 B   | 5.3           | 0.3
	ember-data/relationships                          | 318.00 B  | 68.25 B    | 3.3           | 0.2
	ember-data/serializers/embedded-records-mixin     | 274.00 B  | 58.81 B    | 2.9           | 0.2
	ember-data/serializers/json-api                   | 251.00 B  | 53.87 B    | 2.6           | 0.2
	ember-data/adapters/json-api                      | 245.00 B  | 52.58 B    | 2.6           | 0.1
	ember-data/serializers/json                       | 243.00 B  | 52.16 B    | 2.6           | 0.1
	ember-data/serializers/rest                       | 243.00 B  | 52.16 B    | 2.6           | 0.1
	ember-data/transform                              | 241.00 B  | 51.73 B    | 2.5           | 0.1
	ember-data/adapters/rest                          | 237.00 B  | 50.87 B    | 2.5           | 0.1
	ember-data/serializer                             | 232.00 B  | 49.79 B    | 2.4           | 0.1
	ember-data/adapter                                | 226.00 B  | 48.51 B    | 2.4           | 0.1
	ember-data/model                                  | 222.00 B  | 47.65 B    | 2.3           | 0.1
	ember-data/store                                  | 222.00 B  | 47.65 B    | 2.3           | 0.1
	ember-data/attr                                   | 218.00 B  | 46.79 B    | 2.3           | 0.1
	ember-data/version                                | 162.00 B  | 34.77 B    | 1.7           | 0.1

Package: ember-inflector
┌──────────────┬───────────┐
│   (index)    │  Values   │
├──────────────┼───────────┤
│    bytes     │ '7.90 KB' │
│  compressed  │ '1.70 KB' │
│ % Of Library │   '4.9'   │
└──────────────┴───────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	ember-inflector/lib/system/inflector              | 2.76 KB   | 605.96 B   | 34.9          | 1.7
	ember-inflector/lib/system/inflections            | 1.57 KB   | 345.58 B   | 19.9          | 1.0
	ember-inflector/index                             | 1.12 KB   | 246.42 B   | 14.2          | 0.7
	ember-inflector/lib/ext/string                    | 783.00 B  | 168.07 B   | 9.7           | 0.5
	ember-inflector/lib/system                        | 452.00 B  | 97.02 B    | 5.6           | 0.3
	ember-inflector/lib/system/string                 | 351.00 B  | 75.34 B    | 4.3           | 0.2
	ember-inflector/lib/helpers/pluralize             | 348.00 B  | 74.69 B    | 4.3           | 0.2
	ember-inflector/lib/utils/make-helper             | 308.00 B  | 66.11 B    | 3.8           | 0.2
	ember-inflector/lib/helpers/singularize           | 271.00 B  | 58.17 B    | 3.3           | 0.2

Package: @ember-data/debug
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '2.68 KB'  │
│  compressed  │ '588.79 B' │
│ % Of Library │   '1.7'    │
└──────────────┴────────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	@ember-data/debug/index                           | 2.19 KB   | 481.67 B   | 81.8          | 1.4
	@ember-data/debug/setup                           | 499.00 B  | 107.11 B   | 18.2          | 0.3

Package: @ember/ordered-set
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '1.05 KB'  │
│  compressed  │ '231.39 B' │
│ % Of Library │   '0.7'    │
└──────────────┴────────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	@ember/ordered-set/index                          | 1.05 KB   | 231.39 B   | 100.0         | 0.7

Modern Builds (No Rollup)

EmberData increased by 93.0 B uncompressed but decreased by 0.0 B compressed

Warnings

The uncompressed size of the package @ember-data/model has increased by 93.0 B.

Changeset


EmberData 204.07 KB +93.0 B (38.86 KB ±0 B compressed)
    @ember-data/model 17.49 KB +93.0 B (3.33 KB ±0 B compressed)
        @ember-data/model/-private/system/many-array 2.39 KB +93.0 B (465.73 B ±0 B compressed)

Full Asset Analysis (Modern)

Asset Size Report
=================


Library: EmberData
┌────────────┬─────────────┐
│  (index)   │   Values    │
├────────────┼─────────────┤
│   bytes    │ '204.07 KB' │
│ compressed │ '38.86 KB'  │
│  packages  │      9      │
│  modules   │     144     │
└────────────┴─────────────┘

Package: @ember-data/store
┌──────────────┬─────────────┐
│   (index)    │   Values    │
├──────────────┼─────────────┤
│    bytes     │ '100.90 KB' │
│  compressed  │ '19.21 KB'  │
│ % Of Library │   '49.4'    │
└──────────────┴─────────────┘
	Module                                                                             | Bytes     | Compressed | % of Package  | % Of Library
	--------------------------------------------------------------------------------------------------------------------------------------
	@ember-data/store/-private/system/core-store                                       | 17.37 KB  | 3.31 KB    | 17.2          | 8.5
	@ember-data/store/-private/system/model/internal-model                             | 16.97 KB  | 3.23 KB    | 16.8          | 8.3
	@ember-data/store/-private/system/model/states                                     | 5.44 KB   | 1.04 KB    | 5.4           | 2.7
	@ember-data/store/-private/system/fetch-manager                                    | 4.93 KB   | 960.41 B   | 4.9           | 2.4
	@ember-data/store/-private/system/store/finders                                    | 4.31 KB   | 840.08 B   | 4.3           | 2.1
	@ember-data/store/-private/index                                                   | 4.23 KB   | 824.08 B   | 4.2           | 2.1
	@ember-data/store/-private/system/record-array-manager                             | 3.83 KB   | 746.20 B   | 3.8           | 1.9
	@ember-data/store/-private/identifiers/cache                                       | 3.74 KB   | 729.07 B   | 3.7           | 1.8
	@ember-data/store/-private/system/store/record-data-store-wrapper                  | 3.42 KB   | 665.85 B   | 3.4           | 1.7
	@ember-data/store/-private/system/store/internal-model-factory                     | 2.91 KB   | 567.22 B   | 2.9           | 1.4
	@ember-data/store/-private/system/snapshot                                         | 2.85 KB   | 555.04 B   | 2.8           | 1.4
	@ember-data/store/-private/system/record-arrays/record-array                       | 2.11 KB   | 411.47 B   | 2.1           | 1.0
	@ember-data/store/-private/system/ds-model-store                                   | 1.99 KB   | 387.29 B   | 2.0           | 1.0
	@ember-data/store/-private/system/request-cache                                    | 1.87 KB   | 365.01 B   | 1.9           | 0.9
	@ember-data/store/-private/system/schema-definition-service                        | 1.47 KB   | 286.56 B   | 1.5           | 0.7
	@ember-data/store/-private/system/references/has-many                              | 1.46 KB   | 285.42 B   | 1.5           | 0.7
	@ember-data/store/-private/system/relationship-meta                                | 1.45 KB   | 282.18 B   | 1.4           | 0.7
	@ember-data/store/-private/system/model/shim-model-class                           | 1.26 KB   | 245.62 B   | 1.2           | 0.6
	@ember-data/store/-private/system/references/belongs-to                            | 1.20 KB   | 233.05 B   | 1.2           | 0.6
	@ember-data/store/-private/system/store/serializer-response                        | 1.12 KB   | 219.15 B   | 1.1           | 0.6
	@ember-data/store/-private/identifiers/utils/uuid-v4                               | 1.05 KB   | 205.26 B   | 1.0           | 0.5
	@ember-data/store/-private/system/internal-model-map                               | 981.00 B  | 186.79 B   | 0.9           | 0.5
	@ember-data/store/index                                                            | 936.00 B  | 178.22 B   | 0.9           | 0.4
	@ember-data/store/-private/system/references/record                                | 918.00 B  | 174.79 B   | 0.9           | 0.4
	@ember-data/store/-private/system/record-arrays/adapter-populated-record-array     | 911.00 B  | 173.46 B   | 0.9           | 0.4
	@ember-data/store/-private/system/model/notify-changes                             | 862.00 B  | 164.13 B   | 0.8           | 0.4
	@ember-data/store/-private/system/errors-utils                                     | 759.00 B  | 144.51 B   | 0.7           | 0.4
	@ember-data/store/-private/system/snapshot-record-array                            | 753.00 B  | 143.37 B   | 0.7           | 0.4
	@ember-data/store/-private/system/references/reference                             | 729.00 B  | 138.80 B   | 0.7           | 0.3
	@ember-data/store/-private/system/record-notification-manager                      | 689.00 B  | 131.19 B   | 0.7           | 0.3
	@ember-data/store/-private/system/references                                       | 598.00 B  | 113.86 B   | 0.6           | 0.3
	@ember-data/store/-private/system/promise-proxies                                  | 556.00 B  | 105.86 B   | 0.5           | 0.3
	@ember-data/store/-private/utils/construct-resource                                | 506.00 B  | 96.34 B    | 0.5           | 0.2
	@ember-data/store/-private/system/store/common                                     | 499.00 B  | 95.01 B    | 0.5           | 0.2
	@ember-data/store/-private/system/coerce-id                                        | 494.00 B  | 94.06 B    | 0.5           | 0.2
	@ember-data/store/-private/system/record-arrays                                    | 487.00 B  | 92.72 B    | 0.5           | 0.2
	@ember-data/store/-private/system/identity-map                                     | 450.00 B  | 85.68 B    | 0.4           | 0.2
	@ember-data/store/-private/system/diff-array                                       | 438.00 B  | 83.39 B    | 0.4           | 0.2
	@ember-data/store/-private/ts-interfaces/identifier                                | 400.00 B  | 76.16 B    | 0.4           | 0.2
	@ember-data/store/-private/utils/symbol                                            | 393.00 B  | 74.83 B    | 0.4           | 0.2
	@ember-data/store/-private/identifiers/is-stable-identifier                        | 327.00 B  | 62.26 B    | 0.3           | 0.2
	@ember-data/store/-private/ts-interfaces/fetch-manager                             | 316.00 B  | 60.16 B    | 0.3           | 0.2
	@ember-data/store/-private/utils/promise-record                                    | 288.00 B  | 54.83 B    | 0.3           | 0.1
	@ember-data/store/-private/system/backburner                                       | 268.00 B  | 51.02 B    | 0.3           | 0.1
	@ember-data/store/-private/utils/brand                                             | 258.00 B  | 49.12 B    | 0.2           | 0.1
	@ember-data/store/-private/system/record-data-for                                  | 235.00 B  | 44.74 B    | 0.2           | 0.1
	@ember-data/store/-private/system/ts-upgrade-map                                   | 234.00 B  | 44.55 B    | 0.2           | 0.1
	@ember-data/store/-private/utils/is-non-empty-string                               | 212.00 B  | 40.36 B    | 0.2           | 0.1
	@ember-data/store/-private/system/normalize-model-name                             | 210.00 B  | 39.98 B    | 0.2           | 0.1
	@ember-data/store/-debug/index                                                     | 193.00 B  | 36.74 B    | 0.2           | 0.1
	@ember-data/store/-private/system/deprecated-evented                               | 190.00 B  | 36.17 B    | 0.2           | 0.1
	@ember-data/store/-private/ts-interfaces/record-data-store-wrapper                 | 136.00 B  | 25.89 B    | 0.1           | 0.1
	@ember-data/store/-private/ts-interfaces/record-data-schemas                       | 130.00 B  | 24.75 B    | 0.1           | 0.1
	@ember-data/store/-private/ts-interfaces/minimum-serializer-interface              | 98.00 B   | 18.66 B    | 0.1           | 0.0
	@ember-data/store/-private/ts-interfaces/record-data-record-wrapper                | 96.00 B   | 18.27 B    | 0.1           | 0.0
	@ember-data/store/-private/ts-interfaces/minimum-adapter-interface                 | 95.00 B   | 18.08 B    | 0.1           | 0.0
	@ember-data/store/-private/ts-interfaces/schema-definition-service                 | 95.00 B   | 18.08 B    | 0.1           | 0.0
	@ember-data/store/-private/ts-interfaces/record-data-json-api                      | 90.00 B   | 17.13 B    | 0.1           | 0.0
	@ember-data/store/-private/ts-interfaces/ember-data-json-api                       | 89.00 B   | 16.94 B    | 0.1           | 0.0
	@ember-data/store/-private/ts-interfaces/promise-proxies                           | 85.00 B   | 16.18 B    | 0.1           | 0.0
	@ember-data/store/-private/ts-interfaces/record-instance                           | 85.00 B   | 16.18 B    | 0.1           | 0.0
	@ember-data/store/-private/ts-interfaces/record-data                               | 81.00 B   | 15.42 B    | 0.1           | 0.0
	@ember-data/store/-private/ts-interfaces/ds-model                                  | 78.00 B   | 14.85 B    | 0.1           | 0.0
	@ember-data/store/-private/ts-interfaces/utils                                     | 75.00 B   | 14.28 B    | 0.1           | 0.0

Package: @ember-data/record-data
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '26.04 KB' │
│  compressed  │ '4.96 KB'  │
│ % Of Library │   '12.8'   │
└──────────────┴────────────┘
	Module                                                                      | Bytes     | Compressed | % of Package  | % Of Library
	-------------------------------------------------------------------------------------------------------------------------------
	@ember-data/record-data/-private/relationships/state/relationship           | 8.16 KB   | 1.55 KB    | 31.4          | 4.0
	@ember-data/record-data/-private/record-data                                | 8.11 KB   | 1.54 KB    | 31.1          | 4.0
	@ember-data/record-data/-private/relationships/state/belongs-to             | 3.02 KB   | 588.74 B   | 11.6          | 1.5
	@ember-data/record-data/-private/relationships/state/has-many               | 2.81 KB   | 547.23 B   | 10.8          | 1.4
	@ember-data/record-data/-private/relationships/state/create                 | 1.15 KB   | 224.30 B   | 4.4           | 0.6
	@ember-data/record-data/-private/index                                      | 1023.00 B | 194.78 B   | 3.8           | 0.5
	@ember-data/record-data/-private/ordered-set                                | 598.00 B  | 113.86 B   | 2.2           | 0.3
	@ember-data/record-data/-private/record-data-for                            | 481.00 B  | 91.58 B    | 1.8           | 0.2
	@ember-data/record-data/-private/coerce-id                                  | 406.00 B  | 77.30 B    | 1.5           | 0.2
	@ember-data/record-data/-private/normalize-link                             | 249.00 B  | 47.41 B    | 0.9           | 0.1
	@ember-data/record-data/-private/ts-interfaces/relationship-record-data     | 100.00 B  | 19.04 B    | 0.4           | 0.0

Package: @ember-data/serializer
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '21.71 KB' │
│  compressed  │ '4.13 KB'  │
│ % Of Library │   '10.6'   │
└──────────────┴────────────┘
	Module                                                     | Bytes     | Compressed | % of Package  | % Of Library
	--------------------------------------------------------------------------------------------------------------
	@ember-data/serializer/json                                | 7.10 KB   | 1.35 KB    | 32.7          | 3.5
	@ember-data/serializer/-private/embedded-records-mixin     | 4.28 KB   | 834.93 B   | 19.7          | 2.1
	@ember-data/serializer/json-api                            | 3.71 KB   | 722.78 B   | 17.1          | 1.8
	@ember-data/serializer/rest                                | 2.70 KB   | 526.85 B   | 12.4          | 1.3
	@ember-data/serializer/-private/index                      | 1.18 KB   | 230.39 B   | 5.4           | 0.6
	@ember-data/serializer/-private/transforms/date            | 523.00 B  | 99.58 B    | 2.4           | 0.3
	@ember-data/serializer/-private/transforms/boolean         | 490.00 B  | 93.29 B    | 2.2           | 0.2
	@ember-data/serializer/-private/transforms/number          | 446.00 B  | 84.92 B    | 2.0           | 0.2
	@ember-data/serializer/-private/transforms/string          | 351.00 B  | 66.83 B    | 1.6           | 0.2
	@ember-data/serializer/-private/utils                      | 286.00 B  | 54.45 B    | 1.3           | 0.1
	@ember-data/serializer/index                               | 243.00 B  | 46.26 B    | 1.1           | 0.1
	@ember-data/serializer/-private/transforms/transform       | 242.00 B  | 46.07 B    | 1.1           | 0.1
	@ember-data/serializer/transform                           | 215.00 B  | 40.93 B    | 1.0           | 0.1

Package: @ember-data/model
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '17.49 KB' │
│  compressed  │ '3.33 KB'  │
│ % Of Library │   '8.6'    │
└──────────────┴────────────┘
	Module                                                   | Bytes     | Compressed | % of Package  | % Of Library
	------------------------------------------------------------------------------------------------------------
	@ember-data/model/-private/model                         | 6.28 KB   | 1.20 KB    | 35.9          | 3.1
	@ember-data/model/-private/system/many-array             | 2.39 KB   | 465.73 B   | 13.7          | 1.2
	@ember-data/model/-private/errors                        | 2.03 KB   | 396.04 B   | 11.6          | 1.0
	@ember-data/model/-private/index                         | 1.29 KB   | 251.52 B   | 7.4           | 0.6
	@ember-data/model/-private/system/relationships/ext      | 1.19 KB   | 231.34 B   | 6.8           | 0.6
	@ember-data/model/-private/attr                          | 743.00 B  | 141.47 B   | 4.1           | 0.4
	@ember-data/model/-private/belongs-to                    | 663.00 B  | 126.24 B   | 3.7           | 0.3
	@ember-data/model/-private/system/promise-many-array     | 642.00 B  | 122.24 B   | 3.6           | 0.3
	@ember-data/model/-private/has-many                      | 626.00 B  | 119.19 B   | 3.5           | 0.3
	@ember-data/model/index                                  | 486.00 B  | 92.53 B    | 2.7           | 0.2
	@ember-data/model/-private/util                          | 442.00 B  | 84.16 B    | 2.5           | 0.2
	@ember-data/model/-private/system/promise-belongs-to     | 410.00 B  | 78.06 B    | 2.3           | 0.2
	@ember-data/model/-private/system/model-for-mixin        | 404.00 B  | 76.92 B    | 2.3           | 0.2

Package: @ember-data/adapter
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '16.81 KB' │
│  compressed  │ '3.20 KB'  │
│ % Of Library │   '8.2'    │
└──────────────┴────────────┘
	Module                                                        | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------------------
	@ember-data/adapter/rest                                      | 7.80 KB   | 1.49 KB    | 46.4          | 3.8
	@ember-data/adapter/error                                     | 1.91 KB   | 373.00 B   | 11.4          | 0.9
	@ember-data/adapter/-private/build-url-mixin                  | 1.80 KB   | 351.68 B   | 10.7          | 0.9
	@ember-data/adapter/-private/index                            | 1.03 KB   | 201.07 B   | 6.1           | 0.5
	@ember-data/adapter/json-api                                  | 830.00 B  | 158.03 B   | 4.8           | 0.4
	@ember-data/adapter/-private/utils/serialize-query-params     | 792.00 B  | 150.80 B   | 4.6           | 0.4
	@ember-data/adapter/index                                     | 719.00 B  | 136.90 B   | 4.2           | 0.3
	@ember-data/adapter/-private/utils/determine-body-promise     | 521.00 B  | 99.20 B    | 3.0           | 0.2
	@ember-data/adapter/-private/utils/parse-response-headers     | 480.00 B  | 91.39 B    | 2.8           | 0.2
	@ember-data/adapter/-private/utils/fetch                      | 454.00 B  | 86.44 B    | 2.6           | 0.2
	@ember-data/adapter/-private/utils/serialize-into-hash        | 347.00 B  | 66.07 B    | 2.0           | 0.2
	@ember-data/adapter/-private/utils/continue-on-reject         | 217.00 B  | 41.31 B    | 1.3           | 0.1

Package: ember-data
┌──────────────┬───────────┐
│   (index)    │  Values   │
├──────────────┼───────────┤
│    bytes     │ '9.50 KB' │
│  compressed  │ '1.81 KB' │
│ % Of Library │   '4.7'   │
└──────────────┴───────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	ember-data/index                                  | 2.32 KB   | 452.98 B   | 24.5          | 1.1
	ember-data/-private/index                         | 1.93 KB   | 375.86 B   | 20.3          | 0.9
	ember-data/adapters/errors                        | 1.19 KB   | 231.72 B   | 12.5          | 0.6
	ember-data/setup-container                        | 503.00 B  | 95.77 B    | 5.2           | 0.2
	ember-data/-private/core                          | 321.00 B  | 61.12 B    | 3.3           | 0.2
	ember-data/relationships                          | 318.00 B  | 60.54 B    | 3.3           | 0.2
	ember-data/serializers/embedded-records-mixin     | 274.00 B  | 52.17 B    | 2.8           | 0.1
	ember-data/serializers/json-api                   | 251.00 B  | 47.79 B    | 2.6           | 0.1
	ember-data/adapters/json-api                      | 245.00 B  | 46.64 B    | 2.5           | 0.1
	ember-data/serializers/json                       | 243.00 B  | 46.26 B    | 2.5           | 0.1
	ember-data/serializers/rest                       | 243.00 B  | 46.26 B    | 2.5           | 0.1
	ember-data/transform                              | 241.00 B  | 45.88 B    | 2.5           | 0.1
	ember-data/adapters/rest                          | 237.00 B  | 45.12 B    | 2.4           | 0.1
	ember-data/serializer                             | 232.00 B  | 44.17 B    | 2.4           | 0.1
	ember-data/adapter                                | 226.00 B  | 43.03 B    | 2.3           | 0.1
	ember-data/model                                  | 222.00 B  | 42.27 B    | 2.3           | 0.1
	ember-data/store                                  | 222.00 B  | 42.27 B    | 2.3           | 0.1
	ember-data/attr                                   | 218.00 B  | 41.50 B    | 2.2           | 0.1
	ember-data/version                                | 162.00 B  | 30.84 B    | 1.7           | 0.1

Package: ember-inflector
┌──────────────┬───────────┐
│   (index)    │  Values   │
├──────────────┼───────────┤
│    bytes     │ '7.90 KB' │
│  compressed  │ '1.51 KB' │
│ % Of Library │   '3.9'   │
└──────────────┴───────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	ember-inflector/lib/system/inflector              | 2.76 KB   | 537.52 B   | 34.9          | 1.4
	ember-inflector/lib/system/inflections            | 1.57 KB   | 306.55 B   | 19.9          | 0.8
	ember-inflector/index                             | 1.12 KB   | 218.58 B   | 14.2          | 0.5
	ember-inflector/lib/ext/string                    | 783.00 B  | 149.08 B   | 9.7           | 0.4
	ember-inflector/lib/system                        | 452.00 B  | 86.06 B    | 5.6           | 0.2
	ember-inflector/lib/system/string                 | 351.00 B  | 66.83 B    | 4.3           | 0.2
	ember-inflector/lib/helpers/pluralize             | 348.00 B  | 66.26 B    | 4.3           | 0.2
	ember-inflector/lib/utils/make-helper             | 308.00 B  | 58.64 B    | 3.8           | 0.1
	ember-inflector/lib/helpers/singularize           | 271.00 B  | 51.60 B    | 3.3           | 0.1

Package: @ember-data/debug
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '2.68 KB'  │
│  compressed  │ '522.28 B' │
│ % Of Library │   '1.3'    │
└──────────────┴────────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	@ember-data/debug/index                           | 2.19 KB   | 427.26 B   | 81.8          | 1.1
	@ember-data/debug/setup                           | 499.00 B  | 95.01 B    | 18.2          | 0.2

Package: @ember/ordered-set
┌──────────────┬────────────┐
│   (index)    │   Values   │
├──────────────┼────────────┤
│    bytes     │ '1.05 KB'  │
│  compressed  │ '205.26 B' │
│ % Of Library │   '0.5'    │
└──────────────┴────────────┘
	Module                                            | Bytes     | Compressed | % of Package  | % Of Library
	-----------------------------------------------------------------------------------------------------
	@ember/ordered-set/index                          | 1.05 KB   | 205.26 B   | 100.0         | 0.5

@@ -166,6 +166,13 @@ export default EmberObject.extend(MutableArray, DeprecatedEvented, {
return false;
},

toArray() {
// By using `get()`, the tracking system knows to pay attention to changes that occur.
get(this, '[]');
Copy link
Contributor Author

@snewcomer snewcomer Sep 20, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@pzuraq 👋 I'm noticing we have to consume every time it is accessed. Caching on this once when accessed and preventing further consuming doesn't pass the tests I added here.

I'm thinking this might be expected since sortBy (through toArray && map) returns a new array each time. What do you think?

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Discussed this in the data meeting but wanted to note it down here, the issue is that length also needs to be instrumented here, along with objectAt. This because objectAt is not used when the length is 0, but length is read to check that.

// By using `get()`, the tracking system knows to pay attention to changes that occur.
get(this, '[]');

if (typeof this._length === 'number') {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why do we need this check? Should we set the length in init rather than have to do this every time you access length?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Either works! I did that but then thought I would keep all the logic in one place. I can do it in init if you would like!

@snewcomer snewcomer force-pushed the sn/has-many-consume branch 7 times, most recently from f2cf8bf to 7880de8 Compare September 25, 2020 04:36
@urbany
Copy link

urbany commented Sep 29, 2020

Hi everyone, seems like this is ready to go, no? Really sorry for the pressure, but this bug is really making it hard to debug tracking bugs on my update to autotracking. Thanks again! :)

@snewcomer
Copy link
Contributor Author

@urbany 👋 Yes it was! Fixed in ember source. EmberArrays are now entangled and should react to adding/removing to them. I think we might just be waiting for backports to lts.

cb4ba29

Copy link
Member

@rwjblue rwjblue left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you drop the second commit here, and we can land this (for release in ember-data@3.22)?

@jrjohnson

This comment has been minimized.

@rwjblue rwjblue merged commit 41549c5 into master Oct 9, 2020
@delete-merged-branch delete-merged-branch bot deleted the sn/has-many-consume branch October 9, 2020 12:16
snewcomer pushed a commit that referenced this pull request Oct 9, 2020
[BUG]: Consume array access to autotrack hasMany
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🏷️ bug This PR primarily fixes a reported issue
Projects
None yet
Development

Successfully merging this pull request may close these issues.

ED + Octane: ManyArray inside POJO is not tracked
7 participants