owservable 0.6.1 → 0.7.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.
Files changed (30) hide show
  1. package/README.md +4 -4
  2. package/lib/_types/watcher.type.d.ts +5 -0
  3. package/lib/_types/{observer.type.js → watcher.type.js} +1 -1
  4. package/lib/_types/watcher.type.js.map +1 -0
  5. package/lib/functions/initiate.watchers.d.ts +2 -0
  6. package/lib/functions/{initiate.observers.js → initiate.watchers.js} +10 -10
  7. package/lib/functions/initiate.watchers.js.map +1 -0
  8. package/lib/owservable.d.ts +3 -7
  9. package/lib/owservable.js +3 -11
  10. package/lib/owservable.js.map +1 -1
  11. package/package.json +2 -3
  12. package/lib/_types/fastify.route.type.d.ts +0 -7
  13. package/lib/_types/fastify.route.type.js +0 -3
  14. package/lib/_types/fastify.route.type.js.map +0 -1
  15. package/lib/_types/observer.type.d.ts +0 -5
  16. package/lib/_types/observer.type.js.map +0 -1
  17. package/lib/functions/initiate.observers.d.ts +0 -2
  18. package/lib/functions/initiate.observers.js.map +0 -1
  19. package/lib/routing/functions/add.fastify.routes.d.ts +0 -2
  20. package/lib/routing/functions/add.fastify.routes.js +0 -56
  21. package/lib/routing/functions/add.fastify.routes.js.map +0 -1
  22. package/lib/routing/functions/clean.relative.path.d.ts +0 -2
  23. package/lib/routing/functions/clean.relative.path.js +0 -14
  24. package/lib/routing/functions/clean.relative.path.js.map +0 -1
  25. package/lib/routing/functions/process.fastify.blipp.d.ts +0 -2
  26. package/lib/routing/functions/process.fastify.blipp.js +0 -17
  27. package/lib/routing/functions/process.fastify.blipp.js.map +0 -1
  28. package/lib/routing/routes.map.d.ts +0 -10
  29. package/lib/routing/routes.map.js +0 -60
  30. package/lib/routing/routes.map.js.map +0 -1
package/README.md CHANGED
@@ -48,11 +48,11 @@ 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
- ### initiateObservers
51
+ ### initiateWatchers
52
52
 
53
- Method that initiates all observers. Takes the project root folder path and a global folder name for the observers.
53
+ Method that initiates all watchers. Takes the project root folder path and a global folder name for the watchers.
54
54
 
55
- Observers can either perform simple tasks or add jobs to a queue, to be processed by the workers.
55
+ Watchers can either perform simple tasks or add jobs to a queue, to be processed by the workers.
56
56
 
57
57
  ### initiateCronjobs
58
58
 
@@ -142,8 +142,8 @@ Store factory method, creates an appropriate AStore instance based on passed sub
142
142
  These types are self explanatory.
143
143
 
144
144
  - CronJobType
145
+ - WatcherType
145
146
  - WorkerType
146
- - ObserverType
147
147
  - StoreScopeType
148
148
  - StoreSubscriptionConfigType
149
149
  - StoreSubscriptionUpdateType
@@ -0,0 +1,5 @@
1
+ declare type WatcherType = {
2
+ init?: () => Promise<void>;
3
+ watch: () => void;
4
+ };
5
+ export default WatcherType;
@@ -1,3 +1,3 @@
1
1
  'use strict';
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=observer.type.js.map
3
+ //# sourceMappingURL=watcher.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watcher.type.js","sourceRoot":"","sources":["../../src/_types/watcher.type.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC"}
@@ -0,0 +1,2 @@
1
+ declare const initiateWatchers: (root: string, name?: string) => void;
2
+ export default initiateWatchers;
@@ -4,24 +4,24 @@ const fs = require("fs");
4
4
  const path = require("path");
5
5
  const lodash_1 = require("lodash");
6
6
  const get_subfolder_paths_by_folder_name_1 = require("./get.subfolder.paths.by.folder.name");
7
- const _initiateObservers = (folder) => {
7
+ const _initiateWatchers = (folder) => {
8
8
  const subfolderNames = fs.readdirSync(folder);
9
9
  const files = (0, lodash_1.filter)(subfolderNames, (name) => !fs.lstatSync(path.join(folder, name)).isDirectory());
10
10
  (0, lodash_1.each)(files, (file) => {
11
11
  const absoluteFilePath = path.join(folder, file);
12
- const observer = require(absoluteFilePath).default;
13
- const { init, observe } = observer;
12
+ const watcher = require(absoluteFilePath).default;
13
+ const { init, watch } = watcher;
14
14
  if ((0, lodash_1.isFunction)(init))
15
- init().then(() => observe === null || observe === void 0 ? void 0 : observe());
15
+ init().then(() => watch === null || watch === void 0 ? void 0 : watch());
16
16
  else
17
- observe === null || observe === void 0 ? void 0 : observe();
17
+ watch === null || watch === void 0 ? void 0 : watch();
18
18
  });
19
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)));
20
+ (0, lodash_1.each)(folders, (sub) => _initiateWatchers(path.join(folder, sub)));
21
21
  };
22
- const initiateObservers = (root, name = 'observers') => {
22
+ const initiateWatchers = (root, name = 'watchers') => {
23
23
  const folders = (0, get_subfolder_paths_by_folder_name_1.default)(root, name);
24
- (0, lodash_1.each)(folders, _initiateObservers);
24
+ (0, lodash_1.each)(folders, _initiateWatchers);
25
25
  };
26
- exports.default = initiateObservers;
27
- //# sourceMappingURL=initiate.observers.js.map
26
+ exports.default = initiateWatchers;
27
+ //# sourceMappingURL=initiate.watchers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initiate.watchers.js","sourceRoot":"","sources":["../../src/functions/initiate.watchers.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,yBAAyB;AACzB,6BAA6B;AAE7B,mCAAgD;AAGhD,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,IAAI,EAAE,KAAK,EAAC,GAAG,OAAO,CAAC;QAC9B,IAAI,IAAA,mBAAU,EAAC,IAAI,CAAC;YAAE,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,EAAI,CAAC,CAAC;;YAC9C,KAAK,aAAL,KAAK,uBAAL,KAAK,EAAI,CAAC;IAChB,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"}
@@ -2,15 +2,15 @@ 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';
6
5
  import StoreScopeType from './_types/store.scope.type';
7
6
  import StoreSubscriptionConfigType from './_types/store.subscription.config.type';
8
7
  import StoreSubscriptionUpdateType from './_types/store.subscription.update.type';
8
+ import WatcherType from './_types/watcher.type';
9
9
  import WorkerType from './_types/worker.type';
10
10
  import IConnectionManager from './auth/i.connection.manager';
11
11
  import initiateWorkers from './functions/initiate.workers';
12
12
  import initiateCronjobs from './functions/initiate.cronjobs';
13
- import initiateObservers from './functions/initiate.observers';
13
+ import initiateWatchers from './functions/initiate.watchers';
14
14
  import getSubfolderPathsByFolderName from './functions/get.subfolder.paths.by.folder.name';
15
15
  import DataMiddlewareMap from './middleware/data.middleware.map';
16
16
  import MongoDBConnector from './mongodb/mongodb.connector';
@@ -18,15 +18,11 @@ import CollectionsModelsMap from './mongodb/collections.models.map';
18
18
  import processModels from './mongodb/functions/process.models';
19
19
  import observableModel from './mongodb/functions/observable.model';
20
20
  import observableDatabase from './mongodb/functions/observable.database';
21
- import RoutesMap from './routing/routes.map';
22
- import addFastifyRoutes from './routing/functions/add.fastify.routes';
23
- import cleanRelativePath from './routing/functions/clean.relative.path';
24
- import processFastifyBlipp from './routing/functions/process.fastify.blipp';
25
21
  import AStore from './store/a.store';
26
22
  import CountStore from './store/count.store';
27
23
  import DocumentStore from './store/document.store';
28
24
  import CollectionStore from './store/collection.store';
29
25
  import storeFactory from './store/factories/store.factory';
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 };
26
+ export { OwservableClient, EStoreType, ConnectionManagerRefreshType, CronJobType, StoreScopeType, StoreSubscriptionConfigType, StoreSubscriptionUpdateType, WatcherType, WorkerType, IConnectionManager, getSubfolderPathsByFolderName, initiateCronjobs, initiateWatchers, initiateWorkers, DataMiddlewareMap, MongoDBConnector, CollectionsModelsMap, processModels, observableModel, observableDatabase, AStore, CountStore, DocumentStore, CollectionStore, storeFactory };
31
27
  declare const Owservable: {};
32
28
  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.initiateObservers = exports.initiateWorkers = exports.getSubfolderPathsByFolderName = exports.EStoreType = exports.OwservableClient = void 0;
3
+ exports.storeFactory = exports.CollectionStore = exports.DocumentStore = exports.CountStore = exports.AStore = exports.observableDatabase = exports.observableModel = exports.processModels = exports.CollectionsModelsMap = exports.MongoDBConnector = exports.DataMiddlewareMap = exports.initiateWorkers = exports.initiateWatchers = exports.initiateCronjobs = 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,8 +9,8 @@ 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;
12
+ const initiate_watchers_1 = require("./functions/initiate.watchers");
13
+ exports.initiateWatchers = initiate_watchers_1.default;
14
14
  const get_subfolder_paths_by_folder_name_1 = require("./functions/get.subfolder.paths.by.folder.name");
15
15
  exports.getSubfolderPathsByFolderName = get_subfolder_paths_by_folder_name_1.default;
16
16
  const data_middleware_map_1 = require("./middleware/data.middleware.map");
@@ -25,14 +25,6 @@ const observable_model_1 = require("./mongodb/functions/observable.model");
25
25
  exports.observableModel = observable_model_1.default;
26
26
  const observable_database_1 = require("./mongodb/functions/observable.database");
27
27
  exports.observableDatabase = observable_database_1.default;
28
- const routes_map_1 = require("./routing/routes.map");
29
- exports.RoutesMap = routes_map_1.default;
30
- const add_fastify_routes_1 = require("./routing/functions/add.fastify.routes");
31
- exports.addFastifyRoutes = add_fastify_routes_1.default;
32
- const clean_relative_path_1 = require("./routing/functions/clean.relative.path");
33
- exports.cleanRelativePath = clean_relative_path_1.default;
34
- const process_fastify_blipp_1 = require("./routing/functions/process.fastify.blipp");
35
- exports.processFastifyBlipp = process_fastify_blipp_1.default;
36
28
  const a_store_1 = require("./store/a.store");
37
29
  exports.AStore = a_store_1.default;
38
30
  const count_store_1 = require("./store/count.store");
@@ -1 +1 @@
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
+ {"version":3,"file":"owservable.js","sourceRoot":"","sources":["../src/owservable.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;AAEb,2DAAmD;AA6ClD,2BA7CM,2BAAgB,CA6CN;AA1CjB,8DAAkD;AA4CjD,qBA5CM,yBAAU,CA4CN;AA7BX,mEAA2D;AA4C1D,0BA5CM,0BAAe,CA4CN;AA3ChB,qEAA6D;AAyC5D,2BAzCM,2BAAgB,CAyCN;AAxCjB,qEAA6D;AAyC5D,2BAzCM,2BAAgB,CAyCN;AAxCjB,uGAA2F;AAsC1F,wCAtCM,4CAA6B,CAsCN;AAnC9B,0EAAiE;AAwChE,4BAxCM,6BAAiB,CAwCN;AArClB,mEAA2D;AAuC1D,2BAvCM,2BAAgB,CAuCN;AAtCjB,6EAAoE;AAuCnE,+BAvCM,gCAAoB,CAuCN;AApCrB,uEAA+D;AAsC9D,wBAtCM,wBAAa,CAsCN;AArCd,2EAAmE;AAsClE,0BAtCM,0BAAe,CAsCN;AArChB,iFAAyE;AAsCxE,6BAtCM,6BAAkB,CAsCN;AAnCnB,6CAAqC;AAqCpC,iBArCM,iBAAM,CAqCN;AApCP,qDAA6C;AAqC5C,qBArCM,qBAAU,CAqCN;AApCX,2DAAmD;AAqClD,wBArCM,wBAAa,CAqCN;AApCd,+DAAuD;AAqCtD,0BArCM,0BAAe,CAqCN;AAlChB,mEAA2D;AAoC1D,uBApCM,uBAAY,CAoCN;AAGb,MAAM,UAAU,GAAG,EAAE,CAAC;AACtB,kBAAe,UAAU,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "owservable",
3
- "version": "0.6.1",
4
- "description": "owservable fastify backend",
3
+ "version": "0.7.1",
4
+ "description": "owservable backend",
5
5
  "engines": {
6
6
  "node": ">=14"
7
7
  },
@@ -38,7 +38,6 @@
38
38
  "@types/mongoose": "^5.7.36",
39
39
  "@types/node": "^14.11.2",
40
40
  "@types/node-cron": "^2.0.4",
41
- "fastify": "^3.19.1",
42
41
  "jsondiffpatch": "^0.4.1",
43
42
  "lodash": "^4.17.20",
44
43
  "mongoose": "^5.13.3",
@@ -1,7 +0,0 @@
1
- declare type FastifyRouteType = {
2
- method: 'GET' | 'HEAD' | 'POST' | 'PUT' | 'DELETE' | 'OPTIONS' | 'PATCH';
3
- url?: string;
4
- preValidation?: () => void;
5
- handler: () => Promise<void>;
6
- };
7
- export default FastifyRouteType;
@@ -1,3 +0,0 @@
1
- 'use strict';
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=fastify.route.type.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fastify.route.type.js","sourceRoot":"","sources":["../../src/_types/fastify.route.type.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC"}
@@ -1,5 +0,0 @@
1
- declare type ObserverType = {
2
- init?: () => Promise<void>;
3
- observe: () => void;
4
- };
5
- export default ObserverType;
@@ -1 +0,0 @@
1
- {"version":3,"file":"observer.type.js","sourceRoot":"","sources":["../../src/_types/observer.type.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC"}
@@ -1,2 +0,0 @@
1
- declare const initiateObservers: (root: string, name?: string) => void;
2
- export default initiateObservers;
@@ -1 +0,0 @@
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 +0,0 @@
1
- declare const addFastifyRoutes: (fastify: any, root: string, name?: string) => void;
2
- export default addFastifyRoutes;
@@ -1,56 +0,0 @@
1
- 'use strict';
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const fs = require("fs");
4
- const path = require("path");
5
- const _ = require("lodash");
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");
9
- let routesRootFolder;
10
- const METHODS = ['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'OPTIONS', 'PATCH'];
11
- const _fixUrl = (url, relativeFilePath) => {
12
- url = relativeFilePath + url;
13
- url = _.join(_.split(url, '//'), '/');
14
- if (_.endsWith(url, '/'))
15
- url = url.slice(0, -1);
16
- return url;
17
- };
18
- const _addRoute = (fastify, route, relativeFilePath) => {
19
- if (!_.has(route, 'url'))
20
- route.url = '/';
21
- const { url } = route;
22
- if (!_.startsWith(_.toLower(url), relativeFilePath))
23
- route.url = _fixUrl(url, relativeFilePath);
24
- if (_.has(route, 'method'))
25
- route.method = _.toUpper(route.method);
26
- else
27
- route.method = 'GET';
28
- if (_.isPlainObject(route) && METHODS.includes(route.method))
29
- fastify.route(route);
30
- };
31
- const _addFastifyRoutes = (fastify, folder) => {
32
- if (!routesRootFolder)
33
- routesRootFolder = folder;
34
- const fileNames = fs.readdirSync(folder);
35
- const files = _.filter(fileNames, (name) => !fs.lstatSync(path.join(folder, name)).isDirectory());
36
- _.each(files, (file) => {
37
- const ext = path.extname(file);
38
- if (ext !== '.ts' && ext !== '.js')
39
- return;
40
- const absoluteFilePath = path.join(folder, file);
41
- const relativeFilePath = (0, clean_relative_path_1.default)(routesRootFolder, absoluteFilePath, ext);
42
- const route = require(absoluteFilePath);
43
- if (_.isArray(route))
44
- _.each(route, (r) => _addRoute(fastify, r, relativeFilePath));
45
- else
46
- _addRoute(fastify, route, relativeFilePath);
47
- });
48
- const folders = _.filter(fileNames, (name) => fs.lstatSync(path.join(folder, name)).isDirectory());
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));
54
- };
55
- exports.default = addFastifyRoutes;
56
- //# sourceMappingURL=add.fastify.routes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"add.fastify.routes.js","sourceRoot":"","sources":["../../../src/routing/functions/add.fastify.routes.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- declare const cleanRelativePath: (rootFolder: string, absoluteFilePath: string, ext: '.ts' | '.js') => string;
2
- export default cleanRelativePath;
@@ -1,14 +0,0 @@
1
- 'use strict';
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const lodash_1 = require("lodash");
4
- const cleanRelativePath = (rootFolder, absoluteFilePath, ext) => {
5
- let relativeFilePath = (0, lodash_1.toLower)(absoluteFilePath) + '/';
6
- relativeFilePath = (0, lodash_1.replace)(relativeFilePath, (0, lodash_1.toLower)(rootFolder), '');
7
- relativeFilePath = (0, lodash_1.replace)(relativeFilePath, (0, lodash_1.toLower)(ext), '');
8
- relativeFilePath = (0, lodash_1.replace)(relativeFilePath, 'root', '');
9
- relativeFilePath = (0, lodash_1.join)((0, lodash_1.split)(relativeFilePath, '\\'), '/');
10
- relativeFilePath = (0, lodash_1.join)((0, lodash_1.split)(relativeFilePath, '//'), '/');
11
- return relativeFilePath;
12
- };
13
- exports.default = cleanRelativePath;
14
- //# sourceMappingURL=clean.relative.path.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"clean.relative.path.js","sourceRoot":"","sources":["../../../src/routing/functions/clean.relative.path.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,mCAAqD;AAErD,MAAM,iBAAiB,GAAG,CAAC,UAAkB,EAAE,gBAAwB,EAAE,GAAkB,EAAU,EAAE;IACtG,IAAI,gBAAgB,GAAG,IAAA,gBAAO,EAAC,gBAAgB,CAAC,GAAG,GAAG,CAAC;IACvD,gBAAgB,GAAG,IAAA,gBAAO,EAAC,gBAAgB,EAAE,IAAA,gBAAO,EAAC,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;IACtE,gBAAgB,GAAG,IAAA,gBAAO,EAAC,gBAAgB,EAAE,IAAA,gBAAO,EAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/D,gBAAgB,GAAG,IAAA,gBAAO,EAAC,gBAAgB,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;IACzD,gBAAgB,GAAG,IAAA,aAAI,EAAC,IAAA,cAAK,EAAC,gBAAgB,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;IAC5D,gBAAgB,GAAG,IAAA,aAAI,EAAC,IAAA,cAAK,EAAC,gBAAgB,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;IAC5D,OAAO,gBAAgB,CAAC;AACzB,CAAC,CAAC;AACF,kBAAe,iBAAiB,CAAC"}
@@ -1,2 +0,0 @@
1
- declare const processFastifyBlipp: (blipp: string) => void;
2
- export default processFastifyBlipp;
@@ -1,17 +0,0 @@
1
- 'use strict';
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const lodash_1 = require("lodash");
4
- const routes_map_1 = require("../routes.map");
5
- const processFastifyBlipp = (blipp) => {
6
- console.log(blipp);
7
- if (!(0, lodash_1.includes)(blipp, 'Routes:')) {
8
- let routes = (0, lodash_1.split)(blipp, '\n');
9
- routes = (0, lodash_1.map)(routes, (r) => r.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, ''));
10
- (0, lodash_1.each)(routes, (r) => {
11
- const parts = (0, lodash_1.split)(r, '\t');
12
- routes_map_1.default.add(parts[0], parts[1]);
13
- });
14
- }
15
- };
16
- exports.default = processFastifyBlipp;
17
- //# sourceMappingURL=process.fastify.blipp.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"process.fastify.blipp.js","sourceRoot":"","sources":["../../../src/routing/functions/process.fastify.blipp.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,mCAAkD;AAClD,8CAAsC;AAEtC,MAAM,mBAAmB,GAAG,CAAC,KAAa,EAAQ,EAAE;IACnD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACnB,IAAI,CAAC,IAAA,iBAAQ,EAAC,KAAK,EAAE,SAAS,CAAC,EAAE;QAChC,IAAI,MAAM,GAAG,IAAA,cAAK,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAChC,MAAM,GAAG,IAAA,YAAG,EAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,6EAA6E,EAAE,EAAE,CAAC,CAAC,CAAC;QAC1H,IAAA,aAAI,EAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE;YAClB,MAAM,KAAK,GAAG,IAAA,cAAK,EAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAC7B,oBAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;KACH;AACF,CAAC,CAAC;AACF,kBAAe,mBAAmB,CAAC"}
@@ -1,10 +0,0 @@
1
- export default class RoutesMap {
2
- static add(method: string, route: string): void;
3
- static getMethods(): string[];
4
- static getRoutes(method: string): string[] | null;
5
- static keys(): string[];
6
- static values(): string[][];
7
- static list(): any;
8
- static json(): any;
9
- private static readonly _routes;
10
- }
@@ -1,60 +0,0 @@
1
- 'use strict';
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const _ = require("lodash");
4
- class RoutesMap {
5
- static add(method, route) {
6
- method = _.toUpper(method);
7
- let routes = RoutesMap._routes.get(method) || [];
8
- routes.push(route);
9
- routes = _.sortBy(_.compact(_.uniq(routes)));
10
- RoutesMap._routes.set(method, routes);
11
- }
12
- static getMethods() {
13
- return _.sortBy(_.compact(Array.from(RoutesMap._routes.keys())));
14
- }
15
- static getRoutes(method) {
16
- return RoutesMap._routes.get(_.toUpper(method));
17
- }
18
- static keys() {
19
- return Array.from(RoutesMap._routes.keys());
20
- }
21
- static values() {
22
- return Array.from(RoutesMap._routes.values());
23
- }
24
- static list() {
25
- const obj = {};
26
- const methods = RoutesMap.getMethods();
27
- _.each(methods, (method) => (obj[method] = RoutesMap.getRoutes(method)));
28
- return obj;
29
- }
30
- static json() {
31
- const obj = {};
32
- const methods = RoutesMap.getMethods();
33
- _.each(methods, (method) => {
34
- const apis = {};
35
- const routes = RoutesMap.getRoutes(method);
36
- _.each(routes, (route) => {
37
- let parts = _.split(route, '/');
38
- parts = _.compact(parts);
39
- const last = _.join(parts, '.');
40
- parts.pop();
41
- let paths = [_.join(parts, '.')];
42
- while (!_.isEmpty(parts)) {
43
- parts.pop();
44
- paths.push(_.join(parts, '.'));
45
- }
46
- paths = _.reverse(_.compact(paths));
47
- _.each(paths, (path) => {
48
- if (!_.get(apis, path))
49
- _.set(apis, path, {});
50
- });
51
- _.set(apis, last, true);
52
- });
53
- obj[method] = apis;
54
- });
55
- return obj;
56
- }
57
- }
58
- exports.default = RoutesMap;
59
- RoutesMap._routes = new Map();
60
- //# sourceMappingURL=routes.map.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"routes.map.js","sourceRoot":"","sources":["../../src/routing/routes.map.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,4BAA4B;AAE5B,MAAqB,SAAS;IACtB,MAAM,CAAC,GAAG,CAAC,MAAc,EAAE,KAAa;QAC9C,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC3B,IAAI,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACjD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnB,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC7C,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC;IAEM,MAAM,CAAC,UAAU;QACvB,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAClE,CAAC;IAEM,MAAM,CAAC,SAAS,CAAC,MAAc;QACrC,OAAO,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IACjD,CAAC;IAEM,MAAM,CAAC,IAAI;QACjB,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;IAEM,MAAM,CAAC,MAAM;QACnB,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/C,CAAC;IAEM,MAAM,CAAC,IAAI;QACjB,MAAM,GAAG,GAAQ,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC;QACvC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACzE,OAAO,GAAG,CAAC;IACZ,CAAC;IAEM,MAAM,CAAC,IAAI;QACjB,MAAM,GAAG,GAAQ,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC;QACvC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE;YAC1B,MAAM,IAAI,GAAG,EAAE,CAAC;YAChB,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC3C,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;gBACxB,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAChC,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACzB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAEhC,KAAK,CAAC,GAAG,EAAE,CAAC;gBACZ,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;gBACjC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBACzB,KAAK,CAAC,GAAG,EAAE,CAAC;oBACZ,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;iBAC/B;gBACD,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;gBACpC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE;oBACtB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC;wBAAE,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC/C,CAAC,CAAC,CAAC;gBAEH,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YACzB,CAAC,CAAC,CAAC;YACH,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;QACpB,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,CAAC;IACZ,CAAC;;AA3DF,4BA8DC;AADwB,iBAAO,GAA0B,IAAI,GAAG,EAAoB,CAAC"}