From 866972c6c6dc71f865b7f3aed03a13084141fdd5 Mon Sep 17 00:00:00 2001 From: hashicc <191911133+hashicc@users.noreply.github.com> Date: Tue, 28 Oct 2025 10:04:32 -0400 Subject: [PATCH] =?UTF-8?q?chore:=20=F0=9F=A4=96=20create=20patched=20embe?= =?UTF-8?q?r-loading=20for=20modern=20e-c=20(#3015)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 8 ++- patches/ember-loading.patch | 112 ++++++++++++++++++++++++++++++++++++ pnpm-lock.yaml | 56 ++++++------------ 3 files changed, 134 insertions(+), 42 deletions(-) create mode 100644 patches/ember-loading.patch diff --git a/package.json b/package.json index 8ddb35930..3c87e9826 100755 --- a/package.json +++ b/package.json @@ -53,7 +53,8 @@ "fireworm>async": "^2.6.4", "ember-cli-babel>@babel/runtime": "7.27.6", "ember-try-config>package-json": "^10.0.1", - "ember-stargate@^0.6.0>@glimmer/component": "^2.0.0" + "ember-stargate@^0.6.0>@glimmer/component": "^2.0.0", + "ember-loading>ember-concurrency": "^4.0.0" }, "ignoredBuiltDependencies": [ "@parcel/watcher", @@ -63,7 +64,10 @@ "@nestjs/core", "@openapitools/openapi-generator-cli" ], - "onlyBuiltDependencies": [] + "onlyBuiltDependencies": [], + "patchedDependencies": { + "ember-loading": "patches/ember-loading.patch" + } }, "config": { "commitizen": { diff --git a/patches/ember-loading.patch b/patches/ember-loading.patch new file mode 100644 index 000000000..d601652e5 --- /dev/null +++ b/patches/ember-loading.patch @@ -0,0 +1,112 @@ +diff --git a/addon/services/loading.ts b/addon/services/loading.ts +index 34ac7eb0cdf4ee8f09661ba2459068307bb2792e..9d201c99046fb2e3d6ba3b49f8c1445a4c768c02 100644 +--- a/addon/services/loading.ts ++++ b/addon/services/loading.ts +@@ -4,7 +4,6 @@ import { restartableTask, task, timeout } from 'ember-concurrency'; + import RouterService from '@ember/routing/router-service'; + import { getOwner } from '@ember/application'; + import RSVP, { defer } from 'rsvp'; +-import { taskFor } from 'ember-concurrency-ts'; + + type ParseArgsValue = [any, Function, any[] | undefined]; + +@@ -49,7 +48,6 @@ function parseArgs(): ParseArgsValue { + } + + export default class LoadingService extends Service { +- + @service + router!: RouterService; + +@@ -58,11 +56,11 @@ export default class LoadingService extends Service { + watchTransitions = true; + + get isLoading(): boolean { +- return taskFor(this._runJob).isRunning; ++ return this._runJob.isRunning; + } + + get showLoading(): boolean { +- return !taskFor(this.preDelayTask).isRunning && (this.isLoading || taskFor(this.postDelayTask).isRunning); ++ return !this.preDelayTask.isRunning && (this.isLoading || this.postDelayTask.isRunning); + } + + _routerTransitionDeferred?: RSVP.Deferred; +@@ -132,33 +130,30 @@ export default class LoadingService extends Service { + // run(fn: () => R): Promise; + async run(...args: any[]) { + if (this.preDelay > 0) { +- taskFor(this.preDelayTask).perform(this.preDelay); ++ this.preDelayTask.perform(this.preDelay); + } + +- let result = await taskFor(this._runJob).perform(...args); ++ let result = await this._runJob.perform(...args); + + if (this.postDelay > 0) { +- taskFor(this.postDelayTask).perform(this.postDelay); ++ this.postDelayTask.perform(this.postDelay); + } + + return result; + } + +- @task +- async _runJob(...args: unknown[]): Promise { ++ _runJob = task(async (...args: unknown[]) => { + let [target, method, realArgs] = parseArgs(...args); + return await method.apply(target, realArgs); +- } ++ }); + +- @restartableTask +- async preDelayTask(delay: number): Promise { ++ preDelayTask = restartableTask(async (delay: number) => { + await timeout(delay); +- } ++ }); + +- @restartableTask +- async postDelayTask(delay: number): Promise { ++ postDelayTask = restartableTask(async (delay: number) => { + await timeout(delay); +- } ++ }); + } + + // DO NOT DELETE: this is how TypeScript knows how to look up your services. +diff --git a/index.js b/index.js +index 0ca063d427d9441b9b3a1274bfcfe47186623c63..ca80a9382c6f5e64504048e0757215b1272fb849 100644 +--- a/index.js ++++ b/index.js +@@ -2,4 +2,11 @@ + + module.exports = { + name: require('./package').name, ++ options: { ++ babel: { ++ plugins: [ ++ require.resolve('ember-concurrency/async-arrow-task-transform'), ++ ], ++ }, ++ }, + }; +diff --git a/package.json b/package.json +index 3b898dce9a160776192437af4c35b2038eb39232..2a37d3d6f179bfe62479c5141d705a2d3e4eeaeb 100644 +--- a/package.json ++++ b/package.json +@@ -31,10 +31,10 @@ + "dependencies": { + "ember-cli-babel": "^7.26.6", + "ember-cli-htmlbars": "^5.7.1", +- "ember-cli-typescript": "^4.1.0", +- "ember-concurrency": "^2.0.3", +- "ember-concurrency-async": "^1.0.0", +- "ember-concurrency-ts": "^0.3.0" ++ "ember-cli-typescript": "^4.1.0" ++ }, ++ "peerDependencies": { ++ "ember-concurrency": "^4.0.0" + }, + "devDependencies": { + "@ember/optional-features": "2.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 50299daa2..9d979f563 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,6 +16,12 @@ overrides: ember-cli-babel>@babel/runtime: 7.27.6 ember-try-config>package-json: ^10.0.1 ember-stargate@^0.6.0>@glimmer/component: ^2.0.0 + ember-loading>ember-concurrency: ^4.0.0 + +patchedDependencies: + ember-loading: + hash: 7d97519ce1955a5130edf885afb18c05d7253e2055b1b60cdcf6efc64cbdbff3 + path: patches/ember-loading.patch importers: @@ -394,7 +400,7 @@ importers: version: 7.1.8(@ember/test-helpers@5.2.2(@babel/core@7.27.1)(@glint/template@1.5.2))(@glint/template@1.5.2)(typescript@5.8.3)(webpack@5.99.8) ember-loading: specifier: ^2.0.0 - version: 2.0.0(@babel/core@7.27.1) + version: 2.0.0(patch_hash=7d97519ce1955a5130edf885afb18c05d7253e2055b1b60cdcf6efc64cbdbff3)(@babel/core@7.27.1)(@glint/template@1.5.2) ember-truth-helpers: specifier: ^4.0.3 version: 4.0.3(ember-source@5.12.0(@glimmer/component@2.0.0)(@glint/template@1.5.2)(rsvp@4.8.5)(webpack@5.99.8)) @@ -4809,10 +4815,6 @@ packages: peerDependencies: ember-concurrency: ^1.2.1 || ^2.0.0-rc.1 - ember-concurrency@2.3.7: - resolution: {integrity: sha512-sz6sTIXN/CuLb5wdpauFa+rWXuvXXSnSHS4kuNzU5GSMDX1pLBWSuovoUk61FUe6CYRqBmT1/UushObwBGickQ==} - engines: {node: 10.* || 12.* || 14.* || >= 16} - ember-concurrency@4.0.4: resolution: {integrity: sha512-Y+PwbFE2r3+ANlT0lTBNokLXTRFLV6lnGkZ8u5tDhND5o2wD1wkh9JdP8KZ8aJ+J0dmhncVGQNi+Dbbtc6xTfg==} engines: {node: 16.* || >= 18} @@ -4844,10 +4846,6 @@ packages: qunit: optional: true - ember-destroyable-polyfill@2.0.3: - resolution: {integrity: sha512-TovtNqCumzyAiW0/OisSkkVK93xnVF4NRU6+FN0ubpfwEOpRrmM2RqDwXI6YAChCgSHON1cz0DfQStpA1Gjuuw==} - engines: {node: 10.* || >= 12} - ember-electron@6.0.0: resolution: {integrity: sha512-+vS5K+EYUo3XzClvPR83IECwwqda2rKymPfzCYnYbrzgqVPXFgtL/REh2PZNPrv1VB3UKLROfKeRtF/o/h6bXw==} engines: {node: '>= 18'} @@ -14226,39 +14224,25 @@ snapshots: - '@babel/core' - supports-color - ember-concurrency-async@1.0.0(ember-concurrency@2.3.7(@babel/core@7.27.1)): + ember-concurrency-async@1.0.0(ember-concurrency@4.0.4(@babel/core@7.27.1)(@glint/template@1.5.2)): dependencies: '@babel/helper-plugin-utils': 7.27.1 '@babel/types': 7.27.1 ember-cli-babel: 7.26.11 ember-cli-babel-plugin-helpers: 1.1.1 ember-cli-htmlbars: 4.5.0 - ember-concurrency: 2.3.7(@babel/core@7.27.1) + ember-concurrency: 4.0.4(@babel/core@7.27.1)(@glint/template@1.5.2) transitivePeerDependencies: - supports-color - ember-concurrency-ts@0.3.1(ember-concurrency@2.3.7(@babel/core@7.27.1)): + ember-concurrency-ts@0.3.1(ember-concurrency@4.0.4(@babel/core@7.27.1)(@glint/template@1.5.2)): dependencies: ember-cli-babel: 7.26.11 ember-cli-htmlbars: 4.5.0 - ember-concurrency: 2.3.7(@babel/core@7.27.1) + ember-concurrency: 4.0.4(@babel/core@7.27.1)(@glint/template@1.5.2) transitivePeerDependencies: - supports-color - ember-concurrency@2.3.7(@babel/core@7.27.1): - dependencies: - '@babel/helper-plugin-utils': 7.27.1 - '@babel/types': 7.27.1 - '@glimmer/tracking': 1.1.2 - ember-cli-babel: 7.26.11 - ember-cli-babel-plugin-helpers: 1.1.1 - ember-cli-htmlbars: 5.7.2 - ember-compatibility-helpers: 1.2.7(@babel/core@7.27.1) - ember-destroyable-polyfill: 2.0.3(@babel/core@7.27.1) - transitivePeerDependencies: - - '@babel/core' - - supports-color - ember-concurrency@4.0.4(@babel/core@7.27.1)(@glint/template@1.5.2): dependencies: '@babel/helper-module-imports': 7.27.1 @@ -14307,15 +14291,6 @@ snapshots: - ember-inflector - supports-color - ember-destroyable-polyfill@2.0.3(@babel/core@7.27.1): - dependencies: - ember-cli-babel: 7.26.11 - ember-cli-version-checker: 5.1.2 - ember-compatibility-helpers: 1.2.7(@babel/core@7.27.1) - transitivePeerDependencies: - - '@babel/core' - - supports-color - ember-electron@6.0.0(@babel/core@7.27.1)(ember-cli-dependency-checker@3.3.3(ember-cli@5.12.0(handlebars@4.7.8)(underscore@1.13.7)))(ember-cli@5.12.0(handlebars@4.7.8)(underscore@1.13.7))(ember-source@5.12.0(@glimmer/component@2.0.0)(@glint/template@1.5.2)(rsvp@4.8.5)(webpack@5.99.8))(encoding@0.1.13): dependencies: '@electron-forge/core': 7.8.1(encoding@0.1.13) @@ -14511,16 +14486,17 @@ snapshots: - '@babel/core' - supports-color - ember-loading@2.0.0(@babel/core@7.27.1): + ember-loading@2.0.0(patch_hash=7d97519ce1955a5130edf885afb18c05d7253e2055b1b60cdcf6efc64cbdbff3)(@babel/core@7.27.1)(@glint/template@1.5.2): dependencies: ember-cli-babel: 7.26.11 ember-cli-htmlbars: 5.7.2 ember-cli-typescript: 4.2.1 - ember-concurrency: 2.3.7(@babel/core@7.27.1) - ember-concurrency-async: 1.0.0(ember-concurrency@2.3.7(@babel/core@7.27.1)) - ember-concurrency-ts: 0.3.1(ember-concurrency@2.3.7(@babel/core@7.27.1)) + ember-concurrency: 4.0.4(@babel/core@7.27.1)(@glint/template@1.5.2) + ember-concurrency-async: 1.0.0(ember-concurrency@4.0.4(@babel/core@7.27.1)(@glint/template@1.5.2)) + ember-concurrency-ts: 0.3.1(ember-concurrency@4.0.4(@babel/core@7.27.1)(@glint/template@1.5.2)) transitivePeerDependencies: - '@babel/core' + - '@glint/template' - supports-color ember-maybe-import-regenerator@1.0.0: