EnterTheNameHere / esdoc-monorepo

Monorepo for custom esdoc and all its packages.
Other
7 stars 1 forks source link

Decorator #22

Open Timbuktu1982 opened 1 year ago

Timbuktu1982 commented 1 year ago

Hi EnterTheNameHere,

i have problems, when i export a decorator function directly:

input:

export function ServiceInjection(target: object, propertyName: string): void {
    ServiceManager.getService(propertyName).then((service) => {
        Object.defineProperty(target, propertyName, service);
    });
}

output:

3| import { ServiceManager } from '../core/service-manager';
4| 
5| export function ServiceInjection(target: object, propertyName: string): void {
6|     ServiceManager.getService(propertyName).then((service) => {
7|         Object.defineProperty(target, propertyName, service);
8|     });
9| }
10| 
11| undefined
12| undefined
13| undefined

/usr/local/lib/node_modules/@enterthenamehere/esdoc/out/ESDoc.js:394
        throw e;
        ^

TypeError: Cannot read properties of undefined (reading 'start')
    at InvalidCodeLogger.show (/usr/local/lib/node_modules/@enterthenamehere/esdoc-standard-plugin/node_modules/@enterthenamehere/esdoc-core/lib/Util/InvalidCodeLogger.js:37:43)
    at FunctionDoc._$param (/usr/local/lib/node_modules/@enterthenamehere/esdoc-standard-plugin/node_modules/@enterthenamehere/esdoc-core/lib/Doc/AbstractDoc.js:550:36)
    at FunctionDoc._apply (/usr/local/lib/node_modules/@enterthenamehere/esdoc-standard-plugin/node_modules/@enterthenamehere/esdoc-core/lib/Doc/AbstractDoc.js:115:10)
    at new AbstractDoc (/usr/local/lib/node_modules/@enterthenamehere/esdoc-standard-plugin/node_modules/@enterthenamehere/esdoc-core/lib/Doc/AbstractDoc.js:46:10)
    at new FunctionDoc (/usr/local/lib/node_modules/@enterthenamehere/esdoc-standard-plugin/node_modules/@enterthenamehere/esdoc-core/lib/Doc/FunctionDoc.js:19:1)
    at DocFactory._createDoc (/usr/local/lib/node_modules/@enterthenamehere/esdoc-standard-plugin/node_modules/@enterthenamehere/esdoc-core/lib/Factory/DocFactory.js:555:12)
    at DocFactory._traverseComments (/usr/local/lib/node_modules/@enterthenamehere/esdoc-standard-plugin/node_modules/@enterthenamehere/esdoc-core/lib/Factory/DocFactory.js:474:22)
    at DocFactory.push (/usr/local/lib/node_modules/@enterthenamehere/esdoc-standard-plugin/node_modules/@enterthenamehere/esdoc-core/lib/Factory/DocFactory.js:382:20)
    at /usr/local/lib/node_modules/@enterthenamehere/esdoc/out/ESDoc.js:391:17
    at enter (/usr/local/lib/node_modules/@enterthenamehere/esdoc-standard-plugin/node_modules/@enterthenamehere/esdoc-core/lib/Util/ASTUtil.js:39:9)
When i separate the export like the code below, i have no problems...

const ServiceInjection = function (target: object, propertyName: string): void {
    ServiceManager.getService(propertyName).then((service) => {
        Object.defineProperty(target, propertyName, service);
    });
};

export { ServiceInjection };
Timbuktu1982 commented 1 year ago

Sorry, i forgot to say: I use node.js 19 and TypeScript.

The post above i have make prettier.