@vibes.diy/vibe-runtime 2.0.3 → 2.0.7
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/README.md +6 -0
- package/firefly-database.d.ts +66 -0
- package/firefly-database.js +260 -0
- package/firefly-database.js.map +1 -0
- package/img-vibes.d.ts +4 -0
- package/img-vibes.js +22 -0
- package/img-vibes.js.map +1 -0
- package/index.d.ts +3 -1
- package/index.js +3 -1
- package/index.js.map +1 -1
- package/package.json +5 -6
- package/register-dependencies.d.ts +7 -1
- package/register-dependencies.js +58 -91
- package/register-dependencies.js.map +1 -1
- package/resize-image.d.ts +1 -0
- package/resize-image.js +21 -0
- package/resize-image.js.map +1 -0
- package/use-firefly.d.ts +26 -0
- package/use-firefly.js +181 -0
- package/use-firefly.js.map +1 -0
- package/img-gen.d.ts +0 -2
- package/img-gen.js +0 -5
- package/img-gen.js.map +0 -1
package/README.md
CHANGED
|
@@ -19,6 +19,12 @@ Create beautiful, interactive mini apps with zero setup. Your creations are auto
|
|
|
19
19
|
- Install with `pnpm i`
|
|
20
20
|
- Run `pnpm dev`
|
|
21
21
|
|
|
22
|
+
## Community
|
|
23
|
+
|
|
24
|
+
We are committed to providing a welcoming and inclusive environment for all contributors. Please review our [Code of Conduct](CODE_OF_CONDUCT.md) before participating.
|
|
25
|
+
|
|
26
|
+
Interested in contributing? Check out our [Contributing Guide](CONTRIBUTING.md) to get started.
|
|
27
|
+
|
|
22
28
|
## Your Work is Always Safe
|
|
23
29
|
|
|
24
30
|
Every app you create is automatically saved, so you can:
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type { VibeSandboxApi } from "./register-dependencies.js";
|
|
2
|
+
export type DocTypes = Record<string, any>;
|
|
3
|
+
export type DocWithId<T extends DocTypes = DocTypes> = T & {
|
|
4
|
+
_id: string;
|
|
5
|
+
};
|
|
6
|
+
export interface DocResponse {
|
|
7
|
+
id: string;
|
|
8
|
+
ok: boolean;
|
|
9
|
+
}
|
|
10
|
+
export type ListenerFn<T extends DocTypes = DocTypes> = (changes: DocWithId<T>[]) => void;
|
|
11
|
+
export interface IndexRow<T extends DocTypes = DocTypes> {
|
|
12
|
+
key: string;
|
|
13
|
+
value: DocWithId<T>;
|
|
14
|
+
doc?: DocWithId<T>;
|
|
15
|
+
}
|
|
16
|
+
export interface QueryResponse<T extends DocTypes = DocTypes> {
|
|
17
|
+
rows: IndexRow<T>[];
|
|
18
|
+
docs: DocWithId<T>[];
|
|
19
|
+
}
|
|
20
|
+
export declare class FireflyDatabase {
|
|
21
|
+
readonly name: string;
|
|
22
|
+
readonly logger: any;
|
|
23
|
+
private readonly vibeApi;
|
|
24
|
+
private readonly vibeApp;
|
|
25
|
+
private readonly listeners;
|
|
26
|
+
private readonly updateListeners;
|
|
27
|
+
constructor(name: string, vibeApi: VibeSandboxApi);
|
|
28
|
+
ready(): Promise<void>;
|
|
29
|
+
close(): Promise<void>;
|
|
30
|
+
destroy(): Promise<void>;
|
|
31
|
+
compact(): Promise<void>;
|
|
32
|
+
get<T extends DocTypes>(id: string): Promise<DocWithId<T>>;
|
|
33
|
+
put<T extends DocTypes>(doc: T & {
|
|
34
|
+
_id?: string;
|
|
35
|
+
}): Promise<DocResponse>;
|
|
36
|
+
del(id: string): Promise<DocResponse>;
|
|
37
|
+
remove(id: string): Promise<DocResponse>;
|
|
38
|
+
bulk<T extends DocTypes>(docs: (T & {
|
|
39
|
+
_id?: string;
|
|
40
|
+
})[]): Promise<{
|
|
41
|
+
ids: string[];
|
|
42
|
+
}>;
|
|
43
|
+
query<T extends DocTypes>(mapFn: string | ((doc: DocWithId<T>, emit?: (key: unknown, value?: unknown) => void) => unknown), opts?: {
|
|
44
|
+
includeDocs?: boolean;
|
|
45
|
+
key?: any;
|
|
46
|
+
keys?: any[];
|
|
47
|
+
range?: [any, any];
|
|
48
|
+
prefix?: any;
|
|
49
|
+
descending?: boolean;
|
|
50
|
+
limit?: number;
|
|
51
|
+
}): Promise<QueryResponse<T>>;
|
|
52
|
+
allDocs<T extends DocTypes>(opts?: {
|
|
53
|
+
limit?: number;
|
|
54
|
+
offset?: number;
|
|
55
|
+
descending?: boolean;
|
|
56
|
+
}): Promise<{
|
|
57
|
+
rows: IndexRow<T>[];
|
|
58
|
+
docs: DocWithId<T>[];
|
|
59
|
+
}>;
|
|
60
|
+
changes<T extends DocTypes>(): Promise<{
|
|
61
|
+
rows: IndexRow<T>[];
|
|
62
|
+
docs: DocWithId<T>[];
|
|
63
|
+
}>;
|
|
64
|
+
subscribe<T extends DocTypes>(listener: ListenerFn<T>, updates?: boolean): () => void;
|
|
65
|
+
private notifyListeners;
|
|
66
|
+
}
|
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
import { isResPutDoc, isResGetDoc, isResQueryDocs, isResDeleteDoc, isEvtDocChanged } from "@vibes.diy/vibe-types";
|
|
2
|
+
import charwise from "charwise";
|
|
3
|
+
const fireflyLogger = {
|
|
4
|
+
Error() {
|
|
5
|
+
return {
|
|
6
|
+
Msg(msg) {
|
|
7
|
+
return {
|
|
8
|
+
AsError() {
|
|
9
|
+
return new Error(msg);
|
|
10
|
+
},
|
|
11
|
+
};
|
|
12
|
+
},
|
|
13
|
+
Str(_key, _val) {
|
|
14
|
+
return {
|
|
15
|
+
Msg(msg) {
|
|
16
|
+
return {
|
|
17
|
+
AsError() {
|
|
18
|
+
return new Error(msg);
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
export class FireflyDatabase {
|
|
28
|
+
name;
|
|
29
|
+
logger = fireflyLogger;
|
|
30
|
+
vibeApi;
|
|
31
|
+
vibeApp;
|
|
32
|
+
listeners = new Set();
|
|
33
|
+
updateListeners = new Set();
|
|
34
|
+
constructor(name, vibeApi) {
|
|
35
|
+
this.name = name;
|
|
36
|
+
this.vibeApi = vibeApi;
|
|
37
|
+
this.vibeApp = vibeApi.svc.vibeApp;
|
|
38
|
+
this.vibeApi.onMsg((event) => {
|
|
39
|
+
const { data } = event;
|
|
40
|
+
if (isEvtDocChanged(data) && data.appSlug === this.vibeApp.appSlug) {
|
|
41
|
+
this.notifyListeners([]);
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
async ready() {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
async close() {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
async destroy() {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
async compact() {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
async get(id) {
|
|
58
|
+
const rRes = await this.vibeApi.getDoc(id, this.name);
|
|
59
|
+
if (rRes.isErr()) {
|
|
60
|
+
throw new Error(`Failed to get document: ${rRes.Err()}`);
|
|
61
|
+
}
|
|
62
|
+
const res = rRes.Ok();
|
|
63
|
+
if (isResGetDoc(res)) {
|
|
64
|
+
return { ...res.doc, _id: res.id };
|
|
65
|
+
}
|
|
66
|
+
throw new Error(`Failed to get document: ${JSON.stringify(res)}`);
|
|
67
|
+
}
|
|
68
|
+
async put(doc) {
|
|
69
|
+
const rRes = await this.vibeApi.putDoc(doc, doc._id, this.name);
|
|
70
|
+
if (rRes.isErr()) {
|
|
71
|
+
throw new Error(`Failed to put document: ${rRes.Err()}`);
|
|
72
|
+
}
|
|
73
|
+
const res = rRes.Ok();
|
|
74
|
+
if (isResPutDoc(res)) {
|
|
75
|
+
const savedDoc = { ...doc, _id: res.id };
|
|
76
|
+
this.notifyListeners([savedDoc]);
|
|
77
|
+
return { id: res.id, ok: true };
|
|
78
|
+
}
|
|
79
|
+
throw new Error(`Failed to put document: ${JSON.stringify(res)}`);
|
|
80
|
+
}
|
|
81
|
+
async del(id) {
|
|
82
|
+
const rRes = await this.vibeApi.deleteDoc(id, this.name);
|
|
83
|
+
if (rRes.isErr()) {
|
|
84
|
+
throw new Error(`Failed to delete document: ${rRes.Err()}`);
|
|
85
|
+
}
|
|
86
|
+
const res = rRes.Ok();
|
|
87
|
+
if (isResDeleteDoc(res)) {
|
|
88
|
+
this.notifyListeners([{ _id: res.id, _deleted: true }]);
|
|
89
|
+
return { id: res.id, ok: true };
|
|
90
|
+
}
|
|
91
|
+
throw new Error(`Failed to delete document: ${JSON.stringify(res)}`);
|
|
92
|
+
}
|
|
93
|
+
async remove(id) {
|
|
94
|
+
return this.del(id);
|
|
95
|
+
}
|
|
96
|
+
async bulk(docs) {
|
|
97
|
+
const ids = [];
|
|
98
|
+
for (const doc of docs) {
|
|
99
|
+
const res = await this.put(doc);
|
|
100
|
+
ids.push(res.id);
|
|
101
|
+
}
|
|
102
|
+
return { ids };
|
|
103
|
+
}
|
|
104
|
+
async query(mapFn, opts = {}) {
|
|
105
|
+
const rRes = await this.vibeApi.queryDocs(this.name);
|
|
106
|
+
if (rRes.isErr()) {
|
|
107
|
+
throw new Error(`Failed to query documents: ${rRes.Err()}`);
|
|
108
|
+
}
|
|
109
|
+
const res = rRes.Ok();
|
|
110
|
+
if (!isResQueryDocs(res)) {
|
|
111
|
+
return { rows: [], docs: [] };
|
|
112
|
+
}
|
|
113
|
+
const allDocs = res.docs.map((d) => ({ ...d, _id: d._id }));
|
|
114
|
+
let encodedRows;
|
|
115
|
+
if (typeof mapFn === "string") {
|
|
116
|
+
encodedRows = allDocs
|
|
117
|
+
.filter((doc) => doc[mapFn] !== undefined)
|
|
118
|
+
.map((doc) => ({
|
|
119
|
+
encodedKey: charwise.encode(doc[mapFn]),
|
|
120
|
+
decodedKey: doc[mapFn],
|
|
121
|
+
value: doc,
|
|
122
|
+
doc: opts.includeDocs ? doc : undefined,
|
|
123
|
+
}));
|
|
124
|
+
}
|
|
125
|
+
else if (typeof mapFn === "function") {
|
|
126
|
+
encodedRows = [];
|
|
127
|
+
for (const doc of allDocs) {
|
|
128
|
+
try {
|
|
129
|
+
let emitCalled = false;
|
|
130
|
+
const emit = (key) => {
|
|
131
|
+
emitCalled = true;
|
|
132
|
+
if (typeof key === "undefined")
|
|
133
|
+
return;
|
|
134
|
+
encodedRows.push({
|
|
135
|
+
encodedKey: charwise.encode(key),
|
|
136
|
+
decodedKey: key,
|
|
137
|
+
value: doc,
|
|
138
|
+
doc: opts.includeDocs ? doc : undefined,
|
|
139
|
+
});
|
|
140
|
+
};
|
|
141
|
+
const mapReturn = mapFn.call({ emit }, doc, emit);
|
|
142
|
+
if (!emitCalled && typeof mapReturn !== "undefined") {
|
|
143
|
+
encodedRows.push({
|
|
144
|
+
encodedKey: charwise.encode(mapReturn),
|
|
145
|
+
decodedKey: mapReturn,
|
|
146
|
+
value: doc,
|
|
147
|
+
doc: opts.includeDocs ? doc : undefined,
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
catch {
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
encodedRows = allDocs.map((doc) => ({
|
|
157
|
+
encodedKey: charwise.encode(doc._id),
|
|
158
|
+
decodedKey: doc._id,
|
|
159
|
+
value: doc,
|
|
160
|
+
doc: opts.includeDocs ? doc : undefined,
|
|
161
|
+
}));
|
|
162
|
+
}
|
|
163
|
+
if (opts.key !== undefined) {
|
|
164
|
+
const encodedKey = charwise.encode(opts.key);
|
|
165
|
+
encodedRows = encodedRows.filter((r) => r.encodedKey === encodedKey);
|
|
166
|
+
}
|
|
167
|
+
if (opts.keys !== undefined) {
|
|
168
|
+
const encodedKeys = new Set(opts.keys.map((k) => charwise.encode(k)));
|
|
169
|
+
encodedRows = encodedRows.filter((r) => encodedKeys.has(r.encodedKey));
|
|
170
|
+
}
|
|
171
|
+
if (opts.range) {
|
|
172
|
+
const encodedStart = charwise.encode(opts.range[0]);
|
|
173
|
+
const encodedEnd = charwise.encode(opts.range[1]);
|
|
174
|
+
encodedRows = encodedRows.filter((r) => r.encodedKey >= encodedStart && r.encodedKey <= encodedEnd);
|
|
175
|
+
}
|
|
176
|
+
if (opts.prefix !== undefined) {
|
|
177
|
+
let encodedPrefix = charwise.encode(opts.prefix);
|
|
178
|
+
if (Array.isArray(opts.prefix) && encodedPrefix.endsWith("!")) {
|
|
179
|
+
encodedPrefix = encodedPrefix.slice(0, -1);
|
|
180
|
+
}
|
|
181
|
+
encodedRows = encodedRows.filter((r) => r.encodedKey.startsWith(encodedPrefix));
|
|
182
|
+
}
|
|
183
|
+
encodedRows.sort((a, b) => (a.encodedKey < b.encodedKey ? -1 : a.encodedKey > b.encodedKey ? 1 : 0));
|
|
184
|
+
if (opts.descending) {
|
|
185
|
+
encodedRows.reverse();
|
|
186
|
+
}
|
|
187
|
+
if (opts.limit !== undefined) {
|
|
188
|
+
encodedRows = encodedRows.slice(0, opts.limit);
|
|
189
|
+
}
|
|
190
|
+
const rows = encodedRows.map((r) => ({
|
|
191
|
+
key: r.decodedKey,
|
|
192
|
+
value: r.value,
|
|
193
|
+
doc: r.doc,
|
|
194
|
+
}));
|
|
195
|
+
return {
|
|
196
|
+
rows,
|
|
197
|
+
docs: rows.map((r) => r.value),
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
async allDocs(opts = {}) {
|
|
201
|
+
const rRes = await this.vibeApi.queryDocs(this.name);
|
|
202
|
+
if (rRes.isErr()) {
|
|
203
|
+
throw new Error(`Failed to query documents: ${rRes.Err()}`);
|
|
204
|
+
}
|
|
205
|
+
const res = rRes.Ok();
|
|
206
|
+
if (!isResQueryDocs(res)) {
|
|
207
|
+
return { rows: [], docs: [] };
|
|
208
|
+
}
|
|
209
|
+
let docs = res.docs.map((d) => ({ ...d, _id: d._id }));
|
|
210
|
+
docs.sort((a, b) => (a._id < b._id ? -1 : a._id > b._id ? 1 : 0));
|
|
211
|
+
if (opts.descending) {
|
|
212
|
+
docs.reverse();
|
|
213
|
+
}
|
|
214
|
+
if (opts.offset) {
|
|
215
|
+
docs = docs.slice(opts.offset);
|
|
216
|
+
}
|
|
217
|
+
if (opts.limit !== undefined) {
|
|
218
|
+
docs = docs.slice(0, opts.limit);
|
|
219
|
+
}
|
|
220
|
+
const rows = docs.map((doc) => ({
|
|
221
|
+
key: doc._id,
|
|
222
|
+
value: doc,
|
|
223
|
+
doc,
|
|
224
|
+
}));
|
|
225
|
+
return { rows, docs };
|
|
226
|
+
}
|
|
227
|
+
async changes() {
|
|
228
|
+
return { rows: [], docs: [] };
|
|
229
|
+
}
|
|
230
|
+
subscribe(listener, updates) {
|
|
231
|
+
const fn = listener;
|
|
232
|
+
if (updates) {
|
|
233
|
+
this.updateListeners.add(fn);
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
this.listeners.add(fn);
|
|
237
|
+
}
|
|
238
|
+
return () => {
|
|
239
|
+
this.listeners.delete(fn);
|
|
240
|
+
this.updateListeners.delete(fn);
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
notifyListeners(docs) {
|
|
244
|
+
for (const fn of this.listeners) {
|
|
245
|
+
try {
|
|
246
|
+
fn(docs);
|
|
247
|
+
}
|
|
248
|
+
catch {
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
for (const fn of this.updateListeners) {
|
|
252
|
+
try {
|
|
253
|
+
fn(docs);
|
|
254
|
+
}
|
|
255
|
+
catch {
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
//# sourceMappingURL=firefly-database.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"firefly-database.js","sourceRoot":"","sources":["../jsr/firefly-database.ts"],"names":[],"mappings":"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"}
|
package/img-vibes.d.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { VibeSandboxApi } from "./register-dependencies.js";
|
|
2
|
+
export { ImgVibes, useImgVibes } from "@vibes.diy/base";
|
|
3
|
+
export declare let imgVibes: (prompt: string, inputImage?: File) => Promise<string[]>;
|
|
4
|
+
export declare function registerImgVibes(vibeApi: VibeSandboxApi): void;
|
package/img-vibes.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { isResErrorImgVibes } from "@vibes.diy/vibe-types";
|
|
2
|
+
import { resizeImageToBase64 } from "./resize-image.js";
|
|
3
|
+
export { ImgVibes, useImgVibes } from "@vibes.diy/base";
|
|
4
|
+
export let imgVibes;
|
|
5
|
+
export function registerImgVibes(vibeApi) {
|
|
6
|
+
imgVibes = async (prompt, inputImage) => {
|
|
7
|
+
let inputImageBase64;
|
|
8
|
+
if (inputImage) {
|
|
9
|
+
inputImageBase64 = await resizeImageToBase64(inputImage);
|
|
10
|
+
}
|
|
11
|
+
const rResult = await vibeApi.imgVibes(prompt, inputImageBase64);
|
|
12
|
+
if (rResult.isErr()) {
|
|
13
|
+
throw rResult.Err();
|
|
14
|
+
}
|
|
15
|
+
const res = rResult.Ok();
|
|
16
|
+
if (isResErrorImgVibes(res)) {
|
|
17
|
+
throw new Error(res.message);
|
|
18
|
+
}
|
|
19
|
+
return res.imageUrls;
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=img-vibes.js.map
|
package/img-vibes.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"img-vibes.js","sourceRoot":"","sources":["../jsr/img-vibes.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAGxD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAExD,MAAM,CAAC,IAAI,QAAkE,CAAC;AAE9E,MAAM,UAAU,gBAAgB,CAAC,OAAuB;IACtD,QAAQ,GAAG,KAAK,EAAE,MAAc,EAAE,UAAiB,EAAqB,EAAE;QACxE,IAAI,gBAAoC,CAAC;QACzC,IAAI,UAAU,EAAE,CAAC;YACf,gBAAgB,GAAG,MAAM,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAC3D,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;QACjE,IAAI,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;YACpB,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC;QACtB,CAAC;QACD,MAAM,GAAG,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC;QACzB,IAAI,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;QACD,OAAO,GAAG,CAAC,SAAS,CAAC;IACvB,CAAC,CAAC;AACJ,CAAC"}
|
package/index.d.ts
CHANGED
|
@@ -2,4 +2,6 @@ export * from "./mount-vibes.js";
|
|
|
2
2
|
export * from "./register-dependencies.js";
|
|
3
3
|
export * from "./VibeContext.js";
|
|
4
4
|
export * from "./call-ai.js";
|
|
5
|
-
export * from "./img-
|
|
5
|
+
export * from "./img-vibes.js";
|
|
6
|
+
export { useFireproof, fireproof } from "./use-firefly.js";
|
|
7
|
+
export { FireflyDatabase, FireflyDatabase as Database, type DocTypes, type DocWithId, type DocResponse, type ListenerFn, type IndexRow, type QueryResponse, } from "./firefly-database.js";
|
package/index.js
CHANGED
|
@@ -2,5 +2,7 @@ export * from "./mount-vibes.js";
|
|
|
2
2
|
export * from "./register-dependencies.js";
|
|
3
3
|
export * from "./VibeContext.js";
|
|
4
4
|
export * from "./call-ai.js";
|
|
5
|
-
export * from "./img-
|
|
5
|
+
export * from "./img-vibes.js";
|
|
6
|
+
export { useFireproof, fireproof } from "./use-firefly.js";
|
|
7
|
+
export { FireflyDatabase, FireflyDatabase as Database, } from "./firefly-database.js";
|
|
6
8
|
//# 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,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../jsr/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EACL,eAAe,EACf,eAAe,IAAI,QAAQ,GAO5B,MAAM,uBAAuB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vibes.diy/vibe-runtime",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.7",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -8,13 +8,12 @@
|
|
|
8
8
|
},
|
|
9
9
|
"dependencies": {
|
|
10
10
|
"@adviser/cement": "~0.5.34",
|
|
11
|
-
"@
|
|
12
|
-
"@vibes.diy/
|
|
13
|
-
"@vibes.diy/vibe-types": "2.0.3",
|
|
11
|
+
"@vibes.diy/base": "2.0.7",
|
|
12
|
+
"@vibes.diy/vibe-types": "2.0.7",
|
|
14
13
|
"arktype": "~2.2.0",
|
|
14
|
+
"charwise": "~3.0.1",
|
|
15
15
|
"react": "~19.2.5",
|
|
16
|
-
"react-dom": "~19.2.5"
|
|
17
|
-
"use-fireproof": "~0.24.16"
|
|
16
|
+
"react-dom": "~19.2.5"
|
|
18
17
|
},
|
|
19
18
|
"repository": {
|
|
20
19
|
"type": "git",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ResCallAI, ReqFetchCloudToken, ReqVibeRegisterFPDb, ResFetchCloudToken, EvtVibeAttachStatusFPDb } from "@vibes.diy/vibe-types";
|
|
1
|
+
import { ResCallAI, ResImgVibes, ReqFetchCloudToken, ReqVibeRegisterFPDb, ResFetchCloudToken, EvtVibeAttachStatusFPDb, ResPutDoc, ResGetDoc, ResQueryDocs, ResDeleteDoc, ResSubscribeDocs } from "@vibes.diy/vibe-types";
|
|
2
2
|
import { KeyedResolvOnce, Result } from "@adviser/cement";
|
|
3
3
|
import { CallAIOpts } from "./call-ai.js";
|
|
4
4
|
export interface VibeApp {
|
|
@@ -22,6 +22,7 @@ export declare class VibeSandboxApi {
|
|
|
22
22
|
readonly onMsg: import("@adviser/cement").ReturnOnFunc<[event: MessageEvent<any>], unknown, unknown>;
|
|
23
23
|
constructor(svc: VibeSandboxApiOptions);
|
|
24
24
|
callAI(prompt: string, opts: CallAIOpts): Promise<Result<ResCallAI>>;
|
|
25
|
+
imgVibes(prompt: string, inputImageBase64?: string): Promise<Result<ResImgVibes>>;
|
|
25
26
|
sendRegisterFPDbMessage(req: Omit<ReqVibeRegisterFPDb, "type" | "tid">): Promise<Result<{
|
|
26
27
|
tid: string;
|
|
27
28
|
type: "vibe.res.register.fpdb";
|
|
@@ -39,6 +40,11 @@ export declare class VibeSandboxApi {
|
|
|
39
40
|
}, Error>>;
|
|
40
41
|
sendRuntimeReady(deps: string[]): void;
|
|
41
42
|
sendAttachStatusFPDbMessage(evt: Omit<EvtVibeAttachStatusFPDb, "type" | "tid">): void;
|
|
43
|
+
putDoc(doc: Record<string, unknown>, docId?: string, dbName?: string): Promise<Result<ResPutDoc>>;
|
|
44
|
+
getDoc(docId: string, dbName?: string): Promise<Result<ResGetDoc>>;
|
|
45
|
+
queryDocs(dbName?: string): Promise<Result<ResQueryDocs>>;
|
|
46
|
+
deleteDoc(docId: string, dbName?: string): Promise<Result<ResDeleteDoc>>;
|
|
47
|
+
subscribeDocs(dbName?: string): Promise<Result<ResSubscribeDocs>>;
|
|
42
48
|
readonly tokenCache: KeyedResolvOnce<unknown, string, object>;
|
|
43
49
|
fetchCloudToken(req: Omit<ReqFetchCloudToken, "type" | "tid">): Promise<Result<ResFetchCloudToken>>;
|
|
44
50
|
}
|
package/register-dependencies.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Future, KeyedResolvOnce, Lazy, OnFunc,
|
|
3
|
-
import { toCloud } from "use-fireproof";
|
|
1
|
+
import { isResFetchCloudToken, isResVibeRegisterFPDb, isResCallAI, isResImgVibes, ResFetchCloudToken, isResPutDoc, isResGetDoc, isResGetDocNotFound, isResQueryDocs, isResDeleteDoc, isResSubscribeDocs, } from "@vibes.diy/vibe-types";
|
|
2
|
+
import { Future, KeyedResolvOnce, Lazy, OnFunc, Result, timeouted } from "@adviser/cement";
|
|
4
3
|
import { type } from "arktype";
|
|
5
4
|
import { registerCallAI } from "./call-ai.js";
|
|
5
|
+
import { registerImgVibes } from "./img-vibes.js";
|
|
6
|
+
import { registerFirefly } from "./use-firefly.js";
|
|
6
7
|
export class VibeSandboxApi {
|
|
7
8
|
svc;
|
|
8
9
|
handleMessage = (event) => {
|
|
@@ -44,6 +45,14 @@ export class VibeSandboxApi {
|
|
|
44
45
|
schema: opts.schema,
|
|
45
46
|
}, { wait: isResCallAI, timeout: 60000 });
|
|
46
47
|
}
|
|
48
|
+
imgVibes(prompt, inputImageBase64) {
|
|
49
|
+
return this.request({
|
|
50
|
+
type: "vibe.req.imgVibes",
|
|
51
|
+
prompt,
|
|
52
|
+
...(inputImageBase64 ? { inputImageBase64 } : {}),
|
|
53
|
+
...this.svc.vibeApp,
|
|
54
|
+
}, { wait: isResImgVibes, timeout: 120000 });
|
|
55
|
+
}
|
|
47
56
|
sendRegisterFPDbMessage(req) {
|
|
48
57
|
return this.request({
|
|
49
58
|
type: "vibe.req.register.fpdb",
|
|
@@ -62,6 +71,45 @@ export class VibeSandboxApi {
|
|
|
62
71
|
...evt,
|
|
63
72
|
}, "*");
|
|
64
73
|
}
|
|
74
|
+
putDoc(doc, docId, dbName = "default") {
|
|
75
|
+
return this.request({
|
|
76
|
+
type: "vibes.diy.req-put-doc",
|
|
77
|
+
...this.svc.vibeApp,
|
|
78
|
+
dbName,
|
|
79
|
+
doc,
|
|
80
|
+
...(docId ? { docId } : {}),
|
|
81
|
+
}, { wait: isResPutDoc, timeout: 10000 });
|
|
82
|
+
}
|
|
83
|
+
getDoc(docId, dbName = "default") {
|
|
84
|
+
return this.request({
|
|
85
|
+
type: "vibes.diy.req-get-doc",
|
|
86
|
+
...this.svc.vibeApp,
|
|
87
|
+
dbName,
|
|
88
|
+
docId,
|
|
89
|
+
}, { wait: (x) => isResGetDoc(x) || isResGetDocNotFound(x), timeout: 10000 });
|
|
90
|
+
}
|
|
91
|
+
queryDocs(dbName = "default") {
|
|
92
|
+
return this.request({
|
|
93
|
+
type: "vibes.diy.req-query-docs",
|
|
94
|
+
...this.svc.vibeApp,
|
|
95
|
+
dbName,
|
|
96
|
+
}, { wait: isResQueryDocs, timeout: 10000 });
|
|
97
|
+
}
|
|
98
|
+
deleteDoc(docId, dbName = "default") {
|
|
99
|
+
return this.request({
|
|
100
|
+
type: "vibes.diy.req-delete-doc",
|
|
101
|
+
...this.svc.vibeApp,
|
|
102
|
+
dbName,
|
|
103
|
+
docId,
|
|
104
|
+
}, { wait: isResDeleteDoc, timeout: 10000 });
|
|
105
|
+
}
|
|
106
|
+
subscribeDocs(dbName = "default") {
|
|
107
|
+
return this.request({
|
|
108
|
+
type: "vibes.diy.req-subscribe-docs",
|
|
109
|
+
...this.svc.vibeApp,
|
|
110
|
+
dbName,
|
|
111
|
+
}, { wait: isResSubscribeDocs, timeout: 10000 });
|
|
112
|
+
}
|
|
65
113
|
tokenCache = new KeyedResolvOnce();
|
|
66
114
|
fetchCloudToken(req) {
|
|
67
115
|
const key = `vibe-${req.data.dbName}-${req.data.userSlug}-${req.data.appSlug}`;
|
|
@@ -87,41 +135,6 @@ export class VibeSandboxApi {
|
|
|
87
135
|
});
|
|
88
136
|
}
|
|
89
137
|
}
|
|
90
|
-
class VibeTokenStrategie {
|
|
91
|
-
vibeApi;
|
|
92
|
-
my;
|
|
93
|
-
constructor(vibeApi, my) {
|
|
94
|
-
this.vibeApi = vibeApi;
|
|
95
|
-
this.my = my;
|
|
96
|
-
}
|
|
97
|
-
hash() {
|
|
98
|
-
return "vibe-token-strategie";
|
|
99
|
-
}
|
|
100
|
-
open(_sthis, _logger, _deviceId, _opts) {
|
|
101
|
-
return;
|
|
102
|
-
}
|
|
103
|
-
tryToken(_sthis, _logger, _opts) {
|
|
104
|
-
return Promise.resolve(undefined);
|
|
105
|
-
}
|
|
106
|
-
async waitForToken(_sthis, _logger, _deviceId, _opts) {
|
|
107
|
-
const resToken = await this.vibeApi.fetchCloudToken({
|
|
108
|
-
data: this.my,
|
|
109
|
-
});
|
|
110
|
-
if (resToken.isErr()) {
|
|
111
|
-
console.error("Failed to fetch cloud token from vibe sandbox", resToken.Err());
|
|
112
|
-
return undefined;
|
|
113
|
-
}
|
|
114
|
-
const token = resToken.Ok();
|
|
115
|
-
return {
|
|
116
|
-
token: token.token.cloudToken,
|
|
117
|
-
claims: token.token.claims,
|
|
118
|
-
};
|
|
119
|
-
return Promise.resolve(undefined);
|
|
120
|
-
}
|
|
121
|
-
stop() {
|
|
122
|
-
console.log("VibeTokenStrategie stop called");
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
138
|
export const vibeApi = Lazy((svc) => new VibeSandboxApi(svc));
|
|
126
139
|
export async function registerDependencies(vibeApp, deps) {
|
|
127
140
|
const ctxVibeApi = vibeApi({
|
|
@@ -130,67 +143,21 @@ export async function registerDependencies(vibeApp, deps) {
|
|
|
130
143
|
postMessage: window.parent.postMessage.bind(window.parent),
|
|
131
144
|
});
|
|
132
145
|
const runTimeReady = [];
|
|
133
|
-
const useFireproofDep = deps["use-fireproof"];
|
|
146
|
+
const useFireproofDep = deps["use-fireproof"] || deps["@fireproof/use-fireproof"];
|
|
134
147
|
if (useFireproofDep && window.parent !== window) {
|
|
135
148
|
runTimeReady.push("use-fireproof");
|
|
136
|
-
|
|
137
|
-
const attachables = new Map();
|
|
138
|
-
ctxVibeApi.onMsg((event) => {
|
|
139
|
-
const { data: evt } = event;
|
|
140
|
-
if (isEvtAttachFPDb(evt)) {
|
|
141
|
-
const key = `${evt.data.dbName}-${evt.data.userSlug}-${evt.data.appSlug}`;
|
|
142
|
-
const attabable = attachables.get(key);
|
|
143
|
-
if (attabable) {
|
|
144
|
-
attabable.attach.once(async () => {
|
|
145
|
-
console.log("Attaching FPDb with key", evt.data);
|
|
146
|
-
const result = await attabable.ledger.attach(toCloud({
|
|
147
|
-
name: `vibe-${evt.data.dbName}-${evt.data.userSlug}-${evt.data.appSlug}`,
|
|
148
|
-
strategy: new VibeTokenStrategie(ctxVibeApi, evt.data),
|
|
149
|
-
urls: {
|
|
150
|
-
base: evt.data.fpcloudUrl,
|
|
151
|
-
},
|
|
152
|
-
}));
|
|
153
|
-
ctxVibeApi.sendAttachStatusFPDbMessage({
|
|
154
|
-
data: evt.data,
|
|
155
|
-
status: result.status(),
|
|
156
|
-
});
|
|
157
|
-
});
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
});
|
|
161
|
-
fp.getLedgerSvc().onCreate((ledger) => {
|
|
162
|
-
ctxVibeApi
|
|
163
|
-
.sendRegisterFPDbMessage({
|
|
164
|
-
dbName: ledger.name,
|
|
165
|
-
appSlug: vibeApp.appSlug,
|
|
166
|
-
userSlug: vibeApp.userSlug,
|
|
167
|
-
fsId: vibeApp.fsId,
|
|
168
|
-
})
|
|
169
|
-
.then((rResMsg) => {
|
|
170
|
-
if (rResMsg.isErr()) {
|
|
171
|
-
console.error("Failed to register FPDb with vibe sandbox", rResMsg.Err());
|
|
172
|
-
}
|
|
173
|
-
const res = rResMsg.Ok();
|
|
174
|
-
if (isResErrorVibeRegisterFPDb(res)) {
|
|
175
|
-
console.error("Failed to register FPDb with vibe sandbox", res.message);
|
|
176
|
-
}
|
|
177
|
-
if (isResOkVibeRegisterFPDb(res)) {
|
|
178
|
-
console.log("Registered FPDb with vibe sandbox", res);
|
|
179
|
-
const key = `${res.data.dbName}-${res.data.userSlug}-${res.data.appSlug}`;
|
|
180
|
-
attachables.set(key, {
|
|
181
|
-
key,
|
|
182
|
-
ledger,
|
|
183
|
-
attach: new ResolveOnce(),
|
|
184
|
-
});
|
|
185
|
-
}
|
|
186
|
-
});
|
|
187
|
-
});
|
|
149
|
+
await registerFirefly(ctxVibeApi);
|
|
188
150
|
}
|
|
189
151
|
const callAI = deps["call-ai"];
|
|
190
152
|
if (callAI && window.parent !== window) {
|
|
191
153
|
runTimeReady.push("call-ai");
|
|
192
154
|
registerCallAI(ctxVibeApi);
|
|
193
155
|
}
|
|
156
|
+
const imgVibes = deps["img-vibes"];
|
|
157
|
+
if (imgVibes && window.parent !== window) {
|
|
158
|
+
runTimeReady.push("img-vibes");
|
|
159
|
+
registerImgVibes(ctxVibeApi);
|
|
160
|
+
}
|
|
194
161
|
ctxVibeApi.sendRuntimeReady(runTimeReady);
|
|
195
162
|
return;
|
|
196
163
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-dependencies.js","sourceRoot":"","sources":["../jsr/register-dependencies.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"register-dependencies.js","sourceRoot":"","sources":["../jsr/register-dependencies.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function resizeImageToBase64(file: File, maxDim?: number, quality?: number): Promise<string>;
|
package/resize-image.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export async function resizeImageToBase64(file, maxDim = 1024, quality = 0.85) {
|
|
2
|
+
const bitmap = await createImageBitmap(file);
|
|
3
|
+
const { width, height } = bitmap;
|
|
4
|
+
const scale = Math.min(1, maxDim / Math.max(width, height));
|
|
5
|
+
const w = Math.round(width * scale);
|
|
6
|
+
const h = Math.round(height * scale);
|
|
7
|
+
const canvas = new OffscreenCanvas(w, h);
|
|
8
|
+
const ctx = canvas.getContext("2d");
|
|
9
|
+
if (!ctx)
|
|
10
|
+
throw new Error("Failed to get 2d context from OffscreenCanvas");
|
|
11
|
+
ctx.drawImage(bitmap, 0, 0, w, h);
|
|
12
|
+
bitmap.close();
|
|
13
|
+
const blob = await canvas.convertToBlob({ type: "image/jpeg", quality });
|
|
14
|
+
return new Promise((resolve, reject) => {
|
|
15
|
+
const reader = new FileReader();
|
|
16
|
+
reader.onload = () => resolve(reader.result);
|
|
17
|
+
reader.onerror = reject;
|
|
18
|
+
reader.readAsDataURL(blob);
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=resize-image.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resize-image.js","sourceRoot":"","sources":["../jsr/resize-image.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAAU,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,GAAG,IAAI;IACjF,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IACjC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5D,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;IACpC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;IAErC,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IAC3E,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAClC,MAAM,CAAC,KAAK,EAAE,CAAC;IAEf,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,CAAC;IACzE,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC7C,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAChC,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAgB,CAAC,CAAC;QACvD,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC;QACxB,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/use-firefly.d.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { FireflyDatabase } from "./firefly-database.js";
|
|
2
|
+
import type { VibeSandboxApi } from "./register-dependencies.js";
|
|
3
|
+
export declare function registerFirefly(api: VibeSandboxApi): Promise<void>;
|
|
4
|
+
export declare function fireproof(name: string): FireflyDatabase;
|
|
5
|
+
export declare function useFireproof(name?: string, _config?: any): {
|
|
6
|
+
database: FireflyDatabase;
|
|
7
|
+
useLiveQuery: (mapFn: any, query?: any, initialRows?: any[]) => {
|
|
8
|
+
docs: any[];
|
|
9
|
+
rows: any[];
|
|
10
|
+
};
|
|
11
|
+
useDocument: (initialDocOrFn?: any) => {
|
|
12
|
+
doc: {
|
|
13
|
+
[x: string]: unknown;
|
|
14
|
+
};
|
|
15
|
+
merge: (newDoc: Record<string, unknown>) => void;
|
|
16
|
+
replace: (newDoc: Record<string, unknown>) => void;
|
|
17
|
+
reset: () => void;
|
|
18
|
+
refresh: () => Promise<void>;
|
|
19
|
+
save: (existingDoc?: Record<string, unknown>) => Promise<import("./firefly-database.js").DocResponse>;
|
|
20
|
+
remove: (existingDoc?: Record<string, unknown>) => Promise<import("./firefly-database.js").DocResponse>;
|
|
21
|
+
submit: (e?: any) => Promise<void>;
|
|
22
|
+
};
|
|
23
|
+
useAllDocs: (query?: any) => any;
|
|
24
|
+
useChanges: (_since?: any[], opts?: any) => any;
|
|
25
|
+
attach: () => Promise<void>;
|
|
26
|
+
};
|
package/use-firefly.js
ADDED
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import { useCallback, useEffect, useMemo, useState, useRef } from "react";
|
|
2
|
+
import { FireflyDatabase } from "./firefly-database.js";
|
|
3
|
+
let vibeApiRef;
|
|
4
|
+
const dbCache = new Map();
|
|
5
|
+
function getOrCreateDb(name) {
|
|
6
|
+
let db = dbCache.get(name);
|
|
7
|
+
if (!db) {
|
|
8
|
+
if (!vibeApiRef) {
|
|
9
|
+
throw new Error("Firefly not initialized — registerFirefly() must be called before useFireproof()");
|
|
10
|
+
}
|
|
11
|
+
db = new FireflyDatabase(name, vibeApiRef);
|
|
12
|
+
dbCache.set(name, db);
|
|
13
|
+
}
|
|
14
|
+
return db;
|
|
15
|
+
}
|
|
16
|
+
export async function registerFirefly(api) {
|
|
17
|
+
vibeApiRef = api;
|
|
18
|
+
api.subscribeDocs().then((rRes) => {
|
|
19
|
+
if (rRes.isErr()) {
|
|
20
|
+
console.error("Failed to subscribe to docs:", rRes.Err());
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
export function fireproof(name) {
|
|
25
|
+
return getOrCreateDb(name);
|
|
26
|
+
}
|
|
27
|
+
export function useFireproof(name = "useFireproof", _config = {}) {
|
|
28
|
+
const database = useMemo(() => getOrCreateDb(name), [name]);
|
|
29
|
+
const useDocument = useMemo(() => createUseDocument(database), [database]);
|
|
30
|
+
const useLiveQuery = useMemo(() => createUseLiveQuery(database), [database]);
|
|
31
|
+
const useAllDocs = useMemo(() => createUseAllDocs(database), [database]);
|
|
32
|
+
const useChanges = useMemo(() => createUseChanges(database), [database]);
|
|
33
|
+
const attach = () => Promise.resolve();
|
|
34
|
+
return { database, useLiveQuery, useDocument, useAllDocs, useChanges, attach };
|
|
35
|
+
}
|
|
36
|
+
function createUseDocument(database) {
|
|
37
|
+
return function useDocument(initialDocOrFn) {
|
|
38
|
+
const updateHappenedRef = useRef(false);
|
|
39
|
+
let initialDoc;
|
|
40
|
+
if (typeof initialDocOrFn === "function") {
|
|
41
|
+
initialDoc = initialDocOrFn();
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
initialDoc = initialDocOrFn ?? {};
|
|
45
|
+
}
|
|
46
|
+
const originalInitialDoc = useMemo(() => structuredClone({ ...initialDoc }), []);
|
|
47
|
+
const [doc, setDoc] = useState(initialDoc);
|
|
48
|
+
const refresh = useCallback(async () => {
|
|
49
|
+
if (doc._id) {
|
|
50
|
+
try {
|
|
51
|
+
const gotDoc = await database.get(doc._id);
|
|
52
|
+
setDoc(gotDoc);
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
setDoc(initialDoc);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
setDoc(initialDoc);
|
|
60
|
+
}
|
|
61
|
+
}, [doc._id]);
|
|
62
|
+
const save = useCallback(async (existingDoc) => {
|
|
63
|
+
updateHappenedRef.current = false;
|
|
64
|
+
const toSave = existingDoc ?? doc;
|
|
65
|
+
const res = await database.put(toSave);
|
|
66
|
+
if (!updateHappenedRef.current && !doc._id && !existingDoc) {
|
|
67
|
+
setDoc((d) => ({ ...d, _id: res.id }));
|
|
68
|
+
}
|
|
69
|
+
return res;
|
|
70
|
+
}, [doc]);
|
|
71
|
+
const remove = useCallback(async (existingDoc) => {
|
|
72
|
+
const id = (existingDoc?._id ?? doc._id);
|
|
73
|
+
if (!id)
|
|
74
|
+
throw new Error("Document must have an _id to be removed");
|
|
75
|
+
const gotDoc = await database.get(id).catch(() => undefined);
|
|
76
|
+
if (!gotDoc)
|
|
77
|
+
throw new Error(`Document not found: ${id}`);
|
|
78
|
+
const res = await database.del(id);
|
|
79
|
+
setDoc(initialDoc);
|
|
80
|
+
return res;
|
|
81
|
+
}, [doc, initialDoc]);
|
|
82
|
+
const merge = useCallback((newDoc) => {
|
|
83
|
+
updateHappenedRef.current = true;
|
|
84
|
+
setDoc((prev) => ({ ...prev, ...newDoc }));
|
|
85
|
+
}, []);
|
|
86
|
+
const replace = useCallback((newDoc) => {
|
|
87
|
+
updateHappenedRef.current = true;
|
|
88
|
+
setDoc(newDoc);
|
|
89
|
+
}, []);
|
|
90
|
+
const reset = useCallback(() => {
|
|
91
|
+
updateHappenedRef.current = true;
|
|
92
|
+
setDoc({ ...originalInitialDoc });
|
|
93
|
+
}, [originalInitialDoc]);
|
|
94
|
+
const _updateDoc = useCallback((newDoc, opts = { replace: false, reset: false }) => {
|
|
95
|
+
if (!newDoc) {
|
|
96
|
+
return opts.reset ? reset() : refresh();
|
|
97
|
+
}
|
|
98
|
+
return opts.replace ? replace(newDoc) : merge(newDoc);
|
|
99
|
+
}, [refresh, reset, replace, merge]);
|
|
100
|
+
useEffect(() => {
|
|
101
|
+
if (!doc._id)
|
|
102
|
+
return;
|
|
103
|
+
return database.subscribe((changes) => {
|
|
104
|
+
if (updateHappenedRef.current)
|
|
105
|
+
return;
|
|
106
|
+
if (changes.find((c) => c._id === doc._id)) {
|
|
107
|
+
void refresh();
|
|
108
|
+
}
|
|
109
|
+
}, true);
|
|
110
|
+
}, [doc._id, refresh]);
|
|
111
|
+
useEffect(() => {
|
|
112
|
+
void refresh();
|
|
113
|
+
}, [refresh]);
|
|
114
|
+
const submit = useCallback(async (e) => {
|
|
115
|
+
if (e?.preventDefault)
|
|
116
|
+
e.preventDefault();
|
|
117
|
+
await save();
|
|
118
|
+
reset();
|
|
119
|
+
}, [save, reset]);
|
|
120
|
+
return { doc: { ...doc }, merge, replace, reset, refresh, save, remove, submit };
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
function createUseLiveQuery(database) {
|
|
124
|
+
return function useLiveQuery(mapFn, query = {}, initialRows = []) {
|
|
125
|
+
const [result, setResult] = useState({
|
|
126
|
+
docs: initialRows.map((r) => r.doc).filter((r) => !!r),
|
|
127
|
+
rows: initialRows,
|
|
128
|
+
});
|
|
129
|
+
const queryString = useMemo(() => JSON.stringify(query), [query]);
|
|
130
|
+
const mapFnString = useMemo(() => mapFn.toString(), [mapFn]);
|
|
131
|
+
const refreshRows = useCallback(async () => {
|
|
132
|
+
const res = await database.query(mapFn, { ...query, includeDocs: true });
|
|
133
|
+
setResult(res);
|
|
134
|
+
}, [database, mapFnString, queryString]);
|
|
135
|
+
useEffect(() => {
|
|
136
|
+
refreshRows();
|
|
137
|
+
const unsubscribe = database.subscribe(refreshRows);
|
|
138
|
+
return () => {
|
|
139
|
+
unsubscribe();
|
|
140
|
+
};
|
|
141
|
+
}, [database, refreshRows]);
|
|
142
|
+
return result;
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
function createUseAllDocs(database) {
|
|
146
|
+
return function useAllDocs(query = {}) {
|
|
147
|
+
const [result, setResult] = useState({ docs: [], rows: [] });
|
|
148
|
+
const queryString = useMemo(() => JSON.stringify(query), [query]);
|
|
149
|
+
const refreshRows = useCallback(async () => {
|
|
150
|
+
const res = await database.allDocs(query);
|
|
151
|
+
setResult({
|
|
152
|
+
...res,
|
|
153
|
+
docs: res.rows.map((r) => r.value),
|
|
154
|
+
});
|
|
155
|
+
}, [database, queryString]);
|
|
156
|
+
useEffect(() => {
|
|
157
|
+
refreshRows();
|
|
158
|
+
const unsubscribe = database.subscribe(refreshRows);
|
|
159
|
+
return () => {
|
|
160
|
+
unsubscribe();
|
|
161
|
+
};
|
|
162
|
+
}, [database, refreshRows]);
|
|
163
|
+
return result;
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
function createUseChanges(database) {
|
|
167
|
+
return function useChanges(_since = [], opts = {}) {
|
|
168
|
+
const [result, setResult] = useState({ docs: [], rows: [] });
|
|
169
|
+
const queryString = useMemo(() => JSON.stringify(opts), [opts]);
|
|
170
|
+
const refreshRows = useCallback(async () => {
|
|
171
|
+
const res = await database.changes();
|
|
172
|
+
setResult({ ...res, docs: res.rows.map((r) => r.value) });
|
|
173
|
+
}, [queryString]);
|
|
174
|
+
useEffect(() => {
|
|
175
|
+
refreshRows();
|
|
176
|
+
return database.subscribe(refreshRows);
|
|
177
|
+
}, [refreshRows]);
|
|
178
|
+
return result;
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
//# sourceMappingURL=use-firefly.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-firefly.js","sourceRoot":"","sources":["../jsr/use-firefly.ts"],"names":[],"mappings":"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"}
|
package/img-gen.d.ts
DELETED
package/img-gen.js
DELETED
package/img-gen.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"img-gen.js","sourceRoot":"","sources":["../jsr/img-gen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,UAAU,MAAM;IACpB,OAAO,0CAAiB,CAAC;AAC3B,CAAC"}
|