@modular-rest/server 1.11.9 → 1.11.12
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/package.json +3 -3
- package/src/application.js +13 -10
- package/src/class/database_trigger.js +1 -1
- package/src/class/security.js +1 -1
- package/src/middlewares.js +1 -0
- package/src/services/data_provider/service.js +15 -6
- package/types/{src/class → class}/database_trigger.d.ts +9 -5
- package/types/{src/class → class}/security.d.ts +4 -4
- package/types/{src/services → services}/functions/service.d.ts +1 -1
- /package/types/{src/application.d.ts → application.d.ts} +0 -0
- /package/types/{src/class → class}/cms_trigger.d.ts +0 -0
- /package/types/{src/class → class}/collection_definition.d.ts +0 -0
- /package/types/{src/class → class}/combinator.d.ts +0 -0
- /package/types/{src/class → class}/db_schemas.d.ts +0 -0
- /package/types/{src/class → class}/directory.d.ts +0 -0
- /package/types/{src/class → class}/paginator.d.ts +0 -0
- /package/types/{src/class → class}/reply.d.ts +0 -0
- /package/types/{src/class → class}/trigger_operator.d.ts +0 -0
- /package/types/{src/class → class}/user.d.ts +0 -0
- /package/types/{src/class → class}/validator.d.ts +0 -0
- /package/types/{src/config.d.ts → config.d.ts} +0 -0
- /package/types/{src/events.d.ts → events.d.ts} +0 -0
- /package/types/{src/helper → helper}/data_insertion.d.ts +0 -0
- /package/types/{src/helper → helper}/presetup_services.d.ts +0 -0
- /package/types/{src/index.d.ts → index.d.ts} +0 -0
- /package/types/{src/middlewares.d.ts → middlewares.d.ts} +0 -0
- /package/types/{src/services → services}/data_provider/router.d.ts +0 -0
- /package/types/{src/services → services}/data_provider/service.d.ts +0 -0
- /package/types/{src/services → services}/data_provider/typeCasters.d.ts +0 -0
- /package/types/{src/services → services}/file/db.d.ts +0 -0
- /package/types/{src/services → services}/file/router.d.ts +0 -0
- /package/types/{src/services → services}/file/service.d.ts +0 -0
- /package/types/{src/services → services}/functions/router.d.ts +0 -0
- /package/types/{src/services → services}/jwt/router.d.ts +0 -0
- /package/types/{src/services → services}/jwt/service.d.ts +0 -0
- /package/types/{src/services → services}/user_manager/db.d.ts +0 -0
- /package/types/{src/services → services}/user_manager/permissionManager.d.ts +0 -0
- /package/types/{src/services → services}/user_manager/router.d.ts +0 -0
- /package/types/{src/services → services}/user_manager/service.d.ts +0 -0
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@modular-rest/server",
|
|
3
|
-
"version": "1.11.
|
|
3
|
+
"version": "1.11.12",
|
|
4
4
|
"description": "a nodejs module based on KOAJS for developing Rest-APIs in a modular solution.",
|
|
5
5
|
"main": "src/index.js",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"test": "echo \"Error: no test specified\" && exit 1",
|
|
8
8
|
"generate:types": "tsc"
|
|
9
9
|
},
|
|
10
|
-
"types": "./types/
|
|
10
|
+
"types": "./types/index.d.ts",
|
|
11
11
|
"repository": {
|
|
12
12
|
"type": "git",
|
|
13
13
|
"url": "git+https://github.com/modular-rest/modular-rest.git"
|
|
@@ -44,4 +44,4 @@
|
|
|
44
44
|
"@types/koa__cors": "^5.0.0",
|
|
45
45
|
"typescript": "^5.3.3"
|
|
46
46
|
}
|
|
47
|
-
}
|
|
47
|
+
}
|
package/src/application.js
CHANGED
|
@@ -18,7 +18,10 @@ const defaultServiceRoot = __dirname + "/services";
|
|
|
18
18
|
* @typedef {import('./class/cms_trigger.js')} CmsTrigger
|
|
19
19
|
*/
|
|
20
20
|
|
|
21
|
-
const {
|
|
21
|
+
const {
|
|
22
|
+
config,
|
|
23
|
+
setConfig
|
|
24
|
+
} = require("./config");
|
|
22
25
|
|
|
23
26
|
/**
|
|
24
27
|
* Create a modular REST instance with Koa and MongoDB support.
|
|
@@ -147,17 +150,10 @@ async function createRest(options) {
|
|
|
147
150
|
mongoOption: config.mongo,
|
|
148
151
|
});
|
|
149
152
|
|
|
150
|
-
// 3. Setting up default services
|
|
151
|
-
try {
|
|
152
|
-
await require("./helper/presetup_services").setup(options);
|
|
153
|
-
} catch (e) {
|
|
154
|
-
return Promise.reject(e);
|
|
155
|
-
}
|
|
156
|
-
|
|
157
153
|
/**
|
|
158
154
|
* User Services
|
|
159
155
|
*
|
|
160
|
-
* Plug in routes and database
|
|
156
|
+
* 3. Plug in routes and database
|
|
161
157
|
*/
|
|
162
158
|
if (config.modulesPath) {
|
|
163
159
|
// Plug in user routes
|
|
@@ -202,6 +198,13 @@ async function createRest(options) {
|
|
|
202
198
|
});
|
|
203
199
|
}
|
|
204
200
|
|
|
201
|
+
// 4. Setting up default services
|
|
202
|
+
try {
|
|
203
|
+
await require("./helper/presetup_services").setup(options);
|
|
204
|
+
} catch (e) {
|
|
205
|
+
return Promise.reject(e);
|
|
206
|
+
}
|
|
207
|
+
|
|
205
208
|
/**
|
|
206
209
|
* Run the server
|
|
207
210
|
*
|
|
@@ -233,4 +236,4 @@ async function createRest(options) {
|
|
|
233
236
|
});
|
|
234
237
|
}
|
|
235
238
|
|
|
236
|
-
module.exports = createRest;
|
|
239
|
+
module.exports = createRest;
|
|
@@ -8,7 +8,7 @@ class DatabaseTrigger {
|
|
|
8
8
|
* Creates a new instance of `DatabaseTrigger`.
|
|
9
9
|
*
|
|
10
10
|
* @param {'find' | 'find-one' | 'count' | 'update-one' | 'insert-one' | 'remove-one' | 'aggregate'} operation - The operation to be triggered. Supported operations are: 'find', 'find-one', 'count', 'update-one', 'insert-one', 'remove-one', 'aggregate'.
|
|
11
|
-
* @param {function({query:
|
|
11
|
+
* @param {function({query: Object.<string, any>, queryResult: any | any[]}): void} [callback=(context) => {}] - The callback to be called when the operation is executed. The callback function takes an object as parameter with two properties: 'query' and 'queryResult'.
|
|
12
12
|
* @constructor
|
|
13
13
|
*/
|
|
14
14
|
constructor(operation, callback = (context) => {}) {
|
package/src/class/security.js
CHANGED
|
@@ -17,7 +17,7 @@ class AccessDefinition {
|
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
/**
|
|
20
|
-
* @typedef {('user_access'|'upload_file_access'|'remove_file_access'|'anonymous_access'|'advanced_settings')} PermissionType
|
|
20
|
+
* @typedef {('god_access'|'user_access'|'upload_file_access'|'remove_file_access'|'anonymous_access'|'advanced_settings'|string)} PermissionType
|
|
21
21
|
*/
|
|
22
22
|
|
|
23
23
|
/**
|
package/src/middlewares.js
CHANGED
|
@@ -13,6 +13,7 @@ const userManager = require("./services/user_manager/service");
|
|
|
13
13
|
/**
|
|
14
14
|
* Authentication middleware
|
|
15
15
|
* It checks if incoming request has a valid token in header.authorization
|
|
16
|
+
* Then attaches the user object to ctx.state.user
|
|
16
17
|
*
|
|
17
18
|
* @param {Object} ctx - Koa context
|
|
18
19
|
* @param {Function} next - Koa next function
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
let name = "dataProvider";
|
|
2
2
|
const colog = require("colog");
|
|
3
|
-
let {
|
|
3
|
+
let {
|
|
4
|
+
AccessTypes,
|
|
5
|
+
AccessDefinition
|
|
6
|
+
} = require("../../class/security");
|
|
4
7
|
|
|
5
8
|
const Mongoose = require("mongoose");
|
|
6
9
|
Mongoose.set("useCreateIndex", true);
|
|
@@ -11,7 +14,9 @@ let permissionDefinitions = {};
|
|
|
11
14
|
|
|
12
15
|
let triggers = require("../../class/trigger_operator");
|
|
13
16
|
let TypeCasters = require("./typeCasters");
|
|
14
|
-
const {
|
|
17
|
+
const {
|
|
18
|
+
config
|
|
19
|
+
} = require("../../config");
|
|
15
20
|
|
|
16
21
|
/**
|
|
17
22
|
*
|
|
@@ -30,13 +35,14 @@ function connectToDatabaseByCollectionDefinitionList(
|
|
|
30
35
|
// Create db connection
|
|
31
36
|
//
|
|
32
37
|
const fullDbName = (mongoOption.dbPrefix || "") + dbName;
|
|
33
|
-
const connectionString = mongoOption.mongoBaseAddress
|
|
38
|
+
const connectionString = mongoOption.mongoBaseAddress;
|
|
34
39
|
|
|
35
|
-
colog.info(`- Connecting to database ${
|
|
40
|
+
colog.info(`- Connecting to database: ${fullDbName}`);
|
|
36
41
|
|
|
37
42
|
let connection = Mongoose.createConnection(connectionString, {
|
|
38
43
|
useUnifiedTopology: true,
|
|
39
44
|
useNewUrlParser: true,
|
|
45
|
+
dbName: fullDbName,
|
|
40
46
|
});
|
|
41
47
|
|
|
42
48
|
// Store connection
|
|
@@ -94,7 +100,10 @@ function connectToDatabaseByCollectionDefinitionList(
|
|
|
94
100
|
* @param {string} option.mongoOption.dbPrefix
|
|
95
101
|
* @param {string} option.mongoOption.mongoBaseAddress
|
|
96
102
|
*/
|
|
97
|
-
async function addCollectionDefinitionByList({
|
|
103
|
+
async function addCollectionDefinitionByList({
|
|
104
|
+
list,
|
|
105
|
+
mongoOption
|
|
106
|
+
}) {
|
|
98
107
|
let clusteredByDBName = {};
|
|
99
108
|
|
|
100
109
|
// cluster list by their database name.
|
|
@@ -250,4 +259,4 @@ module.exports = {
|
|
|
250
259
|
performAdditionalOptionsToQueryObject,
|
|
251
260
|
triggers,
|
|
252
261
|
TypeCasters,
|
|
253
|
-
};
|
|
262
|
+
};
|
|
@@ -9,16 +9,20 @@ declare class DatabaseTrigger {
|
|
|
9
9
|
* Creates a new instance of `DatabaseTrigger`.
|
|
10
10
|
*
|
|
11
11
|
* @param {'find' | 'find-one' | 'count' | 'update-one' | 'insert-one' | 'remove-one' | 'aggregate'} operation - The operation to be triggered. Supported operations are: 'find', 'find-one', 'count', 'update-one', 'insert-one', 'remove-one', 'aggregate'.
|
|
12
|
-
* @param {function({query:
|
|
12
|
+
* @param {function({query: Object.<string, any>, queryResult: any | any[]}): void} [callback=(context) => {}] - The callback to be called when the operation is executed. The callback function takes an object as parameter with two properties: 'query' and 'queryResult'.
|
|
13
13
|
* @constructor
|
|
14
14
|
*/
|
|
15
15
|
constructor(operation: 'find' | 'find-one' | 'count' | 'update-one' | 'insert-one' | 'remove-one' | 'aggregate', callback?: (arg0: {
|
|
16
|
-
query:
|
|
17
|
-
|
|
16
|
+
query: {
|
|
17
|
+
[x: string]: any;
|
|
18
|
+
};
|
|
19
|
+
queryResult: any | any[];
|
|
18
20
|
}) => void);
|
|
19
21
|
operation: "find" | "count" | "aggregate" | "find-one" | "update-one" | "insert-one" | "remove-one";
|
|
20
22
|
callback: (arg0: {
|
|
21
|
-
query:
|
|
22
|
-
|
|
23
|
+
query: {
|
|
24
|
+
[x: string]: any;
|
|
25
|
+
};
|
|
26
|
+
queryResult: any | any[];
|
|
23
27
|
}) => void;
|
|
24
28
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type PermissionType = ('user_access' | 'upload_file_access' | 'remove_file_access' | 'anonymous_access' | 'advanced_settings');
|
|
1
|
+
export type PermissionType = ('god_access' | 'user_access' | 'upload_file_access' | 'remove_file_access' | 'anonymous_access' | 'advanced_settings' | string);
|
|
2
2
|
/**
|
|
3
3
|
* Class representing an access definition.
|
|
4
4
|
*/
|
|
@@ -20,7 +20,7 @@ export class AccessDefinition {
|
|
|
20
20
|
permissionList: Permission[];
|
|
21
21
|
}
|
|
22
22
|
/**
|
|
23
|
-
* @typedef {('user_access'|'upload_file_access'|'remove_file_access'|'anonymous_access'|'advanced_settings')} PermissionType
|
|
23
|
+
* @typedef {('god_access'|'user_access'|'upload_file_access'|'remove_file_access'|'anonymous_access'|'advanced_settings'|string)} PermissionType
|
|
24
24
|
*/
|
|
25
25
|
/**
|
|
26
26
|
* Class representing a permission.
|
|
@@ -42,7 +42,7 @@ export class Permission {
|
|
|
42
42
|
onlyOwnData?: boolean;
|
|
43
43
|
ownerIdField?: string;
|
|
44
44
|
});
|
|
45
|
-
type:
|
|
45
|
+
type: string;
|
|
46
46
|
read: boolean;
|
|
47
47
|
write: boolean;
|
|
48
48
|
onlyOwnData: boolean;
|
|
@@ -98,7 +98,7 @@ export class PermissionGroup {
|
|
|
98
98
|
title: string;
|
|
99
99
|
isDefault: boolean;
|
|
100
100
|
isAnonymous: boolean;
|
|
101
|
-
validPermissionTypes:
|
|
101
|
+
validPermissionTypes: string[];
|
|
102
102
|
}
|
|
103
103
|
/**
|
|
104
104
|
* Class representing access types.
|
|
@@ -16,7 +16,7 @@ export function defineFunction({ name, permissionTypes, callback }: {
|
|
|
16
16
|
callback: Function;
|
|
17
17
|
}): {
|
|
18
18
|
name: string;
|
|
19
|
-
permissionTypes: [
|
|
19
|
+
permissionTypes: [string];
|
|
20
20
|
callback: Function;
|
|
21
21
|
};
|
|
22
22
|
export function runFunction(name: any, args: any, user: any): Promise<any>;
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|