@entity-access/entity-access 1.0.14 → 1.0.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/migrations/postgres/PostgresAutomaticMigrations.js +1 -1
- package/dist/migrations/postgres/PostgresAutomaticMigrations.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/DateTime.d.ts +171 -0
- package/dist/types/DateTime.d.ts.map +1 -0
- package/dist/types/DateTime.js +340 -0
- package/dist/types/DateTime.js.map +1 -0
- package/dist/types/TimeSpan.d.ts +40 -0
- package/dist/types/TimeSpan.d.ts.map +1 -0
- package/dist/types/TimeSpan.js +186 -0
- package/dist/types/TimeSpan.js.map +1 -0
- package/package.json +1 -1
- package/src/migrations/postgres/PostgresAutomaticMigrations.ts +1 -1
- package/src/types/DateTime.ts +402 -0
- package/src/types/TimeSpan.ts +222 -0
|
@@ -0,0 +1,340 @@
|
|
|
1
|
+
import TimeSpan from "./TimeSpan.js";
|
|
2
|
+
/**
|
|
3
|
+
* DateTime differs from Date in following cases,
|
|
4
|
+
* 1. DateTime is immutable, however underlying object is Date
|
|
5
|
+
* but all methods specific to DateTime are immutable
|
|
6
|
+
* 2. DateTime has readonly properties for `day, month, year etc`
|
|
7
|
+
* 3. DateTime is derived from Date so passing DateTime to existing
|
|
8
|
+
* code will not change anything, however intellisense does not display
|
|
9
|
+
* any methods of Date unless you explicity cast as Date, but instanceof
|
|
10
|
+
* works correctly
|
|
11
|
+
* 4. DateTime does not modify underlying Date prototype or add any methods to it
|
|
12
|
+
* ``` typescript
|
|
13
|
+
* DateTime dt = DateTime.now();
|
|
14
|
+
* (dt instanceof Date) // is true
|
|
15
|
+
* (dt instanceof DateTime) // is also true
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export default class DateTime {
|
|
19
|
+
/**
|
|
20
|
+
* Current date without time
|
|
21
|
+
*/
|
|
22
|
+
static get today() {
|
|
23
|
+
const a = new DateTime();
|
|
24
|
+
return a.date;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Current UTC Date
|
|
28
|
+
*/
|
|
29
|
+
static get utcNow() {
|
|
30
|
+
const now = new Date();
|
|
31
|
+
return new DateTime(now.getTime() + now.getTimezoneOffset());
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* DateTime at right now
|
|
35
|
+
*/
|
|
36
|
+
static get now() {
|
|
37
|
+
return new DateTime();
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Returns DateTime new instance from Date or String, if d is DateTime already
|
|
41
|
+
* it will return the d.
|
|
42
|
+
* @param d Date | DateTime | string
|
|
43
|
+
* @returns DateTime
|
|
44
|
+
*/
|
|
45
|
+
static from(d) {
|
|
46
|
+
if (!d) {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
if (!(d instanceof DateTime)) {
|
|
50
|
+
if (d instanceof Date) {
|
|
51
|
+
d = new DateTime(d.getTime());
|
|
52
|
+
}
|
|
53
|
+
return new DateTime(d);
|
|
54
|
+
}
|
|
55
|
+
return d;
|
|
56
|
+
}
|
|
57
|
+
static parse(s) {
|
|
58
|
+
return new DateTime(s);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Converts a date and time to a string by using the current or specified locale.
|
|
62
|
+
* @param locales A locale string or array of locale strings that contain one or more language
|
|
63
|
+
* or locale tags. If you include more than one locale string, list them in descending order of
|
|
64
|
+
* priority so that the first entry is the preferred locale. If you omit this parameter,
|
|
65
|
+
* the default locale of the JavaScript runtime is used.
|
|
66
|
+
* @param options An object that contains one or more properties that specify comparison options.
|
|
67
|
+
*/
|
|
68
|
+
toLocaleString;
|
|
69
|
+
/**
|
|
70
|
+
* Converts a date to a string by using the current or specified locale.
|
|
71
|
+
* @param locales A locale string or array of locale strings that contain one or more language
|
|
72
|
+
* or locale tags. If you include more than one locale string, list them in descending order
|
|
73
|
+
* of priority so that the first entry is the preferred locale. If you omit this parameter,
|
|
74
|
+
* the default locale of the JavaScript runtime is used.
|
|
75
|
+
* @param options An object that contains one or more properties that specify comparison options.
|
|
76
|
+
*/
|
|
77
|
+
toLocaleDateString;
|
|
78
|
+
/**
|
|
79
|
+
* Converts a time to a string by using the current or specified locale.
|
|
80
|
+
* @param locales A locale string or array of locale strings that contain one or more language
|
|
81
|
+
* or locale tags. If you include more than one locale string, list them in descending order of
|
|
82
|
+
* priority so that the first entry is the preferred locale. If you omit this parameter,
|
|
83
|
+
* the default locale of the JavaScript runtime is used.
|
|
84
|
+
* @param options An object that contains one or more properties that specify comparison options.
|
|
85
|
+
*/
|
|
86
|
+
toLocaleTimeString;
|
|
87
|
+
/** Returns a date converted to a string using Universal Coordinated Time (UTC). */
|
|
88
|
+
toUTCString;
|
|
89
|
+
/** Returns a date as a string value in ISO format. */
|
|
90
|
+
toISOString;
|
|
91
|
+
/** Used by the JSON.stringify method to enable the transformation of an object's data for JavaScript Object
|
|
92
|
+
* Notation (JSON) serialization.
|
|
93
|
+
*/
|
|
94
|
+
toJSON;
|
|
95
|
+
toTimeString;
|
|
96
|
+
toDateString;
|
|
97
|
+
/** Day of month */
|
|
98
|
+
get day() {
|
|
99
|
+
return this.getDate();
|
|
100
|
+
}
|
|
101
|
+
/** Day of week */
|
|
102
|
+
get dayOfWeek() {
|
|
103
|
+
return this.getDay();
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Current month, 0 is January
|
|
107
|
+
*/
|
|
108
|
+
get month() {
|
|
109
|
+
return this.getMonth();
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Current full year
|
|
113
|
+
*/
|
|
114
|
+
get year() {
|
|
115
|
+
return this.getFullYear();
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Current hour of the day
|
|
119
|
+
*/
|
|
120
|
+
get hour() {
|
|
121
|
+
return this.getHours();
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Current minute of the hour
|
|
125
|
+
*/
|
|
126
|
+
get minute() {
|
|
127
|
+
return this.getMinutes();
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Current second of the minute
|
|
131
|
+
*/
|
|
132
|
+
get second() {
|
|
133
|
+
return this.getSeconds();
|
|
134
|
+
}
|
|
135
|
+
get milliSecond() {
|
|
136
|
+
return this.getMilliseconds();
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Timezone offset as TimeSpan
|
|
140
|
+
*/
|
|
141
|
+
get timeZoneOffset() {
|
|
142
|
+
return TimeSpan.fromMinutes(this.getTimezoneOffset());
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Milliseconds since EPOCH, ie total number of milliseconds
|
|
146
|
+
* of underlying Date object
|
|
147
|
+
*/
|
|
148
|
+
get msSinceEpoch() {
|
|
149
|
+
return this.getTime();
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Strips time of the day and returns Date only
|
|
153
|
+
*/
|
|
154
|
+
get date() {
|
|
155
|
+
const d = new DateTime(this.getFullYear(), this.getMonth(), this.getDate(), 0, 0, 0, 0);
|
|
156
|
+
return d;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Just for convenience, avoid using this, instead use methods of DateTime
|
|
160
|
+
* or suggest better method at our github repo
|
|
161
|
+
*/
|
|
162
|
+
get asJSDate() {
|
|
163
|
+
return this;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Gets time of the day in TimeSpan format
|
|
167
|
+
*/
|
|
168
|
+
get time() {
|
|
169
|
+
return new TimeSpan(0, this.getHours(), this.getMinutes(), this.getSeconds(), this.getMilliseconds());
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Creates new DateTime instance from given input,
|
|
173
|
+
* input parameters are exactly same as `Date`
|
|
174
|
+
*/
|
|
175
|
+
constructor(a, b, c, d, e, f, g) {
|
|
176
|
+
let rd;
|
|
177
|
+
switch (arguments.length) {
|
|
178
|
+
case 0:
|
|
179
|
+
rd = new Date();
|
|
180
|
+
break;
|
|
181
|
+
case 1:
|
|
182
|
+
rd = new Date(a);
|
|
183
|
+
break;
|
|
184
|
+
case 2:
|
|
185
|
+
rd = new Date(a, b);
|
|
186
|
+
break;
|
|
187
|
+
case 3:
|
|
188
|
+
rd = new Date(a, b, c);
|
|
189
|
+
break;
|
|
190
|
+
case 4:
|
|
191
|
+
rd = new Date(a, b, c, d);
|
|
192
|
+
break;
|
|
193
|
+
case 5:
|
|
194
|
+
rd = new Date(a, b, c, d, e);
|
|
195
|
+
break;
|
|
196
|
+
case 6:
|
|
197
|
+
rd = new Date(a, b, c, d, e, f);
|
|
198
|
+
break;
|
|
199
|
+
default:
|
|
200
|
+
rd = new Date(a, b, c, d, e, f, g);
|
|
201
|
+
}
|
|
202
|
+
Object.setPrototypeOf(rd, DateTime.prototype);
|
|
203
|
+
return rd;
|
|
204
|
+
}
|
|
205
|
+
add(t, hours, minutes, seconds, milliseconds) {
|
|
206
|
+
if (t instanceof Date) {
|
|
207
|
+
return new DateTime(this.getTime() + t.getTime());
|
|
208
|
+
}
|
|
209
|
+
let days = 0;
|
|
210
|
+
if (t instanceof TimeSpan) {
|
|
211
|
+
days = t.days;
|
|
212
|
+
hours = t.hours;
|
|
213
|
+
minutes = t.minutes;
|
|
214
|
+
seconds = t.seconds;
|
|
215
|
+
milliseconds = t.milliseconds;
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
days = t;
|
|
219
|
+
}
|
|
220
|
+
function hasValue(n, name) {
|
|
221
|
+
if (n === undefined) {
|
|
222
|
+
return false;
|
|
223
|
+
}
|
|
224
|
+
if (n === null) {
|
|
225
|
+
throw new Error(`${name} cannot be null`);
|
|
226
|
+
}
|
|
227
|
+
return n !== 0;
|
|
228
|
+
}
|
|
229
|
+
const d = new Date(this.getTime());
|
|
230
|
+
if (hasValue(days, "days")) {
|
|
231
|
+
d.setDate(d.getDate() + days);
|
|
232
|
+
}
|
|
233
|
+
if (hasValue(hours, "hours")) {
|
|
234
|
+
d.setHours(d.getHours() + hours);
|
|
235
|
+
}
|
|
236
|
+
if (hasValue(minutes, "minutes")) {
|
|
237
|
+
d.setMinutes(d.getMinutes() + minutes);
|
|
238
|
+
}
|
|
239
|
+
if (hasValue(seconds, "seconds")) {
|
|
240
|
+
d.setSeconds(d.getSeconds() + seconds);
|
|
241
|
+
}
|
|
242
|
+
if (hasValue(milliseconds, "milliseconds")) {
|
|
243
|
+
d.setMilliseconds(d.getMilliseconds() + milliseconds);
|
|
244
|
+
}
|
|
245
|
+
Object.setPrototypeOf(d, DateTime.prototype);
|
|
246
|
+
return d;
|
|
247
|
+
}
|
|
248
|
+
addMonths(m) {
|
|
249
|
+
const d = new Date(this.msSinceEpoch);
|
|
250
|
+
d.setMonth(d.getMonth() + m);
|
|
251
|
+
Object.setPrototypeOf(d, DateTime.prototype);
|
|
252
|
+
return d;
|
|
253
|
+
}
|
|
254
|
+
addYears(y) {
|
|
255
|
+
const d = new Date(this.msSinceEpoch);
|
|
256
|
+
d.setFullYear(d.getFullYear() + y);
|
|
257
|
+
Object.setPrototypeOf(d, DateTime.prototype);
|
|
258
|
+
return d;
|
|
259
|
+
}
|
|
260
|
+
addDays(day) {
|
|
261
|
+
const d = new Date(this.msSinceEpoch);
|
|
262
|
+
d.setDate(d.getDate() + day);
|
|
263
|
+
Object.setPrototypeOf(d, DateTime.prototype);
|
|
264
|
+
return d;
|
|
265
|
+
}
|
|
266
|
+
addHours(h) {
|
|
267
|
+
const d = new Date(this.msSinceEpoch);
|
|
268
|
+
d.setHours(d.getHours() + h);
|
|
269
|
+
Object.setPrototypeOf(d, DateTime.prototype);
|
|
270
|
+
return d;
|
|
271
|
+
}
|
|
272
|
+
addMinutes(m) {
|
|
273
|
+
const d = new Date(this.msSinceEpoch);
|
|
274
|
+
d.setMinutes(d.getMinutes() + m);
|
|
275
|
+
Object.setPrototypeOf(d, DateTime.prototype);
|
|
276
|
+
return d;
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Returns TimeSpan from subtracting rhs from this,
|
|
280
|
+
* `const ts = lhs.diff(rhs); // ts = lhs - rhs`
|
|
281
|
+
* @param rhs Right hand side
|
|
282
|
+
* @returns TimeSpan
|
|
283
|
+
*/
|
|
284
|
+
diff(rhs) {
|
|
285
|
+
return new TimeSpan(this.getTime() - rhs.getTime());
|
|
286
|
+
}
|
|
287
|
+
equals(d) {
|
|
288
|
+
if (!d) {
|
|
289
|
+
return false;
|
|
290
|
+
}
|
|
291
|
+
return this.getTime() === d.getTime();
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Trims time part and compares the given dates
|
|
295
|
+
* @param d date to test
|
|
296
|
+
*/
|
|
297
|
+
dateEquals(d) {
|
|
298
|
+
if (!d) {
|
|
299
|
+
return false;
|
|
300
|
+
}
|
|
301
|
+
return this.date.equals(DateTime.from(d).date);
|
|
302
|
+
}
|
|
303
|
+
compare(d) {
|
|
304
|
+
return this.getTime() - d.getTime();
|
|
305
|
+
}
|
|
306
|
+
toRelativeString(dt) {
|
|
307
|
+
if (!dt) {
|
|
308
|
+
dt = DateTime.now;
|
|
309
|
+
}
|
|
310
|
+
else {
|
|
311
|
+
if (dt instanceof Date && !(dt instanceof DateTime)) {
|
|
312
|
+
dt.__proto__ = DateTime.prototype;
|
|
313
|
+
dt = dt;
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
const diff = this.diff(dt);
|
|
317
|
+
if (dt.year !== this.year) {
|
|
318
|
+
return this.toLocaleDateString();
|
|
319
|
+
}
|
|
320
|
+
if (Math.abs(diff.totalDays) > 6) {
|
|
321
|
+
return this.toLocaleDateString(undefined, { month: "short", day: "numeric" });
|
|
322
|
+
}
|
|
323
|
+
if (Math.abs(diff.totalHours) > 23) {
|
|
324
|
+
return this.toLocaleDateString(undefined, { weekday: "short" });
|
|
325
|
+
}
|
|
326
|
+
if (Math.abs(diff.totalMinutes) > 59) {
|
|
327
|
+
return `${Math.floor(diff.totalHours)} hours`;
|
|
328
|
+
}
|
|
329
|
+
return `${Math.floor(diff.totalMinutes)} mins`;
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Returns number so that DateTime in logical comparison
|
|
333
|
+
* returns correct answer. Such as DateTime.from("2022-02-01") > DateTime.from("2021-02-01") returns true.
|
|
334
|
+
* @returns Milliseconds since EPOCH
|
|
335
|
+
*/
|
|
336
|
+
valueOf() {
|
|
337
|
+
return this.getTime();
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
//# sourceMappingURL=DateTime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DateTime.js","sourceRoot":"","sources":["../../src/types/DateTime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export declare const msMinutes = 60000;
|
|
2
|
+
export declare const msSeconds = 1000;
|
|
3
|
+
export declare const msHours = 3600000;
|
|
4
|
+
export declare const msDays: number;
|
|
5
|
+
export default class TimeSpan {
|
|
6
|
+
static fromDays(n: number): TimeSpan;
|
|
7
|
+
static fromHours(n: number): TimeSpan;
|
|
8
|
+
static fromMinutes(n: number): TimeSpan;
|
|
9
|
+
static fromSeconds(n: number): TimeSpan;
|
|
10
|
+
static parse(text: string): TimeSpan;
|
|
11
|
+
private msSinceEpoch;
|
|
12
|
+
get totalSeconds(): number;
|
|
13
|
+
get totalMinutes(): number;
|
|
14
|
+
get totalHours(): number;
|
|
15
|
+
get totalDays(): number;
|
|
16
|
+
get totalMilliseconds(): number;
|
|
17
|
+
get days(): number;
|
|
18
|
+
get hours(): number;
|
|
19
|
+
get minutes(): number;
|
|
20
|
+
get seconds(): number;
|
|
21
|
+
get milliseconds(): number;
|
|
22
|
+
/**
|
|
23
|
+
* Duration is always positive TimeSpan
|
|
24
|
+
*/
|
|
25
|
+
get duration(): TimeSpan;
|
|
26
|
+
/**
|
|
27
|
+
* Removes days and only trims given TimeSpan to TimeOfDay
|
|
28
|
+
*/
|
|
29
|
+
get trimmedTime(): TimeSpan;
|
|
30
|
+
constructor(ms: number);
|
|
31
|
+
constructor(days: number, hours: number, minutes?: number, seconds?: number, milliseconds?: number);
|
|
32
|
+
/**
|
|
33
|
+
* Format the TimeSpan as time format
|
|
34
|
+
* @param formatAs12 Display time as 12 hours with AM/PM (only if day is zero)
|
|
35
|
+
*/
|
|
36
|
+
toString(formatAs12?: boolean): string;
|
|
37
|
+
add(ts: TimeSpan): TimeSpan;
|
|
38
|
+
equals(ts: TimeSpan): boolean;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=TimeSpan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TimeSpan.d.ts","sourceRoot":"","sources":["../../src/types/TimeSpan.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,SAAS,QAAQ,CAAC;AAE/B,eAAO,MAAM,SAAS,OAAO,CAAC;AAE9B,eAAO,MAAM,OAAO,UAAU,CAAC;AAE/B,eAAO,MAAM,MAAM,QAAe,CAAC;AAqBnC,MAAM,CAAC,OAAO,OAAO,QAAQ;WAEX,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,QAAQ;WAI7B,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,QAAQ;WAI9B,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,QAAQ;WAIhC,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,QAAQ;WAIhC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ;IA+C3C,OAAO,CAAC,YAAY,CAAS;IAE7B,IAAW,YAAY,IAAI,MAAM,CAEhC;IAED,IAAW,YAAY,IAAI,MAAM,CAEhC;IAED,IAAW,UAAU,IAAI,MAAM,CAE9B;IAED,IAAW,SAAS,IAAI,MAAM,CAE7B;IAED,IAAW,iBAAiB,IAAI,MAAM,CAErC;IAED,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,IAAW,KAAK,IAAI,MAAM,CAEzB;IAED,IAAW,OAAO,IAAI,MAAM,CAE3B;IAED,IAAW,OAAO,IAAI,MAAM,CAE3B;IAED,IAAW,YAAY,IAAI,MAAM,CAEhC;IAED;;OAEG;IACH,IAAW,QAAQ,IAAI,QAAQ,CAG9B;IAED;;OAEG;IACH,IAAW,WAAW,IAAI,QAAQ,CAEjC;gBAEW,EAAE,EAAE,MAAM;gBAEV,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM;IAclG;;;OAGG;IACI,QAAQ,CAAC,UAAU,GAAE,OAAe,GAAG,MAAM;IAyC7C,GAAG,CAAC,EAAE,EAAE,QAAQ,GAAG,QAAQ;IAI3B,MAAM,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO;CAGvC"}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
function isEmpty(n) {
|
|
2
|
+
return n === undefined || n === null || n === 0 || isNaN(n);
|
|
3
|
+
}
|
|
4
|
+
export const msMinutes = 60000;
|
|
5
|
+
export const msSeconds = 1000;
|
|
6
|
+
export const msHours = 3600000;
|
|
7
|
+
export const msDays = 24 * msHours;
|
|
8
|
+
/**
|
|
9
|
+
* This is due to performance reason, copied from Source of TimeSpan from C# code.
|
|
10
|
+
*/
|
|
11
|
+
const daysPerMS = 1 / msDays;
|
|
12
|
+
const hoursPerMS = 1 / msHours;
|
|
13
|
+
const minutesPerMS = 1 / msMinutes;
|
|
14
|
+
const secondsPerMS = 1 / msSeconds;
|
|
15
|
+
function padLeft(n, c = 2, t = "0") {
|
|
16
|
+
let s = n.toString();
|
|
17
|
+
if (s.length < c) {
|
|
18
|
+
s = t + s;
|
|
19
|
+
}
|
|
20
|
+
return s;
|
|
21
|
+
}
|
|
22
|
+
export default class TimeSpan {
|
|
23
|
+
static fromDays(n) {
|
|
24
|
+
return new TimeSpan(n * msDays);
|
|
25
|
+
}
|
|
26
|
+
static fromHours(n) {
|
|
27
|
+
return new TimeSpan(n * msHours);
|
|
28
|
+
}
|
|
29
|
+
static fromMinutes(n) {
|
|
30
|
+
return new TimeSpan(n * msMinutes);
|
|
31
|
+
}
|
|
32
|
+
static fromSeconds(n) {
|
|
33
|
+
return new TimeSpan(n * msSeconds);
|
|
34
|
+
}
|
|
35
|
+
static parse(text) {
|
|
36
|
+
if (!text) {
|
|
37
|
+
throw new Error("Invalid time format");
|
|
38
|
+
}
|
|
39
|
+
let isPM = false;
|
|
40
|
+
// tslint:disable-next-line: one-variable-per-declaration
|
|
41
|
+
let d, h, m, s, ms;
|
|
42
|
+
const tokens = text.split(/:/);
|
|
43
|
+
// split last...
|
|
44
|
+
const last = tokens[tokens.length - 1];
|
|
45
|
+
const lastParts = last.split(" ");
|
|
46
|
+
if (lastParts.length > 1) {
|
|
47
|
+
if (/pm/i.test(lastParts[1])) {
|
|
48
|
+
isPM = true;
|
|
49
|
+
}
|
|
50
|
+
tokens[tokens.length - 1] = lastParts[0];
|
|
51
|
+
}
|
|
52
|
+
const firstOfLast = lastParts[0];
|
|
53
|
+
if (firstOfLast.indexOf(".") !== -1) {
|
|
54
|
+
// it has ms...
|
|
55
|
+
const secondParts = firstOfLast.split(".");
|
|
56
|
+
if (secondParts.length > 1) {
|
|
57
|
+
tokens[tokens.length - 1] = secondParts[0];
|
|
58
|
+
ms = parseInt(secondParts[1], 10);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
if (tokens.length === 2) {
|
|
62
|
+
// this is hour:min
|
|
63
|
+
d = 0;
|
|
64
|
+
h = parseInt(tokens[0], 10);
|
|
65
|
+
m = parseInt(tokens[1], 10);
|
|
66
|
+
}
|
|
67
|
+
else if (tokens.length === 3) {
|
|
68
|
+
d = 0;
|
|
69
|
+
h = parseInt(tokens[0], 10);
|
|
70
|
+
m = parseInt(tokens[1], 10);
|
|
71
|
+
s = parseInt(tokens[2], 10);
|
|
72
|
+
}
|
|
73
|
+
else if (tokens.length === 4) {
|
|
74
|
+
d = parseInt(tokens[0], 10);
|
|
75
|
+
h = parseInt(tokens[1], 10);
|
|
76
|
+
m = parseInt(tokens[2], 10);
|
|
77
|
+
s = parseInt(tokens[3], 10);
|
|
78
|
+
}
|
|
79
|
+
return new TimeSpan(d, isPM ? h + 12 : h, m, s, ms);
|
|
80
|
+
}
|
|
81
|
+
msSinceEpoch;
|
|
82
|
+
get totalSeconds() {
|
|
83
|
+
return this.msSinceEpoch * secondsPerMS;
|
|
84
|
+
}
|
|
85
|
+
get totalMinutes() {
|
|
86
|
+
return this.msSinceEpoch * minutesPerMS;
|
|
87
|
+
}
|
|
88
|
+
get totalHours() {
|
|
89
|
+
return this.msSinceEpoch * hoursPerMS;
|
|
90
|
+
}
|
|
91
|
+
get totalDays() {
|
|
92
|
+
return this.msSinceEpoch * daysPerMS;
|
|
93
|
+
}
|
|
94
|
+
get totalMilliseconds() {
|
|
95
|
+
return this.msSinceEpoch;
|
|
96
|
+
}
|
|
97
|
+
get days() {
|
|
98
|
+
return Math.floor(this.msSinceEpoch / msDays);
|
|
99
|
+
}
|
|
100
|
+
get hours() {
|
|
101
|
+
return Math.floor((this.msSinceEpoch / msHours) % 24);
|
|
102
|
+
}
|
|
103
|
+
get minutes() {
|
|
104
|
+
return Math.floor((this.msSinceEpoch / msMinutes) % 60);
|
|
105
|
+
}
|
|
106
|
+
get seconds() {
|
|
107
|
+
return Math.floor((this.msSinceEpoch / msSeconds) % 60);
|
|
108
|
+
}
|
|
109
|
+
get milliseconds() {
|
|
110
|
+
return Math.floor(this.msSinceEpoch % 1000);
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Duration is always positive TimeSpan
|
|
114
|
+
*/
|
|
115
|
+
get duration() {
|
|
116
|
+
const t = this.msSinceEpoch;
|
|
117
|
+
return new TimeSpan(t > 0 ? t : -t);
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Removes days and only trims given TimeSpan to TimeOfDay
|
|
121
|
+
*/
|
|
122
|
+
get trimmedTime() {
|
|
123
|
+
return new TimeSpan(Math.ceil(this.msSinceEpoch % msDays));
|
|
124
|
+
}
|
|
125
|
+
constructor(days, hours, minutes, seconds, milliseconds) {
|
|
126
|
+
if (arguments.length === 1) {
|
|
127
|
+
this.msSinceEpoch = days;
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
this.msSinceEpoch =
|
|
131
|
+
(days || 0) * msDays +
|
|
132
|
+
(hours || 0) * msHours +
|
|
133
|
+
(minutes || 0) * msMinutes +
|
|
134
|
+
(seconds || 0) * msSeconds +
|
|
135
|
+
(milliseconds || 0);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Format the TimeSpan as time format
|
|
140
|
+
* @param formatAs12 Display time as 12 hours with AM/PM (only if day is zero)
|
|
141
|
+
*/
|
|
142
|
+
toString(formatAs12 = false) {
|
|
143
|
+
let ams = this.msSinceEpoch;
|
|
144
|
+
const text = [];
|
|
145
|
+
let postFix = "";
|
|
146
|
+
function format(max, f12 = false) {
|
|
147
|
+
let txt = null;
|
|
148
|
+
if (ams > max) {
|
|
149
|
+
const n = Math.floor(ams / max);
|
|
150
|
+
ams = ams % max;
|
|
151
|
+
if (f12) {
|
|
152
|
+
if (n > 12) {
|
|
153
|
+
postFix = " PM";
|
|
154
|
+
txt = padLeft(n - 12);
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
postFix = " AM";
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
if (!txt) {
|
|
161
|
+
txt = padLeft(n);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
if (txt) {
|
|
165
|
+
text.push(txt);
|
|
166
|
+
}
|
|
167
|
+
return txt;
|
|
168
|
+
}
|
|
169
|
+
const d = format(msDays);
|
|
170
|
+
format(msHours, formatAs12 && !d);
|
|
171
|
+
format(msMinutes);
|
|
172
|
+
let s = format(msSeconds);
|
|
173
|
+
if (ams) {
|
|
174
|
+
s += "." + ams;
|
|
175
|
+
text[text.length - 1] = s;
|
|
176
|
+
}
|
|
177
|
+
return `${text.join(":")}${postFix}`;
|
|
178
|
+
}
|
|
179
|
+
add(ts) {
|
|
180
|
+
return new TimeSpan(this.msSinceEpoch + ts.msSinceEpoch);
|
|
181
|
+
}
|
|
182
|
+
equals(ts) {
|
|
183
|
+
return ts.msSinceEpoch === this.msSinceEpoch;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=TimeSpan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TimeSpan.js","sourceRoot":"","sources":["../../src/types/TimeSpan.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -33,7 +33,7 @@ export default class PostgresAutomaticMigrations extends PostgresMigrations {
|
|
|
33
33
|
for (const iterator of fkColumns) {
|
|
34
34
|
const indexName = JSON.stringify(`IX_${type.name}_${iterator.columnName}`);
|
|
35
35
|
const columnName = JSON.stringify(iterator.columnName);
|
|
36
|
-
let query = `CREATE INDEX
|
|
36
|
+
let query = `CREATE INDEX IF NOT EXISTS ${indexName} ON ${name} ( ${columnName})`;
|
|
37
37
|
if (iterator.nullable !== true) {
|
|
38
38
|
query += ` WHERE (${columnName} is not null)`;
|
|
39
39
|
}
|