@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 +0 -0
- package/dist/create-providers.d.ts +5 -0
- package/dist/create-providers.js +20 -0
- package/dist/create-providers.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/module.d.ts +7 -0
- package/dist/module.js +28 -0
- package/dist/module.js.map +1 -0
- package/dist/repository.d.ts +4 -0
- package/dist/repository.js +8 -0
- package/dist/repository.js.map +1 -0
- package/dist/transaction.d.ts +3 -0
- package/dist/transaction.js +23 -0
- package/dist/transaction.js.map +1 -0
- package/package.json +36 -0
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"}
|
package/dist/index.d.ts
ADDED
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"}
|
package/dist/module.d.ts
ADDED
|
@@ -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,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
|
+
}
|