diff --git a/app/assets/javascripts/discourse-ensure-deprecation-order/index.js b/app/assets/javascripts/discourse-ensure-deprecation-order/index.js new file mode 100644 index 00000000000..c5dd687c47c --- /dev/null +++ b/app/assets/javascripts/discourse-ensure-deprecation-order/index.js @@ -0,0 +1,5 @@ +"use strict"; + +module.exports = { + name: require("./package").name, +}; diff --git a/app/assets/javascripts/discourse-ensure-deprecation-order/package.json b/app/assets/javascripts/discourse-ensure-deprecation-order/package.json new file mode 100644 index 00000000000..90326e832e8 --- /dev/null +++ b/app/assets/javascripts/discourse-ensure-deprecation-order/package.json @@ -0,0 +1,14 @@ +{ + "name": "discourse-ensure-deprecation-order", + "version": "1.0.0", + "description": "A dummy addon which ensures ember-cli-deprecation-workflow is loaded before @ember/jquery", + "author": "Discourse", + "license": "GPL-2.0-only", + "keywords": [ + "ember-addon" + ], + "ember-addon": { + "before": "@ember/jquery", + "after": "ember-cli-deprecation-workflow" + } +} diff --git a/app/assets/javascripts/discourse/config/deprecation-workflow.js b/app/assets/javascripts/discourse/config/deprecation-workflow.js index 45b7a9154c6..f0763859a59 100644 --- a/app/assets/javascripts/discourse/config/deprecation-workflow.js +++ b/app/assets/javascripts/discourse/config/deprecation-workflow.js @@ -2,5 +2,26 @@ globalThis.deprecationWorkflow = globalThis.deprecationWorkflow || {}; globalThis.deprecationWorkflow.config = { // We're using RAISE_ON_DEPRECATION in environment.js instead of // `throwOnUnhandled` here since it is easier to toggle. - workflow: [], + workflow: [ + { handler: "silence", matchId: "ember-global" }, + { handler: "silence", matchId: "ember-string.prototype-extensions" }, + { handler: "silence", matchId: "ember.built-in-components.reopen" }, + { handler: "silence", matchId: "ember.built-in-components.import" }, + { handler: "silence", matchId: "implicit-injections" }, + { handler: "silence", matchId: "route-render-template" }, + { handler: "silence", matchId: "routing.transition-methods" }, + { handler: "silence", matchId: "route-disconnect-outlet" }, + { handler: "silence", matchId: "setting-on-hash" }, + { handler: "silence", matchId: "this-property-fallback" }, + { handler: "silence", matchId: "ember.globals-resolver" }, + { handler: "silence", matchId: "globals-resolver" }, + { + handler: "silence", + matchId: "deprecated-run-loop-and-computed-dot-access", + }, + { + handler: "silence", + matchId: "ember.built-in-components.legacy-arguments", + }, + ], }; diff --git a/app/assets/javascripts/discourse/ember-cli-build.js b/app/assets/javascripts/discourse/ember-cli-build.js index 0230f6298a3..0224c3383ae 100644 --- a/app/assets/javascripts/discourse/ember-cli-build.js +++ b/app/assets/javascripts/discourse/ember-cli-build.js @@ -10,10 +10,25 @@ const discourseScss = require("./lib/discourse-scss"); const generateScriptsTree = require("./lib/scripts"); const funnel = require("broccoli-funnel"); +const SILENCED_WARN_PREFIXES = [ + "Setting the `jquery-integration` optional feature flag", + "The Ember Classic edition has been deprecated", + "Setting the `template-only-glimmer-components` optional feature flag to `false`", +]; + module.exports = function (defaults) { let discourseRoot = resolve("../../../.."); let vendorJs = discourseRoot + "/vendor/assets/javascripts/"; + // Silence the warnings listed in SILENCED_WARN_PREFIXES + const ui = defaults.project.ui; + const oldWriteWarning = ui.writeWarnLine.bind(ui); + ui.writeWarnLine = (message, ...args) => { + if (!SILENCED_WARN_PREFIXES.some((prefix) => message.startsWith(prefix))) { + return oldWriteWarning(message, ...args); + } + }; + const isProduction = EmberApp.env().includes("production"); const isTest = EmberApp.env().includes("test"); diff --git a/app/assets/javascripts/discourse/package.json b/app/assets/javascripts/discourse/package.json index 5cc245abec5..174de6922c8 100644 --- a/app/assets/javascripts/discourse/package.json +++ b/app/assets/javascripts/discourse/package.json @@ -36,6 +36,7 @@ "broccoli-asset-rev": "^3.0.0", "deepmerge": "^4.2.2", "discourse-common": "^1.0.0", + "discourse-ensure-deprecation-order": "^1.0.0", "discourse-hbr": "^1.0.0", "discourse-widget-hbs": "^1.0.0", "ember-auto-import": "^2.4.2", diff --git a/app/assets/javascripts/package.json b/app/assets/javascripts/package.json index 4c2ad27ab8f..52efea876e3 100644 --- a/app/assets/javascripts/package.json +++ b/app/assets/javascripts/package.json @@ -4,6 +4,7 @@ "discourse", "admin", "discourse-common", + "discourse-ensure-deprecation-order", "discourse-hbr", "discourse-widget-hbs", "pretty-text",