owservable 0.4.8 → 0.6.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 +17 -5
- package/lib/_types/observer.type.d.ts +5 -0
- package/lib/_types/observer.type.js +3 -0
- package/lib/_types/observer.type.js.map +1 -0
- package/lib/functions/get.subfolder.paths.by.folder.name.d.ts +2 -0
- package/lib/functions/get.subfolder.paths.by.folder.name.js +20 -0
- package/lib/functions/get.subfolder.paths.by.folder.name.js.map +1 -0
- package/lib/functions/initiate.cronjobs.d.ts +1 -1
- package/lib/functions/initiate.cronjobs.js +16 -14
- package/lib/functions/initiate.cronjobs.js.map +1 -1
- package/lib/functions/initiate.observers.d.ts +2 -0
- package/lib/functions/initiate.observers.js +27 -0
- package/lib/functions/initiate.observers.js.map +1 -0
- package/lib/functions/initiate.workers.d.ts +1 -1
- package/lib/functions/initiate.workers.js +16 -14
- package/lib/functions/initiate.workers.js.map +1 -1
- package/lib/mongodb/functions/process.models.d.ts +1 -1
- package/lib/mongodb/functions/process.models.js +11 -6
- package/lib/mongodb/functions/process.models.js.map +1 -1
- package/lib/owservable.d.ts +4 -1
- package/lib/owservable.js +5 -1
- package/lib/owservable.js.map +1 -1
- package/lib/routing/functions/add.fastify.routes.d.ts +1 -1
- package/lib/routing/functions/add.fastify.routes.js +9 -3
- package/lib/routing/functions/add.fastify.routes.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -48,13 +48,23 @@ This is a map of all defined Data Middleware methods.
|
|
|
48
48
|
A Data Middleware is tied to a store scope ```'count' | 'one' | 'many'``` and collection name and is used to modify an observed payload if necessary. For example, if based on users
|
|
49
49
|
access permissions a portion of the payload needs to be removed or replaced, etc.
|
|
50
50
|
|
|
51
|
-
###
|
|
51
|
+
### initiateObservers
|
|
52
|
+
|
|
53
|
+
Method that initiates all observers. Takes the project root folder path and a global folder name for the observers.
|
|
52
54
|
|
|
53
|
-
|
|
55
|
+
Observers can either perform simple tasks or add jobs to a queue, to be processed by the workers.
|
|
54
56
|
|
|
55
57
|
### initiateCronjobs
|
|
56
58
|
|
|
57
|
-
Method that initiates all cronjobs. Takes folder path
|
|
59
|
+
Method that initiates all cronjobs. Takes the project root folder path and a global folder name for the cronjobs.
|
|
60
|
+
|
|
61
|
+
Cronjobs can either perform simple tasks or add jobs to a queue, to be processed by the workers.
|
|
62
|
+
|
|
63
|
+
### initiateWorkers
|
|
64
|
+
|
|
65
|
+
Method that initiates all workers. Takes the project root folder path and a global folder name for the workers.
|
|
66
|
+
|
|
67
|
+
Workers can either perform simple tasks or take jobs from a queue.
|
|
58
68
|
|
|
59
69
|
## MongoDB
|
|
60
70
|
|
|
@@ -64,7 +74,8 @@ A MongoDB database connector class, used to initialize the database collection w
|
|
|
64
74
|
|
|
65
75
|
### processModels
|
|
66
76
|
|
|
67
|
-
This method parses all models and adds them to the ```CollectionsModelsMap``` if they pass validation. The method takes the folder path
|
|
77
|
+
This method parses all models and adds them to the ```CollectionsModelsMap``` if they pass validation. The method takes the project root folder path and a global folder name for
|
|
78
|
+
the models and an optional folder name(
|
|
68
79
|
s) to exclude, for example ```mixins``` and similar.
|
|
69
80
|
|
|
70
81
|
### CollectionsModelsMap
|
|
@@ -94,7 +105,7 @@ This is a map of all available routes. It is populated automatically during the
|
|
|
94
105
|
|
|
95
106
|
### addFastifyRoutes
|
|
96
107
|
|
|
97
|
-
This method adds all routes to fastify automatically. It requires as parameters a fastify instance and
|
|
108
|
+
This method adds all routes to fastify automatically. It requires as parameters a fastify instance, the project root folder path and a global folder name for the routes.
|
|
98
109
|
|
|
99
110
|
### cleanRelativePath
|
|
100
111
|
|
|
@@ -132,6 +143,7 @@ These types are self explanatory.
|
|
|
132
143
|
|
|
133
144
|
- CronJobType
|
|
134
145
|
- WorkerType
|
|
146
|
+
- ObserverType
|
|
135
147
|
- StoreScopeType
|
|
136
148
|
- StoreSubscriptionConfigType
|
|
137
149
|
- StoreSubscriptionUpdateType
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observer.type.js","sourceRoot":"","sources":["../../src/_types/observer.type.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const fs = require("fs");
|
|
4
|
+
const path = require("path");
|
|
5
|
+
const lodash_1 = require("lodash");
|
|
6
|
+
const getSubfolderPathsByFolderName = (root, name) => {
|
|
7
|
+
let folders = [];
|
|
8
|
+
const subfolderNames = fs.readdirSync(root);
|
|
9
|
+
const subfolders = (0, lodash_1.filter)(subfolderNames, (subfolderName) => fs.lstatSync(path.join(root, subfolderName)).isDirectory());
|
|
10
|
+
(0, lodash_1.each)(subfolders, (subfolder) => {
|
|
11
|
+
const fullPath = path.join(root, subfolder);
|
|
12
|
+
if (name === subfolder)
|
|
13
|
+
folders.push(fullPath);
|
|
14
|
+
else
|
|
15
|
+
folders = (0, lodash_1.concat)(folders, getSubfolderPathsByFolderName(fullPath, name));
|
|
16
|
+
});
|
|
17
|
+
return folders;
|
|
18
|
+
};
|
|
19
|
+
exports.default = getSubfolderPathsByFolderName;
|
|
20
|
+
//# sourceMappingURL=get.subfolder.paths.by.folder.name.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get.subfolder.paths.by.folder.name.js","sourceRoot":"","sources":["../../src/functions/get.subfolder.paths.by.folder.name.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,yBAAyB;AACzB,6BAA6B;AAE7B,mCAA4C;AAE5C,MAAM,6BAA6B,GAAG,CAAC,IAAY,EAAE,IAAY,EAAY,EAAE;IAC9E,IAAI,OAAO,GAAa,EAAE,CAAC;IAE3B,MAAM,cAAc,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG,IAAA,eAAM,EAAC,cAAc,EAAE,CAAC,aAAqB,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IAEjI,IAAA,aAAI,EAAC,UAAU,EAAE,CAAC,SAAS,EAAE,EAAE;QAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC5C,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;;YAC1C,OAAO,GAAG,IAAA,eAAM,EAAC,OAAO,EAAE,6BAA6B,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AAChB,CAAC,CAAC;AACF,kBAAe,6BAA6B,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare const initiateCronjobs: (
|
|
1
|
+
declare const initiateCronjobs: (root: string, name?: string) => void;
|
|
2
2
|
export default initiateCronjobs;
|
|
@@ -4,23 +4,25 @@ const fs = require("fs");
|
|
|
4
4
|
const path = require("path");
|
|
5
5
|
const lodash_1 = require("lodash");
|
|
6
6
|
const cron = require("node-cron");
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
cron.schedule(schedule, job, options);
|
|
13
|
-
};
|
|
14
|
-
const initiateCronjobs = (folder) => {
|
|
15
|
-
const fileNames = fs.readdirSync(folder);
|
|
16
|
-
const files = (0, lodash_1.filter)(fileNames, (name) => !fs.lstatSync(path.join(folder, name)).isDirectory());
|
|
17
|
-
files.forEach((file) => {
|
|
7
|
+
const get_subfolder_paths_by_folder_name_1 = require("./get.subfolder.paths.by.folder.name");
|
|
8
|
+
const _initiateCronjobs = (folder) => {
|
|
9
|
+
const subfolderNames = fs.readdirSync(folder);
|
|
10
|
+
const files = (0, lodash_1.filter)(subfolderNames, (name) => !fs.lstatSync(path.join(folder, name)).isDirectory());
|
|
11
|
+
(0, lodash_1.each)(files, (file) => {
|
|
18
12
|
const absoluteFilePath = path.join(folder, file);
|
|
19
13
|
const cronjob = require(absoluteFilePath).default;
|
|
20
|
-
|
|
14
|
+
const { schedule, job, options, init } = cronjob;
|
|
15
|
+
if ((0, lodash_1.isFunction)(init))
|
|
16
|
+
init().then(() => cron.schedule(schedule, job, options));
|
|
17
|
+
else
|
|
18
|
+
cron.schedule(schedule, job, options);
|
|
21
19
|
});
|
|
22
|
-
const folders = (0, lodash_1.filter)(
|
|
23
|
-
|
|
20
|
+
const folders = (0, lodash_1.filter)(subfolderNames, (name) => fs.lstatSync(path.join(folder, name)).isDirectory());
|
|
21
|
+
(0, lodash_1.each)(folders, (sub) => _initiateCronjobs(path.join(folder, sub)));
|
|
22
|
+
};
|
|
23
|
+
const initiateCronjobs = (root, name = 'cronjobs') => {
|
|
24
|
+
const folders = (0, get_subfolder_paths_by_folder_name_1.default)(root, name);
|
|
25
|
+
(0, lodash_1.each)(folders, _initiateCronjobs);
|
|
24
26
|
};
|
|
25
27
|
exports.default = initiateCronjobs;
|
|
26
28
|
//# sourceMappingURL=initiate.cronjobs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initiate.cronjobs.js","sourceRoot":"","sources":["../../src/functions/initiate.cronjobs.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,yBAAyB;AACzB,6BAA6B;AAE7B,
|
|
1
|
+
{"version":3,"file":"initiate.cronjobs.js","sourceRoot":"","sources":["../../src/functions/initiate.cronjobs.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,yBAAyB;AACzB,6BAA6B;AAE7B,mCAAgD;AAChD,kCAAkC;AAGlC,6FAAiF;AAEjF,MAAM,iBAAiB,GAAG,CAAC,MAAc,EAAQ,EAAE;IAClD,MAAM,cAAc,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,IAAA,eAAM,EAAC,cAAc,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IACrG,IAAA,aAAI,EAAC,KAAK,EAAE,CAAC,IAAY,EAAE,EAAE;QAC5B,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACjD,MAAM,OAAO,GAAgB,OAAO,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC;QAE/D,MAAM,EAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAC,GAAG,OAAO,CAAC;QAC/C,IAAI,IAAA,mBAAU,EAAC,IAAI,CAAC;YAAE,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;;YAC1E,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,IAAA,eAAM,EAAC,cAAc,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IAC9G,IAAA,aAAI,EAAC,OAAO,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3E,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAE,OAAe,UAAU,EAAQ,EAAE;IAC1E,MAAM,OAAO,GAAa,IAAA,4CAA6B,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACpE,IAAA,aAAI,EAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;AAClC,CAAC,CAAC;AACF,kBAAe,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const fs = require("fs");
|
|
4
|
+
const path = require("path");
|
|
5
|
+
const lodash_1 = require("lodash");
|
|
6
|
+
const get_subfolder_paths_by_folder_name_1 = require("./get.subfolder.paths.by.folder.name");
|
|
7
|
+
const _initiateObservers = (folder) => {
|
|
8
|
+
const subfolderNames = fs.readdirSync(folder);
|
|
9
|
+
const files = (0, lodash_1.filter)(subfolderNames, (name) => !fs.lstatSync(path.join(folder, name)).isDirectory());
|
|
10
|
+
(0, lodash_1.each)(files, (file) => {
|
|
11
|
+
const absoluteFilePath = path.join(folder, file);
|
|
12
|
+
const observer = require(absoluteFilePath).default;
|
|
13
|
+
const { init, observe } = observer;
|
|
14
|
+
if ((0, lodash_1.isFunction)(init))
|
|
15
|
+
init().then(() => observe === null || observe === void 0 ? void 0 : observe());
|
|
16
|
+
else
|
|
17
|
+
observe === null || observe === void 0 ? void 0 : observe();
|
|
18
|
+
});
|
|
19
|
+
const folders = (0, lodash_1.filter)(subfolderNames, (name) => fs.lstatSync(path.join(folder, name)).isDirectory());
|
|
20
|
+
(0, lodash_1.each)(folders, (sub) => _initiateObservers(path.join(folder, sub)));
|
|
21
|
+
};
|
|
22
|
+
const initiateObservers = (root, name = 'observers') => {
|
|
23
|
+
const folders = (0, get_subfolder_paths_by_folder_name_1.default)(root, name);
|
|
24
|
+
(0, lodash_1.each)(folders, _initiateObservers);
|
|
25
|
+
};
|
|
26
|
+
exports.default = initiateObservers;
|
|
27
|
+
//# sourceMappingURL=initiate.observers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initiate.observers.js","sourceRoot":"","sources":["../../src/functions/initiate.observers.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,yBAAyB;AACzB,6BAA6B;AAE7B,mCAAgD;AAGhD,6FAAiF;AAEjF,MAAM,kBAAkB,GAAG,CAAC,MAAc,EAAQ,EAAE;IACnD,MAAM,cAAc,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,IAAA,eAAM,EAAC,cAAc,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IACrG,IAAA,aAAI,EAAC,KAAK,EAAE,CAAC,IAAY,EAAE,EAAE;QAC5B,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAiB,OAAO,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC;QAEjE,MAAM,EAAC,IAAI,EAAE,OAAO,EAAC,GAAG,QAAQ,CAAC;QACjC,IAAI,IAAA,mBAAU,EAAC,IAAI,CAAC;YAAE,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,EAAI,CAAC,CAAC;;YAChD,OAAO,aAAP,OAAO,uBAAP,OAAO,EAAI,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,IAAA,eAAM,EAAC,cAAc,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IAC9G,IAAA,aAAI,EAAC,OAAO,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAC5E,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAE,OAAe,WAAW,EAAQ,EAAE;IAC5E,MAAM,OAAO,GAAa,IAAA,4CAA6B,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACpE,IAAA,aAAI,EAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;AACnC,CAAC,CAAC;AACF,kBAAe,iBAAiB,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare const initiateWorkers: (
|
|
1
|
+
declare const initiateWorkers: (root: string, name?: string) => void;
|
|
2
2
|
export default initiateWorkers;
|
|
@@ -3,23 +3,25 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const fs = require("fs");
|
|
4
4
|
const path = require("path");
|
|
5
5
|
const lodash_1 = require("lodash");
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
work === null || work === void 0 ? void 0 : work();
|
|
12
|
-
};
|
|
13
|
-
const initiateWorkers = (folder) => {
|
|
14
|
-
const fileNames = fs.readdirSync(folder);
|
|
15
|
-
const files = (0, lodash_1.filter)(fileNames, (name) => !fs.lstatSync(path.join(folder, name)).isDirectory());
|
|
16
|
-
files.forEach((file) => {
|
|
6
|
+
const get_subfolder_paths_by_folder_name_1 = require("./get.subfolder.paths.by.folder.name");
|
|
7
|
+
const _initiateWorkers = (folder) => {
|
|
8
|
+
const subfolderNames = fs.readdirSync(folder);
|
|
9
|
+
const files = (0, lodash_1.filter)(subfolderNames, (name) => !fs.lstatSync(path.join(folder, name)).isDirectory());
|
|
10
|
+
(0, lodash_1.each)(files, (file) => {
|
|
17
11
|
const absoluteFilePath = path.join(folder, file);
|
|
18
12
|
const worker = require(absoluteFilePath).default;
|
|
19
|
-
|
|
13
|
+
const { init, work } = worker;
|
|
14
|
+
if ((0, lodash_1.isFunction)(init))
|
|
15
|
+
init().then(() => work === null || work === void 0 ? void 0 : work());
|
|
16
|
+
else
|
|
17
|
+
work === null || work === void 0 ? void 0 : work();
|
|
20
18
|
});
|
|
21
|
-
const folders = (0, lodash_1.filter)(
|
|
22
|
-
|
|
19
|
+
const folders = (0, lodash_1.filter)(subfolderNames, (name) => fs.lstatSync(path.join(folder, name)).isDirectory());
|
|
20
|
+
(0, lodash_1.each)(folders, (sub) => _initiateWorkers(path.join(folder, sub)));
|
|
21
|
+
};
|
|
22
|
+
const initiateWorkers = (root, name = 'workers') => {
|
|
23
|
+
const folders = (0, get_subfolder_paths_by_folder_name_1.default)(root, name);
|
|
24
|
+
(0, lodash_1.each)(folders, _initiateWorkers);
|
|
23
25
|
};
|
|
24
26
|
exports.default = initiateWorkers;
|
|
25
27
|
//# sourceMappingURL=initiate.workers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initiate.workers.js","sourceRoot":"","sources":["../../src/functions/initiate.workers.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,yBAAyB;AACzB,6BAA6B;AAE7B,
|
|
1
|
+
{"version":3,"file":"initiate.workers.js","sourceRoot":"","sources":["../../src/functions/initiate.workers.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,yBAAyB;AACzB,6BAA6B;AAE7B,mCAAgD;AAGhD,6FAAiF;AAEjF,MAAM,gBAAgB,GAAG,CAAC,MAAc,EAAQ,EAAE;IACjD,MAAM,cAAc,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,IAAA,eAAM,EAAC,cAAc,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IACrG,IAAA,aAAI,EAAC,KAAK,EAAE,CAAC,IAAY,EAAE,EAAE;QAC5B,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACjD,MAAM,MAAM,GAAe,OAAO,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC;QAE7D,MAAM,EAAC,IAAI,EAAE,IAAI,EAAC,GAAG,MAAM,CAAC;QAC5B,IAAI,IAAA,mBAAU,EAAC,IAAI,CAAC;YAAE,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,EAAI,CAAC,CAAC;;YAC7C,IAAI,aAAJ,IAAI,uBAAJ,IAAI,EAAI,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,IAAA,eAAM,EAAC,cAAc,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IAC9G,IAAA,aAAI,EAAC,OAAO,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAC1E,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,IAAY,EAAE,OAAe,SAAS,EAAQ,EAAE;IACxE,MAAM,OAAO,GAAa,IAAA,4CAA6B,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACpE,IAAA,aAAI,EAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;AACjC,CAAC,CAAC;AACF,kBAAe,eAAe,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare const processModels: (
|
|
1
|
+
declare const processModels: (root: string, name?: string, exclude?: string | string[]) => void;
|
|
2
2
|
export default processModels;
|
|
@@ -4,6 +4,7 @@ const fs = require("fs");
|
|
|
4
4
|
const path = require("path");
|
|
5
5
|
const lodash_1 = require("lodash");
|
|
6
6
|
const collections_models_map_1 = require("../collections.models.map");
|
|
7
|
+
const get_subfolder_paths_by_folder_name_1 = require("../../functions/get.subfolder.paths.by.folder.name");
|
|
7
8
|
const _processFile = (folder, file) => {
|
|
8
9
|
const fullPath = path.join(folder, file);
|
|
9
10
|
const model = require(fullPath).default;
|
|
@@ -20,19 +21,23 @@ const _isExcluded = (folder, exclude) => {
|
|
|
20
21
|
? (0, lodash_1.endsWith)(folder, exclude)
|
|
21
22
|
: !!(0, lodash_1.find)(exclude, (e) => (0, lodash_1.endsWith)(folder, e));
|
|
22
23
|
};
|
|
23
|
-
const
|
|
24
|
+
const _processModels = (folder, exclude) => {
|
|
24
25
|
if (_isExcluded(folder, exclude))
|
|
25
26
|
return;
|
|
26
|
-
const
|
|
27
|
-
const files = (0, lodash_1.filter)(
|
|
28
|
-
|
|
27
|
+
const subfolderNames = fs.readdirSync(folder);
|
|
28
|
+
const files = (0, lodash_1.filter)(subfolderNames, (fileName) => !fs.lstatSync(path.join(folder, fileName)).isDirectory());
|
|
29
|
+
(0, lodash_1.each)(files, (file) => {
|
|
29
30
|
const ext = path.extname(file);
|
|
30
31
|
if (ext !== '.ts' && ext !== '.js')
|
|
31
32
|
return;
|
|
32
33
|
_processFile(folder, file);
|
|
33
34
|
});
|
|
34
|
-
const folders = (0, lodash_1.filter)(
|
|
35
|
-
|
|
35
|
+
const folders = (0, lodash_1.filter)(subfolderNames, (fileName) => fs.lstatSync(path.join(folder, fileName)).isDirectory());
|
|
36
|
+
(0, lodash_1.each)(folders, (sub) => _processModels(path.join(folder, sub), exclude));
|
|
37
|
+
};
|
|
38
|
+
const processModels = (root, name = 'models', exclude) => {
|
|
39
|
+
const folders = (0, get_subfolder_paths_by_folder_name_1.default)(root, name);
|
|
40
|
+
(0, lodash_1.each)(folders, (folder) => _processModels(folder, exclude));
|
|
36
41
|
};
|
|
37
42
|
exports.default = processModels;
|
|
38
43
|
//# sourceMappingURL=process.models.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process.models.js","sourceRoot":"","sources":["../../../src/mongodb/functions/process.models.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,yBAAyB;AACzB,6BAA6B;AAE7B,
|
|
1
|
+
{"version":3,"file":"process.models.js","sourceRoot":"","sources":["../../../src/mongodb/functions/process.models.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,yBAAyB;AACzB,6BAA6B;AAE7B,mCAA8D;AAE9D,sEAA6D;AAC7D,2GAA+F;AAE/F,MAAM,YAAY,GAAG,CAAC,MAAc,EAAE,IAAY,EAAQ,EAAE;IAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;IACxC,IAAI,CAAC,KAAK;QAAE,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,sBAAsB,MAAM,IAAI,IAAI,EAAE,CAAC,CAAC;SACxE,IAAI,CAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,CAAA;QAAE,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,mCAAmC,MAAM,IAAI,IAAI,EAAE,CAAC,CAAC;IAC3G,gCAAoB,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC;AACzD,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,MAAc,EAAE,OAA0B,EAAW,EAAE;IAC3E,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3B,OAAO,IAAA,iBAAQ,EAAC,OAAO,CAAC;QACvB,CAAC,CAAC,IAAA,iBAAQ,EAAC,MAAM,EAAE,OAAO,CAAC;QAC3B,CAAC,CAAC,CAAC,CAAC,IAAA,aAAI,EAAC,OAAO,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,IAAA,iBAAQ,EAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,MAAc,EAAE,OAA2B,EAAQ,EAAE;IAC5E,IAAI,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC;QAAE,OAAO;IAEzC,MAAM,cAAc,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,IAAA,eAAM,EAAC,cAAc,EAAE,CAAC,QAAgB,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IACrH,IAAA,aAAI,EAAC,KAAK,EAAE,CAAC,IAAY,EAAE,EAAE;QAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,KAAK;YAAE,OAAO;QAC3C,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,IAAA,eAAM,EAAC,cAAc,EAAE,CAAC,QAAgB,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IACtH,IAAA,aAAI,EAAC,OAAO,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AACjF,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,IAAY,EAAE,OAAe,QAAQ,EAAE,OAA2B,EAAQ,EAAE;IAClG,MAAM,OAAO,GAAa,IAAA,4CAA6B,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACpE,IAAA,aAAI,EAAC,OAAO,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AACpE,CAAC,CAAC;AACF,kBAAe,aAAa,CAAC"}
|
package/lib/owservable.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import OwservableClient from './owservable.client';
|
|
|
2
2
|
import EStoreType from './_enums/store.type.enum';
|
|
3
3
|
import ConnectionManagerRefreshType from './_types/connection.manager.refresh.type';
|
|
4
4
|
import CronJobType from './_types/cronjob.type';
|
|
5
|
+
import ObserverType from './_types/observer.type';
|
|
5
6
|
import StoreScopeType from './_types/store.scope.type';
|
|
6
7
|
import StoreSubscriptionConfigType from './_types/store.subscription.config.type';
|
|
7
8
|
import StoreSubscriptionUpdateType from './_types/store.subscription.update.type';
|
|
@@ -9,6 +10,8 @@ import WorkerType from './_types/worker.type';
|
|
|
9
10
|
import IConnectionManager from './auth/i.connection.manager';
|
|
10
11
|
import initiateWorkers from './functions/initiate.workers';
|
|
11
12
|
import initiateCronjobs from './functions/initiate.cronjobs';
|
|
13
|
+
import initiateObservers from './functions/initiate.observers';
|
|
14
|
+
import getSubfolderPathsByFolderName from './functions/get.subfolder.paths.by.folder.name';
|
|
12
15
|
import DataMiddlewareMap from './middleware/data.middleware.map';
|
|
13
16
|
import MongoDBConnector from './mongodb/mongodb.connector';
|
|
14
17
|
import CollectionsModelsMap from './mongodb/collections.models.map';
|
|
@@ -24,6 +27,6 @@ import CountStore from './store/count.store';
|
|
|
24
27
|
import DocumentStore from './store/document.store';
|
|
25
28
|
import CollectionStore from './store/collection.store';
|
|
26
29
|
import storeFactory from './store/factories/store.factory';
|
|
27
|
-
export { OwservableClient, EStoreType, ConnectionManagerRefreshType, CronJobType, StoreScopeType, StoreSubscriptionConfigType, StoreSubscriptionUpdateType, WorkerType, IConnectionManager, initiateWorkers, initiateCronjobs, DataMiddlewareMap, MongoDBConnector, CollectionsModelsMap, processModels, observableModel, observableDatabase, RoutesMap, addFastifyRoutes, cleanRelativePath, processFastifyBlipp, AStore, CountStore, DocumentStore, CollectionStore, storeFactory };
|
|
30
|
+
export { OwservableClient, EStoreType, ConnectionManagerRefreshType, CronJobType, ObserverType, StoreScopeType, StoreSubscriptionConfigType, StoreSubscriptionUpdateType, WorkerType, IConnectionManager, getSubfolderPathsByFolderName, initiateWorkers, initiateObservers, initiateCronjobs, DataMiddlewareMap, MongoDBConnector, CollectionsModelsMap, processModels, observableModel, observableDatabase, RoutesMap, addFastifyRoutes, cleanRelativePath, processFastifyBlipp, AStore, CountStore, DocumentStore, CollectionStore, storeFactory };
|
|
28
31
|
declare const Owservable: {};
|
|
29
32
|
export default Owservable;
|
package/lib/owservable.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.storeFactory = exports.CollectionStore = exports.DocumentStore = exports.CountStore = exports.AStore = exports.processFastifyBlipp = exports.cleanRelativePath = exports.addFastifyRoutes = exports.RoutesMap = exports.observableDatabase = exports.observableModel = exports.processModels = exports.CollectionsModelsMap = exports.MongoDBConnector = exports.DataMiddlewareMap = exports.initiateCronjobs = exports.initiateWorkers = exports.EStoreType = exports.OwservableClient = void 0;
|
|
3
|
+
exports.storeFactory = exports.CollectionStore = exports.DocumentStore = exports.CountStore = exports.AStore = exports.processFastifyBlipp = exports.cleanRelativePath = exports.addFastifyRoutes = exports.RoutesMap = exports.observableDatabase = exports.observableModel = exports.processModels = exports.CollectionsModelsMap = exports.MongoDBConnector = exports.DataMiddlewareMap = exports.initiateCronjobs = exports.initiateObservers = exports.initiateWorkers = exports.getSubfolderPathsByFolderName = exports.EStoreType = exports.OwservableClient = void 0;
|
|
4
4
|
const owservable_client_1 = require("./owservable.client");
|
|
5
5
|
exports.OwservableClient = owservable_client_1.default;
|
|
6
6
|
const store_type_enum_1 = require("./_enums/store.type.enum");
|
|
@@ -9,6 +9,10 @@ const initiate_workers_1 = require("./functions/initiate.workers");
|
|
|
9
9
|
exports.initiateWorkers = initiate_workers_1.default;
|
|
10
10
|
const initiate_cronjobs_1 = require("./functions/initiate.cronjobs");
|
|
11
11
|
exports.initiateCronjobs = initiate_cronjobs_1.default;
|
|
12
|
+
const initiate_observers_1 = require("./functions/initiate.observers");
|
|
13
|
+
exports.initiateObservers = initiate_observers_1.default;
|
|
14
|
+
const get_subfolder_paths_by_folder_name_1 = require("./functions/get.subfolder.paths.by.folder.name");
|
|
15
|
+
exports.getSubfolderPathsByFolderName = get_subfolder_paths_by_folder_name_1.default;
|
|
12
16
|
const data_middleware_map_1 = require("./middleware/data.middleware.map");
|
|
13
17
|
exports.DataMiddlewareMap = data_middleware_map_1.default;
|
|
14
18
|
const mongodb_connector_1 = require("./mongodb/mongodb.connector");
|
package/lib/owservable.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"owservable.js","sourceRoot":"","sources":["../src/owservable.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;AAEb,2DAAmD;
|
|
1
|
+
{"version":3,"file":"owservable.js","sourceRoot":"","sources":["../src/owservable.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;AAEb,2DAAmD;AAqDlD,2BArDM,2BAAgB,CAqDN;AAlDjB,8DAAkD;AAoDjD,qBApDM,yBAAU,CAoDN;AArCX,mEAA2D;AAkD1D,0BAlDM,0BAAe,CAkDN;AAjDhB,qEAA6D;AAmD5D,2BAnDM,2BAAgB,CAmDN;AAlDjB,uEAA+D;AAiD9D,4BAjDM,4BAAiB,CAiDN;AAhDlB,uGAA2F;AA8C1F,wCA9CM,4CAA6B,CA8CN;AA3C9B,0EAAiE;AAgDhE,4BAhDM,6BAAiB,CAgDN;AA7ClB,mEAA2D;AA+C1D,2BA/CM,2BAAgB,CA+CN;AA9CjB,6EAAoE;AA+CnE,+BA/CM,gCAAoB,CA+CN;AA5CrB,uEAA+D;AA8C9D,wBA9CM,wBAAa,CA8CN;AA7Cd,2EAAmE;AA8ClE,0BA9CM,0BAAe,CA8CN;AA7ChB,iFAAyE;AA8CxE,6BA9CM,6BAAkB,CA8CN;AA3CnB,qDAA6C;AA6C5C,oBA7CM,oBAAS,CA6CN;AA1CV,+EAAsE;AA4CrE,2BA5CM,4BAAgB,CA4CN;AA3CjB,iFAAwE;AA4CvE,4BA5CM,6BAAiB,CA4CN;AA3ClB,qFAA4E;AA4C3E,8BA5CM,+BAAmB,CA4CN;AAzCpB,6CAAqC;AA2CpC,iBA3CM,iBAAM,CA2CN;AA1CP,qDAA6C;AA2C5C,qBA3CM,qBAAU,CA2CN;AA1CX,2DAAmD;AA2ClD,wBA3CM,wBAAa,CA2CN;AA1Cd,+DAAuD;AA2CtD,0BA3CM,0BAAe,CA2CN;AAxChB,mEAA2D;AA0C1D,uBA1CM,uBAAY,CA0CN;AAGb,MAAM,UAAU,GAAG,EAAE,CAAC;AACtB,kBAAe,UAAU,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare const addFastifyRoutes: (fastify: any,
|
|
1
|
+
declare const addFastifyRoutes: (fastify: any, root: string, name?: string) => void;
|
|
2
2
|
export default addFastifyRoutes;
|
|
@@ -4,6 +4,8 @@ const fs = require("fs");
|
|
|
4
4
|
const path = require("path");
|
|
5
5
|
const _ = require("lodash");
|
|
6
6
|
const clean_relative_path_1 = require("./clean.relative.path");
|
|
7
|
+
const get_subfolder_paths_by_folder_name_1 = require("../../functions/get.subfolder.paths.by.folder.name");
|
|
8
|
+
const lodash_1 = require("lodash");
|
|
7
9
|
let routesRootFolder;
|
|
8
10
|
const METHODS = ['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'OPTIONS', 'PATCH'];
|
|
9
11
|
const _fixUrl = (url, relativeFilePath) => {
|
|
@@ -26,12 +28,12 @@ const _addRoute = (fastify, route, relativeFilePath) => {
|
|
|
26
28
|
if (_.isPlainObject(route) && METHODS.includes(route.method))
|
|
27
29
|
fastify.route(route);
|
|
28
30
|
};
|
|
29
|
-
const
|
|
31
|
+
const _addFastifyRoutes = (fastify, folder) => {
|
|
30
32
|
if (!routesRootFolder)
|
|
31
33
|
routesRootFolder = folder;
|
|
32
34
|
const fileNames = fs.readdirSync(folder);
|
|
33
35
|
const files = _.filter(fileNames, (name) => !fs.lstatSync(path.join(folder, name)).isDirectory());
|
|
34
|
-
|
|
36
|
+
_.each(files, (file) => {
|
|
35
37
|
const ext = path.extname(file);
|
|
36
38
|
if (ext !== '.ts' && ext !== '.js')
|
|
37
39
|
return;
|
|
@@ -44,7 +46,11 @@ const addFastifyRoutes = (fastify, folder) => {
|
|
|
44
46
|
_addRoute(fastify, route, relativeFilePath);
|
|
45
47
|
});
|
|
46
48
|
const folders = _.filter(fileNames, (name) => fs.lstatSync(path.join(folder, name)).isDirectory());
|
|
47
|
-
|
|
49
|
+
_.each(folders, (sub) => _addFastifyRoutes(fastify, path.join(folder, sub)));
|
|
50
|
+
};
|
|
51
|
+
const addFastifyRoutes = (fastify, root, name = 'routes') => {
|
|
52
|
+
const folders = (0, get_subfolder_paths_by_folder_name_1.default)(root, name);
|
|
53
|
+
(0, lodash_1.each)(folders, (folder) => _addFastifyRoutes(fastify, folder));
|
|
48
54
|
};
|
|
49
55
|
exports.default = addFastifyRoutes;
|
|
50
56
|
//# sourceMappingURL=add.fastify.routes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.fastify.routes.js","sourceRoot":"","sources":["../../../src/routing/functions/add.fastify.routes.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,yBAAyB;AACzB,6BAA6B;AAE7B,4BAA4B;AAE5B,+DAAsD;
|
|
1
|
+
{"version":3,"file":"add.fastify.routes.js","sourceRoot":"","sources":["../../../src/routing/functions/add.fastify.routes.ts"],"names":[],"mappings":"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"}
|