ng-gpt
Version:
A Angular implementation of the google GPT API.
51 lines • 5.61 kB
JavaScript
import { Injectable } from '@angular/core';
import * as i0 from "@angular/core";
class GPTDurationError extends Error {
constructor(interval) {
super(`Invalid interval: '${interval}'ls`);
}
}
export class ParseDurationService {
convertToMilliseconds(time, unit) {
console.assert(/^(m?s|min|h)$/g.test(unit));
if (unit === 'ms') {
return time;
}
if (unit === 's') {
return time * 1000;
}
if (unit === 'min') {
return time * 60 * 1000;
}
return time * 60 * 60 * 1000;
}
convert(match) {
const time = parseFloat(match[1]);
if (match.length === 2) {
return time;
}
return this.convertToMilliseconds(time, match[2]);
}
parseDuration(interval) {
if (interval === undefined || interval === null) {
throw new GPTDurationError(interval);
}
if (typeof interval === 'number') {
return interval;
}
if (typeof interval !== 'string') {
throw new TypeError(`'${interval}' must be of number or string type`);
}
const match = interval.match(/((?:\d+)?.?\d+)(m?s|min|h)?/);
if (!match) {
throw new GPTDurationError(interval);
}
return this.convert(match);
}
}
ParseDurationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: ParseDurationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
ParseDurationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: ParseDurationService });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: ParseDurationService, decorators: [{
type: Injectable
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UtZHVyYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWdwdC9zcmMvbGliL3NlcnZpY2VzL3BhcnNlLWR1cmF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFM0MsTUFBTSxnQkFBaUIsU0FBUSxLQUFLO0lBQ2xDLFlBQVksUUFBeUI7UUFDbkMsS0FBSyxDQUFDLHNCQUFzQixRQUFRLEtBQUssQ0FBQyxDQUFDO0lBQzdDLENBQUM7Q0FDRjtBQUdELE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IscUJBQXFCLENBQUMsSUFBWSxFQUFFLElBQVk7UUFDOUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUU1QyxJQUFJLElBQUksS0FBSyxJQUFJLEVBQUU7WUFDakIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELElBQUksSUFBSSxLQUFLLEdBQUcsRUFBRTtZQUNoQixPQUFPLElBQUksR0FBRyxJQUFJLENBQUM7U0FDcEI7UUFDRCxJQUFJLElBQUksS0FBSyxLQUFLLEVBQUU7WUFDbEIsT0FBTyxJQUFJLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztTQUN6QjtRQUVELE9BQU8sSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0lBQy9CLENBQUM7SUFFRCxPQUFPLENBQUMsS0FBVTtRQUNoQixNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFbEMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUN0QixPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxhQUFhLENBQUMsUUFBYTtRQUN6QixJQUFJLFFBQVEsS0FBSyxTQUFTLElBQUksUUFBUSxLQUFLLElBQUksRUFBRTtZQUMvQyxNQUFNLElBQUksZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDdEM7UUFFRCxJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsRUFBRTtZQUNoQyxPQUFPLFFBQVEsQ0FBQztTQUNqQjtRQUVELElBQUksT0FBTyxRQUFRLEtBQUssUUFBUSxFQUFFO1lBQ2hDLE1BQU0sSUFBSSxTQUFTLENBQUMsSUFBSSxRQUFRLG9DQUFvQyxDQUFDLENBQUM7U0FDdkU7UUFFRCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7UUFFNUQsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLE1BQU0sSUFBSSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUN0QztRQUVELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDOztpSEEvQ1Usb0JBQW9CO3FIQUFwQixvQkFBb0I7MkZBQXBCLG9CQUFvQjtrQkFEaEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuY2xhc3MgR1BURHVyYXRpb25FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IoaW50ZXJ2YWw6IG51bWJlciB8IHN0cmluZykge1xuICAgIHN1cGVyKGBJbnZhbGlkIGludGVydmFsOiAnJHtpbnRlcnZhbH0nbHNgKTtcbiAgfVxufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUGFyc2VEdXJhdGlvblNlcnZpY2Uge1xuICBjb252ZXJ0VG9NaWxsaXNlY29uZHModGltZTogbnVtYmVyLCB1bml0OiBzdHJpbmcpIHtcbiAgICBjb25zb2xlLmFzc2VydCgvXihtP3N8bWlufGgpJC9nLnRlc3QodW5pdCkpO1xuXG4gICAgaWYgKHVuaXQgPT09ICdtcycpIHtcbiAgICAgIHJldHVybiB0aW1lO1xuICAgIH1cbiAgICBpZiAodW5pdCA9PT0gJ3MnKSB7XG4gICAgICByZXR1cm4gdGltZSAqIDEwMDA7XG4gICAgfVxuICAgIGlmICh1bml0ID09PSAnbWluJykge1xuICAgICAgcmV0dXJuIHRpbWUgKiA2MCAqIDEwMDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRpbWUgKiA2MCAqIDYwICogMTAwMDtcbiAgfVxuXG4gIGNvbnZlcnQobWF0Y2g6IGFueSkge1xuICAgIGNvbnN0IHRpbWUgPSBwYXJzZUZsb2F0KG1hdGNoWzFdKTtcblxuICAgIGlmIChtYXRjaC5sZW5ndGggPT09IDIpIHtcbiAgICAgIHJldHVybiB0aW1lO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmNvbnZlcnRUb01pbGxpc2Vjb25kcyh0aW1lLCBtYXRjaFsyXSk7XG4gIH1cblxuICBwYXJzZUR1cmF0aW9uKGludGVydmFsOiBhbnkpIHtcbiAgICBpZiAoaW50ZXJ2YWwgPT09IHVuZGVmaW5lZCB8fCBpbnRlcnZhbCA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEdQVER1cmF0aW9uRXJyb3IoaW50ZXJ2YWwpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgaW50ZXJ2YWwgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gaW50ZXJ2YWw7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBpbnRlcnZhbCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYCcke2ludGVydmFsfScgbXVzdCBiZSBvZiBudW1iZXIgb3Igc3RyaW5nIHR5cGVgKTtcbiAgICB9XG5cbiAgICBjb25zdCBtYXRjaCA9IGludGVydmFsLm1hdGNoKC8oKD86XFxkKyk/Lj9cXGQrKShtP3N8bWlufGgpPy8pO1xuXG4gICAgaWYgKCFtYXRjaCkge1xuICAgICAgdGhyb3cgbmV3IEdQVER1cmF0aW9uRXJyb3IoaW50ZXJ2YWwpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmNvbnZlcnQobWF0Y2gpO1xuICB9XG59XG4iXX0=