@daaler/jutils 0.3.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 (71) hide show
  1. package/LICENSE.txt +3 -0
  2. package/dist/browser.d.ts +22 -0
  3. package/dist/browser.js +23 -0
  4. package/dist/browser.js.map +1 -0
  5. package/dist/exception.d.ts +22 -0
  6. package/dist/exception.js +33 -0
  7. package/dist/exception.js.map +1 -0
  8. package/dist/exceptions.d.ts +6 -0
  9. package/dist/exceptions.js +23 -0
  10. package/dist/exceptions.js.map +1 -0
  11. package/dist/id-based-cache.d.ts +14 -0
  12. package/dist/id-based-cache.js +24 -0
  13. package/dist/id-based-cache.js.map +1 -0
  14. package/dist/id-based-lru-cache.d.ts +19 -0
  15. package/dist/id-based-lru-cache.js +49 -0
  16. package/dist/id-based-lru-cache.js.map +1 -0
  17. package/dist/index.d.ts +23 -0
  18. package/dist/index.js +24 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/integer.d.ts +5 -0
  21. package/dist/integer.js +8 -0
  22. package/dist/integer.js.map +1 -0
  23. package/dist/interrupt.d.ts +2 -0
  24. package/dist/interrupt.js +8 -0
  25. package/dist/interrupt.js.map +1 -0
  26. package/dist/jdebug.d.ts +7 -0
  27. package/dist/jdebug.js +6 -0
  28. package/dist/jdebug.js.map +1 -0
  29. package/dist/jschema.d.ts +6 -0
  30. package/dist/jschema.js +80 -0
  31. package/dist/jschema.js.map +1 -0
  32. package/dist/match-exceptions.d.ts +2 -0
  33. package/dist/match-exceptions.js +43 -0
  34. package/dist/match-exceptions.js.map +1 -0
  35. package/dist/max-date.d.ts +2 -0
  36. package/dist/max-date.js +3 -0
  37. package/dist/max-date.js.map +1 -0
  38. package/dist/noop.d.ts +4 -0
  39. package/dist/noop.js +5 -0
  40. package/dist/noop.js.map +1 -0
  41. package/dist/not-implemented.d.ts +5 -0
  42. package/dist/not-implemented.js +8 -0
  43. package/dist/not-implemented.js.map +1 -0
  44. package/dist/notifications.d.ts +16 -0
  45. package/dist/notifications.js +27 -0
  46. package/dist/notifications.js.map +1 -0
  47. package/dist/randomInteger.d.ts +2 -0
  48. package/dist/randomInteger.js +8 -0
  49. package/dist/randomInteger.js.map +1 -0
  50. package/dist/timedifference.d.ts +2 -0
  51. package/dist/timedifference.js +3 -0
  52. package/dist/timedifference.js.map +1 -0
  53. package/dist/timefromnow.d.ts +2 -0
  54. package/dist/timefromnow.js +3 -0
  55. package/dist/timefromnow.js.map +1 -0
  56. package/dist/timefromx.d.ts +2 -0
  57. package/dist/timefromx.js +3 -0
  58. package/dist/timefromx.js.map +1 -0
  59. package/dist/uuid.d.ts +5 -0
  60. package/dist/uuid.js +10 -0
  61. package/dist/uuid.js.map +1 -0
  62. package/dist/wait.d.ts +2 -0
  63. package/dist/wait.js +3 -0
  64. package/dist/wait.js.map +1 -0
  65. package/dist/weak-value-cache.d.ts +10 -0
  66. package/dist/weak-value-cache.js +24 -0
  67. package/dist/weak-value-cache.js.map +1 -0
  68. package/dist/zero-date.d.ts +2 -0
  69. package/dist/zero-date.js +3 -0
  70. package/dist/zero-date.js.map +1 -0
  71. package/package.json +19 -0
package/LICENSE.txt ADDED
@@ -0,0 +1,3 @@
1
+ Copyright (C) 2023 Jarno Parviainen - All Rights Reserved
2
+ Unauthorized copying of this source code is prohibited
3
+ Created by Jarno Parviainen <jarno.parviainen@gmail.com>
@@ -0,0 +1,22 @@
1
+ import interrupt from "./interrupt.js";
2
+ import wait from "./wait.js";
3
+ import timedifference from "./timedifference.js";
4
+ import timefromnow from "./timefromnow.js";
5
+ import timefromx from "./timefromx.js";
6
+ import zeroDate from "./zero-date.js";
7
+ import maxDate from "./max-date.js";
8
+ import UUID from "./uuid.js";
9
+ import Integer from "./integer.js";
10
+ import JSchema from "./jschema.js";
11
+ import jdebug from "./jdebug.js";
12
+ import WeakValueCache from "./weak-value-cache.js";
13
+ import IdBasedLRUCache from "./id-based-lru-cache.js";
14
+ import IdBasedCache from "./id-based-cache.js";
15
+ import Notifications from "./notifications.js";
16
+ import { noop, noopn, pass } from "./noop.js";
17
+ import Exception from "./exception.js";
18
+ import matchExceptions from "./match-exceptions.js";
19
+ import { registerException, getException, getExceptionNoError } from "./exceptions.js";
20
+ import NotImplementedError, { notImplemented } from "./not-implemented.js";
21
+ export { interrupt, wait, timedifference, timefromnow, timefromx, zeroDate as zeroTime, // legacy naming
22
+ zeroDate, maxDate, JSchema, UUID, Integer, jdebug, WeakValueCache, IdBasedLRUCache, IdBasedCache, Notifications, noop, noopn, pass, Exception, matchExceptions, registerException, getException, getExceptionNoError, NotImplementedError, notImplemented, };
@@ -0,0 +1,23 @@
1
+ import interrupt from "./interrupt.js";
2
+ import wait from "./wait.js";
3
+ import timedifference from "./timedifference.js";
4
+ import timefromnow from "./timefromnow.js";
5
+ import timefromx from "./timefromx.js";
6
+ import zeroDate from "./zero-date.js";
7
+ import maxDate from "./max-date.js";
8
+ import UUID from "./uuid.js";
9
+ import Integer from "./integer.js";
10
+ import JSchema from "./jschema.js";
11
+ import jdebug from "./jdebug.js";
12
+ import WeakValueCache from "./weak-value-cache.js";
13
+ import IdBasedLRUCache from "./id-based-lru-cache.js";
14
+ import IdBasedCache from "./id-based-cache.js";
15
+ import Notifications from "./notifications.js";
16
+ import { noop, noopn, pass } from "./noop.js";
17
+ import Exception from "./exception.js";
18
+ import matchExceptions from "./match-exceptions.js";
19
+ import { registerException, getException, getExceptionNoError } from "./exceptions.js";
20
+ import NotImplementedError, { notImplemented } from "./not-implemented.js";
21
+ export { interrupt, wait, timedifference, timefromnow, timefromx, zeroDate as zeroTime, // legacy naming
22
+ zeroDate, maxDate, JSchema, UUID, Integer, jdebug, WeakValueCache, IdBasedLRUCache, IdBasedCache, Notifications, noop, noopn, pass, Exception, matchExceptions, registerException, getException, getExceptionNoError, NotImplementedError, notImplemented, };
23
+ //# sourceMappingURL=browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,gBAAgB,CAAC;AACvC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,cAAc,MAAM,qBAAqB,CAAC;AACjD,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAC3C,OAAO,SAAS,MAAM,gBAAgB,CAAC;AACvC,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,OAAO,MAAM,eAAe,CAAC;AACpC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,cAAc,MAAM,uBAAuB,CAAC;AACnD,OAAO,eAAe,MAAM,yBAAyB,CAAC;AACtD,OAAO,YAAY,MAAM,qBAAqB,CAAC;AAC/C,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAC,KAAK,EAAC,IAAI,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,SAAS,MAAM,gBAAgB,CAAC;AACvC,OAAO,eAAe,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAC,YAAY,EAAC,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACrF,OAAO,mBAAmB,EAAC,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG1E,OAAO,EACN,SAAS,EACT,IAAI,EACJ,cAAc,EACd,WAAW,EACX,SAAS,EACT,QAAQ,IAAI,QAAQ,EAAE,gBAAgB;AACtC,QAAQ,EACR,OAAO,EACP,OAAO,EACP,IAAI,EACJ,OAAO,EACP,MAAM,EACN,cAAc,EACd,eAAe,EACf,YAAY,EACZ,aAAa,EACb,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,SAAS,EACT,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,GACd,CAAC"}
@@ -0,0 +1,22 @@
1
+ type ExceptionOptions = {
2
+ [key: string]: any;
3
+ };
4
+ declare class Exception {
5
+ static typeId: string;
6
+ cause: string;
7
+ info: string;
8
+ message: string;
9
+ options: ExceptionOptions;
10
+ httpStatus?: number;
11
+ constructor(info?: string, options?: ExceptionOptions);
12
+ get typeId(): any;
13
+ get _object(): {
14
+ typeId: any;
15
+ cause: string;
16
+ info: string;
17
+ message: string;
18
+ options: ExceptionOptions;
19
+ };
20
+ toString(): string;
21
+ }
22
+ export default Exception;
@@ -0,0 +1,33 @@
1
+ class Exception {
2
+ static typeId = "c705330e-e8fc-4414-bc5e-0bb86d57296d";
3
+ cause = "Exception";
4
+ info;
5
+ message;
6
+ options;
7
+ httpStatus;
8
+ constructor(info = "", options = {}) {
9
+ this.info = info;
10
+ this.message = info ? `${this.cause}: ${info}` : this.cause;
11
+ this.options = options;
12
+ }
13
+ ;
14
+ // @ts-ignore
15
+ get typeId() { return this.constructor.typeId; }
16
+ get _object() {
17
+ const _object = {
18
+ // @ts-ignore
19
+ typeId: this.constructor.typeId,
20
+ cause: this.cause,
21
+ info: this.info,
22
+ message: this.message,
23
+ options: this.options,
24
+ };
25
+ return _object;
26
+ }
27
+ toString() {
28
+ return this.message;
29
+ }
30
+ }
31
+ ;
32
+ export default Exception;
33
+ //# sourceMappingURL=exception.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exception.js","sourceRoot":"","sources":["../src/exception.ts"],"names":[],"mappings":"AAGA,MAAM,SAAS;IACd,MAAM,CAAC,MAAM,GAAG,sCAAsC,CAAC;IACvD,KAAK,GAAG,WAAW,CAAC;IACpB,IAAI,CAAQ;IACZ,OAAO,CAAQ;IACf,OAAO,CAAkB;IACzB,UAAU,CAAS;IAEnB,YAAY,OAAY,EAAE,EAAC,UAAyB,EAAE;QACrD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QAC5D,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACxB,CAAC;IAAA,CAAC;IAEF,aAAa;IACb,IAAI,MAAM,KAAI,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAA,CAAA,CAAC;IAE7C,IAAI,OAAO;QACV,MAAM,OAAO,GAAG;YACf,aAAa;YACb,MAAM,EAAG,IAAI,CAAC,WAAW,CAAC,MAAM;YAChC,KAAK,EAAG,IAAI,CAAC,KAAK;YAClB,IAAI,EAAG,IAAI,CAAC,IAAI;YAChB,OAAO,EAAG,IAAI,CAAC,OAAO;YACtB,OAAO,EAAG,IAAI,CAAC,OAAO;SACtB,CAAC;QACF,OAAO,OAAO,CAAC;IAChB,CAAC;IAED,QAAQ;QACP,OAAO,IAAI,CAAC,OAAO,CAAC;IACrB,CAAC;;AACD,CAAC;AAIF,eAAe,SAAS,CAAC"}
@@ -0,0 +1,6 @@
1
+ import Exception from "./exception.js";
2
+ type ExceptionClass = typeof Exception;
3
+ declare const registerException: (_Exception: ExceptionClass) => void;
4
+ declare const getException: (typeId: string) => typeof Exception;
5
+ declare const getExceptionNoError: (typeId: string) => typeof Exception;
6
+ export { registerException, getException, getExceptionNoError };
@@ -0,0 +1,23 @@
1
+ import Exception from "./exception.js";
2
+ const exceptions = {
3
+ [Exception.typeId]: Exception,
4
+ };
5
+ const registerException = (_Exception) => {
6
+ const typeId = _Exception.typeId;
7
+ if (exceptions[typeId]) {
8
+ if (exceptions[typeId] === _Exception)
9
+ return;
10
+ throw new Error("TypeId conflict, exception is already registered with that typeId");
11
+ }
12
+ exceptions[typeId] = _Exception;
13
+ };
14
+ const getException = (typeId) => {
15
+ if (!exceptions[typeId])
16
+ throw new Error("No exception registered with that typeId");
17
+ return exceptions[typeId];
18
+ };
19
+ const getExceptionNoError = (typeId) => {
20
+ return exceptions[typeId];
21
+ };
22
+ export { registerException, getException, getExceptionNoError };
23
+ //# sourceMappingURL=exceptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exceptions.js","sourceRoot":"","sources":["../src/exceptions.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,gBAAgB,CAAC;AASvC,MAAM,UAAU,GAAsC;IACrD,CAAC,SAAS,CAAC,MAAM,CAAC,EAAG,SAAS;CAC9B,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,UAAyB,EAAE,EAAE;IACvD,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IACjC,IAAG,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACvB,IAAG,UAAU,CAAC,MAAM,CAAC,KAAK,UAAU;YAAE,OAAO;QAC7C,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;IACtF,CAAC;IACD,UAAU,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC;AACjC,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,MAAa,EAAE,EAAE;IACtC,IAAG,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IACpF,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;AAC3B,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAAC,MAAa,EAAE,EAAE;IAC7C,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;AAC3B,CAAC,CAAC;AAIF,OAAO,EAAE,iBAAiB,EAAC,YAAY,EAAC,mBAAmB,EAAE,CAAC"}
@@ -0,0 +1,14 @@
1
+ type item = {
2
+ _id: string;
3
+ [key: string]: any;
4
+ };
5
+ declare class IdBasedCache<T extends item> {
6
+ _cache: Map<string, WeakRef<T>>;
7
+ _finalizationRegistry: FinalizationRegistry<string>;
8
+ constructor();
9
+ retrieve: (_id: string) => T;
10
+ cache: (item: T) => void;
11
+ clear: () => void;
12
+ _reclaim: (_id: string) => void;
13
+ }
14
+ export default IdBasedCache;
@@ -0,0 +1,24 @@
1
+ class IdBasedCache {
2
+ _cache; // weak references
3
+ _finalizationRegistry; // not sure what "item" actually should be
4
+ constructor() {
5
+ this._cache = new Map();
6
+ this._finalizationRegistry = new FinalizationRegistry(this._reclaim);
7
+ }
8
+ retrieve = (_id) => {
9
+ const value = this._cache.get(_id)?.deref();
10
+ return value;
11
+ };
12
+ cache = (item) => {
13
+ this._cache.set(item._id, new WeakRef(item));
14
+ this._finalizationRegistry.register(item, item._id);
15
+ };
16
+ clear = () => {
17
+ this._cache.clear();
18
+ };
19
+ _reclaim = (_id) => {
20
+ this._cache.delete(_id);
21
+ };
22
+ }
23
+ export default IdBasedCache;
24
+ //# sourceMappingURL=id-based-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"id-based-cache.js","sourceRoot":"","sources":["../src/id-based-cache.ts"],"names":[],"mappings":"AAMA,MAAM,YAAY;IACjB,MAAM,CAAwB,CAAC,kBAAkB;IACjD,qBAAqB,CAA8B,CAAC,0CAA0C;IAE9F;QACC,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC,qBAAqB,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtE,CAAC;IAED,QAAQ,GAAG,CAAC,GAAU,EAAE,EAAE;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC;QAC5C,OAAO,KAAK,CAAC;IACd,CAAC,CAAC;IAEF,KAAK,GAAG,CAAC,IAAM,EAAE,EAAE;QAClB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5C,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,IAAI,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpD,CAAC,CAAA;IAED,KAAK,GAAG,GAAG,EAAE;QACZ,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC,CAAC;IAEF,QAAQ,GAAG,CAAC,GAAU,EAAE,EAAE;QACzB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC,CAAC;CACF;AAID,eAAe,YAAY,CAAC"}
@@ -0,0 +1,19 @@
1
+ type item = {
2
+ _id: string;
3
+ [key: string]: any;
4
+ };
5
+ declare class IdBasedLRUCache<T extends item> {
6
+ _items: Map<string, T>;
7
+ _cache: Map<string, WeakRef<T>>;
8
+ _finalizationRegistry: FinalizationRegistry<string>;
9
+ _max: number;
10
+ _cleanCount: number;
11
+ _cleaningScheduled: boolean;
12
+ constructor(maxSize?: number, cleanCount?: number);
13
+ retrieve: (_id: string) => T;
14
+ cache: (item: T) => void;
15
+ clear: () => void;
16
+ _clean: () => Promise<void>;
17
+ _reclaim: (_id: string) => void;
18
+ }
19
+ export default IdBasedLRUCache;
@@ -0,0 +1,49 @@
1
+ class IdBasedLRUCache {
2
+ _items; // lru list - strong references
3
+ _cache; // weak references
4
+ _finalizationRegistry; // not sure what "item" actually should be
5
+ _max;
6
+ _cleanCount;
7
+ _cleaningScheduled;
8
+ constructor(maxSize = 1000, cleanCount = 20) {
9
+ this._items = new Map();
10
+ this._cache = new Map();
11
+ this._finalizationRegistry = new FinalizationRegistry(this._reclaim);
12
+ this._max = maxSize;
13
+ this._cleanCount = cleanCount;
14
+ }
15
+ retrieve = (_id) => {
16
+ const value = this._cache.get(_id)?.deref();
17
+ if (value === undefined)
18
+ return;
19
+ this._items.delete(_id);
20
+ this._items.set(_id, value);
21
+ return value;
22
+ };
23
+ cache = (item) => {
24
+ if (this._items.size >= this._max && !this._cleaningScheduled) {
25
+ this._cleaningScheduled = true;
26
+ this._clean(); // async
27
+ }
28
+ this._items.set(item._id, item);
29
+ this._cache.set(item._id, new WeakRef(item));
30
+ this._finalizationRegistry.register(item, item._id);
31
+ };
32
+ clear = () => {
33
+ this._items.clear();
34
+ this._cache.clear();
35
+ };
36
+ _clean = async () => {
37
+ const iterator = this._items.keys();
38
+ for (let i = this._cleanCount; i > 0; i--) {
39
+ const key = iterator.next().value;
40
+ this._items.delete(key);
41
+ }
42
+ this._cleaningScheduled = false;
43
+ };
44
+ _reclaim = (_id) => {
45
+ this._cache.delete(_id);
46
+ };
47
+ }
48
+ export default IdBasedLRUCache;
49
+ //# sourceMappingURL=id-based-lru-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"id-based-lru-cache.js","sourceRoot":"","sources":["../src/id-based-lru-cache.ts"],"names":[],"mappings":"AAMA,MAAM,eAAe;IACpB,MAAM,CAAe,CAAC,+BAA+B;IACrD,MAAM,CAAwB,CAAC,kBAAkB;IACjD,qBAAqB,CAA8B,CAAC,0CAA0C;IAC9F,IAAI,CAAQ;IACZ,WAAW,CAAQ;IACnB,kBAAkB,CAAS;IAE3B,YAAY,UAAe,IAAI,EAAC,aAAkB,EAAE;QACnD,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC,qBAAqB,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrE,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;QACpB,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,QAAQ,GAAG,CAAC,GAAU,EAAE,EAAE;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC;QAC5C,IAAG,KAAK,KAAK,SAAS;YAAE,OAAO;QAC/B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAC,KAAK,CAAC,CAAC;QAC3B,OAAO,KAAK,CAAC;IACd,CAAC,CAAC;IAEF,KAAK,GAAG,CAAC,IAAM,EAAE,EAAE;QAClB,IAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC9D,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;YAC/B,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ;QACxB,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5C,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,IAAI,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpD,CAAC,CAAA;IAED,KAAK,GAAG,GAAG,EAAE;QACZ,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC,CAAC;IAEF,MAAM,GAAG,KAAK,IAAG,EAAE;QAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;QACnC,KAAI,IAAI,CAAC,GAAC,IAAI,CAAC,WAAW,EAAG,CAAC,GAAC,CAAC,EAAG,CAAC,EAAE,EAAE,CAAC;YACxC,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YAClC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;QACD,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;IACjC,CAAC,CAAA;IAED,QAAQ,GAAG,CAAC,GAAU,EAAE,EAAE;QACzB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC,CAAC;CACF;AAID,eAAe,eAAe,CAAC"}
@@ -0,0 +1,23 @@
1
+ import interrupt from "./interrupt.js";
2
+ import wait from "./wait.js";
3
+ import timedifference from "./timedifference.js";
4
+ import timefromnow from "./timefromnow.js";
5
+ import timefromx from "./timefromx.js";
6
+ import zeroDate from "./zero-date.js";
7
+ import maxDate from "./max-date.js";
8
+ import UUID from "./uuid.js";
9
+ import Integer from "./integer.js";
10
+ import JSchema from "./jschema.js";
11
+ import jdebug from "./jdebug.js";
12
+ import WeakValueCache from "./weak-value-cache.js";
13
+ import IdBasedLRUCache from "./id-based-lru-cache.js";
14
+ import IdBasedCache from "./id-based-cache.js";
15
+ import Notifications from "./notifications.js";
16
+ import { noop, noopn, pass } from "./noop.js";
17
+ import Exception from "./exception.js";
18
+ import matchExceptions from "./match-exceptions.js";
19
+ import { registerException, getException, getExceptionNoError } from "./exceptions.js";
20
+ import NotImplementedError, { notImplemented } from "./not-implemented.js";
21
+ import randomInteger from "./randomInteger.js";
22
+ export { interrupt, wait, timedifference, timefromnow, timefromx, zeroDate as zeroTime, // legacy naming
23
+ zeroDate, maxDate, JSchema, UUID, Integer, jdebug, WeakValueCache, IdBasedLRUCache, IdBasedCache, Notifications, noop, noopn, pass, Exception, matchExceptions, registerException, getException, getExceptionNoError, NotImplementedError, notImplemented, randomInteger, };
package/dist/index.js ADDED
@@ -0,0 +1,24 @@
1
+ import interrupt from "./interrupt.js";
2
+ import wait from "./wait.js";
3
+ import timedifference from "./timedifference.js";
4
+ import timefromnow from "./timefromnow.js";
5
+ import timefromx from "./timefromx.js";
6
+ import zeroDate from "./zero-date.js";
7
+ import maxDate from "./max-date.js";
8
+ import UUID from "./uuid.js";
9
+ import Integer from "./integer.js";
10
+ import JSchema from "./jschema.js";
11
+ import jdebug from "./jdebug.js";
12
+ import WeakValueCache from "./weak-value-cache.js";
13
+ import IdBasedLRUCache from "./id-based-lru-cache.js";
14
+ import IdBasedCache from "./id-based-cache.js";
15
+ import Notifications from "./notifications.js";
16
+ import { noop, noopn, pass } from "./noop.js";
17
+ import Exception from "./exception.js";
18
+ import matchExceptions from "./match-exceptions.js";
19
+ import { registerException, getException, getExceptionNoError } from "./exceptions.js";
20
+ import NotImplementedError, { notImplemented } from "./not-implemented.js";
21
+ import randomInteger from "./randomInteger.js";
22
+ export { interrupt, wait, timedifference, timefromnow, timefromx, zeroDate as zeroTime, // legacy naming
23
+ zeroDate, maxDate, JSchema, UUID, Integer, jdebug, WeakValueCache, IdBasedLRUCache, IdBasedCache, Notifications, noop, noopn, pass, Exception, matchExceptions, registerException, getException, getExceptionNoError, NotImplementedError, notImplemented, randomInteger, };
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,gBAAgB,CAAC;AACvC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,cAAc,MAAM,qBAAqB,CAAC;AACjD,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAC3C,OAAO,SAAS,MAAM,gBAAgB,CAAC;AACvC,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,OAAO,MAAM,eAAe,CAAC;AACpC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,cAAc,MAAM,uBAAuB,CAAC;AACnD,OAAO,eAAe,MAAM,yBAAyB,CAAC;AACtD,OAAO,YAAY,MAAM,qBAAqB,CAAC;AAC/C,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAC,KAAK,EAAC,IAAI,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,SAAS,MAAM,gBAAgB,CAAC;AACvC,OAAO,eAAe,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAC,YAAY,EAAC,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACrF,OAAO,mBAAmB,EAAC,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EACN,SAAS,EACT,IAAI,EACJ,cAAc,EACd,WAAW,EACX,SAAS,EACT,QAAQ,IAAI,QAAQ,EAAE,gBAAgB;AACtC,QAAQ,EACR,OAAO,EACP,OAAO,EACP,IAAI,EACJ,OAAO,EACP,MAAM,EACN,cAAc,EACd,eAAe,EACf,YAAY,EACZ,aAAa,EACb,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,SAAS,EACT,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,aAAa,GACb,CAAC"}
@@ -0,0 +1,5 @@
1
+ declare class Integer {
2
+ static isInteger: (number: unknown) => boolean;
3
+ static validate: (number: unknown) => boolean;
4
+ }
5
+ export default Integer;
@@ -0,0 +1,8 @@
1
+ // pseudo class for JSchema
2
+ class Integer {
3
+ static isInteger = Number.isSafeInteger;
4
+ static validate = Integer.isInteger;
5
+ }
6
+ ;
7
+ export default Integer;
8
+ //# sourceMappingURL=integer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integer.js","sourceRoot":"","sources":["../src/integer.ts"],"names":[],"mappings":"AACA,2BAA2B;AAC3B,MAAM,OAAO;IACZ,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,aAAa,CAAC;IACxC,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC;;AACpC,CAAC;AAIF,eAAe,OAAO,CAAC"}
@@ -0,0 +1,2 @@
1
+ declare const interrupt: () => any;
2
+ export default interrupt;
@@ -0,0 +1,8 @@
1
+ const interrupt = () => {
2
+ let _ = null;
3
+ const interrupt = new Promise((resolve, reject) => { _ = resolve; });
4
+ interrupt.release = _;
5
+ return interrupt;
6
+ };
7
+ export default interrupt;
8
+ //# sourceMappingURL=interrupt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interrupt.js","sourceRoot":"","sources":["../src/interrupt.ts"],"names":[],"mappings":"AACA,MAAM,SAAS,GAAG,GAAG,EAAE;IACtB,IAAI,CAAC,GAAG,IAAI,CAAC;IACb,MAAM,SAAS,GAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAC,MAAM,EAAE,EAAE,GAAE,CAAC,GAAG,OAAO,CAAA,CAAA,CAAC,CAAC,CAAC;IACrE,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC;IACtB,OAAO,SAAS,CAAC;AAClB,CAAC,CAAC;AAIF,eAAe,SAAS,CAAC"}
@@ -0,0 +1,7 @@
1
+ declare const jdebug: {
2
+ message: {
3
+ (...data: any[]): void;
4
+ (message?: any, ...optionalParams: any[]): void;
5
+ };
6
+ };
7
+ export default jdebug;
package/dist/jdebug.js ADDED
@@ -0,0 +1,6 @@
1
+ const jdebug = {
2
+ //message : (...args:any[]) => console.log(...args),
3
+ message: console.log,
4
+ };
5
+ export default jdebug;
6
+ //# sourceMappingURL=jdebug.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jdebug.js","sourceRoot":"","sources":["../src/jdebug.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,GAAG;IACd,qDAAqD;IACrD,OAAO,EAAG,OAAO,CAAC,GAAG;CACrB,CAAC;AAIF,eAAe,MAAM,CAAC"}
@@ -0,0 +1,6 @@
1
+ declare class JSchema {
2
+ schema: any;
3
+ [key: string]: any;
4
+ constructor(schema: any);
5
+ }
6
+ export default JSchema;
@@ -0,0 +1,80 @@
1
+ import Integer from "./integer.js";
2
+ import UUID from "./uuid.js";
3
+ class JSchema {
4
+ schema;
5
+ constructor(schema) {
6
+ this.schema = processSchema(schema);
7
+ }
8
+ }
9
+ ;
10
+ const processSchema = (schema) => {
11
+ if (schema instanceof JSchema)
12
+ return schema.schema;
13
+ if (schema.constructor === Object)
14
+ return processDefinition(schema);
15
+ if (schema.constructor === Array)
16
+ return processAlternatives(schema);
17
+ if (defaultSchemas.has(schema))
18
+ return defaultSchemas.get(schema);
19
+ throw new Error("Invalid schema definition");
20
+ };
21
+ const processDefinition = (definition) => {
22
+ if (definition.type === Object)
23
+ return processObjectDefinition(definition);
24
+ if (definition.type === Array)
25
+ return processArrayDefinition(definition);
26
+ return definition;
27
+ };
28
+ const processObjectDefinition = (definition) => {
29
+ const { keys, ...rest } = definition.extend ?
30
+ processObjectDefinitionExtend(definition)
31
+ :
32
+ definition;
33
+ const newKeys = {};
34
+ for (const [key, schema] of Object.entries(keys)) {
35
+ newKeys[key] = processSchema(schema);
36
+ }
37
+ const newDefinition = { keys: newKeys, ...rest };
38
+ return newDefinition;
39
+ };
40
+ const processObjectDefinitionExtend = ({ extend, keys, allowUnknown, ...rest }) => {
41
+ const newDefinition = {
42
+ type: Object,
43
+ keys: {},
44
+ allowUnknown: !keys,
45
+ };
46
+ const extendees = Array.isArray(extend) ? extend : [extend];
47
+ for (const { schema: { type, keys, allowUnknown, ...rest } } of extendees) {
48
+ if (type !== Object)
49
+ throw new Error("Not an object");
50
+ if (allowUnknown)
51
+ newDefinition.allowUnknown = true;
52
+ Object.assign(newDefinition, rest);
53
+ Object.assign(newDefinition.keys, keys);
54
+ }
55
+ if (allowUnknown)
56
+ newDefinition.allowUnknown = true;
57
+ Object.assign(newDefinition, rest);
58
+ Object.assign(newDefinition.keys, keys);
59
+ return newDefinition;
60
+ };
61
+ const processArrayDefinition = ({ values, items, ...rest }) => {
62
+ const newDefinition = {
63
+ items: values ? processSchema(values) : processSchema(items), // compatibility - in the future use only "items"
64
+ ...rest
65
+ };
66
+ return newDefinition;
67
+ };
68
+ const processAlternatives = (alternatives) => {
69
+ throw new Error("Not yet implemented");
70
+ };
71
+ const defaultSchemas = new Map();
72
+ defaultSchemas.set(Object, { type: Object, allowUnknown: true, keys: {} }); // check if this works!!??
73
+ defaultSchemas.set(String, { type: String });
74
+ defaultSchemas.set(Number, { type: Number });
75
+ defaultSchemas.set(Integer, { type: Integer });
76
+ defaultSchemas.set(Boolean, { type: Boolean });
77
+ defaultSchemas.set(UUID, { type: UUID });
78
+ defaultSchemas.set(Date, { type: Date });
79
+ export default JSchema;
80
+ //# sourceMappingURL=jschema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jschema.js","sourceRoot":"","sources":["../src/jschema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ declare const matchExceptions: (exception: any, ...matchers: any[]) => any;
2
+ export default matchExceptions;
@@ -0,0 +1,43 @@
1
+ class ErrorWhileHandlingException extends Error {
2
+ error;
3
+ exception;
4
+ constructor(error, exception) {
5
+ super(`Error: (${error}) while handling exception: (${exception})`);
6
+ this.error = error;
7
+ this.exception = exception;
8
+ }
9
+ ;
10
+ }
11
+ // types: single type or multiple types in array
12
+ const matchSingle = (exception, types, callback) => {
13
+ const _types = Array.isArray(types) ? types : [types];
14
+ for (const _type of _types) {
15
+ if (exception instanceof _type) {
16
+ const _ = callback();
17
+ return [true, _];
18
+ }
19
+ }
20
+ return [false, null];
21
+ };
22
+ // types: single type or multiple types in array
23
+ const matchExceptions = (exception, ...matchers) => {
24
+ const len = matchers.length;
25
+ try {
26
+ for (let n = 1; n < len; n += 2) {
27
+ const [match, _] = matchSingle(exception, matchers[n - 1], matchers[n]);
28
+ if (match)
29
+ return _;
30
+ }
31
+ if (len % 2 === 1) {
32
+ const _ = matchers[len - 1]();
33
+ return _;
34
+ }
35
+ ;
36
+ }
37
+ catch (error) {
38
+ throw new ErrorWhileHandlingException(error, exception);
39
+ }
40
+ throw exception;
41
+ };
42
+ export default matchExceptions;
43
+ //# sourceMappingURL=match-exceptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"match-exceptions.js","sourceRoot":"","sources":["../src/match-exceptions.ts"],"names":[],"mappings":"AACA,MAAM,2BAA4B,SAAQ,KAAK;IAC9C,KAAK,CAAK;IACV,SAAS,CAAK;IAEd,YAAY,KAAS,EAAC,SAAa;QAClC,KAAK,CAAC,WAAW,KAAK,gCAAgC,SAAS,GAAG,CAAC,CAAC;QACpE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC5B,CAAC;IAAA,CAAC;CACF;AAED,gDAAgD;AAChD,MAAM,WAAW,GAAG,CAAC,SAAa,EAAC,KAAW,EAAC,QAAiB,EAAE,EAAE;IACnE,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,KAAK,CAAE,CAAC;IACxD,KAAI,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAG,SAAS,YAAY,KAAK,EAAE,CAAC;YAC/B,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAA;YACpB,OAAO,CAAE,IAAI,EAAC,CAAC,CAAE,CAAC;QACnB,CAAC;IACF,CAAC;IACD,OAAO,CAAE,KAAK,EAAC,IAAI,CAAE,CAAC;AACvB,CAAC,CAAC;AAEF,gDAAgD;AAChD,MAAM,eAAe,GAAG,CAAC,SAAa,EAAC,GAAG,QAAc,EAAE,EAAE;IAC3D,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC;IAC5B,IAAI,CAAC;QACJ,KAAI,IAAI,CAAC,GAAC,CAAC,EAAC,CAAC,GAAC,GAAG,EAAC,CAAC,IAAE,CAAC,EAAE,CAAC;YACxB,MAAM,CAAE,KAAK,EAAC,CAAC,CAAE,GAAG,WAAW,CAAC,SAAS,EAAC,QAAQ,CAAC,CAAC,GAAC,CAAC,CAAC,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YACrE,IAAG,KAAK;gBAAE,OAAO,CAAC,CAAC;QACpB,CAAC;QACD,IAAG,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAClB,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,GAAC,CAAC,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,CAAC;QACV,CAAC;QAAA,CAAC;IACH,CAAC;IAAC,OAAM,KAAS,EAAE,CAAC;QACnB,MAAM,IAAI,2BAA2B,CAAC,KAAK,EAAC,SAAS,CAAC,CAAC;IACxD,CAAC;IACD,MAAM,SAAS,CAAC;AACjB,CAAC,CAAC;AAIF,eAAe,eAAe,CAAC"}
@@ -0,0 +1,2 @@
1
+ declare const maxDate: Date;
2
+ export default maxDate;
@@ -0,0 +1,3 @@
1
+ const maxDate = new Date(8640000000000000);
2
+ export default maxDate;
3
+ //# sourceMappingURL=max-date.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"max-date.js","sourceRoot":"","sources":["../src/max-date.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAE3C,eAAe,OAAO,CAAC"}
package/dist/noop.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ declare const noop: () => void;
2
+ declare const noopn: (..._: any[]) => void;
3
+ declare const pass: (_: any) => any;
4
+ export { noop, noopn, pass };
package/dist/noop.js ADDED
@@ -0,0 +1,5 @@
1
+ const noop = () => { };
2
+ const noopn = (..._) => { };
3
+ const pass = (_) => _;
4
+ export { noop, noopn, pass };
5
+ //# sourceMappingURL=noop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"noop.js","sourceRoot":"","sources":["../src/noop.ts"],"names":[],"mappings":"AAAA,MAAM,IAAI,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;AAEtB,MAAM,KAAK,GAAG,CAAC,GAAG,CAAO,EAAE,EAAE,GAAE,CAAC,CAAC;AAEjC,MAAM,IAAI,GAAG,CAAC,CAAK,EAAE,EAAE,CAAC,CAAC,CAAC;AAI1B,OAAO,EAAE,IAAI,EAAC,KAAK,EAAC,IAAI,EAAE,CAAC"}
@@ -0,0 +1,5 @@
1
+ declare class NotImplementedError extends Error {
2
+ }
3
+ declare const notImplemented: () => never;
4
+ export default NotImplementedError;
5
+ export { notImplemented };
@@ -0,0 +1,8 @@
1
+ class NotImplementedError extends Error {
2
+ }
3
+ const notImplemented = () => {
4
+ throw new NotImplementedError();
5
+ };
6
+ export default NotImplementedError;
7
+ export { notImplemented };
8
+ //# sourceMappingURL=not-implemented.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"not-implemented.js","sourceRoot":"","sources":["../src/not-implemented.ts"],"names":[],"mappings":"AACA,MAAM,mBAAoB,SAAQ,KAAK;CAAG;AAE1C,MAAM,cAAc,GAAG,GAAG,EAAE;IAC3B,MAAM,IAAI,mBAAmB,EAAE,CAAC;AACjC,CAAC,CAAA;AAID,eAAe,mBAAmB,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * A ridiculously simple interface for handling notifications
3
+ */
4
+ type notificationCallback = (message: string) => void;
5
+ declare class Notifications {
6
+ _onNotificationCallbacks: Set<notificationCallback>;
7
+ _onWarningCallbacks: Set<notificationCallback>;
8
+ constructor();
9
+ onNotification: (callback: notificationCallback) => Set<notificationCallback>;
10
+ offNotification: (callback: notificationCallback) => boolean;
11
+ onWarning: (callback: notificationCallback) => Set<notificationCallback>;
12
+ offWarning: (callback: notificationCallback) => boolean;
13
+ showNotification: (message: string) => void;
14
+ showWarning: (message: string) => void;
15
+ }
16
+ export default Notifications;
@@ -0,0 +1,27 @@
1
+ /**
2
+ * A ridiculously simple interface for handling notifications
3
+ */
4
+ class Notifications {
5
+ _onNotificationCallbacks;
6
+ _onWarningCallbacks;
7
+ constructor() {
8
+ this._onNotificationCallbacks = new Set();
9
+ this._onWarningCallbacks = new Set();
10
+ }
11
+ ;
12
+ onNotification = (callback) => this._onNotificationCallbacks.add(callback);
13
+ offNotification = (callback) => this._onNotificationCallbacks.delete(callback);
14
+ onWarning = (callback) => this._onWarningCallbacks.add(callback);
15
+ offWarning = (callback) => this._onWarningCallbacks.delete(callback);
16
+ showNotification = (message) => {
17
+ console.log(message);
18
+ this._onNotificationCallbacks.forEach((callback) => callback(message));
19
+ };
20
+ showWarning = (message) => {
21
+ console.warn(message);
22
+ this._onWarningCallbacks.forEach((callback) => callback(message));
23
+ };
24
+ }
25
+ ;
26
+ export default Notifications;
27
+ //# sourceMappingURL=notifications.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notifications.js","sourceRoot":"","sources":["../src/notifications.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,aAAa;IAClB,wBAAwB,CAA0B;IAClD,mBAAmB,CAA0B;IAE7C;QACC,IAAI,CAAC,wBAAwB,GAAG,IAAI,GAAG,EAAE,CAAC;QAC1C,IAAI,CAAC,mBAAmB,GAAG,IAAI,GAAG,EAAE,CAAC;IACtC,CAAC;IAAA,CAAC;IAEF,cAAc,GAAG,CAAC,QAA6B,EAAE,EAAE,CAAC,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAChG,eAAe,GAAG,CAAC,QAA6B,EAAE,EAAE,CAAC,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACpG,SAAS,GAAG,CAAC,QAA6B,EAAE,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtF,UAAU,GAAG,CAAC,QAA6B,EAAE,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAE1F,gBAAgB,GAAG,CAAC,OAAc,EAAE,EAAE;QACrC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACrB,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IACxE,CAAC,CAAC;IAEF,WAAW,GAAG,CAAC,OAAc,EAAE,EAAE;QAChC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtB,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IACnE,CAAC,CAAC;CACF;AAAA,CAAC;AAIF,eAAe,aAAa,CAAC"}
@@ -0,0 +1,2 @@
1
+ declare const randomInteger: (min: number, max: number) => Promise<number>;
2
+ export default randomInteger;
@@ -0,0 +1,8 @@
1
+ import { randomInt } from "node:crypto";
2
+ const randomInteger = async (min, max) => {
3
+ return await new Promise((resolve, reject) => {
4
+ randomInt(min, max, (error, value) => error ? reject(error) : resolve(value));
5
+ });
6
+ };
7
+ export default randomInteger;
8
+ //# sourceMappingURL=randomInteger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"randomInteger.js","sourceRoot":"","sources":["../src/randomInteger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAIxC,MAAM,aAAa,GAAG,KAAK,EAAC,GAAU,EAAC,GAAU,EAAkB,EAAE;IACpE,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAC,MAAM,EAAE,EAAE;QAC3C,SAAS,CAAC,GAAG,EAAC,GAAG,EAAC,CAAC,KAAS,EAAC,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACvF,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC;AAIF,eAAe,aAAa,CAAC"}
@@ -0,0 +1,2 @@
1
+ declare const timedifference: (date1: Date, date2: Date) => number;
2
+ export default timedifference;
@@ -0,0 +1,3 @@
1
+ const timedifference = (date1, date2) => date2.getTime() - date1.getTime();
2
+ export default timedifference;
3
+ //# sourceMappingURL=timedifference.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timedifference.js","sourceRoot":"","sources":["../src/timedifference.ts"],"names":[],"mappings":"AAAA,MAAM,cAAc,GAAG,CAAC,KAAU,EAAC,KAAU,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;AAEpF,eAAe,cAAc,CAAC"}
@@ -0,0 +1,2 @@
1
+ declare const timefromnow: (date: Date) => number;
2
+ export default timefromnow;
@@ -0,0 +1,3 @@
1
+ const timefromnow = (date) => date.getTime() - Date.now();
2
+ export default timefromnow;
3
+ //# sourceMappingURL=timefromnow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timefromnow.js","sourceRoot":"","sources":["../src/timefromnow.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,GAAG,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAE/D,eAAe,WAAW,CAAC"}
@@ -0,0 +1,2 @@
1
+ declare const timefromx: (date: Date) => number;
2
+ export default timefromx;
@@ -0,0 +1,3 @@
1
+ const timefromx = (date) => Date.now() - date.getTime();
2
+ export default timefromx;
3
+ //# sourceMappingURL=timefromx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timefromx.js","sourceRoot":"","sources":["../src/timefromx.ts"],"names":[],"mappings":"AAAA,MAAM,SAAS,GAAG,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AAE7D,eAAe,SAAS,CAAC"}
package/dist/uuid.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ declare class UUID {
2
+ static isUUID: (subject: any) => boolean;
3
+ static validate: (subject: any) => boolean;
4
+ }
5
+ export default UUID;
package/dist/uuid.js ADDED
@@ -0,0 +1,10 @@
1
+ // pseudo class for JSchema
2
+ class UUID {
3
+ static isUUID = (subject) => {
4
+ return typeof subject === "string" && uuidPattern.test(subject);
5
+ };
6
+ static validate = UUID.isUUID;
7
+ }
8
+ const uuidPattern = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$/;
9
+ export default UUID;
10
+ //# sourceMappingURL=uuid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uuid.js","sourceRoot":"","sources":["../src/uuid.ts"],"names":[],"mappings":"AACA,2BAA2B;AAC3B,MAAM,IAAI;IACT,MAAM,CAAC,MAAM,GAAG,CAAC,OAAW,EAAE,EAAE;QAC/B,OAAO,OAAO,OAAO,KAAK,QAAQ,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjE,CAAC,CAAC;IAEF,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC;;AAG/B,MAAM,WAAW,GAAG,4EAA4E,CAAA;AAIhG,eAAe,IAAI,CAAC"}
package/dist/wait.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ declare const wait: (timeOut: number) => Promise<unknown>;
2
+ export default wait;
package/dist/wait.js ADDED
@@ -0,0 +1,3 @@
1
+ const wait = async (timeOut) => new Promise((resolve, reject) => setTimeout(resolve, timeOut));
2
+ export default wait;
3
+ //# sourceMappingURL=wait.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wait.js","sourceRoot":"","sources":["../src/wait.ts"],"names":[],"mappings":"AAAA,MAAM,IAAI,GAAG,KAAK,EAAC,OAAc,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAC,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAC,OAAO,CAAC,CAAC,CAAC;AAEnG,eAAe,IAAI,CAAC"}
@@ -0,0 +1,10 @@
1
+ declare class WeakValueCache<Key, Value extends object> {
2
+ _cache: Map<Key, WeakRef<Value>>;
3
+ _finalizationRegistry: FinalizationRegistry<Key>;
4
+ constructor();
5
+ retrieve: (_id: Key) => Value;
6
+ cache: (key: Key, item: Value) => void;
7
+ clear: () => void;
8
+ _reclaim: (key: Key) => void;
9
+ }
10
+ export default WeakValueCache;
@@ -0,0 +1,24 @@
1
+ class WeakValueCache {
2
+ _cache; // weak references
3
+ _finalizationRegistry; // not sure what "item" actually should be
4
+ constructor() {
5
+ this._cache = new Map();
6
+ this._finalizationRegistry = new FinalizationRegistry(this._reclaim);
7
+ }
8
+ retrieve = (_id) => {
9
+ const value = this._cache.get(_id)?.deref();
10
+ return value;
11
+ };
12
+ cache = (key, item) => {
13
+ this._cache.set(key, new WeakRef(item));
14
+ this._finalizationRegistry.register(item, key);
15
+ };
16
+ clear = () => {
17
+ this._cache.clear();
18
+ };
19
+ _reclaim = (key) => {
20
+ this._cache.delete(key);
21
+ };
22
+ }
23
+ export default WeakValueCache;
24
+ //# sourceMappingURL=weak-value-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"weak-value-cache.js","sourceRoot":"","sources":["../src/weak-value-cache.ts"],"names":[],"mappings":"AACA,MAAM,cAAc;IACnB,MAAM,CAAyB,CAAC,kBAAkB;IAClD,qBAAqB,CAA2B,CAAC,0CAA0C;IAE3F;QACC,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC,qBAAqB,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtE,CAAC;IAED,QAAQ,GAAG,CAAC,GAAO,EAAE,EAAE;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC;QAC5C,OAAO,KAAK,CAAC;IACd,CAAC,CAAC;IAEF,KAAK,GAAG,CAAC,GAAO,EAAC,IAAU,EAAE,EAAE;QAC9B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,IAAI,EAAC,GAAG,CAAC,CAAC;IAC/C,CAAC,CAAA;IAED,KAAK,GAAG,GAAG,EAAE;QACZ,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC,CAAC;IAEF,QAAQ,GAAG,CAAC,GAAO,EAAE,EAAE;QACtB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC,CAAC;CACF;AAID,eAAe,cAAc,CAAC"}
@@ -0,0 +1,2 @@
1
+ declare const zeroDate: Date;
2
+ export default zeroDate;
@@ -0,0 +1,3 @@
1
+ const zeroDate = new Date(0);
2
+ export default zeroDate;
3
+ //# sourceMappingURL=zero-date.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zero-date.js","sourceRoot":"","sources":["../src/zero-date.ts"],"names":[],"mappings":"AAAA,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;AAE7B,eAAe,QAAQ,CAAC"}
package/package.json ADDED
@@ -0,0 +1,19 @@
1
+ {
2
+ "name": "@daaler/jutils",
3
+ "version": "0.3.5",
4
+ "description": "Utility functions for js",
5
+ "author": "jarno.parviainen@gmail.com",
6
+ "license": "UNLICENSED",
7
+ "type": "module",
8
+ "main": "dist/index.js",
9
+ "types": "dist/index.d.ts",
10
+ "browser": "dist/browser.js",
11
+ "files": [ "dist" ],
12
+ "scripts": {
13
+ "test": "echo \"Error: no test specified\" && exit 1",
14
+ "build": "tsc"
15
+ },
16
+ "devDependencies": {
17
+ "@types/node": "^20.7.0"
18
+ }
19
+ }