From fc603de98e7dcd1ad6587ce3ad80431c567f9275 Mon Sep 17 00:00:00 2001 From: ValeraS Date: Fri, 24 Dec 2021 18:26:10 +0300 Subject: [PATCH] tune(monaco-editor-webpack-plugin): expose plugin options type --- webpack-plugin/src/index.ts | 95 +++++++++++++++++++------------------ 1 file changed, 48 insertions(+), 47 deletions(-) diff --git a/webpack-plugin/src/index.ts b/webpack-plugin/src/index.ts index 1b679b9b..529dd044 100644 --- a/webpack-plugin/src/index.ts +++ b/webpack-plugin/src/index.ts @@ -99,53 +99,54 @@ function resolveDesiredLanguages( return coalesce(languages.map((id) => languagesById[id])).concat(userCustomLanguages || []); } -interface IMonacoEditorWebpackPluginOpts { - /** - * Include only a subset of the languages supported. - */ - languages?: EditorLanguage[]; - - /** - * Custom languages (outside of the ones shipped with the `monaco-editor`). - */ - customLanguages?: IFeatureDefinition[]; - - /** - * Include only a subset of the editor features. - * Use e.g. '!contextmenu' to exclude a certain feature. - */ - features?: (EditorFeature | NegatedEditorFeature)[]; - - /** - * Specify a filename template to use for generated files. - * Use e.g. '[name].worker.[contenthash].js' to include content-based hashes. - */ - filename?: string; - - /** - * The absolute file system path to the monaco-editor npm module. - * Use e.g. `C:\projects\my-project\node-modules\monaco-editor` - */ - monacoEditorPath?: string; - - /** - * Override the public path from which files generated by this plugin will be served. - * This wins out over Webpack's dynamic runtime path and can be useful to avoid attempting to load workers cross- - * origin when using a CDN for other static resources. - * Use e.g. '/' if you want to load your resources from the current origin. - */ - publicPath?: string; - - /** - * Specify whether the editor API should be exposed through a global `monaco` object or not. This - * option is applicable to `0.22.0` and newer version of `monaco-editor`. Since `0.22.0`, the ESM - * version of the monaco editor does no longer define a global `monaco` object unless - * `global.MonacoEnvironment = { globalAPI: true }` is set ([change - * log](https://github.com/microsoft/monaco-editor/blob/main/CHANGELOG.md#0220-29012021)). - */ - globalAPI?: boolean; +declare namespace MonacoEditorWebpackPlugin { + interface IMonacoEditorWebpackPluginOpts { + /** + * Include only a subset of the languages supported. + */ + languages?: EditorLanguage[]; + + /** + * Custom languages (outside of the ones shipped with the `monaco-editor`). + */ + customLanguages?: IFeatureDefinition[]; + + /** + * Include only a subset of the editor features. + * Use e.g. '!contextmenu' to exclude a certain feature. + */ + features?: (EditorFeature | NegatedEditorFeature)[]; + + /** + * Specify a filename template to use for generated files. + * Use e.g. '[name].worker.[contenthash].js' to include content-based hashes. + */ + filename?: string; + + /** + * The absolute file system path to the monaco-editor npm module. + * Use e.g. `C:\projects\my-project\node-modules\monaco-editor` + */ + monacoEditorPath?: string; + + /** + * Override the public path from which files generated by this plugin will be served. + * This wins out over Webpack's dynamic runtime path and can be useful to avoid attempting to load workers cross- + * origin when using a CDN for other static resources. + * Use e.g. '/' if you want to load your resources from the current origin. + */ + publicPath?: string; + + /** + * Specify whether the editor API should be exposed through a global `monaco` object or not. This + * option is applicable to `0.22.0` and newer version of `monaco-editor`. Since `0.22.0`, the ESM + * version of the monaco editor does no longer define a global `monaco` object unless + * `global.MonacoEnvironment = { globalAPI: true }` is set ([change + * log](https://github.com/microsoft/monaco-editor/blob/main/CHANGELOG.md#0220-29012021)). + */ + globalAPI?: boolean; + } } - interface IInternalMonacoEditorWebpackPluginOpts { languages: IFeatureDefinition[]; features: IFeatureDefinition[]; @@ -158,7 +159,7 @@ interface IInternalMonacoEditorWebpackPluginOpts { class MonacoEditorWebpackPlugin implements webpack.WebpackPluginInstance { private readonly options: IInternalMonacoEditorWebpackPluginOpts; - constructor(options: IMonacoEditorWebpackPluginOpts = {}) { + constructor(options: MonacoEditorWebpackPlugin.IMonacoEditorWebpackPluginOpts = {}) { const monacoEditorPath = options.monacoEditorPath; const metadata = getEditorMetadata(monacoEditorPath); const languages = resolveDesiredLanguages(metadata, options.languages, options.customLanguages);