fix(cli): generate ExternalObject type on demand

This commit is contained in:
LongYinan 2022-02-10 18:37:04 +08:00
parent e607bc158e
commit f9c618e046
No known key found for this signature in database
GPG key ID: C3666B7FC82ADAD7

View file

@ -493,18 +493,6 @@ async function processIntermediateTypeFile(
return idents
}
const dtsHeader = `/* tslint:disable */
/* eslint-disable */
/* auto-generated by NAPI-RS */
export class ExternalObject<T> {
readonly '': {
readonly '': unique symbol
[K: symbol]: T
}
}\n`
const allDefs = lines.map((line) => JSON.parse(line) as TypeDef)
function convertDefs(defs: TypeDef[], nested = false): string {
@ -597,8 +585,29 @@ export class ExternalObject<T> {
return acc + `export namespace ${mod} {\n${convertDefs(defs, true)}}\n`
}, '')
const dtsHeader = `/* tslint:disable */
/* eslint-disable */
/* auto-generated by NAPI-RS */\n
`
const externalDef =
topLevelDef.indexOf('ExternalObject<') > -1 ||
namespaceDefs.indexOf('ExternalObject<') > -1
? `export class ExternalObject<T> {
readonly '': {
readonly '': unique symbol
[K: symbol]: T
}
}\n`
: ''
await unlinkAsync(source)
await writeFileAsync(target, dtsHeader + topLevelDef + namespaceDefs, 'utf8')
await writeFileAsync(
target,
dtsHeader + externalDef + topLevelDef + namespaceDefs,
'utf8',
)
return idents
}