UNPKG

@singleton-i18n/angular-client

Version:

Singleton client code for Angular 10.

78 lines 9.97 kB
/* * Copyright 2019-2021 VMware, Inc. * SPDX-License-Identifier: EPL-2.0 */ var TimeUnit; (function (TimeUnit) { TimeUnit[TimeUnit["SECOND"] = 0] = "SECOND"; TimeUnit[TimeUnit["MINUTE"] = 1] = "MINUTE"; TimeUnit[TimeUnit["HOUR"] = 2] = "HOUR"; TimeUnit[TimeUnit["DAY"] = 3] = "DAY"; TimeUnit[TimeUnit["MONTH"] = 4] = "MONTH"; TimeUnit[TimeUnit["YEAR"] = 5] = "YEAR"; })(TimeUnit || (TimeUnit = {})); var SecondsOfUnit; (function (SecondsOfUnit) { SecondsOfUnit[SecondsOfUnit["SECOND"] = 1] = "SECOND"; SecondsOfUnit[SecondsOfUnit["MINUTE"] = 60] = "MINUTE"; SecondsOfUnit[SecondsOfUnit["HOUR"] = 3600] = "HOUR"; SecondsOfUnit[SecondsOfUnit["DAY"] = 86400] = "DAY"; SecondsOfUnit[SecondsOfUnit["MONTH"] = 2629746] = "MONTH"; SecondsOfUnit[SecondsOfUnit["YEAR"] = 31556952] = "YEAR"; })(SecondsOfUnit || (SecondsOfUnit = {})); var THRESHODS; (function (THRESHODS) { THRESHODS[THRESHODS["SECOND"] = 45] = "SECOND"; THRESHODS[THRESHODS["MINUTE"] = 45] = "MINUTE"; THRESHODS[THRESHODS["HOUR"] = 22] = "HOUR"; THRESHODS[THRESHODS["DAY"] = 26] = "DAY"; THRESHODS[THRESHODS["MONTH"] = 11] = "MONTH"; })(THRESHODS || (THRESHODS = {})); export class RelativeTimeFormatter { getOffset(from, to) { const start = from.getTime(); const end = to.getTime(); const ms = end - start; const offset = ms / 1000; const offsetOfSeconds = Math.floor(Math.abs(offset)); const unit = this.getUnit(offsetOfSeconds); const offsetOfUnit = this.getOffsetOfUnit(offsetOfSeconds, unit); return { unit: TimeUnit[unit].toLocaleLowerCase(), offset: offset > 0 ? offsetOfUnit : -1 * offsetOfUnit }; } // Calculate the best time unit based on the difference and use the threshold limit range getUnit(offset) { let unit; if (offset < SecondsOfUnit.MINUTE && this.isOverThreshod(offset, TimeUnit.SECOND)) { unit = TimeUnit.SECOND; } else if (offset < SecondsOfUnit.HOUR && this.isOverThreshod(offset, TimeUnit.MINUTE)) { unit = TimeUnit.MINUTE; } else if (offset < SecondsOfUnit.DAY && this.isOverThreshod(offset, TimeUnit.HOUR)) { unit = TimeUnit.HOUR; } else if (offset < SecondsOfUnit.MONTH && this.isOverThreshod(offset, TimeUnit.DAY)) { unit = TimeUnit.DAY; } else if (offset < SecondsOfUnit.YEAR && this.isOverThreshod(offset, TimeUnit.MONTH)) { unit = TimeUnit.MONTH; } else { unit = TimeUnit.YEAR; } return unit; } // Check whether the offset of 'unit' is within the threshold range isOverThreshod(offset, unit) { const offsetOfUnit = this.getOffsetOfUnit(offset, unit); return offsetOfUnit < THRESHODS[TimeUnit[unit]]; } getOffsetOfUnit(offset, unit) { const offsetOfUnit = Math.round(offset / SecondsOfUnit[TimeUnit[unit]]); return offsetOfUnit; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRpdmUudGltZS5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9ybGlnZW5nL1Byb2plY3RzL0Rldm9wcy9DbGllbnRfQW5ndWxhcl9HaXRIdWJfTnBtanMvdmlwL2NpL3B1YjJvcmcvQ2xpZW50X0FuZ3VsYXJfR2l0SHViX05wbWpzL3NpbmdsZXRvbi9wcm9qZWN0cy9hbmd1bGFyLWNsaWVudC8iLCJzb3VyY2VzIjpbInNyYy9mb3JtYXR0ZXJzL3JlbGF0aXZlLnRpbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBQ0gsSUFBSyxRQU9KO0FBUEQsV0FBSyxRQUFRO0lBQ1QsMkNBQU0sQ0FBQTtJQUNOLDJDQUFNLENBQUE7SUFDTix1Q0FBSSxDQUFBO0lBQ0oscUNBQUcsQ0FBQTtJQUNILHlDQUFLLENBQUE7SUFDTCx1Q0FBSSxDQUFBO0FBQ1IsQ0FBQyxFQVBJLFFBQVEsS0FBUixRQUFRLFFBT1o7QUFDRCxJQUFLLGFBT0o7QUFQRCxXQUFLLGFBQWE7SUFDZCxxREFBVSxDQUFBO0lBQ1Ysc0RBQVcsQ0FBQTtJQUNYLG9EQUFXLENBQUE7SUFDWCxtREFBVyxDQUFBO0lBQ1gseURBQWtDLENBQUE7SUFDbEMsd0RBQStCLENBQUE7QUFDbkMsQ0FBQyxFQVBJLGFBQWEsS0FBYixhQUFhLFFBT2pCO0FBRUQsSUFBSyxTQU1KO0FBTkQsV0FBSyxTQUFTO0lBQ1YsOENBQVcsQ0FBQTtJQUNYLDhDQUFXLENBQUE7SUFDWCwwQ0FBUyxDQUFBO0lBQ1Qsd0NBQVEsQ0FBQTtJQUNSLDRDQUFVLENBQUE7QUFDZCxDQUFDLEVBTkksU0FBUyxLQUFULFNBQVMsUUFNYjtBQU9ELE1BQU0sT0FBTyxxQkFBcUI7SUFDdkIsU0FBUyxDQUFFLElBQVUsRUFBRSxFQUFRO1FBQ2xDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM3QixNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDekIsTUFBTSxFQUFFLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQztRQUN2QixNQUFNLE1BQU0sR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBRSxNQUFNLENBQUUsQ0FBRSxDQUFDO1FBRXpELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUUsZUFBZSxDQUFFLENBQUM7UUFDN0MsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDakUsT0FBTztZQUNILElBQUksRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsaUJBQWlCLEVBQUU7WUFDeEMsTUFBTSxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsWUFBWTtTQUN4RCxDQUFDO0lBQ04sQ0FBQztJQUVELHlGQUF5RjtJQUNqRixPQUFPLENBQUUsTUFBYztRQUMzQixJQUFJLElBQWMsQ0FBQztRQUNuQixJQUFLLE1BQU0sR0FBSSxhQUFhLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNqRixJQUFJLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztTQUMxQjthQUFNLElBQUssTUFBTSxHQUFJLGFBQWEsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3RGLElBQUksR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO1NBQzFCO2FBQU0sSUFBSyxNQUFNLEdBQUksYUFBYSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDbkYsSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7U0FDeEI7YUFBTSxJQUFLLE1BQU0sR0FBSSxhQUFhLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNwRixJQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQztTQUN2QjthQUFNLElBQUssTUFBTSxHQUFJLGFBQWEsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3JGLElBQUksR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDO1NBQ3pCO2FBQU07WUFDSCxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztTQUN4QjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxtRUFBbUU7SUFDM0QsY0FBYyxDQUFFLE1BQWMsRUFBRSxJQUFjO1FBQ2xELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3hELE9BQU8sWUFBWSxHQUFHLFNBQVMsQ0FBRSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUUsQ0FBQztJQUN0RCxDQUFDO0lBRU8sZUFBZSxDQUFFLE1BQWMsRUFBRSxJQUFjO1FBQ25ELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUUsTUFBTSxHQUFHLGFBQWEsQ0FBRSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBRSxDQUFDO1FBQzNFLE9BQU8sWUFBWSxDQUFDO0lBQ3hCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxOS0yMDIxIFZNd2FyZSwgSW5jLlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuZW51bSBUaW1lVW5pdCB7XG4gICAgU0VDT05ELFxuICAgIE1JTlVURSxcbiAgICBIT1VSLFxuICAgIERBWSxcbiAgICBNT05USCxcbiAgICBZRUFSXG59XG5lbnVtIFNlY29uZHNPZlVuaXQge1xuICAgIFNFQ09ORCA9IDEsIC8vIDFcbiAgICBNSU5VVEUgPSA2MCwgLy8gMSAqIDYwXG4gICAgSE9VUiA9IDM2MDAsIC8vIDEgKiA2MCAqIDYwXG4gICAgREFZID0gODY0MDAsIC8vIDEgKiA2MCAqIDYwICogMjRcbiAgICBNT05USCA9IDg2NDAwICogKCAxNDYwOTcgLyA0ODAwICApLCAvLyAxICogNjAgKiA2MCAqIDI0ICogKGRheXMgb2YgbW9udGgpXG4gICAgWUVBUiA9IFNlY29uZHNPZlVuaXQuTU9OVEggKiAxMlxufVxuXG5lbnVtIFRIUkVTSE9EUyB7XG4gICAgU0VDT05EID0gNDUsXG4gICAgTUlOVVRFID0gNDUsXG4gICAgSE9VUiA9IDIyLFxuICAgIERBWSA9IDI2LFxuICAgIE1PTlRIID0gMTFcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUaW1lT2Zmc2V0IHtcbiAgICB1bml0OiBzdHJpbmc7XG4gICAgb2Zmc2V0OiBudW1iZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBSZWxhdGl2ZVRpbWVGb3JtYXR0ZXIge1xuICAgIHB1YmxpYyBnZXRPZmZzZXQoIGZyb206IERhdGUsIHRvOiBEYXRlICk6IFRpbWVPZmZzZXQge1xuICAgICAgICBjb25zdCBzdGFydCA9IGZyb20uZ2V0VGltZSgpO1xuICAgICAgICBjb25zdCBlbmQgPSB0by5nZXRUaW1lKCk7XG4gICAgICAgIGNvbnN0IG1zID0gZW5kIC0gc3RhcnQ7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IG1zIC8gMTAwMDtcbiAgICAgICAgY29uc3Qgb2Zmc2V0T2ZTZWNvbmRzID0gTWF0aC5mbG9vciggTWF0aC5hYnMoIG9mZnNldCApICk7XG5cbiAgICAgICAgY29uc3QgdW5pdCA9IHRoaXMuZ2V0VW5pdCggb2Zmc2V0T2ZTZWNvbmRzICk7XG4gICAgICAgIGNvbnN0IG9mZnNldE9mVW5pdCA9IHRoaXMuZ2V0T2Zmc2V0T2ZVbml0KG9mZnNldE9mU2Vjb25kcywgdW5pdCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB1bml0OiBUaW1lVW5pdFt1bml0XS50b0xvY2FsZUxvd2VyQ2FzZSgpLFxuICAgICAgICAgICAgb2Zmc2V0OiBvZmZzZXQgPiAwID8gb2Zmc2V0T2ZVbml0IDogLTEgKiBvZmZzZXRPZlVuaXRcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBDYWxjdWxhdGUgdGhlIGJlc3QgdGltZSB1bml0IGJhc2VkIG9uIHRoZSBkaWZmZXJlbmNlIGFuZCB1c2UgdGhlIHRocmVzaG9sZCBsaW1pdCByYW5nZVxuICAgIHByaXZhdGUgZ2V0VW5pdCggb2Zmc2V0OiBudW1iZXIgKTogVGltZVVuaXQge1xuICAgICAgICBsZXQgdW5pdDogVGltZVVuaXQ7XG4gICAgICAgIGlmICggb2Zmc2V0IDwgIFNlY29uZHNPZlVuaXQuTUlOVVRFICYmIHRoaXMuaXNPdmVyVGhyZXNob2Qob2Zmc2V0LCBUaW1lVW5pdC5TRUNPTkQpKSB7XG4gICAgICAgICAgICB1bml0ID0gVGltZVVuaXQuU0VDT05EO1xuICAgICAgICB9IGVsc2UgaWYgKCBvZmZzZXQgPCAgU2Vjb25kc09mVW5pdC5IT1VSICYmIHRoaXMuaXNPdmVyVGhyZXNob2Qob2Zmc2V0LCBUaW1lVW5pdC5NSU5VVEUpKSB7XG4gICAgICAgICAgICB1bml0ID0gVGltZVVuaXQuTUlOVVRFO1xuICAgICAgICB9IGVsc2UgaWYgKCBvZmZzZXQgPCAgU2Vjb25kc09mVW5pdC5EQVkgJiYgdGhpcy5pc092ZXJUaHJlc2hvZChvZmZzZXQsIFRpbWVVbml0LkhPVVIpKSB7XG4gICAgICAgICAgICB1bml0ID0gVGltZVVuaXQuSE9VUjtcbiAgICAgICAgfSBlbHNlIGlmICggb2Zmc2V0IDwgIFNlY29uZHNPZlVuaXQuTU9OVEggJiYgdGhpcy5pc092ZXJUaHJlc2hvZChvZmZzZXQsIFRpbWVVbml0LkRBWSkpIHtcbiAgICAgICAgICAgIHVuaXQgPSBUaW1lVW5pdC5EQVk7XG4gICAgICAgIH0gZWxzZSBpZiAoIG9mZnNldCA8ICBTZWNvbmRzT2ZVbml0LllFQVIgJiYgdGhpcy5pc092ZXJUaHJlc2hvZChvZmZzZXQsIFRpbWVVbml0Lk1PTlRIKSkge1xuICAgICAgICAgICAgdW5pdCA9IFRpbWVVbml0Lk1PTlRIO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdW5pdCA9IFRpbWVVbml0LllFQVI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuaXQ7XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgd2hldGhlciB0aGUgb2Zmc2V0IG9mICd1bml0JyBpcyB3aXRoaW4gdGhlIHRocmVzaG9sZCByYW5nZVxuICAgIHByaXZhdGUgaXNPdmVyVGhyZXNob2QoIG9mZnNldDogbnVtYmVyLCB1bml0OiBUaW1lVW5pdCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBvZmZzZXRPZlVuaXQgPSB0aGlzLmdldE9mZnNldE9mVW5pdChvZmZzZXQsIHVuaXQpO1xuICAgICAgICByZXR1cm4gb2Zmc2V0T2ZVbml0IDwgVEhSRVNIT0RTWyBUaW1lVW5pdFt1bml0XSBdO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0T2Zmc2V0T2ZVbml0KCBvZmZzZXQ6IG51bWJlciwgdW5pdDogVGltZVVuaXQpIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0T2ZVbml0ID0gTWF0aC5yb3VuZCggb2Zmc2V0IC8gU2Vjb25kc09mVW5pdFsgVGltZVVuaXRbdW5pdF1dICk7XG4gICAgICAgIHJldHVybiBvZmZzZXRPZlVuaXQ7XG4gICAgfVxufVxuXG4iXX0=