@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.
Files changed (39) hide show
  1. package/package.json +3 -3
  2. package/src/application.js +13 -10
  3. package/src/class/database_trigger.js +1 -1
  4. package/src/class/security.js +1 -1
  5. package/src/middlewares.js +1 -0
  6. package/src/services/data_provider/service.js +15 -6
  7. package/types/{src/class → class}/database_trigger.d.ts +9 -5
  8. package/types/{src/class → class}/security.d.ts +4 -4
  9. package/types/{src/services → services}/functions/service.d.ts +1 -1
  10. /package/types/{src/application.d.ts → application.d.ts} +0 -0
  11. /package/types/{src/class → class}/cms_trigger.d.ts +0 -0
  12. /package/types/{src/class → class}/collection_definition.d.ts +0 -0
  13. /package/types/{src/class → class}/combinator.d.ts +0 -0
  14. /package/types/{src/class → class}/db_schemas.d.ts +0 -0
  15. /package/types/{src/class → class}/directory.d.ts +0 -0
  16. /package/types/{src/class → class}/paginator.d.ts +0 -0
  17. /package/types/{src/class → class}/reply.d.ts +0 -0
  18. /package/types/{src/class → class}/trigger_operator.d.ts +0 -0
  19. /package/types/{src/class → class}/user.d.ts +0 -0
  20. /package/types/{src/class → class}/validator.d.ts +0 -0
  21. /package/types/{src/config.d.ts → config.d.ts} +0 -0
  22. /package/types/{src/events.d.ts → events.d.ts} +0 -0
  23. /package/types/{src/helper → helper}/data_insertion.d.ts +0 -0
  24. /package/types/{src/helper → helper}/presetup_services.d.ts +0 -0
  25. /package/types/{src/index.d.ts → index.d.ts} +0 -0
  26. /package/types/{src/middlewares.d.ts → middlewares.d.ts} +0 -0
  27. /package/types/{src/services → services}/data_provider/router.d.ts +0 -0
  28. /package/types/{src/services → services}/data_provider/service.d.ts +0 -0
  29. /package/types/{src/services → services}/data_provider/typeCasters.d.ts +0 -0
  30. /package/types/{src/services → services}/file/db.d.ts +0 -0
  31. /package/types/{src/services → services}/file/router.d.ts +0 -0
  32. /package/types/{src/services → services}/file/service.d.ts +0 -0
  33. /package/types/{src/services → services}/functions/router.d.ts +0 -0
  34. /package/types/{src/services → services}/jwt/router.d.ts +0 -0
  35. /package/types/{src/services → services}/jwt/service.d.ts +0 -0
  36. /package/types/{src/services → services}/user_manager/db.d.ts +0 -0
  37. /package/types/{src/services → services}/user_manager/permissionManager.d.ts +0 -0
  38. /package/types/{src/services → services}/user_manager/router.d.ts +0 -0
  39. /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.9",
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/src/index.d.ts",
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
+ }
@@ -18,7 +18,10 @@ const defaultServiceRoot = __dirname + "/services";
18
18
  * @typedef {import('./class/cms_trigger.js')} CmsTrigger
19
19
  */
20
20
 
21
- const { config, setConfig } = require("./config");
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: any, queryResult: 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'.
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) => {}) {
@@ -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
  /**
@@ -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 { AccessTypes, AccessDefinition } = require("../../class/security");
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 { config } = require("../../config");
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 + "/" + fullDbName;
38
+ const connectionString = mongoOption.mongoBaseAddress;
34
39
 
35
- colog.info(`- Connecting to database ${connectionString}`);
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({ list, mongoOption }) {
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: any, queryResult: 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
+ * @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: any;
17
- queryResult: any;
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: any;
22
- queryResult: any;
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: PermissionType;
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: PermissionType[];
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: [import("../../class/security.js").PermissionType];
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