@wisemen/nestjs-typeorm 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
File without changes
@@ -0,0 +1,5 @@
1
+ import { DataSource } from 'typeorm';
2
+ import { Provider } from '@nestjs/common';
3
+ import { DataSourceOptions } from 'typeorm/browser';
4
+ import { EntityClassOrSchema } from '@nestjs/typeorm/dist/interfaces/entity-class-or-schema.type.js';
5
+ export declare function createTypeOrmProviders(entities?: EntityClassOrSchema[], dataSource?: DataSource | DataSourceOptions | string): Provider[];
@@ -0,0 +1,20 @@
1
+ import { getMetadataArgsStorage } from 'typeorm';
2
+ import { TypeOrmRepository } from './repository.js';
3
+ import { getDataSourceToken, getRepositoryToken } from '@nestjs/typeorm';
4
+ export function createTypeOrmProviders(entities, dataSource) {
5
+ return (entities || []).map(entity => ({
6
+ provide: getRepositoryToken(entity, dataSource),
7
+ useFactory: (dataSource) => {
8
+ const entityMetadata = dataSource.entityMetadatas.find(meta => meta.target === entity);
9
+ const isTreeEntity = typeof entityMetadata?.treeType !== 'undefined';
10
+ return isTreeEntity
11
+ ? dataSource.getTreeRepository(entity)
12
+ : dataSource.options.type === 'mongodb'
13
+ ? dataSource.getMongoRepository(entity)
14
+ : new TypeOrmRepository(entity, dataSource.manager);
15
+ },
16
+ inject: [getDataSourceToken(dataSource)],
17
+ targetEntitySchema: getMetadataArgsStorage().tables.find(item => item.target === entity)
18
+ }));
19
+ }
20
+ //# sourceMappingURL=create-providers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-providers.js","sourceRoot":"","sources":["../lib/create-providers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAKxE,MAAM,UAAU,sBAAsB,CACpC,QAAgC,EAChC,UAAoD;IAEpD,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACrC,OAAO,EAAE,kBAAkB,CAAC,MAAM,EAAE,UAAU,CAAC;QAC/C,UAAU,EAAE,CAAC,UAAsB,EAAE,EAAE;YACrC,MAAM,cAAc,GAAG,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,CAAA;YACtF,MAAM,YAAY,GAAG,OAAO,cAAc,EAAE,QAAQ,KAAK,WAAW,CAAA;YAEpE,OAAO,YAAY;gBACjB,CAAC,CAAC,UAAU,CAAC,iBAAiB,CAAC,MAAM,CAAC;gBACtC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS;oBACrC,CAAC,CAAC,UAAU,CAAC,kBAAkB,CAAC,MAAM,CAAC;oBACvC,CAAC,CAAC,IAAI,iBAAiB,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;QACzD,CAAC;QACD,MAAM,EAAE,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;QACxC,kBAAkB,EAAE,sBAAsB,EAAE,CAAC,MAAM,CAAC,IAAI,CACtD,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,CAC/B;KACF,CAAC,CAAC,CAAA;AACL,CAAC"}
@@ -0,0 +1,5 @@
1
+ export * from './create-providers.js';
2
+ export * from './module.js';
3
+ export * from './repository.js';
4
+ export * from './transaction.js';
5
+ export { InjectRepository, InjectEntityManager, InjectDataSource, } from '@nestjs/typeorm';
package/dist/index.js ADDED
@@ -0,0 +1,6 @@
1
+ export * from './create-providers.js';
2
+ export * from './module.js';
3
+ export * from './repository.js';
4
+ export * from './transaction.js';
5
+ export { InjectRepository, InjectEntityManager, InjectDataSource, } from '@nestjs/typeorm';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA;AACrC,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA;AAEhC,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,GAChB,MAAM,iBAAiB,CAAA"}
@@ -0,0 +1,7 @@
1
+ import { DynamicModule } from '@nestjs/common';
2
+ import { TypeOrmModule as TM } from '@nestjs/typeorm';
3
+ import { EntityClassOrSchema } from '@nestjs/typeorm/dist/interfaces/entity-class-or-schema.type.js';
4
+ import { DataSource, DataSourceOptions } from 'typeorm';
5
+ export declare class TypeOrmModule extends TM {
6
+ static forFeature(entities?: EntityClassOrSchema[], dataSource?: DataSource | DataSourceOptions | string): DynamicModule;
7
+ }
package/dist/module.js ADDED
@@ -0,0 +1,28 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var TypeOrmModule_1;
8
+ import { Module } from '@nestjs/common';
9
+ import { TypeOrmModule as TM } from '@nestjs/typeorm';
10
+ import { DEFAULT_DATA_SOURCE_NAME } from '@nestjs/typeorm/dist/typeorm.constants.js';
11
+ import { EntitiesMetadataStorage } from '@nestjs/typeorm/dist/entities-metadata.storage.js';
12
+ import { createTypeOrmProviders } from './create-providers.js';
13
+ let TypeOrmModule = TypeOrmModule_1 = class TypeOrmModule extends TM {
14
+ static forFeature(entities = [], dataSource = DEFAULT_DATA_SOURCE_NAME) {
15
+ const providers = createTypeOrmProviders(entities, dataSource);
16
+ EntitiesMetadataStorage.addEntitiesByDataSource(dataSource, [...entities]);
17
+ return {
18
+ module: TypeOrmModule_1,
19
+ providers: providers,
20
+ exports: providers
21
+ };
22
+ }
23
+ };
24
+ TypeOrmModule = TypeOrmModule_1 = __decorate([
25
+ Module({})
26
+ ], TypeOrmModule);
27
+ export { TypeOrmModule };
28
+ //# sourceMappingURL=module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module.js","sourceRoot":"","sources":["../lib/module.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,EAAiB,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,EAAE,aAAa,IAAI,EAAE,EAAE,MAAM,iBAAiB,CAAA;AAGrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAA;AACpF,OAAO,EAAE,uBAAuB,EAAE,MAAM,mDAAmD,CAAA;AAC3F,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAGvD,IAAM,aAAa,qBAAnB,MAAM,aAAc,SAAQ,EAAE;IACnC,MAAM,CAAC,UAAU,CACf,WAAkC,EAAE,EACpC,aAGa,wBAAwB;QAErC,MAAM,SAAS,GAAG,sBAAsB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;QAE9D,uBAAuB,CAAC,uBAAuB,CAAC,UAAU,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAA;QAE1E,OAAO;YACL,MAAM,EAAE,eAAa;YACrB,SAAS,EAAE,SAAS;YACpB,OAAO,EAAE,SAAS;SACnB,CAAA;IACH,CAAC;CACF,CAAA;AAlBY,aAAa;IADzB,MAAM,CAAC,EAAE,CAAC;GACE,aAAa,CAkBzB"}
@@ -0,0 +1,4 @@
1
+ import { type EntityManager, type EntityTarget, ObjectLiteral, Repository } from 'typeorm';
2
+ export declare class TypeOrmRepository<T extends ObjectLiteral> extends Repository<T> {
3
+ constructor(entity: EntityTarget<T>, manager: EntityManager);
4
+ }
@@ -0,0 +1,8 @@
1
+ import { Repository } from 'typeorm';
2
+ import { createTransactionManagerProxy } from './transaction.js';
3
+ export class TypeOrmRepository extends Repository {
4
+ constructor(entity, manager) {
5
+ super(entity, createTransactionManagerProxy(manager));
6
+ }
7
+ }
8
+ //# sourceMappingURL=repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repository.js","sourceRoot":"","sources":["../lib/repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwD,UAAU,EAAE,MAAM,SAAS,CAAA;AAC1F,OAAO,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAA;AAEhE,MAAM,OAAO,iBAA2C,SAAQ,UAAc;IAC5E,YAAa,MAAuB,EAAE,OAAsB;QAC1D,KAAK,CAAC,MAAM,EAAE,6BAA6B,CAAC,OAAO,CAAC,CAAC,CAAA;IACvD,CAAC;CACF"}
@@ -0,0 +1,3 @@
1
+ import type { DataSource, EntityManager } from 'typeorm';
2
+ export declare function transaction<T>(dataSource: DataSource, runInTransaction: (entityManager: EntityManager) => Promise<T>): Promise<T>;
3
+ export declare function createTransactionManagerProxy(manager: EntityManager): EntityManager;
@@ -0,0 +1,23 @@
1
+ import { AsyncLocalStorage } from 'async_hooks';
2
+ const transactionStorage = new AsyncLocalStorage();
3
+ export async function transaction(dataSource, runInTransaction) {
4
+ return await dataSource.transaction(async (manager) => {
5
+ return await transactionStorage.run(manager, async () => {
6
+ return await runInTransaction(manager);
7
+ });
8
+ });
9
+ }
10
+ export function createTransactionManagerProxy(manager) {
11
+ return new Proxy(manager, {
12
+ get(target, prop) {
13
+ const manager = transactionStorage.getStore();
14
+ if (manager != null) {
15
+ return manager[prop];
16
+ }
17
+ else {
18
+ return target[prop];
19
+ }
20
+ }
21
+ });
22
+ }
23
+ //# sourceMappingURL=transaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction.js","sourceRoot":"","sources":["../lib/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAG/C,MAAM,kBAAkB,GAAG,IAAI,iBAAiB,EAAwB,CAAA;AAExE,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,UAAsB,EACtB,gBAA8D;IAE9D,OAAO,MAAM,UAAU,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACpD,OAAO,MAAM,kBAAkB,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;YACtD,OAAO,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAA;QACxC,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAE,OAAsB;IACnE,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE;QACxB,GAAG,CAAE,MAAM,EAAE,IAAI;YACf,MAAM,OAAO,GAAG,kBAAkB,CAAC,QAAQ,EAAE,CAAA;YAE7C,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;gBACpB,OAAO,OAAO,CAAC,IAAI,CAAY,CAAA;YACjC,CAAC;iBAAM,CAAC;gBACN,OAAO,MAAM,CAAC,IAAI,CAAY,CAAA;YAChC,CAAC;QACH,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
package/package.json ADDED
@@ -0,0 +1,36 @@
1
+ {
2
+ "name": "@wisemen/nestjs-typeorm",
3
+ "version": "0.0.1",
4
+ "main": "./dist/index.js",
5
+ "types": "./dist/index.d.ts",
6
+ "type": "module",
7
+ "files": [
8
+ "dist/"
9
+ ],
10
+ "scripts": {
11
+ "lint": "eslint lib",
12
+ "prebuild": "rm -rf ./dist",
13
+ "clean": "rm -rf ./dist",
14
+ "build": "tsc",
15
+ "pretest": "npm run clean && npm run build",
16
+ "test": "node --test",
17
+ "prerelease": "npm run build",
18
+ "release": "release-it"
19
+ },
20
+ "devDependencies": {
21
+ "@types/node": "^20.2.5",
22
+ "typescript": "^5.0.4"
23
+ },
24
+ "author": "Joren Vandeweyer",
25
+ "license": "GPL",
26
+ "repository": {
27
+ "type": "git",
28
+ "url": "git@github.com:appwise-labs/node-core.git"
29
+ },
30
+ "dependencies": {
31
+ "@nestjs/common": "^10.4.12",
32
+ "@nestjs/config": "^3.3.0",
33
+ "@nestjs/typeorm": "^10.0.2",
34
+ "typeorm": "^0.3.20"
35
+ }
36
+ }