浏览代码

Fixes microsoft/monaco-editor#2078

Alex Dima 4 年之前
父节点
当前提交
364aa1f427

+ 153 - 0
browser-esm-webpack-small/generate-imports.js

@@ -0,0 +1,153 @@
+/*---------------------------------------------------------------------------------------------
+ *  Copyright (c) Microsoft Corporation. All rights reserved.
+ *  Licensed under the MIT License. See LICENSE in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+const glob = require('glob');
+const path = require('path');
+const fs = require('fs');
+
+const FILE_PATH = path.join(__dirname, 'index.js');
+generateLanguages();
+generateFeatures();
+
+/**
+ * @returns { Promise<string[]> }
+ */
+function getBasicLanguages() {
+	return new Promise((resolve, reject) => {
+		glob(
+			'./node_modules/monaco-editor/esm/vs/basic-languages/*/*.contribution.js',
+			{ cwd: path.dirname(__dirname) },
+			(err, files) => {
+				if (err) {
+					reject(err);
+					return;
+				}
+
+				resolve(
+					files.map((file) => {
+						return file
+							.substring('./node_modules/monaco-editor/esm/'.length)
+							.replace(/\.js$/, '');
+					})
+				);
+			}
+		);
+	});
+}
+
+/**
+ * @returns { Promise<string[]> }
+ */
+function getAdvancedLanguages() {
+	return new Promise((resolve, reject) => {
+		glob(
+			'./node_modules/monaco-editor/esm/vs/language/*/monaco.contribution.js',
+			{ cwd: path.dirname(__dirname) },
+			(err, files) => {
+				if (err) {
+					reject(err);
+					return;
+				}
+
+				resolve(
+					files
+						.map((file) =>
+							file.substring(
+								'./node_modules/monaco-editor/esm/vs/language/'.length
+							)
+						)
+						.map((file) =>
+							file.substring(0, file.length - '/monaco.contribution.js'.length)
+						)
+						.map((lang) => `vs/language/${lang}/monaco.contribution`)
+				);
+			}
+		);
+	});
+}
+
+function generateLanguages() {
+	return Promise.all([getBasicLanguages(), getAdvancedLanguages()]).then(
+		([basicLanguages, advancedLanguages]) => {
+			basicLanguages.sort(strcmp);
+			advancedLanguages.sort(strcmp);
+
+			const allLanguages = advancedLanguages.concat(basicLanguages);
+			const imports = allLanguages
+				.map((l) => `import 'monaco-editor/esm/${l}.js';`)
+				.map((l) => `${/python/.test(l) ? '' : '// '}${l}`)
+				.join('\n');
+
+			let contents = fs.readFileSync(FILE_PATH).toString();
+			contents = contents.replace(
+				/\/\/ BEGIN_LANGUAGES\n([\/ a-zA-Z0-9'\/\-\.;]+\n)+\/\/ END_LANGUAGES/,
+				`// BEGIN_LANGUAGES\n${imports}\n// END_LANGUAGES`
+			);
+			fs.writeFileSync(FILE_PATH, contents);
+		}
+	);
+}
+
+function strcmp(a, b) {
+	if (a < b) {
+		return -1;
+	}
+	if (a > b) {
+		return 1;
+	}
+	return 0;
+}
+
+/**
+ * @returns { string[] }
+ */
+function generateFeatures() {
+	const skipImports = [
+		'vs/editor/common/standaloneStrings',
+		'vs/editor/contrib/tokenization/tokenization',
+		'vs/editor/editor.all'
+	];
+
+	let features = [];
+	const files =
+		fs
+			.readFileSync(
+				path.join(
+					__dirname,
+					'../node_modules/monaco-editor/esm/vs/editor/edcore.main.js'
+				)
+			)
+			.toString() +
+		fs
+			.readFileSync(
+				path.join(
+					__dirname,
+					'../node_modules/monaco-editor/esm/vs/editor/editor.all.js'
+				)
+			)
+			.toString();
+	files.split(/\r\n|\n/).forEach((line) => {
+		const m = line.match(/import '([^']+)'/);
+		if (m) {
+			const tmp = path.posix.join('vs/editor', m[1]).replace(/\.js$/, '');
+			if (skipImports.indexOf(tmp) === -1) {
+				features.push(tmp);
+			}
+		}
+	});
+
+	features.sort(strcmp);
+	const imports = features
+		.map((l) => `import 'monaco-editor/esm/${l}.js';`)
+		.map((l) => `${/(coreCommands)|(findController)/.test(l) ? '' : '// '}${l}`)
+		.join('\n');
+
+	let contents = fs.readFileSync(FILE_PATH).toString();
+	contents = contents.replace(
+		/\/\/ BEGIN_FEATURES\n([\/ a-zA-Z0-9'\/\-\.;]+\n)+\/\/ END_FEATURES/,
+		`// BEGIN_FEATURES\n${imports}\n// END_FEATURES`
+	);
+	fs.writeFileSync(FILE_PATH, contents);
+}

+ 38 - 12
browser-esm-webpack-small/index.js

@@ -1,4 +1,5 @@
 // (1) Desired editor features:
+// BEGIN_FEATURES
 import 'monaco-editor/esm/vs/editor/browser/controller/coreCommands.js';
 // import 'monaco-editor/esm/vs/editor/browser/widget/codeEditorWidget.js';
 // import 'monaco-editor/esm/vs/editor/browser/widget/diffEditorWidget.js';
@@ -7,6 +8,7 @@ import 'monaco-editor/esm/vs/editor/browser/controller/coreCommands.js';
 // import 'monaco-editor/esm/vs/editor/contrib/caretOperations/caretOperations.js';
 // import 'monaco-editor/esm/vs/editor/contrib/caretOperations/transpose.js';
 // import 'monaco-editor/esm/vs/editor/contrib/clipboard/clipboard.js';
+// import 'monaco-editor/esm/vs/editor/contrib/codeAction/codeActionContributions.js';
 // import 'monaco-editor/esm/vs/editor/contrib/codelens/codelensController.js';
 // import 'monaco-editor/esm/vs/editor/contrib/colorPicker/colorDetector.js';
 // import 'monaco-editor/esm/vs/editor/contrib/comment/comment.js';
@@ -15,18 +17,17 @@ import 'monaco-editor/esm/vs/editor/browser/controller/coreCommands.js';
 // import 'monaco-editor/esm/vs/editor/contrib/dnd/dnd.js';
 import 'monaco-editor/esm/vs/editor/contrib/find/findController.js';
 // import 'monaco-editor/esm/vs/editor/contrib/folding/folding.js';
+// import 'monaco-editor/esm/vs/editor/contrib/fontZoom/fontZoom.js';
 // import 'monaco-editor/esm/vs/editor/contrib/format/formatActions.js';
-// import 'monaco-editor/esm/vs/editor/contrib/goToDeclaration/goToDeclarationCommands.js';
-// import 'monaco-editor/esm/vs/editor/contrib/goToDeclaration/goToDeclarationMouse.js';
 // import 'monaco-editor/esm/vs/editor/contrib/gotoError/gotoError.js';
+// import 'monaco-editor/esm/vs/editor/contrib/gotoSymbol/goToCommands.js';
+// import 'monaco-editor/esm/vs/editor/contrib/gotoSymbol/link/goToDefinitionAtPosition.js';
 // import 'monaco-editor/esm/vs/editor/contrib/hover/hover.js';
 // import 'monaco-editor/esm/vs/editor/contrib/inPlaceReplace/inPlaceReplace.js';
 // import 'monaco-editor/esm/vs/editor/contrib/linesOperations/linesOperations.js';
 // import 'monaco-editor/esm/vs/editor/contrib/links/links.js';
 // import 'monaco-editor/esm/vs/editor/contrib/multicursor/multicursor.js';
 // import 'monaco-editor/esm/vs/editor/contrib/parameterHints/parameterHints.js';
-// import 'monaco-editor/esm/vs/editor/contrib/quickFix/quickFixCommands.js';
-// import 'monaco-editor/esm/vs/editor/contrib/referenceSearch/referenceSearch.js';
 // import 'monaco-editor/esm/vs/editor/contrib/rename/rename.js';
 // import 'monaco-editor/esm/vs/editor/contrib/smartSelect/smartSelect.js';
 // import 'monaco-editor/esm/vs/editor/contrib/snippet/snippetController2.js';
@@ -34,21 +35,30 @@ import 'monaco-editor/esm/vs/editor/contrib/find/findController.js';
 // import 'monaco-editor/esm/vs/editor/contrib/toggleTabFocusMode/toggleTabFocusMode.js';
 // import 'monaco-editor/esm/vs/editor/contrib/wordHighlighter/wordHighlighter.js';
 // import 'monaco-editor/esm/vs/editor/contrib/wordOperations/wordOperations.js';
+// import 'monaco-editor/esm/vs/editor/contrib/wordPartOperations/wordPartOperations.js';
 // import 'monaco-editor/esm/vs/editor/standalone/browser/accessibilityHelp/accessibilityHelp.js';
-// import 'monaco-editor/esm/vs/editor/standalone/browser/inspectTokens/inspectTokens.js';
 // import 'monaco-editor/esm/vs/editor/standalone/browser/iPadShowKeyboard/iPadShowKeyboard.js';
-// import 'monaco-editor/esm/vs/editor/standalone/browser/quickOpen/quickOutline.js';
+// import 'monaco-editor/esm/vs/editor/standalone/browser/inspectTokens/inspectTokens.js';
 // import 'monaco-editor/esm/vs/editor/standalone/browser/quickOpen/gotoLine.js';
 // import 'monaco-editor/esm/vs/editor/standalone/browser/quickOpen/quickCommand.js';
+// import 'monaco-editor/esm/vs/editor/standalone/browser/quickOpen/quickOutline.js';
+// import 'monaco-editor/esm/vs/editor/standalone/browser/referenceSearch/standaloneReferenceSearch.js';
 // import 'monaco-editor/esm/vs/editor/standalone/browser/toggleHighContrast/toggleHighContrast.js';
+// END_FEATURES
 import * as monaco from 'monaco-editor/esm/vs/editor/editor.api.js';
 
 // (2) Desired languages:
-// import 'monaco-editor/esm/vs/language/typescript/monaco.contribution';
-// import 'monaco-editor/esm/vs/language/css/monaco.contribution';
-// import 'monaco-editor/esm/vs/language/json/monaco.contribution';
-// import 'monaco-editor/esm/vs/language/html/monaco.contribution';
+// BEGIN_LANGUAGES
+// import 'monaco-editor/esm/vs/language/css/monaco.contribution.js';
+// import 'monaco-editor/esm/vs/language/html/monaco.contribution.js';
+// import 'monaco-editor/esm/vs/language/json/monaco.contribution.js';
+// import 'monaco-editor/esm/vs/language/typescript/monaco.contribution.js';
+// import 'monaco-editor/esm/vs/basic-languages/abap/abap.contribution.js';
+// import 'monaco-editor/esm/vs/basic-languages/apex/apex.contribution.js';
+// import 'monaco-editor/esm/vs/basic-languages/azcli/azcli.contribution.js';
 // import 'monaco-editor/esm/vs/basic-languages/bat/bat.contribution.js';
+// import 'monaco-editor/esm/vs/basic-languages/cameligo/cameligo.contribution.js';
+// import 'monaco-editor/esm/vs/basic-languages/clojure/clojure.contribution.js';
 // import 'monaco-editor/esm/vs/basic-languages/coffee/coffee.contribution.js';
 // import 'monaco-editor/esm/vs/basic-languages/cpp/cpp.contribution.js';
 // import 'monaco-editor/esm/vs/basic-languages/csharp/csharp.contribution.js';
@@ -57,19 +67,27 @@ import * as monaco from 'monaco-editor/esm/vs/editor/editor.api.js';
 // import 'monaco-editor/esm/vs/basic-languages/dockerfile/dockerfile.contribution.js';
 // import 'monaco-editor/esm/vs/basic-languages/fsharp/fsharp.contribution.js';
 // import 'monaco-editor/esm/vs/basic-languages/go/go.contribution.js';
+// import 'monaco-editor/esm/vs/basic-languages/graphql/graphql.contribution.js';
 // import 'monaco-editor/esm/vs/basic-languages/handlebars/handlebars.contribution.js';
 // import 'monaco-editor/esm/vs/basic-languages/html/html.contribution.js';
 // import 'monaco-editor/esm/vs/basic-languages/ini/ini.contribution.js';
 // import 'monaco-editor/esm/vs/basic-languages/java/java.contribution.js';
+// import 'monaco-editor/esm/vs/basic-languages/javascript/javascript.contribution.js';
+// import 'monaco-editor/esm/vs/basic-languages/kotlin/kotlin.contribution.js';
 // import 'monaco-editor/esm/vs/basic-languages/less/less.contribution.js';
 // import 'monaco-editor/esm/vs/basic-languages/lua/lua.contribution.js';
 // import 'monaco-editor/esm/vs/basic-languages/markdown/markdown.contribution.js';
+// import 'monaco-editor/esm/vs/basic-languages/mips/mips.contribution.js';
 // import 'monaco-editor/esm/vs/basic-languages/msdax/msdax.contribution.js';
 // import 'monaco-editor/esm/vs/basic-languages/mysql/mysql.contribution.js';
 // import 'monaco-editor/esm/vs/basic-languages/objective-c/objective-c.contribution.js';
+// import 'monaco-editor/esm/vs/basic-languages/pascal/pascal.contribution.js';
+// import 'monaco-editor/esm/vs/basic-languages/pascaligo/pascaligo.contribution.js';
+// import 'monaco-editor/esm/vs/basic-languages/perl/perl.contribution.js';
 // import 'monaco-editor/esm/vs/basic-languages/pgsql/pgsql.contribution.js';
 // import 'monaco-editor/esm/vs/basic-languages/php/php.contribution.js';
 // import 'monaco-editor/esm/vs/basic-languages/postiats/postiats.contribution.js';
+// import 'monaco-editor/esm/vs/basic-languages/powerquery/powerquery.contribution.js';
 // import 'monaco-editor/esm/vs/basic-languages/powershell/powershell.contribution.js';
 // import 'monaco-editor/esm/vs/basic-languages/pug/pug.contribution.js';
 import 'monaco-editor/esm/vs/basic-languages/python/python.contribution.js';
@@ -77,17 +95,25 @@ import 'monaco-editor/esm/vs/basic-languages/python/python.contribution.js';
 // import 'monaco-editor/esm/vs/basic-languages/razor/razor.contribution.js';
 // import 'monaco-editor/esm/vs/basic-languages/redis/redis.contribution.js';
 // import 'monaco-editor/esm/vs/basic-languages/redshift/redshift.contribution.js';
+// import 'monaco-editor/esm/vs/basic-languages/restructuredtext/restructuredtext.contribution.js';
 // import 'monaco-editor/esm/vs/basic-languages/ruby/ruby.contribution.js';
+// import 'monaco-editor/esm/vs/basic-languages/rust/rust.contribution.js';
 // import 'monaco-editor/esm/vs/basic-languages/sb/sb.contribution.js';
+// import 'monaco-editor/esm/vs/basic-languages/scheme/scheme.contribution.js';
 // import 'monaco-editor/esm/vs/basic-languages/scss/scss.contribution.js';
+// import 'monaco-editor/esm/vs/basic-languages/shell/shell.contribution.js';
 // import 'monaco-editor/esm/vs/basic-languages/solidity/solidity.contribution.js';
+// import 'monaco-editor/esm/vs/basic-languages/sophia/sophia.contribution.js';
 // import 'monaco-editor/esm/vs/basic-languages/sql/sql.contribution.js';
+// import 'monaco-editor/esm/vs/basic-languages/st/st.contribution.js';
 // import 'monaco-editor/esm/vs/basic-languages/swift/swift.contribution.js';
+// import 'monaco-editor/esm/vs/basic-languages/tcl/tcl.contribution.js';
+// import 'monaco-editor/esm/vs/basic-languages/twig/twig.contribution.js';
+// import 'monaco-editor/esm/vs/basic-languages/typescript/typescript.contribution.js';
 // import 'monaco-editor/esm/vs/basic-languages/vb/vb.contribution.js';
 // import 'monaco-editor/esm/vs/basic-languages/xml/xml.contribution.js';
 // import 'monaco-editor/esm/vs/basic-languages/yaml/yaml.contribution.js';
-// import 'monaco-editor/esm/vs/basic-languages/javascript/javascript.contribution';
-// import 'monaco-editor/esm/vs/basic-languages/typescript/typescript.contribution';
+// END_LANGUAGES
 
 self.MonacoEnvironment = {
 	getWorkerUrl: function (moduleId, label) {

+ 103 - 89
browser-esm-webpack-small/package-lock.json

@@ -13,15 +13,15 @@
 			}
 		},
 		"@types/json-schema": {
-			"version": "7.0.5",
-			"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.5.tgz",
-			"integrity": "sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ==",
+			"version": "7.0.6",
+			"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.6.tgz",
+			"integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==",
 			"dev": true
 		},
 		"@types/node": {
-			"version": "14.0.27",
-			"resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.27.tgz",
-			"integrity": "sha512-kVrqXhbclHNHGu9ztnAwSncIgJv/FaxmzXJvGXNdcCpV1b8u1/Mi6z6m0vwy0LzKeXFTPLH0NzwmoJ3fNCIq0g==",
+			"version": "14.11.1",
+			"resolved": "https://registry.npmjs.org/@types/node/-/node-14.11.1.tgz",
+			"integrity": "sha512-oTQgnd0hblfLsJ6BvJzzSL+Inogp3lq9fGgqRkMB/ziKMgEUaFl801OncOzUmalfzt14N0oPHMK47ipl+wbTIw==",
 			"dev": true
 		},
 		"@webassemblyjs/ast": {
@@ -218,9 +218,9 @@
 			"dev": true
 		},
 		"aggregate-error": {
-			"version": "3.0.1",
-			"resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz",
-			"integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==",
+			"version": "3.1.0",
+			"resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
+			"integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
 			"dev": true,
 			"requires": {
 				"clean-stack": "^2.0.0",
@@ -228,9 +228,9 @@
 			}
 		},
 		"ajv": {
-			"version": "6.12.3",
-			"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz",
-			"integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==",
+			"version": "6.12.5",
+			"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.5.tgz",
+			"integrity": "sha512-lRF8RORchjpKG50/WFf8xmg7sgCLFiYNNnqdKflk63whMQcWR5ngGjiSXkL9bjxy6B2npOK2HSMN49jEBMSkag==",
 			"dev": true,
 			"requires": {
 				"fast-deep-equal": "^3.1.1",
@@ -308,14 +308,15 @@
 			"dev": true
 		},
 		"asn1.js": {
-			"version": "4.10.1",
-			"resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz",
-			"integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==",
+			"version": "5.4.1",
+			"resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz",
+			"integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==",
 			"dev": true,
 			"requires": {
 				"bn.js": "^4.0.0",
 				"inherits": "^2.0.1",
-				"minimalistic-assert": "^1.0.0"
+				"minimalistic-assert": "^1.0.0",
+				"safer-buffer": "^2.1.0"
 			},
 			"dependencies": {
 				"bn.js": {
@@ -469,9 +470,9 @@
 			"dev": true
 		},
 		"bn.js": {
-			"version": "5.1.2",
-			"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.2.tgz",
-			"integrity": "sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA==",
+			"version": "5.1.3",
+			"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz",
+			"integrity": "sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==",
 			"dev": true
 		},
 		"brace-expansion": {
@@ -713,9 +714,9 @@
 			}
 		},
 		"chokidar": {
-			"version": "3.4.1",
-			"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.1.tgz",
-			"integrity": "sha512-TQTJyr2stihpC4Sya9hs2Xh+O2wf+igjL36Y75xx2WdHuiICcn/XJza46Jwt0eT5hVpQOzo3FpY3cj3RVYLX0g==",
+			"version": "3.4.2",
+			"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.2.tgz",
+			"integrity": "sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A==",
 			"dev": true,
 			"optional": true,
 			"requires": {
@@ -1038,23 +1039,22 @@
 			}
 		},
 		"css-loader": {
-			"version": "4.2.0",
-			"resolved": "https://registry.npmjs.org/css-loader/-/css-loader-4.2.0.tgz",
-			"integrity": "sha512-ko7a9b0iFpWtk9eSI/C8IICvZeGtYnjxYjw45rJprokXj/+kBd/siX4vAIBq9Uij8Jubc4jL1EvSnTjCEwaHSw==",
+			"version": "4.3.0",
+			"resolved": "https://registry.npmjs.org/css-loader/-/css-loader-4.3.0.tgz",
+			"integrity": "sha512-rdezjCjScIrsL8BSYszgT4s476IcNKt6yX69t0pHjJVnPUTDpn4WfIpDQTN3wCJvUvfsz/mFjuGOekf3PY3NUg==",
 			"dev": true,
 			"requires": {
 				"camelcase": "^6.0.0",
 				"cssesc": "^3.0.0",
 				"icss-utils": "^4.1.1",
 				"loader-utils": "^2.0.0",
-				"normalize-path": "^3.0.0",
 				"postcss": "^7.0.32",
 				"postcss-modules-extract-imports": "^2.0.0",
 				"postcss-modules-local-by-default": "^3.0.3",
 				"postcss-modules-scope": "^2.2.0",
 				"postcss-modules-values": "^3.0.0",
 				"postcss-value-parser": "^4.1.0",
-				"schema-utils": "^2.7.0",
+				"schema-utils": "^2.7.1",
 				"semver": "^7.3.2"
 			}
 		},
@@ -1278,12 +1278,20 @@
 			}
 		},
 		"esrecurse": {
-			"version": "4.2.1",
-			"resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
-			"integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
+			"version": "4.3.0",
+			"resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+			"integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
 			"dev": true,
 			"requires": {
-				"estraverse": "^4.1.0"
+				"estraverse": "^5.2.0"
+			},
+			"dependencies": {
+				"estraverse": {
+					"version": "5.2.0",
+					"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
+					"integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
+					"dev": true
+				}
 			}
 		},
 		"estraverse": {
@@ -1457,13 +1465,13 @@
 			"dev": true
 		},
 		"file-loader": {
-			"version": "6.0.0",
-			"resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.0.0.tgz",
-			"integrity": "sha512-/aMOAYEFXDdjG0wytpTL5YQLfZnnTmLNjn+AIrJ/6HVnTfDqLsVKUUwkDf4I4kgex36BvjuXEn/TX9B/1ESyqQ==",
+			"version": "6.1.0",
+			"resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.1.0.tgz",
+			"integrity": "sha512-26qPdHyTsArQ6gU4P1HJbAbnFTyT2r0pG7czh1GFAd9TZbj0n94wWbupgixZH/ET/meqi2/5+F7DhW4OAXD+Lg==",
 			"dev": true,
 			"requires": {
 				"loader-utils": "^2.0.0",
-				"schema-utils": "^2.6.5"
+				"schema-utils": "^2.7.1"
 			}
 		},
 		"file-uri-to-path": {
@@ -2072,9 +2080,9 @@
 			"dev": true
 		},
 		"jest-worker": {
-			"version": "26.2.1",
-			"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.2.1.tgz",
-			"integrity": "sha512-+XcGMMJDTeEGncRb5M5Zq9P7K4sQ1sirhjdOxsN1462h6lFo9w59bl2LVQmdGEEeU3m+maZCkS2Tcc9SfCHO4A==",
+			"version": "26.3.0",
+			"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.3.0.tgz",
+			"integrity": "sha512-Vmpn2F6IASefL+DVBhPzI2J9/GJUsqzomdeN+P+dK8/jKxbh8R3BtFnx3FIta7wYlPU62cpJMJQo4kuOowcMnw==",
 			"dev": true,
 			"requires": {
 				"@types/node": "*",
@@ -2089,9 +2097,9 @@
 					"dev": true
 				},
 				"supports-color": {
-					"version": "7.1.0",
-					"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
-					"integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==",
+					"version": "7.2.0",
+					"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+					"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
 					"dev": true,
 					"requires": {
 						"has-flag": "^4.0.0"
@@ -2323,9 +2331,9 @@
 			}
 		},
 		"minizlib": {
-			"version": "2.1.0",
-			"resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.0.tgz",
-			"integrity": "sha512-EzTZN/fjSvifSX0SlqUERCN39o6T40AMarPbv0MrarSFtIITCBh7bi+dU8nxGFHuqs9jdIAeoYoKuQAAASsPPA==",
+			"version": "2.1.2",
+			"resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
+			"integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
 			"dev": true,
 			"requires": {
 				"minipass": "^3.0.0",
@@ -2504,7 +2512,8 @@
 			"version": "3.0.0",
 			"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
 			"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
-			"dev": true
+			"dev": true,
+			"optional": true
 		},
 		"object-assign": {
 			"version": "4.1.1",
@@ -2638,14 +2647,13 @@
 			}
 		},
 		"parse-asn1": {
-			"version": "5.1.5",
-			"resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz",
-			"integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==",
+			"version": "5.1.6",
+			"resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz",
+			"integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==",
 			"dev": true,
 			"requires": {
-				"asn1.js": "^4.0.0",
+				"asn1.js": "^5.2.0",
 				"browserify-aes": "^1.0.0",
-				"create-hash": "^1.1.0",
 				"evp_bytestokey": "^1.0.0",
 				"pbkdf2": "^3.0.3",
 				"safe-buffer": "^5.1.1"
@@ -2736,9 +2744,9 @@
 			"dev": true
 		},
 		"postcss": {
-			"version": "7.0.32",
-			"resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
-			"integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
+			"version": "7.0.34",
+			"resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.34.tgz",
+			"integrity": "sha512-H/7V2VeNScX9KE83GDrDZNiGT1m2H+UTnlinIzhjlLX9hfMUn1mHNnGeX81a1c8JSBdBvqk7c2ZOG6ZPn5itGw==",
 			"dev": true,
 			"requires": {
 				"chalk": "^2.4.2",
@@ -3087,15 +3095,21 @@
 				"ret": "~0.1.10"
 			}
 		},
+		"safer-buffer": {
+			"version": "2.1.2",
+			"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+			"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+			"dev": true
+		},
 		"schema-utils": {
-			"version": "2.7.0",
-			"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz",
-			"integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==",
+			"version": "2.7.1",
+			"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz",
+			"integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==",
 			"dev": true,
 			"requires": {
-				"@types/json-schema": "^7.0.4",
-				"ajv": "^6.12.2",
-				"ajv-keywords": "^3.4.1"
+				"@types/json-schema": "^7.0.5",
+				"ajv": "^6.12.4",
+				"ajv-keywords": "^3.5.2"
 			}
 		},
 		"semver": {
@@ -3105,9 +3119,9 @@
 			"dev": true
 		},
 		"serialize-javascript": {
-			"version": "4.0.0",
-			"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
-			"integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
+			"version": "5.0.1",
+			"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz",
+			"integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==",
 			"dev": true,
 			"requires": {
 				"randombytes": "^2.1.0"
@@ -3468,23 +3482,23 @@
 			"dev": true
 		},
 		"tar": {
-			"version": "6.0.2",
-			"resolved": "https://registry.npmjs.org/tar/-/tar-6.0.2.tgz",
-			"integrity": "sha512-Glo3jkRtPcvpDlAs/0+hozav78yoXKFr+c4wgw62NNMO3oo4AaJdCo21Uu7lcwr55h39W2XD1LMERc64wtbItg==",
+			"version": "6.0.5",
+			"resolved": "https://registry.npmjs.org/tar/-/tar-6.0.5.tgz",
+			"integrity": "sha512-0b4HOimQHj9nXNEAA7zWwMM91Zhhba3pspja6sQbgTpynOJf+bkjBnfybNYzbpLbnwXnbyB4LOREvlyXLkCHSg==",
 			"dev": true,
 			"requires": {
 				"chownr": "^2.0.0",
 				"fs-minipass": "^2.0.0",
 				"minipass": "^3.0.0",
-				"minizlib": "^2.1.0",
+				"minizlib": "^2.1.1",
 				"mkdirp": "^1.0.3",
 				"yallist": "^4.0.0"
 			}
 		},
 		"terser": {
-			"version": "5.0.0",
-			"resolved": "https://registry.npmjs.org/terser/-/terser-5.0.0.tgz",
-			"integrity": "sha512-olH2DwGINoSuEpSGd+BsPuAQaA3OrHnHnFL/rDB2TVNc3srUbz/rq/j2BlF4zDXI+JqAvGr86bIm1R2cJgZ3FA==",
+			"version": "5.3.2",
+			"resolved": "https://registry.npmjs.org/terser/-/terser-5.3.2.tgz",
+			"integrity": "sha512-H67sydwBz5jCUA32ZRL319ULu+Su1cAoZnnc+lXnenGRYWyLE3Scgkt8mNoAsMx0h5kdo758zdoS0LG9rYZXDQ==",
 			"dev": true,
 			"requires": {
 				"commander": "^2.20.0",
@@ -3493,19 +3507,19 @@
 			}
 		},
 		"terser-webpack-plugin": {
-			"version": "4.0.0",
-			"resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-4.0.0.tgz",
-			"integrity": "sha512-Gb/bmPMavJsDTYiIocakp9OJhrIBnYrWa5VM0Bb2RngWmszeQUN1xFNh2E8Re+9Cj3/sPrA50Jj/q0nzgLAUuw==",
+			"version": "4.2.1",
+			"resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-4.2.1.tgz",
+			"integrity": "sha512-D0IZQNl1ZN/JivFNDFzOeU2Bk2LdQQESHJhKTHsodpUmISkaeRwVFk7gzHzX4OuQwanDGelOxIEsBt1SZ+s6nA==",
 			"dev": true,
 			"requires": {
 				"cacache": "^15.0.5",
 				"find-cache-dir": "^3.3.1",
-				"jest-worker": "^26.2.1",
+				"jest-worker": "^26.3.0",
 				"p-limit": "^3.0.2",
-				"schema-utils": "^2.6.6",
-				"serialize-javascript": "^4.0.0",
+				"schema-utils": "^2.7.1",
+				"serialize-javascript": "^5.0.1",
 				"source-map": "^0.6.1",
-				"terser": "^5.0.0",
+				"terser": "^5.3.1",
 				"webpack-sources": "^1.4.3"
 			}
 		},
@@ -3678,9 +3692,9 @@
 			"optional": true
 		},
 		"uri-js": {
-			"version": "4.2.2",
-			"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
-			"integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
+			"version": "4.4.0",
+			"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz",
+			"integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==",
 			"dev": true,
 			"requires": {
 				"punycode": "^2.1.0"
@@ -3883,9 +3897,9 @@
 			}
 		},
 		"webpack": {
-			"version": "4.44.1",
-			"resolved": "https://registry.npmjs.org/webpack/-/webpack-4.44.1.tgz",
-			"integrity": "sha512-4UOGAohv/VGUNQJstzEywwNxqX417FnjZgZJpJQegddzPmTvph37eBIRbRTfdySXzVtJXLJfbMN3mMYhM6GdmQ==",
+			"version": "4.44.2",
+			"resolved": "https://registry.npmjs.org/webpack/-/webpack-4.44.2.tgz",
+			"integrity": "sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q==",
 			"dev": true,
 			"requires": {
 				"@webassemblyjs/ast": "1.9.0",
@@ -4080,9 +4094,9 @@
 					"dev": true
 				},
 				"serialize-javascript": {
-					"version": "3.1.0",
-					"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.1.0.tgz",
-					"integrity": "sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==",
+					"version": "4.0.0",
+					"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
+					"integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
 					"dev": true,
 					"requires": {
 						"randombytes": "^2.1.0"
@@ -4109,16 +4123,16 @@
 					}
 				},
 				"terser-webpack-plugin": {
-					"version": "1.4.4",
-					"resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.4.tgz",
-					"integrity": "sha512-U4mACBHIegmfoEe5fdongHESNJWqsGU+W0S/9+BmYGVQDw1+c2Ow05TpMhxjPK1sRb7cuYq1BPl1e5YHJMTCqA==",
+					"version": "1.4.5",
+					"resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz",
+					"integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==",
 					"dev": true,
 					"requires": {
 						"cacache": "^12.0.2",
 						"find-cache-dir": "^2.1.0",
 						"is-wsl": "^1.1.0",
 						"schema-utils": "^1.0.0",
-						"serialize-javascript": "^3.1.0",
+						"serialize-javascript": "^4.0.0",
 						"source-map": "^0.6.1",
 						"terser": "^4.1.2",
 						"webpack-sources": "^1.4.0",

+ 7 - 5
browser-esm-webpack-small/package.json

@@ -2,15 +2,17 @@
 	"name": "helloworld",
 	"dependencies": {},
 	"scripts": {
-		"build": "webpack --progress"
+		"build": "webpack --progress",
+		"generate-imports": "node generate-imports.js"
 	},
 	"devDependencies": {
-		"css-loader": "^4.2.0",
-		"file-loader": "^6.0.0",
+		"css-loader": "^4.3.0",
+		"file-loader": "^6.1.0",
+		"glob": "^7.1.6",
 		"monaco-editor": "^0.20.0",
 		"style-loader": "^1.2.1",
-		"terser-webpack-plugin": "^4.0.0",
-		"webpack": "^4.44.1",
+		"terser-webpack-plugin": "^4.2.1",
+		"webpack": "^4.44.2",
 		"webpack-cli": "^3.3.12"
 	}
 }