@develia/commons 0.2.12 → 0.2.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@develia/commons",
3
- "version": "0.2.12",
3
+ "version": "0.2.13",
4
4
  "author": {
5
5
  "name": "Antonio Gil Espinosa",
6
6
  "email": "antonio.gil.espinosa@gmail.com",
package/src/timespan.js CHANGED
@@ -1,30 +1,26 @@
1
- export default class TimeSpan {
1
+ class TimeSpan {
2
2
  constructor(milliseconds) {
3
- this._milliseconds = milliseconds;
4
- }
5
- // Obtener el intervalo de tiempo en milisegundos
6
- milliseconds() {
7
- return this._milliseconds;
3
+ this.milliseconds = milliseconds;
8
4
  }
9
5
  // Obtener el intervalo de tiempo en segundos
10
6
  seconds() {
11
- return this._milliseconds / 1000;
7
+ return this.milliseconds / 1000;
12
8
  }
13
9
  // Obtener el intervalo de tiempo en minutos
14
10
  minutes() {
15
- return this._milliseconds / (1000 * 60);
11
+ return this.milliseconds / (1000 * 60);
16
12
  }
17
13
  // Obtener el intervalo de tiempo en horas
18
14
  hours() {
19
- return this._milliseconds / (1000 * 60 * 60);
15
+ return this.milliseconds / (1000 * 60 * 60);
20
16
  }
21
17
  // Obtener el intervalo de tiempo en días
22
18
  days() {
23
- return this._milliseconds / (1000 * 60 * 60 * 24);
19
+ return this.milliseconds / (1000 * 60 * 60 * 24);
24
20
  }
25
21
  // Obtener el intervalo de tiempo en semanas
26
22
  weeks() {
27
- return this._milliseconds / (1000 * 60 * 60 * 24 * 7);
23
+ return this.milliseconds / (1000 * 60 * 60 * 24 * 7);
28
24
  }
29
25
  // Constructor estático para crear un TimeSpan desde milisegundos
30
26
  static fromMilliseconds(milliseconds) {
@@ -52,7 +48,7 @@ export default class TimeSpan {
52
48
  }
53
49
  // Añadir un intervalo de tiempo
54
50
  addMilliseconds(milliseconds) {
55
- return new TimeSpan(this._milliseconds + milliseconds);
51
+ return new TimeSpan(this.milliseconds + milliseconds);
56
52
  }
57
53
  addSeconds(seconds) {
58
54
  return this.addMilliseconds(seconds * 1000);
@@ -71,7 +67,7 @@ export default class TimeSpan {
71
67
  }
72
68
  // Restar un intervalo de tiempo
73
69
  subtractMilliseconds(milliseconds) {
74
- return new TimeSpan(this._milliseconds - milliseconds);
70
+ return new TimeSpan(this.milliseconds - milliseconds);
75
71
  }
76
72
  subtractSeconds(seconds) {
77
73
  return this.subtractMilliseconds(seconds * 1000);
@@ -90,25 +86,29 @@ export default class TimeSpan {
90
86
  }
91
87
  // Añadir otro TimeSpan
92
88
  add(other) {
93
- return new TimeSpan(this._milliseconds + other._milliseconds);
89
+ return new TimeSpan(this.milliseconds + other.milliseconds);
94
90
  }
95
91
  // Restar otro TimeSpan
96
92
  subtract(other) {
97
- return new TimeSpan(this._milliseconds - other._milliseconds);
93
+ return new TimeSpan(this.milliseconds - other.milliseconds);
98
94
  }
99
95
  // Añadir un intervalo de tiempo a una fecha
100
96
  addTo(date) {
101
- return new Date(date.getTime() + this._milliseconds);
97
+ return new Date(date.getTime() + this.milliseconds);
102
98
  }
103
99
  // Restar un intervalo de tiempo de una fecha
104
100
  subtractFrom(date) {
105
- return new Date(date.getTime() - this._milliseconds);
101
+ return new Date(date.getTime() - this.milliseconds);
102
+ }
103
+ // Método estático para obtener la diferencia entre dos fechas
104
+ static fromDifference(smaller, bigger) {
105
+ return new TimeSpan(bigger.getTime() - smaller.getTime());
106
106
  }
107
107
  format(format = 'hh:mm:ss') {
108
108
  const formatLower = format.toLowerCase();
109
109
  const hasHours = formatLower.includes("h");
110
110
  const hasMinutes = formatLower.includes("m");
111
- let hours = 0, minutes = 0, seconds = Math.floor(this._milliseconds / 1000);
111
+ let hours = 0, minutes = 0, seconds = Math.floor(this.milliseconds / 1000);
112
112
  if (hasHours) {
113
113
  hours = Math.floor(seconds / 3600);
114
114
  seconds -= hours * 3600;
@@ -128,5 +128,43 @@ export default class TimeSpan {
128
128
  .replace('ss', secondsPadded)
129
129
  .replace('s', seconds.toString());
130
130
  }
131
+ eq(other) {
132
+ return this.milliseconds === other.milliseconds;
133
+ }
134
+ le(other) {
135
+ return this.milliseconds <= other.milliseconds;
136
+ }
137
+ lt(other) {
138
+ return this.milliseconds < other.milliseconds;
139
+ }
140
+ ge(other) {
141
+ return this.milliseconds >= other.milliseconds;
142
+ }
143
+ gt(other) {
144
+ return this.milliseconds > other.milliseconds;
145
+ }
146
+ multiply(number) {
147
+ return new TimeSpan(this.milliseconds * number);
148
+ }
149
+ divide(number) {
150
+ return new TimeSpan(this.milliseconds / number);
151
+ }
152
+ abs() {
153
+ return new TimeSpan(Math.abs(this.milliseconds));
154
+ }
155
+ isInfinite() {
156
+ return this.milliseconds === Number.POSITIVE_INFINITY || this.milliseconds === Number.NEGATIVE_INFINITY;
157
+ }
158
+ // Determinar si es un TimeSpan infinitamente positivo
159
+ isPositiveInfinite() {
160
+ return this.milliseconds === Number.POSITIVE_INFINITY;
161
+ }
162
+ // Determinar si es un TimeSpan infinitamente negativo
163
+ isNegativeInfinite() {
164
+ return this.milliseconds === Number.NEGATIVE_INFINITY;
165
+ }
131
166
  }
167
+ TimeSpan.INFINITE = new TimeSpan(Number.POSITIVE_INFINITY);
168
+ TimeSpan.NEGATIVE_INFINITE = new TimeSpan(Number.NEGATIVE_INFINITY);
169
+ export default TimeSpan;
132
170
  //# sourceMappingURL=timespan.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"timespan.js","sourceRoot":"","sources":["timespan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"timespan.js","sourceRoot":"","sources":["timespan.ts"],"names":[],"mappings":"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"}
package/src/timespan.ts CHANGED
@@ -1,38 +1,34 @@
1
1
  export default class TimeSpan {
2
- private readonly _milliseconds: number;
2
+ public milliseconds: number;
3
3
 
4
- constructor(milliseconds: number) {
5
- this._milliseconds = milliseconds;
4
+ private constructor(milliseconds: number) {
5
+ this.milliseconds = milliseconds;
6
6
  }
7
7
 
8
- // Obtener el intervalo de tiempo en milisegundos
9
- milliseconds(): number {
10
- return this._milliseconds;
11
- }
12
8
 
13
9
  // Obtener el intervalo de tiempo en segundos
14
10
  seconds(): number {
15
- return this._milliseconds / 1000;
11
+ return this.milliseconds / 1000;
16
12
  }
17
13
 
18
14
  // Obtener el intervalo de tiempo en minutos
19
15
  minutes(): number {
20
- return this._milliseconds / (1000 * 60);
16
+ return this.milliseconds / (1000 * 60);
21
17
  }
22
18
 
23
19
  // Obtener el intervalo de tiempo en horas
24
20
  hours(): number {
25
- return this._milliseconds / (1000 * 60 * 60);
21
+ return this.milliseconds / (1000 * 60 * 60);
26
22
  }
27
23
 
28
24
  // Obtener el intervalo de tiempo en días
29
25
  days(): number {
30
- return this._milliseconds / (1000 * 60 * 60 * 24);
26
+ return this.milliseconds / (1000 * 60 * 60 * 24);
31
27
  }
32
28
 
33
29
  // Obtener el intervalo de tiempo en semanas
34
30
  weeks(): number {
35
- return this._milliseconds / (1000 * 60 * 60 * 24 * 7);
31
+ return this.milliseconds / (1000 * 60 * 60 * 24 * 7);
36
32
  }
37
33
 
38
34
  // Constructor estático para crear un TimeSpan desde milisegundos
@@ -67,7 +63,7 @@ export default class TimeSpan {
67
63
 
68
64
  // Añadir un intervalo de tiempo
69
65
  addMilliseconds(milliseconds: number): TimeSpan {
70
- return new TimeSpan(this._milliseconds + milliseconds);
66
+ return new TimeSpan(this.milliseconds + milliseconds);
71
67
  }
72
68
 
73
69
  addSeconds(seconds: number): TimeSpan {
@@ -92,7 +88,7 @@ export default class TimeSpan {
92
88
 
93
89
  // Restar un intervalo de tiempo
94
90
  subtractMilliseconds(milliseconds: number): TimeSpan {
95
- return new TimeSpan(this._milliseconds - milliseconds);
91
+ return new TimeSpan(this.milliseconds - milliseconds);
96
92
  }
97
93
 
98
94
  subtractSeconds(seconds: number): TimeSpan {
@@ -117,22 +113,27 @@ export default class TimeSpan {
117
113
 
118
114
  // Añadir otro TimeSpan
119
115
  add(other: TimeSpan): TimeSpan {
120
- return new TimeSpan(this._milliseconds + other._milliseconds);
116
+ return new TimeSpan(this.milliseconds + other.milliseconds);
121
117
  }
122
118
 
123
119
  // Restar otro TimeSpan
124
120
  subtract(other: TimeSpan): TimeSpan {
125
- return new TimeSpan(this._milliseconds - other._milliseconds);
121
+ return new TimeSpan(this.milliseconds - other.milliseconds);
126
122
  }
127
123
 
128
124
  // Añadir un intervalo de tiempo a una fecha
129
125
  addTo(date: Date): Date {
130
- return new Date(date.getTime() + this._milliseconds);
126
+ return new Date(date.getTime() + this.milliseconds);
131
127
  }
132
128
 
133
129
  // Restar un intervalo de tiempo de una fecha
134
130
  subtractFrom(date: Date): Date {
135
- return new Date(date.getTime() - this._milliseconds);
131
+ return new Date(date.getTime() - this.milliseconds);
132
+ }
133
+
134
+ // Método estático para obtener la diferencia entre dos fechas
135
+ static fromDifference(smaller: Date, bigger: Date): TimeSpan {
136
+ return new TimeSpan(bigger.getTime() - smaller.getTime());
136
137
  }
137
138
 
138
139
  format(format: string = 'hh:mm:ss'): string {
@@ -140,7 +141,7 @@ export default class TimeSpan {
140
141
  const hasHours = formatLower.includes("h");
141
142
  const hasMinutes = formatLower.includes("m");
142
143
 
143
- let hours = 0, minutes = 0, seconds = Math.floor(this._milliseconds / 1000);
144
+ let hours = 0, minutes = 0, seconds = Math.floor(this.milliseconds / 1000);
144
145
 
145
146
  if (hasHours) {
146
147
  hours = Math.floor(seconds / 3600);
@@ -163,4 +164,54 @@ export default class TimeSpan {
163
164
  .replace('ss', secondsPadded)
164
165
  .replace('s', seconds.toString());
165
166
  }
167
+
168
+ eq(other: TimeSpan): boolean {
169
+ return this.milliseconds === other.milliseconds;
170
+ }
171
+
172
+ le(other: TimeSpan): boolean {
173
+ return this.milliseconds <= other.milliseconds;
174
+ }
175
+
176
+ lt(other: TimeSpan): boolean {
177
+ return this.milliseconds < other.milliseconds;
178
+ }
179
+
180
+ ge(other: TimeSpan): boolean {
181
+ return this.milliseconds >= other.milliseconds;
182
+ }
183
+
184
+ gt(other: TimeSpan): boolean {
185
+ return this.milliseconds > other.milliseconds;
186
+ }
187
+
188
+ multiply(number: number): TimeSpan {
189
+ return new TimeSpan(this.milliseconds * number);
190
+ }
191
+
192
+ divide(number: number): TimeSpan {
193
+ return new TimeSpan(this.milliseconds / number);
194
+ }
195
+
196
+ abs(): TimeSpan {
197
+ return new TimeSpan(Math.abs(this.milliseconds));
198
+ }
199
+
200
+ static readonly INFINITE = new TimeSpan(Number.POSITIVE_INFINITY);
201
+
202
+ static readonly NEGATIVE_INFINITE = new TimeSpan(Number.NEGATIVE_INFINITY);
203
+
204
+ isInfinite() {
205
+ return this.milliseconds === Number.POSITIVE_INFINITY || this.milliseconds === Number.NEGATIVE_INFINITY
206
+ }
207
+
208
+ // Determinar si es un TimeSpan infinitamente positivo
209
+ isPositiveInfinite(): boolean {
210
+ return this.milliseconds === Number.POSITIVE_INFINITY;
211
+ }
212
+
213
+ // Determinar si es un TimeSpan infinitamente negativo
214
+ isNegativeInfinite(): boolean {
215
+ return this.milliseconds === Number.NEGATIVE_INFINITY;
216
+ }
166
217
  }