@@ -10,28 +10,51 @@ function restrictedProviderImport(servicePkg) {
1010 } ;
1111}
1212
13+ // node built-ins with meaningful polyfills in web environment
14+ const allowedNodeJSBuiltinModules = [ 'assert' , 'stream' , 'events' ] ;
15+
1316module . exports = {
1417 ...baseConfig ,
1518 rules : {
1619 ...baseConfig . rules ,
1720 'no-restricted-imports' : 'off' ,
1821 '@typescript-eslint/no-restricted-imports' : [
1922 'error' ,
20- restrictedProviderImport ( '@mongodb-js/compass-logging' ) ,
21- restrictedProviderImport ( '@mongodb-js/compass-telemetry' ) ,
22- restrictedProviderImport ( '@mongodb-js/compass-app-stores' ) ,
23- restrictedProviderImport ( '@mongodb-js/my-queries-storage' ) ,
24- restrictedProviderImport ( '@mongodb-js/atlas-service' ) ,
25- restrictedProviderImport ( 'compass-preferences-model' ) ,
26- {
27- paths : require ( 'module' ) . builtinModules ,
28- message : 'Using Node.js built-in modules in plugins is not allowed.' ,
29- allowTypeImports : false ,
30- } ,
3123 {
32- paths : [ 'electron' , '@electron/remote' ] ,
33- message : 'Using electron modules in plugins is not allowed.' ,
34- allowTypeImports : false ,
24+ paths : [
25+ restrictedProviderImport ( '@mongodb-js/compass-logging' ) ,
26+ restrictedProviderImport ( '@mongodb-js/compass-telemetry' ) ,
27+ restrictedProviderImport ( '@mongodb-js/compass-app-stores' ) ,
28+ restrictedProviderImport ( '@mongodb-js/my-queries-storage' ) ,
29+ restrictedProviderImport ( '@mongodb-js/atlas-service' ) ,
30+ restrictedProviderImport ( 'compass-preferences-model' ) ,
31+ ...require ( 'module' )
32+ . builtinModules . filter ( ( module ) => {
33+ return (
34+ ! module . startsWith ( '_' ) &&
35+ ! allowedNodeJSBuiltinModules . includes ( module )
36+ ) ;
37+ } )
38+ . flatMap ( ( name ) => {
39+ const config = {
40+ message :
41+ 'Using Node.js built-in modules in plugins is not allowed.' ,
42+ allowTypeImports : true ,
43+ } ;
44+
45+ return [
46+ { name, ...config } ,
47+ { name : `node:${ name } ` , ...config } ,
48+ ] ;
49+ } ) ,
50+ ...[ 'electron' , '@electron/remote' ] . map ( ( name ) => {
51+ return {
52+ name,
53+ message : 'Using electron modules in plugins is not allowed.' ,
54+ allowTypeImports : false ,
55+ } ;
56+ } ) ,
57+ ] ,
3558 } ,
3659 ] ,
3760 } ,
0 commit comments