@winible/winible-typed 2.92.2 → 2.92.4

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.
@@ -65,7 +65,6 @@ exports.default = {
65
65
  await queryInterface.addIndex("users_on_bets", ["user_id"]);
66
66
  await queryInterface.addIndex("users_on_bets", ["bet_id"]);
67
67
  await queryInterface.addIndex("users_on_bets", ["user_id", "bet_placed"]);
68
- await queryInterface.addIndex("users_on_bets", ["modal_dismissed_at"]);
69
68
  },
70
69
  async down(queryInterface, sequelize) {
71
70
  await queryInterface.dropTable("users_on_bets");
@@ -1 +1 @@
1
- {"version":3,"file":"20251002044115-create-users-on-bets.js","sourceRoot":"","sources":["../../migrations/20251002044115-create-users-on-bets.ts"],"names":[],"mappings":";;AAAA,yCAAiE;AAEjE,kBAAe;IACb,KAAK,CAAC,EAAE,CAAC,cAA8B,EAAE,SAAoB;QAC3D,MAAM,cAAc,CAAC,WAAW,CAAC,eAAe,EAAE;YAChD,EAAE,EAAE;gBACF,IAAI,EAAE,qBAAS,CAAC,MAAM;gBACtB,UAAU,EAAE,IAAI;gBAChB,SAAS,EAAE,KAAK;gBAChB,YAAY,EAAE,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC;aACtC;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,qBAAS,CAAC,MAAM;gBACtB,KAAK,EAAE,SAAS;gBAChB,SAAS,EAAE,KAAK;gBAChB,UAAU,EAAE;oBACV,KAAK,EAAE,OAAO;oBACd,GAAG,EAAE,IAAI;iBACV;gBACD,QAAQ,EAAE,SAAS;gBACnB,QAAQ,EAAE,SAAS;aACpB;YACD,KAAK,EAAE;gBACL,IAAI,EAAE,qBAAS,CAAC,MAAM;gBACtB,KAAK,EAAE,QAAQ;gBACf,SAAS,EAAE,KAAK;gBAChB,UAAU,EAAE;oBACV,KAAK,EAAE,MAAM;oBACb,GAAG,EAAE,IAAI;iBACV;gBACD,QAAQ,EAAE,SAAS;gBACnB,QAAQ,EAAE,SAAS;aACpB;YACD,SAAS,EAAE;gBACT,IAAI,EAAE,qBAAS,CAAC,OAAO;gBACvB,KAAK,EAAE,YAAY;gBACnB,SAAS,EAAE,IAAI;gBACf,OAAO,EAAE,sDAAsD;aAChE;YACD,eAAe,EAAE;gBACf,IAAI,EAAE,qBAAS,CAAC,KAAK;gBACrB,KAAK,EAAE,mBAAmB;gBAC1B,SAAS,EAAE,IAAI;gBACf,OAAO,EAAE,0CAA0C;aACpD;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,qBAAS,CAAC,KAAK;gBACrB,KAAK,EAAE,UAAU;gBACjB,SAAS,EAAE,IAAI;gBACf,OAAO,EAAE,yDAAyD;aACnE;YACD,SAAS,EAAE;gBACT,IAAI,EAAE,qBAAS,CAAC,IAAI;gBACpB,KAAK,EAAE,YAAY;gBACnB,SAAS,EAAE,KAAK;aACjB;YACD,SAAS,EAAE;gBACT,IAAI,EAAE,qBAAS,CAAC,IAAI;gBACpB,KAAK,EAAE,YAAY;gBACnB,SAAS,EAAE,KAAK;aACjB;SACF,CAAC,CAAC;QAEH,2CAA2C;QAC3C,MAAM,cAAc,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;QAC5D,MAAM,cAAc,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC3D,MAAM,cAAc,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;QAC1E,MAAM,cAAc,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,cAA8B,EAAE,SAAoB;QAC7D,MAAM,cAAc,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IAClD,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"20251002044115-create-users-on-bets.js","sourceRoot":"","sources":["../../migrations/20251002044115-create-users-on-bets.ts"],"names":[],"mappings":";;AAAA,yCAAiE;AAEjE,kBAAe;IACb,KAAK,CAAC,EAAE,CAAC,cAA8B,EAAE,SAAoB;QAC3D,MAAM,cAAc,CAAC,WAAW,CAAC,eAAe,EAAE;YAChD,EAAE,EAAE;gBACF,IAAI,EAAE,qBAAS,CAAC,MAAM;gBACtB,UAAU,EAAE,IAAI;gBAChB,SAAS,EAAE,KAAK;gBAChB,YAAY,EAAE,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC;aACtC;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,qBAAS,CAAC,MAAM;gBACtB,KAAK,EAAE,SAAS;gBAChB,SAAS,EAAE,KAAK;gBAChB,UAAU,EAAE;oBACV,KAAK,EAAE,OAAO;oBACd,GAAG,EAAE,IAAI;iBACV;gBACD,QAAQ,EAAE,SAAS;gBACnB,QAAQ,EAAE,SAAS;aACpB;YACD,KAAK,EAAE;gBACL,IAAI,EAAE,qBAAS,CAAC,MAAM;gBACtB,KAAK,EAAE,QAAQ;gBACf,SAAS,EAAE,KAAK;gBAChB,UAAU,EAAE;oBACV,KAAK,EAAE,MAAM;oBACb,GAAG,EAAE,IAAI;iBACV;gBACD,QAAQ,EAAE,SAAS;gBACnB,QAAQ,EAAE,SAAS;aACpB;YACD,SAAS,EAAE;gBACT,IAAI,EAAE,qBAAS,CAAC,OAAO;gBACvB,KAAK,EAAE,YAAY;gBACnB,SAAS,EAAE,IAAI;gBACf,OAAO,EAAE,sDAAsD;aAChE;YACD,eAAe,EAAE;gBACf,IAAI,EAAE,qBAAS,CAAC,KAAK;gBACrB,KAAK,EAAE,mBAAmB;gBAC1B,SAAS,EAAE,IAAI;gBACf,OAAO,EAAE,0CAA0C;aACpD;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,qBAAS,CAAC,KAAK;gBACrB,KAAK,EAAE,UAAU;gBACjB,SAAS,EAAE,IAAI;gBACf,OAAO,EAAE,yDAAyD;aACnE;YACD,SAAS,EAAE;gBACT,IAAI,EAAE,qBAAS,CAAC,IAAI;gBACpB,KAAK,EAAE,YAAY;gBACnB,SAAS,EAAE,KAAK;aACjB;YACD,SAAS,EAAE;gBACT,IAAI,EAAE,qBAAS,CAAC,IAAI;gBACpB,KAAK,EAAE,YAAY;gBACnB,SAAS,EAAE,KAAK;aACjB;SACF,CAAC,CAAC;QAEH,2CAA2C;QAC3C,MAAM,cAAc,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;QAC5D,MAAM,cAAc,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC3D,MAAM,cAAc,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,cAA8B,EAAE,SAAoB;QAC7D,MAAM,cAAc,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IAClD,CAAC;CACF,CAAC"}
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sanitizeObject = exports.sanitizeFeedback = exports.sanitizeUserInput = void 0;
4
+ /**
5
+ * Sanitizes user input to prevent XSS and other security issues
6
+ * @param input - The string to sanitize
7
+ * @param maxLength - Maximum allowed length (default: 1000)
8
+ * @returns Sanitized string
9
+ */
10
+ function sanitizeUserInput(input, maxLength = 1000) {
11
+ if (!input || typeof input !== "string") {
12
+ return "";
13
+ }
14
+ // Trim whitespace
15
+ let sanitized = input.trim();
16
+ // Remove or escape potentially dangerous characters
17
+ sanitized = sanitized
18
+ // Remove null bytes
19
+ .replace(/\0/g, "")
20
+ // Remove potential script injection patterns first
21
+ .replace(/javascript:/gi, "")
22
+ .replace(/vbscript:/gi, "")
23
+ .replace(/data:/gi, "")
24
+ .replace(/on\w+\s*=/gi, "")
25
+ // Escape HTML entities
26
+ .replace(/&/g, "&")
27
+ .replace(/</g, "&lt;")
28
+ .replace(/>/g, "&gt;")
29
+ .replace(/"/g, "&quot;")
30
+ .replace(/'/g, "&#x27;")
31
+ .replace(/\//g, "&#x2F;")
32
+ // Remove control characters except newlines and tabs
33
+ .replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/g, "");
34
+ // Apply length limit after all transformations
35
+ return sanitized.slice(0, maxLength);
36
+ }
37
+ exports.sanitizeUserInput = sanitizeUserInput;
38
+ /**
39
+ * Sanitizes feedback text specifically for bet feedback
40
+ * @param feedback - The feedback string to sanitize
41
+ * @returns Sanitized feedback string
42
+ */
43
+ function sanitizeFeedback(feedback) {
44
+ return sanitizeUserInput(feedback, 500); // Limit feedback to 500 characters
45
+ }
46
+ exports.sanitizeFeedback = sanitizeFeedback;
47
+ /**
48
+ * Deep sanitizes an object containing user input
49
+ * @param obj - Object to sanitize
50
+ * @returns Sanitized object
51
+ */
52
+ function sanitizeObject(obj) {
53
+ if (!obj || typeof obj !== "object") {
54
+ return obj;
55
+ }
56
+ if (Array.isArray(obj)) {
57
+ return obj.map((item) => {
58
+ if (typeof item === "string") {
59
+ return sanitizeUserInput(item);
60
+ }
61
+ else if (typeof item === "object") {
62
+ return sanitizeObject(item);
63
+ }
64
+ else {
65
+ return item;
66
+ }
67
+ });
68
+ }
69
+ const sanitized = {};
70
+ for (const [key, value] of Object.entries(obj)) {
71
+ if (typeof value === "string") {
72
+ sanitized[key] = sanitizeUserInput(value);
73
+ }
74
+ else if (typeof value === "object") {
75
+ sanitized[key] = sanitizeObject(value);
76
+ }
77
+ else {
78
+ sanitized[key] = value;
79
+ }
80
+ }
81
+ return sanitized;
82
+ }
83
+ exports.sanitizeObject = sanitizeObject;
84
+ //# sourceMappingURL=sanitization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sanitization.js","sourceRoot":"","sources":["../../src/sanitization.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACH,SAAgB,iBAAiB,CAC/B,KAAa,EACb,YAAoB,IAAI;IAExB,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QACvC,OAAO,EAAE,CAAC;KACX;IAED,kBAAkB;IAClB,IAAI,SAAS,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAE7B,oDAAoD;IACpD,SAAS,GAAG,SAAS;QACnB,oBAAoB;SACnB,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QACnB,mDAAmD;SAClD,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;SAC5B,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;SAC1B,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;SACtB,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;QAC3B,uBAAuB;SACtB,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC;QACzB,qDAAqD;SACpD,OAAO,CAAC,mCAAmC,EAAE,EAAE,CAAC,CAAC;IAEpD,+CAA+C;IAC/C,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AACvC,CAAC;AAhCD,8CAgCC;AAED;;;;GAIG;AACH,SAAgB,gBAAgB,CAAC,QAAgB;IAC/C,OAAO,iBAAiB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,mCAAmC;AAC9E,CAAC;AAFD,4CAEC;AAED;;;;GAIG;AACH,SAAgB,cAAc,CAAC,GAAQ;IACrC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;QACnC,OAAO,GAAG,CAAC;KACZ;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QACtB,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACtB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;gBAC5B,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC;aAChC;iBAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;gBACnC,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;aAC7B;iBAAM;gBACL,OAAO,IAAI,CAAC;aACb;QACH,CAAC,CAAC,CAAC;KACJ;IAED,MAAM,SAAS,GAAQ,EAAE,CAAC;IAC1B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QAC9C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,SAAS,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;SAC3C;aAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YACpC,SAAS,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;SACxC;aAAM;YACL,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;SACxB;KACF;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AA7BD,wCA6BC"}
@@ -0,0 +1,191 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const sanitization_1 = require("./sanitization");
4
+ describe("Sanitization Utilities", () => {
5
+ describe("sanitizeUserInput", () => {
6
+ it("should return empty string for null/undefined input", () => {
7
+ expect((0, sanitization_1.sanitizeUserInput)(null)).toBe("");
8
+ expect((0, sanitization_1.sanitizeUserInput)(undefined)).toBe("");
9
+ expect((0, sanitization_1.sanitizeUserInput)("")).toBe("");
10
+ });
11
+ it("should trim whitespace", () => {
12
+ expect((0, sanitization_1.sanitizeUserInput)(" hello world ")).toBe("hello world");
13
+ expect((0, sanitization_1.sanitizeUserInput)("\n\t test \n\t")).toBe("test");
14
+ });
15
+ it("should escape HTML entities", () => {
16
+ expect((0, sanitization_1.sanitizeUserInput)('<script>alert("xss")</script>')).toBe("&lt;script&gt;alert(&quot;xss&quot;)&lt;&#x2F;script&gt;");
17
+ expect((0, sanitization_1.sanitizeUserInput)("Hello & goodbye")).toBe("Hello &amp; goodbye");
18
+ expect((0, sanitization_1.sanitizeUserInput)("Test \"quotes\" and 'apostrophes'")).toBe("Test &quot;quotes&quot; and &#x27;apostrophes&#x27;");
19
+ });
20
+ it("should remove dangerous script patterns", () => {
21
+ expect((0, sanitization_1.sanitizeUserInput)('javascript:alert("xss")')).toBe("alert(&quot;xss&quot;)");
22
+ expect((0, sanitization_1.sanitizeUserInput)("vbscript:malicious")).toBe("malicious");
23
+ expect((0, sanitization_1.sanitizeUserInput)("data:text/html,<script>")).toBe("text&#x2F;html,&lt;script&gt;");
24
+ });
25
+ it("should remove event handlers", () => {
26
+ expect((0, sanitization_1.sanitizeUserInput)("onclick=alert(1)")).toBe("alert(1)");
27
+ expect((0, sanitization_1.sanitizeUserInput)("onload=malicious()")).toBe("malicious()");
28
+ expect((0, sanitization_1.sanitizeUserInput)("onmouseover=hack()")).toBe("hack()");
29
+ });
30
+ it("should remove null bytes and control characters", () => {
31
+ expect((0, sanitization_1.sanitizeUserInput)("hello\x00world")).toBe("helloworld");
32
+ expect((0, sanitization_1.sanitizeUserInput)("test\x01\x02\x03")).toBe("test");
33
+ expect((0, sanitization_1.sanitizeUserInput)("keep\n\ttabs")).toBe("keep\n\ttabs"); // Keep newlines and tabs
34
+ });
35
+ it("should enforce length limits", () => {
36
+ const longString = "a".repeat(1500);
37
+ const result = (0, sanitization_1.sanitizeUserInput)(longString);
38
+ expect(result.length).toBe(1000); // Default max length
39
+ const customLimit = (0, sanitization_1.sanitizeUserInput)(longString, 50);
40
+ expect(customLimit.length).toBe(50);
41
+ });
42
+ it("should handle complex XSS attempts", () => {
43
+ const xssAttempts = [
44
+ "<img src=x onerror=alert(1)>",
45
+ "<svg onload=alert(1)>",
46
+ "javascript:void(0)",
47
+ '<iframe src="javascript:alert(1)"></iframe>',
48
+ '"><script>alert(1)</script>',
49
+ "'-alert(1)-'",
50
+ ];
51
+ xssAttempts.forEach((attempt) => {
52
+ const result = (0, sanitization_1.sanitizeUserInput)(attempt);
53
+ expect(result).not.toContain("javascript:");
54
+ expect(result).not.toContain("onload");
55
+ expect(result).not.toContain("onerror");
56
+ expect(result).not.toContain("<script>");
57
+ });
58
+ });
59
+ it("should preserve safe content", () => {
60
+ const safeInputs = [
61
+ "Hello world!",
62
+ "This is a normal sentence.",
63
+ "Numbers: 123 and symbols: @#$%",
64
+ "Emojis are fine: 😀 🎉",
65
+ "Line breaks\nare preserved",
66
+ ];
67
+ safeInputs.forEach((input) => {
68
+ const result = (0, sanitization_1.sanitizeUserInput)(input);
69
+ expect(result).toBeTruthy();
70
+ expect(result.length).toBeGreaterThan(0);
71
+ });
72
+ });
73
+ });
74
+ describe("sanitizeFeedback", () => {
75
+ it("should limit feedback to 500 characters", () => {
76
+ const longFeedback = "a".repeat(600);
77
+ const result = (0, sanitization_1.sanitizeFeedback)(longFeedback);
78
+ expect(result.length).toBe(500);
79
+ });
80
+ it("should sanitize feedback content", () => {
81
+ const maliciousFeedback = '<script>alert("feedback hack")</script>';
82
+ const result = (0, sanitization_1.sanitizeFeedback)(maliciousFeedback);
83
+ expect(result).toBe("&lt;script&gt;alert(&quot;feedback hack&quot;)&lt;&#x2F;script&gt;");
84
+ });
85
+ it("should handle normal feedback", () => {
86
+ const normalFeedback = "The odds changed and I couldn't place the bet.";
87
+ const result = (0, sanitization_1.sanitizeFeedback)(normalFeedback);
88
+ expect(result).toBe("The odds changed and I couldn&#x27;t place the bet.");
89
+ });
90
+ });
91
+ describe("sanitizeObject", () => {
92
+ it("should return non-object values unchanged", () => {
93
+ expect((0, sanitization_1.sanitizeObject)(null)).toBe(null);
94
+ expect((0, sanitization_1.sanitizeObject)(undefined)).toBe(undefined);
95
+ expect((0, sanitization_1.sanitizeObject)(123)).toBe(123);
96
+ expect((0, sanitization_1.sanitizeObject)(true)).toBe(true);
97
+ });
98
+ it("should sanitize string values in objects", () => {
99
+ const input = {
100
+ reason: "other",
101
+ customFeedback: '<script>alert("xss")</script>',
102
+ normalField: "safe content",
103
+ };
104
+ const result = (0, sanitization_1.sanitizeObject)(input);
105
+ expect(result.reason).toBe("other");
106
+ expect(result.customFeedback).toBe("&lt;script&gt;alert(&quot;xss&quot;)&lt;&#x2F;script&gt;");
107
+ expect(result.normalField).toBe("safe content");
108
+ });
109
+ it("should handle nested objects", () => {
110
+ const input = {
111
+ user: {
112
+ name: "<script>hack</script>",
113
+ email: "user@example.com",
114
+ },
115
+ feedback: {
116
+ reason: "other",
117
+ details: "javascript:alert(1)",
118
+ },
119
+ };
120
+ const result = (0, sanitization_1.sanitizeObject)(input);
121
+ expect(result.user.name).toBe("&lt;script&gt;hack&lt;&#x2F;script&gt;");
122
+ expect(result.user.email).toBe("user@example.com");
123
+ expect(result.feedback.reason).toBe("other");
124
+ expect(result.feedback.details).toBe("alert(1)");
125
+ });
126
+ it("should handle arrays", () => {
127
+ const input = {
128
+ tags: ["<script>xss</script>", "normal tag", "javascript:void(0)"],
129
+ numbers: [1, 2, 3],
130
+ };
131
+ const result = (0, sanitization_1.sanitizeObject)(input);
132
+ expect(result.tags[0]).toBe("&lt;script&gt;xss&lt;&#x2F;script&gt;");
133
+ expect(result.tags[1]).toBe("normal tag");
134
+ expect(result.tags[2]).toBe("void(0)");
135
+ expect(result.numbers).toEqual([1, 2, 3]);
136
+ });
137
+ it("should handle complex nested structures", () => {
138
+ const input = {
139
+ metadata: {
140
+ feedback: {
141
+ reason: "other",
142
+ customFeedback: "<img src=x onerror=alert(1)>",
143
+ tags: ["javascript:hack", "normal"],
144
+ },
145
+ },
146
+ id: 123,
147
+ active: true,
148
+ };
149
+ const result = (0, sanitization_1.sanitizeObject)(input);
150
+ expect(result.metadata.feedback.reason).toBe("other");
151
+ expect(result.metadata.feedback.customFeedback).toBe("&lt;img src=x alert(1)&gt;");
152
+ expect(result.metadata.feedback.tags[0]).toBe("hack");
153
+ expect(result.metadata.feedback.tags[1]).toBe("normal");
154
+ expect(result.id).toBe(123);
155
+ expect(result.active).toBe(true);
156
+ });
157
+ it("should handle real bet feedback structure", () => {
158
+ const betFeedback = {
159
+ reason: "other",
160
+ customFeedback: 'The sportsbook link was broken and showed <script>alert("xss")</script>',
161
+ };
162
+ const result = (0, sanitization_1.sanitizeObject)(betFeedback);
163
+ expect(result.reason).toBe("other");
164
+ expect(result.customFeedback).toBe("The sportsbook link was broken and showed &lt;script&gt;alert(&quot;xss&quot;)&lt;&#x2F;script&gt;");
165
+ });
166
+ });
167
+ describe("Edge cases and security tests", () => {
168
+ it("should handle Unicode and special characters safely", () => {
169
+ const unicodeInput = "Hello 世界 🌍 café naïve résumé";
170
+ const result = (0, sanitization_1.sanitizeUserInput)(unicodeInput);
171
+ expect(result).toBe(unicodeInput); // Should preserve Unicode
172
+ });
173
+ it("should handle mixed content attacks", () => {
174
+ const mixedAttack = 'Normal text <script>alert("xss")</script> more normal text';
175
+ const result = (0, sanitization_1.sanitizeUserInput)(mixedAttack);
176
+ expect(result).toBe("Normal text &lt;script&gt;alert(&quot;xss&quot;)&lt;&#x2F;script&gt; more normal text");
177
+ });
178
+ it("should handle encoded attacks", () => {
179
+ const encodedAttack = "&lt;script&gt;alert(1)&lt;/script&gt;";
180
+ const result = (0, sanitization_1.sanitizeUserInput)(encodedAttack);
181
+ expect(result).toBe("&amp;lt;script&amp;gt;alert(1)&amp;lt;&#x2F;script&amp;gt;");
182
+ });
183
+ it("should handle very long malicious input", () => {
184
+ const longMalicious = '<script>alert("xss")</script>'.repeat(100);
185
+ const result = (0, sanitization_1.sanitizeUserInput)(longMalicious);
186
+ expect(result.length).toBeLessThanOrEqual(1000);
187
+ expect(result).not.toContain("<script>");
188
+ });
189
+ });
190
+ });
191
+ //# sourceMappingURL=sanitization.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sanitization.test.js","sourceRoot":"","sources":["../../src/sanitization.test.ts"],"names":[],"mappings":"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"}
@@ -104,7 +104,7 @@ BannerCreative.init({
104
104
  },
105
105
  createdBy: {
106
106
  type: sequelize_1.DataTypes.BIGINT,
107
- allowNull: false,
107
+ allowNull: true,
108
108
  references: {
109
109
  model: user_1.default,
110
110
  key: "id",
@@ -1 +1 @@
1
- {"version":3,"file":"banner-creative.js","sourceRoot":"","sources":["../../typed-model/banner-creative.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"banner-creative.js","sourceRoot":"","sources":["../../typed-model/banner-creative.ts"],"names":[],"mappings":"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"}
@@ -53,12 +53,6 @@ UsersOnBets.init({
53
53
  field: "metadata",
54
54
  comment: "Stores clicked odd/parlay data and feedback information",
55
55
  },
56
- modalDismissedAt: {
57
- type: sequelize_1.DataTypes.DATE,
58
- allowNull: true,
59
- field: "modal_dismissed_at",
60
- comment: "Timestamp when user dismissed modal without confirming",
61
- },
62
56
  createdAt: {
63
57
  type: sequelize_1.DataTypes.DATE,
64
58
  allowNull: false,
@@ -1 +1 @@
1
- {"version":3,"file":"users-on-bets.js","sourceRoot":"","sources":["../../typed-model/users-on-bets.ts"],"names":[],"mappings":";;;;;AAAA,yCAMmB;AAEnB,kEAAuC;AACvC,kDAA0B;AAC1B,gDAAwB;AAyBxB,mEAAmE;AACnE,MAAM,WAAY,SAAQ,iBAGzB;CAeA;AAED,WAAW,CAAC,IAAI,CACd;IACE,EAAE,EAAE;QACF,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,KAAK;QAChB,YAAY,EAAE,sBAAS,CAAC,EAAE,CAAC,SAAS,CAAC;KACtC;IACD,MAAM,EAAE;QACN,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,SAAS,EAAE,KAAK;QAChB,KAAK,EAAE,SAAS;QAChB,UAAU,EAAE;YACV,KAAK,EAAE,cAAI;YACX,GAAG,EAAE,IAAI;SACV;KACF;IACD,KAAK,EAAE;QACL,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,SAAS,EAAE,KAAK;QAChB,KAAK,EAAE,QAAQ;QACf,UAAU,EAAE;YACV,KAAK,EAAE,aAAG;YACV,GAAG,EAAE,IAAI;SACV;KACF;IACD,SAAS,EAAE;QACT,IAAI,EAAE,qBAAS,CAAC,OAAO;QACvB,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,YAAY;QACnB,OAAO,EAAE,sDAAsD;KAChE;IACD,eAAe,EAAE;QACf,IAAI,EAAE,qBAAS,CAAC,KAAK;QACrB,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,mBAAmB;QAC1B,OAAO,EAAE,0CAA0C;KACpD;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,qBAAS,CAAC,KAAK;QACrB,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,UAAU;QACjB,OAAO,EAAE,yDAAyD;KACnE;IACD,gBAAgB,EAAE;QAChB,IAAI,EAAE,qBAAS,CAAC,IAAI;QACpB,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,oBAAoB;QAC3B,OAAO,EAAE,wDAAwD;KAClE;IACD,SAAS,EAAE;QACT,IAAI,EAAE,qBAAS,CAAC,IAAI;QACpB,SAAS,EAAE,KAAK;QAChB,KAAK,EAAE,YAAY;KACpB;IACD,SAAS,EAAE;QACT,IAAI,EAAE,qBAAS,CAAC,IAAI;QACpB,SAAS,EAAE,KAAK;QAChB,KAAK,EAAE,YAAY;KACpB;CACF,EACD;IACE,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAT,sBAAS;CACV,CACF,CAAC;AAEF,sBAAsB;AACtB,cAAI,CAAC,OAAO,CAAC,WAAW,EAAE;IACxB,UAAU,EAAE,QAAQ;IACpB,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,SAAS;IACnB,WAAW,EAAE,IAAI;CAClB,CAAC,CAAC;AAEH,WAAW,CAAC,SAAS,CAAC,cAAI,EAAE;IAC1B,UAAU,EAAE,QAAQ;IACpB,SAAS,EAAE,IAAI;CAChB,CAAC,CAAC;AAEH,aAAG,CAAC,OAAO,CAAC,WAAW,EAAE;IACvB,UAAU,EAAE,OAAO;IACnB,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,SAAS;IACnB,WAAW,EAAE,IAAI;CAClB,CAAC,CAAC;AAEH,WAAW,CAAC,SAAS,CAAC,aAAG,EAAE;IACzB,UAAU,EAAE,OAAO;IACnB,SAAS,EAAE,IAAI;CAChB,CAAC,CAAC;AAEH,kBAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"users-on-bets.js","sourceRoot":"","sources":["../../typed-model/users-on-bets.ts"],"names":[],"mappings":";;;;;AAAA,yCAMmB;AAEnB,kEAAuC;AACvC,kDAA0B;AAC1B,gDAAwB;AAyBxB,mEAAmE;AACnE,MAAM,WAAY,SAAQ,iBAGzB;CAcA;AAED,WAAW,CAAC,IAAI,CACd;IACE,EAAE,EAAE;QACF,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,KAAK;QAChB,YAAY,EAAE,sBAAS,CAAC,EAAE,CAAC,SAAS,CAAC;KACtC;IACD,MAAM,EAAE;QACN,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,SAAS,EAAE,KAAK;QAChB,KAAK,EAAE,SAAS;QAChB,UAAU,EAAE;YACV,KAAK,EAAE,cAAI;YACX,GAAG,EAAE,IAAI;SACV;KACF;IACD,KAAK,EAAE;QACL,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,SAAS,EAAE,KAAK;QAChB,KAAK,EAAE,QAAQ;QACf,UAAU,EAAE;YACV,KAAK,EAAE,aAAG;YACV,GAAG,EAAE,IAAI;SACV;KACF;IACD,SAAS,EAAE;QACT,IAAI,EAAE,qBAAS,CAAC,OAAO;QACvB,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,YAAY;QACnB,OAAO,EAAE,sDAAsD;KAChE;IACD,eAAe,EAAE;QACf,IAAI,EAAE,qBAAS,CAAC,KAAK;QACrB,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,mBAAmB;QAC1B,OAAO,EAAE,0CAA0C;KACpD;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,qBAAS,CAAC,KAAK;QACrB,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,UAAU;QACjB,OAAO,EAAE,yDAAyD;KACnE;IACD,SAAS,EAAE;QACT,IAAI,EAAE,qBAAS,CAAC,IAAI;QACpB,SAAS,EAAE,KAAK;QAChB,KAAK,EAAE,YAAY;KACpB;IACD,SAAS,EAAE;QACT,IAAI,EAAE,qBAAS,CAAC,IAAI;QACpB,SAAS,EAAE,KAAK;QAChB,KAAK,EAAE,YAAY;KACpB;CACF,EACD;IACE,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAT,sBAAS;CACV,CACF,CAAC;AAEF,sBAAsB;AACtB,cAAI,CAAC,OAAO,CAAC,WAAW,EAAE;IACxB,UAAU,EAAE,QAAQ;IACpB,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,SAAS;IACnB,WAAW,EAAE,IAAI;CAClB,CAAC,CAAC;AAEH,WAAW,CAAC,SAAS,CAAC,cAAI,EAAE;IAC1B,UAAU,EAAE,QAAQ;IACpB,SAAS,EAAE,IAAI;CAChB,CAAC,CAAC;AAEH,aAAG,CAAC,OAAO,CAAC,WAAW,EAAE;IACvB,UAAU,EAAE,OAAO;IACnB,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,SAAS;IACnB,WAAW,EAAE,IAAI;CAClB,CAAC,CAAC;AAEH,WAAW,CAAC,SAAS,CAAC,aAAG,EAAE;IACzB,UAAU,EAAE,OAAO;IACnB,SAAS,EAAE,IAAI;CAChB,CAAC,CAAC;AAEH,kBAAe,WAAW,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@winible/winible-typed",
3
- "version": "2.92.2",
3
+ "version": "2.92.4",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -140,7 +140,7 @@ BannerCreative.init(
140
140
  },
141
141
  createdBy: {
142
142
  type: DataTypes.BIGINT,
143
- allowNull: false,
143
+ allowNull: true,
144
144
  references: {
145
145
  model: User,
146
146
  key: "id",
@@ -44,7 +44,6 @@ class UsersOnBets extends Model<
44
44
  declare betPlaced: BetPlacedStatus;
45
45
  declare clickedOddPrice?: number;
46
46
  declare metadata?: UserBetMetadata;
47
- declare modalDismissedAt?: Date;
48
47
 
49
48
  declare createdAt: CreationOptional<Date>;
50
49
  declare updatedAt: CreationOptional<Date>;
@@ -98,12 +97,6 @@ UsersOnBets.init(
98
97
  field: "metadata",
99
98
  comment: "Stores clicked odd/parlay data and feedback information",
100
99
  },
101
- modalDismissedAt: {
102
- type: DataTypes.DATE,
103
- allowNull: true,
104
- field: "modal_dismissed_at",
105
- comment: "Timestamp when user dismissed modal without confirming",
106
- },
107
100
  createdAt: {
108
101
  type: DataTypes.DATE,
109
102
  allowNull: false,
@@ -1,51 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const sequelize_1 = require("sequelize");
7
- const pb_sequelize_1 = __importDefault(require("./pb-sequelize"));
8
- const user_1 = __importDefault(require("./user"));
9
- // order of InferAttributes & InferCreationAttributes is important.
10
- class FeaturedCapper extends sequelize_1.Model {
11
- }
12
- FeaturedCapper.init({
13
- id: {
14
- type: sequelize_1.DataTypes.BIGINT,
15
- primaryKey: true,
16
- allowNull: false,
17
- defaultValue: pb_sequelize_1.default.fn("next_id"),
18
- },
19
- userId: {
20
- type: sequelize_1.DataTypes.BIGINT,
21
- allowNull: false,
22
- field: "user_id",
23
- references: {
24
- model: user_1.default,
25
- },
26
- },
27
- priority: {
28
- type: sequelize_1.DataTypes.SMALLINT,
29
- field: "priority",
30
- },
31
- customLabel: {
32
- type: sequelize_1.DataTypes.STRING,
33
- field: "custom_label",
34
- },
35
- createdAt: sequelize_1.DataTypes.DATE,
36
- updatedAt: sequelize_1.DataTypes.DATE,
37
- }, {
38
- tableName: "featured_cappers",
39
- sequelize: pb_sequelize_1.default,
40
- });
41
- user_1.default.hasOne(FeaturedCapper, {
42
- foreignKey: "userId",
43
- sourceKey: "id",
44
- });
45
- FeaturedCapper.hasOne(user_1.default, {
46
- foreignKey: "id",
47
- sourceKey: "userId",
48
- onDelete: "NO ACTION",
49
- });
50
- exports.default = FeaturedCapper;
51
- //# sourceMappingURL=featured-capper.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"featured-capper.js","sourceRoot":"","sources":["../../typed-model/featured-capper.ts"],"names":[],"mappings":";;;;;AAAA,yCAMmB;AAEnB,kEAAuC;AACvC,kDAA0B;AAE1B,mEAAmE;AACnE,MAAM,cAAe,SAAQ,iBAG5B;CAUA;AAED,cAAc,CAAC,IAAI,CACjB;IACE,EAAE,EAAE;QACF,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,KAAK;QAChB,YAAY,EAAE,sBAAS,CAAC,EAAE,CAAC,SAAS,CAAC;KACtC;IACD,MAAM,EAAE;QACN,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,SAAS,EAAE,KAAK;QAChB,KAAK,EAAE,SAAS;QAChB,UAAU,EAAE;YACV,KAAK,EAAE,cAAI;SACZ;KACF;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,qBAAS,CAAC,QAAQ;QACxB,KAAK,EAAE,UAAU;KAClB;IACD,WAAW,EAAE;QACX,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,KAAK,EAAE,cAAc;KACtB;IAED,SAAS,EAAE,qBAAS,CAAC,IAAI;IACzB,SAAS,EAAE,qBAAS,CAAC,IAAI;CAC1B,EACD;IACE,SAAS,EAAE,kBAAkB;IAC7B,SAAS,EAAT,sBAAS;CACV,CACF,CAAC;AAEF,cAAI,CAAC,MAAM,CAAC,cAAc,EAAE;IAC1B,UAAU,EAAE,QAAQ;IACpB,SAAS,EAAE,IAAI;CAChB,CAAC,CAAC;AAEH,cAAc,CAAC,MAAM,CAAC,cAAI,EAAE;IAC1B,UAAU,EAAE,IAAI;IAChB,SAAS,EAAE,QAAQ;IACnB,QAAQ,EAAE,WAAW;CACtB,CAAC,CAAC;AAEH,kBAAe,cAAc,CAAC"}
@@ -1,58 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const sequelize_1 = require("sequelize");
7
- const pb_sequelize_1 = __importDefault(require("./pb-sequelize"));
8
- const types_1 = require("../src/types");
9
- const bet_sport_1 = __importDefault(require("./bet-sport"));
10
- const market_1 = __importDefault(require("./market"));
11
- // order of InferAttributes & InferCreationAttributes is important.
12
- class MarketOnBetSport extends sequelize_1.Model {
13
- }
14
- MarketOnBetSport.init({
15
- betSportId: {
16
- type: sequelize_1.DataTypes.BIGINT,
17
- allowNull: false,
18
- references: {
19
- model: bet_sport_1.default,
20
- key: "id",
21
- },
22
- field: "bet_sport_id",
23
- },
24
- marketId: {
25
- type: sequelize_1.DataTypes.BIGINT,
26
- allowNull: false,
27
- references: {
28
- model: market_1.default,
29
- key: "id",
30
- },
31
- field: "market_id",
32
- },
33
- status: {
34
- type: sequelize_1.DataTypes.ENUM(...Object.values(types_1.StatusType)),
35
- allowNull: false,
36
- },
37
- }, {
38
- tableName: "markets_on_bet_sports",
39
- comment: "Junction table that relates a bet_sport to a market",
40
- timestamps: false,
41
- sequelize: pb_sequelize_1.default,
42
- });
43
- bet_sport_1.default.belongsToMany(market_1.default, {
44
- through: MarketOnBetSport,
45
- foreignKey: "betSportId",
46
- sourceKey: "id",
47
- onDelete: "NO ACTION",
48
- constraints: false,
49
- });
50
- market_1.default.belongsToMany(bet_sport_1.default, {
51
- through: MarketOnBetSport,
52
- foreignKey: "marketId",
53
- sourceKey: "id",
54
- onDelete: "NO ACTION",
55
- constraints: false,
56
- });
57
- exports.default = MarketOnBetSport;
58
- //# sourceMappingURL=market-on-bet-sport.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"market-on-bet-sport.js","sourceRoot":"","sources":["../../typed-model/market-on-bet-sport.ts"],"names":[],"mappings":";;;;;AAAA,yCAOmB;AAEnB,kEAAuC;AACvC,wCAA0C;AAC1C,4DAAmC;AACnC,sDAA8B;AAE9B,mEAAmE;AACnE,MAAM,gBAAiB,SAAQ,iBAG9B;CAMA;AAED,gBAAgB,CAAC,IAAI,CACnB;IACE,UAAU,EAAE;QACV,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,SAAS,EAAE,KAAK;QAChB,UAAU,EAAE;YACV,KAAK,EAAE,mBAAQ;YACf,GAAG,EAAE,IAAI;SACV;QACD,KAAK,EAAE,cAAc;KACtB;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,SAAS,EAAE,KAAK;QAChB,UAAU,EAAE;YACV,KAAK,EAAE,gBAAM;YACb,GAAG,EAAE,IAAI;SACV;QACD,KAAK,EAAE,WAAW;KACnB;IACD,MAAM,EAAE;QACN,IAAI,EAAE,qBAAS,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAU,CAAC,CAAC;QAClD,SAAS,EAAE,KAAK;KACjB;CACF,EACD;IACE,SAAS,EAAE,uBAAuB;IAClC,OAAO,EAAE,qDAAqD;IAC9D,UAAU,EAAE,KAAK;IACjB,SAAS,EAAT,sBAAS;CACV,CACF,CAAC;AAEF,mBAAQ,CAAC,aAAa,CAAC,gBAAM,EAAE;IAC7B,OAAO,EAAE,gBAAgB;IACzB,UAAU,EAAE,YAAY;IACxB,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,WAAW;IACrB,WAAW,EAAE,KAAK;CACnB,CAAC,CAAC;AAEH,gBAAM,CAAC,aAAa,CAAC,mBAAQ,EAAE;IAC7B,OAAO,EAAE,gBAAgB;IACzB,UAAU,EAAE,UAAU;IACtB,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,WAAW;IACrB,WAAW,EAAE,KAAK;CACnB,CAAC,CAAC;AAEH,kBAAe,gBAAgB,CAAC"}
@@ -1,90 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- /**
4
- * @param message The log message
5
- * @param options Additional context for the log entry
6
- *
7
- * @example
8
- * // Basic usage
9
- * logger("User login successful");
10
- *
11
- * @example
12
- * // With user ID
13
- * logger("User login successful", { userId: "123456" });
14
- *
15
- * @example
16
- * // With error tracking (standard Error)
17
- * try {
18
- * throw new Error("Something went wrong");
19
- * } catch (error) {
20
- * logger("Operation failed", {
21
- * userId: "user123",
22
- * level: "error",
23
- * endpoint: "/auth",
24
- * method: "processPayment",
25
- * error
26
- * });
27
- * }
28
- *
29
- * @example
30
- * // With object-like error (e.g., from an API)
31
- * const apiError = { status: 403, message: "Forbidden", code: "ACCESS_DENIED" };
32
- * logger("API request failed", { error: apiError, level: "error" });
33
- *
34
- * @example
35
- * // With primitive error
36
- * logger("Validation failed", { error: "Invalid input", level: "warn" });
37
- *
38
- * @example
39
- * // With request tracking
40
- * logger("API request received", {
41
- * requestId: req.headers['x-request-id'],
42
- * endpoint: "/auth",
43
- * method: "validateToken"
44
- * action: "validateToken"
45
- * });
46
- */
47
- const logger = (message, options) => {
48
- const timestamp = new Date().toISOString();
49
- const environment = process.env.ENVIRONMENT || "development";
50
- const logEntry = Object.assign(Object.assign({ message, requestId: (options === null || options === void 0 ? void 0 : options.requestId) || "", timestamp, level: (options === null || options === void 0 ? void 0 : options.level) || "info", environment, endpoint: (options === null || options === void 0 ? void 0 : options.endpoint) || "", method: (options === null || options === void 0 ? void 0 : options.method) || "", action: (options === null || options === void 0 ? void 0 : options.action) || "", userId: (options === null || options === void 0 ? void 0 : options.userId) || "" }, ((options === null || options === void 0 ? void 0 : options.error)
51
- ? {
52
- error: (() => {
53
- var _a, _b, _c;
54
- // Handle different error types
55
- if (options.error instanceof Error) {
56
- // Standard Error object
57
- return {
58
- name: (_a = options.error) === null || _a === void 0 ? void 0 : _a.name,
59
- message: (_b = options.error) === null || _b === void 0 ? void 0 : _b.message,
60
- stack: (_c = options.error) === null || _c === void 0 ? void 0 : _c.stack,
61
- };
62
- }
63
- else if (typeof options.error === "object" &&
64
- options.error !== null) {
65
- // Object-like error but not an Error instance
66
- const errorObj = options.error;
67
- return {
68
- name: (errorObj === null || errorObj === void 0 ? void 0 : errorObj.name) || "UnknownError",
69
- message: (errorObj === null || errorObj === void 0 ? void 0 : errorObj.message) || String(errorObj),
70
- details: errorObj,
71
- };
72
- }
73
- else {
74
- // Primitive or other non-object error
75
- return {
76
- name: "UnknownError",
77
- message: String(options.error),
78
- };
79
- }
80
- })(),
81
- }
82
- : {})), ((options === null || options === void 0 ? void 0 : options.additionalData) ? { data: options.additionalData } : {}));
83
- // Log as JSON string on production for easier parsing in CloudWatch
84
- const outputLog = environment === "production"
85
- ? JSON.stringify(logEntry)
86
- : JSON.stringify(logEntry, null, 2);
87
- console.log(outputLog);
88
- };
89
- exports.default = logger;
90
- //# sourceMappingURL=logger.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../utils/lambdaUtils/logger.ts"],"names":[],"mappings":";;AAWA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,MAAM,MAAM,GAAG,CAAC,OAAe,EAAE,OAAuB,EAAE,EAAE;IAC1D,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,aAAa,CAAC;IAE7D,MAAM,QAAQ,iCACZ,OAAO,EACP,SAAS,EAAE,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,KAAI,EAAE,EACnC,SAAS,EACT,KAAK,EAAE,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,KAAI,MAAM,EAC/B,WAAW,EACX,QAAQ,EAAE,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,KAAI,EAAE,EACjC,MAAM,EAAE,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,KAAI,EAAE,EAC7B,MAAM,EAAE,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,KAAI,EAAE,EAC7B,MAAM,EAAE,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,KAAI,EAAE,IAC1B,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK;QAChB,CAAC,CAAC;YACE,KAAK,EAAE,CAAC,GAAG,EAAE;;gBACX,+BAA+B;gBAC/B,IAAI,OAAO,CAAC,KAAK,YAAY,KAAK,EAAE;oBAClC,wBAAwB;oBACxB,OAAO;wBACL,IAAI,EAAE,MAAA,OAAO,CAAC,KAAK,0CAAE,IAAI;wBACzB,OAAO,EAAE,MAAA,OAAO,CAAC,KAAK,0CAAE,OAAO;wBAC/B,KAAK,EAAE,MAAA,OAAO,CAAC,KAAK,0CAAE,KAAK;qBAC5B,CAAC;iBACH;qBAAM,IACL,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ;oBACjC,OAAO,CAAC,KAAK,KAAK,IAAI,EACtB;oBACA,8CAA8C;oBAC9C,MAAM,QAAQ,GAAG,OAAO,CAAC,KAA4B,CAAC;oBACtD,OAAO;wBACL,IAAI,EAAE,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,KAAI,cAAc;wBACtC,OAAO,EAAE,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,KAAI,MAAM,CAAC,QAAQ,CAAC;wBAC9C,OAAO,EAAE,QAAQ;qBAClB,CAAC;iBACH;qBAAM;oBACL,sCAAsC;oBACtC,OAAO;wBACL,IAAI,EAAE,cAAc;wBACpB,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;qBAC/B,CAAC;iBACH;YACH,CAAC,CAAC,EAAE;SACL;QACH,CAAC,CAAC,EAAE,CAAC,GACJ,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,cAAc,EAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACrE,CAAC;IAEF,oEAAoE;IACpE,MAAM,SAAS,GACb,WAAW,KAAK,YAAY;QAC1B,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;QAC1B,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAExC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACzB,CAAC,CAAC;AAEF,kBAAe,MAAM,CAAC"}