333
schangxiang@126.com
2025-09-19 18966e02fb573c7e2bb0c6426ed792b38b910940
1
{"version":3,"sources":["../browser/src/connection/ConnectionMetadataBuilder.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,4BAA4B,EAAC,MAAM,wCAAwC,CAAC;AACpF,OAAO,EAAC,QAAQ,EAAC,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAC,gBAAgB,EAAC,MAAM,cAAc,CAAC;AAE9C,OAAO,EAAC,sBAAsB,EAAC,MAAM,UAAU,CAAC;AAChD,OAAO,EAAC,qBAAqB,EAAC,MAAM,2CAA2C,CAAC;AAChF,OAAO,EAAC,uBAAuB,EAAC,MAAM,0CAA0C,CAAC;AAEjF,OAAO,EAAC,YAAY,EAAC,MAAM,+BAA+B,CAAC;AAI3D;;GAEG;AACH;IAEI,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAE5E,mCAAsB,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;IAC5C,CAAC;IAED,4EAA4E;IAC5E,iBAAiB;IACjB,4EAA4E;IAE5E;;OAEG;IACH,mDAAe,GAAf,UAAgB,UAA+B;QACrC,IAAA,mEAAsF,EAArF,wBAAgB,EAAE,4BAAmE,CAAC;QAC7F,IAAM,mBAAmB,oBAAO,gBAAgB,EAAK,4BAA4B,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACzG,OAAO,mBAAmB,CAAC,GAAG,CAAC,UAAA,cAAc,IAAI,OAAA,gBAAgB,CAAqB,cAAc,CAAC,EAApD,CAAoD,CAAC,CAAC;IAC3G,CAAC;IAED;;OAEG;IACH,oDAAgB,GAAhB,UAAiB,WAAgC;QACvC,IAAA,0EAA+F,EAA9F,yBAAiB,EAAE,6BAA2E,CAAC;QACtG,IAAM,oBAAoB,oBAAO,iBAAiB,EAAK,4BAA4B,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAC5G,OAAO,sBAAsB,EAAE;aAC1B,iBAAiB,CAAC,oBAAoB,CAAC;aACvC,GAAG,CAAC,UAAA,QAAQ,IAAI,OAAA,gBAAgB,CAAiC,QAAQ,CAAC,MAAM,CAAC,EAAjE,CAAiE,CAAC,CAAC;IAC5F,CAAC;IAED;;OAEG;IACH,wDAAoB,GAApB,UAAqB,QAA+C;QAChE,iEAAiE;QAE3D,IAAA,uEAA6F,EAA5F,8BAAsB,EAAE,yBAAoE,CAAC;QACpG,IAAM,aAAa,GAAe,sBAAsB,CAAC,MAAM,CAAC,UAAA,WAAW,IAAI,OAAA,CAAC,WAAW,YAAY,YAAY,CAAC,KAAK,KAAK,EAA/C,CAA+C,CAAQ,CAAC;QACvI,IAAM,aAAa,GAAwB,sBAAsB,CAAC,MAAM,CAAC,UAAA,WAAW,IAAI,OAAA,WAAW,YAAY,YAAY,EAAnC,CAAmC,CAAQ,CAAC;QAEpI,IAAM,gBAAgB,oBAAO,aAAa,EAAK,4BAA4B,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAChG,gBAAgB,CAAC,OAAO,CAAC,UAAA,WAAW;YAChC,IAAI,WAAW,YAAY,YAAY,EAAE;gBACrC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAChC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;aACpE;QACL,CAAC,CAAC,CAAC;QACH,IAAM,wBAAwB,GAAG,IAAI,qBAAqB,CAAC,IAAI,CAAC,UAAU,EAAE,sBAAsB,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAE9H,IAAM,6BAA6B,GAAG,IAAI,uBAAuB,EAAE,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QAC7F,IAAM,qBAAqB,GAAG,IAAI,qBAAqB,CAAC,IAAI,CAAC,UAAU,EAAE,6BAA6B,CAAC,CAAC,KAAK,EAAE,CAAC;QAEhH,wBAAW,wBAAwB,EAAK,qBAAqB,EAAE;IACnE,CAAC;IAEL,gCAAC;AAAD,CA1DA,AA0DC,IAAA","file":"ConnectionMetadataBuilder.js","sourcesContent":["import {importClassesFromDirectories} from \"../util/DirectoryExportedClassesLoader\";\nimport {OrmUtils} from \"../util/OrmUtils\";\nimport {getFromContainer} from \"../container\";\nimport {MigrationInterface} from \"../migration/MigrationInterface\";\nimport {getMetadataArgsStorage} from \"../index\";\nimport {EntityMetadataBuilder} from \"../metadata-builder/EntityMetadataBuilder\";\nimport {EntitySchemaTransformer} from \"../entity-schema/EntitySchemaTransformer\";\nimport {Connection} from \"./Connection\";\nimport {EntitySchema} from \"../entity-schema/EntitySchema\";\nimport {EntityMetadata} from \"../metadata/EntityMetadata\";\nimport {EntitySubscriberInterface} from \"../subscriber/EntitySubscriberInterface\";\n\n/**\n * Builds migration instances, subscriber instances and entity metadatas for the given classes.\n */\nexport class ConnectionMetadataBuilder {\n\n    // -------------------------------------------------------------------------\n    // Constructor\n    // -------------------------------------------------------------------------\n\n    constructor(protected connection: Connection) {\n    }\n\n    // -------------------------------------------------------------------------\n    // Public Methods\n    // -------------------------------------------------------------------------\n\n    /**\n     * Builds migration instances for the given classes or directories.\n     */\n    buildMigrations(migrations: (Function|string)[]): MigrationInterface[] {\n        const [migrationClasses, migrationDirectories] = OrmUtils.splitClassesAndStrings(migrations);\n        const allMigrationClasses = [...migrationClasses, ...importClassesFromDirectories(migrationDirectories)];\n        return allMigrationClasses.map(migrationClass => getFromContainer<MigrationInterface>(migrationClass));\n    }\n\n    /**\n     * Builds subscriber instances for the given classes or directories.\n     */\n    buildSubscribers(subscribers: (Function|string)[]): EntitySubscriberInterface<any>[] {\n        const [subscriberClasses, subscriberDirectories] = OrmUtils.splitClassesAndStrings(subscribers || []);\n        const allSubscriberClasses = [...subscriberClasses, ...importClassesFromDirectories(subscriberDirectories)];\n        return getMetadataArgsStorage()\n            .filterSubscribers(allSubscriberClasses)\n            .map(metadata => getFromContainer<EntitySubscriberInterface<any>>(metadata.target));\n    }\n\n    /**\n     * Builds entity metadatas for the given classes or directories.\n     */\n    buildEntityMetadatas(entities: (Function|EntitySchema<any>|string)[]): EntityMetadata[] {\n        // todo: instead we need to merge multiple metadata args storages\n\n        const [entityClassesOrSchemas, entityDirectories] = OrmUtils.splitClassesAndStrings(entities || []);\n        const entityClasses: Function[] = entityClassesOrSchemas.filter(entityClass => (entityClass instanceof EntitySchema) === false) as any;\n        const entitySchemas: EntitySchema<any>[] = entityClassesOrSchemas.filter(entityClass => entityClass instanceof EntitySchema) as any;\n\n        const allEntityClasses = [...entityClasses, ...importClassesFromDirectories(entityDirectories)];\n        allEntityClasses.forEach(entityClass => { // if we have entity schemas loaded from directories\n            if (entityClass instanceof EntitySchema) {\n                entitySchemas.push(entityClass);\n                allEntityClasses.slice(allEntityClasses.indexOf(entityClass), 1);\n            }\n        });\n        const decoratorEntityMetadatas = new EntityMetadataBuilder(this.connection, getMetadataArgsStorage()).build(allEntityClasses);\n\n        const metadataArgsStorageFromSchema = new EntitySchemaTransformer().transform(entitySchemas);\n        const schemaEntityMetadatas = new EntityMetadataBuilder(this.connection, metadataArgsStorageFromSchema).build();\n\n        return [...decoratorEntityMetadatas, ...schemaEntityMetadatas];\n    }\n\n}"],"sourceRoot":".."}