@sera4/essentia 1.1.65 → 3.0.6

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 (112) hide show
  1. package/README.md +352 -8
  2. package/dist/ts/cache/index.d.ts +33 -0
  3. package/dist/ts/cache/index.js +171 -0
  4. package/dist/ts/cache/index.js.map +1 -0
  5. package/dist/ts/configurations/server-config.d.ts +4 -0
  6. package/dist/ts/configurations/server-config.js +2 -0
  7. package/dist/ts/configurations/server-config.js.map +1 -0
  8. package/dist/ts/constants/index.d.ts +7 -0
  9. package/{constants → dist/ts/constants}/index.js +5 -6
  10. package/dist/ts/constants/index.js.map +1 -0
  11. package/dist/ts/cycle/index.d.ts +53 -0
  12. package/dist/ts/cycle/index.js +169 -0
  13. package/dist/ts/cycle/index.js.map +1 -0
  14. package/dist/ts/dns/DnsCache.d.ts +50 -0
  15. package/dist/ts/dns/DnsCache.js +137 -0
  16. package/dist/ts/dns/DnsCache.js.map +1 -0
  17. package/dist/ts/dns/index.d.ts +4 -0
  18. package/dist/ts/dns/index.js +4 -0
  19. package/dist/ts/dns/index.js.map +1 -0
  20. package/dist/ts/formatter/index.d.ts +44 -0
  21. package/dist/ts/formatter/index.js +76 -0
  22. package/dist/ts/formatter/index.js.map +1 -0
  23. package/dist/ts/hal/index.d.ts +26 -0
  24. package/dist/ts/hal/index.js +70 -0
  25. package/dist/ts/hal/index.js.map +1 -0
  26. package/dist/ts/health/index.d.ts +53 -0
  27. package/dist/ts/health/index.js +165 -0
  28. package/dist/ts/health/index.js.map +1 -0
  29. package/dist/ts/helpers/index.d.ts +1 -0
  30. package/dist/ts/helpers/index.js +2 -0
  31. package/dist/ts/helpers/index.js.map +1 -0
  32. package/dist/ts/helpers/test-server-wrapper.d.ts +56 -0
  33. package/dist/ts/helpers/test-server-wrapper.js +144 -0
  34. package/dist/ts/helpers/test-server-wrapper.js.map +1 -0
  35. package/dist/ts/index.d.ts +21 -0
  36. package/dist/ts/index.js +25 -0
  37. package/dist/ts/index.js.map +1 -0
  38. package/dist/ts/last-commit/index.d.ts +12 -0
  39. package/dist/ts/last-commit/index.js +82 -0
  40. package/dist/ts/last-commit/index.js.map +1 -0
  41. package/dist/ts/logger/index.d.ts +3 -0
  42. package/dist/ts/logger/index.js +4 -0
  43. package/dist/ts/logger/index.js.map +1 -0
  44. package/dist/ts/logger/s4-logger.d.ts +23 -0
  45. package/dist/ts/logger/s4-logger.js +103 -0
  46. package/dist/ts/logger/s4-logger.js.map +1 -0
  47. package/dist/ts/paginator/index.d.ts +2 -0
  48. package/dist/ts/paginator/index.js +3 -0
  49. package/dist/ts/paginator/index.js.map +1 -0
  50. package/dist/ts/paginator/s4-pagination.d.ts +26 -0
  51. package/dist/ts/paginator/s4-pagination.js +49 -0
  52. package/dist/ts/paginator/s4-pagination.js.map +1 -0
  53. package/dist/ts/paginator/sql-pagination.d.ts +52 -0
  54. package/dist/ts/paginator/sql-pagination.js +157 -0
  55. package/dist/ts/paginator/sql-pagination.js.map +1 -0
  56. package/dist/ts/paper-trail/helpers.d.ts +14 -0
  57. package/dist/ts/paper-trail/helpers.js +74 -0
  58. package/dist/ts/paper-trail/helpers.js.map +1 -0
  59. package/dist/ts/paper-trail/index.d.ts +54 -0
  60. package/dist/ts/paper-trail/index.js +236 -0
  61. package/dist/ts/paper-trail/index.js.map +1 -0
  62. package/dist/ts/prompts/index.d.ts +21 -0
  63. package/dist/ts/prompts/index.js +68 -0
  64. package/dist/ts/prompts/index.js.map +1 -0
  65. package/dist/ts/queue/index.d.ts +196 -0
  66. package/dist/ts/queue/index.js +371 -0
  67. package/dist/ts/queue/index.js.map +1 -0
  68. package/dist/ts/queue/publisher.d.ts +41 -0
  69. package/dist/ts/queue/publisher.js +84 -0
  70. package/dist/ts/queue/publisher.js.map +1 -0
  71. package/dist/ts/queue/queue-logger.d.ts +10 -0
  72. package/dist/ts/queue/queue-logger.js +35 -0
  73. package/dist/ts/queue/queue-logger.js.map +1 -0
  74. package/dist/ts/queue/subscriber.d.ts +55 -0
  75. package/dist/ts/queue/subscriber.js +98 -0
  76. package/dist/ts/queue/subscriber.js.map +1 -0
  77. package/dist/ts/safe-proxy/index.d.ts +35 -0
  78. package/dist/ts/safe-proxy/index.js +54 -0
  79. package/dist/ts/safe-proxy/index.js.map +1 -0
  80. package/dist/ts/serializer/index.d.ts +52 -0
  81. package/dist/ts/serializer/index.js +83 -0
  82. package/dist/ts/serializer/index.js.map +1 -0
  83. package/dist/ts/utils/index.d.ts +49 -0
  84. package/dist/ts/utils/index.js +157 -0
  85. package/dist/ts/utils/index.js.map +1 -0
  86. package/package.json +52 -11
  87. package/package.tar.gz +0 -0
  88. package/cache/index.js +0 -188
  89. package/formatter/index.js +0 -81
  90. package/hal/README.md +0 -54
  91. package/hal/index.js +0 -75
  92. package/health/health-logger.js +0 -40
  93. package/health/index.js +0 -188
  94. package/helpers/index.js +0 -1
  95. package/helpers/test-server-wrapper.js +0 -196
  96. package/last-commit.js +0 -12
  97. package/last_commit/index.js +0 -82
  98. package/logger/s4-logger.js +0 -128
  99. package/paginator/README.md +0 -183
  100. package/paginator/s4-pagination.js +0 -51
  101. package/paginator/sql-pagination.js +0 -178
  102. package/paper-trail/README.md +0 -68
  103. package/paper-trail/helpers.js +0 -99
  104. package/paper-trail/index.js +0 -842
  105. package/prompts/index.js +0 -78
  106. package/queue/index.js +0 -414
  107. package/queue/publisher.js +0 -96
  108. package/queue/queue-logger.js +0 -40
  109. package/queue/subscriber.js +0 -107
  110. package/safe_proxy/index.js +0 -61
  111. package/serializer/index.js +0 -90
  112. package/utils/index.js +0 -74
@@ -0,0 +1,53 @@
1
+ import { Request, Response } from 'express';
2
+ interface HealthCheckResult {
3
+ name: string;
4
+ result: 'success' | 'fail';
5
+ critical?: boolean;
6
+ status?: number;
7
+ }
8
+ interface HealthCheckConfig {
9
+ name: string;
10
+ checkResult?: boolean;
11
+ critical: boolean;
12
+ healthFunction: () => Promise<boolean | HealthCheckResult>;
13
+ }
14
+ interface ExpressRequest extends Request {
15
+ baseUrl: string;
16
+ path: string;
17
+ }
18
+ interface ExpressResponse extends Response {
19
+ status: (code: number) => this;
20
+ json: (data: any) => this;
21
+ send: (data: any) => this;
22
+ setHeader: (name: string, value: string | number) => this;
23
+ }
24
+ interface ExpressRouter {
25
+ get: (path: string, handler: (req: ExpressRequest, res: ExpressResponse) => void) => void;
26
+ }
27
+ interface ExpressApp {
28
+ use: (middleware: any) => void;
29
+ }
30
+ export declare class HealthCheckError extends Error {
31
+ constructor(message: string);
32
+ }
33
+ export declare class HealthCheck {
34
+ private readonly logger;
35
+ private readonly defaultResponse;
36
+ private readonly defaultPathRoute;
37
+ private suppressLogs;
38
+ private lastCallId;
39
+ private pathPrefix;
40
+ private healthChecks;
41
+ constructor(appendData?: Record<string, unknown>, enableLogging?: boolean);
42
+ /**
43
+ * @deprecated Use setupCheck instead
44
+ */
45
+ addCheck(fcn: () => Promise<HealthCheckResult>): void;
46
+ setPrefix(prefix: string): void;
47
+ defaultPath(prefix?: string): string;
48
+ routes(router: ExpressRouter): ExpressRouter;
49
+ suppressHealthCheckLog(app: ExpressApp): void;
50
+ setupCheck(config: HealthCheckConfig): void;
51
+ private checkHealth;
52
+ }
53
+ export default HealthCheck;
@@ -0,0 +1,165 @@
1
+ import path from 'path';
2
+ import morgan from 'morgan';
3
+ import { S4Logger } from '../logger/index.js';
4
+ export class HealthCheckError extends Error {
5
+ constructor(message) {
6
+ super(message);
7
+ this.name = 'HealthCheckError';
8
+ }
9
+ }
10
+ export class HealthCheck {
11
+ constructor(appendData = {}, enableLogging = true) {
12
+ this.logger = new S4Logger();
13
+ this.logger.configure({ level: enableLogging ? 'debug' : 'error' });
14
+ this.defaultResponse = {
15
+ appendData,
16
+ status: 200,
17
+ errors: {}
18
+ };
19
+ this.defaultPathRoute = 'health_check(.*)?';
20
+ this.suppressLogs = false;
21
+ this.lastCallId = 0;
22
+ this.pathPrefix = '';
23
+ this.healthChecks = [];
24
+ }
25
+ /**
26
+ * @deprecated Use setupCheck instead
27
+ */
28
+ addCheck(fcn) {
29
+ this.healthChecks.push(fcn);
30
+ }
31
+ setPrefix(prefix) {
32
+ this.pathPrefix = prefix;
33
+ }
34
+ defaultPath(prefix = '') {
35
+ if (prefix === '') {
36
+ prefix = this.pathPrefix;
37
+ }
38
+ return `${prefix}/${this.defaultPathRoute}`;
39
+ }
40
+ routes(router) {
41
+ if (!router) {
42
+ throw new HealthCheckError('missing_express_router');
43
+ }
44
+ router.get('/', (req, res) => {
45
+ this.checkHealth(req, res);
46
+ });
47
+ return router;
48
+ }
49
+ suppressHealthCheckLog(app) {
50
+ app.use(morgan('combined', {
51
+ skip: (req) => {
52
+ const expressReq = req;
53
+ return expressReq.path === this.defaultPath();
54
+ }
55
+ }));
56
+ }
57
+ setupCheck(config) {
58
+ this.healthChecks.push(config);
59
+ }
60
+ async checkHealth(req, res) {
61
+ const checkFormat = path.extname(req.baseUrl);
62
+ const result = await Promise.all(this.healthChecks.map(async (hc) => {
63
+ if (typeof hc === 'function') {
64
+ try {
65
+ return await hc();
66
+ }
67
+ catch (e) {
68
+ return { name: 'unknown', result: 'fail', status: e.status };
69
+ }
70
+ }
71
+ else {
72
+ const res = {
73
+ name: hc.name,
74
+ critical: hc.critical
75
+ };
76
+ try {
77
+ const result = await hc.healthFunction();
78
+ if (typeof result === 'boolean') {
79
+ res.result = result ? 'success' : 'fail';
80
+ }
81
+ else {
82
+ res.result = 'success';
83
+ }
84
+ return res;
85
+ }
86
+ catch (e) {
87
+ const appendStatus = e.status ? ` (${e.status})` : '';
88
+ this.logger.warn(`${hc.name} service failed${appendStatus}`);
89
+ return {
90
+ ...res,
91
+ result: 'fail',
92
+ status: e.status
93
+ };
94
+ }
95
+ }
96
+ }));
97
+ try {
98
+ let callId = ++this.lastCallId;
99
+ if ((callId % (1 << 30)) === 0) {
100
+ callId = this.lastCallId = 1;
101
+ }
102
+ let status = this.defaultResponse.status;
103
+ let nonCriticalFail = false;
104
+ let criticalFail = false;
105
+ result.some((e) => {
106
+ if (e.result.match(/fail/)) {
107
+ if ('critical' in e && e.critical === false) {
108
+ nonCriticalFail = true;
109
+ }
110
+ else {
111
+ criticalFail = true;
112
+ status = 500;
113
+ return true;
114
+ }
115
+ }
116
+ return false;
117
+ });
118
+ res.setHeader('check', callId);
119
+ if (checkFormat === '.json') {
120
+ const payload = {
121
+ check: callId,
122
+ healthy: true,
123
+ message: 'success'
124
+ };
125
+ if (criticalFail) {
126
+ res.status(status).json({
127
+ ...payload,
128
+ healthy: false,
129
+ message: 'fail',
130
+ services: result
131
+ });
132
+ }
133
+ else if (nonCriticalFail) {
134
+ res.status(status).json({
135
+ ...payload,
136
+ message: 'fail',
137
+ services: result
138
+ });
139
+ }
140
+ else if (status === 200) {
141
+ res.status(status).json(payload);
142
+ }
143
+ }
144
+ else {
145
+ let statusMessage;
146
+ if (criticalFail) {
147
+ statusMessage = 'fail';
148
+ }
149
+ else if ((status === 200) || nonCriticalFail) {
150
+ statusMessage = 'success';
151
+ }
152
+ else {
153
+ statusMessage = 'unknown';
154
+ }
155
+ res.status(status).send(statusMessage);
156
+ }
157
+ }
158
+ catch (error) {
159
+ this.logger.error('Health check error:', error);
160
+ res.status(500).send('Internal Server Error');
161
+ }
162
+ }
163
+ }
164
+ export default HealthCheck;
165
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../ts/health/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from "./test-server-wrapper.js";
@@ -0,0 +1,2 @@
1
+ export * from "./test-server-wrapper.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../ts/helpers/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC"}
@@ -0,0 +1,56 @@
1
+ interface RequestOptions {
2
+ headers?: Record<string, string>;
3
+ body?: any;
4
+ }
5
+ interface V1API {
6
+ get: (url: string) => any;
7
+ post: (url: string) => any;
8
+ put: (url: string) => any;
9
+ delete: (url: string) => any;
10
+ }
11
+ /**
12
+ * A small wrapper around an express js server
13
+ * meant to be used in unit tests
14
+ */
15
+ export declare class TestServerWrapper {
16
+ private server;
17
+ private defaultHeaders;
18
+ private apiPrefix;
19
+ private routePrinter;
20
+ private chai;
21
+ private mobileDomain;
22
+ private webDomain;
23
+ private factory;
24
+ v1: V1API;
25
+ constructor(apiPrefix: string, expressServer: any, defaultHeaders: Record<string, string>, oldAuthToken: string, routePrinter: any, chai: any, factory: any);
26
+ /**
27
+ * Adds a leading slash to the url if missing
28
+ * @param {String} url the url to sanitize
29
+ * @returns sanitized url
30
+ */
31
+ sanitizeUrl(url: string): string;
32
+ /**
33
+ * Apply given headers to the request object
34
+ * @param {Object} request
35
+ * @param {Object} headers
36
+ */
37
+ applyHeaders(request: any, headers: Record<string, string>): void;
38
+ get(url: string, options?: RequestOptions): any;
39
+ getWithPrefix(prefix: string, url: string, options?: RequestOptions): any;
40
+ post(url: string, options?: RequestOptions): any;
41
+ postWithPrefix(prefix: string, url: string, options?: RequestOptions): any;
42
+ put(url: string, options?: RequestOptions): any;
43
+ putWithPrefix(prefix: string, url: string, options?: RequestOptions): any;
44
+ delete(url: string, options?: RequestOptions): any;
45
+ deleteWithPrefix(prefix: string, url: string, options?: RequestOptions): any;
46
+ upload(url: string, fields: any, file: any, options?: RequestOptions): any;
47
+ uploadWithPrefix(prefix: string, url: string, fields: any, file: any, options?: RequestOptions): any;
48
+ stop(): void;
49
+ allRoutes(): any;
50
+ withHeaders(headers: Record<string, string>): TestServerWrapper;
51
+ setMembership(membership: any, addlHeaders?: Record<string, string>): Promise<TestServerWrapper>;
52
+ withMembership(m: any): Promise<TestServerWrapper>;
53
+ withS4(): TestServerWrapper;
54
+ withTap(): TestServerWrapper;
55
+ }
56
+ export {};
@@ -0,0 +1,144 @@
1
+ const s4Domain = "sera4.com";
2
+ const mobileDomain = "tws-mob." + s4Domain;
3
+ const webDomain = "tws-web." + s4Domain;
4
+ /**
5
+ * A small wrapper around an express js server
6
+ * meant to be used in unit tests
7
+ */
8
+ export class TestServerWrapper {
9
+ constructor(apiPrefix, expressServer, defaultHeaders, oldAuthToken, routePrinter, chai, factory) {
10
+ this.server = expressServer;
11
+ this.defaultHeaders = defaultHeaders;
12
+ this.apiPrefix = apiPrefix;
13
+ this.routePrinter = routePrinter;
14
+ this.chai = chai;
15
+ this.mobileDomain = mobileDomain;
16
+ this.webDomain = webDomain;
17
+ this.factory = factory;
18
+ // Support for older/deprecated apis
19
+ const oldAuthHeaders = { headers: { "Authorization": `Token organization_token=${oldAuthToken}` } };
20
+ this.v1 = {
21
+ get: (url) => this.getWithPrefix("/v1", url, oldAuthHeaders),
22
+ post: (url) => this.postWithPrefix("/v1", url, oldAuthHeaders),
23
+ put: (url) => this.putWithPrefix("/v1", url, oldAuthHeaders),
24
+ delete: (url) => this.deleteWithPrefix("/v1", url, oldAuthHeaders)
25
+ };
26
+ }
27
+ /**
28
+ * Adds a leading slash to the url if missing
29
+ * @param {String} url the url to sanitize
30
+ * @returns sanitized url
31
+ */
32
+ sanitizeUrl(url) {
33
+ // add leading slash if missing
34
+ if (!url.startsWith("/")) {
35
+ return "/" + url;
36
+ }
37
+ else {
38
+ return url;
39
+ }
40
+ }
41
+ /**
42
+ * Apply given headers to the request object
43
+ * @param {Object} request
44
+ * @param {Object} headers
45
+ */
46
+ applyHeaders(request, headers) {
47
+ Object.keys(headers).map(k => {
48
+ request.set(k, headers[k]);
49
+ });
50
+ }
51
+ get(url, options) {
52
+ return this.getWithPrefix(this.apiPrefix, url, options);
53
+ }
54
+ getWithPrefix(prefix, url, options) {
55
+ const sanitizedUrl = this.sanitizeUrl(url);
56
+ const request = this.chai.request(this.server).get(`${prefix}${sanitizedUrl}`);
57
+ this.applyHeaders(request, this.defaultHeaders);
58
+ if (options?.headers) {
59
+ this.applyHeaders(request, options.headers);
60
+ }
61
+ if (options?.body) {
62
+ request.send(options.body);
63
+ }
64
+ return request;
65
+ }
66
+ post(url, options) {
67
+ return this.postWithPrefix(this.apiPrefix, url, options);
68
+ }
69
+ postWithPrefix(prefix, url, options) {
70
+ const sanitizedUrl = this.sanitizeUrl(url);
71
+ const request = this.chai.request(this.server).post(`${prefix}${sanitizedUrl}`);
72
+ this.applyHeaders(request, this.defaultHeaders);
73
+ if (options?.headers) {
74
+ this.applyHeaders(request, options.headers);
75
+ }
76
+ return request;
77
+ }
78
+ put(url, options) {
79
+ return this.putWithPrefix(this.apiPrefix, url, options);
80
+ }
81
+ putWithPrefix(prefix, url, options) {
82
+ const sanitizedUrl = this.sanitizeUrl(url);
83
+ const request = this.chai.request(this.server).put(`${prefix}${sanitizedUrl}`);
84
+ this.applyHeaders(request, this.defaultHeaders);
85
+ if (options?.headers) {
86
+ this.applyHeaders(request, options.headers);
87
+ }
88
+ return request;
89
+ }
90
+ delete(url, options) {
91
+ return this.deleteWithPrefix(this.apiPrefix, url, options);
92
+ }
93
+ deleteWithPrefix(prefix, url, options) {
94
+ const sanitizedUrl = this.sanitizeUrl(url);
95
+ const request = this.chai.request(this.server).delete(`${prefix}${sanitizedUrl}`);
96
+ this.applyHeaders(request, this.defaultHeaders);
97
+ if (options?.headers) {
98
+ this.applyHeaders(request, options.headers);
99
+ }
100
+ return request;
101
+ }
102
+ upload(url, fields, file, options) {
103
+ return this.uploadWithPrefix(this.apiPrefix, url, fields, file, options);
104
+ }
105
+ uploadWithPrefix(prefix, url, fields, file, options) {
106
+ const sanitizedUrl = this.sanitizeUrl(url);
107
+ const request = this.chai.request(this.server).post(`${prefix}${sanitizedUrl}`);
108
+ this.applyHeaders(request, this.defaultHeaders);
109
+ if (options?.headers) {
110
+ this.applyHeaders(request, options.headers);
111
+ }
112
+ request.field(fields);
113
+ request.attach('file', file);
114
+ return request;
115
+ }
116
+ stop() {
117
+ this.server.close();
118
+ }
119
+ allRoutes() {
120
+ return this.routePrinter(this.server);
121
+ }
122
+ withHeaders(headers) {
123
+ return new TestServerWrapper(this.apiPrefix, this.server, { ...this.defaultHeaders, ...headers }, "", // oldAuthToken
124
+ this.routePrinter, this.chai, this.factory);
125
+ }
126
+ async setMembership(membership, addlHeaders = {}) {
127
+ const headers = {
128
+ "X-Membership": membership,
129
+ ...addlHeaders
130
+ };
131
+ return new TestServerWrapper(this.apiPrefix, this.server, { ...this.defaultHeaders, ...headers }, "", // oldAuthToken
132
+ this.routePrinter, this.chai, this.factory);
133
+ }
134
+ withMembership(m) {
135
+ return this.setMembership(m);
136
+ }
137
+ withS4() {
138
+ return this.withHeaders({ "X-S4": "true" });
139
+ }
140
+ withTap() {
141
+ return this.withHeaders({ "X-Tap": "true" });
142
+ }
143
+ }
144
+ //# sourceMappingURL=test-server-wrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-server-wrapper.js","sourceRoot":"","sources":["../../../ts/helpers/test-server-wrapper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ export * from "./dns/index.js";
2
+ export * from "./logger/index.js";
3
+ export * from "./health/index.js";
4
+ export * from "./cycle/index.js";
5
+ export * from "./constants/index.js";
6
+ export * from "./utils/index.js";
7
+ export * from "./helpers/index.js";
8
+ export * from "./paginator/index.js";
9
+ export * from "./cache/index.js";
10
+ export * from "./prompts/index.js";
11
+ export * from "./safe-proxy/index.js";
12
+ export { DnsCache } from "./dns/DnsCache.js";
13
+ export { S4Logger } from "./logger/s4-logger.js";
14
+ export { s4Paginator as paginator } from "./paginator/index.js";
15
+ export { sqlPaginator } from "./paginator/index.js";
16
+ export { default as queue } from "./queue/index.js";
17
+ export { default as lastCommit } from "./last-commit/index.js";
18
+ export { default as halDecorator } from "./hal/index.js";
19
+ export { default as formatter } from "./formatter/index.js";
20
+ export { default as serializer } from "./serializer/index.js";
21
+ export { default as paperTrail } from "./paper-trail/index.js";
@@ -0,0 +1,25 @@
1
+ // Export all TypeScript modules
2
+ export * from "./dns/index.js";
3
+ export * from "./logger/index.js";
4
+ export * from "./health/index.js";
5
+ export * from "./cycle/index.js";
6
+ export * from "./constants/index.js";
7
+ export * from "./utils/index.js";
8
+ export * from "./helpers/index.js";
9
+ export * from "./paginator/index.js";
10
+ export * from "./cache/index.js";
11
+ export * from "./prompts/index.js";
12
+ export * from "./safe-proxy/index.js";
13
+ // Re-export specific items with proper names
14
+ export { DnsCache } from "./dns/DnsCache.js";
15
+ export { S4Logger } from "./logger/s4-logger.js";
16
+ export { s4Paginator as paginator } from "./paginator/index.js";
17
+ export { sqlPaginator } from "./paginator/index.js";
18
+ // Export default exports
19
+ export { default as queue } from "./queue/index.js";
20
+ export { default as lastCommit } from "./last-commit/index.js";
21
+ export { default as halDecorator } from "./hal/index.js";
22
+ export { default as formatter } from "./formatter/index.js";
23
+ export { default as serializer } from "./serializer/index.js";
24
+ export { default as paperTrail } from "./paper-trail/index.js";
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../ts/index.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AAEtC,6CAA6C;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,WAAW,IAAI,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,yBAAyB;AACzB,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,12 @@
1
+ interface CommitInfo {
2
+ branch: string;
3
+ commit: string;
4
+ }
5
+ declare const lastCommit: {
6
+ parseLastCommit(): Promise<CommitInfo>;
7
+ getLastCommit(): Promise<CommitInfo>;
8
+ getLastCommitSync(): CommitInfo;
9
+ writeLastCommit(): Promise<CommitInfo>;
10
+ };
11
+ export default lastCommit;
12
+ export type { CommitInfo };
@@ -0,0 +1,82 @@
1
+ import git from "git-rev";
2
+ import fs from "fs";
3
+ import async from "async";
4
+ import { dirname } from 'path';
5
+ import { fileURLToPath } from 'url';
6
+ const appDir = dirname(fileURLToPath(import.meta.url));
7
+ const commitFile = `${appDir}/last-commit.json`;
8
+ const lastCommit = {
9
+ parseLastCommit() {
10
+ return new Promise((resolve, reject) => {
11
+ async.waterfall([
12
+ (next) => {
13
+ const commit = {};
14
+ git.branch((str) => {
15
+ commit.branch = str;
16
+ next(null, commit);
17
+ });
18
+ },
19
+ (commit, next) => {
20
+ git.long((str) => {
21
+ commit.commit = str; // Fixed typo: was "commmit"
22
+ next(null, commit);
23
+ });
24
+ }
25
+ ], (err, commit) => {
26
+ if (err) {
27
+ reject(err);
28
+ }
29
+ else {
30
+ resolve(commit);
31
+ }
32
+ });
33
+ });
34
+ },
35
+ getLastCommit() {
36
+ return new Promise((resolve, reject) => {
37
+ fs.readFile(commitFile, 'utf8', (err, data) => {
38
+ if (err) {
39
+ reject(err);
40
+ }
41
+ else {
42
+ try {
43
+ const commit = JSON.parse(data);
44
+ resolve(commit);
45
+ }
46
+ catch (e) {
47
+ reject(e);
48
+ }
49
+ }
50
+ });
51
+ });
52
+ },
53
+ getLastCommitSync() {
54
+ const data = fs.readFileSync(commitFile, 'utf8');
55
+ return JSON.parse(data);
56
+ },
57
+ writeLastCommit() {
58
+ return new Promise((resolve, reject) => {
59
+ async.waterfall([
60
+ (next) => {
61
+ this.parseLastCommit()
62
+ .then((commit) => next(null, commit))
63
+ .catch(e => next(e));
64
+ },
65
+ (commit, next) => {
66
+ fs.writeFile(commitFile, JSON.stringify(commit, null, 2), 'utf8', (err) => {
67
+ next(err, commit);
68
+ });
69
+ }
70
+ ], (err, commit) => {
71
+ if (err) {
72
+ reject(err);
73
+ }
74
+ else {
75
+ resolve(commit);
76
+ }
77
+ });
78
+ });
79
+ }
80
+ };
81
+ export default lastCommit;
82
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../ts/last-commit/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { S4Logger } from './s4-logger.js';
2
+ export { S4Logger };
3
+ export default S4Logger;
@@ -0,0 +1,4 @@
1
+ import { S4Logger } from './s4-logger.js';
2
+ export { S4Logger };
3
+ export default S4Logger;
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../ts/logger/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,QAAQ,EAAE,CAAC;AACpB,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,23 @@
1
+ import "winston-logstash";
2
+ interface LoggerOptions {
3
+ level?: string;
4
+ service?: string;
5
+ format?: 'logstash' | 'json' | 'default';
6
+ }
7
+ export declare class S4Logger {
8
+ configure(options?: LoggerOptions): void;
9
+ setLevel(level?: string): void;
10
+ mute(): void;
11
+ unmute(): void;
12
+ trace(...args: any[]): void;
13
+ debug(...args: any[]): void;
14
+ log(...args: any[]): void;
15
+ warn(...args: any[]): void;
16
+ info(...args: any[]): void;
17
+ error(...args: any[]): void;
18
+ getStream(): {
19
+ write: (message: string, encoding?: string) => void;
20
+ };
21
+ }
22
+ declare const s4logger: S4Logger;
23
+ export default s4logger;