source: gs3-installations/atea/trunk/interfaces/atea/korero-maori-asr/src/js/Util.js@ 36872

Last change on this file since 36872 was 36872, checked in by cstephen, 18 months ago

Update the korero-maori-asr project to fix dependency vunerabilities

File size: 3.6 KB
Line 
1/**
2 * Logs to the console.
3 * @param {*} message The object to log.
4 * @param {undefined | 'debug' | 'warn' | 'error'} level The level to log at.
5 */
6export function log(message, level = undefined) {
7 if (process.env.NODE_ENV !== "production") {
8 if (level === "error") {
9 console.error(message);
10 }
11 else if (level === "warn") {
12 console.warn(message);
13 }
14 else if (level === "info") {
15 console.log(message);
16 }
17 else if (level === "debug") {
18 console.debug(message);
19 }
20 else {
21 console.debug(message);
22 }
23 }
24}
25
26export default class Util {
27 static lut = [];
28
29 /**
30 * When awaited, creates a delay for the given number of milliseconds.
31 * @param {Number} delayMilliseconds The number of milliseconds to delay for.
32 * @returns A promise that will resolve when the delay has finished.
33 */
34 static delay(delayMilliseconds) {
35 return new Promise(
36 resolve => {
37 setTimeout(
38 () => {
39 resolve(2);
40 },
41 delayMilliseconds
42 );
43 }
44 );
45 }
46
47 /**
48 * Fast UUID generator, RFC4122 version 4 compliant.
49 * @author Jeff Ward (jcward.com).
50 * @license MIT
51 * @link http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136
52 **/
53 static generateUuid() {
54 if (this.lut.length === 0) {
55 for (let i = 0; i < 256; i++) {
56 this.lut[i] = (i < 16 ? "0" : "") + (i).toString(16);
57 }
58 }
59
60 const d0 = Math.random() * 0xffffffff | 0;
61 const d1 = Math.random() * 0xffffffff | 0;
62 const d2 = Math.random() * 0xffffffff | 0;
63 const d3 = Math.random() * 0xffffffff | 0;
64
65 return this.lut[d0 & 0xff] + this.lut[d0 >> 8 & 0xff] + this.lut[d0 >> 16 & 0xff] + this.lut[d0 >> 24 & 0xff] + "-" +
66 this.lut[d1 & 0xff] + this.lut[d1 >> 8 & 0xff] + "-" + this.lut[d1 >> 16 & 0x0f | 0x40] + this.lut[d1 >> 24 & 0xff] + "-" +
67 this.lut[d2 & 0x3f | 0x80] + this.lut[d2 >> 8 & 0xff] + "-" + this.lut[d2 >> 16 & 0xff] + this.lut[d2 >> 24 & 0xff] +
68 this.lut[d3 & 0xff] + this.lut[d3 >> 8 & 0xff] + this.lut[d3 >> 16 & 0xff] + this.lut[d3 >> 24 & 0xff];
69 }
70
71 /**
72 * Formats a number of seconds into a time string.
73 * @param {Number} seconds The number of seconds.
74 * @param {Boolean} includeHoursIfNone Defines whether to include the hours component if it is empty.
75 * @param {Number} fractionDigits The number of millisecond digits to include in the time string.
76 * @returns {String} The formatted time string.
77 */
78 static formatSecondsTimeString(seconds, includeHoursIfNone, fractionDigits = 3) {
79 const hours = (seconds / 3600) | 0;
80 const minutes = ((seconds - (hours * 60)) / 60) | 0;
81 const actualSeconds = seconds - (minutes * 60);
82
83 let result = "";
84
85 if (includeHoursIfNone) {
86 result = hours.toLocaleString("en-US", { maximumFractionDigits: 0, minimumIntegerDigits: 2 }) + ":";
87 }
88 else if (!includeHoursIfNone && hours > 0) {
89 result = hours.toLocaleString("en-US", { maximumFractionDigits: 0, minimumIntegerDigits: 2 }) + ":";
90 }
91
92 result += minutes.toLocaleString("en-US", { maximumFractionDigits: 0, minimumIntegerDigits: 2 });
93 result += ":" + actualSeconds.toLocaleString("en-US", { minimumFractionDigits: fractionDigits, maximumFractionDigits: fractionDigits, minimumIntegerDigits: 2 });
94
95 return result;
96 }
97}
Note: See TracBrowser for help on using the repository browser.