@freshpointcz/fresh-core 0.0.15 → 0.0.17

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.
package/dist/index.mjs CHANGED
@@ -108,7 +108,7 @@ var require_main = __commonJS({
108
108
  var fs = __require("fs");
109
109
  var path2 = __require("path");
110
110
  var os = __require("os");
111
- var crypto = __require("crypto");
111
+ var crypto3 = __require("crypto");
112
112
  var packageJson = require_package();
113
113
  var version = packageJson.version;
114
114
  var LINE = /(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/mg;
@@ -355,7 +355,7 @@ var require_main = __commonJS({
355
355
  const authTag = ciphertext.subarray(-16);
356
356
  ciphertext = ciphertext.subarray(12, -16);
357
357
  try {
358
- const aesgcm = crypto.createDecipheriv("aes-256-gcm", key, nonce);
358
+ const aesgcm = crypto3.createDecipheriv("aes-256-gcm", key, nonce);
359
359
  aesgcm.setAuthTag(authTag);
360
360
  return `${aesgcm.update(ciphertext)}${aesgcm.final()}`;
361
361
  } catch (error) {
@@ -648,56 +648,6 @@ __name(_SinglePromiseWaiter, "SinglePromiseWaiter");
648
648
  __publicField(_SinglePromiseWaiter, "_instance");
649
649
  var SinglePromiseWaiter = _SinglePromiseWaiter;
650
650
 
651
- // src/common/winston.ts
652
- import winston from "winston";
653
- var SERVICE = process.env.SERVICE_NAME || "depot-ordering-service";
654
- var ENV = process.env.NODE_ENV || "localhost";
655
- var levelToSeverity = {
656
- silly: "debug",
657
- verbose: "debug",
658
- debug: "debug",
659
- http: "info",
660
- info: "info",
661
- warn: "warn",
662
- error: "error"
663
- };
664
- var baseFormat = winston.format.combine(winston.format.timestamp({
665
- format: /* @__PURE__ */ __name(() => (/* @__PURE__ */ new Date()).toISOString(), "format")
666
- }), winston.format.errors({
667
- stack: true
668
- }), winston.format.printf((info) => {
669
- const payload = {
670
- ts: info.timestamp,
671
- level: info.level,
672
- severity: levelToSeverity[info.level] || info.level,
673
- message: info.message,
674
- service: SERVICE,
675
- env: ENV,
676
- process_name: process.title || process.argv[1] || "node",
677
- pid: process.pid,
678
- device: process.env.DEVICE_ID || void 0,
679
- traceId: info.traceId,
680
- spanId: info.spanId,
681
- extra: info.extra || info.meta || void 0,
682
- stack: info.stack
683
- };
684
- return JSON.stringify(payload);
685
- }));
686
- var transports = [
687
- new winston.transports.Console({
688
- level: process.env.LOG_LEVEL || "info"
689
- })
690
- ];
691
- var logger = winston.createLogger({
692
- level: process.env.LOG_LEVEL || "info",
693
- format: baseFormat,
694
- transports,
695
- exitOnError: false
696
- });
697
- logger.stream = {
698
- write: /* @__PURE__ */ __name((message) => logger.info(message.trim()), "write")
699
- };
700
-
701
651
  // src/common/utils/is-cron-valid.ts
702
652
  function isValidCron(expr) {
703
653
  const parts = expr.trim().split(/\s+/);
@@ -822,53 +772,46 @@ import { Entity } from "typeorm";
822
772
  // src/database/entities/fresh-entity.ts
823
773
  import { BaseEntity, PrimaryGeneratedColumn, CreateDateColumn, UpdateDateColumn, DeleteDateColumn, Index, Column } from "typeorm";
824
774
 
825
- // ../../node_modules/uuid/dist/esm/stringify.js
826
- var byteToHex = [];
827
- for (let i = 0; i < 256; ++i) {
828
- byteToHex.push((i + 256).toString(16).slice(1));
829
- }
830
- function unsafeStringify(arr, offset = 0) {
831
- return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + "-" + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + "-" + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + "-" + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + "-" + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();
832
- }
833
- __name(unsafeStringify, "unsafeStringify");
834
-
835
- // ../../node_modules/uuid/dist/esm/rng.js
836
- import { randomFillSync } from "crypto";
775
+ // ../../node_modules/uuid/dist/esm-node/rng.js
776
+ import crypto from "crypto";
837
777
  var rnds8Pool = new Uint8Array(256);
838
778
  var poolPtr = rnds8Pool.length;
839
779
  function rng() {
840
780
  if (poolPtr > rnds8Pool.length - 16) {
841
- randomFillSync(rnds8Pool);
781
+ crypto.randomFillSync(rnds8Pool);
842
782
  poolPtr = 0;
843
783
  }
844
784
  return rnds8Pool.slice(poolPtr, poolPtr += 16);
845
785
  }
846
786
  __name(rng, "rng");
847
787
 
848
- // ../../node_modules/uuid/dist/esm/native.js
849
- import { randomUUID } from "crypto";
788
+ // ../../node_modules/uuid/dist/esm-node/stringify.js
789
+ var byteToHex = [];
790
+ for (let i = 0; i < 256; ++i) {
791
+ byteToHex.push((i + 256).toString(16).slice(1));
792
+ }
793
+ function unsafeStringify(arr, offset = 0) {
794
+ return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + "-" + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + "-" + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + "-" + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + "-" + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];
795
+ }
796
+ __name(unsafeStringify, "unsafeStringify");
797
+
798
+ // ../../node_modules/uuid/dist/esm-node/native.js
799
+ import crypto2 from "crypto";
850
800
  var native_default = {
851
- randomUUID
801
+ randomUUID: crypto2.randomUUID
852
802
  };
853
803
 
854
- // ../../node_modules/uuid/dist/esm/v4.js
804
+ // ../../node_modules/uuid/dist/esm-node/v4.js
855
805
  function v4(options, buf, offset) {
856
- var _a, _b, _c;
857
806
  if (native_default.randomUUID && !buf && !options) {
858
807
  return native_default.randomUUID();
859
808
  }
860
809
  options = options || {};
861
- const rnds = (_c = (_b = options.random) != null ? _b : (_a = options.rng) == null ? void 0 : _a.call(options)) != null ? _c : rng();
862
- if (rnds.length < 16) {
863
- throw new Error("Random bytes length must be >= 16");
864
- }
810
+ const rnds = options.random || (options.rng || rng)();
865
811
  rnds[6] = rnds[6] & 15 | 64;
866
812
  rnds[8] = rnds[8] & 63 | 128;
867
813
  if (buf) {
868
814
  offset = offset || 0;
869
- if (offset < 0 || offset + 16 > buf.length) {
870
- throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);
871
- }
872
815
  for (let i = 0; i < 16; ++i) {
873
816
  buf[offset + i] = rnds[i];
874
817
  }
@@ -921,7 +864,7 @@ _ts_decorate([
921
864
  }),
922
865
  Column({
923
866
  type: "uuid",
924
- default: /* @__PURE__ */ __name(() => "timescale.uuid_generate_v4()", "default")
867
+ default: /* @__PURE__ */ __name(() => "gen_random_uuid()", "default")
925
868
  }),
926
869
  _ts_metadata("design:type", String)
927
870
  ], FreshEntity.prototype, "uuid", void 0);
@@ -1171,6 +1114,83 @@ var _FreshDao = class _FreshDao {
1171
1114
  __name(_FreshDao, "FreshDao");
1172
1115
  var FreshDao = _FreshDao;
1173
1116
 
1117
+ // src/database/subscribers/base-entity-change.subscriber.ts
1118
+ var _BaseEntityChangeSubscriber = class _BaseEntityChangeSubscriber {
1119
+ // ─── TypeORM lifecycle hooks ────────────────────────────────────────
1120
+ afterInsert(event) {
1121
+ var _a;
1122
+ const id = (_a = event.entity) == null ? void 0 : _a.id;
1123
+ if (!id) {
1124
+ return;
1125
+ }
1126
+ if (event.queryRunner.isTransactionActive) {
1127
+ this.addPending(event, id, "created");
1128
+ } else {
1129
+ console.warn(`${this.SUBSCRIBER_NAME} - Notification sent outside transaction for id=${id}`);
1130
+ this.sendNotification(id, "created", event.queryRunner.manager);
1131
+ }
1132
+ }
1133
+ afterUpdate(event) {
1134
+ var _a, _b, _c;
1135
+ const id = (_c = (_a = event.entity) == null ? void 0 : _a.id) != null ? _c : (_b = event.databaseEntity) == null ? void 0 : _b.id;
1136
+ if (!id) {
1137
+ return;
1138
+ }
1139
+ if (event.queryRunner.isTransactionActive) {
1140
+ this.addPending(event, id, "updated");
1141
+ } else {
1142
+ console.warn(`${this.SUBSCRIBER_NAME} - Notification sent outside transaction for id=${id}`);
1143
+ this.sendNotification(id, "updated", event.queryRunner.manager);
1144
+ }
1145
+ }
1146
+ afterSoftRemove(event) {
1147
+ var _a, _b, _c;
1148
+ const id = (_c = (_a = event.entity) == null ? void 0 : _a.id) != null ? _c : (_b = event.databaseEntity) == null ? void 0 : _b.id;
1149
+ if (!id) {
1150
+ return;
1151
+ }
1152
+ if (event.queryRunner.isTransactionActive) {
1153
+ this.addPending(event, id, "deleted");
1154
+ } else {
1155
+ console.warn(`${this.SUBSCRIBER_NAME} - Notification sent outside transaction for id=${id}`);
1156
+ this.sendNotification(id, "deleted", event.queryRunner.manager);
1157
+ }
1158
+ }
1159
+ async afterTransactionCommit(event) {
1160
+ var _a;
1161
+ const pending = (_a = event.queryRunner.data) == null ? void 0 : _a[this.PENDING_KEY];
1162
+ if (!pending || pending.size === 0) {
1163
+ return;
1164
+ }
1165
+ event.queryRunner.data[this.PENDING_KEY] = /* @__PURE__ */ new Map();
1166
+ for (const [id, changeEvent] of pending) {
1167
+ await this.sendNotification(id, changeEvent, event.connection.manager);
1168
+ }
1169
+ }
1170
+ // ─── Private helpers ───────────────────────────────────────────────
1171
+ addPending(event, id, changeEvent) {
1172
+ if (!event.queryRunner.data) {
1173
+ event.queryRunner.data = {};
1174
+ }
1175
+ if (!event.queryRunner.data[this.PENDING_KEY]) {
1176
+ event.queryRunner.data[this.PENDING_KEY] = /* @__PURE__ */ new Map();
1177
+ }
1178
+ const existing = event.queryRunner.data[this.PENDING_KEY].get(id);
1179
+ if (!existing || changeEvent === "created" || changeEvent === "deleted") {
1180
+ event.queryRunner.data[this.PENDING_KEY].set(id, changeEvent);
1181
+ }
1182
+ }
1183
+ async sendNotification(id, changeEvent, manager) {
1184
+ try {
1185
+ await this.handleNotification(id, changeEvent, manager);
1186
+ } catch (error) {
1187
+ console.error(`${this.SUBSCRIBER_NAME} - Failed to send notification: ${error instanceof Error ? error.message : error}`);
1188
+ }
1189
+ }
1190
+ };
1191
+ __name(_BaseEntityChangeSubscriber, "BaseEntityChangeSubscriber");
1192
+ var BaseEntityChangeSubscriber = _BaseEntityChangeSubscriber;
1193
+
1174
1194
  // src/common/schema/entities/category.entity.ts
1175
1195
  function _ts_decorate4(decorators, target, key, desc) {
1176
1196
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -1670,6 +1690,7 @@ export {
1670
1690
  AMOUNT_UNIT,
1671
1691
  ActionCommandCode,
1672
1692
  ApiError,
1693
+ BaseEntityChangeSubscriber,
1673
1694
  Category,
1674
1695
  DataHelper,
1675
1696
  DateUtils,
@@ -1702,7 +1723,6 @@ export {
1702
1723
  isNumberInRange,
1703
1724
  isObject,
1704
1725
  isString,
1705
- isValidCron,
1706
- logger
1726
+ isValidCron
1707
1727
  };
1708
1728
  //# sourceMappingURL=index.mjs.map