333
schangxiang@126.com
2025-09-19 18966e02fb573c7e2bb0c6426ed792b38b910940
1
{"version":3,"sources":["../browser/src/util/DirectoryExportedClassesLoader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAC,YAAY,EAAC,MAAM,UAAU,CAAC;AAEtC;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAAC,WAAqB,EAAE,OAAwB;IAAxB,wBAAA,EAAA,WAAW,KAAK,EAAE,KAAK,CAAC;IAExF,SAAS,eAAe,CAAC,QAAa,EAAE,SAAqB;QACzD,IAAI,OAAO,QAAQ,KAAK,UAAU,IAAI,QAAQ,YAAY,YAAY,EAAE;YACpE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAE5B;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YAChC,QAAQ,CAAC,OAAO,CAAC,UAAC,CAAM,IAAK,OAAA,eAAe,CAAC,CAAC,EAAE,SAAS,CAAC,EAA7B,CAA6B,CAAC,CAAC;SAE/D;aAAM,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,EAAE;YAC1D,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,UAAA,GAAG,IAAI,OAAA,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,EAAzC,CAAyC,CAAC,CAAC;SAEnF;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,IAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,UAAC,OAAO,EAAE,GAAG;QAC7C,OAAO,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC7F,CAAC,EAAE,EAAc,CAAC,CAAC;IAEnB,IAAM,IAAI,GAAG,QAAQ;SAChB,MAAM,CAAC,UAAA,IAAI;QACR,IAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAClE,OAAO,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,YAAY,KAAK,OAAO,CAAC;IAC/F,CAAC,CAAC;SACD,GAAG,CAAC,UAAA,IAAI,IAAI,OAAA,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAnD,CAAmD,CAAC,CAAC;IAEtE,OAAO,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,0BAA0B,CAAC,WAAqB,EAAE,MAAgB;IAAhB,uBAAA,EAAA,gBAAgB;IAE9E,IAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,UAAC,OAAO,EAAE,GAAG;QAC7C,OAAO,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC7F,CAAC,EAAE,EAAc,CAAC,CAAC;IAEnB,OAAO,QAAQ;SACV,MAAM,CAAC,UAAA,IAAI,IAAI,OAAA,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,MAAM,EAA1C,CAA0C,CAAC;SAC1D,GAAG,CAAC,UAAA,IAAI,IAAI,OAAA,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAnD,CAAmD,CAAC,CAAC;AAC1E,CAAC","file":"DirectoryExportedClassesLoader.js","sourcesContent":["import {PlatformTools} from \"../platform/PlatformTools\";\nimport {EntitySchema} from \"../index\";\n\n/**\n * Loads all exported classes from the given directory.\n */\nexport function importClassesFromDirectories(directories: string[], formats = [\".js\", \".ts\"]): Function[] {\n\n    function loadFileClasses(exported: any, allLoaded: Function[]) {\n        if (typeof exported === \"function\" || exported instanceof EntitySchema) {\n            allLoaded.push(exported);\n\n        } else if (Array.isArray(exported)) {\n            exported.forEach((i: any) => loadFileClasses(i, allLoaded));\n\n        } else if (typeof exported === \"object\" && exported !== null) {\n            Object.keys(exported).forEach(key => loadFileClasses(exported[key], allLoaded));\n\n        }\n        return allLoaded;\n    }\n\n    const allFiles = directories.reduce((allDirs, dir) => {\n        return allDirs.concat(PlatformTools.load(\"glob\").sync(PlatformTools.pathNormalize(dir)));\n    }, [] as string[]);\n\n    const dirs = allFiles\n        .filter(file => {\n            const dtsExtension = file.substring(file.length - 5, file.length);\n            return formats.indexOf(PlatformTools.pathExtname(file)) !== -1 && dtsExtension !== \".d.ts\";\n        })\n        .map(file => PlatformTools.load(PlatformTools.pathResolve(file)));\n\n    return loadFileClasses(dirs, []);\n}\n\n/**\n * Loads all json files from the given directory.\n */\nexport function importJsonsFromDirectories(directories: string[], format = \".json\"): any[] {\n\n    const allFiles = directories.reduce((allDirs, dir) => {\n        return allDirs.concat(PlatformTools.load(\"glob\").sync(PlatformTools.pathNormalize(dir)));\n    }, [] as string[]);\n\n    return allFiles\n        .filter(file => PlatformTools.pathExtname(file) === format)\n        .map(file => PlatformTools.load(PlatformTools.pathResolve(file)));\n}"],"sourceRoot":".."}