@vibes.diy/vibe-runtime 2.5.11 → 2.5.13
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/VibeContext.d.ts +1 -0
- package/VibeContext.js +31 -1
- package/VibeContext.js.map +1 -1
- package/access-extract.d.ts +1 -0
- package/access-extract.js +43 -0
- package/access-extract.js.map +1 -0
- package/access-runner.d.ts +44 -0
- package/access-runner.js +83 -0
- package/access-runner.js.map +1 -0
- package/index.d.ts +3 -0
- package/index.js +3 -0
- package/index.js.map +1 -1
- package/package.json +3 -3
- package/register-dependencies.d.ts +12 -1
- package/register-dependencies.js +35 -1
- package/register-dependencies.js.map +1 -1
- package/use-vibe-grace.d.ts +6 -0
- package/use-vibe-grace.js +66 -0
- package/use-vibe-grace.js.map +1 -0
- package/use-vibe.d.ts +19 -0
- package/use-vibe.js +48 -0
- package/use-vibe.js.map +1 -0
- package/vibe.d.ts +6 -0
- package/vibe.js +2 -0
- package/vibe.js.map +1 -1
package/VibeContext.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import React, { type ReactNode } from "react";
|
|
|
2
2
|
import type { VibeMountParams } from "./vibe.js";
|
|
3
3
|
export interface Vibe {
|
|
4
4
|
readonly mountParams: VibeMountParams;
|
|
5
|
+
readonly accessFnSources: Map<string, string | null>;
|
|
5
6
|
}
|
|
6
7
|
export interface VibeContextProviderProps {
|
|
7
8
|
readonly mountParams: VibeMountParams;
|
package/VibeContext.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React, { createContext, useContext, useEffect, useState } from "react";
|
|
2
|
-
import { isEvtVibeColorOverride, isEvtVibeViewerChanged } from "@vibes.diy/vibe-types";
|
|
2
|
+
import { isEvtVibeAccessFnSource, isEvtVibeColorOverride, isEvtVibeViewerChanged } from "@vibes.diy/vibe-types";
|
|
3
3
|
import { generateTailwindRemapCss } from "./tailwindRemap.js";
|
|
4
|
+
import { getRegisteredAccessFnSources } from "./register-dependencies.js";
|
|
4
5
|
const COLOR_OVERRIDE_STYLE_ID = "vibe-color-override";
|
|
5
6
|
const TAILWIND_REMAP_STYLE_ID = "vibe-tailwind-remap";
|
|
6
7
|
function renderTokens(map) {
|
|
@@ -68,6 +69,7 @@ function publishRootTokens() {
|
|
|
68
69
|
}
|
|
69
70
|
const VibeContext = createContext({
|
|
70
71
|
mountParams: { usrEnv: {} },
|
|
72
|
+
accessFnSources: new Map(),
|
|
71
73
|
});
|
|
72
74
|
function LiveCycleVibeContextProvider({ mountParams, children }) {
|
|
73
75
|
const [viewerEnv, setViewerEnv] = useState(mountParams.viewerEnv);
|
|
@@ -81,11 +83,38 @@ function LiveCycleVibeContextProvider({ mountParams, children }) {
|
|
|
81
83
|
...(event.data.isOwner !== undefined ? { isOwner: event.data.isOwner } : {}),
|
|
82
84
|
...(event.data.dbAcls ? { dbAcls: event.data.dbAcls } : {}),
|
|
83
85
|
...(event.data.grants ? { grants: event.data.grants } : {}),
|
|
86
|
+
...(event.data.adminMode !== undefined ? { adminMode: event.data.adminMode } : {}),
|
|
84
87
|
});
|
|
85
88
|
};
|
|
86
89
|
window.addEventListener("message", onMsg);
|
|
87
90
|
return () => window.removeEventListener("message", onMsg);
|
|
88
91
|
}, []);
|
|
92
|
+
const [accessFnSources, setAccessFnSources] = useState(() => getRegisteredAccessFnSources());
|
|
93
|
+
useEffect(() => {
|
|
94
|
+
const onMsg = (event) => {
|
|
95
|
+
if (!isEvtVibeAccessFnSource(event.data))
|
|
96
|
+
return;
|
|
97
|
+
const { cid, source } = event.data;
|
|
98
|
+
setAccessFnSources((prev) => {
|
|
99
|
+
const next = new Map(prev);
|
|
100
|
+
next.set(cid, source);
|
|
101
|
+
return next;
|
|
102
|
+
});
|
|
103
|
+
};
|
|
104
|
+
window.addEventListener("message", onMsg);
|
|
105
|
+
setAccessFnSources((prev) => {
|
|
106
|
+
const baseline = getRegisteredAccessFnSources();
|
|
107
|
+
let next;
|
|
108
|
+
for (const [cid, source] of baseline) {
|
|
109
|
+
if (prev.has(cid))
|
|
110
|
+
continue;
|
|
111
|
+
next = next ?? new Map(prev);
|
|
112
|
+
next.set(cid, source);
|
|
113
|
+
}
|
|
114
|
+
return next ?? prev;
|
|
115
|
+
});
|
|
116
|
+
return () => window.removeEventListener("message", onMsg);
|
|
117
|
+
}, []);
|
|
89
118
|
useEffect(() => {
|
|
90
119
|
const onMsg = (event) => {
|
|
91
120
|
if (!isEvtVibeColorOverride(event.data))
|
|
@@ -123,6 +152,7 @@ function LiveCycleVibeContextProvider({ mountParams, children }) {
|
|
|
123
152
|
}, []);
|
|
124
153
|
const ctx = {
|
|
125
154
|
mountParams: { ...mountParams, viewerEnv },
|
|
155
|
+
accessFnSources,
|
|
126
156
|
};
|
|
127
157
|
return React.createElement(VibeContext.Provider, { value: ctx }, children);
|
|
128
158
|
}
|
package/VibeContext.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VibeContext.js","sourceRoot":"","sources":["../jsr/VibeContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;AAE9F,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"VibeContext.js","sourceRoot":"","sources":["../jsr/VibeContext.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function extractExportSource(fullSource: string, bindingDbName: string): string | undefined;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export function extractExportSource(fullSource, bindingDbName) {
|
|
2
|
+
if (bindingDbName === "*") {
|
|
3
|
+
return extractByPattern(fullSource, /export\s+default\s+(?:function\s*(?:\w+\s*)?\([^)]*\)\s*\{|\([^)]*\)\s*=>\s*\{|\w+\s*=>\s*\{)/, true);
|
|
4
|
+
}
|
|
5
|
+
const directPattern = new RegExp(`export\\s+function\\s+${escapeRegExp(bindingDbName)}\\s*\\([^)]*\\)\\s*\\{`);
|
|
6
|
+
const direct = extractByPattern(fullSource, directPattern, false);
|
|
7
|
+
if (direct)
|
|
8
|
+
return direct;
|
|
9
|
+
const asMatch = fullSource.match(new RegExp(`export\\s*\\{\\s*(\\w+)\\s+as\\s+["']${escapeRegExp(bindingDbName)}["']\\s*\\}`));
|
|
10
|
+
if (asMatch) {
|
|
11
|
+
const localName = asMatch[1];
|
|
12
|
+
const fnPattern = new RegExp(`function\\s+${localName}\\s*\\([^)]*\\)\\s*\\{`);
|
|
13
|
+
return extractByPattern(fullSource, fnPattern, false);
|
|
14
|
+
}
|
|
15
|
+
return undefined;
|
|
16
|
+
}
|
|
17
|
+
function escapeRegExp(s) {
|
|
18
|
+
return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
19
|
+
}
|
|
20
|
+
function extractByPattern(fullSource, pattern, isDefault) {
|
|
21
|
+
const match = fullSource.match(pattern);
|
|
22
|
+
if (!match || match.index === undefined)
|
|
23
|
+
return undefined;
|
|
24
|
+
const start = match.index;
|
|
25
|
+
let depth = 0;
|
|
26
|
+
let end = start;
|
|
27
|
+
for (let i = start; i < fullSource.length; i++) {
|
|
28
|
+
if (fullSource[i] === "{")
|
|
29
|
+
depth++;
|
|
30
|
+
if (fullSource[i] === "}") {
|
|
31
|
+
depth--;
|
|
32
|
+
if (depth === 0) {
|
|
33
|
+
end = i + 1;
|
|
34
|
+
break;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
let extracted = fullSource.slice(start, end).replace(/^export\s+/, "");
|
|
39
|
+
if (isDefault)
|
|
40
|
+
extracted = extracted.replace(/^default\s+/, "");
|
|
41
|
+
return extracted;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=access-extract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"access-extract.js","sourceRoot":"","sources":["../jsr/access-extract.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,mBAAmB,CAAC,UAAkB,EAAE,aAAqB;IAC3E,IAAI,aAAa,KAAK,GAAG,EAAE,CAAC;QAC1B,OAAO,gBAAgB,CACrB,UAAU,EACV,+FAA+F,EAC/F,IAAI,CACL,CAAC;IACJ,CAAC;IACD,MAAM,aAAa,GAAG,IAAI,MAAM,CAAC,yBAAyB,YAAY,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC;IAC/G,MAAM,MAAM,GAAG,gBAAgB,CAAC,UAAU,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;IAClE,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1B,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,wCAAwC,YAAY,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC;IAC/H,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,SAAS,GAAG,IAAI,MAAM,CAAC,eAAe,SAAS,wBAAwB,CAAC,CAAC;QAC/E,OAAO,gBAAgB,CAAC,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,YAAY,CAAC,CAAS;IAC7B,OAAO,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,gBAAgB,CAAC,UAAkB,EAAE,OAAe,EAAE,SAAkB;IAC/E,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACxC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1D,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC1B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,GAAG,GAAG,KAAK,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/C,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,GAAG;YAAE,KAAK,EAAE,CAAC;QACnC,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YAC1B,KAAK,EAAE,CAAC;YACR,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;gBAChB,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;gBACZ,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IACD,IAAI,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IACvE,IAAI,SAAS;QAAE,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;IAChE,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export interface AccessUser {
|
|
2
|
+
userHandle: string;
|
|
3
|
+
displayName?: string;
|
|
4
|
+
isOwner: boolean;
|
|
5
|
+
}
|
|
6
|
+
export interface AccessGrants {
|
|
7
|
+
channels: string[];
|
|
8
|
+
publicChannels: string[];
|
|
9
|
+
roles: string[];
|
|
10
|
+
}
|
|
11
|
+
export interface AccessCtx {
|
|
12
|
+
requireAccess(channelId: string): void;
|
|
13
|
+
requireRole(roleName: string): void;
|
|
14
|
+
}
|
|
15
|
+
export declare function makeClientCtx(user: AccessUser | null, grants: AccessGrants, adminMode: boolean): AccessCtx;
|
|
16
|
+
export type WriteVerdict = {
|
|
17
|
+
ok: true;
|
|
18
|
+
} | {
|
|
19
|
+
ok: false;
|
|
20
|
+
reason: string;
|
|
21
|
+
code: "access-denied" | "unreadable";
|
|
22
|
+
} | {
|
|
23
|
+
unknown: true;
|
|
24
|
+
reason: string;
|
|
25
|
+
};
|
|
26
|
+
export interface EvaluateWriteArgs {
|
|
27
|
+
source: string;
|
|
28
|
+
dbName: string;
|
|
29
|
+
doc: unknown;
|
|
30
|
+
oldDoc: unknown;
|
|
31
|
+
user: AccessUser | null;
|
|
32
|
+
grants: AccessGrants;
|
|
33
|
+
adminMode: boolean;
|
|
34
|
+
}
|
|
35
|
+
export declare function evaluateWrite(args: EvaluateWriteArgs): WriteVerdict;
|
|
36
|
+
export interface CanSeeArgs {
|
|
37
|
+
doc: {
|
|
38
|
+
_id: string;
|
|
39
|
+
};
|
|
40
|
+
outputChannels: Map<string, string[]> | undefined;
|
|
41
|
+
grants: AccessGrants;
|
|
42
|
+
adminOverride: boolean;
|
|
43
|
+
}
|
|
44
|
+
export declare function canSeeDoc({ doc, outputChannels, grants, adminOverride }: CanSeeArgs): boolean;
|
package/access-runner.js
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { exception2Result } from "@adviser/cement";
|
|
2
|
+
import { extractExportSource } from "./access-extract.js";
|
|
3
|
+
export function makeClientCtx(user, grants, adminMode) {
|
|
4
|
+
return {
|
|
5
|
+
requireAccess(channelId) {
|
|
6
|
+
if (adminMode)
|
|
7
|
+
return;
|
|
8
|
+
if (user === null)
|
|
9
|
+
throw { forbidden: "authentication required" };
|
|
10
|
+
if (!grants.channels.includes(channelId))
|
|
11
|
+
throw { forbidden: `not in channel: ${channelId}` };
|
|
12
|
+
},
|
|
13
|
+
requireRole(roleName) {
|
|
14
|
+
if (adminMode)
|
|
15
|
+
return;
|
|
16
|
+
if (user === null)
|
|
17
|
+
throw { forbidden: "authentication required" };
|
|
18
|
+
if (!grants.roles.includes(roleName))
|
|
19
|
+
throw { forbidden: `not in role: ${roleName}` };
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
function buildInvoker(extracted) {
|
|
24
|
+
const cleanSource = extracted.replace(/export\s+/g, "").replace(/^default\s+/, "");
|
|
25
|
+
const fnNameMatch = cleanSource.match(/^function\s+(\w+)\s*\(/);
|
|
26
|
+
const isAnonymousFnOrArrow = /^function\s*\(/.test(cleanSource) || /^\(/.test(cleanSource) || /^\w+\s*=>/.test(cleanSource);
|
|
27
|
+
const body = fnNameMatch
|
|
28
|
+
? `${cleanSource}\n; return ${fnNameMatch[1]}(doc, oldDoc, user, ctx);`
|
|
29
|
+
: isAnonymousFnOrArrow
|
|
30
|
+
? `const __accessFn = ${cleanSource}\n; return __accessFn(doc, oldDoc, user, ctx);`
|
|
31
|
+
: `return (function () { ${cleanSource} })();`;
|
|
32
|
+
return new Function("doc", "oldDoc", "user", "ctx", body);
|
|
33
|
+
}
|
|
34
|
+
function forbiddenReason(err) {
|
|
35
|
+
if (typeof err === "object" && err !== null && "forbidden" in err)
|
|
36
|
+
return String(err.forbidden);
|
|
37
|
+
if (typeof err === "string")
|
|
38
|
+
return err;
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
export function evaluateWrite(args) {
|
|
42
|
+
const { source, dbName, doc, oldDoc, user, grants, adminMode } = args;
|
|
43
|
+
const extracted = extractExportSource(source, dbName);
|
|
44
|
+
if (extracted === undefined)
|
|
45
|
+
return { unknown: true, reason: "access function not found" };
|
|
46
|
+
const rInvoker = exception2Result(() => buildInvoker(extracted));
|
|
47
|
+
if (rInvoker.isErr())
|
|
48
|
+
return { unknown: true, reason: "access function did not compile" };
|
|
49
|
+
const invoker = rInvoker.Ok();
|
|
50
|
+
const ctx = makeClientCtx(user, grants, adminMode);
|
|
51
|
+
let result;
|
|
52
|
+
try {
|
|
53
|
+
result = invoker(doc, oldDoc, user, ctx);
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
const reason = forbiddenReason(err);
|
|
57
|
+
if (reason === null)
|
|
58
|
+
return { unknown: true, reason: "access function threw a non-forbidden error" };
|
|
59
|
+
return { ok: false, reason, code: "access-denied" };
|
|
60
|
+
}
|
|
61
|
+
if (result !== null && result !== undefined && typeof result.then === "function") {
|
|
62
|
+
return { unknown: true, reason: "async access function" };
|
|
63
|
+
}
|
|
64
|
+
const descriptor = (result ?? {});
|
|
65
|
+
if (user === null && descriptor.allowAnonymous !== true) {
|
|
66
|
+
return { ok: false, reason: "authentication required", code: "access-denied" };
|
|
67
|
+
}
|
|
68
|
+
if (!(Array.isArray(descriptor.channels) && descriptor.channels.length > 0)) {
|
|
69
|
+
return { ok: false, reason: "unreadable write", code: "unreadable" };
|
|
70
|
+
}
|
|
71
|
+
return { ok: true };
|
|
72
|
+
}
|
|
73
|
+
export function canSeeDoc({ doc, outputChannels, grants, adminOverride }) {
|
|
74
|
+
if (adminOverride)
|
|
75
|
+
return true;
|
|
76
|
+
if (outputChannels === undefined || outputChannels.size === 0)
|
|
77
|
+
return true;
|
|
78
|
+
const channels = outputChannels.get(doc._id);
|
|
79
|
+
if (channels === undefined)
|
|
80
|
+
return false;
|
|
81
|
+
return channels.some((ch) => grants.channels.includes(ch) || grants.publicChannels.includes(ch));
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=access-runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"access-runner.js","sourceRoot":"","sources":["../jsr/access-runner.ts"],"names":[],"mappings":"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"}
|
package/index.d.ts
CHANGED
|
@@ -9,6 +9,9 @@ export * from "./img-gen.js";
|
|
|
9
9
|
export { resizeImageToBase64 } from "./resize-image.js";
|
|
10
10
|
export { useFireproof, fireproof, listDbNames, type DatabaseAccess } from "./use-firefly.js";
|
|
11
11
|
export { useViewer, type UseViewerResult } from "./use-viewer.js";
|
|
12
|
+
export { useGraceDegraded, armGrace, isGraceDegraded, subscribeGrace, setGraceMsForTest, __resetGraceForTest, } from "./use-vibe-grace.js";
|
|
12
13
|
export { FireflyDatabase, FireflyDatabase as Database, type DocTypes, type DocWithId, type DocResponse, type ListenerFn, type IndexRow, type QueryResponse, } from "./firefly-database.js";
|
|
13
14
|
export type { FireflyTransport } from "./firefly-database.js";
|
|
14
15
|
export type { ViewerTagProps } from "./use-viewer-tag.js";
|
|
16
|
+
export { evaluateWrite, canSeeDoc, makeClientCtx, type AccessUser, type AccessGrants, type AccessCtx, type WriteVerdict, type EvaluateWriteArgs, type CanSeeArgs, } from "./access-runner.js";
|
|
17
|
+
export { useVibe, type UseVibeResult, type CanVerdict, type UseVibeMe } from "./use-vibe.js";
|
package/index.js
CHANGED
|
@@ -9,5 +9,8 @@ export * from "./img-gen.js";
|
|
|
9
9
|
export { resizeImageToBase64 } from "./resize-image.js";
|
|
10
10
|
export { useFireproof, fireproof, listDbNames } from "./use-firefly.js";
|
|
11
11
|
export { useViewer } from "./use-viewer.js";
|
|
12
|
+
export { useGraceDegraded, armGrace, isGraceDegraded, subscribeGrace, setGraceMsForTest, __resetGraceForTest, } from "./use-vibe-grace.js";
|
|
12
13
|
export { FireflyDatabase, FireflyDatabase as Database, } from "./firefly-database.js";
|
|
14
|
+
export { evaluateWrite, canSeeDoc, makeClientCtx, } from "./access-runner.js";
|
|
15
|
+
export { useVibe } from "./use-vibe.js";
|
|
13
16
|
//# sourceMappingURL=index.js.map
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../jsr/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,kBAAkB,EAClB,YAAY,EACZ,iBAAiB,GAClB,MAAM,6BAA6B,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAuB,MAAM,kBAAkB,CAAC;AAC7F,OAAO,EAAE,SAAS,EAAwB,MAAM,iBAAiB,CAAC;AAClE,OAAO,EACL,eAAe,EACf,eAAe,IAAI,QAAQ,GAO5B,MAAM,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../jsr/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,kBAAkB,EAClB,YAAY,EACZ,iBAAiB,GAClB,MAAM,6BAA6B,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAuB,MAAM,kBAAkB,CAAC;AAC7F,OAAO,EAAE,SAAS,EAAwB,MAAM,iBAAiB,CAAC;AAClE,OAAO,EACL,gBAAgB,EAChB,QAAQ,EACR,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,eAAe,EACf,eAAe,IAAI,QAAQ,GAO5B,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,aAAa,EACb,SAAS,EACT,aAAa,GAOd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAuD,MAAM,eAAe,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vibes.diy/vibe-runtime",
|
|
3
|
-
"version": "2.5.
|
|
3
|
+
"version": "2.5.13",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
},
|
|
9
9
|
"dependencies": {
|
|
10
10
|
"@adviser/cement": "~0.5.34",
|
|
11
|
-
"@vibes.diy/base": "2.5.
|
|
12
|
-
"@vibes.diy/vibe-types": "2.5.
|
|
11
|
+
"@vibes.diy/base": "2.5.13",
|
|
12
|
+
"@vibes.diy/vibe-types": "2.5.13",
|
|
13
13
|
"arktype": "~2.2.1",
|
|
14
14
|
"charwise": "~3.0.1",
|
|
15
15
|
"react": "~19.2.7",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ResCallAI, ResImgGen, ResPutDoc, ResGetDoc, ResQueryDocs, ResDeleteDoc, ResSubscribeDocs, ResListDbNames, ResVibePutAsset, ResVibeWhoAmI, type ResVibeUpdateAvatarCid, type ResSetDbAcl, type DbAcl, type QueryFilter } from "@vibes.diy/vibe-types";
|
|
1
|
+
import { ResCallAI, ResImgGen, ResPutDoc, ResGetDoc, ResQueryDocs, ResDeleteDoc, ResSubscribeDocs, ResListDbNames, ResVibePutAsset, ResVibeWhoAmI, type ResVibeAccessFnSource, type ResVibeUpdateAvatarCid, type ResSetDbAcl, type DbAcl, type QueryFilter } from "@vibes.diy/vibe-types";
|
|
2
2
|
import { Future, Result } from "@adviser/cement";
|
|
3
3
|
import { CallAIOpts } from "./call-ai.js";
|
|
4
4
|
export interface VibeApp {
|
|
@@ -6,6 +6,10 @@ export interface VibeApp {
|
|
|
6
6
|
readonly ownerHandle: string;
|
|
7
7
|
readonly fsId: string;
|
|
8
8
|
readonly adminMode?: boolean;
|
|
9
|
+
readonly accessFnBindings?: readonly {
|
|
10
|
+
dbName: string;
|
|
11
|
+
accessFnCid: string;
|
|
12
|
+
}[];
|
|
9
13
|
}
|
|
10
14
|
export interface VibeSandboxApiOptions {
|
|
11
15
|
vibeApp: VibeApp;
|
|
@@ -38,14 +42,21 @@ export declare class VibeSandboxApi {
|
|
|
38
42
|
setDbAcl(dbName: string, acl: DbAcl): Promise<Result<ResSetDbAcl>>;
|
|
39
43
|
listDbNames(): Promise<Result<ResListDbNames>>;
|
|
40
44
|
whoAmI(): Promise<Result<ResVibeWhoAmI>>;
|
|
45
|
+
accessFnSource(cid: string): Promise<Result<ResVibeAccessFnSource>>;
|
|
41
46
|
putAsset(blob: Blob, mimeType?: string): Promise<Result<ResVibePutAsset>>;
|
|
42
47
|
requestLogin(): void;
|
|
43
48
|
updateAvatarCid(cid: string, handle: string, mimeType?: string): Promise<Result<ResVibeUpdateAvatarCid>>;
|
|
44
49
|
}
|
|
45
50
|
export declare function getRegisteredVibeApi(): VibeSandboxApi | undefined;
|
|
51
|
+
export declare function getRegisteredAccessFnSources(): Map<string, string | null>;
|
|
52
|
+
export declare function __resetRegisteredAccessFnSourcesForTests(): void;
|
|
46
53
|
export declare const vibeApi: (svc: VibeSandboxApiOptions) => VibeSandboxApi;
|
|
47
54
|
export declare function registerDependencies(vibeApp: VibeApp): Promise<void>;
|
|
48
55
|
export declare function beginNetworkActivity(): void;
|
|
49
56
|
export declare function endNetworkActivity(): void;
|
|
50
57
|
export declare function bootstrapViewer(api: VibeSandboxApi): Promise<void>;
|
|
58
|
+
export declare function bootstrapAccessFnSources(api: VibeSandboxApi, bindings: readonly {
|
|
59
|
+
dbName: string;
|
|
60
|
+
accessFnCid: string;
|
|
61
|
+
}[] | undefined): Promise<void>;
|
|
51
62
|
export {};
|
package/register-dependencies.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { isResCallAI, isResImgGen, isEvtVibeSetSource, isEvtRuntimeAck, isResPutDoc, isResGetDoc, isResGetDocNotFound, isResQueryDocs, isResDeleteDoc, isResSubscribeDocs, isResListDbNames, isResVibePutAsset, isResVibeWhoAmI, isResVibeUpdateAvatarCid, isResSetDbAcl, } from "@vibes.diy/vibe-types";
|
|
1
|
+
import { isResCallAI, isResImgGen, isEvtVibeSetSource, isEvtRuntimeAck, isResPutDoc, isResGetDoc, isResGetDocNotFound, isResQueryDocs, isResDeleteDoc, isResSubscribeDocs, isResListDbNames, isResVibePutAsset, isResVibeWhoAmI, isResVibeAccessFnSource, isResVibeUpdateAvatarCid, isResSetDbAcl, } from "@vibes.diy/vibe-types";
|
|
2
2
|
import { exception2Result, Future, Lazy, OnFunc, OnFuncReturn, Result, timeouted } from "@adviser/cement";
|
|
3
3
|
import { transform } from "sucrase";
|
|
4
4
|
import { registerCallAI } from "./call-ai.js";
|
|
@@ -177,6 +177,14 @@ export class VibeSandboxApi {
|
|
|
177
177
|
...(this.svc.vibeApp.adminMode ? { adminMode: true } : {}),
|
|
178
178
|
}, { wait: isResVibeWhoAmI, timeout: 10000 });
|
|
179
179
|
}
|
|
180
|
+
accessFnSource(cid) {
|
|
181
|
+
return this.request({
|
|
182
|
+
type: "vibe.req.accessFnSource",
|
|
183
|
+
appSlug: this.svc.vibeApp.appSlug,
|
|
184
|
+
ownerHandle: this.svc.vibeApp.ownerHandle,
|
|
185
|
+
cid,
|
|
186
|
+
}, { wait: isResVibeAccessFnSource, timeout: 10000 });
|
|
187
|
+
}
|
|
180
188
|
putAsset(blob, mimeType) {
|
|
181
189
|
return this.request({
|
|
182
190
|
type: "vibe.req.putAsset",
|
|
@@ -205,6 +213,13 @@ let _registeredApi;
|
|
|
205
213
|
export function getRegisteredVibeApi() {
|
|
206
214
|
return _registeredApi;
|
|
207
215
|
}
|
|
216
|
+
const _accessFnSources = new Map();
|
|
217
|
+
export function getRegisteredAccessFnSources() {
|
|
218
|
+
return new Map(_accessFnSources);
|
|
219
|
+
}
|
|
220
|
+
export function __resetRegisteredAccessFnSourcesForTests() {
|
|
221
|
+
_accessFnSources.clear();
|
|
222
|
+
}
|
|
208
223
|
export const vibeApi = Lazy((svc) => new VibeSandboxApi(svc));
|
|
209
224
|
export async function registerDependencies(vibeApp) {
|
|
210
225
|
const ctxVibeApi = vibeApi({
|
|
@@ -222,6 +237,9 @@ export async function registerDependencies(vibeApp) {
|
|
|
222
237
|
bootstrapViewer(ctxVibeApi).catch((e) => {
|
|
223
238
|
console.warn("[viewer] bootstrap whoAmI failed", e);
|
|
224
239
|
});
|
|
240
|
+
bootstrapAccessFnSources(ctxVibeApi, vibeApp.accessFnBindings).catch((e) => {
|
|
241
|
+
console.warn("[accessFn] bootstrap source fetch failed", e);
|
|
242
|
+
});
|
|
225
243
|
}
|
|
226
244
|
function sendRuntimeReadyWithRetry(api) {
|
|
227
245
|
const post = () => api.sendRuntimeReady(["use-fireproof", "call-ai", "img-gen"]);
|
|
@@ -303,9 +321,25 @@ export async function bootstrapViewer(api) {
|
|
|
303
321
|
...(r.isOwner !== undefined ? { isOwner: r.isOwner } : {}),
|
|
304
322
|
...(r.dbAcls ? { dbAcls: r.dbAcls } : {}),
|
|
305
323
|
...(r.grants ? { grants: r.grants } : {}),
|
|
324
|
+
...(r.adminMode !== undefined ? { adminMode: r.adminMode } : {}),
|
|
306
325
|
},
|
|
307
326
|
}));
|
|
308
327
|
}
|
|
328
|
+
export async function bootstrapAccessFnSources(api, bindings) {
|
|
329
|
+
if (bindings === undefined)
|
|
330
|
+
return;
|
|
331
|
+
const cids = [...new Set(bindings.map((b) => b.accessFnCid))];
|
|
332
|
+
await Promise.all(cids.map(async (cid) => {
|
|
333
|
+
const res = await api.accessFnSource(cid);
|
|
334
|
+
if (res.isErr())
|
|
335
|
+
return;
|
|
336
|
+
const r = res.Ok();
|
|
337
|
+
_accessFnSources.set(cid, r.source);
|
|
338
|
+
window.dispatchEvent(new MessageEvent("message", {
|
|
339
|
+
data: { type: "vibe.evt.accessFnSource", cid, source: r.source },
|
|
340
|
+
}));
|
|
341
|
+
}));
|
|
342
|
+
}
|
|
309
343
|
async function applyHotSwap(source) {
|
|
310
344
|
const rTransform = exception2Result(() => transform(source, {
|
|
311
345
|
transforms: ["jsx"],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-dependencies.js","sourceRoot":"","sources":["../jsr/register-dependencies.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"register-dependencies.js","sourceRoot":"","sources":["../jsr/register-dependencies.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare function isGraceDegraded(cid: string): boolean;
|
|
2
|
+
export declare function subscribeGrace(listener: () => void): () => void;
|
|
3
|
+
export declare function armGrace(cid: string): () => void;
|
|
4
|
+
export declare function useGraceDegraded(cid: string | undefined, pending: boolean): boolean;
|
|
5
|
+
export declare function setGraceMsForTest(ms: number): void;
|
|
6
|
+
export declare function __resetGraceForTest(): void;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { useEffect, useSyncExternalStore } from "react";
|
|
2
|
+
let GRACE_MS = 4000;
|
|
3
|
+
const degraded = new Set();
|
|
4
|
+
const timers = new Map();
|
|
5
|
+
const refcount = new Map();
|
|
6
|
+
const listeners = new Set();
|
|
7
|
+
function notify() {
|
|
8
|
+
for (const l of listeners)
|
|
9
|
+
l();
|
|
10
|
+
}
|
|
11
|
+
export function isGraceDegraded(cid) {
|
|
12
|
+
return degraded.has(cid);
|
|
13
|
+
}
|
|
14
|
+
export function subscribeGrace(listener) {
|
|
15
|
+
listeners.add(listener);
|
|
16
|
+
return () => listeners.delete(listener);
|
|
17
|
+
}
|
|
18
|
+
export function armGrace(cid) {
|
|
19
|
+
refcount.set(cid, (refcount.get(cid) ?? 0) + 1);
|
|
20
|
+
if (!degraded.has(cid) && !timers.has(cid)) {
|
|
21
|
+
timers.set(cid, setTimeout(() => {
|
|
22
|
+
timers.delete(cid);
|
|
23
|
+
degraded.add(cid);
|
|
24
|
+
notify();
|
|
25
|
+
}, GRACE_MS));
|
|
26
|
+
}
|
|
27
|
+
let released = false;
|
|
28
|
+
return () => {
|
|
29
|
+
if (released)
|
|
30
|
+
return;
|
|
31
|
+
released = true;
|
|
32
|
+
const n = (refcount.get(cid) ?? 1) - 1;
|
|
33
|
+
if (n > 0) {
|
|
34
|
+
refcount.set(cid, n);
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
refcount.delete(cid);
|
|
38
|
+
const t = timers.get(cid);
|
|
39
|
+
if (t !== undefined) {
|
|
40
|
+
clearTimeout(t);
|
|
41
|
+
timers.delete(cid);
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
export function useGraceDegraded(cid, pending) {
|
|
46
|
+
const flag = useSyncExternalStore(subscribeGrace, () => (cid !== undefined ? isGraceDegraded(cid) : false), () => false);
|
|
47
|
+
useEffect(() => {
|
|
48
|
+
if (cid === undefined || !pending)
|
|
49
|
+
return;
|
|
50
|
+
return armGrace(cid);
|
|
51
|
+
}, [cid, pending]);
|
|
52
|
+
return cid !== undefined ? flag : false;
|
|
53
|
+
}
|
|
54
|
+
export function setGraceMsForTest(ms) {
|
|
55
|
+
GRACE_MS = ms;
|
|
56
|
+
}
|
|
57
|
+
export function __resetGraceForTest() {
|
|
58
|
+
for (const t of timers.values())
|
|
59
|
+
clearTimeout(t);
|
|
60
|
+
degraded.clear();
|
|
61
|
+
timers.clear();
|
|
62
|
+
refcount.clear();
|
|
63
|
+
listeners.clear();
|
|
64
|
+
GRACE_MS = 4000;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=use-vibe-grace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-vibe-grace.js","sourceRoot":"","sources":["../jsr/use-vibe-grace.ts"],"names":[],"mappings":"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"}
|
package/use-vibe.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface CanVerdict {
|
|
2
|
+
readonly ok: boolean;
|
|
3
|
+
readonly reason?: string;
|
|
4
|
+
}
|
|
5
|
+
export interface UseVibeMe {
|
|
6
|
+
readonly userHandle: string;
|
|
7
|
+
readonly displayName?: string;
|
|
8
|
+
readonly isOwner: boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface UseVibeResult {
|
|
11
|
+
readonly me: UseVibeMe | null;
|
|
12
|
+
readonly ready: boolean;
|
|
13
|
+
readonly can: {
|
|
14
|
+
create(doc: unknown): CanVerdict;
|
|
15
|
+
edit(doc: unknown): CanVerdict;
|
|
16
|
+
delete(doc: unknown): CanVerdict;
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export declare function useVibe(dbName: string): UseVibeResult;
|
package/use-vibe.js
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { useMemo } from "react";
|
|
2
|
+
import { useVibeContext } from "./VibeContext.js";
|
|
3
|
+
import { evaluateWrite } from "./access-runner.js";
|
|
4
|
+
import { useGraceDegraded } from "./use-vibe-grace.js";
|
|
5
|
+
const EMPTY_GRANTS = { channels: [], publicChannels: [], roles: [] };
|
|
6
|
+
export function useVibe(dbName) {
|
|
7
|
+
const { mountParams, accessFnSources } = useVibeContext();
|
|
8
|
+
const env = mountParams.viewerEnv;
|
|
9
|
+
const identityReady = env !== undefined;
|
|
10
|
+
const bindings = mountParams.accessFnBindings;
|
|
11
|
+
const binding = bindings?.find((b) => b.dbName === dbName) ?? bindings?.find((b) => b.dbName === "*");
|
|
12
|
+
const cid = binding?.accessFnCid;
|
|
13
|
+
const bindingName = binding?.dbName ?? dbName;
|
|
14
|
+
const hasBinding = cid !== undefined;
|
|
15
|
+
const sourcePresent = hasBinding && accessFnSources.has(cid);
|
|
16
|
+
const pending = hasBinding && !sourcePresent;
|
|
17
|
+
const graceDegraded = useGraceDegraded(cid, pending);
|
|
18
|
+
const sourceReady = !hasBinding || sourcePresent || graceDegraded;
|
|
19
|
+
const ready = identityReady && sourceReady;
|
|
20
|
+
const source = hasBinding && sourcePresent ? accessFnSources.get(cid) : undefined;
|
|
21
|
+
const me = useMemo(() => (env?.viewer ? { ...env.viewer, isOwner: env.isOwner ?? false } : null), [env?.viewer, env?.isOwner]);
|
|
22
|
+
const grants = env?.grants?.[dbName] ?? EMPTY_GRANTS;
|
|
23
|
+
const adminMode = env?.adminMode ?? false;
|
|
24
|
+
const can = useMemo(() => {
|
|
25
|
+
const user = me;
|
|
26
|
+
function verdict(doc, oldDoc) {
|
|
27
|
+
if (!ready)
|
|
28
|
+
return { ok: false, reason: "pending" };
|
|
29
|
+
if (typeof source !== "string")
|
|
30
|
+
return { ok: true };
|
|
31
|
+
const v = evaluateWrite({ source, dbName: bindingName, doc, oldDoc, user, grants, adminMode });
|
|
32
|
+
if ("unknown" in v) {
|
|
33
|
+
if (typeof process !== "undefined" && process.env?.NODE_ENV !== "production") {
|
|
34
|
+
console.warn(`[useVibe] unknown verdict for "${dbName}": ${v.reason}`);
|
|
35
|
+
}
|
|
36
|
+
return { ok: true, reason: v.reason };
|
|
37
|
+
}
|
|
38
|
+
return v.ok ? { ok: true } : { ok: false, reason: v.reason };
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
create: (doc) => verdict(doc, null),
|
|
42
|
+
edit: (doc) => verdict(doc, doc),
|
|
43
|
+
delete: (doc) => verdict(doc, doc),
|
|
44
|
+
};
|
|
45
|
+
}, [ready, source, bindingName, me, grants, adminMode]);
|
|
46
|
+
return { me, ready, can };
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=use-vibe.js.map
|
package/use-vibe.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-vibe.js","sourceRoot":"","sources":["../jsr/use-vibe.ts"],"names":[],"mappings":"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"}
|
package/vibe.d.ts
CHANGED
|
@@ -20,6 +20,7 @@ export declare const viewerEnv: import("arktype/internal/variants/object.ts").Ob
|
|
|
20
20
|
roles: string[];
|
|
21
21
|
};
|
|
22
22
|
} | undefined;
|
|
23
|
+
adminMode?: boolean | undefined;
|
|
23
24
|
}, {}>;
|
|
24
25
|
export type ViewerEnv = typeof viewerEnv.infer;
|
|
25
26
|
export declare const vibeMountParams: import("arktype/internal/variants/object.ts").ObjectType<{
|
|
@@ -45,6 +46,11 @@ export declare const vibeMountParams: import("arktype/internal/variants/object.t
|
|
|
45
46
|
roles: string[];
|
|
46
47
|
};
|
|
47
48
|
} | undefined;
|
|
49
|
+
adminMode?: boolean | undefined;
|
|
48
50
|
} | undefined;
|
|
51
|
+
accessFnBindings?: {
|
|
52
|
+
dbName: string;
|
|
53
|
+
accessFnCid: string;
|
|
54
|
+
}[] | undefined;
|
|
49
55
|
}, {}>;
|
|
50
56
|
export type VibeMountParams = typeof vibeMountParams.infer;
|
package/vibe.js
CHANGED
|
@@ -7,9 +7,11 @@ export const viewerEnv = type({
|
|
|
7
7
|
"isOwner?": "boolean",
|
|
8
8
|
"dbAcls?": type({ "[string]": dbAcl }),
|
|
9
9
|
"grants?": type({ "[string]": type({ channels: "string[]", publicChannels: "string[]", roles: "string[]" }) }),
|
|
10
|
+
"adminMode?": "boolean",
|
|
10
11
|
});
|
|
11
12
|
export const vibeMountParams = type({
|
|
12
13
|
usrEnv: vibeEnv,
|
|
13
14
|
"viewerEnv?": viewerEnv,
|
|
15
|
+
"accessFnBindings?": type({ dbName: "string", accessFnCid: "string" }).array(),
|
|
14
16
|
});
|
|
15
17
|
//# sourceMappingURL=vibe.js.map
|
package/vibe.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vibe.js","sourceRoot":"","sources":["../jsr/vibe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAG7E,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;AAMhC,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,aAAa,CAAC,EAAE,CAAC,MAAM,CAAC;IAChC,MAAM,EAAE,cAAc;IACtB,UAAU,EAAE,SAAS;IACrB,SAAS,EAAE,IAAI,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IACtC,SAAS,EAAE,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"vibe.js","sourceRoot":"","sources":["../jsr/vibe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAG7E,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;AAMhC,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,aAAa,CAAC,EAAE,CAAC,MAAM,CAAC;IAChC,MAAM,EAAE,cAAc;IACtB,UAAU,EAAE,SAAS;IACrB,SAAS,EAAE,IAAI,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IACtC,SAAS,EAAE,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;IAC9G,YAAY,EAAE,SAAS;CACxB,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC;IAClC,MAAM,EAAE,OAAO;IACf,YAAY,EAAE,SAAS;IACvB,mBAAmB,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE;CAC/E,CAAC,CAAC"}
|