vega / ts-json-schema-generator

Generate JSON schema from your Typescript sources
MIT License
1.44k stars 190 forks source link

Module Declaration parsing error #686

Open btd opened 3 years ago

btd commented 3 years ago

Hi, thanks for awesome module. I found that it seems module declarations not supported, like mongoose:

declare module 'mongoose' {
....
}

So that when i export LeanDocument<Doc> cli fail with error:

./node_modules/ts-json-schema-generator/dist/src/NodeParser/TypeofNodeParser.js:43
        throw new LogicError_1.LogicError(`Invalid type query "${valueDec.getFullText()}" (ts.SyntaxKind = ${valueDec.kind})`);
        ^

LogicError: Invalid type query "declare module 'mongoose' {
  import events = require('events');
....
 (ts.SyntaxKind = 256)
    at TypeofNodeParser.createType (/Users/dbardadym/Projects/bot-broker-policy-service/node_modules/ts-json-schema-generator/dist/src/NodeParser/TypeofNodeParser.js:43:15)
    at ChainNodeParser.createType (/Users/dbardadym/Projects/bot-broker-policy-service/node_modules/ts-json-schema-generator/dist/src/ChainNodeParser.js:28:54)
    at AnnotatedNodeParser.createType (/Users/dbardadym/Projects/bot-broker-policy-service/node_modules/ts-json-schema-generator/dist/src/NodeParser/AnnotatedNodeParser.js:22:47)
    at /Users/dbardadym/Projects/bot-broker-policy-service/node_modules/ts-json-schema-generator/dist/src/NodeParser/InterfaceAndClassNodeParser.js:98:106
    at Array.map (<anonymous>)
    at InterfaceAndClassNodeParser.getProperties (/Users/dbardadym/Projects/bot-broker-policy-service/node_modules/ts-json-schema-generator/dist/src/NodeParser/InterfaceAndClassNodeParser.js:98:14)
    at InterfaceAndClassNodeParser.createType (/Users/dbardadym/Projects/bot-broker-policy-service/node_modules/ts-json-schema-generator/dist/src/NodeParser/InterfaceAndClassNodeParser.js:40:33)
    at AnnotatedNodeParser.createType (/Users/dbardadym/Projects/bot-broker-policy-service/node_modules/ts-json-schema-generator/dist/src/NodeParser/AnnotatedNodeParser.js:22:47)
    at ExposeNodeParser.createType (/Users/dbardadym/Projects/bot-broker-policy-service/node_modules/ts-json-schema-generator/dist/src/ExposeNodeParser.js:22:45)
    at CircularReferenceNodeParser.createType (/Users/dbardadym/Projects/bot-broker-policy-service/node_modules/ts-json-schema-generator/dist/src/CircularReferenceNodeParser.js:21:43)

So i inspected TypeofNodeParser.ts i found that there is no anything that is using ts isModuleDeclaration. I am happy to do PR myself if somebody point me what should happen with this node type. To me it looks like all declarations from module should be processed further, but i could not find yet a place where this should be added.

Thanks

ferm10n commented 2 years ago

It also looks like this also happens with namespace declarations

Error: Invalid type query "
declare namespace rev1 {
    const mid: 35;
    const revision: 1;
    // <omitted>
}" (ts.SyntaxKind = 260)