@@ -13,6 +13,7 @@ export const generateMasterInterfaces = (
13
13
const MainNamespace = [ 'namespace Main {' ] ;
14
14
const RendererNamespace = [ 'namespace Renderer {' ] ;
15
15
const MainInterfaceForRemote = [ 'interface RemoteMainInterface {' ] ;
16
+ const CrossProcessExportsNamespace = [ 'namespace CrossProcessExports {' ] ;
16
17
const constDeclarations : string [ ] = [ ] ;
17
18
const EMRI : Record < string , boolean > = { } ;
18
19
@@ -34,39 +35,58 @@ export const generateMasterInterfaces = (
34
35
API . forEach ( ( module , index ) => {
35
36
if ( module . name === 'process' ) return ;
36
37
let TargetNamespace ;
37
- const isClass =
38
- module . type === 'Class' ||
39
- API . some (
40
- ( tModule , tIndex ) =>
41
- index !== tIndex && tModule . name . toLowerCase ( ) === module . name . toLowerCase ( ) ,
42
- ) ;
43
- const moduleString = isClass
44
- ? ` class ${ _ . upperFirst ( module . name ) } extends Electron.${ _ . upperFirst ( module . name ) } {}`
45
- : '' ;
38
+ const isClass = module . type === 'Class' ;
46
39
if ( module . type === 'Structure' ) {
47
40
// We must be a structure or something
48
41
return ;
49
42
}
43
+ const moduleString =
44
+ isClass && module . process . exported
45
+ ? ` class ${ _ . upperFirst ( module . name ) } extends Electron.${ _ . upperFirst ( module . name ) } {}`
46
+ : '' ;
50
47
const newConstDeclarations : string [ ] = [ ] ;
51
- if ( ! isClass || module . name !== classify ( module . name ) ) {
48
+ if ( ( ! isClass || module . name !== classify ( module . name ) ) && module . process . exported ) {
52
49
if ( isClass ) {
53
50
newConstDeclarations . push (
54
51
`type ${ classify ( module . name ) } = ${ _ . upperFirst ( module . name ) } ;` ,
55
52
`const ${ classify ( module . name ) } : typeof ${ _ . upperFirst ( module . name ) } ;` ,
56
53
) ;
57
54
} else {
58
- newConstDeclarations . push ( `const ${ classify ( module . name ) } : ${ _ . upperFirst ( module . name ) } ;` ) ;
55
+ // In the case where this module is actually the static methods on a Class type
56
+ if (
57
+ API . some (
58
+ ( tModule , tIndex ) =>
59
+ index !== tIndex &&
60
+ tModule . name . toLowerCase ( ) === module . name . toLowerCase ( ) &&
61
+ tModule . type === 'Class' ,
62
+ ) &&
63
+ ! isClass
64
+ ) {
65
+ newConstDeclarations . push (
66
+ `const ${ classify ( module . name ) } : typeof ${ _ . upperFirst ( module . name ) } ;` ,
67
+ ) ;
68
+ } else {
69
+ newConstDeclarations . push (
70
+ `const ${ classify ( module . name ) } : ${ _ . upperFirst ( module . name ) } ;` ,
71
+ ) ;
72
+ }
59
73
}
60
74
}
61
75
constDeclarations . push ( ...newConstDeclarations ) ;
62
- if ( module . process . main && module . process . renderer ) {
63
- TargetNamespace = CommonNamespace ;
64
- } else if ( module . process . main ) {
65
- TargetNamespace = MainNamespace ;
66
- } else if ( module . process . renderer ) {
67
- TargetNamespace = RendererNamespace ;
76
+ if ( module . process . exported ) {
77
+ if ( module . process . main && module . process . renderer ) {
78
+ TargetNamespace = CommonNamespace ;
79
+ } else if ( module . process . main ) {
80
+ TargetNamespace = MainNamespace ;
81
+ } else if ( module . process . renderer ) {
82
+ TargetNamespace = RendererNamespace ;
83
+ }
68
84
}
69
- if ( module . process . main && ! EMRI [ classify ( module . name ) . toLowerCase ( ) ] ) {
85
+ if (
86
+ module . process . main &&
87
+ module . process . exported &&
88
+ ! EMRI [ classify ( module . name ) . toLowerCase ( ) ]
89
+ ) {
70
90
MainInterfaceForRemote . push (
71
91
` ${ classify ( module . name ) } : ${ isClass ? 'typeof ' : '' } ${ _ . upperFirst ( module . name ) } ;` ,
72
92
) ;
@@ -75,9 +95,12 @@ export const generateMasterInterfaces = (
75
95
debug ( classify ( module . name ) . toLowerCase ( ) , EMRI [ classify ( module . name ) . toLowerCase ( ) ] ) ;
76
96
if ( ! EMRI [ classify ( module . name ) . toLowerCase ( ) ] ) {
77
97
if ( moduleString ) TargetNamespace . push ( moduleString ) ;
98
+ if ( moduleString ) CrossProcessExportsNamespace . push ( moduleString ) ;
78
99
}
79
100
EMRI [ classify ( module . name ) . toLowerCase ( ) ] = true ;
80
- TargetNamespace . push ( ...newConstDeclarations . map ( s => ` ${ s . substr ( 0 , s . length - 1 ) } ` ) ) ;
101
+ const declarations = newConstDeclarations . map ( s => ` ${ s . substr ( 0 , s . length - 1 ) } ` ) ;
102
+ TargetNamespace . push ( ...declarations ) ;
103
+ CrossProcessExportsNamespace . push ( ...declarations ) ;
81
104
}
82
105
} ) ;
83
106
@@ -88,11 +111,13 @@ export const generateMasterInterfaces = (
88
111
CommonNamespace . push ( alias ) ;
89
112
MainNamespace . push ( alias ) ;
90
113
RendererNamespace . push ( alias ) ;
114
+ CrossProcessExportsNamespace . push ( alias ) ;
91
115
}
92
116
93
117
CommonNamespace . push ( '}' ) ;
94
118
MainNamespace . push ( '}' ) ;
95
119
RendererNamespace . push ( '}' ) ;
120
+ CrossProcessExportsNamespace . push ( '}' ) ;
96
121
97
122
const withSemicolons = ( lines : string [ ] ) => {
98
123
return lines . map ( l => ( l . endsWith ( '{' ) || l . endsWith ( '}' ) ? l : `${ l } ;` ) ) ;
@@ -101,5 +126,6 @@ export const generateMasterInterfaces = (
101
126
addToOutput ( withSemicolons ( CommonNamespace ) ) ;
102
127
addToOutput ( withSemicolons ( MainNamespace ) ) ;
103
128
addToOutput ( withSemicolons ( RendererNamespace ) ) ;
129
+ addToOutput ( withSemicolons ( CrossProcessExportsNamespace ) ) ;
104
130
addToOutput ( constDeclarations ) ;
105
131
} ;
0 commit comments