diff --git a/app/assets/javascripts/admin/addon/components/admin-area-settings.gjs b/app/assets/javascripts/admin/addon/components/admin-area-settings.gjs
index b3f5fc08844..91011c2ff46 100644
--- a/app/assets/javascripts/admin/addon/components/admin-area-settings.gjs
+++ b/app/assets/javascripts/admin/addon/components/admin-area-settings.gjs
@@ -5,7 +5,7 @@ import { service } from "@ember/service";
import ConditionalLoadingSpinner from "discourse/components/conditional-loading-spinner";
import DBreadcrumbsItem from "discourse/components/d-breadcrumbs-item";
import { ajax } from "discourse/lib/ajax";
-import { bind } from "discourse-common/utils/decorators";
+import { bind } from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
import AdminConfigAreaEmptyList from "admin/components/admin-config-area-empty-list";
import AdminFilteredSiteSettings from "admin/components/admin-filtered-site-settings";
diff --git a/app/assets/javascripts/admin/addon/components/admin-backups-logs.js b/app/assets/javascripts/admin/addon/components/admin-backups-logs.js
index 0a02a657026..ce88566cda9 100644
--- a/app/assets/javascripts/admin/addon/components/admin-backups-logs.js
+++ b/app/assets/javascripts/admin/addon/components/admin-backups-logs.js
@@ -2,7 +2,7 @@ import Component from "@ember/component";
import { scheduleOnce } from "@ember/runloop";
import { classNames } from "@ember-decorators/component";
import { observes, on } from "@ember-decorators/object";
-import discourseDebounce from "discourse-common/lib/debounce";
+import discourseDebounce from "discourse/lib/debounce";
import { i18n } from "discourse-i18n";
@classNames("admin-backups-logs")
diff --git a/app/assets/javascripts/admin/addon/components/admin-config-areas/flags.gjs b/app/assets/javascripts/admin/addon/components/admin-config-areas/flags.gjs
index 9da7d5899bb..376ec1f3f2c 100644
--- a/app/assets/javascripts/admin/addon/components/admin-config-areas/flags.gjs
+++ b/app/assets/javascripts/admin/addon/components/admin-config-areas/flags.gjs
@@ -5,7 +5,7 @@ import { service } from "@ember/service";
import { ajax } from "discourse/lib/ajax";
import { popupAjaxError } from "discourse/lib/ajax-error";
import { SYSTEM_FLAG_IDS } from "discourse/lib/constants";
-import { bind } from "discourse-common/utils/decorators";
+import { bind } from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
import AdminFlagItem from "admin/components/admin-flag-item";
diff --git a/app/assets/javascripts/admin/addon/components/admin-filtered-site-settings.gjs b/app/assets/javascripts/admin/addon/components/admin-filtered-site-settings.gjs
index ae2c7fa2182..43c04cea848 100644
--- a/app/assets/javascripts/admin/addon/components/admin-filtered-site-settings.gjs
+++ b/app/assets/javascripts/admin/addon/components/admin-filtered-site-settings.gjs
@@ -5,8 +5,8 @@ import { cancel } from "@ember/runloop";
import { service } from "@ember/service";
import { isEmpty } from "@ember/utils";
import ConditionalLoadingSpinner from "discourse/components/conditional-loading-spinner";
+import discourseDebounce from "discourse/lib/debounce";
import SiteSettingFilter from "discourse/lib/site-setting-filter";
-import discourseDebounce from "discourse-common/lib/debounce";
import { i18n } from "discourse-i18n";
import AdminSiteSettingsFilterControls from "admin/components/admin-site-settings-filter-controls";
import SiteSetting from "admin/components/site-setting";
diff --git a/app/assets/javascripts/admin/addon/components/admin-flags-form.gjs b/app/assets/javascripts/admin/addon/components/admin-flags-form.gjs
index b250e42ecd0..57754f648fb 100644
--- a/app/assets/javascripts/admin/addon/components/admin-flags-form.gjs
+++ b/app/assets/javascripts/admin/addon/components/admin-flags-form.gjs
@@ -7,7 +7,7 @@ import BackButton from "discourse/components/back-button";
import Form from "discourse/components/form";
import { ajax } from "discourse/lib/ajax";
import { popupAjaxError } from "discourse/lib/ajax-error";
-import { bind } from "discourse-common/utils/decorators";
+import { bind } from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
import AdminConfigAreaCard from "admin/components/admin-config-area-card";
import MultiSelect from "select-kit/components/multi-select";
diff --git a/app/assets/javascripts/admin/addon/components/admin-penalty-history.js b/app/assets/javascripts/admin/addon/components/admin-penalty-history.js
index 35206b8cc69..3aeb825842d 100644
--- a/app/assets/javascripts/admin/addon/components/admin-penalty-history.js
+++ b/app/assets/javascripts/admin/addon/components/admin-penalty-history.js
@@ -1,6 +1,6 @@
import Component from "@ember/component";
import { classNames } from "@ember-decorators/component";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
@classNames("penalty-history")
export default class AdminPenaltyHistory extends Component {
diff --git a/app/assets/javascripts/admin/addon/components/admin-penalty-post-action.js b/app/assets/javascripts/admin/addon/components/admin-penalty-post-action.js
index 1d256185782..2670bba0360 100644
--- a/app/assets/javascripts/admin/addon/components/admin-penalty-post-action.js
+++ b/app/assets/javascripts/admin/addon/components/admin-penalty-post-action.js
@@ -1,9 +1,7 @@
import Component from "@ember/component";
import { action } from "@ember/object";
import { equal } from "@ember/object/computed";
-import discourseComputed, {
- afterRender,
-} from "discourse-common/utils/decorators";
+import discourseComputed, { afterRender } from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
const ACTIONS = ["delete", "delete_replies", "edit", "none"];
diff --git a/app/assets/javascripts/admin/addon/components/admin-penalty-reason.js b/app/assets/javascripts/admin/addon/components/admin-penalty-reason.js
index 6a2f3aa4332..eaf589a95c6 100644
--- a/app/assets/javascripts/admin/addon/components/admin-penalty-reason.js
+++ b/app/assets/javascripts/admin/addon/components/admin-penalty-reason.js
@@ -2,7 +2,7 @@ import Component from "@ember/component";
import { action } from "@ember/object";
import { equal } from "@ember/object/computed";
import { tagName } from "@ember-decorators/component";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
const CUSTOM_REASON_KEY = "custom";
diff --git a/app/assets/javascripts/admin/addon/components/admin-permalink-form.gjs b/app/assets/javascripts/admin/addon/components/admin-permalink-form.gjs
index eea8eed3f99..8f77fcd7247 100644
--- a/app/assets/javascripts/admin/addon/components/admin-permalink-form.gjs
+++ b/app/assets/javascripts/admin/addon/components/admin-permalink-form.gjs
@@ -8,7 +8,7 @@ import { eq } from "truth-helpers";
import BackButton from "discourse/components/back-button";
import Form from "discourse/components/form";
import { popupAjaxError } from "discourse/lib/ajax-error";
-import { bind } from "discourse-common/utils/decorators";
+import { bind } from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
import AdminConfigAreaCard from "admin/components/admin-config-area-card";
import Permalink from "admin/models/permalink";
diff --git a/app/assets/javascripts/admin/addon/components/admin-report-chart.gjs b/app/assets/javascripts/admin/addon/components/admin-report-chart.gjs
index e4522537a10..b35680bcd21 100644
--- a/app/assets/javascripts/admin/addon/components/admin-report-chart.gjs
+++ b/app/assets/javascripts/admin/addon/components/admin-report-chart.gjs
@@ -1,6 +1,6 @@
import Component from "@glimmer/component";
import { number } from "discourse/lib/formatter";
-import { makeArray } from "discourse-common/lib/helpers";
+import { makeArray } from "discourse/lib/helpers";
import Report from "admin/models/report";
import Chart from "./chart";
diff --git a/app/assets/javascripts/admin/addon/components/admin-report-radar.gjs b/app/assets/javascripts/admin/addon/components/admin-report-radar.gjs
index 4b180fb0240..03dc4677b4e 100644
--- a/app/assets/javascripts/admin/addon/components/admin-report-radar.gjs
+++ b/app/assets/javascripts/admin/addon/components/admin-report-radar.gjs
@@ -1,5 +1,5 @@
import Component from "@glimmer/component";
-import { makeArray } from "discourse-common/lib/helpers";
+import { makeArray } from "discourse/lib/helpers";
import hexToRGBA from "admin/lib/hex-to-rgba";
import Report from "admin/models/report";
import Chart from "./chart";
diff --git a/app/assets/javascripts/admin/addon/components/admin-report-stacked-chart.gjs b/app/assets/javascripts/admin/addon/components/admin-report-stacked-chart.gjs
index fb04e15790d..7369e00ca91 100644
--- a/app/assets/javascripts/admin/addon/components/admin-report-stacked-chart.gjs
+++ b/app/assets/javascripts/admin/addon/components/admin-report-stacked-chart.gjs
@@ -1,6 +1,6 @@
import Component from "@glimmer/component";
import { number } from "discourse/lib/formatter";
-import { makeArray } from "discourse-common/lib/helpers";
+import { makeArray } from "discourse/lib/helpers";
import Report from "admin/models/report";
import Chart from "./chart";
diff --git a/app/assets/javascripts/admin/addon/components/admin-report-stacked-line-chart.gjs b/app/assets/javascripts/admin/addon/components/admin-report-stacked-line-chart.gjs
index 6ef136df8eb..637d8d070c5 100644
--- a/app/assets/javascripts/admin/addon/components/admin-report-stacked-line-chart.gjs
+++ b/app/assets/javascripts/admin/addon/components/admin-report-stacked-line-chart.gjs
@@ -1,6 +1,6 @@
import Component from "@glimmer/component";
import { number } from "discourse/lib/formatter";
-import { makeArray } from "discourse-common/lib/helpers";
+import { makeArray } from "discourse/lib/helpers";
import hexToRGBA from "admin/lib/hex-to-rgba";
import Report from "admin/models/report";
import Chart from "./chart";
diff --git a/app/assets/javascripts/admin/addon/components/admin-report-storage-stats.js b/app/assets/javascripts/admin/addon/components/admin-report-storage-stats.js
index ffb3e4ebf1c..33301aa4b9a 100644
--- a/app/assets/javascripts/admin/addon/components/admin-report-storage-stats.js
+++ b/app/assets/javascripts/admin/addon/components/admin-report-storage-stats.js
@@ -2,7 +2,7 @@ import Component from "@ember/component";
import { alias } from "@ember/object/computed";
import { classNames } from "@ember-decorators/component";
import { setting } from "discourse/lib/computed";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
import I18n, { i18n } from "discourse-i18n";
@classNames("admin-report-storage-stats")
diff --git a/app/assets/javascripts/admin/addon/components/admin-report-table-cell.js b/app/assets/javascripts/admin/addon/components/admin-report-table-cell.js
index 9bd4750376b..6ff59249eb9 100644
--- a/app/assets/javascripts/admin/addon/components/admin-report-table-cell.js
+++ b/app/assets/javascripts/admin/addon/components/admin-report-table-cell.js
@@ -6,7 +6,7 @@ import {
classNames,
tagName,
} from "@ember-decorators/component";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
@tagName("td")
@classNames("admin-report-table-cell")
diff --git a/app/assets/javascripts/admin/addon/components/admin-report-table-header.js b/app/assets/javascripts/admin/addon/components/admin-report-table-header.js
index e27ad5a1f03..7c8b5ce2238 100644
--- a/app/assets/javascripts/admin/addon/components/admin-report-table-header.js
+++ b/app/assets/javascripts/admin/addon/components/admin-report-table-header.js
@@ -5,7 +5,7 @@ import {
classNames,
tagName,
} from "@ember-decorators/component";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
@tagName("th")
@classNames("admin-report-table-header")
diff --git a/app/assets/javascripts/admin/addon/components/admin-report-table.js b/app/assets/javascripts/admin/addon/components/admin-report-table.js
index 494636a335e..ee1837ed08b 100644
--- a/app/assets/javascripts/admin/addon/components/admin-report-table.js
+++ b/app/assets/javascripts/admin/addon/components/admin-report-table.js
@@ -2,8 +2,8 @@ import Component from "@ember/component";
import { action } from "@ember/object";
import { alias } from "@ember/object/computed";
import { classNameBindings, classNames } from "@ember-decorators/component";
-import { makeArray } from "discourse-common/lib/helpers";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
+import { makeArray } from "discourse/lib/helpers";
const PAGES_LIMIT = 8;
diff --git a/app/assets/javascripts/admin/addon/components/admin-report.js b/app/assets/javascripts/admin/addon/components/admin-report.js
index 4f51e30c89d..f8853d2886f 100644
--- a/app/assets/javascripts/admin/addon/components/admin-report.js
+++ b/app/assets/javascripts/admin/addon/components/admin-report.js
@@ -4,12 +4,12 @@ import { alias, and, equal, notEmpty, or } from "@ember/object/computed";
import { next } from "@ember/runloop";
import { isPresent } from "@ember/utils";
import { classNameBindings, classNames } from "@ember-decorators/component";
+import discourseComputed from "discourse/lib/decorators";
import { exportEntity } from "discourse/lib/export-csv";
import { outputExportResult } from "discourse/lib/export-result";
+import { makeArray } from "discourse/lib/helpers";
import ReportLoader from "discourse/lib/reports-loader";
import { isTesting } from "discourse-common/config/environment";
-import { makeArray } from "discourse-common/lib/helpers";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
import Report, { DAILY_LIMIT_DAYS, SCHEMA_VERSION } from "admin/models/report";
diff --git a/app/assets/javascripts/admin/addon/components/admin-reports.gjs b/app/assets/javascripts/admin/addon/components/admin-reports.gjs
index 67f87b19465..a413dcd9cda 100644
--- a/app/assets/javascripts/admin/addon/components/admin-reports.gjs
+++ b/app/assets/javascripts/admin/addon/components/admin-reports.gjs
@@ -8,7 +8,7 @@ import { htmlSafe } from "@ember/template";
import ConditionalLoadingSpinner from "discourse/components/conditional-loading-spinner";
import dIcon from "discourse/helpers/d-icon";
import { ajax } from "discourse/lib/ajax";
-import { bind } from "discourse-common/utils/decorators";
+import { bind } from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
export default class AdminReports extends Component {
diff --git a/app/assets/javascripts/admin/addon/components/admin-theme-editor.js b/app/assets/javascripts/admin/addon/components/admin-theme-editor.js
index ae540f1d897..174dcf053cb 100644
--- a/app/assets/javascripts/admin/addon/components/admin-theme-editor.js
+++ b/app/assets/javascripts/admin/addon/components/admin-theme-editor.js
@@ -2,8 +2,8 @@ import Component from "@ember/component";
import { action, computed } from "@ember/object";
import { next } from "@ember/runloop";
import { fmt } from "discourse/lib/computed";
+import discourseComputed from "discourse/lib/decorators";
import { isDocumentRTL } from "discourse/lib/text-direction";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
export default class AdminThemeEditor extends Component {
diff --git a/app/assets/javascripts/admin/addon/components/bulk-user-delete-confirmation.gjs b/app/assets/javascripts/admin/addon/components/bulk-user-delete-confirmation.gjs
index 267d5d5f9f4..eb999b52614 100644
--- a/app/assets/javascripts/admin/addon/components/bulk-user-delete-confirmation.gjs
+++ b/app/assets/javascripts/admin/addon/components/bulk-user-delete-confirmation.gjs
@@ -8,7 +8,7 @@ import DButton from "discourse/components/d-button";
import DModal from "discourse/components/d-modal";
import { ajax } from "discourse/lib/ajax";
import { extractError } from "discourse/lib/ajax-error";
-import { bind } from "discourse-common/utils/decorators";
+import { bind } from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
const BULK_DELETE_CHANNEL = "/bulk-user-delete";
diff --git a/app/assets/javascripts/admin/addon/components/dashboard-new-features.gjs b/app/assets/javascripts/admin/addon/components/dashboard-new-features.gjs
index 5d066b79634..f8abe060481 100644
--- a/app/assets/javascripts/admin/addon/components/dashboard-new-features.gjs
+++ b/app/assets/javascripts/admin/addon/components/dashboard-new-features.gjs
@@ -5,7 +5,7 @@ import { service } from "@ember/service";
import ConditionalLoadingSpinner from "discourse/components/conditional-loading-spinner";
import { ajax } from "discourse/lib/ajax";
import { popupAjaxError } from "discourse/lib/ajax-error";
-import { bind } from "discourse-common/utils/decorators";
+import { bind } from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
import AdminConfigAreaCard from "admin/components/admin-config-area-card";
import AdminConfigAreaEmptyList from "admin/components/admin-config-area-empty-list";
diff --git a/app/assets/javascripts/admin/addon/components/email-styles-editor.js b/app/assets/javascripts/admin/addon/components/email-styles-editor.js
index ccacf59a7e1..71ff2431f1f 100644
--- a/app/assets/javascripts/admin/addon/components/email-styles-editor.js
+++ b/app/assets/javascripts/admin/addon/components/email-styles-editor.js
@@ -2,7 +2,7 @@ import Component from "@ember/component";
import { action, computed } from "@ember/object";
import { reads } from "@ember/object/computed";
import { service } from "@ember/service";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
export default class EmailStylesEditor extends Component {
diff --git a/app/assets/javascripts/admin/addon/components/emoji-uploader.js b/app/assets/javascripts/admin/addon/components/emoji-uploader.js
index 316bec2edbc..d21702e5f39 100644
--- a/app/assets/javascripts/admin/addon/components/emoji-uploader.js
+++ b/app/assets/javascripts/admin/addon/components/emoji-uploader.js
@@ -3,8 +3,8 @@ import { action } from "@ember/object";
import { notEmpty } from "@ember/object/computed";
import { getOwner } from "@ember/owner";
import { isEmpty } from "@ember/utils";
+import discourseComputed from "discourse/lib/decorators";
import UppyUpload from "discourse/lib/uppy/uppy-upload";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
const DEFAULT_GROUP = "default";
diff --git a/app/assets/javascripts/admin/addon/components/emoji-value-list.js b/app/assets/javascripts/admin/addon/components/emoji-value-list.js
index 37972ceb6a2..44b08ceca57 100644
--- a/app/assets/javascripts/admin/addon/components/emoji-value-list.js
+++ b/app/assets/javascripts/admin/addon/components/emoji-value-list.js
@@ -4,8 +4,8 @@ import { schedule } from "@ember/runloop";
import { service } from "@ember/service";
import { classNameBindings } from "@ember-decorators/component";
import EmojiPickerDetached from "discourse/components/emoji-picker/detached";
+import discourseComputed from "discourse/lib/decorators";
import { emojiUrlFor } from "discourse/lib/text";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
@classNameBindings(":value-list", ":emoji-list")
diff --git a/app/assets/javascripts/admin/addon/components/inline-edit-checkbox.js b/app/assets/javascripts/admin/addon/components/inline-edit-checkbox.js
index d7ba4bc40c0..4618a97abf0 100644
--- a/app/assets/javascripts/admin/addon/components/inline-edit-checkbox.js
+++ b/app/assets/javascripts/admin/addon/components/inline-edit-checkbox.js
@@ -1,7 +1,7 @@
import Component from "@ember/component";
import { action } from "@ember/object";
import { classNames } from "@ember-decorators/component";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
@classNames("inline-edit")
export default class InlineEditCheckbox extends Component {
diff --git a/app/assets/javascripts/admin/addon/components/modal/install-theme.gjs b/app/assets/javascripts/admin/addon/components/modal/install-theme.gjs
index 37e5ac48e7e..08583c306e3 100644
--- a/app/assets/javascripts/admin/addon/components/modal/install-theme.gjs
+++ b/app/assets/javascripts/admin/addon/components/modal/install-theme.gjs
@@ -14,7 +14,7 @@ import dIcon from "discourse/helpers/d-icon";
import withEventValue from "discourse/helpers/with-event-value";
import { ajax } from "discourse/lib/ajax";
import { popupAjaxError } from "discourse/lib/ajax-error";
-import { POPULAR_THEMES } from "discourse-common/lib/popular-themes";
+import { POPULAR_THEMES } from "discourse/lib/popular-themes";
import { i18n } from "discourse-i18n";
import InstallThemeItem from "admin/components/install-theme-item";
import { COMPONENTS, THEMES } from "admin/models/theme";
diff --git a/app/assets/javascripts/admin/addon/components/modal/merge-users-progress.js b/app/assets/javascripts/admin/addon/components/modal/merge-users-progress.js
index 344a1e85219..bd88fb6b280 100644
--- a/app/assets/javascripts/admin/addon/components/modal/merge-users-progress.js
+++ b/app/assets/javascripts/admin/addon/components/modal/merge-users-progress.js
@@ -1,8 +1,8 @@
import Component from "@glimmer/component";
import { tracked } from "@glimmer/tracking";
import { service } from "@ember/service";
+import { bind } from "discourse/lib/decorators";
import DiscourseURL from "discourse/lib/url";
-import { bind } from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
export default class MergeUsersProgress extends Component {
diff --git a/app/assets/javascripts/admin/addon/components/permalink-form.js b/app/assets/javascripts/admin/addon/components/permalink-form.js
index e903e5a6bfa..031c849e393 100644
--- a/app/assets/javascripts/admin/addon/components/permalink-form.js
+++ b/app/assets/javascripts/admin/addon/components/permalink-form.js
@@ -4,7 +4,7 @@ import { schedule } from "@ember/runloop";
import { service } from "@ember/service";
import { tagName } from "@ember-decorators/component";
import { fmt } from "discourse/lib/computed";
-import discourseComputed, { bind } from "discourse-common/utils/decorators";
+import discourseComputed, { bind } from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
import Permalink from "admin/models/permalink";
diff --git a/app/assets/javascripts/admin/addon/components/schema-theme-setting/editor.gjs b/app/assets/javascripts/admin/addon/components/schema-theme-setting/editor.gjs
index 0335f70f41b..b2484c777bf 100644
--- a/app/assets/javascripts/admin/addon/components/schema-theme-setting/editor.gjs
+++ b/app/assets/javascripts/admin/addon/components/schema-theme-setting/editor.gjs
@@ -6,7 +6,7 @@ import { service } from "@ember/service";
import { gt } from "truth-helpers";
import DButton from "discourse/components/d-button";
import { popupAjaxError } from "discourse/lib/ajax-error";
-import { cloneJSON } from "discourse-common/lib/object";
+import { cloneJSON } from "discourse/lib/object";
import { i18n } from "discourse-i18n";
import Tree from "admin/components/schema-theme-setting/editor/tree";
import FieldInput from "admin/components/schema-theme-setting/field";
diff --git a/app/assets/javascripts/admin/addon/components/screened-ip-address-form.js b/app/assets/javascripts/admin/addon/components/screened-ip-address-form.js
index 452382823b7..186192d5f85 100644
--- a/app/assets/javascripts/admin/addon/components/screened-ip-address-form.js
+++ b/app/assets/javascripts/admin/addon/components/screened-ip-address-form.js
@@ -3,7 +3,7 @@ import { action } from "@ember/object";
import { schedule } from "@ember/runloop";
import { service } from "@ember/service";
import { classNames, tagName } from "@ember-decorators/component";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
import ScreenedIpAddress from "admin/models/screened-ip-address";
diff --git a/app/assets/javascripts/admin/addon/components/simple-list.js b/app/assets/javascripts/admin/addon/components/simple-list.js
index 2f89c313a78..3733bbb53f2 100644
--- a/app/assets/javascripts/admin/addon/components/simple-list.js
+++ b/app/assets/javascripts/admin/addon/components/simple-list.js
@@ -4,7 +4,7 @@ import { action } from "@ember/object";
import { empty } from "@ember/object/computed";
import { isEmpty } from "@ember/utils";
import { classNameBindings } from "@ember-decorators/component";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
@classNameBindings(":simple-list", ":value-list")
export default class SimpleList extends Component {
diff --git a/app/assets/javascripts/admin/addon/components/site-settings/compact-list.gjs b/app/assets/javascripts/admin/addon/components/site-settings/compact-list.gjs
index 438abc49eab..036ebd97a80 100644
--- a/app/assets/javascripts/admin/addon/components/site-settings/compact-list.gjs
+++ b/app/assets/javascripts/admin/addon/components/site-settings/compact-list.gjs
@@ -2,7 +2,7 @@ import Component from "@glimmer/component";
import { tracked } from "@glimmer/tracking";
import { hash } from "@ember/helper";
import { action } from "@ember/object";
-import { makeArray } from "discourse-common/lib/helpers";
+import { makeArray } from "discourse/lib/helpers";
import ListSetting from "select-kit/components/list-setting";
export default class CompactList extends Component {
diff --git a/app/assets/javascripts/admin/addon/components/site-settings/file-types-list.gjs b/app/assets/javascripts/admin/addon/components/site-settings/file-types-list.gjs
index 2d5ea461726..fd246ce7791 100644
--- a/app/assets/javascripts/admin/addon/components/site-settings/file-types-list.gjs
+++ b/app/assets/javascripts/admin/addon/components/site-settings/file-types-list.gjs
@@ -5,7 +5,7 @@ import { action } from "@ember/object";
import { service } from "@ember/service";
import { isEmpty } from "@ember/utils";
import DButton from "discourse/components/d-button";
-import { makeArray } from "discourse-common/lib/helpers";
+import { makeArray } from "discourse/lib/helpers";
import { i18n } from "discourse-i18n";
import ListSetting from "select-kit/components/list-setting";
diff --git a/app/assets/javascripts/admin/addon/components/site-settings/tag-group-list.js b/app/assets/javascripts/admin/addon/components/site-settings/tag-group-list.js
index 5d11c75027f..ea6382e4bcf 100644
--- a/app/assets/javascripts/admin/addon/components/site-settings/tag-group-list.js
+++ b/app/assets/javascripts/admin/addon/components/site-settings/tag-group-list.js
@@ -1,6 +1,6 @@
import Component from "@ember/component";
import { action } from "@ember/object";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
export default class TagGroupList extends Component {
@discourseComputed("value")
diff --git a/app/assets/javascripts/admin/addon/components/site-settings/tag-list.js b/app/assets/javascripts/admin/addon/components/site-settings/tag-list.js
index 6f1b59c5eaf..2c2d6d2a340 100644
--- a/app/assets/javascripts/admin/addon/components/site-settings/tag-list.js
+++ b/app/assets/javascripts/admin/addon/components/site-settings/tag-list.js
@@ -1,6 +1,6 @@
import Component from "@ember/component";
import { action } from "@ember/object";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
export default class TagList extends Component {
@discourseComputed("value")
diff --git a/app/assets/javascripts/admin/addon/components/site-text-summary.gjs b/app/assets/javascripts/admin/addon/components/site-text-summary.gjs
index 5eb204fc135..2c0cc56079f 100644
--- a/app/assets/javascripts/admin/addon/components/site-text-summary.gjs
+++ b/app/assets/javascripts/admin/addon/components/site-text-summary.gjs
@@ -4,8 +4,8 @@ import { action } from "@ember/object";
import didInsert from "@ember/render-modifiers/modifiers/did-insert";
import DButton from "discourse/components/d-button";
import concatClass from "discourse/helpers/concat-class";
+import { bind } from "discourse/lib/decorators";
import highlightHTML from "discourse/lib/highlight-html";
-import { bind } from "discourse-common/utils/decorators";
export default class SiteTextSummary extends Component {
@action
diff --git a/app/assets/javascripts/admin/addon/components/themes-list-item.gjs b/app/assets/javascripts/admin/addon/components/themes-list-item.gjs
index 5d92b83d83b..ef7adbd18e0 100644
--- a/app/assets/javascripts/admin/addon/components/themes-list-item.gjs
+++ b/app/assets/javascripts/admin/addon/components/themes-list-item.gjs
@@ -8,8 +8,8 @@ import { htmlSafe } from "@ember/template";
import PluginOutlet from "discourse/components/plugin-outlet";
import concatClass from "discourse/helpers/concat-class";
import icon from "discourse/helpers/d-icon";
-import escape from "discourse-common/lib/escape";
-import { iconHTML } from "discourse-common/lib/icon-library";
+import escape from "discourse/lib/escape";
+import { iconHTML } from "discourse/lib/icon-library";
import { i18n } from "discourse-i18n";
const MAX_COMPONENTS = 4;
diff --git a/app/assets/javascripts/admin/addon/components/themes-list.js b/app/assets/javascripts/admin/addon/components/themes-list.js
index bcfed2ee1dd..59e4c26c77f 100644
--- a/app/assets/javascripts/admin/addon/components/themes-list.js
+++ b/app/assets/javascripts/admin/addon/components/themes-list.js
@@ -4,7 +4,7 @@ import { equal, gt, gte } from "@ember/object/computed";
import { service } from "@ember/service";
import { classNames } from "@ember-decorators/component";
import DeleteThemesConfirm from "discourse/components/modal/delete-themes-confirm";
-import discourseComputed, { bind } from "discourse-common/utils/decorators";
+import discourseComputed, { bind } from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
import { COMPONENTS, THEMES } from "admin/models/theme";
diff --git a/app/assets/javascripts/admin/addon/components/value-list.js b/app/assets/javascripts/admin/addon/components/value-list.js
index 9c37faabae8..eb8898d3897 100644
--- a/app/assets/javascripts/admin/addon/components/value-list.js
+++ b/app/assets/javascripts/admin/addon/components/value-list.js
@@ -2,8 +2,8 @@ import Component from "@ember/component";
import { action } from "@ember/object";
import { empty, reads } from "@ember/object/computed";
import { classNames } from "@ember-decorators/component";
-import { makeArray } from "discourse-common/lib/helpers";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
+import { makeArray } from "discourse/lib/helpers";
@classNames("value-list")
export default class ValueList extends Component {
diff --git a/app/assets/javascripts/admin/addon/components/watched-word-form.js b/app/assets/javascripts/admin/addon/components/watched-word-form.js
index df2ee1e0422..c9b9c99e05a 100644
--- a/app/assets/javascripts/admin/addon/components/watched-word-form.js
+++ b/app/assets/javascripts/admin/addon/components/watched-word-form.js
@@ -6,7 +6,7 @@ import { isEmpty } from "@ember/utils";
import { classNames, tagName } from "@ember-decorators/component";
import { observes } from "@ember-decorators/object";
import { popupAjaxError } from "discourse/lib/ajax-error";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
import WatchedWord from "admin/models/watched-word";
diff --git a/app/assets/javascripts/admin/addon/components/webhook-events.js b/app/assets/javascripts/admin/addon/components/webhook-events.js
index c4465bf49fa..20b4b46869c 100644
--- a/app/assets/javascripts/admin/addon/components/webhook-events.js
+++ b/app/assets/javascripts/admin/addon/components/webhook-events.js
@@ -5,7 +5,7 @@ import { gt, readOnly } from "@ember/object/computed";
import { service } from "@ember/service";
import { ajax } from "discourse/lib/ajax";
import { popupAjaxError } from "discourse/lib/ajax-error";
-import { bind } from "discourse-common/utils/decorators";
+import { bind } from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
export default class WebhookEvents extends Component {
diff --git a/app/assets/javascripts/admin/addon/controllers/admin-api-keys-new.js b/app/assets/javascripts/admin/addon/controllers/admin-api-keys-new.js
index 32d7bd07a4c..b5350484f6b 100644
--- a/app/assets/javascripts/admin/addon/controllers/admin-api-keys-new.js
+++ b/app/assets/javascripts/admin/addon/controllers/admin-api-keys-new.js
@@ -5,7 +5,7 @@ import { service } from "@ember/service";
import { isBlank } from "@ember/utils";
import { ajax } from "discourse/lib/ajax";
import { popupAjaxError } from "discourse/lib/ajax-error";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
import ApiKeyUrlsModal from "../components/modal/api-key-urls";
diff --git a/app/assets/javascripts/admin/addon/controllers/admin-backups-index.js b/app/assets/javascripts/admin/addon/controllers/admin-backups-index.js
index 865133ec3fd..84233b36339 100644
--- a/app/assets/javascripts/admin/addon/controllers/admin-backups-index.js
+++ b/app/assets/javascripts/admin/addon/controllers/admin-backups-index.js
@@ -5,8 +5,8 @@ import { service } from "@ember/service";
import { ajax } from "discourse/lib/ajax";
import { popupAjaxError } from "discourse/lib/ajax-error";
import { computedI18n, setting } from "discourse/lib/computed";
-import getURL from "discourse-common/lib/get-url";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
+import getURL from "discourse/lib/get-url";
import { i18n } from "discourse-i18n";
export default class AdminBackupsIndexController extends Controller {
diff --git a/app/assets/javascripts/admin/addon/controllers/admin-badges/show.js b/app/assets/javascripts/admin/addon/controllers/admin-badges/show.js
index dc7d5735b26..f6398f9319a 100644
--- a/app/assets/javascripts/admin/addon/controllers/admin-badges/show.js
+++ b/app/assets/javascripts/admin/addon/controllers/admin-badges/show.js
@@ -5,7 +5,7 @@ import { service } from "@ember/service";
import { isNone } from "@ember/utils";
import { ajax } from "discourse/lib/ajax";
import { popupAjaxError } from "discourse/lib/ajax-error";
-import getURL from "discourse-common/lib/get-url";
+import getURL from "discourse/lib/get-url";
import { i18n } from "discourse-i18n";
import BadgePreviewModal from "../../components/modal/badge-preview";
diff --git a/app/assets/javascripts/admin/addon/controllers/admin-customize-colors-show.js b/app/assets/javascripts/admin/addon/controllers/admin-customize-colors-show.js
index f8b5756e913..d9dece5aaaf 100644
--- a/app/assets/javascripts/admin/addon/controllers/admin-customize-colors-show.js
+++ b/app/assets/javascripts/admin/addon/controllers/admin-customize-colors-show.js
@@ -1,8 +1,8 @@
import Controller from "@ember/controller";
import { action, computed } from "@ember/object";
import { service } from "@ember/service";
+import discourseLater from "discourse/lib/later";
import { clipboardCopy } from "discourse/lib/utilities";
-import discourseLater from "discourse-common/lib/later";
import { i18n } from "discourse-i18n";
export default class AdminCustomizeColorsShowController extends Controller {
diff --git a/app/assets/javascripts/admin/addon/controllers/admin-customize-colors.js b/app/assets/javascripts/admin/addon/controllers/admin-customize-colors.js
index cbb3ff559d4..1fa992114f5 100644
--- a/app/assets/javascripts/admin/addon/controllers/admin-customize-colors.js
+++ b/app/assets/javascripts/admin/addon/controllers/admin-customize-colors.js
@@ -1,7 +1,7 @@
import Controller from "@ember/controller";
import EmberObject, { action } from "@ember/object";
import { service } from "@ember/service";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
import ColorSchemeSelectBaseModal from "admin/components/modal/color-scheme-select-base";
diff --git a/app/assets/javascripts/admin/addon/controllers/admin-customize-email-style-edit.js b/app/assets/javascripts/admin/addon/controllers/admin-customize-email-style-edit.js
index 38d048e10f8..71d0764c394 100644
--- a/app/assets/javascripts/admin/addon/controllers/admin-customize-email-style-edit.js
+++ b/app/assets/javascripts/admin/addon/controllers/admin-customize-email-style-edit.js
@@ -1,7 +1,7 @@
import Controller from "@ember/controller";
import { action } from "@ember/object";
import { service } from "@ember/service";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
export default class AdminCustomizeEmailStyleEditController extends Controller {
diff --git a/app/assets/javascripts/admin/addon/controllers/admin-customize-email-templates-edit.js b/app/assets/javascripts/admin/addon/controllers/admin-customize-email-templates-edit.js
index 0114a52a284..f326158cb45 100644
--- a/app/assets/javascripts/admin/addon/controllers/admin-customize-email-templates-edit.js
+++ b/app/assets/javascripts/admin/addon/controllers/admin-customize-email-templates-edit.js
@@ -2,8 +2,8 @@ import Controller, { inject as controller } from "@ember/controller";
import { action } from "@ember/object";
import { service } from "@ember/service";
import { popupAjaxError } from "discourse/lib/ajax-error";
+import discourseComputed from "discourse/lib/decorators";
import { bufferedProperty } from "discourse/mixins/buffered-content";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
export default class AdminCustomizeEmailTemplatesEditController extends Controller.extend(
diff --git a/app/assets/javascripts/admin/addon/controllers/admin-customize-themes-edit.js b/app/assets/javascripts/admin/addon/controllers/admin-customize-themes-edit.js
index 18a301db91e..b53cf9c3a36 100644
--- a/app/assets/javascripts/admin/addon/controllers/admin-customize-themes-edit.js
+++ b/app/assets/javascripts/admin/addon/controllers/admin-customize-themes-edit.js
@@ -2,7 +2,7 @@ import Controller from "@ember/controller";
import { action } from "@ember/object";
import { service } from "@ember/service";
import { url } from "discourse/lib/computed";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
export default class AdminCustomizeThemesEditController extends Controller {
diff --git a/app/assets/javascripts/admin/addon/controllers/admin-customize-themes-show.js b/app/assets/javascripts/admin/addon/controllers/admin-customize-themes-show.js
index b4487152eab..11fd5630825 100644
--- a/app/assets/javascripts/admin/addon/controllers/admin-customize-themes-show.js
+++ b/app/assets/javascripts/admin/addon/controllers/admin-customize-themes-show.js
@@ -12,8 +12,8 @@ import { service } from "@ember/service";
import { ajax } from "discourse/lib/ajax";
import { popupAjaxError } from "discourse/lib/ajax-error";
import { url } from "discourse/lib/computed";
-import { makeArray } from "discourse-common/lib/helpers";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
+import { makeArray } from "discourse/lib/helpers";
import { i18n } from "discourse-i18n";
import ThemeSettingsEditor from "admin/components/theme-settings-editor";
import { COMPONENTS, THEMES } from "admin/models/theme";
diff --git a/app/assets/javascripts/admin/addon/controllers/admin-customize-themes.js b/app/assets/javascripts/admin/addon/controllers/admin-customize-themes.js
index 57049eaee5c..5e9a9881fee 100644
--- a/app/assets/javascripts/admin/addon/controllers/admin-customize-themes.js
+++ b/app/assets/javascripts/admin/addon/controllers/admin-customize-themes.js
@@ -1,5 +1,5 @@
import Controller from "@ember/controller";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
import { THEMES } from "admin/models/theme";
export default class AdminCustomizeThemesController extends Controller {
diff --git a/app/assets/javascripts/admin/addon/controllers/admin-dashboard-general.js b/app/assets/javascripts/admin/addon/controllers/admin-dashboard-general.js
index b9ad1f9b237..b46b9991045 100644
--- a/app/assets/javascripts/admin/addon/controllers/admin-dashboard-general.js
+++ b/app/assets/javascripts/admin/addon/controllers/admin-dashboard-general.js
@@ -2,9 +2,9 @@ import { inject as controller } from "@ember/controller";
import { computed } from "@ember/object";
import { service } from "@ember/service";
import { setting } from "discourse/lib/computed";
-import getURL from "discourse-common/lib/get-url";
-import { makeArray } from "discourse-common/lib/helpers";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
+import getURL from "discourse/lib/get-url";
+import { makeArray } from "discourse/lib/helpers";
import { i18n } from "discourse-i18n";
import AdminDashboard from "admin/models/admin-dashboard";
import Report from "admin/models/report";
diff --git a/app/assets/javascripts/admin/addon/controllers/admin-dashboard-moderation.js b/app/assets/javascripts/admin/addon/controllers/admin-dashboard-moderation.js
index a5fe8a27446..5c2199ff4ff 100644
--- a/app/assets/javascripts/admin/addon/controllers/admin-dashboard-moderation.js
+++ b/app/assets/javascripts/admin/addon/controllers/admin-dashboard-moderation.js
@@ -1,5 +1,5 @@
import { computed } from "@ember/object";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
import AdminDashboardTabController from "./admin-dashboard-tab";
export default class AdminDashboardModerationController extends AdminDashboardTabController {
diff --git a/app/assets/javascripts/admin/addon/controllers/admin-dashboard-reports.js b/app/assets/javascripts/admin/addon/controllers/admin-dashboard-reports.js
index a7f615f68f0..e81df3b80c1 100644
--- a/app/assets/javascripts/admin/addon/controllers/admin-dashboard-reports.js
+++ b/app/assets/javascripts/admin/addon/controllers/admin-dashboard-reports.js
@@ -1,8 +1,8 @@
import Controller from "@ember/controller";
import { action, get } from "@ember/object";
+import discourseDebounce from "discourse/lib/debounce";
+import discourseComputed from "discourse/lib/decorators";
import { INPUT_DELAY } from "discourse-common/config/environment";
-import discourseDebounce from "discourse-common/lib/debounce";
-import discourseComputed from "discourse-common/utils/decorators";
export default class AdminDashboardReportsController extends Controller {
filter = null;
diff --git a/app/assets/javascripts/admin/addon/controllers/admin-dashboard.js b/app/assets/javascripts/admin/addon/controllers/admin-dashboard.js
index 1d77fe281e4..9e1680a8918 100644
--- a/app/assets/javascripts/admin/addon/controllers/admin-dashboard.js
+++ b/app/assets/javascripts/admin/addon/controllers/admin-dashboard.js
@@ -2,7 +2,7 @@ import Controller, { inject as controller } from "@ember/controller";
import { action, computed } from "@ember/object";
import { service } from "@ember/service";
import { setting } from "discourse/lib/computed";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
import AdminDashboard from "admin/models/admin-dashboard";
import VersionCheck from "admin/models/version-check";
diff --git a/app/assets/javascripts/admin/addon/controllers/admin-email-bounced.js b/app/assets/javascripts/admin/addon/controllers/admin-email-bounced.js
index 834d6fa9aa8..fbf706526c6 100644
--- a/app/assets/javascripts/admin/addon/controllers/admin-email-bounced.js
+++ b/app/assets/javascripts/admin/addon/controllers/admin-email-bounced.js
@@ -1,7 +1,7 @@
import { action } from "@ember/object";
import { observes } from "@ember-decorators/object";
+import discourseDebounce from "discourse/lib/debounce";
import { INPUT_DELAY } from "discourse-common/config/environment";
-import discourseDebounce from "discourse-common/lib/debounce";
import AdminEmailLogsController from "admin/controllers/admin-email-logs";
export default class AdminEmailBouncedController extends AdminEmailLogsController {
diff --git a/app/assets/javascripts/admin/addon/controllers/admin-email-received.js b/app/assets/javascripts/admin/addon/controllers/admin-email-received.js
index 1f55fec6eb3..e8306f3b17d 100644
--- a/app/assets/javascripts/admin/addon/controllers/admin-email-received.js
+++ b/app/assets/javascripts/admin/addon/controllers/admin-email-received.js
@@ -1,7 +1,7 @@
import { action } from "@ember/object";
import { observes } from "@ember-decorators/object";
+import discourseDebounce from "discourse/lib/debounce";
import { INPUT_DELAY } from "discourse-common/config/environment";
-import discourseDebounce from "discourse-common/lib/debounce";
import AdminEmailLogsController from "admin/controllers/admin-email-logs";
import IncomingEmail from "admin/models/incoming-email";
diff --git a/app/assets/javascripts/admin/addon/controllers/admin-email-rejected.js b/app/assets/javascripts/admin/addon/controllers/admin-email-rejected.js
index 60bfd89dd74..a33112ed383 100644
--- a/app/assets/javascripts/admin/addon/controllers/admin-email-rejected.js
+++ b/app/assets/javascripts/admin/addon/controllers/admin-email-rejected.js
@@ -1,7 +1,7 @@
import { action } from "@ember/object";
import { observes } from "@ember-decorators/object";
+import discourseDebounce from "discourse/lib/debounce";
import { INPUT_DELAY } from "discourse-common/config/environment";
-import discourseDebounce from "discourse-common/lib/debounce";
import AdminEmailLogsController from "admin/controllers/admin-email-logs";
import IncomingEmail from "admin/models/incoming-email";
diff --git a/app/assets/javascripts/admin/addon/controllers/admin-email-sent.js b/app/assets/javascripts/admin/addon/controllers/admin-email-sent.js
index ac0d7d43f33..d3156fbb7d5 100644
--- a/app/assets/javascripts/admin/addon/controllers/admin-email-sent.js
+++ b/app/assets/javascripts/admin/addon/controllers/admin-email-sent.js
@@ -1,6 +1,6 @@
import { observes } from "@ember-decorators/object";
+import discourseDebounce from "discourse/lib/debounce";
import { INPUT_DELAY } from "discourse-common/config/environment";
-import discourseDebounce from "discourse-common/lib/debounce";
import AdminEmailLogsController from "admin/controllers/admin-email-logs";
export default class AdminEmailSentController extends AdminEmailLogsController {
diff --git a/app/assets/javascripts/admin/addon/controllers/admin-email-skipped.js b/app/assets/javascripts/admin/addon/controllers/admin-email-skipped.js
index d7082aecd33..186514eb0ca 100644
--- a/app/assets/javascripts/admin/addon/controllers/admin-email-skipped.js
+++ b/app/assets/javascripts/admin/addon/controllers/admin-email-skipped.js
@@ -1,6 +1,6 @@
import { observes } from "@ember-decorators/object";
+import discourseDebounce from "discourse/lib/debounce";
import { INPUT_DELAY } from "discourse-common/config/environment";
-import discourseDebounce from "discourse-common/lib/debounce";
import AdminEmailLogsController from "admin/controllers/admin-email-logs";
export default class AdminEmailSkippedController extends AdminEmailLogsController {
diff --git a/app/assets/javascripts/admin/addon/controllers/admin-embedding-index.js b/app/assets/javascripts/admin/addon/controllers/admin-embedding-index.js
index 2e86b8d194b..bb31066ff48 100644
--- a/app/assets/javascripts/admin/addon/controllers/admin-embedding-index.js
+++ b/app/assets/javascripts/admin/addon/controllers/admin-embedding-index.js
@@ -2,7 +2,7 @@ import Controller, { inject as controller } from "@ember/controller";
import { action } from "@ember/object";
import { alias } from "@ember/object/computed";
import { service } from "@ember/service";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
export default class AdminEmbeddingIndexController extends Controller {
@service router;
diff --git a/app/assets/javascripts/admin/addon/controllers/admin-logs-screened-ip-addresses.js b/app/assets/javascripts/admin/addon/controllers/admin-logs-screened-ip-addresses.js
index 5157bf67ca6..4b805a1b425 100644
--- a/app/assets/javascripts/admin/addon/controllers/admin-logs-screened-ip-addresses.js
+++ b/app/assets/javascripts/admin/addon/controllers/admin-logs-screened-ip-addresses.js
@@ -2,10 +2,10 @@ import Controller from "@ember/controller";
import { action } from "@ember/object";
import { service } from "@ember/service";
import { observes } from "@ember-decorators/object";
+import discourseDebounce from "discourse/lib/debounce";
import { exportEntity } from "discourse/lib/export-csv";
import { outputExportResult } from "discourse/lib/export-result";
import { INPUT_DELAY } from "discourse-common/config/environment";
-import discourseDebounce from "discourse-common/lib/debounce";
import { i18n } from "discourse-i18n";
import ScreenedIpAddress from "admin/models/screened-ip-address";
diff --git a/app/assets/javascripts/admin/addon/controllers/admin-logs-staff-action-logs.js b/app/assets/javascripts/admin/addon/controllers/admin-logs-staff-action-logs.js
index 87836507465..35b1a58687a 100644
--- a/app/assets/javascripts/admin/addon/controllers/admin-logs-staff-action-logs.js
+++ b/app/assets/javascripts/admin/addon/controllers/admin-logs-staff-action-logs.js
@@ -2,9 +2,9 @@ import Controller from "@ember/controller";
import EmberObject, { action } from "@ember/object";
import { scheduleOnce } from "@ember/runloop";
import { service } from "@ember/service";
+import discourseComputed from "discourse/lib/decorators";
import { exportEntity } from "discourse/lib/export-csv";
import { outputExportResult } from "discourse/lib/export-result";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
import AdminStaffActionLogComponent from "../components/modal/staff-action-log-change";
import StaffActionLogDetailsModal from "../components/modal/staff-action-log-details";
diff --git a/app/assets/javascripts/admin/addon/controllers/admin-permalinks-index.js b/app/assets/javascripts/admin/addon/controllers/admin-permalinks-index.js
index 35697f515c0..fc29a5f9ea5 100644
--- a/app/assets/javascripts/admin/addon/controllers/admin-permalinks-index.js
+++ b/app/assets/javascripts/admin/addon/controllers/admin-permalinks-index.js
@@ -3,9 +3,9 @@ import { action } from "@ember/object";
import { or } from "@ember/object/computed";
import { service } from "@ember/service";
import { observes } from "@ember-decorators/object";
+import discourseDebounce from "discourse/lib/debounce";
import { clipboardCopy } from "discourse/lib/utilities";
import { INPUT_DELAY } from "discourse-common/config/environment";
-import discourseDebounce from "discourse-common/lib/debounce";
import { i18n } from "discourse-i18n";
import Permalink from "admin/models/permalink";
diff --git a/app/assets/javascripts/admin/addon/controllers/admin-reports-show.js b/app/assets/javascripts/admin/addon/controllers/admin-reports-show.js
index c84696338c7..d0118e3f00e 100644
--- a/app/assets/javascripts/admin/addon/controllers/admin-reports-show.js
+++ b/app/assets/javascripts/admin/addon/controllers/admin-reports-show.js
@@ -1,5 +1,5 @@
import Controller from "@ember/controller";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
export default class AdminReportsShowController extends Controller {
queryParams = ["start_date", "end_date", "filters", "chart_grouping", "mode"];
diff --git a/app/assets/javascripts/admin/addon/controllers/admin-site-settings-category.js b/app/assets/javascripts/admin/addon/controllers/admin-site-settings-category.js
index 50202e00f32..03d1d1a9916 100644
--- a/app/assets/javascripts/admin/addon/controllers/admin-site-settings-category.js
+++ b/app/assets/javascripts/admin/addon/controllers/admin-site-settings-category.js
@@ -1,5 +1,5 @@
import Controller, { inject as controller } from "@ember/controller";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
export default class AdminSiteSettingsCategoryController extends Controller {
@controller adminSiteSettings;
diff --git a/app/assets/javascripts/admin/addon/controllers/admin-site-settings.js b/app/assets/javascripts/admin/addon/controllers/admin-site-settings.js
index 8bb488991e3..7ecad6bb810 100644
--- a/app/assets/javascripts/admin/addon/controllers/admin-site-settings.js
+++ b/app/assets/javascripts/admin/addon/controllers/admin-site-settings.js
@@ -3,9 +3,9 @@ import { action } from "@ember/object";
import { alias } from "@ember/object/computed";
import { service } from "@ember/service";
import { isEmpty } from "@ember/utils";
+import { debounce } from "discourse/lib/decorators";
import SiteSettingFilter from "discourse/lib/site-setting-filter";
import { INPUT_DELAY } from "discourse-common/config/environment";
-import { debounce } from "discourse-common/utils/decorators";
export default class AdminSiteSettingsController extends Controller {
@service router;
diff --git a/app/assets/javascripts/admin/addon/controllers/admin-site-text-edit.js b/app/assets/javascripts/admin/addon/controllers/admin-site-text-edit.js
index 9b89624ea2c..4f8774a094c 100644
--- a/app/assets/javascripts/admin/addon/controllers/admin-site-text-edit.js
+++ b/app/assets/javascripts/admin/addon/controllers/admin-site-text-edit.js
@@ -2,8 +2,8 @@ import Controller from "@ember/controller";
import { action } from "@ember/object";
import { service } from "@ember/service";
import { popupAjaxError } from "discourse/lib/ajax-error";
+import discourseComputed from "discourse/lib/decorators";
import { bufferedProperty } from "discourse/mixins/buffered-content";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
export default class AdminSiteTextEdit extends Controller.extend(
diff --git a/app/assets/javascripts/admin/addon/controllers/admin-site-text-index.js b/app/assets/javascripts/admin/addon/controllers/admin-site-text-index.js
index d4ce5a2dad9..07aa61b57ef 100644
--- a/app/assets/javascripts/admin/addon/controllers/admin-site-text-index.js
+++ b/app/assets/javascripts/admin/addon/controllers/admin-site-text-index.js
@@ -2,8 +2,8 @@ import { tracked } from "@glimmer/tracking";
import Controller from "@ember/controller";
import { action } from "@ember/object";
import { service } from "@ember/service";
+import discourseDebounce from "discourse/lib/debounce";
import { disableImplicitInjections } from "discourse/lib/implicit-injections";
-import discourseDebounce from "discourse-common/lib/debounce";
import ReseedModal from "admin/components/modal/reseed";
let lastSearch;
diff --git a/app/assets/javascripts/admin/addon/controllers/admin-user-badges.js b/app/assets/javascripts/admin/addon/controllers/admin-user-badges.js
index e0edecd5818..4bd6791f2f7 100644
--- a/app/assets/javascripts/admin/addon/controllers/admin-user-badges.js
+++ b/app/assets/javascripts/admin/addon/controllers/admin-user-badges.js
@@ -4,9 +4,9 @@ import { alias, empty, sort } from "@ember/object/computed";
import { next } from "@ember/runloop";
import { service } from "@ember/service";
import { popupAjaxError } from "discourse/lib/ajax-error";
+import discourseComputed from "discourse/lib/decorators";
import { grantableBadges } from "discourse/lib/grant-badge-utils";
import UserBadge from "discourse/models/user-badge";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
import AdminUser from "admin/models/admin-user";
diff --git a/app/assets/javascripts/admin/addon/controllers/admin-user-index.js b/app/assets/javascripts/admin/addon/controllers/admin-user-index.js
index 4caad0d9435..5f4aab9ee3f 100644
--- a/app/assets/javascripts/admin/addon/controllers/admin-user-index.js
+++ b/app/assets/javascripts/admin/addon/controllers/admin-user-index.js
@@ -7,9 +7,9 @@ import { ajax } from "discourse/lib/ajax";
import { popupAjaxError } from "discourse/lib/ajax-error";
import CanCheckEmailsHelper from "discourse/lib/can-check-emails-helper";
import { fmt, propertyNotEqual, setting } from "discourse/lib/computed";
+import discourseComputed from "discourse/lib/decorators";
+import getURL from "discourse/lib/get-url";
import DiscourseURL, { userPath } from "discourse/lib/url";
-import getURL from "discourse-common/lib/get-url";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
import AdminUser from "admin/models/admin-user";
import DeletePostsConfirmationModal from "../components/modal/delete-posts-confirmation";
diff --git a/app/assets/javascripts/admin/addon/controllers/admin-users-list-show.js b/app/assets/javascripts/admin/addon/controllers/admin-users-list-show.js
index f087cbd9379..ac7e2114795 100644
--- a/app/assets/javascripts/admin/addon/controllers/admin-users-list-show.js
+++ b/app/assets/javascripts/admin/addon/controllers/admin-users-list-show.js
@@ -4,9 +4,9 @@ import { action, computed } from "@ember/object";
import { service } from "@ember/service";
import CanCheckEmailsHelper from "discourse/lib/can-check-emails-helper";
import { computedI18n, setting } from "discourse/lib/computed";
+import discourseDebounce from "discourse/lib/debounce";
+import discourseComputed, { bind } from "discourse/lib/decorators";
import { INPUT_DELAY } from "discourse-common/config/environment";
-import discourseDebounce from "discourse-common/lib/debounce";
-import discourseComputed, { bind } from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
import BulkUserDeleteConfirmation from "admin/components/bulk-user-delete-confirmation";
import AdminUser from "admin/models/admin-user";
diff --git a/app/assets/javascripts/admin/addon/controllers/admin-watched-words-action.js b/app/assets/javascripts/admin/addon/controllers/admin-watched-words-action.js
index 40050a96efb..078f8ca989f 100644
--- a/app/assets/javascripts/admin/addon/controllers/admin-watched-words-action.js
+++ b/app/assets/javascripts/admin/addon/controllers/admin-watched-words-action.js
@@ -5,7 +5,7 @@ import { schedule } from "@ember/runloop";
import { service } from "@ember/service";
import { ajax } from "discourse/lib/ajax";
import { fmt } from "discourse/lib/computed";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
import WatchedWordTestingModal from "admin/components/modal/watched-word-testing";
import WatchedWord from "admin/models/watched-word";
diff --git a/app/assets/javascripts/admin/addon/controllers/admin-watched-words.js b/app/assets/javascripts/admin/addon/controllers/admin-watched-words.js
index 06f582b62f8..b65b2da2801 100644
--- a/app/assets/javascripts/admin/addon/controllers/admin-watched-words.js
+++ b/app/assets/javascripts/admin/addon/controllers/admin-watched-words.js
@@ -2,8 +2,8 @@ import Controller from "@ember/controller";
import EmberObject, { action } from "@ember/object";
import { isEmpty } from "@ember/utils";
import { observes } from "@ember-decorators/object";
+import discourseDebounce from "discourse/lib/debounce";
import { INPUT_DELAY } from "discourse-common/config/environment";
-import discourseDebounce from "discourse-common/lib/debounce";
export default class AdminWatchedWordsController extends Controller {
filter = null;
diff --git a/app/assets/javascripts/admin/addon/controllers/admin-web-hooks-edit.js b/app/assets/javascripts/admin/addon/controllers/admin-web-hooks-edit.js
index 352cfe1c5fb..be9c433948d 100644
--- a/app/assets/javascripts/admin/addon/controllers/admin-web-hooks-edit.js
+++ b/app/assets/javascripts/admin/addon/controllers/admin-web-hooks-edit.js
@@ -4,7 +4,7 @@ import { alias } from "@ember/object/computed";
import { service } from "@ember/service";
import { isEmpty } from "@ember/utils";
import { popupAjaxError } from "discourse/lib/ajax-error";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
export default class AdminWebHooksEditController extends Controller {
diff --git a/app/assets/javascripts/admin/addon/controllers/admin.js b/app/assets/javascripts/admin/addon/controllers/admin.js
index 194fd4376d9..02e21d55224 100644
--- a/app/assets/javascripts/admin/addon/controllers/admin.js
+++ b/app/assets/javascripts/admin/addon/controllers/admin.js
@@ -1,7 +1,7 @@
import Controller from "@ember/controller";
import { service } from "@ember/service";
import { dasherize } from "@ember/string";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
export default class AdminController extends Controller {
@service router;
diff --git a/app/assets/javascripts/admin/addon/helpers/check-icon.js b/app/assets/javascripts/admin/addon/helpers/check-icon.js
index 7b2c29d984b..0bbee5787b3 100644
--- a/app/assets/javascripts/admin/addon/helpers/check-icon.js
+++ b/app/assets/javascripts/admin/addon/helpers/check-icon.js
@@ -1,6 +1,6 @@
import { htmlSafe } from "@ember/template";
-import { registerRawHelper } from "discourse-common/lib/helpers";
-import { renderIcon } from "discourse-common/lib/icon-library";
+import { registerRawHelper } from "discourse/lib/helpers";
+import { renderIcon } from "discourse/lib/icon-library";
registerRawHelper("check-icon", checkIcon);
diff --git a/app/assets/javascripts/admin/addon/helpers/disposition-icon.js b/app/assets/javascripts/admin/addon/helpers/disposition-icon.js
index ce0142d1471..0565912f0ba 100644
--- a/app/assets/javascripts/admin/addon/helpers/disposition-icon.js
+++ b/app/assets/javascripts/admin/addon/helpers/disposition-icon.js
@@ -1,6 +1,6 @@
import Helper from "@ember/component/helper";
import { htmlSafe } from "@ember/template";
-import { iconHTML } from "discourse-common/lib/icon-library";
+import { iconHTML } from "discourse/lib/icon-library";
export default class DispositionIcon extends Helper {
compute([disposition]) {
diff --git a/app/assets/javascripts/admin/addon/helpers/preserve-newlines.js b/app/assets/javascripts/admin/addon/helpers/preserve-newlines.js
index 3d7f2e019e7..cf76ccd5f04 100644
--- a/app/assets/javascripts/admin/addon/helpers/preserve-newlines.js
+++ b/app/assets/javascripts/admin/addon/helpers/preserve-newlines.js
@@ -1,5 +1,5 @@
+import { htmlHelper } from "discourse/lib/helpers";
import { escapeExpression } from "discourse/lib/utilities";
-import { htmlHelper } from "discourse-common/lib/helpers";
export default htmlHelper((str) =>
escapeExpression(str).replace(/\n/g, "
")
diff --git a/app/assets/javascripts/admin/addon/helpers/value-at-tl.js b/app/assets/javascripts/admin/addon/helpers/value-at-tl.js
index 9aada034c79..6b599729471 100644
--- a/app/assets/javascripts/admin/addon/helpers/value-at-tl.js
+++ b/app/assets/javascripts/admin/addon/helpers/value-at-tl.js
@@ -1,4 +1,4 @@
-import { registerRawHelper } from "discourse-common/lib/helpers";
+import { registerRawHelper } from "discourse/lib/helpers";
registerRawHelper("value-at-tl", valueAtTl);
diff --git a/app/assets/javascripts/admin/addon/lib/setting-object-helper.js b/app/assets/javascripts/admin/addon/lib/setting-object-helper.js
index 9e67c100d50..a6d7da631a4 100644
--- a/app/assets/javascripts/admin/addon/lib/setting-object-helper.js
+++ b/app/assets/javascripts/admin/addon/lib/setting-object-helper.js
@@ -1,6 +1,6 @@
import { dependentKeyCompat } from "@ember/object/compat";
import { isPresent } from "@ember/utils";
-import { deepEqual } from "discourse-common/lib/object";
+import { deepEqual } from "discourse/lib/object";
import { i18n } from "discourse-i18n";
export default class SettingObjectHelper {
diff --git a/app/assets/javascripts/admin/addon/mixins/setting-component.js b/app/assets/javascripts/admin/addon/mixins/setting-component.js
index 58d7c867909..7253f19c0b2 100644
--- a/app/assets/javascripts/admin/addon/mixins/setting-component.js
+++ b/app/assets/javascripts/admin/addon/mixins/setting-component.js
@@ -10,8 +10,8 @@ import JsonSchemaEditorModal from "discourse/components/modal/json-schema-editor
import { ajax } from "discourse/lib/ajax";
import { fmt, propertyNotEqual } from "discourse/lib/computed";
import { SITE_SETTING_REQUIRES_CONFIRMATION_TYPES } from "discourse/lib/constants";
+import { deepEqual } from "discourse/lib/object";
import { splitString } from "discourse/lib/utilities";
-import { deepEqual } from "discourse-common/lib/object";
import { i18n } from "discourse-i18n";
import SiteSettingDefaultCategoriesModal from "../components/modal/site-setting-default-categories";
diff --git a/app/assets/javascripts/admin/addon/models/admin-plugin.js b/app/assets/javascripts/admin/addon/models/admin-plugin.js
index 53e86cf888b..097e7ccc233 100644
--- a/app/assets/javascripts/admin/addon/models/admin-plugin.js
+++ b/app/assets/javascripts/admin/addon/models/admin-plugin.js
@@ -1,6 +1,6 @@
import { cached, tracked } from "@glimmer/tracking";
import { capitalize, dasherize } from "@ember/string";
-import { snakeCaseToCamelCase } from "discourse-common/lib/case-converter";
+import { snakeCaseToCamelCase } from "discourse/lib/case-converter";
import I18n, { i18n } from "discourse-i18n";
export default class AdminPlugin {
diff --git a/app/assets/javascripts/admin/addon/models/admin-user.js b/app/assets/javascripts/admin/addon/models/admin-user.js
index 952918db661..9f45b4ae843 100644
--- a/app/assets/javascripts/admin/addon/models/admin-user.js
+++ b/app/assets/javascripts/admin/addon/models/admin-user.js
@@ -3,11 +3,11 @@ import { Promise } from "rsvp";
import { ajax } from "discourse/lib/ajax";
import { popupAjaxError } from "discourse/lib/ajax-error";
import { propertyNotEqual } from "discourse/lib/computed";
+import discourseComputed from "discourse/lib/decorators";
+import getURL from "discourse/lib/get-url";
import { userPath } from "discourse/lib/url";
import Group from "discourse/models/group";
import User from "discourse/models/user";
-import getURL from "discourse-common/lib/get-url";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
export default class AdminUser extends User {
diff --git a/app/assets/javascripts/admin/addon/models/api-key.js b/app/assets/javascripts/admin/addon/models/api-key.js
index 228682544fd..785220552ba 100644
--- a/app/assets/javascripts/admin/addon/models/api-key.js
+++ b/app/assets/javascripts/admin/addon/models/api-key.js
@@ -1,8 +1,8 @@
import { computed } from "@ember/object";
import { ajax } from "discourse/lib/ajax";
import { fmt } from "discourse/lib/computed";
+import discourseComputed from "discourse/lib/decorators";
import RestModel from "discourse/models/rest";
-import discourseComputed from "discourse-common/utils/decorators";
import AdminUser from "admin/models/admin-user";
export default class ApiKey extends RestModel {
diff --git a/app/assets/javascripts/admin/addon/models/backup-status.js b/app/assets/javascripts/admin/addon/models/backup-status.js
index 095239d9c7f..175b2340cc2 100644
--- a/app/assets/javascripts/admin/addon/models/backup-status.js
+++ b/app/assets/javascripts/admin/addon/models/backup-status.js
@@ -1,6 +1,6 @@
import EmberObject from "@ember/object";
import { not } from "@ember/object/computed";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
export default class BackupStatus extends EmberObject {
@not("restoreEnabled") restoreDisabled;
diff --git a/app/assets/javascripts/admin/addon/models/color-scheme-color.js b/app/assets/javascripts/admin/addon/models/color-scheme-color.js
index 4c956de3645..0291868e2fb 100644
--- a/app/assets/javascripts/admin/addon/models/color-scheme-color.js
+++ b/app/assets/javascripts/admin/addon/models/color-scheme-color.js
@@ -1,7 +1,7 @@
import EmberObject from "@ember/object";
import { observes, on } from "@ember-decorators/object";
import { propertyNotEqual } from "discourse/lib/computed";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
export default class ColorSchemeColor extends EmberObject {
diff --git a/app/assets/javascripts/admin/addon/models/color-scheme.js b/app/assets/javascripts/admin/addon/models/color-scheme.js
index b6c62d75f58..e1d9745d78a 100644
--- a/app/assets/javascripts/admin/addon/models/color-scheme.js
+++ b/app/assets/javascripts/admin/addon/models/color-scheme.js
@@ -3,7 +3,7 @@ import ArrayProxy from "@ember/array/proxy";
import EmberObject from "@ember/object";
import { not } from "@ember/object/computed";
import { ajax } from "discourse/lib/ajax";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
import ColorSchemeColor from "admin/models/color-scheme-color";
diff --git a/app/assets/javascripts/admin/addon/models/email-log.js b/app/assets/javascripts/admin/addon/models/email-log.js
index 921c416e393..9023221bad4 100644
--- a/app/assets/javascripts/admin/addon/models/email-log.js
+++ b/app/assets/javascripts/admin/addon/models/email-log.js
@@ -1,6 +1,6 @@
import EmberObject from "@ember/object";
import { ajax } from "discourse/lib/ajax";
-import getURL from "discourse-common/lib/get-url";
+import getURL from "discourse/lib/get-url";
import AdminUser from "admin/models/admin-user";
export default class EmailLog extends EmberObject {
diff --git a/app/assets/javascripts/admin/addon/models/flag-type.js b/app/assets/javascripts/admin/addon/models/flag-type.js
index 9560ffa3809..21278565162 100644
--- a/app/assets/javascripts/admin/addon/models/flag-type.js
+++ b/app/assets/javascripts/admin/addon/models/flag-type.js
@@ -1,5 +1,5 @@
+import discourseComputed from "discourse/lib/decorators";
import RestModel from "discourse/models/rest";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
export default class FlagType extends RestModel {
diff --git a/app/assets/javascripts/admin/addon/models/permalink.js b/app/assets/javascripts/admin/addon/models/permalink.js
index 72f2fe42a33..67327877d59 100644
--- a/app/assets/javascripts/admin/addon/models/permalink.js
+++ b/app/assets/javascripts/admin/addon/models/permalink.js
@@ -1,8 +1,8 @@
import { ajax } from "discourse/lib/ajax";
+import discourseComputed from "discourse/lib/decorators";
import DiscourseURL from "discourse/lib/url";
import Category from "discourse/models/category";
import RestModel from "discourse/models/rest";
-import discourseComputed from "discourse-common/utils/decorators";
export default class Permalink extends RestModel {
static findAll(filter) {
diff --git a/app/assets/javascripts/admin/addon/models/report.js b/app/assets/javascripts/admin/addon/models/report.js
index c77f6222b2b..b974e0425a0 100644
--- a/app/assets/javascripts/admin/addon/models/report.js
+++ b/app/assets/javascripts/admin/addon/models/report.js
@@ -2,7 +2,10 @@ import EmberObject from "@ember/object";
import { isEmpty } from "@ember/utils";
import { renderAvatar } from "discourse/helpers/user-avatar";
import { ajax } from "discourse/lib/ajax";
+import discourseComputed from "discourse/lib/decorators";
import { durationTiny, number } from "discourse/lib/formatter";
+import getURL from "discourse/lib/get-url";
+import { makeArray } from "discourse/lib/helpers";
import round from "discourse/lib/round";
import {
escapeExpression,
@@ -10,9 +13,6 @@ import {
formatUsername,
toNumber,
} from "discourse/lib/utilities";
-import getURL from "discourse-common/lib/get-url";
-import { makeArray } from "discourse-common/lib/helpers";
-import discourseComputed from "discourse-common/utils/decorators";
import I18n, { i18n } from "discourse-i18n";
// Change this line each time report format change
diff --git a/app/assets/javascripts/admin/addon/models/screened-email.js b/app/assets/javascripts/admin/addon/models/screened-email.js
index df302ca76ec..2e632e0ad98 100644
--- a/app/assets/javascripts/admin/addon/models/screened-email.js
+++ b/app/assets/javascripts/admin/addon/models/screened-email.js
@@ -1,6 +1,6 @@
import EmberObject from "@ember/object";
import { ajax } from "discourse/lib/ajax";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
export default class ScreenedEmail extends EmberObject {
diff --git a/app/assets/javascripts/admin/addon/models/screened-ip-address.js b/app/assets/javascripts/admin/addon/models/screened-ip-address.js
index 80d625dad5c..e80804262af 100644
--- a/app/assets/javascripts/admin/addon/models/screened-ip-address.js
+++ b/app/assets/javascripts/admin/addon/models/screened-ip-address.js
@@ -1,7 +1,7 @@
import EmberObject from "@ember/object";
import { equal } from "@ember/object/computed";
import { ajax } from "discourse/lib/ajax";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
export default class ScreenedIpAddress extends EmberObject {
diff --git a/app/assets/javascripts/admin/addon/models/screened-url.js b/app/assets/javascripts/admin/addon/models/screened-url.js
index 8d72617934a..8b88bd56538 100644
--- a/app/assets/javascripts/admin/addon/models/screened-url.js
+++ b/app/assets/javascripts/admin/addon/models/screened-url.js
@@ -1,6 +1,6 @@
import EmberObject from "@ember/object";
import { ajax } from "discourse/lib/ajax";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
export default class ScreenedUrl extends EmberObject {
diff --git a/app/assets/javascripts/admin/addon/models/site-setting.js b/app/assets/javascripts/admin/addon/models/site-setting.js
index a7b6bd5451f..5a5c86f853b 100644
--- a/app/assets/javascripts/admin/addon/models/site-setting.js
+++ b/app/assets/javascripts/admin/addon/models/site-setting.js
@@ -1,7 +1,7 @@
import EmberObject from "@ember/object";
import { alias } from "@ember/object/computed";
import { ajax } from "discourse/lib/ajax";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
import SettingObjectHelper from "admin/lib/setting-object-helper";
diff --git a/app/assets/javascripts/admin/addon/models/staff-action-log.js b/app/assets/javascripts/admin/addon/models/staff-action-log.js
index 862ddf1755c..9be53840687 100644
--- a/app/assets/javascripts/admin/addon/models/staff-action-log.js
+++ b/app/assets/javascripts/admin/addon/models/staff-action-log.js
@@ -1,7 +1,7 @@
import { ajax } from "discourse/lib/ajax";
+import discourseComputed from "discourse/lib/decorators";
import { escapeExpression } from "discourse/lib/utilities";
import RestModel from "discourse/models/rest";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
import AdminUser from "admin/models/admin-user";
diff --git a/app/assets/javascripts/admin/addon/models/theme.js b/app/assets/javascripts/admin/addon/models/theme.js
index 3d4df49ce55..9c4c3e3b2aa 100644
--- a/app/assets/javascripts/admin/addon/models/theme.js
+++ b/app/assets/javascripts/admin/addon/models/theme.js
@@ -2,8 +2,8 @@ import { get } from "@ember/object";
import { gt, or } from "@ember/object/computed";
import { isBlank, isEmpty } from "@ember/utils";
import { popupAjaxError } from "discourse/lib/ajax-error";
+import discourseComputed from "discourse/lib/decorators";
import RestModel from "discourse/models/rest";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
import ThemeSettings from "admin/models/theme-settings";
diff --git a/app/assets/javascripts/admin/addon/models/tl3-requirements.js b/app/assets/javascripts/admin/addon/models/tl3-requirements.js
index 43a41362369..ae2a918407b 100644
--- a/app/assets/javascripts/admin/addon/models/tl3-requirements.js
+++ b/app/assets/javascripts/admin/addon/models/tl3-requirements.js
@@ -1,5 +1,5 @@
import EmberObject from "@ember/object";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
export default class Tl3Requirements extends EmberObject {
@discourseComputed("days_visited", "time_period")
diff --git a/app/assets/javascripts/admin/addon/models/version-check.js b/app/assets/javascripts/admin/addon/models/version-check.js
index baf029c3c47..43e8111cf41 100644
--- a/app/assets/javascripts/admin/addon/models/version-check.js
+++ b/app/assets/javascripts/admin/addon/models/version-check.js
@@ -1,6 +1,6 @@
import EmberObject from "@ember/object";
import { ajax } from "discourse/lib/ajax";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
export default class VersionCheck extends EmberObject {
static find() {
diff --git a/app/assets/javascripts/admin/addon/models/web-hook.js b/app/assets/javascripts/admin/addon/models/web-hook.js
index 796ff4f8450..9a04da0cf77 100644
--- a/app/assets/javascripts/admin/addon/models/web-hook.js
+++ b/app/assets/javascripts/admin/addon/models/web-hook.js
@@ -2,10 +2,10 @@ import { tracked } from "@glimmer/tracking";
import { computed } from "@ember/object";
import { isEmpty } from "@ember/utils";
import { observes } from "@ember-decorators/object";
+import discourseComputed from "discourse/lib/decorators";
import Group from "discourse/models/group";
import RestModel from "discourse/models/rest";
import Site from "discourse/models/site";
-import discourseComputed from "discourse-common/utils/decorators";
class WebHookExtras {
@tracked categories;
diff --git a/app/assets/javascripts/admin/addon/routes/admin-backups-index.js b/app/assets/javascripts/admin/addon/routes/admin-backups-index.js
index fafbab34437..227d700e9cd 100644
--- a/app/assets/javascripts/admin/addon/routes/admin-backups-index.js
+++ b/app/assets/javascripts/admin/addon/routes/admin-backups-index.js
@@ -1,5 +1,5 @@
import Route from "@ember/routing/route";
-import { bind } from "discourse-common/utils/decorators";
+import { bind } from "discourse/lib/decorators";
import Backup from "admin/models/backup";
export default class AdminBackupsIndexRoute extends Route {
diff --git a/app/assets/javascripts/admin/addon/routes/admin-backups.js b/app/assets/javascripts/admin/addon/routes/admin-backups.js
index 18318685e17..70522523cf6 100644
--- a/app/assets/javascripts/admin/addon/routes/admin-backups.js
+++ b/app/assets/javascripts/admin/addon/routes/admin-backups.js
@@ -2,10 +2,10 @@ import EmberObject, { action } from "@ember/object";
import { service } from "@ember/service";
import { ajax } from "discourse/lib/ajax";
import { extractError } from "discourse/lib/ajax-error";
+import { bind } from "discourse/lib/decorators";
+import getURL from "discourse/lib/get-url";
import PreloadStore from "discourse/lib/preload-store";
import DiscourseRoute from "discourse/routes/discourse";
-import getURL from "discourse-common/lib/get-url";
-import { bind } from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
import StartBackupModal from "admin/components/modal/start-backup";
import Backup from "admin/models/backup";
diff --git a/app/assets/javascripts/dialog-holder/addon/services/dialog.js b/app/assets/javascripts/dialog-holder/addon/services/dialog.js
index 5ea9429a848..c9be6f14da4 100644
--- a/app/assets/javascripts/dialog-holder/addon/services/dialog.js
+++ b/app/assets/javascripts/dialog-holder/addon/services/dialog.js
@@ -1,7 +1,7 @@
import { schedule } from "@ember/runloop";
import Service from "@ember/service";
import A11yDialog from "a11y-dialog";
-import { bind } from "discourse-common/utils/decorators";
+import { bind } from "discourse/lib/decorators";
export default class DialogService extends Service {
dialogInstance = null;
diff --git a/app/assets/javascripts/discourse-common/addon/config/environment.js b/app/assets/javascripts/discourse-common/addon/config/environment.js
index 2b2fba3de6a..cdeb31b0262 100644
--- a/app/assets/javascripts/discourse-common/addon/config/environment.js
+++ b/app/assets/javascripts/discourse-common/addon/config/environment.js
@@ -1,4 +1,4 @@
-import deprecated from "discourse-common/lib/deprecated";
+import deprecated from "discourse/lib/deprecated";
export const INPUT_DELAY = 250;
diff --git a/app/assets/javascripts/discourse-common/addon/deprecation-workflow.js b/app/assets/javascripts/discourse-common/addon/deprecation-workflow.js
deleted file mode 100644
index f80c3690057..00000000000
--- a/app/assets/javascripts/discourse-common/addon/deprecation-workflow.js
+++ /dev/null
@@ -1,11 +0,0 @@
-const DEPRECATION_WORKFLOW = [
- { handler: "silence", matchId: "template-action" }, // will be removed in Ember 6.0
- { handler: "silence", matchId: "deprecate-array-prototype-extensions" }, // will be removed in Ember 6.0
- { handler: "silence", matchId: "discourse.select-kit" },
- {
- handler: "silence",
- matchId: "discourse.decorate-widget.hamburger-widget-links",
- },
-];
-
-export default DEPRECATION_WORKFLOW;
diff --git a/app/assets/javascripts/discourse-common/addon/lib/debounce.js b/app/assets/javascripts/discourse-common/addon/lib/debounce.js
deleted file mode 100644
index 37171684b15..00000000000
--- a/app/assets/javascripts/discourse-common/addon/lib/debounce.js
+++ /dev/null
@@ -1,28 +0,0 @@
-import { debounce } from "@ember/runloop";
-import { isTesting } from "discourse-common/config/environment";
-
-/**
- Debounce a Javascript function. This means if it's called many times in a time limit it
- should only be executed once (at the end of the limit counted from the last call made).
- Original function will be called with the context and arguments from the last call made.
-**/
-
-export default function () {
- if (isTesting()) {
- const lastArgument = arguments[arguments.length - 1];
- const hasImmediateArgument = typeof lastArgument === "boolean";
-
- let args = [].slice.call(arguments, 0, hasImmediateArgument ? -2 : -1);
-
- // Replace the time argument with 10ms
- args.push(10);
-
- if (hasImmediateArgument) {
- args.push(lastArgument);
- }
-
- return debounce.apply(undefined, args);
- } else {
- return debounce(...arguments);
- }
-}
diff --git a/app/assets/javascripts/discourse-common/addon/resolver.js b/app/assets/javascripts/discourse-common/addon/resolver.js
index 7bfb92a8427..50c92b802a6 100644
--- a/app/assets/javascripts/discourse-common/addon/resolver.js
+++ b/app/assets/javascripts/discourse-common/addon/resolver.js
@@ -1,9 +1,9 @@
import { dasherize, decamelize } from "@ember/string";
import Resolver from "ember-resolver";
-import deprecated from "discourse-common/lib/deprecated";
-import DiscourseTemplateMap from "discourse-common/lib/discourse-template-map";
-import { findHelper } from "discourse-common/lib/helpers";
-import SuffixTrie from "discourse-common/lib/suffix-trie";
+import deprecated from "discourse/lib/deprecated";
+import DiscourseTemplateMap from "discourse/lib/discourse-template-map";
+import { findHelper } from "discourse/lib/helpers";
+import SuffixTrie from "discourse/lib/suffix-trie";
let _options = {};
let moduleSuffixTrie = null;
diff --git a/app/assets/javascripts/discourse-hbr/raw-handlebars-compiler.js b/app/assets/javascripts/discourse-hbr/raw-handlebars-compiler.js
index 4a1a200bd58..c26cc1ab001 100644
--- a/app/assets/javascripts/discourse-hbr/raw-handlebars-compiler.js
+++ b/app/assets/javascripts/discourse-hbr/raw-handlebars-compiler.js
@@ -152,8 +152,8 @@ TemplateCompiler.prototype.processString = function (string, relativePath) {
);
return `
- import { template as compiler } from "discourse-common/lib/raw-handlebars";
- import { addRawTemplate } from "discourse-common/lib/raw-templates";
+ import { template as compiler } from "discourse/lib/raw-handlebars";
+ import { addRawTemplate } from "discourse/lib/raw-templates";
let template = compiler(${this.precompile(string, false)});
diff --git a/app/assets/javascripts/discourse-markdown-it/package.json b/app/assets/javascripts/discourse-markdown-it/package.json
index 5f047f839ca..ef36cb759f3 100644
--- a/app/assets/javascripts/discourse-markdown-it/package.json
+++ b/app/assets/javascripts/discourse-markdown-it/package.json
@@ -30,6 +30,7 @@
"peerDependencies": {
"discourse-i18n": "workspace:1.0.0",
"pretty-text": "workspace:1.0.0",
+ "discourse": "workspace:0.0.0",
"xss": "*"
},
"engines": {
diff --git a/app/assets/javascripts/discourse-markdown-it/src/features/bbcode-block.js b/app/assets/javascripts/discourse-markdown-it/src/features/bbcode-block.js
index 422b57dc9b6..f2c519a9b01 100644
--- a/app/assets/javascripts/discourse-markdown-it/src/features/bbcode-block.js
+++ b/app/assets/javascripts/discourse-markdown-it/src/features/bbcode-block.js
@@ -1,4 +1,4 @@
-import { camelCaseToDash } from "discourse-common/lib/case-converter";
+import { camelCaseToDash } from "discourse/lib/case-converter";
let isWhiteSpace, escapeHtml;
diff --git a/app/assets/javascripts/discourse-markdown-it/src/options.js b/app/assets/javascripts/discourse-markdown-it/src/options.js
index c7899acba20..326d7d53aa3 100644
--- a/app/assets/javascripts/discourse-markdown-it/src/options.js
+++ b/app/assets/javascripts/discourse-markdown-it/src/options.js
@@ -1,4 +1,4 @@
-import { deepMerge } from "discourse-common/lib/object";
+import { deepMerge } from "discourse/lib/object";
// the options are passed here and must be explicitly allowed with
// the const options & state below
diff --git a/app/assets/javascripts/discourse-markdown-it/src/setup.js b/app/assets/javascripts/discourse-markdown-it/src/setup.js
index e420b36d06d..35d9ccf5a78 100644
--- a/app/assets/javascripts/discourse-markdown-it/src/setup.js
+++ b/app/assets/javascripts/discourse-markdown-it/src/setup.js
@@ -1,6 +1,6 @@
import { textReplace } from "pretty-text/text-replace";
-import deprecated from "discourse-common/lib/deprecated";
-import { cloneJSON } from "discourse-common/lib/object";
+import deprecated from "discourse/lib/deprecated";
+import { cloneJSON } from "discourse/lib/object";
import makeEngine, { cook } from "./engine";
// note, this will mutate options due to the way the API is designed
diff --git a/app/assets/javascripts/discourse-widget-hbs/addon/helpers.js b/app/assets/javascripts/discourse-widget-hbs/addon/helpers.js
index e9c35a1fc60..7bfa8a98ff5 100644
--- a/app/assets/javascripts/discourse-widget-hbs/addon/helpers.js
+++ b/app/assets/javascripts/discourse-widget-hbs/addon/helpers.js
@@ -1,7 +1,7 @@
import { dateNode } from "discourse/helpers/node";
+import { iconNode } from "discourse/lib/icon-library";
import { avatarFor as avatar } from "discourse/widgets/post";
import rawHtml from "discourse/widgets/raw-html";
-import { iconNode } from "discourse-common/lib/icon-library";
export default {
avatar,
diff --git a/app/assets/javascripts/discourse/app/app.js b/app/assets/javascripts/discourse/app/app.js
index 9ebf4aa6916..69fccf0b7b3 100644
--- a/app/assets/javascripts/discourse/app/app.js
+++ b/app/assets/javascripts/discourse/app/app.js
@@ -1,4 +1,7 @@
-import "./deprecation-workflow";
+import setupDeprecationWorkflow from "ember-cli-deprecation-workflow";
+import DEPRECATION_WORKFLOW from "./deprecation-workflow";
+setupDeprecationWorkflow({ workflow: DEPRECATION_WORKFLOW });
+
import "decorator-transforms/globals";
import "./loader-shims";
import "./discourse-common-loader-shims";
diff --git a/app/assets/javascripts/discourse/app/components/about-page.gjs b/app/assets/javascripts/discourse/app/components/about-page.gjs
index b35c4391846..c031d957c8c 100644
--- a/app/assets/javascripts/discourse/app/components/about-page.gjs
+++ b/app/assets/javascripts/discourse/app/components/about-page.gjs
@@ -6,8 +6,8 @@ import { htmlSafe } from "@ember/template";
import AboutPageUsers from "discourse/components/about-page-users";
import PluginOutlet from "discourse/components/plugin-outlet";
import dIcon from "discourse/helpers/d-icon";
+import escape from "discourse/lib/escape";
import { number } from "discourse/lib/formatter";
-import escape from "discourse-common/lib/escape";
import I18n, { i18n } from "discourse-i18n";
const pluginActivitiesFuncs = [];
diff --git a/app/assets/javascripts/discourse/app/components/ace-editor.gjs b/app/assets/javascripts/discourse/app/components/ace-editor.gjs
index 5f062329e6b..6dda39b27bf 100644
--- a/app/assets/javascripts/discourse/app/components/ace-editor.gjs
+++ b/app/assets/javascripts/discourse/app/components/ace-editor.gjs
@@ -6,9 +6,9 @@ import { service } from "@ember/service";
import { buildWaiter } from "@ember/test-waiters";
import { modifier } from "ember-modifier";
import ConditionalLoadingSpinner from "discourse/components/conditional-loading-spinner";
+import { bind } from "discourse/lib/decorators";
import loadAce from "discourse/lib/load-ace-editor";
import { isTesting } from "discourse-common/config/environment";
-import { bind } from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
const WAITER = buildWaiter("ace-editor");
diff --git a/app/assets/javascripts/discourse/app/components/avatar-uploader.js b/app/assets/javascripts/discourse/app/components/avatar-uploader.js
index 2479c29367d..c5ad0b52b1e 100644
--- a/app/assets/javascripts/discourse/app/components/avatar-uploader.js
+++ b/app/assets/javascripts/discourse/app/components/avatar-uploader.js
@@ -3,8 +3,8 @@ import { action } from "@ember/object";
import { getOwner } from "@ember/owner";
import { isBlank } from "@ember/utils";
import { tagName } from "@ember-decorators/component";
+import discourseComputed from "discourse/lib/decorators";
import UppyUpload from "discourse/lib/uppy/uppy-upload";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
@tagName("span")
diff --git a/app/assets/javascripts/discourse/app/components/badge-button.gjs b/app/assets/javascripts/discourse/app/components/badge-button.gjs
index c5d22a5bca5..70e2d6d5b7b 100644
--- a/app/assets/javascripts/discourse/app/components/badge-button.gjs
+++ b/app/assets/javascripts/discourse/app/components/badge-button.gjs
@@ -1,6 +1,6 @@
import Component from "@glimmer/component";
import iconOrImage from "discourse/helpers/icon-or-image";
-import domFromString from "discourse-common/lib/dom-from-string";
+import domFromString from "discourse/lib/dom-from-string";
export default class BadgeButton extends Component {
get title() {
diff --git a/app/assets/javascripts/discourse/app/components/basic-topic-list.js b/app/assets/javascripts/discourse/app/components/basic-topic-list.js
index 74f45be6fab..080a2d7f3bd 100644
--- a/app/assets/javascripts/discourse/app/components/basic-topic-list.js
+++ b/app/assets/javascripts/discourse/app/components/basic-topic-list.js
@@ -3,7 +3,7 @@ import { alias, not } from "@ember/object/computed";
import { service } from "@ember/service";
import { observes } from "@ember-decorators/object";
import $ from "jquery";
-import discourseComputed, { bind } from "discourse-common/utils/decorators";
+import discourseComputed, { bind } from "discourse/lib/decorators";
export default class BasicTopicList extends Component {
@service site;
diff --git a/app/assets/javascripts/discourse/app/components/bookmark-actions-dropdown.js b/app/assets/javascripts/discourse/app/components/bookmark-actions-dropdown.js
index e1f9018086a..f5a1054a8f9 100644
--- a/app/assets/javascripts/discourse/app/components/bookmark-actions-dropdown.js
+++ b/app/assets/javascripts/discourse/app/components/bookmark-actions-dropdown.js
@@ -1,6 +1,6 @@
import { action } from "@ember/object";
import { classNames } from "@ember-decorators/component";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
import DropdownSelectBoxComponent from "select-kit/components/dropdown-select-box";
import {
diff --git a/app/assets/javascripts/discourse/app/components/bread-crumbs.js b/app/assets/javascripts/discourse/app/components/bread-crumbs.js
index e12c953730c..ee6b2d511f2 100644
--- a/app/assets/javascripts/discourse/app/components/bread-crumbs.js
+++ b/app/assets/javascripts/discourse/app/components/bread-crumbs.js
@@ -1,8 +1,8 @@
import Component from "@ember/component";
import { filter } from "@ember/object/computed";
import { classNameBindings, tagName } from "@ember-decorators/component";
-import deprecated from "discourse-common/lib/deprecated";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
+import deprecated from "discourse/lib/deprecated";
// A breadcrumb including category drop downs
@tagName("ol")
diff --git a/app/assets/javascripts/discourse/app/components/card-contents-base.js b/app/assets/javascripts/discourse/app/components/card-contents-base.js
index ce647bf79f5..ea333d45a15 100644
--- a/app/assets/javascripts/discourse/app/components/card-contents-base.js
+++ b/app/assets/javascripts/discourse/app/components/card-contents-base.js
@@ -2,12 +2,12 @@ import Component from "@ember/component";
import { alias, match } from "@ember/object/computed";
import { next, schedule, throttle } from "@ember/runloop";
import { service } from "@ember/service";
+import { bind } from "discourse/lib/decorators";
import { wantsNewWindow } from "discourse/lib/intercept-click";
+import discourseLater from "discourse/lib/later";
import { headerOffset } from "discourse/lib/offset-calculator";
import DiscourseURL from "discourse/lib/url";
import { escapeExpression } from "discourse/lib/utilities";
-import discourseLater from "discourse-common/lib/later";
-import { bind } from "discourse-common/utils/decorators";
const DEFAULT_SELECTOR = "#main-outlet";
const AVATAR_OVERFLOW_SIZE = 44;
diff --git a/app/assets/javascripts/discourse/app/components/categories-boxes-topic.js b/app/assets/javascripts/discourse/app/components/categories-boxes-topic.js
index 81201cfe9e7..0eb986cb352 100644
--- a/app/assets/javascripts/discourse/app/components/categories-boxes-topic.js
+++ b/app/assets/javascripts/discourse/app/components/categories-boxes-topic.js
@@ -1,6 +1,6 @@
import Component from "@ember/component";
import { attributeBindings, tagName } from "@ember-decorators/component";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
@tagName("li")
@attributeBindings("topic.id:data-topic-id")
diff --git a/app/assets/javascripts/discourse/app/components/categories-boxes-with-topics.js b/app/assets/javascripts/discourse/app/components/categories-boxes-with-topics.js
index 9d50bb3bb54..18aa465577c 100644
--- a/app/assets/javascripts/discourse/app/components/categories-boxes-with-topics.js
+++ b/app/assets/javascripts/discourse/app/components/categories-boxes-with-topics.js
@@ -1,7 +1,7 @@
import Component from "@ember/component";
import { isEmpty } from "@ember/utils";
import { classNameBindings, tagName } from "@ember-decorators/component";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
@tagName("section")
@classNameBindings(
diff --git a/app/assets/javascripts/discourse/app/components/categories-boxes.js b/app/assets/javascripts/discourse/app/components/categories-boxes.js
index 1dc84c0dad6..91bb02b62f6 100644
--- a/app/assets/javascripts/discourse/app/components/categories-boxes.js
+++ b/app/assets/javascripts/discourse/app/components/categories-boxes.js
@@ -1,7 +1,7 @@
import Component from "@ember/component";
import { isEmpty } from "@ember/utils";
import { classNameBindings, tagName } from "@ember-decorators/component";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
@tagName("section")
@classNameBindings(
diff --git a/app/assets/javascripts/discourse/app/components/categories-only.js b/app/assets/javascripts/discourse/app/components/categories-only.js
index 33e2b2784fe..55a8188a165 100644
--- a/app/assets/javascripts/discourse/app/components/categories-only.js
+++ b/app/assets/javascripts/discourse/app/components/categories-only.js
@@ -1,7 +1,7 @@
import Component from "@ember/component";
import { action } from "@ember/object";
import { tagName } from "@ember-decorators/component";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
@tagName("")
export default class CategoriesOnly extends Component {
diff --git a/app/assets/javascripts/discourse/app/components/category-list-item.js b/app/assets/javascripts/discourse/app/components/category-list-item.js
index 658ede566b5..21fe3877a09 100644
--- a/app/assets/javascripts/discourse/app/components/category-list-item.js
+++ b/app/assets/javascripts/discourse/app/components/category-list-item.js
@@ -1,7 +1,7 @@
import Component from "@ember/component";
import { tagName } from "@ember-decorators/component";
+import discourseComputed from "discourse/lib/decorators";
import { applyValueTransformer } from "discourse/lib/transformer";
-import discourseComputed from "discourse-common/utils/decorators";
const LIST_TYPE = {
NORMAL: "normal",
diff --git a/app/assets/javascripts/discourse/app/components/category-permission-row.gjs b/app/assets/javascripts/discourse/app/components/category-permission-row.gjs
index a3528e25abd..c49ef155aed 100644
--- a/app/assets/javascripts/discourse/app/components/category-permission-row.gjs
+++ b/app/assets/javascripts/discourse/app/components/category-permission-row.gjs
@@ -3,8 +3,8 @@ import { action } from "@ember/object";
import { service } from "@ember/service";
import DButton from "discourse/components/d-button";
import concatClass from "discourse/helpers/concat-class";
+import getURL from "discourse/lib/get-url";
import PermissionType from "discourse/models/permission-type";
-import getURL from "discourse-common/lib/get-url";
import { i18n } from "discourse-i18n";
const EVERYONE = "everyone";
diff --git a/app/assets/javascripts/discourse/app/components/cdn-img.gjs b/app/assets/javascripts/discourse/app/components/cdn-img.gjs
index 9a1efcc3871..81dcf90e178 100644
--- a/app/assets/javascripts/discourse/app/components/cdn-img.gjs
+++ b/app/assets/javascripts/discourse/app/components/cdn-img.gjs
@@ -1,6 +1,6 @@
import Component from "@glimmer/component";
import { htmlSafe } from "@ember/template";
-import { getURLWithCDN } from "discourse-common/lib/get-url";
+import { getURLWithCDN } from "discourse/lib/get-url";
export default class CdnImg extends Component {
get cdnSrc() {
diff --git a/app/assets/javascripts/discourse/app/components/choose-message.gjs b/app/assets/javascripts/discourse/app/components/choose-message.gjs
index e5461e29386..e30fc5bbe79 100644
--- a/app/assets/javascripts/discourse/app/components/choose-message.gjs
+++ b/app/assets/javascripts/discourse/app/components/choose-message.gjs
@@ -4,8 +4,8 @@ import { fn } from "@ember/helper";
import { on } from "@ember/modifier";
import { action } from "@ember/object";
import { isEmpty } from "@ember/utils";
+import { debounce } from "discourse/lib/decorators";
import { searchForTerm } from "discourse/lib/search";
-import { debounce } from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
export default class ChooseMessage extends Component {
diff --git a/app/assets/javascripts/discourse/app/components/choose-topic.js b/app/assets/javascripts/discourse/app/components/choose-topic.js
index b4e58528fc4..7a0e3bfb9a9 100644
--- a/app/assets/javascripts/discourse/app/components/choose-topic.js
+++ b/app/assets/javascripts/discourse/app/components/choose-topic.js
@@ -3,9 +3,9 @@ import { tracked } from "@glimmer/tracking";
import { action } from "@ember/object";
import { isEmpty, isPresent } from "@ember/utils";
import { popupAjaxError } from "discourse/lib/ajax-error";
+import { debounce } from "discourse/lib/decorators";
import { searchForTerm } from "discourse/lib/search";
import { INPUT_DELAY } from "discourse-common/config/environment";
-import { debounce } from "discourse-common/utils/decorators";
// args:
// topicChangedCallback
diff --git a/app/assets/javascripts/discourse/app/components/color-picker-choice.js b/app/assets/javascripts/discourse/app/components/color-picker-choice.js
index 924905416b1..6e676dd9ea1 100644
--- a/app/assets/javascripts/discourse/app/components/color-picker-choice.js
+++ b/app/assets/javascripts/discourse/app/components/color-picker-choice.js
@@ -5,7 +5,7 @@ import {
classNameBindings,
tagName,
} from "@ember-decorators/component";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
@tagName("button")
diff --git a/app/assets/javascripts/discourse/app/components/composer-action-title.js b/app/assets/javascripts/discourse/app/components/composer-action-title.js
index ae8b8e1a065..a5edc9c2ac8 100644
--- a/app/assets/javascripts/discourse/app/components/composer-action-title.js
+++ b/app/assets/javascripts/discourse/app/components/composer-action-title.js
@@ -2,6 +2,9 @@ import Component from "@ember/component";
import { alias } from "@ember/object/computed";
import { htmlSafe } from "@ember/template";
import { classNames } from "@ember-decorators/component";
+import discourseComputed from "discourse/lib/decorators";
+import escape from "discourse/lib/escape";
+import { iconHTML } from "discourse/lib/icon-library";
import {
CREATE_SHARED_DRAFT,
CREATE_TOPIC,
@@ -10,9 +13,6 @@ import {
PRIVATE_MESSAGE,
REPLY,
} from "discourse/models/composer";
-import escape from "discourse-common/lib/escape";
-import { iconHTML } from "discourse-common/lib/icon-library";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
const TITLES = {
diff --git a/app/assets/javascripts/discourse/app/components/composer-body.js b/app/assets/javascripts/discourse/app/components/composer-body.js
index 24cb6017a00..d2af2242110 100644
--- a/app/assets/javascripts/discourse/app/components/composer-body.js
+++ b/app/assets/javascripts/discourse/app/components/composer-body.js
@@ -2,12 +2,12 @@ import Component from "@ember/component";
import { cancel, schedule, throttle } from "@ember/runloop";
import { classNameBindings } from "@ember-decorators/component";
import { observes } from "@ember-decorators/object";
+import discourseDebounce from "discourse/lib/debounce";
+import discourseComputed, { bind } from "discourse/lib/decorators";
+import discourseLater from "discourse/lib/later";
import { headerOffset } from "discourse/lib/offset-calculator";
import { isiPad } from "discourse/lib/utilities";
import Composer from "discourse/models/composer";
-import discourseDebounce from "discourse-common/lib/debounce";
-import discourseLater from "discourse-common/lib/later";
-import discourseComputed, { bind } from "discourse-common/utils/decorators";
const START_DRAG_EVENTS = ["touchstart", "mousedown"];
const DRAG_EVENTS = ["touchmove", "mousemove"];
diff --git a/app/assets/javascripts/discourse/app/components/composer-editor.js b/app/assets/javascripts/discourse/app/components/composer-editor.js
index b8c7995136b..ec577dcac95 100644
--- a/app/assets/javascripts/discourse/app/components/composer-editor.js
+++ b/app/assets/javascripts/discourse/app/components/composer-editor.js
@@ -9,10 +9,14 @@ import { BasePlugin } from "@uppy/core";
import $ from "jquery";
import { resolveAllShortUrls } from "pretty-text/upload-short-url";
import { ajax } from "discourse/lib/ajax";
+import { tinyAvatar } from "discourse/lib/avatar-utils";
+import discourseComputed, { bind, debounce } from "discourse/lib/decorators";
import {
fetchUnseenHashtagsInContext,
linkSeenHashtagsInContext,
} from "discourse/lib/hashtag-decorator";
+import { iconHTML } from "discourse/lib/icon-library";
+import discourseLater from "discourse/lib/later";
import {
fetchUnseenMentions,
linkSeenMentions,
@@ -25,13 +29,6 @@ import {
import UppyComposerUpload from "discourse/lib/uppy/composer-upload";
import { formatUsername } from "discourse/lib/utilities";
import Composer from "discourse/models/composer";
-import { tinyAvatar } from "discourse-common/lib/avatar-utils";
-import { iconHTML } from "discourse-common/lib/icon-library";
-import discourseLater from "discourse-common/lib/later";
-import discourseComputed, {
- bind,
- debounce,
-} from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
let uploadHandlers = [];
diff --git a/app/assets/javascripts/discourse/app/components/composer-message.js b/app/assets/javascripts/discourse/app/components/composer-message.js
index db44b73f556..1eb0bbcebcc 100644
--- a/app/assets/javascripts/discourse/app/components/composer-message.js
+++ b/app/assets/javascripts/discourse/app/components/composer-message.js
@@ -1,7 +1,7 @@
import Component from "@ember/component";
import { getOwner } from "@ember/owner";
import { classNameBindings } from "@ember-decorators/component";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
@classNameBindings(":composer-popup", "message.extraClass")
export default class ComposerMessage extends Component {
diff --git a/app/assets/javascripts/discourse/app/components/composer-messages.js b/app/assets/javascripts/discourse/app/components/composer-messages.js
index 6c14641160b..9963fbe01aa 100644
--- a/app/assets/javascripts/discourse/app/components/composer-messages.js
+++ b/app/assets/javascripts/discourse/app/components/composer-messages.js
@@ -5,9 +5,9 @@ import { not } from "@ember/object/computed";
import { service } from "@ember/service";
import { classNameBindings } from "@ember-decorators/component";
import { ajax } from "discourse/lib/ajax";
+import { debounce } from "discourse/lib/decorators";
import LinkLookup from "discourse/lib/link-lookup";
import { INPUT_DELAY } from "discourse-common/config/environment";
-import { debounce } from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
let _messagesCache = {};
diff --git a/app/assets/javascripts/discourse/app/components/composer-title.js b/app/assets/javascripts/discourse/app/components/composer-title.js
index 8117313a497..e3ffd13ff25 100644
--- a/app/assets/javascripts/discourse/app/components/composer-title.js
+++ b/app/assets/javascripts/discourse/app/components/composer-title.js
@@ -7,10 +7,10 @@ import { observes } from "@ember-decorators/object";
import { load } from "pretty-text/oneboxer";
import { lookupCache } from "pretty-text/oneboxer-cache";
import { ajax } from "discourse/lib/ajax";
+import discourseDebounce from "discourse/lib/debounce";
+import discourseComputed from "discourse/lib/decorators";
import putCursorAtEnd from "discourse/lib/put-cursor-at-end";
import { isTesting } from "discourse-common/config/environment";
-import discourseDebounce from "discourse-common/lib/debounce";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
@classNames("title-input")
diff --git a/app/assets/javascripts/discourse/app/components/composer-toggles.js b/app/assets/javascripts/discourse/app/components/composer-toggles.js
index 44479836643..7fd24dbcf4a 100644
--- a/app/assets/javascripts/discourse/app/components/composer-toggles.js
+++ b/app/assets/javascripts/discourse/app/components/composer-toggles.js
@@ -1,6 +1,6 @@
import Component from "@ember/component";
import { tagName } from "@ember-decorators/component";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
@tagName("")
export default class ComposerToggles extends Component {
diff --git a/app/assets/javascripts/discourse/app/components/composer-user-selector.js b/app/assets/javascripts/discourse/app/components/composer-user-selector.js
index 69921636042..86c0ec9d8b4 100644
--- a/app/assets/javascripts/discourse/app/components/composer-user-selector.js
+++ b/app/assets/javascripts/discourse/app/components/composer-user-selector.js
@@ -1,6 +1,6 @@
import Component from "@ember/component";
import { action } from "@ember/object";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
export default class ComposerUserSelector extends Component {
_groups = [];
diff --git a/app/assets/javascripts/discourse/app/components/composer/textarea-editor.gjs b/app/assets/javascripts/discourse/app/components/composer/textarea-editor.gjs
index 5b0d57f61a2..beadea93fab 100644
--- a/app/assets/javascripts/discourse/app/components/composer/textarea-editor.gjs
+++ b/app/assets/javascripts/discourse/app/components/composer/textarea-editor.gjs
@@ -4,8 +4,8 @@ import { service } from "@ember/service";
import ItsATrap from "@discourse/itsatrap";
import { modifier } from "ember-modifier";
import DTextarea from "discourse/components/d-textarea";
+import { bind } from "discourse/lib/decorators";
import TextareaTextManipulation from "discourse/lib/textarea-text-manipulation";
-import { bind } from "discourse-common/utils/decorators";
export default class TextareaEditor extends Component {
@service currentUser;
diff --git a/app/assets/javascripts/discourse/app/components/copy-button.js b/app/assets/javascripts/discourse/app/components/copy-button.js
index 98ead6db772..ee010f80da0 100644
--- a/app/assets/javascripts/discourse/app/components/copy-button.js
+++ b/app/assets/javascripts/discourse/app/components/copy-button.js
@@ -1,8 +1,8 @@
import Component from "@ember/component";
import { action } from "@ember/object";
import { tagName } from "@ember-decorators/component";
-import discourseDebounce from "discourse-common/lib/debounce";
-import { bind } from "discourse-common/utils/decorators";
+import discourseDebounce from "discourse/lib/debounce";
+import { bind } from "discourse/lib/decorators";
@tagName("")
export default class CopyButton extends Component {
diff --git a/app/assets/javascripts/discourse/app/components/create-invite-uploader.js b/app/assets/javascripts/discourse/app/components/create-invite-uploader.js
index 71b0dc250b4..4b953a6401d 100644
--- a/app/assets/javascripts/discourse/app/components/create-invite-uploader.js
+++ b/app/assets/javascripts/discourse/app/components/create-invite-uploader.js
@@ -2,8 +2,8 @@ import Component from "@ember/component";
import { action } from "@ember/object";
import { getOwner } from "@ember/owner";
import { tagName } from "@ember-decorators/component";
+import discourseComputed from "discourse/lib/decorators";
import UppyUpload from "discourse/lib/uppy/uppy-upload";
-import discourseComputed from "discourse-common/utils/decorators";
@tagName("div")
export default class CreateInviteUploader extends Component {
diff --git a/app/assets/javascripts/discourse/app/components/custom-html.js b/app/assets/javascripts/discourse/app/components/custom-html.js
index 076ac6799b1..864c56332d1 100644
--- a/app/assets/javascripts/discourse/app/components/custom-html.js
+++ b/app/assets/javascripts/discourse/app/components/custom-html.js
@@ -2,7 +2,7 @@ import Component from "@ember/component";
import { getOwner } from "@ember/owner";
import { hbs } from "ember-cli-htmlbars";
import { getCustomHTML } from "discourse/helpers/custom-html";
-import deprecated from "discourse-common/lib/deprecated";
+import deprecated from "discourse/lib/deprecated";
export default class CustomHtml extends Component {
triggerAppEvent = null;
diff --git a/app/assets/javascripts/discourse/app/components/d-breadcrumbs-item.gjs b/app/assets/javascripts/discourse/app/components/d-breadcrumbs-item.gjs
index a68e819f8ff..1764aa76b1b 100644
--- a/app/assets/javascripts/discourse/app/components/d-breadcrumbs-item.gjs
+++ b/app/assets/javascripts/discourse/app/components/d-breadcrumbs-item.gjs
@@ -1,7 +1,7 @@
import Component from "@glimmer/component";
import { service } from "@ember/service";
import icon from "discourse/helpers/d-icon";
-import getURL from "discourse-common/lib/get-url";
+import getURL from "discourse/lib/get-url";
export default class DBreadcrumbsItem extends Component {
@service breadcrumbs;
diff --git a/app/assets/javascripts/discourse/app/components/d-button.gjs b/app/assets/javascripts/discourse/app/components/d-button.gjs
index 1d4de483ebd..e89b7d028d8 100644
--- a/app/assets/javascripts/discourse/app/components/d-button.gjs
+++ b/app/assets/javascripts/discourse/app/components/d-button.gjs
@@ -9,7 +9,7 @@ import GlimmerComponentWithDeprecatedParentView from "discourse/components/glimm
import concatClass from "discourse/helpers/concat-class";
import icon from "discourse/helpers/d-icon";
import element from "discourse/helpers/element";
-import deprecated from "discourse-common/lib/deprecated";
+import deprecated from "discourse/lib/deprecated";
import { i18n } from "discourse-i18n";
const ACTION_AS_STRING_DEPRECATION_ARGS = [
diff --git a/app/assets/javascripts/discourse/app/components/d-document.js b/app/assets/javascripts/discourse/app/components/d-document.js
index 672efd8258e..3b7d287af4b 100644
--- a/app/assets/javascripts/discourse/app/components/d-document.js
+++ b/app/assets/javascripts/discourse/app/components/d-document.js
@@ -3,8 +3,8 @@ import { service } from "@ember/service";
import { tagName } from "@ember-decorators/component";
import { setLogoffCallback } from "discourse/lib/ajax";
import { clearAllBodyScrollLocks } from "discourse/lib/body-scroll-lock";
+import { bind } from "discourse/lib/decorators";
import logout from "discourse/lib/logout";
-import { bind } from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
let pluginCounterFunctions = [];
diff --git a/app/assets/javascripts/discourse/app/components/d-editor.js b/app/assets/javascripts/discourse/app/components/d-editor.js
index 789bbab3abc..494738f570a 100644
--- a/app/assets/javascripts/discourse/app/components/d-editor.js
+++ b/app/assets/javascripts/discourse/app/components/d-editor.js
@@ -15,12 +15,17 @@ import InsertHyperlink from "discourse/components/modal/insert-hyperlink";
import { ajax } from "discourse/lib/ajax";
import { SKIP } from "discourse/lib/autocomplete";
import Toolbar from "discourse/lib/composer/toolbar";
+import discourseDebounce from "discourse/lib/debounce";
+import discourseComputed, { bind } from "discourse/lib/decorators";
+import deprecated from "discourse/lib/deprecated";
+import { getRegister } from "discourse/lib/get-owner";
import { hashtagAutocompleteOptions } from "discourse/lib/hashtag-autocomplete";
import { linkSeenHashtagsInContext } from "discourse/lib/hashtag-decorator";
import { wantsNewWindow } from "discourse/lib/intercept-click";
import { PLATFORM_KEY_MODIFIER } from "discourse/lib/keyboard-shortcuts";
import { linkSeenMentions } from "discourse/lib/link-mentions";
import { loadOneboxes } from "discourse/lib/load-oneboxes";
+import { findRawTemplate } from "discourse/lib/raw-templates";
import { emojiUrlFor, generateCookFunction } from "discourse/lib/text";
import userSearch from "discourse/lib/user-search";
import {
@@ -30,11 +35,6 @@ import {
} from "discourse/lib/user-status-on-autocomplete";
import virtualElementFromTextRange from "discourse/lib/virtual-element-from-text-range";
import { isTesting } from "discourse-common/config/environment";
-import discourseDebounce from "discourse-common/lib/debounce";
-import deprecated from "discourse-common/lib/deprecated";
-import { getRegister } from "discourse-common/lib/get-owner";
-import { findRawTemplate } from "discourse-common/lib/raw-templates";
-import discourseComputed, { bind } from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
let _createCallbacks = [];
diff --git a/app/assets/javascripts/discourse/app/components/d-lightbox.js b/app/assets/javascripts/discourse/app/components/d-lightbox.js
index b09d89fddca..fd82251a7e4 100644
--- a/app/assets/javascripts/discourse/app/components/d-lightbox.js
+++ b/app/assets/javascripts/discourse/app/components/d-lightbox.js
@@ -2,6 +2,8 @@ import Component from "@glimmer/component";
import { tracked } from "@glimmer/tracking";
import { service } from "@ember/service";
import { htmlSafe } from "@ember/template";
+import { bind } from "discourse/lib/decorators";
+import discourseLater from "discourse/lib/later";
import {
ANIMATION_DURATION,
KEYBOARD_SHORTCUTS,
@@ -20,8 +22,6 @@ import {
setCarouselScrollPosition,
setSiteThemeColor,
} from "discourse/lib/lightbox/helpers";
-import discourseLater from "discourse-common/lib/later";
-import { bind } from "discourse-common/utils/decorators";
export default class DLightbox extends Component {
@service appEvents;
diff --git a/app/assets/javascripts/discourse/app/components/d-modal.gjs b/app/assets/javascripts/discourse/app/components/d-modal.gjs
index dc482b8c2f2..0a83c77fa6f 100644
--- a/app/assets/javascripts/discourse/app/components/d-modal.gjs
+++ b/app/assets/javascripts/discourse/app/components/d-modal.gjs
@@ -17,10 +17,10 @@ import {
disableBodyScroll,
enableBodyScroll,
} from "discourse/lib/body-scroll-lock";
+import { bind } from "discourse/lib/decorators";
import { getMaxAnimationTimeMs } from "discourse/lib/swipe-events";
import swipe from "discourse/modifiers/swipe";
import trapTab from "discourse/modifiers/trap-tab";
-import { bind } from "discourse-common/utils/decorators";
export const CLOSE_INITIATED_BY_BUTTON = "initiatedByCloseButton";
export const CLOSE_INITIATED_BY_ESC = "initiatedByESC";
diff --git a/app/assets/javascripts/discourse/app/components/d-navigation-item.js b/app/assets/javascripts/discourse/app/components/d-navigation-item.js
index 92f4f2f03de..bb10be80a85 100644
--- a/app/assets/javascripts/discourse/app/components/d-navigation-item.js
+++ b/app/assets/javascripts/discourse/app/components/d-navigation-item.js
@@ -1,6 +1,6 @@
import Component from "@glimmer/component";
import { service } from "@ember/service";
-import { makeArray } from "discourse-common/lib/helpers";
+import { makeArray } from "discourse/lib/helpers";
export default class DNavigationItem extends Component {
@service router;
diff --git a/app/assets/javascripts/discourse/app/components/d-navigation.js b/app/assets/javascripts/discourse/app/components/d-navigation.js
index fc50b4d141d..3f0610c3df1 100644
--- a/app/assets/javascripts/discourse/app/components/d-navigation.js
+++ b/app/assets/javascripts/discourse/app/components/d-navigation.js
@@ -6,10 +6,10 @@ import { service } from "@ember/service";
import { htmlSafe } from "@ember/template";
import { tagName } from "@ember-decorators/component";
import { setting } from "discourse/lib/computed";
+import discourseComputed from "discourse/lib/decorators";
import { filterTypeForMode } from "discourse/lib/filter-mode";
import { NotificationLevels } from "discourse/lib/notification-levels";
import NavItem from "discourse/models/nav-item";
-import discourseComputed from "discourse-common/utils/decorators";
@tagName("")
export default class DNavigation extends Component {
diff --git a/app/assets/javascripts/discourse/app/components/d-page-header.gjs b/app/assets/javascripts/discourse/app/components/d-page-header.gjs
index 8e1af6402cd..572ec7e749c 100644
--- a/app/assets/javascripts/discourse/app/components/d-page-header.gjs
+++ b/app/assets/javascripts/discourse/app/components/d-page-header.gjs
@@ -16,7 +16,7 @@ import {
} from "discourse/components/d-page-action-button";
import DropdownMenu from "discourse/components/dropdown-menu";
import HorizontalOverflowNav from "discourse/components/horizontal-overflow-nav";
-import { bind } from "discourse-common/utils/decorators";
+import { bind } from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
import DMenu from "float-kit/components/d-menu";
diff --git a/app/assets/javascripts/discourse/app/components/d-section.gjs b/app/assets/javascripts/discourse/app/components/d-section.gjs
index 7e40e553671..0349e47412b 100644
--- a/app/assets/javascripts/discourse/app/components/d-section.gjs
+++ b/app/assets/javascripts/discourse/app/components/d-section.gjs
@@ -2,7 +2,7 @@ import Component from "@glimmer/component";
import { concat } from "@ember/helper";
import { notEq } from "truth-helpers";
import bodyClass from "discourse/helpers/body-class";
-import deprecated from "discourse-common/lib/deprecated";
+import deprecated from "discourse/lib/deprecated";
// Can add a body class from within a component
export default class DSection extends Component {
diff --git a/app/assets/javascripts/discourse/app/components/d-styles.gjs b/app/assets/javascripts/discourse/app/components/d-styles.gjs
index a56edf4ef78..c8e0085cb36 100644
--- a/app/assets/javascripts/discourse/app/components/d-styles.gjs
+++ b/app/assets/javascripts/discourse/app/components/d-styles.gjs
@@ -1,6 +1,6 @@
import Component from "@glimmer/component";
import { service } from "@ember/service";
-import { getURLWithCDN } from "discourse-common/lib/get-url";
+import { getURLWithCDN } from "discourse/lib/get-url";
export default class DStyles extends Component {
@service session;
diff --git a/app/assets/javascripts/discourse/app/components/d-virtual-height.gjs b/app/assets/javascripts/discourse/app/components/d-virtual-height.gjs
index 06dcd36f184..444c4949b6c 100644
--- a/app/assets/javascripts/discourse/app/components/d-virtual-height.gjs
+++ b/app/assets/javascripts/discourse/app/components/d-virtual-height.gjs
@@ -1,9 +1,9 @@
import Component from "@glimmer/component";
import { cancel, scheduleOnce } from "@ember/runloop";
import { service } from "@ember/service";
+import discourseDebounce from "discourse/lib/debounce";
+import { bind } from "discourse/lib/decorators";
import isZoomed from "discourse/lib/zoom-check";
-import discourseDebounce from "discourse-common/lib/debounce";
-import { bind } from "discourse-common/utils/decorators";
export default class DVirtualHeight extends Component {
@service site;
diff --git a/app/assets/javascripts/discourse/app/components/date-input.js b/app/assets/javascripts/discourse/app/components/date-input.js
index 6a5ee438384..b5ac5bdcd13 100644
--- a/app/assets/javascripts/discourse/app/components/date-input.js
+++ b/app/assets/javascripts/discourse/app/components/date-input.js
@@ -5,8 +5,8 @@ import { schedule } from "@ember/runloop";
import { classNames } from "@ember-decorators/component";
import { on } from "@ember-decorators/object";
import { Promise } from "rsvp";
+import discourseComputed from "discourse/lib/decorators";
import loadScript from "discourse/lib/load-script";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
function isInputDateSupported() {
diff --git a/app/assets/javascripts/discourse/app/components/date-picker.js b/app/assets/javascripts/discourse/app/components/date-picker.js
index 6fdfc4cb3ee..c2c6b96c926 100644
--- a/app/assets/javascripts/discourse/app/components/date-picker.js
+++ b/app/assets/javascripts/discourse/app/components/date-picker.js
@@ -4,8 +4,8 @@ import { computed } from "@ember/object";
import { schedule } from "@ember/runloop";
import { classNames } from "@ember-decorators/component";
import { on } from "@ember-decorators/object";
+import discourseComputed from "discourse/lib/decorators";
import loadScript from "discourse/lib/load-script";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
const DATE_FORMAT = "YYYY-MM-DD";
diff --git a/app/assets/javascripts/discourse/app/components/discourse-linked-text.js b/app/assets/javascripts/discourse/app/components/discourse-linked-text.js
index fe8a94486c0..1d82196dad3 100644
--- a/app/assets/javascripts/discourse/app/components/discourse-linked-text.js
+++ b/app/assets/javascripts/discourse/app/components/discourse-linked-text.js
@@ -1,6 +1,6 @@
import Component from "@ember/component";
import { tagName } from "@ember-decorators/component";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
@tagName("span")
diff --git a/app/assets/javascripts/discourse/app/components/discourse-tag-bound.js b/app/assets/javascripts/discourse/app/components/discourse-tag-bound.js
index 390094d3d33..9ea4ca9add5 100644
--- a/app/assets/javascripts/discourse/app/components/discourse-tag-bound.js
+++ b/app/assets/javascripts/discourse/app/components/discourse-tag-bound.js
@@ -4,8 +4,8 @@ import {
classNameBindings,
tagName,
} from "@ember-decorators/component";
-import getURL from "discourse-common/lib/get-url";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
+import getURL from "discourse/lib/get-url";
@tagName("a")
@classNameBindings(":discourse-tag", "style", "tagClass")
diff --git a/app/assets/javascripts/discourse/app/components/discourse-topic.js b/app/assets/javascripts/discourse/app/components/discourse-topic.js
index 77f927c2877..9186c9b6c5a 100644
--- a/app/assets/javascripts/discourse/app/components/discourse-topic.js
+++ b/app/assets/javascripts/discourse/app/components/discourse-topic.js
@@ -7,9 +7,9 @@ import { classNameBindings } from "@ember-decorators/component";
import { observes } from "@ember-decorators/object";
import $ from "jquery";
import ClickTrack from "discourse/lib/click-track";
+import { bind } from "discourse/lib/decorators";
import { highlightPost } from "discourse/lib/utilities";
import Scrolling from "discourse/mixins/scrolling";
-import { bind } from "discourse-common/utils/decorators";
@classNameBindings(
"multiSelect",
diff --git a/app/assets/javascripts/discourse/app/components/discovery/filter-navigation.js b/app/assets/javascripts/discourse/app/components/discovery/filter-navigation.js
index 9f7febe9ba8..3e8435854a7 100644
--- a/app/assets/javascripts/discourse/app/components/discovery/filter-navigation.js
+++ b/app/assets/javascripts/discourse/app/components/discovery/filter-navigation.js
@@ -2,9 +2,9 @@ import Component from "@glimmer/component";
import { tracked } from "@glimmer/tracking";
import { action } from "@ember/object";
import { service } from "@ember/service";
+import discourseDebounce from "discourse/lib/debounce";
+import { bind } from "discourse/lib/decorators";
import { resettableTracked } from "discourse/lib/tracked-tools";
-import discourseDebounce from "discourse-common/lib/debounce";
-import { bind } from "discourse-common/utils/decorators";
export default class DiscoveryFilterNavigation extends Component {
@service site;
diff --git a/app/assets/javascripts/discourse/app/components/edit-category-general.js b/app/assets/javascripts/discourse/app/components/edit-category-general.js
index c041b7ecc82..c6329f9d3e2 100644
--- a/app/assets/javascripts/discourse/app/components/edit-category-general.js
+++ b/app/assets/javascripts/discourse/app/components/edit-category-general.js
@@ -4,10 +4,10 @@ import { cancel } from "@ember/runloop";
import { isEmpty } from "@ember/utils";
import { buildCategoryPanel } from "discourse/components/edit-category-panel";
import { categoryBadgeHTML } from "discourse/helpers/category-link";
+import discourseComputed from "discourse/lib/decorators";
+import getURL from "discourse/lib/get-url";
+import discourseLater from "discourse/lib/later";
import Category from "discourse/models/category";
-import getURL from "discourse-common/lib/get-url";
-import discourseLater from "discourse-common/lib/later";
-import discourseComputed from "discourse-common/utils/decorators";
export default class EditCategoryGeneral extends buildCategoryPanel("general") {
@not("category.isUncategorizedCategory") canSelectParentCategory;
diff --git a/app/assets/javascripts/discourse/app/components/edit-category-images.js b/app/assets/javascripts/discourse/app/components/edit-category-images.js
index 27310f39b67..f47b1a5d0f8 100644
--- a/app/assets/javascripts/discourse/app/components/edit-category-images.js
+++ b/app/assets/javascripts/discourse/app/components/edit-category-images.js
@@ -1,6 +1,6 @@
import EmberObject, { action } from "@ember/object";
import { buildCategoryPanel } from "discourse/components/edit-category-panel";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
export default class EditCategoryImages extends buildCategoryPanel("images") {
@discourseComputed("category.uploaded_background.url")
diff --git a/app/assets/javascripts/discourse/app/components/edit-category-security.js b/app/assets/javascripts/discourse/app/components/edit-category-security.js
index 49edb4b9a04..ccb5ff33a03 100644
--- a/app/assets/javascripts/discourse/app/components/edit-category-security.js
+++ b/app/assets/javascripts/discourse/app/components/edit-category-security.js
@@ -1,8 +1,8 @@
import { action } from "@ember/object";
import { not } from "@ember/object/computed";
import { buildCategoryPanel } from "discourse/components/edit-category-panel";
+import discourseComputed from "discourse/lib/decorators";
import PermissionType from "discourse/models/permission-type";
-import discourseComputed from "discourse-common/utils/decorators";
export default class EditCategorySecurity extends buildCategoryPanel(
"security"
diff --git a/app/assets/javascripts/discourse/app/components/edit-category-settings.js b/app/assets/javascripts/discourse/app/components/edit-category-settings.js
index 1db502d83ca..d43f7c72491 100644
--- a/app/assets/javascripts/discourse/app/components/edit-category-settings.js
+++ b/app/assets/javascripts/discourse/app/components/edit-category-settings.js
@@ -3,7 +3,7 @@ import { and, empty } from "@ember/object/computed";
import { buildCategoryPanel } from "discourse/components/edit-category-panel";
import { setting } from "discourse/lib/computed";
import { SEARCH_PRIORITIES } from "discourse/lib/constants";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
const categorySortCriteria = [];
diff --git a/app/assets/javascripts/discourse/app/components/edit-category-tab.js b/app/assets/javascripts/discourse/app/components/edit-category-tab.js
index 0073a251a78..8aec53f3819 100644
--- a/app/assets/javascripts/discourse/app/components/edit-category-tab.js
+++ b/app/assets/javascripts/discourse/app/components/edit-category-tab.js
@@ -5,9 +5,9 @@ import { scheduleOnce } from "@ember/runloop";
import { underscore } from "@ember/string";
import { classNameBindings, tagName } from "@ember-decorators/component";
import { propertyEqual } from "discourse/lib/computed";
+import discourseComputed from "discourse/lib/decorators";
+import getURL from "discourse/lib/get-url";
import DiscourseURL from "discourse/lib/url";
-import getURL from "discourse-common/lib/get-url";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
@tagName("li")
diff --git a/app/assets/javascripts/discourse/app/components/edit-category-topic-template.js b/app/assets/javascripts/discourse/app/components/edit-category-topic-template.js
index 1875a562aed..31bed394f15 100644
--- a/app/assets/javascripts/discourse/app/components/edit-category-topic-template.js
+++ b/app/assets/javascripts/discourse/app/components/edit-category-topic-template.js
@@ -3,7 +3,7 @@ import { action } from "@ember/object";
import { schedule } from "@ember/runloop";
import { observes } from "@ember-decorators/object";
import { buildCategoryPanel } from "discourse/components/edit-category-panel";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
export default class EditCategoryTopicTemplate extends buildCategoryPanel(
"topic-template"
diff --git a/app/assets/javascripts/discourse/app/components/emoji-picker/content.gjs b/app/assets/javascripts/discourse/app/components/emoji-picker/content.gjs
index ae5a394c256..45bb6911718 100644
--- a/app/assets/javascripts/discourse/app/components/emoji-picker/content.gjs
+++ b/app/assets/javascripts/discourse/app/components/emoji-picker/content.gjs
@@ -21,11 +21,11 @@ import {
disableBodyScroll,
enableBodyScroll,
} from "discourse/lib/body-scroll-lock";
+import discourseDebounce from "discourse/lib/debounce";
+import { bind } from "discourse/lib/decorators";
+import { makeArray } from "discourse/lib/helpers";
import { emojiUrlFor } from "discourse/lib/text";
import { INPUT_DELAY } from "discourse-common/config/environment";
-import discourseDebounce from "discourse-common/lib/debounce";
-import { makeArray } from "discourse-common/lib/helpers";
-import { bind } from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
import DiversityMenu from "./diversity-menu";
diff --git a/app/assets/javascripts/discourse/app/components/flag-action-type.js b/app/assets/javascripts/discourse/app/components/flag-action-type.js
index e01e8360021..ecb1fa632c6 100644
--- a/app/assets/javascripts/discourse/app/components/flag-action-type.js
+++ b/app/assets/javascripts/discourse/app/components/flag-action-type.js
@@ -1,8 +1,8 @@
import Component from "@ember/component";
import { and, equal, not } from "@ember/object/computed";
import { tagName } from "@ember-decorators/component";
+import discourseComputed from "discourse/lib/decorators";
import { MAX_MESSAGE_LENGTH } from "discourse/models/post-action-type";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
@tagName("")
diff --git a/app/assets/javascripts/discourse/app/components/flat-button.js b/app/assets/javascripts/discourse/app/components/flat-button.js
index e77fc44a215..b3b85ec430e 100644
--- a/app/assets/javascripts/discourse/app/components/flat-button.js
+++ b/app/assets/javascripts/discourse/app/components/flat-button.js
@@ -4,7 +4,7 @@ import {
classNames,
tagName,
} from "@ember-decorators/component";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
@tagName("button")
diff --git a/app/assets/javascripts/discourse/app/components/form-template-field/upload.gjs b/app/assets/javascripts/discourse/app/components/form-template-field/upload.gjs
index e40cf0b688b..804b4b17b1e 100644
--- a/app/assets/javascripts/discourse/app/components/form-template-field/upload.gjs
+++ b/app/assets/javascripts/discourse/app/components/form-template-field/upload.gjs
@@ -5,9 +5,9 @@ import { dasherize } from "@ember/string";
import { htmlSafe } from "@ember/template";
import PickFilesButton from "discourse/components/pick-files-button";
import icon from "discourse/helpers/d-icon";
+import { bind } from "discourse/lib/decorators";
import { isAudio, isImage, isVideo } from "discourse/lib/uploads";
import UppyUpload from "discourse/lib/uppy/uppy-upload";
-import { bind } from "discourse-common/utils/decorators";
export default class FormTemplateFieldUpload extends Component {
@tracked uploadValue;
diff --git a/app/assets/javascripts/discourse/app/components/future-date-input.js b/app/assets/javascripts/discourse/app/components/future-date-input.js
index 0e30724f42d..2407ccd8678 100644
--- a/app/assets/javascripts/discourse/app/components/future-date-input.js
+++ b/app/assets/javascripts/discourse/app/components/future-date-input.js
@@ -1,6 +1,7 @@
import Component from "@ember/component";
import { action } from "@ember/object";
import { and, empty, equal } from "@ember/object/computed";
+import discourseComputed from "discourse/lib/decorators";
import {
extendedDefaultTimeShortcuts,
formatTime,
@@ -8,7 +9,6 @@ import {
TIME_SHORTCUT_TYPES,
timeShortcuts,
} from "discourse/lib/time-shortcut";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
import { FORMAT } from "select-kit/components/future-date-input-selector";
diff --git a/app/assets/javascripts/discourse/app/components/glimmer-site-header.gjs b/app/assets/javascripts/discourse/app/components/glimmer-site-header.gjs
index 58c6bc61f8d..a4e5f01745c 100644
--- a/app/assets/javascripts/discourse/app/components/glimmer-site-header.gjs
+++ b/app/assets/javascripts/discourse/app/components/glimmer-site-header.gjs
@@ -7,6 +7,8 @@ import { service } from "@ember/service";
import { waitForPromise } from "@ember/test-waiters";
import ItsATrap from "@discourse/itsatrap";
import concatClass from "discourse/helpers/concat-class";
+import { bind, debounce } from "discourse/lib/decorators";
+import discourseLater from "discourse/lib/later";
import scrollLock from "discourse/lib/scroll-lock";
import {
getMaxAnimationTimeMs,
@@ -15,8 +17,6 @@ import {
import { isDocumentRTL } from "discourse/lib/text-direction";
import swipe from "discourse/modifiers/swipe";
import { isTesting } from "discourse-common/config/environment";
-import discourseLater from "discourse-common/lib/later";
-import { bind, debounce } from "discourse-common/utils/decorators";
import Header from "./header";
let _menuPanelClassesToForceDropdown = [];
diff --git a/app/assets/javascripts/discourse/app/components/global-notice.js b/app/assets/javascripts/discourse/app/components/global-notice.js
index 9d0a633ad34..e23cb8105aa 100644
--- a/app/assets/javascripts/discourse/app/components/global-notice.js
+++ b/app/assets/javascripts/discourse/app/components/global-notice.js
@@ -4,8 +4,8 @@ import { service } from "@ember/service";
import { htmlSafe } from "@ember/template";
import { tagName } from "@ember-decorators/component";
import cookie, { removeCookie } from "discourse/lib/cookie";
+import { bind } from "discourse/lib/decorators";
import { DeferredTrackedSet } from "discourse/lib/tracked-tools";
-import { bind } from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
const _pluginNotices = new DeferredTrackedSet();
diff --git a/app/assets/javascripts/discourse/app/components/google-search.js b/app/assets/javascripts/discourse/app/components/google-search.js
index c6e16693864..627760e3db5 100644
--- a/app/assets/javascripts/discourse/app/components/google-search.js
+++ b/app/assets/javascripts/discourse/app/components/google-search.js
@@ -1,8 +1,8 @@
import Component from "@ember/component";
import { alias } from "@ember/object/computed";
import { classNameBindings, classNames } from "@ember-decorators/component";
-import getURL from "discourse-common/lib/get-url";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
+import getURL from "discourse/lib/get-url";
@classNames("google-search-form")
@classNameBindings("hidden:hidden")
diff --git a/app/assets/javascripts/discourse/app/components/group-card-contents.js b/app/assets/javascripts/discourse/app/components/group-card-contents.js
index 282e15dfac6..62109722c3a 100644
--- a/app/assets/javascripts/discourse/app/components/group-card-contents.js
+++ b/app/assets/javascripts/discourse/app/components/group-card-contents.js
@@ -5,9 +5,9 @@ import { classNameBindings, classNames } from "@ember-decorators/component";
import { on } from "@ember-decorators/object";
import CardContentsBase from "discourse/components/card-contents-base";
import { setting } from "discourse/lib/computed";
+import discourseComputed from "discourse/lib/decorators";
import { wantsNewWindow } from "discourse/lib/intercept-click";
import { groupPath } from "discourse/lib/url";
-import discourseComputed from "discourse-common/utils/decorators";
const maxMembersToDisplay = 10;
diff --git a/app/assets/javascripts/discourse/app/components/group-flair-inputs.js b/app/assets/javascripts/discourse/app/components/group-flair-inputs.js
index d573685fb9c..de03bbc4d9b 100644
--- a/app/assets/javascripts/discourse/app/components/group-flair-inputs.js
+++ b/app/assets/javascripts/discourse/app/components/group-flair-inputs.js
@@ -4,10 +4,10 @@ import { classNames } from "@ember-decorators/component";
import { observes, on } from "@ember-decorators/object";
import $ from "jquery";
import { ajax } from "discourse/lib/ajax";
-import discourseDebounce from "discourse-common/lib/debounce";
-import getURL from "discourse-common/lib/get-url";
-import { convertIconClass } from "discourse-common/lib/icon-library";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseDebounce from "discourse/lib/debounce";
+import discourseComputed from "discourse/lib/decorators";
+import getURL from "discourse/lib/get-url";
+import { convertIconClass } from "discourse/lib/icon-library";
import { i18n } from "discourse-i18n";
@classNames("group-flair-inputs")
diff --git a/app/assets/javascripts/discourse/app/components/group-imap-email-settings.js b/app/assets/javascripts/discourse/app/components/group-imap-email-settings.js
index 394de8dc1fc..280baa2c0c9 100644
--- a/app/assets/javascripts/discourse/app/components/group-imap-email-settings.js
+++ b/app/assets/javascripts/discourse/app/components/group-imap-email-settings.js
@@ -5,8 +5,8 @@ import { tagName } from "@ember-decorators/component";
import { on } from "@ember-decorators/object";
import { ajax } from "discourse/lib/ajax";
import { popupAjaxError } from "discourse/lib/ajax-error";
+import discourseComputed from "discourse/lib/decorators";
import emailProviderDefaultSettings from "discourse/lib/email-provider-default-settings";
-import discourseComputed from "discourse-common/utils/decorators";
@tagName("")
export default class GroupImapEmailSettings extends Component {
diff --git a/app/assets/javascripts/discourse/app/components/group-manage-email-settings.js b/app/assets/javascripts/discourse/app/components/group-manage-email-settings.js
index 499cfd3e048..6fe492a7e09 100644
--- a/app/assets/javascripts/discourse/app/components/group-manage-email-settings.js
+++ b/app/assets/javascripts/discourse/app/components/group-manage-email-settings.js
@@ -4,7 +4,7 @@ import { service } from "@ember/service";
import { isEmpty } from "@ember/utils";
import { tagName } from "@ember-decorators/component";
import { on } from "@ember-decorators/object";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
@tagName("")
diff --git a/app/assets/javascripts/discourse/app/components/group-manage-logs-filter.js b/app/assets/javascripts/discourse/app/components/group-manage-logs-filter.js
index b746e7b0ddc..f856a9ddf2b 100644
--- a/app/assets/javascripts/discourse/app/components/group-manage-logs-filter.js
+++ b/app/assets/javascripts/discourse/app/components/group-manage-logs-filter.js
@@ -1,6 +1,6 @@
import Component from "@ember/component";
import { tagName } from "@ember-decorators/component";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
@tagName("")
diff --git a/app/assets/javascripts/discourse/app/components/group-manage-save-button.js b/app/assets/javascripts/discourse/app/components/group-manage-save-button.js
index 33ed0cfd5ea..25c686efa09 100644
--- a/app/assets/javascripts/discourse/app/components/group-manage-save-button.js
+++ b/app/assets/javascripts/discourse/app/components/group-manage-save-button.js
@@ -5,7 +5,7 @@ import { service } from "@ember/service";
import GroupDefaultNotificationsModal from "discourse/components/modal/group-default-notifications";
import { popupAutomaticMembershipAlert } from "discourse/controllers/groups-new";
import { popupAjaxError } from "discourse/lib/ajax-error";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
export default class GroupManageSaveButton extends Component {
diff --git a/app/assets/javascripts/discourse/app/components/group-membership-button.js b/app/assets/javascripts/discourse/app/components/group-membership-button.js
index 6232f89b3e3..7270e66fb66 100644
--- a/app/assets/javascripts/discourse/app/components/group-membership-button.js
+++ b/app/assets/javascripts/discourse/app/components/group-membership-button.js
@@ -4,7 +4,7 @@ import { service } from "@ember/service";
import { classNames } from "@ember-decorators/component";
import { popupAjaxError } from "discourse/lib/ajax-error";
import cookie from "discourse/lib/cookie";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
import RequestGroupMembershipForm from "./modal/request-group-membership-form";
diff --git a/app/assets/javascripts/discourse/app/components/group-selector.js b/app/assets/javascripts/discourse/app/components/group-selector.js
index e013a38e207..d10d6770241 100644
--- a/app/assets/javascripts/discourse/app/components/group-selector.js
+++ b/app/assets/javascripts/discourse/app/components/group-selector.js
@@ -2,8 +2,8 @@ import Component from "@ember/component";
import { isEmpty } from "@ember/utils";
import { observes, on } from "@ember-decorators/object";
import $ from "jquery";
-import { findRawTemplate } from "discourse-common/lib/raw-templates";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
+import { findRawTemplate } from "discourse/lib/raw-templates";
import { i18n } from "discourse-i18n";
export default class GroupSelector extends Component {
diff --git a/app/assets/javascripts/discourse/app/components/groups-form-interaction-fields.js b/app/assets/javascripts/discourse/app/components/groups-form-interaction-fields.js
index cdb4a4d95b1..37d9a97670b 100644
--- a/app/assets/javascripts/discourse/app/components/groups-form-interaction-fields.js
+++ b/app/assets/javascripts/discourse/app/components/groups-form-interaction-fields.js
@@ -1,7 +1,7 @@
import Component from "@ember/component";
import { or } from "@ember/object/computed";
+import discourseComputed from "discourse/lib/decorators";
import { NotificationLevels } from "discourse/lib/notification-levels";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
export default class GroupsFormInteractionFields extends Component {
diff --git a/app/assets/javascripts/discourse/app/components/groups-form-membership-fields.js b/app/assets/javascripts/discourse/app/components/groups-form-membership-fields.js
index 7b6fca0d2b0..4fe1e0460ff 100644
--- a/app/assets/javascripts/discourse/app/components/groups-form-membership-fields.js
+++ b/app/assets/javascripts/discourse/app/components/groups-form-membership-fields.js
@@ -1,8 +1,8 @@
import Component from "@ember/component";
import { action, computed } from "@ember/object";
import { not, readOnly } from "@ember/object/computed";
+import discourseComputed from "discourse/lib/decorators";
import AssociatedGroup from "discourse/models/associated-group";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
export default class GroupsFormMembershipFields extends Component {
diff --git a/app/assets/javascripts/discourse/app/components/groups-form-profile-fields.js b/app/assets/javascripts/discourse/app/components/groups-form-profile-fields.js
index 570589e9a52..7f5a7d5cf70 100644
--- a/app/assets/javascripts/discourse/app/components/groups-form-profile-fields.js
+++ b/app/assets/javascripts/discourse/app/components/groups-form-profile-fields.js
@@ -4,9 +4,9 @@ import { not } from "@ember/object/computed";
import { isEmpty } from "@ember/utils";
import { observes } from "@ember-decorators/object";
import { popupAjaxError } from "discourse/lib/ajax-error";
+import discourseDebounce from "discourse/lib/debounce";
+import discourseComputed from "discourse/lib/decorators";
import Group from "discourse/models/group";
-import discourseDebounce from "discourse-common/lib/debounce";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
export default class GroupsFormProfileFields extends Component {
diff --git a/app/assets/javascripts/discourse/app/components/header-extra-info.js b/app/assets/javascripts/discourse/app/components/header-extra-info.js
index 51977030ddb..b4a63b4e568 100644
--- a/app/assets/javascripts/discourse/app/components/header-extra-info.js
+++ b/app/assets/javascripts/discourse/app/components/header-extra-info.js
@@ -1,4 +1,4 @@
-import deprecated from "discourse-common/lib/deprecated";
+import deprecated from "discourse/lib/deprecated";
export function needsSecondRowIf() {
deprecated(
diff --git a/app/assets/javascripts/discourse/app/components/header/hamburger-dropdown-wrapper.gjs b/app/assets/javascripts/discourse/app/components/header/hamburger-dropdown-wrapper.gjs
index d5b6f311f1a..46d5285d55d 100644
--- a/app/assets/javascripts/discourse/app/components/header/hamburger-dropdown-wrapper.gjs
+++ b/app/assets/javascripts/discourse/app/components/header/hamburger-dropdown-wrapper.gjs
@@ -4,10 +4,10 @@ import { on } from "@ember/modifier";
import { action } from "@ember/object";
import { service } from "@ember/service";
import { waitForPromise } from "@ember/test-waiters";
+import discourseLater from "discourse/lib/later";
import { isDocumentRTL } from "discourse/lib/text-direction";
import { prefersReducedMotion } from "discourse/lib/utilities";
import { isTesting } from "discourse-common/config/environment";
-import discourseLater from "discourse-common/lib/later";
import closeOnClickOutside from "../../modifiers/close-on-click-outside";
import SidebarHamburgerDropdown from "../sidebar/hamburger-dropdown";
diff --git a/app/assets/javascripts/discourse/app/components/header/home-logo.gjs b/app/assets/javascripts/discourse/app/components/header/home-logo.gjs
index c4606ff489a..ba6fd906aed 100644
--- a/app/assets/javascripts/discourse/app/components/header/home-logo.gjs
+++ b/app/assets/javascripts/discourse/app/components/header/home-logo.gjs
@@ -5,10 +5,10 @@ import { action } from "@ember/object";
import { service } from "@ember/service";
import PluginOutlet from "discourse/components/plugin-outlet";
import concatClass from "discourse/helpers/concat-class";
+import getURL from "discourse/lib/get-url";
import { wantsNewWindow } from "discourse/lib/intercept-click";
import { applyValueTransformer } from "discourse/lib/transformer";
import DiscourseURL from "discourse/lib/url";
-import getURL from "discourse-common/lib/get-url";
import HomeLogoContents from "./home-logo-contents";
export default class HomeLogo extends Component {
diff --git a/app/assets/javascripts/discourse/app/components/header/icons.gjs b/app/assets/javascripts/discourse/app/components/header/icons.gjs
index a5f0596b3ec..a49b61afc03 100644
--- a/app/assets/javascripts/discourse/app/components/header/icons.gjs
+++ b/app/assets/javascripts/discourse/app/components/header/icons.gjs
@@ -3,7 +3,7 @@ import { action } from "@ember/object";
import { service } from "@ember/service";
import { eq } from "truth-helpers";
import DAG from "discourse/lib/dag";
-import getURL from "discourse-common/lib/get-url";
+import getURL from "discourse/lib/get-url";
import Dropdown from "./dropdown";
import UserDropdown from "./user-dropdown";
diff --git a/app/assets/javascripts/discourse/app/components/header/logo.gjs b/app/assets/javascripts/discourse/app/components/header/logo.gjs
index 871be6e82c2..f801a82e4de 100644
--- a/app/assets/javascripts/discourse/app/components/header/logo.gjs
+++ b/app/assets/javascripts/discourse/app/components/header/logo.gjs
@@ -1,5 +1,5 @@
import { and, eq, notEq } from "truth-helpers";
-import getURL from "discourse-common/lib/get-url";
+import getURL from "discourse/lib/get-url";
const Logo =
{{#if (and @darkUrl (notEq @url @darkUrl))}}
diff --git a/app/assets/javascripts/discourse/app/components/header/topic/participant.gjs b/app/assets/javascripts/discourse/app/components/header/topic/participant.gjs
index bf9387012fb..8f92f09f76c 100644
--- a/app/assets/javascripts/discourse/app/components/header/topic/participant.gjs
+++ b/app/assets/javascripts/discourse/app/components/header/topic/participant.gjs
@@ -6,7 +6,7 @@ import { service } from "@ember/service";
import { eq } from "truth-helpers";
import avatar from "discourse/helpers/bound-avatar-template";
import icon from "discourse/helpers/d-icon";
-import getURL from "discourse-common/lib/get-url";
+import getURL from "discourse/lib/get-url";
export default class Participant extends Component {
@service appEvents;
diff --git a/app/assets/javascripts/discourse/app/components/header/user-dropdown/user-status-bubble.gjs b/app/assets/javascripts/discourse/app/components/header/user-dropdown/user-status-bubble.gjs
index 57477499e1f..24c5ebe985a 100644
--- a/app/assets/javascripts/discourse/app/components/header/user-dropdown/user-status-bubble.gjs
+++ b/app/assets/javascripts/discourse/app/components/header/user-dropdown/user-status-bubble.gjs
@@ -1,6 +1,6 @@
import { concat } from "@ember/helper";
import emoji from "discourse/helpers/emoji";
-import escape from "discourse-common/lib/escape";
+import escape from "discourse/lib/escape";
import { i18n } from "discourse-i18n";
const title = (description, endsAt, timezone) => {
diff --git a/app/assets/javascripts/discourse/app/components/header/user-menu-wrapper.gjs b/app/assets/javascripts/discourse/app/components/header/user-menu-wrapper.gjs
index 0439d389fb6..a5ec97eef08 100644
--- a/app/assets/javascripts/discourse/app/components/header/user-menu-wrapper.gjs
+++ b/app/assets/javascripts/discourse/app/components/header/user-menu-wrapper.gjs
@@ -1,10 +1,10 @@
import Component from "@glimmer/component";
import { hash } from "@ember/helper";
import { action } from "@ember/object";
+import discourseLater from "discourse/lib/later";
import { isDocumentRTL } from "discourse/lib/text-direction";
import { prefersReducedMotion } from "discourse/lib/utilities";
import { isTesting } from "discourse-common/config/environment";
-import discourseLater from "discourse-common/lib/later";
import closeOnClickOutside from "../../modifiers/close-on-click-outside";
import UserMenu from "../user-menu/menu";
diff --git a/app/assets/javascripts/discourse/app/components/horizontal-overflow-nav.js b/app/assets/javascripts/discourse/app/components/horizontal-overflow-nav.js
index 9b0b4f6c55d..be186185c2b 100644
--- a/app/assets/javascripts/discourse/app/components/horizontal-overflow-nav.js
+++ b/app/assets/javascripts/discourse/app/components/horizontal-overflow-nav.js
@@ -2,7 +2,7 @@ import Component from "@glimmer/component";
import { tracked } from "@glimmer/tracking";
import { action } from "@ember/object";
import { service } from "@ember/service";
-import { bind } from "discourse-common/utils/decorators";
+import { bind } from "discourse/lib/decorators";
export default class HorizontalOverflowNav extends Component {
@service site;
diff --git a/app/assets/javascripts/discourse/app/components/iframed-html.gjs b/app/assets/javascripts/discourse/app/components/iframed-html.gjs
index 0a516b8e4bc..46a72045662 100644
--- a/app/assets/javascripts/discourse/app/components/iframed-html.gjs
+++ b/app/assets/javascripts/discourse/app/components/iframed-html.gjs
@@ -1,7 +1,7 @@
import Component from "@glimmer/component";
import didInsert from "@ember/render-modifiers/modifiers/did-insert";
import didUpdate from "@ember/render-modifiers/modifiers/did-update";
-import { bind } from "discourse-common/utils/decorators";
+import { bind } from "discourse/lib/decorators";
export default class IframedHtml extends Component {
@bind
diff --git a/app/assets/javascripts/discourse/app/components/invite-panel.js b/app/assets/javascripts/discourse/app/components/invite-panel.js
index 3f2928430da..6f36f4af88b 100644
--- a/app/assets/javascripts/discourse/app/components/invite-panel.js
+++ b/app/assets/javascripts/discourse/app/components/invite-panel.js
@@ -3,10 +3,10 @@ import EmberObject, { action } from "@ember/object";
import { alias, and, equal, readOnly } from "@ember/object/computed";
import { isEmpty } from "@ember/utils";
import { computedI18n } from "discourse/lib/computed";
+import discourseComputed from "discourse/lib/decorators";
import { getNativeContact } from "discourse/lib/pwa-utils";
import { emailValid } from "discourse/lib/utilities";
import Group from "discourse/models/group";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
export default class InvitePanel extends Component {
diff --git a/app/assets/javascripts/discourse/app/components/latest-topic-list-item.js b/app/assets/javascripts/discourse/app/components/latest-topic-list-item.js
index 5f41ed92646..46d82e80910 100644
--- a/app/assets/javascripts/discourse/app/components/latest-topic-list-item.js
+++ b/app/assets/javascripts/discourse/app/components/latest-topic-list-item.js
@@ -7,7 +7,7 @@ import {
navigateToTopic,
showEntrance,
} from "discourse/components/topic-list-item";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
@attributeBindings("topic.id:data-topic-id")
@classNameBindings(":latest-topic-list-item", "unboundClassNames")
diff --git a/app/assets/javascripts/discourse/app/components/light-dark-img.gjs b/app/assets/javascripts/discourse/app/components/light-dark-img.gjs
index 71b294038ae..ddfc16c0272 100644
--- a/app/assets/javascripts/discourse/app/components/light-dark-img.gjs
+++ b/app/assets/javascripts/discourse/app/components/light-dark-img.gjs
@@ -1,7 +1,7 @@
import Component from "@glimmer/component";
import { service } from "@ember/service";
import CdnImg from "discourse/components/cdn-img";
-import { getURLWithCDN } from "discourse-common/lib/get-url";
+import { getURLWithCDN } from "discourse/lib/get-url";
export default class LightDarkImg extends Component {
@service session;
diff --git a/app/assets/javascripts/discourse/app/components/login-buttons.js b/app/assets/javascripts/discourse/app/components/login-buttons.js
index f395f62b9d7..81a52a5beb4 100644
--- a/app/assets/javascripts/discourse/app/components/login-buttons.js
+++ b/app/assets/javascripts/discourse/app/components/login-buttons.js
@@ -1,8 +1,8 @@
import Component from "@ember/component";
import { classNameBindings } from "@ember-decorators/component";
+import discourseComputed from "discourse/lib/decorators";
import { isWebauthnSupported } from "discourse/lib/webauthn";
import { findAll } from "discourse/models/login-method";
-import discourseComputed from "discourse-common/utils/decorators";
@classNameBindings("hidden", "multiple")
export default class LoginButtons extends Component {
diff --git a/app/assets/javascripts/discourse/app/components/modal/bookmark.js b/app/assets/javascripts/discourse/app/components/modal/bookmark.js
index 4310383566a..b9cb8affe6f 100644
--- a/app/assets/javascripts/discourse/app/components/modal/bookmark.js
+++ b/app/assets/javascripts/discourse/app/components/modal/bookmark.js
@@ -9,6 +9,7 @@ import { CLOSE_INITIATED_BY_CLICK_OUTSIDE } from "discourse/components/d-modal";
import { extractError } from "discourse/lib/ajax-error";
import { formattedReminderTime } from "discourse/lib/bookmark";
import KeyboardShortcuts from "discourse/lib/keyboard-shortcuts";
+import discourseLater from "discourse/lib/later";
import { sanitize } from "discourse/lib/text";
import {
defaultTimeShortcuts,
@@ -16,7 +17,6 @@ import {
} from "discourse/lib/time-shortcut";
import { now, parseCustomDatetime, startOfDay } from "discourse/lib/time-utils";
import { AUTO_DELETE_PREFERENCES } from "discourse/models/bookmark";
-import discourseLater from "discourse-common/lib/later";
import { i18n } from "discourse-i18n";
const BOOKMARK_BINDINGS = {
diff --git a/app/assets/javascripts/discourse/app/components/modal/create-account.js b/app/assets/javascripts/discourse/app/components/modal/create-account.js
index ad56ee7495c..effbea9e405 100644
--- a/app/assets/javascripts/discourse/app/components/modal/create-account.js
+++ b/app/assets/javascripts/discourse/app/components/modal/create-account.js
@@ -10,6 +10,8 @@ import { Promise } from "rsvp";
import { ajax } from "discourse/lib/ajax";
import { setting } from "discourse/lib/computed";
import cookie, { removeCookie } from "discourse/lib/cookie";
+import discourseDebounce from "discourse/lib/debounce";
+import discourseComputed, { bind } from "discourse/lib/decorators";
import NameValidationHelper from "discourse/lib/name-validation-helper";
import { userPath } from "discourse/lib/url";
import { emailValid } from "discourse/lib/utilities";
@@ -18,8 +20,6 @@ import UserFieldsValidation from "discourse/mixins/user-fields-validation";
import UsernameValidation from "discourse/mixins/username-validation";
import { findAll } from "discourse/models/login-method";
import User from "discourse/models/user";
-import discourseDebounce from "discourse-common/lib/debounce";
-import discourseComputed, { bind } from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
export default class CreateAccount extends Component.extend(
diff --git a/app/assets/javascripts/discourse/app/components/modal/forgot-password.js b/app/assets/javascripts/discourse/app/components/modal/forgot-password.js
index c00cf258933..1b78a2ccbf9 100644
--- a/app/assets/javascripts/discourse/app/components/modal/forgot-password.js
+++ b/app/assets/javascripts/discourse/app/components/modal/forgot-password.js
@@ -7,8 +7,8 @@ import { isEmpty } from "@ember/utils";
import { ajax } from "discourse/lib/ajax";
import { extractError } from "discourse/lib/ajax-error";
import cookie from "discourse/lib/cookie";
+import getURL from "discourse/lib/get-url";
import { escapeExpression } from "discourse/lib/utilities";
-import getURL from "discourse-common/lib/get-url";
import { i18n } from "discourse-i18n";
export default class ForgotPassword extends Component {
diff --git a/app/assets/javascripts/discourse/app/components/modal/grant-badge.gjs b/app/assets/javascripts/discourse/app/components/modal/grant-badge.gjs
index 215f3308b16..98d7e7ac552 100644
--- a/app/assets/javascripts/discourse/app/components/modal/grant-badge.gjs
+++ b/app/assets/javascripts/discourse/app/components/modal/grant-badge.gjs
@@ -7,13 +7,13 @@ import ConditionalLoadingSpinner from "discourse/components/conditional-loading-
import DButton from "discourse/components/d-button";
import DModal from "discourse/components/d-modal";
import { extractError } from "discourse/lib/ajax-error";
+import getURL from "discourse/lib/get-url";
import {
grantableBadges,
isBadgeGrantable,
} from "discourse/lib/grant-badge-utils";
import Badge from "discourse/models/badge";
import UserBadge from "discourse/models/user-badge";
-import getURL from "discourse-common/lib/get-url";
import { i18n } from "discourse-i18n";
import ComboBox from "select-kit/components/combo-box";
diff --git a/app/assets/javascripts/discourse/app/components/modal/history.js b/app/assets/javascripts/discourse/app/components/modal/history.js
index bf1ce2b42e4..6929a109df1 100644
--- a/app/assets/javascripts/discourse/app/components/modal/history.js
+++ b/app/assets/javascripts/discourse/app/components/modal/history.js
@@ -3,10 +3,10 @@ import { tracked } from "@glimmer/tracking";
import { action } from "@ember/object";
import { service } from "@ember/service";
import { categoryBadgeHTML } from "discourse/helpers/category-link";
+import { iconHTML } from "discourse/lib/icon-library";
import { sanitizeAsync } from "discourse/lib/text";
import Category from "discourse/models/category";
import Post from "discourse/models/post";
-import { iconHTML } from "discourse-common/lib/icon-library";
import { i18n } from "discourse-i18n";
function customTagArray(val) {
diff --git a/app/assets/javascripts/discourse/app/components/modal/insert-hyperlink.gjs b/app/assets/javascripts/discourse/app/components/modal/insert-hyperlink.gjs
index b60e7cff7d9..33d940cbd49 100644
--- a/app/assets/javascripts/discourse/app/components/modal/insert-hyperlink.gjs
+++ b/app/assets/javascripts/discourse/app/components/modal/insert-hyperlink.gjs
@@ -11,9 +11,9 @@ import categoryLink from "discourse/helpers/category-link";
import discourseTags from "discourse/helpers/discourse-tags";
import loadingSpinner from "discourse/helpers/loading-spinner";
import replaceEmoji from "discourse/helpers/replace-emoji";
+import discourseDebounce from "discourse/lib/debounce";
import { searchForTerm } from "discourse/lib/search";
import { prefixProtocol } from "discourse/lib/url";
-import discourseDebounce from "discourse-common/lib/debounce";
import { i18n } from "discourse-i18n";
export default class InsertHyperlink extends Component {
diff --git a/app/assets/javascripts/discourse/app/components/modal/json-schema-editor.js b/app/assets/javascripts/discourse/app/components/modal/json-schema-editor.js
index e3c69fb0e69..99818a88f8f 100644
--- a/app/assets/javascripts/discourse/app/components/modal/json-schema-editor.js
+++ b/app/assets/javascripts/discourse/app/components/modal/json-schema-editor.js
@@ -3,7 +3,7 @@ import { tracked } from "@glimmer/tracking";
import { action } from "@ember/object";
import { waitForPromise } from "@ember/test-waiters";
import { create } from "virtual-dom";
-import { iconNode } from "discourse-common/lib/icon-library";
+import { iconNode } from "discourse/lib/icon-library";
export default class JsonSchemaEditorModal extends Component {
@tracked editor = null;
diff --git a/app/assets/javascripts/discourse/app/components/modal/login.js b/app/assets/javascripts/discourse/app/components/modal/login.js
index bf8889b103f..d50dbd292a0 100644
--- a/app/assets/javascripts/discourse/app/components/modal/login.js
+++ b/app/assets/javascripts/discourse/app/components/modal/login.js
@@ -8,6 +8,8 @@ import { isEmpty } from "@ember/utils";
import { ajax } from "discourse/lib/ajax";
import { popupAjaxError } from "discourse/lib/ajax-error";
import cookie, { removeCookie } from "discourse/lib/cookie";
+import escape from "discourse/lib/escape";
+import getURL from "discourse/lib/get-url";
import { wantsNewWindow } from "discourse/lib/intercept-click";
import { areCookiesEnabled } from "discourse/lib/utilities";
import {
@@ -16,8 +18,6 @@ import {
} from "discourse/lib/webauthn";
import { findAll } from "discourse/models/login-method";
import { SECOND_FACTOR_METHODS } from "discourse/models/user";
-import escape from "discourse-common/lib/escape";
-import getURL from "discourse-common/lib/get-url";
import { i18n } from "discourse-i18n";
import ForgotPassword from "./forgot-password";
diff --git a/app/assets/javascripts/discourse/app/components/modal/second-factor-backup-edit.js b/app/assets/javascripts/discourse/app/components/modal/second-factor-backup-edit.js
index bacfc491cf7..91d9b0c224a 100644
--- a/app/assets/javascripts/discourse/app/components/modal/second-factor-backup-edit.js
+++ b/app/assets/javascripts/discourse/app/components/modal/second-factor-backup-edit.js
@@ -1,8 +1,8 @@
import Component from "@glimmer/component";
import { tracked } from "@glimmer/tracking";
import { action } from "@ember/object";
+import { debounce } from "discourse/lib/decorators";
import { SECOND_FACTOR_METHODS } from "discourse/models/user";
-import { debounce } from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
export default class SecondFactorBackupEdit extends Component {
diff --git a/app/assets/javascripts/discourse/app/components/modal/share-topic.js b/app/assets/javascripts/discourse/app/components/modal/share-topic.js
index 9722d13eb59..39e0f5fadb8 100644
--- a/app/assets/javascripts/discourse/app/components/modal/share-topic.js
+++ b/app/assets/javascripts/discourse/app/components/modal/share-topic.js
@@ -4,14 +4,12 @@ import { readOnly } from "@ember/object/computed";
import { getOwner } from "@ember/owner";
import { service } from "@ember/service";
import CreateInvite from "discourse/components/modal/create-invite";
+import discourseComputed, { afterRender } from "discourse/lib/decorators";
import { longDateNoYear } from "discourse/lib/formatter";
+import { getAbsoluteURL } from "discourse/lib/get-url";
import Sharing from "discourse/lib/sharing";
import { bufferedProperty } from "discourse/mixins/buffered-content";
import Category from "discourse/models/category";
-import { getAbsoluteURL } from "discourse-common/lib/get-url";
-import discourseComputed, {
- afterRender,
-} from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
export default class ShareTopicModal extends Component.extend(
diff --git a/app/assets/javascripts/discourse/app/components/modal/sidebar-section-form.js b/app/assets/javascripts/discourse/app/components/modal/sidebar-section-form.js
index 69c4dad069c..241d74fdc40 100644
--- a/app/assets/javascripts/discourse/app/components/modal/sidebar-section-form.js
+++ b/app/assets/javascripts/discourse/app/components/modal/sidebar-section-form.js
@@ -7,8 +7,8 @@ import { isEmpty } from "@ember/utils";
import { ajax } from "discourse/lib/ajax";
import { extractError } from "discourse/lib/ajax-error";
import { SIDEBAR_SECTION, SIDEBAR_URL } from "discourse/lib/constants";
+import { afterRender, bind } from "discourse/lib/decorators";
import { sanitize } from "discourse/lib/text";
-import { afterRender, bind } from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
class Section {
diff --git a/app/assets/javascripts/discourse/app/components/more-topics/browse-more.gjs b/app/assets/javascripts/discourse/app/components/more-topics/browse-more.gjs
index 2a7d8f34b2b..cbf39ec37e7 100644
--- a/app/assets/javascripts/discourse/app/components/more-topics/browse-more.gjs
+++ b/app/assets/javascripts/discourse/app/components/more-topics/browse-more.gjs
@@ -2,8 +2,8 @@ import Component from "@glimmer/component";
import { service } from "@ember/service";
import { htmlSafe } from "@ember/template";
import { categoryBadgeHTML } from "discourse/helpers/category-link";
-import getURL from "discourse-common/lib/get-url";
-import { iconHTML } from "discourse-common/lib/icon-library";
+import getURL from "discourse/lib/get-url";
+import { iconHTML } from "discourse/lib/icon-library";
import I18n, { i18n } from "discourse-i18n";
export default class BrowseMore extends Component {
diff --git a/app/assets/javascripts/discourse/app/components/mount-widget.js b/app/assets/javascripts/discourse/app/components/mount-widget.js
index bc3629ccf04..bab26cf9b78 100644
--- a/app/assets/javascripts/discourse/app/components/mount-widget.js
+++ b/app/assets/javascripts/discourse/app/components/mount-widget.js
@@ -4,9 +4,9 @@ import { cancel, scheduleOnce } from "@ember/runloop";
import { camelize } from "@ember/string";
import { diff, patch } from "virtual-dom";
import DirtyKeys from "discourse/lib/dirty-keys";
+import { getRegister } from "discourse/lib/get-owner";
import { WidgetClickHook } from "discourse/widgets/hooks";
import { queryRegistry, traverseCustomWidgets } from "discourse/widgets/widget";
-import { getRegister } from "discourse-common/lib/get-owner";
let _cleanCallbacks = {};
diff --git a/app/assets/javascripts/discourse/app/components/nav-item.gjs b/app/assets/javascripts/discourse/app/components/nav-item.gjs
index 3fb10d7195f..5ec2772f467 100644
--- a/app/assets/javascripts/discourse/app/components/nav-item.gjs
+++ b/app/assets/javascripts/discourse/app/components/nav-item.gjs
@@ -4,8 +4,8 @@ import { LinkTo } from "@ember/routing";
import { service } from "@ember/service";
import { htmlSafe } from "@ember/template";
import concatClass from "discourse/helpers/concat-class";
-import getURL from "discourse-common/lib/get-url";
-import { iconHTML } from "discourse-common/lib/icon-library";
+import getURL from "discourse/lib/get-url";
+import { iconHTML } from "discourse/lib/icon-library";
import { i18n } from "discourse-i18n";
export default class NavItem extends Component {
diff --git a/app/assets/javascripts/discourse/app/components/navigation-item.js b/app/assets/javascripts/discourse/app/components/navigation-item.js
index 9b4db9dac60..9d2d70cfe14 100644
--- a/app/assets/javascripts/discourse/app/components/navigation-item.js
+++ b/app/assets/javascripts/discourse/app/components/navigation-item.js
@@ -6,8 +6,8 @@ import {
classNameBindings,
tagName,
} from "@ember-decorators/component";
+import discourseComputed from "discourse/lib/decorators";
import { filterTypeForMode } from "discourse/lib/filter-mode";
-import discourseComputed from "discourse-common/utils/decorators";
@tagName("li")
@classNameBindings(
diff --git a/app/assets/javascripts/discourse/app/components/number-field.js b/app/assets/javascripts/discourse/app/components/number-field.js
index d1145309a16..34232629888 100644
--- a/app/assets/javascripts/discourse/app/components/number-field.js
+++ b/app/assets/javascripts/discourse/app/components/number-field.js
@@ -1,9 +1,9 @@
import { computed } from "@ember/object";
import { classNameBindings } from "@ember-decorators/component";
import TextField from "discourse/components/text-field";
+import discourseComputed from "discourse/lib/decorators";
+import deprecated from "discourse/lib/deprecated";
import { allowOnlyNumericInput } from "discourse/lib/utilities";
-import deprecated from "discourse-common/lib/deprecated";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
@classNameBindings("invalid")
diff --git a/app/assets/javascripts/discourse/app/components/page-loading-slider.gjs b/app/assets/javascripts/discourse/app/components/page-loading-slider.gjs
index 27244e2189e..26ffeeb3276 100644
--- a/app/assets/javascripts/discourse/app/components/page-loading-slider.gjs
+++ b/app/assets/javascripts/discourse/app/components/page-loading-slider.gjs
@@ -7,7 +7,7 @@ import { service } from "@ember/service";
import { htmlSafe } from "@ember/template";
import { eq } from "truth-helpers";
import concatClass from "discourse/helpers/concat-class";
-import { bind } from "discourse-common/utils/decorators";
+import { bind } from "discourse/lib/decorators";
export default class PageLoadingSlider extends Component {
@service loadingSlider;
diff --git a/app/assets/javascripts/discourse/app/components/pending-post.js b/app/assets/javascripts/discourse/app/components/pending-post.js
index b98cf239c00..b0e09b0ddca 100644
--- a/app/assets/javascripts/discourse/app/components/pending-post.js
+++ b/app/assets/javascripts/discourse/app/components/pending-post.js
@@ -1,8 +1,8 @@
import Component from "@ember/component";
import { resolveAllShortUrls } from "pretty-text/upload-short-url";
import { ajax } from "discourse/lib/ajax";
+import { afterRender } from "discourse/lib/decorators";
import { loadOneboxes } from "discourse/lib/load-oneboxes";
-import { afterRender } from "discourse-common/utils/decorators";
export default class PendingPost extends Component {
didRender() {
diff --git a/app/assets/javascripts/discourse/app/components/pick-files-button.js b/app/assets/javascripts/discourse/app/components/pick-files-button.js
index 82875d425e2..b0e66d83297 100644
--- a/app/assets/javascripts/discourse/app/components/pick-files-button.js
+++ b/app/assets/javascripts/discourse/app/components/pick-files-button.js
@@ -3,11 +3,11 @@ import { action } from "@ember/object";
import { service } from "@ember/service";
import { isBlank } from "@ember/utils";
import { classNames } from "@ember-decorators/component";
+import discourseComputed, { bind } from "discourse/lib/decorators";
import {
authorizedExtensions,
authorizesAllExtensions,
} from "discourse/lib/uploads";
-import discourseComputed, { bind } from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
// This picker is intended to be used with UppyUploadMixin or with
diff --git a/app/assets/javascripts/discourse/app/components/plugin-connector.js b/app/assets/javascripts/discourse/app/components/plugin-connector.js
index 94d46fc25d5..74a0014d28c 100644
--- a/app/assets/javascripts/discourse/app/components/plugin-connector.js
+++ b/app/assets/javascripts/discourse/app/components/plugin-connector.js
@@ -1,10 +1,10 @@
import Component from "@ember/component";
import { computed, defineProperty } from "@ember/object";
+import { afterRender } from "discourse/lib/decorators";
import {
buildArgsWithDeprecations,
deprecatedArgumentValue,
} from "discourse/lib/plugin-connectors";
-import { afterRender } from "discourse-common/utils/decorators";
let _decorators = {};
diff --git a/app/assets/javascripts/discourse/app/components/plugin-outlet.js b/app/assets/javascripts/discourse/app/components/plugin-outlet.js
index 42e65f51af9..a00125960c9 100644
--- a/app/assets/javascripts/discourse/app/components/plugin-outlet.js
+++ b/app/assets/javascripts/discourse/app/components/plugin-outlet.js
@@ -4,14 +4,14 @@ import { get } from "@ember/object";
import { getOwner } from "@ember/owner";
import { service } from "@ember/service";
import GlimmerComponentWithDeprecatedParentView from "discourse/components/glimmer-component-with-deprecated-parent-view";
+import { bind } from "discourse/lib/decorators";
+import deprecated from "discourse/lib/deprecated";
+import { helperContext } from "discourse/lib/helpers";
import {
buildArgsWithDeprecations,
connectorsExist,
renderedConnectorsFor,
} from "discourse/lib/plugin-connectors";
-import deprecated from "discourse-common/lib/deprecated";
-import { helperContext } from "discourse-common/lib/helpers";
-import { bind } from "discourse-common/utils/decorators";
const PARENT_VIEW_DEPRECATION_MSG =
"parentView should not be used within plugin outlets. Use the available outlet arguments, or inject a service which can provide the context you need.";
diff --git a/app/assets/javascripts/discourse/app/components/popup-input-tip.js b/app/assets/javascripts/discourse/app/components/popup-input-tip.js
index 1b792dcdfa9..4ad362f0233 100644
--- a/app/assets/javascripts/discourse/app/components/popup-input-tip.js
+++ b/app/assets/javascripts/discourse/app/components/popup-input-tip.js
@@ -7,7 +7,7 @@ import {
classNameBindings,
tagName,
} from "@ember-decorators/component";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
@tagName("a")
@classNameBindings(":popup-tip", "good", "bad", "lastShownAt::hide")
diff --git a/app/assets/javascripts/discourse/app/components/post-list/item/details.gjs b/app/assets/javascripts/discourse/app/components/post-list/item/details.gjs
index 6e4b1a21c03..dbee29bf63e 100644
--- a/app/assets/javascripts/discourse/app/components/post-list/item/details.gjs
+++ b/app/assets/javascripts/discourse/app/components/post-list/item/details.gjs
@@ -3,8 +3,8 @@ import { hash } from "@ember/helper";
import { htmlSafe } from "@ember/template";
import PluginOutlet from "discourse/components/plugin-outlet";
import categoryLink from "discourse/helpers/category-link";
+import getURL from "discourse/lib/get-url";
import { prioritizeNameInUx } from "discourse/lib/settings";
-import getURL from "discourse-common/lib/get-url";
import { i18n } from "discourse-i18n";
export default class PostListItemDetails extends Component {
diff --git a/app/assets/javascripts/discourse/app/components/post-text-selection-toolbar.gjs b/app/assets/javascripts/discourse/app/components/post-text-selection-toolbar.gjs
index 85b9dd317d9..cd318977804 100644
--- a/app/assets/javascripts/discourse/app/components/post-text-selection-toolbar.gjs
+++ b/app/assets/javascripts/discourse/app/components/post-text-selection-toolbar.gjs
@@ -11,13 +11,13 @@ import FastEditModal from "discourse/components/modal/fast-edit";
import PluginOutlet from "discourse/components/plugin-outlet";
import concatClass from "discourse/helpers/concat-class";
import { ajax } from "discourse/lib/ajax";
+import { getAbsoluteURL } from "discourse/lib/get-url";
import Sharing from "discourse/lib/sharing";
import {
clipboardCopy,
postUrl,
setCaretPosition,
} from "discourse/lib/utilities";
-import { getAbsoluteURL } from "discourse-common/lib/get-url";
import { i18n } from "discourse-i18n";
export function fixQuotes(str) {
diff --git a/app/assets/javascripts/discourse/app/components/post-text-selection.gjs b/app/assets/javascripts/discourse/app/components/post-text-selection.gjs
index af9a9b51969..c9e20501884 100644
--- a/app/assets/javascripts/discourse/app/components/post-text-selection.gjs
+++ b/app/assets/javascripts/discourse/app/components/post-text-selection.gjs
@@ -5,6 +5,9 @@ import { cancel, debounce } from "@ember/runloop";
import { service } from "@ember/service";
import { modifier } from "ember-modifier";
import PostTextSelectionToolbar from "discourse/components/post-text-selection-toolbar";
+import discourseDebounce from "discourse/lib/debounce";
+import { bind } from "discourse/lib/decorators";
+import escapeRegExp from "discourse/lib/escape-regexp";
import isElementInViewport from "discourse/lib/is-element-in-viewport";
import toMarkdown from "discourse/lib/to-markdown";
import {
@@ -15,9 +18,6 @@ import {
} from "discourse/lib/utilities";
import virtualElementFromTextRange from "discourse/lib/virtual-element-from-text-range";
import { INPUT_DELAY } from "discourse-common/config/environment";
-import discourseDebounce from "discourse-common/lib/debounce";
-import { bind } from "discourse-common/utils/decorators";
-import escapeRegExp from "discourse-common/utils/escape-regexp";
function getQuoteTitle(element) {
const titleEl = element.querySelector(".title");
diff --git a/app/assets/javascripts/discourse/app/components/post/menu/button-config.gjs b/app/assets/javascripts/discourse/app/components/post/menu/button-config.gjs
index ed4383eb9bb..093f6992aac 100644
--- a/app/assets/javascripts/discourse/app/components/post/menu/button-config.gjs
+++ b/app/assets/javascripts/discourse/app/components/post/menu/button-config.gjs
@@ -1,5 +1,5 @@
-import { helperContext } from "discourse-common/lib/helpers";
-import { bind } from "discourse-common/utils/decorators";
+import { bind } from "discourse/lib/decorators";
+import { helperContext } from "discourse/lib/helpers";
export default class PostMenuButtonConfig {
#Component;
diff --git a/app/assets/javascripts/discourse/app/components/post/menu/buttons/like.gjs b/app/assets/javascripts/discourse/app/components/post/menu/buttons/like.gjs
index 37b7da0b00b..77d43e41d17 100644
--- a/app/assets/javascripts/discourse/app/components/post/menu/buttons/like.gjs
+++ b/app/assets/javascripts/discourse/app/components/post/menu/buttons/like.gjs
@@ -5,7 +5,7 @@ import { service } from "@ember/service";
import DButton from "discourse/components/d-button";
import concatClass from "discourse/helpers/concat-class";
import icon from "discourse/helpers/d-icon";
-import discourseLater from "discourse-common/lib/later";
+import discourseLater from "discourse/lib/later";
import { i18n } from "discourse-i18n";
export default class PostMenuLikeButton extends Component {
diff --git a/app/assets/javascripts/discourse/app/components/radio-button.js b/app/assets/javascripts/discourse/app/components/radio-button.js
index 298e09fb36a..eae73bd4622 100644
--- a/app/assets/javascripts/discourse/app/components/radio-button.js
+++ b/app/assets/javascripts/discourse/app/components/radio-button.js
@@ -1,7 +1,7 @@
import Component from "@ember/component";
import { attributeBindings, tagName } from "@ember-decorators/component";
import $ from "jquery";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
@tagName("input")
@attributeBindings(
diff --git a/app/assets/javascripts/discourse/app/components/related-messages.gjs b/app/assets/javascripts/discourse/app/components/related-messages.gjs
index 169e67ccb82..e603d2fd58a 100644
--- a/app/assets/javascripts/discourse/app/components/related-messages.gjs
+++ b/app/assets/javascripts/discourse/app/components/related-messages.gjs
@@ -3,7 +3,7 @@ import { cached } from "@glimmer/tracking";
import { service } from "@ember/service";
import { htmlSafe } from "@ember/template";
import BasicTopicList from "discourse/components/basic-topic-list";
-import getURL from "discourse-common/lib/get-url";
+import getURL from "discourse/lib/get-url";
import { i18n } from "discourse-i18n";
export default class RelatedMessages extends Component {
diff --git a/app/assets/javascripts/discourse/app/components/responsive-table.gjs b/app/assets/javascripts/discourse/app/components/responsive-table.gjs
index 586a1578572..491daab48e4 100644
--- a/app/assets/javascripts/discourse/app/components/responsive-table.gjs
+++ b/app/assets/javascripts/discourse/app/components/responsive-table.gjs
@@ -4,8 +4,8 @@ import { on } from "@ember/modifier";
import didUpdate from "@ember/render-modifiers/modifiers/did-update";
import { modifier } from "ember-modifier";
import concatClass from "discourse/helpers/concat-class";
+import { bind } from "discourse/lib/decorators";
import onResize from "discourse/modifiers/on-resize";
-import { bind } from "discourse-common/utils/decorators";
export default class ResponsiveTable extends Component {
lastScrollPosition = 0;
diff --git a/app/assets/javascripts/discourse/app/components/reviewable-flagged-post.js b/app/assets/javascripts/discourse/app/components/reviewable-flagged-post.js
index 4b2265bcbdc..2234355e96f 100644
--- a/app/assets/javascripts/discourse/app/components/reviewable-flagged-post.js
+++ b/app/assets/javascripts/discourse/app/components/reviewable-flagged-post.js
@@ -1,7 +1,7 @@
import Component from "@glimmer/component";
import { tracked } from "@glimmer/tracking";
import { action } from "@ember/object";
-import { bind } from "discourse-common/utils/decorators";
+import { bind } from "discourse/lib/decorators";
export default class ReviewableFlaggedPost extends Component {
@tracked isCollapsed = false;
diff --git a/app/assets/javascripts/discourse/app/components/reviewable-item.js b/app/assets/javascripts/discourse/app/components/reviewable-item.js
index d8da717e3ac..03c6dcfa79b 100644
--- a/app/assets/javascripts/discourse/app/components/reviewable-item.js
+++ b/app/assets/javascripts/discourse/app/components/reviewable-item.js
@@ -9,11 +9,11 @@ import RejectReasonReviewableModal from "discourse/components/modal/reject-reaso
import ReviseAndRejectPostReviewable from "discourse/components/modal/revise-and-reject-post-reviewable";
import { ajax } from "discourse/lib/ajax";
import { popupAjaxError } from "discourse/lib/ajax-error";
+import discourseComputed, { bind } from "discourse/lib/decorators";
import optionalService from "discourse/lib/optional-service";
import Category from "discourse/models/category";
import Composer from "discourse/models/composer";
import Topic from "discourse/models/topic";
-import discourseComputed, { bind } from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
let _components = {};
diff --git a/app/assets/javascripts/discourse/app/components/reviewable-post-edits.js b/app/assets/javascripts/discourse/app/components/reviewable-post-edits.js
index 39402974d2e..af7558a0861 100644
--- a/app/assets/javascripts/discourse/app/components/reviewable-post-edits.js
+++ b/app/assets/javascripts/discourse/app/components/reviewable-post-edits.js
@@ -3,9 +3,9 @@ import { action } from "@ember/object";
import { gt } from "@ember/object/computed";
import { service } from "@ember/service";
import HistoryModal from "discourse/components/modal/history";
+import discourseComputed from "discourse/lib/decorators";
import { longDate } from "discourse/lib/formatter";
import { historyHeat } from "discourse/widgets/post-edits-indicator";
-import discourseComputed from "discourse-common/utils/decorators";
export default class ReviewablePostEdits extends Component {
@service modal;
diff --git a/app/assets/javascripts/discourse/app/components/reviewable-score.js b/app/assets/javascripts/discourse/app/components/reviewable-score.js
index 6778d347fd9..26b3bd18bd5 100644
--- a/app/assets/javascripts/discourse/app/components/reviewable-score.js
+++ b/app/assets/javascripts/discourse/app/components/reviewable-score.js
@@ -1,7 +1,7 @@
import Component from "@ember/component";
import { gt } from "@ember/object/computed";
import { tagName } from "@ember-decorators/component";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
@tagName("")
export default class ReviewableScore extends Component {
diff --git a/app/assets/javascripts/discourse/app/components/reviewable-user.js b/app/assets/javascripts/discourse/app/components/reviewable-user.js
index 15d55244c7e..e028341ceb4 100644
--- a/app/assets/javascripts/discourse/app/components/reviewable-user.js
+++ b/app/assets/javascripts/discourse/app/components/reviewable-user.js
@@ -1,5 +1,5 @@
import Component from "@ember/component";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
export default class ReviewableUser extends Component {
@discourseComputed("reviewable.user_fields")
diff --git a/app/assets/javascripts/discourse/app/components/save-controls.js b/app/assets/javascripts/discourse/app/components/save-controls.js
index 4a26fe16598..3ecc4f73a6f 100644
--- a/app/assets/javascripts/discourse/app/components/save-controls.js
+++ b/app/assets/javascripts/discourse/app/components/save-controls.js
@@ -1,7 +1,7 @@
import Component from "@ember/component";
import { or } from "@ember/object/computed";
import { classNames } from "@ember-decorators/component";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
@classNames("controls", "save-button")
export default class SaveControls extends Component {
diff --git a/app/assets/javascripts/discourse/app/components/scrolling-post-stream.js b/app/assets/javascripts/discourse/app/components/scrolling-post-stream.js
index 6a67001b634..6d65652048f 100644
--- a/app/assets/javascripts/discourse/app/components/scrolling-post-stream.js
+++ b/app/assets/javascripts/discourse/app/components/scrolling-post-stream.js
@@ -1,12 +1,12 @@
import { schedule, scheduleOnce } from "@ember/runloop";
import { service } from "@ember/service";
import MountWidget from "discourse/components/mount-widget";
+import discourseDebounce from "discourse/lib/debounce";
+import { bind } from "discourse/lib/decorators";
+import domUtils from "discourse/lib/dom-utils";
import offsetCalculator from "discourse/lib/offset-calculator";
import DiscourseURL from "discourse/lib/url";
import { cloak, uncloak } from "discourse/widgets/post-stream";
-import discourseDebounce from "discourse-common/lib/debounce";
-import { bind } from "discourse-common/utils/decorators";
-import domUtils from "discourse-common/utils/dom-utils";
const DEBOUNCE_DELAY = 50;
diff --git a/app/assets/javascripts/discourse/app/components/search-menu.js b/app/assets/javascripts/discourse/app/components/search-menu.js
index 351d405cf85..c22a49eaab4 100644
--- a/app/assets/javascripts/discourse/app/components/search-menu.js
+++ b/app/assets/javascripts/discourse/app/components/search-menu.js
@@ -7,6 +7,9 @@ import { Promise } from "rsvp";
import { popupAjaxError } from "discourse/lib/ajax-error";
import { CANCELLED_STATUS } from "discourse/lib/autocomplete";
import { search as searchCategoryTag } from "discourse/lib/category-tag-search";
+import discourseDebounce from "discourse/lib/debounce";
+import { bind } from "discourse/lib/decorators";
+import getURL from "discourse/lib/get-url";
import {
isValidSearchTerm,
searchForTerm,
@@ -14,9 +17,6 @@ import {
} from "discourse/lib/search";
import DiscourseURL from "discourse/lib/url";
import userSearch from "discourse/lib/user-search";
-import discourseDebounce from "discourse-common/lib/debounce";
-import getURL from "discourse-common/lib/get-url";
-import { bind } from "discourse-common/utils/decorators";
const CATEGORY_SLUG_REGEXP = /(\#[a-zA-Z0-9\-:]*)$/gi;
const USERNAME_REGEXP = /(\@[a-zA-Z0-9\-\_]*)$/gi;
diff --git a/app/assets/javascripts/discourse/app/components/search-menu/results/assistant-item.js b/app/assets/javascripts/discourse/app/components/search-menu/results/assistant-item.js
index a1c4965aec9..558d567a6cb 100644
--- a/app/assets/javascripts/discourse/app/components/search-menu/results/assistant-item.js
+++ b/app/assets/javascripts/discourse/app/components/search-menu/results/assistant-item.js
@@ -2,8 +2,8 @@ import Component from "@glimmer/component";
import { action } from "@ember/object";
import { service } from "@ember/service";
import { focusSearchInput } from "discourse/components/search-menu";
-import getURL from "discourse-common/lib/get-url";
-import { debounce } from "discourse-common/utils/decorators";
+import { debounce } from "discourse/lib/decorators";
+import getURL from "discourse/lib/get-url";
const _itemSelectCallbacks = [];
export function addItemSelectCallback(fn) {
diff --git a/app/assets/javascripts/discourse/app/components/search-text-field.js b/app/assets/javascripts/discourse/app/components/search-text-field.js
index 5695141e171..ce44370b1d0 100644
--- a/app/assets/javascripts/discourse/app/components/search-text-field.js
+++ b/app/assets/javascripts/discourse/app/components/search-text-field.js
@@ -1,8 +1,8 @@
import { on } from "@ember-decorators/object";
import $ from "jquery";
import TextField from "discourse/components/text-field";
+import discourseComputed from "discourse/lib/decorators";
import { applySearchAutocomplete } from "discourse/lib/search";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
export default class SearchTextField extends TextField {
diff --git a/app/assets/javascripts/discourse/app/components/second-factor-form.js b/app/assets/javascripts/discourse/app/components/second-factor-form.js
index a1015780bce..9e1122965b8 100644
--- a/app/assets/javascripts/discourse/app/components/second-factor-form.js
+++ b/app/assets/javascripts/discourse/app/components/second-factor-form.js
@@ -1,7 +1,7 @@
import Component from "@ember/component";
import { action } from "@ember/object";
+import discourseComputed from "discourse/lib/decorators";
import { SECOND_FACTOR_METHODS } from "discourse/models/user";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
export default class SecondFactorForm extends Component {
diff --git a/app/assets/javascripts/discourse/app/components/share-panel.js b/app/assets/javascripts/discourse/app/components/share-panel.js
index d2df83684ac..d2f99ff3867 100644
--- a/app/assets/javascripts/discourse/app/components/share-panel.js
+++ b/app/assets/javascripts/discourse/app/components/share-panel.js
@@ -2,10 +2,10 @@ import Component from "@ember/component";
import { action } from "@ember/object";
import { alias } from "@ember/object/computed";
import { isEmpty } from "@ember/utils";
+import discourseComputed from "discourse/lib/decorators";
+import discourseLater from "discourse/lib/later";
import Sharing from "discourse/lib/sharing";
import { escapeExpression } from "discourse/lib/utilities";
-import discourseLater from "discourse-common/lib/later";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
export default class SharePanel extends Component {
diff --git a/app/assets/javascripts/discourse/app/components/shared-draft-controls.js b/app/assets/javascripts/discourse/app/components/shared-draft-controls.js
index 12bae3f6727..f51e7f2f8d7 100644
--- a/app/assets/javascripts/discourse/app/components/shared-draft-controls.js
+++ b/app/assets/javascripts/discourse/app/components/shared-draft-controls.js
@@ -2,7 +2,7 @@ import Component from "@ember/component";
import { action } from "@ember/object";
import { service } from "@ember/service";
import { tagName } from "@ember-decorators/component";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
@tagName("")
diff --git a/app/assets/javascripts/discourse/app/components/sidebar.js b/app/assets/javascripts/discourse/app/components/sidebar.js
index 72adad415e0..437db621637 100644
--- a/app/assets/javascripts/discourse/app/components/sidebar.js
+++ b/app/assets/javascripts/discourse/app/components/sidebar.js
@@ -1,6 +1,6 @@
import Component from "@glimmer/component";
import { service } from "@ember/service";
-import { bind } from "discourse-common/utils/decorators";
+import { bind } from "discourse/lib/decorators";
export default class Sidebar extends Component {
@service appEvents;
diff --git a/app/assets/javascripts/discourse/app/components/sidebar/back-to-forum.gjs b/app/assets/javascripts/discourse/app/components/sidebar/back-to-forum.gjs
index fb771ef88fc..011c4605329 100644
--- a/app/assets/javascripts/discourse/app/components/sidebar/back-to-forum.gjs
+++ b/app/assets/javascripts/discourse/app/components/sidebar/back-to-forum.gjs
@@ -1,5 +1,5 @@
import icon from "discourse/helpers/d-icon";
-import getURL from "discourse-common/lib/get-url";
+import getURL from "discourse/lib/get-url";
import { i18n } from "discourse-i18n";
const BackToForum =
diff --git a/app/assets/javascripts/discourse/app/components/sidebar/edit-navigation-menu/categories-modal.gjs b/app/assets/javascripts/discourse/app/components/sidebar/edit-navigation-menu/categories-modal.gjs
index eee50cfb2ad..95de77fd0a2 100644
--- a/app/assets/javascripts/discourse/app/components/sidebar/edit-navigation-menu/categories-modal.gjs
+++ b/app/assets/javascripts/discourse/app/components/sidebar/edit-navigation-menu/categories-modal.gjs
@@ -14,9 +14,9 @@ import categoryBadge from "discourse/helpers/category-badge";
import dirSpan from "discourse/helpers/dir-span";
import loadingSpinner from "discourse/helpers/loading-spinner";
import { popupAjaxError } from "discourse/lib/ajax-error";
+import discourseDebounce from "discourse/lib/debounce";
import Category from "discourse/models/category";
import { INPUT_DELAY } from "discourse-common/config/environment";
-import discourseDebounce from "discourse-common/lib/debounce";
import { i18n } from "discourse-i18n";
class ActionSerializer {
diff --git a/app/assets/javascripts/discourse/app/components/sidebar/edit-navigation-menu/tags-modal.gjs b/app/assets/javascripts/discourse/app/components/sidebar/edit-navigation-menu/tags-modal.gjs
index 7402fa2266c..9f6fba018ac 100644
--- a/app/assets/javascripts/discourse/app/components/sidebar/edit-navigation-menu/tags-modal.gjs
+++ b/app/assets/javascripts/discourse/app/components/sidebar/edit-navigation-menu/tags-modal.gjs
@@ -10,8 +10,8 @@ import { gt, has, or } from "truth-helpers";
import ConditionalLoadingSpinner from "discourse/components/conditional-loading-spinner";
import loadingSpinner from "discourse/helpers/loading-spinner";
import { popupAjaxError } from "discourse/lib/ajax-error";
+import discourseDebounce from "discourse/lib/debounce";
import { INPUT_DELAY } from "discourse-common/config/environment";
-import discourseDebounce from "discourse-common/lib/debounce";
import { i18n } from "discourse-i18n";
import EditNavigationMenuModal from "./modal";
diff --git a/app/assets/javascripts/discourse/app/components/sidebar/more-section-links.gjs b/app/assets/javascripts/discourse/app/components/sidebar/more-section-links.gjs
index b926e2ba1c8..0ffa856d5b7 100644
--- a/app/assets/javascripts/discourse/app/components/sidebar/more-section-links.gjs
+++ b/app/assets/javascripts/discourse/app/components/sidebar/more-section-links.gjs
@@ -7,7 +7,7 @@ import willDestroy from "@ember/render-modifiers/modifiers/will-destroy";
import { service } from "@ember/service";
import { isEmpty } from "@ember/utils";
import icon from "discourse/helpers/d-icon";
-import { bind } from "discourse-common/utils/decorators";
+import { bind } from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
import MoreSectionLink from "./more-section-link";
import SectionLinkButton from "./section-link-button";
diff --git a/app/assets/javascripts/discourse/app/components/sidebar/section-form-link.gjs b/app/assets/javascripts/discourse/app/components/sidebar/section-form-link.gjs
index 8445d2d8e4e..3ce5e146592 100644
--- a/app/assets/javascripts/discourse/app/components/sidebar/section-form-link.gjs
+++ b/app/assets/javascripts/discourse/app/components/sidebar/section-form-link.gjs
@@ -9,7 +9,7 @@ import DButton from "discourse/components/d-button";
import concatClass from "discourse/helpers/concat-class";
import icon from "discourse/helpers/d-icon";
import withEventValue from "discourse/helpers/with-event-value";
-import discourseLater from "discourse-common/lib/later";
+import discourseLater from "discourse/lib/later";
import { i18n } from "discourse-i18n";
import IconPicker from "select-kit/components/icon-picker";
diff --git a/app/assets/javascripts/discourse/app/components/sidebar/section-link.gjs b/app/assets/javascripts/discourse/app/components/sidebar/section-link.gjs
index 4772835f96d..e99925cf6c7 100644
--- a/app/assets/javascripts/discourse/app/components/sidebar/section-link.gjs
+++ b/app/assets/javascripts/discourse/app/components/sidebar/section-link.gjs
@@ -9,8 +9,8 @@ import { service } from "@ember/service";
import { eq, or } from "truth-helpers";
import concatClass from "discourse/helpers/concat-class";
import icon from "discourse/helpers/d-icon";
-import deprecated from "discourse-common/lib/deprecated";
-import { bind } from "discourse-common/utils/decorators";
+import { bind } from "discourse/lib/decorators";
+import deprecated from "discourse/lib/deprecated";
import SectionLinkPrefix from "./section-link-prefix";
/**
diff --git a/app/assets/javascripts/discourse/app/components/sidebar/section.gjs b/app/assets/javascripts/discourse/app/components/sidebar/section.gjs
index e588fb066ce..817ac6dd2dc 100644
--- a/app/assets/javascripts/discourse/app/components/sidebar/section.gjs
+++ b/app/assets/javascripts/discourse/app/components/sidebar/section.gjs
@@ -7,11 +7,11 @@ import { service } from "@ember/service";
import { isEmpty } from "@ember/utils";
import concatClass from "discourse/helpers/concat-class";
import icon from "discourse/helpers/d-icon";
+import { bind } from "discourse/lib/decorators";
import {
getCollapsedSidebarSectionKey,
getSidebarSectionContentId,
} from "discourse/lib/sidebar/helpers";
-import { bind } from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
import DropdownSelectBox from "select-kit/components/dropdown-select-box";
import DTooltip from "float-kit/components/d-tooltip";
diff --git a/app/assets/javascripts/discourse/app/components/sidebar/user/categories-section.gjs b/app/assets/javascripts/discourse/app/components/sidebar/user/categories-section.gjs
index db7da97186e..360fa296ba8 100644
--- a/app/assets/javascripts/discourse/app/components/sidebar/user/categories-section.gjs
+++ b/app/assets/javascripts/discourse/app/components/sidebar/user/categories-section.gjs
@@ -2,9 +2,9 @@ import { cached } from "@glimmer/tracking";
import { array, hash } from "@ember/helper";
import { action } from "@ember/object";
import { service } from "@ember/service";
+import { debounce } from "discourse/lib/decorators";
import { hasDefaultSidebarCategories } from "discourse/lib/sidebar/helpers";
import Category from "discourse/models/category";
-import { debounce } from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
import AllCategoriesSectionLink from "../common/all-categories-section-link";
import CommonCategoriesSection from "../common/categories-section";
diff --git a/app/assets/javascripts/discourse/app/components/sidebar/user/custom-sections.gjs b/app/assets/javascripts/discourse/app/components/sidebar/user/custom-sections.gjs
index da476f2bf9b..7cffec6aaf4 100644
--- a/app/assets/javascripts/discourse/app/components/sidebar/user/custom-sections.gjs
+++ b/app/assets/javascripts/discourse/app/components/sidebar/user/custom-sections.gjs
@@ -1,5 +1,5 @@
import { ajax } from "discourse/lib/ajax";
-import { bind } from "discourse-common/utils/decorators";
+import { bind } from "discourse/lib/decorators";
import SidebarCustomSections from "../common/custom-sections";
export default class SidebarUserCustomSections extends SidebarCustomSections {
diff --git a/app/assets/javascripts/discourse/app/components/sidebar/user/messages-section.gjs b/app/assets/javascripts/discourse/app/components/sidebar/user/messages-section.gjs
index 98f7bf1de5c..8bbe49dbe10 100644
--- a/app/assets/javascripts/discourse/app/components/sidebar/user/messages-section.gjs
+++ b/app/assets/javascripts/discourse/app/components/sidebar/user/messages-section.gjs
@@ -4,9 +4,9 @@ import { array, fn, hash } from "@ember/helper";
import { getOwner } from "@ember/owner";
import { service } from "@ember/service";
import routeAction from "discourse/helpers/route-action";
+import { bind } from "discourse/lib/decorators";
import GroupMessageSectionLink from "discourse/lib/sidebar/user/messages-section/group-message-section-link";
import PersonalMessageSectionLink from "discourse/lib/sidebar/user/messages-section/personal-message-section-link";
-import { bind } from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
import Section from "../section";
import SectionLink from "../section-link";
diff --git a/app/assets/javascripts/discourse/app/components/signup-cta.js b/app/assets/javascripts/discourse/app/components/signup-cta.js
index 3ed1b0a5be3..5a78cc4ffeb 100644
--- a/app/assets/javascripts/discourse/app/components/signup-cta.js
+++ b/app/assets/javascripts/discourse/app/components/signup-cta.js
@@ -1,7 +1,7 @@
import Component from "@ember/component";
import { action } from "@ember/object";
import { on } from "@ember-decorators/object";
-import discourseLater from "discourse-common/lib/later";
+import discourseLater from "discourse/lib/later";
export default class SignupCta extends Component {
action = "showCreateAccount";
diff --git a/app/assets/javascripts/discourse/app/components/slow-mode-info.js b/app/assets/javascripts/discourse/app/components/slow-mode-info.js
index 75c37095db9..998b7feecf1 100644
--- a/app/assets/javascripts/discourse/app/components/slow-mode-info.js
+++ b/app/assets/javascripts/discourse/app/components/slow-mode-info.js
@@ -2,8 +2,8 @@ import Component from "@ember/component";
import { action } from "@ember/object";
import { durationTextFromSeconds } from "discourse/helpers/slow-mode";
import { popupAjaxError } from "discourse/lib/ajax-error";
+import discourseComputed from "discourse/lib/decorators";
import Topic from "discourse/models/topic";
-import discourseComputed from "discourse-common/utils/decorators";
export default class SlowModeInfo extends Component {
@discourseComputed("topic.slow_mode_seconds")
diff --git a/app/assets/javascripts/discourse/app/components/small-user-list.gjs b/app/assets/javascripts/discourse/app/components/small-user-list.gjs
index a36a52307ae..32cd180b62a 100644
--- a/app/assets/javascripts/discourse/app/components/small-user-list.gjs
+++ b/app/assets/javascripts/discourse/app/components/small-user-list.gjs
@@ -3,8 +3,8 @@ import { hash } from "@ember/helper";
import { service } from "@ember/service";
import PluginOutlet from "discourse/components/plugin-outlet";
import avatar from "discourse/helpers/bound-avatar-template";
+import getURL from "discourse/lib/get-url";
import { smallUserAttrs } from "discourse/lib/user-list-attrs";
-import getURL from "discourse-common/lib/get-url";
import { i18n } from "discourse-i18n";
export default class SmallUserList extends Component {
diff --git a/app/assets/javascripts/discourse/app/components/software-update-prompt.gjs b/app/assets/javascripts/discourse/app/components/software-update-prompt.gjs
index b2c3a2738b3..f5be6c1de1a 100644
--- a/app/assets/javascripts/discourse/app/components/software-update-prompt.gjs
+++ b/app/assets/javascripts/discourse/app/components/software-update-prompt.gjs
@@ -5,9 +5,9 @@ import { cancel } from "@ember/runloop";
import { service } from "@ember/service";
import DButton from "discourse/components/d-button";
import concatClass from "discourse/helpers/concat-class";
+import { bind } from "discourse/lib/decorators";
+import discourseLater from "discourse/lib/later";
import { isTesting } from "discourse-common/config/environment";
-import discourseLater from "discourse-common/lib/later";
-import { bind } from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
export default class SoftwareUpdatePrompt extends Component {
diff --git a/app/assets/javascripts/discourse/app/components/tag-drop-link.js b/app/assets/javascripts/discourse/app/components/tag-drop-link.js
index b308d099c07..d91204c9b25 100644
--- a/app/assets/javascripts/discourse/app/components/tag-drop-link.js
+++ b/app/assets/javascripts/discourse/app/components/tag-drop-link.js
@@ -4,9 +4,9 @@ import {
classNameBindings,
tagName,
} from "@ember-decorators/component";
+import discourseComputed from "discourse/lib/decorators";
+import getURL from "discourse/lib/get-url";
import DiscourseURL from "discourse/lib/url";
-import getURL from "discourse-common/lib/get-url";
-import discourseComputed from "discourse-common/utils/decorators";
@tagName("a")
@classNameBindings(
diff --git a/app/assets/javascripts/discourse/app/components/tag-groups-form.js b/app/assets/javascripts/discourse/app/components/tag-groups-form.js
index 610371b577e..c615774d0ad 100644
--- a/app/assets/javascripts/discourse/app/components/tag-groups-form.js
+++ b/app/assets/javascripts/discourse/app/components/tag-groups-form.js
@@ -3,9 +3,9 @@ import { action } from "@ember/object";
import { service } from "@ember/service";
import { isEmpty } from "@ember/utils";
import { tagName } from "@ember-decorators/component";
+import discourseComputed from "discourse/lib/decorators";
import { bufferedProperty } from "discourse/mixins/buffered-content";
import PermissionType from "discourse/models/permission-type";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
@tagName("")
diff --git a/app/assets/javascripts/discourse/app/components/tag-info.js b/app/assets/javascripts/discourse/app/components/tag-info.js
index 09ebbbfa725..bc60265765a 100644
--- a/app/assets/javascripts/discourse/app/components/tag-info.js
+++ b/app/assets/javascripts/discourse/app/components/tag-info.js
@@ -7,7 +7,7 @@ import { isEmpty } from "@ember/utils";
import { tagName } from "@ember-decorators/component";
import { ajax } from "discourse/lib/ajax";
import { popupAjaxError } from "discourse/lib/ajax-error";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
@tagName("")
diff --git a/app/assets/javascripts/discourse/app/components/tag-list.js b/app/assets/javascripts/discourse/app/components/tag-list.js
index 60aaf0a1ac4..4f63bab143f 100644
--- a/app/assets/javascripts/discourse/app/components/tag-list.js
+++ b/app/assets/javascripts/discourse/app/components/tag-list.js
@@ -1,8 +1,8 @@
import Component from "@ember/component";
import { sort } from "@ember/object/computed";
import { classNameBindings } from "@ember-decorators/component";
+import discourseComputed from "discourse/lib/decorators";
import Category from "discourse/models/category";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
@classNameBindings(
diff --git a/app/assets/javascripts/discourse/app/components/text-field.js b/app/assets/javascripts/discourse/app/components/text-field.js
index 86b9a0e14e1..e75bd8f4191 100644
--- a/app/assets/javascripts/discourse/app/components/text-field.js
+++ b/app/assets/javascripts/discourse/app/components/text-field.js
@@ -2,7 +2,7 @@ import { TextField } from "@ember/legacy-built-in-components";
import { computed } from "@ember/object";
import { cancel, next } from "@ember/runloop";
import { attributeBindings } from "@ember-decorators/component";
-import discourseDebounce from "discourse-common/lib/debounce";
+import discourseDebounce from "discourse/lib/debounce";
import { i18n } from "discourse-i18n";
const DEBOUNCE_MS = 500;
diff --git a/app/assets/javascripts/discourse/app/components/time-shortcut-picker.js b/app/assets/javascripts/discourse/app/components/time-shortcut-picker.js
index 194870a1326..295a6380088 100644
--- a/app/assets/javascripts/discourse/app/components/time-shortcut-picker.js
+++ b/app/assets/javascripts/discourse/app/components/time-shortcut-picker.js
@@ -3,6 +3,7 @@ import { action } from "@ember/object";
import { and, equal } from "@ember/object/computed";
import { tagName } from "@ember-decorators/component";
import { observes, on } from "@ember-decorators/object";
+import discourseComputed from "discourse/lib/decorators";
import {
defaultTimeShortcuts,
formatTime,
@@ -11,7 +12,6 @@ import {
TIME_SHORTCUT_TYPES,
} from "discourse/lib/time-shortcut";
import { laterToday, now, parseCustomDatetime } from "discourse/lib/time-utils";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
const BINDINGS = {
diff --git a/app/assets/javascripts/discourse/app/components/top-period-buttons.js b/app/assets/javascripts/discourse/app/components/top-period-buttons.js
index 28bfc68e60a..da8fb2e56d9 100644
--- a/app/assets/javascripts/discourse/app/components/top-period-buttons.js
+++ b/app/assets/javascripts/discourse/app/components/top-period-buttons.js
@@ -1,7 +1,7 @@
import Component from "@ember/component";
import { action } from "@ember/object";
import { classNames } from "@ember-decorators/component";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
@classNames("top-title-buttons")
export default class TopPeriodButtons extends Component {
diff --git a/app/assets/javascripts/discourse/app/components/topic-admin-menu.gjs b/app/assets/javascripts/discourse/app/components/topic-admin-menu.gjs
index 463d2d8c97a..456141f9999 100644
--- a/app/assets/javascripts/discourse/app/components/topic-admin-menu.gjs
+++ b/app/assets/javascripts/discourse/app/components/topic-admin-menu.gjs
@@ -7,7 +7,7 @@ import DButton from "discourse/components/d-button";
import DropdownMenu from "discourse/components/dropdown-menu";
import concatClass from "discourse/helpers/concat-class";
import icon from "discourse/helpers/d-icon";
-import getURL from "discourse-common/lib/get-url";
+import getURL from "discourse/lib/get-url";
import DMenu from "float-kit/components/d-menu";
export default class TopicAdminMenu extends Component {
diff --git a/app/assets/javascripts/discourse/app/components/topic-entrance.js b/app/assets/javascripts/discourse/app/components/topic-entrance.js
index ba3405e3a3a..5e0c35860c9 100644
--- a/app/assets/javascripts/discourse/app/components/topic-entrance.js
+++ b/app/assets/javascripts/discourse/app/components/topic-entrance.js
@@ -5,8 +5,8 @@ import { service } from "@ember/service";
import { classNameBindings } from "@ember-decorators/component";
import { on } from "@ember-decorators/object";
import $ from "jquery";
+import discourseComputed, { bind } from "discourse/lib/decorators";
import DiscourseURL from "discourse/lib/url";
-import discourseComputed, { bind } from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
function entranceDate(dt, showTime) {
diff --git a/app/assets/javascripts/discourse/app/components/topic-footer-buttons.js b/app/assets/javascripts/discourse/app/components/topic-footer-buttons.js
index 8ccd589730d..bf5e8751034 100644
--- a/app/assets/javascripts/discourse/app/components/topic-footer-buttons.js
+++ b/app/assets/javascripts/discourse/app/components/topic-footer-buttons.js
@@ -3,11 +3,11 @@ import { computed } from "@ember/object";
import { alias, or } from "@ember/object/computed";
import { getOwner } from "@ember/owner";
import { attributeBindings } from "@ember-decorators/component";
+import discourseComputed from "discourse/lib/decorators";
import { NotificationLevels } from "discourse/lib/notification-levels";
import { getTopicFooterButtons } from "discourse/lib/register-topic-footer-button";
import { getTopicFooterDropdowns } from "discourse/lib/register-topic-footer-dropdown";
import TopicBookmarkManager from "discourse/lib/topic-bookmark-manager";
-import discourseComputed from "discourse-common/utils/decorators";
@attributeBindings("role")
export default class TopicFooterButtons extends Component {
diff --git a/app/assets/javascripts/discourse/app/components/topic-list-item.js b/app/assets/javascripts/discourse/app/components/topic-list-item.js
index c1fa97b9f34..213cf8a8da7 100644
--- a/app/assets/javascripts/discourse/app/components/topic-list-item.js
+++ b/app/assets/javascripts/discourse/app/components/topic-list-item.js
@@ -11,14 +11,14 @@ import {
} from "@ember-decorators/component";
import { observes, on } from "@ember-decorators/object";
import $ from "jquery";
+import discourseComputed, { bind } from "discourse/lib/decorators";
+import deprecated from "discourse/lib/deprecated";
import { wantsNewWindow } from "discourse/lib/intercept-click";
import { RAW_TOPIC_LIST_DEPRECATION_OPTIONS } from "discourse/lib/plugin-api";
+import { RUNTIME_OPTIONS } from "discourse/lib/raw-handlebars-helpers";
+import { findRawTemplate } from "discourse/lib/raw-templates";
import { applyValueTransformer } from "discourse/lib/transformer";
import DiscourseURL, { groupPath } from "discourse/lib/url";
-import deprecated from "discourse-common/lib/deprecated";
-import { RUNTIME_OPTIONS } from "discourse-common/lib/raw-handlebars-helpers";
-import { findRawTemplate } from "discourse-common/lib/raw-templates";
-import discourseComputed, { bind } from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
export function showEntrance(e) {
diff --git a/app/assets/javascripts/discourse/app/components/topic-list.js b/app/assets/javascripts/discourse/app/components/topic-list.js
index 2a3b43365fd..331258e9a60 100644
--- a/app/assets/javascripts/discourse/app/components/topic-list.js
+++ b/app/assets/javascripts/discourse/app/components/topic-list.js
@@ -8,10 +8,10 @@ import {
tagName,
} from "@ember-decorators/component";
import { observes, on } from "@ember-decorators/object";
+import discourseComputed from "discourse/lib/decorators";
+import deprecated from "discourse/lib/deprecated";
import { RAW_TOPIC_LIST_DEPRECATION_OPTIONS } from "discourse/lib/plugin-api";
import LoadMore from "discourse/mixins/load-more";
-import deprecated from "discourse-common/lib/deprecated";
-import discourseComputed from "discourse-common/utils/decorators";
@tagName("table")
@classNames("topic-list")
diff --git a/app/assets/javascripts/discourse/app/components/topic-list/unread-indicator.gjs b/app/assets/javascripts/discourse/app/components/topic-list/unread-indicator.gjs
index 6b1395e72ef..fe2eec382f9 100644
--- a/app/assets/javascripts/discourse/app/components/topic-list/unread-indicator.gjs
+++ b/app/assets/javascripts/discourse/app/components/topic-list/unread-indicator.gjs
@@ -1,7 +1,7 @@
import Component from "@glimmer/component";
import { service } from "@ember/service";
import icon from "discourse/helpers/d-icon";
-import { bind } from "discourse-common/utils/decorators";
+import { bind } from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
export default class UnreadIndicator extends Component {
diff --git a/app/assets/javascripts/discourse/app/components/topic-map/topic-participant.gjs b/app/assets/javascripts/discourse/app/components/topic-map/topic-participant.gjs
index a7b8d707efd..97eb4396089 100644
--- a/app/assets/javascripts/discourse/app/components/topic-map/topic-participant.gjs
+++ b/app/assets/javascripts/discourse/app/components/topic-map/topic-participant.gjs
@@ -4,8 +4,8 @@ import { htmlSafe } from "@ember/template";
import { gt } from "truth-helpers";
import PluginOutlet from "discourse/components/plugin-outlet";
import UserAvatarFlair from "discourse/components/user-avatar-flair";
+import { avatarImg } from "discourse/lib/avatar-utils";
import { userPath } from "discourse/lib/url";
-import { avatarImg } from "discourse-common/lib/avatar-utils";
const addTopicParticipantClassesCallbacks = [];
diff --git a/app/assets/javascripts/discourse/app/components/topic-navigation.js b/app/assets/javascripts/discourse/app/components/topic-navigation.js
index 7e659469d89..6875a3c32e4 100644
--- a/app/assets/javascripts/discourse/app/components/topic-navigation.js
+++ b/app/assets/javascripts/discourse/app/components/topic-navigation.js
@@ -5,11 +5,11 @@ import { service } from "@ember/service";
import { classNameBindings } from "@ember-decorators/component";
import { observes } from "@ember-decorators/object";
import $ from "jquery";
+import discourseDebounce from "discourse/lib/debounce";
+import { bind } from "discourse/lib/decorators";
+import discourseLater from "discourse/lib/later";
import { headerOffset } from "discourse/lib/offset-calculator";
import SwipeEvents from "discourse/lib/swipe-events";
-import discourseDebounce from "discourse-common/lib/debounce";
-import discourseLater from "discourse-common/lib/later";
-import { bind } from "discourse-common/utils/decorators";
import JumpToPost from "./modal/jump-to-post";
const MIN_WIDTH_TIMELINE = 925;
diff --git a/app/assets/javascripts/discourse/app/components/topic-progress.js b/app/assets/javascripts/discourse/app/components/topic-progress.js
index 5f9fddfc002..a9fed006f57 100644
--- a/app/assets/javascripts/discourse/app/components/topic-progress.js
+++ b/app/assets/javascripts/discourse/app/components/topic-progress.js
@@ -3,7 +3,7 @@ import { action } from "@ember/object";
import { alias } from "@ember/object/computed";
import { scheduleOnce } from "@ember/runloop";
import { classNameBindings } from "@ember-decorators/component";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
@classNameBindings("docked")
export default class TopicProgress extends Component {
diff --git a/app/assets/javascripts/discourse/app/components/topic-timeline/container.gjs b/app/assets/javascripts/discourse/app/components/topic-timeline/container.gjs
index 65b68e073f4..b4679f31ec0 100644
--- a/app/assets/javascripts/discourse/app/components/topic-timeline/container.gjs
+++ b/app/assets/javascripts/discourse/app/components/topic-timeline/container.gjs
@@ -16,10 +16,10 @@ import categoryLink from "discourse/helpers/category-link";
import icon from "discourse/helpers/d-icon";
import discourseTags from "discourse/helpers/discourse-tags";
import topicFeaturedLink from "discourse/helpers/topic-featured-link";
+import { bind, debounce } from "discourse/lib/decorators";
+import domUtils from "discourse/lib/dom-utils";
import { headerOffset } from "discourse/lib/offset-calculator";
import { actionDescriptionHtml } from "discourse/widgets/post-small-action";
-import { bind, debounce } from "discourse-common/utils/decorators";
-import domUtils from "discourse-common/utils/dom-utils";
import { i18n } from "discourse-i18n";
import TopicNotificationsButton from "select-kit/components/topic-notifications-button";
import BackButton from "./back-button";
diff --git a/app/assets/javascripts/discourse/app/components/topic-timer-info.js b/app/assets/javascripts/discourse/app/components/topic-timer-info.js
index d9217a5faed..b9785baaefa 100644
--- a/app/assets/javascripts/discourse/app/components/topic-timer-info.js
+++ b/app/assets/javascripts/discourse/app/components/topic-timer-info.js
@@ -4,11 +4,11 @@ import { htmlSafe } from "@ember/template";
import { classNames } from "@ember-decorators/component";
import { on } from "@ember-decorators/object";
import { DELETE_REPLIES_TYPE } from "discourse/components/modal/edit-topic-timer";
+import discourseComputed from "discourse/lib/decorators";
+import { iconHTML } from "discourse/lib/icon-library";
+import discourseLater from "discourse/lib/later";
import Category from "discourse/models/category";
import { isTesting } from "discourse-common/config/environment";
-import { iconHTML } from "discourse-common/lib/icon-library";
-import discourseLater from "discourse-common/lib/later";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
@classNames("topic-timer-info")
diff --git a/app/assets/javascripts/discourse/app/components/uppy-image-uploader.js b/app/assets/javascripts/discourse/app/components/uppy-image-uploader.js
index ef505eb7450..35f0b762d77 100644
--- a/app/assets/javascripts/discourse/app/components/uppy-image-uploader.js
+++ b/app/assets/javascripts/discourse/app/components/uppy-image-uploader.js
@@ -9,14 +9,14 @@ import { isEmpty } from "@ember/utils";
import { classNames } from "@ember-decorators/component";
import { on } from "@ember-decorators/object";
import $ from "jquery";
+import discourseComputed from "discourse/lib/decorators";
+import { getURLWithCDN } from "discourse/lib/get-url";
import lightbox, {
cleanupLightboxes,
setupLightboxes,
} from "discourse/lib/lightbox";
import { authorizesOneOrMoreExtensions } from "discourse/lib/uploads";
import UppyUpload from "discourse/lib/uppy/uppy-upload";
-import { getURLWithCDN } from "discourse-common/lib/get-url";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
@classNames("image-uploader")
diff --git a/app/assets/javascripts/discourse/app/components/user-avatar-flair.js b/app/assets/javascripts/discourse/app/components/user-avatar-flair.js
index 3d3f4fde244..1ba93ac92aa 100644
--- a/app/assets/javascripts/discourse/app/components/user-avatar-flair.js
+++ b/app/assets/javascripts/discourse/app/components/user-avatar-flair.js
@@ -1,7 +1,7 @@
import Component from "@ember/component";
import { tagName } from "@ember-decorators/component";
import autoGroupFlairForUser from "discourse/lib/avatar-flair";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
@tagName("")
export default class UserAvatarFlair extends Component {
diff --git a/app/assets/javascripts/discourse/app/components/user-card-contents.js b/app/assets/javascripts/discourse/app/components/user-card-contents.js
index d6901fb10c0..902c2d0f64d 100644
--- a/app/assets/javascripts/discourse/app/components/user-card-contents.js
+++ b/app/assets/javascripts/discourse/app/components/user-card-contents.js
@@ -11,14 +11,14 @@ import { observes, on } from "@ember-decorators/object";
import CardContentsBase from "discourse/components/card-contents-base";
import CanCheckEmailsHelper from "discourse/lib/can-check-emails-helper";
import { setting } from "discourse/lib/computed";
+import discourseComputed from "discourse/lib/decorators";
import { durationTiny } from "discourse/lib/formatter";
+import { getURLWithCDN } from "discourse/lib/get-url";
import { wantsNewWindow } from "discourse/lib/intercept-click";
import { prioritizeNameInUx } from "discourse/lib/settings";
import { emojiUnescape } from "discourse/lib/text";
import { escapeExpression } from "discourse/lib/utilities";
import User from "discourse/models/user";
-import { getURLWithCDN } from "discourse-common/lib/get-url";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
@classNames("user-card")
diff --git a/app/assets/javascripts/discourse/app/components/user-fields/base.js b/app/assets/javascripts/discourse/app/components/user-fields/base.js
index 67578a13d58..71494c25373 100644
--- a/app/assets/javascripts/discourse/app/components/user-fields/base.js
+++ b/app/assets/javascripts/discourse/app/components/user-fields/base.js
@@ -1,6 +1,6 @@
import Component from "@ember/component";
import { classNameBindings } from "@ember-decorators/component";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
@classNameBindings(":user-field", "field.field_type", "customFieldClass")
export default class UserFieldBase extends Component {
diff --git a/app/assets/javascripts/discourse/app/components/user-info.js b/app/assets/javascripts/discourse/app/components/user-info.js
index 220654e14e1..ef4863c849a 100644
--- a/app/assets/javascripts/discourse/app/components/user-info.js
+++ b/app/assets/javascripts/discourse/app/components/user-info.js
@@ -4,9 +4,9 @@ import {
attributeBindings,
classNameBindings,
} from "@ember-decorators/component";
+import discourseComputed from "discourse/lib/decorators";
import { prioritizeNameInUx } from "discourse/lib/settings";
import { userPath } from "discourse/lib/url";
-import discourseComputed from "discourse-common/utils/decorators";
@classNameBindings(":user-info", "size")
@attributeBindings("dataUsername:data-username")
diff --git a/app/assets/javascripts/discourse/app/components/user-menu/icon-avatar.gjs b/app/assets/javascripts/discourse/app/components/user-menu/icon-avatar.gjs
index ab5bdb6b838..77ab6748523 100644
--- a/app/assets/javascripts/discourse/app/components/user-menu/icon-avatar.gjs
+++ b/app/assets/javascripts/discourse/app/components/user-menu/icon-avatar.gjs
@@ -1,6 +1,6 @@
import concatClass from "discourse/helpers/concat-class";
import icon from "discourse/helpers/d-icon";
-import { avatarUrl, translateSize } from "discourse-common/lib/avatar-utils";
+import { avatarUrl, translateSize } from "discourse/lib/avatar-utils";
const avatarPx = translateSize("medium");
diff --git a/app/assets/javascripts/discourse/app/components/user-menu/menu.js b/app/assets/javascripts/discourse/app/components/user-menu/menu.js
index dfb29e96578..348edbb18e9 100644
--- a/app/assets/javascripts/discourse/app/components/user-menu/menu.js
+++ b/app/assets/javascripts/discourse/app/components/user-menu/menu.js
@@ -3,12 +3,12 @@ import { cached, tracked } from "@glimmer/tracking";
import { action } from "@ember/object";
import { getOwner } from "@ember/owner";
import { service } from "@ember/service";
+import { bind } from "discourse/lib/decorators";
+import deprecated from "discourse/lib/deprecated";
+import getUrl from "discourse/lib/get-url";
import { wantsNewWindow } from "discourse/lib/intercept-click";
import UserMenuTab, { CUSTOM_TABS_CLASSES } from "discourse/lib/user-menu/tab";
import { NO_REMINDER_ICON } from "discourse/models/bookmark";
-import deprecated from "discourse-common/lib/deprecated";
-import getUrl from "discourse-common/lib/get-url";
-import { bind } from "discourse-common/utils/decorators";
import UserMenuBookmarksList from "./bookmarks-list";
import UserMenuLikesNotificationsList from "./likes-notifications-list";
import UserMenuMessagesList from "./messages-list";
diff --git a/app/assets/javascripts/discourse/app/components/user-menu/reviewables-list.js b/app/assets/javascripts/discourse/app/components/user-menu/reviewables-list.js
index e44d9b7a041..f018e3f29be 100644
--- a/app/assets/javascripts/discourse/app/components/user-menu/reviewables-list.js
+++ b/app/assets/javascripts/discourse/app/components/user-menu/reviewables-list.js
@@ -1,9 +1,9 @@
import { service } from "@ember/service";
import UserMenuItemsList from "discourse/components/user-menu/items-list";
import { ajax } from "discourse/lib/ajax";
+import getUrl from "discourse/lib/get-url";
import UserMenuReviewableItem from "discourse/lib/user-menu/reviewable-item";
import UserMenuReviewable from "discourse/models/user-menu-reviewable";
-import getUrl from "discourse-common/lib/get-url";
import { i18n } from "discourse-i18n";
export default class UserMenuReviewablesList extends UserMenuItemsList {
diff --git a/app/assets/javascripts/discourse/app/components/user-notification-schedule.js b/app/assets/javascripts/discourse/app/components/user-notification-schedule.js
index 651716527f1..8a7f98bf119 100644
--- a/app/assets/javascripts/discourse/app/components/user-notification-schedule.js
+++ b/app/assets/javascripts/discourse/app/components/user-notification-schedule.js
@@ -1,6 +1,6 @@
import Component from "@ember/component";
import EmberObject, { action } from "@ember/object";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
const DAYS = [
diff --git a/app/assets/javascripts/discourse/app/components/user-stream-item.js b/app/assets/javascripts/discourse/app/components/user-stream-item.js
index 57e8c2a8451..537d9c1ec36 100644
--- a/app/assets/javascripts/discourse/app/components/user-stream-item.js
+++ b/app/assets/javascripts/discourse/app/components/user-stream-item.js
@@ -2,9 +2,9 @@ import Component from "@ember/component";
import { computed } from "@ember/object";
import { classNameBindings, tagName } from "@ember-decorators/component";
import { propertyEqual } from "discourse/lib/computed";
+import discourseComputed from "discourse/lib/decorators";
import { userPath } from "discourse/lib/url";
import { actionDescription } from "discourse/widgets/post-small-action";
-import discourseComputed from "discourse-common/utils/decorators";
@tagName("li")
@classNameBindings(
diff --git a/app/assets/javascripts/discourse/app/components/user-summary-category-search.js b/app/assets/javascripts/discourse/app/components/user-summary-category-search.js
index 781b56dfb69..d4305c9c00a 100644
--- a/app/assets/javascripts/discourse/app/components/user-summary-category-search.js
+++ b/app/assets/javascripts/discourse/app/components/user-summary-category-search.js
@@ -1,6 +1,6 @@
import Component from "@ember/component";
import { tagName } from "@ember-decorators/component";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
@tagName("")
export default class UserSummaryCategorySearch extends Component {
diff --git a/app/assets/javascripts/discourse/app/components/user-summary-topics-list.js b/app/assets/javascripts/discourse/app/components/user-summary-topics-list.js
index 36bff15d21e..7a10500d14b 100644
--- a/app/assets/javascripts/discourse/app/components/user-summary-topics-list.js
+++ b/app/assets/javascripts/discourse/app/components/user-summary-topics-list.js
@@ -1,6 +1,6 @@
import Component from "@ember/component";
import { tagName } from "@ember-decorators/component";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
// should be kept in sync with 'UserSummary::MAX_SUMMARY_RESULTS'
const MAX_SUMMARY_RESULTS = 6;
diff --git a/app/assets/javascripts/discourse/app/components/user-tip.gjs b/app/assets/javascripts/discourse/app/components/user-tip.gjs
index c221743585c..9d090a7aa12 100644
--- a/app/assets/javascripts/discourse/app/components/user-tip.gjs
+++ b/app/assets/javascripts/discourse/app/components/user-tip.gjs
@@ -5,8 +5,8 @@ import { service } from "@ember/service";
import { modifier } from "ember-modifier";
import UserTipContainer from "discourse/components/user-tip-container";
import helperFn from "discourse/helpers/helper-fn";
-import escape from "discourse-common/lib/escape";
-import { iconHTML } from "discourse-common/lib/icon-library";
+import escape from "discourse/lib/escape";
+import { iconHTML } from "discourse/lib/icon-library";
import { i18n } from "discourse-i18n";
import DTooltipInstance from "float-kit/lib/d-tooltip-instance";
diff --git a/app/assets/javascripts/discourse/app/components/watch-read.gjs b/app/assets/javascripts/discourse/app/components/watch-read.gjs
index 5aafa28ccfb..f659a6eed15 100644
--- a/app/assets/javascripts/discourse/app/components/watch-read.gjs
+++ b/app/assets/javascripts/discourse/app/components/watch-read.gjs
@@ -1,9 +1,9 @@
import Component from "@glimmer/component";
import { service } from "@ember/service";
import { ajax } from "discourse/lib/ajax";
+import { bind } from "discourse/lib/decorators";
import isElementInViewport from "discourse/lib/is-element-in-viewport";
import { userPath } from "discourse/lib/url";
-import { bind } from "discourse-common/utils/decorators";
export default class WatchRead extends Component {
@service currentUser;
diff --git a/app/assets/javascripts/discourse/app/controllers/account-created-edit-email.js b/app/assets/javascripts/discourse/app/controllers/account-created-edit-email.js
index ff623b455c9..0f248cabafa 100644
--- a/app/assets/javascripts/discourse/app/controllers/account-created-edit-email.js
+++ b/app/assets/javascripts/discourse/app/controllers/account-created-edit-email.js
@@ -2,8 +2,8 @@ import Controller from "@ember/controller";
import { action } from "@ember/object";
import { service } from "@ember/service";
import { popupAjaxError } from "discourse/lib/ajax-error";
+import discourseComputed from "discourse/lib/decorators";
import { changeEmail } from "discourse/lib/user-activation";
-import discourseComputed from "discourse-common/utils/decorators";
export default class AccountCreatedEditEmailController extends Controller {
@service router;
diff --git a/app/assets/javascripts/discourse/app/controllers/account-created-index.js b/app/assets/javascripts/discourse/app/controllers/account-created-index.js
index 060c47e3460..07b7a6b5629 100644
--- a/app/assets/javascripts/discourse/app/controllers/account-created-index.js
+++ b/app/assets/javascripts/discourse/app/controllers/account-created-index.js
@@ -1,8 +1,8 @@
import Controller from "@ember/controller";
import { action } from "@ember/object";
import { service } from "@ember/service";
+import discourseComputed from "discourse/lib/decorators";
import { resendActivationEmail } from "discourse/lib/user-activation";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
export default class AccountCreatedIndexController extends Controller {
diff --git a/app/assets/javascripts/discourse/app/controllers/application.js b/app/assets/javascripts/discourse/app/controllers/application.js
index 45bb0eedaf6..fcdf0ae0b10 100644
--- a/app/assets/javascripts/discourse/app/controllers/application.js
+++ b/app/assets/javascripts/discourse/app/controllers/application.js
@@ -2,10 +2,10 @@ import Controller from "@ember/controller";
import { action } from "@ember/object";
import { service } from "@ember/service";
import runAfterFramePaint from "discourse/lib/after-frame-paint";
+import discourseDebounce from "discourse/lib/debounce";
+import discourseComputed from "discourse/lib/decorators";
+import deprecated from "discourse/lib/deprecated";
import { isTesting } from "discourse-common/config/environment";
-import discourseDebounce from "discourse-common/lib/debounce";
-import deprecated from "discourse-common/lib/deprecated";
-import discourseComputed from "discourse-common/utils/decorators";
const HIDE_SIDEBAR_KEY = "sidebar-hidden";
diff --git a/app/assets/javascripts/discourse/app/controllers/badges/index.js b/app/assets/javascripts/discourse/app/controllers/badges/index.js
index 7afe129467c..7d0fac5d7ad 100644
--- a/app/assets/javascripts/discourse/app/controllers/badges/index.js
+++ b/app/assets/javascripts/discourse/app/controllers/badges/index.js
@@ -1,5 +1,5 @@
import Controller from "@ember/controller";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
function badgeKey(badge) {
let pos = badge.get("badge_grouping.position");
diff --git a/app/assets/javascripts/discourse/app/controllers/badges/show.js b/app/assets/javascripts/discourse/app/controllers/badges/show.js
index 7730b2fa780..0812d2cb6a7 100644
--- a/app/assets/javascripts/discourse/app/controllers/badges/show.js
+++ b/app/assets/javascripts/discourse/app/controllers/badges/show.js
@@ -1,8 +1,8 @@
import Controller, { inject as controller } from "@ember/controller";
import EmberObject, { action } from "@ember/object";
+import discourseComputed from "discourse/lib/decorators";
import Badge from "discourse/models/badge";
import UserBadge from "discourse/models/user-badge";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
export default class ShowController extends Controller {
diff --git a/app/assets/javascripts/discourse/app/controllers/composer.js b/app/assets/javascripts/discourse/app/controllers/composer.js
index 086671cc652..6262486acf8 100644
--- a/app/assets/javascripts/discourse/app/controllers/composer.js
+++ b/app/assets/javascripts/discourse/app/controllers/composer.js
@@ -2,12 +2,12 @@ import {
addPopupMenuOption,
clearPopupMenuOptions,
} from "discourse/lib/composer/custom-popup-menu-options";
+import deprecated from "discourse/lib/deprecated";
import Composer, {
addComposerSaveErrorCallback,
clearComposerSaveErrorCallback,
toggleCheckDraftPopup,
} from "discourse/services/composer";
-import deprecated from "discourse-common/lib/deprecated";
// TODO add deprecation
diff --git a/app/assets/javascripts/discourse/app/controllers/discovery/categories.js b/app/assets/javascripts/discourse/app/controllers/discovery/categories.js
index 6ddd5d2fb10..4fab9d6b1f5 100644
--- a/app/assets/javascripts/discourse/app/controllers/discovery/categories.js
+++ b/app/assets/javascripts/discourse/app/controllers/discovery/categories.js
@@ -2,7 +2,7 @@ import Controller from "@ember/controller";
import { action } from "@ember/object";
import { reads } from "@ember/object/computed";
import { service } from "@ember/service";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
export default class CategoriesController extends Controller {
@service router;
diff --git a/app/assets/javascripts/discourse/app/controllers/edit-category-tabs.js b/app/assets/javascripts/discourse/app/controllers/edit-category-tabs.js
index 21b423053e6..45c511c1ccd 100644
--- a/app/assets/javascripts/discourse/app/controllers/edit-category-tabs.js
+++ b/app/assets/javascripts/discourse/app/controllers/edit-category-tabs.js
@@ -4,11 +4,11 @@ import { and } from "@ember/object/computed";
import { service } from "@ember/service";
import { underscore } from "@ember/string";
import { popupAjaxError } from "discourse/lib/ajax-error";
+import discourseComputed from "discourse/lib/decorators";
import { NotificationLevels } from "discourse/lib/notification-levels";
import DiscourseURL from "discourse/lib/url";
import Category from "discourse/models/category";
import PermissionType from "discourse/models/permission-type";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
export default class EditCategoryTabsController extends Controller {
diff --git a/app/assets/javascripts/discourse/app/controllers/email-login.js b/app/assets/javascripts/discourse/app/controllers/email-login.js
index 2170f7d7cb3..3ccd7b6ba26 100644
--- a/app/assets/javascripts/discourse/app/controllers/email-login.js
+++ b/app/assets/javascripts/discourse/app/controllers/email-login.js
@@ -3,10 +3,10 @@ import { action } from "@ember/object";
import { service } from "@ember/service";
import { ajax } from "discourse/lib/ajax";
import { popupAjaxError } from "discourse/lib/ajax-error";
+import discourseComputed from "discourse/lib/decorators";
+import getURL from "discourse/lib/get-url";
import DiscourseURL from "discourse/lib/url";
import { getWebauthnCredential } from "discourse/lib/webauthn";
-import getURL from "discourse-common/lib/get-url";
-import discourseComputed from "discourse-common/utils/decorators";
export default class EmailLoginController extends Controller {
@service router;
diff --git a/app/assets/javascripts/discourse/app/controllers/exception.js b/app/assets/javascripts/discourse/app/controllers/exception.js
index b23ee4f07ae..71cba8c83ea 100644
--- a/app/assets/javascripts/discourse/app/controllers/exception.js
+++ b/app/assets/javascripts/discourse/app/controllers/exception.js
@@ -3,8 +3,8 @@ import Controller from "@ember/controller";
import { action } from "@ember/object";
import { alias, equal, gte, none } from "@ember/object/computed";
import { schedule } from "@ember/runloop";
+import discourseComputed from "discourse/lib/decorators";
import DiscourseURL from "discourse/lib/url";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
/**
diff --git a/app/assets/javascripts/discourse/app/controllers/full-page-search.js b/app/assets/javascripts/discourse/app/controllers/full-page-search.js
index 764746dedc9..9078a6d15c7 100644
--- a/app/assets/javascripts/discourse/app/controllers/full-page-search.js
+++ b/app/assets/javascripts/discourse/app/controllers/full-page-search.js
@@ -8,6 +8,7 @@ import { Promise } from "rsvp";
import { ajax } from "discourse/lib/ajax";
import BulkSelectHelper from "discourse/lib/bulk-select-helper";
import { search as searchCategoryTag } from "discourse/lib/category-tag-search";
+import discourseComputed, { bind } from "discourse/lib/decorators";
import { setTransient } from "discourse/lib/page-tracker";
import {
getSearchKey,
@@ -24,7 +25,6 @@ import { escapeExpression } from "discourse/lib/utilities";
import { scrollTop } from "discourse/mixins/scroll-top";
import Category from "discourse/models/category";
import Composer from "discourse/models/composer";
-import discourseComputed, { bind } from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
export const SEARCH_TYPE_DEFAULT = "topics_posts";
diff --git a/app/assets/javascripts/discourse/app/controllers/group-index.js b/app/assets/javascripts/discourse/app/controllers/group-index.js
index 41d52d25b10..0467d0da3bc 100644
--- a/app/assets/javascripts/discourse/app/controllers/group-index.js
+++ b/app/assets/javascripts/discourse/app/controllers/group-index.js
@@ -4,7 +4,7 @@ import { gt } from "@ember/object/computed";
import { observes } from "@ember-decorators/object";
import { ajax } from "discourse/lib/ajax";
import { popupAjaxError } from "discourse/lib/ajax-error";
-import discourseComputed, { debounce } from "discourse-common/utils/decorators";
+import discourseComputed, { debounce } from "discourse/lib/decorators";
export default class GroupIndexController extends Controller {
queryParams = ["order", "asc", "filter"];
diff --git a/app/assets/javascripts/discourse/app/controllers/group-manage-categories.js b/app/assets/javascripts/discourse/app/controllers/group-manage-categories.js
index d682ea9ff28..89b90763fec 100644
--- a/app/assets/javascripts/discourse/app/controllers/group-manage-categories.js
+++ b/app/assets/javascripts/discourse/app/controllers/group-manage-categories.js
@@ -1,5 +1,5 @@
import Controller from "@ember/controller";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
export default class GroupManageCategoriesController extends Controller {
@discourseComputed(
diff --git a/app/assets/javascripts/discourse/app/controllers/group-manage-logs.js b/app/assets/javascripts/discourse/app/controllers/group-manage-logs.js
index 4fb8c66997d..3b74fabc96b 100644
--- a/app/assets/javascripts/discourse/app/controllers/group-manage-logs.js
+++ b/app/assets/javascripts/discourse/app/controllers/group-manage-logs.js
@@ -1,7 +1,7 @@
import Controller, { inject as controller } from "@ember/controller";
import EmberObject, { action } from "@ember/object";
import { observes } from "@ember-decorators/object";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
export default class GroupManageLogsController extends Controller {
@controller group;
diff --git a/app/assets/javascripts/discourse/app/controllers/group-manage-tags.js b/app/assets/javascripts/discourse/app/controllers/group-manage-tags.js
index 22121ca09a7..942e3920509 100644
--- a/app/assets/javascripts/discourse/app/controllers/group-manage-tags.js
+++ b/app/assets/javascripts/discourse/app/controllers/group-manage-tags.js
@@ -1,5 +1,5 @@
import Controller from "@ember/controller";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
export default class GroupManageTagsController extends Controller {
@discourseComputed(
diff --git a/app/assets/javascripts/discourse/app/controllers/group-manage.js b/app/assets/javascripts/discourse/app/controllers/group-manage.js
index 46b5ae92cc3..83d5e4ff35b 100644
--- a/app/assets/javascripts/discourse/app/controllers/group-manage.js
+++ b/app/assets/javascripts/discourse/app/controllers/group-manage.js
@@ -1,5 +1,5 @@
import Controller from "@ember/controller";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
export default class GroupManageController extends Controller {
@discourseComputed("model.automatic")
diff --git a/app/assets/javascripts/discourse/app/controllers/group-requests.js b/app/assets/javascripts/discourse/app/controllers/group-requests.js
index 4bc905c5524..30e2f779368 100644
--- a/app/assets/javascripts/discourse/app/controllers/group-requests.js
+++ b/app/assets/javascripts/discourse/app/controllers/group-requests.js
@@ -3,7 +3,7 @@ import { action } from "@ember/object";
import { observes } from "@ember-decorators/object";
import { ajax } from "discourse/lib/ajax";
import { popupAjaxError } from "discourse/lib/ajax-error";
-import discourseComputed, { debounce } from "discourse-common/utils/decorators";
+import discourseComputed, { debounce } from "discourse/lib/decorators";
export default class GroupRequestsController extends Controller {
@controller application;
diff --git a/app/assets/javascripts/discourse/app/controllers/group.js b/app/assets/javascripts/discourse/app/controllers/group.js
index 3215aa9180e..1e523a7a7cb 100644
--- a/app/assets/javascripts/discourse/app/controllers/group.js
+++ b/app/assets/javascripts/discourse/app/controllers/group.js
@@ -2,7 +2,7 @@ import Controller, { inject as controller } from "@ember/controller";
import EmberObject, { action } from "@ember/object";
import { service } from "@ember/service";
import GroupDeleteDialog from "discourse/components/dialog-messages/group-delete";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
class Tab extends EmberObject {
diff --git a/app/assets/javascripts/discourse/app/controllers/groups-index.js b/app/assets/javascripts/discourse/app/controllers/groups-index.js
index 76318082cf4..2684eeb8586 100644
--- a/app/assets/javascripts/discourse/app/controllers/groups-index.js
+++ b/app/assets/javascripts/discourse/app/controllers/groups-index.js
@@ -1,9 +1,9 @@
import Controller from "@ember/controller";
import { action } from "@ember/object";
import { service } from "@ember/service";
+import discourseDebounce from "discourse/lib/debounce";
+import discourseComputed from "discourse/lib/decorators";
import { INPUT_DELAY } from "discourse-common/config/environment";
-import discourseDebounce from "discourse-common/lib/debounce";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
export default class GroupsIndexController extends Controller {
diff --git a/app/assets/javascripts/discourse/app/controllers/groups-new.js b/app/assets/javascripts/discourse/app/controllers/groups-new.js
index e60b0166158..590caa5379f 100644
--- a/app/assets/javascripts/discourse/app/controllers/groups-new.js
+++ b/app/assets/javascripts/discourse/app/controllers/groups-new.js
@@ -3,7 +3,7 @@ import { action } from "@ember/object";
import { service } from "@ember/service";
import { ajax } from "discourse/lib/ajax";
import { popupAjaxError } from "discourse/lib/ajax-error";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
export function popupAutomaticMembershipAlert(group_id, email_domains) {
diff --git a/app/assets/javascripts/discourse/app/controllers/invites-show.js b/app/assets/javascripts/discourse/app/controllers/invites-show.js
index f285e57fa1e..7fecf0a8a99 100644
--- a/app/assets/javascripts/discourse/app/controllers/invites-show.js
+++ b/app/assets/javascripts/discourse/app/controllers/invites-show.js
@@ -5,6 +5,8 @@ import { alias, bool, not, readOnly } from "@ember/object/computed";
import { isEmpty } from "@ember/utils";
import { ajax } from "discourse/lib/ajax";
import { extractError } from "discourse/lib/ajax-error";
+import discourseComputed from "discourse/lib/decorators";
+import getUrl from "discourse/lib/get-url";
import NameValidationHelper from "discourse/lib/name-validation-helper";
import DiscourseURL from "discourse/lib/url";
import { emailValid } from "discourse/lib/utilities";
@@ -12,8 +14,6 @@ import PasswordValidation from "discourse/mixins/password-validation";
import UserFieldsValidation from "discourse/mixins/user-fields-validation";
import UsernameValidation from "discourse/mixins/username-validation";
import { findAll as findLoginMethods } from "discourse/models/login-method";
-import getUrl from "discourse-common/lib/get-url";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
export default class InvitesShowController extends Controller.extend(
diff --git a/app/assets/javascripts/discourse/app/controllers/login.js b/app/assets/javascripts/discourse/app/controllers/login.js
index 6d1ca4800fa..323b9f8086b 100644
--- a/app/assets/javascripts/discourse/app/controllers/login.js
+++ b/app/assets/javascripts/discourse/app/controllers/login.js
@@ -9,6 +9,8 @@ import NotActivatedModal from "discourse/components/modal/not-activated";
import { ajax } from "discourse/lib/ajax";
import { popupAjaxError } from "discourse/lib/ajax-error";
import cookie, { removeCookie } from "discourse/lib/cookie";
+import escape from "discourse/lib/escape";
+import getURL from "discourse/lib/get-url";
import { wantsNewWindow } from "discourse/lib/intercept-click";
import { areCookiesEnabled } from "discourse/lib/utilities";
import {
@@ -17,8 +19,6 @@ import {
} from "discourse/lib/webauthn";
import { findAll } from "discourse/models/login-method";
import { SECOND_FACTOR_METHODS } from "discourse/models/user";
-import escape from "discourse-common/lib/escape";
-import getURL from "discourse-common/lib/get-url";
import { i18n } from "discourse-i18n";
export default class LoginPageController extends Controller {
diff --git a/app/assets/javascripts/discourse/app/controllers/password-reset.js b/app/assets/javascripts/discourse/app/controllers/password-reset.js
index d8962bea0fc..25a6d64d37f 100644
--- a/app/assets/javascripts/discourse/app/controllers/password-reset.js
+++ b/app/assets/javascripts/discourse/app/controllers/password-reset.js
@@ -2,13 +2,13 @@ import Controller from "@ember/controller";
import { action } from "@ember/object";
import { alias, or, readOnly } from "@ember/object/computed";
import { ajax } from "discourse/lib/ajax";
+import discourseComputed from "discourse/lib/decorators";
+import getURL from "discourse/lib/get-url";
import { wantsNewWindow } from "discourse/lib/intercept-click";
import DiscourseURL, { userPath } from "discourse/lib/url";
import { getWebauthnCredential } from "discourse/lib/webauthn";
import PasswordValidation from "discourse/mixins/password-validation";
import { SECOND_FACTOR_METHODS } from "discourse/models/user";
-import getURL from "discourse-common/lib/get-url";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
export default class PasswordResetController extends Controller.extend(
diff --git a/app/assets/javascripts/discourse/app/controllers/preferences/account.js b/app/assets/javascripts/discourse/app/controllers/preferences/account.js
index bf33e6c2150..e30b5380dba 100644
--- a/app/assets/javascripts/discourse/app/controllers/preferences/account.js
+++ b/app/assets/javascripts/discourse/app/controllers/preferences/account.js
@@ -7,11 +7,11 @@ import UserStatusModal from "discourse/components/modal/user-status";
import { popupAjaxError } from "discourse/lib/ajax-error";
import CanCheckEmailsHelper from "discourse/lib/can-check-emails-helper";
import { propertyNotEqual, setting } from "discourse/lib/computed";
+import discourseComputed from "discourse/lib/decorators";
import { exportUserArchive } from "discourse/lib/export-csv";
+import getURL from "discourse/lib/get-url";
import DiscourseURL from "discourse/lib/url";
import { findAll } from "discourse/models/login-method";
-import getURL from "discourse-common/lib/get-url";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
export default class AccountController extends Controller {
diff --git a/app/assets/javascripts/discourse/app/controllers/preferences/email.js b/app/assets/javascripts/discourse/app/controllers/preferences/email.js
index 0a128f393f6..58cd90e7f70 100644
--- a/app/assets/javascripts/discourse/app/controllers/preferences/email.js
+++ b/app/assets/javascripts/discourse/app/controllers/preferences/email.js
@@ -2,8 +2,8 @@ import Controller from "@ember/controller";
import EmberObject, { action } from "@ember/object";
import { empty, or } from "@ember/object/computed";
import { propertyEqual } from "discourse/lib/computed";
+import discourseComputed from "discourse/lib/decorators";
import { emailValid } from "discourse/lib/utilities";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
export default class EmailController extends Controller {
diff --git a/app/assets/javascripts/discourse/app/controllers/preferences/emails.js b/app/assets/javascripts/discourse/app/controllers/preferences/emails.js
index e95b96164c1..7d3a70664ea 100644
--- a/app/assets/javascripts/discourse/app/controllers/preferences/emails.js
+++ b/app/assets/javascripts/discourse/app/controllers/preferences/emails.js
@@ -2,7 +2,7 @@ import Controller from "@ember/controller";
import { action } from "@ember/object";
import { equal } from "@ember/object/computed";
import { popupAjaxError } from "discourse/lib/ajax-error";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
const EMAIL_LEVELS = {
diff --git a/app/assets/javascripts/discourse/app/controllers/preferences/interface.js b/app/assets/javascripts/discourse/app/controllers/preferences/interface.js
index 7c21198ad95..ee21845a44f 100644
--- a/app/assets/javascripts/discourse/app/controllers/preferences/interface.js
+++ b/app/assets/javascripts/discourse/app/controllers/preferences/interface.js
@@ -10,10 +10,10 @@ import {
updateColorSchemeCookie,
} from "discourse/lib/color-scheme-picker";
import { propertyEqual } from "discourse/lib/computed";
+import discourseComputed from "discourse/lib/decorators";
import { listThemes, setLocalTheme } from "discourse/lib/theme-selector";
import { setDefaultHomepage } from "discourse/lib/utilities";
import { AUTO_DELETE_PREFERENCES } from "discourse/models/bookmark";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
// same as UserOption::HOMEPAGES
diff --git a/app/assets/javascripts/discourse/app/controllers/preferences/profile.js b/app/assets/javascripts/discourse/app/controllers/preferences/profile.js
index a1b06cb9ac4..8118af94544 100644
--- a/app/assets/javascripts/discourse/app/controllers/preferences/profile.js
+++ b/app/assets/javascripts/discourse/app/controllers/preferences/profile.js
@@ -6,7 +6,7 @@ import { isEmpty } from "@ember/utils";
import FeatureTopicOnProfileModal from "discourse/components/modal/feature-topic-on-profile";
import { ajax } from "discourse/lib/ajax";
import { popupAjaxError } from "discourse/lib/ajax-error";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
export default class ProfileController extends Controller {
diff --git a/app/assets/javascripts/discourse/app/controllers/preferences/second-factor.js b/app/assets/javascripts/discourse/app/controllers/preferences/second-factor.js
index 986c2b263d7..54989b6ce27 100644
--- a/app/assets/javascripts/discourse/app/controllers/preferences/second-factor.js
+++ b/app/assets/javascripts/discourse/app/controllers/preferences/second-factor.js
@@ -10,10 +10,10 @@ import SecondFactorBackupEdit from "discourse/components/modal/second-factor-bac
import SecondFactorEdit from "discourse/components/modal/second-factor-edit";
import SecondFactorEditSecurityKey from "discourse/components/modal/second-factor-edit-security-key";
import { popupAjaxError } from "discourse/lib/ajax-error";
+import discourseComputed from "discourse/lib/decorators";
import DiscourseURL, { userPath } from "discourse/lib/url";
import { findAll } from "discourse/models/login-method";
import { SECOND_FACTOR_METHODS } from "discourse/models/user";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
export default class SecondFactorController extends Controller {
diff --git a/app/assets/javascripts/discourse/app/controllers/preferences/security.js b/app/assets/javascripts/discourse/app/controllers/preferences/security.js
index 12ebe90f4c7..324521b0531 100644
--- a/app/assets/javascripts/discourse/app/controllers/preferences/security.js
+++ b/app/assets/javascripts/discourse/app/controllers/preferences/security.js
@@ -8,10 +8,10 @@ import { ajax } from "discourse/lib/ajax";
import { popupAjaxError } from "discourse/lib/ajax-error";
import CanCheckEmailsHelper from "discourse/lib/can-check-emails-helper";
import { setting } from "discourse/lib/computed";
+import discourseComputed from "discourse/lib/decorators";
import logout from "discourse/lib/logout";
import { userPath } from "discourse/lib/url";
import { isWebauthnSupported } from "discourse/lib/webauthn";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
// Number of tokens shown by default.
diff --git a/app/assets/javascripts/discourse/app/controllers/preferences/tags.js b/app/assets/javascripts/discourse/app/controllers/preferences/tags.js
index d8a1917ccc2..75bb53075b1 100644
--- a/app/assets/javascripts/discourse/app/controllers/preferences/tags.js
+++ b/app/assets/javascripts/discourse/app/controllers/preferences/tags.js
@@ -1,7 +1,7 @@
import Controller from "@ember/controller";
import { action } from "@ember/object";
import { popupAjaxError } from "discourse/lib/ajax-error";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
export default class TagsController extends Controller {
saveAttrNames = [
diff --git a/app/assets/javascripts/discourse/app/controllers/preferences/users.js b/app/assets/javascripts/discourse/app/controllers/preferences/users.js
index 03f1353a78c..2b4b5fa7b50 100644
--- a/app/assets/javascripts/discourse/app/controllers/preferences/users.js
+++ b/app/assets/javascripts/discourse/app/controllers/preferences/users.js
@@ -2,8 +2,8 @@ import Controller from "@ember/controller";
import { action, computed } from "@ember/object";
import { and } from "@ember/object/computed";
import { popupAjaxError } from "discourse/lib/ajax-error";
-import { makeArray } from "discourse-common/lib/helpers";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
+import { makeArray } from "discourse/lib/helpers";
export default class UsersController extends Controller {
@and(
diff --git a/app/assets/javascripts/discourse/app/controllers/review-index.js b/app/assets/javascripts/discourse/app/controllers/review-index.js
index 1d7f1df5343..0bd293905a4 100644
--- a/app/assets/javascripts/discourse/app/controllers/review-index.js
+++ b/app/assets/javascripts/discourse/app/controllers/review-index.js
@@ -3,7 +3,7 @@ import { action } from "@ember/object";
import { next } from "@ember/runloop";
import { underscore } from "@ember/string";
import { isPresent } from "@ember/utils";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
export default class ReviewIndexController extends Controller {
diff --git a/app/assets/javascripts/discourse/app/controllers/review-settings.js b/app/assets/javascripts/discourse/app/controllers/review-settings.js
index 72a23fe005b..b7b918a210f 100644
--- a/app/assets/javascripts/discourse/app/controllers/review-settings.js
+++ b/app/assets/javascripts/discourse/app/controllers/review-settings.js
@@ -2,7 +2,7 @@ import Controller from "@ember/controller";
import { action } from "@ember/object";
import { ajax } from "discourse/lib/ajax";
import { popupAjaxError } from "discourse/lib/ajax-error";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
export default class ReviewSettingsController extends Controller {
diff --git a/app/assets/javascripts/discourse/app/controllers/second-factor-auth.js b/app/assets/javascripts/discourse/app/controllers/second-factor-auth.js
index 02aed343ffe..2276776ecd6 100644
--- a/app/assets/javascripts/discourse/app/controllers/second-factor-auth.js
+++ b/app/assets/javascripts/discourse/app/controllers/second-factor-auth.js
@@ -3,10 +3,10 @@ import { action } from "@ember/object";
import { equal, readOnly } from "@ember/object/computed";
import { ajax } from "discourse/lib/ajax";
import { extractError } from "discourse/lib/ajax-error";
+import discourseComputed from "discourse/lib/decorators";
import DiscourseURL from "discourse/lib/url";
import { getWebauthnCredential } from "discourse/lib/webauthn";
import { SECOND_FACTOR_METHODS } from "discourse/models/user";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
const { TOTP, BACKUP_CODE, SECURITY_KEY } = SECOND_FACTOR_METHODS;
diff --git a/app/assets/javascripts/discourse/app/controllers/signup.js b/app/assets/javascripts/discourse/app/controllers/signup.js
index 161c12489af..42e37b37563 100644
--- a/app/assets/javascripts/discourse/app/controllers/signup.js
+++ b/app/assets/javascripts/discourse/app/controllers/signup.js
@@ -10,6 +10,8 @@ import { Promise } from "rsvp";
import { ajax } from "discourse/lib/ajax";
import { setting } from "discourse/lib/computed";
import cookie, { removeCookie } from "discourse/lib/cookie";
+import discourseDebounce from "discourse/lib/debounce";
+import discourseComputed, { bind } from "discourse/lib/decorators";
import NameValidationHelper from "discourse/lib/name-validation-helper";
import { userPath } from "discourse/lib/url";
import { emailValid } from "discourse/lib/utilities";
@@ -18,8 +20,6 @@ import UserFieldsValidation from "discourse/mixins/user-fields-validation";
import UsernameValidation from "discourse/mixins/username-validation";
import { findAll } from "discourse/models/login-method";
import User from "discourse/models/user";
-import discourseDebounce from "discourse-common/lib/debounce";
-import discourseComputed, { bind } from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
export default class SignupPageController extends Controller.extend(
diff --git a/app/assets/javascripts/discourse/app/controllers/tags-index.js b/app/assets/javascripts/discourse/app/controllers/tags-index.js
index dd242545735..4ede46c3742 100644
--- a/app/assets/javascripts/discourse/app/controllers/tags-index.js
+++ b/app/assets/javascripts/discourse/app/controllers/tags-index.js
@@ -5,7 +5,7 @@ import { service } from "@ember/service";
import TagUpload from "discourse/components/modal/tag-upload";
import { ajax } from "discourse/lib/ajax";
import { popupAjaxError } from "discourse/lib/ajax-error";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
export default class TagsIndexController extends Controller {
diff --git a/app/assets/javascripts/discourse/app/controllers/topic.js b/app/assets/javascripts/discourse/app/controllers/topic.js
index 5ef196223e7..55e4c1ef92b 100644
--- a/app/assets/javascripts/discourse/app/controllers/topic.js
+++ b/app/assets/javascripts/discourse/app/controllers/topic.js
@@ -21,7 +21,10 @@ import { ajax } from "discourse/lib/ajax";
import { popupAjaxError } from "discourse/lib/ajax-error";
import { BookmarkFormData } from "discourse/lib/bookmark-form-data";
import { resetCachedTopicList } from "discourse/lib/cached-topic-list";
+import discourseComputed, { bind } from "discourse/lib/decorators";
import { wantsNewWindow } from "discourse/lib/intercept-click";
+import discourseLater from "discourse/lib/later";
+import { deepMerge } from "discourse/lib/object";
import { buildQuote } from "discourse/lib/quote";
import QuoteState from "discourse/lib/quote-state";
import { extractLinkMeta } from "discourse/lib/render-topic-featured-link";
@@ -35,9 +38,6 @@ import Post from "discourse/models/post";
import Topic from "discourse/models/topic";
import TopicTimer from "discourse/models/topic-timer";
import { isTesting } from "discourse-common/config/environment";
-import discourseLater from "discourse-common/lib/later";
-import { deepMerge } from "discourse-common/lib/object";
-import discourseComputed, { bind } from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
let customPostMessageCallbacks = {};
diff --git a/app/assets/javascripts/discourse/app/controllers/user-activity-bookmarks.js b/app/assets/javascripts/discourse/app/controllers/user-activity-bookmarks.js
index 3566aa1cfb2..8cf8c19f404 100644
--- a/app/assets/javascripts/discourse/app/controllers/user-activity-bookmarks.js
+++ b/app/assets/javascripts/discourse/app/controllers/user-activity-bookmarks.js
@@ -6,9 +6,9 @@ import { htmlSafe } from "@ember/template";
import { Promise } from "rsvp";
import { ajax } from "discourse/lib/ajax";
import BulkSelectHelper from "discourse/lib/bulk-select-helper";
+import discourseComputed from "discourse/lib/decorators";
+import { iconHTML } from "discourse/lib/icon-library";
import Bookmark from "discourse/models/bookmark";
-import { iconHTML } from "discourse-common/lib/icon-library";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
export default class UserActivityBookmarksController extends Controller {
diff --git a/app/assets/javascripts/discourse/app/controllers/user-activity.js b/app/assets/javascripts/discourse/app/controllers/user-activity.js
index 0a0f54decb4..9eb7d790335 100644
--- a/app/assets/javascripts/discourse/app/controllers/user-activity.js
+++ b/app/assets/javascripts/discourse/app/controllers/user-activity.js
@@ -1,6 +1,6 @@
import Controller, { inject as controller } from "@ember/controller";
import { service } from "@ember/service";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
export default class UserActivityController extends Controller {
diff --git a/app/assets/javascripts/discourse/app/controllers/user-badges.js b/app/assets/javascripts/discourse/app/controllers/user-badges.js
index 7c837e40dcc..1ceb9cee9fc 100644
--- a/app/assets/javascripts/discourse/app/controllers/user-badges.js
+++ b/app/assets/javascripts/discourse/app/controllers/user-badges.js
@@ -1,7 +1,7 @@
import Controller, { inject as controller } from "@ember/controller";
import { action } from "@ember/object";
import { alias, filterBy, sort } from "@ember/object/computed";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
export default class UserBadgesController extends Controller {
@controller user;
diff --git a/app/assets/javascripts/discourse/app/controllers/user-invited-show.js b/app/assets/javascripts/discourse/app/controllers/user-invited-show.js
index d77e7842cee..3d695cc9443 100644
--- a/app/assets/javascripts/discourse/app/controllers/user-invited-show.js
+++ b/app/assets/javascripts/discourse/app/controllers/user-invited-show.js
@@ -6,9 +6,9 @@ import { observes } from "@ember-decorators/object";
import CreateInvite from "discourse/components/modal/create-invite";
import CreateInviteBulk from "discourse/components/modal/create-invite-bulk";
import { popupAjaxError } from "discourse/lib/ajax-error";
+import discourseComputed, { debounce } from "discourse/lib/decorators";
import Invite from "discourse/models/invite";
import { INPUT_DELAY } from "discourse-common/config/environment";
-import discourseComputed, { debounce } from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
export default class UserInvitedShowController extends Controller {
diff --git a/app/assets/javascripts/discourse/app/controllers/user-invited.js b/app/assets/javascripts/discourse/app/controllers/user-invited.js
index 41af31dfac1..8f016f0512e 100644
--- a/app/assets/javascripts/discourse/app/controllers/user-invited.js
+++ b/app/assets/javascripts/discourse/app/controllers/user-invited.js
@@ -1,5 +1,5 @@
import Controller from "@ember/controller";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
export default class UserInvitedController extends Controller {
diff --git a/app/assets/javascripts/discourse/app/controllers/user-notifications.gjs b/app/assets/javascripts/discourse/app/controllers/user-notifications.gjs
index a37c2493af3..ec1c391d2ce 100644
--- a/app/assets/javascripts/discourse/app/controllers/user-notifications.gjs
+++ b/app/assets/javascripts/discourse/app/controllers/user-notifications.gjs
@@ -6,10 +6,10 @@ import { htmlSafe } from "@ember/template";
import DismissNotificationConfirmationModal from "discourse/components/modal/dismiss-notification-confirmation";
import RelativeDate from "discourse/components/relative-date";
import { ajax } from "discourse/lib/ajax";
+import discourseComputed from "discourse/lib/decorators";
+import getURL from "discourse/lib/get-url";
+import { iconHTML } from "discourse/lib/icon-library";
import UserMenuNotificationItem from "discourse/lib/user-menu/notification-item";
-import getURL from "discourse-common/lib/get-url";
-import { iconHTML } from "discourse-common/lib/icon-library";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
const _beforeLoadMoreCallbacks = [];
diff --git a/app/assets/javascripts/discourse/app/controllers/user-summary.js b/app/assets/javascripts/discourse/app/controllers/user-summary.js
index 11596742a71..8948133a791 100644
--- a/app/assets/javascripts/discourse/app/controllers/user-summary.js
+++ b/app/assets/javascripts/discourse/app/controllers/user-summary.js
@@ -1,7 +1,7 @@
import Controller, { inject as controller } from "@ember/controller";
import { alias } from "@ember/object/computed";
+import discourseComputed from "discourse/lib/decorators";
import { duration } from "discourse/lib/formatter";
-import discourseComputed from "discourse-common/utils/decorators";
// should be kept in sync with 'UserSummary::MAX_BADGES'
const MAX_BADGES = 6;
diff --git a/app/assets/javascripts/discourse/app/controllers/user-topics-list.js b/app/assets/javascripts/discourse/app/controllers/user-topics-list.js
index 91e28395200..684975b3c3a 100644
--- a/app/assets/javascripts/discourse/app/controllers/user-topics-list.js
+++ b/app/assets/javascripts/discourse/app/controllers/user-topics-list.js
@@ -6,6 +6,7 @@ import { or } from "@ember/object/computed";
import { isNone } from "@ember/utils";
import { popupAjaxError } from "discourse/lib/ajax-error";
import BulkSelectHelper from "discourse/lib/bulk-select-helper";
+import discourseComputed from "discourse/lib/decorators";
import { defineTrackedProperty } from "discourse/lib/tracked-tools";
import Topic from "discourse/models/topic";
import {
@@ -13,7 +14,6 @@ import {
UNREAD_FILTER,
} from "discourse/routes/build-private-messages-route";
import { QUERY_PARAMS } from "discourse/routes/user-topic-list";
-import discourseComputed from "discourse-common/utils/decorators";
// Lists of topics on a user's page.
export default class UserTopicsListController extends Controller {
diff --git a/app/assets/javascripts/discourse/app/controllers/user.js b/app/assets/javascripts/discourse/app/controllers/user.js
index a0fdaad3161..223a95ab8fa 100644
--- a/app/assets/javascripts/discourse/app/controllers/user.js
+++ b/app/assets/javascripts/discourse/app/controllers/user.js
@@ -6,10 +6,10 @@ import { dasherize } from "@ember/string";
import { isEmpty } from "@ember/utils";
import CanCheckEmailsHelper from "discourse/lib/can-check-emails-helper";
import { setting } from "discourse/lib/computed";
+import discourseComputed from "discourse/lib/decorators";
+import getURL from "discourse/lib/get-url";
import optionalService from "discourse/lib/optional-service";
import { prioritizeNameInUx } from "discourse/lib/settings";
-import getURL from "discourse-common/lib/get-url";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
export default class UserController extends Controller {
diff --git a/app/assets/javascripts/discourse/app/controllers/users.js b/app/assets/javascripts/discourse/app/controllers/users.js
index 3aed47196c0..198b9558bb1 100644
--- a/app/assets/javascripts/discourse/app/controllers/users.js
+++ b/app/assets/javascripts/discourse/app/controllers/users.js
@@ -3,9 +3,9 @@ import { action } from "@ember/object";
import { and, equal } from "@ember/object/computed";
import { service } from "@ember/service";
import EditUserDirectoryColumnsModal from "discourse/components/modal/edit-user-directory-columns";
+import discourseDebounce from "discourse/lib/debounce";
import { longDate } from "discourse/lib/formatter";
import Group from "discourse/models/group";
-import discourseDebounce from "discourse-common/lib/debounce";
export default class UsersController extends Controller {
@service modal;
diff --git a/app/assets/javascripts/discourse/app/deprecation-workflow.js b/app/assets/javascripts/discourse/app/deprecation-workflow.js
index eab7e863616..f80c3690057 100644
--- a/app/assets/javascripts/discourse/app/deprecation-workflow.js
+++ b/app/assets/javascripts/discourse/app/deprecation-workflow.js
@@ -1,6 +1,11 @@
-import setupDeprecationWorkflow from "ember-cli-deprecation-workflow";
-import DEPRECATION_WORKFLOW from "discourse-common/deprecation-workflow";
+const DEPRECATION_WORKFLOW = [
+ { handler: "silence", matchId: "template-action" }, // will be removed in Ember 6.0
+ { handler: "silence", matchId: "deprecate-array-prototype-extensions" }, // will be removed in Ember 6.0
+ { handler: "silence", matchId: "discourse.select-kit" },
+ {
+ handler: "silence",
+ matchId: "discourse.decorate-widget.hamburger-widget-links",
+ },
+];
-// We're using RAISE_ON_DEPRECATION in environment.js instead of
-// `throwOnUnhandled` here since it is easier to toggle.
-setupDeprecationWorkflow({ workflow: DEPRECATION_WORKFLOW });
+export default DEPRECATION_WORKFLOW;
diff --git a/app/assets/javascripts/discourse/app/discourse-common-loader-shims.js b/app/assets/javascripts/discourse/app/discourse-common-loader-shims.js
index b2b774ba6d2..cdfbf972118 100644
--- a/app/assets/javascripts/discourse/app/discourse-common-loader-shims.js
+++ b/app/assets/javascripts/discourse/app/discourse-common-loader-shims.js
@@ -1,5 +1,5 @@
import { importSync } from "@embroider/macros";
-import loaderShim from "discourse-common/lib/loader-shim";
+import loaderShim from "discourse/lib/loader-shim";
// Soon-to-be-deprecated discourse-common imports
loaderShim("discourse-common/helpers/base-path", () =>
@@ -35,3 +35,92 @@ loaderShim("discourse-common/helpers/i18n-yes-no", () =>
loaderShim("discourse-common/helpers/i18n", () =>
importSync("discourse/helpers/i18n")
);
+
+loaderShim("discourse-common/lib/attribute-hook", () =>
+ importSync("discourse/lib/attribute-hook")
+);
+loaderShim("discourse-common/lib/avatar-utils", () =>
+ importSync("discourse/lib/avatar-utils")
+);
+loaderShim("discourse-common/lib/case-converter", () =>
+ importSync("discourse/lib/case-converter")
+);
+loaderShim("discourse-common/lib/debounce", () =>
+ importSync("discourse/lib/debounce")
+);
+loaderShim("discourse-common/lib/deprecated", () =>
+ importSync("discourse/lib/deprecated")
+);
+loaderShim("discourse-common/lib/discourse-template-map", () =>
+ importSync("discourse/lib/discourse-template-map")
+);
+loaderShim("discourse-common/lib/dom-from-string", () =>
+ importSync("discourse/lib/dom-from-string")
+);
+loaderShim("discourse-common/lib/escape", () =>
+ importSync("discourse/lib/escape")
+);
+loaderShim("discourse-common/lib/get-owner", () =>
+ importSync("discourse/lib/get-owner")
+);
+loaderShim("discourse-common/lib/get-url", () =>
+ importSync("discourse/lib/get-url")
+);
+loaderShim("discourse-common/lib/helpers", () =>
+ importSync("discourse/lib/helpers")
+);
+loaderShim("discourse-common/lib/icon-library", () =>
+ importSync("discourse/lib/icon-library")
+);
+loaderShim("discourse-common/lib/later", () =>
+ importSync("discourse/lib/later")
+);
+loaderShim("discourse-common/lib/loader-shim", () =>
+ importSync("discourse/lib/loader-shim")
+);
+loaderShim("discourse-common/lib/object", () =>
+ importSync("discourse/lib/object")
+);
+loaderShim("discourse-common/lib/popular-themes", () =>
+ importSync("discourse/lib/popular-themes")
+);
+loaderShim("discourse-common/lib/raw-handlebars-helpers", () =>
+ importSync("discourse/lib/raw-handlebars-helpers")
+);
+loaderShim("discourse-common/lib/raw-handlebars", () =>
+ importSync("discourse/lib/raw-handlebars")
+);
+loaderShim("discourse-common/lib/raw-templates", () =>
+ importSync("discourse/lib/raw-templates")
+);
+loaderShim("discourse-common/lib/suffix-trie", () =>
+ importSync("discourse/lib/suffix-trie")
+);
+
+loaderShim("discourse-common/utils/decorator-alias", () =>
+ importSync("discourse/lib/decorator-alias")
+);
+loaderShim("discourse-common/utils/decorators", () =>
+ importSync("discourse/lib/decorators")
+);
+loaderShim("discourse-common/utils/dom-utils", () =>
+ importSync("discourse/lib/dom-utils")
+);
+loaderShim("discourse-common/utils/escape-regexp", () =>
+ importSync("discourse/lib/escape-regexp")
+);
+loaderShim("discourse-common/utils/extract-value", () =>
+ importSync("discourse/lib/extract-value")
+);
+loaderShim("discourse-common/utils/handle-descriptor", () =>
+ importSync("discourse/lib/handle-descriptor")
+);
+loaderShim("discourse-common/utils/is-descriptor", () =>
+ importSync("discourse/lib/is-descriptor")
+);
+loaderShim("discourse-common/utils/macro-alias", () =>
+ importSync("discourse/lib/macro-alias")
+);
+loaderShim("discourse-common/utils/multi-cache", () =>
+ importSync("discourse/lib/multi-cache")
+);
diff --git a/app/assets/javascripts/discourse/app/helpers/age-with-tooltip.js b/app/assets/javascripts/discourse/app/helpers/age-with-tooltip.js
index 110aaf25b90..f4da9a42ea5 100644
--- a/app/assets/javascripts/discourse/app/helpers/age-with-tooltip.js
+++ b/app/assets/javascripts/discourse/app/helpers/age-with-tooltip.js
@@ -1,6 +1,6 @@
import { htmlSafe } from "@ember/template";
import { autoUpdatingRelativeAge } from "discourse/lib/formatter";
-import { registerRawHelper } from "discourse-common/lib/helpers";
+import { registerRawHelper } from "discourse/lib/helpers";
registerRawHelper("age-with-tooltip", ageWithTooltip);
diff --git a/app/assets/javascripts/discourse/app/helpers/avatar.js b/app/assets/javascripts/discourse/app/helpers/avatar.js
index d3cd5819ed9..30a0a9f055b 100644
--- a/app/assets/javascripts/discourse/app/helpers/avatar.js
+++ b/app/assets/javascripts/discourse/app/helpers/avatar.js
@@ -1,9 +1,9 @@
import { get } from "@ember/object";
import { htmlSafe } from "@ember/template";
+import { avatarImg } from "discourse/lib/avatar-utils";
+import { registerRawHelper } from "discourse/lib/helpers";
import { prioritizeNameInUx } from "discourse/lib/settings";
import { formatUsername } from "discourse/lib/utilities";
-import { avatarImg } from "discourse-common/lib/avatar-utils";
-import { registerRawHelper } from "discourse-common/lib/helpers";
import { i18n } from "discourse-i18n";
let _customAvatarHelpers;
diff --git a/app/assets/javascripts/discourse/app/helpers/base-path.js b/app/assets/javascripts/discourse/app/helpers/base-path.js
index b12e103d71a..77499376626 100644
--- a/app/assets/javascripts/discourse/app/helpers/base-path.js
+++ b/app/assets/javascripts/discourse/app/helpers/base-path.js
@@ -1,5 +1,5 @@
-import getUrl from "discourse-common/lib/get-url";
-import { registerRawHelper } from "discourse-common/lib/helpers";
+import getUrl from "discourse/lib/get-url";
+import { registerRawHelper } from "discourse/lib/helpers";
registerRawHelper("base-path", basePath);
diff --git a/app/assets/javascripts/discourse/app/helpers/base-url.js b/app/assets/javascripts/discourse/app/helpers/base-url.js
index 1ecc19774cb..fa94031244d 100644
--- a/app/assets/javascripts/discourse/app/helpers/base-url.js
+++ b/app/assets/javascripts/discourse/app/helpers/base-url.js
@@ -1,6 +1,6 @@
-import deprecated from "discourse-common/lib/deprecated";
-import getUrl from "discourse-common/lib/get-url";
-import { registerRawHelper } from "discourse-common/lib/helpers";
+import deprecated from "discourse/lib/deprecated";
+import getUrl from "discourse/lib/get-url";
+import { registerRawHelper } from "discourse/lib/helpers";
registerRawHelper("base-url", baseUrl);
diff --git a/app/assets/javascripts/discourse/app/helpers/bound-avatar-template.js b/app/assets/javascripts/discourse/app/helpers/bound-avatar-template.js
index 051844d8987..56bfe1e95e8 100644
--- a/app/assets/javascripts/discourse/app/helpers/bound-avatar-template.js
+++ b/app/assets/javascripts/discourse/app/helpers/bound-avatar-template.js
@@ -1,6 +1,6 @@
import { htmlSafe } from "@ember/template";
import { isEmpty } from "@ember/utils";
-import { avatarImg } from "discourse-common/lib/avatar-utils";
+import { avatarImg } from "discourse/lib/avatar-utils";
export default function boundAvatarTemplate(avatarTemplate, size, options) {
if (isEmpty(avatarTemplate)) {
diff --git a/app/assets/javascripts/discourse/app/helpers/bound-avatar.js b/app/assets/javascripts/discourse/app/helpers/bound-avatar.js
index 1eb4a898e47..b52a87f8a05 100644
--- a/app/assets/javascripts/discourse/app/helpers/bound-avatar.js
+++ b/app/assets/javascripts/discourse/app/helpers/bound-avatar.js
@@ -1,7 +1,7 @@
import { htmlSafe } from "@ember/template";
import { isEmpty } from "@ember/utils";
import { addExtraUserClasses } from "discourse/helpers/user-avatar";
-import { avatarImg } from "discourse-common/lib/avatar-utils";
+import { avatarImg } from "discourse/lib/avatar-utils";
export default function boundAvatar(user, size) {
if (isEmpty(user)) {
diff --git a/app/assets/javascripts/discourse/app/helpers/capitalize-string.js b/app/assets/javascripts/discourse/app/helpers/capitalize-string.js
index c2ead87b761..b43ad11febc 100644
--- a/app/assets/javascripts/discourse/app/helpers/capitalize-string.js
+++ b/app/assets/javascripts/discourse/app/helpers/capitalize-string.js
@@ -1,4 +1,4 @@
-import deprecated from "discourse-common/lib/deprecated";
+import deprecated from "discourse/lib/deprecated";
export default function capitalizeString(str) {
deprecated("capitalize-string helper is deprecated", {
diff --git a/app/assets/javascripts/discourse/app/helpers/category-badge.js b/app/assets/javascripts/discourse/app/helpers/category-badge.js
index 9f44b6acd36..be28d345657 100644
--- a/app/assets/javascripts/discourse/app/helpers/category-badge.js
+++ b/app/assets/javascripts/discourse/app/helpers/category-badge.js
@@ -1,6 +1,6 @@
import { isPresent } from "@ember/utils";
import { categoryLinkHTML } from "discourse/helpers/category-link";
-import { registerRawHelper } from "discourse-common/lib/helpers";
+import { registerRawHelper } from "discourse/lib/helpers";
registerRawHelper("category-badge", categoryBadge);
diff --git a/app/assets/javascripts/discourse/app/helpers/category-link.js b/app/assets/javascripts/discourse/app/helpers/category-link.js
index 6e771de23d8..1270c3ffeb9 100644
--- a/app/assets/javascripts/discourse/app/helpers/category-link.js
+++ b/app/assets/javascripts/discourse/app/helpers/category-link.js
@@ -1,12 +1,12 @@
import { get } from "@ember/object";
import { htmlSafe } from "@ember/template";
import categoryVariables from "discourse/helpers/category-variables";
+import getURL from "discourse/lib/get-url";
+import { helperContext, registerRawHelper } from "discourse/lib/helpers";
+import { iconHTML } from "discourse/lib/icon-library";
import { applyValueTransformer } from "discourse/lib/transformer";
import { escapeExpression } from "discourse/lib/utilities";
import Category from "discourse/models/category";
-import getURL from "discourse-common/lib/get-url";
-import { helperContext, registerRawHelper } from "discourse-common/lib/helpers";
-import { iconHTML } from "discourse-common/lib/icon-library";
import { i18n } from "discourse-i18n";
let _renderer = defaultCategoryLinkRenderer;
diff --git a/app/assets/javascripts/discourse/app/helpers/cold-age-class.js b/app/assets/javascripts/discourse/app/helpers/cold-age-class.js
index 80315bcee11..c7196458548 100644
--- a/app/assets/javascripts/discourse/app/helpers/cold-age-class.js
+++ b/app/assets/javascripts/discourse/app/helpers/cold-age-class.js
@@ -1,4 +1,4 @@
-import { helperContext, registerRawHelper } from "discourse-common/lib/helpers";
+import { helperContext, registerRawHelper } from "discourse/lib/helpers";
function daysSinceEpoch(dt) {
// 1000 * 60 * 60 * 24 = days since epoch
diff --git a/app/assets/javascripts/discourse/app/helpers/component-for-collection.js b/app/assets/javascripts/discourse/app/helpers/component-for-collection.js
index 488a547a445..b1f61fb13a1 100644
--- a/app/assets/javascripts/discourse/app/helpers/component-for-collection.js
+++ b/app/assets/javascripts/discourse/app/helpers/component-for-collection.js
@@ -1,4 +1,4 @@
-import { registerRawHelper } from "discourse-common/lib/helpers";
+import { registerRawHelper } from "discourse/lib/helpers";
registerRawHelper("component-for-collection", componentForCollection);
diff --git a/app/assets/javascripts/discourse/app/helpers/component-for-row.js b/app/assets/javascripts/discourse/app/helpers/component-for-row.js
index 741ca0691cf..c5654bf28dc 100644
--- a/app/assets/javascripts/discourse/app/helpers/component-for-row.js
+++ b/app/assets/javascripts/discourse/app/helpers/component-for-row.js
@@ -1,4 +1,4 @@
-import { registerRawHelper } from "discourse-common/lib/helpers";
+import { registerRawHelper } from "discourse/lib/helpers";
registerRawHelper("component-for-row", componentForRow);
diff --git a/app/assets/javascripts/discourse/app/helpers/d-icon.js b/app/assets/javascripts/discourse/app/helpers/d-icon.js
index f7ddab94e04..d16fde94020 100644
--- a/app/assets/javascripts/discourse/app/helpers/d-icon.js
+++ b/app/assets/javascripts/discourse/app/helpers/d-icon.js
@@ -1,6 +1,6 @@
import { htmlSafe } from "@ember/template";
-import { registerRawHelper } from "discourse-common/lib/helpers";
-import { renderIcon } from "discourse-common/lib/icon-library";
+import { registerRawHelper } from "discourse/lib/helpers";
+import { renderIcon } from "discourse/lib/icon-library";
export default function icon(id, options = {}) {
return htmlSafe(renderIcon("string", id, options));
diff --git a/app/assets/javascripts/discourse/app/helpers/decorate-username-selector.js b/app/assets/javascripts/discourse/app/helpers/decorate-username-selector.js
index ae0a81353ff..7dd4b270ee9 100644
--- a/app/assets/javascripts/discourse/app/helpers/decorate-username-selector.js
+++ b/app/assets/javascripts/discourse/app/helpers/decorate-username-selector.js
@@ -1,5 +1,5 @@
import { htmlSafe } from "@ember/template";
-import { registerRawHelper } from "discourse-common/lib/helpers";
+import { registerRawHelper } from "discourse/lib/helpers";
let usernameDecorators = [];
export function addUsernameSelectorDecorator(decorator) {
diff --git a/app/assets/javascripts/discourse/app/helpers/dir-span.js b/app/assets/javascripts/discourse/app/helpers/dir-span.js
index b9a5c1f8079..306c912ff2d 100644
--- a/app/assets/javascripts/discourse/app/helpers/dir-span.js
+++ b/app/assets/javascripts/discourse/app/helpers/dir-span.js
@@ -1,6 +1,6 @@
import { htmlSafe } from "@ember/template";
+import { helperContext, registerRawHelper } from "discourse/lib/helpers";
import { escapeExpression } from "discourse/lib/utilities";
-import { helperContext, registerRawHelper } from "discourse-common/lib/helpers";
function setDir(text) {
let content = text ? text : "";
diff --git a/app/assets/javascripts/discourse/app/helpers/directory-table-header-title.js b/app/assets/javascripts/discourse/app/helpers/directory-table-header-title.js
index caf775ca10b..60bb984f75d 100644
--- a/app/assets/javascripts/discourse/app/helpers/directory-table-header-title.js
+++ b/app/assets/javascripts/discourse/app/helpers/directory-table-header-title.js
@@ -1,5 +1,5 @@
import { htmlSafe } from "@ember/template";
-import { iconHTML } from "discourse-common/lib/icon-library";
+import { iconHTML } from "discourse/lib/icon-library";
import { i18n } from "discourse-i18n";
export default function directoryTableHeaderTitle(args) {
diff --git a/app/assets/javascripts/discourse/app/helpers/discourse-tag.js b/app/assets/javascripts/discourse/app/helpers/discourse-tag.js
index a42cce18e59..8d6d65ba4bc 100644
--- a/app/assets/javascripts/discourse/app/helpers/discourse-tag.js
+++ b/app/assets/javascripts/discourse/app/helpers/discourse-tag.js
@@ -1,6 +1,6 @@
import { htmlSafe } from "@ember/template";
+import { registerRawHelper } from "discourse/lib/helpers";
import renderTag from "discourse/lib/render-tag";
-import { registerRawHelper } from "discourse-common/lib/helpers";
registerRawHelper("discourse-tag", discourseTag);
export default function discourseTag(name, params) {
diff --git a/app/assets/javascripts/discourse/app/helpers/discourse-tags.js b/app/assets/javascripts/discourse/app/helpers/discourse-tags.js
index a10f5d8ecd3..89eec39b104 100644
--- a/app/assets/javascripts/discourse/app/helpers/discourse-tags.js
+++ b/app/assets/javascripts/discourse/app/helpers/discourse-tags.js
@@ -1,6 +1,6 @@
import { htmlSafe } from "@ember/template";
+import { registerRawHelper } from "discourse/lib/helpers";
import renderTags from "discourse/lib/render-tags";
-import { registerRawHelper } from "discourse-common/lib/helpers";
registerRawHelper("discourse-tags", discourseTags);
export default function discourseTags(topic, params) {
diff --git a/app/assets/javascripts/discourse/app/helpers/emoji.js b/app/assets/javascripts/discourse/app/helpers/emoji.js
index 8286efacdce..ffa990bdc9b 100644
--- a/app/assets/javascripts/discourse/app/helpers/emoji.js
+++ b/app/assets/javascripts/discourse/app/helpers/emoji.js
@@ -1,7 +1,7 @@
import { htmlSafe } from "@ember/template";
+import { registerRawHelper } from "discourse/lib/helpers";
import { emojiUnescape } from "discourse/lib/text";
import { escapeExpression } from "discourse/lib/utilities";
-import { registerRawHelper } from "discourse-common/lib/helpers";
registerRawHelper("emoji", emoji);
export default function emoji(code, options) {
diff --git a/app/assets/javascripts/discourse/app/helpers/fa-icon-node.js b/app/assets/javascripts/discourse/app/helpers/fa-icon-node.js
index 57071c8eb11..6a6c6eed4f8 100644
--- a/app/assets/javascripts/discourse/app/helpers/fa-icon-node.js
+++ b/app/assets/javascripts/discourse/app/helpers/fa-icon-node.js
@@ -1,4 +1,4 @@
-import { renderIcon } from "discourse-common/lib/icon-library";
+import { renderIcon } from "discourse/lib/icon-library";
export function iconNode(id, params) {
return renderIcon("node", id, params);
diff --git a/app/assets/javascripts/discourse/app/helpers/fa-icon.js b/app/assets/javascripts/discourse/app/helpers/fa-icon.js
index 957551eda77..68871d81dba 100644
--- a/app/assets/javascripts/discourse/app/helpers/fa-icon.js
+++ b/app/assets/javascripts/discourse/app/helpers/fa-icon.js
@@ -1,7 +1,7 @@
import { htmlSafe } from "@ember/template";
-import deprecated from "discourse-common/lib/deprecated";
-import { registerRawHelper } from "discourse-common/lib/helpers";
-import { renderIcon } from "discourse-common/lib/icon-library";
+import deprecated from "discourse/lib/deprecated";
+import { registerRawHelper } from "discourse/lib/helpers";
+import { renderIcon } from "discourse/lib/icon-library";
export function iconHTML(id, params) {
return renderIcon("string", id, params);
diff --git a/app/assets/javascripts/discourse/app/helpers/format-age.js b/app/assets/javascripts/discourse/app/helpers/format-age.js
index e8f32492276..04b4ee30be4 100644
--- a/app/assets/javascripts/discourse/app/helpers/format-age.js
+++ b/app/assets/javascripts/discourse/app/helpers/format-age.js
@@ -1,6 +1,6 @@
import { htmlSafe } from "@ember/template";
import { autoUpdatingRelativeAge } from "discourse/lib/formatter";
-import { registerRawHelper } from "discourse-common/lib/helpers";
+import { registerRawHelper } from "discourse/lib/helpers";
registerRawHelper("format-age", formatAge);
export default function formatAge(dt) {
diff --git a/app/assets/javascripts/discourse/app/helpers/format-date.js b/app/assets/javascripts/discourse/app/helpers/format-date.js
index 58dc000e17a..0efcf127dc0 100644
--- a/app/assets/javascripts/discourse/app/helpers/format-date.js
+++ b/app/assets/javascripts/discourse/app/helpers/format-date.js
@@ -1,6 +1,6 @@
import { htmlSafe } from "@ember/template";
import { autoUpdatingRelativeAge } from "discourse/lib/formatter";
-import { registerRawHelper } from "discourse-common/lib/helpers";
+import { registerRawHelper } from "discourse/lib/helpers";
/**
Display logic for dates. It is unbound in Ember but will use jQuery to
diff --git a/app/assets/javascripts/discourse/app/helpers/format-duration.js b/app/assets/javascripts/discourse/app/helpers/format-duration.js
index 5720e81193b..4556ae53cd7 100644
--- a/app/assets/javascripts/discourse/app/helpers/format-duration.js
+++ b/app/assets/javascripts/discourse/app/helpers/format-duration.js
@@ -1,6 +1,6 @@
import { htmlSafe } from "@ember/template";
import { durationTiny } from "discourse/lib/formatter";
-import { registerRawHelper } from "discourse-common/lib/helpers";
+import { registerRawHelper } from "discourse/lib/helpers";
registerRawHelper("format-duration", formatDuration);
export default function formatDuration(seconds) {
diff --git a/app/assets/javascripts/discourse/app/helpers/format-username.js b/app/assets/javascripts/discourse/app/helpers/format-username.js
index f851f184e73..71b4c216fb1 100644
--- a/app/assets/javascripts/discourse/app/helpers/format-username.js
+++ b/app/assets/javascripts/discourse/app/helpers/format-username.js
@@ -1,5 +1,5 @@
+import { registerRawHelper } from "discourse/lib/helpers";
import { formatUsername } from "discourse/lib/utilities";
-import { registerRawHelper } from "discourse-common/lib/helpers";
export default formatUsername;
registerRawHelper("format-username", formatUsername);
diff --git a/app/assets/javascripts/discourse/app/helpers/get-url.js b/app/assets/javascripts/discourse/app/helpers/get-url.js
index 98b82aabf3f..495997d6bcc 100644
--- a/app/assets/javascripts/discourse/app/helpers/get-url.js
+++ b/app/assets/javascripts/discourse/app/helpers/get-url.js
@@ -1,5 +1,5 @@
-import { default as emberGetUrl } from "discourse-common/lib/get-url";
-import { registerRawHelper } from "discourse-common/lib/helpers";
+import { default as emberGetUrl } from "discourse/lib/get-url";
+import { registerRawHelper } from "discourse/lib/helpers";
registerRawHelper("get-url", getUrl);
diff --git a/app/assets/javascripts/discourse/app/helpers/helper-fn.js b/app/assets/javascripts/discourse/app/helpers/helper-fn.js
index 946e15dc654..ab8ab4ccca8 100644
--- a/app/assets/javascripts/discourse/app/helpers/helper-fn.js
+++ b/app/assets/javascripts/discourse/app/helpers/helper-fn.js
@@ -1,6 +1,6 @@
import Helper from "@ember/component/helper";
import { registerDestructor } from "@ember/destroyable";
-import { bind } from "discourse-common/utils/decorators";
+import { bind } from "discourse/lib/decorators";
/**
* Build an Ember helper with cleanup logic. The passed function will be called with the named argument,
diff --git a/app/assets/javascripts/discourse/app/helpers/html-safe.js b/app/assets/javascripts/discourse/app/helpers/html-safe.js
index f0f80d1a779..f86b180b6b3 100644
--- a/app/assets/javascripts/discourse/app/helpers/html-safe.js
+++ b/app/assets/javascripts/discourse/app/helpers/html-safe.js
@@ -1,5 +1,5 @@
import { htmlSafe as emberHtmlSafe } from "@ember/template";
-import { registerRawHelper } from "discourse-common/lib/helpers";
+import { registerRawHelper } from "discourse/lib/helpers";
registerRawHelper("html-safe", htmlSafe);
diff --git a/app/assets/javascripts/discourse/app/helpers/i18n-yes-no.js b/app/assets/javascripts/discourse/app/helpers/i18n-yes-no.js
index 89bb98143a7..4ac082bc11d 100644
--- a/app/assets/javascripts/discourse/app/helpers/i18n-yes-no.js
+++ b/app/assets/javascripts/discourse/app/helpers/i18n-yes-no.js
@@ -1,4 +1,4 @@
-import { registerRawHelper } from "discourse-common/lib/helpers";
+import { registerRawHelper } from "discourse/lib/helpers";
import { i18n } from "discourse-i18n";
registerRawHelper("i18n-yes-no", i18nYesNo);
diff --git a/app/assets/javascripts/discourse/app/helpers/i18n.js b/app/assets/javascripts/discourse/app/helpers/i18n.js
index 13c0e69f556..a6803c7ff82 100644
--- a/app/assets/javascripts/discourse/app/helpers/i18n.js
+++ b/app/assets/javascripts/discourse/app/helpers/i18n.js
@@ -1,4 +1,4 @@
-import { registerRawHelper } from "discourse-common/lib/helpers";
+import { registerRawHelper } from "discourse/lib/helpers";
import { i18n } from "discourse-i18n";
registerRawHelper("i18n", i18n);
diff --git a/app/assets/javascripts/discourse/app/helpers/icon-or-image.js b/app/assets/javascripts/discourse/app/helpers/icon-or-image.js
index cb3399834a4..c1af600c0f9 100644
--- a/app/assets/javascripts/discourse/app/helpers/icon-or-image.js
+++ b/app/assets/javascripts/discourse/app/helpers/icon-or-image.js
@@ -1,7 +1,7 @@
import { get } from "@ember/object";
import { htmlSafe } from "@ember/template";
import { isEmpty } from "@ember/utils";
-import { convertIconClass, iconHTML } from "discourse-common/lib/icon-library";
+import { convertIconClass, iconHTML } from "discourse/lib/icon-library";
export default function iconOrImage(badge) {
const icon = get(badge, "icon");
diff --git a/app/assets/javascripts/discourse/app/helpers/inline-date.js b/app/assets/javascripts/discourse/app/helpers/inline-date.js
index b4468740ad7..75935f7889b 100644
--- a/app/assets/javascripts/discourse/app/helpers/inline-date.js
+++ b/app/assets/javascripts/discourse/app/helpers/inline-date.js
@@ -1,5 +1,5 @@
+import deprecated from "discourse/lib/deprecated";
import { relativeAge } from "discourse/lib/formatter";
-import deprecated from "discourse-common/lib/deprecated";
export default function inlineDate(dt) {
deprecated("inline-date helper is deprecated", {
diff --git a/app/assets/javascripts/discourse/app/helpers/number.js b/app/assets/javascripts/discourse/app/helpers/number.js
index e46845480c6..290610fad68 100644
--- a/app/assets/javascripts/discourse/app/helpers/number.js
+++ b/app/assets/javascripts/discourse/app/helpers/number.js
@@ -1,7 +1,7 @@
import { htmlSafe } from "@ember/template";
import { number as numberFormatter } from "discourse/lib/formatter";
+import { registerRawHelper } from "discourse/lib/helpers";
import { escapeExpression } from "discourse/lib/utilities";
-import { registerRawHelper } from "discourse-common/lib/helpers";
import I18n, { i18n } from "discourse-i18n";
registerRawHelper("number", number);
diff --git a/app/assets/javascripts/discourse/app/helpers/plugin-outlet.gjs b/app/assets/javascripts/discourse/app/helpers/plugin-outlet.gjs
index ba0305b674f..c06abb98371 100644
--- a/app/assets/javascripts/discourse/app/helpers/plugin-outlet.gjs
+++ b/app/assets/javascripts/discourse/app/helpers/plugin-outlet.gjs
@@ -1,8 +1,8 @@
import { htmlSafe } from "@ember/template";
import PluginOutlet from "discourse/components/plugin-outlet";
import { connectorsExist } from "discourse/lib/plugin-connectors";
+import RawHandlebars from "discourse/lib/raw-handlebars";
import rawRenderGlimmer from "discourse/lib/raw-render-glimmer";
-import RawHandlebars from "discourse-common/lib/raw-handlebars";
const GlimmerPluginOutletWrapper =
{{~! no whitespace ~}}
diff --git a/app/assets/javascripts/discourse/app/helpers/raw-date.js b/app/assets/javascripts/discourse/app/helpers/raw-date.js
index 50202067657..084e8d46864 100644
--- a/app/assets/javascripts/discourse/app/helpers/raw-date.js
+++ b/app/assets/javascripts/discourse/app/helpers/raw-date.js
@@ -1,6 +1,6 @@
import { htmlSafe } from "@ember/template";
import { longDate } from "discourse/lib/formatter";
-import { registerRawHelper } from "discourse-common/lib/helpers";
+import { registerRawHelper } from "discourse/lib/helpers";
registerRawHelper("raw-date", rawDate);
diff --git a/app/assets/javascripts/discourse/app/helpers/raw-hash.js b/app/assets/javascripts/discourse/app/helpers/raw-hash.js
index 3f5329fa257..47473dda072 100644
--- a/app/assets/javascripts/discourse/app/helpers/raw-hash.js
+++ b/app/assets/javascripts/discourse/app/helpers/raw-hash.js
@@ -1,4 +1,4 @@
-import { registerRawHelper } from "discourse-common/lib/helpers";
+import { registerRawHelper } from "discourse/lib/helpers";
registerRawHelper("raw-hash", function (params) {
return params;
diff --git a/app/assets/javascripts/discourse/app/helpers/raw-plugin-outlet.js b/app/assets/javascripts/discourse/app/helpers/raw-plugin-outlet.js
index 58490a913a6..532aac00b8c 100644
--- a/app/assets/javascripts/discourse/app/helpers/raw-plugin-outlet.js
+++ b/app/assets/javascripts/discourse/app/helpers/raw-plugin-outlet.js
@@ -1,6 +1,6 @@
import { htmlSafe } from "@ember/template";
import { rawConnectorsFor } from "discourse/lib/plugin-connectors";
-import RawHandlebars from "discourse-common/lib/raw-handlebars";
+import RawHandlebars from "discourse/lib/raw-handlebars";
RawHandlebars.registerHelper("raw-plugin-outlet", function (args) {
const connectors = rawConnectorsFor(args.hash.name);
diff --git a/app/assets/javascripts/discourse/app/helpers/raw.js b/app/assets/javascripts/discourse/app/helpers/raw.js
index e2d2929faa6..7dcd2c816ec 100644
--- a/app/assets/javascripts/discourse/app/helpers/raw.js
+++ b/app/assets/javascripts/discourse/app/helpers/raw.js
@@ -4,10 +4,10 @@ import { getOwner, setOwner } from "@ember/owner";
import { schedule } from "@ember/runloop";
import { service } from "@ember/service";
import { htmlSafe } from "@ember/template";
-import { helperContext, registerRawHelper } from "discourse-common/lib/helpers";
-import { RUNTIME_OPTIONS } from "discourse-common/lib/raw-handlebars-helpers";
-import { findRawTemplate } from "discourse-common/lib/raw-templates";
-import { bind } from "discourse-common/utils/decorators";
+import { bind } from "discourse/lib/decorators";
+import { helperContext, registerRawHelper } from "discourse/lib/helpers";
+import { RUNTIME_OPTIONS } from "discourse/lib/raw-handlebars-helpers";
+import { findRawTemplate } from "discourse/lib/raw-templates";
function renderRaw(ctx, template, templateName, params) {
params = { ...params };
diff --git a/app/assets/javascripts/discourse/app/helpers/replace-emoji.js b/app/assets/javascripts/discourse/app/helpers/replace-emoji.js
index 424ae162685..523a71752e7 100644
--- a/app/assets/javascripts/discourse/app/helpers/replace-emoji.js
+++ b/app/assets/javascripts/discourse/app/helpers/replace-emoji.js
@@ -1,7 +1,7 @@
import { htmlSafe, isHTMLSafe } from "@ember/template";
+import { registerRawHelper } from "discourse/lib/helpers";
import { emojiUnescape } from "discourse/lib/text";
import { escapeExpression } from "discourse/lib/utilities";
-import { registerRawHelper } from "discourse-common/lib/helpers";
registerRawHelper("replace-emoji", replaceEmoji);
diff --git a/app/assets/javascripts/discourse/app/helpers/reviewable-history-description.js b/app/assets/javascripts/discourse/app/helpers/reviewable-history-description.js
index 8b961d597aa..509dc4f1e8b 100644
--- a/app/assets/javascripts/discourse/app/helpers/reviewable-history-description.js
+++ b/app/assets/javascripts/discourse/app/helpers/reviewable-history-description.js
@@ -1,7 +1,7 @@
import { htmlSafe } from "@ember/template";
import { htmlStatus } from "discourse/helpers/reviewable-status";
+import { iconHTML } from "discourse/lib/icon-library";
import { EDITED } from "discourse/models/reviewable-history";
-import { iconHTML } from "discourse-common/lib/icon-library";
import { i18n } from "discourse-i18n";
export default function reviewableHistoryDescription(rh) {
diff --git a/app/assets/javascripts/discourse/app/helpers/reviewable-status.js b/app/assets/javascripts/discourse/app/helpers/reviewable-status.js
index 93b7506f957..f49534c5b78 100644
--- a/app/assets/javascripts/discourse/app/helpers/reviewable-status.js
+++ b/app/assets/javascripts/discourse/app/helpers/reviewable-status.js
@@ -1,4 +1,5 @@
import { htmlSafe } from "@ember/template";
+import { iconHTML } from "discourse/lib/icon-library";
import {
APPROVED,
DELETED,
@@ -6,7 +7,6 @@ import {
PENDING,
REJECTED,
} from "discourse/models/reviewable";
-import { iconHTML } from "discourse-common/lib/icon-library";
import { i18n } from "discourse-i18n";
function dataFor(status, type) {
diff --git a/app/assets/javascripts/discourse/app/helpers/share-url.js b/app/assets/javascripts/discourse/app/helpers/share-url.js
index 200683da51c..a3b2c95c3d3 100644
--- a/app/assets/javascripts/discourse/app/helpers/share-url.js
+++ b/app/assets/javascripts/discourse/app/helpers/share-url.js
@@ -1,4 +1,4 @@
-import { helperContext } from "discourse-common/lib/helpers";
+import { helperContext } from "discourse/lib/helpers";
export function resolveShareUrl(url, user) {
const siteSettings = helperContext().siteSettings;
diff --git a/app/assets/javascripts/discourse/app/helpers/shorten-url.js b/app/assets/javascripts/discourse/app/helpers/shorten-url.js
index 99c88739b3f..36edb5175cb 100644
--- a/app/assets/javascripts/discourse/app/helpers/shorten-url.js
+++ b/app/assets/javascripts/discourse/app/helpers/shorten-url.js
@@ -1,4 +1,4 @@
-import { registerRawHelper } from "discourse-common/lib/helpers";
+import { registerRawHelper } from "discourse/lib/helpers";
registerRawHelper("shorten-url", shortenUrl);
export default function shortenUrl(url) {
diff --git a/app/assets/javascripts/discourse/app/helpers/theme-i18n.js b/app/assets/javascripts/discourse/app/helpers/theme-i18n.js
index 3869b1d94a7..b1d0195e2ef 100644
--- a/app/assets/javascripts/discourse/app/helpers/theme-i18n.js
+++ b/app/assets/javascripts/discourse/app/helpers/theme-i18n.js
@@ -1,4 +1,4 @@
-import { registerRawHelper } from "discourse-common/lib/helpers";
+import { registerRawHelper } from "discourse/lib/helpers";
import { i18n } from "discourse-i18n";
registerRawHelper("theme-i18n", themeI18n);
diff --git a/app/assets/javascripts/discourse/app/helpers/theme-prefix.js b/app/assets/javascripts/discourse/app/helpers/theme-prefix.js
index 579352cb678..bea741b7970 100644
--- a/app/assets/javascripts/discourse/app/helpers/theme-prefix.js
+++ b/app/assets/javascripts/discourse/app/helpers/theme-prefix.js
@@ -1,4 +1,4 @@
-import { registerRawHelper } from "discourse-common/lib/helpers";
+import { registerRawHelper } from "discourse/lib/helpers";
registerRawHelper("theme-prefix", themePrefix);
export default function themePrefix(themeId, key) {
diff --git a/app/assets/javascripts/discourse/app/helpers/theme-setting.js b/app/assets/javascripts/discourse/app/helpers/theme-setting.js
index 870ff0de51b..acd3c020ec7 100644
--- a/app/assets/javascripts/discourse/app/helpers/theme-setting.js
+++ b/app/assets/javascripts/discourse/app/helpers/theme-setting.js
@@ -1,5 +1,5 @@
+import { registerRawHelper } from "discourse/lib/helpers";
import { getSetting as getThemeSetting } from "discourse/lib/theme-settings-store";
-import { registerRawHelper } from "discourse-common/lib/helpers";
registerRawHelper("theme-setting", themeSetting);
export default function themeSetting(themeId, key) {
diff --git a/app/assets/javascripts/discourse/app/helpers/topic-featured-link.js b/app/assets/javascripts/discourse/app/helpers/topic-featured-link.js
index e1d9b768b92..3cd95cd96db 100644
--- a/app/assets/javascripts/discourse/app/helpers/topic-featured-link.js
+++ b/app/assets/javascripts/discourse/app/helpers/topic-featured-link.js
@@ -1,6 +1,6 @@
import { htmlSafe } from "@ember/template";
+import { registerRawHelper } from "discourse/lib/helpers";
import renderTopicFeaturedLink from "discourse/lib/render-topic-featured-link";
-import { registerRawHelper } from "discourse-common/lib/helpers";
registerRawHelper("topic-featured-link", topicFeaturedLink);
export default function topicFeaturedLink(topic, params) {
diff --git a/app/assets/javascripts/discourse/app/helpers/topic-link.js b/app/assets/javascripts/discourse/app/helpers/topic-link.js
index 8e545ba9cc0..18e9178ccc7 100644
--- a/app/assets/javascripts/discourse/app/helpers/topic-link.js
+++ b/app/assets/javascripts/discourse/app/helpers/topic-link.js
@@ -1,5 +1,5 @@
import { htmlSafe } from "@ember/template";
-import { registerRawHelper } from "discourse-common/lib/helpers";
+import { registerRawHelper } from "discourse/lib/helpers";
registerRawHelper("topic-link", topicLink);
export default function topicLink(topic, args = {}) {
diff --git a/app/assets/javascripts/discourse/app/helpers/user-status.js b/app/assets/javascripts/discourse/app/helpers/user-status.js
index cb65bd5381f..4450e5bfcaf 100644
--- a/app/assets/javascripts/discourse/app/helpers/user-status.js
+++ b/app/assets/javascripts/discourse/app/helpers/user-status.js
@@ -1,6 +1,6 @@
import { htmlSafe } from "@ember/template";
+import { iconHTML } from "discourse/lib/icon-library";
import { escapeExpression } from "discourse/lib/utilities";
-import { iconHTML } from "discourse-common/lib/icon-library";
import { i18n } from "discourse-i18n";
export default function userStatus(user, { currentUser } = {}) {
diff --git a/app/assets/javascripts/discourse/app/helpers/value-entered.js b/app/assets/javascripts/discourse/app/helpers/value-entered.js
index 417c987e59e..78c731f8126 100644
--- a/app/assets/javascripts/discourse/app/helpers/value-entered.js
+++ b/app/assets/javascripts/discourse/app/helpers/value-entered.js
@@ -1,4 +1,4 @@
-import { registerRawHelper } from "discourse-common/lib/helpers";
+import { registerRawHelper } from "discourse/lib/helpers";
registerRawHelper("value-entered", valueEntered);
export default function valueEntered(value) {
diff --git a/app/assets/javascripts/discourse/app/initializers/discourse-bootstrap.js b/app/assets/javascripts/discourse/app/initializers/discourse-bootstrap.js
index e22678c6c72..9a77268db32 100644
--- a/app/assets/javascripts/discourse/app/initializers/discourse-bootstrap.js
+++ b/app/assets/javascripts/discourse/app/initializers/discourse-bootstrap.js
@@ -1,6 +1,9 @@
import { DEBUG } from "@glimmer/env";
import { _backburner } from "@ember/runloop";
import RSVP from "rsvp";
+import { setDefaultOwner } from "discourse/lib/get-owner";
+import { setupS3CDN, setupURL } from "discourse/lib/get-url";
+import { setIconList } from "discourse/lib/icon-library";
import PreloadStore from "discourse/lib/preload-store";
import { setURLContainer } from "discourse/lib/url";
import Session from "discourse/models/session";
@@ -10,9 +13,6 @@ import {
isTesting,
setEnvironment,
} from "discourse-common/config/environment";
-import { setDefaultOwner } from "discourse-common/lib/get-owner";
-import { setupS3CDN, setupURL } from "discourse-common/lib/get-url";
-import { setIconList } from "discourse-common/lib/icon-library";
import I18n from "discourse-i18n";
export default {
diff --git a/app/assets/javascripts/discourse/app/instance-initializers/animated-images-pause-on-click.js b/app/assets/javascripts/discourse/app/instance-initializers/animated-images-pause-on-click.js
index 42a7cda100b..5df255dec5b 100644
--- a/app/assets/javascripts/discourse/app/instance-initializers/animated-images-pause-on-click.js
+++ b/app/assets/javascripts/discourse/app/instance-initializers/animated-images-pause-on-click.js
@@ -1,6 +1,6 @@
+import { iconHTML } from "discourse/lib/icon-library";
import { withPluginApi } from "discourse/lib/plugin-api";
import { prefersReducedMotion } from "discourse/lib/utilities";
-import { iconHTML } from "discourse-common/lib/icon-library";
let _gifClickHandlers = {};
diff --git a/app/assets/javascripts/discourse/app/instance-initializers/auto-load-modules.js b/app/assets/javascripts/discourse/app/instance-initializers/auto-load-modules.js
index 108c16a52ff..4beb1ffc419 100644
--- a/app/assets/javascripts/discourse/app/instance-initializers/auto-load-modules.js
+++ b/app/assets/javascripts/discourse/app/instance-initializers/auto-load-modules.js
@@ -1,11 +1,8 @@
import { setOwner } from "@ember/owner";
import Handlebars from "handlebars";
-import {
- createHelperContext,
- registerHelpers,
-} from "discourse-common/lib/helpers";
-import RawHandlebars from "discourse-common/lib/raw-handlebars";
-import { registerRawHelpers } from "discourse-common/lib/raw-handlebars-helpers";
+import { createHelperContext, registerHelpers } from "discourse/lib/helpers";
+import RawHandlebars from "discourse/lib/raw-handlebars";
+import { registerRawHelpers } from "discourse/lib/raw-handlebars-helpers";
function isThemeOrPluginHelper(path) {
return (
diff --git a/app/assets/javascripts/discourse/app/instance-initializers/banner.js b/app/assets/javascripts/discourse/app/instance-initializers/banner.js
index 084c44af82a..c33e94845a1 100644
--- a/app/assets/javascripts/discourse/app/instance-initializers/banner.js
+++ b/app/assets/javascripts/discourse/app/instance-initializers/banner.js
@@ -1,8 +1,8 @@
import EmberObject from "@ember/object";
import { setOwner } from "@ember/owner";
import { service } from "@ember/service";
+import { bind } from "discourse/lib/decorators";
import PreloadStore from "discourse/lib/preload-store";
-import { bind } from "discourse-common/utils/decorators";
class BannerInit {
@service site;
diff --git a/app/assets/javascripts/discourse/app/instance-initializers/bookmark-menu.js b/app/assets/javascripts/discourse/app/instance-initializers/bookmark-menu.js
index 7a5ee46537e..e3431248cf3 100644
--- a/app/assets/javascripts/discourse/app/instance-initializers/bookmark-menu.js
+++ b/app/assets/javascripts/discourse/app/instance-initializers/bookmark-menu.js
@@ -1,6 +1,6 @@
+import { withSilencedDeprecations } from "discourse/lib/deprecated";
import { withPluginApi } from "discourse/lib/plugin-api";
import PostBookmarkManager from "discourse/lib/post-bookmark-manager";
-import { withSilencedDeprecations } from "discourse-common/lib/deprecated";
export default {
name: "discourse-bookmark-menu",
diff --git a/app/assets/javascripts/discourse/app/instance-initializers/component-templates.js b/app/assets/javascripts/discourse/app/instance-initializers/component-templates.js
index 517e6be6930..f965614336e 100644
--- a/app/assets/javascripts/discourse/app/instance-initializers/component-templates.js
+++ b/app/assets/javascripts/discourse/app/instance-initializers/component-templates.js
@@ -1,8 +1,8 @@
import * as GlimmerManager from "@glimmer/manager";
import ClassicComponent from "@ember/component";
+import deprecated from "discourse/lib/deprecated";
+import DiscourseTemplateMap from "discourse/lib/discourse-template-map";
import { isTesting } from "discourse-common/config/environment";
-import deprecated from "discourse-common/lib/deprecated";
-import DiscourseTemplateMap from "discourse-common/lib/discourse-template-map";
let THROW_GJS_ERROR = isTesting();
diff --git a/app/assets/javascripts/discourse/app/instance-initializers/discovery-controller-shims.js b/app/assets/javascripts/discourse/app/instance-initializers/discovery-controller-shims.js
index 8ba1d3c5bd6..d56a2437c5d 100644
--- a/app/assets/javascripts/discourse/app/instance-initializers/discovery-controller-shims.js
+++ b/app/assets/javascripts/discourse/app/instance-initializers/discovery-controller-shims.js
@@ -1,7 +1,7 @@
import EmberObject from "@ember/object";
import { dependentKeyCompat } from "@ember/object/compat";
import { service } from "@ember/service";
-import deprecated from "discourse-common/lib/deprecated";
+import deprecated from "discourse/lib/deprecated";
let reopenedClasses = [];
diff --git a/app/assets/javascripts/discourse/app/instance-initializers/eager-load-raw-templates.js b/app/assets/javascripts/discourse/app/instance-initializers/eager-load-raw-templates.js
index d38a14295d1..86245adb363 100644
--- a/app/assets/javascripts/discourse/app/instance-initializers/eager-load-raw-templates.js
+++ b/app/assets/javascripts/discourse/app/instance-initializers/eager-load-raw-templates.js
@@ -1,4 +1,4 @@
-import { eagerLoadRawTemplateModules } from "discourse-common/lib/raw-templates";
+import { eagerLoadRawTemplateModules } from "discourse/lib/raw-templates";
export default {
initialize() {
diff --git a/app/assets/javascripts/discourse/app/instance-initializers/hbr-topic-list-overrides.js b/app/assets/javascripts/discourse/app/instance-initializers/hbr-topic-list-overrides.js
index 253b69ae263..b73462ef685 100644
--- a/app/assets/javascripts/discourse/app/instance-initializers/hbr-topic-list-overrides.js
+++ b/app/assets/javascripts/discourse/app/instance-initializers/hbr-topic-list-overrides.js
@@ -1,5 +1,5 @@
-import { registerDeprecationHandler } from "discourse-common/lib/deprecated";
-import { needsHbrTopicList } from "discourse-common/lib/raw-templates";
+import { registerDeprecationHandler } from "discourse/lib/deprecated";
+import { needsHbrTopicList } from "discourse/lib/raw-templates";
export default {
before: "inject-objects",
diff --git a/app/assets/javascripts/discourse/app/instance-initializers/inject-objects.js b/app/assets/javascripts/discourse/app/instance-initializers/inject-objects.js
index 17ccaa5cff7..bda5f7b7ad2 100644
--- a/app/assets/javascripts/discourse/app/instance-initializers/inject-objects.js
+++ b/app/assets/javascripts/discourse/app/instance-initializers/inject-objects.js
@@ -1,7 +1,7 @@
+import deprecated from "discourse/lib/deprecated";
+import { setDefaultOwner } from "discourse/lib/get-owner";
import Site from "discourse/models/site";
import User from "discourse/models/user";
-import deprecated from "discourse-common/lib/deprecated";
-import { setDefaultOwner } from "discourse-common/lib/get-owner";
export default {
after: "sniff-capabilities",
diff --git a/app/assets/javascripts/discourse/app/instance-initializers/live-development.js b/app/assets/javascripts/discourse/app/instance-initializers/live-development.js
index b415e4141e2..186a8a52934 100644
--- a/app/assets/javascripts/discourse/app/instance-initializers/live-development.js
+++ b/app/assets/javascripts/discourse/app/instance-initializers/live-development.js
@@ -1,7 +1,7 @@
import { setOwner } from "@ember/owner";
import { service } from "@ember/service";
-import discourseLater from "discourse-common/lib/later";
-import { bind } from "discourse-common/utils/decorators";
+import { bind } from "discourse/lib/decorators";
+import discourseLater from "discourse/lib/later";
// Use the message bus for live reloading of components for faster development.
class LiveDevelopmentInit {
diff --git a/app/assets/javascripts/discourse/app/instance-initializers/logout.js b/app/assets/javascripts/discourse/app/instance-initializers/logout.js
index 87eff7f25e9..4f194d0e7b1 100644
--- a/app/assets/javascripts/discourse/app/instance-initializers/logout.js
+++ b/app/assets/javascripts/discourse/app/instance-initializers/logout.js
@@ -1,7 +1,7 @@
import { setOwner } from "@ember/owner";
import { service } from "@ember/service";
+import { bind } from "discourse/lib/decorators";
import logout from "discourse/lib/logout";
-import { bind } from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
let _showingLogout = false;
diff --git a/app/assets/javascripts/discourse/app/instance-initializers/message-bus.js b/app/assets/javascripts/discourse/app/instance-initializers/message-bus.js
index a6bb040dd21..a2376c34eb5 100644
--- a/app/assets/javascripts/discourse/app/instance-initializers/message-bus.js
+++ b/app/assets/javascripts/discourse/app/instance-initializers/message-bus.js
@@ -1,9 +1,9 @@
import $ from "jquery";
import { handleLogoff } from "discourse/lib/ajax";
+// Initialize the message bus to receive messages.
+import getURL from "discourse/lib/get-url";
import userPresent, { onPresenceChange } from "discourse/lib/user-presence";
import { isProduction, isTesting } from "discourse-common/config/environment";
-// Initialize the message bus to receive messages.
-import getURL from "discourse-common/lib/get-url";
const LONG_POLL_AFTER_UNSEEN_TIME = 1200000; // 20 minutes
diff --git a/app/assets/javascripts/discourse/app/instance-initializers/meta-tag-updater.js b/app/assets/javascripts/discourse/app/instance-initializers/meta-tag-updater.js
index 168f5ebda5d..ae770882701 100644
--- a/app/assets/javascripts/discourse/app/instance-initializers/meta-tag-updater.js
+++ b/app/assets/javascripts/discourse/app/instance-initializers/meta-tag-updater.js
@@ -1,5 +1,5 @@
+import { getAbsoluteURL } from "discourse/lib/get-url";
import { getCanonicalUrl } from "discourse/lib/url";
-import { getAbsoluteURL } from "discourse-common/lib/get-url";
export default {
initialize(owner) {
diff --git a/app/assets/javascripts/discourse/app/instance-initializers/populate-template-map.js b/app/assets/javascripts/discourse/app/instance-initializers/populate-template-map.js
index a05e84bda79..380d85c4f0c 100644
--- a/app/assets/javascripts/discourse/app/instance-initializers/populate-template-map.js
+++ b/app/assets/javascripts/discourse/app/instance-initializers/populate-template-map.js
@@ -1,4 +1,4 @@
-import discourseTemplateMap from "discourse-common/lib/discourse-template-map";
+import discourseTemplateMap from "discourse/lib/discourse-template-map";
export default {
initialize() {
diff --git a/app/assets/javascripts/discourse/app/instance-initializers/post-decorations.js b/app/assets/javascripts/discourse/app/instance-initializers/post-decorations.js
index fa7562debd2..079706346b0 100644
--- a/app/assets/javascripts/discourse/app/instance-initializers/post-decorations.js
+++ b/app/assets/javascripts/discourse/app/instance-initializers/post-decorations.js
@@ -6,6 +6,7 @@ import { ajax } from "discourse/lib/ajax";
import { popupAjaxError } from "discourse/lib/ajax-error";
import Columns from "discourse/lib/columns";
import highlightSyntax from "discourse/lib/highlight-syntax";
+import { iconHTML, iconNode } from "discourse/lib/icon-library";
import { nativeLazyLoading } from "discourse/lib/lazy-load-images";
import lightbox from "discourse/lib/lightbox";
import { SELECTORS } from "discourse/lib/lightbox/constants";
@@ -13,7 +14,6 @@ import { withPluginApi } from "discourse/lib/plugin-api";
import { parseAsync } from "discourse/lib/text";
import { setTextDirections } from "discourse/lib/text-direction";
import { tokenRange } from "discourse/lib/utilities";
-import { iconHTML, iconNode } from "discourse-common/lib/icon-library";
import { i18n } from "discourse-i18n";
export default {
diff --git a/app/assets/javascripts/discourse/app/instance-initializers/read-only.js b/app/assets/javascripts/discourse/app/instance-initializers/read-only.js
index 54affdeee9e..a1132b71367 100644
--- a/app/assets/javascripts/discourse/app/instance-initializers/read-only.js
+++ b/app/assets/javascripts/discourse/app/instance-initializers/read-only.js
@@ -1,6 +1,6 @@
import { setOwner } from "@ember/owner";
import { service } from "@ember/service";
-import { bind } from "discourse-common/utils/decorators";
+import { bind } from "discourse/lib/decorators";
// Subscribe to "read-only" status change events via the Message Bus
class ReadOnlyInit {
diff --git a/app/assets/javascripts/discourse/app/instance-initializers/subscribe-user-notifications.js b/app/assets/javascripts/discourse/app/instance-initializers/subscribe-user-notifications.js
index 7bb98e9ec22..783a701cd9f 100644
--- a/app/assets/javascripts/discourse/app/instance-initializers/subscribe-user-notifications.js
+++ b/app/assets/javascripts/discourse/app/instance-initializers/subscribe-user-notifications.js
@@ -1,6 +1,7 @@
// Subscribes to user events on the message bus
import { setOwner } from "@ember/owner";
import { service } from "@ember/service";
+import { bind } from "discourse/lib/decorators";
import {
alertChannel,
disable as disableDesktopNotifications,
@@ -14,7 +15,6 @@ import {
} from "discourse/lib/push-notifications";
import Notification from "discourse/models/notification";
import { isTesting } from "discourse-common/config/environment";
-import { bind } from "discourse-common/utils/decorators";
class SubscribeUserNotificationsInit {
@service currentUser;
diff --git a/app/assets/javascripts/discourse/app/instance-initializers/video-placeholder.js b/app/assets/javascripts/discourse/app/instance-initializers/video-placeholder.js
index 80d639f0013..0b87bebf0b5 100644
--- a/app/assets/javascripts/discourse/app/instance-initializers/video-placeholder.js
+++ b/app/assets/javascripts/discourse/app/instance-initializers/video-placeholder.js
@@ -1,7 +1,7 @@
import { spinnerHTML } from "discourse/helpers/loading-spinner";
+import { iconHTML } from "discourse/lib/icon-library";
+import discourseLater from "discourse/lib/later";
import { withPluginApi } from "discourse/lib/plugin-api";
-import { iconHTML } from "discourse-common/lib/icon-library";
-import discourseLater from "discourse-common/lib/later";
import { i18n } from "discourse-i18n";
export default {
diff --git a/app/assets/javascripts/discourse/app/instance-initializers/webview-background.js b/app/assets/javascripts/discourse/app/instance-initializers/webview-background.js
index 3518171b4c3..888488d96d9 100644
--- a/app/assets/javascripts/discourse/app/instance-initializers/webview-background.js
+++ b/app/assets/javascripts/discourse/app/instance-initializers/webview-background.js
@@ -1,5 +1,5 @@
+import discourseLater from "discourse/lib/later";
import { postRNWebviewMessage } from "discourse/lib/utilities";
-import discourseLater from "discourse-common/lib/later";
// Send bg color to webview so iOS status bar matches site theme
export default {
diff --git a/app/assets/javascripts/discourse/app/lib/ajax-error.js b/app/assets/javascripts/discourse/app/lib/ajax-error.js
index 4e751ff1562..e23efd20ce8 100644
--- a/app/assets/javascripts/discourse/app/lib/ajax-error.js
+++ b/app/assets/javascripts/discourse/app/lib/ajax-error.js
@@ -1,6 +1,6 @@
import { htmlSafe } from "@ember/template";
import $ from "jquery";
-import { getOwnerWithFallback } from "discourse-common/lib/get-owner";
+import { getOwnerWithFallback } from "discourse/lib/get-owner";
import { i18n } from "discourse-i18n";
function extractErrorInfo(error, defaultMessage) {
diff --git a/app/assets/javascripts/discourse/app/lib/ajax.js b/app/assets/javascripts/discourse/app/lib/ajax.js
index 28581f42110..e7d0fa60c70 100644
--- a/app/assets/javascripts/discourse/app/lib/ajax.js
+++ b/app/assets/javascripts/discourse/app/lib/ajax.js
@@ -1,12 +1,12 @@
import { run } from "@ember/runloop";
import $ from "jquery";
import { Promise } from "rsvp";
+import getURL from "discourse/lib/get-url";
import userPresent from "discourse/lib/user-presence";
import Session from "discourse/models/session";
import Site from "discourse/models/site";
import User from "discourse/models/user";
import { isTesting } from "discourse-common/config/environment";
-import getURL from "discourse-common/lib/get-url";
let _trackView = false;
let _topicId = null;
diff --git a/app/assets/javascripts/discourse-common/addon/lib/attribute-hook.js b/app/assets/javascripts/discourse/app/lib/attribute-hook.js
similarity index 100%
rename from app/assets/javascripts/discourse-common/addon/lib/attribute-hook.js
rename to app/assets/javascripts/discourse/app/lib/attribute-hook.js
diff --git a/app/assets/javascripts/discourse/app/lib/autocomplete.js b/app/assets/javascripts/discourse/app/lib/autocomplete.js
index 56e3c0bdbb6..5e7414c31ad 100644
--- a/app/assets/javascripts/discourse/app/lib/autocomplete.js
+++ b/app/assets/javascripts/discourse/app/lib/autocomplete.js
@@ -1,13 +1,13 @@
import { cancel } from "@ember/runloop";
import { createPopper } from "@popperjs/core";
import $ from "jquery";
+import discourseDebounce from "discourse/lib/debounce";
+import { iconHTML } from "discourse/lib/icon-library";
+import discourseLater from "discourse/lib/later";
import { isDocumentRTL } from "discourse/lib/text-direction";
import { TextareaAutocompleteHandler } from "discourse/lib/textarea-text-manipulation";
import Site from "discourse/models/site";
import { INPUT_DELAY } from "discourse-common/config/environment";
-import discourseDebounce from "discourse-common/lib/debounce";
-import { iconHTML } from "discourse-common/lib/icon-library";
-import discourseLater from "discourse-common/lib/later";
/**
This is a jQuery plugin to support autocompleting values in our text fields.
diff --git a/app/assets/javascripts/discourse-common/addon/lib/avatar-utils.js b/app/assets/javascripts/discourse/app/lib/avatar-utils.js
similarity index 89%
rename from app/assets/javascripts/discourse-common/addon/lib/avatar-utils.js
rename to app/assets/javascripts/discourse/app/lib/avatar-utils.js
index f8c1d57590e..b962d622bb0 100644
--- a/app/assets/javascripts/discourse-common/addon/lib/avatar-utils.js
+++ b/app/assets/javascripts/discourse/app/lib/avatar-utils.js
@@ -1,7 +1,7 @@
-import escape from "discourse-common/lib/escape";
-import { getURLWithCDN } from "discourse-common/lib/get-url";
-import { helperContext } from "discourse-common/lib/helpers";
-import { deepMerge } from "discourse-common/lib/object";
+import escape from "discourse/lib/escape";
+import { getURLWithCDN } from "discourse/lib/get-url";
+import { helperContext } from "discourse/lib/helpers";
+import { deepMerge } from "discourse/lib/object";
let allowedSizes = null;
diff --git a/app/assets/javascripts/discourse-common/addon/lib/case-converter.js b/app/assets/javascripts/discourse/app/lib/case-converter.js
similarity index 100%
rename from app/assets/javascripts/discourse-common/addon/lib/case-converter.js
rename to app/assets/javascripts/discourse/app/lib/case-converter.js
diff --git a/app/assets/javascripts/discourse/app/lib/category-hashtags.js b/app/assets/javascripts/discourse/app/lib/category-hashtags.js
index 4d8b6a02ab9..950e0e53b47 100644
--- a/app/assets/javascripts/discourse/app/lib/category-hashtags.js
+++ b/app/assets/javascripts/discourse/app/lib/category-hashtags.js
@@ -1,5 +1,5 @@
+import deprecated from "discourse/lib/deprecated";
import { hashtagTriggerRule } from "discourse/lib/hashtag-autocomplete";
-import deprecated from "discourse-common/lib/deprecated";
export const SEPARATOR = ":";
diff --git a/app/assets/javascripts/discourse/app/lib/category-tag-search.js b/app/assets/javascripts/discourse/app/lib/category-tag-search.js
index 650b28bd652..ca298b98cbf 100644
--- a/app/assets/javascripts/discourse/app/lib/category-tag-search.js
+++ b/app/assets/javascripts/discourse/app/lib/category-tag-search.js
@@ -3,11 +3,11 @@ import { Promise } from "rsvp";
import { ajax } from "discourse/lib/ajax";
import { CANCELLED_STATUS } from "discourse/lib/autocomplete";
import { SEPARATOR } from "discourse/lib/category-hashtags";
+import discourseDebounce from "discourse/lib/debounce";
+import discourseLater from "discourse/lib/later";
import { TAG_HASHTAG_POSTFIX } from "discourse/lib/tag-hashtags";
import Category from "discourse/models/category";
import { isTesting } from "discourse-common/config/environment";
-import discourseDebounce from "discourse-common/lib/debounce";
-import discourseLater from "discourse-common/lib/later";
let cache = {};
let cacheTime;
diff --git a/app/assets/javascripts/discourse/app/lib/click-track.js b/app/assets/javascripts/discourse/app/lib/click-track.js
index 2efa072746f..4ffb4e8c0c1 100644
--- a/app/assets/javascripts/discourse/app/lib/click-track.js
+++ b/app/assets/javascripts/discourse/app/lib/click-track.js
@@ -1,13 +1,13 @@
import jQuery from "jquery";
import { Promise } from "rsvp";
import { ajax } from "discourse/lib/ajax";
+import deprecated from "discourse/lib/deprecated";
+import { getOwnerWithFallback } from "discourse/lib/get-owner";
+import getURL, { samePrefix } from "discourse/lib/get-url";
import { wantsNewWindow } from "discourse/lib/intercept-click";
import DiscourseURL from "discourse/lib/url";
import User from "discourse/models/user";
import { isTesting } from "discourse-common/config/environment";
-import deprecated from "discourse-common/lib/deprecated";
-import { getOwnerWithFallback } from "discourse-common/lib/get-owner";
-import getURL, { samePrefix } from "discourse-common/lib/get-url";
import { i18n } from "discourse-i18n";
export function isValidLink(link) {
diff --git a/app/assets/javascripts/discourse/app/lib/codeblock-buttons.js b/app/assets/javascripts/discourse/app/lib/codeblock-buttons.js
index 06128d66120..e53e9bb1190 100644
--- a/app/assets/javascripts/discourse/app/lib/codeblock-buttons.js
+++ b/app/assets/javascripts/discourse/app/lib/codeblock-buttons.js
@@ -1,12 +1,12 @@
import { guidFor } from "@ember/object/internals";
import { cancel } from "@ember/runloop";
import FullscreenCodeModal from "discourse/components/modal/fullscreen-code";
+import { bind } from "discourse/lib/decorators";
+import { getOwnerWithFallback } from "discourse/lib/get-owner";
+import { iconHTML } from "discourse/lib/icon-library";
+import discourseLater from "discourse/lib/later";
import Mobile from "discourse/lib/mobile";
import { clipboardCopy } from "discourse/lib/utilities";
-import { getOwnerWithFallback } from "discourse-common/lib/get-owner";
-import { iconHTML } from "discourse-common/lib/icon-library";
-import discourseLater from "discourse-common/lib/later";
-import { bind } from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
// Use to attach copy/fullscreen buttons to a block of code, either
diff --git a/app/assets/javascripts/discourse/app/lib/color-scheme-picker.js b/app/assets/javascripts/discourse/app/lib/color-scheme-picker.js
index 559bde7e7f5..fae8f462501 100644
--- a/app/assets/javascripts/discourse/app/lib/color-scheme-picker.js
+++ b/app/assets/javascripts/discourse/app/lib/color-scheme-picker.js
@@ -1,7 +1,7 @@
import { ajax } from "discourse/lib/ajax";
import cookie, { removeCookie } from "discourse/lib/cookie";
+import discourseLater from "discourse/lib/later";
import Session from "discourse/models/session";
-import discourseLater from "discourse-common/lib/later";
import { i18n } from "discourse-i18n";
export function listColorSchemes(site, options = {}) {
diff --git a/app/assets/javascripts/discourse/app/lib/computed.js b/app/assets/javascripts/discourse/app/lib/computed.js
index 1a15278cbef..7892160be5f 100644
--- a/app/assets/javascripts/discourse/app/lib/computed.js
+++ b/app/assets/javascripts/discourse/app/lib/computed.js
@@ -1,7 +1,7 @@
import { computed } from "@ember/object";
import { htmlSafe as htmlSafeTemplateHelper } from "@ember/template";
-import getURL from "discourse-common/lib/get-url";
-import { deepEqual } from "discourse-common/lib/object";
+import getURL from "discourse/lib/get-url";
+import { deepEqual } from "discourse/lib/object";
import { i18n } from "discourse-i18n";
function addonFmt(str, formats) {
diff --git a/app/assets/javascripts/discourse/app/lib/cookie.js b/app/assets/javascripts/discourse/app/lib/cookie.js
index 6dbb7b9e949..e69a1ff5563 100644
--- a/app/assets/javascripts/discourse/app/lib/cookie.js
+++ b/app/assets/javascripts/discourse/app/lib/cookie.js
@@ -1,4 +1,4 @@
-import deprecated from "discourse-common/lib/deprecated";
+import deprecated from "discourse/lib/deprecated";
const pluses = /\+/g;
diff --git a/app/assets/javascripts/discourse/app/lib/d-popover.js b/app/assets/javascripts/discourse/app/lib/d-popover.js
index 5d66d4fb6ad..0818f7346d1 100644
--- a/app/assets/javascripts/discourse/app/lib/d-popover.js
+++ b/app/assets/javascripts/discourse/app/lib/d-popover.js
@@ -1,4 +1,4 @@
-import deprecated from "discourse-common/lib/deprecated";
+import deprecated from "discourse/lib/deprecated";
export function showPopover() {
deprecated("`showPopover` is deprecated. Use tooltip service instead.", {
diff --git a/app/assets/javascripts/discourse/app/lib/dag.js b/app/assets/javascripts/discourse/app/lib/dag.js
index cc682a55bb1..d7d8e653238 100644
--- a/app/assets/javascripts/discourse/app/lib/dag.js
+++ b/app/assets/javascripts/discourse/app/lib/dag.js
@@ -1,6 +1,6 @@
import DAGMap from "dag-map";
-import { makeArray } from "discourse-common/lib/helpers";
-import { bind } from "discourse-common/utils/decorators";
+import { bind } from "discourse/lib/decorators";
+import { makeArray } from "discourse/lib/helpers";
export default class DAG {
/**
diff --git a/app/assets/javascripts/discourse/app/lib/debounce.js b/app/assets/javascripts/discourse/app/lib/debounce.js
index d47a3763996..37171684b15 100644
--- a/app/assets/javascripts/discourse/app/lib/debounce.js
+++ b/app/assets/javascripts/discourse/app/lib/debounce.js
@@ -1,28 +1,28 @@
import { debounce } from "@ember/runloop";
-import deprecated from "discourse-common/lib/deprecated";
+import { isTesting } from "discourse-common/config/environment";
/**
Debounce a Javascript function. This means if it's called many times in a time limit it
should only be executed once (at the end of the limit counted from the last call made).
Original function will be called with the context and arguments from the last call made.
**/
-export default function (func, wait) {
- deprecated(
- "Importing from `discourse/lib/debounce` is deprecated. Import from `discourse-common/lib/debounce` instead.",
- {
- id: "discourse.discourse-debounce",
- since: "3.4.0.beta3-dev",
+
+export default function () {
+ if (isTesting()) {
+ const lastArgument = arguments[arguments.length - 1];
+ const hasImmediateArgument = typeof lastArgument === "boolean";
+
+ let args = [].slice.call(arguments, 0, hasImmediateArgument ? -2 : -1);
+
+ // Replace the time argument with 10ms
+ args.push(10);
+
+ if (hasImmediateArgument) {
+ args.push(lastArgument);
}
- );
- let args;
- const later = () => {
- func.apply(this, args);
- };
-
- return function () {
- args = arguments;
-
- debounce(null, later, wait);
- };
+ return debounce.apply(undefined, args);
+ } else {
+ return debounce(...arguments);
+ }
}
diff --git a/app/assets/javascripts/discourse-common/addon/utils/decorator-alias.js b/app/assets/javascripts/discourse/app/lib/decorator-alias.js
similarity index 90%
rename from app/assets/javascripts/discourse-common/addon/utils/decorator-alias.js
rename to app/assets/javascripts/discourse/app/lib/decorator-alias.js
index e67bc9938a2..36245d89f58 100644
--- a/app/assets/javascripts/discourse-common/addon/utils/decorator-alias.js
+++ b/app/assets/javascripts/discourse/app/lib/decorator-alias.js
@@ -1,4 +1,4 @@
-import extractValue from "discourse-common/utils/extract-value";
+import extractValue from "discourse/lib/extract-value";
export default function decoratorAlias(fn, errorMessage) {
return function (...params) {
diff --git a/app/assets/javascripts/discourse-common/addon/utils/decorators.js b/app/assets/javascripts/discourse/app/lib/decorators.js
similarity index 86%
rename from app/assets/javascripts/discourse-common/addon/utils/decorators.js
rename to app/assets/javascripts/discourse/app/lib/decorators.js
index 1bc54021b1f..57edbfe74db 100644
--- a/app/assets/javascripts/discourse-common/addon/utils/decorators.js
+++ b/app/assets/javascripts/discourse/app/lib/decorators.js
@@ -36,13 +36,13 @@ import {
observes as emberObservesDecorator,
on as emberOnDecorator,
} from "@ember-decorators/object";
-import discourseDebounce from "discourse-common/lib/debounce";
-import deprecated from "discourse-common/lib/deprecated";
-import decoratorAlias from "discourse-common/utils/decorator-alias";
-import extractValue from "discourse-common/utils/extract-value";
-import handleDescriptor from "discourse-common/utils/handle-descriptor";
-import isDescriptor from "discourse-common/utils/is-descriptor";
-import macroAlias from "discourse-common/utils/macro-alias";
+import discourseDebounce from "discourse/lib/debounce";
+import decoratorAlias from "discourse/lib/decorator-alias";
+import deprecated from "discourse/lib/deprecated";
+import extractValue from "discourse/lib/extract-value";
+import handleDescriptor from "discourse/lib/handle-descriptor";
+import isDescriptor from "discourse/lib/is-descriptor";
+import macroAlias from "discourse/lib/macro-alias";
export default function discourseComputedDecorator(...params) {
// determine if user called as @discourseComputed('blah', 'blah') or @discourseComputed
@@ -126,7 +126,7 @@ export function on(...onParams) {
return function (target) {
if (target instanceof CoreObject) {
deprecated(
- `Using 'on' from 'discourse-common/utils/decorators' as a class property decorator is deprecated. You should import it from '@ember-decorators/object' instead.`,
+ `Using 'on' from 'discourse/lib/decorators' as a class property decorator is deprecated. You should import it from '@ember-decorators/object' instead.`,
{ id: "discourse.utils-decorators-on", from: "3.1.0.beta2" }
);
return emberOnDecorator(...onParams)(...arguments);
@@ -143,7 +143,7 @@ export function observes(...observeParams) {
return function (target) {
if (target instanceof CoreObject) {
deprecated(
- `Using 'observes' from 'discourse-common/utils/decorators' as a class property decorator is deprecated. You should import it from '@ember-decorators/object' instead.`,
+ `Using 'observes' from 'discourse/lib/decorators' as a class property decorator is deprecated. You should import it from '@ember-decorators/object' instead.`,
{ id: "discourse.utils-decorators-observes", from: "3.1.0.beta2" }
);
return emberObservesDecorator(...observeParams)(...arguments);
diff --git a/app/assets/javascripts/discourse-common/addon/lib/deprecated.js b/app/assets/javascripts/discourse/app/lib/deprecated.js
similarity index 100%
rename from app/assets/javascripts/discourse-common/addon/lib/deprecated.js
rename to app/assets/javascripts/discourse/app/lib/deprecated.js
diff --git a/app/assets/javascripts/discourse/app/lib/desktop-notifications.js b/app/assets/javascripts/discourse/app/lib/desktop-notifications.js
index 18d95959837..5f8b9dd8360 100644
--- a/app/assets/javascripts/discourse/app/lib/desktop-notifications.js
+++ b/app/assets/javascripts/discourse/app/lib/desktop-notifications.js
@@ -1,10 +1,10 @@
import { Promise } from "rsvp";
import KeyValueStore from "discourse/lib/key-value-store";
+import discourseLater from "discourse/lib/later";
import DiscourseURL from "discourse/lib/url";
import { formatUsername } from "discourse/lib/utilities";
import Site from "discourse/models/site";
import User from "discourse/models/user";
-import discourseLater from "discourse-common/lib/later";
import { i18n } from "discourse-i18n";
let primaryTab = false;
diff --git a/app/assets/javascripts/discourse-common/addon/lib/discourse-template-map.js b/app/assets/javascripts/discourse/app/lib/discourse-template-map.js
similarity index 100%
rename from app/assets/javascripts/discourse-common/addon/lib/discourse-template-map.js
rename to app/assets/javascripts/discourse/app/lib/discourse-template-map.js
diff --git a/app/assets/javascripts/discourse-common/addon/lib/dom-from-string.js b/app/assets/javascripts/discourse/app/lib/dom-from-string.js
similarity index 100%
rename from app/assets/javascripts/discourse-common/addon/lib/dom-from-string.js
rename to app/assets/javascripts/discourse/app/lib/dom-from-string.js
diff --git a/app/assets/javascripts/discourse-common/addon/utils/dom-utils.js b/app/assets/javascripts/discourse/app/lib/dom-utils.js
similarity index 100%
rename from app/assets/javascripts/discourse-common/addon/utils/dom-utils.js
rename to app/assets/javascripts/discourse/app/lib/dom-utils.js
diff --git a/app/assets/javascripts/discourse/app/lib/download-calendar.js b/app/assets/javascripts/discourse/app/lib/download-calendar.js
index c6a01a40390..b2f238b9c0a 100644
--- a/app/assets/javascripts/discourse/app/lib/download-calendar.js
+++ b/app/assets/javascripts/discourse/app/lib/download-calendar.js
@@ -1,7 +1,7 @@
import downloadCalendarModal from "discourse/components/modal/download-calendar";
+import { getOwnerWithFallback } from "discourse/lib/get-owner";
+import getURL from "discourse/lib/get-url";
import User from "discourse/models/user";
-import { getOwnerWithFallback } from "discourse-common/lib/get-owner";
-import getURL from "discourse-common/lib/get-url";
export function downloadCalendar(title, dates, options = {}) {
const currentUser = User.current();
diff --git a/app/assets/javascripts/discourse-common/addon/utils/escape-regexp.js b/app/assets/javascripts/discourse/app/lib/escape-regexp.js
similarity index 100%
rename from app/assets/javascripts/discourse-common/addon/utils/escape-regexp.js
rename to app/assets/javascripts/discourse/app/lib/escape-regexp.js
diff --git a/app/assets/javascripts/discourse-common/addon/lib/escape.js b/app/assets/javascripts/discourse/app/lib/escape.js
similarity index 100%
rename from app/assets/javascripts/discourse-common/addon/lib/escape.js
rename to app/assets/javascripts/discourse/app/lib/escape.js
diff --git a/app/assets/javascripts/discourse/app/lib/export-csv.js b/app/assets/javascripts/discourse/app/lib/export-csv.js
index 9142ee4824d..49e121a2a70 100644
--- a/app/assets/javascripts/discourse/app/lib/export-csv.js
+++ b/app/assets/javascripts/discourse/app/lib/export-csv.js
@@ -1,6 +1,6 @@
import { ajax } from "discourse/lib/ajax";
import { popupAjaxError } from "discourse/lib/ajax-error";
-import { getOwnerWithFallback } from "discourse-common/lib/get-owner";
+import { getOwnerWithFallback } from "discourse/lib/get-owner";
import { i18n } from "discourse-i18n";
function exportEntityByType(type, entity, args) {
diff --git a/app/assets/javascripts/discourse/app/lib/export-result.js b/app/assets/javascripts/discourse/app/lib/export-result.js
index 8fcc688c60a..22bccb851c6 100644
--- a/app/assets/javascripts/discourse/app/lib/export-result.js
+++ b/app/assets/javascripts/discourse/app/lib/export-result.js
@@ -1,4 +1,4 @@
-import { getOwnerWithFallback } from "discourse-common/lib/get-owner";
+import { getOwnerWithFallback } from "discourse/lib/get-owner";
import { i18n } from "discourse-i18n";
export function outputExportResult(result) {
diff --git a/app/assets/javascripts/discourse-common/addon/utils/extract-value.js b/app/assets/javascripts/discourse/app/lib/extract-value.js
similarity index 100%
rename from app/assets/javascripts/discourse-common/addon/utils/extract-value.js
rename to app/assets/javascripts/discourse/app/lib/extract-value.js
diff --git a/app/assets/javascripts/discourse/app/lib/formatter.js b/app/assets/javascripts/discourse/app/lib/formatter.js
index 148e0c7f111..88bb72094db 100644
--- a/app/assets/javascripts/discourse/app/lib/formatter.js
+++ b/app/assets/javascripts/discourse/app/lib/formatter.js
@@ -1,6 +1,6 @@
import jQuery from "jquery";
-import deprecated from "discourse-common/lib/deprecated";
-import { helperContext, makeArray } from "discourse-common/lib/helpers";
+import deprecated from "discourse/lib/deprecated";
+import { helperContext, makeArray } from "discourse/lib/helpers";
import I18n, { i18n } from "discourse-i18n";
export function shortDate(date) {
diff --git a/app/assets/javascripts/discourse-common/addon/lib/get-owner.js b/app/assets/javascripts/discourse/app/lib/get-owner.js
similarity index 91%
rename from app/assets/javascripts/discourse-common/addon/lib/get-owner.js
rename to app/assets/javascripts/discourse/app/lib/get-owner.js
index 9f1768dc720..a434a756b38 100644
--- a/app/assets/javascripts/discourse-common/addon/lib/get-owner.js
+++ b/app/assets/javascripts/discourse/app/lib/get-owner.js
@@ -1,5 +1,5 @@
import { getOwner as emberGetOwner, setOwner } from "@ember/owner";
-import deprecated from "discourse-common/lib/deprecated";
+import deprecated from "discourse/lib/deprecated";
let _default = {};
@@ -23,7 +23,7 @@ export function getOwnerWithFallback(obj) {
*/
export function getOwner(obj) {
deprecated(
- "Importing getOwner from `discourse-common/lib/get-owner` is deprecated. See the alternatives on meta.",
+ "Importing getOwner from `discourse/lib/get-owner` is deprecated. See the alternatives on meta.",
{
since: "3.2",
id: "discourse.get-owner-with-fallback",
diff --git a/app/assets/javascripts/discourse-common/addon/lib/get-url.js b/app/assets/javascripts/discourse/app/lib/get-url.js
similarity index 100%
rename from app/assets/javascripts/discourse-common/addon/lib/get-url.js
rename to app/assets/javascripts/discourse/app/lib/get-url.js
diff --git a/app/assets/javascripts/discourse/app/lib/grant-badge-utils.js b/app/assets/javascripts/discourse/app/lib/grant-badge-utils.js
index 824c8a63ba1..ec8cd8de1f7 100644
--- a/app/assets/javascripts/discourse/app/lib/grant-badge-utils.js
+++ b/app/assets/javascripts/discourse/app/lib/grant-badge-utils.js
@@ -1,4 +1,4 @@
-import { convertIconClass } from "discourse-common/lib/icon-library";
+import { convertIconClass } from "discourse/lib/icon-library";
export function grantableBadges(allBadges, userBadges) {
const granted = userBadges.reduce((map, badge) => {
diff --git a/app/assets/javascripts/discourse-common/addon/utils/handle-descriptor.js b/app/assets/javascripts/discourse/app/lib/handle-descriptor.js
similarity index 100%
rename from app/assets/javascripts/discourse-common/addon/utils/handle-descriptor.js
rename to app/assets/javascripts/discourse/app/lib/handle-descriptor.js
diff --git a/app/assets/javascripts/discourse/app/lib/hashtag-autocomplete.js b/app/assets/javascripts/discourse/app/lib/hashtag-autocomplete.js
index 30d838caa4a..52e06f2e47e 100644
--- a/app/assets/javascripts/discourse/app/lib/hashtag-autocomplete.js
+++ b/app/assets/javascripts/discourse/app/lib/hashtag-autocomplete.js
@@ -2,13 +2,13 @@ import { cancel } from "@ember/runloop";
import { htmlSafe } from "@ember/template";
import { ajax } from "discourse/lib/ajax";
import { CANCELLED_STATUS } from "discourse/lib/autocomplete";
+import discourseDebounce from "discourse/lib/debounce";
import { getHashtagTypeClasses as getHashtagTypeClassesNew } from "discourse/lib/hashtag-type-registry";
+import discourseLater from "discourse/lib/later";
+import { findRawTemplate } from "discourse/lib/raw-templates";
import { emojiUnescape } from "discourse/lib/text";
import { escapeExpression } from "discourse/lib/utilities";
import { INPUT_DELAY, isTesting } from "discourse-common/config/environment";
-import discourseDebounce from "discourse-common/lib/debounce";
-import discourseLater from "discourse-common/lib/later";
-import { findRawTemplate } from "discourse-common/lib/raw-templates";
/**
* Sets up a textarea using the jQuery autocomplete plugin, specifically
diff --git a/app/assets/javascripts/discourse/app/lib/hashtag-decorator.js b/app/assets/javascripts/discourse/app/lib/hashtag-decorator.js
index 13cedc00932..76ebb7e7843 100644
--- a/app/assets/javascripts/discourse/app/lib/hashtag-decorator.js
+++ b/app/assets/javascripts/discourse/app/lib/hashtag-decorator.js
@@ -1,7 +1,7 @@
import { ajax } from "discourse/lib/ajax";
+import domFromString from "discourse/lib/dom-from-string";
import { getHashtagTypeClasses } from "discourse/lib/hashtag-type-registry";
import { emojiUnescape } from "discourse/lib/text";
-import domFromString from "discourse-common/lib/dom-from-string";
const checkedHashtags = new Set();
let seenHashtags = {};
diff --git a/app/assets/javascripts/discourse/app/lib/hashtag-types/tag.js b/app/assets/javascripts/discourse/app/lib/hashtag-types/tag.js
index 894e1e809c3..91df636d48b 100644
--- a/app/assets/javascripts/discourse/app/lib/hashtag-types/tag.js
+++ b/app/assets/javascripts/discourse/app/lib/hashtag-types/tag.js
@@ -1,4 +1,4 @@
-import { iconHTML } from "discourse-common/lib/icon-library";
+import { iconHTML } from "discourse/lib/icon-library";
import HashtagTypeBase from "./base";
export default class TagHashtagType extends HashtagTypeBase {
diff --git a/app/assets/javascripts/discourse-common/addon/lib/helpers.js b/app/assets/javascripts/discourse/app/lib/helpers.js
similarity index 96%
rename from app/assets/javascripts/discourse-common/addon/lib/helpers.js
rename to app/assets/javascripts/discourse/app/lib/helpers.js
index 90098dd026c..cdbcd53111f 100644
--- a/app/assets/javascripts/discourse-common/addon/lib/helpers.js
+++ b/app/assets/javascripts/discourse/app/lib/helpers.js
@@ -2,8 +2,8 @@ import Helper from "@ember/component/helper";
import { get } from "@ember/object";
import { dasherize } from "@ember/string";
import { htmlSafe } from "@ember/template";
-import deprecated from "discourse-common/lib/deprecated";
-import RawHandlebars from "discourse-common/lib/raw-handlebars";
+import deprecated from "discourse/lib/deprecated";
+import RawHandlebars from "discourse/lib/raw-handlebars";
export function makeArray(obj) {
if (obj === null || obj === undefined) {
diff --git a/app/assets/javascripts/discourse/app/lib/highlight-html.js b/app/assets/javascripts/discourse/app/lib/highlight-html.js
index e43ab7373e6..21610eb48b7 100644
--- a/app/assets/javascripts/discourse/app/lib/highlight-html.js
+++ b/app/assets/javascripts/discourse/app/lib/highlight-html.js
@@ -1,4 +1,4 @@
-import { makeArray } from "discourse-common/lib/helpers";
+import { makeArray } from "discourse/lib/helpers";
function highlight(node, pattern, nodeName, className) {
if (
diff --git a/app/assets/javascripts/discourse/app/lib/highlight-syntax.js b/app/assets/javascripts/discourse/app/lib/highlight-syntax.js
index 6188932840c..3e0b9b3d07d 100644
--- a/app/assets/javascripts/discourse/app/lib/highlight-syntax.js
+++ b/app/assets/javascripts/discourse/app/lib/highlight-syntax.js
@@ -1,8 +1,8 @@
import { DEBUG } from "@glimmer/env";
import { waitForPromise } from "@ember/test-waiters";
+import { getURLWithCDN } from "discourse/lib/get-url";
import mergeHTMLPlugin from "discourse/lib/highlight-syntax-merge-html-plugin";
import { isTesting } from "discourse-common/config/environment";
-import { getURLWithCDN } from "discourse-common/lib/get-url";
let _moreLanguages = [];
let _plugins = [];
diff --git a/app/assets/javascripts/discourse-common/addon/lib/icon-library.js b/app/assets/javascripts/discourse/app/lib/icon-library.js
similarity index 99%
rename from app/assets/javascripts/discourse-common/addon/lib/icon-library.js
rename to app/assets/javascripts/discourse/app/lib/icon-library.js
index a4c7dbf4d76..6835dbc6db7 100644
--- a/app/assets/javascripts/discourse-common/addon/lib/icon-library.js
+++ b/app/assets/javascripts/discourse/app/lib/icon-library.js
@@ -1,8 +1,8 @@
import { h } from "virtual-dom";
+import attributeHook from "discourse/lib/attribute-hook";
+import deprecated from "discourse/lib/deprecated";
+import escape from "discourse/lib/escape";
import { isDevelopment } from "discourse-common/config/environment";
-import attributeHook from "discourse-common/lib/attribute-hook";
-import deprecated from "discourse-common/lib/deprecated";
-import escape from "discourse-common/lib/escape";
import { i18n } from "discourse-i18n";
export const SVG_NAMESPACE = "http://www.w3.org/2000/svg";
diff --git a/app/assets/javascripts/discourse-common/addon/utils/is-descriptor.js b/app/assets/javascripts/discourse/app/lib/is-descriptor.js
similarity index 100%
rename from app/assets/javascripts/discourse-common/addon/utils/is-descriptor.js
rename to app/assets/javascripts/discourse/app/lib/is-descriptor.js
diff --git a/app/assets/javascripts/discourse/app/lib/keyboard-shortcuts.js b/app/assets/javascripts/discourse/app/lib/keyboard-shortcuts.js
index f1cb8209e22..bd34d7962ee 100644
--- a/app/assets/javascripts/discourse/app/lib/keyboard-shortcuts.js
+++ b/app/assets/javascripts/discourse/app/lib/keyboard-shortcuts.js
@@ -1,6 +1,8 @@
import { getOwner, setOwner } from "@ember/owner";
import { run, throttle } from "@ember/runloop";
import { ajax } from "discourse/lib/ajax";
+import domUtils from "discourse/lib/dom-utils";
+import discourseLater from "discourse/lib/later";
import { headerOffset } from "discourse/lib/offset-calculator";
import {
nextTopicUrl,
@@ -10,8 +12,6 @@ import DiscourseURL from "discourse/lib/url";
import Composer from "discourse/models/composer";
import { capabilities } from "discourse/services/capabilities";
import { INPUT_DELAY } from "discourse-common/config/environment";
-import discourseLater from "discourse-common/lib/later";
-import domUtils from "discourse-common/utils/dom-utils";
let disabledBindings = [];
export function disableDefaultKeyboardShortcuts(bindings) {
diff --git a/app/assets/javascripts/discourse-common/addon/lib/later.js b/app/assets/javascripts/discourse/app/lib/later.js
similarity index 100%
rename from app/assets/javascripts/discourse-common/addon/lib/later.js
rename to app/assets/javascripts/discourse/app/lib/later.js
diff --git a/app/assets/javascripts/discourse/app/lib/lightbox.js b/app/assets/javascripts/discourse/app/lib/lightbox.js
index 091a7e66a7e..809b8357e99 100644
--- a/app/assets/javascripts/discourse/app/lib/lightbox.js
+++ b/app/assets/javascripts/discourse/app/lib/lightbox.js
@@ -1,5 +1,9 @@
import $ from "jquery";
import { spinnerHTML } from "discourse/helpers/loading-spinner";
+import deprecated from "discourse/lib/deprecated";
+import { getOwnerWithFallback } from "discourse/lib/get-owner";
+import { helperContext } from "discourse/lib/helpers";
+import { renderIcon } from "discourse/lib/icon-library";
import { SELECTORS } from "discourse/lib/lightbox/constants";
import loadScript from "discourse/lib/load-script";
import {
@@ -8,10 +12,6 @@ import {
} from "discourse/lib/utilities";
import User from "discourse/models/user";
import { isTesting } from "discourse-common/config/environment";
-import deprecated from "discourse-common/lib/deprecated";
-import { getOwnerWithFallback } from "discourse-common/lib/get-owner";
-import { helperContext } from "discourse-common/lib/helpers";
-import { renderIcon } from "discourse-common/lib/icon-library";
import { i18n } from "discourse-i18n";
export async function setupLightboxes({ container, selector }) {
diff --git a/app/assets/javascripts/discourse/app/lib/link-mentions.js b/app/assets/javascripts/discourse/app/lib/link-mentions.js
index 9bc4389c8ce..19e48840d9b 100644
--- a/app/assets/javascripts/discourse/app/lib/link-mentions.js
+++ b/app/assets/javascripts/discourse/app/lib/link-mentions.js
@@ -1,7 +1,7 @@
import { ajax } from "discourse/lib/ajax";
+import getURL from "discourse/lib/get-url";
import { userPath } from "discourse/lib/url";
import { formatUsername } from "discourse/lib/utilities";
-import getURL from "discourse-common/lib/get-url";
let checked = {};
let foundUsers = {};
diff --git a/app/assets/javascripts/discourse/app/lib/load-script.js b/app/assets/javascripts/discourse/app/lib/load-script.js
index 1c517704ba9..e728ea60584 100644
--- a/app/assets/javascripts/discourse/app/lib/load-script.js
+++ b/app/assets/javascripts/discourse/app/lib/load-script.js
@@ -2,8 +2,8 @@ import { run } from "@ember/runloop";
import { buildWaiter } from "@ember/test-waiters";
import { Promise } from "rsvp";
import { ajax } from "discourse/lib/ajax";
+import getURL, { getURLWithCDN } from "discourse/lib/get-url";
import { PUBLIC_JS_VERSIONS } from "discourse/lib/public-js-versions";
-import getURL, { getURLWithCDN } from "discourse-common/lib/get-url";
const WAITER = buildWaiter("load-script");
const _loaded = {};
diff --git a/app/assets/javascripts/discourse-common/addon/lib/loader-shim.js b/app/assets/javascripts/discourse/app/lib/loader-shim.js
similarity index 100%
rename from app/assets/javascripts/discourse-common/addon/lib/loader-shim.js
rename to app/assets/javascripts/discourse/app/lib/loader-shim.js
diff --git a/app/assets/javascripts/discourse/app/lib/lock-on.js b/app/assets/javascripts/discourse/app/lib/lock-on.js
index 4269ece56ee..6c77490ad0d 100644
--- a/app/assets/javascripts/discourse/app/lib/lock-on.js
+++ b/app/assets/javascripts/discourse/app/lib/lock-on.js
@@ -1,5 +1,5 @@
+import { bind } from "discourse/lib/decorators";
import { headerOffset } from "discourse/lib/offset-calculator";
-import { bind } from "discourse-common/utils/decorators";
// Dear traveler, you are entering a zone where we are at war with the browser.
// The browser is insisting on positioning scrollTop per the location it was in
diff --git a/app/assets/javascripts/discourse/app/lib/logout.js b/app/assets/javascripts/discourse/app/lib/logout.js
index c77eab6ab70..e443d113811 100644
--- a/app/assets/javascripts/discourse/app/lib/logout.js
+++ b/app/assets/javascripts/discourse/app/lib/logout.js
@@ -1,7 +1,7 @@
import { isEmpty } from "@ember/utils";
+import getURL from "discourse/lib/get-url";
+import { helperContext } from "discourse/lib/helpers";
import { isTesting } from "discourse-common/config/environment";
-import getURL from "discourse-common/lib/get-url";
-import { helperContext } from "discourse-common/lib/helpers";
export default function logout({ redirect } = {}) {
if (isTesting()) {
diff --git a/app/assets/javascripts/discourse-common/addon/utils/macro-alias.js b/app/assets/javascripts/discourse/app/lib/macro-alias.js
similarity index 69%
rename from app/assets/javascripts/discourse-common/addon/utils/macro-alias.js
rename to app/assets/javascripts/discourse/app/lib/macro-alias.js
index 1004c13002f..3cb6f1e5db4 100644
--- a/app/assets/javascripts/discourse-common/addon/utils/macro-alias.js
+++ b/app/assets/javascripts/discourse/app/lib/macro-alias.js
@@ -1,5 +1,5 @@
-import deprecated from "discourse-common/lib/deprecated";
-import isDescriptor from "discourse-common/utils/is-descriptor";
+import deprecated from "discourse/lib/deprecated";
+import isDescriptor from "discourse/lib/is-descriptor";
function handleDescriptor(target, property, desc, fn, params = []) {
return {
@@ -18,7 +18,7 @@ export default function macroAlias(fn) {
return handleDescriptor(...params, fn);
} else {
deprecated(
- `Importing ${fn.name} from 'discourse-common/utils/decorators' is deprecated. You should instead import it from '@ember/object/computed' directly.`,
+ `Importing ${fn.name} from 'discourse/lib/decorators' is deprecated. You should instead import it from '@ember/object/computed' directly.`,
{ id: "discourse.utils-decorators-import" }
);
return function (target, property, desc) {
diff --git a/app/assets/javascripts/discourse-common/addon/utils/multi-cache.js b/app/assets/javascripts/discourse/app/lib/multi-cache.js
similarity index 100%
rename from app/assets/javascripts/discourse-common/addon/utils/multi-cache.js
rename to app/assets/javascripts/discourse/app/lib/multi-cache.js
diff --git a/app/assets/javascripts/discourse/app/lib/notification-types/admin-problems.js b/app/assets/javascripts/discourse/app/lib/notification-types/admin-problems.js
index 6159578062a..a0f66ffe0a6 100644
--- a/app/assets/javascripts/discourse/app/lib/notification-types/admin-problems.js
+++ b/app/assets/javascripts/discourse/app/lib/notification-types/admin-problems.js
@@ -1,5 +1,5 @@
+import getURL from "discourse/lib/get-url";
import NotificationTypeBase from "discourse/lib/notification-types/base";
-import getURL from "discourse-common/lib/get-url";
import { i18n } from "discourse-i18n";
export default class extends NotificationTypeBase {
diff --git a/app/assets/javascripts/discourse/app/lib/notification-types/bookmark-reminder.js b/app/assets/javascripts/discourse/app/lib/notification-types/bookmark-reminder.js
index 1a2b3eb89f3..80ee8969f31 100644
--- a/app/assets/javascripts/discourse/app/lib/notification-types/bookmark-reminder.js
+++ b/app/assets/javascripts/discourse/app/lib/notification-types/bookmark-reminder.js
@@ -1,5 +1,5 @@
+import getUrl from "discourse/lib/get-url";
import NotificationTypeBase from "discourse/lib/notification-types/base";
-import getUrl from "discourse-common/lib/get-url";
import { i18n } from "discourse-i18n";
export default class extends NotificationTypeBase {
diff --git a/app/assets/javascripts/discourse/app/lib/notification-types/granted-badge.js b/app/assets/javascripts/discourse/app/lib/notification-types/granted-badge.js
index 937d55e073b..eb1b78f3403 100644
--- a/app/assets/javascripts/discourse/app/lib/notification-types/granted-badge.js
+++ b/app/assets/javascripts/discourse/app/lib/notification-types/granted-badge.js
@@ -1,5 +1,5 @@
+import getURL from "discourse/lib/get-url";
import NotificationTypeBase from "discourse/lib/notification-types/base";
-import getURL from "discourse-common/lib/get-url";
import { i18n } from "discourse-i18n";
export default class extends NotificationTypeBase {
diff --git a/app/assets/javascripts/discourse/app/lib/notification-types/new-features.js b/app/assets/javascripts/discourse/app/lib/notification-types/new-features.js
index 3a7e473ea79..33dd3cfdfaa 100644
--- a/app/assets/javascripts/discourse/app/lib/notification-types/new-features.js
+++ b/app/assets/javascripts/discourse/app/lib/notification-types/new-features.js
@@ -1,5 +1,5 @@
+import getURL from "discourse/lib/get-url";
import NotificationTypeBase from "discourse/lib/notification-types/base";
-import getURL from "discourse-common/lib/get-url";
import { i18n } from "discourse-i18n";
export default class extends NotificationTypeBase {
diff --git a/app/assets/javascripts/discourse-common/addon/lib/object.js b/app/assets/javascripts/discourse/app/lib/object.js
similarity index 100%
rename from app/assets/javascripts/discourse-common/addon/lib/object.js
rename to app/assets/javascripts/discourse/app/lib/object.js
diff --git a/app/assets/javascripts/discourse/app/lib/offset-calculator.js b/app/assets/javascripts/discourse/app/lib/offset-calculator.js
index 19ac2f58c78..a3a51993975 100644
--- a/app/assets/javascripts/discourse/app/lib/offset-calculator.js
+++ b/app/assets/javascripts/discourse/app/lib/offset-calculator.js
@@ -1,4 +1,4 @@
-import deprecated from "discourse-common/lib/deprecated";
+import deprecated from "discourse/lib/deprecated";
export function scrollTopFor(y) {
return y - offsetCalculator();
diff --git a/app/assets/javascripts/discourse/app/lib/page-tracker.js b/app/assets/javascripts/discourse/app/lib/page-tracker.js
index 69db16c5e4f..64cb61a8d26 100644
--- a/app/assets/javascripts/discourse/app/lib/page-tracker.js
+++ b/app/assets/javascripts/discourse/app/lib/page-tracker.js
@@ -1,5 +1,5 @@
import { next } from "@ember/runloop";
-import getURL from "discourse-common/lib/get-url";
+import getURL from "discourse/lib/get-url";
let _started = false;
let cache = {};
let transitionCount = 0;
diff --git a/app/assets/javascripts/discourse/app/lib/plugin-api.gjs b/app/assets/javascripts/discourse/app/lib/plugin-api.gjs
index d14e55cf561..471ec541da2 100644
--- a/app/assets/javascripts/discourse/app/lib/plugin-api.gjs
+++ b/app/assets/javascripts/discourse/app/lib/plugin-api.gjs
@@ -65,13 +65,20 @@ import classPrepend, {
withPrependsRolledBack,
} from "discourse/lib/class-prepend";
import { addPopupMenuOption } from "discourse/lib/composer/custom-popup-menu-options";
+import deprecated from "discourse/lib/deprecated";
import { registerDesktopNotificationHandler } from "discourse/lib/desktop-notifications";
import { downloadCalendar } from "discourse/lib/download-calendar";
+import { getOwnerWithFallback } from "discourse/lib/get-owner";
import { registerHashtagType } from "discourse/lib/hashtag-type-registry";
import {
registerHighlightJSLanguage,
registerHighlightJSPlugin,
} from "discourse/lib/highlight-syntax";
+import {
+ iconNode,
+ registerIconRenderer,
+ replaceIcon,
+} from "discourse/lib/icon-library";
import KeyboardShortcuts, {
disableDefaultKeyboardShortcuts,
} from "discourse/lib/keyboard-shortcuts";
@@ -153,13 +160,6 @@ import {
reopenWidget,
} from "discourse/widgets/widget";
import { isTesting } from "discourse-common/config/environment";
-import deprecated from "discourse-common/lib/deprecated";
-import { getOwnerWithFallback } from "discourse-common/lib/get-owner";
-import {
- iconNode,
- registerIconRenderer,
- replaceIcon,
-} from "discourse-common/lib/icon-library";
import { addImageWrapperButton } from "discourse-markdown-it/features/image-controls";
import { CUSTOM_USER_SEARCH_OPTIONS } from "select-kit/components/user-chooser";
import { modifySelectKit } from "select-kit/mixins/plugin-api";
diff --git a/app/assets/javascripts/discourse/app/lib/plugin-connectors.js b/app/assets/javascripts/discourse/app/lib/plugin-connectors.js
index 0196cf57494..5afeb542b34 100644
--- a/app/assets/javascripts/discourse/app/lib/plugin-connectors.js
+++ b/app/assets/javascripts/discourse/app/lib/plugin-connectors.js
@@ -5,10 +5,8 @@ import {
} from "@glimmer/manager";
import templateOnly from "@ember/component/template-only";
import { isDeprecatedOutletArgument } from "discourse/helpers/deprecated-outlet-argument";
-import deprecated, {
- withSilencedDeprecations,
-} from "discourse-common/lib/deprecated";
-import { buildRawConnectorCache } from "discourse-common/lib/raw-templates";
+import deprecated, { withSilencedDeprecations } from "discourse/lib/deprecated";
+import { buildRawConnectorCache } from "discourse/lib/raw-templates";
let _connectorCache;
let _rawConnectorCache;
diff --git a/app/assets/javascripts/discourse-common/addon/lib/popular-themes.js b/app/assets/javascripts/discourse/app/lib/popular-themes.js
similarity index 100%
rename from app/assets/javascripts/discourse-common/addon/lib/popular-themes.js
rename to app/assets/javascripts/discourse/app/lib/popular-themes.js
diff --git a/app/assets/javascripts/discourse/app/lib/post-action-feedback.js b/app/assets/javascripts/discourse/app/lib/post-action-feedback.js
index 3af27c97506..57babd86cca 100644
--- a/app/assets/javascripts/discourse/app/lib/post-action-feedback.js
+++ b/app/assets/javascripts/discourse/app/lib/post-action-feedback.js
@@ -1,5 +1,5 @@
import { next } from "@ember/runloop";
-import { SVG_NAMESPACE } from "discourse-common/lib/icon-library";
+import { SVG_NAMESPACE } from "discourse/lib/icon-library";
import { i18n } from "discourse-i18n";
const TIMEOUT = 2500;
diff --git a/app/assets/javascripts/discourse/app/lib/posts-with-placeholders.js b/app/assets/javascripts/discourse/app/lib/posts-with-placeholders.js
index 2748e6aa724..0f34d408db8 100644
--- a/app/assets/javascripts/discourse/app/lib/posts-with-placeholders.js
+++ b/app/assets/javascripts/discourse/app/lib/posts-with-placeholders.js
@@ -4,7 +4,7 @@ import {
} from "@ember/-internals/metal";
import EmberArray from "@ember/array";
import EmberObject from "@ember/object";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
export function Placeholder(viewName) {
this.viewName = viewName;
diff --git a/app/assets/javascripts/discourse/app/lib/push-notifications.js b/app/assets/javascripts/discourse/app/lib/push-notifications.js
index 73a0422cd7c..f69b2e4514a 100644
--- a/app/assets/javascripts/discourse/app/lib/push-notifications.js
+++ b/app/assets/javascripts/discourse/app/lib/push-notifications.js
@@ -1,6 +1,6 @@
import { ajax } from "discourse/lib/ajax";
+import { helperContext } from "discourse/lib/helpers";
import KeyValueStore from "discourse/lib/key-value-store";
-import { helperContext } from "discourse-common/lib/helpers";
export const keyValueStore = new KeyValueStore("discourse_push_notifications_");
diff --git a/app/assets/javascripts/discourse/app/lib/quote.js b/app/assets/javascripts/discourse/app/lib/quote.js
index a0e9c2f3902..59af4357bd6 100644
--- a/app/assets/javascripts/discourse/app/lib/quote.js
+++ b/app/assets/javascripts/discourse/app/lib/quote.js
@@ -1,5 +1,5 @@
+import { helperContext } from "discourse/lib/helpers";
import { prioritizeNameFallback } from "discourse/lib/settings";
-import { helperContext } from "discourse-common/lib/helpers";
export const QUOTE_REGEXP =
/\[quote=([^\]]*)\]((?:[\s\S](?!\[quote=[^\]]*\]))*?)\[\/quote\]/im;
diff --git a/app/assets/javascripts/discourse-common/addon/lib/raw-handlebars-helpers.js b/app/assets/javascripts/discourse/app/lib/raw-handlebars-helpers.js
similarity index 100%
rename from app/assets/javascripts/discourse-common/addon/lib/raw-handlebars-helpers.js
rename to app/assets/javascripts/discourse/app/lib/raw-handlebars-helpers.js
diff --git a/app/assets/javascripts/discourse-common/addon/lib/raw-handlebars.js b/app/assets/javascripts/discourse/app/lib/raw-handlebars.js
similarity index 100%
rename from app/assets/javascripts/discourse-common/addon/lib/raw-handlebars.js
rename to app/assets/javascripts/discourse/app/lib/raw-handlebars.js
diff --git a/app/assets/javascripts/discourse-common/addon/lib/raw-templates.js b/app/assets/javascripts/discourse/app/lib/raw-templates.js
similarity index 98%
rename from app/assets/javascripts/discourse-common/addon/lib/raw-templates.js
rename to app/assets/javascripts/discourse/app/lib/raw-templates.js
index 95dff0d60a0..dbc8e5ddeb3 100644
--- a/app/assets/javascripts/discourse-common/addon/lib/raw-templates.js
+++ b/app/assets/javascripts/discourse/app/lib/raw-templates.js
@@ -1,6 +1,6 @@
import require from "require";
+import deprecated from "discourse/lib/deprecated";
import { RAW_TOPIC_LIST_DEPRECATION_OPTIONS } from "discourse/lib/plugin-api";
-import deprecated from "discourse-common/lib/deprecated";
import { getResolverOption } from "discourse-common/resolver";
export const __DISCOURSE_RAW_TEMPLATES = {};
diff --git a/app/assets/javascripts/discourse/app/lib/register-service-worker.js b/app/assets/javascripts/discourse/app/lib/register-service-worker.js
index bac9c2c01f5..a0fe3eb136e 100644
--- a/app/assets/javascripts/discourse/app/lib/register-service-worker.js
+++ b/app/assets/javascripts/discourse/app/lib/register-service-worker.js
@@ -1,4 +1,4 @@
-import getAbsoluteURL, { isAbsoluteURL } from "discourse-common/lib/get-url";
+import getAbsoluteURL, { isAbsoluteURL } from "discourse/lib/get-url";
export function registerServiceWorker(serviceWorkerURL, registerOptions = {}) {
if (window.isSecureContext && "serviceWorker" in navigator) {
diff --git a/app/assets/javascripts/discourse/app/lib/render-tag.js b/app/assets/javascripts/discourse/app/lib/render-tag.js
index 883a188621d..9d6c1b9f763 100644
--- a/app/assets/javascripts/discourse/app/lib/render-tag.js
+++ b/app/assets/javascripts/discourse/app/lib/render-tag.js
@@ -1,8 +1,8 @@
+import escape from "discourse/lib/escape";
+import getURL from "discourse/lib/get-url";
+import { helperContext } from "discourse/lib/helpers";
import { escapeExpression } from "discourse/lib/utilities";
import User from "discourse/models/user";
-import escape from "discourse-common/lib/escape";
-import getURL from "discourse-common/lib/get-url";
-import { helperContext } from "discourse-common/lib/helpers";
let _renderer = defaultRenderTag;
diff --git a/app/assets/javascripts/discourse/app/lib/render-topic-featured-link.js b/app/assets/javascripts/discourse/app/lib/render-topic-featured-link.js
index 1906148aad3..008092d7f27 100644
--- a/app/assets/javascripts/discourse/app/lib/render-topic-featured-link.js
+++ b/app/assets/javascripts/discourse/app/lib/render-topic-featured-link.js
@@ -1,6 +1,6 @@
import { h } from "virtual-dom";
+import { renderIcon } from "discourse/lib/icon-library";
import User from "discourse/models/user";
-import { renderIcon } from "discourse-common/lib/icon-library";
const _decorators = [];
diff --git a/app/assets/javascripts/discourse/app/lib/reports-loader.js b/app/assets/javascripts/discourse/app/lib/reports-loader.js
index 8a6a5091d8a..4076a8d0bed 100644
--- a/app/assets/javascripts/discourse/app/lib/reports-loader.js
+++ b/app/assets/javascripts/discourse/app/lib/reports-loader.js
@@ -1,5 +1,5 @@
import { ajax } from "discourse/lib/ajax";
-import discourseDebounce from "discourse-common/lib/debounce";
+import discourseDebounce from "discourse/lib/debounce";
let _queue = [];
let _processing = 0;
diff --git a/app/assets/javascripts/discourse/app/lib/search.js b/app/assets/javascripts/discourse/app/lib/search.js
index 668b6be88cb..b26794dcae7 100644
--- a/app/assets/javascripts/discourse/app/lib/search.js
+++ b/app/assets/javascripts/discourse/app/lib/search.js
@@ -3,6 +3,9 @@ import { isEmpty } from "@ember/utils";
import { Promise } from "rsvp";
import { ajax } from "discourse/lib/ajax";
import { search as searchCategoryTag } from "discourse/lib/category-tag-search";
+import getURL from "discourse/lib/get-url";
+import { deepMerge } from "discourse/lib/object";
+import { findRawTemplate } from "discourse/lib/raw-templates";
import { emojiUnescape } from "discourse/lib/text";
import { userPath } from "discourse/lib/url";
import userSearch from "discourse/lib/user-search";
@@ -12,9 +15,6 @@ import Post from "discourse/models/post";
import Site from "discourse/models/site";
import Topic from "discourse/models/topic";
import User from "discourse/models/user";
-import getURL from "discourse-common/lib/get-url";
-import { deepMerge } from "discourse-common/lib/object";
-import { findRawTemplate } from "discourse-common/lib/raw-templates";
import { i18n } from "discourse-i18n";
const translateResultsCallbacks = [];
diff --git a/app/assets/javascripts/discourse/app/lib/settings.js b/app/assets/javascripts/discourse/app/lib/settings.js
index 5450941c782..c153e23baf5 100644
--- a/app/assets/javascripts/discourse/app/lib/settings.js
+++ b/app/assets/javascripts/discourse/app/lib/settings.js
@@ -1,4 +1,4 @@
-import { helperContext } from "discourse-common/lib/helpers";
+import { helperContext } from "discourse/lib/helpers";
export function prioritizeNameInUx(name) {
let siteSettings = helperContext().siteSettings;
diff --git a/app/assets/javascripts/discourse/app/lib/show-modal.js b/app/assets/javascripts/discourse/app/lib/show-modal.js
index 02aee7d76e6..ac0d75a7298 100644
--- a/app/assets/javascripts/discourse/app/lib/show-modal.js
+++ b/app/assets/javascripts/discourse/app/lib/show-modal.js
@@ -1,6 +1,6 @@
// Remove when legacy modals are dropped (deprecation: discourse.modal-controllers)
-import { getOwnerWithFallback } from "discourse-common/lib/get-owner";
+import { getOwnerWithFallback } from "discourse/lib/get-owner";
/**
* Render a modal
diff --git a/app/assets/javascripts/discourse/app/lib/sidebar/admin-sidebar.js b/app/assets/javascripts/discourse/app/lib/sidebar/admin-sidebar.js
index ace0771fab7..c39aa410ad4 100644
--- a/app/assets/javascripts/discourse/app/lib/sidebar/admin-sidebar.js
+++ b/app/assets/javascripts/discourse/app/lib/sidebar/admin-sidebar.js
@@ -2,6 +2,8 @@ import { cached } from "@glimmer/tracking";
import { warn } from "@ember/debug";
import { htmlSafe } from "@ember/template";
import { adminRouteValid } from "discourse/lib/admin-utilities";
+import { getOwnerWithFallback } from "discourse/lib/get-owner";
+import getURL from "discourse/lib/get-url";
import PreloadStore from "discourse/lib/preload-store";
import { ADMIN_NAV_MAP } from "discourse/lib/sidebar/admin-nav-map";
import BaseCustomSidebarPanel from "discourse/lib/sidebar/base-custom-sidebar-panel";
@@ -9,8 +11,6 @@ import BaseCustomSidebarSection from "discourse/lib/sidebar/base-custom-sidebar-
import BaseCustomSidebarSectionLink from "discourse/lib/sidebar/base-custom-sidebar-section-link";
import { ADMIN_PANEL } from "discourse/lib/sidebar/panels";
import { escapeExpression } from "discourse/lib/utilities";
-import { getOwnerWithFallback } from "discourse-common/lib/get-owner";
-import getURL from "discourse-common/lib/get-url";
import I18n, { i18n } from "discourse-i18n";
let additionalAdminSidebarSectionLinks = {};
diff --git a/app/assets/javascripts/discourse/app/lib/sidebar/section.js b/app/assets/javascripts/discourse/app/lib/sidebar/section.js
index fe656be9196..87444732c2a 100644
--- a/app/assets/javascripts/discourse/app/lib/sidebar/section.js
+++ b/app/assets/javascripts/discourse/app/lib/sidebar/section.js
@@ -4,9 +4,9 @@ import { service } from "@ember/service";
import { isPresent } from "@ember/utils";
import SidebarSectionForm from "discourse/components/modal/sidebar-section-form";
import { ajax } from "discourse/lib/ajax";
+import { bind } from "discourse/lib/decorators";
import SectionLink from "discourse/lib/sidebar/section-link";
import { unicodeSlugify } from "discourse/lib/utilities";
-import { bind } from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
export default class Section {
diff --git a/app/assets/javascripts/discourse/app/lib/sidebar/user/categories-section/category-section-link.js b/app/assets/javascripts/discourse/app/lib/sidebar/user/categories-section/category-section-link.js
index 311fb362a48..c87ab551a03 100644
--- a/app/assets/javascripts/discourse/app/lib/sidebar/user/categories-section/category-section-link.js
+++ b/app/assets/javascripts/discourse/app/lib/sidebar/user/categories-section/category-section-link.js
@@ -1,7 +1,7 @@
import { tracked } from "@glimmer/tracking";
import { get, set } from "@ember/object";
+import { bind } from "discourse/lib/decorators";
import Category from "discourse/models/category";
-import { bind } from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
const UNREAD_AND_NEW_COUNTABLE = {
diff --git a/app/assets/javascripts/discourse/app/lib/sidebar/user/tags-section/base-tag-section-link.js b/app/assets/javascripts/discourse/app/lib/sidebar/user/tags-section/base-tag-section-link.js
index bd997d117d4..723dc2b36fc 100644
--- a/app/assets/javascripts/discourse/app/lib/sidebar/user/tags-section/base-tag-section-link.js
+++ b/app/assets/javascripts/discourse/app/lib/sidebar/user/tags-section/base-tag-section-link.js
@@ -1,4 +1,4 @@
-import escape from "discourse-common/lib/escape";
+import escape from "discourse/lib/escape";
let customTagSectionLinkPrefixIcons = {};
diff --git a/app/assets/javascripts/discourse/app/lib/sidebar/user/tags-section/tag-section-link.js b/app/assets/javascripts/discourse/app/lib/sidebar/user/tags-section/tag-section-link.js
index d92bfe8633f..3df621500b3 100644
--- a/app/assets/javascripts/discourse/app/lib/sidebar/user/tags-section/tag-section-link.js
+++ b/app/assets/javascripts/discourse/app/lib/sidebar/user/tags-section/tag-section-link.js
@@ -1,6 +1,6 @@
import { tracked } from "@glimmer/tracking";
+import { bind } from "discourse/lib/decorators";
import BaseTagSectionLink from "discourse/lib/sidebar/user/tags-section/base-tag-section-link";
-import { bind } from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
export default class TagSectionLink extends BaseTagSectionLink {
diff --git a/app/assets/javascripts/discourse/app/lib/site-setting-filter.js b/app/assets/javascripts/discourse/app/lib/site-setting-filter.js
index e3d3f3fb243..b1a9d3fe3b8 100644
--- a/app/assets/javascripts/discourse/app/lib/site-setting-filter.js
+++ b/app/assets/javascripts/discourse/app/lib/site-setting-filter.js
@@ -1,4 +1,4 @@
-import { bind } from "discourse-common/utils/decorators";
+import { bind } from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
export default class SiteSettingFilter {
diff --git a/app/assets/javascripts/discourse/app/lib/source-identifier.js b/app/assets/javascripts/discourse/app/lib/source-identifier.js
index d4390140bfa..9b365b1d859 100644
--- a/app/assets/javascripts/discourse/app/lib/source-identifier.js
+++ b/app/assets/javascripts/discourse/app/lib/source-identifier.js
@@ -1,6 +1,6 @@
import { DEBUG } from "@glimmer/env";
+import getURL from "discourse/lib/get-url";
import PreloadStore from "discourse/lib/preload-store";
-import getURL from "discourse-common/lib/get-url";
const BROWSER_EXTENSION_PROTOCOLS = [
"moz-extension://",
diff --git a/app/assets/javascripts/discourse-common/addon/lib/suffix-trie.js b/app/assets/javascripts/discourse/app/lib/suffix-trie.js
similarity index 100%
rename from app/assets/javascripts/discourse-common/addon/lib/suffix-trie.js
rename to app/assets/javascripts/discourse/app/lib/suffix-trie.js
diff --git a/app/assets/javascripts/discourse/app/lib/swipe-events.js b/app/assets/javascripts/discourse/app/lib/swipe-events.js
index 5b6515855aa..13f7bbe1b5f 100644
--- a/app/assets/javascripts/discourse/app/lib/swipe-events.js
+++ b/app/assets/javascripts/discourse/app/lib/swipe-events.js
@@ -1,5 +1,5 @@
+import { bind } from "discourse/lib/decorators";
import { isTesting } from "discourse-common/config/environment";
-import { bind } from "discourse-common/utils/decorators";
// common max animation time in ms for swipe events for swipe end
// prefers reduced motion and tests return 0
diff --git a/app/assets/javascripts/discourse/app/lib/text.js b/app/assets/javascripts/discourse/app/lib/text.js
index 56cfc70b897..9729fae7d9b 100644
--- a/app/assets/javascripts/discourse/app/lib/text.js
+++ b/app/assets/javascripts/discourse/app/lib/text.js
@@ -1,9 +1,9 @@
import AllowLister from "pretty-text/allow-lister";
import { buildEmojiUrl, performEmojiUnescape } from "pretty-text/emoji";
import { sanitize as textSanitize } from "pretty-text/sanitizer";
-import deprecated from "discourse-common/lib/deprecated";
-import { getURLWithCDN } from "discourse-common/lib/get-url";
-import { helperContext } from "discourse-common/lib/helpers";
+import deprecated from "discourse/lib/deprecated";
+import { getURLWithCDN } from "discourse/lib/get-url";
+import { helperContext } from "discourse/lib/helpers";
import { i18n } from "discourse-i18n";
async function withEngine(name, ...args) {
diff --git a/app/assets/javascripts/discourse/app/lib/textarea-text-manipulation.js b/app/assets/javascripts/discourse/app/lib/textarea-text-manipulation.js
index 80e40737563..d7d06b70924 100644
--- a/app/assets/javascripts/discourse/app/lib/textarea-text-manipulation.js
+++ b/app/assets/javascripts/discourse/app/lib/textarea-text-manipulation.js
@@ -3,6 +3,8 @@ import { next, schedule } from "@ember/runloop";
import { service } from "@ember/service";
import { isEmpty } from "@ember/utils";
import $ from "jquery";
+import { bind } from "discourse/lib/decorators";
+import escapeRegExp from "discourse/lib/escape-regexp";
import putCursorAtEnd from "discourse/lib/put-cursor-at-end";
import { generateLinkifyFunction } from "discourse/lib/text";
import { siteDir } from "discourse/lib/text-direction";
@@ -15,8 +17,6 @@ import {
setCaretPosition,
} from "discourse/lib/utilities";
import { isTesting } from "discourse-common/config/environment";
-import { bind } from "discourse-common/utils/decorators";
-import escapeRegExp from "discourse-common/utils/escape-regexp";
import { i18n } from "discourse-i18n";
const INDENT_DIRECTION_LEFT = "left";
diff --git a/app/assets/javascripts/discourse/app/lib/theme-selector.js b/app/assets/javascripts/discourse/app/lib/theme-selector.js
index 60b52c73b65..9d9aae21547 100644
--- a/app/assets/javascripts/discourse/app/lib/theme-selector.js
+++ b/app/assets/javascripts/discourse/app/lib/theme-selector.js
@@ -1,5 +1,5 @@
import cookie, { removeCookie } from "discourse/lib/cookie";
-import deprecated from "discourse-common/lib/deprecated";
+import deprecated from "discourse/lib/deprecated";
import { i18n } from "discourse-i18n";
const keySelector = "meta[name=discourse_theme_id]";
diff --git a/app/assets/javascripts/discourse/app/lib/theme-settings-store.js b/app/assets/javascripts/discourse/app/lib/theme-settings-store.js
index 940a88cf4c2..5d5e37da440 100644
--- a/app/assets/javascripts/discourse/app/lib/theme-settings-store.js
+++ b/app/assets/javascripts/discourse/app/lib/theme-settings-store.js
@@ -1,5 +1,5 @@
import { get } from "@ember/object";
-import { cloneJSON } from "discourse-common/lib/object";
+import { cloneJSON } from "discourse/lib/object";
const originalSettings = {};
const settings = {};
diff --git a/app/assets/javascripts/discourse/app/lib/transform-post.js b/app/assets/javascripts/discourse/app/lib/transform-post.js
index fc75259c34e..9fb135d7b6e 100644
--- a/app/assets/javascripts/discourse/app/lib/transform-post.js
+++ b/app/assets/javascripts/discourse/app/lib/transform-post.js
@@ -1,7 +1,7 @@
import { isEmpty } from "@ember/utils";
+import getURL from "discourse/lib/get-url";
import { userPath } from "discourse/lib/url";
import Badge from "discourse/models/badge";
-import getURL from "discourse-common/lib/get-url";
import { i18n } from "discourse-i18n";
const _additionalAttributes = new Set();
diff --git a/app/assets/javascripts/discourse/app/lib/uploads.js b/app/assets/javascripts/discourse/app/lib/uploads.js
index 39f08007067..8716f9ad670 100644
--- a/app/assets/javascripts/discourse/app/lib/uploads.js
+++ b/app/assets/javascripts/discourse/app/lib/uploads.js
@@ -1,7 +1,7 @@
+import deprecated from "discourse/lib/deprecated";
+import { getOwnerWithFallback } from "discourse/lib/get-owner";
import { humanizeList } from "discourse/lib/text";
import { isAppleDevice } from "discourse/lib/utilities";
-import deprecated from "discourse-common/lib/deprecated";
-import { getOwnerWithFallback } from "discourse-common/lib/get-owner";
import I18n, { i18n } from "discourse-i18n";
function isGUID(value) {
diff --git a/app/assets/javascripts/discourse/app/lib/uppy-checksum-plugin.js b/app/assets/javascripts/discourse/app/lib/uppy-checksum-plugin.js
index fa3e82532d7..3ddee6d4122 100644
--- a/app/assets/javascripts/discourse/app/lib/uppy-checksum-plugin.js
+++ b/app/assets/javascripts/discourse/app/lib/uppy-checksum-plugin.js
@@ -1,7 +1,7 @@
import { Promise } from "rsvp";
+import { bind } from "discourse/lib/decorators";
import { UploadPreProcessorPlugin } from "discourse/lib/uppy-plugin-base";
import { HUGE_FILE_THRESHOLD_BYTES } from "discourse/mixins/uppy-upload";
-import { bind } from "discourse-common/utils/decorators";
export default class UppyChecksum extends UploadPreProcessorPlugin {
static pluginId = "uppy-checksum";
diff --git a/app/assets/javascripts/discourse/app/lib/uppy-chunked-uploader-plugin.js b/app/assets/javascripts/discourse/app/lib/uppy-chunked-uploader-plugin.js
index 1f8d34169d6..677080c0d48 100644
--- a/app/assets/javascripts/discourse/app/lib/uppy-chunked-uploader-plugin.js
+++ b/app/assets/javascripts/discourse/app/lib/uppy-chunked-uploader-plugin.js
@@ -1,9 +1,9 @@
import { next } from "@ember/runloop";
import EventTracker from "@uppy/utils/lib/EventTracker";
import { Promise } from "rsvp";
+import getURL from "discourse/lib/get-url";
import UppyChunkedUpload from "discourse/lib/uppy-chunked-upload";
import { UploaderPlugin } from "discourse/lib/uppy-plugin-base";
-import getURL from "discourse-common/lib/get-url";
// Limited use uppy uploader function to replace Resumable.js, which
// is only used by the local backup uploader at this point in time,
diff --git a/app/assets/javascripts/discourse/app/lib/uppy-media-optimization-plugin.js b/app/assets/javascripts/discourse/app/lib/uppy-media-optimization-plugin.js
index 39ace359aca..d9577e73a91 100644
--- a/app/assets/javascripts/discourse/app/lib/uppy-media-optimization-plugin.js
+++ b/app/assets/javascripts/discourse/app/lib/uppy-media-optimization-plugin.js
@@ -1,6 +1,6 @@
import { Promise } from "rsvp";
+import { bind } from "discourse/lib/decorators";
import { UploadPreProcessorPlugin } from "discourse/lib/uppy-plugin-base";
-import { bind } from "discourse-common/utils/decorators";
export default class UppyMediaOptimization extends UploadPreProcessorPlugin {
static pluginId = "uppy-media-optimization";
diff --git a/app/assets/javascripts/discourse/app/lib/uppy/composer-upload.js b/app/assets/javascripts/discourse/app/lib/uppy/composer-upload.js
index 9c29194d519..6d66eff3460 100644
--- a/app/assets/javascripts/discourse/app/lib/uppy/composer-upload.js
+++ b/app/assets/javascripts/discourse/app/lib/uppy/composer-upload.js
@@ -9,6 +9,8 @@ import XHRUpload from "@uppy/xhr-upload";
import { cacheShortUploadUrl } from "pretty-text/upload-short-url";
import { updateCsrfToken } from "discourse/lib/ajax";
import ComposerVideoThumbnailUppy from "discourse/lib/composer-video-thumbnail-uppy";
+import { bind } from "discourse/lib/decorators";
+import getURL from "discourse/lib/get-url";
import {
bindFileInputChangeListener,
displayErrorForBulkUpload,
@@ -21,8 +23,6 @@ import UppyS3Multipart from "discourse/lib/uppy/s3-multipart";
import UppyWrapper from "discourse/lib/uppy/wrapper";
import UppyChecksum from "discourse/lib/uppy-checksum-plugin";
import { clipboardHelpers } from "discourse/lib/utilities";
-import getURL from "discourse-common/lib/get-url";
-import { bind } from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
export default class UppyComposerUpload {
diff --git a/app/assets/javascripts/discourse/app/lib/uppy/uppy-upload.js b/app/assets/javascripts/discourse/app/lib/uppy/uppy-upload.js
index 41184881346..6f830aef258 100644
--- a/app/assets/javascripts/discourse/app/lib/uppy/uppy-upload.js
+++ b/app/assets/javascripts/discourse/app/lib/uppy/uppy-upload.js
@@ -10,6 +10,9 @@ import Uppy from "@uppy/core";
import DropTarget from "@uppy/drop-target";
import XHRUpload from "@uppy/xhr-upload";
import { ajax, updateCsrfToken } from "discourse/lib/ajax";
+import { bind } from "discourse/lib/decorators";
+import getUrl from "discourse/lib/get-url";
+import { deepMerge } from "discourse/lib/object";
import {
bindFileInputChangeListener,
displayErrorForUpload,
@@ -19,9 +22,6 @@ import UppyS3Multipart from "discourse/lib/uppy/s3-multipart";
import UppyWrapper from "discourse/lib/uppy/wrapper";
import UppyChecksum from "discourse/lib/uppy-checksum-plugin";
import UppyChunkedUploader from "discourse/lib/uppy-chunked-uploader-plugin";
-import getUrl from "discourse-common/lib/get-url";
-import { deepMerge } from "discourse-common/lib/object";
-import { bind } from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
export const HUGE_FILE_THRESHOLD_BYTES = 104_857_600; // 100MB
diff --git a/app/assets/javascripts/discourse/app/lib/url.js b/app/assets/javascripts/discourse/app/lib/url.js
index c2dcfe26bbc..7a43b74f506 100644
--- a/app/assets/javascripts/discourse/app/lib/url.js
+++ b/app/assets/javascripts/discourse/app/lib/url.js
@@ -4,13 +4,13 @@ import { setOwner } from "@ember/owner";
import { next, schedule } from "@ember/runloop";
import { isEmpty } from "@ember/utils";
import $ from "jquery";
+import getURL, { withoutPrefix } from "discourse/lib/get-url";
import LockOn from "discourse/lib/lock-on";
import offsetCalculator from "discourse/lib/offset-calculator";
import { defaultHomepage } from "discourse/lib/utilities";
import Category from "discourse/models/category";
import Session from "discourse/models/session";
import { isTesting } from "discourse-common/config/environment";
-import getURL, { withoutPrefix } from "discourse-common/lib/get-url";
const rewrites = [];
export const TOPIC_URL_REGEXP = /\/t\/([^\/]*[^\d\/][^\/]*)\/(\d+)\/?(\d+)?/;
diff --git a/app/assets/javascripts/discourse/app/lib/user-menu/notification-item.js b/app/assets/javascripts/discourse/app/lib/user-menu/notification-item.js
index 48eaa03520f..9f3dad6c750 100644
--- a/app/assets/javascripts/discourse/app/lib/user-menu/notification-item.js
+++ b/app/assets/javascripts/discourse/app/lib/user-menu/notification-item.js
@@ -1,8 +1,8 @@
import { setTransientHeader } from "discourse/lib/ajax";
import cookie from "discourse/lib/cookie";
+import getURL from "discourse/lib/get-url";
import { getRenderDirector } from "discourse/lib/notification-types-manager";
import UserMenuBaseItem from "discourse/lib/user-menu/base-item";
-import getURL from "discourse-common/lib/get-url";
export default class UserMenuNotificationItem extends UserMenuBaseItem {
constructor({
diff --git a/app/assets/javascripts/discourse/app/lib/user-menu/reviewable-item.js b/app/assets/javascripts/discourse/app/lib/user-menu/reviewable-item.js
index 6226dc1d84a..2e7ae214d3e 100644
--- a/app/assets/javascripts/discourse/app/lib/user-menu/reviewable-item.js
+++ b/app/assets/javascripts/discourse/app/lib/user-menu/reviewable-item.js
@@ -1,6 +1,6 @@
+import getURL from "discourse/lib/get-url";
import { getRenderDirector } from "discourse/lib/reviewable-types-manager";
import UserMenuBaseItem from "discourse/lib/user-menu/base-item";
-import getURL from "discourse-common/lib/get-url";
export default class UserMenuReviewableItem extends UserMenuBaseItem {
constructor({ reviewable, currentUser, siteSettings, site }) {
diff --git a/app/assets/javascripts/discourse/app/lib/user-search.js b/app/assets/javascripts/discourse/app/lib/user-search.js
index e30cc182caf..ac81886f71b 100644
--- a/app/assets/javascripts/discourse/app/lib/user-search.js
+++ b/app/assets/javascripts/discourse/app/lib/user-search.js
@@ -2,12 +2,12 @@ import { cancel } from "@ember/runloop";
import { Promise } from "rsvp";
import { ajax } from "discourse/lib/ajax";
import { CANCELLED_STATUS } from "discourse/lib/autocomplete";
+import { camelCaseToSnakeCase } from "discourse/lib/case-converter";
+import discourseDebounce from "discourse/lib/debounce";
+import discourseLater from "discourse/lib/later";
import { userPath } from "discourse/lib/url";
import { emailValid } from "discourse/lib/utilities";
import { isTesting } from "discourse-common/config/environment";
-import { camelCaseToSnakeCase } from "discourse-common/lib/case-converter";
-import discourseDebounce from "discourse-common/lib/debounce";
-import discourseLater from "discourse-common/lib/later";
let cache = {},
cacheKey,
diff --git a/app/assets/javascripts/discourse/app/lib/utilities.js b/app/assets/javascripts/discourse/app/lib/utilities.js
index 57ad015b19c..45d22a15fea 100644
--- a/app/assets/javascripts/discourse/app/lib/utilities.js
+++ b/app/assets/javascripts/discourse/app/lib/utilities.js
@@ -1,12 +1,12 @@
import Handlebars from "handlebars";
import $ from "jquery";
+import * as AvatarUtils from "discourse/lib/avatar-utils";
+import deprecated from "discourse/lib/deprecated";
+import escape from "discourse/lib/escape";
+import getURL from "discourse/lib/get-url";
import { parseAsync } from "discourse/lib/text";
import toMarkdown from "discourse/lib/to-markdown";
import { capabilities } from "discourse/services/capabilities";
-import * as AvatarUtils from "discourse-common/lib/avatar-utils";
-import deprecated from "discourse-common/lib/deprecated";
-import escape from "discourse-common/lib/escape";
-import getURL from "discourse-common/lib/get-url";
import { i18n } from "discourse-i18n";
let _defaultHomepage;
@@ -14,7 +14,7 @@ let _defaultHomepage;
function deprecatedAvatarUtil(name) {
return function () {
deprecated(
- `${name} should be imported from discourse-common/lib/avatar-utils instead of discourse/lib/utilities`,
+ `${name} should be imported from discourse/lib/avatar-utils instead of discourse/lib/utilities`,
{ id: "discourse.avatar-utils" }
);
return AvatarUtils[name](...arguments);
diff --git a/app/assets/javascripts/discourse/app/lib/waving-hand-url.js b/app/assets/javascripts/discourse/app/lib/waving-hand-url.js
index 71f38ca373e..d57089086b7 100644
--- a/app/assets/javascripts/discourse/app/lib/waving-hand-url.js
+++ b/app/assets/javascripts/discourse/app/lib/waving-hand-url.js
@@ -1,6 +1,6 @@
+import getURL from "discourse/lib/get-url";
+import { helperContext } from "discourse/lib/helpers";
import { emojiBasePath } from "discourse/lib/settings";
-import getURL from "discourse-common/lib/get-url";
-import { helperContext } from "discourse-common/lib/helpers";
export function wavingHandURL() {
const emojiSet = helperContext().siteSettings.emoji_set;
diff --git a/app/assets/javascripts/discourse/app/loader-shims.js b/app/assets/javascripts/discourse/app/loader-shims.js
index 4e56b60a5e4..29657c48d18 100644
--- a/app/assets/javascripts/discourse/app/loader-shims.js
+++ b/app/assets/javascripts/discourse/app/loader-shims.js
@@ -1,5 +1,5 @@
import { importSync } from "@embroider/macros";
-import loaderShim from "discourse-common/lib/loader-shim";
+import loaderShim from "discourse/lib/loader-shim";
// AMD shims for the app bundle, see the comment in loader-shim.js
// These effectively become public APIs for plugins, so add/remove them carefully
diff --git a/app/assets/javascripts/discourse/app/mapping-router.js b/app/assets/javascripts/discourse/app/mapping-router.js
index 29874776f04..fcd1e39b480 100644
--- a/app/assets/javascripts/discourse/app/mapping-router.js
+++ b/app/assets/javascripts/discourse/app/mapping-router.js
@@ -1,7 +1,7 @@
import EmbroiderRouter from "@embroider/router";
+import getURL from "discourse/lib/get-url";
import Site from "discourse/models/site";
import { isTesting } from "discourse-common/config/environment";
-import getURL from "discourse-common/lib/get-url";
import applyRouterHomepageOverrides from "./lib/homepage-router-overrides";
class BareRouter extends EmbroiderRouter {
diff --git a/app/assets/javascripts/discourse/app/mixins/name-validation.js b/app/assets/javascripts/discourse/app/mixins/name-validation.js
index 834fd1458bb..47f1c009f87 100644
--- a/app/assets/javascripts/discourse/app/mixins/name-validation.js
+++ b/app/assets/javascripts/discourse/app/mixins/name-validation.js
@@ -1,7 +1,7 @@
import EmberObject, { computed } from "@ember/object";
import Mixin from "@ember/object/mixin";
import { isEmpty } from "@ember/utils";
-import deprecated from "discourse-common/lib/deprecated";
+import deprecated from "discourse/lib/deprecated";
import { i18n } from "discourse-i18n";
export default Mixin.create({
diff --git a/app/assets/javascripts/discourse/app/mixins/singleton.js b/app/assets/javascripts/discourse/app/mixins/singleton.js
index a8baf6067ee..548fee6d9a5 100644
--- a/app/assets/javascripts/discourse/app/mixins/singleton.js
+++ b/app/assets/javascripts/discourse/app/mixins/singleton.js
@@ -46,7 +46,7 @@
```
**/
import Mixin from "@ember/object/mixin";
-import deprecated from "discourse-common/lib/deprecated";
+import deprecated from "discourse/lib/deprecated";
const Singleton = Mixin.create({
init() {
diff --git a/app/assets/javascripts/discourse/app/mixins/uppy-upload.js b/app/assets/javascripts/discourse/app/mixins/uppy-upload.js
index 0a7897af35d..ca874b2a941 100644
--- a/app/assets/javascripts/discourse/app/mixins/uppy-upload.js
+++ b/app/assets/javascripts/discourse/app/mixins/uppy-upload.js
@@ -2,9 +2,9 @@ import { alias, or } from "@ember/object/computed";
import { readOnly } from "@ember/object/lib/computed/computed_macros";
import Mixin from "@ember/object/mixin";
import { getOwner } from "@ember/owner";
+import deprecated from "discourse/lib/deprecated";
+import { deepMerge } from "discourse/lib/object";
import UppyUpload from "discourse/lib/uppy/uppy-upload";
-import deprecated from "discourse-common/lib/deprecated";
-import { deepMerge } from "discourse-common/lib/object";
export { HUGE_FILE_THRESHOLD_BYTES } from "discourse/lib/uppy/uppy-upload";
diff --git a/app/assets/javascripts/discourse/app/mixins/username-validation.js b/app/assets/javascripts/discourse/app/mixins/username-validation.js
index f5d3f68f5d0..ed2a87e44be 100644
--- a/app/assets/javascripts/discourse/app/mixins/username-validation.js
+++ b/app/assets/javascripts/discourse/app/mixins/username-validation.js
@@ -2,8 +2,8 @@ import EmberObject, { computed } from "@ember/object";
import Mixin from "@ember/object/mixin";
import { isEmpty } from "@ember/utils";
import { setting } from "discourse/lib/computed";
+import discourseDebounce from "discourse/lib/debounce";
import User from "discourse/models/user";
-import discourseDebounce from "discourse-common/lib/debounce";
import { i18n } from "discourse-i18n";
function failedResult(attrs) {
diff --git a/app/assets/javascripts/discourse/app/models/badge-grouping.js b/app/assets/javascripts/discourse/app/models/badge-grouping.js
index d517fa42264..dfa6f596913 100644
--- a/app/assets/javascripts/discourse/app/models/badge-grouping.js
+++ b/app/assets/javascripts/discourse/app/models/badge-grouping.js
@@ -1,5 +1,5 @@
+import discourseComputed from "discourse/lib/decorators";
import RestModel from "discourse/models/rest";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
export default class BadgeGrouping extends RestModel {
diff --git a/app/assets/javascripts/discourse/app/models/badge.js b/app/assets/javascripts/discourse/app/models/badge.js
index bf0f0afb5a7..09c5c827562 100644
--- a/app/assets/javascripts/discourse/app/models/badge.js
+++ b/app/assets/javascripts/discourse/app/models/badge.js
@@ -2,10 +2,10 @@ import EmberObject from "@ember/object";
import { alias, none } from "@ember/object/computed";
import { Promise } from "rsvp";
import { ajax } from "discourse/lib/ajax";
+import discourseComputed from "discourse/lib/decorators";
+import getURL from "discourse/lib/get-url";
import BadgeGrouping from "discourse/models/badge-grouping";
import RestModel from "discourse/models/rest";
-import getURL from "discourse-common/lib/get-url";
-import discourseComputed from "discourse-common/utils/decorators";
export default class Badge extends RestModel {
static createFromJson(json) {
diff --git a/app/assets/javascripts/discourse/app/models/bookmark.js b/app/assets/javascripts/discourse/app/models/bookmark.js
index e5c8f7dad70..192e0dc1b52 100644
--- a/app/assets/javascripts/discourse/app/models/bookmark.js
+++ b/app/assets/javascripts/discourse/app/models/bookmark.js
@@ -5,13 +5,13 @@ import { isEmpty } from "@ember/utils";
import { Promise } from "rsvp";
import { ajax } from "discourse/lib/ajax";
import { formattedReminderTime } from "discourse/lib/bookmark";
+import discourseComputed from "discourse/lib/decorators";
import { longDate } from "discourse/lib/formatter";
+import getURL from "discourse/lib/get-url";
import { applyModelTransformations } from "discourse/lib/model-transformers";
import RestModel from "discourse/models/rest";
import Topic from "discourse/models/topic";
import User from "discourse/models/user";
-import getURL from "discourse-common/lib/get-url";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
import Category from "./category";
diff --git a/app/assets/javascripts/discourse/app/models/category-list.js b/app/assets/javascripts/discourse/app/models/category-list.js
index 62132ff7338..53efefc38c5 100644
--- a/app/assets/javascripts/discourse/app/models/category-list.js
+++ b/app/assets/javascripts/discourse/app/models/category-list.js
@@ -1,11 +1,11 @@
import ArrayProxy from "@ember/array/proxy";
import { ajax } from "discourse/lib/ajax";
+import { bind } from "discourse/lib/decorators";
+import deprecated from "discourse/lib/deprecated";
import { number } from "discourse/lib/formatter";
import PreloadStore from "discourse/lib/preload-store";
import Site from "discourse/models/site";
import Topic from "discourse/models/topic";
-import deprecated from "discourse-common/lib/deprecated";
-import { bind } from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
export default class CategoryList extends ArrayProxy {
diff --git a/app/assets/javascripts/discourse/app/models/category.js b/app/assets/javascripts/discourse/app/models/category.js
index 73014fa9759..ae83ed5f9d8 100644
--- a/app/assets/javascripts/discourse/app/models/category.js
+++ b/app/assets/javascripts/discourse/app/models/category.js
@@ -2,16 +2,16 @@ import { warn } from "@ember/debug";
import { computed, get } from "@ember/object";
import { service } from "@ember/service";
import { ajax } from "discourse/lib/ajax";
+import discourseComputed from "discourse/lib/decorators";
+import { getOwnerWithFallback } from "discourse/lib/get-owner";
+import getURL from "discourse/lib/get-url";
+import { MultiCache } from "discourse/lib/multi-cache";
import { NotificationLevels } from "discourse/lib/notification-levels";
import { applyValueTransformer } from "discourse/lib/transformer";
import PermissionType from "discourse/models/permission-type";
import RestModel from "discourse/models/rest";
import Site from "discourse/models/site";
import Topic from "discourse/models/topic";
-import { getOwnerWithFallback } from "discourse-common/lib/get-owner";
-import getURL from "discourse-common/lib/get-url";
-import discourseComputed from "discourse-common/utils/decorators";
-import { MultiCache } from "discourse-common/utils/multi-cache";
const STAFF_GROUP_NAME = "staff";
const CATEGORY_ASYNC_SEARCH_CACHE = {};
diff --git a/app/assets/javascripts/discourse/app/models/composer.js b/app/assets/javascripts/discourse/app/models/composer.js
index 2808bf508bc..db466d72a91 100644
--- a/app/assets/javascripts/discourse/app/models/composer.js
+++ b/app/assets/javascripts/discourse/app/models/composer.js
@@ -8,6 +8,9 @@ import { isEmpty } from "@ember/utils";
import { observes, on } from "@ember-decorators/object";
import { Promise } from "rsvp";
import { extractError, throwAjaxError } from "discourse/lib/ajax-error";
+import { tinyAvatar } from "discourse/lib/avatar-utils";
+import discourseComputed from "discourse/lib/decorators";
+import deprecated from "discourse/lib/deprecated";
import { QUOTE_REGEXP } from "discourse/lib/quote";
import { prioritizeNameFallback } from "discourse/lib/settings";
import { emailValid, escapeExpression } from "discourse/lib/utilities";
@@ -17,9 +20,6 @@ import RestModel from "discourse/models/rest";
import Site from "discourse/models/site";
import Topic from "discourse/models/topic";
import User from "discourse/models/user";
-import { tinyAvatar } from "discourse-common/lib/avatar-utils";
-import deprecated from "discourse-common/lib/deprecated";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
let _customizations = [];
diff --git a/app/assets/javascripts/discourse/app/models/group-history.js b/app/assets/javascripts/discourse/app/models/group-history.js
index 5b8615bdb37..9d05f66f8e6 100644
--- a/app/assets/javascripts/discourse/app/models/group-history.js
+++ b/app/assets/javascripts/discourse/app/models/group-history.js
@@ -1,5 +1,5 @@
+import discourseComputed from "discourse/lib/decorators";
import RestModel from "discourse/models/rest";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
export default class GroupHistory extends RestModel {
diff --git a/app/assets/javascripts/discourse/app/models/group.js b/app/assets/javascripts/discourse/app/models/group.js
index b8b36e11ec8..98e1fee4bd2 100644
--- a/app/assets/javascripts/discourse/app/models/group.js
+++ b/app/assets/javascripts/discourse/app/models/group.js
@@ -5,13 +5,13 @@ import { isEmpty } from "@ember/utils";
import { observes } from "@ember-decorators/object";
import { Promise } from "rsvp";
import { ajax } from "discourse/lib/ajax";
+import discourseComputed from "discourse/lib/decorators";
import Category from "discourse/models/category";
import GroupHistory from "discourse/models/group-history";
import RestModel from "discourse/models/rest";
import Site from "discourse/models/site";
import Topic from "discourse/models/topic";
import User from "discourse/models/user";
-import discourseComputed from "discourse-common/utils/decorators";
export default class Group extends RestModel {
static findAll(opts) {
diff --git a/app/assets/javascripts/discourse/app/models/invite.js b/app/assets/javascripts/discourse/app/models/invite.js
index 00ffdf8b3d6..d1d22d7a22f 100644
--- a/app/assets/javascripts/discourse/app/models/invite.js
+++ b/app/assets/javascripts/discourse/app/models/invite.js
@@ -4,10 +4,10 @@ import { isNone } from "@ember/utils";
import { Promise } from "rsvp";
import { ajax } from "discourse/lib/ajax";
import { popupAjaxError } from "discourse/lib/ajax-error";
+import discourseComputed from "discourse/lib/decorators";
import { userPath } from "discourse/lib/url";
import Topic from "discourse/models/topic";
import User from "discourse/models/user";
-import discourseComputed from "discourse-common/utils/decorators";
export default class Invite extends EmberObject {
static create() {
diff --git a/app/assets/javascripts/discourse/app/models/login-method.js b/app/assets/javascripts/discourse/app/models/login-method.js
index 30ffe43b573..f2df2adc2c2 100644
--- a/app/assets/javascripts/discourse/app/models/login-method.js
+++ b/app/assets/javascripts/discourse/app/models/login-method.js
@@ -1,10 +1,10 @@
import EmberObject from "@ember/object";
import { Promise } from "rsvp";
import { updateCsrfToken } from "discourse/lib/ajax";
+import discourseComputed from "discourse/lib/decorators";
+import getURL from "discourse/lib/get-url";
import Session from "discourse/models/session";
import Site from "discourse/models/site";
-import getURL from "discourse-common/lib/get-url";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
export default class LoginMethod extends EmberObject {
diff --git a/app/assets/javascripts/discourse/app/models/nav-item.js b/app/assets/javascripts/discourse/app/models/nav-item.js
index 25f64e39a27..427a02b3ecc 100644
--- a/app/assets/javascripts/discourse/app/models/nav-item.js
+++ b/app/assets/javascripts/discourse/app/models/nav-item.js
@@ -3,6 +3,11 @@ import EmberObject from "@ember/object";
import { dependentKeyCompat } from "@ember/object/compat";
import { reads } from "@ember/object/computed";
import { service } from "@ember/service";
+import discourseComputed from "discourse/lib/decorators";
+import deprecated from "discourse/lib/deprecated";
+import { getOwnerWithFallback } from "discourse/lib/get-owner";
+import getURL from "discourse/lib/get-url";
+import { deepMerge } from "discourse/lib/object";
import { emojiUnescape } from "discourse/lib/text";
import {
hasTrackedFilter,
@@ -11,11 +16,6 @@ import {
import Category from "discourse/models/category";
import Site from "discourse/models/site";
import User from "discourse/models/user";
-import deprecated from "discourse-common/lib/deprecated";
-import { getOwnerWithFallback } from "discourse-common/lib/get-owner";
-import getURL from "discourse-common/lib/get-url";
-import { deepMerge } from "discourse-common/lib/object";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
export default class NavItem extends EmberObject {
diff --git a/app/assets/javascripts/discourse/app/models/pending-post.js b/app/assets/javascripts/discourse/app/models/pending-post.js
index 3df8c2439b0..6ffd20b195b 100644
--- a/app/assets/javascripts/discourse/app/models/pending-post.js
+++ b/app/assets/javascripts/discourse/app/models/pending-post.js
@@ -1,8 +1,8 @@
import { reads } from "@ember/object/computed";
+import discourseComputed from "discourse/lib/decorators";
import { cook } from "discourse/lib/text";
import { userPath } from "discourse/lib/url";
import RestModel from "discourse/models/rest";
-import discourseComputed from "discourse-common/utils/decorators";
import Category from "./category";
export default class PendingPost extends RestModel {
diff --git a/app/assets/javascripts/discourse/app/models/permission-type.js b/app/assets/javascripts/discourse/app/models/permission-type.js
index bae93c05450..4016f8e5042 100644
--- a/app/assets/javascripts/discourse/app/models/permission-type.js
+++ b/app/assets/javascripts/discourse/app/models/permission-type.js
@@ -1,5 +1,5 @@
import EmberObject from "@ember/object";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
export function buildPermissionDescription(id) {
diff --git a/app/assets/javascripts/discourse/app/models/post-stream.js b/app/assets/javascripts/discourse/app/models/post-stream.js
index 0c16712e5f8..9102b878bfd 100644
--- a/app/assets/javascripts/discourse/app/models/post-stream.js
+++ b/app/assets/javascripts/discourse/app/models/post-stream.js
@@ -5,14 +5,14 @@ import { service } from "@ember/service";
import { isEmpty } from "@ember/utils";
import { Promise } from "rsvp";
import { ajax } from "discourse/lib/ajax";
+import discourseComputed from "discourse/lib/decorators";
+import deprecated from "discourse/lib/deprecated";
+import { deepMerge } from "discourse/lib/object";
import PostsWithPlaceholders from "discourse/lib/posts-with-placeholders";
import DiscourseURL from "discourse/lib/url";
import { highlightPost } from "discourse/lib/utilities";
import RestModel from "discourse/models/rest";
import { loadTopicView } from "discourse/models/topic";
-import deprecated from "discourse-common/lib/deprecated";
-import { deepMerge } from "discourse-common/lib/object";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
let _lastEditNotificationClick = null;
diff --git a/app/assets/javascripts/discourse/app/models/post.js b/app/assets/javascripts/discourse/app/models/post.js
index d07a4d00ea4..e8d39cd41e4 100644
--- a/app/assets/javascripts/discourse/app/models/post.js
+++ b/app/assets/javascripts/discourse/app/models/post.js
@@ -8,6 +8,7 @@ import { resolveShareUrl } from "discourse/helpers/share-url";
import { ajax } from "discourse/lib/ajax";
import { popupAjaxError } from "discourse/lib/ajax-error";
import { propertyEqual } from "discourse/lib/computed";
+import discourseComputed from "discourse/lib/decorators";
import { cook } from "discourse/lib/text";
import { fancyTitle } from "discourse/lib/topic-fancy-title";
import { defineTrackedProperty } from "discourse/lib/tracked-tools";
@@ -18,7 +19,6 @@ import Composer from "discourse/models/composer";
import RestModel from "discourse/models/rest";
import Site from "discourse/models/site";
import User from "discourse/models/user";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
const pluginTrackedProperties = new Set();
diff --git a/app/assets/javascripts/discourse/app/models/published-page.js b/app/assets/javascripts/discourse/app/models/published-page.js
index 099dd2cd02f..63a455f6a80 100644
--- a/app/assets/javascripts/discourse/app/models/published-page.js
+++ b/app/assets/javascripts/discourse/app/models/published-page.js
@@ -1,6 +1,6 @@
import { computed } from "@ember/object";
+import { getAbsoluteURL } from "discourse/lib/get-url";
import RestModel from "discourse/models/rest";
-import { getAbsoluteURL } from "discourse-common/lib/get-url";
export default class PublishedPage extends RestModel {
@computed("slug")
diff --git a/app/assets/javascripts/discourse/app/models/rest.js b/app/assets/javascripts/discourse/app/models/rest.js
index 68f7a7132e1..0eeae3c437b 100644
--- a/app/assets/javascripts/discourse/app/models/rest.js
+++ b/app/assets/javascripts/discourse/app/models/rest.js
@@ -4,7 +4,7 @@ import EmberObject from "@ember/object";
import { equal } from "@ember/object/computed";
import { getOwner, setOwner } from "@ember/owner";
import { Promise } from "rsvp";
-import { getOwnerWithFallback } from "discourse-common/lib/get-owner";
+import { getOwnerWithFallback } from "discourse/lib/get-owner";
export default class RestModel extends EmberObject {
// Overwrite and JSON will be passed through here before `create` and `update`
diff --git a/app/assets/javascripts/discourse/app/models/result-set.js b/app/assets/javascripts/discourse/app/models/result-set.js
index a3847eaf27f..94ff3f5a1c3 100644
--- a/app/assets/javascripts/discourse/app/models/result-set.js
+++ b/app/assets/javascripts/discourse/app/models/result-set.js
@@ -1,6 +1,6 @@
import ArrayProxy from "@ember/array/proxy";
import { Promise } from "rsvp";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
export default class ResultSet extends ArrayProxy {
loading = false;
diff --git a/app/assets/javascripts/discourse/app/models/reviewable.js b/app/assets/javascripts/discourse/app/models/reviewable.js
index 163a2f8d82c..f33c609fe01 100644
--- a/app/assets/javascripts/discourse/app/models/reviewable.js
+++ b/app/assets/javascripts/discourse/app/models/reviewable.js
@@ -1,8 +1,8 @@
import { dasherize, underscore } from "@ember/string";
import { Promise } from "rsvp";
import { ajax } from "discourse/lib/ajax";
+import discourseComputed from "discourse/lib/decorators";
import RestModel from "discourse/models/rest";
-import discourseComputed from "discourse-common/utils/decorators";
import I18n, { i18n } from "discourse-i18n";
import Category from "./category";
diff --git a/app/assets/javascripts/discourse/app/models/site.js b/app/assets/javascripts/discourse/app/models/site.js
index 78726e87c6e..0cbe6da42d1 100644
--- a/app/assets/javascripts/discourse/app/models/site.js
+++ b/app/assets/javascripts/discourse/app/models/site.js
@@ -4,7 +4,11 @@ import { alias, sort } from "@ember/object/computed";
import { service } from "@ember/service";
import { htmlSafe } from "@ember/template";
import { isEmpty } from "@ember/utils";
+import discourseComputed from "discourse/lib/decorators";
+import deprecated from "discourse/lib/deprecated";
+import { getOwnerWithFallback } from "discourse/lib/get-owner";
import PreloadStore from "discourse/lib/preload-store";
+import { needsHbrTopicList } from "discourse/lib/raw-templates";
import singleton from "discourse/lib/singleton";
import Archetype from "discourse/models/archetype";
import Category from "discourse/models/category";
@@ -12,10 +16,6 @@ import PostActionType from "discourse/models/post-action-type";
import RestModel from "discourse/models/rest";
import TrustLevel from "discourse/models/trust-level";
import { isRailsTesting, isTesting } from "discourse-common/config/environment";
-import deprecated from "discourse-common/lib/deprecated";
-import { getOwnerWithFallback } from "discourse-common/lib/get-owner";
-import { needsHbrTopicList } from "discourse-common/lib/raw-templates";
-import discourseComputed from "discourse-common/utils/decorators";
@singleton
export default class Site extends RestModel {
diff --git a/app/assets/javascripts/discourse/app/models/store.js b/app/assets/javascripts/discourse/app/models/store.js
index cb928def5eb..b04c1b8bfe0 100644
--- a/app/assets/javascripts/discourse/app/models/store.js
+++ b/app/assets/javascripts/discourse/app/models/store.js
@@ -1,4 +1,4 @@
-import deprecated from "discourse-common/lib/deprecated";
+import deprecated from "discourse/lib/deprecated";
export { default, flushMap } from "discourse/services/store";
deprecated(
diff --git a/app/assets/javascripts/discourse/app/models/tag-group.js b/app/assets/javascripts/discourse/app/models/tag-group.js
index 7fc56f977bb..8b0c8e37c13 100644
--- a/app/assets/javascripts/discourse/app/models/tag-group.js
+++ b/app/assets/javascripts/discourse/app/models/tag-group.js
@@ -1,6 +1,6 @@
+import discourseComputed from "discourse/lib/decorators";
import PermissionType from "discourse/models/permission-type";
import RestModel from "discourse/models/rest";
-import discourseComputed from "discourse-common/utils/decorators";
export default class TagGroup extends RestModel {
@discourseComputed("permissions")
diff --git a/app/assets/javascripts/discourse/app/models/tag.js b/app/assets/javascripts/discourse/app/models/tag.js
index 9d9e72443b6..ac53953152a 100644
--- a/app/assets/javascripts/discourse/app/models/tag.js
+++ b/app/assets/javascripts/discourse/app/models/tag.js
@@ -1,6 +1,6 @@
import { readOnly } from "@ember/object/computed";
+import discourseComputed from "discourse/lib/decorators";
import RestModel from "discourse/models/rest";
-import discourseComputed from "discourse-common/utils/decorators";
export default class Tag extends RestModel {
@readOnly("pm_only") pmOnly;
diff --git a/app/assets/javascripts/discourse/app/models/topic-list.js b/app/assets/javascripts/discourse/app/models/topic-list.js
index 6a1f596b365..49c54366fde 100644
--- a/app/assets/javascripts/discourse/app/models/topic-list.js
+++ b/app/assets/javascripts/discourse/app/models/topic-list.js
@@ -5,11 +5,11 @@ import { service } from "@ember/service";
import { isEmpty } from "@ember/utils";
import { Promise } from "rsvp";
import { ajax } from "discourse/lib/ajax";
+import deprecated from "discourse/lib/deprecated";
+import { getOwnerWithFallback } from "discourse/lib/get-owner";
import RestModel from "discourse/models/rest";
import Site from "discourse/models/site";
import User from "discourse/models/user";
-import deprecated from "discourse-common/lib/deprecated";
-import { getOwnerWithFallback } from "discourse-common/lib/get-owner";
import Topic from "./topic";
function extractByKey(collection, klass) {
diff --git a/app/assets/javascripts/discourse/app/models/topic-tracking-state.js b/app/assets/javascripts/discourse/app/models/topic-tracking-state.js
index b1a9284bf7a..b5f74c61002 100644
--- a/app/assets/javascripts/discourse/app/models/topic-tracking-state.js
+++ b/app/assets/javascripts/discourse/app/models/topic-tracking-state.js
@@ -3,13 +3,13 @@ import EmberObject, { get } from "@ember/object";
import { service } from "@ember/service";
import { isEmpty } from "@ember/utils";
import { TrackedArray, TrackedMap } from "@ember-compat/tracked-built-ins";
+import { bind } from "discourse/lib/decorators";
import { NotificationLevels } from "discourse/lib/notification-levels";
+import { deepEqual, deepMerge } from "discourse/lib/object";
import PreloadStore from "discourse/lib/preload-store";
import DiscourseURL from "discourse/lib/url";
import Category from "discourse/models/category";
import Site from "discourse/models/site";
-import { deepEqual, deepMerge } from "discourse-common/lib/object";
-import { bind } from "discourse-common/utils/decorators";
function isNew(topic) {
return (
diff --git a/app/assets/javascripts/discourse/app/models/topic.js b/app/assets/javascripts/discourse/app/models/topic.js
index 118b54549b2..d8b9d5d1eec 100644
--- a/app/assets/javascripts/discourse/app/models/topic.js
+++ b/app/assets/javascripts/discourse/app/models/topic.js
@@ -9,8 +9,12 @@ import { ajax } from "discourse/lib/ajax";
import { popupAjaxError } from "discourse/lib/ajax-error";
import { fmt, propertyEqual } from "discourse/lib/computed";
import { TOPIC_VISIBILITY_REASONS } from "discourse/lib/constants";
+import discourseComputed from "discourse/lib/decorators";
+import deprecated from "discourse/lib/deprecated";
import { longDate } from "discourse/lib/formatter";
+import getURL from "discourse/lib/get-url";
import { applyModelTransformations } from "discourse/lib/model-transformers";
+import { deepMerge } from "discourse/lib/object";
import PreloadStore from "discourse/lib/preload-store";
import { emojiUnescape } from "discourse/lib/text";
import { fancyTitle } from "discourse/lib/topic-fancy-title";
@@ -21,10 +25,6 @@ import RestModel from "discourse/models/rest";
import Site from "discourse/models/site";
import TopicDetails from "discourse/models/topic-details";
import { flushMap } from "discourse/services/store";
-import deprecated from "discourse-common/lib/deprecated";
-import getURL from "discourse-common/lib/get-url";
-import { deepMerge } from "discourse-common/lib/object";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
import Category from "./category";
diff --git a/app/assets/javascripts/discourse/app/models/user-action-stat.js b/app/assets/javascripts/discourse/app/models/user-action-stat.js
index dbe2efcd3c9..c9e23b4e179 100644
--- a/app/assets/javascripts/discourse/app/models/user-action-stat.js
+++ b/app/assets/javascripts/discourse/app/models/user-action-stat.js
@@ -1,7 +1,7 @@
import { i18n } from "discourse/lib/computed";
+import discourseComputed from "discourse/lib/decorators";
import RestModel from "discourse/models/rest";
import UserAction from "discourse/models/user-action";
-import discourseComputed from "discourse-common/utils/decorators";
export default class UserActionStat extends RestModel {
@i18n("action_type", "user_action_groups.%@") description;
diff --git a/app/assets/javascripts/discourse/app/models/user-action.js b/app/assets/javascripts/discourse/app/models/user-action.js
index ed269a72fd5..b4bc4da8e10 100644
--- a/app/assets/javascripts/discourse/app/models/user-action.js
+++ b/app/assets/javascripts/discourse/app/models/user-action.js
@@ -1,10 +1,10 @@
import { equal, or } from "@ember/object/computed";
import { service } from "@ember/service";
+import discourseComputed from "discourse/lib/decorators";
import { userPath } from "discourse/lib/url";
import { postUrl } from "discourse/lib/utilities";
import RestModel from "discourse/models/rest";
import UserActionGroup from "discourse/models/user-action-group";
-import discourseComputed from "discourse-common/utils/decorators";
import Category from "./category";
const UserActionTypes = {
diff --git a/app/assets/javascripts/discourse/app/models/user-badge.js b/app/assets/javascripts/discourse/app/models/user-badge.js
index 122121a5a0e..8076169a937 100644
--- a/app/assets/javascripts/discourse/app/models/user-badge.js
+++ b/app/assets/javascripts/discourse/app/models/user-badge.js
@@ -2,10 +2,10 @@ import EmberObject from "@ember/object";
import { Promise } from "rsvp";
import { ajax } from "discourse/lib/ajax";
import { popupAjaxError } from "discourse/lib/ajax-error";
+import discourseComputed from "discourse/lib/decorators";
import Badge from "discourse/models/badge";
import Topic from "discourse/models/topic";
import User from "discourse/models/user";
-import discourseComputed from "discourse-common/utils/decorators";
export default class UserBadge extends EmberObject {
static createFromJson(json) {
diff --git a/app/assets/javascripts/discourse/app/models/user-draft.js b/app/assets/javascripts/discourse/app/models/user-draft.js
index dd52878be5c..476f93bc9fc 100644
--- a/app/assets/javascripts/discourse/app/models/user-draft.js
+++ b/app/assets/javascripts/discourse/app/models/user-draft.js
@@ -1,4 +1,5 @@
import { service } from "@ember/service";
+import discourseComputed from "discourse/lib/decorators";
import { userPath } from "discourse/lib/url";
import { postUrl } from "discourse/lib/utilities";
import {
@@ -6,7 +7,6 @@ import {
NEW_TOPIC_KEY,
} from "discourse/models/composer";
import RestModel from "discourse/models/rest";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
export default class UserDraft extends RestModel {
diff --git a/app/assets/javascripts/discourse/app/models/user-drafts-stream.js b/app/assets/javascripts/discourse/app/models/user-drafts-stream.js
index 580e9bcc409..b126f5ef02c 100644
--- a/app/assets/javascripts/discourse/app/models/user-drafts-stream.js
+++ b/app/assets/javascripts/discourse/app/models/user-drafts-stream.js
@@ -1,5 +1,6 @@
import { Promise } from "rsvp";
import { ajax } from "discourse/lib/ajax";
+import discourseComputed from "discourse/lib/decorators";
import { cook, emojiUnescape, excerpt } from "discourse/lib/text";
import { escapeExpression } from "discourse/lib/utilities";
import Category from "discourse/models/category";
@@ -10,7 +11,6 @@ import {
import RestModel from "discourse/models/rest";
import Site from "discourse/models/site";
import UserDraft from "discourse/models/user-draft";
-import discourseComputed from "discourse-common/utils/decorators";
export default class UserDraftsStream extends RestModel {
limit = 30;
diff --git a/app/assets/javascripts/discourse/app/models/user-stream.js b/app/assets/javascripts/discourse/app/models/user-stream.js
index 39833c7d552..6ed62548edb 100644
--- a/app/assets/javascripts/discourse/app/models/user-stream.js
+++ b/app/assets/javascripts/discourse/app/models/user-stream.js
@@ -2,12 +2,12 @@ import { A } from "@ember/array";
import { Promise } from "rsvp";
import { ajax } from "discourse/lib/ajax";
import { url } from "discourse/lib/computed";
+import discourseComputed from "discourse/lib/decorators";
import { emojiUnescape } from "discourse/lib/text";
import { escapeExpression } from "discourse/lib/utilities";
import RestModel from "discourse/models/rest";
import Site from "discourse/models/site";
import UserAction from "discourse/models/user-action";
-import discourseComputed from "discourse-common/utils/decorators";
export default class UserStream extends RestModel {
loaded = false;
diff --git a/app/assets/javascripts/discourse/app/models/user.js b/app/assets/javascripts/discourse/app/models/user.js
index 2924b676089..065adffbc08 100644
--- a/app/assets/javascripts/discourse/app/models/user.js
+++ b/app/assets/javascripts/discourse/app/models/user.js
@@ -14,7 +14,12 @@ import { Promise } from "rsvp";
import { ajax } from "discourse/lib/ajax";
import { url } from "discourse/lib/computed";
import cookie, { removeCookie } from "discourse/lib/cookie";
+import discourseComputed from "discourse/lib/decorators";
+import deprecated from "discourse/lib/deprecated";
import { longDate } from "discourse/lib/formatter";
+import { getOwnerWithFallback } from "discourse/lib/get-owner";
+import getURL, { getURLWithCDN } from "discourse/lib/get-url";
+import discourseLater from "discourse/lib/later";
import { NotificationLevels } from "discourse/lib/notification-levels";
import PreloadStore from "discourse/lib/preload-store";
import singleton from "discourse/lib/singleton";
@@ -34,11 +39,6 @@ import UserDraftsStream from "discourse/models/user-drafts-stream";
import UserPostsStream from "discourse/models/user-posts-stream";
import UserStream from "discourse/models/user-stream";
import { isTesting } from "discourse-common/config/environment";
-import deprecated from "discourse-common/lib/deprecated";
-import { getOwnerWithFallback } from "discourse-common/lib/get-owner";
-import getURL, { getURLWithCDN } from "discourse-common/lib/get-url";
-import discourseLater from "discourse-common/lib/later";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
export const SECOND_FACTOR_METHODS = {
diff --git a/app/assets/javascripts/discourse/app/modifiers/close-on-click-outside.js b/app/assets/javascripts/discourse/app/modifiers/close-on-click-outside.js
index 1b9980cb044..c68ad9dcac5 100644
--- a/app/assets/javascripts/discourse/app/modifiers/close-on-click-outside.js
+++ b/app/assets/javascripts/discourse/app/modifiers/close-on-click-outside.js
@@ -1,6 +1,6 @@
import { registerDestructor } from "@ember/destroyable";
import Modifier from "ember-modifier";
-import { bind } from "discourse-common/utils/decorators";
+import { bind } from "discourse/lib/decorators";
export default class CloseOnClickOutside extends Modifier {
constructor(owner, args) {
diff --git a/app/assets/javascripts/discourse/app/modifiers/draggable.js b/app/assets/javascripts/discourse/app/modifiers/draggable.js
index c0b588682bf..b218565cfdb 100644
--- a/app/assets/javascripts/discourse/app/modifiers/draggable.js
+++ b/app/assets/javascripts/discourse/app/modifiers/draggable.js
@@ -1,6 +1,6 @@
import { registerDestructor } from "@ember/destroyable";
import Modifier from "ember-modifier";
-import { bind } from "discourse-common/utils/decorators";
+import { bind } from "discourse/lib/decorators";
export default class DraggableModifier extends Modifier {
hasStarted = false;
diff --git a/app/assets/javascripts/discourse/app/modifiers/sticky-avatars.js b/app/assets/javascripts/discourse/app/modifiers/sticky-avatars.js
index 371645f2fb3..edb9a7d3eeb 100644
--- a/app/assets/javascripts/discourse/app/modifiers/sticky-avatars.js
+++ b/app/assets/javascripts/discourse/app/modifiers/sticky-avatars.js
@@ -6,8 +6,8 @@ import {
addWidgetCleanCallback,
removeWidgetCleanCallback,
} from "discourse/components/mount-widget";
+import { bind } from "discourse/lib/decorators";
import { headerOffset } from "discourse/lib/offset-calculator";
-import { bind } from "discourse-common/utils/decorators";
const STICKY_CLASS = "sticky-avatar";
const TOPIC_POST_SELECTOR = ".post-stream .topic-post";
diff --git a/app/assets/javascripts/discourse/app/modifiers/swipe.js b/app/assets/javascripts/discourse/app/modifiers/swipe.js
index cbfae487205..e8b0e46f01a 100644
--- a/app/assets/javascripts/discourse/app/modifiers/swipe.js
+++ b/app/assets/javascripts/discourse/app/modifiers/swipe.js
@@ -5,8 +5,8 @@ import {
disableBodyScroll,
enableBodyScroll,
} from "discourse/lib/body-scroll-lock";
+import { bind } from "discourse/lib/decorators";
import SwipeEvents from "discourse/lib/swipe-events";
-import { bind } from "discourse-common/utils/decorators";
/**
* A modifier for handling swipe gestures on an element.
*
diff --git a/app/assets/javascripts/discourse/app/modifiers/trap-tab.js b/app/assets/javascripts/discourse/app/modifiers/trap-tab.js
index 0068d5b1be3..5a65c7b0c9e 100644
--- a/app/assets/javascripts/discourse/app/modifiers/trap-tab.js
+++ b/app/assets/javascripts/discourse/app/modifiers/trap-tab.js
@@ -1,6 +1,6 @@
import { registerDestructor } from "@ember/destroyable";
import Modifier from "ember-modifier";
-import { bind } from "discourse-common/utils/decorators";
+import { bind } from "discourse/lib/decorators";
const FOCUSABLE_ELEMENTS =
"details:not(.is-disabled) summary, [autofocus], a, input, select, textarea, summary";
diff --git a/app/assets/javascripts/discourse/app/raw-views/list/new-list-header-controls.js b/app/assets/javascripts/discourse/app/raw-views/list/new-list-header-controls.js
index fae719ca212..8767cf4b5b5 100644
--- a/app/assets/javascripts/discourse/app/raw-views/list/new-list-header-controls.js
+++ b/app/assets/javascripts/discourse/app/raw-views/list/new-list-header-controls.js
@@ -1,5 +1,5 @@
import EmberObject from "@ember/object";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
export default class NewListHeaderControls extends EmberObject {
diff --git a/app/assets/javascripts/discourse/app/raw-views/list/post-count-or-badges.js b/app/assets/javascripts/discourse/app/raw-views/list/post-count-or-badges.js
index 77113c2e3ff..3c50a8fe1c1 100644
--- a/app/assets/javascripts/discourse/app/raw-views/list/post-count-or-badges.js
+++ b/app/assets/javascripts/discourse/app/raw-views/list/post-count-or-badges.js
@@ -1,6 +1,6 @@
import EmberObject from "@ember/object";
import { and } from "@ember/object/computed";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
export default class PostCountOrBadges extends EmberObject {
diff --git a/app/assets/javascripts/discourse/app/raw-views/list/posts-count-column.js b/app/assets/javascripts/discourse/app/raw-views/list/posts-count-column.js
index 03d8ac95778..be17e6e331a 100644
--- a/app/assets/javascripts/discourse/app/raw-views/list/posts-count-column.js
+++ b/app/assets/javascripts/discourse/app/raw-views/list/posts-count-column.js
@@ -1,5 +1,5 @@
import EmberObject from "@ember/object";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
import I18n from "discourse-i18n";
export default class PostsCountColumn extends EmberObject {
diff --git a/app/assets/javascripts/discourse/app/raw-views/list/visited-line.js b/app/assets/javascripts/discourse/app/raw-views/list/visited-line.js
index b7d70b99feb..7d576bd1dd0 100644
--- a/app/assets/javascripts/discourse/app/raw-views/list/visited-line.js
+++ b/app/assets/javascripts/discourse/app/raw-views/list/visited-line.js
@@ -1,5 +1,5 @@
import EmberObject from "@ember/object";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
export default class VisitedLine extends EmberObject {
@discourseComputed
diff --git a/app/assets/javascripts/discourse/app/raw-views/topic-list-header-column.js b/app/assets/javascripts/discourse/app/raw-views/topic-list-header-column.js
index d990d94c4a3..2a85d61ca9a 100644
--- a/app/assets/javascripts/discourse/app/raw-views/topic-list-header-column.js
+++ b/app/assets/javascripts/discourse/app/raw-views/topic-list-header-column.js
@@ -1,6 +1,6 @@
import EmberObject from "@ember/object";
import { and } from "@ember/object/computed";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
export default class TopicListHeaderColumn extends EmberObject {
diff --git a/app/assets/javascripts/discourse/app/raw-views/topic-status.js b/app/assets/javascripts/discourse/app/raw-views/topic-status.js
index 6406dda5fc0..05e04c7d5b3 100644
--- a/app/assets/javascripts/discourse/app/raw-views/topic-status.js
+++ b/app/assets/javascripts/discourse/app/raw-views/topic-status.js
@@ -1,7 +1,7 @@
import EmberObject from "@ember/object";
+import discourseComputed from "discourse/lib/decorators";
+import deprecated from "discourse/lib/deprecated";
import { RAW_TOPIC_LIST_DEPRECATION_OPTIONS } from "discourse/lib/plugin-api";
-import deprecated from "discourse-common/lib/deprecated";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
export default class TopicStatus extends EmberObject {
diff --git a/app/assets/javascripts/discourse/app/routes/application.js b/app/assets/javascripts/discourse/app/routes/application.js
index 59c5ed1df46..630094bbd78 100644
--- a/app/assets/javascripts/discourse/app/routes/application.js
+++ b/app/assets/javascripts/discourse/app/routes/application.js
@@ -7,6 +7,9 @@ import NotActivatedModal from "discourse/components/modal/not-activated";
import { RouteException } from "discourse/controllers/exception";
import { setting } from "discourse/lib/computed";
import cookie from "discourse/lib/cookie";
+import deprecated from "discourse/lib/deprecated";
+import { getOwnerWithFallback } from "discourse/lib/get-owner";
+import getURL from "discourse/lib/get-url";
import logout from "discourse/lib/logout";
import mobile from "discourse/lib/mobile";
import identifySource, { consolePrefix } from "discourse/lib/source-identifier";
@@ -16,9 +19,6 @@ import Category from "discourse/models/category";
import Composer from "discourse/models/composer";
import { findAll } from "discourse/models/login-method";
import DiscourseRoute from "discourse/routes/discourse";
-import deprecated from "discourse-common/lib/deprecated";
-import { getOwnerWithFallback } from "discourse-common/lib/get-owner";
-import getURL from "discourse-common/lib/get-url";
import { i18n } from "discourse-i18n";
function isStrictlyReadonly(site) {
diff --git a/app/assets/javascripts/discourse/app/routes/build-private-messages-route.js b/app/assets/javascripts/discourse/app/routes/build-private-messages-route.js
index b004bd455f3..102fd853e5f 100644
--- a/app/assets/javascripts/discourse/app/routes/build-private-messages-route.js
+++ b/app/assets/javascripts/discourse/app/routes/build-private-messages-route.js
@@ -1,10 +1,10 @@
import { action } from "@ember/object";
import { htmlSafe } from "@ember/template";
import { findOrResetCachedTopicList } from "discourse/lib/cached-topic-list";
+import getURL from "discourse/lib/get-url";
+import { iconHTML } from "discourse/lib/icon-library";
import UserAction from "discourse/models/user-action";
import UserTopicListRoute from "discourse/routes/user-topic-list";
-import getURL from "discourse-common/lib/get-url";
-import { iconHTML } from "discourse-common/lib/icon-library";
import { i18n } from "discourse-i18n";
export const NEW_FILTER = "new";
diff --git a/app/assets/javascripts/discourse/app/routes/build-topic-route.js b/app/assets/javascripts/discourse/app/routes/build-topic-route.js
index 55194551052..48c0c961c51 100644
--- a/app/assets/javascripts/discourse/app/routes/build-topic-route.js
+++ b/app/assets/javascripts/discourse/app/routes/build-topic-route.js
@@ -3,12 +3,12 @@ import { service } from "@ember/service";
import { isEmpty } from "@ember/utils";
import { queryParams, resetParams } from "discourse/controllers/discovery/list";
import { disableImplicitInjections } from "discourse/lib/implicit-injections";
+import { deepEqual } from "discourse/lib/object";
import { setTopicList } from "discourse/lib/topic-list-tracker";
import { defaultHomepage } from "discourse/lib/utilities";
import Session from "discourse/models/session";
import Site from "discourse/models/site";
import DiscourseRoute from "discourse/routes/discourse";
-import { deepEqual } from "discourse-common/lib/object";
import { i18n } from "discourse-i18n";
// A helper to build a topic route for a filter
diff --git a/app/assets/javascripts/discourse/app/routes/discourse.js b/app/assets/javascripts/discourse/app/routes/discourse.js
index 03029a9230b..b0822393fe1 100644
--- a/app/assets/javascripts/discourse/app/routes/discourse.js
+++ b/app/assets/javascripts/discourse/app/routes/discourse.js
@@ -2,9 +2,9 @@ import { action } from "@ember/object";
import Route from "@ember/routing/route";
import { once } from "@ember/runloop";
import { service } from "@ember/service";
+import deprecated from "discourse/lib/deprecated";
+import { getOwnerWithFallback } from "discourse/lib/get-owner";
import { seenUser } from "discourse/lib/user-presence";
-import deprecated from "discourse-common/lib/deprecated";
-import { getOwnerWithFallback } from "discourse-common/lib/get-owner";
export default class DiscourseRoute extends Route {
@service router;
diff --git a/app/assets/javascripts/discourse/app/routes/invites-show.js b/app/assets/javascripts/discourse/app/routes/invites-show.js
index 5760275832f..8743e8042e0 100644
--- a/app/assets/javascripts/discourse/app/routes/invites-show.js
+++ b/app/assets/javascripts/discourse/app/routes/invites-show.js
@@ -1,8 +1,8 @@
import { service } from "@ember/service";
import { ajax } from "discourse/lib/ajax";
+import { deepMerge } from "discourse/lib/object";
import PreloadStore from "discourse/lib/preload-store";
import DiscourseRoute from "discourse/routes/discourse";
-import { deepMerge } from "discourse-common/lib/object";
import { i18n } from "discourse-i18n";
export default class InvitesShow extends DiscourseRoute {
diff --git a/app/assets/javascripts/discourse/app/routes/password-reset.js b/app/assets/javascripts/discourse/app/routes/password-reset.js
index ee2dcced9ca..fcfb40824fb 100644
--- a/app/assets/javascripts/discourse/app/routes/password-reset.js
+++ b/app/assets/javascripts/discourse/app/routes/password-reset.js
@@ -1,8 +1,8 @@
import { ajax } from "discourse/lib/ajax";
+import { deepMerge } from "discourse/lib/object";
import PreloadStore from "discourse/lib/preload-store";
import { userPath } from "discourse/lib/url";
import DiscourseRoute from "discourse/routes/discourse";
-import { deepMerge } from "discourse-common/lib/object";
import { i18n } from "discourse-i18n";
export default class PasswordReset extends DiscourseRoute {
diff --git a/app/assets/javascripts/discourse/app/routes/review-index.js b/app/assets/javascripts/discourse/app/routes/review-index.js
index c572637e3e2..76633080eb9 100644
--- a/app/assets/javascripts/discourse/app/routes/review-index.js
+++ b/app/assets/javascripts/discourse/app/routes/review-index.js
@@ -1,7 +1,7 @@
import { action } from "@ember/object";
import { isPresent } from "@ember/utils";
+import { bind } from "discourse/lib/decorators";
import DiscourseRoute from "discourse/routes/discourse";
-import { bind } from "discourse-common/utils/decorators";
export default class ReviewIndex extends DiscourseRoute {
model(params) {
diff --git a/app/assets/javascripts/discourse/app/routes/topic.js b/app/assets/javascripts/discourse/app/routes/topic.js
index 228b46fe839..7b7c4458c82 100644
--- a/app/assets/javascripts/discourse/app/routes/topic.js
+++ b/app/assets/javascripts/discourse/app/routes/topic.js
@@ -16,11 +16,11 @@ import PublishPageModal from "discourse/components/modal/publish-page";
import RawEmailModal from "discourse/components/modal/raw-email";
import PostFlag from "discourse/lib/flag-targets/post-flag";
import TopicFlag from "discourse/lib/flag-targets/topic-flag";
+import discourseLater from "discourse/lib/later";
import { setTopicId } from "discourse/lib/topic-list-tracker";
import DiscourseURL from "discourse/lib/url";
import { ID_CONSTRAINT } from "discourse/models/topic";
import DiscourseRoute from "discourse/routes/discourse";
-import discourseLater from "discourse-common/lib/later";
const SCROLL_DELAY = 500;
diff --git a/app/assets/javascripts/discourse/app/routes/user-activity-index.js b/app/assets/javascripts/discourse/app/routes/user-activity-index.js
index 462d5bcefa2..5e1007af6cf 100644
--- a/app/assets/javascripts/discourse/app/routes/user-activity-index.js
+++ b/app/assets/javascripts/discourse/app/routes/user-activity-index.js
@@ -1,7 +1,7 @@
import { htmlSafe } from "@ember/template";
+import getURL from "discourse/lib/get-url";
+import { iconHTML } from "discourse/lib/icon-library";
import UserActivityStreamRoute from "discourse/routes/user-activity-stream";
-import getURL from "discourse-common/lib/get-url";
-import { iconHTML } from "discourse-common/lib/icon-library";
import { i18n } from "discourse-i18n";
export default class UserActivityIndex extends UserActivityStreamRoute {
diff --git a/app/assets/javascripts/discourse/app/routes/user-activity-likes-given.js b/app/assets/javascripts/discourse/app/routes/user-activity-likes-given.js
index 9277cdfff16..934811bfad5 100644
--- a/app/assets/javascripts/discourse/app/routes/user-activity-likes-given.js
+++ b/app/assets/javascripts/discourse/app/routes/user-activity-likes-given.js
@@ -1,7 +1,7 @@
import { htmlSafe } from "@ember/template";
+import { iconHTML } from "discourse/lib/icon-library";
import UserAction from "discourse/models/user-action";
import UserActivityStreamRoute from "discourse/routes/user-activity-stream";
-import { iconHTML } from "discourse-common/lib/icon-library";
import { i18n } from "discourse-i18n";
export default class UserActivityLikesGiven extends UserActivityStreamRoute {
diff --git a/app/assets/javascripts/discourse/app/routes/user-activity-read.js b/app/assets/javascripts/discourse/app/routes/user-activity-read.js
index 359ed9bf813..32d7aa39101 100644
--- a/app/assets/javascripts/discourse/app/routes/user-activity-read.js
+++ b/app/assets/javascripts/discourse/app/routes/user-activity-read.js
@@ -1,9 +1,9 @@
import { action } from "@ember/object";
import { htmlSafe } from "@ember/template";
+import getURL from "discourse/lib/get-url";
+import { iconHTML } from "discourse/lib/icon-library";
import UserAction from "discourse/models/user-action";
import UserTopicListRoute from "discourse/routes/user-topic-list";
-import getURL from "discourse-common/lib/get-url";
-import { iconHTML } from "discourse-common/lib/icon-library";
import { i18n } from "discourse-i18n";
export default class UserActivityRead extends UserTopicListRoute {
diff --git a/app/assets/javascripts/discourse/app/routes/user-activity-replies.js b/app/assets/javascripts/discourse/app/routes/user-activity-replies.js
index 39c571c8cbe..631d46bf9cf 100644
--- a/app/assets/javascripts/discourse/app/routes/user-activity-replies.js
+++ b/app/assets/javascripts/discourse/app/routes/user-activity-replies.js
@@ -1,7 +1,7 @@
import { htmlSafe } from "@ember/template";
+import getURL from "discourse/lib/get-url";
import UserAction from "discourse/models/user-action";
import UserActivityStreamRoute from "discourse/routes/user-activity-stream";
-import getURL from "discourse-common/lib/get-url";
import { i18n } from "discourse-i18n";
export default class UserActivityReplies extends UserActivityStreamRoute {
diff --git a/app/assets/javascripts/discourse/app/routes/user-activity-topics.js b/app/assets/javascripts/discourse/app/routes/user-activity-topics.js
index d8c60de60e0..99c1d00465e 100644
--- a/app/assets/javascripts/discourse/app/routes/user-activity-topics.js
+++ b/app/assets/javascripts/discourse/app/routes/user-activity-topics.js
@@ -1,8 +1,8 @@
import { action } from "@ember/object";
import { htmlSafe } from "@ember/template";
+import getURL from "discourse/lib/get-url";
import UserAction from "discourse/models/user-action";
import UserTopicListRoute from "discourse/routes/user-topic-list";
-import getURL from "discourse-common/lib/get-url";
import { i18n } from "discourse-i18n";
export default class UserActivityTopics extends UserTopicListRoute {
diff --git a/app/assets/javascripts/discourse/app/routes/user.js b/app/assets/javascripts/discourse/app/routes/user.js
index f1e7ebb50e8..fae11f0abb9 100644
--- a/app/assets/javascripts/discourse/app/routes/user.js
+++ b/app/assets/javascripts/discourse/app/routes/user.js
@@ -1,9 +1,9 @@
import { action } from "@ember/object";
import { service } from "@ember/service";
import { RouteException } from "discourse/controllers/exception";
+import { bind } from "discourse/lib/decorators";
import User from "discourse/models/user";
import DiscourseRoute from "discourse/routes/discourse";
-import { bind } from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
export default class UserRoute extends DiscourseRoute {
diff --git a/app/assets/javascripts/discourse/app/services/client-error-handler.js b/app/assets/javascripts/discourse/app/services/client-error-handler.js
index 62ec75eddc9..0a05795ff27 100644
--- a/app/assets/javascripts/discourse/app/services/client-error-handler.js
+++ b/app/assets/javascripts/discourse/app/services/client-error-handler.js
@@ -2,14 +2,14 @@ import { getOwner } from "@ember/owner";
import Service, { service } from "@ember/service";
import $ from "jquery";
import { getAndClearUnhandledThemeErrors } from "discourse/app";
+import { bind } from "discourse/lib/decorators";
+import escape from "discourse/lib/escape";
+import getURL from "discourse/lib/get-url";
import { disableImplicitInjections } from "discourse/lib/implicit-injections";
import identifySource, {
consolePrefix,
getThemeInfo,
} from "discourse/lib/source-identifier";
-import escape from "discourse-common/lib/escape";
-import getURL from "discourse-common/lib/get-url";
-import { bind } from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
const showingErrors = new Set();
diff --git a/app/assets/javascripts/discourse/app/services/composer.js b/app/assets/javascripts/discourse/app/services/composer.js
index 0221ce91c3e..5d51eb3971b 100644
--- a/app/assets/javascripts/discourse/app/services/composer.js
+++ b/app/assets/javascripts/discourse/app/services/composer.js
@@ -16,10 +16,16 @@ import {
durationTextFromSeconds,
} from "discourse/helpers/slow-mode";
import { customPopupMenuOptions } from "discourse/lib/composer/custom-popup-menu-options";
+import discourseDebounce from "discourse/lib/debounce";
+import discourseComputed from "discourse/lib/decorators";
+import deprecated from "discourse/lib/deprecated";
import prepareFormTemplateData, {
getFormTemplateObject,
} from "discourse/lib/form-template-validation";
import { shortDate } from "discourse/lib/formatter";
+import { getOwnerWithFallback } from "discourse/lib/get-owner";
+import getURL from "discourse/lib/get-url";
+import { iconHTML } from "discourse/lib/icon-library";
import { disableImplicitInjections } from "discourse/lib/implicit-injections";
import { wantsNewWindow } from "discourse/lib/intercept-click";
import { buildQuote } from "discourse/lib/quote";
@@ -40,12 +46,6 @@ import Composer, {
} from "discourse/models/composer";
import Draft from "discourse/models/draft";
import { isTesting } from "discourse-common/config/environment";
-import discourseDebounce from "discourse-common/lib/debounce";
-import deprecated from "discourse-common/lib/deprecated";
-import { getOwnerWithFallback } from "discourse-common/lib/get-owner";
-import getURL from "discourse-common/lib/get-url";
-import { iconHTML } from "discourse-common/lib/icon-library";
-import discourseComputed from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
async function loadDraft(store, opts = {}) {
diff --git a/app/assets/javascripts/discourse/app/services/deprecation-warning-handler.js b/app/assets/javascripts/discourse/app/services/deprecation-warning-handler.js
index 4c89693e7ff..71247a2c37b 100644
--- a/app/assets/javascripts/discourse/app/services/deprecation-warning-handler.js
+++ b/app/assets/javascripts/discourse/app/services/deprecation-warning-handler.js
@@ -2,11 +2,11 @@ import { DEBUG } from "@glimmer/env";
import { registerDeprecationHandler } from "@ember/debug";
import Service, { service } from "@ember/service";
import { addGlobalNotice } from "discourse/components/global-notice";
+import DEPRECATION_WORKFLOW from "discourse/deprecation-workflow";
+import { bind } from "discourse/lib/decorators";
+import { registerDeprecationHandler as registerDiscourseDeprecationHandler } from "discourse/lib/deprecated";
import identifySource from "discourse/lib/source-identifier";
import { escapeExpression } from "discourse/lib/utilities";
-import DEPRECATION_WORKFLOW from "discourse-common/deprecation-workflow";
-import { registerDeprecationHandler as registerDiscourseDeprecationHandler } from "discourse-common/lib/deprecated";
-import { bind } from "discourse-common/utils/decorators";
import { i18n } from "discourse-i18n";
// Deprecations matching patterns on this list will trigger warnings for admins.
diff --git a/app/assets/javascripts/discourse/app/services/document-title.js b/app/assets/javascripts/discourse/app/services/document-title.js
index 8b8a96dc977..f5130b95199 100644
--- a/app/assets/javascripts/discourse/app/services/document-title.js
+++ b/app/assets/javascripts/discourse/app/services/document-title.js
@@ -1,7 +1,7 @@
import Service, { service } from "@ember/service";
+import getURL from "discourse/lib/get-url";
import { disableImplicitInjections } from "discourse/lib/implicit-injections";
import updateTabCount from "discourse/lib/update-tab-count";
-import getURL from "discourse-common/lib/get-url";
@disableImplicitInjections
export default class DocumentElement extends Service {
diff --git a/app/assets/javascripts/discourse/app/services/header.js b/app/assets/javascripts/discourse/app/services/header.js
index e2fe39ad381..8f301239c80 100644
--- a/app/assets/javascripts/discourse/app/services/header.js
+++ b/app/assets/javascripts/discourse/app/services/header.js
@@ -3,8 +3,8 @@ import { registerDestructor } from "@ember/destroyable";
import { dependentKeyCompat } from "@ember/object/compat";
import Service, { service } from "@ember/service";
import { TrackedMap } from "@ember-compat/tracked-built-ins";
+import deprecated from "discourse/lib/deprecated";
import { disableImplicitInjections } from "discourse/lib/implicit-injections";
-import deprecated from "discourse-common/lib/deprecated";
import { SCROLLED_UP } from "./scroll-direction";
const VALID_HEADER_BUTTONS_TO_HIDE = ["search", "login", "signup", "menu"];
diff --git a/app/assets/javascripts/discourse/app/services/history-store.js b/app/assets/javascripts/discourse/app/services/history-store.js
index 9a516b037b7..7b054c075ed 100644
--- a/app/assets/javascripts/discourse/app/services/history-store.js
+++ b/app/assets/javascripts/discourse/app/services/history-store.js
@@ -2,9 +2,9 @@ import { DEBUG } from "@glimmer/env";
import { cached } from "@glimmer/tracking";
import Service, { service } from "@ember/service";
import { TrackedMap } from "@ember-compat/tracked-built-ins";
+import { bind } from "discourse/lib/decorators";
import { disableImplicitInjections } from "discourse/lib/implicit-injections";
import { isTesting } from "discourse-common/config/environment";
-import { bind } from "discourse-common/utils/decorators";
const HISTORY_SIZE = 100;
const HISTORIC_KEY = Symbol("historic");
diff --git a/app/assets/javascripts/discourse/app/services/lightbox.js b/app/assets/javascripts/discourse/app/services/lightbox.js
index 8337a02b913..7e0f4d18e82 100644
--- a/app/assets/javascripts/discourse/app/services/lightbox.js
+++ b/app/assets/javascripts/discourse/app/services/lightbox.js
@@ -1,4 +1,5 @@
import Service, { service } from "@ember/service";
+import { bind } from "discourse/lib/decorators";
import { disableImplicitInjections } from "discourse/lib/implicit-injections";
import {
DOCUMENT_ELEMENT_LIGHTBOX_OPEN_CLASS,
@@ -13,7 +14,6 @@ import {
} from "discourse/lib/lightbox/helpers";
import { processHTML } from "discourse/lib/lightbox/process-html";
import { isDocumentRTL } from "discourse/lib/text-direction";
-import { bind } from "discourse-common/utils/decorators";
@disableImplicitInjections
export default class LightboxService extends Service {
diff --git a/app/assets/javascripts/discourse/app/services/loading-slider.js b/app/assets/javascripts/discourse/app/services/loading-slider.js
index be9555456c6..4bdccbb411e 100644
--- a/app/assets/javascripts/discourse/app/services/loading-slider.js
+++ b/app/assets/javascripts/discourse/app/services/loading-slider.js
@@ -2,8 +2,8 @@ import { tracked } from "@glimmer/tracking";
import Evented from "@ember/object/evented";
import { cancel, later, schedule } from "@ember/runloop";
import Service, { service } from "@ember/service";
+import { bind } from "discourse/lib/decorators";
import { disableImplicitInjections } from "discourse/lib/implicit-injections";
-import { bind } from "discourse-common/utils/decorators";
const STORE_LOADING_TIMES = 5;
const DEFAULT_LOADING_TIME = 0.3;
diff --git a/app/assets/javascripts/discourse/app/services/logs-notice.js b/app/assets/javascripts/discourse/app/services/logs-notice.js
index 53b52fabfc2..ed9149f65dc 100644
--- a/app/assets/javascripts/discourse/app/services/logs-notice.js
+++ b/app/assets/javascripts/discourse/app/services/logs-notice.js
@@ -3,9 +3,9 @@ import Service, { service } from "@ember/service";
import { htmlSafe } from "@ember/template";
import { isEmpty } from "@ember/utils";
import { observes } from "@ember-decorators/object";
+import discourseComputed, { bind } from "discourse/lib/decorators";
import { autoUpdatingRelativeAge } from "discourse/lib/formatter";
-import getURL from "discourse-common/lib/get-url";
-import discourseComputed, { bind } from "discourse-common/utils/decorators";
+import getURL from "discourse/lib/get-url";
import I18n from "discourse-i18n";
const LOGS_NOTICE_KEY = "logs-notice-text";
diff --git a/app/assets/javascripts/discourse/app/services/media-optimization-worker.js b/app/assets/javascripts/discourse/app/services/media-optimization-worker.js
index f39ecd03dc7..d1f52eaaa6d 100644
--- a/app/assets/javascripts/discourse/app/services/media-optimization-worker.js
+++ b/app/assets/javascripts/discourse/app/services/media-optimization-worker.js
@@ -1,8 +1,8 @@
import Service, { service } from "@ember/service";
import { Promise } from "rsvp";
+import { getAbsoluteURL, getURLWithCDN } from "discourse/lib/get-url";
import { disableImplicitInjections } from "discourse/lib/implicit-injections";
import { fileToImageData } from "discourse/lib/media-optimization-utils";
-import { getAbsoluteURL, getURLWithCDN } from "discourse-common/lib/get-url";
/**
* This worker follows a particular promise/callback flow to ensure
diff --git a/app/assets/javascripts/discourse/app/services/modal.js b/app/assets/javascripts/discourse/app/services/modal.js
index a90a015afd6..e28f6ef4210 100644
--- a/app/assets/javascripts/discourse/app/services/modal.js
+++ b/app/assets/javascripts/discourse/app/services/modal.js
@@ -3,9 +3,9 @@ import { action } from "@ember/object";
import Service, { service } from "@ember/service";
import { CLOSE_INITIATED_BY_MODAL_SHOW } from "discourse/components/d-modal";
import { clearAllBodyScrollLocks } from "discourse/lib/body-scroll-lock";
+import deprecated from "discourse/lib/deprecated";
import { disableImplicitInjections } from "discourse/lib/implicit-injections";
import { waitForClosedKeyboard } from "discourse/lib/wait-for-keyboard";
-import deprecated from "discourse-common/lib/deprecated";
const LEGACY_OPTS = new Set([
"admin",
diff --git a/app/assets/javascripts/discourse/app/services/network-connectivity.js b/app/assets/javascripts/discourse/app/services/network-connectivity.js
index 8573675d9d9..424bae0514b 100644
--- a/app/assets/javascripts/discourse/app/services/network-connectivity.js
+++ b/app/assets/javascripts/discourse/app/services/network-connectivity.js
@@ -2,9 +2,9 @@ import { tracked } from "@glimmer/tracking";
import { cancel } from "@ember/runloop";
import Service from "@ember/service";
import { ajax } from "discourse/lib/ajax";
+import discourseDebounce from "discourse/lib/debounce";
+import { bind } from "discourse/lib/decorators";
import { disableImplicitInjections } from "discourse/lib/implicit-injections";
-import discourseDebounce from "discourse-common/lib/debounce";
-import { bind } from "discourse-common/utils/decorators";
const CONNECTIVITY_ERROR_CLASS = "network-disconnected";
diff --git a/app/assets/javascripts/discourse/app/services/pm-topic-tracking-state.js b/app/assets/javascripts/discourse/app/services/pm-topic-tracking-state.js
index ea5e4d0bd3b..35904a24833 100644
--- a/app/assets/javascripts/discourse/app/services/pm-topic-tracking-state.js
+++ b/app/assets/javascripts/discourse/app/services/pm-topic-tracking-state.js
@@ -4,15 +4,15 @@ import { TrackedArray, TrackedMap } from "@ember-compat/tracked-built-ins";
import { Promise } from "rsvp";
import { ajax } from "discourse/lib/ajax";
import { popupAjaxError } from "discourse/lib/ajax-error";
+import { bind } from "discourse/lib/decorators";
import { NotificationLevels } from "discourse/lib/notification-levels";
+import { deepEqual, deepMerge } from "discourse/lib/object";
import {
ARCHIVE_FILTER,
INBOX_FILTER,
NEW_FILTER,
UNREAD_FILTER,
} from "discourse/routes/build-private-messages-route";
-import { deepEqual, deepMerge } from "discourse-common/lib/object";
-import { bind } from "discourse-common/utils/decorators";
const CHANNEL_PREFIX = "/private-message-topic-tracking-state";
diff --git a/app/assets/javascripts/discourse/app/services/presence.js b/app/assets/javascripts/discourse/app/services/presence.js
index 7968c4167c5..e439abe05d3 100644
--- a/app/assets/javascripts/discourse/app/services/presence.js
+++ b/app/assets/javascripts/discourse/app/services/presence.js
@@ -5,16 +5,16 @@ import { cancel, debounce, next, once, throttle } from "@ember/runloop";
import Service, { service } from "@ember/service";
import { Promise } from "rsvp";
import { ajax } from "discourse/lib/ajax";
+import { bind } from "discourse/lib/decorators";
+import getURL from "discourse/lib/get-url";
import { disableImplicitInjections } from "discourse/lib/implicit-injections";
+import discourseLater from "discourse/lib/later";
import userPresent, {
onPresenceChange,
removeOnPresenceChange,
} from "discourse/lib/user-presence";
import User from "discourse/models/user";
import { isTesting } from "discourse-common/config/environment";
-import getURL from "discourse-common/lib/get-url";
-import discourseLater from "discourse-common/lib/later";
-import { bind } from "discourse-common/utils/decorators";
const PRESENCE_INTERVAL_S = 30;
const DEFAULT_PRESENCE_DEBOUNCE_MS = isTesting() ? 0 : 500;
diff --git a/app/assets/javascripts/discourse/app/services/route-scroll-manager.js b/app/assets/javascripts/discourse/app/services/route-scroll-manager.js
index 79a6dfda8a3..a55bbfc4878 100644
--- a/app/assets/javascripts/discourse/app/services/route-scroll-manager.js
+++ b/app/assets/javascripts/discourse/app/services/route-scroll-manager.js
@@ -1,8 +1,8 @@
import { next, schedule } from "@ember/runloop";
import Service, { service } from "@ember/service";
+import { bind } from "discourse/lib/decorators";
import { disableImplicitInjections } from "discourse/lib/implicit-injections";
import { isTesting } from "discourse-common/config/environment";
-import { bind } from "discourse-common/utils/decorators";
const STORE_KEY = Symbol("scroll-location");
diff --git a/app/assets/javascripts/discourse/app/services/screen-track.js b/app/assets/javascripts/discourse/app/services/screen-track.js
index d9461f209e8..b0311bdab70 100644
--- a/app/assets/javascripts/discourse/app/services/screen-track.js
+++ b/app/assets/javascripts/discourse/app/services/screen-track.js
@@ -1,6 +1,7 @@
import { run } from "@ember/runloop";
import Service, { service } from "@ember/service";
import { ajax } from "discourse/lib/ajax";
+import { bind } from "discourse/lib/decorators";
import { disableImplicitInjections } from "discourse/lib/implicit-injections";
import {
getHighestReadCache,
@@ -8,7 +9,6 @@ import {
setHighestReadCache,
} from "discourse/lib/topic-list-tracker";
import { isTesting } from "discourse-common/config/environment";
-import { bind } from "discourse-common/utils/decorators";
// We use this class to track how long posts in a topic are on the screen.
const PAUSE_UNLESS_SCROLLED = 1000 * 60 * 3;
diff --git a/app/assets/javascripts/discourse/app/services/scroll-direction.js b/app/assets/javascripts/discourse/app/services/scroll-direction.js
index 451ec07dcac..0882915f43c 100644
--- a/app/assets/javascripts/discourse/app/services/scroll-direction.js
+++ b/app/assets/javascripts/discourse/app/services/scroll-direction.js
@@ -1,9 +1,9 @@
import { tracked } from "@glimmer/tracking";
import { next, throttle } from "@ember/runloop";
import Service, { service } from "@ember/service";
+import discourseDebounce from "discourse/lib/debounce";
+import { bind } from "discourse/lib/decorators";
import { disableImplicitInjections } from "discourse/lib/implicit-injections";
-import discourseDebounce from "discourse-common/lib/debounce";
-import { bind } from "discourse-common/utils/decorators";
// Small buffer so that very tiny scrolls don't trigger mobile header switch
const MOBILE_SCROLL_TOLERANCE = 5;
diff --git a/app/assets/javascripts/discourse/app/services/sidebar-state.js b/app/assets/javascripts/discourse/app/services/sidebar-state.js
index 4ff75917dff..219de35d08a 100644
--- a/app/assets/javascripts/discourse/app/services/sidebar-state.js
+++ b/app/assets/javascripts/discourse/app/services/sidebar-state.js
@@ -2,6 +2,7 @@ import { tracked } from "@glimmer/tracking";
import { registerDestructor } from "@ember/destroyable";
import Service, { service } from "@ember/service";
import { TrackedSet } from "@ember-compat/tracked-built-ins";
+import escapeRegExp from "discourse/lib/escape-regexp";
import { disableImplicitInjections } from "discourse/lib/implicit-injections";
import {
currentPanelKey,
@@ -13,7 +14,6 @@ import {
MAIN_PANEL,
SEPARATED_MODE,
} from "discourse/lib/sidebar/panels";
-import escapeRegExp from "discourse-common/utils/escape-regexp";
@disableImplicitInjections
export default class SidebarState extends Service {
diff --git a/app/assets/javascripts/discourse/app/services/store.js b/app/assets/javascripts/discourse/app/services/store.js
index 3b971a832ba..c3e9596fb39 100644
--- a/app/assets/javascripts/discourse/app/services/store.js
+++ b/app/assets/javascripts/discourse/app/services/store.js
@@ -4,10 +4,10 @@ import Service from "@ember/service";
import { underscore } from "@ember/string";
import { Promise } from "rsvp";
import { ajax } from "discourse/lib/ajax";
+import { getRegister } from "discourse/lib/get-owner";
import { cleanNullQueryParams } from "discourse/lib/utilities";
import RestModel from "discourse/models/rest";
import ResultSet from "discourse/models/result-set";
-import { getRegister } from "discourse-common/lib/get-owner";
let _identityMap;
diff --git a/app/assets/javascripts/discourse/app/services/user-tips.js b/app/assets/javascripts/discourse/app/services/user-tips.js
index 9084741cec6..8c0e1b9d9d3 100644
--- a/app/assets/javascripts/discourse/app/services/user-tips.js
+++ b/app/assets/javascripts/discourse/app/services/user-tips.js
@@ -1,8 +1,8 @@
import Service, { service } from "@ember/service";
import { TrackedSet } from "@ember-compat/tracked-built-ins";
+import discourseDebounce from "discourse/lib/debounce";
import { disableImplicitInjections } from "discourse/lib/implicit-injections";
import { isTesting } from "discourse-common/config/environment";
-import discourseDebounce from "discourse-common/lib/debounce";
@disableImplicitInjections
export default class UserTips extends Service {
diff --git a/app/assets/javascripts/discourse/app/static/dev-tools/plugin-outlet-debug/patch.js b/app/assets/javascripts/discourse/app/static/dev-tools/plugin-outlet-debug/patch.js
index f052b5df4c6..20921a3f51e 100644
--- a/app/assets/javascripts/discourse/app/static/dev-tools/plugin-outlet-debug/patch.js
+++ b/app/assets/javascripts/discourse/app/static/dev-tools/plugin-outlet-debug/patch.js
@@ -1,6 +1,6 @@
import curryComponent from "ember-curry-component";
+import { getOwnerWithFallback } from "discourse/lib/get-owner";
import { _setOutletDebugCallback } from "discourse/lib/plugin-connectors";
-import { getOwnerWithFallback } from "discourse-common/lib/get-owner";
import devToolsState from "../state";
import OutletInfoComponent from "./outlet-info";
diff --git a/app/assets/javascripts/discourse/app/static/markdown-it/options.js b/app/assets/javascripts/discourse/app/static/markdown-it/options.js
index e269907c34f..e919b4d14fb 100644
--- a/app/assets/javascripts/discourse/app/static/markdown-it/options.js
+++ b/app/assets/javascripts/discourse/app/static/markdown-it/options.js
@@ -1,6 +1,6 @@
+import { getURLWithCDN } from "discourse/lib/get-url";
+import { helperContext } from "discourse/lib/helpers";
import { formatUsername } from "discourse/lib/utilities";
-import { getURLWithCDN } from "discourse-common/lib/get-url";
-import { helperContext } from "discourse-common/lib/helpers";
export default function buildOptions(options) {
let context = helperContext();
diff --git a/app/assets/javascripts/discourse/app/static/wizard/components/fields/image.js b/app/assets/javascripts/discourse/app/static/wizard/components/fields/image.js
index 7c10406c058..d3f3a127ef8 100644
--- a/app/assets/javascripts/discourse/app/static/wizard/components/fields/image.js
+++ b/app/assets/javascripts/discourse/app/static/wizard/components/fields/image.js
@@ -6,8 +6,8 @@ import { classNames } from "@ember-decorators/component";
import Uppy from "@uppy/core";
import DropTarget from "@uppy/drop-target";
import XHRUpload from "@uppy/xhr-upload";
-import getUrl from "discourse-common/lib/get-url";
-import discourseComputed from "discourse-common/utils/decorators";
+import discourseComputed from "discourse/lib/decorators";
+import getUrl from "discourse/lib/get-url";
import { i18n } from "discourse-i18n";
import imagePreviews from "./image-previews";
diff --git a/app/assets/javascripts/discourse/app/static/wizard/components/fields/styling-preview/-preview-base.js b/app/assets/javascripts/discourse/app/static/wizard/components/fields/styling-preview/-preview-base.js
index ea97daf6140..940c8cf3228 100644
--- a/app/assets/javascripts/discourse/app/static/wizard/components/fields/styling-preview/-preview-base.js
+++ b/app/assets/javascripts/discourse/app/static/wizard/components/fields/styling-preview/-preview-base.js
@@ -4,8 +4,8 @@ import { action } from "@ember/object";
import { scheduleOnce } from "@ember/runloop";
import { htmlSafe } from "@ember/template";
import { Promise } from "rsvp";
+import getUrl from "discourse/lib/get-url";
import PreloadStore from "discourse/lib/preload-store";
-import getUrl from "discourse-common/lib/get-url";
import { i18n } from "discourse-i18n";
import { darkLightDiff, drawHeader } from "../../../lib/preview";
diff --git a/app/assets/javascripts/discourse/app/static/wizard/components/fields/styling-preview/index.js b/app/assets/javascripts/discourse/app/static/wizard/components/fields/styling-preview/index.js
index 8baf7cd67f6..2bfa36d2ba3 100644
--- a/app/assets/javascripts/discourse/app/static/wizard/components/fields/styling-preview/index.js
+++ b/app/assets/javascripts/discourse/app/static/wizard/components/fields/styling-preview/index.js
@@ -1,6 +1,6 @@
import { action } from "@ember/object";
import { observes } from "@ember-decorators/object";
-import { bind } from "discourse-common/utils/decorators";
+import { bind } from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
import {
chooseDarker,
diff --git a/app/assets/javascripts/discourse/app/static/wizard/components/wizard-canvas.gjs b/app/assets/javascripts/discourse/app/static/wizard/components/wizard-canvas.gjs
index d715be3c215..49efecf1807 100644
--- a/app/assets/javascripts/discourse/app/static/wizard/components/wizard-canvas.gjs
+++ b/app/assets/javascripts/discourse/app/static/wizard/components/wizard-canvas.gjs
@@ -1,7 +1,7 @@
import Component from "@glimmer/component";
import didInsert from "@ember/render-modifiers/modifiers/did-insert";
import willDestroy from "@ember/render-modifiers/modifiers/will-destroy";
-import { bind } from "discourse-common/utils/decorators";
+import { bind } from "discourse/lib/decorators";
const MAX_PARTICLES = 150;
diff --git a/app/assets/javascripts/discourse/app/templates/activate-account.gjs b/app/assets/javascripts/discourse/app/templates/activate-account.gjs
index 173c21cdb15..b7f747ddffe 100644
--- a/app/assets/javascripts/discourse/app/templates/activate-account.gjs
+++ b/app/assets/javascripts/discourse/app/templates/activate-account.gjs
@@ -11,7 +11,7 @@ import hideApplicationHeaderButtons from "discourse/helpers/hide-application-hea
import hideApplicationSidebar from "discourse/helpers/hide-application-sidebar";
import { ajax } from "discourse/lib/ajax";
import { popupAjaxError } from "discourse/lib/ajax-error";
-import getURL from "discourse-common/lib/get-url";
+import getURL from "discourse/lib/get-url";
import { i18n } from "discourse-i18n";
export default RouteTemplate(
diff --git a/app/assets/javascripts/discourse/app/templates/wizard/step.gjs b/app/assets/javascripts/discourse/app/templates/wizard/step.gjs
index acdfd268f59..10091fcaae7 100644
--- a/app/assets/javascripts/discourse/app/templates/wizard/step.gjs
+++ b/app/assets/javascripts/discourse/app/templates/wizard/step.gjs
@@ -2,11 +2,11 @@ import Component from "@glimmer/component";
import { action } from "@ember/object";
import { service } from "@ember/service";
import RouteTemplate from "ember-route-template";
+import getUrl from "discourse/lib/get-url";
import DiscourseURL from "discourse/lib/url";
import { defaultHomepage } from "discourse/lib/utilities";
import WizardCanvas from "discourse/static/wizard/components/wizard-canvas";
import WizardStep from "discourse/static/wizard/components/wizard-step";
-import getUrl from "discourse-common/lib/get-url";
export default RouteTemplate(
class extends Component {
diff --git a/app/assets/javascripts/discourse/app/widgets/avatar-flair.js b/app/assets/javascripts/discourse/app/widgets/avatar-flair.js
index 559378756ca..339d40d0602 100644
--- a/app/assets/javascripts/discourse/app/widgets/avatar-flair.js
+++ b/app/assets/javascripts/discourse/app/widgets/avatar-flair.js
@@ -1,6 +1,6 @@
+import { convertIconClass, iconNode } from "discourse/lib/icon-library";
import { escapeExpression } from "discourse/lib/utilities";
import { createWidget } from "discourse/widgets/widget";
-import { convertIconClass, iconNode } from "discourse-common/lib/icon-library";
createWidget("avatar-flair", {
tagName: "div.avatar-flair",
diff --git a/app/assets/javascripts/discourse/app/widgets/button.js b/app/assets/javascripts/discourse/app/widgets/button.js
index 4624e80c78d..ef0177ca6c9 100644
--- a/app/assets/javascripts/discourse/app/widgets/button.js
+++ b/app/assets/javascripts/discourse/app/widgets/button.js
@@ -1,8 +1,8 @@
import $ from "jquery";
import { h } from "virtual-dom";
+import { iconNode } from "discourse/lib/icon-library";
import DiscourseURL from "discourse/lib/url";
import { createWidget } from "discourse/widgets/widget";
-import { iconNode } from "discourse-common/lib/icon-library";
import { i18n } from "discourse-i18n";
export const ButtonClass = {
diff --git a/app/assets/javascripts/discourse/app/widgets/link.js b/app/assets/javascripts/discourse/app/widgets/link.js
index 3000729944e..b7e23750238 100644
--- a/app/assets/javascripts/discourse/app/widgets/link.js
+++ b/app/assets/javascripts/discourse/app/widgets/link.js
@@ -1,9 +1,9 @@
import { h } from "virtual-dom";
+import getURL from "discourse/lib/get-url";
+import { iconNode } from "discourse/lib/icon-library";
import { wantsNewWindow } from "discourse/lib/intercept-click";
import DiscourseURL from "discourse/lib/url";
import { createWidget } from "discourse/widgets/widget";
-import getURL from "discourse-common/lib/get-url";
-import { iconNode } from "discourse-common/lib/icon-library";
import { i18n } from "discourse-i18n";
export default createWidget("link", {
diff --git a/app/assets/javascripts/discourse/app/widgets/post-cooked.js b/app/assets/javascripts/discourse/app/widgets/post-cooked.js
index 57d631a71f2..0d11a27b775 100644
--- a/app/assets/javascripts/discourse/app/widgets/post-cooked.js
+++ b/app/assets/javascripts/discourse/app/widgets/post-cooked.js
@@ -1,18 +1,18 @@
import { spinnerHTML } from "discourse/helpers/loading-spinner";
import { ajax } from "discourse/lib/ajax";
import { isValidLink } from "discourse/lib/click-track";
+import escape from "discourse/lib/escape";
import { number } from "discourse/lib/formatter";
+import { getOwnerWithFallback } from "discourse/lib/get-owner";
+import getURL from "discourse/lib/get-url";
import highlightHTML, { unhighlightHTML } from "discourse/lib/highlight-html";
import highlightSearch from "discourse/lib/highlight-search";
+import { iconHTML } from "discourse/lib/icon-library";
import { applyValueTransformer } from "discourse/lib/transformer";
import {
destroyUserStatusOnMentions,
updateUserStatusOnMention,
} from "discourse/lib/update-user-status-on-mention";
-import escape from "discourse-common/lib/escape";
-import { getOwnerWithFallback } from "discourse-common/lib/get-owner";
-import getURL from "discourse-common/lib/get-url";
-import { iconHTML } from "discourse-common/lib/icon-library";
import { i18n } from "discourse-i18n";
let _beforeAdoptDecorators = [];
diff --git a/app/assets/javascripts/discourse/app/widgets/post-links.js b/app/assets/javascripts/discourse/app/widgets/post-links.js
index e9a3c474cc1..f9b0a34fac5 100644
--- a/app/assets/javascripts/discourse/app/widgets/post-links.js
+++ b/app/assets/javascripts/discourse/app/widgets/post-links.js
@@ -1,7 +1,7 @@
import { h } from "virtual-dom";
+import { iconNode } from "discourse/lib/icon-library";
import { replaceEmoji } from "discourse/widgets/emoji";
import { createWidget } from "discourse/widgets/widget";
-import { iconNode } from "discourse-common/lib/icon-library";
export default createWidget("post-links", {
tagName: "div.post-links-container",
diff --git a/app/assets/javascripts/discourse/app/widgets/post-menu.js b/app/assets/javascripts/discourse/app/widgets/post-menu.js
index 4b331fab9ed..fa53f922246 100644
--- a/app/assets/javascripts/discourse/app/widgets/post-menu.js
+++ b/app/assets/javascripts/discourse/app/widgets/post-menu.js
@@ -5,6 +5,7 @@ import { h } from "virtual-dom";
import AdminPostMenu from "discourse/components/admin-post-menu";
import DeleteTopicDisallowedModal from "discourse/components/modal/delete-topic-disallowed";
import { formattedReminderTime } from "discourse/lib/bookmark";
+import discourseLater from "discourse/lib/later";
import { recentlyCopied, showAlert } from "discourse/lib/post-action-feedback";
import { smallUserAttrs } from "discourse/lib/user-list-attrs";
import {
@@ -15,7 +16,6 @@ import RenderGlimmer, {
registerWidgetShim,
} from "discourse/widgets/render-glimmer";
import { applyDecorators, createWidget } from "discourse/widgets/widget";
-import discourseLater from "discourse-common/lib/later";
import { i18n } from "discourse-i18n";
const LIKE_ACTION = 2;
diff --git a/app/assets/javascripts/discourse/app/widgets/post-small-action.js b/app/assets/javascripts/discourse/app/widgets/post-small-action.js
index a470656e041..880c22050ba 100644
--- a/app/assets/javascripts/discourse/app/widgets/post-small-action.js
+++ b/app/assets/javascripts/discourse/app/widgets/post-small-action.js
@@ -2,13 +2,13 @@ import { computed } from "@ember/object";
import { htmlSafe } from "@ember/template";
import { h } from "virtual-dom";
import { autoUpdatingRelativeAge } from "discourse/lib/formatter";
+import { iconNode } from "discourse/lib/icon-library";
import { userPath } from "discourse/lib/url";
import DecoratorHelper from "discourse/widgets/decorator-helper";
import { avatarFor } from "discourse/widgets/post";
import PostCooked from "discourse/widgets/post-cooked";
import RawHtml from "discourse/widgets/raw-html";
import { createWidget } from "discourse/widgets/widget";
-import { iconNode } from "discourse-common/lib/icon-library";
import { i18n } from "discourse-i18n";
export function actionDescriptionHtml(actionCode, createdAt, username, path) {
diff --git a/app/assets/javascripts/discourse/app/widgets/post-stream.js b/app/assets/javascripts/discourse/app/widgets/post-stream.js
index 062db8006f6..45101df8143 100644
--- a/app/assets/javascripts/discourse/app/widgets/post-stream.js
+++ b/app/assets/javascripts/discourse/app/widgets/post-stream.js
@@ -2,14 +2,14 @@ import { hbs } from "ember-cli-htmlbars";
import $ from "jquery";
import { h } from "virtual-dom";
import { addWidgetCleanCallback } from "discourse/components/mount-widget";
+import discourseDebounce from "discourse/lib/debounce";
+import { iconNode } from "discourse/lib/icon-library";
import { Placeholder } from "discourse/lib/posts-with-placeholders";
import transformPost from "discourse/lib/transform-post";
import DiscourseURL from "discourse/lib/url";
import { avatarFor } from "discourse/widgets/post";
import RenderGlimmer from "discourse/widgets/render-glimmer";
import { createWidget } from "discourse/widgets/widget";
-import discourseDebounce from "discourse-common/lib/debounce";
-import { iconNode } from "discourse-common/lib/icon-library";
import { i18n } from "discourse-i18n";
let transformCallbacks = null;
diff --git a/app/assets/javascripts/discourse/app/widgets/post.js b/app/assets/javascripts/discourse/app/widgets/post.js
index cae9b9f1e9e..7c3911c6785 100644
--- a/app/assets/javascripts/discourse/app/widgets/post.js
+++ b/app/assets/javascripts/discourse/app/widgets/post.js
@@ -5,7 +5,11 @@ import { h } from "virtual-dom";
import ShareTopicModal from "discourse/components/modal/share-topic";
import { dateNode } from "discourse/helpers/node";
import autoGroupFlairForUser from "discourse/lib/avatar-flair";
+import { avatarUrl, translateSize } from "discourse/lib/avatar-utils";
+import { registerDeprecationHandler } from "discourse/lib/deprecated";
import { relativeAgeMediumSpan } from "discourse/lib/formatter";
+import getURL, { getAbsoluteURL, getURLWithCDN } from "discourse/lib/get-url";
+import { iconNode } from "discourse/lib/icon-library";
import postActionFeedback from "discourse/lib/post-action-feedback";
import { nativeShare } from "discourse/lib/pwa-utils";
import {
@@ -24,13 +28,6 @@ import RawHtml from "discourse/widgets/raw-html";
import RenderGlimmer from "discourse/widgets/render-glimmer";
import { applyDecorators, createWidget } from "discourse/widgets/widget";
import { isTesting } from "discourse-common/config/environment";
-import { avatarUrl, translateSize } from "discourse-common/lib/avatar-utils";
-import { registerDeprecationHandler } from "discourse-common/lib/deprecated";
-import getURL, {
- getAbsoluteURL,
- getURLWithCDN,
-} from "discourse-common/lib/get-url";
-import { iconNode } from "discourse-common/lib/icon-library";
import { i18n } from "discourse-i18n";
function transformWithCallbacks(post, topicUrl, store) {
diff --git a/app/assets/javascripts/discourse/app/widgets/poster-name.js b/app/assets/javascripts/discourse/app/widgets/poster-name.js
index e8f2f8d80a2..99e4cd7eaf6 100644
--- a/app/assets/javascripts/discourse/app/widgets/poster-name.js
+++ b/app/assets/javascripts/discourse/app/widgets/poster-name.js
@@ -1,11 +1,11 @@
import { hbs } from "ember-cli-htmlbars";
import { h } from "virtual-dom";
+import getURL from "discourse/lib/get-url";
+import { iconNode } from "discourse/lib/icon-library";
import { prioritizeNameInUx } from "discourse/lib/settings";
import { formatUsername } from "discourse/lib/utilities";
import RenderGlimmer from "discourse/widgets/render-glimmer";
import { applyDecorators, createWidget } from "discourse/widgets/widget";
-import getURL from "discourse-common/lib/get-url";
-import { iconNode } from "discourse-common/lib/icon-library";
import { i18n } from "discourse-i18n";
let sanitizeName = function (name) {
diff --git a/app/assets/javascripts/discourse/app/widgets/topic-status.js b/app/assets/javascripts/discourse/app/widgets/topic-status.js
index d16de816b97..daf5062edd3 100644
--- a/app/assets/javascripts/discourse/app/widgets/topic-status.js
+++ b/app/assets/javascripts/discourse/app/widgets/topic-status.js
@@ -1,8 +1,8 @@
import { h } from "virtual-dom";
import TopicStatusIcons from "discourse/helpers/topic-status-icons";
+import { iconNode } from "discourse/lib/icon-library";
import { escapeExpression } from "discourse/lib/utilities";
import { createWidget } from "discourse/widgets/widget";
-import { iconNode } from "discourse-common/lib/icon-library";
import { i18n } from "discourse-i18n";
export default createWidget("topic-status", {
diff --git a/app/assets/javascripts/discourse/app/widgets/widget.js b/app/assets/javascripts/discourse/app/widgets/widget.js
index f595717c2d5..71f018a631b 100644
--- a/app/assets/javascripts/discourse/app/widgets/widget.js
+++ b/app/assets/javascripts/discourse/app/widgets/widget.js
@@ -3,6 +3,7 @@ import { getOwner, setOwner } from "@ember/owner";
import { camelize } from "@ember/string";
import { Promise } from "rsvp";
import { h } from "virtual-dom";
+import { deepMerge } from "discourse/lib/object";
import { consolePrefix } from "discourse/lib/source-identifier";
import DecoratorHelper from "discourse/widgets/decorator-helper";
import {
@@ -25,7 +26,6 @@ import {
WidgetTouchStartHook,
} from "discourse/widgets/hooks";
import { isProduction } from "discourse-common/config/environment";
-import { deepMerge } from "discourse-common/lib/object";
import { i18n } from "discourse-i18n";
const _registry = {};
diff --git a/app/assets/javascripts/discourse/ember-cli-build.js b/app/assets/javascripts/discourse/ember-cli-build.js
index 7a0a782374f..c29022a7878 100644
--- a/app/assets/javascripts/discourse/ember-cli-build.js
+++ b/app/assets/javascripts/discourse/ember-cli-build.js
@@ -172,10 +172,16 @@ module.exports = function (defaults) {
},
},
externals: [
- function ({ request }, callback) {
+ function ({ context, request }, callback) {
if (
+ context.includes("discourse-markdown-it/src") &&
+ request.startsWith("discourse/")
+ ) {
+ // v1 ember apps can't be imported from addons. Workaround via commonjs.
+ // Won't be necessary once we move to a v2 app.
+ callback(null, request, "commonjs");
+ } else if (
!request.includes("-embroider-implicit") &&
- // TODO: delete special case for jquery when removing app.import() above
(request.startsWith("admin/") ||
request.startsWith("discourse/plugins/") ||
request.startsWith("discourse/theme-"))
diff --git a/app/assets/javascripts/discourse/public/assets/scripts/module-shims.js b/app/assets/javascripts/discourse/public/assets/scripts/module-shims.js
index 1af63eb6541..b59bcad9bfd 100644
--- a/app/assets/javascripts/discourse/public/assets/scripts/module-shims.js
+++ b/app/assets/javascripts/discourse/public/assets/scripts/module-shims.js
@@ -1,7 +1,7 @@
define("I18n", [
"exports",
"discourse-i18n",
- "discourse-common/lib/deprecated",
+ "discourse/lib/deprecated",
], function (exports, I18n, deprecated) {
exports.default = I18n.default;
@@ -17,11 +17,11 @@ define("I18n", [
});
define("ember-addons/ember-computed-decorators", [
- "discourse-common/utils/decorators",
- "discourse-common/lib/deprecated",
+ "discourse/lib/decorators",
+ "discourse/lib/deprecated",
], function (decorators, deprecated) {
deprecated.default(
- "ember-addons/ember-computed-decorators is deprecated. Use discourse-common/utils/decorators instead.",
+ "ember-addons/ember-computed-decorators is deprecated. Use discourse/lib/decorators instead.",
{ since: "2.4", dropFrom: "3.0" }
);
return decorators;
diff --git a/app/assets/javascripts/discourse/tests/acceptance/assets-version-test.js b/app/assets/javascripts/discourse/tests/acceptance/assets-version-test.js
index 841be18ddd5..c402337b99f 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/assets-version-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/assets-version-test.js
@@ -1,13 +1,13 @@
import { click, visit } from "@ember/test-helpers";
import { test } from "qunit";
import Sinon from "sinon";
+import { cloneJSON } from "discourse/lib/object";
import DiscourseURL from "discourse/lib/url";
import discoveryFixtures from "discourse/tests/fixtures/discovery-fixtures";
import {
acceptance,
publishToMessageBus,
} from "discourse/tests/helpers/qunit-helpers";
-import { cloneJSON } from "discourse-common/lib/object";
acceptance("Software update refresh", function (needs) {
needs.user();
diff --git a/app/assets/javascripts/discourse/tests/acceptance/categories-test.js b/app/assets/javascripts/discourse/tests/acceptance/categories-test.js
index c7ec26f7bf3..8943e800418 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/categories-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/categories-test.js
@@ -1,9 +1,9 @@
import { visit } from "@ember/test-helpers";
import { test } from "qunit";
+import { cloneJSON } from "discourse/lib/object";
import PreloadStore from "discourse/lib/preload-store";
import discoveryFixtures from "discourse/tests/fixtures/discovery-fixtures";
import { acceptance } from "discourse/tests/helpers/qunit-helpers";
-import { cloneJSON } from "discourse-common/lib/object";
acceptance("Categories - 'categories_only'", function (needs) {
needs.settings({
diff --git a/app/assets/javascripts/discourse/tests/acceptance/category-edit-settings-test.js b/app/assets/javascripts/discourse/tests/acceptance/category-edit-settings-test.js
index 346693dff3e..bdaf37ae67f 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/category-edit-settings-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/category-edit-settings-test.js
@@ -1,9 +1,9 @@
import { visit } from "@ember/test-helpers";
import { test } from "qunit";
+import { cloneJSON } from "discourse/lib/object";
import { fixturesByUrl } from "discourse/tests/helpers/create-pretender";
import { acceptance } from "discourse/tests/helpers/qunit-helpers";
import selectKit from "discourse/tests/helpers/select-kit-helper";
-import { cloneJSON } from "discourse-common/lib/object";
acceptance("Category Edit - Settings", function (needs) {
needs.user();
diff --git a/app/assets/javascripts/discourse/tests/acceptance/composer-actions-test.js b/app/assets/javascripts/discourse/tests/acceptance/composer-actions-test.js
index e6292c02369..02d4f743992 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/composer-actions-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/composer-actions-test.js
@@ -1,6 +1,7 @@
import { click, fillIn, visit } from "@ember/test-helpers";
import { test } from "qunit";
import sinon from "sinon";
+import { cloneJSON } from "discourse/lib/object";
import Draft from "discourse/models/draft";
import { toggleCheckDraftPopup } from "discourse/services/composer";
import userFixtures from "discourse/tests/fixtures/user-fixtures";
@@ -10,7 +11,6 @@ import {
updateCurrentUser,
} from "discourse/tests/helpers/qunit-helpers";
import selectKit from "discourse/tests/helpers/select-kit-helper";
-import { cloneJSON } from "discourse-common/lib/object";
import { i18n } from "discourse-i18n";
acceptance("Composer Actions", function (needs) {
diff --git a/app/assets/javascripts/discourse/tests/acceptance/composer-editor-mentions-test.js b/app/assets/javascripts/discourse/tests/acceptance/composer-editor-mentions-test.js
index d51fda8ae52..b83252a888a 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/composer-editor-mentions-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/composer-editor-mentions-test.js
@@ -1,5 +1,6 @@
import { click, visit } from "@ember/test-helpers";
import { test } from "qunit";
+import { cloneJSON } from "discourse/lib/object";
import { setCaretPosition } from "discourse/lib/utilities";
import topicFixtures from "discourse/tests/fixtures/topic";
import {
@@ -10,7 +11,6 @@ import {
queryAll,
simulateKeys,
} from "discourse/tests/helpers/qunit-helpers";
-import { cloneJSON } from "discourse-common/lib/object";
acceptance("Composer - editor mentions", function (needs) {
let clock = null;
diff --git a/app/assets/javascripts/discourse/tests/acceptance/composer-form-template-test.js b/app/assets/javascripts/discourse/tests/acceptance/composer-form-template-test.js
index 2e0eb2dccb4..1f4f2ce2d9f 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/composer-form-template-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/composer-form-template-test.js
@@ -1,10 +1,10 @@
import { click, fillIn, settled, visit } from "@ember/test-helpers";
import { test } from "qunit";
+import { cloneJSON } from "discourse/lib/object";
import { toggleCheckDraftPopup } from "discourse/services/composer";
import TopicFixtures from "discourse/tests/fixtures/topic";
import { acceptance } from "discourse/tests/helpers/qunit-helpers";
import selectKit from "discourse/tests/helpers/select-kit-helper";
-import { cloneJSON } from "discourse-common/lib/object";
const FORM_TEMPLATES = [
{
diff --git a/app/assets/javascripts/discourse/tests/acceptance/composer-test.js b/app/assets/javascripts/discourse/tests/acceptance/composer-test.js
index d3b8118c2cd..650c3a6a39d 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/composer-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/composer-test.js
@@ -12,6 +12,7 @@ import { test } from "qunit";
import sinon from "sinon";
import { PLATFORM_KEY_MODIFIER } from "discourse/lib/keyboard-shortcuts";
import LinkLookup from "discourse/lib/link-lookup";
+import { cloneJSON } from "discourse/lib/object";
import { withPluginApi } from "discourse/lib/plugin-api";
import { translateModKey } from "discourse/lib/utilities";
import Composer, {
@@ -29,7 +30,6 @@ import {
updateCurrentUser,
} from "discourse/tests/helpers/qunit-helpers";
import selectKit from "discourse/tests/helpers/select-kit-helper";
-import { cloneJSON } from "discourse-common/lib/object";
import { i18n } from "discourse-i18n";
acceptance("Composer", function (needs) {
diff --git a/app/assets/javascripts/discourse/tests/acceptance/custom-html-template-test.js b/app/assets/javascripts/discourse/tests/acceptance/custom-html-template-test.js
index c5f943bb4a6..e42c6b17c77 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/custom-html-template-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/custom-html-template-test.js
@@ -1,9 +1,9 @@
import { visit } from "@ember/test-helpers";
import { hbs } from "ember-cli-htmlbars";
import { test } from "qunit";
+import { withSilencedDeprecationsAsync } from "discourse/lib/deprecated";
import { acceptance } from "discourse/tests/helpers/qunit-helpers";
import { registerTemporaryModule } from "discourse/tests/helpers/temporary-module-helper";
-import { withSilencedDeprecationsAsync } from "discourse-common/lib/deprecated";
acceptance("CustomHTML template", function (needs) {
needs.hooks.beforeEach(() => {
diff --git a/app/assets/javascripts/discourse/tests/acceptance/d-lightbox-test.js b/app/assets/javascripts/discourse/tests/acceptance/d-lightbox-test.js
index c695d9a246f..99221197cf8 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/d-lightbox-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/d-lightbox-test.js
@@ -8,6 +8,7 @@ import {
import { skip, test } from "qunit";
import sinon from "sinon";
import { SELECTORS } from "discourse/lib/lightbox/constants";
+import { cloneJSON } from "discourse/lib/object";
import topicFixtures from "discourse/tests/fixtures/topic";
import {
generateLightboxMarkup,
@@ -18,7 +19,6 @@ import {
chromeTest,
queryAll,
} from "discourse/tests/helpers/qunit-helpers";
-import { cloneJSON } from "discourse-common/lib/object";
import i18n from "discourse-i18n";
async function waitForLoad() {
diff --git a/app/assets/javascripts/discourse/tests/acceptance/edit-notification-click-test.js b/app/assets/javascripts/discourse/tests/acceptance/edit-notification-click-test.js
index a7226acfef8..74171299f1a 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/edit-notification-click-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/edit-notification-click-test.js
@@ -1,8 +1,8 @@
import { click, visit } from "@ember/test-helpers";
import { test } from "qunit";
+import { cloneJSON } from "discourse/lib/object";
import topicFixtures from "discourse/tests/fixtures/topic";
import { acceptance, queryAll } from "discourse/tests/helpers/qunit-helpers";
-import { cloneJSON } from "discourse-common/lib/object";
const revisionResponse = {
created_at: "2021-07-30T11:19:59.549Z",
diff --git a/app/assets/javascripts/discourse/tests/acceptance/fast-edit-test.js b/app/assets/javascripts/discourse/tests/acceptance/fast-edit-test.js
index 9dbf379cb88..9745877614a 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/fast-edit-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/fast-edit-test.js
@@ -1,5 +1,6 @@
import { click, fillIn, triggerKeyEvent, visit } from "@ember/test-helpers";
import { test } from "qunit";
+import { cloneJSON } from "discourse/lib/object";
import postFixtures from "discourse/tests/fixtures/post";
import {
acceptance,
@@ -7,7 +8,6 @@ import {
query,
selectText,
} from "discourse/tests/helpers/qunit-helpers";
-import { cloneJSON } from "discourse-common/lib/object";
acceptance("Fast Edit", function (needs) {
needs.user();
diff --git a/app/assets/javascripts/discourse/tests/acceptance/globals-test.js b/app/assets/javascripts/discourse/tests/acceptance/globals-test.js
index 1bb171cea7e..e65e4fed6ec 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/globals-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/globals-test.js
@@ -1,10 +1,10 @@
import { getOwner } from "@ember/owner";
import { visit } from "@ember/test-helpers";
import { test } from "qunit";
+import { withSilencedDeprecations } from "discourse/lib/deprecated";
import Site from "discourse/models/site";
import User from "discourse/models/user";
import { acceptance } from "discourse/tests/helpers/qunit-helpers";
-import { withSilencedDeprecations } from "discourse-common/lib/deprecated";
acceptance("Acceptance | Globals", function () {
test("Globals function as expected", async function (assert) {
diff --git a/app/assets/javascripts/discourse/tests/acceptance/group-manage-membership-test.js b/app/assets/javascripts/discourse/tests/acceptance/group-manage-membership-test.js
index 5e216b9d751..a6b01fd6eb4 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/group-manage-membership-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/group-manage-membership-test.js
@@ -1,5 +1,6 @@
import { click, visit } from "@ember/test-helpers";
import { test } from "qunit";
+import { cloneJSON } from "discourse/lib/object";
import Site from "discourse/models/site";
import groupFixtures from "discourse/tests/fixtures/group-fixtures";
import {
@@ -7,7 +8,6 @@ import {
updateCurrentUser,
} from "discourse/tests/helpers/qunit-helpers";
import selectKit from "discourse/tests/helpers/select-kit-helper";
-import { cloneJSON } from "discourse-common/lib/object";
acceptance("Managing Group Membership", function (needs) {
needs.user();
diff --git a/app/assets/javascripts/discourse/tests/acceptance/history-test.js b/app/assets/javascripts/discourse/tests/acceptance/history-test.js
index c69061c42f2..19061a3d9c2 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/history-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/history-test.js
@@ -1,8 +1,8 @@
import { click, visit } from "@ember/test-helpers";
import { test } from "qunit";
+import { cloneJSON } from "discourse/lib/object";
import topicFixtures from "discourse/tests/fixtures/topic";
import { acceptance } from "discourse/tests/helpers/qunit-helpers";
-import { cloneJSON } from "discourse-common/lib/object";
const revisionResponse = {
created_at: "2021-11-24T10:59:36.163Z",
diff --git a/app/assets/javascripts/discourse/tests/acceptance/keyboard-shortcuts-test.js b/app/assets/javascripts/discourse/tests/acceptance/keyboard-shortcuts-test.js
index edf01177801..14601c62063 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/keyboard-shortcuts-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/keyboard-shortcuts-test.js
@@ -1,8 +1,8 @@
import { click, currentURL, triggerKeyEvent, visit } from "@ember/test-helpers";
import { test } from "qunit";
+import { cloneJSON } from "discourse/lib/object";
import DiscoveryFixtures from "discourse/tests/fixtures/discovery-fixtures";
import { acceptance, chromeTest } from "discourse/tests/helpers/qunit-helpers";
-import { cloneJSON } from "discourse-common/lib/object";
import { i18n } from "discourse-i18n";
acceptance("Keyboard Shortcuts - Anonymous Users", function (needs) {
diff --git a/app/assets/javascripts/discourse/tests/acceptance/lightbox-test.js b/app/assets/javascripts/discourse/tests/acceptance/lightbox-test.js
index 56ac92371df..2e1d328e961 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/lightbox-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/lightbox-test.js
@@ -1,8 +1,8 @@
import { click, visit } from "@ember/test-helpers";
import { test } from "qunit";
+import { cloneJSON } from "discourse/lib/object";
import topicFixtures from "discourse/tests/fixtures/topic";
import { acceptance } from "discourse/tests/helpers/qunit-helpers";
-import { cloneJSON } from "discourse-common/lib/object";
acceptance("Lightbox", function (needs) {
needs.user();
diff --git a/app/assets/javascripts/discourse/tests/acceptance/notifications-test.js b/app/assets/javascripts/discourse/tests/acceptance/notifications-test.js
index eb9052ef2a6..5c8d5d7c7cf 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/notifications-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/notifications-test.js
@@ -1,12 +1,12 @@
import { getOwner } from "@ember/owner";
import { click, currentURL, visit } from "@ember/test-helpers";
import { test } from "qunit";
+import { cloneJSON } from "discourse/lib/object";
import NotificationFixtures from "discourse/tests/fixtures/notification-fixtures";
import {
acceptance,
publishToMessageBus,
} from "discourse/tests/helpers/qunit-helpers";
-import { cloneJSON } from "discourse-common/lib/object";
acceptance("Category Notifications", function (needs) {
needs.user({ muted_category_ids: [1], indirectly_muted_category_ids: [2] });
diff --git a/app/assets/javascripts/discourse/tests/acceptance/plugin-outlet-parent-view-test.js b/app/assets/javascripts/discourse/tests/acceptance/plugin-outlet-parent-view-test.js
index 0b34b01ebee..49b935cbd6e 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/plugin-outlet-parent-view-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/plugin-outlet-parent-view-test.js
@@ -3,8 +3,8 @@ import { render } from "@ember/test-helpers";
import { hbs } from "ember-cli-htmlbars";
import { setupRenderingTest } from "ember-qunit";
import { module, test } from "qunit";
+import { withSilencedDeprecationsAsync } from "discourse/lib/deprecated";
import { registerTemporaryModule } from "discourse/tests/helpers/temporary-module-helper";
-import { withSilencedDeprecationsAsync } from "discourse-common/lib/deprecated";
module("Plugin Outlet - Deprecated parentView", function (hooks) {
setupRenderingTest(hooks);
diff --git a/app/assets/javascripts/discourse/tests/acceptance/post-inline-mentions-test.js b/app/assets/javascripts/discourse/tests/acceptance/post-inline-mentions-test.js
index 4e22b0fcb8f..4fab4e3e00a 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/post-inline-mentions-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/post-inline-mentions-test.js
@@ -1,12 +1,12 @@
import { triggerEvent, visit } from "@ember/test-helpers";
import { test } from "qunit";
+import { cloneJSON } from "discourse/lib/object";
import pretender, { response } from "discourse/tests/helpers/create-pretender";
import {
acceptance,
publishToMessageBus,
query,
} from "discourse/tests/helpers/qunit-helpers";
-import { cloneJSON } from "discourse-common/lib/object";
import topicFixtures from "../fixtures/topic";
function topicWithoutUserStatus(topicId, mentionedUserId) {
diff --git a/app/assets/javascripts/discourse/tests/acceptance/raw-plugin-outlet-test.js b/app/assets/javascripts/discourse/tests/acceptance/raw-plugin-outlet-test.js
index b8d0877c38c..70d60f4923e 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/raw-plugin-outlet-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/raw-plugin-outlet-test.js
@@ -1,12 +1,9 @@
import { visit } from "@ember/test-helpers";
import { compile } from "handlebars";
import { test } from "qunit";
+import { withSilencedDeprecations } from "discourse/lib/deprecated";
+import { addRawTemplate, removeRawTemplate } from "discourse/lib/raw-templates";
import { acceptance } from "discourse/tests/helpers/qunit-helpers";
-import { withSilencedDeprecations } from "discourse-common/lib/deprecated";
-import {
- addRawTemplate,
- removeRawTemplate,
-} from "discourse-common/lib/raw-templates";
const CONNECTOR =
"javascripts/raw-test/connectors/topic-list-before-status/lala";
diff --git a/app/assets/javascripts/discourse/tests/acceptance/sidebar-user-categories-section-test.js b/app/assets/javascripts/discourse/tests/acceptance/sidebar-user-categories-section-test.js
index ce18aa67dfb..103a9746b35 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/sidebar-user-categories-section-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/sidebar-user-categories-section-test.js
@@ -2,6 +2,7 @@ import { click, currentURL, visit } from "@ember/test-helpers";
import { test } from "qunit";
import { TOP_SITE_CATEGORIES_TO_SHOW } from "discourse/components/sidebar/common/categories-section";
import { NotificationLevels } from "discourse/lib/notification-levels";
+import { cloneJSON } from "discourse/lib/object";
import Site from "discourse/models/site";
import categoryFixture from "discourse/tests/fixtures/category-fixtures";
import discoveryFixture from "discourse/tests/fixtures/discovery-fixtures";
@@ -11,7 +12,6 @@ import {
queryAll,
updateCurrentUser,
} from "discourse/tests/helpers/qunit-helpers";
-import { cloneJSON } from "discourse-common/lib/object";
import { i18n } from "discourse-i18n";
acceptance(
diff --git a/app/assets/javascripts/discourse/tests/acceptance/sidebar-user-community-section-test.js b/app/assets/javascripts/discourse/tests/acceptance/sidebar-user-community-section-test.js
index a23bf6b42d8..1763f5d7c39 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/sidebar-user-community-section-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/sidebar-user-community-section-test.js
@@ -6,6 +6,7 @@ import {
} from "@ember/test-helpers";
import { test } from "qunit";
import { NotificationLevels } from "discourse/lib/notification-levels";
+import { cloneJSON } from "discourse/lib/object";
import { withPluginApi } from "discourse/lib/plugin-api";
import topicFixtures from "discourse/tests/fixtures/discovery-fixtures";
import {
@@ -14,7 +15,6 @@ import {
publishToMessageBus,
updateCurrentUser,
} from "discourse/tests/helpers/qunit-helpers";
-import { cloneJSON } from "discourse-common/lib/object";
import { i18n } from "discourse-i18n";
acceptance("Sidebar - Logged on user - Community Section", function (needs) {
diff --git a/app/assets/javascripts/discourse/tests/acceptance/sidebar-user-tags-section-test.js b/app/assets/javascripts/discourse/tests/acceptance/sidebar-user-tags-section-test.js
index 96248fce709..e2827df6398 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/sidebar-user-tags-section-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/sidebar-user-tags-section-test.js
@@ -1,13 +1,13 @@
import { click, currentURL, visit } from "@ember/test-helpers";
import { test } from "qunit";
import { NotificationLevels } from "discourse/lib/notification-levels";
+import { cloneJSON } from "discourse/lib/object";
import discoveryFixture from "discourse/tests/fixtures/discovery-fixtures";
import {
acceptance,
publishToMessageBus,
updateCurrentUser,
} from "discourse/tests/helpers/qunit-helpers";
-import { cloneJSON } from "discourse-common/lib/object";
import { i18n } from "discourse-i18n";
acceptance("Sidebar - Logged on user - Tags section", function (needs) {
diff --git a/app/assets/javascripts/discourse/tests/acceptance/tag-groups-test.js b/app/assets/javascripts/discourse/tests/acceptance/tag-groups-test.js
index 546e99918bf..7f4e9d9566f 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/tag-groups-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/tag-groups-test.js
@@ -1,8 +1,8 @@
import { click, fillIn, visit } from "@ember/test-helpers";
import { test } from "qunit";
+import { setPrefix } from "discourse/lib/get-url";
import { acceptance } from "discourse/tests/helpers/qunit-helpers";
import selectKit from "discourse/tests/helpers/select-kit-helper";
-import { setPrefix } from "discourse-common/lib/get-url";
acceptance("Tag Groups", function (needs) {
needs.user();
diff --git a/app/assets/javascripts/discourse/tests/acceptance/topic-discovery-test.js b/app/assets/javascripts/discourse/tests/acceptance/topic-discovery-test.js
index eb2a043e00d..203c0891129 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/topic-discovery-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/topic-discovery-test.js
@@ -1,6 +1,7 @@
import { click, currentURL, settled, visit } from "@ember/test-helpers";
import { skip, test } from "qunit";
import { configureEyeline } from "discourse/lib/eyeline";
+import { cloneJSON } from "discourse/lib/object";
import { ScrollingDOMMethods } from "discourse/mixins/scrolling";
import discoveryFixtures from "discourse/tests/fixtures/discovery-fixtures";
import topFixtures from "discourse/tests/fixtures/top-fixtures";
@@ -10,7 +11,6 @@ import {
query,
} from "discourse/tests/helpers/qunit-helpers";
import selectKit from "discourse/tests/helpers/select-kit-helper";
-import { cloneJSON } from "discourse-common/lib/object";
acceptance("Topic Discovery", function (needs) {
needs.settings({
diff --git a/app/assets/javascripts/discourse/tests/acceptance/topic-discovery-tracked-test.js b/app/assets/javascripts/discourse/tests/acceptance/topic-discovery-tracked-test.js
index 09a1ec623ea..0df0015236d 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/topic-discovery-tracked-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/topic-discovery-tracked-test.js
@@ -1,13 +1,13 @@
import { visit } from "@ember/test-helpers";
import { test } from "qunit";
import { NotificationLevels } from "discourse/lib/notification-levels";
+import { cloneJSON } from "discourse/lib/object";
import Site from "discourse/models/site";
import topicFixtures from "discourse/tests/fixtures/discovery-fixtures";
import {
acceptance,
publishToMessageBus,
} from "discourse/tests/helpers/qunit-helpers";
-import { cloneJSON } from "discourse-common/lib/object";
import { i18n } from "discourse-i18n";
acceptance("Topic Discovery Tracked", function (needs) {
diff --git a/app/assets/javascripts/discourse/tests/acceptance/topic-edit-timer-test.js b/app/assets/javascripts/discourse/tests/acceptance/topic-edit-timer-test.js
index db3a2948dcf..26d8f92cace 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/topic-edit-timer-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/topic-edit-timer-test.js
@@ -1,5 +1,6 @@
import { click, fillIn, select, visit } from "@ember/test-helpers";
import { test } from "qunit";
+import { cloneJSON } from "discourse/lib/object";
import topicFixtures from "discourse/tests/fixtures/topic";
import {
acceptance,
@@ -9,7 +10,6 @@ import {
updateCurrentUser,
} from "discourse/tests/helpers/qunit-helpers";
import selectKit from "discourse/tests/helpers/select-kit-helper";
-import { cloneJSON } from "discourse-common/lib/object";
import { i18n } from "discourse-i18n";
acceptance("Topic - Edit timer", function (needs) {
diff --git a/app/assets/javascripts/discourse/tests/acceptance/topic-list-tracker-test.js b/app/assets/javascripts/discourse/tests/acceptance/topic-list-tracker-test.js
index 46bfd03fbc6..4845267c6f3 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/topic-list-tracker-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/topic-list-tracker-test.js
@@ -1,6 +1,7 @@
import { click, visit } from "@ember/test-helpers";
import { test } from "qunit";
import { NotificationLevels } from "discourse/lib/notification-levels";
+import { cloneJSON } from "discourse/lib/object";
import {
nextTopicUrl,
previousTopicUrl,
@@ -9,7 +10,6 @@ import {
import discoveryFixtures from "discourse/tests/fixtures/discovery-fixtures";
import topicFixtures from "discourse/tests/fixtures/topic";
import { acceptance } from "discourse/tests/helpers/qunit-helpers";
-import { cloneJSON } from "discourse-common/lib/object";
acceptance("Topic list tracking", function (needs) {
let notificationLevel;
diff --git a/app/assets/javascripts/discourse/tests/acceptance/topic-quote-button-test.js b/app/assets/javascripts/discourse/tests/acceptance/topic-quote-button-test.js
index ccbcd06cfed..0d5a22522f9 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/topic-quote-button-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/topic-quote-button-test.js
@@ -1,12 +1,12 @@
import { click, triggerKeyEvent, visit } from "@ember/test-helpers";
import { test } from "qunit";
+import { cloneJSON } from "discourse/lib/object";
import topicFixtures from "discourse/tests/fixtures/topic";
import {
acceptance,
query,
selectText,
} from "discourse/tests/helpers/qunit-helpers";
-import { cloneJSON } from "discourse-common/lib/object";
import { i18n } from "discourse-i18n";
acceptance("Topic - Quote button - logged in", function (needs) {
diff --git a/app/assets/javascripts/discourse/tests/acceptance/topic-slow-mode-test.js b/app/assets/javascripts/discourse/tests/acceptance/topic-slow-mode-test.js
index 74ae8d3867e..73257d2eb60 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/topic-slow-mode-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/topic-slow-mode-test.js
@@ -1,12 +1,12 @@
import { click, visit } from "@ember/test-helpers";
import { test } from "qunit";
+import { cloneJSON } from "discourse/lib/object";
import topicFixtures from "discourse/tests/fixtures/topic";
import {
acceptance,
updateCurrentUser,
} from "discourse/tests/helpers/qunit-helpers";
import selectKit from "discourse/tests/helpers/select-kit-helper";
-import { cloneJSON } from "discourse-common/lib/object";
import { i18n } from "discourse-i18n";
acceptance("Topic - Slow Mode - enabled", function (needs) {
diff --git a/app/assets/javascripts/discourse/tests/acceptance/topic-test.js b/app/assets/javascripts/discourse/tests/acceptance/topic-test.js
index 0848e8aebd8..7a9789258f0 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/topic-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/topic-test.js
@@ -6,6 +6,7 @@ import {
visit,
} from "@ember/test-helpers";
import { test } from "qunit";
+import { cloneJSON } from "discourse/lib/object";
import CategoryFixtures from "discourse/tests/fixtures/category-fixtures";
import topicFixtures from "discourse/tests/fixtures/topic";
import {
@@ -15,7 +16,6 @@ import {
selectText,
} from "discourse/tests/helpers/qunit-helpers";
import selectKit from "discourse/tests/helpers/select-kit-helper";
-import { cloneJSON } from "discourse-common/lib/object";
import { i18n } from "discourse-i18n";
["enabled", "disabled"].forEach((postMenuMode) => {
diff --git a/app/assets/javascripts/discourse/tests/acceptance/topic-user-status-test.js b/app/assets/javascripts/discourse/tests/acceptance/topic-user-status-test.js
index bbb952ffe09..c4eb4488ca2 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/topic-user-status-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/topic-user-status-test.js
@@ -1,12 +1,12 @@
import { visit } from "@ember/test-helpers";
import { test } from "qunit";
+import { cloneJSON } from "discourse/lib/object";
import TopicFixtures from "discourse/tests/fixtures/topic";
import {
acceptance,
publishToMessageBus,
query,
} from "discourse/tests/helpers/qunit-helpers";
-import { cloneJSON } from "discourse-common/lib/object";
acceptance("Topic - User Status", function (needs) {
const status = { emoji: "tooth", description: "off to dentist" };
diff --git a/app/assets/javascripts/discourse/tests/acceptance/user-bookmarks-test.js b/app/assets/javascripts/discourse/tests/acceptance/user-bookmarks-test.js
index db3ec8eb957..c05af31baf1 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/user-bookmarks-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/user-bookmarks-test.js
@@ -1,9 +1,9 @@
import { click, visit } from "@ember/test-helpers";
import { test } from "qunit";
+import { cloneJSON } from "discourse/lib/object";
import userFixtures from "discourse/tests/fixtures/user-fixtures";
import { acceptance } from "discourse/tests/helpers/qunit-helpers";
import selectKit from "discourse/tests/helpers/select-kit-helper";
-import { cloneJSON } from "discourse-common/lib/object";
acceptance("User's bookmarks", function (needs) {
needs.user();
diff --git a/app/assets/javascripts/discourse/tests/acceptance/user-card-test.js b/app/assets/javascripts/discourse/tests/acceptance/user-card-test.js
index eab823a2fe2..d4ac7831650 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/user-card-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/user-card-test.js
@@ -1,9 +1,9 @@
import { getOwner } from "@ember/owner";
import { click, currentURL, visit } from "@ember/test-helpers";
import { test } from "qunit";
+import { cloneJSON } from "discourse/lib/object";
import userFixtures from "discourse/tests/fixtures/user-fixtures";
import { acceptance } from "discourse/tests/helpers/qunit-helpers";
-import { cloneJSON } from "discourse-common/lib/object";
import { i18n } from "discourse-i18n";
acceptance("User Card", function (needs) {
diff --git a/app/assets/javascripts/discourse/tests/acceptance/user-deleted-posts-test.js b/app/assets/javascripts/discourse/tests/acceptance/user-deleted-posts-test.js
index 2ce220e2fad..f3fbf7c0898 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/user-deleted-posts-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/user-deleted-posts-test.js
@@ -1,7 +1,7 @@
import { visit } from "@ember/test-helpers";
import { test } from "qunit";
+import { cloneJSON } from "discourse/lib/object";
import postFixtures from "discourse/tests/fixtures/post";
-import { cloneJSON } from "discourse-common/lib/object";
import { acceptance } from "../helpers/qunit-helpers";
acceptance("User's deleted posts page", function (needs) {
diff --git a/app/assets/javascripts/discourse/tests/acceptance/user-menu-test.js b/app/assets/javascripts/discourse/tests/acceptance/user-menu-test.js
index 078fec6df32..020fafddec6 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/user-menu-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/user-menu-test.js
@@ -11,6 +11,7 @@ import { test } from "qunit";
import { Promise } from "rsvp";
import DButton from "discourse/components/d-button";
import { AUTO_GROUPS } from "discourse/lib/constants";
+import { cloneJSON } from "discourse/lib/object";
import { withPluginApi } from "discourse/lib/plugin-api";
import { NOTIFICATION_TYPES } from "discourse/tests/fixtures/concerns/notification-types";
import TopicFixtures from "discourse/tests/fixtures/topic";
@@ -23,7 +24,6 @@ import {
queryAll,
updateCurrentUser,
} from "discourse/tests/helpers/qunit-helpers";
-import { cloneJSON } from "discourse-common/lib/object";
import { i18n } from "discourse-i18n";
acceptance("User menu", function (needs) {
diff --git a/app/assets/javascripts/discourse/tests/acceptance/user-preferences-account-test.js b/app/assets/javascripts/discourse/tests/acceptance/user-preferences-account-test.js
index e5ec447c3bf..532ec738dbd 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/user-preferences-account-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/user-preferences-account-test.js
@@ -1,13 +1,13 @@
import { click, fillIn, visit } from "@ember/test-helpers";
import { test } from "qunit";
import sinon from "sinon";
+import { cloneJSON } from "discourse/lib/object";
import DiscourseURL from "discourse/lib/url";
import pretender, {
fixturesByUrl,
response,
} from "discourse/tests/helpers/create-pretender";
import { acceptance } from "discourse/tests/helpers/qunit-helpers";
-import { cloneJSON } from "discourse-common/lib/object";
import { i18n } from "discourse-i18n";
acceptance("User Preferences - Account", function (needs) {
diff --git a/app/assets/javascripts/discourse/tests/acceptance/user-preferences-profile-test.js b/app/assets/javascripts/discourse/tests/acceptance/user-preferences-profile-test.js
index fef5129b54b..59712a93399 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/user-preferences-profile-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/user-preferences-profile-test.js
@@ -1,8 +1,8 @@
import { click, visit } from "@ember/test-helpers";
import { test } from "qunit";
+import { cloneJSON } from "discourse/lib/object";
import userFixtures from "discourse/tests/fixtures/user-fixtures";
import { acceptance } from "discourse/tests/helpers/qunit-helpers";
-import { cloneJSON } from "discourse-common/lib/object";
acceptance("User - Preferences - Profile - Featured topic", function (needs) {
needs.user();
diff --git a/app/assets/javascripts/discourse/tests/acceptance/user-private-messages-test.js b/app/assets/javascripts/discourse/tests/acceptance/user-private-messages-test.js
index 31bb25e6b77..b37e498c008 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/user-private-messages-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/user-private-messages-test.js
@@ -2,6 +2,7 @@ import { click, currentURL, fillIn, visit } from "@ember/test-helpers";
import { test } from "qunit";
import { resetCustomUserNavMessagesDropdownRows } from "discourse/controllers/user-private-messages";
import { NotificationLevels } from "discourse/lib/notification-levels";
+import { cloneJSON } from "discourse/lib/object";
import { withPluginApi } from "discourse/lib/plugin-api";
import {
resetHighestReadCache,
@@ -13,7 +14,6 @@ import {
publishToMessageBus,
updateCurrentUser,
} from "discourse/tests/helpers/qunit-helpers";
-import { cloneJSON } from "discourse-common/lib/object";
import { i18n } from "discourse-i18n";
import selectKit from "../helpers/select-kit-helper";
diff --git a/app/assets/javascripts/discourse/tests/acceptance/user-profile-summary-test.js b/app/assets/javascripts/discourse/tests/acceptance/user-profile-summary-test.js
index 3f659a55352..89a8d8335bc 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/user-profile-summary-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/user-profile-summary-test.js
@@ -1,8 +1,8 @@
import { click, currentURL, visit } from "@ember/test-helpers";
import { test } from "qunit";
+import { cloneJSON } from "discourse/lib/object";
import userFixtures from "discourse/tests/fixtures/user-fixtures";
import { acceptance } from "discourse/tests/helpers/qunit-helpers";
-import { cloneJSON } from "discourse-common/lib/object";
import { i18n } from "discourse-i18n";
let deleteAndBlock;
diff --git a/app/assets/javascripts/discourse/tests/acceptance/user-test.js b/app/assets/javascripts/discourse/tests/acceptance/user-test.js
index 05de5852a3f..97c132fbc86 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/user-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/user-test.js
@@ -7,6 +7,7 @@ import {
visit,
} from "@ember/test-helpers";
import { test } from "qunit";
+import { cloneJSON } from "discourse/lib/object";
import userFixtures from "discourse/tests/fixtures/user-fixtures";
import {
acceptance,
@@ -14,7 +15,6 @@ import {
updateCurrentUser,
} from "discourse/tests/helpers/qunit-helpers";
import selectKit from "discourse/tests/helpers/select-kit-helper";
-import { cloneJSON } from "discourse-common/lib/object";
import { i18n } from "discourse-i18n";
/**
diff --git a/app/assets/javascripts/discourse/tests/acceptance/users-test.js b/app/assets/javascripts/discourse/tests/acceptance/users-test.js
index 4e1a4db242b..cce08881b57 100644
--- a/app/assets/javascripts/discourse/tests/acceptance/users-test.js
+++ b/app/assets/javascripts/discourse/tests/acceptance/users-test.js
@@ -1,9 +1,9 @@
import { click, triggerKeyEvent, visit } from "@ember/test-helpers";
import { test } from "qunit";
+import { cloneJSON } from "discourse/lib/object";
import directoryFixtures from "discourse/tests/fixtures/directory-fixtures";
import pretender, { response } from "discourse/tests/helpers/create-pretender";
import { acceptance, queryAll } from "discourse/tests/helpers/qunit-helpers";
-import { cloneJSON } from "discourse-common/lib/object";
import { i18n } from "discourse-i18n";
acceptance("User Directory", function () {
diff --git a/app/assets/javascripts/discourse/tests/fixtures/session-fixtures.js b/app/assets/javascripts/discourse/tests/fixtures/session-fixtures.js
index 71abe9ba1f3..728ee8c6d62 100644
--- a/app/assets/javascripts/discourse/tests/fixtures/session-fixtures.js
+++ b/app/assets/javascripts/discourse/tests/fixtures/session-fixtures.js
@@ -1,5 +1,5 @@
import { AUTO_GROUPS } from "discourse/lib/constants";
-import { deepFreeze } from "discourse-common/lib/object";
+import { deepFreeze } from "discourse/lib/object";
export default {
"/session/current.json": deepFreeze({
diff --git a/app/assets/javascripts/discourse/tests/helpers/component-test.js b/app/assets/javascripts/discourse/tests/helpers/component-test.js
index f381d1e70e3..5f0d8853455 100644
--- a/app/assets/javascripts/discourse/tests/helpers/component-test.js
+++ b/app/assets/javascripts/discourse/tests/helpers/component-test.js
@@ -3,12 +3,12 @@ import { setupRenderingTest as emberSetupRenderingTest } from "ember-qunit";
import QUnit, { test } from "qunit";
import { autoLoadModules } from "discourse/instance-initializers/auto-load-modules";
import { AUTO_GROUPS } from "discourse/lib/constants";
+import deprecated from "discourse/lib/deprecated";
import Session from "discourse/models/session";
import Site from "discourse/models/site";
import TopicTrackingState from "discourse/models/topic-tracking-state";
import User from "discourse/models/user";
import { currentSettings } from "discourse/tests/helpers/site-settings";
-import deprecated from "discourse-common/lib/deprecated";
export function setupRenderingTest(hooks) {
emberSetupRenderingTest(hooks);
diff --git a/app/assets/javascripts/discourse/tests/helpers/create-pretender.js b/app/assets/javascripts/discourse/tests/helpers/create-pretender.js
index 15ed1daec97..6325e56b5d4 100644
--- a/app/assets/javascripts/discourse/tests/helpers/create-pretender.js
+++ b/app/assets/javascripts/discourse/tests/helpers/create-pretender.js
@@ -1,8 +1,8 @@
import EmberObject from "@ember/object";
import Pretender from "pretender";
+import getURL from "discourse/lib/get-url";
+import { cloneJSON } from "discourse/lib/object";
import User from "discourse/models/user";
-import getURL from "discourse-common/lib/get-url";
-import { cloneJSON } from "discourse-common/lib/object";
export function parsePostData(query) {
const result = {};
diff --git a/app/assets/javascripts/discourse/tests/helpers/create-store.js b/app/assets/javascripts/discourse/tests/helpers/create-store.js
index a81256e7198..cf9ae34e26a 100644
--- a/app/assets/javascripts/discourse/tests/helpers/create-store.js
+++ b/app/assets/javascripts/discourse/tests/helpers/create-store.js
@@ -1,12 +1,12 @@
import RestAdapter from "discourse/adapters/rest";
import TopicListAdapter from "discourse/adapters/topic-list";
+import deprecated from "discourse/lib/deprecated";
import KeyValueStore from "discourse/lib/key-value-store";
import RestModel from "discourse/models/rest";
import Site from "discourse/models/site";
import TopicTrackingState from "discourse/models/topic-tracking-state";
import Store from "discourse/services/store";
import { currentSettings } from "discourse/tests/helpers/site-settings";
-import deprecated from "discourse-common/lib/deprecated";
import { buildResolver } from "discourse-common/resolver";
class CatAdapter extends RestAdapter {
diff --git a/app/assets/javascripts/discourse/tests/helpers/deprecation-counter.js b/app/assets/javascripts/discourse/tests/helpers/deprecation-counter.js
index 6565a9072e7..21e0a800126 100644
--- a/app/assets/javascripts/discourse/tests/helpers/deprecation-counter.js
+++ b/app/assets/javascripts/discourse/tests/helpers/deprecation-counter.js
@@ -1,7 +1,7 @@
import { registerDeprecationHandler } from "@ember/debug";
-import DEPRECATION_WORKFLOW from "discourse-common/deprecation-workflow";
-import { registerDeprecationHandler as registerDiscourseDeprecationHandler } from "discourse-common/lib/deprecated";
-import { bind } from "discourse-common/utils/decorators";
+import DEPRECATION_WORKFLOW from "discourse/deprecation-workflow";
+import { bind } from "discourse/lib/decorators";
+import { registerDeprecationHandler as registerDiscourseDeprecationHandler } from "discourse/lib/deprecated";
export default class DeprecationCounter {
counts = new Map();
diff --git a/app/assets/javascripts/discourse/tests/helpers/notification-types-helper.js b/app/assets/javascripts/discourse/tests/helpers/notification-types-helper.js
index 040aa2fd84b..ef530b30119 100644
--- a/app/assets/javascripts/discourse/tests/helpers/notification-types-helper.js
+++ b/app/assets/javascripts/discourse/tests/helpers/notification-types-helper.js
@@ -1,8 +1,8 @@
import { getRenderDirector } from "discourse/lib/notification-types-manager";
+import { cloneJSON } from "discourse/lib/object";
import Site from "discourse/models/site";
import User from "discourse/models/user";
import sessionFixtures from "discourse/tests/fixtures/session-fixtures";
-import { cloneJSON } from "discourse-common/lib/object";
export function createRenderDirector(
notification,
diff --git a/app/assets/javascripts/discourse/tests/helpers/qunit-helpers.js b/app/assets/javascripts/discourse/tests/helpers/qunit-helpers.js
index f5efa45ca1a..199c4390cee 100644
--- a/app/assets/javascripts/discourse/tests/helpers/qunit-helpers.js
+++ b/app/assets/javascripts/discourse/tests/helpers/qunit-helpers.js
@@ -37,7 +37,10 @@ import { resetAdminPluginConfigNav } from "discourse/lib/admin-plugin-config-nav
import { clearPluginHeaderActionComponents } from "discourse/lib/admin-plugin-header-actions";
import { rollbackAllPrepends } from "discourse/lib/class-prepend";
import { clearPopupMenuOptions } from "discourse/lib/composer/custom-popup-menu-options";
+import deprecated from "discourse/lib/deprecated";
import { clearDesktopNotificationHandlers } from "discourse/lib/desktop-notifications";
+import { getOwnerWithFallback } from "discourse/lib/get-owner";
+import { restoreBaseUri } from "discourse/lib/get-url";
import { cleanUpHashtagTypeClasses } from "discourse/lib/hashtag-type-registry";
import {
clearDisabledDefaultKeyboardBindings,
@@ -49,11 +52,13 @@ import { resetMentions } from "discourse/lib/link-mentions";
import { forceMobile, resetMobile } from "discourse/lib/mobile";
import { resetModelTransformers } from "discourse/lib/model-transformers";
import { resetNotificationTypeRenderers } from "discourse/lib/notification-types-manager";
+import { cloneJSON, deepMerge } from "discourse/lib/object";
import {
clearCache as clearOutletCache,
resetExtraClasses,
} from "discourse/lib/plugin-connectors";
import PreloadStore from "discourse/lib/preload-store";
+import { resetNeedsHbrTopicList } from "discourse/lib/raw-templates";
import { clearTopicFooterButtons } from "discourse/lib/register-topic-footer-button";
import { clearTopicFooterDropdowns } from "discourse/lib/register-topic-footer-dropdown";
import { clearTagsHtmlCallbacks } from "discourse/lib/render-tags";
@@ -94,11 +99,6 @@ import {
import { resetDecorators as resetPostCookedDecorators } from "discourse/widgets/post-cooked";
import { resetPostMenuExtraButtons } from "discourse/widgets/post-menu";
import { resetDecorators } from "discourse/widgets/widget";
-import deprecated from "discourse-common/lib/deprecated";
-import { getOwnerWithFallback } from "discourse-common/lib/get-owner";
-import { restoreBaseUri } from "discourse-common/lib/get-url";
-import { cloneJSON, deepMerge } from "discourse-common/lib/object";
-import { resetNeedsHbrTopicList } from "discourse-common/lib/raw-templates";
import { clearResolverOptions } from "discourse-common/resolver";
import I18n from "discourse-i18n";
import { _clearSnapshots } from "select-kit/components/composer-actions";
diff --git a/app/assets/javascripts/discourse/tests/helpers/raise-on-deprecation.js b/app/assets/javascripts/discourse/tests/helpers/raise-on-deprecation.js
index 07e5b485b60..83f84ff840f 100644
--- a/app/assets/javascripts/discourse/tests/helpers/raise-on-deprecation.js
+++ b/app/assets/javascripts/discourse/tests/helpers/raise-on-deprecation.js
@@ -1,7 +1,7 @@
import { registerDeprecationHandler } from "@ember/debug";
import QUnit from "qunit";
-import DEPRECATION_WORKFLOW from "discourse-common/deprecation-workflow";
-import { registerDeprecationHandler as registerDiscourseDeprecationHandler } from "discourse-common/lib/deprecated";
+import DEPRECATION_WORKFLOW from "discourse/deprecation-workflow";
+import { registerDeprecationHandler as registerDiscourseDeprecationHandler } from "discourse/lib/deprecated";
let disabled = false;
diff --git a/app/assets/javascripts/discourse/tests/helpers/reviewable-types-helper.js b/app/assets/javascripts/discourse/tests/helpers/reviewable-types-helper.js
index 32c10d6566c..cde134e1be2 100644
--- a/app/assets/javascripts/discourse/tests/helpers/reviewable-types-helper.js
+++ b/app/assets/javascripts/discourse/tests/helpers/reviewable-types-helper.js
@@ -1,8 +1,8 @@
+import { cloneJSON } from "discourse/lib/object";
import { getRenderDirector } from "discourse/lib/reviewable-types-manager";
import Site from "discourse/models/site";
import User from "discourse/models/user";
import sessionFixtures from "discourse/tests/fixtures/session-fixtures";
-import { cloneJSON } from "discourse-common/lib/object";
export function createRenderDirector(reviewable, reviewableType, siteSettings) {
const director = getRenderDirector(
diff --git a/app/assets/javascripts/discourse/tests/helpers/temporary-module-helper.js b/app/assets/javascripts/discourse/tests/helpers/temporary-module-helper.js
index d429fa3297e..5311973420a 100644
--- a/app/assets/javascripts/discourse/tests/helpers/temporary-module-helper.js
+++ b/app/assets/javascripts/discourse/tests/helpers/temporary-module-helper.js
@@ -1,5 +1,5 @@
+import DiscourseTemplateMap from "discourse/lib/discourse-template-map";
import { expireConnectorCache } from "discourse/lib/plugin-connectors";
-import DiscourseTemplateMap from "discourse-common/lib/discourse-template-map";
import { expireModuleTrieCache } from "discourse-common/resolver";
const modifications = [];
diff --git a/app/assets/javascripts/discourse/tests/integration/component-templates-test.gjs b/app/assets/javascripts/discourse/tests/integration/component-templates-test.gjs
index 319c7b66557..b4c1d236896 100644
--- a/app/assets/javascripts/discourse/tests/integration/component-templates-test.gjs
+++ b/app/assets/javascripts/discourse/tests/integration/component-templates-test.gjs
@@ -5,9 +5,9 @@ import { hbs } from "ember-cli-htmlbars";
import { module, test } from "qunit";
import sinon from "sinon";
import { overrideThrowGjsError } from "discourse/instance-initializers/component-templates";
+import { withSilencedDeprecationsAsync } from "discourse/lib/deprecated";
import { forceMobile } from "discourse/lib/mobile";
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
-import { withSilencedDeprecationsAsync } from "discourse-common/lib/deprecated";
import { registerTemporaryModule } from "../helpers/temporary-module-helper";
function silenceMobileAndOverrideDeprecations(hooks) {
diff --git a/app/assets/javascripts/discourse/tests/integration/components/d-button-test.js b/app/assets/javascripts/discourse/tests/integration/components/d-button-test.js
index 1e807ccbf23..b10e366261a 100644
--- a/app/assets/javascripts/discourse/tests/integration/components/d-button-test.js
+++ b/app/assets/javascripts/discourse/tests/integration/components/d-button-test.js
@@ -2,8 +2,8 @@ import ClassicComponent from "@ember/component";
import { click, render, triggerKeyEvent } from "@ember/test-helpers";
import { hbs } from "ember-cli-htmlbars";
import { module, test } from "qunit";
+import { withSilencedDeprecationsAsync } from "discourse/lib/deprecated";
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
-import { withSilencedDeprecationsAsync } from "discourse-common/lib/deprecated";
import I18n, { i18n } from "discourse-i18n";
module("Integration | Component | d-button", function (hooks) {
diff --git a/app/assets/javascripts/discourse/tests/integration/components/d-lightbox-test.js b/app/assets/javascripts/discourse/tests/integration/components/d-lightbox-test.js
index b0e7ef61bbc..3c59d85c491 100644
--- a/app/assets/javascripts/discourse/tests/integration/components/d-lightbox-test.js
+++ b/app/assets/javascripts/discourse/tests/integration/components/d-lightbox-test.js
@@ -1,11 +1,11 @@
import { click, render } from "@ember/test-helpers";
import { hbs } from "ember-cli-htmlbars";
import { module, test } from "qunit";
+import domFromString from "discourse/lib/dom-from-string";
import { setupLightboxes } from "discourse/lib/lightbox";
import { SELECTORS } from "discourse/lib/lightbox/constants";
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
import { generateLightboxMarkup } from "discourse/tests/helpers/lightbox-helpers";
-import domFromString from "discourse-common/lib/dom-from-string";
module("Integration | Component | d-lightbox", function (hooks) {
setupRenderingTest(hooks);
diff --git a/app/assets/javascripts/discourse/tests/integration/components/d-section-test.gjs b/app/assets/javascripts/discourse/tests/integration/components/d-section-test.gjs
index b29b90a0f7b..02f32265bac 100644
--- a/app/assets/javascripts/discourse/tests/integration/components/d-section-test.gjs
+++ b/app/assets/javascripts/discourse/tests/integration/components/d-section-test.gjs
@@ -1,8 +1,8 @@
import { render } from "@ember/test-helpers";
import { module, test } from "qunit";
import DSection from "discourse/components/d-section";
+import { withSilencedDeprecationsAsync } from "discourse/lib/deprecated";
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
-import { withSilencedDeprecationsAsync } from "discourse-common/lib/deprecated";
module("Integration | Component | d-section", function (hooks) {
setupRenderingTest(hooks);
diff --git a/app/assets/javascripts/discourse/tests/integration/components/number-field-test.js b/app/assets/javascripts/discourse/tests/integration/components/number-field-test.js
index d132e370e68..6a2eb7dfefd 100644
--- a/app/assets/javascripts/discourse/tests/integration/components/number-field-test.js
+++ b/app/assets/javascripts/discourse/tests/integration/components/number-field-test.js
@@ -1,8 +1,8 @@
import { fillIn, render, triggerKeyEvent } from "@ember/test-helpers";
import { hbs } from "ember-cli-htmlbars";
import { module, test } from "qunit";
+import { withSilencedDeprecationsAsync } from "discourse/lib/deprecated";
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
-import { withSilencedDeprecationsAsync } from "discourse-common/lib/deprecated";
module("Integration | Component | number-field", function (hooks) {
setupRenderingTest(hooks);
diff --git a/app/assets/javascripts/discourse/tests/integration/components/plugin-outlet-decorator-test.gjs b/app/assets/javascripts/discourse/tests/integration/components/plugin-outlet-decorator-test.gjs
index 9bc58a7b03b..eabc66f49de 100644
--- a/app/assets/javascripts/discourse/tests/integration/components/plugin-outlet-decorator-test.gjs
+++ b/app/assets/javascripts/discourse/tests/integration/components/plugin-outlet-decorator-test.gjs
@@ -3,10 +3,10 @@ import { render } from "@ember/test-helpers";
import { hbs } from "ember-cli-htmlbars";
import { module, test } from "qunit";
import PluginOutlet from "discourse/components/plugin-outlet";
+import { withSilencedDeprecations } from "discourse/lib/deprecated";
import { withPluginApi } from "discourse/lib/plugin-api";
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
import { query } from "discourse/tests/helpers/qunit-helpers";
-import { withSilencedDeprecations } from "discourse-common/lib/deprecated";
import { registerTemporaryModule } from "../../helpers/temporary-module-helper";
const PREFIX = "discourse/plugins/some-plugin/templates/connectors";
diff --git a/app/assets/javascripts/discourse/tests/integration/components/plugin-outlet-test.gjs b/app/assets/javascripts/discourse/tests/integration/components/plugin-outlet-test.gjs
index ca25c4aa3d1..60085a4dfea 100644
--- a/app/assets/javascripts/discourse/tests/integration/components/plugin-outlet-test.gjs
+++ b/app/assets/javascripts/discourse/tests/integration/components/plugin-outlet-test.gjs
@@ -8,6 +8,10 @@ import { module, test } from "qunit";
import sinon from "sinon";
import PluginOutlet from "discourse/components/plugin-outlet";
import deprecatedOutletArgument from "discourse/helpers/deprecated-outlet-argument";
+import deprecated, {
+ withSilencedDeprecations,
+ withSilencedDeprecationsAsync,
+} from "discourse/lib/deprecated";
import {
extraConnectorClass,
extraConnectorComponent,
@@ -15,10 +19,6 @@ import {
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
import { query } from "discourse/tests/helpers/qunit-helpers";
import { registerTemporaryModule } from "discourse/tests/helpers/temporary-module-helper";
-import deprecated, {
- withSilencedDeprecations,
- withSilencedDeprecationsAsync,
-} from "discourse-common/lib/deprecated";
import {
disableRaiseOnDeprecation,
enableRaiseOnDeprecation,
diff --git a/app/assets/javascripts/discourse/tests/integration/components/user-menu/menu-item-test.js b/app/assets/javascripts/discourse/tests/integration/components/user-menu/menu-item-test.js
index 64d677c99ec..df574c9cb7c 100644
--- a/app/assets/javascripts/discourse/tests/integration/components/user-menu/menu-item-test.js
+++ b/app/assets/javascripts/discourse/tests/integration/components/user-menu/menu-item-test.js
@@ -1,6 +1,7 @@
import { render, settled } from "@ember/test-helpers";
import { hbs } from "ember-cli-htmlbars";
import { module, test } from "qunit";
+import { cloneJSON, deepMerge } from "discourse/lib/object";
import { withPluginApi } from "discourse/lib/plugin-api";
import UserMenuBookmarkItem from "discourse/lib/user-menu/bookmark-item";
import UserMenuMessageItem from "discourse/lib/user-menu/message-item";
@@ -11,7 +12,6 @@ import UserMenuReviewable from "discourse/models/user-menu-reviewable";
import { NOTIFICATION_TYPES } from "discourse/tests/fixtures/concerns/notification-types";
import PrivateMessagesFixture from "discourse/tests/fixtures/private-messages-fixtures";
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
-import { cloneJSON, deepMerge } from "discourse-common/lib/object";
import { i18n } from "discourse-i18n";
function getNotification(currentUser, siteSettings, site, overrides = {}) {
diff --git a/app/assets/javascripts/discourse/tests/integration/components/user-menu/messages-list-test.js b/app/assets/javascripts/discourse/tests/integration/components/user-menu/messages-list-test.js
index 2eb5c218ccd..eec103b195a 100644
--- a/app/assets/javascripts/discourse/tests/integration/components/user-menu/messages-list-test.js
+++ b/app/assets/javascripts/discourse/tests/integration/components/user-menu/messages-list-test.js
@@ -1,12 +1,12 @@
import { render, settled } from "@ember/test-helpers";
import { hbs } from "ember-cli-htmlbars";
import { module, test } from "qunit";
+import { cloneJSON, deepMerge } from "discourse/lib/object";
import { NOTIFICATION_TYPES } from "discourse/tests/fixtures/concerns/notification-types";
import UserMenuFixtures from "discourse/tests/fixtures/user-menu";
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
import pretender, { response } from "discourse/tests/helpers/create-pretender";
import { queryAll } from "discourse/tests/helpers/qunit-helpers";
-import { cloneJSON, deepMerge } from "discourse-common/lib/object";
import { i18n } from "discourse-i18n";
function getMessage(overrides = {}) {
diff --git a/app/assets/javascripts/discourse/tests/integration/components/user-menu/notifications-list-test.js b/app/assets/javascripts/discourse/tests/integration/components/user-menu/notifications-list-test.js
index 687e99c631d..1d32999ab1d 100644
--- a/app/assets/javascripts/discourse/tests/integration/components/user-menu/notifications-list-test.js
+++ b/app/assets/javascripts/discourse/tests/integration/components/user-menu/notifications-list-test.js
@@ -1,12 +1,12 @@
import { click, render } from "@ember/test-helpers";
import { hbs } from "ember-cli-htmlbars";
import { module, test } from "qunit";
+import { cloneJSON } from "discourse/lib/object";
import { NOTIFICATION_TYPES } from "discourse/tests/fixtures/concerns/notification-types";
import NotificationFixtures from "discourse/tests/fixtures/notification-fixtures";
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
import pretender, { response } from "discourse/tests/helpers/create-pretender";
import { queryAll } from "discourse/tests/helpers/qunit-helpers";
-import { cloneJSON } from "discourse-common/lib/object";
import { i18n } from "discourse-i18n";
function getNotificationsData() {
diff --git a/app/assets/javascripts/discourse/tests/integration/components/widgets/post-menu-test.js b/app/assets/javascripts/discourse/tests/integration/components/widgets/post-menu-test.js
index c052390a761..dedbc8dc517 100644
--- a/app/assets/javascripts/discourse/tests/integration/components/widgets/post-menu-test.js
+++ b/app/assets/javascripts/discourse/tests/integration/components/widgets/post-menu-test.js
@@ -2,11 +2,11 @@ import { click, render } from "@ember/test-helpers";
import { hbs } from "ember-cli-htmlbars";
import { module, test } from "qunit";
import { h } from "virtual-dom";
+import { withSilencedDeprecations } from "discourse/lib/deprecated";
import { withPluginApi } from "discourse/lib/plugin-api";
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
import { resetPostMenuExtraButtons } from "discourse/widgets/post-menu";
import { createWidget } from "discourse/widgets/widget";
-import { withSilencedDeprecations } from "discourse-common/lib/deprecated";
module("Integration | Component | Widget | post-menu", function (hooks) {
setupRenderingTest(hooks);
diff --git a/app/assets/javascripts/discourse/tests/integration/components/widgets/post-stream-test.gjs b/app/assets/javascripts/discourse/tests/integration/components/widgets/post-stream-test.gjs
index a853d53213c..81876d3dd97 100644
--- a/app/assets/javascripts/discourse/tests/integration/components/widgets/post-stream-test.gjs
+++ b/app/assets/javascripts/discourse/tests/integration/components/widgets/post-stream-test.gjs
@@ -3,10 +3,10 @@ import { render } from "@ember/test-helpers";
import { hbs } from "ember-cli-htmlbars";
import { module, test } from "qunit";
import DButton from "discourse/components/d-button";
+import { withSilencedDeprecations } from "discourse/lib/deprecated";
import { withPluginApi } from "discourse/lib/plugin-api";
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
import { resetPostMenuExtraButtons } from "discourse/widgets/post-menu";
-import { withSilencedDeprecations } from "discourse-common/lib/deprecated";
function postStreamTest(name, attrs) {
test(name, async function (assert) {
diff --git a/app/assets/javascripts/discourse/tests/integration/components/widgets/render-glimmer-test.js b/app/assets/javascripts/discourse/tests/integration/components/widgets/render-glimmer-test.js
index 9f8c56e6a57..63d8f683ba5 100644
--- a/app/assets/javascripts/discourse/tests/integration/components/widgets/render-glimmer-test.js
+++ b/app/assets/javascripts/discourse/tests/integration/components/widgets/render-glimmer-test.js
@@ -3,13 +3,13 @@ import templateOnly from "@ember/component/template-only";
import { click, fillIn, render } from "@ember/test-helpers";
import { hbs } from "ember-cli-htmlbars";
import { module, test } from "qunit";
+import { bind } from "discourse/lib/decorators";
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
import widgetHbs from "discourse/widgets/hbs-compiler";
import RenderGlimmer, {
registerWidgetShim,
} from "discourse/widgets/render-glimmer";
import Widget, { deleteFromRegistry } from "discourse/widgets/widget";
-import { bind } from "discourse-common/utils/decorators";
class DemoWidget extends Widget {
static actionTriggered = false;
diff --git a/app/assets/javascripts/discourse/tests/integration/hbr-topic-list-detection-test.js b/app/assets/javascripts/discourse/tests/integration/hbr-topic-list-detection-test.js
index a9421acfc96..655525bd12e 100644
--- a/app/assets/javascripts/discourse/tests/integration/hbr-topic-list-detection-test.js
+++ b/app/assets/javascripts/discourse/tests/integration/hbr-topic-list-detection-test.js
@@ -1,18 +1,18 @@
import { module, test } from "qunit";
import TopicList from "discourse/components/topic-list";
import TopicListItem from "discourse/components/topic-list-item";
+import { withSilencedDeprecations } from "discourse/lib/deprecated";
import { withPluginApi } from "discourse/lib/plugin-api";
import { rawConnectorsFor } from "discourse/lib/plugin-connectors";
-import {
- disableRaiseOnDeprecation,
- enableRaiseOnDeprecation,
-} from "discourse/tests/helpers/raise-on-deprecation";
-import { withSilencedDeprecations } from "discourse-common/lib/deprecated";
import {
addRawTemplate,
needsHbrTopicList,
removeRawTemplate,
-} from "discourse-common/lib/raw-templates";
+} from "discourse/lib/raw-templates";
+import {
+ disableRaiseOnDeprecation,
+ enableRaiseOnDeprecation,
+} from "discourse/tests/helpers/raise-on-deprecation";
module("Integration | Lib | hbr topic list detection", function (hooks) {
hooks.beforeEach(function () {
diff --git a/app/assets/javascripts/discourse/tests/integration/helpers/raw-test.gjs b/app/assets/javascripts/discourse/tests/integration/helpers/raw-test.gjs
index e9562a30f10..4d81f4448f3 100644
--- a/app/assets/javascripts/discourse/tests/integration/helpers/raw-test.gjs
+++ b/app/assets/javascripts/discourse/tests/integration/helpers/raw-test.gjs
@@ -5,14 +5,11 @@ import { render, settled } from "@ember/test-helpers";
import { module, test } from "qunit";
import RenderGlimmerContainer from "discourse/components/render-glimmer-container";
import raw from "discourse/helpers/raw";
+import { compile } from "discourse/lib/raw-handlebars";
+import { RUNTIME_OPTIONS } from "discourse/lib/raw-handlebars-helpers";
import rawRenderGlimmer from "discourse/lib/raw-render-glimmer";
+import { addRawTemplate, removeRawTemplate } from "discourse/lib/raw-templates";
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
-import { compile } from "discourse-common/lib/raw-handlebars";
-import { RUNTIME_OPTIONS } from "discourse-common/lib/raw-handlebars-helpers";
-import {
- addRawTemplate,
- removeRawTemplate,
-} from "discourse-common/lib/raw-templates";
// We don't have any way to actually compile raw hbs inside tests, so this is only testing
// the helper itself, not the actual rendering of templates.
diff --git a/app/assets/javascripts/discourse/tests/loader-shims.js b/app/assets/javascripts/discourse/tests/loader-shims.js
index ea3030b52b6..3bf6b3468c6 100644
--- a/app/assets/javascripts/discourse/tests/loader-shims.js
+++ b/app/assets/javascripts/discourse/tests/loader-shims.js
@@ -1,5 +1,5 @@
import { importSync } from "@embroider/macros";
-import loaderShim from "discourse-common/lib/loader-shim";
+import loaderShim from "discourse/lib/loader-shim";
// AMD shims for the test bundle, see the comment in loader-shim.js
loaderShim("pretender", () => importSync("pretender"));
diff --git a/app/assets/javascripts/discourse/tests/setup-tests.js b/app/assets/javascripts/discourse/tests/setup-tests.js
index 450eb5f84f0..bb14d6d1290 100644
--- a/app/assets/javascripts/discourse/tests/setup-tests.js
+++ b/app/assets/javascripts/discourse/tests/setup-tests.js
@@ -40,9 +40,9 @@ import {
import { configureRaiseOnDeprecation } from "discourse/tests/helpers/raise-on-deprecation";
import { resetSettings } from "discourse/tests/helpers/site-settings";
import { disableCloaking } from "discourse/widgets/post-stream";
-import deprecated from "discourse-common/lib/deprecated";
-import { setDefaultOwner } from "discourse-common/lib/get-owner";
-import { setupS3CDN, setupURL } from "discourse-common/lib/get-url";
+import deprecated from "discourse/lib/deprecated";
+import { setDefaultOwner } from "discourse/lib/get-owner";
+import { setupS3CDN, setupURL } from "discourse/lib/get-url";
import { buildResolver } from "discourse-common/resolver";
import { loadSprites } from "../lib/svg-sprite-loader";
import * as FakerModule from "@faker-js/faker";
diff --git a/app/assets/javascripts/discourse/tests/unit/ember/resolver-test.js b/app/assets/javascripts/discourse/tests/unit/ember/resolver-test.js
index 36d7b23f7cd..25ef5cc2f7e 100644
--- a/app/assets/javascripts/discourse/tests/unit/ember/resolver-test.js
+++ b/app/assets/javascripts/discourse/tests/unit/ember/resolver-test.js
@@ -1,8 +1,8 @@
import { setupTest } from "ember-qunit";
import { module, test } from "qunit";
+import { withSilencedDeprecations } from "discourse/lib/deprecated";
+import DiscourseTemplateMap from "discourse/lib/discourse-template-map";
import { registerTemporaryModule } from "discourse/tests/helpers/temporary-module-helper";
-import { withSilencedDeprecations } from "discourse-common/lib/deprecated";
-import DiscourseTemplateMap from "discourse-common/lib/discourse-template-map";
import { buildResolver, setResolverOption } from "discourse-common/resolver";
let resolver;
diff --git a/app/assets/javascripts/discourse/tests/unit/lib/avatar-utils-test.js b/app/assets/javascripts/discourse/tests/unit/lib/avatar-utils-test.js
index 78ba52a5158..f72f4097190 100644
--- a/app/assets/javascripts/discourse/tests/unit/lib/avatar-utils-test.js
+++ b/app/assets/javascripts/discourse/tests/unit/lib/avatar-utils-test.js
@@ -4,8 +4,8 @@ import {
avatarImg,
avatarUrl,
getRawAvatarSize,
-} from "discourse-common/lib/avatar-utils";
-import { setupURL } from "discourse-common/lib/get-url";
+} from "discourse/lib/avatar-utils";
+import { setupURL } from "discourse/lib/get-url";
module("Unit | Utilities", function (hooks) {
setupTest(hooks);
diff --git a/app/assets/javascripts/discourse/tests/unit/lib/case-converter-test.js b/app/assets/javascripts/discourse/tests/unit/lib/case-converter-test.js
index 662ba44ccdf..214927d42ed 100644
--- a/app/assets/javascripts/discourse/tests/unit/lib/case-converter-test.js
+++ b/app/assets/javascripts/discourse/tests/unit/lib/case-converter-test.js
@@ -4,7 +4,7 @@ import {
camelCaseToDash,
camelCaseToSnakeCase,
snakeCaseToCamelCase,
-} from "discourse-common/lib/case-converter";
+} from "discourse/lib/case-converter";
module("Unit | discourse-common | case-converter", function (hooks) {
setupTest(hooks);
diff --git a/app/assets/javascripts/discourse/tests/unit/lib/category-badge-test.js b/app/assets/javascripts/discourse/tests/unit/lib/category-badge-test.js
index b655b828c92..29bf3fdafd6 100644
--- a/app/assets/javascripts/discourse/tests/unit/lib/category-badge-test.js
+++ b/app/assets/javascripts/discourse/tests/unit/lib/category-badge-test.js
@@ -3,7 +3,7 @@ import { setupTest } from "ember-qunit";
import $ from "jquery";
import { module, test } from "qunit";
import { categoryBadgeHTML } from "discourse/helpers/category-link";
-import { helperContext } from "discourse-common/lib/helpers";
+import { helperContext } from "discourse/lib/helpers";
module("Unit | Utility | category-badge", function (hooks) {
setupTest(hooks);
diff --git a/app/assets/javascripts/discourse/tests/unit/lib/click-track-test.js b/app/assets/javascripts/discourse/tests/unit/lib/click-track-test.js
index b35e5a02822..0efc27cb486 100644
--- a/app/assets/javascripts/discourse/tests/unit/lib/click-track-test.js
+++ b/app/assets/javascripts/discourse/tests/unit/lib/click-track-test.js
@@ -2,11 +2,11 @@ import { setupTest } from "ember-qunit";
import { module, test } from "qunit";
import sinon from "sinon";
import ClickTrack from "discourse/lib/click-track";
+import { setPrefix } from "discourse/lib/get-url";
import DiscourseURL from "discourse/lib/url";
import User from "discourse/models/user";
import pretender from "discourse/tests/helpers/create-pretender";
import { fixture, logIn } from "discourse/tests/helpers/qunit-helpers";
-import { setPrefix } from "discourse-common/lib/get-url";
const track = ClickTrack.trackClick;
diff --git a/app/assets/javascripts/discourse/tests/unit/lib/computed-test.js b/app/assets/javascripts/discourse/tests/unit/lib/computed-test.js
index 7122636f726..565a23ec4fd 100644
--- a/app/assets/javascripts/discourse/tests/unit/lib/computed-test.js
+++ b/app/assets/javascripts/discourse/tests/unit/lib/computed-test.js
@@ -11,7 +11,7 @@ import {
setting,
url,
} from "discourse/lib/computed";
-import { setPrefix } from "discourse-common/lib/get-url";
+import { setPrefix } from "discourse/lib/get-url";
module("Unit | Utility | computed", function (hooks) {
setupTest(hooks);
diff --git a/app/assets/javascripts/discourse/tests/unit/lib/deprecated-test.js b/app/assets/javascripts/discourse/tests/unit/lib/deprecated-test.js
index 4b1b92fcecb..fb2e1bdbcdf 100644
--- a/app/assets/javascripts/discourse/tests/unit/lib/deprecated-test.js
+++ b/app/assets/javascripts/discourse/tests/unit/lib/deprecated-test.js
@@ -2,15 +2,15 @@ import { deprecate as emberDeprecate } from "@ember/debug";
import { setupTest } from "ember-qunit";
import { module, test } from "qunit";
import Sinon from "sinon";
+import deprecated, {
+ withSilencedDeprecations,
+ withSilencedDeprecationsAsync,
+} from "discourse/lib/deprecated";
import DeprecationCounter from "discourse/tests/helpers/deprecation-counter";
import {
disableRaiseOnDeprecation,
enableRaiseOnDeprecation,
} from "discourse/tests/helpers/raise-on-deprecation";
-import deprecated, {
- withSilencedDeprecations,
- withSilencedDeprecationsAsync,
-} from "discourse-common/lib/deprecated";
module("Unit | Utility | deprecated", function (hooks) {
setupTest(hooks);
diff --git a/app/assets/javascripts/discourse/tests/unit/lib/dom-from-string-test.js b/app/assets/javascripts/discourse/tests/unit/lib/dom-from-string-test.js
index 10e942ce951..b1c74003de5 100644
--- a/app/assets/javascripts/discourse/tests/unit/lib/dom-from-string-test.js
+++ b/app/assets/javascripts/discourse/tests/unit/lib/dom-from-string-test.js
@@ -1,6 +1,6 @@
import { setupTest } from "ember-qunit";
import { module, test } from "qunit";
-import domFromString from "discourse-common/lib/dom-from-string";
+import domFromString from "discourse/lib/dom-from-string";
module("Unit | Utility | domFromString", function (hooks) {
setupTest(hooks);
diff --git a/app/assets/javascripts/discourse/tests/unit/lib/formatter-test.js b/app/assets/javascripts/discourse/tests/unit/lib/formatter-test.js
index a6dae937e74..4940b7ec785 100644
--- a/app/assets/javascripts/discourse/tests/unit/lib/formatter-test.js
+++ b/app/assets/javascripts/discourse/tests/unit/lib/formatter-test.js
@@ -1,6 +1,7 @@
import { getOwner } from "@ember/owner";
import { setupTest } from "ember-qunit";
import { module, test } from "qunit";
+import domFromString from "discourse/lib/dom-from-string";
import {
autoUpdatingRelativeAge,
duration,
@@ -12,7 +13,6 @@ import {
updateRelativeAge,
} from "discourse/lib/formatter";
import { fakeTime } from "discourse/tests/helpers/qunit-helpers";
-import domFromString from "discourse-common/lib/dom-from-string";
function formatMins(mins, opts = {}) {
const dt = new Date(new Date() - mins * 60 * 1000);
diff --git a/app/assets/javascripts/discourse/tests/unit/lib/get-url-test.js b/app/assets/javascripts/discourse/tests/unit/lib/get-url-test.js
index 45c78c7a49f..45a9cd4bc22 100644
--- a/app/assets/javascripts/discourse/tests/unit/lib/get-url-test.js
+++ b/app/assets/javascripts/discourse/tests/unit/lib/get-url-test.js
@@ -8,7 +8,7 @@ import getURL, {
setupS3CDN,
setupURL,
withoutPrefix,
-} from "discourse-common/lib/get-url";
+} from "discourse/lib/get-url";
module("Unit | Utility | get-url", function (hooks) {
setupTest(hooks);
diff --git a/app/assets/javascripts/discourse/tests/unit/lib/i18n-test.js b/app/assets/javascripts/discourse/tests/unit/lib/i18n-test.js
index b7416d8fa01..19c936b4173 100644
--- a/app/assets/javascripts/discourse/tests/unit/lib/i18n-test.js
+++ b/app/assets/javascripts/discourse/tests/unit/lib/i18n-test.js
@@ -1,6 +1,6 @@
import { setupTest } from "ember-qunit";
import { module, test } from "qunit";
-import { withSilencedDeprecations } from "discourse-common/lib/deprecated";
+import { withSilencedDeprecations } from "discourse/lib/deprecated";
import I18n, { i18n, I18nMissingInterpolationArgument } from "discourse-i18n";
module("Unit | Utility | i18n", function (hooks) {
diff --git a/app/assets/javascripts/discourse/tests/unit/lib/icon-library-test.js b/app/assets/javascripts/discourse/tests/unit/lib/icon-library-test.js
index 6b5e480b95c..6be36d87e8e 100644
--- a/app/assets/javascripts/discourse/tests/unit/lib/icon-library-test.js
+++ b/app/assets/javascripts/discourse/tests/unit/lib/icon-library-test.js
@@ -1,11 +1,11 @@
import { setupTest } from "ember-qunit";
import { module, test } from "qunit";
-import { withSilencedDeprecations } from "discourse-common/lib/deprecated";
+import { withSilencedDeprecations } from "discourse/lib/deprecated";
import {
convertIconClass,
iconHTML,
iconNode,
-} from "discourse-common/lib/icon-library";
+} from "discourse/lib/icon-library";
module("Unit | Utility | icon-library", function (hooks) {
setupTest(hooks);
diff --git a/app/assets/javascripts/discourse/tests/unit/lib/lightbox/helpers/preload-item-images-test.js b/app/assets/javascripts/discourse/tests/unit/lib/lightbox/helpers/preload-item-images-test.js
index 1ee9977a0a6..faf66c11c37 100644
--- a/app/assets/javascripts/discourse/tests/unit/lib/lightbox/helpers/preload-item-images-test.js
+++ b/app/assets/javascripts/discourse/tests/unit/lib/lightbox/helpers/preload-item-images-test.js
@@ -1,10 +1,10 @@
import { module, test } from "qunit";
import { preloadItemImages } from "discourse/lib/lightbox/helpers";
+import { cloneJSON } from "discourse/lib/object";
import {
generateLightboxObject,
LIGHTBOX_IMAGE_FIXTURES,
} from "discourse/tests/helpers/lightbox-helpers";
-import { cloneJSON } from "discourse-common/lib/object";
module(
"Unit | lib | Experimental Lightbox | Helpers | preloadItemImages()",
diff --git a/app/assets/javascripts/discourse/tests/unit/lib/lightbox/process-html-test.js b/app/assets/javascripts/discourse/tests/unit/lib/lightbox/process-html-test.js
index ad5d4ff2267..a1de2ce5205 100644
--- a/app/assets/javascripts/discourse/tests/unit/lib/lightbox/process-html-test.js
+++ b/app/assets/javascripts/discourse/tests/unit/lib/lightbox/process-html-test.js
@@ -1,5 +1,6 @@
import { setupTest } from "ember-qunit";
import { module, test } from "qunit";
+import domFromString from "discourse/lib/dom-from-string";
import { SELECTORS } from "discourse/lib/lightbox/constants";
import { processHTML } from "discourse/lib/lightbox/process-html";
import {
@@ -7,7 +8,6 @@ import {
generateLightboxMarkup,
LIGHTBOX_IMAGE_FIXTURES,
} from "discourse/tests/helpers/lightbox-helpers";
-import domFromString from "discourse-common/lib/dom-from-string";
module("Unit | lib | Experimental lightbox | processHTML()", function (hooks) {
setupTest(hooks);
diff --git a/app/assets/javascripts/discourse/tests/unit/lib/link-mentions-test.js b/app/assets/javascripts/discourse/tests/unit/lib/link-mentions-test.js
index 9d6bbbe0aba..197c9d845f1 100644
--- a/app/assets/javascripts/discourse/tests/unit/lib/link-mentions-test.js
+++ b/app/assets/javascripts/discourse/tests/unit/lib/link-mentions-test.js
@@ -1,11 +1,11 @@
import { setupTest } from "ember-qunit";
import { module, test } from "qunit";
+import domFromString from "discourse/lib/dom-from-string";
import {
fetchUnseenMentions,
linkSeenMentions,
} from "discourse/lib/link-mentions";
import pretender, { response } from "discourse/tests/helpers/create-pretender";
-import domFromString from "discourse-common/lib/dom-from-string";
module("Unit | Utility | link-mentions", function (hooks) {
setupTest(hooks);
diff --git a/app/assets/javascripts/discourse/tests/unit/lib/notification-types/bookmark-reminder-test.js b/app/assets/javascripts/discourse/tests/unit/lib/notification-types/bookmark-reminder-test.js
index 80bcf2352d8..fd928806b7a 100644
--- a/app/assets/javascripts/discourse/tests/unit/lib/notification-types/bookmark-reminder-test.js
+++ b/app/assets/javascripts/discourse/tests/unit/lib/notification-types/bookmark-reminder-test.js
@@ -1,10 +1,10 @@
import { htmlSafe } from "@ember/template";
import { setupTest } from "ember-qunit";
import { module, test } from "qunit";
+import { deepMerge } from "discourse/lib/object";
import Notification from "discourse/models/notification";
import { NOTIFICATION_TYPES } from "discourse/tests/fixtures/concerns/notification-types";
import { createRenderDirector } from "discourse/tests/helpers/notification-types-helper";
-import { deepMerge } from "discourse-common/lib/object";
import { i18n } from "discourse-i18n";
function getNotification(overrides = {}) {
diff --git a/app/assets/javascripts/discourse/tests/unit/lib/notification-types/granted-badge-test.js b/app/assets/javascripts/discourse/tests/unit/lib/notification-types/granted-badge-test.js
index 991638928dd..54443a0ffd6 100644
--- a/app/assets/javascripts/discourse/tests/unit/lib/notification-types/granted-badge-test.js
+++ b/app/assets/javascripts/discourse/tests/unit/lib/notification-types/granted-badge-test.js
@@ -1,9 +1,9 @@
import { setupTest } from "ember-qunit";
import { module, test } from "qunit";
+import { deepMerge } from "discourse/lib/object";
import Notification from "discourse/models/notification";
import { NOTIFICATION_TYPES } from "discourse/tests/fixtures/concerns/notification-types";
import { createRenderDirector } from "discourse/tests/helpers/notification-types-helper";
-import { deepMerge } from "discourse-common/lib/object";
import { i18n } from "discourse-i18n";
function getNotification(overrides = {}) {
diff --git a/app/assets/javascripts/discourse/tests/unit/lib/notification-types/group-mentioned-test.js b/app/assets/javascripts/discourse/tests/unit/lib/notification-types/group-mentioned-test.js
index 42579189d47..8f4c64ec27c 100644
--- a/app/assets/javascripts/discourse/tests/unit/lib/notification-types/group-mentioned-test.js
+++ b/app/assets/javascripts/discourse/tests/unit/lib/notification-types/group-mentioned-test.js
@@ -1,9 +1,9 @@
import { setupTest } from "ember-qunit";
import { module, test } from "qunit";
+import { deepMerge } from "discourse/lib/object";
import Notification from "discourse/models/notification";
import { NOTIFICATION_TYPES } from "discourse/tests/fixtures/concerns/notification-types";
import { createRenderDirector } from "discourse/tests/helpers/notification-types-helper";
-import { deepMerge } from "discourse-common/lib/object";
function getNotification(overrides = {}) {
return Notification.create(
diff --git a/app/assets/javascripts/discourse/tests/unit/lib/notification-types/group-message-summary-test.js b/app/assets/javascripts/discourse/tests/unit/lib/notification-types/group-message-summary-test.js
index 4a6773d6c91..10327bbeede 100644
--- a/app/assets/javascripts/discourse/tests/unit/lib/notification-types/group-message-summary-test.js
+++ b/app/assets/javascripts/discourse/tests/unit/lib/notification-types/group-message-summary-test.js
@@ -1,9 +1,9 @@
import { setupTest } from "ember-qunit";
import { module, test } from "qunit";
+import { deepMerge } from "discourse/lib/object";
import Notification from "discourse/models/notification";
import { NOTIFICATION_TYPES } from "discourse/tests/fixtures/concerns/notification-types";
import { createRenderDirector } from "discourse/tests/helpers/notification-types-helper";
-import { deepMerge } from "discourse-common/lib/object";
import { i18n } from "discourse-i18n";
function getNotification(overrides = {}) {
diff --git a/app/assets/javascripts/discourse/tests/unit/lib/notification-types/liked-consolidated-test.js b/app/assets/javascripts/discourse/tests/unit/lib/notification-types/liked-consolidated-test.js
index 7a7ea5cc3de..e3ae1d182f6 100644
--- a/app/assets/javascripts/discourse/tests/unit/lib/notification-types/liked-consolidated-test.js
+++ b/app/assets/javascripts/discourse/tests/unit/lib/notification-types/liked-consolidated-test.js
@@ -1,9 +1,9 @@
import { setupTest } from "ember-qunit";
import { module, test } from "qunit";
+import { deepMerge } from "discourse/lib/object";
import Notification from "discourse/models/notification";
import { NOTIFICATION_TYPES } from "discourse/tests/fixtures/concerns/notification-types";
import { createRenderDirector } from "discourse/tests/helpers/notification-types-helper";
-import { deepMerge } from "discourse-common/lib/object";
import { i18n } from "discourse-i18n";
function getNotification(overrides = {}) {
diff --git a/app/assets/javascripts/discourse/tests/unit/lib/notification-types/liked-test.js b/app/assets/javascripts/discourse/tests/unit/lib/notification-types/liked-test.js
index 68ca2e6229a..eef0ab5ecd0 100644
--- a/app/assets/javascripts/discourse/tests/unit/lib/notification-types/liked-test.js
+++ b/app/assets/javascripts/discourse/tests/unit/lib/notification-types/liked-test.js
@@ -1,9 +1,9 @@
import { setupTest } from "ember-qunit";
import { module, test } from "qunit";
+import { deepMerge } from "discourse/lib/object";
import Notification from "discourse/models/notification";
import { NOTIFICATION_TYPES } from "discourse/tests/fixtures/concerns/notification-types";
import { createRenderDirector } from "discourse/tests/helpers/notification-types-helper";
-import { deepMerge } from "discourse-common/lib/object";
import { i18n } from "discourse-i18n";
function getNotification(overrides = {}) {
diff --git a/app/assets/javascripts/discourse/tests/unit/lib/notification-types/linked-consolidated-test.js b/app/assets/javascripts/discourse/tests/unit/lib/notification-types/linked-consolidated-test.js
index ff0d7449cea..7771f0d20f0 100644
--- a/app/assets/javascripts/discourse/tests/unit/lib/notification-types/linked-consolidated-test.js
+++ b/app/assets/javascripts/discourse/tests/unit/lib/notification-types/linked-consolidated-test.js
@@ -1,9 +1,9 @@
import { setupTest } from "ember-qunit";
import { module, test } from "qunit";
+import { deepMerge } from "discourse/lib/object";
import Notification from "discourse/models/notification";
import { NOTIFICATION_TYPES } from "discourse/tests/fixtures/concerns/notification-types";
import { createRenderDirector } from "discourse/tests/helpers/notification-types-helper";
-import { deepMerge } from "discourse-common/lib/object";
import { i18n } from "discourse-i18n";
function getNotification(overrides = {}) {
diff --git a/app/assets/javascripts/discourse/tests/unit/lib/plugin-api-test.js b/app/assets/javascripts/discourse/tests/unit/lib/plugin-api-test.js
index f18c408cad5..60c22d78699 100644
--- a/app/assets/javascripts/discourse/tests/unit/lib/plugin-api-test.js
+++ b/app/assets/javascripts/discourse/tests/unit/lib/plugin-api-test.js
@@ -3,8 +3,8 @@ import { getOwner } from "@ember/owner";
import { setupTest } from "ember-qunit";
import { module, test } from "qunit";
import { rollbackAllPrepends } from "discourse/lib/class-prepend";
+import discourseComputed from "discourse/lib/decorators";
import { withPluginApi } from "discourse/lib/plugin-api";
-import discourseComputed from "discourse-common/utils/decorators";
module("Unit | Utility | plugin-api", function (hooks) {
setupTest(hooks);
diff --git a/app/assets/javascripts/discourse/tests/unit/lib/pretty-text-test.js b/app/assets/javascripts/discourse/tests/unit/lib/pretty-text-test.js
index 08fe7a9fbcf..186d78c89ce 100644
--- a/app/assets/javascripts/discourse/tests/unit/lib/pretty-text-test.js
+++ b/app/assets/javascripts/discourse/tests/unit/lib/pretty-text-test.js
@@ -6,7 +6,7 @@ import {
deleteCachedInlineOnebox,
} from "pretty-text/inline-oneboxer";
import QUnit, { module, test } from "qunit";
-import { deepMerge } from "discourse-common/lib/object";
+import { deepMerge } from "discourse/lib/object";
import DiscourseMarkdownIt from "discourse-markdown-it";
import { extractDataAttribute } from "discourse-markdown-it/engine";
diff --git a/app/assets/javascripts/discourse/tests/unit/lib/suffix-trie-test.js b/app/assets/javascripts/discourse/tests/unit/lib/suffix-trie-test.js
index a42fe87a14c..0f5ebd2947f 100644
--- a/app/assets/javascripts/discourse/tests/unit/lib/suffix-trie-test.js
+++ b/app/assets/javascripts/discourse/tests/unit/lib/suffix-trie-test.js
@@ -1,6 +1,6 @@
import { setupTest } from "ember-qunit";
import { module, test } from "qunit";
-import SuffixTrie from "discourse-common/lib/suffix-trie";
+import SuffixTrie from "discourse/lib/suffix-trie";
module("Unit | SuffixTrie", function (hooks) {
setupTest(hooks);
diff --git a/app/assets/javascripts/discourse/tests/unit/lib/url-test.js b/app/assets/javascripts/discourse/tests/unit/lib/url-test.js
index f6540783b40..87bf991e732 100644
--- a/app/assets/javascripts/discourse/tests/unit/lib/url-test.js
+++ b/app/assets/javascripts/discourse/tests/unit/lib/url-test.js
@@ -1,6 +1,7 @@
import { setupTest } from "ember-qunit";
import { module, test } from "qunit";
import sinon from "sinon";
+import { setPrefix } from "discourse/lib/get-url";
import DiscourseURL, {
getCanonicalUrl,
getCategoryAndTagUrl,
@@ -8,7 +9,6 @@ import DiscourseURL, {
userPath,
} from "discourse/lib/url";
import { logIn } from "discourse/tests/helpers/qunit-helpers";
-import { setPrefix } from "discourse-common/lib/get-url";
module("Unit | Utility | url", function (hooks) {
setupTest(hooks);
diff --git a/app/assets/javascripts/discourse/tests/unit/models/email-log-test.js b/app/assets/javascripts/discourse/tests/unit/models/email-log-test.js
index 7f2b1c01e19..85b32278ed5 100644
--- a/app/assets/javascripts/discourse/tests/unit/models/email-log-test.js
+++ b/app/assets/javascripts/discourse/tests/unit/models/email-log-test.js
@@ -1,7 +1,7 @@
import { getOwner } from "@ember/owner";
import { setupTest } from "ember-qunit";
import { module, test } from "qunit";
-import { setPrefix } from "discourse-common/lib/get-url";
+import { setPrefix } from "discourse/lib/get-url";
module("Unit | Model | email-log", function (hooks) {
setupTest(hooks);
diff --git a/app/assets/javascripts/discourse/tests/unit/models/report-test.js b/app/assets/javascripts/discourse/tests/unit/models/report-test.js
index d138612c0ad..1ed0b305c8d 100644
--- a/app/assets/javascripts/discourse/tests/unit/models/report-test.js
+++ b/app/assets/javascripts/discourse/tests/unit/models/report-test.js
@@ -1,7 +1,7 @@
import { getOwner } from "@ember/owner";
import { setupTest } from "ember-qunit";
import { module, test } from "qunit";
-import { setPrefix } from "discourse-common/lib/get-url";
+import { setPrefix } from "discourse/lib/get-url";
function reportWithData(data) {
const store = getOwner(this).lookup("service:store");
diff --git a/app/assets/javascripts/discourse/tests/unit/models/user-badge-test.js b/app/assets/javascripts/discourse/tests/unit/models/user-badge-test.js
index 177ea0741b9..723b06ee828 100644
--- a/app/assets/javascripts/discourse/tests/unit/models/user-badge-test.js
+++ b/app/assets/javascripts/discourse/tests/unit/models/user-badge-test.js
@@ -1,9 +1,9 @@
import { getOwner } from "@ember/owner";
import { setupTest } from "ember-qunit";
import { module, test } from "qunit";
+import { cloneJSON } from "discourse/lib/object";
import UserBadge from "discourse/models/user-badge";
import badgeFixtures from "discourse/tests/fixtures/user-badges";
-import { cloneJSON } from "discourse-common/lib/object";
module("Unit | Model | user-badge", function (hooks) {
setupTest(hooks);
diff --git a/app/assets/javascripts/discourse/tests/unit/utils/decorators-test.js b/app/assets/javascripts/discourse/tests/unit/utils/decorators-test.js
index 0c22822d7e0..d09cb81cbb6 100644
--- a/app/assets/javascripts/discourse/tests/unit/utils/decorators-test.js
+++ b/app/assets/javascripts/discourse/tests/unit/utils/decorators-test.js
@@ -4,14 +4,14 @@ import { clearRender, render, settled } from "@ember/test-helpers";
import { observes as nativeClassObserves } from "@ember-decorators/object";
import { hbs } from "ember-cli-htmlbars";
import { module, test } from "qunit";
-import { setupRenderingTest } from "discourse/tests/helpers/component-test";
-import { withSilencedDeprecations } from "discourse-common/lib/deprecated";
import discourseComputed, {
afterRender,
debounce,
observes,
on,
-} from "discourse-common/utils/decorators";
+} from "discourse/lib/decorators";
+import { withSilencedDeprecations } from "discourse/lib/deprecated";
+import { setupRenderingTest } from "discourse/tests/helpers/component-test";
// eslint-disable-next-line ember/no-classic-classes
const fooComponent = Component.extend({
diff --git a/app/assets/javascripts/discourse/tests/unit/utils/dom-utils-test.js b/app/assets/javascripts/discourse/tests/unit/utils/dom-utils-test.js
index 530b1ee92e3..9e1598d146a 100644
--- a/app/assets/javascripts/discourse/tests/unit/utils/dom-utils-test.js
+++ b/app/assets/javascripts/discourse/tests/unit/utils/dom-utils-test.js
@@ -1,8 +1,8 @@
import { render } from "@ember/test-helpers";
import { hbs } from "ember-cli-htmlbars";
import { module, test } from "qunit";
+import domUtils from "discourse/lib/dom-utils";
import { setupRenderingTest } from "discourse/tests/helpers/component-test";
-import domUtils from "discourse-common/utils/dom-utils";
module("Unit | Utils | dom-utils", function (hooks) {
setupRenderingTest(hooks);
diff --git a/app/assets/javascripts/discourse/tests/unit/utils/multi-cache-test.js b/app/assets/javascripts/discourse/tests/unit/utils/multi-cache-test.js
index 96c2f5d2d79..ebe3dd3d8c2 100644
--- a/app/assets/javascripts/discourse/tests/unit/utils/multi-cache-test.js
+++ b/app/assets/javascripts/discourse/tests/unit/utils/multi-cache-test.js
@@ -1,5 +1,5 @@
import { module, test } from "qunit";
-import { MultiCache } from "discourse-common/utils/multi-cache";
+import { MultiCache } from "discourse/lib/multi-cache";
module("Unit | Utils | multi-cache", function (hooks) {
let requests, cache;
diff --git a/app/assets/javascripts/float-kit/addon/components/d-popover.gjs b/app/assets/javascripts/float-kit/addon/components/d-popover.gjs
index 13f77c20e17..9915391b6a3 100644
--- a/app/assets/javascripts/float-kit/addon/components/d-popover.gjs
+++ b/app/assets/javascripts/float-kit/addon/components/d-popover.gjs
@@ -1,7 +1,7 @@
import Component from "@glimmer/component";
import { service } from "@ember/service";
import { modifier } from "ember-modifier";
-import deprecated from "discourse-common/lib/deprecated";
+import deprecated from "discourse/lib/deprecated";
export default class DPopover extends Component {
@service tooltip;
diff --git a/app/assets/javascripts/float-kit/addon/lib/float-kit-instance.js b/app/assets/javascripts/float-kit/addon/lib/float-kit-instance.js
index 71c26952921..9699ffedd3e 100644
--- a/app/assets/javascripts/float-kit/addon/lib/float-kit-instance.js
+++ b/app/assets/javascripts/float-kit/addon/lib/float-kit-instance.js
@@ -2,9 +2,9 @@ import { tracked } from "@glimmer/tracking";
import { action } from "@ember/object";
import { cancel } from "@ember/runloop";
import { service } from "@ember/service";
-import { makeArray } from "discourse-common/lib/helpers";
-import discourseLater from "discourse-common/lib/later";
-import { bind } from "discourse-common/utils/decorators";
+import { bind } from "discourse/lib/decorators";
+import { makeArray } from "discourse/lib/helpers";
+import discourseLater from "discourse/lib/later";
const TOUCH_OPTIONS = { passive: true, capture: true };
diff --git a/app/assets/javascripts/float-kit/addon/lib/update-position.js b/app/assets/javascripts/float-kit/addon/lib/update-position.js
index d37e9693336..e62a398cdc8 100644
--- a/app/assets/javascripts/float-kit/addon/lib/update-position.js
+++ b/app/assets/javascripts/float-kit/addon/lib/update-position.js
@@ -6,10 +6,10 @@ import {
offset,
shift,
} from "@floating-ui/dom";
+import domFromString from "discourse/lib/dom-from-string";
+import { iconHTML } from "discourse/lib/icon-library";
import { headerOffset } from "discourse/lib/offset-calculator";
import { isTesting } from "discourse-common/config/environment";
-import domFromString from "discourse-common/lib/dom-from-string";
-import { iconHTML } from "discourse-common/lib/icon-library";
import { FLOAT_UI_PLACEMENTS } from "float-kit/lib/constants";
const centerOffset = offset(({ rects }) => {
diff --git a/app/assets/javascripts/float-kit/addon/modifiers/apply-floating-ui.js b/app/assets/javascripts/float-kit/addon/modifiers/apply-floating-ui.js
index b8bb1f11f27..dd021ce12a6 100644
--- a/app/assets/javascripts/float-kit/addon/modifiers/apply-floating-ui.js
+++ b/app/assets/javascripts/float-kit/addon/modifiers/apply-floating-ui.js
@@ -1,7 +1,7 @@
import { registerDestructor } from "@ember/destroyable";
import { autoUpdate } from "@floating-ui/dom";
import Modifier from "ember-modifier";
-import { bind } from "discourse-common/utils/decorators";
+import { bind } from "discourse/lib/decorators";
import { updatePosition } from "float-kit/lib/update-position";
export default class FloatKitApplyFloatingUi extends Modifier {
diff --git a/app/assets/javascripts/float-kit/addon/modifiers/auto-close-toast.js b/app/assets/javascripts/float-kit/addon/modifiers/auto-close-toast.js
index bdba438f249..cf02699f2fe 100644
--- a/app/assets/javascripts/float-kit/addon/modifiers/auto-close-toast.js
+++ b/app/assets/javascripts/float-kit/addon/modifiers/auto-close-toast.js
@@ -1,8 +1,8 @@
import { registerDestructor } from "@ember/destroyable";
import { cancel } from "@ember/runloop";
import Modifier from "ember-modifier";
-import discourseLater from "discourse-common/lib/later";
-import { bind } from "discourse-common/utils/decorators";
+import { bind } from "discourse/lib/decorators";
+import discourseLater from "discourse/lib/later";
const CSS_TRANSITION_DELAY_MS = 300;
const TRANSITION_CLASS = "-fade-out";
diff --git a/app/assets/javascripts/float-kit/addon/modifiers/close-on-escape.js b/app/assets/javascripts/float-kit/addon/modifiers/close-on-escape.js
index e19aa016df7..2b649f1fd89 100644
--- a/app/assets/javascripts/float-kit/addon/modifiers/close-on-escape.js
+++ b/app/assets/javascripts/float-kit/addon/modifiers/close-on-escape.js
@@ -1,6 +1,6 @@
import { registerDestructor } from "@ember/destroyable";
import Modifier from "ember-modifier";
-import { bind } from "discourse-common/utils/decorators";
+import { bind } from "discourse/lib/decorators";
export default class FloatKitCloseOnEscape extends Modifier {
constructor(owner, args) {
diff --git a/app/assets/javascripts/pretty-text/addon/oneboxer.js b/app/assets/javascripts/pretty-text/addon/oneboxer.js
index ba4ffbce0c3..ec2eb6ed00e 100644
--- a/app/assets/javascripts/pretty-text/addon/oneboxer.js
+++ b/app/assets/javascripts/pretty-text/addon/oneboxer.js
@@ -7,8 +7,8 @@ import {
setFailedCache,
setLocalCache,
} from "pretty-text/oneboxer-cache";
-import domFromString from "discourse-common/lib/dom-from-string";
-import discourseLater from "discourse-common/lib/later";
+import domFromString from "discourse/lib/dom-from-string";
+import discourseLater from "discourse/lib/later";
let timeout;
const loadingQueue = [];
diff --git a/app/assets/javascripts/pretty-text/addon/pretty-text.js b/app/assets/javascripts/pretty-text/addon/pretty-text.js
index 942d1becc0d..f6e2cd6e12c 100644
--- a/app/assets/javascripts/pretty-text/addon/pretty-text.js
+++ b/app/assets/javascripts/pretty-text/addon/pretty-text.js
@@ -1,4 +1,4 @@
-import deprecated from "discourse-common/lib/deprecated";
+import deprecated from "discourse/lib/deprecated";
export function registerOption() {
deprecated(
diff --git a/app/assets/javascripts/pretty-text/addon/sanitizer.js b/app/assets/javascripts/pretty-text/addon/sanitizer.js
index f34cf7a8ad0..141a8920a90 100644
--- a/app/assets/javascripts/pretty-text/addon/sanitizer.js
+++ b/app/assets/javascripts/pretty-text/addon/sanitizer.js
@@ -1,5 +1,5 @@
import xss from "xss";
-import escape from "discourse-common/lib/escape";
+import escape from "discourse/lib/escape";
// Should match any