@qwreey-js/ts-util 1.0.3 → 1.0.5

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 (49) hide show
  1. package/dist/base32.d.ts +16 -0
  2. package/dist/base32.d.ts.map +1 -0
  3. package/dist/base32.js +67 -0
  4. package/dist/base32.js.map +1 -0
  5. package/dist/base64.d.ts +34 -0
  6. package/dist/base64.d.ts.map +1 -0
  7. package/dist/base64.js +81 -0
  8. package/dist/base64.js.map +1 -0
  9. package/dist/cached-getter.d.ts +22 -0
  10. package/dist/cached-getter.d.ts.map +1 -1
  11. package/dist/cached-getter.js +22 -0
  12. package/dist/cached-getter.js.map +1 -1
  13. package/dist/color.d.ts +72 -0
  14. package/dist/color.d.ts.map +1 -0
  15. package/dist/color.js +187 -0
  16. package/dist/color.js.map +1 -0
  17. package/dist/date.d.ts +37 -4
  18. package/dist/date.d.ts.map +1 -1
  19. package/dist/date.js +105 -14
  20. package/dist/date.js.map +1 -1
  21. package/dist/index.d.ts +4 -2
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +4 -2
  24. package/dist/index.js.map +1 -1
  25. package/dist/interval.d.ts +66 -7
  26. package/dist/interval.d.ts.map +1 -1
  27. package/dist/interval.js +123 -16
  28. package/dist/interval.js.map +1 -1
  29. package/dist/mixin.d.ts +45 -0
  30. package/dist/mixin.d.ts.map +1 -1
  31. package/dist/mixin.js +77 -12
  32. package/dist/mixin.js.map +1 -1
  33. package/dist/params-builder.d.ts +31 -0
  34. package/dist/params-builder.d.ts.map +1 -0
  35. package/dist/params-builder.js +40 -0
  36. package/dist/params-builder.js.map +1 -0
  37. package/dist/result.d.ts +13 -0
  38. package/dist/result.d.ts.map +1 -1
  39. package/dist/result.js +10 -0
  40. package/dist/result.js.map +1 -1
  41. package/dist/timeid.d.ts +24 -0
  42. package/dist/timeid.d.ts.map +1 -0
  43. package/dist/timeid.js +62 -0
  44. package/dist/timeid.js.map +1 -0
  45. package/dist/utils.d.ts +81 -0
  46. package/dist/utils.d.ts.map +1 -1
  47. package/dist/utils.js +141 -1
  48. package/dist/utils.js.map +1 -1
  49. package/package.json +3 -2
@@ -1 +1 @@
1
- {"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../src/date.ts"],"names":[],"mappings":"AAKA,yBAAiB,QAAQ,CAAC;IACxB,SAAgB,UAAU,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,CAM/C;IAED,SAAgB,SAAS,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,CAE9C;IAED,SAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAEjD;IACD,SAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAEpD;IACD,SAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAIhD;IACD,SAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAElD;CACF"}
1
+ {"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../src/date.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,yBAAiB,QAAQ,CAAC;IACxB,mCAAmC;IACnC,SAAgB,UAAU,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,CAM/C;IAED,4CAA4C;IAC5C,SAAgB,SAAS,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,CAE9C;IAED,mCAAmC;IACnC,SAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,GAAE,MAAY,GAAG,MAAM,CAExE;IAED,gCAAgC;IAChC,SAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,GAAE,MAAY,GAAG,MAAM,CAEtE;IAED,iCAAiC;IACjC,SAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,GAAE,MAAY,GAAG,MAAM,CAEtE;IAED,8BAA8B;IAC9B,SAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,GAAE,MAAY,GAAG,MAAM,CAEpE;IAED,uCAAuC;IACvC,SAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,GAAE,MAAY,GAAG,MAAM,CAE3E;IAED,oCAAoC;IACpC,SAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,GAAE,MAAY,GAAG,MAAM,CAEzE;IAED,qCAAqC;IACrC,SAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,GAAE,MAAY,GAAG,MAAM,CAEzE;IAED,kCAAkC;IAClC,SAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,GAAE,MAAY,GAAG,MAAM,CAEvE;IAED,0DAA0D;IAC1D,SAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,MAAY,GAAG,IAAI,CAYrE;IAED,8DAA8D;IAC9D,SAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,MAAY,GAAG,IAAI,CAYxE;IAED,gDAAgD;IACzC,MAAM,eAAe,UAQ3B,CAAC;IAEF,iDAAiD;IAC1C,MAAM,oBAAoB,UAQhC,CAAC;IAEF,iDAAiD;IAC1C,MAAM,gBAAgB,UAQ5B,CAAC;IAEF,kDAAkD;IAC3C,MAAM,qBAAqB,UAQjC,CAAC;CACH"}
package/dist/date.js CHANGED
@@ -1,33 +1,124 @@
1
- function zeroPadding(value) {
2
- if (value > 10)
3
- return value.toString();
4
- return "0" + value.toString();
5
- }
1
+ import { zeroPadding } from "./utils.js";
2
+ /**
3
+ * Shared utility functions for Date manipulation.
4
+ * * @remarks
5
+ * **Known Limitations:**
6
+ * - **Two-digit Year Behavior:** Due to native JavaScript `Date` constructor rules, year values between 0 and 99 are interpreted as 1900-1999 (e.g., year 26 becomes 1926).
7
+ * - **Automatic Date Rollover:** Invalid dates (such as month 13 or day 32) do not throw errors. The native `Date` object will silently roll over and recalculate to the next valid date.
8
+ */
6
9
  export var DateUtil;
7
10
  (function (DateUtil) {
11
+ /** Create new date without time */
8
12
  function removeTime(dateTime) {
9
13
  return new Date(dateTime.getFullYear(), dateTime.getMonth(), dateTime.getDate());
10
14
  }
11
15
  DateUtil.removeTime = removeTime;
16
+ /** Create new date without time and days */
12
17
  function removeDay(dateTime) {
13
18
  return new Date(dateTime.getFullYear(), dateTime.getMonth());
14
19
  }
15
20
  DateUtil.removeDay = removeDay;
16
- function formatYYYYMMDD(date) {
17
- return `${date.getFullYear()}-${zeroPadding(date.getMonth() + 1)}-${zeroPadding(date.getDate())}`;
21
+ /** Formats a date to YYYY-MM-DD */
22
+ function formatYYYYMMDD(date, delimit = "-") {
23
+ return `${date.getFullYear()}${delimit}${zeroPadding(date.getMonth() + 1)}${delimit}${zeroPadding(date.getDate())}`;
18
24
  }
19
25
  DateUtil.formatYYYYMMDD = formatYYYYMMDD;
20
- function formatUTCYYYYMMDD(date) {
21
- return `${date.getUTCFullYear()}-${zeroPadding(date.getUTCMonth() + 1)}-${zeroPadding(date.getUTCDate())}`;
26
+ /** Formats a date to YYYY-MM */
27
+ function formatYYYYMM(date, delimit = "-") {
28
+ return `${date.getFullYear()}${delimit}${zeroPadding(date.getMonth() + 1)}`;
29
+ }
30
+ DateUtil.formatYYYYMM = formatYYYYMM;
31
+ /** Formats a date to HH:MM:SS */
32
+ function formatHHMMSS(date, delimit = ":") {
33
+ return `${zeroPadding(date.getHours())}${delimit}${zeroPadding(date.getMinutes())}${delimit}${zeroPadding(date.getSeconds())}`;
34
+ }
35
+ DateUtil.formatHHMMSS = formatHHMMSS;
36
+ /** Formats a date to HH:MM */
37
+ function formatHHMM(date, delimit = ":") {
38
+ return `${zeroPadding(date.getHours())}${delimit}${zeroPadding(date.getMinutes())}`;
39
+ }
40
+ DateUtil.formatHHMM = formatHHMM;
41
+ /** Formats a date to UTC YYYY-MM-DD */
42
+ function formatUTCYYYYMMDD(date, delimit = "-") {
43
+ return `${date.getUTCFullYear()}${delimit}${zeroPadding(date.getUTCMonth() + 1)}${delimit}${zeroPadding(date.getUTCDate())}`;
22
44
  }
23
45
  DateUtil.formatUTCYYYYMMDD = formatUTCYYYYMMDD;
24
- function fromUTCYYYMMDD(str) {
25
- return new Date(`${str.slice(0, 4)}-${str.slice(5, 7)}-${str.slice(8, 10)}T00:00:00.000Z`);
46
+ /** Formats a date to UTC YYYY-MM */
47
+ function formatUTCYYYYMM(date, delimit = "-") {
48
+ return `${date.getUTCFullYear()}${delimit}${zeroPadding(date.getUTCMonth() + 1)}`;
26
49
  }
27
- DateUtil.fromUTCYYYMMDD = fromUTCYYYMMDD;
28
- function formatUTCHHMMSS(date) {
29
- return `${zeroPadding(date.getUTCHours())}:${zeroPadding(date.getUTCMinutes())}:${zeroPadding(date.getUTCSeconds())}`;
50
+ DateUtil.formatUTCYYYYMM = formatUTCYYYYMM;
51
+ /** Formats a date to UTC HH:MM:SS */
52
+ function formatUTCHHMMSS(date, delimit = ":") {
53
+ return `${zeroPadding(date.getUTCHours())}${delimit}${zeroPadding(date.getUTCMinutes())}${delimit}${zeroPadding(date.getUTCSeconds())}`;
30
54
  }
31
55
  DateUtil.formatUTCHHMMSS = formatUTCHHMMSS;
56
+ /** Formats a date to UTC HH:MM */
57
+ function formatUTCHHMM(date, delimit = ":") {
58
+ return `${zeroPadding(date.getUTCHours())}${delimit}${zeroPadding(date.getUTCMinutes())}`;
59
+ }
60
+ DateUtil.formatUTCHHMM = formatUTCHHMM;
61
+ /** Parses a string formatted as YYYY-MM-DD into a Date */
62
+ function fromYYYYMMDD(str, delimit = "-") {
63
+ const [year, month, day] = str.split(delimit).map(Number);
64
+ if (!Number.isInteger(year) ||
65
+ !Number.isInteger(month) ||
66
+ !Number.isInteger(day)) {
67
+ throw Error("format not valid");
68
+ }
69
+ return new Date(year, month - 1, day);
70
+ }
71
+ DateUtil.fromYYYYMMDD = fromYYYYMMDD;
72
+ /** Parses a string formatted as YYYY-MM-DD into a UTC Date */
73
+ function fromUTCYYYYMMDD(str, delimit = "-") {
74
+ const [year, month, day] = str.split(delimit).map(Number);
75
+ if (!Number.isInteger(year) ||
76
+ !Number.isInteger(month) ||
77
+ !Number.isInteger(day)) {
78
+ throw Error("format not valid");
79
+ }
80
+ return new Date(Date.UTC(year, month - 1, day));
81
+ }
82
+ DateUtil.fromUTCYYYYMMDD = fromUTCYYYYMMDD;
83
+ /** Korean full names of the days of the week */
84
+ DateUtil.KoreanWeekNames = [
85
+ "일요일",
86
+ "월요일",
87
+ "화요일",
88
+ "수요일",
89
+ "목요일",
90
+ "금요일",
91
+ "토요일",
92
+ ];
93
+ /** Korean short names of the days of the week */
94
+ DateUtil.KoreanWeekNamesShort = [
95
+ "일",
96
+ "월",
97
+ "화",
98
+ "수",
99
+ "목",
100
+ "금",
101
+ "토",
102
+ ];
103
+ /** English full names of the days of the week */
104
+ DateUtil.EnglishWeekNames = [
105
+ "Sunday",
106
+ "Monday",
107
+ "Tuesday",
108
+ "Wednesday",
109
+ "Thursday",
110
+ "Friday",
111
+ "Saturday",
112
+ ];
113
+ /** English short names of the days of the week */
114
+ DateUtil.EnglishWeekNamesShort = [
115
+ "Sun",
116
+ "Mon",
117
+ "Tue",
118
+ "Wed",
119
+ "Thu",
120
+ "Fri",
121
+ "Sat",
122
+ ];
32
123
  })(DateUtil || (DateUtil = {}));
33
124
  //# sourceMappingURL=date.js.map
package/dist/date.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"date.js","sourceRoot":"","sources":["../src/date.ts"],"names":[],"mappings":"AAAA,SAAS,WAAW,CAAC,KAAa;IAChC,IAAI,KAAK,GAAG,EAAE;QAAE,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;IACxC,OAAO,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;AAChC,CAAC;AAED,MAAM,KAAW,QAAQ,CA2BxB;AA3BD,WAAiB,QAAQ;IACvB,SAAgB,UAAU,CAAC,QAAc;QACvC,OAAO,IAAI,IAAI,CACb,QAAQ,CAAC,WAAW,EAAE,EACtB,QAAQ,CAAC,QAAQ,EAAE,EACnB,QAAQ,CAAC,OAAO,EAAE,CACnB,CAAC;IACJ,CAAC;IANe,mBAAU,aAMzB,CAAA;IAED,SAAgB,SAAS,CAAC,QAAc;QACtC,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC/D,CAAC;IAFe,kBAAS,YAExB,CAAA;IAED,SAAgB,cAAc,CAAC,IAAU;QACvC,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;IACpG,CAAC;IAFe,uBAAc,iBAE7B,CAAA;IACD,SAAgB,iBAAiB,CAAC,IAAU;QAC1C,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC;IAC7G,CAAC;IAFe,0BAAiB,oBAEhC,CAAA;IACD,SAAgB,cAAc,CAAC,GAAW;QACxC,OAAO,IAAI,IAAI,CACb,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAC1E,CAAC;IACJ,CAAC;IAJe,uBAAc,iBAI7B,CAAA;IACD,SAAgB,eAAe,CAAC,IAAU;QACxC,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC;IACxH,CAAC;IAFe,wBAAe,kBAE9B,CAAA;AACH,CAAC,EA3BgB,QAAQ,KAAR,QAAQ,QA2BxB"}
1
+ {"version":3,"file":"date.js","sourceRoot":"","sources":["../src/date.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,11 +1,13 @@
1
1
  export * from "./cached-getter.js";
2
+ export * from "./color.js";
2
3
  export * from "./date.js";
3
4
  export * from "./interval.js";
4
- export * from "./json.js";
5
5
  export * from "./mixin.js";
6
- export * from "./promise.js";
6
+ export * from "./params-builder.js";
7
7
  export * from "./result.js";
8
8
  export * from "./utils.js";
9
+ export * from "./base32.js";
10
+ export * from "./base64.js";
9
11
  import { setLogErr as _setLogErr } from "./libLog.js";
10
12
  export declare namespace UtilLogging {
11
13
  const setLogErr: typeof _setLogErr;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAE3B,OAAO,EAAE,SAAS,IAAI,UAAU,EAAqB,MAAM,aAAa,CAAC;AACzE,yBAAiB,WAAW,CAAC;IACpB,MAAM,SAAS,mBAAa,CAAC;IAC7B,MAAM,MAAM,8BAAU,CAAC;CAC/B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAE5B,OAAO,EAAE,SAAS,IAAI,UAAU,EAAqB,MAAM,aAAa,CAAC;AACzE,yBAAiB,WAAW,CAAC;IACpB,MAAM,SAAS,mBAAa,CAAC;IAC7B,MAAM,MAAM,8BAAU,CAAC;CAC/B"}
package/dist/index.js CHANGED
@@ -1,11 +1,13 @@
1
1
  export * from "./cached-getter.js";
2
+ export * from "./color.js";
2
3
  export * from "./date.js";
3
4
  export * from "./interval.js";
4
- export * from "./json.js";
5
5
  export * from "./mixin.js";
6
- export * from "./promise.js";
6
+ export * from "./params-builder.js";
7
7
  export * from "./result.js";
8
8
  export * from "./utils.js";
9
+ export * from "./base32.js";
10
+ export * from "./base64.js";
9
11
  import { setLogErr as _setLogErr, logErr as _logErr } from "./libLog.js";
10
12
  export var UtilLogging;
11
13
  (function (UtilLogging) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAE3B,OAAO,EAAE,SAAS,IAAI,UAAU,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,aAAa,CAAC;AACzE,MAAM,KAAW,WAAW,CAG3B;AAHD,WAAiB,WAAW;IACb,qBAAS,GAAG,UAAU,CAAC;IACvB,kBAAM,GAAG,OAAO,CAAC;AAChC,CAAC,EAHgB,WAAW,KAAX,WAAW,QAG3B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAE5B,OAAO,EAAE,SAAS,IAAI,UAAU,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,aAAa,CAAC;AACzE,MAAM,KAAW,WAAW,CAG3B;AAHD,WAAiB,WAAW;IACb,qBAAS,GAAG,UAAU,CAAC;IACvB,kBAAM,GAAG,OAAO,CAAC;AAChC,CAAC,EAHgB,WAAW,KAAX,WAAW,QAG3B"}
@@ -1,16 +1,75 @@
1
- export declare class Interval {
1
+ /**
2
+ * Executes a standard, synchronous function repeatedly based on the provided millisecond interval.
3
+ */
4
+ export declare class Interval<T> {
2
5
  private func;
3
6
  private interval;
4
7
  private id?;
5
8
  private running;
6
9
  private name;
7
- constructor(func: () => any, interval: number, name?: string);
10
+ private _result?;
11
+ /**
12
+ * @param func The synchronous function to execute.
13
+ * @param interval The execution interval in milliseconds.
14
+ * @param name Optional name for logging purposes.
15
+ */
16
+ constructor(func: () => T, interval: number, name?: string);
17
+ /**
18
+ * Schedules the function execution using a timeout. Throws an error if the interval is already running.
19
+ */
8
20
  run(): void;
21
+ /**
22
+ * Clears the current timeout and stops the interval.
23
+ */
9
24
  drop(): void;
10
- executeAsync(): Promise<void>;
11
- execute(options?: {
12
- runTimerAfterExecute?: boolean;
13
- runIn?: number;
14
- }): void;
25
+ /**
26
+ * Immediately executes the function. Resets the timeout if it is already running.
27
+ */
28
+ execute(): void;
29
+ /**
30
+ * Immediately executes the function and guarantees that the interval continues running afterward.
31
+ */
32
+ executeThenRun(): void;
33
+ /**
34
+ * Returns the return value of the last executed function.
35
+ */
36
+ get result(): T | undefined;
37
+ }
38
+ /**
39
+ * Executes an asynchronous function repeatedly based on the provided millisecond interval.
40
+ */
41
+ export declare class IntervalAsync<T> {
42
+ private func;
43
+ private interval;
44
+ private id?;
45
+ private running;
46
+ private name;
47
+ private _result?;
48
+ /**
49
+ * @param func The asynchronous function to execute.
50
+ * @param interval The execution interval in milliseconds.
51
+ * @param name Optional name for logging purposes.
52
+ */
53
+ constructor(func: () => Promise<T>, interval: number, name?: string);
54
+ /**
55
+ * Schedules the function execution using a timeout. Throws an error if the interval is already running.
56
+ */
57
+ run(): void;
58
+ /**
59
+ * Clears the current timeout and stops the interval.
60
+ */
61
+ drop(): void;
62
+ /**
63
+ * Immediately executes the function. Resets the timeout if it is already running.
64
+ */
65
+ execute(): Promise<void>;
66
+ /**
67
+ * Immediately executes the function and guarantees that the interval continues running afterward.
68
+ */
69
+ executeThenRun(): Promise<void>;
70
+ /**
71
+ * Returns the Promise of the last executed function.
72
+ */
73
+ get result(): Promise<T> | undefined;
15
74
  }
16
75
  //# sourceMappingURL=interval.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"interval.d.ts","sourceRoot":"","sources":["../src/interval.ts"],"names":[],"mappings":"AAMA,qBAAa,QAAQ;IACnB,OAAO,CAAC,IAAI,CAAY;IACxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,EAAE,CAAC,CAAM;IACjB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,IAAI,CAAS;gBAGnB,IAAI,EAAE,MAAM,GAAG,EACf,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,MAAkB;IAQnB,GAAG;IAgBH,IAAI;IAQE,YAAY;IAWlB,OAAO,CACZ,OAAO,GAAE;QACP,oBAAoB,CAAC,EAAE,OAAO,CAAC;QAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;KACX;CAST"}
1
+ {"version":3,"file":"interval.d.ts","sourceRoot":"","sources":["../src/interval.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,qBAAa,QAAQ,CAAC,CAAC;IACrB,OAAO,CAAC,IAAI,CAAU;IACtB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,EAAE,CAAC,CAAM;IACjB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,OAAO,CAAC,CAAI;IAEpB;;;;OAIG;gBAED,IAAI,EAAE,MAAM,CAAC,EACb,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,MAAkB;IAQ1B;;OAEG;IACI,GAAG;IAkBV;;OAEG;IACI,IAAI;IAQX;;OAEG;IACI,OAAO;IAWd;;OAEG;IACI,cAAc;IAOrB;;OAEG;IACH,IAAW,MAAM,IAAI,CAAC,GAAG,SAAS,CAEjC;CACF;AAED;;GAEG;AACH,qBAAa,aAAa,CAAC,CAAC;IAC1B,OAAO,CAAC,IAAI,CAAmB;IAC/B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,EAAE,CAAC,CAAM;IACjB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,OAAO,CAAC,CAAa;IAE7B;;;;OAIG;gBAED,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACtB,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,MAAkB;IAQ1B;;OAEG;IACI,GAAG;IAkBV;;OAEG;IACI,IAAI;IAQX;;OAEG;IACU,OAAO;IAWpB;;OAEG;IACU,cAAc;IAO3B;;OAEG;IACH,IAAW,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,CAE1C;CACF"}
package/dist/interval.js CHANGED
@@ -1,36 +1,49 @@
1
1
  import { logErr } from "./libLog.js";
2
- // 입력받은 시간을 기준으로 함수를 반복 실행합니다.
3
- // 처음 실행되지는 않습니다. drop 하거나 execute 있습니다
4
- // execute 시 시간은 초기화됩니다 (0 초 부터 다시 카운팅)
5
- // 내부 구현은 setInterval 로 구현됩니다
2
+ /**
3
+ * Executes a standard, synchronous function repeatedly based on the provided millisecond interval.
4
+ */
6
5
  export class Interval {
7
6
  func;
8
7
  interval;
9
8
  id;
10
9
  running;
11
10
  name;
11
+ _result;
12
+ /**
13
+ * @param func The synchronous function to execute.
14
+ * @param interval The execution interval in milliseconds.
15
+ * @param name Optional name for logging purposes.
16
+ */
12
17
  constructor(func, interval, name = "default") {
13
18
  this.func = func;
14
19
  this.interval = interval;
15
20
  this.running = false;
16
21
  this.name = name;
17
22
  }
23
+ /**
24
+ * Schedules the function execution using a timeout. Throws an error if the interval is already running.
25
+ */
18
26
  run() {
19
27
  if (this.running) {
20
28
  throw Error("interval already started");
21
29
  }
22
30
  this.running = true;
23
- this.id = setTimeout(async () => {
31
+ const currId = (this.id = setTimeout(() => {
24
32
  try {
25
- await (this.func() ?? null);
33
+ this._result = this.func();
26
34
  }
27
35
  catch (e) {
28
36
  logErr(`interval failed(${this.name}): ${e}`);
29
37
  }
30
- this.running = false;
31
- this.run();
32
- }, this.interval);
38
+ if (currId == this.id) {
39
+ this.running = false;
40
+ this.run();
41
+ }
42
+ }, this.interval));
33
43
  }
44
+ /**
45
+ * Clears the current timeout and stops the interval.
46
+ */
34
47
  drop() {
35
48
  this.running = false;
36
49
  if (this.id) {
@@ -38,12 +51,15 @@ export class Interval {
38
51
  delete this.id;
39
52
  }
40
53
  }
41
- async executeAsync() {
54
+ /**
55
+ * Immediately executes the function. Resets the timeout if it is already running.
56
+ */
57
+ execute() {
42
58
  const running = this.running;
43
59
  if (running)
44
60
  this.drop();
45
61
  try {
46
- await (this.func() ?? null);
62
+ this._result = this.func();
47
63
  }
48
64
  catch (e) {
49
65
  logErr(`interval failed(${this.name}): ${e}`);
@@ -51,13 +67,104 @@ export class Interval {
51
67
  if (running)
52
68
  this.run();
53
69
  }
54
- execute(options = {}) {
55
- setTimeout(async () => {
56
- await this.executeAsync();
57
- if (options.runTimerAfterExecute && !this.running) {
70
+ /**
71
+ * Immediately executes the function and guarantees that the interval continues running afterward.
72
+ */
73
+ executeThenRun() {
74
+ this.execute();
75
+ if (!this.running) {
76
+ this.run();
77
+ }
78
+ }
79
+ /**
80
+ * Returns the return value of the last executed function.
81
+ */
82
+ get result() {
83
+ return this._result;
84
+ }
85
+ }
86
+ /**
87
+ * Executes an asynchronous function repeatedly based on the provided millisecond interval.
88
+ */
89
+ export class IntervalAsync {
90
+ func;
91
+ interval;
92
+ id;
93
+ running;
94
+ name;
95
+ _result;
96
+ /**
97
+ * @param func The asynchronous function to execute.
98
+ * @param interval The execution interval in milliseconds.
99
+ * @param name Optional name for logging purposes.
100
+ */
101
+ constructor(func, interval, name = "default") {
102
+ this.func = func;
103
+ this.interval = interval;
104
+ this.running = false;
105
+ this.name = name;
106
+ }
107
+ /**
108
+ * Schedules the function execution using a timeout. Throws an error if the interval is already running.
109
+ */
110
+ run() {
111
+ if (this.running) {
112
+ throw Error("interval already started");
113
+ }
114
+ this.running = true;
115
+ const currId = (this.id = setTimeout(async () => {
116
+ try {
117
+ await (this._result = this.func());
118
+ }
119
+ catch (e) {
120
+ logErr(`interval failed(${this.name}): ${e}`);
121
+ }
122
+ if (currId == this.id) {
123
+ this.running = false;
58
124
  this.run();
59
125
  }
60
- }, options.runIn ?? 0);
126
+ }, this.interval));
127
+ }
128
+ /**
129
+ * Clears the current timeout and stops the interval.
130
+ */
131
+ drop() {
132
+ this.running = false;
133
+ if (this.id) {
134
+ clearTimeout(this.id);
135
+ delete this.id;
136
+ }
137
+ }
138
+ /**
139
+ * Immediately executes the function. Resets the timeout if it is already running.
140
+ */
141
+ async execute() {
142
+ const running = this.running;
143
+ if (running)
144
+ this.drop();
145
+ try {
146
+ await (this._result = this.func());
147
+ }
148
+ catch (e) {
149
+ logErr(`interval failed(${this.name}): ${e}`);
150
+ }
151
+ if (running)
152
+ this.run();
153
+ }
154
+ /**
155
+ * Immediately executes the function and guarantees that the interval continues running afterward.
156
+ */
157
+ async executeThenRun() {
158
+ await this.execute();
159
+ if (!this.running) {
160
+ this.run();
161
+ }
162
+ }
163
+ /**
164
+ * Returns the Promise of the last executed function.
165
+ */
166
+ get result() {
167
+ return this._result;
61
168
  }
62
169
  }
63
170
  //# sourceMappingURL=interval.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"interval.js","sourceRoot":"","sources":["../src/interval.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,8BAA8B;AAC9B,2CAA2C;AAC3C,uCAAuC;AACvC,6BAA6B;AAC7B,MAAM,OAAO,QAAQ;IACX,IAAI,CAAY;IAChB,QAAQ,CAAS;IACjB,EAAE,CAAO;IACT,OAAO,CAAU;IACjB,IAAI,CAAS;IAErB,YACE,IAAe,EACf,QAAgB,EAChB,OAAe,SAAS;QAExB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAEM,GAAG;QACR,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC1C,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,EAAE,GAAG,UAAU,CAAC,KAAK,IAAI,EAAE;YAC9B,IAAI,CAAC;gBACH,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;YAC9B,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,CAAC,mBAAmB,IAAI,CAAC,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC;YAChD,CAAC;YACD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,GAAG,EAAE,CAAC;QACb,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAQ,CAAC;IAC3B,CAAC;IAEM,IAAI;QACT,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACZ,YAAY,CAAC,IAAI,CAAC,EAAS,CAAC,CAAC;YAC7B,OAAO,IAAI,CAAC,EAAE,CAAC;QACjB,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,YAAY;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,IAAI,OAAO;YAAE,IAAI,CAAC,IAAI,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,CAAC,mBAAmB,IAAI,CAAC,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC;QAChD,CAAC;QACD,IAAI,OAAO;YAAE,IAAI,CAAC,GAAG,EAAE,CAAC;IAC1B,CAAC;IAEM,OAAO,CACZ,UAGI,EAAE;QAEN,UAAU,CAAC,KAAK,IAAI,EAAE;YACpB,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YAC1B,IAAI,OAAO,CAAC,oBAAoB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClD,IAAI,CAAC,GAAG,EAAE,CAAC;YACb,CAAC;QACH,CAAC,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;IACzB,CAAC;CACF"}
1
+ {"version":3,"file":"interval.js","sourceRoot":"","sources":["../src/interval.ts"],"names":[],"mappings":"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"}
package/dist/mixin.d.ts CHANGED
@@ -1,18 +1,63 @@
1
1
  import type { UnionToIntersection } from "./utils.js";
2
+ /**
3
+ * Represents a generic constructor function, capable of accepting both concrete and abstract classes.
4
+ */
2
5
  export type AbstractConstructor<T = any> = abstract new (...args: any[]) => T;
6
+ /**
7
+ * A utility type that combines two constructor types `A` and `B`.
8
+ * Returns a new constructor type intersecting instances and static properties.
9
+ */
3
10
  export type MixinBoth<A extends AbstractConstructor<InstanceType<A>>, B extends AbstractConstructor<InstanceType<B>>> = (A & B) & AbstractConstructor<InstanceType<A> & InstanceType<B>>;
11
+ /**
12
+ * A recursive utility type that combines an array of constructor types `T` into a single constructor type.
13
+ */
4
14
  export type Mixin<T extends AbstractConstructor[]> = T extends [
5
15
  infer First extends AbstractConstructor
6
16
  ] ? First : T extends [
7
17
  ...infer Others extends AbstractConstructor[],
8
18
  infer Last extends AbstractConstructor
9
19
  ] ? MixinBoth<Mixin<Others>, Last> : never;
20
+ /**
21
+ * Copies prototype methods and static properties from a list of base classes directly onto a target class.
22
+ * @param targetClass The class to which the mixins will be applied.
23
+ * @param baseClassList An array of base classes to mix into the `targetClass`.
24
+ */
10
25
  export declare function applyRuntimeMixins(targetClass: any, baseClassList: any[]): void;
26
+ export declare function isNonNullObject(instance: any): instance is object;
27
+ /**
28
+ * Checks whether the given instance incorporates a specific mixin or base class.
29
+ * This utility serves as an alternative to the native `instanceof` operator for custom
30
+ * mixin implementations where the prototype chain does not inherently preserve the relationship.
31
+ *
32
+ * @template T - The constructor type of the target mixin or base class.
33
+ * @param {T} baseClass - The mixin or base class constructor to verify against.
34
+ * @param {*} instance - The object instance to inspect.
35
+ * @returns {instance is T} `true` if the instance incorporates the specified mixin; otherwise, `false`.
36
+ */
37
+ export declare function hasMixin<T extends AbstractConstructor>(baseClass: T, instance: any): instance is T;
38
+ /**
39
+ * Retrieves the sequence of mixins associated with the specified instance.
40
+ *
41
+ * @param {*} instance - The object instance to inspect.
42
+ * @returns {ReadonlyArray<AbstractConstructor> | undefined} A read-only array of mixin constructors applied to the instance, or `undefined` if no mixins are registered.
43
+ */
44
+ export declare function getMixins(instance: any): ReadonlyArray<AbstractConstructor> | undefined;
45
+ /**
46
+ * Creates an anonymous target class, applies the `baseClassList` to it, and returns the constructed mixin class.
47
+ * @param baseClassList A list of base classes you want to compose.
48
+ * @returns A new class constructor containing all instance and static properties of the base classes.
49
+ */
11
50
  export declare function mixin<T extends AbstractConstructor[]>(...baseClassList: T): Mixin<T>;
51
+ /**
52
+ * Represents an array of tuples where the first element is a condition and the second is a constructor.
53
+ */
12
54
  export type MixinApplyList = [
13
55
  boolean | undefined | null,
14
56
  AbstractConstructor
15
57
  ][];
58
+ /**
59
+ * Computes an intersection of instance types from a `MixinApplyList` where the condition is strictly true.
60
+ */
16
61
  export type MixinInstance<Apply extends MixinApplyList> = UnionToIntersection<{
17
62
  [K in keyof Apply]: Apply[K][0] extends true ? InstanceType<Apply[K][1]> : object;
18
63
  }[number]>;
@@ -1 +1 @@
1
- {"version":3,"file":"mixin.d.ts","sourceRoot":"","sources":["../src/mixin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,MAAM,MAAM,mBAAmB,CAAC,CAAC,GAAG,GAAG,IAAI,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAE9E,MAAM,MAAM,SAAS,CACnB,CAAC,SAAS,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAC9C,CAAC,SAAS,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAC5C,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAErE,MAAM,MAAM,KAAK,CAAC,CAAC,SAAS,mBAAmB,EAAE,IAAI,CAAC,SAAS;IAC7D,MAAM,KAAK,SAAS,mBAAmB;CACxC,GACG,KAAK,GACL,CAAC,SAAS;IACN,GAAG,MAAM,MAAM,SAAS,mBAAmB,EAAE;IAC7C,MAAM,IAAI,SAAS,mBAAmB;CACvC,GACD,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,GAC9B,KAAK,CAAC;AAEZ,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,QAwBxE;AAED,wBAAgB,KAAK,CAAC,CAAC,SAAS,mBAAmB,EAAE,EACnD,GAAG,aAAa,EAAE,CAAC,GAClB,KAAK,CAAC,CAAC,CAAC,CAIV;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,GAAG,SAAS,GAAG,IAAI;IAC1B,mBAAmB;CACpB,EAAE,CAAC;AAEJ,MAAM,MAAM,aAAa,CAAC,KAAK,SAAS,cAAc,IAAI,mBAAmB,CAC3E;KACG,CAAC,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,GACxC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACzB,MAAM;CACX,CAAC,MAAM,CAAC,CACV,CAAC"}
1
+ {"version":3,"file":"mixin.d.ts","sourceRoot":"","sources":["../src/mixin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD;;GAEG;AACH,MAAM,MAAM,mBAAmB,CAAC,CAAC,GAAG,GAAG,IAAI,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAE9E;;;GAGG;AACH,MAAM,MAAM,SAAS,CACnB,CAAC,SAAS,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAC9C,CAAC,SAAS,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAC5C,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAErE;;GAEG;AACH,MAAM,MAAM,KAAK,CAAC,CAAC,SAAS,mBAAmB,EAAE,IAAI,CAAC,SAAS;IAC7D,MAAM,KAAK,SAAS,mBAAmB;CACxC,GACG,KAAK,GACL,CAAC,SAAS;IACN,GAAG,MAAM,MAAM,SAAS,mBAAmB,EAAE;IAC7C,MAAM,IAAI,SAAS,mBAAmB;CACvC,GACD,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,GAC9B,KAAK,CAAC;AAEZ;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,QAsCxE;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,GAAG,GAAG,QAAQ,IAAI,MAAM,CAIjE;AAED;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,mBAAmB,EACpD,SAAS,EAAE,CAAC,EACZ,QAAQ,EAAE,GAAG,GACZ,QAAQ,IAAI,CAAC,CAIf;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CACvB,QAAQ,EAAE,GAAG,GACZ,aAAa,CAAC,mBAAmB,CAAC,GAAG,SAAS,CAWhD;AAED;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,CAAC,SAAS,mBAAmB,EAAE,EACnD,GAAG,aAAa,EAAE,CAAC,GAClB,KAAK,CAAC,CAAC,CAAC,CAMV;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,GAAG,SAAS,GAAG,IAAI;IAC1B,mBAAmB;CACpB,EAAE,CAAC;AAEJ;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,KAAK,SAAS,cAAc,IAAI,mBAAmB,CAC3E;KACG,CAAC,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,GACxC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACzB,MAAM;CACX,CAAC,MAAM,CAAC,CACV,CAAC"}