@ramses1er/cbk-toolkit 2.6.0 → 2.7.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.
- package/dist/packages/ui/src/index.d.ts +5 -0
- package/dist/packages/ui/src/index.d.ts.map +1 -1
- package/dist/packages/ui/src/index.js +2 -0
- package/dist/packages/ui/src/index.js.map +1 -1
- package/dist/packages/ui/src/pwa/CacheProgress.d.ts +17 -0
- package/dist/packages/ui/src/pwa/CacheProgress.d.ts.map +1 -0
- package/dist/packages/ui/src/pwa/CacheProgress.js +28 -0
- package/dist/packages/ui/src/pwa/CacheProgress.js.map +1 -0
- package/dist/packages/ui/src/pwa/useCacheProgress.d.ts +20 -0
- package/dist/packages/ui/src/pwa/useCacheProgress.d.ts.map +1 -0
- package/dist/packages/ui/src/pwa/useCacheProgress.js +62 -0
- package/dist/packages/ui/src/pwa/useCacheProgress.js.map +1 -0
- package/dist/packages/ui/src/pwa/warmCache.d.ts +12 -2
- package/dist/packages/ui/src/pwa/warmCache.d.ts.map +1 -1
- package/dist/packages/ui/src/pwa/warmCache.js +27 -13
- package/dist/packages/ui/src/pwa/warmCache.js.map +1 -1
- package/package.json +1 -1
|
@@ -31,6 +31,11 @@ export { useOnline, isOnline } from "./pwa/useOnline";
|
|
|
31
31
|
export { OfflineBanner, OfflineToast } from "./pwa/OfflineBanner";
|
|
32
32
|
export type { OfflineBannerProps } from "./pwa/OfflineBanner";
|
|
33
33
|
export { warmApiCache } from "./pwa/warmCache";
|
|
34
|
+
export type { WarmProgress } from "./pwa/warmCache";
|
|
35
|
+
export { useCacheProgress } from "./pwa/useCacheProgress";
|
|
36
|
+
export type { CacheProgressState, CacheProgressOp } from "./pwa/useCacheProgress";
|
|
37
|
+
export { CacheProgress } from "./pwa/CacheProgress";
|
|
38
|
+
export type { CacheProgressProps } from "./pwa/CacheProgress";
|
|
34
39
|
export { InputSearch } from "./search/input-search";
|
|
35
40
|
export type { InputSearchProps } from "./search/input-search";
|
|
36
41
|
export { SelectSearch } from "./search/select-search";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/ui/src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,YAAY,EACV,OAAO,EACP,YAAY,EACZ,mBAAmB,EACnB,UAAU,GACX,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAGzD,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGxD,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAGvC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,YAAY,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAGlE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAGzD,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAGpC,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAGzD,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAGtC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAGtC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAGhD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGjD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAGvD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAGlE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAClE,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/ui/src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,6 +38,8 @@ export { SwRegistration } from "./pwa/SwRegistration";
|
|
|
38
38
|
export { useOnline, isOnline } from "./pwa/useOnline";
|
|
39
39
|
export { OfflineBanner, OfflineToast } from "./pwa/OfflineBanner";
|
|
40
40
|
export { warmApiCache } from "./pwa/warmCache";
|
|
41
|
+
export { useCacheProgress } from "./pwa/useCacheProgress";
|
|
42
|
+
export { CacheProgress } from "./pwa/CacheProgress";
|
|
41
43
|
// exports of search
|
|
42
44
|
export { InputSearch } from "./search/input-search";
|
|
43
45
|
export { SelectSearch } from "./search/select-search";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/ui/src/index.ts"],"names":[],"mappings":"AAAA,qBAAqB;AACrB,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAO7C,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,8BAA8B;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGnD,mBAAmB;AACnB,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,sBAAsB;AACtB,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGxD,qBAAqB;AACrB,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,mBAAmB;AACnB,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC,6BAA6B;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD,mBAAmB;AACnB,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,mBAAmB;AACnB,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,oBAAoB;AACpB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAEhD,sBAAsB;AACtB,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,yBAAyB;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,qBAAqB;AACrB,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,mBAAmB;AACnB,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAG1C,iBAAiB;AACjB,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAElE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,oBAAoB;AACpB,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAGtD,2BAA2B;AAC3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAGvE,yBAAyB;AACzB,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,2BAA2B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/ui/src/index.ts"],"names":[],"mappings":"AAAA,qBAAqB;AACrB,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAO7C,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,8BAA8B;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGnD,mBAAmB;AACnB,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,sBAAsB;AACtB,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGxD,qBAAqB;AACrB,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,mBAAmB;AACnB,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC,6BAA6B;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD,mBAAmB;AACnB,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,mBAAmB;AACnB,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,oBAAoB;AACpB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAEhD,sBAAsB;AACtB,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,yBAAyB;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,qBAAqB;AACrB,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,mBAAmB;AACnB,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAG1C,iBAAiB;AACjB,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAElE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,oBAAoB;AACpB,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAGtD,2BAA2B;AAC3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAGvE,yBAAyB;AACzB,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export type CacheProgressProps = {
|
|
2
|
+
/** bar title shown while caching */
|
|
3
|
+
title?: string;
|
|
4
|
+
/** text shown when the job just finished, e.g. "À jour !" */
|
|
5
|
+
doneText?: string;
|
|
6
|
+
/** extra tailwind classes for the container */
|
|
7
|
+
className?: string;
|
|
8
|
+
/** hide the bar this long after CACHE_DONE */
|
|
9
|
+
hideAfterMs?: number;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Tiny top progress pill shown every time the service worker caches:
|
|
13
|
+
* install precache + on-demand API warm-ups (see useCacheProgress).
|
|
14
|
+
* Render it once near the root of your app: <CacheProgress />.
|
|
15
|
+
*/
|
|
16
|
+
export declare function CacheProgress({ title, doneText, className, hideAfterMs, }: CacheProgressProps): import("react").JSX.Element | null;
|
|
17
|
+
//# sourceMappingURL=CacheProgress.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CacheProgress.d.ts","sourceRoot":"","sources":["../../../../../packages/ui/src/pwa/CacheProgress.tsx"],"names":[],"mappings":"AAKA,MAAM,MAAM,kBAAkB,GAAG;IAC/B,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,EAC5B,KAAwB,EACxB,QAAqB,EACrB,SAAS,EACT,WAAkB,GACnB,EAAE,kBAAkB,sCAsDpB"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useEffect, useState } from "react";
|
|
4
|
+
import { useCacheProgress } from "./useCacheProgress";
|
|
5
|
+
/**
|
|
6
|
+
* Tiny top progress pill shown every time the service worker caches:
|
|
7
|
+
* install precache + on-demand API warm-ups (see useCacheProgress).
|
|
8
|
+
* Render it once near the root of your app: <CacheProgress />.
|
|
9
|
+
*/
|
|
10
|
+
export function CacheProgress({ title = "Mise en cache…", doneText = "À jour !", className, hideAfterMs = 3000, }) {
|
|
11
|
+
const { active, done, total, percent, currentUrl } = useCacheProgress();
|
|
12
|
+
const [visible, setVisible] = useState(false);
|
|
13
|
+
useEffect(() => {
|
|
14
|
+
if (active) {
|
|
15
|
+
setVisible(true);
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
if (total > 0 && done >= total) {
|
|
19
|
+
const t = setTimeout(() => setVisible(false), hideAfterMs);
|
|
20
|
+
return () => clearTimeout(t);
|
|
21
|
+
}
|
|
22
|
+
}, [active, done, total, hideAfterMs]);
|
|
23
|
+
if (!visible || total === 0)
|
|
24
|
+
return null;
|
|
25
|
+
const finished = !active && done >= total;
|
|
26
|
+
return (_jsx("div", { className: "fixed top-4 left-1/2 z-40 w-[calc(100%-2rem)] max-w-md -translate-x-1/2", children: _jsxs("div", { role: "status", "aria-live": "polite", className: `rounded-xl border border-gray-200 bg-white p-3 shadow-lg dark:border-gray-700 dark:bg-gray-800 ${className || ""}`, children: [_jsxs("div", { className: "mb-1.5 flex items-center justify-between gap-3 text-xs", children: [_jsx("span", { className: "font-medium text-gray-700 dark:text-gray-200", children: finished ? doneText : title }), _jsxs("span", { className: "font-mono text-gray-500 dark:text-gray-400", children: [done, "/", total, " \u00B7 ", percent, "%"] })] }), _jsx("div", { className: "h-2 overflow-hidden rounded-full bg-gray-100 dark:bg-gray-700", role: "progressbar", "aria-valuemin": 0, "aria-valuemax": total, "aria-valuenow": done, children: _jsx("div", { className: "h-full rounded-full bg-emerald-500 transition-all duration-300", style: { width: `${percent}%` } }) }), !finished && currentUrl && (_jsx("p", { className: "mt-1.5 truncate font-mono text-[11px] text-gray-400 dark:text-gray-500", children: currentUrl }))] }) }));
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=CacheProgress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CacheProgress.js","sourceRoot":"","sources":["../../../../../packages/ui/src/pwa/CacheProgress.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAatD;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,EAC5B,KAAK,GAAG,gBAAgB,EACxB,QAAQ,GAAG,UAAU,EACrB,SAAS,EACT,WAAW,GAAG,IAAI,GACC;IACnB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,gBAAgB,EAAE,CAAC;IACxE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE9C,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,MAAM,EAAE,CAAC;YACX,UAAU,CAAC,IAAI,CAAC,CAAC;YACjB,OAAO;QACT,CAAC;QACD,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;YAC/B,MAAM,CAAC,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC;YAC3D,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;IAEvC,IAAI,CAAC,OAAO,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEzC,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAI,IAAI,IAAI,KAAK,CAAC;IAE1C,OAAO,CACL,cAAK,SAAS,EAAC,yEAAyE,YACtF,eACE,IAAI,EAAC,QAAQ,eACH,QAAQ,EAClB,SAAS,EAAE,kGAAkG,SAAS,IAAI,EAAE,EAAE,aAE9H,eAAK,SAAS,EAAC,wDAAwD,aACrE,eAAM,SAAS,EAAC,8CAA8C,YAC3D,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,GACvB,EACP,gBAAM,SAAS,EAAC,4CAA4C,aACzD,IAAI,OAAG,KAAK,cAAK,OAAO,SACpB,IACH,EACN,cACE,SAAS,EAAC,+DAA+D,EACzE,IAAI,EAAC,aAAa,mBACH,CAAC,mBACD,KAAK,mBACL,IAAI,YAEnB,cACE,SAAS,EAAC,gEAAgE,EAC1E,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,OAAO,GAAG,EAAE,GAC/B,GACE,EACL,CAAC,QAAQ,IAAI,UAAU,IAAI,CAC1B,YAAG,SAAS,EAAC,wEAAwE,YAClF,UAAU,GACT,CACL,IACG,GACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export type CacheProgressOp = "install" | "warm";
|
|
2
|
+
export type CacheProgressState = {
|
|
3
|
+
/** true while a caching job is running */
|
|
4
|
+
active: boolean;
|
|
5
|
+
/** which job reported last ("install" = precache, "warm" = API warm-up) */
|
|
6
|
+
op: CacheProgressOp | null;
|
|
7
|
+
done: number;
|
|
8
|
+
total: number;
|
|
9
|
+
/** 0-100 */
|
|
10
|
+
percent: number;
|
|
11
|
+
/** url just cached (last progress event) */
|
|
12
|
+
currentUrl: string | null;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Listen to the service worker's CACHE_START / CACHE_PROGRESS / CACHE_DONE
|
|
16
|
+
* messages (see playground/public/sw.js) and expose caching progress.
|
|
17
|
+
* Returns to idle values when nothing has run yet.
|
|
18
|
+
*/
|
|
19
|
+
export declare function useCacheProgress(): CacheProgressState;
|
|
20
|
+
//# sourceMappingURL=useCacheProgress.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCacheProgress.d.ts","sourceRoot":"","sources":["../../../../../packages/ui/src/pwa/useCacheProgress.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,MAAM,CAAC;AAEjD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,0CAA0C;IAC1C,MAAM,EAAE,OAAO,CAAC;IAChB,2EAA2E;IAC3E,EAAE,EAAE,eAAe,GAAG,IAAI,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,YAAY;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,4CAA4C;IAC5C,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC;AAwBF;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,kBAAkB,CA4CrD"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useEffect, useState } from "react";
|
|
3
|
+
const IDLE = {
|
|
4
|
+
active: false,
|
|
5
|
+
op: null,
|
|
6
|
+
done: 0,
|
|
7
|
+
total: 0,
|
|
8
|
+
percent: 0,
|
|
9
|
+
currentUrl: null,
|
|
10
|
+
};
|
|
11
|
+
function toPercent(done, total) {
|
|
12
|
+
if (!total || total <= 0)
|
|
13
|
+
return 0;
|
|
14
|
+
return Math.min(100, Math.round((done / total) * 100));
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Listen to the service worker's CACHE_START / CACHE_PROGRESS / CACHE_DONE
|
|
18
|
+
* messages (see playground/public/sw.js) and expose caching progress.
|
|
19
|
+
* Returns to idle values when nothing has run yet.
|
|
20
|
+
*/
|
|
21
|
+
export function useCacheProgress() {
|
|
22
|
+
const [state, setState] = useState(IDLE);
|
|
23
|
+
useEffect(() => {
|
|
24
|
+
if (typeof navigator === "undefined" || !("serviceWorker" in navigator))
|
|
25
|
+
return;
|
|
26
|
+
const onMessage = (event) => {
|
|
27
|
+
const msg = event.data;
|
|
28
|
+
if (!msg || typeof msg !== "object")
|
|
29
|
+
return;
|
|
30
|
+
if (msg.type !== "CACHE_START" && msg.type !== "CACHE_PROGRESS" && msg.type !== "CACHE_DONE")
|
|
31
|
+
return;
|
|
32
|
+
const done = typeof msg.done === "number" ? msg.done : 0;
|
|
33
|
+
const total = typeof msg.total === "number" ? msg.total : 0;
|
|
34
|
+
const op = msg.op === "warm" ? "warm" : "install";
|
|
35
|
+
if (msg.type === "CACHE_DONE") {
|
|
36
|
+
setState({
|
|
37
|
+
active: false,
|
|
38
|
+
op,
|
|
39
|
+
done,
|
|
40
|
+
total,
|
|
41
|
+
percent: toPercent(done, total),
|
|
42
|
+
currentUrl: null,
|
|
43
|
+
});
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
setState({
|
|
47
|
+
active: true,
|
|
48
|
+
op,
|
|
49
|
+
done,
|
|
50
|
+
total,
|
|
51
|
+
percent: toPercent(done, total),
|
|
52
|
+
currentUrl: typeof msg.url === "string" ? msg.url : null,
|
|
53
|
+
});
|
|
54
|
+
};
|
|
55
|
+
navigator.serviceWorker.addEventListener("message", onMessage);
|
|
56
|
+
return () => {
|
|
57
|
+
navigator.serviceWorker.removeEventListener("message", onMessage);
|
|
58
|
+
};
|
|
59
|
+
}, []);
|
|
60
|
+
return state;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=useCacheProgress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCacheProgress.js","sourceRoot":"","sources":["../../../../../packages/ui/src/pwa/useCacheProgress.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAyB5C,MAAM,IAAI,GAAuB;IAC/B,MAAM,EAAE,KAAK;IACb,EAAE,EAAE,IAAI;IACR,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;IACR,OAAO,EAAE,CAAC;IACV,UAAU,EAAE,IAAI;CACjB,CAAC;AAEF,SAAS,SAAS,CAAC,IAAY,EAAE,KAAa;IAC5C,IAAI,CAAC,KAAK,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IACnC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AACzD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB;IAC9B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAqB,IAAI,CAAC,CAAC;IAE7D,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,CAAC,CAAC,eAAe,IAAI,SAAS,CAAC;YAAE,OAAO;QAEhF,MAAM,SAAS,GAAG,CAAC,KAAmC,EAAE,EAAE;YACxD,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC;YACvB,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;gBAAE,OAAO;YAC5C,IAAI,GAAG,CAAC,IAAI,KAAK,aAAa,IAAI,GAAG,CAAC,IAAI,KAAK,gBAAgB,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY;gBAAE,OAAO;YAErG,MAAM,IAAI,GAAG,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACzD,MAAM,KAAK,GAAG,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5D,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;YAElD,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC9B,QAAQ,CAAC;oBACP,MAAM,EAAE,KAAK;oBACb,EAAE;oBACF,IAAI;oBACJ,KAAK;oBACL,OAAO,EAAE,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC;oBAC/B,UAAU,EAAE,IAAI;iBACjB,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YAED,QAAQ,CAAC;gBACP,MAAM,EAAE,IAAI;gBACZ,EAAE;gBACF,IAAI;gBACJ,KAAK;gBACL,OAAO,EAAE,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC;gBAC/B,UAAU,EAAE,OAAO,GAAG,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;aACzD,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,SAAS,CAAC,aAAa,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAC/D,OAAO,GAAG,EAAE;YACV,SAAS,CAAC,aAAa,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACpE,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -1,7 +1,17 @@
|
|
|
1
|
+
export type WarmProgress = {
|
|
2
|
+
done: number;
|
|
3
|
+
total: number;
|
|
4
|
+
url: string;
|
|
5
|
+
ok: boolean;
|
|
6
|
+
};
|
|
1
7
|
/**
|
|
2
8
|
* Warm the SW cache for given GET URLs (e.g. /api/members).
|
|
3
9
|
* Call after login or when online to ensure offline availability without browsing.
|
|
4
|
-
*
|
|
10
|
+
*
|
|
11
|
+
* Fetches urls one by one so `onProgress` reports exact progression
|
|
12
|
+
* (done/total/url after each url). Every successful GET is stored by the
|
|
13
|
+
* service worker's fetch handler (network-first), so no SW message needed.
|
|
14
|
+
* Requires the SW from playground/public/sw.js for offline serving.
|
|
5
15
|
*/
|
|
6
|
-
export declare function warmApiCache(urls: string[]):
|
|
16
|
+
export declare function warmApiCache(urls: string[], onProgress?: (progress: WarmProgress) => void): Promise<WarmProgress[]>;
|
|
7
17
|
//# sourceMappingURL=warmCache.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"warmCache.d.ts","sourceRoot":"","sources":["../../../../../packages/ui/src/pwa/warmCache.ts"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"warmCache.d.ts","sourceRoot":"","sources":["../../../../../packages/ui/src/pwa/warmCache.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,OAAO,CAAC;CACb,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EAAE,EACd,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,GAC5C,OAAO,CAAC,YAAY,EAAE,CAAC,CAqBzB"}
|
|
@@ -2,19 +2,33 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Warm the SW cache for given GET URLs (e.g. /api/members).
|
|
4
4
|
* Call after login or when online to ensure offline availability without browsing.
|
|
5
|
-
*
|
|
5
|
+
*
|
|
6
|
+
* Fetches urls one by one so `onProgress` reports exact progression
|
|
7
|
+
* (done/total/url after each url). Every successful GET is stored by the
|
|
8
|
+
* service worker's fetch handler (network-first), so no SW message needed.
|
|
9
|
+
* Requires the SW from playground/public/sw.js for offline serving.
|
|
6
10
|
*/
|
|
7
|
-
export function warmApiCache(urls) {
|
|
8
|
-
if (typeof navigator === "undefined"
|
|
9
|
-
return;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
11
|
+
export function warmApiCache(urls, onProgress) {
|
|
12
|
+
if (typeof navigator === "undefined")
|
|
13
|
+
return Promise.resolve([]);
|
|
14
|
+
return (async () => {
|
|
15
|
+
const results = [];
|
|
16
|
+
let done = 0;
|
|
17
|
+
for (const url of urls) {
|
|
18
|
+
let ok = false;
|
|
19
|
+
try {
|
|
20
|
+
const res = await fetch(url, { credentials: "include" });
|
|
21
|
+
ok = res.ok;
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
ok = false;
|
|
25
|
+
}
|
|
26
|
+
done += 1;
|
|
27
|
+
const progress = { done, total: urls.length, url, ok };
|
|
28
|
+
results.push(progress);
|
|
29
|
+
onProgress?.(progress);
|
|
30
|
+
}
|
|
31
|
+
return results;
|
|
32
|
+
})();
|
|
19
33
|
}
|
|
20
34
|
//# sourceMappingURL=warmCache.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"warmCache.js","sourceRoot":"","sources":["../../../../../packages/ui/src/pwa/warmCache.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"warmCache.js","sourceRoot":"","sources":["../../../../../packages/ui/src/pwa/warmCache.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AASb;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAC1B,IAAc,EACd,UAA6C;IAE7C,IAAI,OAAO,SAAS,KAAK,WAAW;QAAE,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAEjE,OAAO,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,OAAO,GAAmB,EAAE,CAAC;QACnC,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,EAAE,GAAG,KAAK,CAAC;YACf,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC;gBACzD,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC;YACd,CAAC;YAAC,MAAM,CAAC;gBACP,EAAE,GAAG,KAAK,CAAC;YACb,CAAC;YACD,IAAI,IAAI,CAAC,CAAC;YACV,MAAM,QAAQ,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;YACvD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvB,UAAU,EAAE,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC,EAAE,CAAC;AACP,CAAC"}
|