@vibes.diy/base 14.3.45 → 14.3.46
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/components/FilesPanelView.d.ts +19 -1
- package/components/FilesPanelView.js +52 -2
- package/components/FilesPanelView.js.map +1 -1
- package/components/HandlePickerMenu.d.ts +1 -0
- package/components/HandlePickerMenu.js.map +1 -1
- package/components/ImgGen.d.ts +5 -1
- package/components/ImgGen.js +23 -5
- package/components/ImgGen.js.map +1 -1
- package/components/NotificationDetailView.d.ts +15 -0
- package/components/NotificationDetailView.js +41 -3
- package/components/NotificationDetailView.js.map +1 -1
- package/components/ViewerTagView.d.ts +5 -1
- package/components/ViewerTagView.js +58 -12
- package/components/ViewerTagView.js.map +1 -1
- package/components/vibe-menu/cards/ShareCard.js +1 -1
- package/components/vibe-menu/cards/ShareCard.js.map +1 -1
- package/components/vibe-menu/cards/ShareLinkRows.js +3 -2
- package/components/vibe-menu/cards/ShareLinkRows.js.map +1 -1
- package/components/vibe-menu/cards/share-copy.d.ts +5 -3
- package/components/vibe-menu/cards/share-copy.js +7 -6
- package/components/vibe-menu/cards/share-copy.js.map +1 -1
- package/components/vibe-menu/slices.d.ts +1 -0
- package/components/vibe-menu/slices.js.map +1 -1
- package/hooks/img-gen/local-pictures.d.ts +10 -0
- package/hooks/img-gen/local-pictures.js +31 -0
- package/hooks/img-gen/local-pictures.js.map +1 -0
- package/hooks/img-gen/picture-bytes.d.ts +54 -0
- package/hooks/img-gen/picture-bytes.js +312 -0
- package/hooks/img-gen/picture-bytes.js.map +1 -0
- package/hooks/img-gen/use-img-gen.d.ts +9 -1
- package/hooks/img-gen/use-img-gen.js +109 -8
- package/hooks/img-gen/use-img-gen.js.map +1 -1
- package/hooks/img-gen/use-picture-src.d.ts +13 -0
- package/hooks/img-gen/use-picture-src.js +94 -0
- package/hooks/img-gen/use-picture-src.js.map +1 -0
- package/package.json +5 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViewerTagView.js","sourceRoot":"","sources":["../../jsr/components/ViewerTagView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAuB3D,SAAS,WAAW,CAAC,EAAE,IAAI,EAA6B;IACtD,OAAO,CACL,4CACc,MAAM,EAClB,OAAO,EAAC,WAAW,EACnB,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,IAAI,EACZ,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAC3B,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,WAAW,EAAE,CAAC,EACd,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO;QAEtB,8BAAM,CAAC,EAAC,mFAAmF,GAAG;QAC9F,gCAAQ,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,MAAM,EAAC,CAAC,EAAC,KAAK,GAAG,CAChC,CACP,CAAC;AACJ,CAAC;
|
|
1
|
+
{"version":3,"file":"ViewerTagView.js","sourceRoot":"","sources":["../../jsr/components/ViewerTagView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -40,7 +40,7 @@ function ShareOwnerMain({ share, nav, actions, }) {
|
|
|
40
40
|
return (React.createElement(React.Fragment, null,
|
|
41
41
|
share.publish !== null ? React.createElement(PublishLine, { publish: share.publish }) : null,
|
|
42
42
|
React.createElement("div", { className: "vm-who-block" },
|
|
43
|
-
React.createElement(AccessToggle, { posture: share.posture, state: share.postureState, loading: share.postureLoading, onPosture: share.onPosture, onRetry: share.onRetryPosture, copyChip: React.createElement(CopyLinkChip, { url: share.link.url, display: share.link.display }), kicker: nav.banner === "accessWizard" }),
|
|
43
|
+
React.createElement(AccessToggle, { posture: share.posture, state: share.postureState, loading: share.postureLoading, onPosture: share.onPosture, onRetry: share.onRetryPosture, copyChip: React.createElement(CopyLinkChip, { url: share.link.url, display: share.link.display, onCopied: share.onCopyLink }), kicker: nav.banner === "accessWizard" }),
|
|
44
44
|
share.anonWritesOn === true ? React.createElement("p", { className: "vm-access-note" }, ANON_WRITES_LINE) : null,
|
|
45
45
|
showEscape(share) ? (React.createElement("button", { className: "vm-textbtn", type: "button", "data-escape": true, onClick: share.escape.onPublishWithoutAccess }, ESCAPE_LABEL)) : null,
|
|
46
46
|
React.createElement("h3", { className: "vm-subhead vm-members-head" }, "Members"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShareCard.js","sourceRoot":"","sources":["../../../../jsr/components/vibe-menu/cards/ShareCard.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ShareCard.js","sourceRoot":"","sources":["../../../../jsr/components/vibe-menu/cards/ShareCard.tsx"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ import { Row } from "../parts/Row.js";
|
|
|
4
4
|
import { QrCode } from "../../QrCode.js";
|
|
5
5
|
import { CopyChip } from "./share-copy.js";
|
|
6
6
|
export function ShareLinkRows({ share, owner }) {
|
|
7
|
+
const onCopyLink = owner === true ? share.onCopyLink : undefined;
|
|
7
8
|
const [open, setOpen] = useState(null);
|
|
8
9
|
function toggle(which) {
|
|
9
10
|
setOpen((prev) => (prev === which ? null : which));
|
|
@@ -18,10 +19,10 @@ export function ShareLinkRows({ share, owner }) {
|
|
|
18
19
|
React.createElement(Row, { lead: "code", label: "Embed", compact: true, expanded: open === "embed", onClick: () => toggle("embed") }),
|
|
19
20
|
open === "embed" ? (React.createElement("div", { className: "vm-reveal", "data-reveal": "embed" },
|
|
20
21
|
React.createElement("textarea", { className: "vm-embed", readOnly: true, value: embed.snippet, "aria-label": "Embed code", onFocus: (e) => e.currentTarget.select() }),
|
|
21
|
-
React.createElement(CopyChip, { text: embed.snippet, label: "Copy embed code", ariaLabel: "Copy embed code" }),
|
|
22
|
+
React.createElement(CopyChip, { text: embed.snippet, label: "Copy embed code", ariaLabel: "Copy embed code", onCopied: onCopyLink }),
|
|
22
23
|
embed.autoHeightSnippet !== undefined ? (React.createElement(React.Fragment, null,
|
|
23
24
|
React.createElement("textarea", { className: "vm-embed", readOnly: true, value: embed.autoHeightSnippet, "aria-label": "Auto-height embed code", onFocus: (e) => e.currentTarget.select() }),
|
|
24
|
-
React.createElement(CopyChip, { text: embed.autoHeightSnippet, label: "Copy auto-height embed", ariaLabel: "Copy auto-height embed" }))) : null)) : null)) : null,
|
|
25
|
+
React.createElement(CopyChip, { text: embed.autoHeightSnippet, label: "Copy auto-height embed", ariaLabel: "Copy auto-height embed", onCopied: onCopyLink }))) : null)) : null)) : null,
|
|
25
26
|
share.pinterestHref !== null ? React.createElement(Row, { lead: "pin", label: "Pin it", compact: true, href: share.pinterestHref, external: true }) : null));
|
|
26
27
|
}
|
|
27
28
|
//# sourceMappingURL=ShareLinkRows.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShareLinkRows.js","sourceRoot":"","sources":["../../../../jsr/components/vibe-menu/cards/ShareLinkRows.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAY3C,MAAM,UAAU,aAAa,CAAC,EAAE,KAAK,EAAE,KAAK,EAA2D;IACrG,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAS,IAAI,CAAC,CAAC;IAC/C,SAAS,MAAM,CAAC,KAAqB;QACnC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACrD,CAAC;IACD,MAAM,KAAK,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAClD,OAAO,CACL;QACE,oBAAC,GAAG,IAAC,IAAI,EAAC,SAAS,EAAC,KAAK,EAAC,SAAS,EAAC,OAAO,QAAC,QAAQ,EAAE,IAAI,KAAK,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAI;QACnG,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CACf,6BAAK,SAAS,EAAC,WAAW,iBAAa,IAAI;YACzC,8BAAM,SAAS,EAAC,OAAO;gBACrB,oBAAC,MAAM,IAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,mBAAmB,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,GAAI,CACtF,CACH,CACP,CAAC,CAAC,CAAC,IAAI;QACP,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,CAChB;YACE,oBAAC,GAAG,IAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,OAAO,EAAC,OAAO,QAAC,QAAQ,EAAE,IAAI,KAAK,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,GAAI;YACpG,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAClB,6BAAK,SAAS,EAAC,WAAW,iBAAa,OAAO;gBAE5C,kCACE,SAAS,EAAC,UAAU,EACpB,QAAQ,QACR,KAAK,EAAE,KAAK,CAAC,OAAO,gBACT,YAAY,EACvB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,EAAE,GACxC;gBACF,oBAAC,QAAQ,IAAC,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,EAAC,iBAAiB,EAAC,SAAS,EAAC,iBAAiB,
|
|
1
|
+
{"version":3,"file":"ShareLinkRows.js","sourceRoot":"","sources":["../../../../jsr/components/vibe-menu/cards/ShareLinkRows.tsx"],"names":[],"mappings":"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"}
|
|
@@ -9,16 +9,18 @@ export interface CopyFeedback {
|
|
|
9
9
|
readonly ref: React.RefObject<HTMLButtonElement | null>;
|
|
10
10
|
onCopy(): void;
|
|
11
11
|
}
|
|
12
|
-
export declare function useCopyFeedback(text: string): CopyFeedback;
|
|
12
|
+
export declare function useCopyFeedback(text: string, onCopied?: () => void): CopyFeedback;
|
|
13
13
|
export interface CopyChipProps {
|
|
14
14
|
readonly text: string;
|
|
15
15
|
readonly label: string;
|
|
16
16
|
readonly ariaLabel: string;
|
|
17
|
+
readonly onCopied?: () => void;
|
|
17
18
|
}
|
|
18
|
-
export declare function CopyChip({ text, label, ariaLabel }: CopyChipProps): React.JSX.Element;
|
|
19
|
+
export declare function CopyChip({ text, label, ariaLabel, onCopied }: CopyChipProps): React.JSX.Element;
|
|
19
20
|
export interface CopyLinkProps {
|
|
20
21
|
readonly url: string;
|
|
21
22
|
readonly display: string;
|
|
23
|
+
readonly onCopied?: () => void;
|
|
22
24
|
}
|
|
23
|
-
export declare function CopyLinkChip({ url, display }: CopyLinkProps): React.JSX.Element;
|
|
25
|
+
export declare function CopyLinkChip({ url, display, onCopied }: CopyLinkProps): React.JSX.Element;
|
|
24
26
|
export declare function CopyLinkPill({ url, display }: CopyLinkProps): React.JSX.Element;
|
|
@@ -13,7 +13,7 @@ export function copyText(text, write = navigatorClipboardWriter) {
|
|
|
13
13
|
await write(text);
|
|
14
14
|
});
|
|
15
15
|
}
|
|
16
|
-
export function useCopyFeedback(text) {
|
|
16
|
+
export function useCopyFeedback(text, onCopied) {
|
|
17
17
|
const [copied, setCopied] = useState(false);
|
|
18
18
|
const ref = useRef(null);
|
|
19
19
|
const timer = useRef(null);
|
|
@@ -28,6 +28,7 @@ export function useCopyFeedback(text) {
|
|
|
28
28
|
void copyText(text, write).then((res) => {
|
|
29
29
|
if (res.isErr())
|
|
30
30
|
return;
|
|
31
|
+
onCopied?.();
|
|
31
32
|
const el = ref.current;
|
|
32
33
|
if (el !== null && timer.current === null)
|
|
33
34
|
el.style.minWidth = `${el.getBoundingClientRect().width}px`;
|
|
@@ -41,17 +42,17 @@ export function useCopyFeedback(text) {
|
|
|
41
42
|
ref.current.style.minWidth = "";
|
|
42
43
|
}, MOTION.copiedMs);
|
|
43
44
|
});
|
|
44
|
-
}, [text, write]);
|
|
45
|
+
}, [text, write, onCopied]);
|
|
45
46
|
return { copied, ref, onCopy };
|
|
46
47
|
}
|
|
47
|
-
export function CopyChip({ text, label, ariaLabel }) {
|
|
48
|
-
const { copied, ref, onCopy } = useCopyFeedback(text);
|
|
48
|
+
export function CopyChip({ text, label, ariaLabel, onCopied }) {
|
|
49
|
+
const { copied, ref, onCopy } = useCopyFeedback(text, onCopied);
|
|
49
50
|
return (React.createElement(React.Fragment, null,
|
|
50
51
|
React.createElement(Chip, { copy: true, label: copied ? "Copied" : label, ariaLabel: ariaLabel, chipRef: ref, onClick: onCopy }),
|
|
51
52
|
React.createElement("span", { className: "vm-sr", role: "status" }, copied ? "Copied" : "")));
|
|
52
53
|
}
|
|
53
|
-
export function CopyLinkChip({ url, display }) {
|
|
54
|
-
return React.createElement(CopyChip, { text: url, label: "Copy link", ariaLabel: `Copy link ${display}
|
|
54
|
+
export function CopyLinkChip({ url, display, onCopied }) {
|
|
55
|
+
return React.createElement(CopyChip, { text: url, label: "Copy link", ariaLabel: `Copy link ${display}`, onCopied: onCopied });
|
|
55
56
|
}
|
|
56
57
|
export function CopyLinkPill({ url, display }) {
|
|
57
58
|
const { copied, ref, onCopy } = useCopyFeedback(url);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"share-copy.js","sourceRoot":"","sources":["../../../../jsr/components/vibe-menu/cards/share-copy.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5F,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAM1C,MAAM,UAAU,wBAAwB,CAAC,IAAY;IACnD,OAAO,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC;AAOD,MAAM,CAAC,MAAM,sBAAsB,GAAG,aAAa,CAAkB,wBAAwB,CAAC,CAAC;AAS/F,MAAM,UAAU,QAAQ,CAAC,IAAY,EAAE,KAAK,GAAoB,wBAAwB;IACtF,OAAO,gBAAgB,CAAC,KAAK,IAAmB,EAAE;QAChD,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;AACL,CAAC;AAcD,MAAM,UAAU,eAAe,CAAC,IAAY;
|
|
1
|
+
{"version":3,"file":"share-copy.js","sourceRoot":"","sources":["../../../../jsr/components/vibe-menu/cards/share-copy.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slices.js","sourceRoot":"","sources":["../../../jsr/components/vibe-menu/slices.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"slices.js","sourceRoot":"","sources":["../../../jsr/components/vibe-menu/slices.ts"],"names":[],"mappings":"AAkLA,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7C,UAAU,EAAE,qDAAqD;IACjE,eAAe,EAAE,sDAAsD;CAC/D,CAAC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type PictureStore } from "./picture-bytes.js";
|
|
2
|
+
export interface LocalFileRef {
|
|
3
|
+
readonly dbName: string;
|
|
4
|
+
readonly docId: string;
|
|
5
|
+
readonly key: string;
|
|
6
|
+
readonly uploadId: string;
|
|
7
|
+
}
|
|
8
|
+
export type LocalFileUrl = (ref: LocalFileRef) => string;
|
|
9
|
+
export declare function registeredLocalFileUrl(): LocalFileUrl | undefined;
|
|
10
|
+
export declare function registeredPictureStore(): PictureStore | undefined;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { getRegisteredVibeApi } from "@vibes.diy/vibe-runtime";
|
|
2
|
+
import { buildFilesUrl } from "@vibes.diy/vibe-types";
|
|
3
|
+
import { createPictureStore, idbPictureBytes } from "./picture-bytes.js";
|
|
4
|
+
function registeredApp() {
|
|
5
|
+
const app = getRegisteredVibeApi()?.svc?.vibeApp;
|
|
6
|
+
if (app === undefined || app.assetOrigin === undefined || app.assetOrigin === "")
|
|
7
|
+
return undefined;
|
|
8
|
+
return { ownerHandle: app.ownerHandle, appSlug: app.appSlug, assetOrigin: app.assetOrigin };
|
|
9
|
+
}
|
|
10
|
+
export function registeredLocalFileUrl() {
|
|
11
|
+
const app = registeredApp();
|
|
12
|
+
if (app === undefined)
|
|
13
|
+
return undefined;
|
|
14
|
+
return function mintLocalFileUrl(ref) {
|
|
15
|
+
return buildFilesUrl({ assetOrigin: app.assetOrigin, ownerHandle: app.ownerHandle, appSlug: app.appSlug, ...ref });
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
let storeFor;
|
|
19
|
+
export function registeredPictureStore() {
|
|
20
|
+
const app = registeredApp();
|
|
21
|
+
if (app === undefined)
|
|
22
|
+
return undefined;
|
|
23
|
+
if (storeFor === undefined || storeFor.assetOrigin !== app.assetOrigin) {
|
|
24
|
+
storeFor = {
|
|
25
|
+
assetOrigin: app.assetOrigin,
|
|
26
|
+
store: createPictureStore({ assetOrigin: app.assetOrigin, bytes: idbPictureBytes() }),
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
return storeFor.store;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=local-pictures.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-pictures.js","sourceRoot":"","sources":["../../../jsr/hooks/img-gen/local-pictures.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAqB,MAAM,oBAAoB,CAAC;AAyB5F,SAAS,aAAa;IAGpB,MAAM,GAAG,GAAG,oBAAoB,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC;IACjD,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,WAAW,KAAK,SAAS,IAAI,GAAG,CAAC,WAAW,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IACnG,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC;AAC9F,CAAC;AAID,MAAM,UAAU,sBAAsB;IACpC,MAAM,GAAG,GAAG,aAAa,EAAE,CAAC;IAC5B,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACxC,OAAO,SAAS,gBAAgB,CAAC,GAAiB;QAChD,OAAO,aAAa,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;IACrH,CAAC,CAAC;AACJ,CAAC;AAED,IAAI,QAAoF,CAAC;AAGzF,MAAM,UAAU,sBAAsB;IACpC,MAAM,GAAG,GAAG,aAAa,EAAE,CAAC;IAC5B,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACxC,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,WAAW,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC;QACvE,QAAQ,GAAG;YACT,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,KAAK,EAAE,kBAAkB,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,KAAK,EAAE,eAAe,EAAE,EAAE,CAAC;SACtF,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC,KAAK,CAAC;AACxB,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
export type PictureFetcher = (input: string, init?: RequestInit) => Promise<Response>;
|
|
2
|
+
export type PictureWarn = (event: string, fields: Record<string, unknown>) => void;
|
|
3
|
+
export declare function isRasterImageType(mime: string): boolean;
|
|
4
|
+
export interface PictureByteStore {
|
|
5
|
+
get(uploadId: string): Promise<Blob | undefined>;
|
|
6
|
+
put(uploadId: string, blob: Blob): Promise<void>;
|
|
7
|
+
}
|
|
8
|
+
export type PictureFill = {
|
|
9
|
+
readonly outcome: "kept";
|
|
10
|
+
readonly blob: Blob;
|
|
11
|
+
} | {
|
|
12
|
+
readonly outcome: "not-kept";
|
|
13
|
+
readonly blob: Blob;
|
|
14
|
+
readonly confirmed: boolean;
|
|
15
|
+
} | {
|
|
16
|
+
readonly outcome: "known-not-keepable";
|
|
17
|
+
readonly confirmed: boolean;
|
|
18
|
+
} | {
|
|
19
|
+
readonly outcome: "other-upload";
|
|
20
|
+
} | {
|
|
21
|
+
readonly outcome: "unavailable";
|
|
22
|
+
};
|
|
23
|
+
export type PictureConfirm = "kept" | "dropped" | "unknown" | "none";
|
|
24
|
+
export interface PictureStore {
|
|
25
|
+
peek(uploadId: string): Blob | undefined;
|
|
26
|
+
lookup(uploadId: string): Promise<Blob | undefined>;
|
|
27
|
+
fill(ref: {
|
|
28
|
+
readonly uploadId: string;
|
|
29
|
+
readonly url: string;
|
|
30
|
+
}): Promise<PictureFill>;
|
|
31
|
+
seed(uploadId: string, blob: Blob): Promise<void>;
|
|
32
|
+
isUnconfirmed(uploadId: string): boolean;
|
|
33
|
+
confirm(ref: {
|
|
34
|
+
readonly uploadId: string;
|
|
35
|
+
readonly url: string;
|
|
36
|
+
}): Promise<PictureConfirm>;
|
|
37
|
+
}
|
|
38
|
+
export interface CreatePictureStoreOpts {
|
|
39
|
+
readonly assetOrigin: string;
|
|
40
|
+
readonly bytes: PictureByteStore;
|
|
41
|
+
readonly fetcher?: PictureFetcher;
|
|
42
|
+
readonly warn?: PictureWarn;
|
|
43
|
+
readonly memoryBytes?: number;
|
|
44
|
+
readonly localLookupMs?: number;
|
|
45
|
+
}
|
|
46
|
+
export declare function createPictureStore(opts: CreatePictureStoreOpts): PictureStore;
|
|
47
|
+
export declare const PICTURE_BYTES_DB = "vibes-picture-bytes";
|
|
48
|
+
export interface IdbPictureBytesOpts {
|
|
49
|
+
readonly indexedDB?: IDBFactory;
|
|
50
|
+
readonly dbName?: string;
|
|
51
|
+
readonly maxBytes?: number;
|
|
52
|
+
readonly now?: () => number;
|
|
53
|
+
}
|
|
54
|
+
export declare function idbPictureBytes(opts?: IdbPictureBytesOpts): PictureByteStore;
|
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
import { exception2Result } from "@adviser/cement";
|
|
2
|
+
import { type } from "arktype";
|
|
3
|
+
import { FILES_ASSET_STATE_HEADER, FILES_UPLOAD_ID_HEADER, KEEPABLE_ASSET_STATES } from "@vibes.diy/vibe-types";
|
|
4
|
+
import { vibe } from "@vibes.diy/vibe-runtime";
|
|
5
|
+
function defaultWarn(event, fields) {
|
|
6
|
+
vibe.log("warn", event, fields);
|
|
7
|
+
}
|
|
8
|
+
const RASTER_IMAGE_TYPES = ["image/png", "image/jpeg", "image/webp", "image/gif", "image/avif", "image/bmp"];
|
|
9
|
+
export function isRasterImageType(mime) {
|
|
10
|
+
return RASTER_IMAGE_TYPES.includes(mime.split(";")[0].trim().toLowerCase());
|
|
11
|
+
}
|
|
12
|
+
const DEFAULT_MEMORY_BYTES = 48 * 1024 * 1024;
|
|
13
|
+
const DEFAULT_LOCAL_LOOKUP_MS = 1500;
|
|
14
|
+
class MemoryTier {
|
|
15
|
+
max;
|
|
16
|
+
entries = new Map();
|
|
17
|
+
total = 0;
|
|
18
|
+
constructor(max) {
|
|
19
|
+
this.max = max;
|
|
20
|
+
}
|
|
21
|
+
get(id) {
|
|
22
|
+
const b = this.entries.get(id);
|
|
23
|
+
if (b === undefined)
|
|
24
|
+
return undefined;
|
|
25
|
+
this.entries.delete(id);
|
|
26
|
+
this.entries.set(id, b);
|
|
27
|
+
return b;
|
|
28
|
+
}
|
|
29
|
+
delete(id) {
|
|
30
|
+
const b = this.entries.get(id);
|
|
31
|
+
if (b === undefined)
|
|
32
|
+
return;
|
|
33
|
+
this.entries.delete(id);
|
|
34
|
+
this.total -= b.size;
|
|
35
|
+
}
|
|
36
|
+
set(id, b) {
|
|
37
|
+
const prior = this.entries.get(id);
|
|
38
|
+
if (prior !== undefined) {
|
|
39
|
+
this.total -= prior.size;
|
|
40
|
+
this.entries.delete(id);
|
|
41
|
+
}
|
|
42
|
+
if (b.size > this.max)
|
|
43
|
+
return;
|
|
44
|
+
this.entries.set(id, b);
|
|
45
|
+
this.total += b.size;
|
|
46
|
+
for (const [oldId, old] of this.entries) {
|
|
47
|
+
if (this.total <= this.max)
|
|
48
|
+
break;
|
|
49
|
+
this.entries.delete(oldId);
|
|
50
|
+
this.total -= old.size;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
const TIMED_OUT = Symbol("timed-out");
|
|
55
|
+
function withinMs(p, ms) {
|
|
56
|
+
return new Promise((resolve, reject) => {
|
|
57
|
+
const timer = setTimeout(() => resolve(TIMED_OUT), ms);
|
|
58
|
+
p.then((v) => {
|
|
59
|
+
clearTimeout(timer);
|
|
60
|
+
resolve(v);
|
|
61
|
+
}, (e) => {
|
|
62
|
+
clearTimeout(timer);
|
|
63
|
+
reject(e);
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
export function createPictureStore(opts) {
|
|
68
|
+
const fetcher = opts.fetcher ?? defaultFetch;
|
|
69
|
+
const warn = opts.warn ?? defaultWarn;
|
|
70
|
+
const memory = new MemoryTier(opts.memoryBytes ?? DEFAULT_MEMORY_BYTES);
|
|
71
|
+
const lookupMs = opts.localLookupMs ?? DEFAULT_LOCAL_LOOKUP_MS;
|
|
72
|
+
const filesPrefix = `${opts.assetOrigin}/_files/`;
|
|
73
|
+
const inFlight = new Map();
|
|
74
|
+
const notKeepable = new Map();
|
|
75
|
+
const unconfirmed = new Set();
|
|
76
|
+
const confirmInFlight = new Map();
|
|
77
|
+
async function keep(uploadId, blob) {
|
|
78
|
+
if (isRasterImageType(blob.type) === false) {
|
|
79
|
+
warn("picture-bytes-not-raster", { uploadId, type: blob.type });
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
memory.set(uploadId, blob);
|
|
83
|
+
const rPut = await exception2Result(() => opts.bytes.put(uploadId, blob));
|
|
84
|
+
if (rPut.isErr())
|
|
85
|
+
warn("picture-bytes-put-failed", { uploadId, message: rPut.Err().message });
|
|
86
|
+
}
|
|
87
|
+
async function seed(uploadId, blob) {
|
|
88
|
+
if (isRasterImageType(blob.type) === false) {
|
|
89
|
+
warn("picture-bytes-not-raster", { uploadId, type: blob.type });
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
memory.set(uploadId, blob);
|
|
93
|
+
unconfirmed.add(uploadId);
|
|
94
|
+
}
|
|
95
|
+
function dropUnconfirmed(uploadId) {
|
|
96
|
+
if (unconfirmed.delete(uploadId))
|
|
97
|
+
memory.delete(uploadId);
|
|
98
|
+
}
|
|
99
|
+
function judge(uploadId, res, type) {
|
|
100
|
+
const servedUpload = res.headers.get(FILES_UPLOAD_ID_HEADER);
|
|
101
|
+
const state = res.headers.get(FILES_ASSET_STATE_HEADER);
|
|
102
|
+
const named = servedUpload === uploadId;
|
|
103
|
+
const rasterOk = type === undefined ? true : isRasterImageType(type);
|
|
104
|
+
return { named, keepable: named && state !== null && KEEPABLE_ASSET_STATES.includes(state) && rasterOk };
|
|
105
|
+
}
|
|
106
|
+
async function headConfirm(uploadId, url) {
|
|
107
|
+
if (unconfirmed.has(uploadId) === false)
|
|
108
|
+
return "none";
|
|
109
|
+
if (url.startsWith(filesPrefix) === false)
|
|
110
|
+
return "unknown";
|
|
111
|
+
const rRes = await exception2Result(() => fetcher(url, { method: "HEAD", credentials: "include" }));
|
|
112
|
+
if (rRes.isErr()) {
|
|
113
|
+
warn("picture-bytes-confirm-failed", { uploadId, message: rRes.Err().message });
|
|
114
|
+
return "unknown";
|
|
115
|
+
}
|
|
116
|
+
const res = rRes.Ok();
|
|
117
|
+
if (res.ok === false)
|
|
118
|
+
return "unknown";
|
|
119
|
+
const seeded = memory.get(uploadId);
|
|
120
|
+
const verdict = judge(uploadId, res, seeded?.type);
|
|
121
|
+
if (verdict.keepable === false || seeded === undefined) {
|
|
122
|
+
dropUnconfirmed(uploadId);
|
|
123
|
+
return "dropped";
|
|
124
|
+
}
|
|
125
|
+
unconfirmed.delete(uploadId);
|
|
126
|
+
await keep(uploadId, seeded);
|
|
127
|
+
return "kept";
|
|
128
|
+
}
|
|
129
|
+
function confirm(ref) {
|
|
130
|
+
const pending = confirmInFlight.get(ref.uploadId);
|
|
131
|
+
if (pending !== undefined)
|
|
132
|
+
return pending;
|
|
133
|
+
const p = headConfirm(ref.uploadId, ref.url).finally(() => confirmInFlight.delete(ref.uploadId));
|
|
134
|
+
confirmInFlight.set(ref.uploadId, p);
|
|
135
|
+
return p;
|
|
136
|
+
}
|
|
137
|
+
async function lookup(uploadId) {
|
|
138
|
+
const hot = memory.get(uploadId);
|
|
139
|
+
if (hot !== undefined)
|
|
140
|
+
return hot;
|
|
141
|
+
const rStored = await exception2Result(() => withinMs(opts.bytes.get(uploadId), lookupMs));
|
|
142
|
+
if (rStored.isErr()) {
|
|
143
|
+
warn("picture-bytes-get-failed", { uploadId, message: rStored.Err().message });
|
|
144
|
+
return undefined;
|
|
145
|
+
}
|
|
146
|
+
const stored = rStored.Ok();
|
|
147
|
+
if (stored === TIMED_OUT) {
|
|
148
|
+
warn("picture-bytes-get-slow", { uploadId, ms: lookupMs });
|
|
149
|
+
return undefined;
|
|
150
|
+
}
|
|
151
|
+
if (stored === undefined)
|
|
152
|
+
return undefined;
|
|
153
|
+
if (isRasterImageType(stored.type) === false)
|
|
154
|
+
return undefined;
|
|
155
|
+
memory.set(uploadId, stored);
|
|
156
|
+
return stored;
|
|
157
|
+
}
|
|
158
|
+
async function download(uploadId, url) {
|
|
159
|
+
if (url.startsWith(filesPrefix) === false)
|
|
160
|
+
return { outcome: "unavailable" };
|
|
161
|
+
const rRes = await exception2Result(() => fetcher(url, { credentials: "include" }));
|
|
162
|
+
if (rRes.isErr()) {
|
|
163
|
+
warn("picture-bytes-fetch-failed", { uploadId, message: rRes.Err().message });
|
|
164
|
+
return { outcome: "unavailable" };
|
|
165
|
+
}
|
|
166
|
+
const res = rRes.Ok();
|
|
167
|
+
if (res.ok === false) {
|
|
168
|
+
warn("picture-bytes-fetch-status", { uploadId, status: res.status });
|
|
169
|
+
return { outcome: "unavailable" };
|
|
170
|
+
}
|
|
171
|
+
const servedUpload = res.headers.get(FILES_UPLOAD_ID_HEADER);
|
|
172
|
+
if (servedUpload !== null && servedUpload !== uploadId) {
|
|
173
|
+
warn("picture-bytes-other-upload", { uploadId, servedUpload });
|
|
174
|
+
dropUnconfirmed(uploadId);
|
|
175
|
+
return { outcome: "other-upload" };
|
|
176
|
+
}
|
|
177
|
+
const rBlob = await exception2Result(() => res.blob());
|
|
178
|
+
if (rBlob.isErr()) {
|
|
179
|
+
warn("picture-bytes-body-failed", { uploadId, message: rBlob.Err().message });
|
|
180
|
+
return { outcome: "unavailable" };
|
|
181
|
+
}
|
|
182
|
+
const blob = rBlob.Ok();
|
|
183
|
+
const verdict = judge(uploadId, res, blob.type);
|
|
184
|
+
if (verdict.keepable === false) {
|
|
185
|
+
notKeepable.set(uploadId, verdict.named);
|
|
186
|
+
dropUnconfirmed(uploadId);
|
|
187
|
+
return { outcome: "not-kept", blob, confirmed: verdict.named };
|
|
188
|
+
}
|
|
189
|
+
unconfirmed.delete(uploadId);
|
|
190
|
+
await keep(uploadId, blob);
|
|
191
|
+
return { outcome: "kept", blob };
|
|
192
|
+
}
|
|
193
|
+
function fill(ref) {
|
|
194
|
+
const pending = inFlight.get(ref.uploadId);
|
|
195
|
+
if (pending !== undefined)
|
|
196
|
+
return pending;
|
|
197
|
+
const known = notKeepable.get(ref.uploadId);
|
|
198
|
+
if (known !== undefined)
|
|
199
|
+
return Promise.resolve({ outcome: "known-not-keepable", confirmed: known });
|
|
200
|
+
const p = download(ref.uploadId, ref.url).finally(() => inFlight.delete(ref.uploadId));
|
|
201
|
+
inFlight.set(ref.uploadId, p);
|
|
202
|
+
return p;
|
|
203
|
+
}
|
|
204
|
+
return {
|
|
205
|
+
peek: (uploadId) => memory.get(uploadId),
|
|
206
|
+
lookup,
|
|
207
|
+
fill,
|
|
208
|
+
seed,
|
|
209
|
+
isUnconfirmed: (uploadId) => unconfirmed.has(uploadId),
|
|
210
|
+
confirm,
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
function defaultFetch(input, init) {
|
|
214
|
+
return fetch(input, init);
|
|
215
|
+
}
|
|
216
|
+
export const PICTURE_BYTES_DB = "vibes-picture-bytes";
|
|
217
|
+
const BYTES = "bytes";
|
|
218
|
+
const META = "meta";
|
|
219
|
+
const DEFAULT_MAX_BYTES = 160 * 1024 * 1024;
|
|
220
|
+
const bytesRow = type({ buf: type.instanceOf(ArrayBuffer), type: "string" });
|
|
221
|
+
const metaRow = type({ uploadId: "string", size: "number", lastUsed: "number" });
|
|
222
|
+
const metaRowId = type({ uploadId: "string" });
|
|
223
|
+
function req(r) {
|
|
224
|
+
return new Promise((resolve, reject) => {
|
|
225
|
+
r.onsuccess = () => resolve(r.result);
|
|
226
|
+
r.onerror = () => reject(r.error ?? new Error("indexeddb request failed"));
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
function done(tx) {
|
|
230
|
+
return new Promise((resolve, reject) => {
|
|
231
|
+
tx.oncomplete = () => resolve();
|
|
232
|
+
tx.onerror = () => reject(tx.error ?? new Error("indexeddb transaction failed"));
|
|
233
|
+
tx.onabort = () => reject(tx.error ?? new Error("indexeddb transaction aborted"));
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
export function idbPictureBytes(opts = {}) {
|
|
237
|
+
const factory = opts.indexedDB ?? (typeof indexedDB === "undefined" ? undefined : indexedDB);
|
|
238
|
+
const maxBytes = opts.maxBytes ?? DEFAULT_MAX_BYTES;
|
|
239
|
+
const now = opts.now ?? Date.now;
|
|
240
|
+
let dbp;
|
|
241
|
+
function open() {
|
|
242
|
+
if (factory === undefined)
|
|
243
|
+
return Promise.reject(new Error("indexedDB unavailable"));
|
|
244
|
+
if (dbp === undefined) {
|
|
245
|
+
const r = factory.open(opts.dbName ?? PICTURE_BYTES_DB, 1);
|
|
246
|
+
r.onupgradeneeded = () => {
|
|
247
|
+
const db = r.result;
|
|
248
|
+
if (db.objectStoreNames.contains(BYTES) === false)
|
|
249
|
+
db.createObjectStore(BYTES);
|
|
250
|
+
if (db.objectStoreNames.contains(META) === false)
|
|
251
|
+
db.createObjectStore(META, { keyPath: "uploadId" });
|
|
252
|
+
};
|
|
253
|
+
const opening = req(r);
|
|
254
|
+
dbp = opening;
|
|
255
|
+
opening.then(undefined, forgetFailedOpen);
|
|
256
|
+
}
|
|
257
|
+
return dbp;
|
|
258
|
+
}
|
|
259
|
+
function forgetFailedOpen() {
|
|
260
|
+
dbp = undefined;
|
|
261
|
+
}
|
|
262
|
+
async function get(uploadId) {
|
|
263
|
+
const db = await open();
|
|
264
|
+
const tx = db.transaction([BYTES, META], "readwrite");
|
|
265
|
+
const row = bytesRow(await req(tx.objectStore(BYTES).get(uploadId)));
|
|
266
|
+
if (row instanceof type.errors) {
|
|
267
|
+
await done(tx);
|
|
268
|
+
return undefined;
|
|
269
|
+
}
|
|
270
|
+
tx.objectStore(META).put({ uploadId, size: row.buf.byteLength, lastUsed: now() });
|
|
271
|
+
await done(tx);
|
|
272
|
+
return new Blob([row.buf], { type: row.type });
|
|
273
|
+
}
|
|
274
|
+
async function put(uploadId, blob) {
|
|
275
|
+
if (blob.size > maxBytes)
|
|
276
|
+
return;
|
|
277
|
+
const buf = await blob.arrayBuffer();
|
|
278
|
+
const db = await open();
|
|
279
|
+
const tx = db.transaction([BYTES, META], "readwrite");
|
|
280
|
+
const bytes = tx.objectStore(BYTES);
|
|
281
|
+
const meta = tx.objectStore(META);
|
|
282
|
+
bytes.put({ buf, type: blob.type }, uploadId);
|
|
283
|
+
meta.put({ uploadId, size: buf.byteLength, lastUsed: now() });
|
|
284
|
+
const rows = [];
|
|
285
|
+
for (const raw of await req(meta.getAll())) {
|
|
286
|
+
const m = metaRow(raw);
|
|
287
|
+
if (m instanceof type.errors) {
|
|
288
|
+
const id = metaRowId(raw);
|
|
289
|
+
if (id instanceof type.errors === false) {
|
|
290
|
+
bytes.delete(id.uploadId);
|
|
291
|
+
meta.delete(id.uploadId);
|
|
292
|
+
}
|
|
293
|
+
continue;
|
|
294
|
+
}
|
|
295
|
+
rows.push(m);
|
|
296
|
+
}
|
|
297
|
+
rows.sort((a, b) => a.lastUsed - b.lastUsed);
|
|
298
|
+
let total = rows.reduce((n, m) => n + m.size, 0);
|
|
299
|
+
for (const m of rows) {
|
|
300
|
+
if (total <= maxBytes)
|
|
301
|
+
break;
|
|
302
|
+
if (m.uploadId === uploadId)
|
|
303
|
+
continue;
|
|
304
|
+
bytes.delete(m.uploadId);
|
|
305
|
+
meta.delete(m.uploadId);
|
|
306
|
+
total -= m.size;
|
|
307
|
+
}
|
|
308
|
+
await done(tx);
|
|
309
|
+
}
|
|
310
|
+
return { get, put };
|
|
311
|
+
}
|
|
312
|
+
//# sourceMappingURL=picture-bytes.js.map
|