From c2fb26375ce5ba4ca73541052032c60e110ccdf5 Mon Sep 17 00:00:00 2001 From: Jonas Metzener Date: Thu, 6 Nov 2025 08:53:55 +0100 Subject: [PATCH] Update ember-concurrency to v5 --- .../docs-header/search-box/index.js | 7 ++-- .../docs-header/search-results/index.js | 9 +++-- addon/services/docs-search.js | 11 +++--- addon/services/project-version.js | 9 +++-- index.js | 6 ++++ package.json | 2 +- pnpm-lock.yaml | 34 ++++++++++++------- 7 files changed, 45 insertions(+), 33 deletions(-) diff --git a/addon/components/docs-header/search-box/index.js b/addon/components/docs-header/search-box/index.js index af4ab3279..3ebf1f5f7 100644 --- a/addon/components/docs-header/search-box/index.js +++ b/addon/components/docs-header/search-box/index.js @@ -21,10 +21,9 @@ export default class DocsHeaderSearchBox extends Component { // the project) within a new addonDocs service that wires all that up together. // I think it's fine if our Docs-* components assume there is a single global // project. - @task - *fetchProject() { - yield this.store.findRecord('project', this.config.projectName); - } + fetchProject = task(async () => { + await this.store.findRecord('project', this.config.projectName); + }); @action focusSearch() { diff --git a/addon/components/docs-header/search-results/index.js b/addon/components/docs-header/search-results/index.js index 63243be49..e66c285a0 100644 --- a/addon/components/docs-header/search-results/index.js +++ b/addon/components/docs-header/search-results/index.js @@ -3,7 +3,7 @@ import Component from '@glimmer/component'; import { tracked } from '@glimmer/tracking'; import { action } from '@ember/object'; import { keyResponder, onKey } from 'ember-keyboard'; -import { restartableTask } from 'ember-concurrency'; +import { task } from 'ember-concurrency'; import { addonDocsConfig } from 'ember-cli-addon-docs/-private/config'; @keyResponder @@ -32,17 +32,16 @@ export default class DocsHeaderSearchResults extends Component { return this.args.query.trim(); } - @restartableTask - *search() { + search = task({ restartable: true }, async () => { let results; if (this.trimmedQuery) { - results = yield this.docsSearch.search(this.trimmedQuery); + results = await this.docsSearch.search(this.trimmedQuery); } this.selectedIndex = results.length ? 0 : null; this.rawSearchResults = results; - } + }); get searchResults() { let rawSearchResults = this.rawSearchResults; diff --git a/addon/services/docs-search.js b/addon/services/docs-search.js index 640fde6f2..f629b7552 100644 --- a/addon/services/docs-search.js +++ b/addon/services/docs-search.js @@ -1,6 +1,6 @@ import Service from '@ember/service'; import lunr from 'lunr'; -import { enqueueTask } from 'ember-concurrency'; +import { task } from 'ember-concurrency'; import { getAddonDocsConfig, getRootURL, @@ -89,11 +89,10 @@ export default class DocsSearch extends Service { return this._loadSearchIndex.perform(); } - @enqueueTask - *_loadSearchIndex() { + _loadSearchIndex = task({ enqueue: true }, async () => { if (!this._searchIndex) { - let response = yield fetch(this._indexURL); - let json = yield response.json(); + let response = await fetch(this._indexURL); + let json = await response.json(); this._searchIndex = { index: Index.load(json.index), @@ -102,7 +101,7 @@ export default class DocsSearch extends Service { } return this._searchIndex; - } + }); get _indexURL() { return `${getRootURL(this)}ember-cli-addon-docs/search-index.json`; diff --git a/addon/services/project-version.js b/addon/services/project-version.js index ac71d334f..49ecfdef0 100644 --- a/addon/services/project-version.js +++ b/addon/services/project-version.js @@ -11,12 +11,11 @@ export default class ProjectVersionService extends Service { @addonDocsConfig config; - @task - *_loadAvailableVersions() { - let response = yield fetch(`${this.root}versions.json`); + _loadAvailableVersions = task(async () => { + let response = await fetch(`${this.root}versions.json`); let json; if (response.ok) { - json = yield response.json(); + json = await response.json(); } else { json = { [this.config.latestVersionName]: Object.assign({}, this.currentVersion), @@ -30,7 +29,7 @@ export default class ProjectVersionService extends Service { return version; }); - } + }); redirectTo(version) { window.location.href = `${this.root}${version.path}`; diff --git a/index.js b/index.js index f91f1ea4d..b21141943 100644 --- a/index.js +++ b/index.js @@ -18,6 +18,12 @@ module.exports = { LATEST_VERSION_NAME, options: { + babel: { + plugins: [ + require.resolve('ember-concurrency/async-arrow-task-transform'), + ], + }, + postcssOptions: { compile: { extension: 'scss', diff --git a/package.json b/package.json index 55c08cf7e..e3cc0b5fa 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ "ember-cli-version-checker": "^5.1.2", "ember-code-snippet": "^3.0.0", "ember-composable-helpers": "^5.0.0", - "ember-concurrency": "^3.1.1", + "ember-concurrency": "^5.1.0", "ember-keyboard": "^9.0.1", "ember-modal-dialog": "^4.1.4", "ember-router-generator": "^2.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a57761bd4..935ed981f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -90,8 +90,8 @@ importers: specifier: ^5.0.0 version: 5.0.0 ember-concurrency: - specifier: ^3.1.1 - version: 3.1.1(@babel/core@7.26.0)(ember-source@5.11.1(@glimmer/component@1.1.2(@babel/core@7.26.0))(rsvp@4.8.5)(webpack@5.97.1)) + specifier: ^5.1.0 + version: 5.1.0(@babel/core@7.26.0) ember-keyboard: specifier: ^9.0.1 version: 9.0.1(@babel/core@7.26.0)(@ember/test-helpers@3.3.1(@babel/core@7.26.0)(ember-source@5.11.1(@glimmer/component@1.1.2(@babel/core@7.26.0))(rsvp@4.8.5)(webpack@5.97.1))(webpack@5.97.1))(ember-source@5.11.1(@glimmer/component@1.1.2(@babel/core@7.26.0))(rsvp@4.8.5)(webpack@5.97.1)) @@ -3589,6 +3589,9 @@ packages: resolution: {integrity: sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==} engines: {node: '>=4'} + decorator-transforms@1.2.1: + resolution: {integrity: sha512-UUtmyfdlHvYoX3VSG1w5rbvBQ2r5TX1JsE4hmKU9snleFymadA3VACjl6SRfi9YgBCSjBbfQvR1bs9PRW9yBKw==} + decorator-transforms@2.3.0: resolution: {integrity: sha512-jo8c1ss9yFPudHuYYcrJ9jpkDZIoi+lOGvt+Uyp9B+dz32i50icRMx9Bfa8hEt7TnX1FyKWKkjV+cUdT/ep2kA==} @@ -4014,11 +4017,14 @@ packages: resolution: {integrity: sha512-gyUrjiSju4QwNrsCLbBpP0FL6VDFZaELNW7Kbcp60xXhjvNjncYgzm4zzYXhT+i1lLA6WEgRZ3lOGgyBORYD0w==} engines: {node: 12.* || 14.* || >= 16} - ember-concurrency@3.1.1: - resolution: {integrity: sha512-doXFYYfy1C7jez+jDDlfahTp03QdjXeSY/W3Zbnx/q3UNJ9g10Shf2d7M/HvWo/TC22eU+6dPLIpqd/6q4pR+Q==} + ember-concurrency@5.1.0: + resolution: {integrity: sha512-cnudfQnW7soEN98uEwGgfmmMM5PP8L3pefpQ81FewAtTFZhYyYKyJsMtkk8R/7AHCbcuX5cvY44yndHVF6Vshw==} engines: {node: 16.* || >= 18} peerDependencies: - ember-source: ^3.28.0 || ^4.0.0 || >=5.0.0 + '@glint/template': '>= 1.0.0' + peerDependenciesMeta: + '@glint/template': + optional: true ember-data@5.3.9: resolution: {integrity: sha512-fUhvmq3piYapfSFlpFpuQrkGn9SPRzPNj9xfHtFhyUq7UrPSXvjbhsihg+vw46VLxNqlTUwVtU3kLjGuJU6O9Q==} @@ -12810,6 +12816,13 @@ snapshots: dependencies: mimic-response: 1.0.1 + decorator-transforms@1.2.1(@babel/core@7.26.0): + dependencies: + '@babel/plugin-syntax-decorators': 7.25.9(@babel/core@7.26.0) + babel-import-util: 2.1.1 + transitivePeerDependencies: + - '@babel/core' + decorator-transforms@2.3.0(@babel/core@7.26.0): dependencies: '@babel/plugin-syntax-decorators': 7.25.9(@babel/core@7.26.0) @@ -13758,16 +13771,13 @@ snapshots: transitivePeerDependencies: - supports-color - ember-concurrency@3.1.1(@babel/core@7.26.0)(ember-source@5.11.1(@glimmer/component@1.1.2(@babel/core@7.26.0))(rsvp@4.8.5)(webpack@5.97.1)): + ember-concurrency@5.1.0(@babel/core@7.26.0): dependencies: + '@babel/helper-module-imports': 7.25.9 '@babel/helper-plugin-utils': 7.25.9 '@babel/types': 7.26.3 - '@glimmer/tracking': 1.1.2 - ember-cli-babel: 7.26.11 - ember-cli-babel-plugin-helpers: 1.1.1 - ember-cli-htmlbars: 6.3.0 - ember-compatibility-helpers: 1.2.7(@babel/core@7.26.0) - ember-source: 5.11.1(@glimmer/component@1.1.2(@babel/core@7.26.0))(rsvp@4.8.5)(webpack@5.97.1) + '@embroider/addon-shim': 1.9.0 + decorator-transforms: 1.2.1(@babel/core@7.26.0) transitivePeerDependencies: - '@babel/core' - supports-color