@deephaven/utils
Advanced tools
+21
-0
@@ -5,2 +5,8 @@ type TimeInSeconds = number; | ||
| static TIME_PATTERN: string; | ||
| static MILLIS_PER_SECOND: number; | ||
| static NANOS_PER_SECOND: number; | ||
| static NANOS_PER_MIN: number; | ||
| static NANOS_PER_HOUR: number; | ||
| static MILLIS_PER_MIN: number; | ||
| static MILLIS_PER_HOUR: number; | ||
| static TIME_ZONES: readonly { | ||
@@ -28,4 +34,19 @@ label: string; | ||
| static parseTime(timeString: unknown): TimeInSeconds; | ||
| /** | ||
| * Converts a time difference in seconds to a human-readable string. | ||
| * @param time The time difference in seconds. | ||
| * @returns A string representing the time difference. | ||
| */ | ||
| static formatDuration(time: number): string; | ||
| /** | ||
| * Gets a human-readable time string for the difference between two times. | ||
| * Generally meant for informational tooltips. | ||
| * @param startTime The start time in milliseconds or nanoseconds. | ||
| * @param endTime The end time in milliseconds or nanoseconds. | ||
| * @param conversion The conversion type ('ms' or 'ns') | ||
| * @returns A string representing the time difference, or null if invalid. | ||
| */ | ||
| static formatConvertedDuration(startTime: string | number | undefined, endTime: string | number | undefined, conversion?: string): string | null; | ||
| } | ||
| export default TimeUtils; | ||
| //# sourceMappingURL=TimeUtils.d.ts.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"TimeUtils.d.ts","sourceRoot":"","sources":["../src/TimeUtils.ts"],"names":[],"mappings":"AAAA,KAAK,aAAa,GAAG,MAAM,CAAC;AAC5B,MAAM,MAAM,UAAU,GAAG,GAAG,MAAM,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;AAEzD,cAAM,SAAS;IACb,MAAM,CAAC,YAAY,SAA8C;IAEjE,MAAM,CAAC,UAAU;;;QAsBd;IAEH;;;;;OAKG;IACH,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM;IAkB/C;;;OAGG;IACH,MAAM,CAAC,UAAU,CAAC,aAAa,EAAE,OAAO,GAAG,MAAM;IAyBjD,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,IAAI,UAAU;IAI/C;;;OAGG;IACH,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,OAAO,GAAG,aAAa;CAiBrD;AAED,eAAe,SAAS,CAAC"} | ||
| {"version":3,"file":"TimeUtils.d.ts","sourceRoot":"","sources":["../src/TimeUtils.ts"],"names":[],"mappings":"AAAA,KAAK,aAAa,GAAG,MAAM,CAAC;AAC5B,MAAM,MAAM,UAAU,GAAG,GAAG,MAAM,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;AAEzD,cAAM,SAAS;IACb,MAAM,CAAC,YAAY,SAA8C;IAEjE,MAAM,CAAC,iBAAiB,SAAQ;IAEhC,MAAM,CAAC,gBAAgB,SAAO;IAE9B,MAAM,CAAC,aAAa,SAAmC;IAEvD,MAAM,CAAC,cAAc,SAAgC;IAErD,MAAM,CAAC,cAAc,SAAoC;IAEzD,MAAM,CAAC,eAAe,SAAiC;IAEvD,MAAM,CAAC,UAAU;;;QAsBd;IAEH;;;;;OAKG;IACH,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM;IAkB/C;;;OAGG;IACH,MAAM,CAAC,UAAU,CAAC,aAAa,EAAE,OAAO,GAAG,MAAM;IAyBjD,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,IAAI,UAAU;IAI/C;;;OAGG;IACH,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,OAAO,GAAG,aAAa;IAkBpD;;;;OAIG;IACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAc3C;;;;;;;OAOG;IACH,MAAM,CAAC,uBAAuB,CAC5B,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,EACtC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,EACpC,UAAU,SAAO,GAChB,MAAM,GAAG,IAAI;CA+BjB;AAED,eAAe,SAAS,CAAC"} |
+59
-0
@@ -0,1 +1,2 @@ | ||
| var _TimeUtils; | ||
| function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } | ||
@@ -54,4 +55,62 @@ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; } | ||
| } | ||
| /** | ||
| * Converts a time difference in seconds to a human-readable string. | ||
| * @param time The time difference in seconds. | ||
| * @returns A string representing the time difference. | ||
| */ | ||
| static formatDuration(time) { | ||
| var hours = Math.floor(time / 3600); | ||
| var mins = Math.floor(time % 3600 / 60); | ||
| var seconds = time % 60; | ||
| if (hours > 0) { | ||
| return "".concat(hours, "h ").concat(mins, "m ").concat(seconds, "s"); | ||
| } | ||
| if (mins > 0) { | ||
| return "".concat(mins, "m ").concat(seconds.toFixed(1), "s"); | ||
| } | ||
| return "".concat(seconds.toFixed(2), "s"); | ||
| } | ||
| /** | ||
| * Gets a human-readable time string for the difference between two times. | ||
| * Generally meant for informational tooltips. | ||
| * @param startTime The start time in milliseconds or nanoseconds. | ||
| * @param endTime The end time in milliseconds or nanoseconds. | ||
| * @param conversion The conversion type ('ms' or 'ns') | ||
| * @returns A string representing the time difference, or null if invalid. | ||
| */ | ||
| static formatConvertedDuration(startTime, endTime) { | ||
| var conversion = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'ms'; | ||
| if (startTime == null || endTime === '' || endTime === 0 || endTime == null) { | ||
| return null; | ||
| } | ||
| var conversionFactor = 1; | ||
| var start = null; | ||
| var end = null; | ||
| if (conversion === 'ms') { | ||
| conversionFactor = 1000; | ||
| start = new Date(startTime).valueOf(); | ||
| end = new Date(endTime).valueOf(); | ||
| } else if (conversion === 'ns') { | ||
| // can only handle dates that are already nanosecond epochs | ||
| conversionFactor = 1e9; | ||
| start = Number(startTime); | ||
| end = Number(endTime); | ||
| } else { | ||
| // can only handle dates that are milliseconds or nanoseconds | ||
| return null; | ||
| } | ||
| var deltaTime = (end - start) / conversionFactor; | ||
| return this.formatDuration(deltaTime); | ||
| } | ||
| } | ||
| _TimeUtils = TimeUtils; | ||
| _defineProperty(TimeUtils, "TIME_PATTERN", '([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]'); | ||
| _defineProperty(TimeUtils, "MILLIS_PER_SECOND", 1000); | ||
| _defineProperty(TimeUtils, "NANOS_PER_SECOND", 1e9); | ||
| _defineProperty(TimeUtils, "NANOS_PER_MIN", 60 * _TimeUtils.NANOS_PER_SECOND); | ||
| _defineProperty(TimeUtils, "NANOS_PER_HOUR", 60 * _TimeUtils.NANOS_PER_MIN); | ||
| _defineProperty(TimeUtils, "MILLIS_PER_MIN", 60 * _TimeUtils.MILLIS_PER_SECOND); | ||
| _defineProperty(TimeUtils, "MILLIS_PER_HOUR", 60 * _TimeUtils.MILLIS_PER_MIN); | ||
| _defineProperty(TimeUtils, "TIME_ZONES", Object.freeze([{ | ||
@@ -58,0 +117,0 @@ label: 'Tokyo UTC+9 No DST', |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"TimeUtils.js","names":["TimeUtils","formatElapsedTime","time","Number","isInteger","Error","concat","hours","Math","floor","mins","seconds","padStart","formatTime","timeInSeconds","String","divisorForMinutes","minutes","divisorForSeconds","ceil","isTimeString","s","RegExp","TIME_PATTERN","test","parseTime","timeString","components","split","length","_defineProperty","Object","freeze","label","value"],"sources":["../src/TimeUtils.ts"],"sourcesContent":["type TimeInSeconds = number;\nexport type TimeString = `${string}:${string}:${string}`;\n\nclass TimeUtils {\n static TIME_PATTERN = '([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]';\n\n static TIME_ZONES = Object.freeze([\n { label: 'Tokyo UTC+9 No DST', value: 'Asia/Tokyo' },\n { label: 'Seoul UTC+9 No DST', value: 'Asia/Seoul' },\n { label: 'Hong Kong UTC+8 No DST', value: 'Asia/Hong_Kong' },\n { label: 'Singapore UTC+8 No DST', value: 'Asia/Singapore' },\n { label: 'Kolkata UTC+5:30 No DST', value: 'Asia/Kolkata' },\n { label: 'Berlin UTC+1', value: 'Europe/Berlin' },\n { label: 'UTC UTC±0 No DST', value: 'UTC' },\n { label: 'London UTC±0', value: 'Europe/London' },\n { label: 'Sao Paulo UTC-2', value: 'America/Sao_Paulo' },\n { label: 'Newfoundland UTC-3:30', value: 'America/St_Johns' },\n { label: 'Halifax UTC-4', value: 'America/Halifax' },\n { label: 'New York UTC−5', value: 'America/New_York' },\n { label: 'Chicago UTC-6', value: 'America/Chicago' },\n { label: 'Denver UTC-7', value: 'America/Denver' },\n { label: 'Los Angeles UTC-8', value: 'America/Los_Angeles' },\n { label: 'Anchorage UTC-9', value: 'America/Anchorage' },\n { label: 'Honolulu UTC-10 No DST', value: 'Pacific/Honolulu' },\n { label: 'Zurich UTC+1', value: 'Europe/Zurich' },\n { label: 'Amsterdam UTC+1', value: 'Europe/Amsterdam' },\n { label: 'Taipei UTC+8 No DST', value: 'Asia/Taipei' },\n { label: 'Sydney UTC+10', value: 'Australia/Sydney' },\n ]);\n\n /**\n * Pretty prints a time in seconds as a format like \"1h 3m 23s\", \"32s\"\n * Seconds are padded after 60s, has elapsed to reduce width changes\n * Minutes aren't paded, as thats a slower change\n * @param time in seconds\n */\n static formatElapsedTime(time: unknown): string {\n if (typeof time !== 'number' || !Number.isInteger(time)) {\n throw new Error(\n `${time} is not a number that can be expressed as a formatted time`\n );\n }\n\n const hours = Math.floor(time / 3600);\n const mins = Math.floor((time % 3600) / 60);\n const seconds = time % 60;\n\n return (\n `${hours > 0 ? `${hours}h ` : ''}` +\n `${mins > 0 || hours > 0 ? `${mins}m ` : ''}` +\n `${time >= 60 ? `${seconds}s`.padStart(3, '0') : `${seconds}s`}`\n );\n }\n\n /**\n * Format the time into hh:mm:ss format, eg. '12:34:56'\n * @param timeInSeconds in seconds\n */\n static formatTime(timeInSeconds: unknown): string {\n if (\n typeof timeInSeconds !== 'number' ||\n !Number.isInteger(timeInSeconds) ||\n timeInSeconds < 0\n ) {\n throw new Error(\n `${timeInSeconds} is not a number that can be expressed as a formatted time`\n );\n }\n\n const hours = String(Math.floor(timeInSeconds / (60 * 60))).padStart(\n 2,\n '0'\n );\n\n const divisorForMinutes = timeInSeconds % (60 * 60);\n const minutes = String(Math.floor(divisorForMinutes / 60)).padStart(2, '0');\n\n const divisorForSeconds = divisorForMinutes % 60;\n const seconds = String(Math.ceil(divisorForSeconds)).padStart(2, '0');\n\n return `${hours}:${minutes}:${seconds}`;\n }\n\n static isTimeString(s: string): s is TimeString {\n return new RegExp(TimeUtils.TIME_PATTERN).test(s);\n }\n\n /**\n * Parse time in seconds from the provided time string\n * @param timeString Time string in hh:mm:ss format\n */\n static parseTime(timeString: unknown): TimeInSeconds {\n if (timeString == null || typeof timeString !== 'string') {\n throw new Error(`${timeString} is not a valid string`);\n }\n\n const components = timeString.split(':');\n\n if (components.length !== 3) {\n throw new Error(`${timeString} is not a time string that can be parsed`);\n }\n\n return (\n Number(components[0]) * 60 * 60 +\n Number(components[1]) * 60 +\n Number(components[2])\n );\n }\n}\n\nexport default TimeUtils;\n"],"mappings":"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","ignoreList":[]} | ||
| {"version":3,"file":"TimeUtils.js","names":["TimeUtils","formatElapsedTime","time","Number","isInteger","Error","concat","hours","Math","floor","mins","seconds","padStart","formatTime","timeInSeconds","String","divisorForMinutes","minutes","divisorForSeconds","ceil","isTimeString","s","RegExp","TIME_PATTERN","test","parseTime","timeString","components","split","length","formatDuration","toFixed","formatConvertedDuration","startTime","endTime","conversion","arguments","undefined","conversionFactor","start","end","Date","valueOf","deltaTime","_TimeUtils","_defineProperty","NANOS_PER_SECOND","NANOS_PER_MIN","MILLIS_PER_SECOND","MILLIS_PER_MIN","Object","freeze","label","value"],"sources":["../src/TimeUtils.ts"],"sourcesContent":["type TimeInSeconds = number;\nexport type TimeString = `${string}:${string}:${string}`;\n\nclass TimeUtils {\n static TIME_PATTERN = '([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]';\n\n static MILLIS_PER_SECOND = 1000;\n\n static NANOS_PER_SECOND = 1e9;\n\n static NANOS_PER_MIN = 60 * TimeUtils.NANOS_PER_SECOND;\n\n static NANOS_PER_HOUR = 60 * TimeUtils.NANOS_PER_MIN;\n\n static MILLIS_PER_MIN = 60 * TimeUtils.MILLIS_PER_SECOND;\n\n static MILLIS_PER_HOUR = 60 * TimeUtils.MILLIS_PER_MIN;\n\n static TIME_ZONES = Object.freeze([\n { label: 'Tokyo UTC+9 No DST', value: 'Asia/Tokyo' },\n { label: 'Seoul UTC+9 No DST', value: 'Asia/Seoul' },\n { label: 'Hong Kong UTC+8 No DST', value: 'Asia/Hong_Kong' },\n { label: 'Singapore UTC+8 No DST', value: 'Asia/Singapore' },\n { label: 'Kolkata UTC+5:30 No DST', value: 'Asia/Kolkata' },\n { label: 'Berlin UTC+1', value: 'Europe/Berlin' },\n { label: 'UTC UTC±0 No DST', value: 'UTC' },\n { label: 'London UTC±0', value: 'Europe/London' },\n { label: 'Sao Paulo UTC-2', value: 'America/Sao_Paulo' },\n { label: 'Newfoundland UTC-3:30', value: 'America/St_Johns' },\n { label: 'Halifax UTC-4', value: 'America/Halifax' },\n { label: 'New York UTC−5', value: 'America/New_York' },\n { label: 'Chicago UTC-6', value: 'America/Chicago' },\n { label: 'Denver UTC-7', value: 'America/Denver' },\n { label: 'Los Angeles UTC-8', value: 'America/Los_Angeles' },\n { label: 'Anchorage UTC-9', value: 'America/Anchorage' },\n { label: 'Honolulu UTC-10 No DST', value: 'Pacific/Honolulu' },\n { label: 'Zurich UTC+1', value: 'Europe/Zurich' },\n { label: 'Amsterdam UTC+1', value: 'Europe/Amsterdam' },\n { label: 'Taipei UTC+8 No DST', value: 'Asia/Taipei' },\n { label: 'Sydney UTC+10', value: 'Australia/Sydney' },\n ]);\n\n /**\n * Pretty prints a time in seconds as a format like \"1h 3m 23s\", \"32s\"\n * Seconds are padded after 60s, has elapsed to reduce width changes\n * Minutes aren't paded, as thats a slower change\n * @param time in seconds\n */\n static formatElapsedTime(time: unknown): string {\n if (typeof time !== 'number' || !Number.isInteger(time)) {\n throw new Error(\n `${time} is not a number that can be expressed as a formatted time`\n );\n }\n\n const hours = Math.floor(time / 3600);\n const mins = Math.floor((time % 3600) / 60);\n const seconds = time % 60;\n\n return (\n `${hours > 0 ? `${hours}h ` : ''}` +\n `${mins > 0 || hours > 0 ? `${mins}m ` : ''}` +\n `${time >= 60 ? `${seconds}s`.padStart(3, '0') : `${seconds}s`}`\n );\n }\n\n /**\n * Format the time into hh:mm:ss format, eg. '12:34:56'\n * @param timeInSeconds in seconds\n */\n static formatTime(timeInSeconds: unknown): string {\n if (\n typeof timeInSeconds !== 'number' ||\n !Number.isInteger(timeInSeconds) ||\n timeInSeconds < 0\n ) {\n throw new Error(\n `${timeInSeconds} is not a number that can be expressed as a formatted time`\n );\n }\n\n const hours = String(Math.floor(timeInSeconds / (60 * 60))).padStart(\n 2,\n '0'\n );\n\n const divisorForMinutes = timeInSeconds % (60 * 60);\n const minutes = String(Math.floor(divisorForMinutes / 60)).padStart(2, '0');\n\n const divisorForSeconds = divisorForMinutes % 60;\n const seconds = String(Math.ceil(divisorForSeconds)).padStart(2, '0');\n\n return `${hours}:${minutes}:${seconds}`;\n }\n\n static isTimeString(s: string): s is TimeString {\n return new RegExp(TimeUtils.TIME_PATTERN).test(s);\n }\n\n /**\n * Parse time in seconds from the provided time string\n * @param timeString Time string in hh:mm:ss format\n */\n static parseTime(timeString: unknown): TimeInSeconds {\n if (timeString == null || typeof timeString !== 'string') {\n throw new Error(`${timeString} is not a valid string`);\n }\n\n const components = timeString.split(':');\n\n if (components.length !== 3) {\n throw new Error(`${timeString} is not a time string that can be parsed`);\n }\n\n return (\n Number(components[0]) * 60 * 60 +\n Number(components[1]) * 60 +\n Number(components[2])\n );\n }\n\n /**\n * Converts a time difference in seconds to a human-readable string.\n * @param time The time difference in seconds.\n * @returns A string representing the time difference.\n */\n static formatDuration(time: number): string {\n const hours = Math.floor(time / 3600);\n const mins = Math.floor((time % 3600) / 60);\n const seconds = time % 60;\n\n if (hours > 0) {\n return `${hours}h ${mins}m ${seconds}s`;\n }\n if (mins > 0) {\n return `${mins}m ${seconds.toFixed(1)}s`;\n }\n return `${seconds.toFixed(2)}s`;\n }\n\n /**\n * Gets a human-readable time string for the difference between two times.\n * Generally meant for informational tooltips.\n * @param startTime The start time in milliseconds or nanoseconds.\n * @param endTime The end time in milliseconds or nanoseconds.\n * @param conversion The conversion type ('ms' or 'ns')\n * @returns A string representing the time difference, or null if invalid.\n */\n static formatConvertedDuration(\n startTime: string | number | undefined,\n endTime: string | number | undefined,\n conversion = 'ms'\n ): string | null {\n if (\n startTime == null ||\n endTime === '' ||\n endTime === 0 ||\n endTime == null\n ) {\n return null;\n }\n\n let conversionFactor = 1;\n let start = null;\n let end = null;\n if (conversion === 'ms') {\n conversionFactor = 1000;\n start = new Date(startTime).valueOf();\n end = new Date(endTime).valueOf();\n } else if (conversion === 'ns') {\n // can only handle dates that are already nanosecond epochs\n conversionFactor = 1e9;\n start = Number(startTime);\n end = Number(endTime);\n } else {\n // can only handle dates that are milliseconds or nanoseconds\n return null;\n }\n\n const deltaTime = (end - start) / conversionFactor;\n\n return this.formatDuration(deltaTime);\n }\n}\n\nexport default TimeUtils;\n"],"mappings":"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","ignoreList":[]} |
+4
-4
| { | ||
| "name": "@deephaven/utils", | ||
| "version": "1.9.1-beta.2+089eabd5", | ||
| "version": "1.9.1-beta.3+17af14cb", | ||
| "description": "Deephaven Utils", | ||
@@ -32,9 +32,9 @@ "author": "Deephaven Data Labs LLC", | ||
| "dependencies": { | ||
| "@deephaven/log": "^1.9.1-beta.2+089eabd5", | ||
| "@deephaven/log": "^1.9.1-beta.3+17af14cb", | ||
| "nanoid": "^5.0.7" | ||
| }, | ||
| "devDependencies": { | ||
| "@deephaven/test-utils": "^1.9.1-beta.2+089eabd5" | ||
| "@deephaven/test-utils": "^1.9.1-beta.3+17af14cb" | ||
| }, | ||
| "gitHead": "089eabd5a652c0486f37ea3dfcbe6b48f9e5ca5e" | ||
| "gitHead": "17af14cbbe3b762fc31a435f5cbf1bffc08ce760" | ||
| } |
Manifest confusion
Supply chain riskThis package has inconsistent metadata. This could be malicious or caused by an error when publishing the package.
Found 1 instance in 1 package
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
Manifest confusion
Supply chain riskThis package has inconsistent metadata. This could be malicious or caused by an error when publishing the package.
Found 1 instance in 1 package
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
219259
3.79%2122
3.82%2
100%