Skip to content

Commit 66b3d45

Browse files
feat: support inner types like Promise<boolean> (#115)
* chore: fix the npm audit issues * feat: support inner types for things like Promise<Boolean>
1 parent 7dc0f04 commit 66b3d45

File tree

2 files changed

+16
-4
lines changed

2 files changed

+16
-4
lines changed

lib/utils.js

+15-3
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ const typify = (type) => {
4242

4343
if (!type) return 'any'
4444

45+
let innerType
46+
4547
if (typeof type === 'object') {
4648
let newType = type.typeName || type.type || 'any'
4749

@@ -55,6 +57,10 @@ const typify = (type) => {
5557
if (type.collection) newType += '[]'
5658
}
5759

60+
if (type.innerType) {
61+
innerType = type.innerType
62+
}
63+
5864
type = newType
5965
}
6066

@@ -67,9 +73,11 @@ const typify = (type) => {
6773
case 'integer[]':
6874
case 'float[]':
6975
return 'number[]'
70-
case 'array':
76+
case 'array': {
77+
if (innerType) return `Array<${innerType}>`
7178
debug('Untyped "Array" as return type'.yellow)
7279
return 'any[]'
80+
}
7381
case 'true':
7482
case 'false':
7583
debug('"true" or "false" provided as return value, inferring "Boolean" type'.info)
@@ -94,6 +102,10 @@ const typify = (type) => {
94102
case 'buffer[]':
95103
return 'Buffer[]'
96104
case 'promise':
105+
if (innerType) {
106+
return `Promise<${innerType}>`
107+
}
108+
debug('Promise with missing inner type, defaulting to any')
97109
return 'Promise<any>'
98110
case 'url':
99111
return 'string'
@@ -175,13 +187,13 @@ const genMethodString = (paramInterfaces, module, moduleMethod, parameters, retu
175187
if (Array.isArray(param.type)) {
176188
param.type = param.type.map((paramType) => {
177189
if (paramType.typeName === 'Function' && param.parameters) {
178-
return Object.assign({}, paramType, { typeName: genMethodString(paramInterfaces, module, moduleMethod, param.parameters, param.returns) })
190+
return Object.assign({}, paramType, { typeName: genMethodString(paramInterfaces, module, moduleMethod, param.parameters, param.returns || paramType.innerType) })
179191
}
180192
return paramType
181193
})
182194
}
183195
if (param.type === 'Function' && param.parameters) {
184-
paramType = genMethodString(paramInterfaces, module, moduleMethod, param.parameters, param.returns)
196+
paramType = genMethodString(paramInterfaces, module, moduleMethod, param.parameters, param.returns || param.innerType)
185197
}
186198
187199
const name = paramify(param.name)

vendor/fetch-docs.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ const mkdirp = require('mkdirp').sync
77
const os = require('os')
88

99
const downloadPath = path.join(os.tmpdir(), 'electron-api-tmp')
10-
const ELECTRON_COMMIT = '83b7f2369a3d7301f1038171636c8704be8b6818'
10+
const ELECTRON_COMMIT = '8f89b6748dadbd9b19d1a2e272e5df167291ef3a'
1111

1212
rm(downloadPath)
1313

0 commit comments

Comments
 (0)