@daiso-tech/core 0.25.0 → 0.26.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.
Files changed (53) hide show
  1. package/dist/async/utilities/lazy-promise/lazy-promise.d.ts +12 -3
  2. package/dist/async/utilities/lazy-promise/lazy-promise.js +36 -3
  3. package/dist/async/utilities/lazy-promise/lazy-promise.js.map +1 -1
  4. package/dist/cache/implementations/derivables/cache/cache.d.ts +24 -24
  5. package/dist/cache/implementations/derivables/cache/cache.js +15 -15
  6. package/dist/cache/implementations/derivables/cache/cache.js.map +1 -1
  7. package/dist/event-bus/contracts/_shared.d.ts +0 -7
  8. package/dist/event-bus/contracts/_shared.js.map +1 -1
  9. package/dist/event-bus/contracts/event-bus-adapter.contract.d.ts +6 -5
  10. package/dist/event-bus/contracts/event-bus.contract.d.ts +8 -23
  11. package/dist/event-bus/contracts/event-bus.contract.js +0 -1
  12. package/dist/event-bus/contracts/event-bus.contract.js.map +1 -1
  13. package/dist/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter.d.ts +4 -3
  14. package/dist/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter.js +1 -1
  15. package/dist/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter.js.map +1 -1
  16. package/dist/event-bus/implementations/adapters/no-op-event-bus-adapter/no-op-event-bus-adapter.d.ts +4 -3
  17. package/dist/event-bus/implementations/adapters/no-op-event-bus-adapter/no-op-event-bus-adapter.js.map +1 -1
  18. package/dist/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter.d.ts +4 -3
  19. package/dist/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter.js +1 -1
  20. package/dist/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter.js.map +1 -1
  21. package/dist/event-bus/implementations/derivables/event-bus/event-bus.d.ts +13 -13
  22. package/dist/event-bus/implementations/derivables/event-bus/event-bus.js +5 -5
  23. package/dist/event-bus/implementations/derivables/event-bus/event-bus.js.map +1 -1
  24. package/dist/event-bus/implementations/test-utilities/event-bus.test-suite.js +30 -30
  25. package/dist/event-bus/implementations/test-utilities/event-bus.test-suite.js.map +1 -1
  26. package/dist/lock/implementations/derivables/lock-provider/is-database-lock-adapter.d.ts +9 -0
  27. package/dist/lock/implementations/derivables/lock-provider/is-database-lock-adapter.js +21 -0
  28. package/dist/lock/implementations/derivables/lock-provider/is-database-lock-adapter.js.map +1 -0
  29. package/dist/lock/implementations/derivables/lock-provider/lock-provider.d.ts +23 -24
  30. package/dist/lock/implementations/derivables/lock-provider/lock-provider.js +16 -36
  31. package/dist/lock/implementations/derivables/lock-provider/lock-provider.js.map +1 -1
  32. package/dist/lock/implementations/derivables/lock-provider/lock.d.ts +32 -32
  33. package/dist/lock/implementations/derivables/lock-provider/lock.js +23 -23
  34. package/dist/lock/implementations/derivables/lock-provider/lock.js.map +1 -1
  35. package/dist/lock/implementations/test-utilities/lock-provider.test-suite.js +30 -30
  36. package/dist/utilities/{constants.js → _constants.js} +1 -1
  37. package/dist/utilities/_constants.js.map +1 -0
  38. package/dist/utilities/_module-exports.d.ts +1 -1
  39. package/dist/utilities/_module-exports.js +1 -1
  40. package/dist/utilities/_module-exports.js.map +1 -1
  41. package/dist/utilities/pipeline/_module.d.ts +1 -0
  42. package/dist/utilities/pipeline/_module.js +2 -0
  43. package/dist/utilities/pipeline/_module.js.map +1 -0
  44. package/dist/utilities/pipeline/pipeline.d.ts +45 -0
  45. package/dist/utilities/pipeline/pipeline.js +75 -0
  46. package/dist/utilities/pipeline/pipeline.js.map +1 -0
  47. package/dist/utilities/time-span/time-span.d.ts +3 -12
  48. package/dist/utilities/time-span/time-span.js +3 -6
  49. package/dist/utilities/time-span/time-span.js.map +1 -1
  50. package/dist/utilities/types.d.ts +19 -2
  51. package/package.json +1 -1
  52. package/dist/utilities/constants.js.map +0 -1
  53. /package/dist/utilities/{constants.d.ts → _constants.d.ts} +0 -0
@@ -160,8 +160,8 @@ export function lockProviderTestSuite(settings) {
160
160
  await delay(TTL);
161
161
  return "a";
162
162
  }, {
163
- time: TimeSpan.fromMilliseconds(1),
164
- interval: TimeSpan.fromMilliseconds(1),
163
+ time: TimeSpan.fromMilliseconds(5),
164
+ interval: TimeSpan.fromMilliseconds(5),
165
165
  });
166
166
  expect(result).toBe("a");
167
167
  expect(error).toBeNull();
@@ -177,8 +177,8 @@ export function lockProviderTestSuite(settings) {
177
177
  await delay(TTL);
178
178
  return "a";
179
179
  }, {
180
- time: TimeSpan.fromMilliseconds(1),
181
- interval: TimeSpan.fromMilliseconds(1),
180
+ time: TimeSpan.fromMilliseconds(5),
181
+ interval: TimeSpan.fromMilliseconds(5),
182
182
  });
183
183
  expect(result).toBeNull();
184
184
  expect(error).toBeInstanceOf(KeyAlreadyAcquiredLockError);
@@ -193,8 +193,8 @@ export function lockProviderTestSuite(settings) {
193
193
  await delay(TTL);
194
194
  return "a";
195
195
  }), {
196
- time: TimeSpan.fromMilliseconds(1),
197
- interval: TimeSpan.fromMilliseconds(1),
196
+ time: TimeSpan.fromMilliseconds(5),
197
+ interval: TimeSpan.fromMilliseconds(5),
198
198
  });
199
199
  expect(result).toBe("a");
200
200
  expect(error).toBeNull();
@@ -293,8 +293,8 @@ export function lockProviderTestSuite(settings) {
293
293
  ttl,
294
294
  });
295
295
  const result = await lock.acquireBlocking({
296
- time: TimeSpan.fromMilliseconds(1),
297
- interval: TimeSpan.fromMilliseconds(1),
296
+ time: TimeSpan.fromMilliseconds(5),
297
+ interval: TimeSpan.fromMilliseconds(5),
298
298
  });
299
299
  expect(result).toBe(true);
300
300
  });
@@ -825,8 +825,8 @@ export function lockProviderTestSuite(settings) {
825
825
  await lock.runBlocking(async () => {
826
826
  await delay(TTL);
827
827
  }, {
828
- time: TimeSpan.fromMilliseconds(1),
829
- interval: TimeSpan.fromMilliseconds(1),
828
+ time: TimeSpan.fromMilliseconds(5),
829
+ interval: TimeSpan.fromMilliseconds(5),
830
830
  });
831
831
  await delay(TTL);
832
832
  expect(event_?.fields.key).toBe("a");
@@ -848,8 +848,8 @@ export function lockProviderTestSuite(settings) {
848
848
  await lock.runBlocking(async () => {
849
849
  await delay(TTL);
850
850
  }, {
851
- time: TimeSpan.fromMilliseconds(1),
852
- interval: TimeSpan.fromMilliseconds(1),
851
+ time: TimeSpan.fromMilliseconds(5),
852
+ interval: TimeSpan.fromMilliseconds(5),
853
853
  });
854
854
  await delay(TTL);
855
855
  expect(event_?.fields.key).toBe(key);
@@ -870,8 +870,8 @@ export function lockProviderTestSuite(settings) {
870
870
  await lock.runBlocking(async () => {
871
871
  await delay(TTL);
872
872
  }, {
873
- time: TimeSpan.fromMilliseconds(1),
874
- interval: TimeSpan.fromMilliseconds(1),
873
+ time: TimeSpan.fromMilliseconds(5),
874
+ interval: TimeSpan.fromMilliseconds(5),
875
875
  });
876
876
  await delay(TTL);
877
877
  expect(event_?.fields.key).toBe("a");
@@ -994,8 +994,8 @@ export function lockProviderTestSuite(settings) {
994
994
  event_ = event;
995
995
  });
996
996
  await lock.acquireBlocking({
997
- time: TimeSpan.fromMilliseconds(1),
998
- interval: TimeSpan.fromMilliseconds(1),
997
+ time: TimeSpan.fromMilliseconds(5),
998
+ interval: TimeSpan.fromMilliseconds(5),
999
999
  });
1000
1000
  await delay(TTL);
1001
1001
  expect(event_?.fields.key).toBe("a");
@@ -1011,15 +1011,15 @@ export function lockProviderTestSuite(settings) {
1011
1011
  });
1012
1012
  let event_ = null;
1013
1013
  await lock.acquireBlocking({
1014
- time: TimeSpan.fromMilliseconds(1),
1015
- interval: TimeSpan.fromMilliseconds(1),
1014
+ time: TimeSpan.fromMilliseconds(5),
1015
+ interval: TimeSpan.fromMilliseconds(5),
1016
1016
  });
1017
1017
  const unsubscribe = await lock.subscribe(KeyAlreadyAcquiredLockEvent, (event) => {
1018
1018
  event_ = event;
1019
1019
  });
1020
1020
  await lock.acquireBlocking({
1021
- time: TimeSpan.fromMilliseconds(1),
1022
- interval: TimeSpan.fromMilliseconds(1),
1021
+ time: TimeSpan.fromMilliseconds(5),
1022
+ interval: TimeSpan.fromMilliseconds(5),
1023
1023
  });
1024
1024
  await delay(TTL);
1025
1025
  expect(event_?.fields.key).toBe("a");
@@ -1352,8 +1352,8 @@ export function lockProviderTestSuite(settings) {
1352
1352
  await lock.runBlocking(async () => {
1353
1353
  await delay(TTL);
1354
1354
  }, {
1355
- time: TimeSpan.fromMilliseconds(1),
1356
- interval: TimeSpan.fromMilliseconds(1),
1355
+ time: TimeSpan.fromMilliseconds(5),
1356
+ interval: TimeSpan.fromMilliseconds(5),
1357
1357
  });
1358
1358
  await delay(TTL);
1359
1359
  expect(event_?.fields.key).toBe("a");
@@ -1375,8 +1375,8 @@ export function lockProviderTestSuite(settings) {
1375
1375
  await lock.runBlocking(async () => {
1376
1376
  await delay(TTL);
1377
1377
  }, {
1378
- time: TimeSpan.fromMilliseconds(1),
1379
- interval: TimeSpan.fromMilliseconds(1),
1378
+ time: TimeSpan.fromMilliseconds(5),
1379
+ interval: TimeSpan.fromMilliseconds(5),
1380
1380
  });
1381
1381
  await delay(TTL);
1382
1382
  expect(event_?.fields.key).toBe(key);
@@ -1397,8 +1397,8 @@ export function lockProviderTestSuite(settings) {
1397
1397
  await lock.runBlocking(async () => {
1398
1398
  await delay(TTL);
1399
1399
  }, {
1400
- time: TimeSpan.fromMilliseconds(1),
1401
- interval: TimeSpan.fromMilliseconds(1),
1400
+ time: TimeSpan.fromMilliseconds(5),
1401
+ interval: TimeSpan.fromMilliseconds(5),
1402
1402
  });
1403
1403
  await delay(TTL);
1404
1404
  expect(event_?.fields.key).toBe("a");
@@ -1841,8 +1841,8 @@ export function lockProviderTestSuite(settings) {
1841
1841
  await delay(TTL);
1842
1842
  return "a";
1843
1843
  }, {
1844
- time: TimeSpan.fromMilliseconds(1),
1845
- interval: TimeSpan.fromMilliseconds(1),
1844
+ time: TimeSpan.fromMilliseconds(5),
1845
+ interval: TimeSpan.fromMilliseconds(5),
1846
1846
  });
1847
1847
  const [[resultA, errorA], [resultB, errorB]] = await Promise.all([
1848
1848
  promiseA,
@@ -1897,8 +1897,8 @@ export function lockProviderTestSuite(settings) {
1897
1897
  owner: ownerA,
1898
1898
  });
1899
1899
  const resultA = await lockA.acquireBlocking({
1900
- time: TimeSpan.fromMilliseconds(1),
1901
- interval: TimeSpan.fromMilliseconds(1),
1900
+ time: TimeSpan.fromMilliseconds(5),
1901
+ interval: TimeSpan.fromMilliseconds(5),
1902
1902
  });
1903
1903
  const ownerB = "c";
1904
1904
  const lockB = lockProviderB.create(key, {
@@ -5,4 +5,4 @@
5
5
  * @internal
6
6
  */
7
7
  export const CORE = "core";
8
- //# sourceMappingURL=constants.js.map
8
+ //# sourceMappingURL=_constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_constants.js","sourceRoot":"","sources":["../../src/utilities/_constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC"}
@@ -1,7 +1,7 @@
1
1
  export * from "../utilities/contracts/_module.js";
2
2
  export * from "../utilities/kysely/_module.js";
3
3
  export * from "../utilities/time-span/_module.js";
4
- export * from "../utilities/constants.js";
4
+ export * from "../utilities/_constants.js";
5
5
  export * from "../utilities/errors.js";
6
6
  export * from "../utilities/types.js";
7
7
  export * from "../utilities/functions.js";
@@ -1,7 +1,7 @@
1
1
  export * from "../utilities/contracts/_module.js";
2
2
  export * from "../utilities/kysely/_module.js";
3
3
  export * from "../utilities/time-span/_module.js";
4
- export * from "../utilities/constants.js";
4
+ export * from "../utilities/_constants.js";
5
5
  export * from "../utilities/errors.js";
6
6
  export * from "../utilities/types.js";
7
7
  export * from "../utilities/functions.js";
@@ -1 +1 @@
1
- {"version":3,"file":"_module-exports.js","sourceRoot":"","sources":["../../src/utilities/_module-exports.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAC;AACjD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC"}
1
+ {"version":3,"file":"_module-exports.js","sourceRoot":"","sources":["../../src/utilities/_module-exports.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAC;AACjD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC"}
@@ -0,0 +1 @@
1
+ export * from "../../utilities/pipeline/pipeline.js";
@@ -0,0 +1,2 @@
1
+ export * from "../../utilities/pipeline/pipeline.js";
2
+ //# sourceMappingURL=_module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_module.js","sourceRoot":"","sources":["../../../src/utilities/pipeline/_module.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAC"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * @module Utilities
3
+ */
4
+ import { LazyPromise } from "../../async/_module-exports.js";
5
+ import type { AsyncLazyable, IInvokableObject, Invokable } from "../../utilities/types.js";
6
+ /**
7
+ * The <i>Pipeline</i> class provides a convenient way to pipe multiple functions and <i>{@link IInvokableObject}</i>,
8
+ * giving each functions and <i>{@link IInvokableObject}</i> the opportunity to inspect or modify the input.
9
+ * Pipeline class is immutable meaning you can extend it without causing problems.
10
+ *
11
+ * IMPORT_PATH: ```"@daiso-tech/core/utilities"```
12
+ */
13
+ export declare class Pipeline<TInitial, TPrev = TInitial, TCurrent = TPrev> implements IInvokableObject<AsyncLazyable<TInitial>, TCurrent> {
14
+ /**
15
+ * @example
16
+ * ```ts
17
+ * import { Pipeline, type IInvokableObject } from "@daiso-tech/core/utilities";
18
+ *
19
+ * const isEmpty = Pipeline
20
+ * // You must define the initial argument type
21
+ * .start<string>()
22
+ * // You can extract the function if you want.
23
+ * // You can also pass in an object that implements IInvokableObject contract
24
+ * .pipe(value => value.length)
25
+ * .pipe(value => value === 0);
26
+ *
27
+ * // You can extend the previous pipeline
28
+ * const isNotEmpty = isEmpty.pipe(isEmpty => !isEmpty);
29
+ *
30
+ * const result1 = await isEmpty.invoke("");
31
+ * // true
32
+ * console.log(result1);
33
+ *
34
+ * const result2 = await isNotEmpty.invoke("asdasd");
35
+ * // true
36
+ * console.log(result2);
37
+ * ```
38
+ */
39
+ static start<TValue>(): Pipeline<TValue>;
40
+ private static execute;
41
+ private readonly pipes;
42
+ private constructor();
43
+ pipe<TInput extends TCurrent, TOutput>(pipe: Invokable<TInput, TOutput>): Pipeline<TInitial, TCurrent, TOutput>;
44
+ invoke(value: AsyncLazyable<TInitial>): LazyPromise<TCurrent>;
45
+ }
@@ -0,0 +1,75 @@
1
+ /**
2
+ * @module Utilities
3
+ */
4
+ import { LazyPromise } from "../../async/_module-exports.js";
5
+ import { resolveAsyncLazyable } from "../../utilities/functions.js";
6
+ /**
7
+ * The <i>Pipeline</i> class provides a convenient way to pipe multiple functions and <i>{@link IInvokableObject}</i>,
8
+ * giving each functions and <i>{@link IInvokableObject}</i> the opportunity to inspect or modify the input.
9
+ * Pipeline class is immutable meaning you can extend it without causing problems.
10
+ *
11
+ * IMPORT_PATH: ```"@daiso-tech/core/utilities"```
12
+ */
13
+ export class Pipeline {
14
+ /**
15
+ * @example
16
+ * ```ts
17
+ * import { Pipeline, type IInvokableObject } from "@daiso-tech/core/utilities";
18
+ *
19
+ * const isEmpty = Pipeline
20
+ * // You must define the initial argument type
21
+ * .start<string>()
22
+ * // You can extract the function if you want.
23
+ * // You can also pass in an object that implements IInvokableObject contract
24
+ * .pipe(value => value.length)
25
+ * .pipe(value => value === 0);
26
+ *
27
+ * // You can extend the previous pipeline
28
+ * const isNotEmpty = isEmpty.pipe(isEmpty => !isEmpty);
29
+ *
30
+ * const result1 = await isEmpty.invoke("");
31
+ * // true
32
+ * console.log(result1);
33
+ *
34
+ * const result2 = await isNotEmpty.invoke("asdasd");
35
+ * // true
36
+ * console.log(result2);
37
+ * ```
38
+ */
39
+ static start() {
40
+ return new Pipeline();
41
+ }
42
+ static async execute(value, pipe) {
43
+ if (typeof pipe === "function") {
44
+ return await pipe(value);
45
+ }
46
+ return pipe.invoke(value);
47
+ }
48
+ pipes = [];
49
+ constructor(pipe) {
50
+ if (pipe !== undefined) {
51
+ this.pipes = [...this.pipes, pipe];
52
+ }
53
+ }
54
+ pipe(pipe) {
55
+ return new Pipeline(pipe);
56
+ }
57
+ invoke(value) {
58
+ return new LazyPromise(async () => {
59
+ const [pipe, ...pipes] = this.pipes;
60
+ const resolvedValue = await resolveAsyncLazyable(value);
61
+ if (pipe === undefined) {
62
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
63
+ return resolvedValue;
64
+ }
65
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
66
+ let value_ = await Pipeline.execute(resolvedValue, pipe);
67
+ for (const pipe of pipes) {
68
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
69
+ value_ = await Pipeline.execute(value, pipe);
70
+ }
71
+ return value_;
72
+ });
73
+ }
74
+ }
75
+ //# sourceMappingURL=pipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../../src/utilities/pipeline/pipeline.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAMzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE;;;;;;GAMG;AACH,MAAM,OAAO,QAAQ;IAGjB;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,MAAM,CAAC,KAAK;QACR,OAAO,IAAI,QAAQ,EAAE,CAAC;IAC1B,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,OAAO,CACxB,KAAa,EACb,IAAgC;QAEhC,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE,CAAC;YAC7B,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAEgB,KAAK,GAA0B,EAAE,CAAC;IAEnD,YAAoB,IAA0B;QAC1C,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACvC,CAAC;IACL,CAAC;IAED,IAAI,CACA,IAAgC;QAEhC,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,CAAC,KAA8B;QACjC,OAAO,IAAI,WAAW,CAAC,KAAK,IAAI,EAAE;YAC9B,MAAM,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;YACpC,MAAM,aAAa,GAAG,MAAM,oBAAoB,CAAC,KAAK,CAAC,CAAC;YACxD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACrB,+DAA+D;gBAC/D,OAAO,aAAoB,CAAC;YAChC,CAAC;YACD,mEAAmE;YACnE,IAAI,MAAM,GAAa,MAAM,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YACnE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACvB,mEAAmE;gBACnE,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YACjD,CAAC;YACD,OAAO,MAAM,CAAC;QAClB,CAAC,CAAC,CAAC;IACP,CAAC;CACJ"}
@@ -2,30 +2,21 @@
2
2
  * @module Utilities
3
3
  */
4
4
  import type { ISerializable } from "../../serde/contracts/_module-exports.js";
5
- /**
6
- *
7
- * IMPORT_PATH: ```"@daiso-tech/core/utilities"```
8
- * @group Time utilities
9
- */
10
- export type ISerializedTimeSpan = {
11
- timeInMs: number;
12
- };
13
5
  /**
14
6
  * The <i>TimeSpan</i> class is used for representing time interval that is the difference between two times measured in a number of days, hours, minutes, and seconds.
15
7
  * <i>TimeSpan</i> cannot be negative.
16
8
  *
17
9
  * IMPORT_PATH: ```"@daiso-tech/core/utilities"```
18
- * @group Time utilities
19
10
  */
20
- export declare class TimeSpan implements ISerializable<ISerializedTimeSpan> {
11
+ export declare class TimeSpan implements ISerializable<number> {
21
12
  private readonly milliseconds;
22
13
  private static secondInMilliseconds;
23
14
  private static minuteInMilliseconds;
24
15
  private static hourInMilliseconds;
25
16
  private static dayInMilliseconds;
26
- static deserialize(serializedValue: ISerializedTimeSpan): TimeSpan;
17
+ static deserialize(timeInMs: number): TimeSpan;
27
18
  private constructor();
28
- serialize(): ISerializedTimeSpan;
19
+ serialize(): number;
29
20
  static fromMilliseconds(milliseconds: number): TimeSpan;
30
21
  static fromSeconds(seconds: number): TimeSpan;
31
22
  static fromMinutes(minutes: number): TimeSpan;
@@ -6,7 +6,6 @@
6
6
  * <i>TimeSpan</i> cannot be negative.
7
7
  *
8
8
  * IMPORT_PATH: ```"@daiso-tech/core/utilities"```
9
- * @group Time utilities
10
9
  */
11
10
  export class TimeSpan {
12
11
  milliseconds;
@@ -14,17 +13,15 @@ export class TimeSpan {
14
13
  static minuteInMilliseconds = 60 * TimeSpan.secondInMilliseconds;
15
14
  static hourInMilliseconds = 60 * TimeSpan.minuteInMilliseconds;
16
15
  static dayInMilliseconds = 24 * TimeSpan.hourInMilliseconds;
17
- static deserialize(serializedValue) {
18
- return new TimeSpan(serializedValue.timeInMs);
16
+ static deserialize(timeInMs) {
17
+ return new TimeSpan(timeInMs);
19
18
  }
20
19
  constructor(milliseconds = 0) {
21
20
  this.milliseconds = milliseconds;
22
21
  this.milliseconds = Math.max(0, this.milliseconds);
23
22
  }
24
23
  serialize() {
25
- return {
26
- timeInMs: this.toMilliseconds(),
27
- };
24
+ return this.toMilliseconds();
28
25
  }
29
26
  static fromMilliseconds(milliseconds) {
30
27
  return new TimeSpan().addMilliseconds(milliseconds);
@@ -1 +1 @@
1
- {"version":3,"file":"time-span.js","sourceRoot":"","sources":["../../../src/utilities/time-span/time-span.ts"],"names":[],"mappings":"AAAA;;GAEG;AAaH;;;;;;GAMG;AACH,MAAM,OAAO,QAAQ;IAUoB;IAT7B,MAAM,CAAC,oBAAoB,GAAG,IAAI,CAAC;IACnC,MAAM,CAAC,oBAAoB,GAAG,EAAE,GAAG,QAAQ,CAAC,oBAAoB,CAAC;IACjE,MAAM,CAAC,kBAAkB,GAAG,EAAE,GAAG,QAAQ,CAAC,oBAAoB,CAAC;IAC/D,MAAM,CAAC,iBAAiB,GAAG,EAAE,GAAG,QAAQ,CAAC,kBAAkB,CAAC;IAEpE,MAAM,CAAC,WAAW,CAAC,eAAoC;QACnD,OAAO,IAAI,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;IAClD,CAAC;IAED,YAAqC,eAAuB,CAAC;QAAxB,iBAAY,GAAZ,YAAY,CAAY;QACzD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IACvD,CAAC;IAED,SAAS;QACL,OAAO;YACH,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE;SAClC,CAAC;IACN,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,YAAoB;QACxC,OAAO,IAAI,QAAQ,EAAE,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,OAAe;QAC9B,OAAO,IAAI,QAAQ,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,OAAe;QAC9B,OAAO,IAAI,QAAQ,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,KAAa;QAC1B,OAAO,IAAI,QAAQ,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAAY;QACxB,OAAO,IAAI,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,QAAkB;QAClC,OAAO,IAAI,QAAQ,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,IAAU,EAAE,EAAQ;QACrC,OAAO,IAAI,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,eAAe,CAAC,YAAoB;QAChC,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,YAAY,CAAC,CAAC;IAC9D,CAAC;IAED,UAAU,CAAC,OAAe;QACtB,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,oBAAoB,GAAG,OAAO,CAAC,CAAC;IACzE,CAAC;IAED,UAAU,CAAC,OAAe;QACtB,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,oBAAoB,GAAG,OAAO,CAAC,CAAC;IACzE,CAAC;IAED,QAAQ,CAAC,KAAa;QAClB,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,kBAAkB,GAAG,KAAK,CAAC,CAAC;IACrE,CAAC;IAED,OAAO,CAAC,IAAY;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IACnE,CAAC;IAED,WAAW,CAAC,QAAkB;QAC1B,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,oBAAoB,CAAC,YAAoB;QACrC,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,YAAY,CAAC,CAAC;IAC9D,CAAC;IAED,eAAe,CAAC,OAAe;QAC3B,OAAO,IAAI,CAAC,oBAAoB,CAC5B,QAAQ,CAAC,oBAAoB,GAAG,OAAO,CAC1C,CAAC;IACN,CAAC;IAED,eAAe,CAAC,OAAe;QAC3B,OAAO,IAAI,CAAC,oBAAoB,CAC5B,QAAQ,CAAC,oBAAoB,GAAG,OAAO,CAC1C,CAAC;IACN,CAAC;IAED,aAAa,CAAC,KAAa;QACvB,OAAO,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,kBAAkB,GAAG,KAAK,CAAC,CAAC;IAC1E,CAAC;IAED,YAAY,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IACxE,CAAC;IAED,gBAAgB,CAAC,QAAkB;QAC/B,OAAO,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,QAAQ,CAAC,KAAa;QAClB,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,CAAC,KAAa;QAChB,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,cAAc;QACV,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IAED,SAAS;QACL,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,oBAAoB,CAAC,CAAC;IACzE,CAAC;IAED,SAAS;QACL,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,oBAAoB,CAAC,CAAC;IACzE,CAAC;IAED,OAAO;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,kBAAkB,CAAC,CAAC;IACvE,CAAC;IAED,MAAM;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IACtE,CAAC;IAED,cAAc;QACV,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,CAAC;IACpD,CAAC;IAED;;;OAGG;IACH,SAAS,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE;QAC5B,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;IACjE,CAAC;IAED;;;OAGG;IACH,WAAW,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE;QAC5B,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;IAC/D,CAAC"}
1
+ {"version":3,"file":"time-span.js","sourceRoot":"","sources":["../../../src/utilities/time-span/time-span.ts"],"names":[],"mappings":"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"}
@@ -21,7 +21,12 @@ export type Promisable<TValue> = TValue | PromiseLike<TValue>;
21
21
  * IMPORT_PATH: ```"@daiso-tech/core/utilities"```
22
22
  * @group Contracts
23
23
  */
24
- export type AsyncLazyable<TValue> = TValue | LazyPromise<TValue> | (() => Promisable<TValue>);
24
+ export type LazyPromiseable<TValue> = LazyPromise<TValue> | (() => Promisable<TValue>);
25
+ /**
26
+ * IMPORT_PATH: ```"@daiso-tech/core/utilities"```
27
+ * @group Contracts
28
+ */
29
+ export type AsyncLazyable<TValue> = TValue | LazyPromiseable<TValue>;
25
30
  /**
26
31
  * IMPORT_PATH: ```"@daiso-tech/core/utilities"```
27
32
  * @group Contracts
@@ -51,4 +56,16 @@ export type GetOrAddValue<TValue> = Awaited<TValue extends AnyFunction ? ReturnT
51
56
  * IMPORT_PATH: ```"@daiso-tech/core/utilities"```
52
57
  * @group Contracts
53
58
  */
54
- export type LazyPromiseable<TValue> = (() => PromiseLike<TValue>) | LazyPromise<TValue>;
59
+ export type InvokableFn<TInput = unknown, TOutput = unknown> = (value: TInput) => Promisable<TOutput>;
60
+ /**
61
+ * IMPORT_PATH: ```"@daiso-tech/core/utilities"```
62
+ * @group Contracts
63
+ */
64
+ export type IInvokableObject<TInput = unknown, TOutput = unknown> = {
65
+ invoke(value: TInput): Promisable<TOutput>;
66
+ };
67
+ /**
68
+ * IMPORT_PATH: ```"@daiso-tech/core/utilities"```
69
+ * @group Contracts
70
+ */
71
+ export type Invokable<TInput = unknown, TOutput = unknown> = InvokableFn<TInput, TOutput> | IInvokableObject<TInput, TOutput>;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@daiso-tech/core",
3
3
  "private": false,
4
- "version": "0.25.0",
4
+ "version": "0.26.1",
5
5
  "author": "Yousif Abdulkarim",
6
6
  "license": "Apache-2.0",
7
7
  "type": "module",
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/utilities/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC"}