qstd 0.2.28 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -260,6 +260,7 @@ __export(time_exports, {
260
260
  formatThreadDateRange: () => formatThreadDateRange,
261
261
  now: () => now,
262
262
  sleep: () => sleep,
263
+ startTimer: () => startTimer,
263
264
  toMs: () => toMs
264
265
  });
265
266
  var formatDuration = (ms, options = {}) => {
@@ -454,6 +455,27 @@ var toMs = (value, unit = "seconds") => {
454
455
  };
455
456
  return value * multipliers[unit];
456
457
  };
458
+ function startTimer(options = {}) {
459
+ const start = Date.now();
460
+ const fmt = options.format ?? "ms";
461
+ const getElapsed = () => {
462
+ const elapsed = Date.now() - start;
463
+ if (fmt === "compact") {
464
+ const hours = Math.floor(elapsed / 36e5);
465
+ const minutes = Math.floor(elapsed % 36e5 / 6e4);
466
+ const seconds = Math.floor(elapsed % 6e4 / 1e3);
467
+ const milliseconds = elapsed % 1e3;
468
+ let result = "";
469
+ if (hours > 0) result += `${hours}h`;
470
+ if (minutes > 0) result += `${minutes}m`;
471
+ if (seconds > 0) result += `${seconds}s`;
472
+ if (milliseconds > 0 || result === "") result += `${milliseconds}ms`;
473
+ return result;
474
+ }
475
+ return elapsed;
476
+ };
477
+ return { stop: getElapsed, elapsed: getElapsed };
478
+ }
457
479
 
458
480
  // src/shared/flow.ts
459
481
  var flow_exports = {};
@@ -551,14 +573,9 @@ __export(log_exports, {
551
573
  info: () => info,
552
574
  label: () => label,
553
575
  log: () => log,
554
- startTimer: () => startTimer,
555
576
  warn: () => warn
556
577
  });
557
578
  var stringify = (value) => JSON.stringify(value, null, 2);
558
- var startTimer = () => {
559
- const start = Date.now();
560
- return () => Date.now() - start;
561
- };
562
579
  var log = (...values) => {
563
580
  console.log(...values.map(stringify));
564
581
  };
@@ -258,6 +258,7 @@ __export(time_exports, {
258
258
  formatThreadDateRange: () => formatThreadDateRange,
259
259
  now: () => now,
260
260
  sleep: () => sleep,
261
+ startTimer: () => startTimer,
261
262
  toMs: () => toMs
262
263
  });
263
264
  var formatDuration = (ms, options = {}) => {
@@ -452,6 +453,27 @@ var toMs = (value, unit = "seconds") => {
452
453
  };
453
454
  return value * multipliers[unit];
454
455
  };
456
+ function startTimer(options = {}) {
457
+ const start = Date.now();
458
+ const fmt = options.format ?? "ms";
459
+ const getElapsed = () => {
460
+ const elapsed = Date.now() - start;
461
+ if (fmt === "compact") {
462
+ const hours = Math.floor(elapsed / 36e5);
463
+ const minutes = Math.floor(elapsed % 36e5 / 6e4);
464
+ const seconds = Math.floor(elapsed % 6e4 / 1e3);
465
+ const milliseconds = elapsed % 1e3;
466
+ let result = "";
467
+ if (hours > 0) result += `${hours}h`;
468
+ if (minutes > 0) result += `${minutes}m`;
469
+ if (seconds > 0) result += `${seconds}s`;
470
+ if (milliseconds > 0 || result === "") result += `${milliseconds}ms`;
471
+ return result;
472
+ }
473
+ return elapsed;
474
+ };
475
+ return { stop: getElapsed, elapsed: getElapsed };
476
+ }
455
477
 
456
478
  // src/shared/flow.ts
457
479
  var flow_exports = {};
@@ -549,14 +571,9 @@ __export(log_exports, {
549
571
  info: () => info,
550
572
  label: () => label,
551
573
  log: () => log,
552
- startTimer: () => startTimer,
553
574
  warn: () => warn
554
575
  });
555
576
  var stringify = (value) => JSON.stringify(value, null, 2);
556
- var startTimer = () => {
557
- const start = Date.now();
558
- return () => Date.now() - start;
559
- };
560
577
  var log = (...values) => {
561
578
  console.log(...values.map(stringify));
562
579
  };
@@ -263,6 +263,7 @@ __export(time_exports, {
263
263
  formatThreadDateRange: () => formatThreadDateRange,
264
264
  now: () => now,
265
265
  sleep: () => sleep,
266
+ startTimer: () => startTimer,
266
267
  toMs: () => toMs
267
268
  });
268
269
  var formatDuration = (ms, options = {}) => {
@@ -457,6 +458,27 @@ var toMs = (value, unit = "seconds") => {
457
458
  };
458
459
  return value * multipliers[unit];
459
460
  };
461
+ function startTimer(options = {}) {
462
+ const start = Date.now();
463
+ const fmt = options.format ?? "ms";
464
+ const getElapsed = () => {
465
+ const elapsed = Date.now() - start;
466
+ if (fmt === "compact") {
467
+ const hours = Math.floor(elapsed / 36e5);
468
+ const minutes = Math.floor(elapsed % 36e5 / 6e4);
469
+ const seconds = Math.floor(elapsed % 6e4 / 1e3);
470
+ const milliseconds = elapsed % 1e3;
471
+ let result = "";
472
+ if (hours > 0) result += `${hours}h`;
473
+ if (minutes > 0) result += `${minutes}m`;
474
+ if (seconds > 0) result += `${seconds}s`;
475
+ if (milliseconds > 0 || result === "") result += `${milliseconds}ms`;
476
+ return result;
477
+ }
478
+ return elapsed;
479
+ };
480
+ return { stop: getElapsed, elapsed: getElapsed };
481
+ }
460
482
 
461
483
  // src/shared/flow.ts
462
484
  var flow_exports = {};
@@ -554,14 +576,9 @@ __export(log_exports, {
554
576
  info: () => info,
555
577
  label: () => label,
556
578
  log: () => log,
557
- startTimer: () => startTimer,
558
579
  warn: () => warn
559
580
  });
560
581
  var stringify = (value) => JSON.stringify(value, null, 2);
561
- var startTimer = () => {
562
- const start = Date.now();
563
- return () => Date.now() - start;
564
- };
565
582
  var log = (...values) => {
566
583
  console.log(...values.map(stringify));
567
584
  };
@@ -261,6 +261,7 @@ __export(time_exports, {
261
261
  formatThreadDateRange: () => formatThreadDateRange,
262
262
  now: () => now,
263
263
  sleep: () => sleep,
264
+ startTimer: () => startTimer,
264
265
  toMs: () => toMs
265
266
  });
266
267
  var formatDuration = (ms, options = {}) => {
@@ -455,6 +456,27 @@ var toMs = (value, unit = "seconds") => {
455
456
  };
456
457
  return value * multipliers[unit];
457
458
  };
459
+ function startTimer(options = {}) {
460
+ const start = Date.now();
461
+ const fmt = options.format ?? "ms";
462
+ const getElapsed = () => {
463
+ const elapsed = Date.now() - start;
464
+ if (fmt === "compact") {
465
+ const hours = Math.floor(elapsed / 36e5);
466
+ const minutes = Math.floor(elapsed % 36e5 / 6e4);
467
+ const seconds = Math.floor(elapsed % 6e4 / 1e3);
468
+ const milliseconds = elapsed % 1e3;
469
+ let result = "";
470
+ if (hours > 0) result += `${hours}h`;
471
+ if (minutes > 0) result += `${minutes}m`;
472
+ if (seconds > 0) result += `${seconds}s`;
473
+ if (milliseconds > 0 || result === "") result += `${milliseconds}ms`;
474
+ return result;
475
+ }
476
+ return elapsed;
477
+ };
478
+ return { stop: getElapsed, elapsed: getElapsed };
479
+ }
458
480
 
459
481
  // src/shared/flow.ts
460
482
  var flow_exports = {};
@@ -552,14 +574,9 @@ __export(log_exports, {
552
574
  info: () => info,
553
575
  label: () => label,
554
576
  log: () => log,
555
- startTimer: () => startTimer,
556
577
  warn: () => warn
557
578
  });
558
579
  var stringify = (value) => JSON.stringify(value, null, 2);
559
- var startTimer = () => {
560
- const start = Date.now();
561
- return () => Date.now() - start;
562
- };
563
580
  var log = (...values) => {
564
581
  console.log(...values.map(stringify));
565
582
  };
@@ -17,16 +17,6 @@
17
17
  * log.header("HANDLER START"); // [audio-processor] ========== HANDLER START ==========
18
18
  *
19
19
  */
20
- /**
21
- * Starts a timer and returns a function that returns elapsed milliseconds.
22
- * @returns A function that returns the elapsed time in ms since the timer started
23
- * @example
24
- * ```typescript // Timer
25
- * const elapsed = Log.startTimer();
26
- * // ... do work ...
27
- * log.header(`COMPLETE (${elapsed()}ms)`); // ========== COMPLETE (123ms) ==========```
28
- */
29
- export declare const startTimer: () => () => number;
30
20
  /**
31
21
  * Logs values to the console (no prefix).
32
22
  * @param values - Values to log (will be JSON stringified)
@@ -1 +1 @@
1
- {"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../src/shared/log.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH;;;;;;;;GAQG;AACH,eAAO,MAAM,UAAU,oBAWtB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,GAAG,GAAI,GAAG,QAAQ,OAAO,EAAE,SAEvC,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,IAAI,GAAI,GAAG,QAAQ,OAAO,EAAE,SAExC,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,IAAI,GAAI,GAAG,QAAQ,OAAO,EAAE,SAExC,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,KAAK,GAAI,GAAG,QAAQ,OAAO,EAAE,SAEzC,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,MAAM,GAAI,SAAS,MAAM,SAErC,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,KAAK,GAAI,MAAM,MAAM;IAChC,iEAAiE;sBAC/C,OAAO,EAAE;IAG3B,+EAA+E;sBAC7D,OAAO,EAAE;IAG3B,iFAAiF;uBAC9D,OAAO,EAAE;IAG5B,iGAAiG;sBAC/E,MAAM;CAGxB,CAAC"}
1
+ {"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../src/shared/log.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH;;;;;;;GAOG;AACH,eAAO,MAAM,GAAG,GAAI,GAAG,QAAQ,OAAO,EAAE,SAEvC,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,IAAI,GAAI,GAAG,QAAQ,OAAO,EAAE,SAExC,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,IAAI,GAAI,GAAG,QAAQ,OAAO,EAAE,SAExC,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,KAAK,GAAI,GAAG,QAAQ,OAAO,EAAE,SAEzC,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,MAAM,GAAI,SAAS,MAAM,SAErC,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,KAAK,GAAI,MAAM,MAAM;IAChC,iEAAiE;sBAC/C,OAAO,EAAE;IAG3B,+EAA+E;sBAC7D,OAAO,EAAE;IAG3B,iFAAiF;uBAC9D,OAAO,EAAE;IAG5B,iGAAiG;sBAC/E,MAAM;CAGxB,CAAC"}
@@ -108,5 +108,41 @@ export declare const now: () => number;
108
108
  * const ms = toMs(5, "minutes") // Convert 5 minutes to milliseconds
109
109
  */
110
110
  export declare const toMs: (value: number, unit?: Exclude<TimeUnit, "businessDays">) => number;
111
+ type TimerFormat = "ms" | "compact";
112
+ type TimerOptions<T extends TimerFormat = "ms"> = {
113
+ format?: T;
114
+ };
115
+ type Timer<T extends TimerFormat> = {
116
+ /** Returns elapsed time since timer started. For "ms" format returns number, for "compact" returns string like "1m3s440ms" */
117
+ stop: () => T extends "compact" ? string : number;
118
+ /** Returns current elapsed time without stopping (same as stop, but semantically for intermediate checks) */
119
+ elapsed: () => T extends "compact" ? string : number;
120
+ };
121
+ /**
122
+ * Starts a timer and returns an object with stop/elapsed methods.
123
+ * @param options - Optional configuration. `format: "ms"` (default) returns numbers, `format: "compact"` returns strings like "1m3s440ms"
124
+ * @returns Timer object with stop() and elapsed() methods
125
+ *
126
+ * @example
127
+ * ```typescript
128
+ * // Default (returns milliseconds as number)
129
+ * const timer = Time.startTimer();
130
+ * // ... do work ...
131
+ * const ms = timer.stop(); // 1234
132
+ *
133
+ * // Compact format (returns string)
134
+ * const timer = Time.startTimer({ format: "compact" });
135
+ * // ... do work ...
136
+ * const formatted = timer.stop(); // "1s234ms"
137
+ *
138
+ * // Check elapsed time without "stopping"
139
+ * const timer = Time.startTimer();
140
+ * console.log(timer.elapsed()); // 500
141
+ * // ... more work ...
142
+ * console.log(timer.stop()); // 1234
143
+ * ```
144
+ */
145
+ export declare function startTimer(): Timer<"ms">;
146
+ export declare function startTimer<T extends TimerFormat>(options: TimerOptions<T>): Timer<T>;
111
147
  export {};
112
148
  //# sourceMappingURL=time.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../src/shared/time.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAMvC,KAAK,cAAc,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,YAAY,CAAC;AAElE,KAAK,eAAe,GAAG;IACrB,kHAAkH;IAClH,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,cAAc,GACzB,IAAI,MAAM,GAAG,IAAI,GAAG,SAAS,EAC7B,UAAS,eAAoB,WA0F9B,CAAC;AAMF,KAAK,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;AAExC,KAAK,eAAe,GAChB,KAAK,GACL,OAAO,GACP,QAAQ,GACR,MAAM,GACN,UAAU,GACV,MAAM,CAAC;AAEX,KAAK,WAAW,GAAG;IACjB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,sDAAsD;IACtD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6BAA6B;IAC7B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,UAAU,GAAI,OAAO,SAAS,EAAE,UAAS,WAAgB,WAgDrE,CAAC;AAMF,KAAK,cAAc,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;AAE7C,KAAK,gBAAgB,GAAG;IACtB,+DAA+D;IAC/D,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,4EAA4E;IAC5E,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,mFAAmF;IACnF,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC/B,qDAAqD;IACrD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,oCAAoC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAOF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,eAAe,GAC1B,YAAY,cAAc,EAC1B,UAAU,cAAc,EACxB,UAAS,gBAAqB,WAiF/B,CAAC;AAGF,eAAO,MAAM,qBAAqB,GAChC,YAAY,cAAc,EAC1B,UAAU,cAAc,EACxB,UAAS,gBAAqB,WACmB,CAAC;AAMpD,KAAK,QAAQ,GACT,SAAS,GACT,SAAS,GACT,OAAO,GACP,MAAM,GACN,OAAO,GACP,QAAQ,GACR,OAAO,GACP,cAAc,CAAC;AAEnB,KAAK,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;AAExD;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,GACrB,YAAY,cAAc,EAC1B,WAAU,IAAiB,SAe5B,CAAC;AAMF;;GAEG;AACH,eAAO,MAAM,KAAK,GAAI,IAAI,MAAM,KAAG,OAAO,CAAC,IAAI,CACI,CAAC;AAEpD;;GAEG;AACH,eAAO,MAAM,GAAG,cAAmB,CAAC;AAEpC;;;;GAIG;AACH,eAAO,MAAM,IAAI,GACf,OAAO,MAAM,EACb,OAAM,OAAO,CAAC,QAAQ,EAAE,cAAc,CAAa,WAapD,CAAC"}
1
+ {"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../src/shared/time.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "qstd",
3
- "version": "0.2.28",
3
+ "version": "0.3.0",
4
4
  "description": "Standard Block component and utilities library with Panda CSS",
5
5
  "author": "malin1",
6
6
  "license": "MIT",