qstd 0.3.65 → 0.3.67
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.
- package/dist/client/index.cjs +26 -6
- package/dist/client/index.js +26 -6
- package/dist/server/index.cjs +26 -6
- package/dist/server/index.js +26 -6
- package/dist/shared/api/domain.d.ts.map +1 -1
- package/dist/shared/api/types.d.ts +31 -1
- package/dist/shared/api/types.d.ts.map +1 -1
- package/dist/shared/time.d.ts +3 -3
- package/dist/shared/time.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/client/index.cjs
CHANGED
|
@@ -281,8 +281,14 @@ var formatDuration = (value, options = {}) => {
|
|
|
281
281
|
showMs = false,
|
|
282
282
|
spaces = true
|
|
283
283
|
} = options;
|
|
284
|
+
const isMs = unit === "ms";
|
|
284
285
|
const isSeconds = unit === "seconds" || unit === "secs" || unit === "ss";
|
|
285
286
|
const isMinutes = unit === "minutes" || unit === "mins" || unit === "mm";
|
|
287
|
+
if (!isMs && !isSeconds && !isMinutes) {
|
|
288
|
+
throw new Error(
|
|
289
|
+
`Invalid unit "${unit}". Use "ms", "seconds" (or "secs"/"ss"), or "minutes" (or "mins"/"mm").`
|
|
290
|
+
);
|
|
291
|
+
}
|
|
286
292
|
const ms = isSeconds ? value * 1e3 : isMinutes ? value * 60 * 1e3 : value;
|
|
287
293
|
const absMs = Math.abs(ms);
|
|
288
294
|
const totalSeconds = Math.floor(absMs / 1e3);
|
|
@@ -844,6 +850,8 @@ var configHeaders = async () => {
|
|
|
844
850
|
return typeof config.headers === "function" ? await config.headers() : config.headers;
|
|
845
851
|
};
|
|
846
852
|
var request = async (method, path, options, defaultInput) => {
|
|
853
|
+
const start = Date.now();
|
|
854
|
+
config.onRequest?.(method, path);
|
|
847
855
|
const opts = options;
|
|
848
856
|
const url = prepareUrl(path, {
|
|
849
857
|
baseUrl: config.baseUrl,
|
|
@@ -862,20 +870,32 @@ var request = async (method, path, options, defaultInput) => {
|
|
|
862
870
|
body: rawBody
|
|
863
871
|
});
|
|
864
872
|
const body = prepareBody(rawBody, input);
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
873
|
+
let response;
|
|
874
|
+
try {
|
|
875
|
+
response = await fetch(url, {
|
|
876
|
+
method,
|
|
877
|
+
...headers && { headers },
|
|
878
|
+
...body !== void 0 && { body },
|
|
879
|
+
...opts?.signal && { signal: opts.signal }
|
|
880
|
+
});
|
|
881
|
+
} catch (networkError) {
|
|
882
|
+
const elapsed2 = Date.now() - start;
|
|
883
|
+
const error3 = networkError instanceof Error ? networkError : new Error(String(networkError));
|
|
884
|
+
config.onError?.(method, path, error3, elapsed2);
|
|
885
|
+
throw error3;
|
|
886
|
+
}
|
|
871
887
|
if (!response.ok) {
|
|
888
|
+
const elapsed2 = Date.now() - start;
|
|
872
889
|
const error3 = new RestError({
|
|
873
890
|
status: response.status,
|
|
874
891
|
body: await response.text()
|
|
875
892
|
});
|
|
893
|
+
config.onError?.(method, path, error3, elapsed2);
|
|
876
894
|
if (opts?.onError) return opts.onError(error3);
|
|
877
895
|
throw error3;
|
|
878
896
|
}
|
|
897
|
+
const elapsed = Date.now() - start;
|
|
898
|
+
config.onResponse?.(method, path, elapsed);
|
|
879
899
|
const data = await parseResponse(
|
|
880
900
|
response,
|
|
881
901
|
opts?.output,
|
package/dist/client/index.js
CHANGED
|
@@ -274,8 +274,14 @@ var formatDuration = (value, options = {}) => {
|
|
|
274
274
|
showMs = false,
|
|
275
275
|
spaces = true
|
|
276
276
|
} = options;
|
|
277
|
+
const isMs = unit === "ms";
|
|
277
278
|
const isSeconds = unit === "seconds" || unit === "secs" || unit === "ss";
|
|
278
279
|
const isMinutes = unit === "minutes" || unit === "mins" || unit === "mm";
|
|
280
|
+
if (!isMs && !isSeconds && !isMinutes) {
|
|
281
|
+
throw new Error(
|
|
282
|
+
`Invalid unit "${unit}". Use "ms", "seconds" (or "secs"/"ss"), or "minutes" (or "mins"/"mm").`
|
|
283
|
+
);
|
|
284
|
+
}
|
|
279
285
|
const ms = isSeconds ? value * 1e3 : isMinutes ? value * 60 * 1e3 : value;
|
|
280
286
|
const absMs = Math.abs(ms);
|
|
281
287
|
const totalSeconds = Math.floor(absMs / 1e3);
|
|
@@ -837,6 +843,8 @@ var configHeaders = async () => {
|
|
|
837
843
|
return typeof config.headers === "function" ? await config.headers() : config.headers;
|
|
838
844
|
};
|
|
839
845
|
var request = async (method, path, options, defaultInput) => {
|
|
846
|
+
const start = Date.now();
|
|
847
|
+
config.onRequest?.(method, path);
|
|
840
848
|
const opts = options;
|
|
841
849
|
const url = prepareUrl(path, {
|
|
842
850
|
baseUrl: config.baseUrl,
|
|
@@ -855,20 +863,32 @@ var request = async (method, path, options, defaultInput) => {
|
|
|
855
863
|
body: rawBody
|
|
856
864
|
});
|
|
857
865
|
const body = prepareBody(rawBody, input);
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
866
|
+
let response;
|
|
867
|
+
try {
|
|
868
|
+
response = await fetch(url, {
|
|
869
|
+
method,
|
|
870
|
+
...headers && { headers },
|
|
871
|
+
...body !== void 0 && { body },
|
|
872
|
+
...opts?.signal && { signal: opts.signal }
|
|
873
|
+
});
|
|
874
|
+
} catch (networkError) {
|
|
875
|
+
const elapsed2 = Date.now() - start;
|
|
876
|
+
const error3 = networkError instanceof Error ? networkError : new Error(String(networkError));
|
|
877
|
+
config.onError?.(method, path, error3, elapsed2);
|
|
878
|
+
throw error3;
|
|
879
|
+
}
|
|
864
880
|
if (!response.ok) {
|
|
881
|
+
const elapsed2 = Date.now() - start;
|
|
865
882
|
const error3 = new RestError({
|
|
866
883
|
status: response.status,
|
|
867
884
|
body: await response.text()
|
|
868
885
|
});
|
|
886
|
+
config.onError?.(method, path, error3, elapsed2);
|
|
869
887
|
if (opts?.onError) return opts.onError(error3);
|
|
870
888
|
throw error3;
|
|
871
889
|
}
|
|
890
|
+
const elapsed = Date.now() - start;
|
|
891
|
+
config.onResponse?.(method, path, elapsed);
|
|
872
892
|
const data = await parseResponse(
|
|
873
893
|
response,
|
|
874
894
|
opts?.output,
|
package/dist/server/index.cjs
CHANGED
|
@@ -293,8 +293,14 @@ var formatDuration = (value, options = {}) => {
|
|
|
293
293
|
showMs = false,
|
|
294
294
|
spaces = true
|
|
295
295
|
} = options;
|
|
296
|
+
const isMs = unit === "ms";
|
|
296
297
|
const isSeconds = unit === "seconds" || unit === "secs" || unit === "ss";
|
|
297
298
|
const isMinutes = unit === "minutes" || unit === "mins" || unit === "mm";
|
|
299
|
+
if (!isMs && !isSeconds && !isMinutes) {
|
|
300
|
+
throw new Error(
|
|
301
|
+
`Invalid unit "${unit}". Use "ms", "seconds" (or "secs"/"ss"), or "minutes" (or "mins"/"mm").`
|
|
302
|
+
);
|
|
303
|
+
}
|
|
298
304
|
const ms = isSeconds ? value * 1e3 : isMinutes ? value * 60 * 1e3 : value;
|
|
299
305
|
const absMs = Math.abs(ms);
|
|
300
306
|
const totalSeconds = Math.floor(absMs / 1e3);
|
|
@@ -856,6 +862,8 @@ var configHeaders = async () => {
|
|
|
856
862
|
return typeof config.headers === "function" ? await config.headers() : config.headers;
|
|
857
863
|
};
|
|
858
864
|
var request = async (method, path, options, defaultInput) => {
|
|
865
|
+
const start = Date.now();
|
|
866
|
+
config.onRequest?.(method, path);
|
|
859
867
|
const opts = options;
|
|
860
868
|
const url = prepareUrl(path, {
|
|
861
869
|
baseUrl: config.baseUrl,
|
|
@@ -874,20 +882,32 @@ var request = async (method, path, options, defaultInput) => {
|
|
|
874
882
|
body: rawBody
|
|
875
883
|
});
|
|
876
884
|
const body = prepareBody(rawBody, input);
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
885
|
+
let response2;
|
|
886
|
+
try {
|
|
887
|
+
response2 = await fetch(url, {
|
|
888
|
+
method,
|
|
889
|
+
...headers && { headers },
|
|
890
|
+
...body !== void 0 && { body },
|
|
891
|
+
...opts?.signal && { signal: opts.signal }
|
|
892
|
+
});
|
|
893
|
+
} catch (networkError) {
|
|
894
|
+
const elapsed2 = Date.now() - start;
|
|
895
|
+
const error2 = networkError instanceof Error ? networkError : new Error(String(networkError));
|
|
896
|
+
config.onError?.(method, path, error2, elapsed2);
|
|
897
|
+
throw error2;
|
|
898
|
+
}
|
|
883
899
|
if (!response2.ok) {
|
|
900
|
+
const elapsed2 = Date.now() - start;
|
|
884
901
|
const error2 = new RestError({
|
|
885
902
|
status: response2.status,
|
|
886
903
|
body: await response2.text()
|
|
887
904
|
});
|
|
905
|
+
config.onError?.(method, path, error2, elapsed2);
|
|
888
906
|
if (opts?.onError) return opts.onError(error2);
|
|
889
907
|
throw error2;
|
|
890
908
|
}
|
|
909
|
+
const elapsed = Date.now() - start;
|
|
910
|
+
config.onResponse?.(method, path, elapsed);
|
|
891
911
|
const data = await parseResponse(
|
|
892
912
|
response2,
|
|
893
913
|
opts?.output,
|
package/dist/server/index.js
CHANGED
|
@@ -285,8 +285,14 @@ var formatDuration = (value, options = {}) => {
|
|
|
285
285
|
showMs = false,
|
|
286
286
|
spaces = true
|
|
287
287
|
} = options;
|
|
288
|
+
const isMs = unit === "ms";
|
|
288
289
|
const isSeconds = unit === "seconds" || unit === "secs" || unit === "ss";
|
|
289
290
|
const isMinutes = unit === "minutes" || unit === "mins" || unit === "mm";
|
|
291
|
+
if (!isMs && !isSeconds && !isMinutes) {
|
|
292
|
+
throw new Error(
|
|
293
|
+
`Invalid unit "${unit}". Use "ms", "seconds" (or "secs"/"ss"), or "minutes" (or "mins"/"mm").`
|
|
294
|
+
);
|
|
295
|
+
}
|
|
290
296
|
const ms = isSeconds ? value * 1e3 : isMinutes ? value * 60 * 1e3 : value;
|
|
291
297
|
const absMs = Math.abs(ms);
|
|
292
298
|
const totalSeconds = Math.floor(absMs / 1e3);
|
|
@@ -848,6 +854,8 @@ var configHeaders = async () => {
|
|
|
848
854
|
return typeof config.headers === "function" ? await config.headers() : config.headers;
|
|
849
855
|
};
|
|
850
856
|
var request = async (method, path, options, defaultInput) => {
|
|
857
|
+
const start = Date.now();
|
|
858
|
+
config.onRequest?.(method, path);
|
|
851
859
|
const opts = options;
|
|
852
860
|
const url = prepareUrl(path, {
|
|
853
861
|
baseUrl: config.baseUrl,
|
|
@@ -866,20 +874,32 @@ var request = async (method, path, options, defaultInput) => {
|
|
|
866
874
|
body: rawBody
|
|
867
875
|
});
|
|
868
876
|
const body = prepareBody(rawBody, input);
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
877
|
+
let response2;
|
|
878
|
+
try {
|
|
879
|
+
response2 = await fetch(url, {
|
|
880
|
+
method,
|
|
881
|
+
...headers && { headers },
|
|
882
|
+
...body !== void 0 && { body },
|
|
883
|
+
...opts?.signal && { signal: opts.signal }
|
|
884
|
+
});
|
|
885
|
+
} catch (networkError) {
|
|
886
|
+
const elapsed2 = Date.now() - start;
|
|
887
|
+
const error2 = networkError instanceof Error ? networkError : new Error(String(networkError));
|
|
888
|
+
config.onError?.(method, path, error2, elapsed2);
|
|
889
|
+
throw error2;
|
|
890
|
+
}
|
|
875
891
|
if (!response2.ok) {
|
|
892
|
+
const elapsed2 = Date.now() - start;
|
|
876
893
|
const error2 = new RestError({
|
|
877
894
|
status: response2.status,
|
|
878
895
|
body: await response2.text()
|
|
879
896
|
});
|
|
897
|
+
config.onError?.(method, path, error2, elapsed2);
|
|
880
898
|
if (opts?.onError) return opts.onError(error2);
|
|
881
899
|
throw error2;
|
|
882
900
|
}
|
|
901
|
+
const elapsed = Date.now() - start;
|
|
902
|
+
config.onResponse?.(method, path, elapsed);
|
|
883
903
|
const data = await parseResponse(
|
|
884
904
|
response2,
|
|
885
905
|
opts?.output,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../../src/shared/api/domain.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,eAAe,EAEf,MAAM,EACN,aAAa,EAGb,OAAO,EAEP,OAAO,EACP,MAAM,EACN,OAAO,EACP,OAAO,EACP,QAAQ,EACT,MAAM,SAAS,CAAC;AASjB;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,SAAS,GAAI,GAAG,MAAM,SAElC,CAAC;
|
|
1
|
+
{"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../../src/shared/api/domain.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,10 +10,40 @@ export declare class RestError extends Error {
|
|
|
10
10
|
export type HeadersObject = Record<string, string>;
|
|
11
11
|
export type HeadersGetter = () => HeadersObject | Promise<HeadersObject>;
|
|
12
12
|
export type HeadersTransform = (defaults: HeadersObject) => HeadersObject | Promise<HeadersObject>;
|
|
13
|
+
/**
|
|
14
|
+
* Interceptor hooks for observability (telemetry, logging, debugging).
|
|
15
|
+
*
|
|
16
|
+
* These hooks are called during the request lifecycle but do NOT affect
|
|
17
|
+
* the request/response. Use them for breadcrumbs, metrics, or logging.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```ts
|
|
21
|
+
* Api.configure({
|
|
22
|
+
* baseUrl: "https://api.example.com",
|
|
23
|
+
* onRequest: (method, path) => {
|
|
24
|
+
* Telemetry.addBreadcrumb({ type: "http", message: `${method} ${path}` });
|
|
25
|
+
* },
|
|
26
|
+
* onResponse: (method, path, elapsed) => {
|
|
27
|
+
* Telemetry.addBreadcrumb({ type: "http", message: `${method} ${path} OK (${elapsed}ms)` });
|
|
28
|
+
* },
|
|
29
|
+
* onError: (method, path, error, elapsed) => {
|
|
30
|
+
* Telemetry.addBreadcrumb({ type: "http", message: `${method} ${path} FAIL`, data: { error } });
|
|
31
|
+
* },
|
|
32
|
+
* });
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export type RequestHooks = {
|
|
36
|
+
/** Called before each request starts */
|
|
37
|
+
onRequest?: (method: Method, path: string) => void;
|
|
38
|
+
/** Called after successful response (before parsing) */
|
|
39
|
+
onResponse?: (method: Method, path: string, elapsed: number) => void;
|
|
40
|
+
/** Called when request fails (network error or non-ok response) */
|
|
41
|
+
onError?: (method: Method, path: string, error: Error, elapsed: number) => void;
|
|
42
|
+
};
|
|
13
43
|
export type Config = {
|
|
14
44
|
baseUrl: string;
|
|
15
45
|
headers?: HeadersObject | HeadersGetter;
|
|
16
|
-
};
|
|
46
|
+
} & RequestHooks;
|
|
17
47
|
export type Params = Record<string, string | number | boolean | undefined | null>;
|
|
18
48
|
export type Input = "json" | "form" | "text";
|
|
19
49
|
export type Output = "json" | "text" | "blob" | "stream" | "arrayBuffer" | "sse";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/shared/api/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;AAMjE,qBAAa,SAAU,SAAQ,KAAK;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;gBAED,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;CAMpD;AAMD,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACnD,MAAM,MAAM,aAAa,GAAG,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;AACzE,MAAM,MAAM,gBAAgB,GAAG,CAC7B,QAAQ,EAAE,aAAa,KACpB,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;AAE5C,MAAM,MAAM,MAAM,GAAG;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,aAAa,GAAG,aAAa,CAAC;CACzC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/shared/api/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;AAMjE,qBAAa,SAAU,SAAQ,KAAK;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;gBAED,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;CAMpD;AAMD,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACnD,MAAM,MAAM,aAAa,GAAG,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;AACzE,MAAM,MAAM,gBAAgB,GAAG,CAC7B,QAAQ,EAAE,aAAa,KACpB,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;AAE5C;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,wCAAwC;IACxC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,wDAAwD;IACxD,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACrE,mEAAmE;IACnE,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACjF,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,aAAa,GAAG,aAAa,CAAC;CACzC,GAAG,YAAY,CAAC;AAMjB,MAAM,MAAM,MAAM,GAAG,MAAM,CACzB,MAAM,EACN,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAC7C,CAAC;AAEF,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAC7C,MAAM,MAAM,MAAM,GACd,MAAM,GACN,MAAM,GACN,MAAM,GACN,QAAQ,GACR,aAAa,GACb,KAAK,CAAC;AAMV;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,GAAG,OAAO,IAAI;IAClC,IAAI,EAAE,CAAC,CAAC;IACR,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;AAMF;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,QAAQ,GAAG;IACrB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,GAAG,CAAC,EAAE,OAAO,CAAC;CACf,CAAC;AAEF,KAAK,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GACjC,KAAK,SAAS,MAAM,CAAC,GACnB,IAAI,GACJ,KAAK,SAAS,MAAM,CAAC,GACrB,IAAI,GACJ,KAAK,GACP,KAAK,CAAC;AAEV,4EAA4E;AAC5E,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,SAAS,IAAI,GAC/C,CAAC,SAAS;IAAE,GAAG,CAAC,EAAE,MAAM,GAAG,CAAA;CAAE,GAC3B,GAAG,GACH,OAAO,GACT,OAAO,CAAC;AAEZ,6EAA6E;AAC7E,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,SAAS,IAAI,GAC/C,KAAK,SAAS,MAAM,CAAC,GACnB,CAAC,SAAS;IAAE,GAAG,CAAC,EAAE,MAAM,GAAG,CAAA;CAAE,GAC3B,GAAG,GACH,OAAO,GACT,OAAO,GACT,CAAC,CAAC;AAEN;;;;;;;;;;GAUG;AACH,MAAM,MAAM,aAAa,CAAC,GAAG,EAAE,CAAC,SAAS,MAAM,GAAG,SAAS,IAAI,CAAC,SAAS,MAAM,GAC3E,MAAM,GACN,CAAC,SAAS,MAAM,GAChB,IAAI,GACJ,CAAC,SAAS,QAAQ,GAClB,cAAc,CAAC,UAAU,CAAC,GAAG,IAAI,GACjC,CAAC,SAAS,aAAa,GACvB,WAAW,GACX,CAAC,SAAS,KAAK,GACf,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,GAC5C,GAAG,CAAC;AAER;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GACtB,IAAI,GACJ,WAAW,GACX,cAAc,CAAC,UAAU,CAAC,GAC1B,cAAc,CAAC;AAEnB;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,qBAAqB,EAAE,wFAAwF,CAAC;CACjH,CAAC;AAEF,uFAAuF;AACvF,MAAM,MAAM,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GACrE,GAAG,GACH,mBAAmB,CAAC;AAExB,MAAM,MAAM,QAAQ,GAAG;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAMF,MAAM,MAAM,OAAO,CACjB,GAAG,EACH,MAAM,GAAG,GAAG,EACZ,CAAC,SAAS,MAAM,GAAG,SAAS,GAAG,SAAS,IACtC;IACF,OAAO,CAAC,EAAE,IAAI,GAAG,KAAK,GAAG,aAAa,GAAG,gBAAgB,CAAC;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,CAAC,CAAC;IACX,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,gFAAgF;IAChF,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC1C,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC;IACpD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,MAAM,CAAC;CACxC,CAAC;AAYF,MAAM,MAAM,WAAW,CACrB,GAAG,GAAG,OAAO,EACb,GAAG,GAAG,OAAO,EACb,MAAM,GAAG,GAAG,EACZ,CAAC,SAAS,MAAM,GAAG,SAAS,GAAG,SAAS,IACtC;IACF,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,OAAO,CAAC,EAAE,IAAI,GAAG,KAAK,GAAG,aAAa,GAAG,gBAAgB,CAAC;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,CAAC,CAAC;IACX,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,gFAAgF;IAChF,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC1C,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC;IACpD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,MAAM,CAAC;CACxC,CAAC;AAMF,MAAM,MAAM,eAAe,CACzB,GAAG,GAAG,OAAO,EACb,GAAG,GAAG,OAAO,EACb,MAAM,GAAG,GAAG,EACZ,CAAC,SAAS,MAAM,GAAG,SAAS,GAAG,SAAS,IACtC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC"}
|
package/dist/shared/time.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import type { Locale } from "date-fns";
|
|
2
2
|
type DurationFormat = "compact" | "full" | "clock" | "fractional";
|
|
3
|
-
|
|
4
|
-
type
|
|
3
|
+
/** Suggested units - aliases like 'ss', 'secs', 'mm', 'mins' are also accepted */
|
|
4
|
+
type DurationUnit = "ms" | "seconds" | "minutes" | (string & {});
|
|
5
5
|
type DurationOptions = {
|
|
6
6
|
/** Format style: 'compact' (1h 2m), 'full' (1 hour 2 minutes), 'clock' (01:02:03), 'fractional' (1.4s, 1m4.4s) */
|
|
7
7
|
format?: DurationFormat;
|
|
8
8
|
/** Input unit: 'ms' (milliseconds, default), 'seconds' (or 'secs'/'ss'), or 'minutes' (or 'mins'/'mm'). Use 'seconds' for audio/video currentTime. */
|
|
9
|
-
unit?:
|
|
9
|
+
unit?: DurationUnit;
|
|
10
10
|
/** Show zero values for intermediate units (e.g., "1h 0m 30s" vs "1h 30s") */
|
|
11
11
|
showZero?: boolean;
|
|
12
12
|
/** Include milliseconds in compact format (e.g., "1s 200ms") */
|
|
@@ -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;AAClE,KAAK,YAAY,GAAG,IAAI,GAAG,SAAS,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../src/shared/time.ts"],"names":[],"mappings":"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"}
|