Skip to content

Commit ac092d1

Browse files
authored
chore: burn down runloop and RSVP usage (#8860)
* chore: burn down runloop and RSVP usage * fixup * more rsvp burndown * fixup * fix tests * fix more tests
1 parent f79f964 commit ac092d1

File tree

108 files changed

+2233
-2907
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

108 files changed

+2233
-2907
lines changed

.eslintrc.js

+3-7
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,8 @@ module.exports = {
5050
'no-restricted-imports': [
5151
'error',
5252
{
53-
paths: ['@glimmer/env', '@ember/utils'],
53+
paths: ['@glimmer/env', '@ember/utils', '@ember/runloop'],
5454
},
55-
// '@ember/runloop',
5655
// '@ember/string',
5756
// '@ember/object',
5857
// '@ember/service',
@@ -97,10 +96,10 @@ module.exports = {
9796
'no-restricted-imports': [
9897
'error',
9998
{
100-
paths: ['@glimmer/env', '@ember/utils'],
99+
paths: ['@glimmer/env', '@ember/utils', '@ember/runloop'],
101100
// patterns: ['@ember/*'],
102101
},
103-
// '@ember/runloop',@glimmer/env
102+
104103
// '@ember/string',
105104
// '@ember/object',
106105
// '@ember/service',
@@ -207,8 +206,6 @@ module.exports = {
207206
'@types/ember/index.d.ts',
208207
'@types/@glimmer/tracking.d.ts',
209208
'@types/@ember/utils/index.d.ts',
210-
'@types/@ember/runloop/index.d.ts',
211-
'@types/@ember/runloop/-private/backburner.d.ts',
212209
'@types/@ember/object/compat.d.ts',
213210
'@types/@ember/debug/index.d.ts',
214211
'ember-data-types/q/schema-definition-service.ts',
@@ -222,7 +219,6 @@ module.exports = {
222219
'ember-data-types/q/identifier.ts',
223220
'ember-data-types/q/fetch-manager.ts',
224221
'ember-data-types/q/ember-data-json-api.ts',
225-
'@types/@ember/runloop/index.d.ts',
226222
'@types/@ember/polyfills/index.d.ts',
227223
'tests/graph/tests/integration/graph/polymorphism/implicit-keys-test.ts',
228224
'tests/graph/tests/integration/graph/graph-test.ts',

package.json

+7-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@
4141
"@ember/string": "3.1.1",
4242
"@ember/test-helpers": "^3.2.0",
4343
"@glimmer/component": "^1.1.2",
44-
"@glimmer/env": "^0.1.7",
4544
"@types/jquery": "^3.5.18",
4645
"@types/qunit": "^2.19.6",
4746
"@types/rsvp": "^4.0.4",
@@ -107,6 +106,13 @@
107106
}
108107
},
109108
"pnpm": {
109+
"packageExtensions": {
110+
"@glimmer/syntax": {
111+
"dependencies": {
112+
"@glimmer/env": "^0.1.7"
113+
}
114+
}
115+
},
110116
"overrides": {
111117
"ember-auto-import": "^2.6.3",
112118
"@embroider/macros": "^1.12.2",

packages/-ember-data/package.json

-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
"@ember-data/tracking": "workspace:5.4.0-alpha.12",
3535
"@ember/edition-utils": "^1.2.0",
3636
"@embroider/macros": "^1.13.1",
37-
"@glimmer/env": "^0.1.7",
3837
"broccoli-merge-trees": "^4.2.0",
3938
"ember-auto-import": "^2.6.3",
4039
"ember-cli-babel": "^8.0.0",

packages/adapter/rollup.config.mjs

-2
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,6 @@ export default {
2323
'@ember/object',
2424
'@ember/object/mixin',
2525
'@ember/application',
26-
'@glimmer/env',
27-
'@ember/runloop',
2826
'@ember/polyfills',
2927
],
3028

packages/adapter/src/rest.ts

+2-3
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import { getOwner } from '@ember/application';
55
import { assert, warn } from '@ember/debug';
66
import { computed } from '@ember/object';
7-
import { join } from '@ember/runloop';
87

98
import { DEBUG } from '@ember-data/env';
109
import type { Snapshot, SnapshotRecordArray } from '@ember-data/legacy-compat/-private';
@@ -1542,12 +1541,12 @@ function execjQAjax(
15421541
return new Promise((resolve, reject) => {
15431542
hash.success = function (payload, textStatus, jqXHR) {
15441543
let response = ajaxSuccessHandler(adapter, payload, jqXHR, requestData);
1545-
join(null, resolve, response);
1544+
resolve(response);
15461545
};
15471546

15481547
hash.error = function (jqXHR, textStatus, errorThrown) {
15491548
let error = ajaxErrorHandler(adapter, jqXHR, errorThrown, requestData);
1550-
join(null, reject, error);
1549+
reject(error);
15511550
};
15521551

15531552
adapter._ajax(hash);

packages/graph/rollup.config.mjs

-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ export default {
2222
'@ember/object',
2323
'@ember/object/mixin',
2424
'@ember/application',
25-
'@glimmer/env',
2625
'@ember/polyfills',
2726
],
2827

packages/json-api/rollup.config.mjs

-2
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,9 @@ export default {
2222
'@ember/object',
2323
'@ember/object/mixin',
2424
'@ember/polyfills',
25-
'@ember/runloop',
2625
'@ember/service',
2726
'@ember/string',
2827
'@embroider/macros',
29-
'@glimmer/env',
3028
'ember-inflector',
3129
],
3230

packages/json-api/src/-private/cache.ts

+4-6
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
* @module @ember-data/json-api
33
*/
44
import { assert } from '@ember/debug';
5-
import { schedule } from '@ember/runloop';
65

76
import { LOG_MUTATIONS, LOG_OPERATIONS, LOG_REQUESTS } from '@ember-data/debugging';
87
import { DEPRECATE_RELATIONSHIP_REMOTE_UPDATE_CLEARING_LOCAL_STATE } from '@ember-data/deprecations';
@@ -996,11 +995,10 @@ export default class JSONAPICache implements Cache {
996995
* of a test won't cause issues.
997996
*/
998997
if (this.__destroyedCache.size === 1) {
999-
schedule('destroy', () => {
1000-
setTimeout(() => {
1001-
this.__destroyedCache.clear();
1002-
}, 100);
1003-
});
998+
// TODO do we still need this?
999+
setTimeout(() => {
1000+
this.__destroyedCache.clear();
1001+
}, 100);
10041002
}
10051003

10061004
if (!removed && removeFromRecordArray) {

packages/model/rollup.config.mjs

-2
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,7 @@ export default {
3232
'@ember/object',
3333
'@ember/object/mixin',
3434
'@ember/application',
35-
'@glimmer/env',
3635
'@glimmer/tracking',
37-
'@ember/runloop',
3836
'@ember/polyfills',
3937
],
4038

packages/model/src/-private/model.js

+1-4
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import { assert, warn } from '@ember/debug';
66
import EmberObject from '@ember/object';
77
import { dependentKeyCompat } from '@ember/object/compat';
8-
import { run } from '@ember/runloop';
98
import { tracked } from '@glimmer/tracking';
109
import Ember from 'ember';
1110

@@ -734,9 +733,7 @@ class Model extends EmberObject {
734733
return Promise.resolve(this);
735734
}
736735
return this.save(options).then((_) => {
737-
run(() => {
738-
this.unloadRecord();
739-
});
736+
this.unloadRecord();
740737
return this;
741738
});
742739
}

packages/store/src/-private/managers/notification-manager.ts

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
* @module @ember-data/store
33
*/
44
import { assert } from '@ember/debug';
5+
// eslint-disable-next-line no-restricted-imports
56
import { _backburner } from '@ember/runloop';
67

78
import { LOG_NOTIFICATIONS } from '@ember-data/debugging';

packages/store/src/-private/store-service.ts

+30-35
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import { getOwner } from '@ember/application';
66
import { assert } from '@ember/debug';
77
import EmberObject from '@ember/object';
8-
import { _backburner as emberBackburner } from '@ember/runloop';
98

109
import type { Object as JSONObject } from 'json-typescript';
1110

@@ -664,47 +663,45 @@ class Store extends EmberObject {
664663
//
665664
// to remove this, we would need to move to a new `async` API.
666665
let record!: RecordInstance;
667-
emberBackburner.join(() => {
668-
this._join(() => {
669-
let normalizedModelName = normalizeModelName(modelName);
670-
let properties = { ...inputProperties };
666+
this._join(() => {
667+
let normalizedModelName = normalizeModelName(modelName);
668+
let properties = { ...inputProperties };
671669

672-
// If the passed properties do not include a primary key,
673-
// give the adapter an opportunity to generate one. Typically,
674-
// client-side ID generators will use something like uuid.js
675-
// to avoid conflicts.
670+
// If the passed properties do not include a primary key,
671+
// give the adapter an opportunity to generate one. Typically,
672+
// client-side ID generators will use something like uuid.js
673+
// to avoid conflicts.
676674

677-
if (properties.id === null || properties.id === undefined) {
678-
let adapter = this.adapterFor(modelName, true);
675+
if (properties.id === null || properties.id === undefined) {
676+
let adapter = this.adapterFor(modelName, true);
679677

680-
if (adapter && adapter.generateIdForRecord) {
681-
properties.id = adapter.generateIdForRecord(this, modelName, properties);
682-
} else {
683-
properties.id = null;
684-
}
678+
if (adapter && adapter.generateIdForRecord) {
679+
properties.id = adapter.generateIdForRecord(this, modelName, properties);
680+
} else {
681+
properties.id = null;
685682
}
683+
}
686684

687-
// Coerce ID to a string
688-
properties.id = coerceId(properties.id);
689-
const resource = { type: normalizedModelName, id: properties.id };
685+
// Coerce ID to a string
686+
properties.id = coerceId(properties.id);
687+
const resource = { type: normalizedModelName, id: properties.id };
690688

691-
if (resource.id) {
692-
const identifier = this.identifierCache.peekRecordIdentifier(resource as ResourceIdentifierObject);
689+
if (resource.id) {
690+
const identifier = this.identifierCache.peekRecordIdentifier(resource as ResourceIdentifierObject);
693691

694-
assert(
695-
`The id ${String(properties.id)} has already been used with another '${normalizedModelName}' record.`,
696-
!identifier
697-
);
698-
}
692+
assert(
693+
`The id ${String(properties.id)} has already been used with another '${normalizedModelName}' record.`,
694+
!identifier
695+
);
696+
}
699697

700-
const identifier = this.identifierCache.createIdentifierForNewRecord(resource);
701-
const cache = this.cache;
698+
const identifier = this.identifierCache.createIdentifierForNewRecord(resource);
699+
const cache = this.cache;
702700

703-
const createOptions = normalizeProperties(this, identifier, properties);
704-
const resultProps = cache.clientDidCreate(identifier, createOptions);
701+
const createOptions = normalizeProperties(this, identifier, properties);
702+
const resultProps = cache.clientDidCreate(identifier, createOptions);
705703

706-
record = this._instanceCache.getRecord(identifier, resultProps);
707-
});
704+
record = this._instanceCache.getRecord(identifier, resultProps);
708705
});
709706
return record;
710707
}
@@ -738,9 +735,7 @@ class Store extends EmberObject {
738735
cache.setIsDeleted(identifier, true);
739736

740737
if (cache.isNew(identifier)) {
741-
emberBackburner.join(() => {
742-
this._instanceCache.unloadRecord(identifier);
743-
});
738+
this._instanceCache.unloadRecord(identifier);
744739
}
745740
});
746741
}

pnpm-lock.yaml

+4-9
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/adapter-encapsulation/tests/integration/belongs-to-test.js

+5-6
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import EmberObject from '@ember/object';
22

33
import Store from 'adapter-encapsulation-test-app/services/store';
44
import { module, test } from 'qunit';
5-
import { resolve } from 'rsvp';
65

76
import { setupTest } from 'ember-qunit';
87

@@ -165,7 +164,7 @@ module('integration/belongs-to - Belongs To Tests', function (hooks) {
165164
assert.strictEqual(snapshot.modelName, 'comment', 'snapshot is passed to findBelongsTo with correct modelName');
166165
assert.strictEqual(snapshot.id, '3', 'snapshot is passed to findBelongsTo with correct id');
167166

168-
return resolve(expectedResultCopy);
167+
return Promise.resolve(expectedResultCopy);
169168
}
170169
}
171170

@@ -276,7 +275,7 @@ module('integration/belongs-to - Belongs To Tests', function (hooks) {
276275
assert.strictEqual(snapshot.modelName, 'post', 'snapshot is passed to findRecord with correct modelName');
277276
assert.strictEqual(snapshot.id, '2', 'snapshot is passed to findRecord with correct id');
278277

279-
return resolve(expectedResultCopy);
278+
return Promise.resolve(expectedResultCopy);
280279
}
281280

282281
findBelongsTo() {
@@ -355,7 +354,7 @@ module('integration/belongs-to - Belongs To Tests', function (hooks) {
355354
assert.strictEqual(snapshot.modelName, 'post', 'snapshot is passed to findRecord with correct modelName');
356355
assert.strictEqual(snapshot.id, '2', 'snapshot is passed to findRecord with correct id');
357356

358-
return resolve(expectedResultCopy);
357+
return Promise.resolve(expectedResultCopy);
359358
}
360359
}
361360

@@ -439,7 +438,7 @@ module('integration/belongs-to - Belongs To Tests', function (hooks) {
439438
assert.strictEqual(snapshot.modelName, 'comment', 'snapshot is passed to findBelongsTo with correct modelName');
440439
assert.strictEqual(snapshot.id, '3', 'snapshot is passed to findBelongsTo with correct id');
441440

442-
return resolve(expectedResultCopy);
441+
return Promise.resolve(expectedResultCopy);
443442
}
444443
}
445444

@@ -514,7 +513,7 @@ module('integration/belongs-to - Belongs To Tests', function (hooks) {
514513
assert.strictEqual(snapshot.modelName, 'post', 'snapshot is passed to findRecord with correct modelName');
515514
assert.strictEqual(snapshot.id, '2', 'snapshot is passed to findRecord with correct id');
516515

517-
return resolve(expectedResultCopy);
516+
return Promise.resolve(expectedResultCopy);
518517
}
519518
}
520519

0 commit comments

Comments
 (0)