@sera4/essentia 3.0.13 → 3.1.0-rc.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 (91) hide show
  1. package/README.md +93 -308
  2. package/dist/ts/cache/index.d.ts +33 -0
  3. package/dist/ts/cache/index.js +175 -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/dist/ts/constants/index.js +8 -0
  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 +171 -0
  13. package/dist/ts/cycle/index.js.map +1 -0
  14. package/dist/ts/dns/dns-cache.d.ts +50 -0
  15. package/dist/ts/dns/dns-cache.js +144 -0
  16. package/dist/ts/dns/dns-cache.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 +45 -0
  21. package/dist/ts/formatter/index.js +82 -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 +52 -0
  27. package/dist/ts/health/index.js +170 -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 +153 -0
  34. package/dist/ts/helpers/test-server-wrapper.js.map +1 -0
  35. package/{index.js → dist/ts/index.d.ts} +14 -11
  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 +4 -0
  42. package/dist/ts/logger/index.js +5 -0
  43. package/dist/ts/logger/index.js.map +1 -0
  44. package/dist/ts/logger/s4-logger.d.ts +41 -0
  45. package/dist/ts/logger/s4-logger.js +134 -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 +28 -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 +176 -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 +72 -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 +235 -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 +232 -0
  66. package/dist/ts/queue/index.js +446 -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 +87 -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 +104 -0
  76. package/dist/ts/queue/subscriber.js.map +1 -0
  77. package/dist/ts/safe-proxy/index.d.ts +24 -0
  78. package/dist/ts/safe-proxy/index.js +50 -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/task-scheduler/index.d.ts +130 -0
  84. package/dist/ts/task-scheduler/index.js +261 -0
  85. package/dist/ts/task-scheduler/index.js.map +1 -0
  86. package/dist/ts/utils/index.d.ts +49 -0
  87. package/dist/ts/utils/index.js +162 -0
  88. package/dist/ts/utils/index.js.map +1 -0
  89. package/last-commit.ts +12 -0
  90. package/package.json +28 -11
  91. package/package.tar.gz +0 -0
@@ -0,0 +1,70 @@
1
+ function lastElement(arr) {
2
+ if (arr?.length) {
3
+ return arr[arr.length - 1];
4
+ }
5
+ else {
6
+ return null;
7
+ }
8
+ }
9
+ class HalDecorator {
10
+ decorate(Model, options = {}) {
11
+ const model = Model.instance || Model;
12
+ const resource = options.resource || "";
13
+ const exclude = options.exclude || [];
14
+ const links = options.links || {};
15
+ const linksTag = options.linksTag || "_links";
16
+ const resourceTag = options.resourceTag || "_resource";
17
+ const link = (name, method, l) => {
18
+ if (name && method && l) {
19
+ const aLink = {};
20
+ aLink[method] = l; // Fixed typo: was "alink"
21
+ links[name] = aLink;
22
+ }
23
+ return model;
24
+ };
25
+ const getLinkData = (values) => {
26
+ const linkData = {};
27
+ if (links) {
28
+ for (const key in links) {
29
+ if (Object.hasOwn(links, key)) {
30
+ const link = links[key];
31
+ const method = lastElement(Object.keys(link));
32
+ if (method) {
33
+ let url = link[method];
34
+ const paramPattern = /:([a-zA-z_0-9]*)/;
35
+ const arr = paramPattern.exec(url);
36
+ if (arr) {
37
+ // Replace parameters
38
+ url = `/${resource}/${url.split(arr[0]).join(values[arr[1]])}`;
39
+ // Remove extra slashes that may have been added
40
+ url = url.replace(/\/\/*/g, "/");
41
+ linkData[key] = {};
42
+ linkData[key][method] = url;
43
+ }
44
+ }
45
+ }
46
+ }
47
+ }
48
+ return Object.keys(linkData).length > 0 ? linkData : null;
49
+ };
50
+ model.link = link;
51
+ Model.prototype.toJSON = function () {
52
+ const values = Object.assign({}, this.get());
53
+ if (exclude) {
54
+ exclude.forEach((element) => {
55
+ delete values[element];
56
+ });
57
+ }
58
+ const links = getLinkData(values);
59
+ const result = {};
60
+ if (links) {
61
+ result[linksTag] = links;
62
+ }
63
+ result[resourceTag] = values;
64
+ return result;
65
+ };
66
+ }
67
+ }
68
+ const halDecorator = new HalDecorator();
69
+ export default halDecorator;
70
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../ts/hal/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ import type { 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 lastCallId;
38
+ private pathPrefix;
39
+ private healthChecks;
40
+ constructor(appendData?: Record<string, unknown>, enableLogging?: boolean);
41
+ /**
42
+ * @deprecated Use setupCheck instead
43
+ */
44
+ addCheck(fcn: () => Promise<HealthCheckResult>): void;
45
+ setPrefix(prefix: string): void;
46
+ defaultPath(prefix?: string): string;
47
+ routes(router: ExpressRouter): ExpressRouter;
48
+ suppressHealthCheckLog(app: ExpressApp): void;
49
+ setupCheck(config: HealthCheckConfig): void;
50
+ private checkHealth;
51
+ }
52
+ export default HealthCheck;
@@ -0,0 +1,170 @@
1
+ import path from "node: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
+ logger;
12
+ defaultResponse;
13
+ defaultPathRoute;
14
+ lastCallId;
15
+ pathPrefix;
16
+ healthChecks;
17
+ constructor(appendData = {}, enableLogging = true) {
18
+ this.logger = new S4Logger();
19
+ this.logger.configure({ level: enableLogging ? "debug" : "error" });
20
+ this.defaultResponse = {
21
+ appendData,
22
+ status: 200,
23
+ errors: {},
24
+ };
25
+ this.defaultPathRoute = "health_check(.*)?";
26
+ this.lastCallId = 0;
27
+ this.pathPrefix = "";
28
+ this.healthChecks = [];
29
+ }
30
+ /**
31
+ * @deprecated Use setupCheck instead
32
+ */
33
+ addCheck(fcn) {
34
+ this.healthChecks.push(fcn);
35
+ }
36
+ setPrefix(prefix) {
37
+ this.pathPrefix = prefix;
38
+ }
39
+ defaultPath(prefix = "") {
40
+ if (prefix === "") {
41
+ prefix = this.pathPrefix;
42
+ }
43
+ return `${prefix}/${this.defaultPathRoute}`;
44
+ }
45
+ routes(router) {
46
+ if (!router) {
47
+ throw new HealthCheckError("missing_express_router");
48
+ }
49
+ router.get("/", (req, res) => {
50
+ this.checkHealth(req, res);
51
+ });
52
+ return router;
53
+ }
54
+ suppressHealthCheckLog(app) {
55
+ app.use(morgan("combined", {
56
+ skip: (req) => {
57
+ const expressReq = req;
58
+ return expressReq.path === this.defaultPath();
59
+ },
60
+ }));
61
+ }
62
+ setupCheck(config) {
63
+ this.healthChecks.push(config);
64
+ }
65
+ async checkHealth(req, res) {
66
+ const checkFormat = path.extname(req.baseUrl);
67
+ const result = await Promise.all(this.healthChecks.map(async (hc) => {
68
+ if (typeof hc === "function") {
69
+ try {
70
+ return await hc();
71
+ }
72
+ catch (e) {
73
+ return { name: "unknown", result: "fail", status: e.status };
74
+ }
75
+ }
76
+ else {
77
+ const res = {
78
+ name: hc.name,
79
+ critical: hc.critical,
80
+ };
81
+ try {
82
+ const result = await hc.healthFunction();
83
+ if (typeof result === "boolean") {
84
+ res.result = result ? "success" : "fail";
85
+ }
86
+ else {
87
+ res.result = "success";
88
+ }
89
+ return res;
90
+ }
91
+ catch (e) {
92
+ const appendStatus = e.status ? ` (${e.status})` : "";
93
+ this.logger.warn(`${hc.name} service failed${appendStatus}`);
94
+ return {
95
+ ...res,
96
+ result: "fail",
97
+ status: e.status,
98
+ };
99
+ }
100
+ }
101
+ }));
102
+ try {
103
+ let callId = ++this.lastCallId;
104
+ if (callId % (1 << 30) === 0) {
105
+ callId = this.lastCallId = 1;
106
+ }
107
+ let status = this.defaultResponse.status;
108
+ let nonCriticalFail = false;
109
+ let criticalFail = false;
110
+ result.some((e) => {
111
+ if (e.result.match(/fail/)) {
112
+ if ("critical" in e && e.critical === false) {
113
+ nonCriticalFail = true;
114
+ }
115
+ else {
116
+ criticalFail = true;
117
+ status = 500;
118
+ return true;
119
+ }
120
+ }
121
+ return false;
122
+ });
123
+ res.setHeader("check", callId);
124
+ if (checkFormat === ".json") {
125
+ const payload = {
126
+ check: callId,
127
+ healthy: true,
128
+ message: "success",
129
+ };
130
+ if (criticalFail) {
131
+ res.status(status).json({
132
+ ...payload,
133
+ healthy: false,
134
+ message: "fail",
135
+ services: result,
136
+ });
137
+ }
138
+ else if (nonCriticalFail) {
139
+ res.status(status).json({
140
+ ...payload,
141
+ message: "fail",
142
+ services: result,
143
+ });
144
+ }
145
+ else if (status === 200) {
146
+ res.status(status).json(payload);
147
+ }
148
+ }
149
+ else {
150
+ let statusMessage;
151
+ if (criticalFail) {
152
+ statusMessage = "fail";
153
+ }
154
+ else if (status === 200 || nonCriticalFail) {
155
+ statusMessage = "success";
156
+ }
157
+ else {
158
+ statusMessage = "unknown";
159
+ }
160
+ res.status(status).send(statusMessage);
161
+ }
162
+ }
163
+ catch (error) {
164
+ this.logger.error("Health check error:", error);
165
+ res.status(500).send("Internal Server Error");
166
+ }
167
+ }
168
+ }
169
+ export default HealthCheck;
170
+ //# 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 factory;
22
+ v1: V1API;
23
+ mobileDomain: string;
24
+ webDomain: string;
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,153 @@
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
+ server;
10
+ defaultHeaders;
11
+ apiPrefix;
12
+ routePrinter;
13
+ chai;
14
+ factory;
15
+ v1;
16
+ mobileDomain;
17
+ webDomain;
18
+ constructor(apiPrefix, expressServer, defaultHeaders, oldAuthToken, routePrinter, chai, factory) {
19
+ this.server = expressServer;
20
+ this.defaultHeaders = defaultHeaders;
21
+ this.apiPrefix = apiPrefix;
22
+ this.routePrinter = routePrinter;
23
+ this.chai = chai;
24
+ this.mobileDomain = mobileDomain;
25
+ this.webDomain = webDomain;
26
+ this.factory = factory;
27
+ // Support for older/deprecated apis
28
+ const oldAuthHeaders = { headers: { Authorization: `Token organization_token=${oldAuthToken}` } };
29
+ this.v1 = {
30
+ get: (url) => this.getWithPrefix("/v1", url, oldAuthHeaders),
31
+ post: (url) => this.postWithPrefix("/v1", url, oldAuthHeaders),
32
+ put: (url) => this.putWithPrefix("/v1", url, oldAuthHeaders),
33
+ delete: (url) => this.deleteWithPrefix("/v1", url, oldAuthHeaders),
34
+ };
35
+ }
36
+ /**
37
+ * Adds a leading slash to the url if missing
38
+ * @param {String} url the url to sanitize
39
+ * @returns sanitized url
40
+ */
41
+ sanitizeUrl(url) {
42
+ // add leading slash if missing
43
+ if (!url.startsWith("/")) {
44
+ return `/${url}`;
45
+ }
46
+ else {
47
+ return url;
48
+ }
49
+ }
50
+ /**
51
+ * Apply given headers to the request object
52
+ * @param {Object} request
53
+ * @param {Object} headers
54
+ */
55
+ applyHeaders(request, headers) {
56
+ Object.keys(headers).forEach((k) => {
57
+ request.set(k, headers[k]);
58
+ });
59
+ }
60
+ get(url, options) {
61
+ return this.getWithPrefix(this.apiPrefix, url, options);
62
+ }
63
+ getWithPrefix(prefix, url, options) {
64
+ const sanitizedUrl = this.sanitizeUrl(url);
65
+ const request = this.chai.request(this.server).get(`${prefix}${sanitizedUrl}`);
66
+ this.applyHeaders(request, this.defaultHeaders);
67
+ if (options?.headers) {
68
+ this.applyHeaders(request, options.headers);
69
+ }
70
+ if (options?.body) {
71
+ request.send(options.body);
72
+ }
73
+ return request;
74
+ }
75
+ post(url, options) {
76
+ return this.postWithPrefix(this.apiPrefix, url, options);
77
+ }
78
+ postWithPrefix(prefix, url, options) {
79
+ const sanitizedUrl = this.sanitizeUrl(url);
80
+ const request = this.chai.request(this.server).post(`${prefix}${sanitizedUrl}`);
81
+ this.applyHeaders(request, this.defaultHeaders);
82
+ if (options?.headers) {
83
+ this.applyHeaders(request, options.headers);
84
+ }
85
+ return request;
86
+ }
87
+ put(url, options) {
88
+ return this.putWithPrefix(this.apiPrefix, url, options);
89
+ }
90
+ putWithPrefix(prefix, url, options) {
91
+ const sanitizedUrl = this.sanitizeUrl(url);
92
+ const request = this.chai.request(this.server).put(`${prefix}${sanitizedUrl}`);
93
+ this.applyHeaders(request, this.defaultHeaders);
94
+ if (options?.headers) {
95
+ this.applyHeaders(request, options.headers);
96
+ }
97
+ return request;
98
+ }
99
+ delete(url, options) {
100
+ return this.deleteWithPrefix(this.apiPrefix, url, options);
101
+ }
102
+ deleteWithPrefix(prefix, url, options) {
103
+ const sanitizedUrl = this.sanitizeUrl(url);
104
+ const request = this.chai.request(this.server).delete(`${prefix}${sanitizedUrl}`);
105
+ this.applyHeaders(request, this.defaultHeaders);
106
+ if (options?.headers) {
107
+ this.applyHeaders(request, options.headers);
108
+ }
109
+ return request;
110
+ }
111
+ upload(url, fields, file, options) {
112
+ return this.uploadWithPrefix(this.apiPrefix, url, fields, file, options);
113
+ }
114
+ uploadWithPrefix(prefix, url, fields, file, options) {
115
+ const sanitizedUrl = this.sanitizeUrl(url);
116
+ const request = this.chai.request(this.server).post(`${prefix}${sanitizedUrl}`);
117
+ this.applyHeaders(request, this.defaultHeaders);
118
+ if (options?.headers) {
119
+ this.applyHeaders(request, options.headers);
120
+ }
121
+ request.field(fields);
122
+ request.attach("file", file);
123
+ return request;
124
+ }
125
+ stop() {
126
+ this.server.close();
127
+ }
128
+ allRoutes() {
129
+ return this.routePrinter(this.server);
130
+ }
131
+ withHeaders(headers) {
132
+ return new TestServerWrapper(this.apiPrefix, this.server, { ...this.defaultHeaders, ...headers }, "", // oldAuthToken
133
+ this.routePrinter, this.chai, this.factory);
134
+ }
135
+ async setMembership(membership, addlHeaders = {}) {
136
+ const headers = {
137
+ "X-Membership": membership,
138
+ ...addlHeaders,
139
+ };
140
+ return new TestServerWrapper(this.apiPrefix, this.server, { ...this.defaultHeaders, ...headers }, "", // oldAuthToken
141
+ this.routePrinter, this.chai, this.factory);
142
+ }
143
+ withMembership(m) {
144
+ return this.setMembership(m);
145
+ }
146
+ withS4() {
147
+ return this.withHeaders({ "X-S4": "true" });
148
+ }
149
+ withTap() {
150
+ return this.withHeaders({ "X-Tap": "true" });
151
+ }
152
+ }
153
+ //# 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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"}
@@ -1,17 +1,20 @@
1
- 'use strict';
2
-
1
+ export * from "./cache/index.js";
3
2
  export * from "./constants/index.js";
4
- export { default as paginator } from "./paginator/s4-pagination.js";
5
- export { default as sqlPaginator } from "./paginator/sql-pagination.js";
6
- export { default as logger } from "./logger/s4-logger.js";
7
- export { default as lastCommit } from "./last_commit/index.js";
8
- export { default as halDecorator } from "./hal/index.js";
3
+ export * from "./cycle/index.js";
4
+ export { DnsCache } from "./dns/dns-cache.js";
5
+ export * from "./dns/index.js";
9
6
  export { default as formatter } from "./formatter/index.js";
7
+ export { default as halDecorator } from "./hal/index.js";
10
8
  export { HealthCheck as healthCheck } from "./health/index.js";
11
- export { default as queue } from "./queue/index.js";
9
+ export * from "./helpers/index.js";
10
+ export { default as lastCommit } from "./last-commit/index.js";
11
+ export * from "./logger/index.js";
12
+ export { default as logger, S4Logger } from "./logger/s4-logger.js";
13
+ export * from "./paginator/index.js";
14
+ export { s4Paginator as paginator, sqlPaginator } from "./paginator/index.js";
12
15
  export { default as paperTrail } from "./paper-trail/index.js";
16
+ export * from "./prompts/index.js";
17
+ export { default as queue } from "./queue/index.js";
18
+ export * from "./safe-proxy/index.js";
13
19
  export { default as serializer } from "./serializer/index.js";
14
20
  export * from "./utils/index.js";
15
- export * from "./safe_proxy/index.js";
16
- export * from "./helpers/index.js";
17
- export * from "./prompts/index.js";
@@ -0,0 +1,25 @@
1
+ // Export all TypeScript modules
2
+ export * from "./cache/index.js";
3
+ export * from "./constants/index.js";
4
+ export * from "./cycle/index.js";
5
+ // Re-export specific items with proper names
6
+ export { DnsCache } from "./dns/dns-cache.js";
7
+ export * from "./dns/index.js";
8
+ export { default as formatter } from "./formatter/index.js";
9
+ export { default as halDecorator } from "./hal/index.js";
10
+ export { HealthCheck as healthCheck } from "./health/index.js";
11
+ export * from "./helpers/index.js";
12
+ export { default as lastCommit } from "./last-commit/index.js";
13
+ export * from "./logger/index.js";
14
+ // Export default logger instance
15
+ export { default as logger, S4Logger } from "./logger/s4-logger.js";
16
+ export * from "./paginator/index.js";
17
+ export { s4Paginator as paginator, sqlPaginator } from "./paginator/index.js";
18
+ export { default as paperTrail } from "./paper-trail/index.js";
19
+ export * from "./prompts/index.js";
20
+ // Export default exports
21
+ export { default as queue } from "./queue/index.js";
22
+ export * from "./safe-proxy/index.js";
23
+ export { default as serializer } from "./serializer/index.js";
24
+ export * from "./utils/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;AAEhC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,6CAA6C;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,WAAW,IAAI,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC/D,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAC/D,cAAc,mBAAmB,CAAC;AAClC,iCAAiC;AACjC,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACpE,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,WAAW,IAAI,SAAS,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAC/D,cAAc,oBAAoB,CAAC;AACnC,yBAAyB;AACzB,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACpD,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAC9D,cAAc,kBAAkB,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 };