@giveback007/util-lib 0.22.7 → 0.24.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/dist/general.d.ts CHANGED
@@ -11,7 +11,7 @@ export declare const interval: (funct: (i: number) => any, ms: number, times?: n
11
11
  };
12
12
  /** A promise that waits `ms` amount of milliseconds to execute */
13
13
  export declare const wait: (ms: number) => Promise<void>;
14
- export declare function unsubAll(objOrArr: AnyObj | any[]): void;
14
+ export declare function unsubAll(objOrArr: AnyObj | any[], unsubName?: string): void;
15
15
  /**
16
16
  * Alternative to console.log in that it will clone the obj.
17
17
  *
@@ -22,6 +22,10 @@ export declare const cloneLog: (x: any) => void;
22
22
  /** An improved version of native `typeof` */
23
23
  export declare function type(val: any): JsType;
24
24
  export declare function assertType<T extends JsType>(val: any, types: T | T[]): asserts val is T;
25
- export declare const uiid: () => string;
25
+ export declare const uuid: () => string;
26
26
  export declare const randomColorHex: () => string;
27
- export declare function debounceTimeOut(): (fct: Function, ms: number) => void;
27
+ export declare function debounceTimeOut(): (fct: Function | 'cancel', ms?: number | undefined) => void;
28
+ export declare function promiseOut<T = any>(): {
29
+ resolve: (value: T) => void;
30
+ promise: Promise<unknown>;
31
+ };
package/dist/general.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.debounceTimeOut = exports.randomColorHex = exports.uiid = exports.assertType = exports.type = exports.cloneLog = exports.unsubAll = exports.wait = exports.interval = void 0;
3
+ exports.promiseOut = exports.debounceTimeOut = exports.randomColorHex = exports.uuid = exports.assertType = exports.type = exports.cloneLog = exports.unsubAll = exports.wait = exports.interval = void 0;
4
4
  const _1 = require(".");
5
5
  /**
6
6
  * @example
@@ -25,14 +25,14 @@ exports.interval = interval;
25
25
  /** A promise that waits `ms` amount of milliseconds to execute */
26
26
  const wait = (ms) => new Promise((res) => setTimeout(() => res(), ms));
27
27
  exports.wait = wait;
28
- const usubAllFunct = (x) => _1.isType(x, 'object')
28
+ const usubAllFunct = (x, unsubName = 'unsubscribe') => _1.isType(x, 'object')
29
29
  &&
30
- _1.hasKey(x, 'unsubscribe') ? x.unsubscribe() : null;
31
- function unsubAll(objOrArr) {
30
+ _1.hasKey(x, unsubName) ? x[unsubName]() : null;
31
+ function unsubAll(objOrArr, unsubName = 'unsubscribe') {
32
32
  if (_1.isType(objOrArr, 'array'))
33
- objOrArr.forEach(x => usubAllFunct(x));
33
+ objOrArr.forEach(x => usubAllFunct(x, unsubName));
34
34
  else if (_1.isType(objOrArr, 'object'))
35
- _1.objMap(objOrArr, ({ val }) => usubAllFunct(val));
35
+ _1.objMap(objOrArr, ({ val }) => usubAllFunct(val, unsubName));
36
36
  else
37
37
  throw Error('argument "objOrArr" must be of type "object" or "array"');
38
38
  }
@@ -73,7 +73,7 @@ function assertType(val, types) {
73
73
  throw Error(`value needs to be of type ${types.join(' || ')}`);
74
74
  }
75
75
  exports.assertType = assertType;
76
- const uiid = () => {
76
+ const uuid = () => {
77
77
  let d = new Date().getTime();
78
78
  let d2 = (performance
79
79
  &&
@@ -94,7 +94,7 @@ const uiid = () => {
94
94
  return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16);
95
95
  });
96
96
  };
97
- exports.uiid = uiid;
97
+ exports.uuid = uuid;
98
98
  const randomColorHex = () => '#' + ((1 << 24) * Math.random() | 0).toString(16);
99
99
  exports.randomColorHex = randomColorHex;
100
100
  // export const jsonp = async <T = any>(
@@ -114,8 +114,15 @@ function debounceTimeOut() {
114
114
  return (fct, ms) => {
115
115
  if (timeoutId)
116
116
  clearTimeout(timeoutId);
117
- timeoutId = setTimeout(fct, ms);
117
+ if (fct !== 'cancel')
118
+ timeoutId = setTimeout(fct, ms || 0);
118
119
  };
119
120
  }
120
121
  exports.debounceTimeOut = debounceTimeOut;
122
+ function promiseOut() {
123
+ let resolve;
124
+ const promise = new Promise((res) => resolve = res);
125
+ return { resolve: resolve, promise };
126
+ }
127
+ exports.promiseOut = promiseOut;
121
128
  //# sourceMappingURL=general.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"general.js","sourceRoot":"","sources":["../src/general.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"general.js","sourceRoot":"","sources":["../src/general.ts"],"names":[],"mappings":"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"}
package/dist/object.d.ts CHANGED
@@ -43,7 +43,7 @@ export declare const objResolve: (o: AnyObj, path: string) => any;
43
43
  export declare const objSortKeys: <T extends {}>(o: T, compareFn?: ((a: keyof T, b: keyof T) => number) | undefined) => T;
44
44
  /**
45
45
  * Takes a dictionary/object made of Promises and Observables and
46
- * extracts all values. This function will initiate every
47
- * Observable/Promise simultaneously.
46
+ * extracts all values. This function will return resolved values from all
47
+ * Observable/Promise on the obj when all promises on object resolve.
48
48
  */
49
49
  export declare function objPromiseAll<T extends Dict<Promise<any>>>(obj: T): Promise<{ [P in keyof T]: ResolvedValue<T[P]>; }>;
package/dist/object.js CHANGED
@@ -74,8 +74,8 @@ const objSortKeys = (o, compareFn) => {
74
74
  exports.objSortKeys = objSortKeys;
75
75
  /**
76
76
  * Takes a dictionary/object made of Promises and Observables and
77
- * extracts all values. This function will initiate every
78
- * Observable/Promise simultaneously.
77
+ * extracts all values. This function will return resolved values from all
78
+ * Observable/Promise on the obj when all promises on object resolve.
79
79
  */
80
80
  function objPromiseAll(obj) {
81
81
  const keyValues = exports.objKeyVals(obj);
package/dist/test.d.ts CHANGED
@@ -1,5 +1,7 @@
1
- import type { JsType } from '.';
1
+ import { JsType } from '.';
2
2
  import { JsTypeFind } from '.';
3
+ /** Check if `x` is equal to any of the values in the array. */
4
+ export declare const equalAny: (x: any, equals: any[]) => boolean;
3
5
  /**
4
6
  * Checks if object has the key, made as a function for type transfer.
5
7
  *
package/dist/test.js CHANGED
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isValidEmail = exports.nonValue = exports.nullOrEmpty = exports.isType = exports.hasKeys = exports.hasKey = void 0;
3
+ exports.isValidEmail = exports.nonValue = exports.nullOrEmpty = exports.isType = exports.hasKeys = exports.hasKey = exports.equalAny = void 0;
4
4
  const _1 = require(".");
5
+ const _2 = require(".");
6
+ /** Check if `x` is equal to any of the values in the array. */
7
+ const equalAny = (x, equals) => !!equals.find((y) => _1.equal(x, y));
8
+ exports.equalAny = equalAny;
5
9
  /**
6
10
  * Checks if object has the key, made as a function for type transfer.
7
11
  *
@@ -34,7 +38,7 @@ exports.hasKeys = hasKeys;
34
38
  * isType(null, 'undefined') //=> false
35
39
  * ```
36
40
  */
37
- const isType = (val, testType) => _1.type(val) === testType;
41
+ const isType = (val, testType) => _2.type(val) === testType;
38
42
  exports.isType = isType;
39
43
  /** any of the values in the first "example" return `true`
40
44
  * @example
@@ -52,7 +56,7 @@ function nullOrEmpty(x) {
52
56
  return !x.length;
53
57
  // object // { key: 'val' } => false, { } => true
54
58
  if (exports.isType(x, 'object'))
55
- return !_1.objVals(x).length;
59
+ return !_2.objVals(x).length;
56
60
  return false;
57
61
  }
58
62
  exports.nullOrEmpty = nullOrEmpty;
package/dist/test.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":";;;AACA,wBAA8C;AAE9C;;;;;;GAMG;AACI,MAAM,MAAM,GAAG,CAEpB,GAAQ,EAAE,GAAM,EAA4B,EAAE,CAC9C,cAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AAHtC,QAAA,MAAM,UAGgC;AAEnD,4FAA4F;AAC5F,SAAgB,OAAO,CAErB,GAAQ,EAAE,IAAS;IACnB,IAAI,CAAC,cAAM,CAAC,GAAG,EAAE,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IAEzC,KAAK,MAAM,GAAG,IAAI,IAAI;QACpB,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;IAE7C,OAAO,IAAI,CAAC;AACd,CAAC;AATD,0BASC;AAED;;;;;;;;;;;;GAYG;AACI,MAAM,MAAM,GAAG,CACpB,GAAQ,EAAE,QAAW,EACC,EAAE,CAAC,OAAI,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC;AAFrC,QAAA,MAAM,UAE+B;AAElD;;;;;;GAMG;AACH,SAAgB,WAAW,CAAC,CAAM;IAEhC,oBAAoB;IACpB,IAAI,gBAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAE7B,iCAAiC;IACjC,IAAI,cAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,cAAM,CAAC,CAAC,EAAE,OAAO,CAAC;QAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;IAEhE,iDAAiD;IACjD,IAAI,cAAM,CAAC,CAAC,EAAE,QAAQ,CAAC;QAAE,OAAO,CAAC,UAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAEnD,OAAO,KAAK,CAAC;AACf,CAAC;AAZD,kCAYC;AAED,mCAAmC;AAC5B,MAAM,QAAQ,GAAG,CAAC,GAAQ,EAA6B,EAAE,CAC9D,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,CAAC;AADvB,QAAA,QAAQ,YACe;AAE7B,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,EAAE,CAC5C,2JAA2J,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAD5J,QAAA,YAAY,gBACgJ"}
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":";;;AAAA,wBAAkC;AAClC,wBAA8C;AAE9C,+DAA+D;AACxD,MAAM,QAAQ,GAAG,CAAC,CAAM,EAAE,MAAa,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAAxE,QAAA,QAAQ,YAAgE;AAErF;;;;;;GAMG;AACI,MAAM,MAAM,GAAG,CAEpB,GAAQ,EAAE,GAAM,EAA4B,EAAE,CAC9C,cAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AAHtC,QAAA,MAAM,UAGgC;AAEnD,4FAA4F;AAC5F,SAAgB,OAAO,CAErB,GAAQ,EAAE,IAAS;IACnB,IAAI,CAAC,cAAM,CAAC,GAAG,EAAE,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IAEzC,KAAK,MAAM,GAAG,IAAI,IAAI;QACpB,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;IAE7C,OAAO,IAAI,CAAC;AACd,CAAC;AATD,0BASC;AAED;;;;;;;;;;;;GAYG;AACI,MAAM,MAAM,GAAG,CACpB,GAAQ,EAAE,QAAW,EACC,EAAE,CAAC,OAAI,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC;AAFrC,QAAA,MAAM,UAE+B;AAElD;;;;;;GAMG;AACH,SAAgB,WAAW,CAAC,CAAM;IAEhC,oBAAoB;IACpB,IAAI,gBAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAE7B,iCAAiC;IACjC,IAAI,cAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,cAAM,CAAC,CAAC,EAAE,OAAO,CAAC;QAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;IAEhE,iDAAiD;IACjD,IAAI,cAAM,CAAC,CAAC,EAAE,QAAQ,CAAC;QAAE,OAAO,CAAC,UAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAEnD,OAAO,KAAK,CAAC;AACf,CAAC;AAZD,kCAYC;AAED,mCAAmC;AAC5B,MAAM,QAAQ,GAAG,CAAC,GAAQ,EAA6B,EAAE,CAC9D,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,CAAC;AADvB,QAAA,QAAQ,YACe;AAE7B,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,EAAE,CAC5C,2JAA2J,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAD5J,QAAA,YAAY,gBACgJ"}
package/dist/time.d.ts CHANGED
@@ -1,5 +1,6 @@
1
- import type { MsTime } from '.';
1
+ import { MsTime } from '.';
2
2
  export declare const msTime: MsTime;
3
+ export declare const weekTuple: readonly ["sun", "mon", "tue", "wed", "thu", "fri", "sat"];
3
4
  /**
4
5
  * Converts Date to time of day.
5
6
  * Good for use in loging.
@@ -54,9 +55,26 @@ export declare const dys: (d: number) => number;
54
55
  export declare const weeks: (w: number) => number;
55
56
  /** Analog of weeks */
56
57
  export declare const wks: (w: number) => number;
57
- /**
58
- * Get unixMs for a given date/time, input time is in UTC
59
- * @example unixMs('2015-01-02') => 1420128000000
58
+ /** Gives the 'start' and 'end' of a day.
59
+ *
60
+ * Start of day is the first ms of the day
61
+ *
62
+ * End of day is the last ms of the day
60
63
  */
61
- export declare const unixMs: (time: string) => number;
64
+ export declare function getDayStartEnd(t: number | Date, type?: 'unix' | 'local'): {
65
+ start: Date;
66
+ end: Date;
67
+ };
68
+ export declare function weekStartEnd(t: number | Date, weekStart?: 'sun' | 'mon', type?: 'unix' | 'local'): {
69
+ start: Date;
70
+ end: Date;
71
+ };
72
+ export declare function monthStartEnd(t: number | Date, type?: 'unix' | 'local'): {
73
+ start: Date;
74
+ end: Date;
75
+ };
76
+ export declare function yearStartEnd(t: number | Date, type?: 'unix' | 'local'): {
77
+ start: Date;
78
+ end: Date;
79
+ };
62
80
  export {};
package/dist/time.js CHANGED
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.unixMs = exports.wks = exports.weeks = exports.dys = exports.days = exports.hrs = exports.hours = exports.min = exports.minutes = exports.sec = exports.seconds = exports.msToTime = exports.msToWks = exports.msToDys = exports.msToHrs = exports.msToMin = exports.msToSec = exports.dateTimeToString = exports.msTime = void 0;
3
+ exports.yearStartEnd = exports.monthStartEnd = exports.weekStartEnd = exports.getDayStartEnd = exports.wks = exports.weeks = exports.dys = exports.days = exports.hrs = exports.hours = exports.min = exports.minutes = exports.sec = exports.seconds = exports.msToTime = exports.msToWks = exports.msToDys = exports.msToHrs = exports.msToMin = exports.msToSec = exports.dateTimeToString = exports.weekTuple = exports.msTime = void 0;
4
+ const _1 = require(".");
4
5
  exports.msTime = {
5
6
  s: 1000,
6
7
  m: 60000,
@@ -8,6 +9,7 @@ exports.msTime = {
8
9
  d: 86400000,
9
10
  w: 604800000,
10
11
  };
12
+ exports.weekTuple = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];
11
13
  /**
12
14
  * Converts Date to time of day.
13
15
  * Good for use in loging.
@@ -80,47 +82,73 @@ const weeks = (w) => w * exports.msTime.w;
80
82
  exports.weeks = weeks;
81
83
  /** Analog of weeks */
82
84
  exports.wks = exports.weeks;
83
- /**
84
- * Get unixMs for a given date/time, input time is in UTC
85
- * @example unixMs('2015-01-02') => 1420128000000
85
+ /** Gives the 'start' and 'end' of a day.
86
+ *
87
+ * Start of day is the first ms of the day
88
+ *
89
+ * End of day is the last ms of the day
86
90
  */
87
- const unixMs = (time) => {
88
- const a = time.split('-').map((n) => parseFloat(n));
89
- return new Date(a[0], a[1], a[2]).getTime();
90
- };
91
- exports.unixMs = unixMs;
92
- // /** Gives the 'start' and 'end' milliseconds of a unix day */
93
- // export const dayStartEnd = (unixMsTime: number) =>
94
- // {
95
- // const t = moment(unixMsTime).utc();
96
- // t.set({ h: 0, m: 0, s: 0, ms: 0 });
97
- // const start = t.valueOf();
98
- // t.set({ h: 23, m: 59, s: 59, ms: 999 });
99
- // const end = t.valueOf();
100
- // return { start, end };
101
- // }
102
- // /** Gives the 'start' and 'end' milliseconds of a unix month */
103
- // export const monthStartEnd = (unixMsTime: number): {
104
- // start: number;
105
- // end: number;
106
- // } =>
107
- // {
108
- // const year = moment(unixMsTime).utc().year();
109
- // const month = ('0' + (moment(unixMsTime).utc().month() + 1)).slice(-2);
110
- // const s = moment(`${year}-${month}-01`).set({ h: 0, m: 0, s: 0, ms: 0 });
111
- // const start = s.valueOf() + min(s.utcOffset());
112
- // const e = moment(`${year}-${month}-31`).set({ h: 23, m: 59, s: 59, ms: 999 });
113
- // const end = e.valueOf() + min(e.utcOffset());
114
- // return { start, end };
115
- // }
116
- // /** Gives the 'start' and 'end' milliseconds of a unix year */
117
- // export const yearStartEnd = (unixMsTime: number) =>
118
- // {
119
- // const year = moment(unixMsTime).utc().year();
120
- // const s = moment(`${year}-01-01`).set({ h: 0, m: 0, s: 0, ms: 0 });
121
- // const start = s.valueOf() + min(s.utcOffset());
122
- // const e = moment(`${year}-12-31`).set({ h: 23, m: 59, s: 59, ms: 999 });
123
- // const end = e.valueOf() + min(e.utcOffset());
124
- // return { start, end };
125
- // }
91
+ function getDayStartEnd(t, type = 'local') {
92
+ if (_1.isType(t, 'number'))
93
+ t = new Date(t);
94
+ const y = t.getFullYear();
95
+ const m = t.getMonth();
96
+ const d = t.getDate();
97
+ let start = new Date(y, m, d);
98
+ let end = new Date(y, m, d, 23, 59, 59, 999);
99
+ if (type === 'unix') {
100
+ const tzOffset = exports.min(start.getTimezoneOffset());
101
+ start = new Date(start.getTime() + tzOffset);
102
+ end = new Date(end.getTime() + tzOffset);
103
+ }
104
+ return { start, end };
105
+ }
106
+ exports.getDayStartEnd = getDayStartEnd;
107
+ function weekStartEnd(t, weekStart = 'sun', type = 'local') {
108
+ if (_1.isType(t, 'number'))
109
+ t = new Date(t);
110
+ const wd = t.getDay();
111
+ const startOffset = wd * -1 + (weekStart === 'mon' ? 1 : 0);
112
+ const endOffset = 6 + startOffset;
113
+ const s = new Date(t.getTime() + exports.days(startOffset));
114
+ const e = new Date(t.getTime() + exports.days(endOffset));
115
+ let start = new Date(s.getFullYear(), s.getMonth(), s.getDate());
116
+ let end = new Date(e.getFullYear(), e.getMonth(), e.getDate(), 23, 59, 59, 999);
117
+ if (type === 'unix') {
118
+ const tzOffset = exports.min(start.getTimezoneOffset());
119
+ start = new Date(start.getTime() + tzOffset);
120
+ end = new Date(end.getTime() + tzOffset);
121
+ }
122
+ return { start, end };
123
+ }
124
+ exports.weekStartEnd = weekStartEnd;
125
+ function monthStartEnd(t, type = 'local') {
126
+ if (_1.isType(t, 'number'))
127
+ t = new Date(t);
128
+ const y = t.getFullYear();
129
+ const m = t.getMonth();
130
+ let start = new Date(y, m, 1);
131
+ let end = new Date(y, m, 0, 23, 59, 59, 999);
132
+ if (type === 'unix') {
133
+ const tzOffset = exports.min(start.getTimezoneOffset());
134
+ start = new Date(start.getTime() + tzOffset);
135
+ end = new Date(end.getTime() + tzOffset);
136
+ }
137
+ return { start, end };
138
+ }
139
+ exports.monthStartEnd = monthStartEnd;
140
+ function yearStartEnd(t, type = 'local') {
141
+ if (_1.isType(t, 'number'))
142
+ t = new Date(t);
143
+ const y = t.getFullYear();
144
+ let start = new Date(y, 0, 1);
145
+ let end = new Date(y, 12, 0, 23, 59, 59, 999);
146
+ if (type === 'unix') {
147
+ const tzOffset = exports.min(start.getTimezoneOffset());
148
+ start = new Date(start.getTime() + tzOffset);
149
+ end = new Date(end.getTime() + tzOffset);
150
+ }
151
+ return { start, end };
152
+ }
153
+ exports.yearStartEnd = yearStartEnd;
126
154
  //# sourceMappingURL=time.js.map
package/dist/time.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"time.js","sourceRoot":"","sources":["../src/time.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"time.js","sourceRoot":"","sources":["../src/time.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@giveback007/util-lib",
3
- "version": "0.22.7",
3
+ "version": "0.24.1",
4
4
  "description": "Small util function library",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/src/general.ts CHANGED
@@ -32,15 +32,16 @@ export const interval = (
32
32
  export const wait = (ms: number): Promise<void> =>
33
33
  new Promise((res) => setTimeout(() => res(), ms));
34
34
 
35
- const usubAllFunct = (x: any) =>
35
+ const usubAllFunct = (x: any, unsubName = 'unsubscribe') =>
36
36
  isType(x, 'object')
37
37
  &&
38
- hasKey(x, 'unsubscribe') ? x.unsubscribe() : null;
39
- export function unsubAll(objOrArr: AnyObj | any[]) {
38
+ hasKey(x, unsubName) ? x[unsubName]() : null;
39
+
40
+ export function unsubAll(objOrArr: AnyObj | any[], unsubName = 'unsubscribe') {
40
41
  if (isType(objOrArr, 'array'))
41
- objOrArr.forEach(x => usubAllFunct(x));
42
+ objOrArr.forEach(x => usubAllFunct(x, unsubName));
42
43
  else if (isType(objOrArr, 'object'))
43
- objMap(objOrArr, ({ val }) => usubAllFunct(val));
44
+ objMap(objOrArr, ({ val }) => usubAllFunct(val, unsubName));
44
45
  else
45
46
  throw Error('argument "objOrArr" must be of type "object" or "array"');
46
47
  }
@@ -77,7 +78,7 @@ export function assertType<T extends JsType>(
77
78
  throw Error(`value needs to be of type ${types.join(' || ')}`)
78
79
  }
79
80
 
80
- export const uiid = () =>
81
+ export const uuid = () =>
81
82
  {
82
83
  let d = new Date().getTime();
83
84
  let d2 = (
@@ -123,8 +124,17 @@ export const randomColorHex = () =>
123
124
 
124
125
  export function debounceTimeOut() {
125
126
  let timeoutId: ReturnType<typeof setTimeout> | null = null;
126
- return (fct: Function, ms: number) => {
127
+
128
+ return (fct: Function | 'cancel', ms?: number) => {
127
129
  if (timeoutId) clearTimeout(timeoutId);
128
- timeoutId = setTimeout(fct, ms) as any;
130
+
131
+ if (fct !== 'cancel')
132
+ timeoutId = setTimeout(fct, ms || 0) as any;
129
133
  }
130
134
  }
135
+
136
+ export function promiseOut<T = any>() {
137
+ let resolve: any;
138
+ const promise = new Promise((res) => resolve = res);
139
+ return { resolve: resolve as (value: T) => void, promise };
140
+ }
package/src/object.ts CHANGED
@@ -103,8 +103,8 @@ export const objSortKeys = <T extends {}>(
103
103
 
104
104
  /**
105
105
  * Takes a dictionary/object made of Promises and Observables and
106
- * extracts all values. This function will initiate every
107
- * Observable/Promise simultaneously.
106
+ * extracts all values. This function will return resolved values from all
107
+ * Observable/Promise on the obj when all promises on object resolve.
108
108
  */
109
109
  export function objPromiseAll<T extends Dict<Promise<any>>>(obj: T) {
110
110
  const keyValues = objKeyVals(obj);
package/src/test.ts CHANGED
@@ -1,6 +1,9 @@
1
- import type { JsType } from '.';
1
+ import { equal, JsType } from '.';
2
2
  import { JsTypeFind, objVals, type } from '.';
3
3
 
4
+ /** Check if `x` is equal to any of the values in the array. */
5
+ export const equalAny = (x: any, equals: any[]) => !!equals.find((y) => equal(x, y));
6
+
4
7
  /**
5
8
  * Checks if object has the key, made as a function for type transfer.
6
9
  *
package/src/time.ts CHANGED
@@ -1,5 +1,4 @@
1
- // import * as moment from 'moment-timezone';
2
- import type { MsTime } from '.';
1
+ import { isType, MsTime } from '.';
3
2
 
4
3
  export const msTime: MsTime = {
5
4
  s: 1000,
@@ -9,6 +8,8 @@ export const msTime: MsTime = {
9
8
  w: 604800000,
10
9
  }
11
10
 
11
+ export const weekTuple = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'] as const;
12
+
12
13
  /**
13
14
  * Converts Date to time of day.
14
15
  * Good for use in loging.
@@ -46,8 +47,7 @@ type timeObj = { d: number; h: number; m: number; s: number; ms: number; }
46
47
  export function msToTime<T extends boolean>(msT: number, toObj?: boolean): string | timeObj;
47
48
  export function msToTime<T extends boolean>(msT: number, toObj: true): timeObj;
48
49
  export function msToTime<T extends boolean>(msT: number, toObj?: false): string;
49
- export function msToTime(msT: number, toObj = false)
50
- {
50
+ export function msToTime(msT: number, toObj = false) {
51
51
  // N - number;
52
52
  const msN = (msT % 1000);
53
53
  let sN = Math.floor(msT / 1000);
@@ -100,58 +100,89 @@ export const weeks = (w: number) => w * msTime.w;
100
100
  /** Analog of weeks */
101
101
  export const wks = weeks;
102
102
 
103
- /**
104
- * Get unixMs for a given date/time, input time is in UTC
105
- * @example unixMs('2015-01-02') => 1420128000000
103
+ /** Gives the 'start' and 'end' of a day.
104
+ *
105
+ * Start of day is the first ms of the day
106
+ *
107
+ * End of day is the last ms of the day
106
108
  */
107
- export const unixMs = (time: string) =>
108
- {
109
- const a = time.split('-').map((n) => parseFloat(n));
110
- return new Date(a[0], a[1], a[2]).getTime();
109
+ export function getDayStartEnd(t: number | Date, type: 'unix' | 'local' = 'local') {
110
+ if (isType(t, 'number')) t = new Date(t);
111
+
112
+ const y = t.getFullYear();
113
+ const m = t.getMonth();
114
+ const d = t.getDate();
115
+
116
+ let start = new Date(y, m, d);
117
+ let end = new Date(y, m, d, 23, 59, 59, 999);
118
+
119
+ if (type === 'unix') {
120
+ const tzOffset = min(start.getTimezoneOffset());
121
+
122
+ start = new Date(start.getTime() + tzOffset);
123
+ end = new Date(end.getTime() + tzOffset);
124
+ }
125
+
126
+ return { start, end };
111
127
  }
112
128
 
113
- // /** Gives the 'start' and 'end' milliseconds of a unix day */
114
- // export const dayStartEnd = (unixMsTime: number) =>
115
- // {
116
- // const t = moment(unixMsTime).utc();
129
+ export function weekStartEnd(t: number | Date, weekStart: 'sun' | 'mon' = 'sun', type: 'unix' | 'local' = 'local') {
130
+ if (isType(t, 'number')) t = new Date(t);
117
131
 
118
- // t.set({ h: 0, m: 0, s: 0, ms: 0 });
119
- // const start = t.valueOf();
132
+ const wd = t.getDay();
120
133
 
121
- // t.set({ h: 23, m: 59, s: 59, ms: 999 });
122
- // const end = t.valueOf();
134
+ const startOffset = wd * -1 + (weekStart === 'mon' ? 1 : 0);
135
+ const endOffset = 6 + startOffset;
123
136
 
124
- // return { start, end };
125
- // }
137
+ const s = new Date(t.getTime() + days(startOffset));
138
+ const e = new Date(t.getTime() + days(endOffset));
126
139
 
127
- // /** Gives the 'start' and 'end' milliseconds of a unix month */
128
- // export const monthStartEnd = (unixMsTime: number): {
129
- // start: number;
130
- // end: number;
131
- // } =>
132
- // {
133
- // const year = moment(unixMsTime).utc().year();
134
- // const month = ('0' + (moment(unixMsTime).utc().month() + 1)).slice(-2);
140
+ let start = new Date(s.getFullYear(), s.getMonth(), s.getDate());
141
+ let end = new Date(e.getFullYear(), e.getMonth(), e.getDate(), 23, 59, 59, 999);
135
142
 
136
- // const s = moment(`${year}-${month}-01`).set({ h: 0, m: 0, s: 0, ms: 0 });
137
- // const start = s.valueOf() + min(s.utcOffset());
143
+ if (type === 'unix') {
144
+ const tzOffset = min(start.getTimezoneOffset());
138
145
 
139
- // const e = moment(`${year}-${month}-31`).set({ h: 23, m: 59, s: 59, ms: 999 });
140
- // const end = e.valueOf() + min(e.utcOffset());
146
+ start = new Date(start.getTime() + tzOffset);
147
+ end = new Date(end.getTime() + tzOffset);
148
+ }
141
149
 
142
- // return { start, end };
143
- // }
150
+ return { start, end };
151
+ }
152
+
153
+ export function monthStartEnd(t: number | Date, type: 'unix' | 'local' = 'local') {
154
+ if (isType(t, 'number')) t = new Date(t);
155
+
156
+ const y = t.getFullYear();
157
+ const m = t.getMonth();
144
158
 
145
- // /** Gives the 'start' and 'end' milliseconds of a unix year */
146
- // export const yearStartEnd = (unixMsTime: number) =>
147
- // {
148
- // const year = moment(unixMsTime).utc().year();
159
+ let start = new Date(y, m, 1);
160
+ let end = new Date(y, m, 0, 23, 59, 59, 999);
149
161
 
150
- // const s = moment(`${year}-01-01`).set({ h: 0, m: 0, s: 0, ms: 0 });
151
- // const start = s.valueOf() + min(s.utcOffset());
162
+ if (type === 'unix') {
163
+ const tzOffset = min(start.getTimezoneOffset());
164
+
165
+ start = new Date(start.getTime() + tzOffset);
166
+ end = new Date(end.getTime() + tzOffset);
167
+ }
168
+
169
+ return { start, end };
170
+ }
152
171
 
153
- // const e = moment(`${year}-12-31`).set({ h: 23, m: 59, s: 59, ms: 999 });
154
- // const end = e.valueOf() + min(e.utcOffset());
172
+ export function yearStartEnd(t: number | Date, type: 'unix' | 'local' = 'local') {
173
+ if (isType(t, 'number')) t = new Date(t);
155
174
 
156
- // return { start, end };
157
- // }
175
+ const y = t.getFullYear();
176
+
177
+ let start = new Date(y, 0, 1);
178
+ let end = new Date(y, 12, 0, 23, 59, 59, 999);
179
+
180
+ if (type === 'unix') {
181
+ const tzOffset = min(start.getTimezoneOffset());
182
+
183
+ start = new Date(start.getTime() + tzOffset);
184
+ end = new Date(end.getTime() + tzOffset);
185
+ }
186
+
187
+ return { start, end };
188
+ }