@zeitar/throttle 1.0.0 → 1.1.0

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 (162) hide show
  1. package/README.md +17 -0
  2. package/dist/CompoundLimiter.d.ts +0 -1
  3. package/dist/CompoundLimiter.js +0 -1
  4. package/dist/CompoundRateLimiterFactory.d.ts +0 -1
  5. package/dist/CompoundRateLimiterFactory.js +0 -1
  6. package/dist/LimiterInterface.d.ts +0 -1
  7. package/dist/LimiterInterface.js +0 -1
  8. package/dist/LimiterStateInterface.d.ts +0 -1
  9. package/dist/LimiterStateInterface.js +0 -1
  10. package/dist/RateLimit.d.ts +0 -1
  11. package/dist/RateLimit.js +0 -1
  12. package/dist/RateLimiterFactory.d.ts +0 -1
  13. package/dist/RateLimiterFactory.js +0 -1
  14. package/dist/RateLimiterFactoryInterface.d.ts +0 -1
  15. package/dist/RateLimiterFactoryInterface.js +0 -1
  16. package/dist/Reservation.d.ts +0 -1
  17. package/dist/Reservation.js +0 -1
  18. package/dist/errors/InvalidIntervalError.d.ts +0 -1
  19. package/dist/errors/InvalidIntervalError.js +0 -1
  20. package/dist/errors/MaxWaitDurationExceededError.d.ts +0 -1
  21. package/dist/errors/MaxWaitDurationExceededError.js +0 -1
  22. package/dist/errors/RateLimitExceededError.d.ts +0 -1
  23. package/dist/errors/RateLimitExceededError.js +0 -1
  24. package/dist/errors/ReserveNotSupportedError.d.ts +0 -1
  25. package/dist/errors/ReserveNotSupportedError.js +0 -1
  26. package/dist/index.d.ts +0 -1
  27. package/dist/index.js +0 -1
  28. package/dist/policy/FixedWindowLimiter.d.ts +0 -1
  29. package/dist/policy/FixedWindowLimiter.js +0 -1
  30. package/dist/policy/NoLimiter.d.ts +0 -1
  31. package/dist/policy/NoLimiter.js +0 -1
  32. package/dist/policy/Rate.d.ts +0 -1
  33. package/dist/policy/Rate.js +0 -1
  34. package/dist/policy/SlidingWindow.d.ts +0 -1
  35. package/dist/policy/SlidingWindow.js +0 -1
  36. package/dist/policy/SlidingWindowLimiter.d.ts +0 -1
  37. package/dist/policy/SlidingWindowLimiter.js +0 -1
  38. package/dist/policy/TokenBucket.d.ts +0 -1
  39. package/dist/policy/TokenBucket.js +0 -1
  40. package/dist/policy/TokenBucketLimiter.d.ts +0 -1
  41. package/dist/policy/TokenBucketLimiter.js +0 -1
  42. package/dist/policy/Window.d.ts +0 -1
  43. package/dist/policy/Window.js +0 -1
  44. package/dist/storage/InMemoryStorage.d.ts +0 -1
  45. package/dist/storage/InMemoryStorage.js +0 -1
  46. package/dist/storage/LockInterface.d.ts +0 -1
  47. package/dist/storage/LockInterface.js +0 -1
  48. package/dist/storage/StorageInterface.d.ts +0 -1
  49. package/dist/storage/StorageInterface.js +0 -1
  50. package/dist/util/TimeUtil.d.ts +0 -1
  51. package/dist/util/TimeUtil.js +0 -1
  52. package/package.json +1 -2
  53. package/dist/CompoundLimiter.d.ts.map +0 -1
  54. package/dist/CompoundLimiter.js.map +0 -1
  55. package/dist/CompoundRateLimiterFactory.d.ts.map +0 -1
  56. package/dist/CompoundRateLimiterFactory.js.map +0 -1
  57. package/dist/LimiterInterface.d.ts.map +0 -1
  58. package/dist/LimiterInterface.js.map +0 -1
  59. package/dist/LimiterStateInterface.d.ts.map +0 -1
  60. package/dist/LimiterStateInterface.js.map +0 -1
  61. package/dist/RateLimit.d.ts.map +0 -1
  62. package/dist/RateLimit.js.map +0 -1
  63. package/dist/RateLimiterFactory.d.ts.map +0 -1
  64. package/dist/RateLimiterFactory.js.map +0 -1
  65. package/dist/RateLimiterFactoryInterface.d.ts.map +0 -1
  66. package/dist/RateLimiterFactoryInterface.js.map +0 -1
  67. package/dist/Reservation.d.ts.map +0 -1
  68. package/dist/Reservation.js.map +0 -1
  69. package/dist/__tests__/CompoundLimiter.test.d.ts +0 -2
  70. package/dist/__tests__/CompoundLimiter.test.d.ts.map +0 -1
  71. package/dist/__tests__/CompoundLimiter.test.js +0 -231
  72. package/dist/__tests__/CompoundLimiter.test.js.map +0 -1
  73. package/dist/__tests__/CompoundRateLimiterFactory.test.d.ts +0 -2
  74. package/dist/__tests__/CompoundRateLimiterFactory.test.d.ts.map +0 -1
  75. package/dist/__tests__/CompoundRateLimiterFactory.test.js +0 -213
  76. package/dist/__tests__/CompoundRateLimiterFactory.test.js.map +0 -1
  77. package/dist/__tests__/RateLimit.test.d.ts +0 -2
  78. package/dist/__tests__/RateLimit.test.d.ts.map +0 -1
  79. package/dist/__tests__/RateLimit.test.js +0 -108
  80. package/dist/__tests__/RateLimit.test.js.map +0 -1
  81. package/dist/__tests__/RateLimiterFactory.test.d.ts +0 -2
  82. package/dist/__tests__/RateLimiterFactory.test.d.ts.map +0 -1
  83. package/dist/__tests__/RateLimiterFactory.test.js +0 -323
  84. package/dist/__tests__/RateLimiterFactory.test.js.map +0 -1
  85. package/dist/__tests__/Reservation.test.d.ts +0 -2
  86. package/dist/__tests__/Reservation.test.d.ts.map +0 -1
  87. package/dist/__tests__/Reservation.test.js +0 -110
  88. package/dist/__tests__/Reservation.test.js.map +0 -1
  89. package/dist/errors/InvalidIntervalError.d.ts.map +0 -1
  90. package/dist/errors/InvalidIntervalError.js.map +0 -1
  91. package/dist/errors/MaxWaitDurationExceededError.d.ts.map +0 -1
  92. package/dist/errors/MaxWaitDurationExceededError.js.map +0 -1
  93. package/dist/errors/RateLimitExceededError.d.ts.map +0 -1
  94. package/dist/errors/RateLimitExceededError.js.map +0 -1
  95. package/dist/errors/ReserveNotSupportedError.d.ts.map +0 -1
  96. package/dist/errors/ReserveNotSupportedError.js.map +0 -1
  97. package/dist/index.d.ts.map +0 -1
  98. package/dist/index.js.map +0 -1
  99. package/dist/policy/FixedWindowLimiter.d.ts.map +0 -1
  100. package/dist/policy/FixedWindowLimiter.js.map +0 -1
  101. package/dist/policy/NoLimiter.d.ts.map +0 -1
  102. package/dist/policy/NoLimiter.js.map +0 -1
  103. package/dist/policy/Rate.d.ts.map +0 -1
  104. package/dist/policy/Rate.js.map +0 -1
  105. package/dist/policy/SlidingWindow.d.ts.map +0 -1
  106. package/dist/policy/SlidingWindow.js.map +0 -1
  107. package/dist/policy/SlidingWindowLimiter.d.ts.map +0 -1
  108. package/dist/policy/SlidingWindowLimiter.js.map +0 -1
  109. package/dist/policy/TokenBucket.d.ts.map +0 -1
  110. package/dist/policy/TokenBucket.js.map +0 -1
  111. package/dist/policy/TokenBucketLimiter.d.ts.map +0 -1
  112. package/dist/policy/TokenBucketLimiter.js.map +0 -1
  113. package/dist/policy/Window.d.ts.map +0 -1
  114. package/dist/policy/Window.js.map +0 -1
  115. package/dist/policy/__tests__/FixedWindowLimiter.test.d.ts +0 -2
  116. package/dist/policy/__tests__/FixedWindowLimiter.test.d.ts.map +0 -1
  117. package/dist/policy/__tests__/FixedWindowLimiter.test.js +0 -180
  118. package/dist/policy/__tests__/FixedWindowLimiter.test.js.map +0 -1
  119. package/dist/policy/__tests__/NoLimiter.test.d.ts +0 -2
  120. package/dist/policy/__tests__/NoLimiter.test.d.ts.map +0 -1
  121. package/dist/policy/__tests__/NoLimiter.test.js +0 -40
  122. package/dist/policy/__tests__/NoLimiter.test.js.map +0 -1
  123. package/dist/policy/__tests__/Rate.test.d.ts +0 -2
  124. package/dist/policy/__tests__/Rate.test.d.ts.map +0 -1
  125. package/dist/policy/__tests__/Rate.test.js +0 -162
  126. package/dist/policy/__tests__/Rate.test.js.map +0 -1
  127. package/dist/policy/__tests__/SlidingWindow.test.d.ts +0 -2
  128. package/dist/policy/__tests__/SlidingWindow.test.d.ts.map +0 -1
  129. package/dist/policy/__tests__/SlidingWindow.test.js +0 -257
  130. package/dist/policy/__tests__/SlidingWindow.test.js.map +0 -1
  131. package/dist/policy/__tests__/SlidingWindowLimiter.test.d.ts +0 -2
  132. package/dist/policy/__tests__/SlidingWindowLimiter.test.d.ts.map +0 -1
  133. package/dist/policy/__tests__/SlidingWindowLimiter.test.js +0 -201
  134. package/dist/policy/__tests__/SlidingWindowLimiter.test.js.map +0 -1
  135. package/dist/policy/__tests__/TokenBucket.test.d.ts +0 -2
  136. package/dist/policy/__tests__/TokenBucket.test.d.ts.map +0 -1
  137. package/dist/policy/__tests__/TokenBucket.test.js +0 -171
  138. package/dist/policy/__tests__/TokenBucket.test.js.map +0 -1
  139. package/dist/policy/__tests__/TokenBucketLimiter.test.d.ts +0 -2
  140. package/dist/policy/__tests__/TokenBucketLimiter.test.d.ts.map +0 -1
  141. package/dist/policy/__tests__/TokenBucketLimiter.test.js +0 -175
  142. package/dist/policy/__tests__/TokenBucketLimiter.test.js.map +0 -1
  143. package/dist/policy/__tests__/Window.test.d.ts +0 -2
  144. package/dist/policy/__tests__/Window.test.d.ts.map +0 -1
  145. package/dist/policy/__tests__/Window.test.js +0 -193
  146. package/dist/policy/__tests__/Window.test.js.map +0 -1
  147. package/dist/storage/InMemoryStorage.d.ts.map +0 -1
  148. package/dist/storage/InMemoryStorage.js.map +0 -1
  149. package/dist/storage/LockInterface.d.ts.map +0 -1
  150. package/dist/storage/LockInterface.js.map +0 -1
  151. package/dist/storage/StorageInterface.d.ts.map +0 -1
  152. package/dist/storage/StorageInterface.js.map +0 -1
  153. package/dist/storage/__tests__/InMemoryStorage.test.d.ts +0 -2
  154. package/dist/storage/__tests__/InMemoryStorage.test.d.ts.map +0 -1
  155. package/dist/storage/__tests__/InMemoryStorage.test.js +0 -154
  156. package/dist/storage/__tests__/InMemoryStorage.test.js.map +0 -1
  157. package/dist/util/TimeUtil.d.ts.map +0 -1
  158. package/dist/util/TimeUtil.js.map +0 -1
  159. package/dist/util/__tests__/TimeUtil.test.d.ts +0 -2
  160. package/dist/util/__tests__/TimeUtil.test.d.ts.map +0 -1
  161. package/dist/util/__tests__/TimeUtil.test.js +0 -132
  162. package/dist/util/__tests__/TimeUtil.test.js.map +0 -1
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=InMemoryStorage.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"InMemoryStorage.test.d.ts","sourceRoot":"","sources":["../../../src/storage/__tests__/InMemoryStorage.test.ts"],"names":[],"mappings":""}
@@ -1,154 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const InMemoryStorage_1 = require("../InMemoryStorage");
4
- const TokenBucket_1 = require("../../policy/TokenBucket");
5
- const Rate_1 = require("../../policy/Rate");
6
- describe('InMemoryStorage', () => {
7
- let storage;
8
- let bucket;
9
- beforeEach(() => {
10
- storage = new InMemoryStorage_1.InMemoryStorage();
11
- bucket = new TokenBucket_1.TokenBucket('test-bucket', 10, Rate_1.Rate.perSecond(1));
12
- });
13
- describe('save and fetch', () => {
14
- it('should save and fetch a state object', async () => {
15
- await storage.save(bucket);
16
- const fetched = await storage.fetch('test-bucket');
17
- expect(fetched).toBe(bucket);
18
- expect(fetched?.getId()).toBe('test-bucket');
19
- });
20
- it('should return null for non-existent id', async () => {
21
- const fetched = await storage.fetch('non-existent');
22
- expect(fetched).toBeNull();
23
- });
24
- it('should overwrite existing state with same id', async () => {
25
- const bucket1 = new TokenBucket_1.TokenBucket('test-id', 10, Rate_1.Rate.perSecond(1), 5);
26
- const bucket2 = new TokenBucket_1.TokenBucket('test-id', 20, Rate_1.Rate.perSecond(2), 10);
27
- await storage.save(bucket1);
28
- await storage.save(bucket2);
29
- const fetched = await storage.fetch('test-id');
30
- expect(fetched).toBe(bucket2);
31
- expect(fetched.getBurstSize()).toBe(20);
32
- });
33
- it('should handle multiple different states', async () => {
34
- const bucket1 = new TokenBucket_1.TokenBucket('bucket-1', 10, Rate_1.Rate.perSecond(1));
35
- const bucket2 = new TokenBucket_1.TokenBucket('bucket-2', 20, Rate_1.Rate.perSecond(2));
36
- const bucket3 = new TokenBucket_1.TokenBucket('bucket-3', 30, Rate_1.Rate.perSecond(3));
37
- await storage.save(bucket1);
38
- await storage.save(bucket2);
39
- await storage.save(bucket3);
40
- expect(await storage.fetch('bucket-1')).toBe(bucket1);
41
- expect(await storage.fetch('bucket-2')).toBe(bucket2);
42
- expect(await storage.fetch('bucket-3')).toBe(bucket3);
43
- });
44
- });
45
- describe('delete', () => {
46
- it('should delete a state object', async () => {
47
- await storage.save(bucket);
48
- await storage.delete('test-bucket');
49
- const fetched = await storage.fetch('test-bucket');
50
- expect(fetched).toBeNull();
51
- });
52
- it('should not throw when deleting non-existent id', async () => {
53
- await expect(storage.delete('non-existent')).resolves.not.toThrow();
54
- });
55
- it('should only delete the specified id', async () => {
56
- const bucket1 = new TokenBucket_1.TokenBucket('bucket-1', 10, Rate_1.Rate.perSecond(1));
57
- const bucket2 = new TokenBucket_1.TokenBucket('bucket-2', 20, Rate_1.Rate.perSecond(2));
58
- await storage.save(bucket1);
59
- await storage.save(bucket2);
60
- await storage.delete('bucket-1');
61
- expect(await storage.fetch('bucket-1')).toBeNull();
62
- expect(await storage.fetch('bucket-2')).toBe(bucket2);
63
- });
64
- });
65
- describe('expiration', () => {
66
- it('should return null for expired entries', async () => {
67
- jest.useFakeTimers();
68
- const now = Date.now();
69
- jest.setSystemTime(now);
70
- // Create a bucket that will expire in 10 seconds
71
- const expirableBucket = new TokenBucket_1.TokenBucket('expirable', 10, Rate_1.Rate.perSecond(1), 0, now / 1000);
72
- await storage.save(expirableBucket);
73
- // Should exist before expiration
74
- expect(await storage.fetch('expirable')).toBe(expirableBucket);
75
- // Advance time past expiration (bucket expires after it can fully refill)
76
- const expirationMs = expirableBucket.getExpirationTime() * 1000;
77
- jest.setSystemTime(expirationMs + 1000);
78
- // Should return null after expiration
79
- expect(await storage.fetch('expirable')).toBeNull();
80
- jest.useRealTimers();
81
- });
82
- it('should automatically clean up expired entries on fetch', async () => {
83
- jest.useFakeTimers();
84
- const now = Date.now();
85
- jest.setSystemTime(now);
86
- const expirableBucket = new TokenBucket_1.TokenBucket('expirable', 10, Rate_1.Rate.perSecond(1), 0, now / 1000);
87
- await storage.save(expirableBucket);
88
- expect(storage.size()).toBe(1);
89
- // Advance time past expiration
90
- const expirationMs = expirableBucket.getExpirationTime() * 1000;
91
- jest.setSystemTime(expirationMs + 1000);
92
- // Fetch should clean up the expired entry
93
- await storage.fetch('expirable');
94
- expect(storage.size()).toBe(0);
95
- jest.useRealTimers();
96
- });
97
- it('should handle entries with no expiration (null)', async () => {
98
- // Create a mock state with no expiration
99
- const noExpirationState = {
100
- getId: () => 'no-expiration',
101
- getExpirationTime: () => null,
102
- };
103
- await storage.save(noExpirationState);
104
- // Should always be fetchable
105
- expect(await storage.fetch('no-expiration')).toBe(noExpirationState);
106
- });
107
- });
108
- describe('clear', () => {
109
- it('should clear all stored states', async () => {
110
- const bucket1 = new TokenBucket_1.TokenBucket('bucket-1', 10, Rate_1.Rate.perSecond(1));
111
- const bucket2 = new TokenBucket_1.TokenBucket('bucket-2', 20, Rate_1.Rate.perSecond(2));
112
- await storage.save(bucket1);
113
- await storage.save(bucket2);
114
- storage.clear();
115
- expect(await storage.fetch('bucket-1')).toBeNull();
116
- expect(await storage.fetch('bucket-2')).toBeNull();
117
- expect(storage.size()).toBe(0);
118
- });
119
- it('should handle clearing empty storage', () => {
120
- expect(() => storage.clear()).not.toThrow();
121
- expect(storage.size()).toBe(0);
122
- });
123
- });
124
- describe('size', () => {
125
- it('should return 0 for empty storage', () => {
126
- expect(storage.size()).toBe(0);
127
- });
128
- it('should return correct size after adding entries', async () => {
129
- expect(storage.size()).toBe(0);
130
- await storage.save(new TokenBucket_1.TokenBucket('bucket-1', 10, Rate_1.Rate.perSecond(1)));
131
- expect(storage.size()).toBe(1);
132
- await storage.save(new TokenBucket_1.TokenBucket('bucket-2', 20, Rate_1.Rate.perSecond(2)));
133
- expect(storage.size()).toBe(2);
134
- await storage.save(new TokenBucket_1.TokenBucket('bucket-3', 30, Rate_1.Rate.perSecond(3)));
135
- expect(storage.size()).toBe(3);
136
- });
137
- it('should return correct size after deleting entries', async () => {
138
- await storage.save(new TokenBucket_1.TokenBucket('bucket-1', 10, Rate_1.Rate.perSecond(1)));
139
- await storage.save(new TokenBucket_1.TokenBucket('bucket-2', 20, Rate_1.Rate.perSecond(2)));
140
- expect(storage.size()).toBe(2);
141
- await storage.delete('bucket-1');
142
- expect(storage.size()).toBe(1);
143
- await storage.delete('bucket-2');
144
- expect(storage.size()).toBe(0);
145
- });
146
- it('should not change size when saving same id', async () => {
147
- await storage.save(new TokenBucket_1.TokenBucket('bucket-1', 10, Rate_1.Rate.perSecond(1)));
148
- expect(storage.size()).toBe(1);
149
- await storage.save(new TokenBucket_1.TokenBucket('bucket-1', 20, Rate_1.Rate.perSecond(2)));
150
- expect(storage.size()).toBe(1);
151
- });
152
- });
153
- });
154
- //# sourceMappingURL=InMemoryStorage.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"InMemoryStorage.test.js","sourceRoot":"","sources":["../../../src/storage/__tests__/InMemoryStorage.test.ts"],"names":[],"mappings":";;AAAA,wDAAqD;AACrD,0DAAuD;AACvD,4CAAyC;AAEzC,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,IAAI,OAAwB,CAAC;IAC7B,IAAI,MAAmB,CAAC;IAExB,UAAU,CAAC,GAAG,EAAE;QACd,OAAO,GAAG,IAAI,iCAAe,EAAE,CAAC;QAChC,MAAM,GAAG,IAAI,yBAAW,CAAC,aAAa,EAAE,EAAE,EAAE,WAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;YACpD,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC3B,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAEnD,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC7B,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;YACtD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YACpD,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;YAC5D,MAAM,OAAO,GAAG,IAAI,yBAAW,CAAC,SAAS,EAAE,EAAE,EAAE,WAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACrE,MAAM,OAAO,GAAG,IAAI,yBAAW,CAAC,SAAS,EAAE,EAAE,EAAE,WAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAEtE,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC5B,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAE5B,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC/C,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC9B,MAAM,CAAE,OAAuB,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;YACvD,MAAM,OAAO,GAAG,IAAI,yBAAW,CAAC,UAAU,EAAE,EAAE,EAAE,WAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YACnE,MAAM,OAAO,GAAG,IAAI,yBAAW,CAAC,UAAU,EAAE,EAAE,EAAE,WAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YACnE,MAAM,OAAO,GAAG,IAAI,yBAAW,CAAC,UAAU,EAAE,EAAE,EAAE,WAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YAEnE,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC5B,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC5B,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAE5B,MAAM,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACtD,MAAM,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACtD,MAAM,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtB,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;YAC5C,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC3B,MAAM,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YAEpC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YACnD,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;YAC9D,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACtE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACnD,MAAM,OAAO,GAAG,IAAI,yBAAW,CAAC,UAAU,EAAE,EAAE,EAAE,WAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YACnE,MAAM,OAAO,GAAG,IAAI,yBAAW,CAAC,UAAU,EAAE,EAAE,EAAE,WAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YAEnE,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC5B,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC5B,MAAM,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAEjC,MAAM,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YACnD,MAAM,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;YACtD,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YAExB,iDAAiD;YACjD,MAAM,eAAe,GAAG,IAAI,yBAAW,CAAC,WAAW,EAAE,EAAE,EAAE,WAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC;YAC3F,MAAM,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAEpC,iCAAiC;YACjC,MAAM,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAE/D,0EAA0E;YAC1E,MAAM,YAAY,GAAG,eAAe,CAAC,iBAAiB,EAAE,GAAG,IAAI,CAAC;YAChE,IAAI,CAAC,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;YAExC,sCAAsC;YACtC,MAAM,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YAEpD,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;YACtE,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YAExB,MAAM,eAAe,GAAG,IAAI,yBAAW,CAAC,WAAW,EAAE,EAAE,EAAE,WAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC;YAC3F,MAAM,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAEpC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAE/B,+BAA+B;YAC/B,MAAM,YAAY,GAAG,eAAe,CAAC,iBAAiB,EAAE,GAAG,IAAI,CAAC;YAChE,IAAI,CAAC,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;YAExC,0CAA0C;YAC1C,MAAM,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACjC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAE/B,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YAC/D,yCAAyC;YACzC,MAAM,iBAAiB,GAAG;gBACxB,KAAK,EAAE,GAAG,EAAE,CAAC,eAAe;gBAC5B,iBAAiB,EAAE,GAAG,EAAE,CAAC,IAAI;aAC9B,CAAC;YAEF,MAAM,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAEtC,6BAA6B;YAC7B,MAAM,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;QACrB,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;YAC9C,MAAM,OAAO,GAAG,IAAI,yBAAW,CAAC,UAAU,EAAE,EAAE,EAAE,WAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YACnE,MAAM,OAAO,GAAG,IAAI,yBAAW,CAAC,UAAU,EAAE,EAAE,EAAE,WAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YAEnE,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC5B,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAE5B,OAAO,CAAC,KAAK,EAAE,CAAC;YAEhB,MAAM,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YACnD,MAAM,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YACnD,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC9C,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YAC5C,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;QACpB,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC3C,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YAC/D,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAE/B,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,yBAAW,CAAC,UAAU,EAAE,EAAE,EAAE,WAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvE,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAE/B,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,yBAAW,CAAC,UAAU,EAAE,EAAE,EAAE,WAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvE,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAE/B,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,yBAAW,CAAC,UAAU,EAAE,EAAE,EAAE,WAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvE,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;YACjE,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,yBAAW,CAAC,UAAU,EAAE,EAAE,EAAE,WAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvE,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,yBAAW,CAAC,UAAU,EAAE,EAAE,EAAE,WAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvE,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAE/B,MAAM,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YACjC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAE/B,MAAM,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YACjC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;YAC1D,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,yBAAW,CAAC,UAAU,EAAE,EAAE,EAAE,WAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvE,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAE/B,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,yBAAW,CAAC,UAAU,EAAE,EAAE,EAAE,WAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvE,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TimeUtil.d.ts","sourceRoot":"","sources":["../../src/util/TimeUtil.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,QAAQ;IACnB;;;;;;;;;;;;;;;OAeG;IACH,MAAM,CAAC,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAkDlD;;OAEG;IACH,MAAM,CAAC,GAAG,IAAI,MAAM;IAIpB;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAItC;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;CAG5C"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TimeUtil.js","sourceRoot":"","sources":["../../src/util/TimeUtil.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,MAAa,QAAQ;IACnB;;;;;;;;;;;;;;;OAeG;IACH,MAAM,CAAC,iBAAiB,CAAC,QAAgB;QACvC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC9C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAE9C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,4BAA4B,QAAQ,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;QAClC,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAEvC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,+BAA+B,QAAQ,EAAE,CAAC,CAAC;QAC7D,CAAC;QAED,sBAAsB;QACtB,MAAM,OAAO,GAA2B;YACtC,CAAC,EAAE,CAAC;YACJ,GAAG,EAAE,CAAC;YACN,MAAM,EAAE,CAAC;YACT,OAAO,EAAE,CAAC;YACV,CAAC,EAAE,EAAE;YACL,GAAG,EAAE,EAAE;YACP,MAAM,EAAE,EAAE;YACV,OAAO,EAAE,EAAE;YACX,CAAC,EAAE,IAAI;YACP,EAAE,EAAE,IAAI;YACR,IAAI,EAAE,IAAI;YACV,KAAK,EAAE,IAAI;YACX,CAAC,EAAE,KAAK;YACR,GAAG,EAAE,KAAK;YACV,IAAI,EAAE,KAAK;YACX,CAAC,EAAE,MAAM;YACT,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,MAAM;YACb,KAAK,EAAE,OAAO,EAAE,UAAU;YAC1B,MAAM,EAAE,OAAO;YACf,CAAC,EAAE,QAAQ,EAAE,WAAW;YACxB,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,QAAQ;SAChB,CAAC;QAEF,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC;QAChD,CAAC;QAED,OAAO,MAAM,GAAG,UAAU,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,GAAG;QACR,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,EAAU;QAC3B,OAAO,EAAE,GAAG,IAAI,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,OAAe;QAChC,OAAO,OAAO,GAAG,IAAI,CAAC;IACxB,CAAC;CACF;AAvFD,4BAuFC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=TimeUtil.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TimeUtil.test.d.ts","sourceRoot":"","sources":["../../../src/util/__tests__/TimeUtil.test.ts"],"names":[],"mappings":""}
@@ -1,132 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const TimeUtil_1 = require("../TimeUtil");
4
- describe('TimeUtil', () => {
5
- describe('durationToSeconds', () => {
6
- it('should convert seconds correctly', () => {
7
- expect(TimeUtil_1.TimeUtil.durationToSeconds('1 second')).toBe(1);
8
- expect(TimeUtil_1.TimeUtil.durationToSeconds('2 seconds')).toBe(2);
9
- expect(TimeUtil_1.TimeUtil.durationToSeconds('5 s')).toBe(5);
10
- expect(TimeUtil_1.TimeUtil.durationToSeconds('10s')).toBe(10);
11
- expect(TimeUtil_1.TimeUtil.durationToSeconds('3 sec')).toBe(3);
12
- });
13
- it('should convert minutes correctly', () => {
14
- expect(TimeUtil_1.TimeUtil.durationToSeconds('1 minute')).toBe(60);
15
- expect(TimeUtil_1.TimeUtil.durationToSeconds('2 minutes')).toBe(120);
16
- expect(TimeUtil_1.TimeUtil.durationToSeconds('5 m')).toBe(300);
17
- expect(TimeUtil_1.TimeUtil.durationToSeconds('10m')).toBe(600);
18
- expect(TimeUtil_1.TimeUtil.durationToSeconds('3 min')).toBe(180);
19
- });
20
- it('should convert hours correctly', () => {
21
- expect(TimeUtil_1.TimeUtil.durationToSeconds('1 hour')).toBe(3600);
22
- expect(TimeUtil_1.TimeUtil.durationToSeconds('2 hours')).toBe(7200);
23
- expect(TimeUtil_1.TimeUtil.durationToSeconds('5 h')).toBe(18000);
24
- expect(TimeUtil_1.TimeUtil.durationToSeconds('10h')).toBe(36000);
25
- expect(TimeUtil_1.TimeUtil.durationToSeconds('3 hr')).toBe(10800);
26
- });
27
- it('should convert days correctly', () => {
28
- expect(TimeUtil_1.TimeUtil.durationToSeconds('1 day')).toBe(86400);
29
- expect(TimeUtil_1.TimeUtil.durationToSeconds('2 days')).toBe(172800);
30
- expect(TimeUtil_1.TimeUtil.durationToSeconds('7 d')).toBe(604800);
31
- expect(TimeUtil_1.TimeUtil.durationToSeconds('10d')).toBe(864000);
32
- });
33
- it('should convert weeks correctly', () => {
34
- expect(TimeUtil_1.TimeUtil.durationToSeconds('1 week')).toBe(604800);
35
- expect(TimeUtil_1.TimeUtil.durationToSeconds('2 weeks')).toBe(1209600);
36
- expect(TimeUtil_1.TimeUtil.durationToSeconds('3 w')).toBe(1814400);
37
- expect(TimeUtil_1.TimeUtil.durationToSeconds('4w')).toBe(2419200);
38
- });
39
- it('should convert months correctly (30 days)', () => {
40
- expect(TimeUtil_1.TimeUtil.durationToSeconds('1 month')).toBe(2592000);
41
- expect(TimeUtil_1.TimeUtil.durationToSeconds('2 months')).toBe(5184000);
42
- expect(TimeUtil_1.TimeUtil.durationToSeconds('3 month')).toBe(7776000);
43
- });
44
- it('should convert years correctly (365 days)', () => {
45
- expect(TimeUtil_1.TimeUtil.durationToSeconds('1 year')).toBe(31536000);
46
- expect(TimeUtil_1.TimeUtil.durationToSeconds('2 years')).toBe(63072000);
47
- expect(TimeUtil_1.TimeUtil.durationToSeconds('1 y')).toBe(31536000);
48
- expect(TimeUtil_1.TimeUtil.durationToSeconds('3y')).toBe(94608000);
49
- });
50
- it('should handle whitespace variations', () => {
51
- expect(TimeUtil_1.TimeUtil.durationToSeconds(' 5 seconds ')).toBe(5);
52
- expect(TimeUtil_1.TimeUtil.durationToSeconds('10m')).toBe(600);
53
- expect(TimeUtil_1.TimeUtil.durationToSeconds('1 hour')).toBe(3600);
54
- });
55
- it('should be case insensitive', () => {
56
- expect(TimeUtil_1.TimeUtil.durationToSeconds('5 SECONDS')).toBe(5);
57
- expect(TimeUtil_1.TimeUtil.durationToSeconds('10 Minutes')).toBe(600);
58
- expect(TimeUtil_1.TimeUtil.durationToSeconds('1 HOUR')).toBe(3600);
59
- });
60
- it('should throw error for invalid format', () => {
61
- expect(() => TimeUtil_1.TimeUtil.durationToSeconds('invalid')).toThrow('Invalid duration format');
62
- expect(() => TimeUtil_1.TimeUtil.durationToSeconds('abc seconds')).toThrow();
63
- expect(() => TimeUtil_1.TimeUtil.durationToSeconds('')).toThrow();
64
- });
65
- it('should throw error for negative amounts', () => {
66
- expect(() => TimeUtil_1.TimeUtil.durationToSeconds('-5 seconds')).toThrow('Invalid duration format');
67
- });
68
- it('should throw error for unknown units', () => {
69
- expect(() => TimeUtil_1.TimeUtil.durationToSeconds('5 fortnights')).toThrow('Unknown time unit');
70
- expect(() => TimeUtil_1.TimeUtil.durationToSeconds('10 xyz')).toThrow('Unknown time unit');
71
- });
72
- it('should handle zero values', () => {
73
- expect(TimeUtil_1.TimeUtil.durationToSeconds('0 seconds')).toBe(0);
74
- expect(TimeUtil_1.TimeUtil.durationToSeconds('0 minutes')).toBe(0);
75
- });
76
- });
77
- describe('now', () => {
78
- it('should return current time in seconds', () => {
79
- const before = Date.now() / 1000;
80
- const now = TimeUtil_1.TimeUtil.now();
81
- const after = Date.now() / 1000;
82
- expect(now).toBeGreaterThanOrEqual(before);
83
- expect(now).toBeLessThanOrEqual(after);
84
- });
85
- it('should return a number', () => {
86
- expect(typeof TimeUtil_1.TimeUtil.now()).toBe('number');
87
- });
88
- it('should have decimal precision (milliseconds)', () => {
89
- const now = TimeUtil_1.TimeUtil.now();
90
- expect(now % 1).not.toBe(0);
91
- });
92
- });
93
- describe('msToSeconds', () => {
94
- it('should convert milliseconds to seconds', () => {
95
- expect(TimeUtil_1.TimeUtil.msToSeconds(1000)).toBe(1);
96
- expect(TimeUtil_1.TimeUtil.msToSeconds(5000)).toBe(5);
97
- expect(TimeUtil_1.TimeUtil.msToSeconds(60000)).toBe(60);
98
- });
99
- it('should handle fractional seconds', () => {
100
- expect(TimeUtil_1.TimeUtil.msToSeconds(500)).toBe(0.5);
101
- expect(TimeUtil_1.TimeUtil.msToSeconds(1500)).toBe(1.5);
102
- expect(TimeUtil_1.TimeUtil.msToSeconds(100)).toBe(0.1);
103
- });
104
- it('should handle zero', () => {
105
- expect(TimeUtil_1.TimeUtil.msToSeconds(0)).toBe(0);
106
- });
107
- });
108
- describe('secondsToMs', () => {
109
- it('should convert seconds to milliseconds', () => {
110
- expect(TimeUtil_1.TimeUtil.secondsToMs(1)).toBe(1000);
111
- expect(TimeUtil_1.TimeUtil.secondsToMs(5)).toBe(5000);
112
- expect(TimeUtil_1.TimeUtil.secondsToMs(60)).toBe(60000);
113
- });
114
- it('should handle fractional seconds', () => {
115
- expect(TimeUtil_1.TimeUtil.secondsToMs(0.5)).toBe(500);
116
- expect(TimeUtil_1.TimeUtil.secondsToMs(1.5)).toBe(1500);
117
- expect(TimeUtil_1.TimeUtil.secondsToMs(0.1)).toBe(100);
118
- });
119
- it('should handle zero', () => {
120
- expect(TimeUtil_1.TimeUtil.secondsToMs(0)).toBe(0);
121
- });
122
- });
123
- describe('round-trip conversions', () => {
124
- it('should convert back and forth without loss', () => {
125
- const ms = 5432;
126
- expect(TimeUtil_1.TimeUtil.secondsToMs(TimeUtil_1.TimeUtil.msToSeconds(ms))).toBe(ms);
127
- const seconds = 10.5;
128
- expect(TimeUtil_1.TimeUtil.msToSeconds(TimeUtil_1.TimeUtil.secondsToMs(seconds))).toBe(seconds);
129
- });
130
- });
131
- });
132
- //# sourceMappingURL=TimeUtil.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TimeUtil.test.js","sourceRoot":"","sources":["../../../src/util/__tests__/TimeUtil.test.ts"],"names":[],"mappings":"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"}