Merge pull request #1071 from napi-rs/external-on-demand

fix(cli): generate ExternalObject type on demand
This commit is contained in:
LongYinan 2022-02-10 18:50:59 +08:00 committed by GitHub
commit 13bccf7dfb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -493,18 +493,6 @@ async function processIntermediateTypeFile(
return idents 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) const allDefs = lines.map((line) => JSON.parse(line) as TypeDef)
function convertDefs(defs: TypeDef[], nested = false): string { 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` 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 unlinkAsync(source)
await writeFileAsync(target, dtsHeader + topLevelDef + namespaceDefs, 'utf8') await writeFileAsync(
target,
dtsHeader + externalDef + topLevelDef + namespaceDefs,
'utf8',
)
return idents return idents
} }