@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,82 @@
1
+ import fs from "node:fs";
2
+ import { dirname } from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+ import async from "async";
5
+ import git from "git-rev";
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,4 @@
1
+ import { S4Logger } from "./s4-logger.js";
2
+ export { S4Logger };
3
+ export { LOG_LEVELS, type LogLevel, type ResolveLogLevelOptions } from "./s4-logger.js";
4
+ export default S4Logger;
@@ -0,0 +1,5 @@
1
+ import { S4Logger } from "./s4-logger.js";
2
+ export { S4Logger };
3
+ export { LOG_LEVELS } from "./s4-logger.js";
4
+ export default S4Logger;
5
+ //# 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,OAAO,EAAE,UAAU,EAA8C,MAAM,gBAAgB,CAAC;AACxF,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,41 @@
1
+ import "winston-logstash";
2
+ export declare const LOG_LEVELS: readonly ["error", "warn", "info", "debug", "trace"];
3
+ export type LogLevel = (typeof LOG_LEVELS)[number];
4
+ export interface ResolveLogLevelOptions {
5
+ /** Default level used when env var is unset or invalid. */
6
+ defaultLevel?: string;
7
+ /** Whether the runtime is production. Defaults to NODE_ENV === 'production'. */
8
+ isProduction?: boolean;
9
+ /** Env var to read. Defaults to 'S4_LOG_LEVEL'. */
10
+ envVar?: string;
11
+ /** Tag used in the warning emitted when the requested level is rejected. */
12
+ warnTag?: string;
13
+ }
14
+ interface LoggerOptions {
15
+ level?: string;
16
+ service?: string;
17
+ format?: "logstash" | "json" | "default";
18
+ }
19
+ export declare class S4Logger {
20
+ configure(options?: LoggerOptions): void;
21
+ setLevel(level?: string): void;
22
+ /**
23
+ * Resolve a log level from the environment, applying a production floor of
24
+ * `info` (debug/trace are rejected with a console warning in prod). Returns
25
+ * the default level when the env var is unset or invalid.
26
+ */
27
+ static resolveLogLevel(options?: ResolveLogLevelOptions): LogLevel;
28
+ mute(): void;
29
+ unmute(): void;
30
+ trace(...args: any[]): void;
31
+ debug(...args: any[]): void;
32
+ log(...args: any[]): void;
33
+ warn(...args: any[]): void;
34
+ info(...args: any[]): void;
35
+ error(...args: any[]): void;
36
+ getStream(): {
37
+ write: (message: string, encoding?: string) => void;
38
+ };
39
+ }
40
+ declare const s4logger: S4Logger;
41
+ export default s4logger;
@@ -0,0 +1,134 @@
1
+ import util from "node:util";
2
+ import jsonStringify from "fast-safe-stringify";
3
+ import winston from "winston";
4
+ import "winston-logstash";
5
+ const colorizer = winston.format.colorize();
6
+ // IETF RFC5424:
7
+ // Severity of all levels is assumed to be numerically ascending from most important to least important.
8
+ const levels = {
9
+ error: 0,
10
+ warn: 1,
11
+ info: 2,
12
+ debug: 3,
13
+ trace: 4,
14
+ };
15
+ export const LOG_LEVELS = ["error", "warn", "info", "debug", "trace"];
16
+ // Levels below 'info' are too noisy for production. We enforce an info+ floor
17
+ // so an accidental S4_LOG_LEVEL=debug can't leak verbose logs into prod.
18
+ const PROD_DISALLOWED_LEVELS = new Set(["debug", "trace"]);
19
+ function isLogLevel(value) {
20
+ return typeof value === "string" && LOG_LEVELS.includes(value.toLowerCase());
21
+ }
22
+ // These colors are not used, however if colors are not defined for custom levels
23
+ // then winston will throw an exception.
24
+ winston.addColors({
25
+ trace: "white",
26
+ });
27
+ const defaultLevel = process.env.NODE_ENV === "production" ? "info" : "debug";
28
+ const devFormat = {
29
+ transform(info) {
30
+ const { message } = info;
31
+ const level = info[Symbol.for("level")];
32
+ const args = info[Symbol.for("splat")];
33
+ const strArgs = args ? args.map(jsonStringify).join(" ") : "";
34
+ info[Symbol.for("message")] = `${colorizer.colorize(level, `${level}:\t`)}${message} ${strArgs}`;
35
+ return info;
36
+ },
37
+ };
38
+ const defaultTransport = new winston.transports.Console({
39
+ format: devFormat,
40
+ level: "trace",
41
+ });
42
+ const logger = winston.createLogger({
43
+ levels: levels,
44
+ level: defaultLevel,
45
+ defaultMeta: {},
46
+ transports: [defaultTransport],
47
+ });
48
+ export class S4Logger {
49
+ configure(options) {
50
+ if (!options) {
51
+ return;
52
+ }
53
+ this.setLevel(options.level);
54
+ logger.defaultMeta.service = options.service;
55
+ switch (options.format?.toLowerCase()) {
56
+ case "logstash":
57
+ defaultTransport.format = winston.format.logstash();
58
+ break;
59
+ case "json":
60
+ defaultTransport.format = winston.format.json();
61
+ break;
62
+ default:
63
+ defaultTransport.format = devFormat;
64
+ break;
65
+ }
66
+ }
67
+ setLevel(level) {
68
+ if (isLogLevel(level)) {
69
+ logger.level = level;
70
+ // Also update the transport level to ensure proper filtering
71
+ defaultTransport.level = level;
72
+ }
73
+ }
74
+ /**
75
+ * Resolve a log level from the environment, applying a production floor of
76
+ * `info` (debug/trace are rejected with a console warning in prod). Returns
77
+ * the default level when the env var is unset or invalid.
78
+ */
79
+ static resolveLogLevel(options = {}) {
80
+ const isProduction = options.isProduction ?? process.env.NODE_ENV === "production";
81
+ const fallbackDefault = isProduction ? "info" : "debug";
82
+ const defaultLevel = isLogLevel(options.defaultLevel) ? options.defaultLevel.toLowerCase() : fallbackDefault;
83
+ const envVar = options.envVar ?? "S4_LOG_LEVEL";
84
+ const warnTag = options.warnTag ?? "[s4-logger]";
85
+ const requested = process.env[envVar];
86
+ if (!isLogLevel(requested)) {
87
+ return defaultLevel;
88
+ }
89
+ const normalized = requested.toLowerCase();
90
+ if (isProduction && PROD_DISALLOWED_LEVELS.has(normalized)) {
91
+ console.warn(`${warnTag} Ignoring ${envVar}=${normalized} in production; falling back to '${defaultLevel}'`);
92
+ return defaultLevel;
93
+ }
94
+ return normalized;
95
+ }
96
+ mute() {
97
+ logger.transports.forEach((t) => {
98
+ t.silent = true;
99
+ });
100
+ }
101
+ unmute() {
102
+ logger.transports.forEach((t) => {
103
+ t.silent = false;
104
+ });
105
+ }
106
+ trace(...args) {
107
+ logger.trace(util.format(...args));
108
+ }
109
+ debug(...args) {
110
+ logger.debug(util.format(...args));
111
+ }
112
+ log(...args) {
113
+ logger.debug(util.format(...args));
114
+ }
115
+ warn(...args) {
116
+ logger.warn(util.format(...args));
117
+ }
118
+ info(...args) {
119
+ logger.info(util.format(...args));
120
+ }
121
+ error(...args) {
122
+ logger.error(util.format(...args));
123
+ }
124
+ getStream() {
125
+ return {
126
+ write: (message, _encoding) => {
127
+ logger.info(message);
128
+ },
129
+ };
130
+ }
131
+ }
132
+ const s4logger = new S4Logger();
133
+ export default s4logger;
134
+ //# sourceMappingURL=s4-logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"s4-logger.js","sourceRoot":"","sources":["../../../ts/logger/s4-logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { default as s4Paginator } from "./s4-pagination.js";
2
+ export { default as sqlPaginator } from "./sql-pagination.js";
@@ -0,0 +1,3 @@
1
+ export { default as s4Paginator } from "./s4-pagination.js";
2
+ export { default as sqlPaginator } from "./sql-pagination.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../ts/paginator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,28 @@
1
+ interface PaginationData {
2
+ total: number;
3
+ pages?: number;
4
+ page?: number;
5
+ offset?: number;
6
+ limit?: number;
7
+ docs: any[];
8
+ }
9
+ interface Request {
10
+ query?: Record<string, any>;
11
+ [key: string]: any;
12
+ }
13
+ interface Response {
14
+ status: (code: number) => any;
15
+ end: () => any;
16
+ set: (header: string, value: string) => any;
17
+ json: (data: any) => any;
18
+ [key: string]: any;
19
+ }
20
+ declare class S4Pagination {
21
+ createPaginator(req: Request, res: Response, _next: any): {
22
+ page: number;
23
+ page_size: number;
24
+ reply: (data: PaginationData | null) => void;
25
+ };
26
+ }
27
+ declare const paginator: S4Pagination;
28
+ export default paginator;
@@ -0,0 +1,49 @@
1
+ const default_page = 1;
2
+ const default_size = 5;
3
+ function parseRequest(req, item, default_value) {
4
+ if (!req?.query) {
5
+ return default_value;
6
+ }
7
+ const r = parseInt(req.query[item], 10);
8
+ if (Number.isNaN(r) || r < default_value) {
9
+ return default_value;
10
+ }
11
+ return r;
12
+ }
13
+ class S4Pagination {
14
+ createPaginator(req, res, _next) {
15
+ const paginator = {
16
+ page: parseRequest(req, "page", default_page),
17
+ page_size: parseRequest(req, "page_size", default_size),
18
+ reply: (data) => {
19
+ if (!data) {
20
+ res.status(500).end();
21
+ return;
22
+ }
23
+ const pagination = {
24
+ total: data.total,
25
+ total_pages: data.pages ?? 0,
26
+ current_page: data.page ?? 1,
27
+ first_page: data.page === 1,
28
+ last_page: data.offset === data.pages,
29
+ page_size: data.limit ?? 0,
30
+ out_of_bounds: data.docs.length === 0,
31
+ };
32
+ if (!pagination.out_of_bounds) {
33
+ if (pagination.current_page > 1) {
34
+ pagination.previous_page = pagination.current_page - 1;
35
+ }
36
+ if (pagination.current_page < pagination.total_pages) {
37
+ pagination.next_page = pagination.current_page + 1;
38
+ }
39
+ }
40
+ res.set("s4-pagination", JSON.stringify(pagination));
41
+ res.json(data.docs);
42
+ },
43
+ };
44
+ return paginator;
45
+ }
46
+ }
47
+ const paginator = new S4Pagination();
48
+ export default paginator;
49
+ //# sourceMappingURL=s4-pagination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"s4-pagination.js","sourceRoot":"","sources":["../../../ts/paginator/s4-pagination.ts"],"names":[],"mappings":"AAkCA,MAAM,YAAY,GAAG,CAAC,CAAC;AACvB,MAAM,YAAY,GAAG,CAAC,CAAC;AAEvB,SAAS,YAAY,CAAC,GAAY,EAAE,IAAY,EAAE,aAAqB;IACrE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC;QAChB,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IACxC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,aAAa,EAAE,CAAC;QACzC,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,YAAY;IAChB,eAAe,CAAC,GAAY,EAAE,GAAa,EAAE,KAAU;QACrD,MAAM,SAAS,GAAG;YAChB,IAAI,EAAE,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC;YAC7C,SAAS,EAAE,YAAY,CAAC,GAAG,EAAE,WAAW,EAAE,YAAY,CAAC;YACvD,KAAK,EAAE,CAAC,IAA2B,EAAE,EAAE;gBACrC,IAAI,CAAC,IAAI,EAAE,CAAC;oBACV,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACtB,OAAO;gBACT,CAAC;gBACD,MAAM,UAAU,GAAuB;oBACrC,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,WAAW,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC;oBAC5B,YAAY,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;oBAC5B,UAAU,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC;oBAC3B,SAAS,EAAE,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,KAAK;oBACrC,SAAS,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC;oBAC1B,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;iBACtC,CAAC;gBAEF,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;oBAC9B,IAAI,UAAU,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;wBAChC,UAAU,CAAC,aAAa,GAAG,UAAU,CAAC,YAAY,GAAG,CAAC,CAAC;oBACzD,CAAC;oBACD,IAAI,UAAU,CAAC,YAAY,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;wBACrD,UAAU,CAAC,SAAS,GAAG,UAAU,CAAC,YAAY,GAAG,CAAC,CAAC;oBACrD,CAAC;gBACH,CAAC;gBAED,GAAG,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;gBACrD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtB,CAAC;SACF,CAAC;QACF,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AAED,MAAM,SAAS,GAAG,IAAI,YAAY,EAAE,CAAC;AACrC,eAAe,SAAS,CAAC"}
@@ -0,0 +1,52 @@
1
+ interface PaginateIn {
2
+ size: string;
3
+ index: string;
4
+ }
5
+ interface PaginateOut {
6
+ current_page: string;
7
+ first_page: string;
8
+ last_page: string;
9
+ next_page: string;
10
+ out_of_bounds: string;
11
+ page_size: string;
12
+ previous_page: string;
13
+ total_pages: string;
14
+ total_size: string;
15
+ links: string | boolean;
16
+ }
17
+ interface PaginationOptions {
18
+ limit?: number;
19
+ offset?: number;
20
+ [key: string]: any;
21
+ }
22
+ interface ModelInstance {
23
+ findAndCountAll: (options: PaginationOptions) => Promise<{
24
+ rows: any[];
25
+ count: number;
26
+ }>;
27
+ }
28
+ declare class SequelizePaginator {
29
+ private paginateIn;
30
+ private paginateOut;
31
+ private zeroBasedOffset;
32
+ private paginationHeader;
33
+ private headersOnly;
34
+ private paginationTag;
35
+ private collectionTag;
36
+ constructor();
37
+ paginate(Model: any, resource?: string): {
38
+ using: (options: PaginationOptions, resp: any) => ModelInstance;
39
+ paginate: (options?: PaginationOptions) => Promise<unknown>;
40
+ };
41
+ configure(options: Partial<{
42
+ paginateIn: Partial<PaginateIn>;
43
+ paginateOut: Partial<PaginateOut>;
44
+ zeroBasedOffset: boolean;
45
+ paginationHeader: string;
46
+ headersOnly: boolean;
47
+ paginationTag: string;
48
+ collectionTag: string;
49
+ }>): void;
50
+ }
51
+ declare const sqlPaginator: SequelizePaginator;
52
+ export default sqlPaginator;
@@ -0,0 +1,176 @@
1
+ class SequelizePaginator {
2
+ paginateIn;
3
+ paginateOut;
4
+ zeroBasedOffset;
5
+ paginationHeader;
6
+ headersOnly;
7
+ paginationTag;
8
+ collectionTag;
9
+ constructor() {
10
+ this.paginateIn = {
11
+ size: "page_size",
12
+ index: "page_index",
13
+ };
14
+ this.paginateOut = {
15
+ current_page: "current_page",
16
+ first_page: "first_page",
17
+ last_page: "last_page",
18
+ next_page: "next_page",
19
+ out_of_bounds: "out_of_bounds",
20
+ page_size: "page_size",
21
+ previous_page: "previous_page",
22
+ total_pages: "total_pages",
23
+ total_size: "total_size",
24
+ links: "",
25
+ };
26
+ this.zeroBasedOffset = true;
27
+ this.paginationHeader = "tws-pagination";
28
+ this.headersOnly = false;
29
+ this.paginationTag = "_pagination";
30
+ this.collectionTag = "_collection";
31
+ }
32
+ paginate(Model, resource = "") {
33
+ const model = Model.instance || Model;
34
+ const DEFAULT_PAGINATION = { limit: 15, offset: 0 };
35
+ const pagination = { limit: 15, offset: 0 };
36
+ let response = null;
37
+ const using = (options, resp) => {
38
+ response = resp;
39
+ let limit = DEFAULT_PAGINATION.limit;
40
+ let offset = DEFAULT_PAGINATION.offset;
41
+ if (options?.[this.paginateIn.size]) {
42
+ limit = parseInt(options[this.paginateIn.size], 10);
43
+ }
44
+ if (options?.[this.paginateIn.index]) {
45
+ offset = parseInt(options[this.paginateIn.index], 10);
46
+ }
47
+ if (!Number.isInteger(limit) || limit < 1) {
48
+ limit = 1;
49
+ }
50
+ if (!Number.isInteger(offset) || offset < 0) {
51
+ offset = 0;
52
+ }
53
+ if (!this.zeroBasedOffset) {
54
+ offset = offset <= 1 ? 0 : offset - 1;
55
+ }
56
+ pagination.limit = limit;
57
+ pagination.offset = offset;
58
+ return model;
59
+ };
60
+ const paginate = (options = {}) => {
61
+ options.limit = pagination.limit;
62
+ options.offset = pagination.limit * pagination.offset;
63
+ return new Promise((resolve, reject) => {
64
+ model
65
+ .findAndCountAll(options)
66
+ .then((r) => {
67
+ const paginationData = getPaginationData(r);
68
+ if (response) {
69
+ response.set(this.paginationHeader, JSON.stringify(paginationData));
70
+ }
71
+ let data = {};
72
+ if (this.headersOnly) {
73
+ data = r.rows;
74
+ }
75
+ else {
76
+ data[this.paginationTag] = addLinks(paginationData);
77
+ data[this.collectionTag] = r.rows;
78
+ }
79
+ resolve(data);
80
+ })
81
+ .catch((e) => reject(e));
82
+ });
83
+ };
84
+ const addLinks = (data) => {
85
+ let linksKey = null;
86
+ if (this.paginateOut.links === true) {
87
+ linksKey = "links";
88
+ }
89
+ else if (this.paginateOut.links) {
90
+ linksKey = this.paginateOut.links;
91
+ }
92
+ if (data && linksKey && !data[this.paginateOut.out_of_bounds]) {
93
+ const links = {};
94
+ const firstPageIndex = this.zeroBasedOffset ? 0 : 1;
95
+ const lastPageIndex = this.zeroBasedOffset
96
+ ? data[this.paginateOut.total_pages] - 1
97
+ : data[this.paginateOut.total_pages];
98
+ links[this.paginateOut.first_page] =
99
+ `${resource}?${this.paginateIn.index}=${firstPageIndex}&${this.paginateIn.size}=${data[this.paginateOut.page_size]}`;
100
+ links[this.paginateOut.last_page] =
101
+ `${resource}?${this.paginateIn.index}=${lastPageIndex}&${this.paginateIn.size}=${data[this.paginateOut.page_size]}`;
102
+ if (data[this.paginateOut.previous_page]) {
103
+ const prevPageIndex = this.zeroBasedOffset
104
+ ? data[this.paginateOut.previous_page] - 1
105
+ : data[this.paginateOut.previous_page];
106
+ links[this.paginateOut.previous_page] =
107
+ `${resource}?${this.paginateIn.index}=${prevPageIndex}&${this.paginateIn.size}=${data[this.paginateOut.page_size]}`;
108
+ }
109
+ if (data[this.paginateOut.next_page]) {
110
+ const nextPageIndex = this.zeroBasedOffset
111
+ ? data[this.paginateOut.next_page] - 1
112
+ : data[this.paginateOut.next_page];
113
+ links[this.paginateOut.next_page] =
114
+ `${resource}?${this.paginateIn.index}=${nextPageIndex}&${this.paginateIn.size}=${data[this.paginateOut.page_size]}`;
115
+ }
116
+ data[linksKey] = links;
117
+ }
118
+ return data;
119
+ };
120
+ const getPaginationData = (result) => {
121
+ const totalSize = result.count;
122
+ const pageSize = pagination.limit;
123
+ const currentPage = Math.floor(pagination.offset / pageSize) + 1;
124
+ const totalPages = Math.ceil(totalSize / pageSize);
125
+ const outOfBounds = currentPage > totalPages || currentPage < 1;
126
+ const paginationData = {
127
+ [this.paginateOut.current_page]: currentPage,
128
+ [this.paginateOut.first_page]: currentPage === 1,
129
+ [this.paginateOut.last_page]: currentPage === totalPages,
130
+ [this.paginateOut.out_of_bounds]: outOfBounds,
131
+ [this.paginateOut.page_size]: pageSize,
132
+ [this.paginateOut.total_pages]: totalPages,
133
+ [this.paginateOut.total_size]: totalSize,
134
+ };
135
+ if (!outOfBounds) {
136
+ if (currentPage > 1) {
137
+ paginationData[this.paginateOut.previous_page] = currentPage - 1;
138
+ }
139
+ if (currentPage < totalPages) {
140
+ paginationData[this.paginateOut.next_page] = currentPage + 1;
141
+ }
142
+ }
143
+ return paginationData;
144
+ };
145
+ return {
146
+ using,
147
+ paginate,
148
+ };
149
+ }
150
+ configure(options) {
151
+ if (options.paginateIn) {
152
+ this.paginateIn = { ...this.paginateIn, ...options.paginateIn };
153
+ }
154
+ if (options.paginateOut) {
155
+ this.paginateOut = { ...this.paginateOut, ...options.paginateOut };
156
+ }
157
+ if (options.zeroBasedOffset !== undefined) {
158
+ this.zeroBasedOffset = options.zeroBasedOffset;
159
+ }
160
+ if (options.paginationHeader) {
161
+ this.paginationHeader = options.paginationHeader;
162
+ }
163
+ if (options.headersOnly !== undefined) {
164
+ this.headersOnly = options.headersOnly;
165
+ }
166
+ if (options.paginationTag) {
167
+ this.paginationTag = options.paginationTag;
168
+ }
169
+ if (options.collectionTag) {
170
+ this.collectionTag = options.collectionTag;
171
+ }
172
+ }
173
+ }
174
+ const sqlPaginator = new SequelizePaginator();
175
+ export default sqlPaginator;
176
+ //# sourceMappingURL=sql-pagination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql-pagination.js","sourceRoot":"","sources":["../../../ts/paginator/sql-pagination.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ interface DiffResult {
2
+ kind: string;
3
+ path: string[];
4
+ lhs?: any;
5
+ rhs?: any;
6
+ }
7
+ declare const _default: {
8
+ capitalizeFirstLetter: (string: string) => string;
9
+ toUnderscored: (obj: Record<string, string>) => Record<string, string>;
10
+ calcDelta: (current: Record<string, any>, next: Record<string, any>, exclude: string[], strict: boolean, DEBUG?: boolean) => DiffResult[] | null;
11
+ diffToString: (val: any) => string;
12
+ };
13
+ export default _default;
14
+ export type { DiffResult };