@myeiter/mcy-web 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/License.txt +21 -0
- package/README.md +1 -0
- package/dist/app/app.d.ts +3 -0
- package/dist/app/app.d.ts.map +1 -0
- package/dist/app/app.js +19 -0
- package/dist/app/app.js.map +1 -0
- package/dist/app/drawing.d.ts +35 -0
- package/dist/app/drawing.d.ts.map +1 -0
- package/dist/app/drawing.js +173 -0
- package/dist/app/drawing.js.map +1 -0
- package/dist/app/input.d.ts +164 -0
- package/dist/app/input.d.ts.map +1 -0
- package/dist/app/input.js +266 -0
- package/dist/app/input.js.map +1 -0
- package/dist/backend.d.ts +48 -0
- package/dist/backend.d.ts.map +1 -0
- package/dist/backend.js +198 -0
- package/dist/backend.js.map +1 -0
- package/dist/core/containers.d.ts +3 -0
- package/dist/core/containers.d.ts.map +1 -0
- package/dist/core/containers.js +17 -0
- package/dist/core/containers.js.map +1 -0
- package/dist/core/core.d.ts +7 -0
- package/dist/core/core.d.ts.map +1 -0
- package/dist/core/core.js +23 -0
- package/dist/core/core.js.map +1 -0
- package/dist/core/error.d.ts +6 -0
- package/dist/core/error.d.ts.map +1 -0
- package/dist/core/error.js +26 -0
- package/dist/core/error.js.map +1 -0
- package/dist/core/math.d.ts +20 -0
- package/dist/core/math.d.ts.map +1 -0
- package/dist/core/math.js +48 -0
- package/dist/core/math.js.map +1 -0
- package/dist/core/serialization.d.ts +10 -0
- package/dist/core/serialization.d.ts.map +1 -0
- package/dist/core/serialization.js +86 -0
- package/dist/core/serialization.js.map +1 -0
- package/dist/core/string.d.ts +8 -0
- package/dist/core/string.d.ts.map +1 -0
- package/dist/core/string.js +47 -0
- package/dist/core/string.js.map +1 -0
- package/dist/core/time.d.ts +5 -0
- package/dist/core/time.d.ts.map +1 -0
- package/dist/core/time.js +32 -0
- package/dist/core/time.js.map +1 -0
- package/dist/misc.d.ts +2 -0
- package/dist/misc.d.ts.map +1 -0
- package/dist/misc.js +3 -0
- package/dist/misc.js.map +1 -0
- package/package.json +69 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export type V2 = {
|
|
2
|
+
x: number;
|
|
3
|
+
y: number;
|
|
4
|
+
};
|
|
5
|
+
export declare function V2Clone(other: V2): V2;
|
|
6
|
+
export declare function V2Add(v1: V2, v2: V2): V2;
|
|
7
|
+
export declare function V2WithX(v2: V2): {
|
|
8
|
+
x: number;
|
|
9
|
+
y: number;
|
|
10
|
+
};
|
|
11
|
+
export declare function V2WithY(v2: V2): {
|
|
12
|
+
x: number;
|
|
13
|
+
y: number;
|
|
14
|
+
};
|
|
15
|
+
export declare function ParseNumberStrict(str: string): number;
|
|
16
|
+
export declare function GetRandomBool(): boolean;
|
|
17
|
+
export declare function GetRandomBoolWeighted(weight: number): boolean;
|
|
18
|
+
export declare function GetRandomInt(min: number, max: number): number;
|
|
19
|
+
export declare function GetRandomIntWithAbsoluteValue(min: number, max: number): number;
|
|
20
|
+
//# sourceMappingURL=math.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../../src/core/math.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,EAAE,GAAG;IACb,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACb,CAAA;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAGrC;AAED,wBAAgB,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAGxC;AAED,wBAAgB,OAAO,CAAC,EAAE,EAAE,EAAE;;;EAG7B;AAED,wBAAgB,OAAO,CAAC,EAAE,EAAE,EAAE;;;EAG7B;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CASrD;AAED,wBAAgB,aAAa,IAAI,OAAO,CAGvC;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAG7D;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAG7D;AAED,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAS9E"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.V2Clone = V2Clone;
|
|
4
|
+
exports.V2Add = V2Add;
|
|
5
|
+
exports.V2WithX = V2WithX;
|
|
6
|
+
exports.V2WithY = V2WithY;
|
|
7
|
+
exports.ParseNumberStrict = ParseNumberStrict;
|
|
8
|
+
exports.GetRandomBool = GetRandomBool;
|
|
9
|
+
exports.GetRandomBoolWeighted = GetRandomBoolWeighted;
|
|
10
|
+
exports.GetRandomInt = GetRandomInt;
|
|
11
|
+
exports.GetRandomIntWithAbsoluteValue = GetRandomIntWithAbsoluteValue;
|
|
12
|
+
function V2Clone(other) {
|
|
13
|
+
return { x: other.x, y: other.y };
|
|
14
|
+
}
|
|
15
|
+
function V2Add(v1, v2) {
|
|
16
|
+
return { x: v1.x + v2.x, y: v1.y + v2.y };
|
|
17
|
+
}
|
|
18
|
+
function V2WithX(v2) {
|
|
19
|
+
return { x: v2.x, y: 0 };
|
|
20
|
+
}
|
|
21
|
+
function V2WithY(v2) {
|
|
22
|
+
return { x: 0, y: v2.y };
|
|
23
|
+
}
|
|
24
|
+
function ParseNumberStrict(str) {
|
|
25
|
+
str = str.trim();
|
|
26
|
+
const value = Number(str);
|
|
27
|
+
if (isNaN(value))
|
|
28
|
+
throw new Error(`${str} is not a number`);
|
|
29
|
+
return value;
|
|
30
|
+
}
|
|
31
|
+
function GetRandomBool() {
|
|
32
|
+
return Math.random() < 0.5;
|
|
33
|
+
}
|
|
34
|
+
function GetRandomBoolWeighted(weight) {
|
|
35
|
+
return Math.random() < weight;
|
|
36
|
+
}
|
|
37
|
+
function GetRandomInt(min, max) {
|
|
38
|
+
return Math.floor(Math.random() * (max - min + 1)) + min;
|
|
39
|
+
}
|
|
40
|
+
function GetRandomIntWithAbsoluteValue(min, max) {
|
|
41
|
+
let result;
|
|
42
|
+
if (GetRandomBool())
|
|
43
|
+
result = GetRandomInt(min, max);
|
|
44
|
+
else
|
|
45
|
+
result = GetRandomInt(-max, -min);
|
|
46
|
+
return result;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=math.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"math.js","sourceRoot":"","sources":["../../src/core/math.ts"],"names":[],"mappings":";;AAKA,0BAGC;AAED,sBAGC;AAED,0BAGC;AAED,0BAGC;AAED,8CASC;AAED,sCAGC;AAED,sDAGC;AAED,oCAGC;AAED,sEASC;AAvDD,SAAgB,OAAO,CAAC,KAAS;IAE7B,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAC,CAAC;AACrC,CAAC;AAED,SAAgB,KAAK,CAAC,EAAM,EAAE,EAAM;IAEhC,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAC,CAAC;AAC7C,CAAC;AAED,SAAgB,OAAO,CAAC,EAAM;IAE1B,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC;AAC5B,CAAC;AAED,SAAgB,OAAO,CAAC,EAAM;IAE1B,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC;AAC7B,CAAC;AAED,SAAgB,iBAAiB,CAAC,GAAW;IAEzC,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAEjB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,KAAK,CAAC,KAAK,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,kBAAkB,CAAC,CAAC;IAE9C,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAgB,aAAa;IAEzB,OAAO,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC;AAC/B,CAAC;AAED,SAAgB,qBAAqB,CAAC,MAAc;IAEhD,OAAO,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC;AAClC,CAAC;AAED,SAAgB,YAAY,CAAC,GAAW,EAAE,GAAW;IAEjD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AAC7D,CAAC;AAED,SAAgB,6BAA6B,CAAC,GAAW,EAAE,GAAW;IAElE,IAAI,MAAc,CAAC;IACnB,IAAI,aAAa,EAAE;QACf,MAAM,GAAG,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;;QAEhC,MAAM,GAAG,YAAY,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;IAEtC,OAAO,MAAM,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare function CopyBuffer(src: ArrayBuffer, dest: ArrayBuffer, offset: number): number;
|
|
2
|
+
export declare function SizeStringToArrayBuffer_Small(str: string): number;
|
|
3
|
+
export declare function SizeStringToArrayBuffer_Large(str: string): number;
|
|
4
|
+
export declare function StringToArrayBuffer_Small(str: string): ArrayBuffer;
|
|
5
|
+
export declare function StringToArrayBuffer_Large(str: string): ArrayBuffer;
|
|
6
|
+
export declare function ArrayBufferToString_Small(buffer: ArrayBuffer, offset?: number): [string, number];
|
|
7
|
+
export declare function ArrayBufferToString_Large(buffer: ArrayBuffer, offset?: number): [string, number];
|
|
8
|
+
export declare function ArrayBufferToBase64String(buffer: ArrayBuffer): string;
|
|
9
|
+
export declare function Base64StringToArrayBuffer(base64: string): ArrayBuffer;
|
|
10
|
+
//# sourceMappingURL=serialization.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serialization.d.ts","sourceRoot":"","sources":["../../src/core/serialization.ts"],"names":[],"mappings":"AAEA,wBAAgB,UAAU,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAOtF;AAED,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAQjE;AAED,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAQjE;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAelE;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAiBlE;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,GAAE,MAAU,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAQnG;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,GAAE,MAAU,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAQnG;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAUrE;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAUrE"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CopyBuffer = CopyBuffer;
|
|
4
|
+
exports.SizeStringToArrayBuffer_Small = SizeStringToArrayBuffer_Small;
|
|
5
|
+
exports.SizeStringToArrayBuffer_Large = SizeStringToArrayBuffer_Large;
|
|
6
|
+
exports.StringToArrayBuffer_Small = StringToArrayBuffer_Small;
|
|
7
|
+
exports.StringToArrayBuffer_Large = StringToArrayBuffer_Large;
|
|
8
|
+
exports.ArrayBufferToString_Small = ArrayBufferToString_Small;
|
|
9
|
+
exports.ArrayBufferToString_Large = ArrayBufferToString_Large;
|
|
10
|
+
exports.ArrayBufferToBase64String = ArrayBufferToBase64String;
|
|
11
|
+
exports.Base64StringToArrayBuffer = Base64StringToArrayBuffer;
|
|
12
|
+
const error_1 = require("./error");
|
|
13
|
+
function CopyBuffer(src, dest, offset) {
|
|
14
|
+
const srcView = new Uint8Array(src);
|
|
15
|
+
const destView = new Uint8Array(dest);
|
|
16
|
+
destView.set(srcView, offset);
|
|
17
|
+
return srcView.length;
|
|
18
|
+
}
|
|
19
|
+
function SizeStringToArrayBuffer_Small(str) {
|
|
20
|
+
const encoder = new TextEncoder(); // UTF-8 encoder
|
|
21
|
+
const encoded = encoder.encode(str); // Uint8Array with bytes of str (ASCII-safe)
|
|
22
|
+
(0, error_1.MyAssert)(encoded.length < 255, "String too long (max 255 chars)");
|
|
23
|
+
return 1 + encoded.length;
|
|
24
|
+
}
|
|
25
|
+
function SizeStringToArrayBuffer_Large(str) {
|
|
26
|
+
const encoder = new TextEncoder();
|
|
27
|
+
const encoded = encoder.encode(str);
|
|
28
|
+
(0, error_1.MyAssert)(encoded.length < 65535, "String too long (max 65535 bytes)");
|
|
29
|
+
return 2 + encoded.length; // 2 bytes for length + string bytes
|
|
30
|
+
}
|
|
31
|
+
function StringToArrayBuffer_Small(str) {
|
|
32
|
+
const encoder = new TextEncoder(); // UTF-8 encoder
|
|
33
|
+
const encoded = encoder.encode(str); // Uint8Array with bytes of str (ASCII-safe)
|
|
34
|
+
(0, error_1.MyAssert)(encoded.length < 255, "String too long (max 255 chars)");
|
|
35
|
+
// +1 for the length byte
|
|
36
|
+
const buffer = new ArrayBuffer(1 + encoded.length);
|
|
37
|
+
const view = new Uint8Array(buffer);
|
|
38
|
+
view[0] = encoded.length; // first byte = string length
|
|
39
|
+
view.set(encoded, 1); // copy string bytes after length
|
|
40
|
+
return buffer;
|
|
41
|
+
}
|
|
42
|
+
function StringToArrayBuffer_Large(str) {
|
|
43
|
+
const encoder = new TextEncoder();
|
|
44
|
+
const encoded = encoder.encode(str);
|
|
45
|
+
(0, error_1.MyAssert)(encoded.length < 65535, "String too long (max 65535 bytes)");
|
|
46
|
+
const buffer = new ArrayBuffer(2 + encoded.length);
|
|
47
|
+
const view = new Uint8Array(buffer);
|
|
48
|
+
// Store length in first 2 bytes (big-endian)
|
|
49
|
+
view[0] = (encoded.length >> 8) & 0xFF; // high byte
|
|
50
|
+
view[1] = encoded.length & 0xFF; // low byte
|
|
51
|
+
view.set(encoded, 2); // copy string bytes after length
|
|
52
|
+
return buffer;
|
|
53
|
+
}
|
|
54
|
+
function ArrayBufferToString_Small(buffer, offset = 0) {
|
|
55
|
+
const view = new Uint8Array(buffer, offset);
|
|
56
|
+
const length = view[0]; // first byte = length
|
|
57
|
+
const encoded = view.slice(1, 1 + length); // extract string bytes
|
|
58
|
+
const decoder = new TextDecoder();
|
|
59
|
+
return [decoder.decode(encoded), length + 1];
|
|
60
|
+
}
|
|
61
|
+
function ArrayBufferToString_Large(buffer, offset = 0) {
|
|
62
|
+
const view = new Uint8Array(buffer, offset);
|
|
63
|
+
const length = (view[0] << 8) | view[1];
|
|
64
|
+
const encoded = view.slice(2, 2 + length);
|
|
65
|
+
const decoder = new TextDecoder();
|
|
66
|
+
return [decoder.decode(encoded), length + 2];
|
|
67
|
+
}
|
|
68
|
+
function ArrayBufferToBase64String(buffer) {
|
|
69
|
+
let binary = "";
|
|
70
|
+
const bytes = new Uint8Array(buffer);
|
|
71
|
+
const len = bytes.byteLength;
|
|
72
|
+
for (let i = 0; i < len; i++) {
|
|
73
|
+
binary += String.fromCharCode(bytes[i]);
|
|
74
|
+
}
|
|
75
|
+
return btoa(binary); // base64 encode
|
|
76
|
+
}
|
|
77
|
+
function Base64StringToArrayBuffer(base64) {
|
|
78
|
+
const binary = atob(base64); // base64 decode
|
|
79
|
+
const len = binary.length;
|
|
80
|
+
const bytes = new Uint8Array(len);
|
|
81
|
+
for (let i = 0; i < len; i++) {
|
|
82
|
+
bytes[i] = binary.charCodeAt(i);
|
|
83
|
+
}
|
|
84
|
+
return bytes.buffer;
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=serialization.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serialization.js","sourceRoot":"","sources":["../../src/core/serialization.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare function HashStringToInt(str: string): number;
|
|
2
|
+
export declare function EscapeRegex(str: string): string;
|
|
3
|
+
export declare function CharIsAlphanumeric(char: string): boolean;
|
|
4
|
+
export declare function IsHexDigit(char: string): boolean;
|
|
5
|
+
export declare function IsValidHexColorString(str: string): boolean;
|
|
6
|
+
export declare function ExtractHexColor(str: string): string | undefined;
|
|
7
|
+
export declare function HexDigitToNumber(char: string): number | undefined;
|
|
8
|
+
//# sourceMappingURL=string.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../../src/core/string.ts"],"names":[],"mappings":"AAAA,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAOnD;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG/C;AAID,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAQxD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEhD;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAK/D;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAKjE"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HashStringToInt = HashStringToInt;
|
|
4
|
+
exports.EscapeRegex = EscapeRegex;
|
|
5
|
+
exports.CharIsAlphanumeric = CharIsAlphanumeric;
|
|
6
|
+
exports.IsHexDigit = IsHexDigit;
|
|
7
|
+
exports.IsValidHexColorString = IsValidHexColorString;
|
|
8
|
+
exports.ExtractHexColor = ExtractHexColor;
|
|
9
|
+
exports.HexDigitToNumber = HexDigitToNumber;
|
|
10
|
+
function HashStringToInt(str) {
|
|
11
|
+
let hash = 0x811c9dc5; // FNV offset basis
|
|
12
|
+
for (let i = 0; i < str.length; i++) {
|
|
13
|
+
hash ^= str.charCodeAt(i);
|
|
14
|
+
hash = Math.imul(hash, 0x01000193); // FNV prime
|
|
15
|
+
}
|
|
16
|
+
return hash >>> 0; // force unsigned 32-bit
|
|
17
|
+
}
|
|
18
|
+
function EscapeRegex(str) {
|
|
19
|
+
return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
20
|
+
}
|
|
21
|
+
function CharIsAlphanumeric(char) {
|
|
22
|
+
if (char.length > 1)
|
|
23
|
+
return false;
|
|
24
|
+
const code = char.charCodeAt(0);
|
|
25
|
+
return (code >= 48 && code <= 57) || // 0-9
|
|
26
|
+
(code >= 65 && code <= 90) || // A-Z
|
|
27
|
+
(code >= 97 && code <= 122); // a-z
|
|
28
|
+
}
|
|
29
|
+
function IsHexDigit(char) {
|
|
30
|
+
return /^[0-9a-fA-F]$/.test(char);
|
|
31
|
+
}
|
|
32
|
+
function IsValidHexColorString(str) {
|
|
33
|
+
return /^[0-9a-fA-F]{6}$/.test(str);
|
|
34
|
+
}
|
|
35
|
+
function ExtractHexColor(str) {
|
|
36
|
+
if (IsValidHexColorString(str)) {
|
|
37
|
+
return `#${str}`;
|
|
38
|
+
}
|
|
39
|
+
return undefined;
|
|
40
|
+
}
|
|
41
|
+
function HexDigitToNumber(char) {
|
|
42
|
+
if (/^[0-9a-fA-F]$/.test(char)) {
|
|
43
|
+
return parseInt(char, 16);
|
|
44
|
+
}
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=string.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string.js","sourceRoot":"","sources":["../../src/core/string.ts"],"names":[],"mappings":";;AAAA,0CAOC;AAED,kCAGC;AAID,gDAQC;AAED,gCAEC;AAED,sDAEC;AAED,0CAKC;AAED,4CAKC;AA9CD,SAAgB,eAAe,CAAC,GAAW;IACvC,IAAI,IAAI,GAAG,UAAU,CAAC,CAAC,mBAAmB;IAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,IAAI,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,YAAY;IACpD,CAAC;IACD,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,wBAAwB;AAC/C,CAAC;AAED,SAAgB,WAAW,CAAC,GAAW;IAEnC,OAAO,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AACtD,CAAC;AAID,SAAgB,kBAAkB,CAAC,IAAY;IAE3C,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;QACf,OAAO,KAAK,CAAC;IACjB,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAChC,OAAO,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,IAAK,MAAM;QACxC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,IAAK,MAAM;QACrC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC,CAAG,MAAM;AAC7C,CAAC;AAED,SAAgB,UAAU,CAAC,IAAY;IACnC,OAAO,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC;AAED,SAAgB,qBAAqB,CAAC,GAAW;IAC7C,OAAO,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxC,CAAC;AAED,SAAgB,eAAe,CAAC,GAAW;IACvC,IAAI,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,GAAG,EAAE,CAAC;IACrB,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,SAAgB,gBAAgB,CAAC,IAAY;IACzC,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,OAAO,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare const MILLISECONDS_PER_MINUTE: number;
|
|
2
|
+
export declare function IsPastTimeMinutes(minutes: number, checkTime: number): boolean;
|
|
3
|
+
export declare function DateAsString(time: number): string;
|
|
4
|
+
export declare function DayString(time: number): string;
|
|
5
|
+
//# sourceMappingURL=time.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../src/core/time.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,EAAE,MAAkB,CAAC;AAazD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,WAInE;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAI,MAAM,CAIlD;AAGD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAS9C"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MILLISECONDS_PER_MINUTE = void 0;
|
|
4
|
+
exports.IsPastTimeMinutes = IsPastTimeMinutes;
|
|
5
|
+
exports.DateAsString = DateAsString;
|
|
6
|
+
exports.DayString = DayString;
|
|
7
|
+
exports.MILLISECONDS_PER_MINUTE = 60 * 1000;
|
|
8
|
+
const showDateOption = {
|
|
9
|
+
weekday: "short",
|
|
10
|
+
month: "short",
|
|
11
|
+
day: "numeric",
|
|
12
|
+
hour: "numeric",
|
|
13
|
+
minute: "2-digit",
|
|
14
|
+
second: "2-digit",
|
|
15
|
+
hour12: true,
|
|
16
|
+
};
|
|
17
|
+
function IsPastTimeMinutes(minutes, checkTime) {
|
|
18
|
+
const result = Date.now() - checkTime >= minutes * exports.MILLISECONDS_PER_MINUTE;
|
|
19
|
+
return result;
|
|
20
|
+
}
|
|
21
|
+
function DateAsString(time) {
|
|
22
|
+
const date = new Date(time);
|
|
23
|
+
return `${date.toLocaleString('en-US', showDateOption)}`;
|
|
24
|
+
}
|
|
25
|
+
function DayString(time) {
|
|
26
|
+
const date = new Date(time);
|
|
27
|
+
const year = date.getFullYear();
|
|
28
|
+
const month = String(date.getMonth() + 1).padStart(2, '0');
|
|
29
|
+
const day = String(date.getDate()).padStart(2, '0');
|
|
30
|
+
return `${year} ${month} ${day}`;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=time.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time.js","sourceRoot":"","sources":["../../src/core/time.ts"],"names":[],"mappings":";;;AAaA,8CAIC;AAED,oCAIC;AAGD,8BASC;AAnCY,QAAA,uBAAuB,GAAW,EAAE,GAAG,IAAI,CAAC;AAEzD,MAAM,cAAc,GACpB;IACI,OAAO,EAAE,OAAO;IAChB,KAAK,EAAE,OAAO;IACd,GAAG,EAAE,SAAS;IACd,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,IAAI;CACf,CAAA;AAED,SAAgB,iBAAiB,CAAC,OAAe,EAAE,SAAiB;IAEhE,MAAM,MAAM,GAAY,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,IAAI,OAAO,GAAG,+BAAuB,CAAC;IACpF,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,SAAgB,YAAY,CAAC,IAAY;IAErC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,cAAc,CAAC,EAAE,CAAC;AAC7D,CAAC;AAGD,SAAgB,SAAS,CAAC,IAAY;IAElC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IAE5B,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC3D,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAEpD,OAAO,GAAG,IAAI,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC;AACrC,CAAC"}
|
package/dist/misc.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"misc.d.ts","sourceRoot":"","sources":["../src/misc.ts"],"names":[],"mappings":""}
|
package/dist/misc.js
ADDED
package/dist/misc.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"misc.js","sourceRoot":"","sources":["../src/misc.ts"],"names":[],"mappings":""}
|
package/package.json
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@myeiter/mcy-web",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"exports": {
|
|
5
|
+
".": {
|
|
6
|
+
"import": "./dist/core/core.js",
|
|
7
|
+
"require": "./dist/core/core.js",
|
|
8
|
+
"types": "./dist/core/core.d.ts"
|
|
9
|
+
},
|
|
10
|
+
"./app": {
|
|
11
|
+
"import": "./dist/app/app.js",
|
|
12
|
+
"require": "./dist/app/app.js",
|
|
13
|
+
"types": "./dist/app/app.d.ts"
|
|
14
|
+
},
|
|
15
|
+
"./backend": {
|
|
16
|
+
"import": "./dist/backend.js",
|
|
17
|
+
"require": "./dist/backend.js",
|
|
18
|
+
"types": "./dist/backend.d.ts"
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"files": [
|
|
22
|
+
"dist",
|
|
23
|
+
"README.md",
|
|
24
|
+
"LICENSE"
|
|
25
|
+
],
|
|
26
|
+
"main": "dist/core/core.js",
|
|
27
|
+
"types": "dist/core/core.d.ts",
|
|
28
|
+
"scripts": {
|
|
29
|
+
"build": "tsc",
|
|
30
|
+
"prepublishOnly": "npm run build",
|
|
31
|
+
"dev": "vite --config frontend_demo/vite.config.js"
|
|
32
|
+
},
|
|
33
|
+
"repository": {
|
|
34
|
+
"type": "git",
|
|
35
|
+
"url": "git+https://github.com/Aceplace/MCY_Web.git"
|
|
36
|
+
},
|
|
37
|
+
"keywords": [],
|
|
38
|
+
"author": "Michael Yeiter",
|
|
39
|
+
"license": "MIT",
|
|
40
|
+
"bugs": {
|
|
41
|
+
"url": "https://github.com/Aceplace/MCY_Web/issues"
|
|
42
|
+
},
|
|
43
|
+
"homepage": "https://github.com/Aceplace/MCY_Web#readme",
|
|
44
|
+
"description": "",
|
|
45
|
+
"dependencies": {
|
|
46
|
+
"bcrypt": "^6.0.0",
|
|
47
|
+
"cookie-parser": "^1.4.7",
|
|
48
|
+
"cors": "^2.8.5",
|
|
49
|
+
"dotenv": "^17.2.1",
|
|
50
|
+
"express": "^5.1.0",
|
|
51
|
+
"jsonwebtoken": "^9.0.2",
|
|
52
|
+
"mongoose": "^8.17.0",
|
|
53
|
+
"nodemailer": "^7.0.6",
|
|
54
|
+
"ssl-express-www": "^3.2.1"
|
|
55
|
+
},
|
|
56
|
+
"devDependencies": {
|
|
57
|
+
"@types/bcrypt": "^6.0.0",
|
|
58
|
+
"@types/cookie-parser": "^1.4.9",
|
|
59
|
+
"@types/cors": "^2.8.19",
|
|
60
|
+
"@types/express": "^5.0.3",
|
|
61
|
+
"@types/jsonwebtoken": "^9.0.10",
|
|
62
|
+
"@types/node": "^24.2.0",
|
|
63
|
+
"@types/nodemailer": "^7.0.2",
|
|
64
|
+
"ts-node": "^10.9.2",
|
|
65
|
+
"typescript": "^5.9.3",
|
|
66
|
+
"vite": "^7.1.10",
|
|
67
|
+
"vite-plugin-checker": "^0.11.0"
|
|
68
|
+
}
|
|
69
|
+
}
|