@vived/core 1.2.4 → 1.4.0

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 (55) hide show
  1. package/dist/cjs/Utilities/addAlphaToHex.js +16 -0
  2. package/dist/cjs/Utilities/addAlphaToHex.js.map +1 -0
  3. package/dist/cjs/Utilities/addAlphaToHex.test.js +34 -0
  4. package/dist/cjs/Utilities/addAlphaToHex.test.js.map +1 -0
  5. package/dist/cjs/Utilities/alphaToHex.js +21 -0
  6. package/dist/cjs/Utilities/alphaToHex.js.map +1 -0
  7. package/dist/cjs/Utilities/alphaToHex.test.js +75 -0
  8. package/dist/cjs/Utilities/alphaToHex.test.js.map +1 -0
  9. package/dist/cjs/Utilities/downloadFile.js +14 -0
  10. package/dist/cjs/Utilities/downloadFile.js.map +1 -0
  11. package/dist/cjs/Utilities/index.js +3 -0
  12. package/dist/cjs/Utilities/index.js.map +1 -1
  13. package/dist/cjs/ValueObjects/Version.js +171 -0
  14. package/dist/cjs/ValueObjects/Version.js.map +1 -0
  15. package/dist/cjs/ValueObjects/Version.test.js +310 -0
  16. package/dist/cjs/ValueObjects/Version.test.js.map +1 -0
  17. package/dist/cjs/ValueObjects/index.js +1 -0
  18. package/dist/cjs/ValueObjects/index.js.map +1 -1
  19. package/dist/esm/Utilities/addAlphaToHex.js +13 -0
  20. package/dist/esm/Utilities/addAlphaToHex.js.map +1 -0
  21. package/dist/esm/Utilities/addAlphaToHex.test.js +32 -0
  22. package/dist/esm/Utilities/addAlphaToHex.test.js.map +1 -0
  23. package/dist/esm/Utilities/alphaToHex.js +17 -0
  24. package/dist/esm/Utilities/alphaToHex.js.map +1 -0
  25. package/dist/esm/Utilities/alphaToHex.test.js +73 -0
  26. package/dist/esm/Utilities/alphaToHex.test.js.map +1 -0
  27. package/dist/esm/Utilities/downloadFile.js +11 -0
  28. package/dist/esm/Utilities/downloadFile.js.map +1 -0
  29. package/dist/esm/Utilities/index.js +3 -0
  30. package/dist/esm/Utilities/index.js.map +1 -1
  31. package/dist/esm/ValueObjects/Version.js +167 -0
  32. package/dist/esm/ValueObjects/Version.js.map +1 -0
  33. package/dist/esm/ValueObjects/Version.test.js +308 -0
  34. package/dist/esm/ValueObjects/Version.test.js.map +1 -0
  35. package/dist/esm/ValueObjects/index.js +1 -0
  36. package/dist/esm/ValueObjects/index.js.map +1 -1
  37. package/dist/types/Utilities/addAlphaToHex.d.ts +2 -0
  38. package/dist/types/Utilities/addAlphaToHex.d.ts.map +1 -0
  39. package/dist/types/Utilities/addAlphaToHex.test.d.ts +2 -0
  40. package/dist/types/Utilities/addAlphaToHex.test.d.ts.map +1 -0
  41. package/dist/types/Utilities/alphaToHex.d.ts +3 -0
  42. package/dist/types/Utilities/alphaToHex.d.ts.map +1 -0
  43. package/dist/types/Utilities/alphaToHex.test.d.ts +2 -0
  44. package/dist/types/Utilities/alphaToHex.test.d.ts.map +1 -0
  45. package/dist/types/Utilities/downloadFile.d.ts +2 -0
  46. package/dist/types/Utilities/downloadFile.d.ts.map +1 -0
  47. package/dist/types/Utilities/index.d.ts +3 -0
  48. package/dist/types/Utilities/index.d.ts.map +1 -1
  49. package/dist/types/ValueObjects/Version.d.ts +23 -0
  50. package/dist/types/ValueObjects/Version.d.ts.map +1 -0
  51. package/dist/types/ValueObjects/Version.test.d.ts +2 -0
  52. package/dist/types/ValueObjects/Version.test.d.ts.map +1 -0
  53. package/dist/types/ValueObjects/index.d.ts +1 -0
  54. package/dist/types/ValueObjects/index.d.ts.map +1 -1
  55. package/package.json +1 -1
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addAlphaToHex = addAlphaToHex;
4
+ const alphaToHex_1 = require("./alphaToHex");
5
+ function addAlphaToHex(hex, alpha) {
6
+ if (!/^#([0-9A-Fa-f]{3}|[0-9A-Fa-f]{6})$/.test(hex)) {
7
+ console.warn("[addAlphaToHex] Hex value is not valid.");
8
+ return "#000";
9
+ }
10
+ if (hex.length === 4) {
11
+ hex = "#" + hex[1] + hex[1] + hex[2] + hex[2] + hex[3] + hex[3];
12
+ }
13
+ const alphaHex = (0, alphaToHex_1.alphaToHex)(alpha);
14
+ return `${hex}${alphaHex}`;
15
+ }
16
+ //# sourceMappingURL=addAlphaToHex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addAlphaToHex.js","sourceRoot":"","sources":["../../../src/Utilities/addAlphaToHex.ts"],"names":[],"mappings":";;AAEA,sCAYC;AAdD,6CAA0C;AAE1C,SAAgB,aAAa,CAAC,GAAW,EAAE,KAAa;IACtD,IAAI,CAAC,oCAAoC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACpD,OAAO,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;QACxD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,QAAQ,GAAG,IAAA,uBAAU,EAAC,KAAK,CAAC,CAAC;IACnC,OAAO,GAAG,GAAG,GAAG,QAAQ,EAAE,CAAC;AAC7B,CAAC","sourcesContent":["import { alphaToHex } from \"./alphaToHex\";\r\n\r\nexport function addAlphaToHex(hex: string, alpha: number): string {\r\n if (!/^#([0-9A-Fa-f]{3}|[0-9A-Fa-f]{6})$/.test(hex)) {\r\n console.warn(\"[addAlphaToHex] Hex value is not valid.\");\r\n return \"#000\";\r\n }\r\n\r\n if (hex.length === 4) {\r\n hex = \"#\" + hex[1] + hex[1] + hex[2] + hex[2] + hex[3] + hex[3];\r\n }\r\n\r\n const alphaHex = alphaToHex(alpha);\r\n return `${hex}${alphaHex}`;\r\n}\r\n"]}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const addAlphaToHex_1 = require("./addAlphaToHex");
4
+ describe("addAlphaToHex", () => {
5
+ it("should add alpha channel to hex color code", () => {
6
+ expect((0, addAlphaToHex_1.addAlphaToHex)("#ffffff", 0.5)).toBe("#ffffff80");
7
+ expect((0, addAlphaToHex_1.addAlphaToHex)("#000000", 0.1)).toBe("#0000001a");
8
+ expect((0, addAlphaToHex_1.addAlphaToHex)("#123456", 0)).toBe("#12345600");
9
+ expect((0, addAlphaToHex_1.addAlphaToHex)("#abcdef", 1)).toBe("#abcdefff");
10
+ });
11
+ it("should add alpha channel to short hex color code", () => {
12
+ expect((0, addAlphaToHex_1.addAlphaToHex)("#fff", 0.5)).toBe("#ffffff80");
13
+ expect((0, addAlphaToHex_1.addAlphaToHex)("#000", 0.1)).toBe("#0000001a");
14
+ });
15
+ it("should log a warning and return Hex with alpha 0 if alpha value is out of bounds", () => {
16
+ console.warn = jest.fn();
17
+ expect((0, addAlphaToHex_1.addAlphaToHex)("#ffffff", -0.1)).toBe("#ffffff00");
18
+ expect(console.warn).toHaveBeenCalledWith("[alphaToHex] Alpha value must be between 0 and 1.");
19
+ expect((0, addAlphaToHex_1.addAlphaToHex)("#ffffff", 1.1)).toBe("#ffffff00");
20
+ expect(console.warn).toHaveBeenCalledWith("[alphaToHex] Alpha value must be between 0 and 1.");
21
+ });
22
+ it("should log a warning and return #000 for invalid hex values", () => {
23
+ console.warn = jest.fn();
24
+ expect((0, addAlphaToHex_1.addAlphaToHex)("#gggggg", 0.5)).toBe("#000");
25
+ expect(console.warn).toHaveBeenCalledWith("[addAlphaToHex] Hex value is not valid.");
26
+ expect((0, addAlphaToHex_1.addAlphaToHex)("#ffff", 0.5)).toBe("#000");
27
+ expect(console.warn).toHaveBeenCalledWith("[addAlphaToHex] Hex value is not valid.");
28
+ expect((0, addAlphaToHex_1.addAlphaToHex)("ffffff", 0.5)).toBe("#000");
29
+ expect(console.warn).toHaveBeenCalledWith("[addAlphaToHex] Hex value is not valid.");
30
+ expect((0, addAlphaToHex_1.addAlphaToHex)("#fff0", 0.5)).toBe("#000");
31
+ expect(console.warn).toHaveBeenCalledWith("[addAlphaToHex] Hex value is not valid.");
32
+ });
33
+ });
34
+ //# sourceMappingURL=addAlphaToHex.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addAlphaToHex.test.js","sourceRoot":"","sources":["../../../src/Utilities/addAlphaToHex.test.ts"],"names":[],"mappings":";;AAAA,mDAAgD;AAEhD,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,CAAC,IAAA,6BAAa,EAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACxD,MAAM,CAAC,IAAA,6BAAa,EAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACxD,MAAM,CAAC,IAAA,6BAAa,EAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACtD,MAAM,CAAC,IAAA,6BAAa,EAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,CAAC,IAAA,6BAAa,EAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACrD,MAAM,CAAC,IAAA,6BAAa,EAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kFAAkF,EAAE,GAAG,EAAE;QAC1F,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QACzB,MAAM,CAAC,IAAA,6BAAa,EAAC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACzD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,oBAAoB,CACvC,mDAAmD,CACpD,CAAC;QACF,MAAM,CAAC,IAAA,6BAAa,EAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACxD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,oBAAoB,CACvC,mDAAmD,CACpD,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACrE,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QACzB,MAAM,CAAC,IAAA,6BAAa,EAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,oBAAoB,CACvC,yCAAyC,CAC1C,CAAC;QAEF,MAAM,CAAC,IAAA,6BAAa,EAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,oBAAoB,CACvC,yCAAyC,CAC1C,CAAC;QAEF,MAAM,CAAC,IAAA,6BAAa,EAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,oBAAoB,CACvC,yCAAyC,CAC1C,CAAC;QAEF,MAAM,CAAC,IAAA,6BAAa,EAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,oBAAoB,CACvC,yCAAyC,CAC1C,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { addAlphaToHex } from \"./addAlphaToHex\";\r\n\r\ndescribe(\"addAlphaToHex\", () => {\r\n it(\"should add alpha channel to hex color code\", () => {\r\n expect(addAlphaToHex(\"#ffffff\", 0.5)).toBe(\"#ffffff80\");\r\n expect(addAlphaToHex(\"#000000\", 0.1)).toBe(\"#0000001a\");\r\n expect(addAlphaToHex(\"#123456\", 0)).toBe(\"#12345600\");\r\n expect(addAlphaToHex(\"#abcdef\", 1)).toBe(\"#abcdefff\");\r\n });\r\n\r\n it(\"should add alpha channel to short hex color code\", () => {\r\n expect(addAlphaToHex(\"#fff\", 0.5)).toBe(\"#ffffff80\");\r\n expect(addAlphaToHex(\"#000\", 0.1)).toBe(\"#0000001a\");\r\n });\r\n\r\n it(\"should log a warning and return Hex with alpha 0 if alpha value is out of bounds\", () => {\r\n console.warn = jest.fn();\r\n expect(addAlphaToHex(\"#ffffff\", -0.1)).toBe(\"#ffffff00\");\r\n expect(console.warn).toHaveBeenCalledWith(\r\n \"[alphaToHex] Alpha value must be between 0 and 1.\"\r\n );\r\n expect(addAlphaToHex(\"#ffffff\", 1.1)).toBe(\"#ffffff00\");\r\n expect(console.warn).toHaveBeenCalledWith(\r\n \"[alphaToHex] Alpha value must be between 0 and 1.\"\r\n );\r\n });\r\n\r\n it(\"should log a warning and return #000 for invalid hex values\", () => {\r\n console.warn = jest.fn();\r\n expect(addAlphaToHex(\"#gggggg\", 0.5)).toBe(\"#000\");\r\n expect(console.warn).toHaveBeenCalledWith(\r\n \"[addAlphaToHex] Hex value is not valid.\"\r\n );\r\n\r\n expect(addAlphaToHex(\"#ffff\", 0.5)).toBe(\"#000\");\r\n expect(console.warn).toHaveBeenCalledWith(\r\n \"[addAlphaToHex] Hex value is not valid.\"\r\n );\r\n\r\n expect(addAlphaToHex(\"ffffff\", 0.5)).toBe(\"#000\");\r\n expect(console.warn).toHaveBeenCalledWith(\r\n \"[addAlphaToHex] Hex value is not valid.\"\r\n );\r\n\r\n expect(addAlphaToHex(\"#fff0\", 0.5)).toBe(\"#000\");\r\n expect(console.warn).toHaveBeenCalledWith(\r\n \"[addAlphaToHex] Hex value is not valid.\"\r\n );\r\n });\r\n});\r\n"]}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.roundHalfToEven = roundHalfToEven;
4
+ exports.alphaToHex = alphaToHex;
5
+ function roundHalfToEven(number) {
6
+ const roundedNumber = Math.round(number);
7
+ if (Math.abs(roundedNumber - number) === 0.5 && roundedNumber % 2 !== 0) {
8
+ return roundedNumber > number ? roundedNumber - 1 : roundedNumber + 1;
9
+ }
10
+ return roundedNumber;
11
+ }
12
+ function alphaToHex(alpha) {
13
+ if (alpha < 0 || alpha > 1) {
14
+ console.warn("[alphaToHex] Alpha value must be between 0 and 1.");
15
+ return "00";
16
+ }
17
+ const alpha255 = roundHalfToEven(alpha * 255);
18
+ const alphaHex = alpha255.toString(16).padStart(2, "0");
19
+ return alphaHex;
20
+ }
21
+ //# sourceMappingURL=alphaToHex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alphaToHex.js","sourceRoot":"","sources":["../../../src/Utilities/alphaToHex.ts"],"names":[],"mappings":";;AAAA,0CAMC;AAED,gCAUC;AAlBD,SAAgB,eAAe,CAAC,MAAc;IAC5C,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACzC,IAAI,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,MAAM,CAAC,KAAK,GAAG,IAAI,aAAa,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,OAAO,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,SAAgB,UAAU,CAAC,KAAa;IACtC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;QAClE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAExD,OAAO,QAAQ,CAAC;AAClB,CAAC","sourcesContent":["export function roundHalfToEven(number: number): number {\r\n const roundedNumber = Math.round(number);\r\n if (Math.abs(roundedNumber - number) === 0.5 && roundedNumber % 2 !== 0) {\r\n return roundedNumber > number ? roundedNumber - 1 : roundedNumber + 1;\r\n }\r\n return roundedNumber;\r\n}\r\n\r\nexport function alphaToHex(alpha: number): string {\r\n if (alpha < 0 || alpha > 1) {\r\n console.warn(\"[alphaToHex] Alpha value must be between 0 and 1.\");\r\n return \"00\";\r\n }\r\n\r\n const alpha255 = roundHalfToEven(alpha * 255);\r\n const alphaHex = alpha255.toString(16).padStart(2, \"0\");\r\n\r\n return alphaHex;\r\n}\r\n"]}
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const alphaToHex_1 = require("./alphaToHex");
4
+ describe("roundHalfToEven", () => {
5
+ it("should round 0.49 to 0", () => {
6
+ expect((0, alphaToHex_1.roundHalfToEven)(0.49)).toBe(0);
7
+ });
8
+ it("should round 0.5 to 0", () => {
9
+ expect((0, alphaToHex_1.roundHalfToEven)(0.5)).toBe(0);
10
+ });
11
+ it("should round 0.51 to 1", () => {
12
+ expect((0, alphaToHex_1.roundHalfToEven)(0.51)).toBe(1);
13
+ });
14
+ it("should round 0.55 to 1", () => {
15
+ expect((0, alphaToHex_1.roundHalfToEven)(0.55)).toBe(1);
16
+ });
17
+ it("should round 0.75 to 1", () => {
18
+ expect((0, alphaToHex_1.roundHalfToEven)(0.75)).toBe(1);
19
+ });
20
+ it("should round 123.5 to 124", () => {
21
+ expect((0, alphaToHex_1.roundHalfToEven)(123.5)).toBe(124);
22
+ });
23
+ });
24
+ describe("alphaToHex", () => {
25
+ it("should return '00' for alpha 0", () => {
26
+ expect((0, alphaToHex_1.alphaToHex)(0)).toBe("00");
27
+ });
28
+ it("should return 'ff' for alpha 1", () => {
29
+ expect((0, alphaToHex_1.alphaToHex)(1)).toBe("ff");
30
+ });
31
+ it("should return '1f' for alpha 0.12 (12%)", () => {
32
+ expect((0, alphaToHex_1.alphaToHex)(0.12)).toBe("1f");
33
+ });
34
+ it("should return '80' for alpha 0.5 (50%)", () => {
35
+ expect((0, alphaToHex_1.alphaToHex)(0.5)).toBe("80");
36
+ });
37
+ it("should return 'bf' for alpha 0.75 (75%)", () => {
38
+ expect((0, alphaToHex_1.alphaToHex)(0.75)).toBe("bf");
39
+ });
40
+ it("should return '00' for alpha just above 0", () => {
41
+ expect((0, alphaToHex_1.alphaToHex)(0.0012)).toBe("00");
42
+ });
43
+ it("should return '03' for alpha 0.01", () => {
44
+ expect((0, alphaToHex_1.alphaToHex)(0.01)).toBe("03");
45
+ });
46
+ it("should return '03' for alpha just above 0 with rounding", () => {
47
+ expect((0, alphaToHex_1.alphaToHex)(0.01)).toBe("03");
48
+ });
49
+ it("should return 'ff' for alpha just below 1", () => {
50
+ expect((0, alphaToHex_1.alphaToHex)(0.9988)).toBe("ff");
51
+ });
52
+ it("should return 'fc' for alpha 0.99", () => {
53
+ expect((0, alphaToHex_1.alphaToHex)(0.99)).toBe("fc");
54
+ });
55
+ it("should return 'fc' for alpha just below 1 with rounding", () => {
56
+ expect((0, alphaToHex_1.alphaToHex)(0.99)).toBe("fc");
57
+ });
58
+ it("should return 'fe' for alpha 0.996", () => {
59
+ expect((0, alphaToHex_1.alphaToHex)(0.996)).toBe("fe");
60
+ });
61
+ it("should return 'fe' for alpha 0.998", () => {
62
+ expect((0, alphaToHex_1.alphaToHex)(0.998)).toBe("fe");
63
+ });
64
+ it("should log a warning and return '00' (0) for alpha less than 0", () => {
65
+ console.warn = jest.fn();
66
+ expect((0, alphaToHex_1.alphaToHex)(-0.1)).toBe("00");
67
+ expect(console.warn).toHaveBeenCalledWith("[alphaToHex] Alpha value must be between 0 and 1.");
68
+ });
69
+ it("should log a warning and return '00' (0) for alpha greater than 1", () => {
70
+ console.warn = jest.fn();
71
+ expect((0, alphaToHex_1.alphaToHex)(1.1)).toBe("00");
72
+ expect(console.warn).toHaveBeenCalledWith("[alphaToHex] Alpha value must be between 0 and 1.");
73
+ });
74
+ });
75
+ //# sourceMappingURL=alphaToHex.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alphaToHex.test.js","sourceRoot":"","sources":["../../../src/Utilities/alphaToHex.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { alphaToHex, roundHalfToEven } from \"./alphaToHex\";\r\n\r\ndescribe(\"roundHalfToEven\", () => {\r\n it(\"should round 0.49 to 0\", () => {\r\n expect(roundHalfToEven(0.49)).toBe(0);\r\n });\r\n\r\n it(\"should round 0.5 to 0\", () => {\r\n expect(roundHalfToEven(0.5)).toBe(0);\r\n });\r\n\r\n it(\"should round 0.51 to 1\", () => {\r\n expect(roundHalfToEven(0.51)).toBe(1);\r\n });\r\n\r\n it(\"should round 0.55 to 1\", () => {\r\n expect(roundHalfToEven(0.55)).toBe(1);\r\n });\r\n\r\n it(\"should round 0.75 to 1\", () => {\r\n expect(roundHalfToEven(0.75)).toBe(1);\r\n });\r\n\r\n it(\"should round 123.5 to 124\", () => {\r\n expect(roundHalfToEven(123.5)).toBe(124);\r\n });\r\n});\r\n\r\ndescribe(\"alphaToHex\", () => {\r\n it(\"should return '00' for alpha 0\", () => {\r\n expect(alphaToHex(0)).toBe(\"00\");\r\n });\r\n\r\n it(\"should return 'ff' for alpha 1\", () => {\r\n expect(alphaToHex(1)).toBe(\"ff\");\r\n });\r\n\r\n it(\"should return '1f' for alpha 0.12 (12%)\", () => {\r\n expect(alphaToHex(0.12)).toBe(\"1f\");\r\n });\r\n\r\n it(\"should return '80' for alpha 0.5 (50%)\", () => {\r\n expect(alphaToHex(0.5)).toBe(\"80\");\r\n });\r\n\r\n it(\"should return 'bf' for alpha 0.75 (75%)\", () => {\r\n expect(alphaToHex(0.75)).toBe(\"bf\");\r\n });\r\n\r\n it(\"should return '00' for alpha just above 0\", () => {\r\n expect(alphaToHex(0.0012)).toBe(\"00\");\r\n });\r\n\r\n it(\"should return '03' for alpha 0.01\", () => {\r\n expect(alphaToHex(0.01)).toBe(\"03\");\r\n });\r\n\r\n it(\"should return '03' for alpha just above 0 with rounding\", () => {\r\n expect(alphaToHex(0.01)).toBe(\"03\");\r\n });\r\n\r\n it(\"should return 'ff' for alpha just below 1\", () => {\r\n expect(alphaToHex(0.9988)).toBe(\"ff\");\r\n });\r\n\r\n it(\"should return 'fc' for alpha 0.99\", () => {\r\n expect(alphaToHex(0.99)).toBe(\"fc\");\r\n });\r\n\r\n it(\"should return 'fc' for alpha just below 1 with rounding\", () => {\r\n expect(alphaToHex(0.99)).toBe(\"fc\");\r\n });\r\n\r\n it(\"should return 'fe' for alpha 0.996\", () => {\r\n expect(alphaToHex(0.996)).toBe(\"fe\");\r\n });\r\n\r\n it(\"should return 'fe' for alpha 0.998\", () => {\r\n expect(alphaToHex(0.998)).toBe(\"fe\");\r\n });\r\n\r\n it(\"should log a warning and return '00' (0) for alpha less than 0\", () => {\r\n console.warn = jest.fn();\r\n expect(alphaToHex(-0.1)).toBe(\"00\");\r\n expect(console.warn).toHaveBeenCalledWith(\r\n \"[alphaToHex] Alpha value must be between 0 and 1.\"\r\n );\r\n });\r\n\r\n it(\"should log a warning and return '00' (0) for alpha greater than 1\", () => {\r\n console.warn = jest.fn();\r\n expect(alphaToHex(1.1)).toBe(\"00\");\r\n expect(console.warn).toHaveBeenCalledWith(\r\n \"[alphaToHex] Alpha value must be between 0 and 1.\"\r\n );\r\n });\r\n});\r\n"]}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.downloadFile = downloadFile;
4
+ function downloadFile(filename, file) {
5
+ const a = document.createElement("a");
6
+ const url = window.URL.createObjectURL(file);
7
+ a.href = url;
8
+ a.download = filename;
9
+ document.body.appendChild(a);
10
+ a.click();
11
+ document.body.removeChild(a);
12
+ window.URL.revokeObjectURL(url);
13
+ }
14
+ //# sourceMappingURL=downloadFile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"downloadFile.js","sourceRoot":"","sources":["../../../src/Utilities/downloadFile.ts"],"names":[],"mappings":";;AAAA,oCAUC;AAVD,SAAgB,YAAY,CAAC,QAAgB,EAAE,IAAU;IACvD,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC;IACb,CAAC,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC,CAAC,KAAK,EAAE,CAAC;IAEV,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAC7B,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;AAClC,CAAC","sourcesContent":["export function downloadFile(filename: string, file: Blob) {\r\n const a = document.createElement(\"a\");\r\n const url = window.URL.createObjectURL(file);\r\n a.href = url;\r\n a.download = filename;\r\n document.body.appendChild(a);\r\n a.click();\r\n\r\n document.body.removeChild(a);\r\n window.URL.revokeObjectURL(url);\r\n}\r\n"]}
@@ -14,7 +14,10 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./addAlphaToHex"), exports);
18
+ __exportStar(require("./alphaToHex"), exports);
17
19
  __exportStar(require("./degreesToRadians"), exports);
20
+ __exportStar(require("./downloadFile"), exports);
18
21
  __exportStar(require("./LengthConverters"), exports);
19
22
  __exportStar(require("./generateUniqueID"), exports);
20
23
  __exportStar(require("./easeFunctions"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Utilities/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,qDAAmC;AACnC,qDAAmC;AACnC,kDAAgC;AAChC,sDAAoC","sourcesContent":["export * from \"./degreesToRadians\";\r\nexport * from \"./LengthConverters\";\r\nexport * from \"./generateUniqueID\";\r\nexport * from \"./easeFunctions\";\r\nexport * from \"./interpolateNumber\";\r\n\r\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Utilities/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,+CAA6B;AAC7B,qDAAmC;AACnC,iDAA+B;AAC/B,qDAAmC;AACnC,qDAAmC;AACnC,kDAAgC;AAChC,sDAAoC","sourcesContent":["export * from \"./addAlphaToHex\";\r\nexport * from \"./alphaToHex\";\r\nexport * from \"./degreesToRadians\";\r\nexport * from \"./downloadFile\";\r\nexport * from \"./LengthConverters\";\r\nexport * from \"./generateUniqueID\";\r\nexport * from \"./easeFunctions\";\r\nexport * from \"./interpolateNumber\";\r\n"]}
@@ -0,0 +1,171 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Version = exports.VersionStage = void 0;
4
+ var VersionStage;
5
+ (function (VersionStage) {
6
+ VersionStage["RELEASED"] = "released";
7
+ VersionStage["BETA"] = "beta";
8
+ VersionStage["ALPHA"] = "alpha";
9
+ })(VersionStage || (exports.VersionStage = VersionStage = {}));
10
+ class Version {
11
+ static GetLatest(versions) {
12
+ let latest;
13
+ for (const v of versions) {
14
+ if (latest === undefined) {
15
+ latest = v;
16
+ continue;
17
+ }
18
+ if (v.major > latest.major) {
19
+ latest = v;
20
+ }
21
+ else if (v.major === latest.major) {
22
+ if (v.minor > latest.minor) {
23
+ latest = v;
24
+ }
25
+ else if (v.minor === latest.minor) {
26
+ if (v.patch > latest.patch) {
27
+ latest = v;
28
+ }
29
+ }
30
+ }
31
+ }
32
+ return latest;
33
+ }
34
+ static GetLatestWithMajor(versions, major) {
35
+ let latest;
36
+ for (const v of versions) {
37
+ if (v.major !== major)
38
+ continue;
39
+ if (latest === undefined) {
40
+ latest = v;
41
+ continue;
42
+ }
43
+ if (v.minor > latest.minor) {
44
+ latest = v;
45
+ }
46
+ else if (v.minor === latest.minor) {
47
+ if (v.patch > latest.patch) {
48
+ latest = v;
49
+ }
50
+ }
51
+ }
52
+ return latest;
53
+ }
54
+ static GetLatestWithMajorMinor(versions, major, minor) {
55
+ let latest;
56
+ for (const v of versions) {
57
+ if (v.major !== major)
58
+ continue;
59
+ if (v.minor !== minor)
60
+ continue;
61
+ if (latest === undefined) {
62
+ latest = v;
63
+ continue;
64
+ }
65
+ if (v.patch > latest.patch) {
66
+ latest = v;
67
+ }
68
+ }
69
+ return latest;
70
+ }
71
+ static FromString(versionString) {
72
+ const stringSplit = versionString.split('.');
73
+ if (stringSplit.length !== 3) {
74
+ throw new Error(`Unable to parse version string: ${versionString} because it could not be split into 3 parts`);
75
+ }
76
+ const major = parseInt(stringSplit[0], 10);
77
+ const minor = parseInt(stringSplit[1], 10);
78
+ const patchStageLabel = stringSplit[2];
79
+ let patch = NaN;
80
+ let stageLabel;
81
+ const indexOfDash = patchStageLabel.indexOf('-');
82
+ if (indexOfDash > 0) {
83
+ const patchStr = patchStageLabel.substring(0, indexOfDash);
84
+ patch = parseInt(patchStr, 10);
85
+ stageLabel = patchStageLabel.substring(indexOfDash + 1);
86
+ }
87
+ else {
88
+ patch = parseInt(patchStageLabel, 10);
89
+ }
90
+ if (isNaN(major)) {
91
+ throw new Error(`Unable to parse version string: ${versionString} because Major is not a number`);
92
+ }
93
+ if (isNaN(minor)) {
94
+ throw new Error(`Unable to parse version string: ${versionString} because Minor is not a number`);
95
+ }
96
+ if (isNaN(patch)) {
97
+ throw new Error(`Unable to parse version string: ${versionString} because Patch is not a number`);
98
+ }
99
+ let stage = VersionStage.RELEASED;
100
+ let label;
101
+ if (stageLabel) {
102
+ const stageLabelSplit = stageLabel.split('-');
103
+ if (stageLabelSplit.length > 0) {
104
+ const stringAsStage = this.stringToStage(stageLabelSplit[0]);
105
+ if (stringAsStage === undefined) {
106
+ label = stageLabel;
107
+ }
108
+ else {
109
+ stage = stringAsStage;
110
+ if (stageLabelSplit.length > 1) {
111
+ label = stageLabel.replace(`${stageLabelSplit[0]}-`, '');
112
+ }
113
+ }
114
+ }
115
+ }
116
+ const version = new Version(major, minor, patch, stage, label);
117
+ return version;
118
+ }
119
+ static stringToStage(str) {
120
+ if (str === VersionStage.ALPHA) {
121
+ return VersionStage.ALPHA;
122
+ }
123
+ else if (str === VersionStage.BETA) {
124
+ return VersionStage.BETA;
125
+ }
126
+ return undefined;
127
+ }
128
+ static AreEqual(v1, v2) {
129
+ if (v1.major !== v2.major)
130
+ return false;
131
+ if (v1.minor !== v2.minor)
132
+ return false;
133
+ if (v1.patch !== v2.patch)
134
+ return false;
135
+ if (v1.stage !== v2.stage)
136
+ return false;
137
+ if (v1.label !== v2.label)
138
+ return false;
139
+ return true;
140
+ }
141
+ static IsNewerVersion(a, b) {
142
+ if (a.major < b.major)
143
+ return true;
144
+ if (a.minor < b.minor)
145
+ return true;
146
+ if (a.patch < b.patch)
147
+ return true;
148
+ return false;
149
+ }
150
+ constructor(major, minor, patch, stage, label) {
151
+ this.major = major;
152
+ this.minor = minor;
153
+ this.patch = patch;
154
+ this.stage = stage;
155
+ this.label = label;
156
+ this.baseVersionString = `${major}.${minor}.${patch}`;
157
+ let displayString = this.baseVersionString;
158
+ if (stage === VersionStage.ALPHA) {
159
+ displayString = displayString + '-alpha';
160
+ }
161
+ else if (this.stage === VersionStage.BETA) {
162
+ displayString = displayString + '-beta';
163
+ }
164
+ if (this.label) {
165
+ displayString = displayString + `-${label}`;
166
+ }
167
+ this.displayString = displayString;
168
+ }
169
+ }
170
+ exports.Version = Version;
171
+ //# sourceMappingURL=Version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Version.js","sourceRoot":"","sources":["../../../src/ValueObjects/Version.ts"],"names":[],"mappings":"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","sourcesContent":["export enum VersionStage {\r\n RELEASED = 'released',\r\n BETA = 'beta',\r\n ALPHA = 'alpha',\r\n}\r\n\r\nexport class Version {\r\n static GetLatest(\r\n versions: Version[],\r\n ): Version | undefined {\r\n let latest: Version | undefined;\r\n\r\n for(const v of versions){\r\n if (latest === undefined) {\r\n latest = v;\r\n continue;\r\n }\r\n\r\n if (v.major > latest.major) {\r\n latest = v;\r\n } else if (v.major === latest.major) {\r\n if (v.minor > latest.minor) {\r\n latest = v;\r\n } else if (v.minor === latest.minor) {\r\n if (v.patch > latest.patch) {\r\n latest = v;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return latest;\r\n }\r\n\r\n static GetLatestWithMajor(\r\n versions: Version[],\r\n major: number,\r\n ): Version | undefined {\r\n let latest: Version | undefined;\r\n\r\n for (const v of versions) {\r\n if (v.major !== major) continue;\r\n\r\n if (latest === undefined) {\r\n latest = v;\r\n continue;\r\n }\r\n\r\n if (v.minor > latest.minor) {\r\n latest = v;\r\n } else if (v.minor === latest.minor) {\r\n if (v.patch > latest.patch) {\r\n latest = v;\r\n }\r\n }\r\n }\r\n\r\n return latest;\r\n }\r\n\r\n static GetLatestWithMajorMinor(\r\n versions: Version[],\r\n major: number,\r\n minor: number,\r\n ): Version | undefined {\r\n let latest: Version | undefined;\r\n\r\n for (const v of versions) {\r\n if (v.major !== major) continue;\r\n if (v.minor !== minor) continue;\r\n\r\n if (latest === undefined) {\r\n latest = v;\r\n continue;\r\n }\r\n\r\n if (v.patch > latest.patch) {\r\n latest = v;\r\n }\r\n }\r\n\r\n return latest;\r\n }\r\n\r\n static FromString(versionString: string): Version {\r\n const stringSplit = versionString.split('.');\r\n\r\n if (stringSplit.length !== 3) {\r\n throw new Error(`Unable to parse version string: ${versionString} because it could not be split into 3 parts`);\r\n }\r\n\r\n const major = parseInt(stringSplit[0], 10);\r\n const minor = parseInt(stringSplit[1], 10);\r\n const patchStageLabel = stringSplit[2];\r\n let patch = NaN;\r\n let stageLabel: string | undefined;\r\n\r\n const indexOfDash = patchStageLabel.indexOf('-');\r\n\r\n if (indexOfDash > 0) {\r\n const patchStr = patchStageLabel.substring(0, indexOfDash);\r\n patch = parseInt(patchStr, 10);\r\n stageLabel = patchStageLabel.substring(indexOfDash + 1);\r\n } else {\r\n patch = parseInt(patchStageLabel, 10);\r\n }\r\n\r\n if (isNaN(major)) {\r\n throw new Error(`Unable to parse version string: ${versionString} because Major is not a number`);\r\n }\r\n if (isNaN(minor)) {\r\n throw new Error(`Unable to parse version string: ${versionString} because Minor is not a number`);\r\n }\r\n if (isNaN(patch)) {\r\n throw new Error(`Unable to parse version string: ${versionString} because Patch is not a number`);\r\n }\r\n\r\n let stage = VersionStage.RELEASED;\r\n let label: string | undefined;\r\n\r\n if (stageLabel) {\r\n const stageLabelSplit = stageLabel.split('-');\r\n\r\n if (stageLabelSplit.length > 0) {\r\n const stringAsStage = this.stringToStage(stageLabelSplit[0]);\r\n\r\n if (stringAsStage === undefined) {\r\n label = stageLabel;\r\n } else {\r\n stage = stringAsStage;\r\n if (stageLabelSplit.length > 1) {\r\n label = stageLabel.replace(`${stageLabelSplit[0]}-`, '');\r\n }\r\n }\r\n }\r\n }\r\n\r\n const version = new Version(major, minor, patch, stage, label);\r\n return version;\r\n }\r\n\r\n private static stringToStage(str: string): VersionStage | undefined {\r\n if (str === VersionStage.ALPHA) {\r\n return VersionStage.ALPHA;\r\n } else if (str === VersionStage.BETA) {\r\n return VersionStage.BETA;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n static AreEqual(v1: Version, v2: Version): boolean {\r\n if (v1.major !== v2.major) return false;\r\n if (v1.minor !== v2.minor) return false;\r\n if (v1.patch !== v2.patch) return false;\r\n if (v1.stage !== v2.stage) return false;\r\n if (v1.label !== v2.label) return false;\r\n return true;\r\n }\r\n\r\n static IsNewerVersion(a: Version, b: Version): boolean {\r\n if (a.major < b.major) return true;\r\n if (a.minor < b.minor) return true;\r\n if (a.patch < b.patch) return true;\r\n\r\n return false;\r\n }\r\n\r\n readonly major: number;\r\n readonly minor: number;\r\n readonly patch: number;\r\n readonly stage: VersionStage;\r\n readonly label?: string;\r\n readonly displayString: string;\r\n readonly baseVersionString: string;\r\n\r\n constructor(major: number, minor: number, patch: number, stage: VersionStage, label?: string) {\r\n this.major = major;\r\n this.minor = minor;\r\n this.patch = patch;\r\n this.stage = stage;\r\n this.label = label;\r\n\r\n this.baseVersionString= `${major}.${minor}.${patch}`;\r\n\r\n let displayString = this.baseVersionString;\r\n if (stage === VersionStage.ALPHA) {\r\n displayString = displayString + '-alpha';\r\n } else if (this.stage === VersionStage.BETA) {\r\n displayString = displayString + '-beta';\r\n }\r\n\r\n if (this.label) {\r\n displayString = displayString + `-${label}`;\r\n }\r\n\r\n this.displayString = displayString;\r\n }\r\n}\r\n"]}