cmd-johnson / deno-reflect-metadata

A Deno-compatible copy of the TypeScript Metadata Reflection API my Microsoft
Apache License 2.0
11 stars 4 forks source link

fix(tag): move enum tag to fix bundle #7

Open jiawei397 opened 2 years ago

jiawei397 commented 2 years ago

Today when I use deno v1.18.0 to bundle my project, I meet one error:

error: Uncaught (in promise) ReferenceError: Tag is not defined
                return Tag.String;
                ^
    at Type (file:///Users/jw/wk/deno/oak_nest/example/main.js:16785:17)
    at IsPropertyKey (file:///Users/jw/wk/deno/oak_nest/example/main.js:16889:16)
    at decorator (file:///Users/jw/wk/deno/oak_nest/example/main.js:16599:47)
    at file:///Users/jw/wk/deno/oak_nest/example/main.js:142932:28
    at Array.reduce (<anonymous>)
    at _applyDecoratedDescriptor (file:///Users/jw/wk/deno/oak_nest/example/main.js:142931:42)
    at file:///Users/jw/wk/deno/oak_nest/example/main.js:142964:294

The bundled js is like this:

function Type(x4) {
        if (x4 === null) return Tag.Null;
        switch(typeof x4){
            case "undefined":
                return Tag.Undefined;
            case "boolean":
                return Tag.Boolean;
            case "string":
                return Tag.String;
            case "symbol":
                return Tag.Symbol;
            case "number":
                return Tag.Number;
            case "object":
                return x4 === null ? Tag.Null : Tag.Object;
            default:
                return Tag.Object;
        }
    }
    let Tag11;
    (function(Tag1) {
        Tag1[Tag1["Undefined"] = 0] = "Undefined";
        Tag1[Tag1["Null"] = 1] = "Null";
        Tag1[Tag1["Boolean"] = 2] = "Boolean";
        Tag1[Tag1["String"] = 3] = "String";
        Tag1[Tag1["Symbol"] = 4] = "Symbol";
        Tag1[Tag1["Number"] = 5] = "Number";
        Tag1[Tag1["Object"] = 6] = "Object";
    })(Tag11 || (Tag11 = {}));

So I have to fix this by move the enum Tag define up.