diff --git a/.gitignore b/.gitignore
index d9811a0f842..e3bc8a66421 100644
--- a/.gitignore
+++ b/.gitignore
@@ -121,6 +121,10 @@ openapi/*
# direnv.net
.direnv
+# Types
+frontend/discourse-types/declarations
+*.tsbuildinfo
+
# discourse-ai evals
/plugins/discourse-ai/evals/cases
/plugins/discourse-ai/evals/log
diff --git a/.pnpmfile.cjs b/.pnpmfile.cjs
index 91c1bc55e37..9439b8c721a 100644
--- a/.pnpmfile.cjs
+++ b/.pnpmfile.cjs
@@ -47,7 +47,7 @@ const pluginName =
if (
pluginName &&
- fs.existsSync(`${discourseRoot}/plugins/${pluginName}/package.json`) &&
+ fs.existsSync(`${discourseRoot}/plugins/${pluginName}/pnpm-lock.yaml`) &&
!process.argv.includes("--ignore-workspace")
) {
console.log(
diff --git a/bin/ember-cli b/bin/ember-cli
index f21049eb135..9ccb5bc53fa 100755
--- a/bin/ember-cli
+++ b/bin/ember-cli
@@ -2,6 +2,7 @@
# frozen_string_literal: true
require "pathname"
+require "open3"
RAILS_ROOT = File.expand_path("../../", Pathname.new(__FILE__).realpath)
PORT = ENV["UNICORN_PORT"] ||= "3000"
@@ -94,9 +95,9 @@ if ARGV.include?("-u") || ARGV.include?("--unicorn")
unicorn_pid = spawn(unicorn_env, __dir__ + "/unicorn")
ember_cli_pid = nil
+ tsc_pid = nil
Thread.new do
- require "open3"
Open3.popen2e(pnpm_env, "pnpm", *args.to_a.flatten) do |i, oe, t|
ember_cli_pid = t.pid
puts "Ember CLI running on PID: #{ember_cli_pid}"
@@ -115,6 +116,20 @@ if ARGV.include?("-u") || ARGV.include?("--unicorn")
end
end
+ Thread.new do
+ Open3.popen2e(pnpm_env, "pnpm", "ember-tsc", "-b", "--watch", "--preserveWatchOutput") do |i, oe, t|
+ tsc_pid = t.pid
+ puts "Ember TSC running on PID: #{tsc_pid}"
+ oe.each do |line|
+ puts "[ember-tsc] #{line}"
+ end
+ end
+ if process_running?(unicorn_pid)
+ puts "[bin/ember-cli] ember-tsc process stopped. Terminating unicorn."
+ Process.kill("TERM", unicorn_pid)
+ end
+ end
+
trap("SIGINT") do
# we got to swallow sigint to give time for
# children to handle it
@@ -126,6 +141,11 @@ if ARGV.include?("-u") || ARGV.include?("--unicorn")
puts "[bin/ember-cli] unicorn process stopped. Terminating ember-cli."
Process.kill("TERM", ember_cli_pid)
end
+
+ if tsc_pid && process_running?(tsc_pid)
+ puts "[bin/ember-cli] unicorn process stopped. Terminating ember-tsc."
+ Process.kill("TERM", tsc_pid)
+ end
else
exec(pnpm_env, "pnpm", *args.to_a.flatten)
end
diff --git a/frontend/discourse-types/external-types.d.ts b/frontend/discourse-types/external-types.d.ts
new file mode 100644
index 00000000000..2edc20729c2
--- /dev/null
+++ b/frontend/discourse-types/external-types.d.ts
@@ -0,0 +1,59 @@
+///
+
+declare module "@glimmer/component" {
+ export { default } from "@types/@glimmer__component";
+}
+
+declare module "@glint/template/-private/integration" {
+ export {
+ AnyFunction,
+ AnyContext,
+ AnyBlocks,
+ InvokeDirect,
+ DirectInvokable,
+ Invoke,
+ InvokableInstance,
+ Invokable,
+ Context,
+ HasContext,
+ ModifierReturn,
+ ComponentReturn,
+ TemplateContext,
+ FlattenBlockParams,
+ NamedArgs,
+ NamedArgsMarker,
+ NamedArgNames,
+ UnwrapNamedArgs,
+ } from "@types/@glint__template/-private/integration";
+}
+
+declare module "@glint/ember-tsc/-private/dsl" {
+ export {
+ resolve,
+ resolveOrReturn,
+ templateExpression,
+ Globals,
+ AnyFunction,
+ AnyContext,
+ AnyBlocks,
+ InvokeDirect,
+ DirectInvokable,
+ Invoke,
+ InvokableInstance,
+ Invokable,
+ Context,
+ HasContext,
+ ModifierReturn,
+ ComponentReturn,
+ TemplateContext,
+ FlattenBlockParams,
+ NamedArgs,
+ NamedArgsMarker,
+ NamedArgNames,
+ UnwrapNamedArgs,
+ } from "@types/@glint__ember-tsc/-private/dsl";
+}
+
+declare module "qunit" {
+ export { module, test } from "@types/qunit";
+}
diff --git a/frontend/discourse-types/package.json b/frontend/discourse-types/package.json
new file mode 100644
index 00000000000..edd7b536184
--- /dev/null
+++ b/frontend/discourse-types/package.json
@@ -0,0 +1,34 @@
+{
+ "name": "@discourse/types",
+ "version": "0.0.0",
+ "description": "Types only",
+ "license": "GPL-2.0-only",
+ "author": "Discourse",
+ "exports": {
+ "./tsconfig-plugin": "./tsconfig-plugin.json",
+ "./external-types": {
+ "types": "./external-types.d.ts"
+ },
+ "./tests/*": {
+ "types": "./declarations/tests/*.d.ts"
+ },
+ "./admin/*": {
+ "types": "./declarations/admin/*.d.ts"
+ },
+ "./*": {
+ "types": "./declarations/app/*.d.ts"
+ }
+ },
+ "dependencies": {
+ "ember-source": "~6.6.0",
+ "@types/@glimmer__component": "npm:@glimmer/component@^2.0.0",
+ "@types/@glint__ember-tsc": "npm:@glint/ember-tsc@^1.0.7",
+ "@types/@glint__template": "npm:@glint/template@^1.7.2"
+ },
+ "engines": {
+ "node": ">= 18",
+ "npm": "please-use-pnpm",
+ "yarn": "please-use-pnpm",
+ "pnpm": "^9"
+ }
+}
diff --git a/frontend/discourse-types/tsconfig-plugin.json b/frontend/discourse-types/tsconfig-plugin.json
new file mode 100644
index 00000000000..0ab71fc69a6
--- /dev/null
+++ b/frontend/discourse-types/tsconfig-plugin.json
@@ -0,0 +1,16 @@
+{
+ "compilerOptions": {
+ "target": "es2021",
+ "module": "nodenext",
+ "moduleResolution": "nodenext",
+ "experimentalDecorators": true,
+ "allowJs": true,
+ "skipLibCheck": true,
+ "noEmit": true,
+ "noEmitOnError": false,
+ "declaration": true,
+ "outDir": "declarations",
+ "composite": true,
+ "types": ["discourse/external-types"],
+ }
+}
diff --git a/frontend/discourse/admin/adapters/build-plugin.js b/frontend/discourse/admin/adapters/build-plugin.js
index 98b875ba94b..c31a7c0eacb 100644
--- a/frontend/discourse/admin/adapters/build-plugin.js
+++ b/frontend/discourse/admin/adapters/build-plugin.js
@@ -1,5 +1,6 @@
import RestAdapter from "discourse/adapters/rest";
+/** @returns {any} */
export default function buildPluginAdapter(pluginName) {
return class extends RestAdapter {
pathFor(store, type, findArgs) {
diff --git a/frontend/discourse/admin/components/admin-config-areas/user-fields-list.gjs b/frontend/discourse/admin/components/admin-config-areas/user-fields-list.gjs
index 47d71be6d3e..920f3d7fef8 100644
--- a/frontend/discourse/admin/components/admin-config-areas/user-fields-list.gjs
+++ b/frontend/discourse/admin/components/admin-config-areas/user-fields-list.gjs
@@ -13,6 +13,7 @@ export default class AdminConfigAreasUserFieldsList extends Component {
@service toasts;
@service adminUserFields;
+ /** @type {any} */
fieldTypes = UserField.fieldTypes();
get fields() {
diff --git a/frontend/discourse/admin/components/admin-user-fields-form.gjs b/frontend/discourse/admin/components/admin-user-fields-form.gjs
index bc388cbf687..db870c2f3ee 100644
--- a/frontend/discourse/admin/components/admin-user-fields-form.gjs
+++ b/frontend/discourse/admin/components/admin-user-fields-form.gjs
@@ -25,6 +25,7 @@ export default class AdminUserFieldsForm extends Component {
originalRequirement = this.args.userField.requirement;
userField;
+ /** @returns {any} */
get fieldTypes() {
return UserField.fieldTypes();
}
diff --git a/frontend/discourse/admin/components/edit-category-panel.gjs b/frontend/discourse/admin/components/edit-category-panel.gjs
index 8541636980c..e813396ea79 100644
--- a/frontend/discourse/admin/components/edit-category-panel.gjs
+++ b/frontend/discourse/admin/components/edit-category-panel.gjs
@@ -18,6 +18,7 @@ export default class EditCategoryPanel extends Component {
}
+/** @returns { any } */
export function buildCategoryPanel(tab) {
@classNameBindings(
":edit-category-tab",
diff --git a/frontend/discourse/admin/models/color-scheme.js b/frontend/discourse/admin/models/color-scheme.js
index 7ed9a059466..03c4170b619 100644
--- a/frontend/discourse/admin/models/color-scheme.js
+++ b/frontend/discourse/admin/models/color-scheme.js
@@ -55,6 +55,7 @@ export default class ColorScheme extends EmberObject {
init() {
super.init(...arguments);
+ /** @type Array */
const colors = A(this.colors ?? []);
this.colors = colors.map((c) => {
return ColorSchemeColor.create(c);
@@ -103,6 +104,7 @@ export default class ColorScheme extends EmberObject {
const newScheme = ColorScheme.create({
name: this.name,
can_edit: true,
+ /** @type Array */
colors: A(),
});
this.colors.forEach((c) => {
@@ -206,6 +208,7 @@ export default class ColorScheme extends EmberObject {
});
}
+ /** @returns {any} */
destroy() {
if (this.id) {
return ajax(`/admin/color_schemes/${this.id}`, { type: "DELETE" });
diff --git a/frontend/discourse/admin/routes/admin-watched-words.js b/frontend/discourse/admin/routes/admin-watched-words.js
index ef75d2331b2..700dfe8b9f0 100644
--- a/frontend/discourse/admin/routes/admin-watched-words.js
+++ b/frontend/discourse/admin/routes/admin-watched-words.js
@@ -11,6 +11,7 @@ export default class AdminWatchedWordsRoute extends DiscourseRoute {
return i18n("admin.config.watched_words.title");
}
+ /** @returns {any} */
model() {
return WatchedWord.findAll();
}
diff --git a/frontend/discourse/app/app.js b/frontend/discourse/app/app.js
index 64bbb55b6f8..d4600a13052 100644
--- a/frontend/discourse/app/app.js
+++ b/frontend/discourse/app/app.js
@@ -300,7 +300,3 @@ function printDebugInfo() {
}
export default Discourse;
-
-/**
- * @typedef {import('ember-source/types')} EmberTypes
- */
diff --git a/frontend/discourse/app/components/d-otp/index.gjs b/frontend/discourse/app/components/d-otp/index.gjs
index a16cfdd699b..be9f1506c1c 100644
--- a/frontend/discourse/app/components/d-otp/index.gjs
+++ b/frontend/discourse/app/components/d-otp/index.gjs
@@ -8,6 +8,7 @@ import { TrackedArray } from "@ember-compat/tracked-built-ins";
import autoFocus from "discourse/modifiers/auto-focus";
import preventScrollOnFocus from "discourse/modifiers/prevent-scroll-on-focus";
import { i18n } from "discourse-i18n";
+/** @type {import("./slot.gjs").default} */
import Slot from "./slot";
const DEFAULT_SLOTS = 6;
diff --git a/frontend/discourse/app/controllers/signup.js b/frontend/discourse/app/controllers/signup.js
index d2294fd024d..a3c18799f7b 100644
--- a/frontend/discourse/app/controllers/signup.js
+++ b/frontend/discourse/app/controllers/signup.js
@@ -39,6 +39,7 @@ export default class SignupPageController extends Controller {
accountChallenge = 0;
accountHoneypot = 0;
formSubmitted = false;
+ /** @type Array */
rejectedEmails = A();
prefilledUsername = null;
maskPassword = true;
diff --git a/frontend/discourse/app/helpers/helper-fn.js b/frontend/discourse/app/helpers/helper-fn.js
index ab8ab4ccca8..30e2a69ef19 100644
--- a/frontend/discourse/app/helpers/helper-fn.js
+++ b/frontend/discourse/app/helpers/helper-fn.js
@@ -9,7 +9,7 @@ import { bind } from "discourse/lib/decorators";
* Whenever any autotracked state is changed, the cleanup function will be run, and your function
* will be re-evaluated.
*
- * @param {(args: object, on: { cleanup: () => void } ) => any} fn - The helper function.
+ * @returns {typeof Helper} - A Helper subclass with cleanup logic.
*/
export default function helperFn(callback) {
return class extends Helper {
diff --git a/frontend/discourse/app/helpers/lazy-hash.js b/frontend/discourse/app/helpers/lazy-hash.js
index 6e08b198fc4..7b5618091d7 100644
--- a/frontend/discourse/app/helpers/lazy-hash.js
+++ b/frontend/discourse/app/helpers/lazy-hash.js
@@ -23,11 +23,17 @@ class LazyHash {
// Like ember's builtin hash helper, but instead of returning a reified object
// every time its referenced, it returns a static proxy object with auto-trackable keys.
-export default setInternalHelperManager(({ named: namedRefs }) => {
- let instance;
- return createComputeRef(
- () => (instance ??= new LazyHash(namedRefs)),
- null,
- "lazy-hash"
- );
-}, {});
+/**
+ * @type (opts: any) => any
+ */
+export default setInternalHelperManager(
+ ({ named: namedRefs }) => {
+ let instance;
+ return createComputeRef(
+ () => (instance ??= new LazyHash(namedRefs)),
+ null,
+ "lazy-hash"
+ );
+ },
+ function lazyHash() {}
+);
diff --git a/frontend/discourse/app/lib/api.js b/frontend/discourse/app/lib/api.js
index 33525a229d0..334fc6ca12b 100644
--- a/frontend/discourse/app/lib/api.js
+++ b/frontend/discourse/app/lib/api.js
@@ -6,7 +6,7 @@ let _apiInitializerId = 0;
/**
* Define an initializer which will execute a callback with a PluginApi object.
*
- * @param {(api: import("discourse/lib/plugin-api").PluginApi, opts: object) => any} apiCodeCallback - The callback function to execute
+ * @param {(api: import("./plugin-api.gjs").PluginApi, opts: object) => any} apiCodeCallback - The callback function to execute
* @param {object} [opts] - Optional additional options to pass to the callback function.
*/
export function apiInitializer(apiCodeCallback, opts) {
diff --git a/frontend/discourse/app/lib/composer/rich-editor-extensions.js b/frontend/discourse/app/lib/composer/rich-editor-extensions.js
index 4155df1b1a1..9c09d391726 100644
--- a/frontend/discourse/app/lib/composer/rich-editor-extensions.js
+++ b/frontend/discourse/app/lib/composer/rich-editor-extensions.js
@@ -6,10 +6,10 @@
* @property {number} topicId
* @property {number} categoryId
* @property {import("discourse/models/session").default} session
- * @property {import("float-kit/services/menu").default} menu
+ * @property {import("discourse/float-kit/services/menu").default} menu
* @property {import("discourse/services/capabilities").default} capabilities
* @property {import("discourse/services/modal").default} modal
- * @property {import("float-kit/services/toasts").default} toasts
+ * @property {import("discourse/float-kit/services/toasts").default} toasts
* @property {import("discourse/models/site").default} site
* @property {(toolbar: import("discourse/lib/composer/toolbar").ToolbarBase) => void} replaceToolbar
* @property {(nodeView: import("discourse/static/prosemirror/lib/glimmer-node-view").default) => void} addGlimmerNodeView
diff --git a/frontend/discourse/app/lib/load-js-diff.js b/frontend/discourse/app/lib/load-js-diff.js
index 3be4da6b4aa..a5b112b521c 100644
--- a/frontend/discourse/app/lib/load-js-diff.js
+++ b/frontend/discourse/app/lib/load-js-diff.js
@@ -2,6 +2,9 @@
Plugins & themes are unable to async-import npm modules directly.
This wrapper provides them with a way to use morphlex, while keeping the `import()` in core's codebase.
*/
+/**
+ * @returns {Promise}
+ */
export default async function loadJSDiff() {
return await import("diff");
}
diff --git a/frontend/discourse/app/lib/plugin-api.gjs b/frontend/discourse/app/lib/plugin-api.gjs
index 9f83edd29ba..cc564cdd5ba 100644
--- a/frontend/discourse/app/lib/plugin-api.gjs
+++ b/frontend/discourse/app/lib/plugin-api.gjs
@@ -238,9 +238,9 @@ function wrapWithErrorHandler(func, messageKey) {
}
/**
- * @typedef {PluginApi} PluginApi
+ * @typedef {_PluginApi} PluginApi
*/
-class PluginApi {
+class _PluginApi {
constructor(container) {
this.container = container;
this.h = h;
@@ -3460,7 +3460,7 @@ function getPluginApi() {
let pluginApi = owner.lookup("plugin-api:main");
if (!pluginApi) {
- pluginApi = new PluginApi(owner);
+ pluginApi = new _PluginApi(owner);
owner.registry.register("plugin-api:main", pluginApi, {
instantiate: false,
});
@@ -3475,7 +3475,7 @@ function getPluginApi() {
/**
* Executes the provided callback function with the `PluginApi` object.
*
- * @param {(api: PluginApi, opts: object) => any} apiCodeCallback - The callback function to execute
+ * @param {(api: _PluginApi, opts: object) => any} apiCodeCallback - The callback function to execute
* @param {object} [opts] - Optional additional options to pass to the callback function.
* @returns {any} The result of the `callback` function, if executed
*/
diff --git a/frontend/discourse/app/mapping-router.js b/frontend/discourse/app/mapping-router.js
index 86c1ab68bca..6e487f3509e 100644
--- a/frontend/discourse/app/mapping-router.js
+++ b/frontend/discourse/app/mapping-router.js
@@ -97,6 +97,7 @@ class RouteNode {
}
}
+/** @returns {any} */
export function mapRoutes() {
const tree = new RouteNode("root");
const extras = [];
diff --git a/frontend/discourse/app/models/category.js b/frontend/discourse/app/models/category.js
index 05cc4714cac..825edfba764 100644
--- a/frontend/discourse/app/models/category.js
+++ b/frontend/discourse/app/models/category.js
@@ -578,7 +578,12 @@ export default class Category extends RestModel {
@discourseComputed("id")
searchContext(id) {
- return { type: "category", id, category: this };
+ return {
+ type: "category",
+ id,
+ /** @type Category */
+ category: this,
+ };
}
@discourseComputed("parentCategory.ancestors")
diff --git a/frontend/discourse/app/models/tag.js b/frontend/discourse/app/models/tag.js
index ac53953152a..e4add42c40e 100644
--- a/frontend/discourse/app/models/tag.js
+++ b/frontend/discourse/app/models/tag.js
@@ -12,6 +12,12 @@ export default class Tag extends RestModel {
@discourseComputed("id")
searchContext(id) {
- return { type: "tag", id, tag: this, name: id };
+ return {
+ type: "tag",
+ id,
+ /** @type Tag */
+ tag: this,
+ name: id,
+ };
}
}
diff --git a/frontend/discourse/app/models/user.js b/frontend/discourse/app/models/user.js
index 2b4d29386c6..23fad1e8087 100644
--- a/frontend/discourse/app/models/user.js
+++ b/frontend/discourse/app/models/user.js
@@ -314,6 +314,7 @@ export default class User extends RestModel.extend(Evented) {
return {
type: "user",
id: username,
+ /** @type User */
user: this,
};
}
diff --git a/frontend/discourse/app/routes/build-category-route.js b/frontend/discourse/app/routes/build-category-route.js
index 69168295e16..69c77b7ea6f 100644
--- a/frontend/discourse/app/routes/build-category-route.js
+++ b/frontend/discourse/app/routes/build-category-route.js
@@ -170,6 +170,7 @@ class AbstractCategoryRoute extends DiscourseRoute {
}
// A helper function to create a category route with parameters
+/** @returns {any} */
export default function buildCategoryRoute(routeConfig) {
return class extends AbstractCategoryRoute {
routeConfig = routeConfig;
diff --git a/frontend/discourse/app/routes/build-group-messages-route.js b/frontend/discourse/app/routes/build-group-messages-route.js
index c177dde84a8..954a90bb84a 100644
--- a/frontend/discourse/app/routes/build-group-messages-route.js
+++ b/frontend/discourse/app/routes/build-group-messages-route.js
@@ -1,6 +1,7 @@
import UserTopicListRoute from "discourse/routes/user-topic-list";
import { i18n } from "discourse-i18n";
+/** @returns {any} */
export default (type) => {
return class BuildGroupMessagesRoute extends UserTopicListRoute {
titleToken() {
diff --git a/frontend/discourse/app/routes/build-private-messages-route.js b/frontend/discourse/app/routes/build-private-messages-route.js
index 102fd853e5f..9a92402a441 100644
--- a/frontend/discourse/app/routes/build-private-messages-route.js
+++ b/frontend/discourse/app/routes/build-private-messages-route.js
@@ -13,6 +13,7 @@ export const INBOX_FILTER = "inbox";
export const ARCHIVE_FILTER = "archive";
// A helper to build a user topic list route
+/** @returns {any} */
export default (inboxType, path, filter) => {
return class BuildPrivateMessagesRoute extends UserTopicListRoute {
userActionType = UserAction.TYPES.messages_received;
diff --git a/frontend/discourse/app/routes/build-topic-route.js b/frontend/discourse/app/routes/build-topic-route.js
index 0e5273c9973..9a8631b3d82 100644
--- a/frontend/discourse/app/routes/build-topic-route.js
+++ b/frontend/discourse/app/routes/build-topic-route.js
@@ -148,6 +148,7 @@ class AbstractTopicRoute extends DiscourseRoute {
}
}
+/** @returns {any} */
export default function buildTopicRoute(filter) {
return class extends AbstractTopicRoute {
routeConfig = { filter };
diff --git a/frontend/discourse/app/routes/group/activity/posts.js b/frontend/discourse/app/routes/group/activity/posts.js
index 23e1cc44f0d..49cabb5fc3b 100644
--- a/frontend/discourse/app/routes/group/activity/posts.js
+++ b/frontend/discourse/app/routes/group/activity/posts.js
@@ -3,6 +3,7 @@ import { TrackedArray } from "@ember-compat/tracked-built-ins";
import DiscourseRoute from "discourse/routes/discourse";
import { i18n } from "discourse-i18n";
+/** @returns {any} */
export function buildGroupPage(type) {
return class GroupActivityPosts extends DiscourseRoute {
type = type;
diff --git a/frontend/discourse/app/routes/tag/show.js b/frontend/discourse/app/routes/tag/show.js
index 2ddb16e48d0..f9a2ab42456 100644
--- a/frontend/discourse/app/routes/tag/show.js
+++ b/frontend/discourse/app/routes/tag/show.js
@@ -215,6 +215,7 @@ export default class TagShowRoute extends DiscourseRoute {
}
}
+/** @returns {any} */
export function buildTagRoute(routeConfig = {}) {
return class extends TagShowRoute {
routeConfig = routeConfig;
diff --git a/frontend/discourse/app/services/composer.js b/frontend/discourse/app/services/composer.js
index 85cb4da9268..933ff1cb543 100644
--- a/frontend/discourse/app/services/composer.js
+++ b/frontend/discourse/app/services/composer.js
@@ -147,6 +147,9 @@ export default class ComposerService extends Service {
this._showPreview = value;
}
+ /**
+ * @returns {import("discourse/controllers/topic").default};
+ */
get topicController() {
return getOwner(this).lookup("controller:topic");
}
diff --git a/frontend/discourse/app/services/presence.js b/frontend/discourse/app/services/presence.js
index e1dc06012bb..5e712d1f050 100644
--- a/frontend/discourse/app/services/presence.js
+++ b/frontend/discourse/app/services/presence.js
@@ -303,6 +303,7 @@ export default class PresenceService extends Service {
getChannel(channelName) {
return PresenceChannel.create({
name: channelName,
+ /** @type PresenceService */
presenceService: this,
});
}
diff --git a/frontend/discourse/app/services/store.js b/frontend/discourse/app/services/store.js
index 296b484dfdb..5eecc3eae42 100644
--- a/frontend/discourse/app/services/store.js
+++ b/frontend/discourse/app/services/store.js
@@ -275,6 +275,7 @@ export default class StoreService extends Service {
loadMoreUrl: pageTarget["load_more_" + typeName],
refreshUrl: pageTarget["refresh_" + typeName],
resultSetMeta: result.meta,
+ /** @type StoreService */
store: this,
__type: type,
};
diff --git a/frontend/discourse/tsconfig.json b/frontend/discourse/tsconfig.json
new file mode 100644
index 00000000000..db8b548d672
--- /dev/null
+++ b/frontend/discourse/tsconfig.json
@@ -0,0 +1,30 @@
+{
+ "include": [
+ "./app/**/*",
+ "./tests/**/*",
+ "./admin/**/*",
+ "./select-kit/**/*",
+ "./float-kit/**/*",
+ "./truth-helpers/**/*",
+ "./dialog-holder/**/*",
+ "./config/environment.js"
+ ],
+ "exclude": ["./tests/unit/utils/decorators-test.js"],
+ "extends": "../../tsconfig-base.json",
+ "compilerOptions": {
+ "composite": true,
+ "rootDir": "./",
+ "outDir": "../discourse-types/declarations",
+ "types": ["ember-source/types"],
+ "paths": {
+ "discourse/tests/*": ["./tests/*"],
+ "discourse/admin/*": ["./admin/*"],
+ "discourse/select-kit/*": ["./select-kit/*"],
+ "discourse/float-kit/*": ["./float-kit/*"],
+ "discourse/truth-helpers/*": ["./truth-helpers/*"],
+ "discourse/truth-helpers": ["./truth-helpers/index.js"],
+ "discourse/dialog-holder/*": ["./dialog-holder/*"],
+ "discourse/*": ["./app/*"],
+ }
+ }
+}
diff --git a/jsconfig.json b/jsconfig.json
deleted file mode 100644
index 7f6bae84323..00000000000
--- a/jsconfig.json
+++ /dev/null
@@ -1,317 +0,0 @@
-// This file was generated by script/build_jsconfig.rb
-{
- "compilerOptions": {
- "target": "es2021",
- "module": "esnext",
- "moduleResolution": "bundler",
- "experimentalDecorators": true,
- "allowJs": true,
- "paths": {
- "discourse/admin/*": [
- "./frontend/discourse/admin/*"
- ],
- "discourse/*": [
- "./frontend/discourse/app/*"
- ],
- "discourse/tests/*": [
- "./frontend/discourse/tests/*"
- ],
- "admin/*": [
- "./frontend/discourse/admin/*"
- ],
- "pretty-text/*": [
- "./frontend/pretty-text/addon/*"
- ],
- "select-kit/*": [
- "./frontend/discourse/select-kit/*"
- ],
- "float-kit/*": [
- "./frontend/discourse/float-kit/*"
- ],
- "truth-helpers/*": [
- "./frontend/discourse/truth-helpers/*"
- ],
- "dialog-holder/*": [
- "./frontend/discourse/dialog-holder/*"
- ],
- "discourse/plugins/automation/*": [
- "./plugins/automation/assets/javascripts/*",
- "./plugins/automation/test/javascripts/*"
- ],
- "discourse/plugins/chat/*": [
- "./plugins/chat/assets/javascripts/*",
- "./plugins/chat/test/javascripts/*"
- ],
- "discourse/plugins/checklist/*": [
- "./plugins/checklist/assets/javascripts/*",
- "./plugins/checklist/test/javascripts/*"
- ],
- "discourse/plugins/discourse-adplugin/*": [
- "./plugins/discourse-adplugin/assets/javascripts/*",
- "./plugins/discourse-adplugin/test/javascripts/*"
- ],
- "discourse/plugins/discourse-affiliate/*": [
- "./plugins/discourse-affiliate/assets/javascripts/*",
- "./plugins/discourse-affiliate/test/javascripts/*"
- ],
- "discourse/plugins/discourse-ai/*": [
- "./plugins/discourse-ai/assets/javascripts/*",
- "./plugins/discourse-ai/test/javascripts/*"
- ],
- "discourse/plugins/discourse-apple-auth/*": [
- "./plugins/discourse-apple-auth/assets/javascripts/*",
- "./plugins/discourse-apple-auth/test/javascripts/*"
- ],
- "discourse/plugins/discourse-assign/*": [
- "./plugins/discourse-assign/assets/javascripts/*",
- "./plugins/discourse-assign/test/javascripts/*"
- ],
- "discourse/plugins/discourse-cakeday/*": [
- "./plugins/discourse-cakeday/assets/javascripts/*",
- "./plugins/discourse-cakeday/test/javascripts/*"
- ],
- "discourse/plugins/discourse-calendar/*": [
- "./plugins/discourse-calendar/assets/javascripts/*",
- "./plugins/discourse-calendar/test/javascripts/*"
- ],
- "discourse/plugins/discourse-chat-integration/*": [
- "./plugins/discourse-chat-integration/assets/javascripts/*",
- "./plugins/discourse-chat-integration/test/javascripts/*"
- ],
- "discourse/plugins/discourse-data-explorer/*": [
- "./plugins/discourse-data-explorer/assets/javascripts/*",
- "./plugins/discourse-data-explorer/test/javascripts/*"
- ],
- "discourse/plugins/discourse-details/*": [
- "./plugins/discourse-details/assets/javascripts/*",
- "./plugins/discourse-details/test/javascripts/*"
- ],
- "discourse/plugins/discourse-gamification/*": [
- "./plugins/discourse-gamification/assets/javascripts/*",
- "./plugins/discourse-gamification/test/javascripts/*"
- ],
- "discourse/plugins/discourse-github/*": [
- "./plugins/discourse-github/assets/javascripts/*",
- "./plugins/discourse-github/test/javascripts/*"
- ],
- "discourse/plugins/discourse-graphviz/*": [
- "./plugins/discourse-graphviz/assets/javascripts/*",
- "./plugins/discourse-graphviz/test/javascripts/*"
- ],
- "discourse/plugins/discourse-hcaptcha/*": [
- "./plugins/discourse-hcaptcha/assets/javascripts/*",
- "./plugins/discourse-hcaptcha/test/javascripts/*"
- ],
- "discourse/plugins/discourse-lazy-videos/*": [
- "./plugins/discourse-lazy-videos/assets/javascripts/*",
- "./plugins/discourse-lazy-videos/test/javascripts/*"
- ],
- "discourse/plugins/discourse-local-dates/*": [
- "./plugins/discourse-local-dates/assets/javascripts/*",
- "./plugins/discourse-local-dates/test/javascripts/*"
- ],
- "discourse/plugins/discourse-login-with-amazon/*": [
- "./plugins/discourse-login-with-amazon/assets/javascripts/*",
- "./plugins/discourse-login-with-amazon/test/javascripts/*"
- ],
- "discourse/plugins/discourse-lti/*": [
- "./plugins/discourse-lti/assets/javascripts/*",
- "./plugins/discourse-lti/test/javascripts/*"
- ],
- "discourse/plugins/discourse-math/*": [
- "./plugins/discourse-math/assets/javascripts/*",
- "./plugins/discourse-math/test/javascripts/*"
- ],
- "discourse/plugins/discourse-microsoft-auth/*": [
- "./plugins/discourse-microsoft-auth/assets/javascripts/*",
- "./plugins/discourse-microsoft-auth/test/javascripts/*"
- ],
- "discourse/plugins/discourse-narrative-bot/*": [
- "./plugins/discourse-narrative-bot/assets/javascripts/*",
- "./plugins/discourse-narrative-bot/test/javascripts/*"
- ],
- "discourse/plugins/discourse-oauth2-basic/*": [
- "./plugins/discourse-oauth2-basic/assets/javascripts/*",
- "./plugins/discourse-oauth2-basic/test/javascripts/*"
- ],
- "discourse/plugins/discourse-openid-connect/*": [
- "./plugins/discourse-openid-connect/assets/javascripts/*",
- "./plugins/discourse-openid-connect/test/javascripts/*"
- ],
- "discourse/plugins/discourse-patreon/*": [
- "./plugins/discourse-patreon/assets/javascripts/*",
- "./plugins/discourse-patreon/test/javascripts/*"
- ],
- "discourse/plugins/discourse-policy/*": [
- "./plugins/discourse-policy/assets/javascripts/*",
- "./plugins/discourse-policy/test/javascripts/*"
- ],
- "discourse/plugins/discourse-post-voting/*": [
- "./plugins/discourse-post-voting/assets/javascripts/*",
- "./plugins/discourse-post-voting/test/javascripts/*"
- ],
- "discourse/plugins/discourse-presence/*": [
- "./plugins/discourse-presence/assets/javascripts/*",
- "./plugins/discourse-presence/test/javascripts/*"
- ],
- "discourse/plugins/discourse-reactions/*": [
- "./plugins/discourse-reactions/assets/javascripts/*",
- "./plugins/discourse-reactions/test/javascripts/*"
- ],
- "discourse/plugins/discourse-rss-polling/*": [
- "./plugins/discourse-rss-polling/assets/javascripts/*",
- "./plugins/discourse-rss-polling/test/javascripts/*"
- ],
- "discourse/plugins/discourse-solved/*": [
- "./plugins/discourse-solved/assets/javascripts/*",
- "./plugins/discourse-solved/test/javascripts/*"
- ],
- "discourse/plugins/discourse-subscriptions/*": [
- "./plugins/discourse-subscriptions/assets/javascripts/*",
- "./plugins/discourse-subscriptions/test/javascripts/*"
- ],
- "discourse/plugins/discourse-templates/*": [
- "./plugins/discourse-templates/assets/javascripts/*",
- "./plugins/discourse-templates/test/javascripts/*"
- ],
- "discourse/plugins/discourse-topic-voting/*": [
- "./plugins/discourse-topic-voting/assets/javascripts/*",
- "./plugins/discourse-topic-voting/test/javascripts/*"
- ],
- "discourse/plugins/discourse-user-notes/*": [
- "./plugins/discourse-user-notes/assets/javascripts/*",
- "./plugins/discourse-user-notes/test/javascripts/*"
- ],
- "discourse/plugins/discourse-zendesk-plugin/*": [
- "./plugins/discourse-zendesk-plugin/assets/javascripts/*",
- "./plugins/discourse-zendesk-plugin/test/javascripts/*"
- ],
- "discourse/plugins/footnote/*": [
- "./plugins/footnote/assets/javascripts/*",
- "./plugins/footnote/test/javascripts/*"
- ],
- "discourse/plugins/poll/*": [
- "./plugins/poll/assets/javascripts/*",
- "./plugins/poll/test/javascripts/*"
- ],
- "discourse/plugins/spoiler-alert/*": [
- "./plugins/spoiler-alert/assets/javascripts/*",
- "./plugins/spoiler-alert/test/javascripts/*"
- ],
- "discourse/plugins/styleguide/*": [
- "./plugins/styleguide/assets/javascripts/*",
- "./plugins/styleguide/test/javascripts/*"
- ],
- "discourse/themes/foundation/*": [
- "./themes/foundation/javascripts/*",
- "./themes/foundation/test/*"
- ],
- "discourse/themes/horizon/*": [
- "./themes/horizon/javascripts/*",
- "./themes/horizon/test/*"
- ]
- }
- },
- "include": [
- "./frontend/discourse/admin",
- "./frontend/discourse/app",
- "./frontend/discourse/tests",
- "./frontend/discourse/admin",
- "./frontend/pretty-text/addon",
- "./frontend/discourse/select-kit",
- "./frontend/discourse/float-kit",
- "./frontend/discourse/truth-helpers",
- "./frontend/discourse/dialog-holder",
- "./plugins/automation/assets/javascripts",
- "./plugins/automation/test/javascripts",
- "./plugins/chat/assets/javascripts",
- "./plugins/chat/test/javascripts",
- "./plugins/checklist/assets/javascripts",
- "./plugins/checklist/test/javascripts",
- "./plugins/discourse-adplugin/assets/javascripts",
- "./plugins/discourse-adplugin/test/javascripts",
- "./plugins/discourse-affiliate/assets/javascripts",
- "./plugins/discourse-affiliate/test/javascripts",
- "./plugins/discourse-ai/assets/javascripts",
- "./plugins/discourse-ai/test/javascripts",
- "./plugins/discourse-apple-auth/assets/javascripts",
- "./plugins/discourse-apple-auth/test/javascripts",
- "./plugins/discourse-assign/assets/javascripts",
- "./plugins/discourse-assign/test/javascripts",
- "./plugins/discourse-cakeday/assets/javascripts",
- "./plugins/discourse-cakeday/test/javascripts",
- "./plugins/discourse-calendar/assets/javascripts",
- "./plugins/discourse-calendar/test/javascripts",
- "./plugins/discourse-chat-integration/assets/javascripts",
- "./plugins/discourse-chat-integration/test/javascripts",
- "./plugins/discourse-data-explorer/assets/javascripts",
- "./plugins/discourse-data-explorer/test/javascripts",
- "./plugins/discourse-details/assets/javascripts",
- "./plugins/discourse-details/test/javascripts",
- "./plugins/discourse-gamification/assets/javascripts",
- "./plugins/discourse-gamification/test/javascripts",
- "./plugins/discourse-github/assets/javascripts",
- "./plugins/discourse-github/test/javascripts",
- "./plugins/discourse-graphviz/assets/javascripts",
- "./plugins/discourse-graphviz/test/javascripts",
- "./plugins/discourse-hcaptcha/assets/javascripts",
- "./plugins/discourse-hcaptcha/test/javascripts",
- "./plugins/discourse-lazy-videos/assets/javascripts",
- "./plugins/discourse-lazy-videos/test/javascripts",
- "./plugins/discourse-local-dates/assets/javascripts",
- "./plugins/discourse-local-dates/test/javascripts",
- "./plugins/discourse-login-with-amazon/assets/javascripts",
- "./plugins/discourse-login-with-amazon/test/javascripts",
- "./plugins/discourse-lti/assets/javascripts",
- "./plugins/discourse-lti/test/javascripts",
- "./plugins/discourse-math/assets/javascripts",
- "./plugins/discourse-math/test/javascripts",
- "./plugins/discourse-microsoft-auth/assets/javascripts",
- "./plugins/discourse-microsoft-auth/test/javascripts",
- "./plugins/discourse-narrative-bot/assets/javascripts",
- "./plugins/discourse-narrative-bot/test/javascripts",
- "./plugins/discourse-oauth2-basic/assets/javascripts",
- "./plugins/discourse-oauth2-basic/test/javascripts",
- "./plugins/discourse-openid-connect/assets/javascripts",
- "./plugins/discourse-openid-connect/test/javascripts",
- "./plugins/discourse-patreon/assets/javascripts",
- "./plugins/discourse-patreon/test/javascripts",
- "./plugins/discourse-policy/assets/javascripts",
- "./plugins/discourse-policy/test/javascripts",
- "./plugins/discourse-post-voting/assets/javascripts",
- "./plugins/discourse-post-voting/test/javascripts",
- "./plugins/discourse-presence/assets/javascripts",
- "./plugins/discourse-presence/test/javascripts",
- "./plugins/discourse-reactions/assets/javascripts",
- "./plugins/discourse-reactions/test/javascripts",
- "./plugins/discourse-rss-polling/assets/javascripts",
- "./plugins/discourse-rss-polling/test/javascripts",
- "./plugins/discourse-solved/assets/javascripts",
- "./plugins/discourse-solved/test/javascripts",
- "./plugins/discourse-subscriptions/assets/javascripts",
- "./plugins/discourse-subscriptions/test/javascripts",
- "./plugins/discourse-templates/assets/javascripts",
- "./plugins/discourse-templates/test/javascripts",
- "./plugins/discourse-topic-voting/assets/javascripts",
- "./plugins/discourse-topic-voting/test/javascripts",
- "./plugins/discourse-user-notes/assets/javascripts",
- "./plugins/discourse-user-notes/test/javascripts",
- "./plugins/discourse-zendesk-plugin/assets/javascripts",
- "./plugins/discourse-zendesk-plugin/test/javascripts",
- "./plugins/footnote/assets/javascripts",
- "./plugins/footnote/test/javascripts",
- "./plugins/poll/assets/javascripts",
- "./plugins/poll/test/javascripts",
- "./plugins/spoiler-alert/assets/javascripts",
- "./plugins/spoiler-alert/test/javascripts",
- "./plugins/styleguide/assets/javascripts",
- "./plugins/styleguide/test/javascripts",
- "./themes/foundation/javascripts",
- "./themes/foundation/test",
- "./themes/horizon/javascripts",
- "./themes/horizon/test"
- ],
- "exclude": [
- "frontend/discourse/tests/unit/utils/decorators-test.js"
- ]
-}
diff --git a/package.json b/package.json
index 36f51050a94..589a87d45ae 100644
--- a/package.json
+++ b/package.json
@@ -1,5 +1,4 @@
{
- "name": "discourse",
"private": true,
"repository": "https://github.com/discourse/discourse",
"author": "Discourse",
@@ -10,6 +9,7 @@
"@discourse/moment-timezone-names-translations": "^1.0.0",
"@fortawesome/fontawesome-free": "6.7.2",
"@glint/ember-tsc": "^1.0.7",
+ "@glint/tsserver-plugin": "^2.0.7",
"@rdil/parallel-prettier": "^3.0.0",
"@swc/core": "^1.15.0",
"chrome-launcher": "^1.2.1",
@@ -43,7 +43,7 @@
"lint:hbs:fix": "ember-template-lint 'frontend/**/*.{gjs,hbs}' 'plugins/*/assets/javascripts/**/*.{gjs,hbs}' 'plugins/*/admin/assets/javascripts/**/*.{gjs,hbs}' 'themes/**/*.{gjs,hbs}' --fix",
"lint:prettier": "pnpm pprettier --list-different 'app/assets/stylesheets/**/*.scss' 'frontend/**/*.{js,gjs,hbs,css}' $(script/list_bundled_plugins '/assets/stylesheets/**/*.scss') $(script/list_bundled_plugins '/{assets,admin/assets,test}/javascripts/**/*.{js,gjs,hbs}') 'themes/**/*.{js,gjs,hbs,scss}'",
"lint:prettier:fix": "pnpm prettier -w --no-error-on-unmatched-pattern 'app/assets/stylesheets/**/*.scss' 'frontend/**/*.{js,gjs,hbs,css}' $(script/list_bundled_plugins '/assets/stylesheets/**/*.scss') $(script/list_bundled_plugins '/{assets,admin/assets,test}/javascripts/**/*.{js,gjs,hbs}') 'themes/**/*.{js,gjs,hbs,scss}'",
- "lint:glint": "ember-tsc -p jsconfig.json --noEmit",
+ "lint:glint": "ember-tsc -b",
"lttf:ignore": "lint-to-the-future ignore",
"lttf:output": "lint-to-the-future output -o ./lint-progress/",
"lint-progress": "pnpm lttf:output && npx html-pages ./lint-progress --no-cache",
diff --git a/plugins/automation/package.json b/plugins/automation/package.json
new file mode 100644
index 00000000000..cddae255cd8
--- /dev/null
+++ b/plugins/automation/package.json
@@ -0,0 +1,6 @@
+{
+ "private": true,
+ "dependencies": {
+ "discourse": "workspace:@discourse/types@0.0.0"
+ }
+}
diff --git a/plugins/automation/tsconfig.json b/plugins/automation/tsconfig.json
new file mode 100644
index 00000000000..be202cef93f
--- /dev/null
+++ b/plugins/automation/tsconfig.json
@@ -0,0 +1,12 @@
+{
+ "extends": "discourse/tsconfig-plugin",
+ "include": [
+ "./assets/javascripts/**/*",
+ "./test/javascripts/**/*"
+ ],
+ "compilerOptions": {
+ "paths": {
+ "discourse/plugins/automation/*": ["./assets/javascripts/*"]
+ }
+ }
+}
diff --git a/plugins/chat/package.json b/plugins/chat/package.json
new file mode 100644
index 00000000000..cddae255cd8
--- /dev/null
+++ b/plugins/chat/package.json
@@ -0,0 +1,6 @@
+{
+ "private": true,
+ "dependencies": {
+ "discourse": "workspace:@discourse/types@0.0.0"
+ }
+}
diff --git a/plugins/chat/tsconfig.json b/plugins/chat/tsconfig.json
new file mode 100644
index 00000000000..9f52037bca0
--- /dev/null
+++ b/plugins/chat/tsconfig.json
@@ -0,0 +1,12 @@
+{
+ "extends": "discourse/tsconfig-plugin",
+ "include": [
+ "./assets/javascripts/**/*",
+ "./test/javascripts/**/*"
+ ],
+ "compilerOptions": {
+ "paths": {
+ "discourse/plugins/chat/*": ["./assets/javascripts/*"]
+ }
+ }
+}
diff --git a/plugins/checklist/package.json b/plugins/checklist/package.json
new file mode 100644
index 00000000000..cddae255cd8
--- /dev/null
+++ b/plugins/checklist/package.json
@@ -0,0 +1,6 @@
+{
+ "private": true,
+ "dependencies": {
+ "discourse": "workspace:@discourse/types@0.0.0"
+ }
+}
diff --git a/plugins/checklist/tsconfig.json b/plugins/checklist/tsconfig.json
new file mode 100644
index 00000000000..fdc311d2b21
--- /dev/null
+++ b/plugins/checklist/tsconfig.json
@@ -0,0 +1,12 @@
+{
+ "extends": "discourse/tsconfig-plugin",
+ "include": [
+ "./assets/javascripts/**/*",
+ "./test/javascripts/**/*"
+ ],
+ "compilerOptions": {
+ "paths": {
+ "discourse/plugins/checklist/*": ["./assets/javascripts/*"]
+ }
+ }
+}
diff --git a/plugins/discourse-adplugin/package.json b/plugins/discourse-adplugin/package.json
new file mode 100644
index 00000000000..cddae255cd8
--- /dev/null
+++ b/plugins/discourse-adplugin/package.json
@@ -0,0 +1,6 @@
+{
+ "private": true,
+ "dependencies": {
+ "discourse": "workspace:@discourse/types@0.0.0"
+ }
+}
diff --git a/plugins/discourse-adplugin/tsconfig.json b/plugins/discourse-adplugin/tsconfig.json
new file mode 100644
index 00000000000..c72e2029810
--- /dev/null
+++ b/plugins/discourse-adplugin/tsconfig.json
@@ -0,0 +1,12 @@
+{
+ "extends": "discourse/tsconfig-plugin",
+ "include": [
+ "./assets/javascripts/**/*",
+ "./test/javascripts/**/*"
+ ],
+ "compilerOptions": {
+ "paths": {
+ "discourse/plugins/discourse-adplugin/*": ["./assets/javascripts/*"]
+ }
+ }
+}
diff --git a/plugins/discourse-affiliate/package.json b/plugins/discourse-affiliate/package.json
new file mode 100644
index 00000000000..cddae255cd8
--- /dev/null
+++ b/plugins/discourse-affiliate/package.json
@@ -0,0 +1,6 @@
+{
+ "private": true,
+ "dependencies": {
+ "discourse": "workspace:@discourse/types@0.0.0"
+ }
+}
diff --git a/plugins/discourse-affiliate/tsconfig.json b/plugins/discourse-affiliate/tsconfig.json
new file mode 100644
index 00000000000..5aa0f0f0e84
--- /dev/null
+++ b/plugins/discourse-affiliate/tsconfig.json
@@ -0,0 +1,13 @@
+{
+ "extends": "discourse/tsconfig-plugin",
+ "include": [
+ "./package.json",
+ "./assets/javascripts/**/*",
+ "./test/javascripts/**/*"
+ ],
+ "compilerOptions": {
+ "paths": {
+ "discourse/plugins/discourse-affiliate/*": ["./assets/javascripts/*"]
+ }
+ }
+}
diff --git a/plugins/discourse-ai/package.json b/plugins/discourse-ai/package.json
new file mode 100644
index 00000000000..cddae255cd8
--- /dev/null
+++ b/plugins/discourse-ai/package.json
@@ -0,0 +1,6 @@
+{
+ "private": true,
+ "dependencies": {
+ "discourse": "workspace:@discourse/types@0.0.0"
+ }
+}
diff --git a/plugins/discourse-ai/tsconfig.json b/plugins/discourse-ai/tsconfig.json
new file mode 100644
index 00000000000..ae7968a60f8
--- /dev/null
+++ b/plugins/discourse-ai/tsconfig.json
@@ -0,0 +1,12 @@
+{
+ "extends": "discourse/tsconfig-plugin",
+ "include": [
+ "./assets/javascripts/**/*",
+ "./test/javascripts/**/*"
+ ],
+ "compilerOptions": {
+ "paths": {
+ "discourse/plugins/discourse-ai/*": ["./assets/javascripts/*"]
+ }
+ }
+}
diff --git a/plugins/discourse-apple-auth/package.json b/plugins/discourse-apple-auth/package.json
new file mode 100644
index 00000000000..cddae255cd8
--- /dev/null
+++ b/plugins/discourse-apple-auth/package.json
@@ -0,0 +1,6 @@
+{
+ "private": true,
+ "dependencies": {
+ "discourse": "workspace:@discourse/types@0.0.0"
+ }
+}
diff --git a/plugins/discourse-apple-auth/tsconfig.json b/plugins/discourse-apple-auth/tsconfig.json
new file mode 100644
index 00000000000..b436771376d
--- /dev/null
+++ b/plugins/discourse-apple-auth/tsconfig.json
@@ -0,0 +1,13 @@
+{
+ "extends": "discourse/tsconfig-plugin",
+ "include": [
+ "./package.json",
+ "./assets/javascripts/**/*",
+ "./test/javascripts/**/*"
+ ],
+ "compilerOptions": {
+ "paths": {
+ "discourse/plugins/discourse-apple-auth/*": ["./assets/javascripts/*"]
+ }
+ }
+}
diff --git a/plugins/discourse-assign/package.json b/plugins/discourse-assign/package.json
new file mode 100644
index 00000000000..cddae255cd8
--- /dev/null
+++ b/plugins/discourse-assign/package.json
@@ -0,0 +1,6 @@
+{
+ "private": true,
+ "dependencies": {
+ "discourse": "workspace:@discourse/types@0.0.0"
+ }
+}
diff --git a/plugins/discourse-assign/tsconfig.json b/plugins/discourse-assign/tsconfig.json
new file mode 100644
index 00000000000..cfecc1bf087
--- /dev/null
+++ b/plugins/discourse-assign/tsconfig.json
@@ -0,0 +1,12 @@
+{
+ "extends": "discourse/tsconfig-plugin",
+ "include": [
+ "./assets/javascripts/**/*",
+ "./test/javascripts/**/*"
+ ],
+ "compilerOptions": {
+ "paths": {
+ "discourse/plugins/discourse-assign/*": ["./assets/javascripts/*"]
+ }
+ }
+}
diff --git a/plugins/discourse-cakeday/assets/javascripts/discourse/routes/build-cakeday-route.js b/plugins/discourse-cakeday/assets/javascripts/discourse/routes/build-cakeday-route.js
index 1f8126ec0da..15d122f9ad9 100644
--- a/plugins/discourse-cakeday/assets/javascripts/discourse/routes/build-cakeday-route.js
+++ b/plugins/discourse-cakeday/assets/javascripts/discourse/routes/build-cakeday-route.js
@@ -1,5 +1,6 @@
import DiscourseRoute from "discourse/routes/discourse";
+/** @returns {any} */
export default (storeName, filter) => {
return class BuildCakedayRoute extends DiscourseRoute {
model(params) {
diff --git a/plugins/discourse-cakeday/package.json b/plugins/discourse-cakeday/package.json
new file mode 100644
index 00000000000..cddae255cd8
--- /dev/null
+++ b/plugins/discourse-cakeday/package.json
@@ -0,0 +1,6 @@
+{
+ "private": true,
+ "dependencies": {
+ "discourse": "workspace:@discourse/types@0.0.0"
+ }
+}
diff --git a/plugins/discourse-cakeday/tsconfig.json b/plugins/discourse-cakeday/tsconfig.json
new file mode 100644
index 00000000000..e04035fdeeb
--- /dev/null
+++ b/plugins/discourse-cakeday/tsconfig.json
@@ -0,0 +1,12 @@
+{
+ "extends": "discourse/tsconfig-plugin",
+ "include": [
+ "./assets/javascripts/**/*",
+ "./test/javascripts/**/*"
+ ],
+ "compilerOptions": {
+ "paths": {
+ "discourse/plugins/discourse-cakeday/*": ["./assets/javascripts/*"]
+ }
+ }
+}
diff --git a/plugins/discourse-calendar/package.json b/plugins/discourse-calendar/package.json
new file mode 100644
index 00000000000..cddae255cd8
--- /dev/null
+++ b/plugins/discourse-calendar/package.json
@@ -0,0 +1,6 @@
+{
+ "private": true,
+ "dependencies": {
+ "discourse": "workspace:@discourse/types@0.0.0"
+ }
+}
diff --git a/plugins/discourse-calendar/tsconfig.json b/plugins/discourse-calendar/tsconfig.json
new file mode 100644
index 00000000000..3545c920675
--- /dev/null
+++ b/plugins/discourse-calendar/tsconfig.json
@@ -0,0 +1,12 @@
+{
+ "extends": "discourse/tsconfig-plugin",
+ "include": [
+ "./assets/javascripts/**/*",
+ "./test/javascripts/**/*"
+ ],
+ "compilerOptions": {
+ "paths": {
+ "discourse/plugins/discourse-calendar/*": ["./assets/javascripts/*"]
+ }
+ }
+}
diff --git a/plugins/discourse-chat-integration/package.json b/plugins/discourse-chat-integration/package.json
new file mode 100644
index 00000000000..cddae255cd8
--- /dev/null
+++ b/plugins/discourse-chat-integration/package.json
@@ -0,0 +1,6 @@
+{
+ "private": true,
+ "dependencies": {
+ "discourse": "workspace:@discourse/types@0.0.0"
+ }
+}
diff --git a/plugins/discourse-chat-integration/tsconfig.json b/plugins/discourse-chat-integration/tsconfig.json
new file mode 100644
index 00000000000..c9ab439cc0a
--- /dev/null
+++ b/plugins/discourse-chat-integration/tsconfig.json
@@ -0,0 +1,12 @@
+{
+ "extends": "discourse/tsconfig-plugin",
+ "include": [
+ "./assets/javascripts/**/*",
+ "./test/javascripts/**/*"
+ ],
+ "compilerOptions": {
+ "paths": {
+ "discourse/plugins/discourse-chat-integration/*": ["./assets/javascripts/*"]
+ }
+ }
+}
diff --git a/plugins/discourse-data-explorer/package.json b/plugins/discourse-data-explorer/package.json
new file mode 100644
index 00000000000..cddae255cd8
--- /dev/null
+++ b/plugins/discourse-data-explorer/package.json
@@ -0,0 +1,6 @@
+{
+ "private": true,
+ "dependencies": {
+ "discourse": "workspace:@discourse/types@0.0.0"
+ }
+}
diff --git a/plugins/discourse-data-explorer/tsconfig.json b/plugins/discourse-data-explorer/tsconfig.json
new file mode 100644
index 00000000000..df9cf1b8b97
--- /dev/null
+++ b/plugins/discourse-data-explorer/tsconfig.json
@@ -0,0 +1,12 @@
+{
+ "extends": "discourse/tsconfig-plugin",
+ "include": [
+ "./assets/javascripts/**/*",
+ "./test/javascripts/**/*"
+ ],
+ "compilerOptions": {
+ "paths": {
+ "discourse/plugins/discourse-data-explorer/*": ["./assets/javascripts/*"]
+ }
+ }
+}
diff --git a/plugins/discourse-details/package.json b/plugins/discourse-details/package.json
new file mode 100644
index 00000000000..cddae255cd8
--- /dev/null
+++ b/plugins/discourse-details/package.json
@@ -0,0 +1,6 @@
+{
+ "private": true,
+ "dependencies": {
+ "discourse": "workspace:@discourse/types@0.0.0"
+ }
+}
diff --git a/plugins/discourse-details/tsconfig.json b/plugins/discourse-details/tsconfig.json
new file mode 100644
index 00000000000..9f167f725ca
--- /dev/null
+++ b/plugins/discourse-details/tsconfig.json
@@ -0,0 +1,12 @@
+{
+ "extends": "discourse/tsconfig-plugin",
+ "include": [
+ "./assets/javascripts/**/*",
+ "./test/javascripts/**/*"
+ ],
+ "compilerOptions": {
+ "paths": {
+ "discourse/plugins/discourse-details/*": ["./assets/javascripts/*"]
+ }
+ }
+}
diff --git a/plugins/discourse-gamification/package.json b/plugins/discourse-gamification/package.json
new file mode 100644
index 00000000000..cddae255cd8
--- /dev/null
+++ b/plugins/discourse-gamification/package.json
@@ -0,0 +1,6 @@
+{
+ "private": true,
+ "dependencies": {
+ "discourse": "workspace:@discourse/types@0.0.0"
+ }
+}
diff --git a/plugins/discourse-gamification/tsconfig.json b/plugins/discourse-gamification/tsconfig.json
new file mode 100644
index 00000000000..2a17a4e6943
--- /dev/null
+++ b/plugins/discourse-gamification/tsconfig.json
@@ -0,0 +1,12 @@
+{
+ "extends": "discourse/tsconfig-plugin",
+ "include": [
+ "./assets/javascripts/**/*",
+ "./test/javascripts/**/*"
+ ],
+ "compilerOptions": {
+ "paths": {
+ "discourse/plugins/discourse-gamification/*": ["./assets/javascripts/*"]
+ }
+ }
+}
diff --git a/plugins/discourse-github/package.json b/plugins/discourse-github/package.json
new file mode 100644
index 00000000000..cddae255cd8
--- /dev/null
+++ b/plugins/discourse-github/package.json
@@ -0,0 +1,6 @@
+{
+ "private": true,
+ "dependencies": {
+ "discourse": "workspace:@discourse/types@0.0.0"
+ }
+}
diff --git a/plugins/discourse-github/tsconfig.json b/plugins/discourse-github/tsconfig.json
new file mode 100644
index 00000000000..a8bac336ec5
--- /dev/null
+++ b/plugins/discourse-github/tsconfig.json
@@ -0,0 +1,13 @@
+{
+ "extends": "discourse/tsconfig-plugin",
+ "include": [
+ "./package.json",
+ "./assets/javascripts/**/*",
+ "./test/javascripts/**/*"
+ ],
+ "compilerOptions": {
+ "paths": {
+ "discourse/plugins/discourse-github/*": ["./assets/javascripts/*"]
+ }
+ }
+}
diff --git a/plugins/discourse-graphviz/package.json b/plugins/discourse-graphviz/package.json
new file mode 100644
index 00000000000..cddae255cd8
--- /dev/null
+++ b/plugins/discourse-graphviz/package.json
@@ -0,0 +1,6 @@
+{
+ "private": true,
+ "dependencies": {
+ "discourse": "workspace:@discourse/types@0.0.0"
+ }
+}
diff --git a/plugins/discourse-graphviz/tsconfig.json b/plugins/discourse-graphviz/tsconfig.json
new file mode 100644
index 00000000000..aed83aac4f4
--- /dev/null
+++ b/plugins/discourse-graphviz/tsconfig.json
@@ -0,0 +1,12 @@
+{
+ "extends": "discourse/tsconfig-plugin",
+ "include": [
+ "./assets/javascripts/**/*",
+ "./test/javascripts/**/*"
+ ],
+ "compilerOptions": {
+ "paths": {
+ "discourse/plugins/discourse-graphviz/*": ["./assets/javascripts/*"]
+ }
+ }
+}
diff --git a/plugins/discourse-hcaptcha/package.json b/plugins/discourse-hcaptcha/package.json
new file mode 100644
index 00000000000..cddae255cd8
--- /dev/null
+++ b/plugins/discourse-hcaptcha/package.json
@@ -0,0 +1,6 @@
+{
+ "private": true,
+ "dependencies": {
+ "discourse": "workspace:@discourse/types@0.0.0"
+ }
+}
diff --git a/plugins/discourse-hcaptcha/tsconfig.json b/plugins/discourse-hcaptcha/tsconfig.json
new file mode 100644
index 00000000000..fbd60e52074
--- /dev/null
+++ b/plugins/discourse-hcaptcha/tsconfig.json
@@ -0,0 +1,12 @@
+{
+ "extends": "discourse/tsconfig-plugin",
+ "include": [
+ "./assets/javascripts/**/*",
+ "./test/javascripts/**/*"
+ ],
+ "compilerOptions": {
+ "paths": {
+ "discourse/plugins/discourse-hcaptcha/*": ["./assets/javascripts/*"]
+ }
+ }
+}
diff --git a/plugins/discourse-lazy-videos/package.json b/plugins/discourse-lazy-videos/package.json
new file mode 100644
index 00000000000..cddae255cd8
--- /dev/null
+++ b/plugins/discourse-lazy-videos/package.json
@@ -0,0 +1,6 @@
+{
+ "private": true,
+ "dependencies": {
+ "discourse": "workspace:@discourse/types@0.0.0"
+ }
+}
diff --git a/plugins/discourse-lazy-videos/tsconfig.json b/plugins/discourse-lazy-videos/tsconfig.json
new file mode 100644
index 00000000000..ef6ffbf15da
--- /dev/null
+++ b/plugins/discourse-lazy-videos/tsconfig.json
@@ -0,0 +1,12 @@
+{
+ "extends": "discourse/tsconfig-plugin",
+ "include": [
+ "./assets/javascripts/**/*",
+ "./test/javascripts/**/*"
+ ],
+ "compilerOptions": {
+ "paths": {
+ "discourse/plugins/discourse-lazy-videos/*": ["./assets/javascripts/*"]
+ }
+ }
+}
diff --git a/plugins/discourse-local-dates/package.json b/plugins/discourse-local-dates/package.json
new file mode 100644
index 00000000000..cddae255cd8
--- /dev/null
+++ b/plugins/discourse-local-dates/package.json
@@ -0,0 +1,6 @@
+{
+ "private": true,
+ "dependencies": {
+ "discourse": "workspace:@discourse/types@0.0.0"
+ }
+}
diff --git a/plugins/discourse-local-dates/tsconfig.json b/plugins/discourse-local-dates/tsconfig.json
new file mode 100644
index 00000000000..55852df3aae
--- /dev/null
+++ b/plugins/discourse-local-dates/tsconfig.json
@@ -0,0 +1,12 @@
+{
+ "extends": "discourse/tsconfig-plugin",
+ "include": [
+ "./assets/javascripts/**/*",
+ "./test/javascripts/**/*"
+ ],
+ "compilerOptions": {
+ "paths": {
+ "discourse/plugins/discourse-local-dates/*": ["./assets/javascripts/*"]
+ }
+ }
+}
diff --git a/plugins/discourse-login-with-amazon/package.json b/plugins/discourse-login-with-amazon/package.json
new file mode 100644
index 00000000000..cddae255cd8
--- /dev/null
+++ b/plugins/discourse-login-with-amazon/package.json
@@ -0,0 +1,6 @@
+{
+ "private": true,
+ "dependencies": {
+ "discourse": "workspace:@discourse/types@0.0.0"
+ }
+}
diff --git a/plugins/discourse-login-with-amazon/tsconfig.json b/plugins/discourse-login-with-amazon/tsconfig.json
new file mode 100644
index 00000000000..7fe94e850a6
--- /dev/null
+++ b/plugins/discourse-login-with-amazon/tsconfig.json
@@ -0,0 +1,13 @@
+{
+ "extends": "discourse/tsconfig-plugin",
+ "include": [
+ "./package.json",
+ "./assets/javascripts/**/*",
+ "./test/javascripts/**/*"
+ ],
+ "compilerOptions": {
+ "paths": {
+ "discourse/plugins/discourse-login-with-amazon/*": ["./assets/javascripts/*"]
+ }
+ }
+}
diff --git a/plugins/discourse-lti/package.json b/plugins/discourse-lti/package.json
new file mode 100644
index 00000000000..cddae255cd8
--- /dev/null
+++ b/plugins/discourse-lti/package.json
@@ -0,0 +1,6 @@
+{
+ "private": true,
+ "dependencies": {
+ "discourse": "workspace:@discourse/types@0.0.0"
+ }
+}
diff --git a/plugins/discourse-lti/tsconfig.json b/plugins/discourse-lti/tsconfig.json
new file mode 100644
index 00000000000..df04d811e8a
--- /dev/null
+++ b/plugins/discourse-lti/tsconfig.json
@@ -0,0 +1,12 @@
+{
+ "extends": "discourse/tsconfig-plugin",
+ "include": [
+ "./assets/javascripts/**/*",
+ "./test/javascripts/**/*"
+ ],
+ "compilerOptions": {
+ "paths": {
+ "discourse/plugins/discourse-lti/*": ["./assets/javascripts/*"]
+ }
+ }
+}
diff --git a/plugins/discourse-math/package.json b/plugins/discourse-math/package.json
new file mode 100644
index 00000000000..cddae255cd8
--- /dev/null
+++ b/plugins/discourse-math/package.json
@@ -0,0 +1,6 @@
+{
+ "private": true,
+ "dependencies": {
+ "discourse": "workspace:@discourse/types@0.0.0"
+ }
+}
diff --git a/plugins/discourse-math/tsconfig.json b/plugins/discourse-math/tsconfig.json
new file mode 100644
index 00000000000..32c3e6130a2
--- /dev/null
+++ b/plugins/discourse-math/tsconfig.json
@@ -0,0 +1,12 @@
+{
+ "extends": "discourse/tsconfig-plugin",
+ "include": [
+ "./assets/javascripts/**/*",
+ "./test/javascripts/**/*"
+ ],
+ "compilerOptions": {
+ "paths": {
+ "discourse/plugins/discourse-math/*": ["./assets/javascripts/*"]
+ }
+ }
+}
diff --git a/plugins/discourse-microsoft-auth/package.json b/plugins/discourse-microsoft-auth/package.json
new file mode 100644
index 00000000000..cddae255cd8
--- /dev/null
+++ b/plugins/discourse-microsoft-auth/package.json
@@ -0,0 +1,6 @@
+{
+ "private": true,
+ "dependencies": {
+ "discourse": "workspace:@discourse/types@0.0.0"
+ }
+}
diff --git a/plugins/discourse-microsoft-auth/tsconfig.json b/plugins/discourse-microsoft-auth/tsconfig.json
new file mode 100644
index 00000000000..f08d07b837c
--- /dev/null
+++ b/plugins/discourse-microsoft-auth/tsconfig.json
@@ -0,0 +1,13 @@
+{
+ "extends": "discourse/tsconfig-plugin",
+ "include": [
+ "./package.json",
+ "./assets/javascripts/**/*",
+ "./test/javascripts/**/*"
+ ],
+ "compilerOptions": {
+ "paths": {
+ "discourse/plugins/discourse-microsoft-auth/*": ["./assets/javascripts/*"]
+ }
+ }
+}
diff --git a/plugins/discourse-narrative-bot/package.json b/plugins/discourse-narrative-bot/package.json
new file mode 100644
index 00000000000..cddae255cd8
--- /dev/null
+++ b/plugins/discourse-narrative-bot/package.json
@@ -0,0 +1,6 @@
+{
+ "private": true,
+ "dependencies": {
+ "discourse": "workspace:@discourse/types@0.0.0"
+ }
+}
diff --git a/plugins/discourse-narrative-bot/tsconfig.json b/plugins/discourse-narrative-bot/tsconfig.json
new file mode 100644
index 00000000000..438f02086ca
--- /dev/null
+++ b/plugins/discourse-narrative-bot/tsconfig.json
@@ -0,0 +1,13 @@
+{
+ "extends": "discourse/tsconfig-plugin",
+ "include": [
+ "./package.json",
+ "./assets/javascripts/**/*",
+ "./test/javascripts/**/*"
+ ],
+ "compilerOptions": {
+ "paths": {
+ "discourse/plugins/discourse-narrative-bot/*": ["./assets/javascripts/*"]
+ }
+ }
+}
diff --git a/plugins/discourse-oauth2-basic/package.json b/plugins/discourse-oauth2-basic/package.json
new file mode 100644
index 00000000000..cddae255cd8
--- /dev/null
+++ b/plugins/discourse-oauth2-basic/package.json
@@ -0,0 +1,6 @@
+{
+ "private": true,
+ "dependencies": {
+ "discourse": "workspace:@discourse/types@0.0.0"
+ }
+}
diff --git a/plugins/discourse-oauth2-basic/tsconfig.json b/plugins/discourse-oauth2-basic/tsconfig.json
new file mode 100644
index 00000000000..bff50350626
--- /dev/null
+++ b/plugins/discourse-oauth2-basic/tsconfig.json
@@ -0,0 +1,13 @@
+{
+ "extends": "discourse/tsconfig-plugin",
+ "include": [
+ "./package.json",
+ "./assets/javascripts/**/*",
+ "./test/javascripts/**/*"
+ ],
+ "compilerOptions": {
+ "paths": {
+ "discourse/plugins/discourse-oauth2-basic/*": ["./assets/javascripts/*"]
+ }
+ }
+}
diff --git a/plugins/discourse-openid-connect/package.json b/plugins/discourse-openid-connect/package.json
new file mode 100644
index 00000000000..cddae255cd8
--- /dev/null
+++ b/plugins/discourse-openid-connect/package.json
@@ -0,0 +1,6 @@
+{
+ "private": true,
+ "dependencies": {
+ "discourse": "workspace:@discourse/types@0.0.0"
+ }
+}
diff --git a/plugins/discourse-openid-connect/tsconfig.json b/plugins/discourse-openid-connect/tsconfig.json
new file mode 100644
index 00000000000..3997a996f3f
--- /dev/null
+++ b/plugins/discourse-openid-connect/tsconfig.json
@@ -0,0 +1,13 @@
+{
+ "extends": "discourse/tsconfig-plugin",
+ "include": [
+ "./package.json",
+ "./assets/javascripts/**/*",
+ "./test/javascripts/**/*"
+ ],
+ "compilerOptions": {
+ "paths": {
+ "discourse/plugins/discourse-openid-connect/*": ["./assets/javascripts/*"]
+ }
+ }
+}
diff --git a/plugins/discourse-patreon/package.json b/plugins/discourse-patreon/package.json
new file mode 100644
index 00000000000..cddae255cd8
--- /dev/null
+++ b/plugins/discourse-patreon/package.json
@@ -0,0 +1,6 @@
+{
+ "private": true,
+ "dependencies": {
+ "discourse": "workspace:@discourse/types@0.0.0"
+ }
+}
diff --git a/plugins/discourse-patreon/tsconfig.json b/plugins/discourse-patreon/tsconfig.json
new file mode 100644
index 00000000000..e1683c8f5f2
--- /dev/null
+++ b/plugins/discourse-patreon/tsconfig.json
@@ -0,0 +1,12 @@
+{
+ "extends": "discourse/tsconfig-plugin",
+ "include": [
+ "./assets/javascripts/**/*",
+ "./test/javascripts/**/*"
+ ],
+ "compilerOptions": {
+ "paths": {
+ "discourse/plugins/discourse-patreon/*": ["./assets/javascripts/*"]
+ }
+ }
+}
diff --git a/plugins/discourse-policy/package.json b/plugins/discourse-policy/package.json
new file mode 100644
index 00000000000..cddae255cd8
--- /dev/null
+++ b/plugins/discourse-policy/package.json
@@ -0,0 +1,6 @@
+{
+ "private": true,
+ "dependencies": {
+ "discourse": "workspace:@discourse/types@0.0.0"
+ }
+}
diff --git a/plugins/discourse-policy/tsconfig.json b/plugins/discourse-policy/tsconfig.json
new file mode 100644
index 00000000000..28c6b177df2
--- /dev/null
+++ b/plugins/discourse-policy/tsconfig.json
@@ -0,0 +1,12 @@
+{
+ "extends": "discourse/tsconfig-plugin",
+ "include": [
+ "./assets/javascripts/**/*",
+ "./test/javascripts/**/*"
+ ],
+ "compilerOptions": {
+ "paths": {
+ "discourse/plugins/discourse-policy/*": ["./assets/javascripts/*"]
+ }
+ }
+}
diff --git a/plugins/discourse-post-voting/package.json b/plugins/discourse-post-voting/package.json
new file mode 100644
index 00000000000..cddae255cd8
--- /dev/null
+++ b/plugins/discourse-post-voting/package.json
@@ -0,0 +1,6 @@
+{
+ "private": true,
+ "dependencies": {
+ "discourse": "workspace:@discourse/types@0.0.0"
+ }
+}
diff --git a/plugins/discourse-post-voting/tsconfig.json b/plugins/discourse-post-voting/tsconfig.json
new file mode 100644
index 00000000000..044d96fb107
--- /dev/null
+++ b/plugins/discourse-post-voting/tsconfig.json
@@ -0,0 +1,12 @@
+{
+ "extends": "discourse/tsconfig-plugin",
+ "include": [
+ "./assets/javascripts/**/*",
+ "./test/javascripts/**/*"
+ ],
+ "compilerOptions": {
+ "paths": {
+ "discourse/plugins/discourse-post-voting/*": ["./assets/javascripts/*"]
+ }
+ }
+}
diff --git a/plugins/discourse-presence/package.json b/plugins/discourse-presence/package.json
new file mode 100644
index 00000000000..cddae255cd8
--- /dev/null
+++ b/plugins/discourse-presence/package.json
@@ -0,0 +1,6 @@
+{
+ "private": true,
+ "dependencies": {
+ "discourse": "workspace:@discourse/types@0.0.0"
+ }
+}
diff --git a/plugins/discourse-presence/tsconfig.json b/plugins/discourse-presence/tsconfig.json
new file mode 100644
index 00000000000..e7d4daf0492
--- /dev/null
+++ b/plugins/discourse-presence/tsconfig.json
@@ -0,0 +1,12 @@
+{
+ "extends": "discourse/tsconfig-plugin",
+ "include": [
+ "./assets/javascripts/**/*",
+ "./test/javascripts/**/*"
+ ],
+ "compilerOptions": {
+ "paths": {
+ "discourse/plugins/discourse-presence/*": ["./assets/javascripts/*"]
+ }
+ }
+}
diff --git a/plugins/discourse-reactions/package.json b/plugins/discourse-reactions/package.json
new file mode 100644
index 00000000000..cddae255cd8
--- /dev/null
+++ b/plugins/discourse-reactions/package.json
@@ -0,0 +1,6 @@
+{
+ "private": true,
+ "dependencies": {
+ "discourse": "workspace:@discourse/types@0.0.0"
+ }
+}
diff --git a/plugins/discourse-reactions/tsconfig.json b/plugins/discourse-reactions/tsconfig.json
new file mode 100644
index 00000000000..4cc08b42ec5
--- /dev/null
+++ b/plugins/discourse-reactions/tsconfig.json
@@ -0,0 +1,12 @@
+{
+ "extends": "discourse/tsconfig-plugin",
+ "include": [
+ "./assets/javascripts/**/*",
+ "./test/javascripts/**/*"
+ ],
+ "compilerOptions": {
+ "paths": {
+ "discourse/plugins/discourse-reactions/*": ["./assets/javascripts/*"]
+ }
+ }
+}
diff --git a/plugins/discourse-rss-polling/package.json b/plugins/discourse-rss-polling/package.json
new file mode 100644
index 00000000000..cddae255cd8
--- /dev/null
+++ b/plugins/discourse-rss-polling/package.json
@@ -0,0 +1,6 @@
+{
+ "private": true,
+ "dependencies": {
+ "discourse": "workspace:@discourse/types@0.0.0"
+ }
+}
diff --git a/plugins/discourse-rss-polling/tsconfig.json b/plugins/discourse-rss-polling/tsconfig.json
new file mode 100644
index 00000000000..a209fe85ac9
--- /dev/null
+++ b/plugins/discourse-rss-polling/tsconfig.json
@@ -0,0 +1,12 @@
+{
+ "extends": "discourse/tsconfig-plugin",
+ "include": [
+ "./assets/javascripts/**/*",
+ "./test/javascripts/**/*"
+ ],
+ "compilerOptions": {
+ "paths": {
+ "discourse/plugins/discourse-rss-polling/*": ["./assets/javascripts/*"]
+ }
+ }
+}
diff --git a/plugins/discourse-solved/package.json b/plugins/discourse-solved/package.json
new file mode 100644
index 00000000000..cddae255cd8
--- /dev/null
+++ b/plugins/discourse-solved/package.json
@@ -0,0 +1,6 @@
+{
+ "private": true,
+ "dependencies": {
+ "discourse": "workspace:@discourse/types@0.0.0"
+ }
+}
diff --git a/plugins/discourse-solved/tsconfig.json b/plugins/discourse-solved/tsconfig.json
new file mode 100644
index 00000000000..c894efaa5bb
--- /dev/null
+++ b/plugins/discourse-solved/tsconfig.json
@@ -0,0 +1,12 @@
+{
+ "extends": "discourse/tsconfig-plugin",
+ "include": [
+ "./assets/javascripts/**/*",
+ "./test/javascripts/**/*"
+ ],
+ "compilerOptions": {
+ "paths": {
+ "discourse/plugins/discourse-solved/*": ["./assets/javascripts/*"]
+ }
+ }
+}
diff --git a/plugins/discourse-subscriptions/package.json b/plugins/discourse-subscriptions/package.json
new file mode 100644
index 00000000000..cddae255cd8
--- /dev/null
+++ b/plugins/discourse-subscriptions/package.json
@@ -0,0 +1,6 @@
+{
+ "private": true,
+ "dependencies": {
+ "discourse": "workspace:@discourse/types@0.0.0"
+ }
+}
diff --git a/plugins/discourse-subscriptions/tsconfig.json b/plugins/discourse-subscriptions/tsconfig.json
new file mode 100644
index 00000000000..b7089a64fed
--- /dev/null
+++ b/plugins/discourse-subscriptions/tsconfig.json
@@ -0,0 +1,12 @@
+{
+ "extends": "discourse/tsconfig-plugin",
+ "include": [
+ "./assets/javascripts/**/*",
+ "./test/javascripts/**/*"
+ ],
+ "compilerOptions": {
+ "paths": {
+ "discourse/plugins/discourse-subscriptions/*": ["./assets/javascripts/*"]
+ }
+ }
+}
diff --git a/plugins/discourse-templates/package.json b/plugins/discourse-templates/package.json
new file mode 100644
index 00000000000..cddae255cd8
--- /dev/null
+++ b/plugins/discourse-templates/package.json
@@ -0,0 +1,6 @@
+{
+ "private": true,
+ "dependencies": {
+ "discourse": "workspace:@discourse/types@0.0.0"
+ }
+}
diff --git a/plugins/discourse-templates/tsconfig.json b/plugins/discourse-templates/tsconfig.json
new file mode 100644
index 00000000000..69614698a3d
--- /dev/null
+++ b/plugins/discourse-templates/tsconfig.json
@@ -0,0 +1,12 @@
+{
+ "extends": "discourse/tsconfig-plugin",
+ "include": [
+ "./assets/javascripts/**/*",
+ "./test/javascripts/**/*"
+ ],
+ "compilerOptions": {
+ "paths": {
+ "discourse/plugins/discourse-templates/*": ["./assets/javascripts/*"]
+ }
+ }
+}
diff --git a/plugins/discourse-topic-voting/package.json b/plugins/discourse-topic-voting/package.json
new file mode 100644
index 00000000000..cddae255cd8
--- /dev/null
+++ b/plugins/discourse-topic-voting/package.json
@@ -0,0 +1,6 @@
+{
+ "private": true,
+ "dependencies": {
+ "discourse": "workspace:@discourse/types@0.0.0"
+ }
+}
diff --git a/plugins/discourse-topic-voting/tsconfig.json b/plugins/discourse-topic-voting/tsconfig.json
new file mode 100644
index 00000000000..83f0222495d
--- /dev/null
+++ b/plugins/discourse-topic-voting/tsconfig.json
@@ -0,0 +1,12 @@
+{
+ "extends": "discourse/tsconfig-plugin",
+ "include": [
+ "./assets/javascripts/**/*",
+ "./test/javascripts/**/*"
+ ],
+ "compilerOptions": {
+ "paths": {
+ "discourse/plugins/discourse-topic-voting/*": ["./assets/javascripts/*"]
+ }
+ }
+}
diff --git a/plugins/discourse-user-notes/package.json b/plugins/discourse-user-notes/package.json
new file mode 100644
index 00000000000..cddae255cd8
--- /dev/null
+++ b/plugins/discourse-user-notes/package.json
@@ -0,0 +1,6 @@
+{
+ "private": true,
+ "dependencies": {
+ "discourse": "workspace:@discourse/types@0.0.0"
+ }
+}
diff --git a/plugins/discourse-user-notes/tsconfig.json b/plugins/discourse-user-notes/tsconfig.json
new file mode 100644
index 00000000000..6cc9269594c
--- /dev/null
+++ b/plugins/discourse-user-notes/tsconfig.json
@@ -0,0 +1,12 @@
+{
+ "extends": "discourse/tsconfig-plugin",
+ "include": [
+ "./assets/javascripts/**/*",
+ "./test/javascripts/**/*"
+ ],
+ "compilerOptions": {
+ "paths": {
+ "discourse/plugins/discourse-user-notes/*": ["./assets/javascripts/*"]
+ }
+ }
+}
diff --git a/plugins/discourse-zendesk-plugin/package.json b/plugins/discourse-zendesk-plugin/package.json
new file mode 100644
index 00000000000..cddae255cd8
--- /dev/null
+++ b/plugins/discourse-zendesk-plugin/package.json
@@ -0,0 +1,6 @@
+{
+ "private": true,
+ "dependencies": {
+ "discourse": "workspace:@discourse/types@0.0.0"
+ }
+}
diff --git a/plugins/discourse-zendesk-plugin/tsconfig.json b/plugins/discourse-zendesk-plugin/tsconfig.json
new file mode 100644
index 00000000000..6373a0186c4
--- /dev/null
+++ b/plugins/discourse-zendesk-plugin/tsconfig.json
@@ -0,0 +1,12 @@
+{
+ "extends": "discourse/tsconfig-plugin",
+ "include": [
+ "./assets/javascripts/**/*",
+ "./test/javascripts/**/*"
+ ],
+ "compilerOptions": {
+ "paths": {
+ "discourse/plugins/discourse-zendesk-plugin/*": ["./assets/javascripts/*"]
+ }
+ }
+}
diff --git a/plugins/footnote/package.json b/plugins/footnote/package.json
new file mode 100644
index 00000000000..cddae255cd8
--- /dev/null
+++ b/plugins/footnote/package.json
@@ -0,0 +1,6 @@
+{
+ "private": true,
+ "dependencies": {
+ "discourse": "workspace:@discourse/types@0.0.0"
+ }
+}
diff --git a/plugins/footnote/tsconfig.json b/plugins/footnote/tsconfig.json
new file mode 100644
index 00000000000..9a5e285dc1b
--- /dev/null
+++ b/plugins/footnote/tsconfig.json
@@ -0,0 +1,12 @@
+{
+ "extends": "discourse/tsconfig-plugin",
+ "include": [
+ "./assets/javascripts/**/*",
+ "./test/javascripts/**/*"
+ ],
+ "compilerOptions": {
+ "paths": {
+ "discourse/plugins/footnote/*": ["./assets/javascripts/*"]
+ }
+ }
+}
diff --git a/plugins/poll/package.json b/plugins/poll/package.json
new file mode 100644
index 00000000000..cddae255cd8
--- /dev/null
+++ b/plugins/poll/package.json
@@ -0,0 +1,6 @@
+{
+ "private": true,
+ "dependencies": {
+ "discourse": "workspace:@discourse/types@0.0.0"
+ }
+}
diff --git a/plugins/poll/tsconfig.json b/plugins/poll/tsconfig.json
new file mode 100644
index 00000000000..fdb7a4ba60e
--- /dev/null
+++ b/plugins/poll/tsconfig.json
@@ -0,0 +1,12 @@
+{
+ "extends": "discourse/tsconfig-plugin",
+ "include": [
+ "./assets/javascripts/**/*",
+ "./test/javascripts/**/*"
+ ],
+ "compilerOptions": {
+ "paths": {
+ "discourse/plugins/poll/*": ["./assets/javascripts/*"]
+ }
+ }
+}
diff --git a/plugins/spoiler-alert/package.json b/plugins/spoiler-alert/package.json
new file mode 100644
index 00000000000..cddae255cd8
--- /dev/null
+++ b/plugins/spoiler-alert/package.json
@@ -0,0 +1,6 @@
+{
+ "private": true,
+ "dependencies": {
+ "discourse": "workspace:@discourse/types@0.0.0"
+ }
+}
diff --git a/plugins/spoiler-alert/tsconfig.json b/plugins/spoiler-alert/tsconfig.json
new file mode 100644
index 00000000000..e9e52e2f3eb
--- /dev/null
+++ b/plugins/spoiler-alert/tsconfig.json
@@ -0,0 +1,12 @@
+{
+ "extends": "discourse/tsconfig-plugin",
+ "include": [
+ "./assets/javascripts/**/*",
+ "./test/javascripts/**/*"
+ ],
+ "compilerOptions": {
+ "paths": {
+ "discourse/plugins/spoiler-alert/*": ["./assets/javascripts/*"]
+ }
+ }
+}
diff --git a/plugins/styleguide/package.json b/plugins/styleguide/package.json
new file mode 100644
index 00000000000..cddae255cd8
--- /dev/null
+++ b/plugins/styleguide/package.json
@@ -0,0 +1,6 @@
+{
+ "private": true,
+ "dependencies": {
+ "discourse": "workspace:@discourse/types@0.0.0"
+ }
+}
diff --git a/plugins/styleguide/tsconfig.json b/plugins/styleguide/tsconfig.json
new file mode 100644
index 00000000000..e3f991ec363
--- /dev/null
+++ b/plugins/styleguide/tsconfig.json
@@ -0,0 +1,12 @@
+{
+ "extends": "discourse/tsconfig-plugin",
+ "include": [
+ "./assets/javascripts/**/*",
+ "./test/javascripts/**/*"
+ ],
+ "compilerOptions": {
+ "paths": {
+ "discourse/plugins/styleguide/*": ["./assets/javascripts/*"]
+ }
+ }
+}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 007ff0f4c13..3d3db76ec38 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -36,7 +36,7 @@ importers:
version: 7.28.0(@babel/core@7.28.5)
'@discourse/lint-configs':
specifier: ^2.34.2
- version: 2.34.2(ember-template-lint@7.9.3)(eslint@9.39.1)(postcss@8.5.6)(prettier@3.6.2)(stylelint@16.25.0(typescript@5.9.3))
+ version: 2.34.2(ember-template-lint@7.9.3)(eslint@9.39.1(jiti@2.4.2))(postcss@8.5.6)(prettier@3.6.2)(stylelint@16.25.0(typescript@5.9.3))
'@discourse/moment-timezone-names-translations':
specifier: ^1.0.0
version: 1.0.0
@@ -46,6 +46,9 @@ importers:
'@glint/ember-tsc':
specifier: ^1.0.7
version: 1.0.7(typescript@5.9.3)
+ '@glint/tsserver-plugin':
+ specifier: ^2.0.7
+ version: 2.0.7
'@rdil/parallel-prettier':
specifier: ^3.0.0
version: 3.0.0(prettier@3.6.2)
@@ -66,10 +69,10 @@ importers:
version: 7.9.3
esbuild:
specifier: ^0.25.11
- version: 0.25.12
+ version: 0.25.11
eslint:
specifier: 9.39.1
- version: 9.39.1
+ version: 9.39.1(jiti@2.4.2)
jsdoc:
specifier: ^4.0.5
version: 4.0.5
@@ -87,7 +90,7 @@ importers:
version: 3.1.0(ember-template-lint@7.9.3)
lint-to-the-future-eslint:
specifier: ^3.2.0
- version: 3.2.0(eslint@9.39.1)
+ version: 3.2.0(eslint@9.39.1(jiti@2.4.2))
playwright:
specifier: 1.56.1
version: 1.56.1
@@ -202,7 +205,7 @@ importers:
devDependencies:
vitest:
specifier: ^4.0.8
- version: 4.0.8(@types/node@24.10.0)(jsdom@25.0.1)(terser@5.44.1)
+ version: 4.0.8(@types/node@24.9.2)(jiti@2.4.2)(jsdom@25.0.1)(terser@5.44.1)
frontend/custom-proxy:
devDependencies:
@@ -436,7 +439,7 @@ importers:
version: 2.1.8(@embroider/core@3.5.5(@glint/template@1.7.2))(@glint/template@1.7.2)
'@embroider/webpack':
specifier: ^4.1.0
- version: 4.1.0(@embroider/core@3.5.5(@glint/template@1.7.2))(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.12))
+ version: 4.1.0(@embroider/core@3.5.5(@glint/template@1.7.2))(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.11))
'@floating-ui/dom':
specifier: ^1.7.4
version: 1.7.4
@@ -514,7 +517,7 @@ importers:
version: 2.0.1(@babel/core@7.28.5)(@glint/template@1.7.2)
ember-auto-import:
specifier: ^2.11.2
- version: 2.11.2(@glint/template@1.7.2)(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.12))
+ version: 2.11.2(@glint/template@1.7.2)(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.11))
ember-buffered-proxy:
specifier: ^2.1.1
version: 2.1.1(@babel/core@7.28.5)
@@ -523,7 +526,7 @@ importers:
version: 1.0.2(@babel/core@7.28.5)(@glint/template@1.7.2)(ember-source@6.6.0(patch_hash=nsmtwj6thcg4lxkztr5oqzscwe)(@glimmer/component@2.0.0)(rsvp@4.8.5))
ember-cli:
specifier: ~6.8.0
- version: 6.8.0(@types/node@24.10.0)(handlebars@4.7.8)(underscore@1.13.7)
+ version: 6.8.0(@types/node@24.9.2)(handlebars@4.7.8)(underscore@1.13.7)
ember-cli-app-version:
specifier: ^7.0.0
version: 7.0.0(ember-source@6.6.0(patch_hash=nsmtwj6thcg4lxkztr5oqzscwe)(@glimmer/component@2.0.0)(rsvp@4.8.5))
@@ -553,7 +556,7 @@ importers:
version: 6.1.1
ember-exam:
specifier: ^10.0.0
- version: 10.0.0(@glint/template@1.7.2)(ember-qunit@9.0.4(@ember/test-helpers@5.4.0(@babel/core@7.28.5)(@glint/template@1.7.2))(@glint/template@1.7.2)(qunit@2.24.2))(ember-source@6.6.0(patch_hash=nsmtwj6thcg4lxkztr5oqzscwe)(@glimmer/component@2.0.0)(rsvp@4.8.5))(qunit@2.24.2)(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.12))
+ version: 10.0.0(@glint/template@1.7.2)(ember-qunit@9.0.4(@ember/test-helpers@5.4.0(@babel/core@7.28.5)(@glint/template@1.7.2))(@glint/template@1.7.2)(qunit@2.24.2))(ember-source@6.6.0(patch_hash=nsmtwj6thcg4lxkztr5oqzscwe)(@glimmer/component@2.0.0)(rsvp@4.8.5))(qunit@2.24.2)(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.11))
ember-load-initializers:
specifier: ^3.0.1
version: 3.0.1(ember-source@6.6.0(patch_hash=nsmtwj6thcg4lxkztr5oqzscwe)(@glimmer/component@2.0.0)(rsvp@4.8.5))
@@ -574,7 +577,7 @@ importers:
version: 2.6.0
imports-loader:
specifier: ^5.0.0
- version: 5.0.0(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.12))
+ version: 5.0.0(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.11))
jquery:
specifier: ^3.7.1
version: 3.7.1
@@ -625,10 +628,10 @@ importers:
version: 2.1.1(patch_hash=ng672yys7q7cl7vz44xn3y54uq)
webpack:
specifier: 5.99.9
- version: 5.99.9(@swc/core@1.15.0)(esbuild@0.25.12)
+ version: 5.99.9(@swc/core@1.15.0)(esbuild@0.25.11)
webpack-retry-chunk-load-plugin:
specifier: ^3.1.1
- version: 3.1.1(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.12))
+ version: 3.1.1(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.11))
webpack-stats-plugin:
specifier: ^1.1.3
version: 1.1.3
@@ -655,7 +658,7 @@ importers:
version: link:../discourse-i18n
ember-auto-import:
specifier: ^2.11.2
- version: 2.11.2(@glint/template@1.7.2)(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.12))
+ version: 2.11.2(@glint/template@1.7.2)(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.11))
markdown-it:
specifier: 14.0.0
version: 14.0.0
@@ -692,10 +695,25 @@ importers:
devDependencies:
ember-cli:
specifier: ~6.8.0
- version: 6.8.0(@types/node@24.10.0)(handlebars@4.7.8)(underscore@1.13.7)
+ version: 6.8.0(@types/node@24.9.2)(handlebars@4.7.8)(underscore@1.13.7)
webpack:
specifier: 5.99.9
- version: 5.99.9(@swc/core@1.15.0)(esbuild@0.25.12)
+ version: 5.99.9(@swc/core@1.15.0)(esbuild@0.25.11)
+
+ frontend/discourse-types:
+ dependencies:
+ '@types/@glimmer__component':
+ specifier: npm:@glimmer/component@^2.0.0
+ version: '@glimmer/component@2.0.0'
+ '@types/@glint__ember-tsc':
+ specifier: npm:@glint/ember-tsc@^1.0.7
+ version: '@glint/ember-tsc@1.0.7(typescript@5.9.3)'
+ '@types/@glint__template':
+ specifier: npm:@glint/template@^1.7.2
+ version: '@glint/template@1.7.2'
+ ember-source:
+ specifier: ~6.6.0
+ version: 6.6.0(patch_hash=nsmtwj6thcg4lxkztr5oqzscwe)(@glimmer/component@2.0.0)(rsvp@4.8.5)
frontend/discourse-widget-hbs:
dependencies:
@@ -704,7 +722,7 @@ importers:
version: 7.28.5(supports-color@8.1.1)
ember-auto-import:
specifier: ^2.11.2
- version: 2.11.2(@glint/template@1.7.2)(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.12))
+ version: 2.11.2(@glint/template@1.7.2)(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.11))
ember-cli-babel:
specifier: ^8.2.0
version: 8.2.0(@babel/core@7.28.5)
@@ -717,7 +735,7 @@ importers:
version: 2.2.0
'@embroider/test-setup':
specifier: ^4.0.0
- version: 4.0.0(@embroider/compat@3.8.5(@embroider/core@3.5.5(@glint/template@1.7.2))(@glint/template@1.7.2))(@embroider/core@3.5.5(@glint/template@1.7.2))(@embroider/webpack@4.1.0(@embroider/core@3.5.5(@glint/template@1.7.2))(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.12)))
+ version: 4.0.0(@embroider/compat@3.8.5(@embroider/core@3.5.5(@glint/template@1.7.2))(@glint/template@1.7.2))(@embroider/core@3.5.5(@glint/template@1.7.2))(@embroider/webpack@4.1.0(@embroider/core@3.5.5(@glint/template@1.7.2))(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.11)))
'@glimmer/component':
specifier: ^2.0.0
version: 2.0.0
@@ -729,7 +747,7 @@ importers:
version: 3.0.0
ember-cli:
specifier: ~6.8.0
- version: 6.8.0(@types/node@24.10.0)(handlebars@4.7.8)(underscore@1.13.7)
+ version: 6.8.0(@types/node@24.9.2)(handlebars@4.7.8)(underscore@1.13.7)
ember-cli-inject-live-reload:
specifier: ^2.1.0
version: 2.1.0
@@ -759,7 +777,7 @@ importers:
version: 4.7.0
webpack:
specifier: 5.99.9
- version: 5.99.9(@swc/core@1.15.0)(esbuild@0.25.12)
+ version: 5.99.9(@swc/core@1.15.0)(esbuild@0.25.11)
frontend/ember-cli-progress-ci: {}
@@ -773,7 +791,7 @@ importers:
version: link:../discourse-i18n
ember-auto-import:
specifier: ^2.11.2
- version: 2.11.2(@glint/template@1.7.2)(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.12))
+ version: 2.11.2(@glint/template@1.7.2)(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.11))
ember-cli-babel:
specifier: ^8.2.0
version: 8.2.0(@babel/core@7.28.5)
@@ -789,7 +807,7 @@ importers:
version: 2.2.0
'@embroider/test-setup':
specifier: ^4.0.0
- version: 4.0.0(@embroider/compat@3.8.5(@embroider/core@3.5.5(@glint/template@1.7.2))(@glint/template@1.7.2))(@embroider/core@3.5.5(@glint/template@1.7.2))(@embroider/webpack@4.1.0(@embroider/core@3.5.5(@glint/template@1.7.2))(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.12)))
+ version: 4.0.0(@embroider/compat@3.8.5(@embroider/core@3.5.5(@glint/template@1.7.2))(@glint/template@1.7.2))(@embroider/core@3.5.5(@glint/template@1.7.2))(@embroider/webpack@4.1.0(@embroider/core@3.5.5(@glint/template@1.7.2))(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.11)))
'@glimmer/component':
specifier: ^2.0.0
version: 2.0.0
@@ -807,7 +825,7 @@ importers:
version: 3.0.0
ember-cli:
specifier: ~6.8.0
- version: 6.8.0(@types/node@24.10.0)(handlebars@4.7.8)(underscore@1.13.7)
+ version: 6.8.0(@types/node@24.9.2)(handlebars@4.7.8)(underscore@1.13.7)
ember-cli-inject-live-reload:
specifier: ^2.1.0
version: 2.1.0
@@ -837,7 +855,259 @@ importers:
version: 4.7.0
webpack:
specifier: 5.99.9
- version: 5.99.9(@swc/core@1.15.0)(esbuild@0.25.12)
+ version: 5.99.9(@swc/core@1.15.0)(esbuild@0.25.11)
+
+ plugins/automation:
+ dependencies:
+ discourse:
+ specifier: workspace:@discourse/types@0.0.0
+ version: link:../../frontend/discourse-types
+
+ plugins/chat:
+ dependencies:
+ discourse:
+ specifier: workspace:@discourse/types@0.0.0
+ version: link:../../frontend/discourse-types
+
+ plugins/checklist:
+ dependencies:
+ discourse:
+ specifier: workspace:@discourse/types@0.0.0
+ version: link:../../frontend/discourse-types
+
+ plugins/discourse-adplugin:
+ dependencies:
+ discourse:
+ specifier: workspace:@discourse/types@0.0.0
+ version: link:../../frontend/discourse-types
+
+ plugins/discourse-affiliate:
+ dependencies:
+ discourse:
+ specifier: workspace:@discourse/types@0.0.0
+ version: link:../../frontend/discourse-types
+
+ plugins/discourse-ai:
+ dependencies:
+ discourse:
+ specifier: workspace:@discourse/types@0.0.0
+ version: link:../../frontend/discourse-types
+
+ plugins/discourse-apple-auth:
+ dependencies:
+ discourse:
+ specifier: workspace:@discourse/types@0.0.0
+ version: link:../../frontend/discourse-types
+
+ plugins/discourse-assign:
+ dependencies:
+ discourse:
+ specifier: workspace:@discourse/types@0.0.0
+ version: link:../../frontend/discourse-types
+
+ plugins/discourse-cakeday:
+ dependencies:
+ discourse:
+ specifier: workspace:@discourse/types@0.0.0
+ version: link:../../frontend/discourse-types
+
+ plugins/discourse-calendar:
+ dependencies:
+ discourse:
+ specifier: workspace:@discourse/types@0.0.0
+ version: link:../../frontend/discourse-types
+
+ plugins/discourse-chat-integration:
+ dependencies:
+ discourse:
+ specifier: workspace:@discourse/types@0.0.0
+ version: link:../../frontend/discourse-types
+
+ plugins/discourse-data-explorer:
+ dependencies:
+ discourse:
+ specifier: workspace:@discourse/types@0.0.0
+ version: link:../../frontend/discourse-types
+
+ plugins/discourse-details:
+ dependencies:
+ discourse:
+ specifier: workspace:@discourse/types@0.0.0
+ version: link:../../frontend/discourse-types
+
+ plugins/discourse-gamification:
+ dependencies:
+ discourse:
+ specifier: workspace:@discourse/types@0.0.0
+ version: link:../../frontend/discourse-types
+
+ plugins/discourse-github:
+ dependencies:
+ discourse:
+ specifier: workspace:@discourse/types@0.0.0
+ version: link:../../frontend/discourse-types
+
+ plugins/discourse-graphviz:
+ dependencies:
+ discourse:
+ specifier: workspace:@discourse/types@0.0.0
+ version: link:../../frontend/discourse-types
+
+ plugins/discourse-hcaptcha:
+ dependencies:
+ discourse:
+ specifier: workspace:@discourse/types@0.0.0
+ version: link:../../frontend/discourse-types
+
+ plugins/discourse-lazy-videos:
+ dependencies:
+ discourse:
+ specifier: workspace:@discourse/types@0.0.0
+ version: link:../../frontend/discourse-types
+
+ plugins/discourse-local-dates:
+ dependencies:
+ discourse:
+ specifier: workspace:@discourse/types@0.0.0
+ version: link:../../frontend/discourse-types
+
+ plugins/discourse-login-with-amazon:
+ dependencies:
+ discourse:
+ specifier: workspace:@discourse/types@0.0.0
+ version: link:../../frontend/discourse-types
+
+ plugins/discourse-lti:
+ dependencies:
+ discourse:
+ specifier: workspace:@discourse/types@0.0.0
+ version: link:../../frontend/discourse-types
+
+ plugins/discourse-math:
+ dependencies:
+ discourse:
+ specifier: workspace:@discourse/types@0.0.0
+ version: link:../../frontend/discourse-types
+
+ plugins/discourse-microsoft-auth:
+ dependencies:
+ discourse:
+ specifier: workspace:@discourse/types@0.0.0
+ version: link:../../frontend/discourse-types
+
+ plugins/discourse-narrative-bot:
+ dependencies:
+ discourse:
+ specifier: workspace:@discourse/types@0.0.0
+ version: link:../../frontend/discourse-types
+
+ plugins/discourse-oauth2-basic:
+ dependencies:
+ discourse:
+ specifier: workspace:@discourse/types@0.0.0
+ version: link:../../frontend/discourse-types
+
+ plugins/discourse-openid-connect:
+ dependencies:
+ discourse:
+ specifier: workspace:@discourse/types@0.0.0
+ version: link:../../frontend/discourse-types
+
+ plugins/discourse-patreon:
+ dependencies:
+ discourse:
+ specifier: workspace:@discourse/types@0.0.0
+ version: link:../../frontend/discourse-types
+
+ plugins/discourse-policy:
+ dependencies:
+ discourse:
+ specifier: workspace:@discourse/types@0.0.0
+ version: link:../../frontend/discourse-types
+
+ plugins/discourse-post-voting:
+ dependencies:
+ discourse:
+ specifier: workspace:@discourse/types@0.0.0
+ version: link:../../frontend/discourse-types
+
+ plugins/discourse-presence:
+ dependencies:
+ discourse:
+ specifier: workspace:@discourse/types@0.0.0
+ version: link:../../frontend/discourse-types
+
+ plugins/discourse-reactions:
+ dependencies:
+ discourse:
+ specifier: workspace:@discourse/types@0.0.0
+ version: link:../../frontend/discourse-types
+
+ plugins/discourse-rss-polling:
+ dependencies:
+ discourse:
+ specifier: workspace:@discourse/types@0.0.0
+ version: link:../../frontend/discourse-types
+
+ plugins/discourse-solved:
+ dependencies:
+ discourse:
+ specifier: workspace:@discourse/types@0.0.0
+ version: link:../../frontend/discourse-types
+
+ plugins/discourse-subscriptions:
+ dependencies:
+ discourse:
+ specifier: workspace:@discourse/types@0.0.0
+ version: link:../../frontend/discourse-types
+
+ plugins/discourse-templates:
+ dependencies:
+ discourse:
+ specifier: workspace:@discourse/types@0.0.0
+ version: link:../../frontend/discourse-types
+
+ plugins/discourse-topic-voting:
+ dependencies:
+ discourse:
+ specifier: workspace:@discourse/types@0.0.0
+ version: link:../../frontend/discourse-types
+
+ plugins/discourse-user-notes:
+ dependencies:
+ discourse:
+ specifier: workspace:@discourse/types@0.0.0
+ version: link:../../frontend/discourse-types
+
+ plugins/discourse-zendesk-plugin:
+ dependencies:
+ discourse:
+ specifier: workspace:@discourse/types@0.0.0
+ version: link:../../frontend/discourse-types
+
+ plugins/footnote:
+ dependencies:
+ discourse:
+ specifier: workspace:@discourse/types@0.0.0
+ version: link:../../frontend/discourse-types
+
+ plugins/poll:
+ dependencies:
+ discourse:
+ specifier: workspace:@discourse/types@0.0.0
+ version: link:../../frontend/discourse-types
+
+ plugins/spoiler-alert:
+ dependencies:
+ discourse:
+ specifier: workspace:@discourse/types@0.0.0
+ version: link:../../frontend/discourse-types
+
+ plugins/styleguide:
+ dependencies:
+ discourse:
+ specifier: workspace:@discourse/types@0.0.0
+ version: link:../../frontend/discourse-types
packages:
@@ -856,8 +1126,8 @@ packages:
resolution: {integrity: sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==}
engines: {node: '>=6.9.0'}
- '@babel/eslint-parser@7.28.5':
- resolution: {integrity: sha512-fcdRcWahONYo+JRnJg1/AekOacGvKx12Gu0qXJXFi2WBqQA1i7+O5PaxRB7kxE/Op94dExnCiiar6T09pvdHpA==}
+ '@babel/eslint-parser@7.28.4':
+ resolution: {integrity: sha512-Aa+yDiH87980jR6zvRfFuCR1+dLb00vBydhTL+zI992Rz/wQhSvuxjmOOuJOgO3XmakO6RykRGD2S1mq1AtgHA==}
engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0}
peerDependencies:
'@babel/core': ^7.11.0
@@ -1677,158 +1947,158 @@ packages:
'@embroider/core': ^3.5.2
webpack: ^5.0.0
- '@esbuild/aix-ppc64@0.25.12':
- resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==}
+ '@esbuild/aix-ppc64@0.25.11':
+ resolution: {integrity: sha512-Xt1dOL13m8u0WE8iplx9Ibbm+hFAO0GsU2P34UNoDGvZYkY8ifSiy6Zuc1lYxfG7svWE2fzqCUmFp5HCn51gJg==}
engines: {node: '>=18'}
cpu: [ppc64]
os: [aix]
- '@esbuild/android-arm64@0.25.12':
- resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==}
+ '@esbuild/android-arm64@0.25.11':
+ resolution: {integrity: sha512-9slpyFBc4FPPz48+f6jyiXOx/Y4v34TUeDDXJpZqAWQn/08lKGeD8aDp9TMn9jDz2CiEuHwfhRmGBvpnd/PWIQ==}
engines: {node: '>=18'}
cpu: [arm64]
os: [android]
- '@esbuild/android-arm@0.25.12':
- resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==}
+ '@esbuild/android-arm@0.25.11':
+ resolution: {integrity: sha512-uoa7dU+Dt3HYsethkJ1k6Z9YdcHjTrSb5NUy66ZfZaSV8hEYGD5ZHbEMXnqLFlbBflLsl89Zke7CAdDJ4JI+Gg==}
engines: {node: '>=18'}
cpu: [arm]
os: [android]
- '@esbuild/android-x64@0.25.12':
- resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==}
+ '@esbuild/android-x64@0.25.11':
+ resolution: {integrity: sha512-Sgiab4xBjPU1QoPEIqS3Xx+R2lezu0LKIEcYe6pftr56PqPygbB7+szVnzoShbx64MUupqoE0KyRlN7gezbl8g==}
engines: {node: '>=18'}
cpu: [x64]
os: [android]
- '@esbuild/darwin-arm64@0.25.12':
- resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==}
+ '@esbuild/darwin-arm64@0.25.11':
+ resolution: {integrity: sha512-VekY0PBCukppoQrycFxUqkCojnTQhdec0vevUL/EDOCnXd9LKWqD/bHwMPzigIJXPhC59Vd1WFIL57SKs2mg4w==}
engines: {node: '>=18'}
cpu: [arm64]
os: [darwin]
- '@esbuild/darwin-x64@0.25.12':
- resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==}
+ '@esbuild/darwin-x64@0.25.11':
+ resolution: {integrity: sha512-+hfp3yfBalNEpTGp9loYgbknjR695HkqtY3d3/JjSRUyPg/xd6q+mQqIb5qdywnDxRZykIHs3axEqU6l1+oWEQ==}
engines: {node: '>=18'}
cpu: [x64]
os: [darwin]
- '@esbuild/freebsd-arm64@0.25.12':
- resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==}
+ '@esbuild/freebsd-arm64@0.25.11':
+ resolution: {integrity: sha512-CmKjrnayyTJF2eVuO//uSjl/K3KsMIeYeyN7FyDBjsR3lnSJHaXlVoAK8DZa7lXWChbuOk7NjAc7ygAwrnPBhA==}
engines: {node: '>=18'}
cpu: [arm64]
os: [freebsd]
- '@esbuild/freebsd-x64@0.25.12':
- resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==}
+ '@esbuild/freebsd-x64@0.25.11':
+ resolution: {integrity: sha512-Dyq+5oscTJvMaYPvW3x3FLpi2+gSZTCE/1ffdwuM6G1ARang/mb3jvjxs0mw6n3Lsw84ocfo9CrNMqc5lTfGOw==}
engines: {node: '>=18'}
cpu: [x64]
os: [freebsd]
- '@esbuild/linux-arm64@0.25.12':
- resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==}
+ '@esbuild/linux-arm64@0.25.11':
+ resolution: {integrity: sha512-Qr8AzcplUhGvdyUF08A1kHU3Vr2O88xxP0Tm8GcdVOUm25XYcMPp2YqSVHbLuXzYQMf9Bh/iKx7YPqECs6ffLA==}
engines: {node: '>=18'}
cpu: [arm64]
os: [linux]
- '@esbuild/linux-arm@0.25.12':
- resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==}
+ '@esbuild/linux-arm@0.25.11':
+ resolution: {integrity: sha512-TBMv6B4kCfrGJ8cUPo7vd6NECZH/8hPpBHHlYI3qzoYFvWu2AdTvZNuU/7hsbKWqu/COU7NIK12dHAAqBLLXgw==}
engines: {node: '>=18'}
cpu: [arm]
os: [linux]
- '@esbuild/linux-ia32@0.25.12':
- resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==}
+ '@esbuild/linux-ia32@0.25.11':
+ resolution: {integrity: sha512-TmnJg8BMGPehs5JKrCLqyWTVAvielc615jbkOirATQvWWB1NMXY77oLMzsUjRLa0+ngecEmDGqt5jiDC6bfvOw==}
engines: {node: '>=18'}
cpu: [ia32]
os: [linux]
- '@esbuild/linux-loong64@0.25.12':
- resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==}
+ '@esbuild/linux-loong64@0.25.11':
+ resolution: {integrity: sha512-DIGXL2+gvDaXlaq8xruNXUJdT5tF+SBbJQKbWy/0J7OhU8gOHOzKmGIlfTTl6nHaCOoipxQbuJi7O++ldrxgMw==}
engines: {node: '>=18'}
cpu: [loong64]
os: [linux]
- '@esbuild/linux-mips64el@0.25.12':
- resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==}
+ '@esbuild/linux-mips64el@0.25.11':
+ resolution: {integrity: sha512-Osx1nALUJu4pU43o9OyjSCXokFkFbyzjXb6VhGIJZQ5JZi8ylCQ9/LFagolPsHtgw6himDSyb5ETSfmp4rpiKQ==}
engines: {node: '>=18'}
cpu: [mips64el]
os: [linux]
- '@esbuild/linux-ppc64@0.25.12':
- resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==}
+ '@esbuild/linux-ppc64@0.25.11':
+ resolution: {integrity: sha512-nbLFgsQQEsBa8XSgSTSlrnBSrpoWh7ioFDUmwo158gIm5NNP+17IYmNWzaIzWmgCxq56vfr34xGkOcZ7jX6CPw==}
engines: {node: '>=18'}
cpu: [ppc64]
os: [linux]
- '@esbuild/linux-riscv64@0.25.12':
- resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==}
+ '@esbuild/linux-riscv64@0.25.11':
+ resolution: {integrity: sha512-HfyAmqZi9uBAbgKYP1yGuI7tSREXwIb438q0nqvlpxAOs3XnZ8RsisRfmVsgV486NdjD7Mw2UrFSw51lzUk1ww==}
engines: {node: '>=18'}
cpu: [riscv64]
os: [linux]
- '@esbuild/linux-s390x@0.25.12':
- resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==}
+ '@esbuild/linux-s390x@0.25.11':
+ resolution: {integrity: sha512-HjLqVgSSYnVXRisyfmzsH6mXqyvj0SA7pG5g+9W7ESgwA70AXYNpfKBqh1KbTxmQVaYxpzA/SvlB9oclGPbApw==}
engines: {node: '>=18'}
cpu: [s390x]
os: [linux]
- '@esbuild/linux-x64@0.25.12':
- resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==}
+ '@esbuild/linux-x64@0.25.11':
+ resolution: {integrity: sha512-HSFAT4+WYjIhrHxKBwGmOOSpphjYkcswF449j6EjsjbinTZbp8PJtjsVK1XFJStdzXdy/jaddAep2FGY+wyFAQ==}
engines: {node: '>=18'}
cpu: [x64]
os: [linux]
- '@esbuild/netbsd-arm64@0.25.12':
- resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==}
+ '@esbuild/netbsd-arm64@0.25.11':
+ resolution: {integrity: sha512-hr9Oxj1Fa4r04dNpWr3P8QKVVsjQhqrMSUzZzf+LZcYjZNqhA3IAfPQdEh1FLVUJSiu6sgAwp3OmwBfbFgG2Xg==}
engines: {node: '>=18'}
cpu: [arm64]
os: [netbsd]
- '@esbuild/netbsd-x64@0.25.12':
- resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==}
+ '@esbuild/netbsd-x64@0.25.11':
+ resolution: {integrity: sha512-u7tKA+qbzBydyj0vgpu+5h5AeudxOAGncb8N6C9Kh1N4n7wU1Xw1JDApsRjpShRpXRQlJLb9wY28ELpwdPcZ7A==}
engines: {node: '>=18'}
cpu: [x64]
os: [netbsd]
- '@esbuild/openbsd-arm64@0.25.12':
- resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==}
+ '@esbuild/openbsd-arm64@0.25.11':
+ resolution: {integrity: sha512-Qq6YHhayieor3DxFOoYM1q0q1uMFYb7cSpLD2qzDSvK1NAvqFi8Xgivv0cFC6J+hWVw2teCYltyy9/m/14ryHg==}
engines: {node: '>=18'}
cpu: [arm64]
os: [openbsd]
- '@esbuild/openbsd-x64@0.25.12':
- resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==}
+ '@esbuild/openbsd-x64@0.25.11':
+ resolution: {integrity: sha512-CN+7c++kkbrckTOz5hrehxWN7uIhFFlmS/hqziSFVWpAzpWrQoAG4chH+nN3Be+Kzv/uuo7zhX716x3Sn2Jduw==}
engines: {node: '>=18'}
cpu: [x64]
os: [openbsd]
- '@esbuild/openharmony-arm64@0.25.12':
- resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==}
+ '@esbuild/openharmony-arm64@0.25.11':
+ resolution: {integrity: sha512-rOREuNIQgaiR+9QuNkbkxubbp8MSO9rONmwP5nKncnWJ9v5jQ4JxFnLu4zDSRPf3x4u+2VN4pM4RdyIzDty/wQ==}
engines: {node: '>=18'}
cpu: [arm64]
os: [openharmony]
- '@esbuild/sunos-x64@0.25.12':
- resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==}
+ '@esbuild/sunos-x64@0.25.11':
+ resolution: {integrity: sha512-nq2xdYaWxyg9DcIyXkZhcYulC6pQ2FuCgem3LI92IwMgIZ69KHeY8T4Y88pcwoLIjbed8n36CyKoYRDygNSGhA==}
engines: {node: '>=18'}
cpu: [x64]
os: [sunos]
- '@esbuild/win32-arm64@0.25.12':
- resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==}
+ '@esbuild/win32-arm64@0.25.11':
+ resolution: {integrity: sha512-3XxECOWJq1qMZ3MN8srCJ/QfoLpL+VaxD/WfNRm1O3B4+AZ/BnLVgFbUV3eiRYDMXetciH16dwPbbHqwe1uU0Q==}
engines: {node: '>=18'}
cpu: [arm64]
os: [win32]
- '@esbuild/win32-ia32@0.25.12':
- resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==}
+ '@esbuild/win32-ia32@0.25.11':
+ resolution: {integrity: sha512-3ukss6gb9XZ8TlRyJlgLn17ecsK4NSQTmdIXRASVsiS2sQ6zPPZklNJT5GR5tE/MUarymmy8kCEf5xPCNCqVOA==}
engines: {node: '>=18'}
cpu: [ia32]
os: [win32]
- '@esbuild/win32-x64@0.25.12':
- resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==}
+ '@esbuild/win32-x64@0.25.11':
+ resolution: {integrity: sha512-D7Hpz6A2L4hzsRpPaCYkQnGOotdUpDzSGRIv9I+1ITdHROSFUWW95ZPZWQmGka1Fg7W3zFJowyn9WGwMJ0+KPA==}
engines: {node: '>=18'}
cpu: [x64]
os: [win32]
@@ -1839,8 +2109,8 @@ packages:
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
- '@eslint-community/regexpp@4.12.2':
- resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==}
+ '@eslint-community/regexpp@4.12.1':
+ resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==}
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
'@eslint/config-array@0.21.1':
@@ -2020,6 +2290,9 @@ packages:
'@glint/template@1.7.2':
resolution: {integrity: sha512-2oR9keyT1+MEP61zM9D7wPRTvoukUtRm+OpRZgWPIJH8WhjaVWardTuF3l7OX2frR1j/46FpKt0kZoFBXhzW4Q==}
+ '@glint/tsserver-plugin@2.0.7':
+ resolution: {integrity: sha512-w8NU7l2csI04DUHR4CdzLLwd9wQFeRqaS/C+g/EGBUxN+loI++vcVJ6JISuJJoskAJWHSJGwWGUHWK9ZmCK68A==}
+
'@handlebars/parser@2.0.0':
resolution: {integrity: sha512-EP9uEDZv/L5Qh9IWuMUGJRfwhXJ4h1dqKTT4/3+tY0eu7sPis7xh23j61SYUnNF4vqCQvvUXpDo9Bh/+q1zASA==}
@@ -2639,8 +2912,8 @@ packages:
'@types/minimatch@3.0.5':
resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==}
- '@types/node@24.10.0':
- resolution: {integrity: sha512-qzQZRBqkFsYyaSWXuEHc2WR9c0a0CXwiE5FWUvn7ZM+vdy1uZLfCunD38UzhuB7YN/J11ndbDBcTmOdxJo9Q7A==}
+ '@types/node@24.9.2':
+ resolution: {integrity: sha512-uWN8YqxXxqFMX2RqGOrumsKeti4LlmIMIyV0lgut4jx7KQBcBiW6vkDtIBvHnHIquwNfJhk8v2OtmO8zXWHfPA==}
'@types/qs@6.14.0':
resolution: {integrity: sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==}
@@ -2690,8 +2963,8 @@ packages:
'@types/yauzl@2.10.3':
resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==}
- '@typescript-eslint/tsconfig-utils@8.46.2':
- resolution: {integrity: sha512-a7QH6fw4S57+F5y2FIxxSDyi5M4UfGF+Jl1bCGd7+L4KsaUY80GsiF/t0UoRFDHAguKlBaACWJRmdrc6Xfkkag==}
+ '@typescript-eslint/tsconfig-utils@8.46.0':
+ resolution: {integrity: sha512-WrYXKGAHY836/N7zoK/kzi6p8tXFhasHh8ocFL9VZSAkvH956gfeRfcnhs3xzRy8qQ/dq3q44v1jvQieMFg2cw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.0.0'
@@ -3221,8 +3494,8 @@ packages:
balanced-match@2.0.0:
resolution: {integrity: sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==}
- bare-events@2.8.2:
- resolution: {integrity: sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==}
+ bare-events@2.8.1:
+ resolution: {integrity: sha512-oxSAxTS1hRfnyit2CL5QpAOS5ixfBjj6ex3yTNvXyY/kE719jQ/IjuESJBK2w5v4wwQRAHGseVJXx9QBYOtFGQ==}
peerDependencies:
bare-abort-controller: '*'
peerDependenciesMeta:
@@ -3256,8 +3529,8 @@ packages:
bare-events:
optional: true
- bare-url@2.3.2:
- resolution: {integrity: sha512-ZMq4gd9ngV5aTMa5p9+UfY0b3skwhHELaDkhEHetMdX0LRkW9kzaym4oo/Eh+Ghm0CCDuMTsRIGM/ytUc1ZYmw==}
+ bare-url@2.3.1:
+ resolution: {integrity: sha512-v2yl0TnaZTdEnelkKtXZGnotiV6qATBlnNuUMrHl6v9Lmmrh9mw9RYyImPU7/4RahumSwQS1k2oKXcRfXcbjJw==}
base64-js@1.5.1:
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
@@ -4599,8 +4872,8 @@ packages:
resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==}
engines: {node: '>= 0.4'}
- esbuild@0.25.12:
- resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==}
+ esbuild@0.25.11:
+ resolution: {integrity: sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==}
engines: {node: '>=18'}
hasBin: true
@@ -5936,6 +6209,10 @@ packages:
resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==}
engines: {node: '>= 10.13.0'}
+ jiti@2.4.2:
+ resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==}
+ hasBin: true
+
jquery@3.7.1:
resolution: {integrity: sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==}
@@ -8745,8 +9022,8 @@ packages:
'@volar/language-service':
optional: true
- vscode-html-languageservice@5.6.0:
- resolution: {integrity: sha512-FIVz83oGw2tBkOr8gQPeiREInnineCKGCz3ZD1Pi6opOuX3nSRkc4y4zLLWsuop+6ttYX//XZCI6SLzGhRzLmA==}
+ vscode-html-languageservice@5.5.2:
+ resolution: {integrity: sha512-QpaUhCjvb7U/qThOzo4V6grwsRE62Jk/vf8BRJZoABlMw3oplLB5uovrvcrLO9vYhkeMiSjyqLnCxbfHzzZqmw==}
vscode-jsonrpc@8.2.0:
resolution: {integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==}
@@ -9101,11 +9378,11 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@babel/eslint-parser@7.28.5(@babel/core@7.28.5)(eslint@9.39.1)':
+ '@babel/eslint-parser@7.28.4(@babel/core@7.28.5)(eslint@9.39.1(jiti@2.4.2))':
dependencies:
'@babel/core': 7.28.5(supports-color@8.1.1)
'@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1
- eslint: 9.39.1
+ eslint: 9.39.1(jiti@2.4.2)
eslint-visitor-keys: 2.1.0
semver: 6.3.1
@@ -9910,19 +10187,19 @@ snapshots:
'@discourse/itsatrap@2.0.10': {}
- '@discourse/lint-configs@2.34.2(ember-template-lint@7.9.3)(eslint@9.39.1)(postcss@8.5.6)(prettier@3.6.2)(stylelint@16.25.0(typescript@5.9.3))':
+ '@discourse/lint-configs@2.34.2(ember-template-lint@7.9.3)(eslint@9.39.1(jiti@2.4.2))(postcss@8.5.6)(prettier@3.6.2)(stylelint@16.25.0(typescript@5.9.3))':
dependencies:
'@babel/core': 7.28.5(supports-color@8.1.1)
- '@babel/eslint-parser': 7.28.5(@babel/core@7.28.5)(eslint@9.39.1)
+ '@babel/eslint-parser': 7.28.4(@babel/core@7.28.5)(eslint@9.39.1(jiti@2.4.2))
'@babel/plugin-proposal-decorators': 7.28.0(@babel/core@7.28.5)
ember-template-lint: 7.9.3
- eslint: 9.39.1
- eslint-plugin-decorator-position: 6.0.0(@babel/eslint-parser@7.28.5(@babel/core@7.28.5)(eslint@9.39.1))(eslint@9.39.1)
- eslint-plugin-ember: 12.7.4(@babel/core@7.28.5)(eslint@9.39.1)(typescript@5.9.3)
- eslint-plugin-import: 2.32.0(eslint@9.39.1)
- eslint-plugin-qunit: 8.2.5(eslint@9.39.1)
- eslint-plugin-simple-import-sort: 12.1.1(eslint@9.39.1)
- eslint-plugin-sort-class-members: 1.21.0(eslint@9.39.1)
+ eslint: 9.39.1(jiti@2.4.2)
+ eslint-plugin-decorator-position: 6.0.0(@babel/eslint-parser@7.28.4(@babel/core@7.28.5)(eslint@9.39.1(jiti@2.4.2)))(eslint@9.39.1(jiti@2.4.2))
+ eslint-plugin-ember: 12.7.4(@babel/core@7.28.5)(eslint@9.39.1(jiti@2.4.2))(typescript@5.9.3)
+ eslint-plugin-import: 2.32.0(eslint@9.39.1(jiti@2.4.2))
+ eslint-plugin-qunit: 8.2.5(eslint@9.39.1(jiti@2.4.2))
+ eslint-plugin-simple-import-sort: 12.1.1(eslint@9.39.1(jiti@2.4.2))
+ eslint-plugin-sort-class-members: 1.21.0(eslint@9.39.1(jiti@2.4.2))
globals: 16.4.0
prettier: 3.6.2
prettier-plugin-ember-template-tag: 2.1.0(prettier@3.6.2)
@@ -10071,11 +10348,11 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@embroider/babel-loader-9@3.1.1(@embroider/core@3.5.5(@glint/template@1.7.2))(supports-color@8.1.1)(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.12))':
+ '@embroider/babel-loader-9@3.1.1(@embroider/core@3.5.5(@glint/template@1.7.2))(supports-color@8.1.1)(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.11))':
dependencies:
'@babel/core': 7.28.5(supports-color@8.1.1)
'@embroider/core': 3.5.5(@glint/template@1.7.2)
- babel-loader: 9.2.1(@babel/core@7.28.5)(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.12))
+ babel-loader: 9.2.1(@babel/core@7.28.5)(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.11))
transitivePeerDependencies:
- supports-color
- webpack
@@ -10167,10 +10444,10 @@ snapshots:
- supports-color
- utf-8-validate
- '@embroider/hbs-loader@3.0.3(@embroider/core@3.5.5(@glint/template@1.7.2))(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.12))':
+ '@embroider/hbs-loader@3.0.3(@embroider/core@3.5.5(@glint/template@1.7.2))(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.11))':
dependencies:
'@embroider/core': 3.5.5(@glint/template@1.7.2)
- webpack: 5.99.9(@swc/core@1.15.0)(esbuild@0.25.12)
+ webpack: 5.99.9(@swc/core@1.15.0)(esbuild@0.25.11)
'@embroider/macros@1.16.12(@glint/template@1.7.2)':
dependencies:
@@ -10264,130 +10541,130 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@embroider/test-setup@4.0.0(@embroider/compat@3.8.5(@embroider/core@3.5.5(@glint/template@1.7.2))(@glint/template@1.7.2))(@embroider/core@3.5.5(@glint/template@1.7.2))(@embroider/webpack@4.1.0(@embroider/core@3.5.5(@glint/template@1.7.2))(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.12)))':
+ '@embroider/test-setup@4.0.0(@embroider/compat@3.8.5(@embroider/core@3.5.5(@glint/template@1.7.2))(@glint/template@1.7.2))(@embroider/core@3.5.5(@glint/template@1.7.2))(@embroider/webpack@4.1.0(@embroider/core@3.5.5(@glint/template@1.7.2))(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.11)))':
dependencies:
lodash: 4.17.21
resolve: 1.22.11
optionalDependencies:
'@embroider/compat': 3.8.5(@embroider/core@3.5.5(@glint/template@1.7.2))(@glint/template@1.7.2)
'@embroider/core': 3.5.5(@glint/template@1.7.2)
- '@embroider/webpack': 4.1.0(@embroider/core@3.5.5(@glint/template@1.7.2))(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.12))
+ '@embroider/webpack': 4.1.0(@embroider/core@3.5.5(@glint/template@1.7.2))(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.11))
- '@embroider/webpack@4.1.0(@embroider/core@3.5.5(@glint/template@1.7.2))(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.12))':
+ '@embroider/webpack@4.1.0(@embroider/core@3.5.5(@glint/template@1.7.2))(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.11))':
dependencies:
'@babel/core': 7.28.5(supports-color@8.1.1)
'@babel/preset-env': 7.28.5(@babel/core@7.28.5)(supports-color@8.1.1)
- '@embroider/babel-loader-9': 3.1.1(@embroider/core@3.5.5(@glint/template@1.7.2))(supports-color@8.1.1)(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.12))
+ '@embroider/babel-loader-9': 3.1.1(@embroider/core@3.5.5(@glint/template@1.7.2))(supports-color@8.1.1)(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.11))
'@embroider/core': 3.5.5(@glint/template@1.7.2)
- '@embroider/hbs-loader': 3.0.3(@embroider/core@3.5.5(@glint/template@1.7.2))(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.12))
+ '@embroider/hbs-loader': 3.0.3(@embroider/core@3.5.5(@glint/template@1.7.2))(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.11))
'@embroider/shared-internals': 2.9.0(supports-color@8.1.1)
'@types/supports-color': 8.1.3
assert-never: 1.4.0
- babel-loader: 8.4.1(@babel/core@7.28.5)(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.12))
- css-loader: 5.2.7(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.12))
+ babel-loader: 8.4.1(@babel/core@7.28.5)(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.11))
+ css-loader: 5.2.7(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.11))
csso: 4.2.0
debug: 4.4.3(supports-color@8.1.1)
escape-string-regexp: 4.0.0
fs-extra: 9.1.0
jsdom: 25.0.1(supports-color@8.1.1)
lodash: 4.17.21
- mini-css-extract-plugin: 2.9.4(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.12))
+ mini-css-extract-plugin: 2.9.4(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.11))
semver: 7.7.3
source-map-url: 0.4.1
- style-loader: 2.0.0(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.12))
+ style-loader: 2.0.0(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.11))
supports-color: 8.1.1
terser: 5.44.1
- thread-loader: 3.0.4(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.12))
- webpack: 5.99.9(@swc/core@1.15.0)(esbuild@0.25.12)
+ thread-loader: 3.0.4(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.11))
+ webpack: 5.99.9(@swc/core@1.15.0)(esbuild@0.25.11)
transitivePeerDependencies:
- bufferutil
- canvas
- utf-8-validate
- '@esbuild/aix-ppc64@0.25.12':
+ '@esbuild/aix-ppc64@0.25.11':
optional: true
- '@esbuild/android-arm64@0.25.12':
+ '@esbuild/android-arm64@0.25.11':
optional: true
- '@esbuild/android-arm@0.25.12':
+ '@esbuild/android-arm@0.25.11':
optional: true
- '@esbuild/android-x64@0.25.12':
+ '@esbuild/android-x64@0.25.11':
optional: true
- '@esbuild/darwin-arm64@0.25.12':
+ '@esbuild/darwin-arm64@0.25.11':
optional: true
- '@esbuild/darwin-x64@0.25.12':
+ '@esbuild/darwin-x64@0.25.11':
optional: true
- '@esbuild/freebsd-arm64@0.25.12':
+ '@esbuild/freebsd-arm64@0.25.11':
optional: true
- '@esbuild/freebsd-x64@0.25.12':
+ '@esbuild/freebsd-x64@0.25.11':
optional: true
- '@esbuild/linux-arm64@0.25.12':
+ '@esbuild/linux-arm64@0.25.11':
optional: true
- '@esbuild/linux-arm@0.25.12':
+ '@esbuild/linux-arm@0.25.11':
optional: true
- '@esbuild/linux-ia32@0.25.12':
+ '@esbuild/linux-ia32@0.25.11':
optional: true
- '@esbuild/linux-loong64@0.25.12':
+ '@esbuild/linux-loong64@0.25.11':
optional: true
- '@esbuild/linux-mips64el@0.25.12':
+ '@esbuild/linux-mips64el@0.25.11':
optional: true
- '@esbuild/linux-ppc64@0.25.12':
+ '@esbuild/linux-ppc64@0.25.11':
optional: true
- '@esbuild/linux-riscv64@0.25.12':
+ '@esbuild/linux-riscv64@0.25.11':
optional: true
- '@esbuild/linux-s390x@0.25.12':
+ '@esbuild/linux-s390x@0.25.11':
optional: true
- '@esbuild/linux-x64@0.25.12':
+ '@esbuild/linux-x64@0.25.11':
optional: true
- '@esbuild/netbsd-arm64@0.25.12':
+ '@esbuild/netbsd-arm64@0.25.11':
optional: true
- '@esbuild/netbsd-x64@0.25.12':
+ '@esbuild/netbsd-x64@0.25.11':
optional: true
- '@esbuild/openbsd-arm64@0.25.12':
+ '@esbuild/openbsd-arm64@0.25.11':
optional: true
- '@esbuild/openbsd-x64@0.25.12':
+ '@esbuild/openbsd-x64@0.25.11':
optional: true
- '@esbuild/openharmony-arm64@0.25.12':
+ '@esbuild/openharmony-arm64@0.25.11':
optional: true
- '@esbuild/sunos-x64@0.25.12':
+ '@esbuild/sunos-x64@0.25.11':
optional: true
- '@esbuild/win32-arm64@0.25.12':
+ '@esbuild/win32-arm64@0.25.11':
optional: true
- '@esbuild/win32-ia32@0.25.12':
+ '@esbuild/win32-ia32@0.25.11':
optional: true
- '@esbuild/win32-x64@0.25.12':
+ '@esbuild/win32-x64@0.25.11':
optional: true
- '@eslint-community/eslint-utils@4.9.0(eslint@9.39.1)':
+ '@eslint-community/eslint-utils@4.9.0(eslint@9.39.1(jiti@2.4.2))':
dependencies:
- eslint: 9.39.1
+ eslint: 9.39.1(jiti@2.4.2)
eslint-visitor-keys: 3.4.3
- '@eslint-community/regexpp@4.12.2': {}
+ '@eslint-community/regexpp@4.12.1': {}
'@eslint/config-array@0.21.1':
dependencies:
@@ -10674,6 +10951,16 @@ snapshots:
'@glint/template@1.7.2': {}
+ '@glint/tsserver-plugin@2.0.7':
+ dependencies:
+ '@glint/ember-tsc': 1.0.7(typescript@5.9.3)
+ '@volar/language-core': 2.4.23
+ '@volar/typescript': 2.4.23
+ jiti: 2.4.2
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
+
'@handlebars/parser@2.0.0': {}
'@handlebars/parser@2.2.1': {}
@@ -10691,12 +10978,12 @@ snapshots:
'@humanwhocodes/retry@0.4.3': {}
- '@inquirer/external-editor@1.0.2(@types/node@24.10.0)':
+ '@inquirer/external-editor@1.0.2(@types/node@24.9.2)':
dependencies:
chardet: 2.1.0
iconv-lite: 0.7.0
optionalDependencies:
- '@types/node': 24.10.0
+ '@types/node': 24.9.2
'@inquirer/figures@1.0.14': {}
@@ -11237,7 +11524,7 @@ snapshots:
'@types/body-parser@1.19.6':
dependencies:
'@types/connect': 3.4.38
- '@types/node': 24.10.0
+ '@types/node': 24.9.2
'@types/chai-as-promised@7.1.8':
dependencies:
@@ -11252,11 +11539,11 @@ snapshots:
'@types/connect@3.4.38':
dependencies:
- '@types/node': 24.10.0
+ '@types/node': 24.9.2
'@types/cors@2.8.18':
dependencies:
- '@types/node': 24.10.0
+ '@types/node': 24.9.2
'@types/deep-eql@4.0.2': {}
@@ -11279,7 +11566,7 @@ snapshots:
'@types/express-serve-static-core@4.19.7':
dependencies:
- '@types/node': 24.10.0
+ '@types/node': 24.9.2
'@types/qs': 6.14.0
'@types/range-parser': 1.2.7
'@types/send': 1.2.0
@@ -11293,11 +11580,11 @@ snapshots:
'@types/fs-extra@5.1.0':
dependencies:
- '@types/node': 24.10.0
+ '@types/node': 24.9.2
'@types/fs-extra@8.1.5':
dependencies:
- '@types/node': 24.10.0
+ '@types/node': 24.9.2
'@types/glob@9.0.0':
dependencies:
@@ -11326,7 +11613,7 @@ snapshots:
'@types/minimatch@3.0.5': {}
- '@types/node@24.10.0':
+ '@types/node@24.9.2':
dependencies:
undici-types: 7.16.0
@@ -11341,23 +11628,23 @@ snapshots:
'@types/rimraf@2.0.5':
dependencies:
'@types/glob': 9.0.0
- '@types/node': 24.10.0
+ '@types/node': 24.9.2
'@types/rsvp@4.0.9': {}
'@types/send@0.17.5':
dependencies:
'@types/mime': 1.3.5
- '@types/node': 24.10.0
+ '@types/node': 24.9.2
'@types/send@1.2.0':
dependencies:
- '@types/node': 24.10.0
+ '@types/node': 24.9.2
'@types/serve-static@1.15.9':
dependencies:
'@types/http-errors': 2.0.5
- '@types/node': 24.10.0
+ '@types/node': 24.9.2
'@types/send': 0.17.5
'@types/sizzle@2.3.10': {}
@@ -11376,10 +11663,10 @@ snapshots:
'@types/yauzl@2.10.3':
dependencies:
- '@types/node': 24.10.0
+ '@types/node': 24.9.2
optional: true
- '@typescript-eslint/tsconfig-utils@8.46.2(typescript@5.9.3)':
+ '@typescript-eslint/tsconfig-utils@8.46.0(typescript@5.9.3)':
dependencies:
typescript: 5.9.3
@@ -11434,13 +11721,13 @@ snapshots:
chai: 6.2.0
tinyrainbow: 3.0.3
- '@vitest/mocker@4.0.8(vite@7.2.2(@types/node@24.10.0)(terser@5.44.1))':
+ '@vitest/mocker@4.0.8(vite@7.2.2(@types/node@24.9.2)(jiti@2.4.2)(terser@5.44.1))':
dependencies:
'@vitest/spy': 4.0.8
estree-walker: 3.0.3
magic-string: 0.30.21
optionalDependencies:
- vite: 7.2.2(@types/node@24.10.0)(terser@5.44.1)
+ vite: 7.2.2(@types/node@24.9.2)(jiti@2.4.2)(terser@5.44.1)
'@vitest/pretty-format@4.0.8':
dependencies:
@@ -11876,21 +12163,21 @@ snapshots:
babel-import-util@3.0.1: {}
- babel-loader@8.4.1(@babel/core@7.28.5)(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.12)):
+ babel-loader@8.4.1(@babel/core@7.28.5)(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.11)):
dependencies:
'@babel/core': 7.28.5(supports-color@8.1.1)
find-cache-dir: 3.3.2
loader-utils: 2.0.4
make-dir: 3.1.0
schema-utils: 2.7.1
- webpack: 5.99.9(@swc/core@1.15.0)(esbuild@0.25.12)
+ webpack: 5.99.9(@swc/core@1.15.0)(esbuild@0.25.11)
- babel-loader@9.2.1(@babel/core@7.28.5)(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.12)):
+ babel-loader@9.2.1(@babel/core@7.28.5)(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.11)):
dependencies:
'@babel/core': 7.28.5(supports-color@8.1.1)
find-cache-dir: 4.0.0
schema-utils: 4.3.3
- webpack: 5.99.9(@swc/core@1.15.0)(esbuild@0.25.12)
+ webpack: 5.99.9(@swc/core@1.15.0)(esbuild@0.25.11)
babel-plugin-debug-macros@0.2.0(@babel/core@7.28.5):
dependencies:
@@ -12000,14 +12287,14 @@ snapshots:
balanced-match@2.0.0: {}
- bare-events@2.8.2: {}
+ bare-events@2.8.1: {}
bare-fs@4.5.0:
dependencies:
- bare-events: 2.8.2
+ bare-events: 2.8.1
bare-path: 3.0.0
- bare-stream: 2.7.0(bare-events@2.8.2)
- bare-url: 2.3.2
+ bare-stream: 2.7.0(bare-events@2.8.1)
+ bare-url: 2.3.1
fast-fifo: 1.3.2
transitivePeerDependencies:
- bare-abort-controller
@@ -12022,17 +12309,17 @@ snapshots:
bare-os: 3.6.2
optional: true
- bare-stream@2.7.0(bare-events@2.8.2):
+ bare-stream@2.7.0(bare-events@2.8.1):
dependencies:
streamx: 2.23.0
optionalDependencies:
- bare-events: 2.8.2
+ bare-events: 2.8.1
transitivePeerDependencies:
- bare-abort-controller
- react-native-b4a
optional: true
- bare-url@2.3.2:
+ bare-url@2.3.1:
dependencies:
bare-path: 3.0.0
optional: true
@@ -12685,7 +12972,7 @@ snapshots:
chrome-launcher@1.2.1:
dependencies:
- '@types/node': 24.10.0
+ '@types/node': 24.9.2
escape-string-regexp: 4.0.0
is-wsl: 2.2.0
lighthouse-logger: 2.0.2
@@ -12971,7 +13258,7 @@ snapshots:
css-functions-list@3.2.3: {}
- css-loader@5.2.7(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.12)):
+ css-loader@5.2.7(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.11)):
dependencies:
icss-utils: 5.1.0(postcss@8.5.6)
loader-utils: 2.0.4
@@ -12983,7 +13270,7 @@ snapshots:
postcss-value-parser: 4.2.0
schema-utils: 3.3.0
semver: 7.7.3
- webpack: 5.99.9(@swc/core@1.15.0)(esbuild@0.25.12)
+ webpack: 5.99.9(@swc/core@1.15.0)(esbuild@0.25.11)
css-tree@1.1.3:
dependencies:
@@ -13186,7 +13473,7 @@ snapshots:
- '@glint/template'
- supports-color
- ember-auto-import@2.11.2(@glint/template@1.7.2)(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.12)):
+ ember-auto-import@2.11.2(@glint/template@1.7.2)(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.11)):
dependencies:
'@babel/core': 7.28.5(supports-color@8.1.1)
'@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.28.5)
@@ -13196,7 +13483,7 @@ snapshots:
'@babel/preset-env': 7.28.5(@babel/core@7.28.5)(supports-color@8.1.1)
'@embroider/macros': 1.19.2(@glint/template@1.7.2)
'@embroider/shared-internals': 2.9.1
- babel-loader: 8.4.1(@babel/core@7.28.5)(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.12))
+ babel-loader: 8.4.1(@babel/core@7.28.5)(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.11))
babel-plugin-ember-modules-api-polyfill: 3.5.0
babel-plugin-ember-template-compilation: 2.4.1
babel-plugin-htmlbars-inline-precompile: 5.3.1
@@ -13206,7 +13493,7 @@ snapshots:
broccoli-merge-trees: 4.2.0
broccoli-plugin: 4.0.7
broccoli-source: 3.0.1
- css-loader: 5.2.7(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.12))
+ css-loader: 5.2.7(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.11))
debug: 4.4.3(supports-color@8.1.1)
fs-extra: 10.1.0
fs-tree-diff: 2.0.1
@@ -13214,14 +13501,14 @@ snapshots:
is-subdir: 1.2.0
js-string-escape: 1.0.1
lodash: 4.17.21
- mini-css-extract-plugin: 2.9.4(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.12))
+ mini-css-extract-plugin: 2.9.4(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.11))
minimatch: 3.1.2
parse5: 6.0.1
pkg-entry-points: 1.1.1
resolve: 1.22.11
resolve-package-path: 4.0.3
semver: 7.7.3
- style-loader: 2.0.0(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.12))
+ style-loader: 2.0.0(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.11))
typescript-memoize: 1.1.1
walk-sync: 3.0.0
transitivePeerDependencies:
@@ -13473,7 +13760,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- ember-cli@6.8.0(@types/node@24.10.0)(handlebars@4.7.8)(underscore@1.13.7):
+ ember-cli@6.8.0(@types/node@24.9.2)(handlebars@4.7.8)(underscore@1.13.7):
dependencies:
'@ember-tooling/blueprint-blueprint': 0.2.1
'@ember-tooling/blueprint-model': 0.4.1
@@ -13529,7 +13816,7 @@ snapshots:
heimdalljs-logger: 0.1.10
http-proxy: 1.18.1
inflection: 2.0.1
- inquirer: 9.3.8(@types/node@24.10.0)
+ inquirer: 9.3.8(@types/node@24.9.2)
is-git-url: 1.0.0
is-language-code: 3.1.0
isbinaryfile: 5.0.6
@@ -13649,12 +13936,12 @@ snapshots:
ember-disable-prototype-extensions@1.1.3: {}
- ember-eslint-parser@0.5.11(@babel/core@7.28.5)(eslint@9.39.1)(typescript@5.9.3):
+ ember-eslint-parser@0.5.11(@babel/core@7.28.5)(eslint@9.39.1(jiti@2.4.2))(typescript@5.9.3):
dependencies:
'@babel/core': 7.28.5(supports-color@8.1.1)
- '@babel/eslint-parser': 7.28.5(@babel/core@7.28.5)(eslint@9.39.1)
+ '@babel/eslint-parser': 7.28.4(@babel/core@7.28.5)(eslint@9.39.1(jiti@2.4.2))
'@glimmer/syntax': 0.93.1
- '@typescript-eslint/tsconfig-utils': 8.46.2(typescript@5.9.3)
+ '@typescript-eslint/tsconfig-utils': 8.46.0(typescript@5.9.3)
content-tag: 2.0.3
eslint-scope: 7.2.2
html-tags: 3.3.1
@@ -13664,13 +13951,13 @@ snapshots:
- eslint
- typescript
- ember-exam@10.0.0(@glint/template@1.7.2)(ember-qunit@9.0.4(@ember/test-helpers@5.4.0(@babel/core@7.28.5)(@glint/template@1.7.2))(@glint/template@1.7.2)(qunit@2.24.2))(ember-source@6.6.0(patch_hash=nsmtwj6thcg4lxkztr5oqzscwe)(@glimmer/component@2.0.0)(rsvp@4.8.5))(qunit@2.24.2)(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.12)):
+ ember-exam@10.0.0(@glint/template@1.7.2)(ember-qunit@9.0.4(@ember/test-helpers@5.4.0(@babel/core@7.28.5)(@glint/template@1.7.2))(@glint/template@1.7.2)(qunit@2.24.2))(ember-source@6.6.0(patch_hash=nsmtwj6thcg4lxkztr5oqzscwe)(@glimmer/component@2.0.0)(rsvp@4.8.5))(qunit@2.24.2)(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.11)):
dependencies:
'@babel/core': 7.28.5(supports-color@8.1.1)
chalk: 5.6.0
cli-table3: 0.6.5
debug: 4.4.3(supports-color@8.1.1)
- ember-auto-import: 2.11.2(@glint/template@1.7.2)(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.12))
+ ember-auto-import: 2.11.2(@glint/template@1.7.2)(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.11))
ember-cli-babel: 8.2.0(@babel/core@7.28.5)
ember-qunit: 9.0.4(@ember/test-helpers@5.4.0(@babel/core@7.28.5)(@glint/template@1.7.2))(@glint/template@1.7.2)(qunit@2.24.2)
ember-source: 6.6.0(patch_hash=nsmtwj6thcg4lxkztr5oqzscwe)(@glimmer/component@2.0.0)(rsvp@4.8.5)
@@ -13866,7 +14153,7 @@ snapshots:
engine.io@6.6.4:
dependencies:
'@types/cors': 2.8.18
- '@types/node': 24.10.0
+ '@types/node': 24.9.2
accepts: 1.3.8
base64id: 2.0.0
cookie: 0.7.2
@@ -13996,34 +14283,34 @@ snapshots:
is-date-object: 1.1.0
is-symbol: 1.1.1
- esbuild@0.25.12:
+ esbuild@0.25.11:
optionalDependencies:
- '@esbuild/aix-ppc64': 0.25.12
- '@esbuild/android-arm': 0.25.12
- '@esbuild/android-arm64': 0.25.12
- '@esbuild/android-x64': 0.25.12
- '@esbuild/darwin-arm64': 0.25.12
- '@esbuild/darwin-x64': 0.25.12
- '@esbuild/freebsd-arm64': 0.25.12
- '@esbuild/freebsd-x64': 0.25.12
- '@esbuild/linux-arm': 0.25.12
- '@esbuild/linux-arm64': 0.25.12
- '@esbuild/linux-ia32': 0.25.12
- '@esbuild/linux-loong64': 0.25.12
- '@esbuild/linux-mips64el': 0.25.12
- '@esbuild/linux-ppc64': 0.25.12
- '@esbuild/linux-riscv64': 0.25.12
- '@esbuild/linux-s390x': 0.25.12
- '@esbuild/linux-x64': 0.25.12
- '@esbuild/netbsd-arm64': 0.25.12
- '@esbuild/netbsd-x64': 0.25.12
- '@esbuild/openbsd-arm64': 0.25.12
- '@esbuild/openbsd-x64': 0.25.12
- '@esbuild/openharmony-arm64': 0.25.12
- '@esbuild/sunos-x64': 0.25.12
- '@esbuild/win32-arm64': 0.25.12
- '@esbuild/win32-ia32': 0.25.12
- '@esbuild/win32-x64': 0.25.12
+ '@esbuild/aix-ppc64': 0.25.11
+ '@esbuild/android-arm': 0.25.11
+ '@esbuild/android-arm64': 0.25.11
+ '@esbuild/android-x64': 0.25.11
+ '@esbuild/darwin-arm64': 0.25.11
+ '@esbuild/darwin-x64': 0.25.11
+ '@esbuild/freebsd-arm64': 0.25.11
+ '@esbuild/freebsd-x64': 0.25.11
+ '@esbuild/linux-arm': 0.25.11
+ '@esbuild/linux-arm64': 0.25.11
+ '@esbuild/linux-ia32': 0.25.11
+ '@esbuild/linux-loong64': 0.25.11
+ '@esbuild/linux-mips64el': 0.25.11
+ '@esbuild/linux-ppc64': 0.25.11
+ '@esbuild/linux-riscv64': 0.25.11
+ '@esbuild/linux-s390x': 0.25.11
+ '@esbuild/linux-x64': 0.25.11
+ '@esbuild/netbsd-arm64': 0.25.11
+ '@esbuild/netbsd-x64': 0.25.11
+ '@esbuild/openbsd-arm64': 0.25.11
+ '@esbuild/openbsd-x64': 0.25.11
+ '@esbuild/openharmony-arm64': 0.25.11
+ '@esbuild/sunos-x64': 0.25.11
+ '@esbuild/win32-arm64': 0.25.11
+ '@esbuild/win32-ia32': 0.25.11
+ '@esbuild/win32-x64': 0.25.11
escalade@3.2.0: {}
@@ -14051,36 +14338,36 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-module-utils@2.12.1(eslint-import-resolver-node@0.3.9)(eslint@9.39.1):
+ eslint-module-utils@2.12.1(eslint-import-resolver-node@0.3.9)(eslint@9.39.1(jiti@2.4.2)):
dependencies:
debug: 3.2.7
optionalDependencies:
- eslint: 9.39.1
+ eslint: 9.39.1(jiti@2.4.2)
eslint-import-resolver-node: 0.3.9
transitivePeerDependencies:
- supports-color
- eslint-plugin-decorator-position@6.0.0(@babel/eslint-parser@7.28.5(@babel/core@7.28.5)(eslint@9.39.1))(eslint@9.39.1):
+ eslint-plugin-decorator-position@6.0.0(@babel/eslint-parser@7.28.4(@babel/core@7.28.5)(eslint@9.39.1(jiti@2.4.2)))(eslint@9.39.1(jiti@2.4.2)):
dependencies:
'@babel/core': 7.28.5(supports-color@8.1.1)
'@babel/plugin-proposal-decorators': 7.28.0(@babel/core@7.28.5)
'@ember-data/rfc395-data': 0.0.4
ember-rfc176-data: 0.3.18
- eslint: 9.39.1
+ eslint: 9.39.1(jiti@2.4.2)
snake-case: 3.0.4
optionalDependencies:
- '@babel/eslint-parser': 7.28.5(@babel/core@7.28.5)(eslint@9.39.1)
+ '@babel/eslint-parser': 7.28.4(@babel/core@7.28.5)(eslint@9.39.1(jiti@2.4.2))
transitivePeerDependencies:
- supports-color
- eslint-plugin-ember@12.7.4(@babel/core@7.28.5)(eslint@9.39.1)(typescript@5.9.3):
+ eslint-plugin-ember@12.7.4(@babel/core@7.28.5)(eslint@9.39.1(jiti@2.4.2))(typescript@5.9.3):
dependencies:
'@ember-data/rfc395-data': 0.0.4
css-tree: 3.1.0
- ember-eslint-parser: 0.5.11(@babel/core@7.28.5)(eslint@9.39.1)(typescript@5.9.3)
+ ember-eslint-parser: 0.5.11(@babel/core@7.28.5)(eslint@9.39.1(jiti@2.4.2))(typescript@5.9.3)
ember-rfc176-data: 0.3.18
- eslint: 9.39.1
- eslint-utils: 3.0.0(eslint@9.39.1)
+ eslint: 9.39.1(jiti@2.4.2)
+ eslint-utils: 3.0.0(eslint@9.39.1(jiti@2.4.2))
estraverse: 5.3.0
lodash.camelcase: 4.3.0
lodash.kebabcase: 4.1.1
@@ -14090,7 +14377,7 @@ snapshots:
- '@babel/core'
- typescript
- eslint-plugin-import@2.32.0(eslint@9.39.1):
+ eslint-plugin-import@2.32.0(eslint@9.39.1(jiti@2.4.2)):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.9
@@ -14099,9 +14386,9 @@ snapshots:
array.prototype.flatmap: 1.3.3
debug: 3.2.7
doctrine: 2.1.0
- eslint: 9.39.1
+ eslint: 9.39.1(jiti@2.4.2)
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.1(eslint-import-resolver-node@0.3.9)(eslint@9.39.1)
+ eslint-module-utils: 2.12.1(eslint-import-resolver-node@0.3.9)(eslint@9.39.1(jiti@2.4.2))
hasown: 2.0.2
is-core-module: 2.16.1
is-glob: 4.0.3
@@ -14117,20 +14404,20 @@ snapshots:
- eslint-import-resolver-webpack
- supports-color
- eslint-plugin-qunit@8.2.5(eslint@9.39.1):
+ eslint-plugin-qunit@8.2.5(eslint@9.39.1(jiti@2.4.2)):
dependencies:
- eslint-utils: 3.0.0(eslint@9.39.1)
+ eslint-utils: 3.0.0(eslint@9.39.1(jiti@2.4.2))
requireindex: 1.2.0
transitivePeerDependencies:
- eslint
- eslint-plugin-simple-import-sort@12.1.1(eslint@9.39.1):
+ eslint-plugin-simple-import-sort@12.1.1(eslint@9.39.1(jiti@2.4.2)):
dependencies:
- eslint: 9.39.1
+ eslint: 9.39.1(jiti@2.4.2)
- eslint-plugin-sort-class-members@1.21.0(eslint@9.39.1):
+ eslint-plugin-sort-class-members@1.21.0(eslint@9.39.1(jiti@2.4.2)):
dependencies:
- eslint: 9.39.1
+ eslint: 9.39.1(jiti@2.4.2)
eslint-scope@5.1.1:
dependencies:
@@ -14147,9 +14434,9 @@ snapshots:
esrecurse: 4.3.0
estraverse: 5.3.0
- eslint-utils@3.0.0(eslint@9.39.1):
+ eslint-utils@3.0.0(eslint@9.39.1(jiti@2.4.2)):
dependencies:
- eslint: 9.39.1
+ eslint: 9.39.1(jiti@2.4.2)
eslint-visitor-keys: 2.1.0
eslint-visitor-keys@2.1.0: {}
@@ -14158,10 +14445,10 @@ snapshots:
eslint-visitor-keys@4.2.1: {}
- eslint@9.39.1:
+ eslint@9.39.1(jiti@2.4.2):
dependencies:
- '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1)
- '@eslint-community/regexpp': 4.12.2
+ '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.4.2))
+ '@eslint-community/regexpp': 4.12.1
'@eslint/config-array': 0.21.1
'@eslint/config-helpers': 0.4.2
'@eslint/core': 0.17.0
@@ -14194,6 +14481,8 @@ snapshots:
minimatch: 3.1.2
natural-compare: 1.4.0
optionator: 0.9.4
+ optionalDependencies:
+ jiti: 2.4.2
transitivePeerDependencies:
- supports-color
@@ -14243,7 +14532,7 @@ snapshots:
events-universal@1.0.1:
dependencies:
- bare-events: 2.8.2
+ bare-events: 2.8.1
transitivePeerDependencies:
- bare-abort-controller
@@ -15280,11 +15569,11 @@ snapshots:
import-meta-resolve@4.1.0: {}
- imports-loader@5.0.0(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.12)):
+ imports-loader@5.0.0(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.11)):
dependencies:
source-map-js: 1.2.1
strip-comments: 2.0.1
- webpack: 5.99.9(@swc/core@1.15.0)(esbuild@0.25.12)
+ webpack: 5.99.9(@swc/core@1.15.0)(esbuild@0.25.11)
imurmurhash@0.1.4: {}
@@ -15339,9 +15628,9 @@ snapshots:
strip-ansi: 6.0.1
through: 2.3.8
- inquirer@9.3.8(@types/node@24.10.0):
+ inquirer@9.3.8(@types/node@24.9.2):
dependencies:
- '@inquirer/external-editor': 1.0.2(@types/node@24.10.0)
+ '@inquirer/external-editor': 1.0.2(@types/node@24.9.2)
'@inquirer/figures': 1.0.14
ansi-escapes: 4.3.2
cli-width: 4.1.0
@@ -15634,10 +15923,12 @@ snapshots:
jest-worker@27.5.1:
dependencies:
- '@types/node': 24.10.0
+ '@types/node': 24.9.2
merge-stream: 2.0.0
supports-color: 8.1.1
+ jiti@2.4.2: {}
+
jquery@3.7.1: {}
js-string-escape@1.0.1: {}
@@ -15888,9 +16179,9 @@ snapshots:
transitivePeerDependencies:
- supports-color
- lint-to-the-future-eslint@3.2.0(eslint@9.39.1):
+ lint-to-the-future-eslint@3.2.0(eslint@9.39.1(jiti@2.4.2)):
dependencies:
- eslint: 9.39.1
+ eslint: 9.39.1(jiti@2.4.2)
globby: 14.1.0
import-cwd: 3.0.0
@@ -16214,11 +16505,11 @@ snapshots:
dependencies:
dom-walk: 0.1.2
- mini-css-extract-plugin@2.9.4(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.12)):
+ mini-css-extract-plugin@2.9.4(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.11)):
dependencies:
schema-utils: 4.3.3
tapable: 2.3.0
- webpack: 5.99.9(@swc/core@1.15.0)(esbuild@0.25.12)
+ webpack: 5.99.9(@swc/core@1.15.0)(esbuild@0.25.11)
minimatch@10.0.3:
dependencies:
@@ -18085,11 +18376,11 @@ snapshots:
strip-test-selectors@0.1.0: {}
- style-loader@2.0.0(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.12)):
+ style-loader@2.0.0(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.11)):
dependencies:
loader-utils: 2.0.4
schema-utils: 3.3.0
- webpack: 5.99.9(@swc/core@1.15.0)(esbuild@0.25.12)
+ webpack: 5.99.9(@swc/core@1.15.0)(esbuild@0.25.11)
styled_string@0.0.1: {}
@@ -18286,17 +18577,17 @@ snapshots:
temporal-spec@0.2.4: {}
- terser-webpack-plugin@5.3.14(@swc/core@1.15.0)(esbuild@0.25.12)(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.12)):
+ terser-webpack-plugin@5.3.14(@swc/core@1.15.0)(esbuild@0.25.11)(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.11)):
dependencies:
'@jridgewell/trace-mapping': 0.3.31
jest-worker: 27.5.1
schema-utils: 4.3.3
serialize-javascript: 6.0.2
terser: 5.44.1
- webpack: 5.99.9(@swc/core@1.15.0)(esbuild@0.25.12)
+ webpack: 5.99.9(@swc/core@1.15.0)(esbuild@0.25.11)
optionalDependencies:
'@swc/core': 1.15.0
- esbuild: 0.25.12
+ esbuild: 0.25.11
terser@5.44.1:
dependencies:
@@ -18403,14 +18694,14 @@ snapshots:
dependencies:
tslib: 2.8.1
- thread-loader@3.0.4(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.12)):
+ thread-loader@3.0.4(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.11)):
dependencies:
json-parse-better-errors: 1.0.2
loader-runner: 4.3.0
loader-utils: 2.0.4
neo-async: 2.6.2
schema-utils: 3.3.0
- webpack: 5.99.9(@swc/core@1.15.0)(esbuild@0.25.12)
+ webpack: 5.99.9(@swc/core@1.15.0)(esbuild@0.25.11)
through2-filter@3.0.0:
dependencies:
@@ -18761,23 +19052,24 @@ snapshots:
x-is-array: 0.1.0
x-is-string: 0.1.0
- vite@7.2.2(@types/node@24.10.0)(terser@5.44.1):
+ vite@7.2.2(@types/node@24.9.2)(jiti@2.4.2)(terser@5.44.1):
dependencies:
- esbuild: 0.25.12
+ esbuild: 0.25.11
fdir: 6.5.0(picomatch@4.0.3)
picomatch: 4.0.3
postcss: 8.5.6
rollup: 4.53.1
tinyglobby: 0.2.15
optionalDependencies:
- '@types/node': 24.10.0
+ '@types/node': 24.9.2
fsevents: 2.3.3
+ jiti: 2.4.2
terser: 5.44.1
- vitest@4.0.8(@types/node@24.10.0)(jsdom@25.0.1)(terser@5.44.1):
+ vitest@4.0.8(@types/node@24.9.2)(jiti@2.4.2)(jsdom@25.0.1)(terser@5.44.1):
dependencies:
'@vitest/expect': 4.0.8
- '@vitest/mocker': 4.0.8(vite@7.2.2(@types/node@24.10.0)(terser@5.44.1))
+ '@vitest/mocker': 4.0.8(vite@7.2.2(@types/node@24.9.2)(jiti@2.4.2)(terser@5.44.1))
'@vitest/pretty-format': 4.0.8
'@vitest/runner': 4.0.8
'@vitest/snapshot': 4.0.8
@@ -18794,10 +19086,10 @@ snapshots:
tinyexec: 0.3.2
tinyglobby: 0.2.15
tinyrainbow: 3.0.3
- vite: 7.2.2(@types/node@24.10.0)(terser@5.44.1)
+ vite: 7.2.2(@types/node@24.9.2)(jiti@2.4.2)(terser@5.44.1)
why-is-node-running: 2.3.0
optionalDependencies:
- '@types/node': 24.10.0
+ '@types/node': 24.9.2
jsdom: 25.0.1(supports-color@8.1.1)
transitivePeerDependencies:
- jiti
@@ -18815,7 +19107,7 @@ snapshots:
volar-service-html@0.0.64(@volar/language-service@2.4.23):
dependencies:
- vscode-html-languageservice: 5.6.0
+ vscode-html-languageservice: 5.5.2
vscode-languageserver-textdocument: 1.0.12
vscode-uri: 3.1.0
optionalDependencies:
@@ -18832,7 +19124,7 @@ snapshots:
optionalDependencies:
'@volar/language-service': 2.4.23
- vscode-html-languageservice@5.6.0:
+ vscode-html-languageservice@5.5.2:
dependencies:
'@vscode/l10n': 0.0.18
vscode-languageserver-textdocument: 1.0.12
@@ -18925,16 +19217,16 @@ snapshots:
webidl-conversions@7.0.0: {}
- webpack-retry-chunk-load-plugin@3.1.1(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.12)):
+ webpack-retry-chunk-load-plugin@3.1.1(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.11)):
dependencies:
prettier: 2.8.8
- webpack: 5.99.9(@swc/core@1.15.0)(esbuild@0.25.12)
+ webpack: 5.99.9(@swc/core@1.15.0)(esbuild@0.25.11)
webpack-sources@3.3.3: {}
webpack-stats-plugin@1.1.3: {}
- webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.12):
+ webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.11):
dependencies:
'@types/eslint-scope': 3.7.7
'@types/estree': 1.0.8
@@ -18957,7 +19249,7 @@ snapshots:
neo-async: 2.6.2
schema-utils: 4.3.3
tapable: 2.3.0
- terser-webpack-plugin: 5.3.14(@swc/core@1.15.0)(esbuild@0.25.12)(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.12))
+ terser-webpack-plugin: 5.3.14(@swc/core@1.15.0)(esbuild@0.25.11)(webpack@5.99.9(@swc/core@1.15.0)(esbuild@0.25.11))
watchpack: 2.4.4
webpack-sources: 3.3.3
transitivePeerDependencies:
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index 03aa441bbc9..a9a1e85f6af 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -9,3 +9,46 @@ packages:
- "frontend/ember-cli-progress-ci"
- "frontend/pretty-text"
- "frontend/asset-processor"
+- "frontend/discourse-types"
+- "plugins/automation"
+- "plugins/chat"
+- "plugins/checklist"
+- "plugins/discourse-adplugin"
+- "plugins/discourse-affiliate"
+- "plugins/discourse-ai"
+- "plugins/discourse-apple-auth"
+- "plugins/discourse-assign"
+- "plugins/discourse-cakeday"
+- "plugins/discourse-calendar"
+- "plugins/discourse-chat-integration"
+- "plugins/discourse-data-explorer"
+- "plugins/discourse-details"
+- "plugins/discourse-gamification"
+- "plugins/discourse-github"
+- "plugins/discourse-graphviz"
+- "plugins/discourse-hcaptcha"
+- "plugins/discourse-lazy-videos"
+- "plugins/discourse-local-dates"
+- "plugins/discourse-login-with-amazon"
+- "plugins/discourse-lti"
+- "plugins/discourse-math"
+- "plugins/discourse-microsoft-auth"
+- "plugins/discourse-narrative-bot"
+- "plugins/discourse-oauth2-basic"
+- "plugins/discourse-openid-connect"
+- "plugins/discourse-patreon"
+- "plugins/discourse-policy"
+- "plugins/discourse-post-voting"
+- "plugins/discourse-presence"
+- "plugins/discourse-reactions"
+- "plugins/discourse-rss-polling"
+- "plugins/discourse-solved"
+- "plugins/discourse-subscriptions"
+- "plugins/discourse-templates"
+- "plugins/discourse-topic-voting"
+- "plugins/discourse-user-notes"
+- "plugins/discourse-zendesk-plugin"
+- "plugins/footnote"
+- "plugins/poll"
+- "plugins/spoiler-alert"
+- "plugins/styleguide"
diff --git a/script/build_jsconfig.rb b/script/build_jsconfig.rb
deleted file mode 100755
index e14baa16e5a..00000000000
--- a/script/build_jsconfig.rb
+++ /dev/null
@@ -1,71 +0,0 @@
-#!/usr/bin/env ruby
-# frozen_string_literal: true
-
-require "pathname"
-require "json"
-
-Dir.chdir("#{__dir__}/..") # rubocop:disable Discourse/NoChdir because this is not part of the app
-
-CORE_NAMESPACES = {
- "discourse/admin/*" => ["frontend/discourse/admin"],
- "discourse/*" => ["frontend/discourse/app"],
- "discourse/tests/*" => ["frontend/discourse/tests"],
- "admin/*" => ["frontend/discourse/admin"], # TODO: remove once all core code is migrated to new import path
- "pretty-text/*" => ["frontend/pretty-text/addon"],
- "select-kit/*" => ["frontend/discourse/select-kit"],
- "float-kit/*" => ["frontend/discourse/float-kit"],
- "truth-helpers/*" => ["frontend/discourse/truth-helpers"],
- "dialog-holder/*" => ["frontend/discourse/dialog-holder"],
-}
-
-def relative(from, to)
- relative_path = Pathname.new(to).relative_path_from(from).to_s
- relative_path = "./#{relative_path}" if !relative_path.start_with?(".")
- relative_path
-end
-
-def write_config(package_dir, extras: {})
- package_dir = Pathname.new(package_dir)
- namespaces = { **CORE_NAMESPACES, **extras }
- config = {
- "compilerOptions" => {
- "target" => "es2021",
- "module" => "esnext",
- "moduleResolution" => "bundler",
- "experimentalDecorators" => true,
- "allowJs" => true,
- "paths" => {
- **namespaces
- .map { |ns, paths| [ns, paths.map { |p| "#{relative(package_dir, p)}/*" }] }
- .to_h,
- },
- },
- "include" => namespaces.flat_map { |ns, paths| paths.map { |p| relative(package_dir, p) } },
- "exclude" => [
- "frontend/discourse/tests/unit/utils/decorators-test.js", # Native class decorators - unsupported by ts/glint
- ],
- }
-
- output = <<~JSON
- // This file was generated by script/build_jsconfig.rb
- #{JSON.pretty_generate(config)}
- JSON
-
- File.write("#{package_dir}/jsconfig.json", output)
-end
-
-plugin_configs =
- `git ls-files plugins/*/plugin.rb`.lines
- .map { File.dirname(_1) }
- .map do |path|
- ["discourse/#{path}/*", ["#{path}/assets/javascripts", "#{path}/test/javascripts"]]
- end
- .to_h
-
-theme_configs =
- `git ls-files themes/*/about.json`.lines
- .map { File.dirname(_1) }
- .map { |path| ["discourse/#{path}/*", ["#{path}/javascripts", "#{path}/test"]] }
- .to_h
-
-write_config ".", extras: plugin_configs.merge(theme_configs)
diff --git a/tsconfig-base.json b/tsconfig-base.json
new file mode 100644
index 00000000000..e590cc7ef49
--- /dev/null
+++ b/tsconfig-base.json
@@ -0,0 +1,18 @@
+{
+ "compilerOptions": {
+ "plugins": [{
+ "name": "@glint/tsserver-plugin"
+ }],
+ "target": "es2021",
+ "module": "es2022",
+ "moduleResolution": "bundler",
+ "experimentalDecorators": true,
+ "allowJs": true,
+ "skipLibCheck": true,
+ "noEmit": false,
+ "noEmitOnError": false,
+ "declaration": true,
+ "emitDeclarationOnly": true,
+ "declarationMap": true
+ }
+}
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 00000000000..1dc1363da1f
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,48 @@
+{
+ "references": [
+ { "path": "frontend/discourse" },
+ { "path": "plugins/automation" },
+ { "path": "plugins/chat" },
+ { "path": "plugins/checklist" },
+ { "path": "plugins/discourse-adplugin" },
+ { "path": "plugins/discourse-affiliate" },
+ { "path": "plugins/discourse-ai" },
+ { "path": "plugins/discourse-apple-auth" },
+ { "path": "plugins/discourse-assign" },
+ { "path": "plugins/discourse-cakeday" },
+ { "path": "plugins/discourse-calendar" },
+ { "path": "plugins/discourse-chat-integration" },
+ { "path": "plugins/discourse-data-explorer" },
+ { "path": "plugins/discourse-details" },
+ { "path": "plugins/discourse-gamification" },
+ { "path": "plugins/discourse-github" },
+ { "path": "plugins/discourse-graphviz" },
+ { "path": "plugins/discourse-hcaptcha" },
+ { "path": "plugins/discourse-lazy-videos" },
+ { "path": "plugins/discourse-local-dates" },
+ { "path": "plugins/discourse-login-with-amazon" },
+ { "path": "plugins/discourse-lti" },
+ { "path": "plugins/discourse-math" },
+ { "path": "plugins/discourse-microsoft-auth" },
+ { "path": "plugins/discourse-narrative-bot" },
+ { "path": "plugins/discourse-oauth2-basic" },
+ { "path": "plugins/discourse-openid-connect" },
+ { "path": "plugins/discourse-patreon" },
+ { "path": "plugins/discourse-policy" },
+ { "path": "plugins/discourse-post-voting" },
+ { "path": "plugins/discourse-presence" },
+ { "path": "plugins/discourse-reactions" },
+ { "path": "plugins/discourse-rss-polling" },
+ { "path": "plugins/discourse-solved" },
+ { "path": "plugins/discourse-subscriptions" },
+ { "path": "plugins/discourse-templates" },
+ { "path": "plugins/discourse-topic-voting" },
+ { "path": "plugins/discourse-user-notes" },
+ { "path": "plugins/discourse-zendesk-plugin" },
+ { "path": "plugins/footnote" },
+ { "path": "plugins/poll" },
+ { "path": "plugins/spoiler-alert" },
+ { "path": "plugins/styleguide" },
+ ],
+ "include": [],
+}