mongodb-dynamic-api 2.3.8 → 2.3.10
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/CHANGELOG.md +4 -0
- package/package.json +4 -1
- package/src/dynamic-api.module.js +6 -10
- package/src/dynamic-api.module.js.map +1 -1
- package/src/helpers/swagger-config.helper.js +1 -1
- package/src/helpers/swagger-config.helper.js.map +1 -1
- package/src/version.json +1 -1
- package/test/dynamic-api-for-root.e2e-spec.d.ts +1 -0
- package/test/dynamic-api-for-root.e2e-spec.js +93 -0
- package/test/dynamic-api-for-root.e2e-spec.js.map +1 -0
- package/test/e2e.setup.d.ts +10 -0
- package/test/e2e.setup.js +64 -0
- package/test/e2e.setup.js.map +1 -0
- package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
Changelog
|
|
2
2
|
|
|
3
|
+
## [2.3.10](https://github.com/MikeDev75015/mongodb-dynamic-api/compare/v2.3.9...v2.3.10) (2024-05-11)
|
|
4
|
+
|
|
5
|
+
## [2.3.9](https://github.com/MikeDev75015/mongodb-dynamic-api/compare/v2.3.8...v2.3.9) (2024-05-09)
|
|
6
|
+
|
|
3
7
|
## [2.3.8](https://github.com/MikeDev75015/mongodb-dynamic-api/compare/v2.3.7...v2.3.8) (2024-05-08)
|
|
4
8
|
|
|
5
9
|
## [2.3.7](https://github.com/MikeDev75015/mongodb-dynamic-api/compare/v2.3.6...v2.3.7) (2024-05-08)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mongodb-dynamic-api",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.10",
|
|
4
4
|
"description": "Auto generated CRUD API for MongoDB using NestJS",
|
|
5
5
|
"readmeFilename": "README.md",
|
|
6
6
|
"main": "index.js",
|
|
@@ -12,6 +12,8 @@
|
|
|
12
12
|
"lint": "tslint -p tsconfig.json -c tslint.json",
|
|
13
13
|
"test": "jest --runInBand",
|
|
14
14
|
"test-cov": "jest --runInBand --coverage",
|
|
15
|
+
"test-e2e": "jest --runInBand --config ./libs/dynamic-api/test/jest-e2e.json",
|
|
16
|
+
"test-e2e:ci": "jest --ci --runInBand --config ./libs/dynamic-api/test/jest-e2e.json",
|
|
15
17
|
"test:ci:junit": "jest --ci --runInBand --coverage --testResultsProcessor=jest-junit",
|
|
16
18
|
"test:ci:sonar": "jest --ci --runInBand --coverage --testResultsProcessor=jest-sonar-reporter",
|
|
17
19
|
"pre-release-tag": "git tag -f prerelease && git push -f origin prerelease",
|
|
@@ -52,6 +54,7 @@
|
|
|
52
54
|
"cache-manager": "^5.4.0",
|
|
53
55
|
"class-transformer": "^0.5.1",
|
|
54
56
|
"class-validator": "^0.14.1",
|
|
57
|
+
"dotenv": "^16.4.5",
|
|
55
58
|
"lodash": "^4.17.21",
|
|
56
59
|
"mongoose": "^8.1.1",
|
|
57
60
|
"passport": "^0.7.0",
|
|
@@ -13,7 +13,6 @@ const common_1 = require("@nestjs/common");
|
|
|
13
13
|
const core_1 = require("@nestjs/core");
|
|
14
14
|
const http_adapter_host_1 = require("@nestjs/core/helpers/http-adapter-host");
|
|
15
15
|
const mongoose_1 = require("@nestjs/mongoose");
|
|
16
|
-
const rxjs_1 = require("rxjs");
|
|
17
16
|
const guards_1 = require("./guards");
|
|
18
17
|
const helpers_1 = require("./helpers");
|
|
19
18
|
const interceptors_1 = require("./interceptors");
|
|
@@ -43,20 +42,21 @@ let DynamicApiModule = DynamicApiModule_1 = class DynamicApiModule {
|
|
|
43
42
|
exports: [modules_1.DynamicApiConfigModule],
|
|
44
43
|
};
|
|
45
44
|
}
|
|
46
|
-
static forFeature({ entity, controllerOptions, routes
|
|
45
|
+
static forFeature({ entity, controllerOptions, routes, }) {
|
|
47
46
|
const schema = (0, helpers_1.buildSchemaFromEntity)(entity);
|
|
48
47
|
const databaseModule = mongoose_1.MongooseModule.forFeature([{ name: entity.name, schema }], this.state.get('connectionName'));
|
|
49
48
|
services_1.DynamicApiGlobalStateService.addEntitySchema(entity, schema);
|
|
50
49
|
return new Promise((resolve, reject) => {
|
|
51
|
-
const
|
|
52
|
-
|
|
50
|
+
const waitForState = setTimeout(() => {
|
|
51
|
+
reject(new Error('Dynamic API state could not be initialized. Please check your configuration.'));
|
|
52
|
+
}, 5000);
|
|
53
|
+
services_1.DynamicApiGlobalStateService.onInitialized().subscribe((stateInitialized) => {
|
|
53
54
|
if (!stateInitialized) {
|
|
54
55
|
return;
|
|
55
56
|
}
|
|
56
57
|
if (waitForState) {
|
|
57
58
|
clearTimeout(waitForState);
|
|
58
59
|
}
|
|
59
|
-
clearInterval(waitInitializedStateInterval);
|
|
60
60
|
const { version: controllerVersion, validationPipeOptions: controllerValidationPipeOptions, routesConfig: controllerRoutesConfig, } = controllerOptions;
|
|
61
61
|
const castType = (t) => t;
|
|
62
62
|
const castModule = (m) => m;
|
|
@@ -109,11 +109,7 @@ let DynamicApiModule = DynamicApiModule_1 = class DynamicApiModule {
|
|
|
109
109
|
],
|
|
110
110
|
};
|
|
111
111
|
resolve(apiModule);
|
|
112
|
-
}
|
|
113
|
-
const waitForState = setTimeout(() => {
|
|
114
|
-
clearInterval(waitInitializedStateInterval);
|
|
115
|
-
reject(new Error('Dynamic API state could not be initialized. Please check your configuration.'));
|
|
116
|
-
}, 5000);
|
|
112
|
+
});
|
|
117
113
|
});
|
|
118
114
|
}
|
|
119
115
|
static buildStateFromOptions(uri, useGlobalCache, cacheOptions, useAuth, routesConfig) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dynamic-api.module.js","sourceRoot":"","sources":["../../libs/dynamic-api/src/dynamic-api.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,yDAAmE;AACnE,2CAAuD;AACvD,uCAAqE;AACrE,8EAAyE;AACzE,+CAAkD;AAElD
|
|
1
|
+
{"version":3,"file":"dynamic-api.module.js","sourceRoot":"","sources":["../../libs/dynamic-api/src/dynamic-api.module.ts"],"names":[],"mappings":"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"}
|
|
@@ -95,7 +95,7 @@ function buildExtraConfig(config, swaggerConfig) {
|
|
|
95
95
|
}
|
|
96
96
|
});
|
|
97
97
|
}
|
|
98
|
-
function enableDynamicAPISwagger(app, options
|
|
98
|
+
function enableDynamicAPISwagger(app, options) {
|
|
99
99
|
const versionFile = require('../version.json');
|
|
100
100
|
const { title = 'MongoDB Dynamic API', description = 'Auto generated CRUD for MongoDB', version = (version_json_1.default ?? versionFile)?.version, path = '/dynamic-api', swaggerExtraConfig, swaggerDocumentOptions, } = options ?? {};
|
|
101
101
|
const config = new swagger_1.DocumentBuilder()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"swagger-config.helper.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/helpers/swagger-config.helper.ts"],"names":[],"mappings":";;;AACA,6CAAiE;AAEjE,kDAAuC;AAEvC,SAAS,gBAAgB,CACvB,MAAuB,EACvB,aAA2C;IAE3C,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QACzC,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;QAEjC,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,gBAAgB;gBACnB,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;gBAChC,MAAM;YAER,KAAK,SAAS;gBACZ,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;gBACtD,MAAM;YAER,KAAK,SAAS;gBACZ,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;gBACzC,MAAM;YAER,KAAK,SAAS;gBACZ,KAAK,CAAC,OAAO,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"swagger-config.helper.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/helpers/swagger-config.helper.ts"],"names":[],"mappings":"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"}
|
package/src/version.json
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import 'dotenv/config';
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const testing_1 = require("@nestjs/testing");
|
|
4
|
+
const src_1 = require("../src");
|
|
5
|
+
const e2e_setup_1 = require("./e2e.setup");
|
|
6
|
+
require("dotenv/config");
|
|
7
|
+
describe('DynamicApiModule forRoot (e2e)', () => {
|
|
8
|
+
let app;
|
|
9
|
+
const uri = process.env.MONGO_DB_URL;
|
|
10
|
+
class UserEntity extends src_1.BaseEntity {
|
|
11
|
+
}
|
|
12
|
+
afterEach(async () => {
|
|
13
|
+
await (0, e2e_setup_1.closeTestingApp)();
|
|
14
|
+
});
|
|
15
|
+
it('should initialize dynamic api module state with default options', async () => {
|
|
16
|
+
const moduleRef = await testing_1.Test.createTestingModule({
|
|
17
|
+
imports: [src_1.DynamicApiModule.forRoot(uri)],
|
|
18
|
+
}).compile();
|
|
19
|
+
app = await (0, e2e_setup_1.createTestingApp)(moduleRef);
|
|
20
|
+
expect(app).toBeDefined();
|
|
21
|
+
expect(src_1.DynamicApiModule.state.get()).toStrictEqual({
|
|
22
|
+
uri,
|
|
23
|
+
initialized: true,
|
|
24
|
+
isGlobalCacheEnabled: true,
|
|
25
|
+
connectionName: 'dynamic-api-connection',
|
|
26
|
+
cacheExcludedPaths: [],
|
|
27
|
+
credentials: null,
|
|
28
|
+
isAuthEnabled: false,
|
|
29
|
+
jwtSecret: undefined,
|
|
30
|
+
routesConfig: {
|
|
31
|
+
defaults: [
|
|
32
|
+
'GetMany',
|
|
33
|
+
'GetOne',
|
|
34
|
+
'CreateMany',
|
|
35
|
+
'CreateOne',
|
|
36
|
+
'UpdateMany',
|
|
37
|
+
'UpdateOne',
|
|
38
|
+
'ReplaceOne',
|
|
39
|
+
'DuplicateMany',
|
|
40
|
+
'DuplicateOne',
|
|
41
|
+
'DeleteMany',
|
|
42
|
+
'DeleteOne',
|
|
43
|
+
],
|
|
44
|
+
excluded: [],
|
|
45
|
+
},
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
it('should initialize dynamic api module state with custom options', async () => {
|
|
49
|
+
const dynamicApiForRootOptions = {
|
|
50
|
+
useGlobalCache: false,
|
|
51
|
+
cacheOptions: {
|
|
52
|
+
excludePaths: ['/fake-path'],
|
|
53
|
+
},
|
|
54
|
+
useAuth: {
|
|
55
|
+
userEntity: UserEntity,
|
|
56
|
+
login: {
|
|
57
|
+
loginField: 'login',
|
|
58
|
+
passwordField: 'pass',
|
|
59
|
+
},
|
|
60
|
+
jwt: {
|
|
61
|
+
secret: 'custom-secret',
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
routesConfig: {
|
|
65
|
+
defaults: ['GetMany', 'GetOne', 'CreateOne', 'UpdateOne', 'DeleteOne'],
|
|
66
|
+
excluded: ['CreateMany', 'UpdateMany', 'DeleteMany'],
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
const moduleRef = await testing_1.Test.createTestingModule({
|
|
70
|
+
imports: [src_1.DynamicApiModule.forRoot(uri, dynamicApiForRootOptions)],
|
|
71
|
+
}).compile();
|
|
72
|
+
app = await (0, e2e_setup_1.createTestingApp)(moduleRef);
|
|
73
|
+
expect(app).toBeDefined();
|
|
74
|
+
expect(src_1.DynamicApiModule.state.get()).toStrictEqual({
|
|
75
|
+
uri,
|
|
76
|
+
initialized: true,
|
|
77
|
+
isGlobalCacheEnabled: false,
|
|
78
|
+
connectionName: 'dynamic-api-connection',
|
|
79
|
+
cacheExcludedPaths: ['/fake-path'],
|
|
80
|
+
credentials: {
|
|
81
|
+
loginField: 'login',
|
|
82
|
+
passwordField: 'pass',
|
|
83
|
+
},
|
|
84
|
+
isAuthEnabled: true,
|
|
85
|
+
jwtSecret: 'custom-secret',
|
|
86
|
+
routesConfig: {
|
|
87
|
+
defaults: ['GetMany', 'GetOne', 'CreateOne', 'UpdateOne', 'DeleteOne'],
|
|
88
|
+
excluded: ['CreateMany', 'UpdateMany', 'DeleteMany'],
|
|
89
|
+
},
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
//# sourceMappingURL=dynamic-api-for-root.e2e-spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dynamic-api-for-root.e2e-spec.js","sourceRoot":"","sources":["../../libs/dynamic-api/test/dynamic-api-for-root.e2e-spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { TestingModule } from '@nestjs/testing';
|
|
2
|
+
export declare function createTestingApp(moduleRef: TestingModule, initMainCb?: (app: any) => Promise<void>): Promise<import("@nestjs/common").INestApplication<any>>;
|
|
3
|
+
export declare function closeTestingApp(): Promise<void>;
|
|
4
|
+
export declare const server: {
|
|
5
|
+
get: (path: string) => Promise<any>;
|
|
6
|
+
post: (path: string, body: any) => Promise<any>;
|
|
7
|
+
patch: (path: string, body: any) => Promise<any>;
|
|
8
|
+
put: (path: string, body: any) => Promise<any>;
|
|
9
|
+
delete: (path: string) => Promise<any>;
|
|
10
|
+
};
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.server = exports.closeTestingApp = exports.createTestingApp = void 0;
|
|
4
|
+
async function createTestingApp(moduleRef, initMainCb) {
|
|
5
|
+
global.app = moduleRef.createNestApplication();
|
|
6
|
+
if (initMainCb) {
|
|
7
|
+
await initMainCb(global.app);
|
|
8
|
+
}
|
|
9
|
+
return global.app.init();
|
|
10
|
+
}
|
|
11
|
+
exports.createTestingApp = createTestingApp;
|
|
12
|
+
const verifyApp = () => {
|
|
13
|
+
if (!global.app) {
|
|
14
|
+
throw new Error('App is not initialized');
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
async function closeTestingApp() {
|
|
18
|
+
if (!global.app) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
await global.app.close();
|
|
22
|
+
}
|
|
23
|
+
exports.closeTestingApp = closeTestingApp;
|
|
24
|
+
exports.server = {
|
|
25
|
+
get: async (path) => {
|
|
26
|
+
verifyApp();
|
|
27
|
+
return await global.app.getHttpServer()({
|
|
28
|
+
method: 'GET',
|
|
29
|
+
url: path,
|
|
30
|
+
});
|
|
31
|
+
},
|
|
32
|
+
post: async (path, body) => {
|
|
33
|
+
verifyApp();
|
|
34
|
+
return await global.app.getHttpServer()({
|
|
35
|
+
method: 'POST',
|
|
36
|
+
url: path,
|
|
37
|
+
payload: body,
|
|
38
|
+
});
|
|
39
|
+
},
|
|
40
|
+
patch: async (path, body) => {
|
|
41
|
+
verifyApp();
|
|
42
|
+
return await global.app.getHttpServer()({
|
|
43
|
+
method: 'PATCH',
|
|
44
|
+
url: path,
|
|
45
|
+
payload: body,
|
|
46
|
+
});
|
|
47
|
+
},
|
|
48
|
+
put: async (path, body) => {
|
|
49
|
+
verifyApp();
|
|
50
|
+
return await global.app.getHttpServer()({
|
|
51
|
+
method: 'PUT',
|
|
52
|
+
url: path,
|
|
53
|
+
payload: body,
|
|
54
|
+
});
|
|
55
|
+
},
|
|
56
|
+
delete: async (path) => {
|
|
57
|
+
verifyApp();
|
|
58
|
+
return await global.app.getHttpServer()({
|
|
59
|
+
method: 'DELETE',
|
|
60
|
+
url: path,
|
|
61
|
+
});
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
//# sourceMappingURL=e2e.setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"e2e.setup.js","sourceRoot":"","sources":["../../libs/dynamic-api/test/e2e.setup.ts"],"names":[],"mappings":";;;AAEO,KAAK,UAAU,gBAAgB,CACpC,SAAwB,EACxB,UAAwC;IAExC,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC;IAE/C,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;AAC3B,CAAC;AAXD,4CAWC;AAED,MAAM,SAAS,GAAG,GAAG,EAAE;IACrB,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC,CAAC;AAEK,KAAK,UAAU,eAAe;IACnC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QAChB,OAAO;IACT,CAAC;IAED,MAAM,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;AAC3B,CAAC;AAND,0CAMC;AAEY,QAAA,MAAM,GAAG;IACpB,GAAG,EAAE,KAAK,EAAE,IAAY,EAAgB,EAAE;QACxC,SAAS,EAAE,CAAC;QACZ,OAAO,MAAM,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;YACtC,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,IAAI;SACV,CAAC,CAAC;IACL,CAAC;IACD,IAAI,EAAE,KAAK,EAAE,IAAY,EAAE,IAAS,EAAgB,EAAE;QACpD,SAAS,EAAE,CAAC;QACZ,OAAO,MAAM,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;YACtC,MAAM,EAAE,MAAM;YACd,GAAG,EAAE,IAAI;YACT,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;IACL,CAAC;IACD,KAAK,EAAE,KAAK,EAAE,IAAY,EAAE,IAAS,EAAgB,EAAE;QACrD,SAAS,EAAE,CAAC;QACZ,OAAO,MAAM,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;YACtC,MAAM,EAAE,OAAO;YACf,GAAG,EAAE,IAAI;YACT,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;IACL,CAAC;IACD,GAAG,EAAE,KAAK,EAAE,IAAY,EAAE,IAAS,EAAgB,EAAE;QACnD,SAAS,EAAE,CAAC;QACZ,OAAO,MAAM,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;YACtC,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,IAAI;YACT,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;IACL,CAAC;IACD,MAAM,EAAE,KAAK,EAAE,IAAY,EAAgB,EAAE;QAC3C,SAAS,EAAE,CAAC;QACZ,OAAO,MAAM,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;YACtC,MAAM,EAAE,QAAQ;YAChB,GAAG,EAAE,IAAI;SACV,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
|