From ea6aea409d0ad75d1c058c267394e45b54d919cd Mon Sep 17 00:00:00 2001 From: Franz Liedke Date: Fri, 18 Sep 2020 15:19:08 +0200 Subject: [PATCH] TS: Merge shims and tsconfig for now This makes the structure less confusing, as long as the two parts are not needed. Once we actually have decided where to move the shared parts (to share them with bundled and community extensions), and which parts to share, this can easily be extracted again. --- js/shims.d.ts | 44 +++++++++++++++++++++++++++++---- js/tsconfig.json | 20 ++++++++++++++- js/webpack-config-shims.d.ts | 36 --------------------------- js/webpack-config-tsconfig.json | 21 ---------------- 4 files changed, 58 insertions(+), 63 deletions(-) delete mode 100644 js/webpack-config-shims.d.ts delete mode 100644 js/webpack-config-tsconfig.json 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 - } -}