UNPKG

ng-time-past-pipe

Version:

Reactive textual representation of the time that has been passed between a given date and now in your Angular App.

39 lines 4.7 kB
/** * Optimistic parse a given input to seconds that past between it and now * * @param value A value of type string, number or date * @return The time past in seconds between now and input value * @internal */ export const parseInputValue = (value) => { let dateValueTime; if (typeof value === 'number') { if (value <= 0) { // Negative number will always be handled as seconds in the future return value; } const length = Math.ceil(Math.log10(value + 1)); if (length < 10 && length > 0) { return value; // Guessing the input is already the passed seconds } if (length === 10) { value *= 1000; } // Guessing UnixTimestamp dateValueTime = value; // All other lengths are considered intentional and therefore processed } else { // Use Date constructor to determine the microseconds dateValueTime = (value instanceof Date ? value : new Date(value)).getTime(); } return Math.floor((Date.now() - dateValueTime) / 1000); }; /** * Strict TAInput Type Validator * * @param value The optimistic input value to validate * @internal */ export const validateTAInputType = (value) => { return (typeof value === 'number' || typeof value === 'string' || value instanceof Date); }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1wYXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdGltZS1wYXN0LXBpcGUvc3JjL2xpYi90aW1lLXBhc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0E7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUMsS0FBYyxFQUFVLEVBQUU7SUFDeEQsSUFBSSxhQUFhLENBQUM7SUFDbEIsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7UUFDN0IsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFO1lBQ2Qsa0VBQWtFO1lBQ2xFLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEQsSUFBSSxNQUFNLEdBQUcsRUFBRSxJQUFJLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDN0IsT0FBTyxLQUFLLENBQUMsQ0FBQyxtREFBbUQ7U0FDbEU7UUFFRCxJQUFJLE1BQU0sS0FBSyxFQUFFLEVBQUU7WUFBRSxLQUFLLElBQUksSUFBSSxDQUFDO1NBQUUsQ0FBQyx5QkFBeUI7UUFDL0QsYUFBYSxHQUFHLEtBQUssQ0FBQyxDQUFDLHVFQUF1RTtLQUMvRjtTQUFNO1FBQ0wscURBQXFEO1FBQ3JELGFBQWEsR0FBRyxDQUFDLEtBQUssWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztLQUM3RTtJQUVELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxhQUFhLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUN6RCxDQUFDLENBQUM7QUFFRjs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsS0FBYyxFQUFXLEVBQUU7SUFDN0QsT0FBTyxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxZQUFZLElBQUksQ0FBQyxDQUFDO0FBQzNGLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQWNjZXNzb3IgSW5wdXQgVHlwZVxuICovXG5leHBvcnQgdHlwZSBUQUlucHV0ID0gbnVtYmVyIHwgc3RyaW5nIHwgRGF0ZTtcblxuLyoqXG4gKiBPcHRpbWlzdGljIHBhcnNlIGEgZ2l2ZW4gaW5wdXQgdG8gc2Vjb25kcyB0aGF0IHBhc3QgYmV0d2VlbiBpdCBhbmQgbm93XG4gKlxuICogQHBhcmFtIHZhbHVlIEEgdmFsdWUgb2YgdHlwZSBzdHJpbmcsIG51bWJlciBvciBkYXRlXG4gKiBAcmV0dXJuIFRoZSB0aW1lIHBhc3QgaW4gc2Vjb25kcyBiZXR3ZWVuIG5vdyBhbmQgaW5wdXQgdmFsdWVcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgcGFyc2VJbnB1dFZhbHVlID0gKHZhbHVlOiBUQUlucHV0KTogbnVtYmVyID0+IHtcbiAgbGV0IGRhdGVWYWx1ZVRpbWU7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgaWYgKHZhbHVlIDw9IDApIHtcbiAgICAgIC8vIE5lZ2F0aXZlIG51bWJlciB3aWxsIGFsd2F5cyBiZSBoYW5kbGVkIGFzIHNlY29uZHMgaW4gdGhlIGZ1dHVyZVxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIGNvbnN0IGxlbmd0aCA9IE1hdGguY2VpbChNYXRoLmxvZzEwKHZhbHVlICsgMSkpO1xuICAgIGlmIChsZW5ndGggPCAxMCAmJiBsZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gdmFsdWU7IC8vIEd1ZXNzaW5nIHRoZSBpbnB1dCBpcyBhbHJlYWR5IHRoZSBwYXNzZWQgc2Vjb25kc1xuICAgIH1cblxuICAgIGlmIChsZW5ndGggPT09IDEwKSB7IHZhbHVlICo9IDEwMDA7IH0gLy8gR3Vlc3NpbmcgVW5peFRpbWVzdGFtcFxuICAgIGRhdGVWYWx1ZVRpbWUgPSB2YWx1ZTsgLy8gQWxsIG90aGVyIGxlbmd0aHMgYXJlIGNvbnNpZGVyZWQgaW50ZW50aW9uYWwgYW5kIHRoZXJlZm9yZSBwcm9jZXNzZWRcbiAgfSBlbHNlIHtcbiAgICAvLyBVc2UgRGF0ZSBjb25zdHJ1Y3RvciB0byBkZXRlcm1pbmUgdGhlIG1pY3Jvc2Vjb25kc1xuICAgIGRhdGVWYWx1ZVRpbWUgPSAodmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiBuZXcgRGF0ZSh2YWx1ZSkpLmdldFRpbWUoKTtcbiAgfVxuXG4gIHJldHVybiBNYXRoLmZsb29yKChEYXRlLm5vdygpIC0gZGF0ZVZhbHVlVGltZSkgLyAxMDAwKTtcbn07XG5cbi8qKlxuICogU3RyaWN0IFRBSW5wdXQgVHlwZSBWYWxpZGF0b3JcbiAqXG4gKiBAcGFyYW0gdmFsdWUgVGhlIG9wdGltaXN0aWMgaW5wdXQgdmFsdWUgdG8gdmFsaWRhdGVcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgdmFsaWRhdGVUQUlucHV0VHlwZSA9ICh2YWx1ZTogVEFJbnB1dCk6IGJvb2xlYW4gPT4ge1xuICByZXR1cm4gKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgfHwgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fCB2YWx1ZSBpbnN0YW5jZW9mIERhdGUpO1xufTtcbiJdfQ==