diff --git a/js/shims.d.ts b/js/shims.d.ts index 9ec6409c5..a2d31e316 100644 --- a/js/shims.d.ts +++ b/js/shims.d.ts @@ -1,13 +1,47 @@ -// Use shared globals from flarum-webpack-config -// TEMPORARY: This will likely move to the flarum-webpack-config package. -export * from './webpack-config-shims'; +// Mithril +import * as Mithril from 'mithril'; +import Stream from 'mithril/stream'; +// Other third-party libs +import * as _dayjs from 'dayjs'; +import * as _$ from 'jquery'; + +// Globals from flarum/core import Application from './src/common/Application'; /** - * Annotate the types of all global variables specific to flarum/core. + * Helpers that flarum/core patches into Mithril + */ +interface m extends Mithril.Static { + prop: typeof Stream; +} + +/** + * Export Mithril typings globally. * - * IDEs can use this to typehint the globals. + * This lets us use these typings without an extra import everywhere we use + * Mithril in a TypeScript file. + */ +export as namespace Mithril; + +/** + * flarum/core exposes several extensions globally: + * + * - jQuery for convenient DOM manipulation + * - Mithril for VDOM and components + * - dayjs for date/time operations + * + * Since these are already part of the global namespace, extensions won't need + * to (and should not) bundle these themselves. + */ +declare global { + const $: typeof _$; + const m: m; + const dayjs: typeof _dayjs; +} + +/** + * All global variables owned by flarum/core. */ declare global { const app: Application; diff --git a/js/tsconfig.json b/js/tsconfig.json index 8faacc270..7b14ec0ae 100644 --- a/js/tsconfig.json +++ b/js/tsconfig.json @@ -1,3 +1,21 @@ { - "extends": "./webpack-config-tsconfig" + "include": ["src/**/*.ts"], + "files": ["shims.d.ts"], + "compilerOptions": { + "allowUmdGlobalAccess": true, + "outDir": "dist", + "sourceMap": true, + "strict": true, + "noImplicitReturns": false, + "noImplicitAny": false, + "module": "es2015", + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "esModuleInterop": true, + "moduleResolution": "node", + "target": "es6", + "jsx": "preserve", + "lib": ["es2015", "es2017", "dom"], + "allowSyntheticDefaultImports": true + } } diff --git a/js/webpack-config-shims.d.ts b/js/webpack-config-shims.d.ts deleted file mode 100644 index a977ef9a6..000000000 --- a/js/webpack-config-shims.d.ts +++ /dev/null @@ -1,36 +0,0 @@ -import * as Mithril from 'mithril'; -import Stream from 'mithril/stream'; - -import * as _dayjs from 'dayjs'; -import * as _$ from 'jquery'; - -// Helpers that flarum/core patches into Mithril -interface m extends Mithril.Static { - prop: typeof Stream; -} - -/** - * flarum/core exposes several extensions globally: - * - * - jQuery for convenient DOM manipulation - * - Mithril for VDOM and components - * - dayjs for date/time operations - * - * Since these are already part of the global namespace, extensions won't need - * to (and should not) bundle these themselves. - */ -declare global { - const $: typeof _$; - const m: m; - const dayjs: typeof _dayjs; -} - -/** - * Export Mithril typings globally. - * - * This lets us use these typings without an extra import everywhere we use - * Mithril in a TypeScript file. - */ -export as namespace Mithril; - -export {}; diff --git a/js/webpack-config-tsconfig.json b/js/webpack-config-tsconfig.json deleted file mode 100644 index 7b14ec0ae..000000000 --- a/js/webpack-config-tsconfig.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "include": ["src/**/*.ts"], - "files": ["shims.d.ts"], - "compilerOptions": { - "allowUmdGlobalAccess": true, - "outDir": "dist", - "sourceMap": true, - "strict": true, - "noImplicitReturns": false, - "noImplicitAny": false, - "module": "es2015", - "emitDecoratorMetadata": true, - "experimentalDecorators": true, - "esModuleInterop": true, - "moduleResolution": "node", - "target": "es6", - "jsx": "preserve", - "lib": ["es2015", "es2017", "dom"], - "allowSyntheticDefaultImports": true - } -}