@thzero/library_server 0.18.21 → 0.18.22

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 (53) hide show
  1. package/README.md +112 -112
  2. package/boot/index.js +529 -529
  3. package/boot/plugins/admin/index.js +6 -6
  4. package/boot/plugins/admin/news.js +33 -33
  5. package/boot/plugins/admin/users.js +33 -33
  6. package/boot/plugins/api.js +64 -64
  7. package/boot/plugins/apiFront.js +31 -31
  8. package/boot/plugins/index.js +70 -70
  9. package/boot/plugins/news.js +44 -44
  10. package/boot/plugins/users.js +46 -46
  11. package/boot/plugins/usersExtended.js +32 -32
  12. package/constants.js +45 -45
  13. package/data/baseNews.js +42 -42
  14. package/data/baseSettingsUser.js +9 -9
  15. package/data/baseUser.js +28 -28
  16. package/data/index.js +24 -24
  17. package/data/named.js +20 -20
  18. package/errors/tokenExpired.js +7 -7
  19. package/license.md +8 -8
  20. package/openSource.js +66 -66
  21. package/package.json +38 -38
  22. package/repository/index.js +182 -182
  23. package/repository/usageMetrics/devnull.js +16 -16
  24. package/routes/index.js +76 -76
  25. package/service/admin/baseNews.js +45 -45
  26. package/service/admin/index.js +130 -130
  27. package/service/admin/news.js +6 -6
  28. package/service/admin/users.js +107 -107
  29. package/service/baseSecurity.js +183 -183
  30. package/service/baseUser.js +122 -122
  31. package/service/communication.js +6 -6
  32. package/service/config.js +37 -37
  33. package/service/crypto.js +16 -16
  34. package/service/discovery/index.js +6 -6
  35. package/service/discovery/resources/index.js +101 -101
  36. package/service/external.js +19 -19
  37. package/service/externalRest.js +19 -19
  38. package/service/index.js +20 -20
  39. package/service/monitoring.js +12 -12
  40. package/service/news/base.js +59 -59
  41. package/service/news/index.js +6 -6
  42. package/service/news/validation/index.js +6 -6
  43. package/service/plans.js +31 -31
  44. package/service/restCommunication.js +21 -21
  45. package/service/usageMetrics.js +84 -84
  46. package/service/utility.js +190 -190
  47. package/service/version.js +37 -37
  48. package/utility/injector.js +59 -59
  49. package/utility/internalIp/index.js +48 -48
  50. package/utility/list/doubleLinked.js +88 -88
  51. package/utility/list/priorityQueue.js +109 -109
  52. package/utility/list/queue.js +72 -72
  53. package/utility/os.js +20 -20
package/service/config.js CHANGED
@@ -1,37 +1,37 @@
1
- import ConfigService from '@thzero/library_common_service/service/config.js';
2
-
3
- class ServerConfigService extends ConfigService {
4
- constructor(config) {
5
- super(config);
6
- }
7
-
8
- getBackend(key) {
9
- try {
10
- if (String.isNullOrEmpty(key))
11
- return null;
12
-
13
- if (!this._config)
14
- return null;
15
-
16
- const configBackend = this._config.get('backend', null);
17
- if (!configBackend)
18
- return null;
19
-
20
- if (!Array.isArray(configBackend))
21
- return null;
22
-
23
- key = key.toLowerCase();
24
- for (const item of configBackend) {
25
- if (item.key.toLowerCase() === key)
26
- return item;
27
- }
28
- }
29
- catch (err) {
30
- this._error('ServerConfigService', 'getBackend', null, err, null, null, correlationId);
31
- }
32
-
33
- return null;
34
- }
35
- }
36
-
37
- export default ServerConfigService;
1
+ import ConfigService from '@thzero/library_common_service/service/config.js';
2
+
3
+ class ServerConfigService extends ConfigService {
4
+ constructor(config) {
5
+ super(config);
6
+ }
7
+
8
+ getBackend(key) {
9
+ try {
10
+ if (String.isNullOrEmpty(key))
11
+ return null;
12
+
13
+ if (!this._config)
14
+ return null;
15
+
16
+ const configBackend = this._config.get('backend', null);
17
+ if (!configBackend)
18
+ return null;
19
+
20
+ if (!Array.isArray(configBackend))
21
+ return null;
22
+
23
+ key = key.toLowerCase();
24
+ for (const item of configBackend) {
25
+ if (item.key.toLowerCase() === key)
26
+ return item;
27
+ }
28
+ }
29
+ catch (err) {
30
+ this._error('ServerConfigService', 'getBackend', null, err, null, null, correlationId);
31
+ }
32
+
33
+ return null;
34
+ }
35
+ }
36
+
37
+ export default ServerConfigService;
package/service/crypto.js CHANGED
@@ -1,16 +1,16 @@
1
- import crypto from 'crypto';
2
-
3
- import Service from './index.js';
4
-
5
- const encoder = new TextEncoder();
6
-
7
- class CryptoService extends Service {
8
- async checksum(input, algorithm, encoding) {
9
- return crypto
10
- .createHash(algorithm || 'sha256')
11
- .update(encoder.encode(input), 'utf8')
12
- .digest(encoding || 'hex');
13
- }
14
- }
15
-
16
- export default CryptoService;
1
+ import crypto from 'crypto';
2
+
3
+ import Service from './index.js';
4
+
5
+ const encoder = new TextEncoder();
6
+
7
+ class CryptoService extends Service {
8
+ async checksum(input, algorithm, encoding) {
9
+ return crypto
10
+ .createHash(algorithm || 'sha256')
11
+ .update(encoder.encode(input), 'utf8')
12
+ .digest(encoding || 'hex');
13
+ }
14
+ }
15
+
16
+ export default CryptoService;
@@ -1,6 +1,6 @@
1
- import BaseService from '@thzero/library_server/service/index.js';
2
-
3
- class DiscoveryService extends BaseService {
4
- }
5
-
6
- export default DiscoveryService;
1
+ import BaseService from '@thzero/library_server/service/index.js';
2
+
3
+ class DiscoveryService extends BaseService {
4
+ }
5
+
6
+ export default DiscoveryService;
@@ -1,101 +1,101 @@
1
- import NotImplementedError from '@thzero/library_common/errors/notImplemented.js';
2
-
3
- import DiscoveryService from '../index.js';
4
-
5
- class ResourcesDiscoveryService extends DiscoveryService {
6
- async cleanup(correlationId) {
7
- }
8
-
9
- get allowsHeartbeat() {
10
- return true;
11
- }
12
-
13
- async cleanup(correlationId) {
14
- try {
15
- return this._cleanup(correlationId);
16
- }
17
- catch(err) {
18
- return this._error('ResourceDiscoveryService', 'cleanup', null, err, null, null, correlationId);
19
- }
20
- }
21
-
22
- async deregister(correlationId, name) {
23
- try {
24
- this._enforceNotEmpty('ResourceDiscoveryService', 'deregister', name, 'name', correlationId);
25
-
26
- return this._deregister(correlationId);
27
- }
28
- catch(err) {
29
- return this._error('ResourceDiscoveryService', 'deregister', null, err, null, null, correlationId);
30
- }
31
- }
32
-
33
- async getService(correlationId, name) {
34
- try {
35
- this._enforceNotEmpty('ResourceDiscoveryService', 'getService', name, 'name', correlationId);
36
-
37
- return this._getService(correlationId, name);
38
- }
39
- catch(err) {
40
- return this._error('ResourceDiscoveryService', 'getService', null, err, null, null, correlationId);
41
- }
42
- }
43
-
44
- // options { name, ttl, description }
45
- async initializeDiscovery(opts) {
46
- try {
47
- this._enforceNotEmpty('ResourceDiscoveryService', 'initializeDiscovery', opts, 'opts', null);
48
- this._enforceNotEmpty('ResourceDiscoveryService', 'initializeDiscovery', opts.address, 'address', null);
49
- this._enforceNotNull('ResourceDiscoveryService', 'initializeDiscovery', opts.port, 'port', null);
50
-
51
- return await this._initializeDiscovery(opts);
52
- }
53
- catch(err) {
54
- return this._error('ResourceDiscoveryService', 'initializeDiscovery', null, err, null, null, null);
55
- }
56
- }
57
-
58
- async listing(correlationId) {
59
- return this._listing(correlationId);
60
- }
61
-
62
- // options { name, ttl, description }
63
- async register(correlationId, opts) {
64
- try {
65
- this._enforceNotEmpty('ResourceDiscoveryService', 'register', opts, 'opts', correlationId);
66
- this._enforceNotEmpty('ResourceDiscoveryService', 'register', opts.address, 'address', correlationId);
67
- this._enforceNotNull('ResourceDiscoveryService', 'register', opts.port, 'port', correlationId);
68
-
69
- return await this._register(correlationId, opts);
70
- }
71
- catch(err) {
72
- return this._error('ResourceDiscoveryService', 'register', null, err, null, null, correlationId);
73
- }
74
- }
75
-
76
- async _cleanup(correlationId) {
77
- throw new NotImplementedError();
78
- }
79
-
80
- async _deregister(correlationId, name) {
81
- throw new NotImplementedError();
82
- }
83
-
84
- async _getService(correlationId, name) {
85
- throw new NotImplementedError();
86
- }
87
-
88
- async _initializeDiscovery(opts) {
89
- throw new NotImplementedError();
90
- }
91
-
92
- async _register(correlationId, opts) {
93
- throw new NotImplementedError();
94
- }
95
-
96
- async _listing(correlationId) {
97
- throw new NotImplementedError();
98
- }
99
- }
100
-
101
- export default ResourcesDiscoveryService;
1
+ import NotImplementedError from '@thzero/library_common/errors/notImplemented.js';
2
+
3
+ import DiscoveryService from '../index.js';
4
+
5
+ class ResourcesDiscoveryService extends DiscoveryService {
6
+ async cleanup(correlationId) {
7
+ }
8
+
9
+ get allowsHeartbeat() {
10
+ return true;
11
+ }
12
+
13
+ async cleanup(correlationId) {
14
+ try {
15
+ return this._cleanup(correlationId);
16
+ }
17
+ catch(err) {
18
+ return this._error('ResourceDiscoveryService', 'cleanup', null, err, null, null, correlationId);
19
+ }
20
+ }
21
+
22
+ async deregister(correlationId, name) {
23
+ try {
24
+ this._enforceNotEmpty('ResourceDiscoveryService', 'deregister', name, 'name', correlationId);
25
+
26
+ return this._deregister(correlationId);
27
+ }
28
+ catch(err) {
29
+ return this._error('ResourceDiscoveryService', 'deregister', null, err, null, null, correlationId);
30
+ }
31
+ }
32
+
33
+ async getService(correlationId, name) {
34
+ try {
35
+ this._enforceNotEmpty('ResourceDiscoveryService', 'getService', name, 'name', correlationId);
36
+
37
+ return this._getService(correlationId, name);
38
+ }
39
+ catch(err) {
40
+ return this._error('ResourceDiscoveryService', 'getService', null, err, null, null, correlationId);
41
+ }
42
+ }
43
+
44
+ // options { name, ttl, description }
45
+ async initializeDiscovery(opts) {
46
+ try {
47
+ this._enforceNotEmpty('ResourceDiscoveryService', 'initializeDiscovery', opts, 'opts', null);
48
+ this._enforceNotEmpty('ResourceDiscoveryService', 'initializeDiscovery', opts.address, 'address', null);
49
+ this._enforceNotNull('ResourceDiscoveryService', 'initializeDiscovery', opts.port, 'port', null);
50
+
51
+ return await this._initializeDiscovery(opts);
52
+ }
53
+ catch(err) {
54
+ return this._error('ResourceDiscoveryService', 'initializeDiscovery', null, err, null, null, null);
55
+ }
56
+ }
57
+
58
+ async listing(correlationId) {
59
+ return this._listing(correlationId);
60
+ }
61
+
62
+ // options { name, ttl, description }
63
+ async register(correlationId, opts) {
64
+ try {
65
+ this._enforceNotEmpty('ResourceDiscoveryService', 'register', opts, 'opts', correlationId);
66
+ this._enforceNotEmpty('ResourceDiscoveryService', 'register', opts.address, 'address', correlationId);
67
+ this._enforceNotNull('ResourceDiscoveryService', 'register', opts.port, 'port', correlationId);
68
+
69
+ return await this._register(correlationId, opts);
70
+ }
71
+ catch(err) {
72
+ return this._error('ResourceDiscoveryService', 'register', null, err, null, null, correlationId);
73
+ }
74
+ }
75
+
76
+ async _cleanup(correlationId) {
77
+ throw new NotImplementedError();
78
+ }
79
+
80
+ async _deregister(correlationId, name) {
81
+ throw new NotImplementedError();
82
+ }
83
+
84
+ async _getService(correlationId, name) {
85
+ throw new NotImplementedError();
86
+ }
87
+
88
+ async _initializeDiscovery(opts) {
89
+ throw new NotImplementedError();
90
+ }
91
+
92
+ async _register(correlationId, opts) {
93
+ throw new NotImplementedError();
94
+ }
95
+
96
+ async _listing(correlationId) {
97
+ throw new NotImplementedError();
98
+ }
99
+ }
100
+
101
+ export default ResourcesDiscoveryService;
@@ -1,19 +1,19 @@
1
- import LibraryConstants from '../constants.js';
2
-
3
- import Service from './index.js';
4
-
5
- class ExternalService extends Service {
6
- constructor() {
7
- super();
8
-
9
- this._serviceCommunicationRest = null;
10
- }
11
-
12
- async init(injector) {
13
- await super.init(injector);
14
-
15
- this._serviceCommunicationRest = this._injector.getService(LibraryConstants.InjectorKeys.SERVICE_COMMUNICATION_REST);
16
- }
17
- }
18
-
19
- export default ExternalService;
1
+ import LibraryConstants from '../constants.js';
2
+
3
+ import Service from './index.js';
4
+
5
+ class ExternalService extends Service {
6
+ constructor() {
7
+ super();
8
+
9
+ this._serviceCommunicationRest = null;
10
+ }
11
+
12
+ async init(injector) {
13
+ await super.init(injector);
14
+
15
+ this._serviceCommunicationRest = this._injector.getService(LibraryConstants.InjectorKeys.SERVICE_COMMUNICATION_REST);
16
+ }
17
+ }
18
+
19
+ export default ExternalService;
@@ -1,19 +1,19 @@
1
- import LibraryServerConstants from '../constants.js';
2
-
3
- import ExternalService from './external.js';
4
-
5
- class RestExternalService extends ExternalService {
6
- constructor() {
7
- super();
8
-
9
- this._serviceCommunicationRest = null;
10
- }
11
-
12
- async init(injector) {
13
- await super.init(injector);
14
-
15
- this._serviceCommunicationRest = this._injector.getService(LibraryServerConstants.InjectorKeys.SERVICE_COMMUNICATION_REST);
16
- }
17
- }
18
-
19
- export default RestExternalService;
1
+ import LibraryServerConstants from '../constants.js';
2
+
3
+ import ExternalService from './external.js';
4
+
5
+ class RestExternalService extends ExternalService {
6
+ constructor() {
7
+ super();
8
+
9
+ this._serviceCommunicationRest = null;
10
+ }
11
+
12
+ async init(injector) {
13
+ await super.init(injector);
14
+
15
+ this._serviceCommunicationRest = this._injector.getService(LibraryServerConstants.InjectorKeys.SERVICE_COMMUNICATION_REST);
16
+ }
17
+ }
18
+
19
+ export default RestExternalService;
package/service/index.js CHANGED
@@ -1,20 +1,20 @@
1
- import Service from '@thzero/library_common_service/service/index.js';
2
-
3
- class ServerService extends Service {
4
- constructor() {
5
- super();
6
- }
7
-
8
- _validateUser(correlationId, user) {
9
- if (!user)
10
- return this._error('Service', '_validateUser', 'Invalid user', null, null, null, correlationId);
11
-
12
- if (String.isNullOrEmpty(user.id))
13
- return this._error('Service', '_validateUser', 'Invalid user.id', null, null, null, correlationId);
14
-
15
- this._logger.debug('Service', '_validateUser', 'userId', user.id, correlationId);
16
- return this._success(correlationId);
17
- }
18
- }
19
-
20
- export default ServerService;
1
+ import Service from '@thzero/library_common_service/service/index.js';
2
+
3
+ class ServerService extends Service {
4
+ constructor() {
5
+ super();
6
+ }
7
+
8
+ _validateUser(correlationId, user) {
9
+ if (!user)
10
+ return this._error('Service', '_validateUser', 'Invalid user', null, null, null, correlationId);
11
+
12
+ if (String.isNullOrEmpty(user.id))
13
+ return this._error('Service', '_validateUser', 'Invalid user.id', null, null, null, correlationId);
14
+
15
+ this._logger.debug('Service', '_validateUser', 'userId', user.id, correlationId);
16
+ return this._success(correlationId);
17
+ }
18
+ }
19
+
20
+ export default ServerService;
@@ -1,13 +1,13 @@
1
- import BaseMonitoringService from '@thzero/library_common_service/service/monitoring.js';
2
-
3
- class NullMonitoringService extends BaseMonitoringService {
4
- constructor() {
5
- super();
6
- }
7
-
8
- async init(injector) {
9
- await super.init(injector);
10
- }
11
- }
12
-
1
+ import BaseMonitoringService from '@thzero/library_common_service/service/monitoring.js';
2
+
3
+ class NullMonitoringService extends BaseMonitoringService {
4
+ constructor() {
5
+ super();
6
+ }
7
+
8
+ async init(injector) {
9
+ await super.init(injector);
10
+ }
11
+ }
12
+
13
13
  export default NullMonitoringService;
@@ -1,59 +1,59 @@
1
- import LibraryServerConstants from '../../constants.js';
2
-
3
- import Service from '../../service/index.js';
4
-
5
- class BaseNewsService extends Service {
6
- constructor() {
7
- super();
8
-
9
- this._repositoryNewsI = null;
10
-
11
- this._serviceValidationNews = null;
12
- }
13
-
14
- async init(injector) {
15
- await super.init(injector);
16
-
17
- this._repositoryNewsI = this._injector.getService(LibraryServerConstants.InjectorKeys.REPOSITORY_NEWS);
18
-
19
- this._serviceValidationNews = this._injector.getService(LibraryServerConstants.InjectorKeys.SERVICE_VALIDATION_NEWS);
20
- }
21
-
22
- async latest(correlationId, user, timestamp) {
23
- this._enforceNotEmpty('BaseNewsService', 'latest', timestamp, 'timestamp', correlationId);
24
-
25
- try {
26
- try {
27
- timestamp = parseInt(timestamp);
28
- }
29
- catch (err) {
30
- return this._error('BaseNewsService', 'latest', 'Invalid timestamp.', null, err, null, correlationId);
31
- }
32
-
33
- const validationCheckNewsTiemstampResponse = this._serviceValidation.check(correlationId, this._serviceValidationNews.newsTimestampSchema, timestamp, null, 'news');
34
- if (!validationCheckNewsTiemstampResponse.success)
35
- return validationCheckNewsTiemstampResponse;
36
-
37
- const respositoryResponse = await this._repositoryNews.latest(correlationId, timestamp);
38
- if (this._hasFailed(respositoryResponse))
39
- return respositoryResponse;
40
-
41
- let data = respositoryResponse.results.data;
42
- if (data)
43
- data = data.filter(l => (l.requiresAuth && user) || !l.requiresAuth);
44
- respositoryResponse.results.data = data;
45
- respositoryResponse.results.count = data.length;
46
-
47
- return respositoryResponse;
48
- }
49
- catch (err) {
50
- return this._error('BaseNewsService', 'latest', null, err, null, null, correlationId);
51
- }
52
- }
53
-
54
- get _repositoryNews() {
55
- return this._repositoryNewsI;
56
- }
57
- }
58
-
59
- export default BaseNewsService;
1
+ import LibraryServerConstants from '../../constants.js';
2
+
3
+ import Service from '../../service/index.js';
4
+
5
+ class BaseNewsService extends Service {
6
+ constructor() {
7
+ super();
8
+
9
+ this._repositoryNewsI = null;
10
+
11
+ this._serviceValidationNews = null;
12
+ }
13
+
14
+ async init(injector) {
15
+ await super.init(injector);
16
+
17
+ this._repositoryNewsI = this._injector.getService(LibraryServerConstants.InjectorKeys.REPOSITORY_NEWS);
18
+
19
+ this._serviceValidationNews = this._injector.getService(LibraryServerConstants.InjectorKeys.SERVICE_VALIDATION_NEWS);
20
+ }
21
+
22
+ async latest(correlationId, user, timestamp) {
23
+ this._enforceNotEmpty('BaseNewsService', 'latest', timestamp, 'timestamp', correlationId);
24
+
25
+ try {
26
+ try {
27
+ timestamp = parseInt(timestamp);
28
+ }
29
+ catch (err) {
30
+ return this._error('BaseNewsService', 'latest', 'Invalid timestamp.', null, err, null, correlationId);
31
+ }
32
+
33
+ const validationCheckNewsTiemstampResponse = this._serviceValidation.check(correlationId, this._serviceValidationNews.newsTimestampSchema, timestamp, null, 'news');
34
+ if (!validationCheckNewsTiemstampResponse.success)
35
+ return validationCheckNewsTiemstampResponse;
36
+
37
+ const respositoryResponse = await this._repositoryNews.latest(correlationId, timestamp);
38
+ if (this._hasFailed(respositoryResponse))
39
+ return respositoryResponse;
40
+
41
+ let data = respositoryResponse.results.data;
42
+ if (data)
43
+ data = data.filter(l => (l.requiresAuth && user) || !l.requiresAuth);
44
+ respositoryResponse.results.data = data;
45
+ respositoryResponse.results.count = data.length;
46
+
47
+ return respositoryResponse;
48
+ }
49
+ catch (err) {
50
+ return this._error('BaseNewsService', 'latest', null, err, null, null, correlationId);
51
+ }
52
+ }
53
+
54
+ get _repositoryNews() {
55
+ return this._repositoryNewsI;
56
+ }
57
+ }
58
+
59
+ export default BaseNewsService;
@@ -1,6 +1,6 @@
1
- import BaseNewsService from './base.js';
2
-
3
- class NewsService extends BaseNewsService {
4
- }
5
-
6
- export default NewsService;
1
+ import BaseNewsService from './base.js';
2
+
3
+ class NewsService extends BaseNewsService {
4
+ }
5
+
6
+ export default NewsService;
@@ -1,6 +1,6 @@
1
- import BaseNewsJoiBaseValidationService from './joi.js';
2
-
3
- class NewsValidationService extends BaseNewsJoiBaseValidationService {
4
- }
5
-
6
- export default NewsValidationService;
1
+ import BaseNewsJoiBaseValidationService from './joi.js';
2
+
3
+ class NewsValidationService extends BaseNewsJoiBaseValidationService {
4
+ }
5
+
6
+ export default NewsValidationService;