@sera4/essentia 1.1.65 → 1.1.66-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 (245) hide show
  1. package/coverage/base.css +224 -0
  2. package/coverage/block-navigation.js +87 -0
  3. package/coverage/configurations/index.html +116 -0
  4. package/coverage/configurations/server-config.ts.html +94 -0
  5. package/coverage/dns/DnsCache.ts.html +598 -0
  6. package/coverage/dns/index.html +131 -0
  7. package/coverage/dns/index.ts.html +94 -0
  8. package/coverage/favicon.png +0 -0
  9. package/coverage/health/index.html +116 -0
  10. package/coverage/health/index.ts.html +778 -0
  11. package/coverage/index.html +161 -0
  12. package/coverage/lcov-report/base.css +224 -0
  13. package/coverage/lcov-report/block-navigation.js +87 -0
  14. package/coverage/lcov-report/configurations/index.html +116 -0
  15. package/coverage/lcov-report/configurations/server-config.ts.html +94 -0
  16. package/coverage/lcov-report/dns/DnsCache.ts.html +598 -0
  17. package/coverage/lcov-report/dns/index.html +131 -0
  18. package/coverage/lcov-report/dns/index.ts.html +94 -0
  19. package/coverage/lcov-report/favicon.png +0 -0
  20. package/coverage/lcov-report/health/index.html +116 -0
  21. package/coverage/lcov-report/health/index.ts.html +778 -0
  22. package/coverage/lcov-report/index.html +161 -0
  23. package/coverage/lcov-report/logger/index.html +131 -0
  24. package/coverage/lcov-report/logger/index.ts.html +94 -0
  25. package/coverage/lcov-report/logger/s4-logger.ts.html +514 -0
  26. package/coverage/lcov-report/prettify.css +1 -0
  27. package/coverage/lcov-report/prettify.js +2 -0
  28. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  29. package/coverage/lcov-report/sorter.js +196 -0
  30. package/coverage/lcov.info +747 -0
  31. package/coverage/logger/index.html +131 -0
  32. package/coverage/logger/index.ts.html +94 -0
  33. package/coverage/logger/s4-logger.ts.html +514 -0
  34. package/coverage/prettify.css +1 -0
  35. package/coverage/prettify.js +2 -0
  36. package/coverage/sort-arrow-sprite.png +0 -0
  37. package/coverage/sorter.js +196 -0
  38. package/coverage/tmp/coverage-24302-1746472691313-0.json +1 -0
  39. package/coverage/tmp/coverage-24302-1746472691366-1.json +1 -0
  40. package/dist/cache/index.d.ts +22 -0
  41. package/dist/cache/index.js +166 -0
  42. package/dist/cache/index.js.map +1 -0
  43. package/dist/constants/index.d.ts +6 -0
  44. package/dist/constants/index.js +9 -0
  45. package/dist/constants/index.js.map +1 -0
  46. package/dist/coverage/block-navigation.d.ts +1 -0
  47. package/dist/coverage/block-navigation.js +70 -0
  48. package/dist/coverage/block-navigation.js.map +1 -0
  49. package/dist/coverage/lcov-report/block-navigation.d.ts +1 -0
  50. package/dist/coverage/lcov-report/block-navigation.js +70 -0
  51. package/dist/coverage/lcov-report/block-navigation.js.map +1 -0
  52. package/dist/coverage/lcov-report/prettify.d.ts +0 -0
  53. package/dist/coverage/lcov-report/prettify.js +477 -0
  54. package/dist/coverage/lcov-report/prettify.js.map +1 -0
  55. package/dist/coverage/lcov-report/sorter.d.ts +1 -0
  56. package/dist/coverage/lcov-report/sorter.js +163 -0
  57. package/dist/coverage/lcov-report/sorter.js.map +1 -0
  58. package/dist/coverage/prettify.d.ts +0 -0
  59. package/dist/coverage/prettify.js +477 -0
  60. package/dist/coverage/prettify.js.map +1 -0
  61. package/dist/coverage/sorter.d.ts +1 -0
  62. package/dist/coverage/sorter.js +163 -0
  63. package/dist/coverage/sorter.js.map +1 -0
  64. package/dist/formatter/index.d.ts +37 -0
  65. package/dist/formatter/index.js +75 -0
  66. package/dist/formatter/index.js.map +1 -0
  67. package/dist/hal/index.d.ts +5 -0
  68. package/dist/hal/index.js +69 -0
  69. package/dist/hal/index.js.map +1 -0
  70. package/dist/health/health-logger.d.ts +9 -0
  71. package/dist/health/health-logger.js +34 -0
  72. package/dist/health/health-logger.js.map +1 -0
  73. package/dist/health/index.d.ts +19 -0
  74. package/dist/health/index.js +175 -0
  75. package/dist/health/index.js.map +1 -0
  76. package/dist/helpers/index.d.ts +1 -0
  77. package/dist/helpers/index.js +2 -0
  78. package/dist/helpers/index.js.map +1 -0
  79. package/dist/helpers/test-server-wrapper.d.ts +120 -0
  80. package/dist/helpers/test-server-wrapper.js +165 -0
  81. package/dist/helpers/test-server-wrapper.js.map +1 -0
  82. package/dist/index.d.ts +1 -0
  83. package/dist/index.js +17 -0
  84. package/dist/index.js.map +1 -0
  85. package/dist/last-commit.d.ts +1 -0
  86. package/dist/last-commit.js +12 -0
  87. package/dist/last-commit.js.map +1 -0
  88. package/dist/last_commit/index.d.ts +7 -0
  89. package/dist/last_commit/index.js +83 -0
  90. package/dist/last_commit/index.js.map +1 -0
  91. package/dist/paginator/s4-pagination.d.ts +9 -0
  92. package/dist/paginator/s4-pagination.js +49 -0
  93. package/dist/paginator/s4-pagination.js.map +1 -0
  94. package/dist/paginator/sql-pagination.d.ts +27 -0
  95. package/dist/paginator/sql-pagination.js +166 -0
  96. package/dist/paginator/sql-pagination.js.map +1 -0
  97. package/dist/paper-trail/helpers.d.ts +11 -0
  98. package/dist/paper-trail/helpers.js +74 -0
  99. package/dist/paper-trail/helpers.js.map +1 -0
  100. package/dist/paper-trail/index.d.ts +13 -0
  101. package/dist/paper-trail/index.js +662 -0
  102. package/dist/paper-trail/index.js.map +1 -0
  103. package/dist/prompts/index.d.ts +14 -0
  104. package/dist/prompts/index.js +63 -0
  105. package/dist/prompts/index.js.map +1 -0
  106. package/dist/queue/index.d.ts +166 -0
  107. package/dist/queue/index.js +371 -0
  108. package/dist/queue/index.js.map +1 -0
  109. package/dist/queue/publisher.d.ts +31 -0
  110. package/dist/queue/publisher.js +84 -0
  111. package/dist/queue/publisher.js.map +1 -0
  112. package/dist/queue/queue-logger.d.ts +9 -0
  113. package/dist/queue/queue-logger.js +35 -0
  114. package/dist/queue/queue-logger.js.map +1 -0
  115. package/dist/queue/subscriber.d.ts +39 -0
  116. package/dist/queue/subscriber.js +97 -0
  117. package/dist/queue/subscriber.js.map +1 -0
  118. package/dist/safe_proxy/index.d.ts +13 -0
  119. package/dist/safe_proxy/index.js +54 -0
  120. package/dist/safe_proxy/index.js.map +1 -0
  121. package/dist/serializer/index.d.ts +5 -0
  122. package/dist/serializer/index.js +83 -0
  123. package/dist/serializer/index.js.map +1 -0
  124. package/dist/test/debug-array.d.ts +0 -0
  125. package/dist/test/debug-array.js +1 -0
  126. package/dist/test/debug-array.js.map +1 -0
  127. package/dist/test/debug-setJSONB.d.ts +0 -0
  128. package/dist/test/debug-setJSONB.js +1 -0
  129. package/dist/test/debug-setJSONB.js.map +1 -0
  130. package/dist/test/prompt.test.d.ts +1 -0
  131. package/dist/test/prompt.test.js +74 -0
  132. package/dist/test/prompt.test.js.map +1 -0
  133. package/dist/test/s4-formatter.spec.d.ts +1 -0
  134. package/dist/test/s4-formatter.spec.js +67 -0
  135. package/dist/test/s4-formatter.spec.js.map +1 -0
  136. package/dist/test/s4-pagination.spec.d.ts +1 -0
  137. package/dist/test/s4-pagination.spec.js +170 -0
  138. package/dist/test/s4-pagination.spec.js.map +1 -0
  139. package/dist/test/safe-proxy.spec.d.ts +1 -0
  140. package/dist/test/safe-proxy.spec.js +252 -0
  141. package/dist/test/safe-proxy.spec.js.map +1 -0
  142. package/dist/test/serializer.spec.d.ts +1 -0
  143. package/dist/test/serializer.spec.js +27 -0
  144. package/dist/test/serializer.spec.js.map +1 -0
  145. package/dist/test/utils.spec.d.ts +1 -0
  146. package/dist/test/utils.spec.js +446 -0
  147. package/dist/test/utils.spec.js.map +1 -0
  148. package/dist/ts/cache/index.d.ts +33 -0
  149. package/dist/ts/cache/index.js +171 -0
  150. package/dist/ts/cache/index.js.map +1 -0
  151. package/dist/ts/configurations/server-config.d.ts +4 -0
  152. package/dist/ts/configurations/server-config.js +2 -0
  153. package/dist/ts/configurations/server-config.js.map +1 -0
  154. package/dist/ts/constants/index.d.ts +7 -0
  155. package/dist/ts/constants/index.js +8 -0
  156. package/dist/ts/constants/index.js.map +1 -0
  157. package/dist/ts/cycle/index.d.ts +53 -0
  158. package/dist/ts/cycle/index.js +169 -0
  159. package/dist/ts/cycle/index.js.map +1 -0
  160. package/dist/ts/dns/DnsCache.d.ts +50 -0
  161. package/dist/ts/dns/DnsCache.js +137 -0
  162. package/dist/ts/dns/DnsCache.js.map +1 -0
  163. package/dist/ts/dns/index.d.ts +4 -0
  164. package/dist/ts/dns/index.js +4 -0
  165. package/dist/ts/dns/index.js.map +1 -0
  166. package/dist/ts/formatter/index.d.ts +44 -0
  167. package/dist/ts/formatter/index.js +76 -0
  168. package/dist/ts/formatter/index.js.map +1 -0
  169. package/dist/ts/hal/index.d.ts +26 -0
  170. package/dist/ts/hal/index.js +70 -0
  171. package/dist/ts/hal/index.js.map +1 -0
  172. package/dist/ts/health/index.d.ts +53 -0
  173. package/dist/ts/health/index.js +165 -0
  174. package/dist/ts/health/index.js.map +1 -0
  175. package/dist/ts/helpers/index.d.ts +1 -0
  176. package/dist/ts/helpers/index.js +2 -0
  177. package/dist/ts/helpers/index.js.map +1 -0
  178. package/dist/ts/helpers/test-server-wrapper.d.ts +56 -0
  179. package/dist/ts/helpers/test-server-wrapper.js +144 -0
  180. package/dist/ts/helpers/test-server-wrapper.js.map +1 -0
  181. package/dist/ts/index.d.ts +22 -0
  182. package/dist/ts/index.js +27 -0
  183. package/dist/ts/index.js.map +1 -0
  184. package/dist/ts/last-commit/index.d.ts +12 -0
  185. package/dist/ts/last-commit/index.js +82 -0
  186. package/dist/ts/last-commit/index.js.map +1 -0
  187. package/dist/ts/logger/index.d.ts +3 -0
  188. package/dist/ts/logger/index.js +4 -0
  189. package/dist/ts/logger/index.js.map +1 -0
  190. package/dist/ts/logger/s4-logger.d.ts +23 -0
  191. package/dist/ts/logger/s4-logger.js +105 -0
  192. package/dist/ts/logger/s4-logger.js.map +1 -0
  193. package/dist/ts/paginator/index.d.ts +2 -0
  194. package/dist/ts/paginator/index.js +3 -0
  195. package/dist/ts/paginator/index.js.map +1 -0
  196. package/dist/ts/paginator/s4-pagination.d.ts +26 -0
  197. package/dist/ts/paginator/s4-pagination.js +49 -0
  198. package/dist/ts/paginator/s4-pagination.js.map +1 -0
  199. package/dist/ts/paginator/sql-pagination.d.ts +52 -0
  200. package/dist/ts/paginator/sql-pagination.js +157 -0
  201. package/dist/ts/paginator/sql-pagination.js.map +1 -0
  202. package/dist/ts/paper-trail/helpers.d.ts +14 -0
  203. package/dist/ts/paper-trail/helpers.js +74 -0
  204. package/dist/ts/paper-trail/helpers.js.map +1 -0
  205. package/dist/ts/paper-trail/index.d.ts +54 -0
  206. package/dist/ts/paper-trail/index.js +236 -0
  207. package/dist/ts/paper-trail/index.js.map +1 -0
  208. package/dist/ts/prompts/index.d.ts +21 -0
  209. package/dist/ts/prompts/index.js +68 -0
  210. package/dist/ts/prompts/index.js.map +1 -0
  211. package/dist/ts/queue/index.d.ts +232 -0
  212. package/dist/ts/queue/index.js +440 -0
  213. package/dist/ts/queue/index.js.map +1 -0
  214. package/dist/ts/queue/publisher.d.ts +41 -0
  215. package/dist/ts/queue/publisher.js +84 -0
  216. package/dist/ts/queue/publisher.js.map +1 -0
  217. package/dist/ts/queue/queue-logger.d.ts +10 -0
  218. package/dist/ts/queue/queue-logger.js +35 -0
  219. package/dist/ts/queue/queue-logger.js.map +1 -0
  220. package/dist/ts/queue/subscriber.d.ts +55 -0
  221. package/dist/ts/queue/subscriber.js +98 -0
  222. package/dist/ts/queue/subscriber.js.map +1 -0
  223. package/dist/ts/safe-proxy/index.d.ts +35 -0
  224. package/dist/ts/safe-proxy/index.js +54 -0
  225. package/dist/ts/safe-proxy/index.js.map +1 -0
  226. package/dist/ts/serializer/index.d.ts +52 -0
  227. package/dist/ts/serializer/index.js +83 -0
  228. package/dist/ts/serializer/index.js.map +1 -0
  229. package/dist/ts/task-scheduler/index.d.ts +130 -0
  230. package/dist/ts/task-scheduler/index.js +259 -0
  231. package/dist/ts/task-scheduler/index.js.map +1 -0
  232. package/dist/ts/utils/index.d.ts +49 -0
  233. package/dist/ts/utils/index.js +157 -0
  234. package/dist/ts/utils/index.js.map +1 -0
  235. package/package.json +10 -8
  236. package/paper-trail/index.js +2 -1
  237. package/queue/index.js +57 -69
  238. package/scripts/publish.sh +46 -0
  239. package/test/health.spec.js +213 -0
  240. package/test/prompt.test.js +91 -0
  241. package/test/s4-formatter.spec.js +80 -0
  242. package/test/s4-pagination.spec.js +196 -0
  243. package/test/serializer.spec.js +34 -0
  244. package/test/utils.spec.js +145 -0
  245. package/package.tar.gz +0 -0
@@ -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 };
@@ -0,0 +1,74 @@
1
+ import pkg from 'deep-diff';
2
+ import _ from 'lodash';
3
+ const { diff } = pkg;
4
+ const capitalizeFirstLetter = (string) => string.charAt(0).toUpperCase() + string.slice(1);
5
+ const toUnderscored = (obj) => {
6
+ _.forEach(obj, (k, v) => {
7
+ obj[k] = v
8
+ .replace(/(?:^|\.?)([A-Z])/g, (x, y) => `_${y.toLowerCase()}`)
9
+ .replace(/^_/, '');
10
+ });
11
+ return obj;
12
+ };
13
+ const calcDelta = (current, next, exclude, strict, DEBUG = false) => {
14
+ if (DEBUG) {
15
+ console.log('current', current);
16
+ console.log('next', next);
17
+ console.log('exclude', exclude);
18
+ }
19
+ const di = diff(current, next);
20
+ if (DEBUG) {
21
+ console.log('di', di);
22
+ let diffs2 = [];
23
+ if (di) {
24
+ diffs2 = di.map((i) => JSON.parse(JSON.stringify(i).replace('"__data",', '')));
25
+ }
26
+ console.log('diffs2', diffs2);
27
+ console.log('filter1', diffs2.filter(i => i.path.join(',').indexOf('_') === -1));
28
+ console.log('filter2', diffs2.filter(i => exclude.every(x => i.path.indexOf(x) === -1)));
29
+ }
30
+ let diffs = [];
31
+ if (di) {
32
+ diffs = di
33
+ .map((i) => JSON.parse(JSON.stringify(i).replace('"__data",', '')))
34
+ .filter((i) => {
35
+ if (!strict && i.kind === 'E') {
36
+ // eslint-disable-next-line eqeqeq
37
+ if (i.lhs != i.rhs)
38
+ return i;
39
+ }
40
+ else
41
+ return i;
42
+ return false;
43
+ })
44
+ .filter((i) => exclude.every((x) => i.path.indexOf(x) === -1));
45
+ }
46
+ if (diffs.length > 0) {
47
+ return diffs;
48
+ }
49
+ return null;
50
+ };
51
+ const diffToString = (val) => {
52
+ if (typeof val === 'undefined' || val === null)
53
+ return '';
54
+ if (val === true)
55
+ return '1';
56
+ if (val === false)
57
+ return '0';
58
+ if (typeof val === 'string')
59
+ return val;
60
+ if (!Number.isNaN(Number(val)))
61
+ return `${String(val)}`;
62
+ if ((typeof val === 'undefined' ? 'undefined' : typeof val) === 'object')
63
+ return `${JSON.stringify(val)}`;
64
+ if (Array.isArray(val))
65
+ return `${JSON.stringify(val)}`;
66
+ return '';
67
+ };
68
+ export default {
69
+ capitalizeFirstLetter,
70
+ toUnderscored,
71
+ calcDelta,
72
+ diffToString
73
+ };
74
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../ts/paper-trail/helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ interface PaperTrailOptions {
2
+ debug?: boolean;
3
+ log?: any;
4
+ exclude?: string[];
5
+ excludeExtras?: string[];
6
+ excludeVirtualAttributes?: boolean;
7
+ censor?: string[];
8
+ revisionAttribute?: string;
9
+ revisionModel?: string;
10
+ revisionChangeModel?: string;
11
+ enableRevisionChangeModel?: boolean;
12
+ UUID?: boolean;
13
+ mixedDocumentReference?: boolean;
14
+ underscored?: boolean;
15
+ underscoredAttributes?: boolean;
16
+ includeReferences?: string[];
17
+ defaultAttributes?: {
18
+ documentId: string;
19
+ revisionId: string;
20
+ autoGenerated: string;
21
+ documentUuid?: string;
22
+ };
23
+ als?: any;
24
+ userModel?: boolean;
25
+ userModelAttribute?: string;
26
+ tenantModel?: boolean;
27
+ tenantModelAttribute?: string;
28
+ enableCompression?: boolean;
29
+ enableMigration?: boolean;
30
+ enableStrictDiff?: boolean;
31
+ continuationNamespace?: any;
32
+ continuationKey?: string;
33
+ continuationTenantKey?: string;
34
+ metaDataFields?: any;
35
+ metaDataContinuationKey?: string;
36
+ mysql?: boolean;
37
+ }
38
+ interface ModelInstance {
39
+ get: (key?: string) => Record<string, any> | any;
40
+ set: (key: string, value: any) => void;
41
+ save: () => Promise<any>;
42
+ [key: string]: any;
43
+ }
44
+ interface ModelOptions {
45
+ noPaperTrail?: boolean;
46
+ [key: string]: any;
47
+ }
48
+ declare const paperTrail: {
49
+ init: (sequelize: any, sequelizePackage: any, optionsArg?: PaperTrailOptions) => void;
50
+ hasPaperTrail: () => boolean;
51
+ defineModels: (db: any) => void;
52
+ };
53
+ export default paperTrail;
54
+ export type { PaperTrailOptions, ModelInstance, ModelOptions };
@@ -0,0 +1,236 @@
1
+ import _ from 'lodash';
2
+ import helpers from './helpers.js';
3
+ const censorText = "**********";
4
+ let failHard = false;
5
+ let Sequelize = null;
6
+ const paperTrail = {
7
+ init: (sequelize, sequelizePackage, optionsArg) => {
8
+ Sequelize = sequelizePackage;
9
+ // In case that options is being parsed as a readonly attribute.
10
+ // Or it is not passed at all
11
+ const optsArg = _.cloneDeep(optionsArg || {});
12
+ const defaultOptions = {
13
+ debug: false,
14
+ log: null,
15
+ exclude: [
16
+ 'id',
17
+ 'createdAt',
18
+ 'updatedAt',
19
+ 'deletedAt',
20
+ 'created_at',
21
+ 'updated_at',
22
+ 'deleted_at',
23
+ 'audit_source',
24
+ 'revision',
25
+ ],
26
+ // additional fields to exclude on a global basis
27
+ excludeExtras: [],
28
+ excludeVirtualAttributes: true, // by default do not record these
29
+ censor: ["password", "password_salt", "temp_secret", "mfa_totp_secret"],
30
+ revisionAttribute: 'revision',
31
+ revisionModel: 'Revision',
32
+ revisionChangeModel: 'RevisionChange',
33
+ enableRevisionChangeModel: false,
34
+ UUID: false,
35
+ // does this project use int's and UUIDs for some references (postgres)
36
+ mixedDocumentReference: false,
37
+ underscored: false,
38
+ underscoredAttributes: false,
39
+ // always store these keys in a reference value if seen
40
+ includeReferences: [],
41
+ defaultAttributes: {
42
+ documentId: 'documentId',
43
+ revisionId: 'revisionId',
44
+ autoGenerated: 'autoGenerated'
45
+ },
46
+ als: null,
47
+ userModel: false,
48
+ userModelAttribute: 'userId',
49
+ tenantModel: false,
50
+ tenantModelAttribute: 'tenantId',
51
+ enableCompression: false,
52
+ enableMigration: false,
53
+ enableStrictDiff: true,
54
+ continuationNamespace: null,
55
+ continuationKey: 'userId',
56
+ continuationTenantKey: 'tenantId',
57
+ metaDataFields: null,
58
+ metaDataContinuationKey: 'metaData',
59
+ mysql: false,
60
+ };
61
+ if (optsArg.mixedDocumentReference)
62
+ defaultOptions.defaultAttributes.documentUuid = "documentUuid";
63
+ if (optsArg.underscoredAttributes) {
64
+ helpers.toUnderscored(defaultOptions.defaultAttributes);
65
+ }
66
+ // deals with not wanting to overwrite the initial ones, just add some
67
+ if (optsArg.excludeExtras) {
68
+ if (optsArg.exclude) {
69
+ optsArg.exclude = [...optsArg.exclude, ...optsArg.excludeExtras];
70
+ }
71
+ else {
72
+ optsArg.exclude = [...defaultOptions.exclude, ...optsArg.excludeExtras];
73
+ }
74
+ }
75
+ const options = _.defaults(optsArg, defaultOptions);
76
+ const log = options.log || console.log;
77
+ function createBeforeHook(operation) {
78
+ const beforeHook = function beforeHook(instance, opt) {
79
+ if (options.debug) {
80
+ log('beforeHook called');
81
+ log('instance:', instance);
82
+ log('opt:', opt);
83
+ }
84
+ if (opt.noPaperTrail) {
85
+ if (options.debug) {
86
+ log('noPaperTrail set, skipping');
87
+ }
88
+ return;
89
+ }
90
+ // Store the original values for comparison
91
+ const originalValues = instance.get();
92
+ instance.set('_paperTrailOriginalValues', originalValues);
93
+ };
94
+ return beforeHook;
95
+ }
96
+ function createAfterHook(operation) {
97
+ const afterHook = function afterHook(instance, opt) {
98
+ if (options.debug) {
99
+ log('afterHook called');
100
+ log('instance:', instance);
101
+ log('opt:', opt);
102
+ }
103
+ if (opt.noPaperTrail) {
104
+ if (options.debug) {
105
+ log('noPaperTrail set, skipping');
106
+ }
107
+ return;
108
+ }
109
+ // Get the original values and current values
110
+ const originalValues = instance.get('_paperTrailOriginalValues') || {};
111
+ const currentValues = instance.get();
112
+ // Remove the temporary field
113
+ delete currentValues._paperTrailOriginalValues;
114
+ // Calculate differences
115
+ const differences = helpers.calcDelta(originalValues, currentValues, options.exclude || [], options.enableStrictDiff || false, options.debug);
116
+ if (differences && differences.length > 0) {
117
+ // Create revision record
118
+ const revisionData = {
119
+ documentId: instance.get(options.defaultAttributes.documentId),
120
+ revision: instance.get(options.revisionAttribute),
121
+ document: JSON.stringify(currentValues),
122
+ operation: operation,
123
+ changes: JSON.stringify(differences),
124
+ createdAt: new Date()
125
+ };
126
+ // Add user information if available
127
+ if (options.userModel && options.als) {
128
+ const user = options.als.get(options.continuationKey);
129
+ if (user) {
130
+ revisionData[options.userModelAttribute] = user;
131
+ }
132
+ }
133
+ // Add tenant information if available
134
+ if (options.tenantModel && options.als) {
135
+ const tenant = options.als.get(options.continuationTenantKey);
136
+ if (tenant) {
137
+ revisionData[options.tenantModelAttribute] = tenant;
138
+ }
139
+ }
140
+ // Save revision
141
+ const Revision = sequelize.models[options.revisionModel];
142
+ if (Revision) {
143
+ Revision.create(revisionData).catch((err) => {
144
+ if (failHard) {
145
+ throw err;
146
+ }
147
+ else {
148
+ log('Error creating revision:', err);
149
+ }
150
+ });
151
+ }
152
+ }
153
+ };
154
+ return afterHook;
155
+ }
156
+ // Add hooks to all models
157
+ Object.keys(sequelize.models).forEach(modelName => {
158
+ const model = sequelize.models[modelName];
159
+ // Add before hooks
160
+ model.addHook('beforeCreate', createBeforeHook('create'));
161
+ model.addHook('beforeUpdate', createBeforeHook('update'));
162
+ model.addHook('beforeDestroy', createBeforeHook('destroy'));
163
+ // Add after hooks
164
+ model.addHook('afterCreate', createAfterHook('create'));
165
+ model.addHook('afterUpdate', createAfterHook('update'));
166
+ model.addHook('afterDestroy', createAfterHook('destroy'));
167
+ });
168
+ },
169
+ hasPaperTrail: function hasPaperTrail() {
170
+ return Sequelize !== null;
171
+ },
172
+ defineModels: function defineModels(db) {
173
+ if (!Sequelize) {
174
+ throw new Error('PaperTrail not initialized. Call paperTrail.init() first.');
175
+ }
176
+ const Revision = db.define('Revision', {
177
+ id: {
178
+ type: Sequelize.INTEGER,
179
+ primaryKey: true,
180
+ autoIncrement: true
181
+ },
182
+ documentId: {
183
+ type: Sequelize.STRING,
184
+ allowNull: false
185
+ },
186
+ revision: {
187
+ type: Sequelize.INTEGER,
188
+ allowNull: false
189
+ },
190
+ document: {
191
+ type: Sequelize.TEXT,
192
+ allowNull: false
193
+ },
194
+ operation: {
195
+ type: Sequelize.STRING,
196
+ allowNull: false
197
+ },
198
+ changes: {
199
+ type: Sequelize.TEXT,
200
+ allowNull: true
201
+ },
202
+ userId: {
203
+ type: Sequelize.INTEGER,
204
+ allowNull: true
205
+ },
206
+ tenantId: {
207
+ type: Sequelize.INTEGER,
208
+ allowNull: true
209
+ },
210
+ createdAt: {
211
+ type: Sequelize.DATE,
212
+ allowNull: false
213
+ }
214
+ }, {
215
+ tableName: 'revisions',
216
+ timestamps: false
217
+ });
218
+ // Add associations if user and tenant models exist
219
+ if (db.models.User) {
220
+ Revision.belongsTo(db.models.User, { foreignKey: 'userId' });
221
+ }
222
+ if (db.models.Tenant) {
223
+ Revision.belongsTo(db.models.Tenant, { foreignKey: 'tenantId' });
224
+ }
225
+ Revision.associate = function associate(models) {
226
+ if (models.User) {
227
+ Revision.belongsTo(models.User, { foreignKey: 'userId' });
228
+ }
229
+ if (models.Tenant) {
230
+ Revision.belongsTo(models.Tenant, { foreignKey: 'tenantId' });
231
+ }
232
+ };
233
+ }
234
+ };
235
+ export default paperTrail;
236
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../ts/paper-trail/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { ArgumentParser } from 'argparse';
2
+ interface CLIInitOptions {
3
+ asyncFcns?: (() => Promise<void>)[];
4
+ extraFcns?: (() => void)[];
5
+ sleepTime?: number;
6
+ }
7
+ interface PromptOptions {
8
+ [key: string]: {
9
+ type: string;
10
+ description?: string;
11
+ required?: boolean;
12
+ default?: any;
13
+ };
14
+ }
15
+ declare const setupCLIParser: (description: string) => ArgumentParser;
16
+ declare const commonCLIInit: (options?: CLIInitOptions) => Promise<void>;
17
+ declare const promptCLIAsync: (options: PromptOptions) => Promise<Record<string, any>>;
18
+ declare const waitCLIPrompt: PromptOptions;
19
+ declare const continueCLIPrompt: PromptOptions;
20
+ declare const cliSleep: (ms: number) => Promise<void>;
21
+ export { commonCLIInit, continueCLIPrompt, promptCLIAsync, setupCLIParser, cliSleep, waitCLIPrompt, type CLIInitOptions, type PromptOptions };
@@ -0,0 +1,68 @@
1
+ /* Essentia Common Prompt Functions */
2
+ // This file contains common prompt functions that are used in CLI scripts
3
+ // that are run in the each project. These functions are used to
4
+ // prompt the user for input and to wait for the user to press enter
5
+ // before continuing. This is useful for scripts that are run in the
6
+ // command line and need to wait for the user to do something before
7
+ // continuing.
8
+ import { S4Logger } from "../logger/s4-logger.js";
9
+ import { ArgumentParser } from 'argparse';
10
+ import prompt from "prompt";
11
+ const logger = new S4Logger();
12
+ // New common argument parser which makes parsing and setting up commandline options easier
13
+ const setupCLIParser = (description) => {
14
+ logger.info(description);
15
+ return new ArgumentParser({ description });
16
+ };
17
+ // a common init function which waits for the command prompt to be delivered
18
+ // a common use is for the awaiting of the queues to initialize before running
19
+ const commonCLIInit = async (options = {}) => {
20
+ //add in defaults to options if they have not been specified or object is {}
21
+ const defaultOptions = {
22
+ asyncFcns: [],
23
+ extraFcns: [],
24
+ sleepTime: 1000,
25
+ ...options
26
+ };
27
+ // Sleep for 1 second to allow the prompt to be displayed
28
+ // at the end of bootstrap logs
29
+ await cliSleep(defaultOptions.sleepTime);
30
+ defaultOptions.extraFcns.forEach(fcn => {
31
+ fcn();
32
+ });
33
+ for (const fcn of defaultOptions.asyncFcns) {
34
+ await fcn();
35
+ }
36
+ };
37
+ const promptCLIAsync = async (options) => {
38
+ return new Promise((resolve, reject) => {
39
+ prompt.start();
40
+ prompt.get(options, (err, res) => {
41
+ if (err) {
42
+ reject(err);
43
+ }
44
+ else {
45
+ resolve(res);
46
+ }
47
+ });
48
+ });
49
+ };
50
+ // A predefined waitPrompt for use at the end of the scripts that use
51
+ // message queues. Message Queues often take a bit to fire
52
+ const waitCLIPrompt = {
53
+ "Push <enter> when done": {
54
+ type: "boolean"
55
+ }
56
+ };
57
+ const continueCLIPrompt = {
58
+ "Push <enter> to continue": {
59
+ type: "boolean"
60
+ }
61
+ };
62
+ const cliSleep = async (ms) => {
63
+ return new Promise((resolve) => {
64
+ setTimeout(resolve, ms);
65
+ });
66
+ };
67
+ export { commonCLIInit, continueCLIPrompt, promptCLIAsync, setupCLIParser, cliSleep, waitCLIPrompt };
68
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../ts/prompts/index.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,0EAA0E;AAC1E,kEAAkE;AAClE,qEAAqE;AACrE,sEAAsE;AACtE,qEAAqE;AACrE,eAAe;AAEf,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,MAAM,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;AAiB9B,2FAA2F;AAC3F,MAAM,cAAc,GAAG,CAAC,WAAmB,EAAkB,EAAE;IAC7D,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzB,OAAO,IAAI,cAAc,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;AAC7C,CAAC,CAAC;AAEF,4EAA4E;AAC5E,8EAA8E;AAC9E,MAAM,aAAa,GAAG,KAAK,EAAE,UAA0B,EAAE,EAAiB,EAAE;IAC1E,4EAA4E;IAC5E,MAAM,cAAc,GAA6B;QAC/C,SAAS,EAAE,EAAE;QACb,SAAS,EAAE,EAAE;QACb,SAAS,EAAE,IAAI;QACf,GAAG,OAAO;KACX,CAAC;IAEF,yDAAyD;IACzD,+BAA+B;IAC/B,MAAM,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAEzC,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QACrC,GAAG,EAAE,CAAC;IACR,CAAC,CAAC,CAAC;IAEH,KAAK,MAAM,GAAG,IAAI,cAAc,CAAC,SAAS,EAAE,CAAC;QAC3C,MAAM,GAAG,EAAE,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,KAAK,EAAE,OAAsB,EAAgC,EAAE;IACpF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,GAAQ,EAAE,GAAQ,EAAE,EAAE;YACzC,IAAI,GAAG,EAAE,CAAC;gBACR,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,CAAC;YACf,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,qEAAqE;AACrE,4DAA4D;AAC5D,MAAM,aAAa,GAAkB;IACnC,wBAAwB,EAAE;QACxB,IAAI,EAAE,SAAS;KAChB;CACF,CAAC;AAEF,MAAM,iBAAiB,GAAkB;IACvC,0BAA0B,EAAE;QAC1B,IAAI,EAAE,SAAS;KAChB;CACF,CAAC;AAEF,MAAM,QAAQ,GAAG,KAAK,EAAE,EAAU,EAAiB,EAAE;IACnD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,QAAQ,EACR,aAAa,EAGd,CAAC"}