@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.
- package/dist/migrations/20251002044115-create-users-on-bets.js +0 -1
- package/dist/migrations/20251002044115-create-users-on-bets.js.map +1 -1
- package/dist/src/sanitization.js +84 -0
- package/dist/src/sanitization.js.map +1 -0
- package/dist/src/sanitization.test.js +191 -0
- package/dist/src/sanitization.test.js.map +1 -0
- package/dist/typed-model/banner-creative.js +1 -1
- package/dist/typed-model/banner-creative.js.map +1 -1
- package/dist/typed-model/users-on-bets.js +0 -6
- package/dist/typed-model/users-on-bets.js.map +1 -1
- package/package.json +1 -1
- package/typed-model/banner-creative.ts +1 -1
- package/typed-model/users-on-bets.ts +0 -7
- package/dist/typed-model/featured-capper.js +0 -51
- package/dist/typed-model/featured-capper.js.map +0 -1
- package/dist/typed-model/market-on-bet-sport.js +0 -58
- package/dist/typed-model/market-on-bet-sport.js.map +0 -1
- package/dist/utils/lambdaUtils/logger.js +0 -90
- package/dist/utils/lambdaUtils/logger.js.map +0 -1
|
@@ -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;
|
|
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, "<")
|
|
28
|
+
.replace(/>/g, ">")
|
|
29
|
+
.replace(/"/g, """)
|
|
30
|
+
.replace(/'/g, "'")
|
|
31
|
+
.replace(/\//g, "/")
|
|
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("<script>alert("xss")</script>");
|
|
17
|
+
expect((0, sanitization_1.sanitizeUserInput)("Hello & goodbye")).toBe("Hello & goodbye");
|
|
18
|
+
expect((0, sanitization_1.sanitizeUserInput)("Test \"quotes\" and 'apostrophes'")).toBe("Test "quotes" and 'apostrophes'");
|
|
19
|
+
});
|
|
20
|
+
it("should remove dangerous script patterns", () => {
|
|
21
|
+
expect((0, sanitization_1.sanitizeUserInput)('javascript:alert("xss")')).toBe("alert("xss")");
|
|
22
|
+
expect((0, sanitization_1.sanitizeUserInput)("vbscript:malicious")).toBe("malicious");
|
|
23
|
+
expect((0, sanitization_1.sanitizeUserInput)("data:text/html,<script>")).toBe("text/html,<script>");
|
|
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("<script>alert("feedback hack")</script>");
|
|
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'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("<script>alert("xss")</script>");
|
|
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("<script>hack</script>");
|
|
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("<script>xss</script>");
|
|
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("<img src=x alert(1)>");
|
|
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 <script>alert("xss")</script>");
|
|
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 <script>alert("xss")</script> more normal text");
|
|
177
|
+
});
|
|
178
|
+
it("should handle encoded attacks", () => {
|
|
179
|
+
const encodedAttack = "<script>alert(1)</script>";
|
|
180
|
+
const result = (0, sanitization_1.sanitizeUserInput)(encodedAttack);
|
|
181
|
+
expect(result).toBe("&lt;script&gt;alert(1)&lt;/script&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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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"banner-creative.js","sourceRoot":"","sources":["../../typed-model/banner-creative.ts"],"names":[],"mappings":";;;;;AAAA,yCAMmB;AAEnB,kEAAuC;AACvC,kDAA0B;AAC1B,sEAA8C;AAK9C,mEAAmE;AACnE,MAAM,cAAe,SAAQ,iBAG5B;CA0BA;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,eAAe,EAAE;QACf,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,SAAS,EAAE,KAAK;QAChB,UAAU,EAAE;YACV,KAAK,EAAE,wBAAc;YACrB,GAAG,EAAE,IAAI;SACV;QACD,KAAK,EAAE,mBAAmB;KAC3B;IACD,SAAS,EAAE;QACT,IAAI,EAAE,qBAAS,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;QACtC,SAAS,EAAE,KAAK;QAChB,KAAK,EAAE,YAAY;KACpB;IACD,SAAS,EAAE;QACT,IAAI,EAAE,qBAAS,CAAC,KAAK;QACrB,SAAS,EAAE,KAAK;QAChB,KAAK,EAAE,YAAY;KACpB;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,qBAAS,CAAC,IAAI;QACpB,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,WAAW;KACnB;IACD,cAAc,EAAE;QACd,IAAI,EAAE,qBAAS,CAAC,OAAO;QACvB,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,kBAAkB;KAC1B;IACD,eAAe,EAAE;QACf,IAAI,EAAE,qBAAS,CAAC,OAAO;QACvB,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,mBAAmB;KAC3B;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,qBAAS,CAAC,IAAI;QACpB,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,UAAU;KAClB;IACD,OAAO,EAAE;QACP,IAAI,EAAE,qBAAS,CAAC,IAAI;QACpB,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,UAAU;KAClB;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,qBAAS,CAAC,IAAI;QACpB,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,WAAW;KACnB;IACD,gBAAgB,EAAE;QAChB,IAAI,EAAE,qBAAS,CAAC,IAAI;QACpB,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,oBAAoB;KAC5B;IACD,OAAO,EAAE;QACP,IAAI,EAAE,qBAAS,CAAC,IAAI;QACpB,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,UAAU;KAClB;IACD,MAAM,EAAE;QACN,IAAI,EAAE,qBAAS,CAAC,IAAI;QACpB,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,QAAQ;KAChB;IACD,MAAM,EAAE;QACN,IAAI,EAAE,qBAAS,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC;QAC9D,SAAS,EAAE,KAAK;QAChB,KAAK,EAAE,QAAQ;KAChB;IACD,OAAO,EAAE;QACP,IAAI,EAAE,qBAAS,CAAC,IAAI;QACpB,SAAS,EAAE,KAAK;QAChB,KAAK,EAAE,UAAU;KAClB;IACD,KAAK,EAAE;QACL,IAAI,EAAE,qBAAS,CAAC,IAAI;QACpB,SAAS,EAAE,KAAK;QAChB,KAAK,EAAE,QAAQ;KAChB;IACD,OAAO,EAAE;QACP,IAAI,EAAE,qBAAS,CAAC,OAAO;QACvB,SAAS,EAAE,KAAK;QAChB,YAAY,EAAE,CAAC;QACf,KAAK,EAAE,SAAS;KACjB;IACD,SAAS,EAAE;QACT,IAAI,EAAE,qBAAS,CAAC,MAAM;QACtB,SAAS,EAAE,
|
|
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;
|
|
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
|
@@ -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"}
|