@ahmadmoussawi/webdb 0.1.4 → 0.2.1

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.
Files changed (55) hide show
  1. package/README.md +50 -6
  2. package/dist/angular.cjs +2 -0
  3. package/dist/angular.cjs.map +1 -0
  4. package/dist/angular.d.ts +92 -0
  5. package/dist/angular.js +108 -0
  6. package/dist/angular.js.map +1 -0
  7. package/dist/core/index.d.ts +6 -2
  8. package/dist/core/index.d.ts.map +1 -1
  9. package/dist/core/js/catalog.c.d.ts +88 -27
  10. package/dist/core/js/catalog.c.d.ts.map +1 -1
  11. package/dist/core/js/codecs.c.d.ts +8 -0
  12. package/dist/core/js/codecs.c.d.ts.map +1 -1
  13. package/dist/core/js/page.c.d.ts +32 -2
  14. package/dist/core/js/page.c.d.ts.map +1 -1
  15. package/dist/core/js/vm.c.d.ts +43 -0
  16. package/dist/core/js/vm.c.d.ts.map +1 -1
  17. package/dist/core/js/vm.helpers.c.d.ts +326 -72
  18. package/dist/core/js/vm.helpers.c.d.ts.map +1 -1
  19. package/dist/core/wasm/embedded_wasm.d.ts +1 -1
  20. package/dist/core/wasm/embedded_wasm.d.ts.map +1 -1
  21. package/dist/core/wasm/wasm_core.d.ts +7 -4
  22. package/dist/core/wasm/wasm_core.d.ts.map +1 -1
  23. package/dist/host/api/index.d.ts +1 -0
  24. package/dist/host/api/index.d.ts.map +1 -1
  25. package/dist/host/api/live_query.d.ts +84 -0
  26. package/dist/host/api/live_query.d.ts.map +1 -0
  27. package/dist/host/api/query_builder.d.ts +21 -0
  28. package/dist/host/api/query_builder.d.ts.map +1 -1
  29. package/dist/host/api/webdb.d.ts +8 -0
  30. package/dist/host/api/webdb.d.ts.map +1 -1
  31. package/dist/host/compiler/compiler.d.ts +1 -0
  32. package/dist/host/compiler/compiler.d.ts.map +1 -1
  33. package/dist/host/driver/buffer_pool_driver.d.ts +1 -0
  34. package/dist/host/driver/buffer_pool_driver.d.ts.map +1 -1
  35. package/dist/react.cjs +2 -0
  36. package/dist/react.cjs.map +1 -0
  37. package/dist/react.d.ts +52 -0
  38. package/dist/react.js +66 -0
  39. package/dist/react.js.map +1 -0
  40. package/dist/shared/c_runtime.d.ts +4 -0
  41. package/dist/shared/c_runtime.d.ts.map +1 -1
  42. package/dist/shared/vm_context.d.ts +11 -0
  43. package/dist/shared/vm_context.d.ts.map +1 -1
  44. package/dist/types/index.d.ts +4 -0
  45. package/dist/types/index.d.ts.map +1 -1
  46. package/dist/vue.cjs +2 -0
  47. package/dist/vue.cjs.map +1 -0
  48. package/dist/vue.d.ts +100 -0
  49. package/dist/vue.js +80 -0
  50. package/dist/vue.js.map +1 -0
  51. package/dist/webdb.js +11648 -9554
  52. package/dist/webdb.js.map +1 -1
  53. package/dist/webdb.umd.cjs +4 -4
  54. package/dist/webdb.umd.cjs.map +1 -1
  55. package/package.json +40 -3
@@ -1 +1 @@
1
- {"version":3,"file":"buffer_pool_driver.d.ts","sourceRoot":"","sources":["../../../src/host/driver/buffer_pool_driver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"buffer_pool_driver.d.ts","sourceRoot":"","sources":["../../../src/host/driver/buffer_pool_driver.ts"],"names":[],"mappings":"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"}
package/dist/react.cjs ADDED
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react"),W=require("@ahmadmoussawi/webdb"),o=e.createContext(null);function y({db:t,children:n}){return e.createElement(o.Provider,{value:t},n)}function x(){const t=e.useContext(o);if(!t)throw new Error("useWebDB() must be used within a <WebDBProvider db={...}> with an initialized WebDB instance.");return t}function C(){return e.useContext(o)}function b(t,n=[],r={}){const s=e.useContext(o),c=r.db??s,a=e.useRef(t);a.current=t;const l=e.useRef(r);l.current=r;const u=e.useRef(null),[d,f]=e.useState(()=>({data:r.initialData,isLoading:!0,error:null,lastUpdated:null,lastEvent:null}));e.useEffect(()=>{const i=W.createLiveQuery(()=>a.current(),{...l.current,db:c});u.current=i;const v=i.subscribe(B=>{f(B)});return()=>{v(),i.destroy(),u.current===i&&(u.current=null)}},[c,...n]);const D=e.useCallback(async()=>{if(u.current)return u.current.refresh()},[]);return{...d,refresh:D}}function L(t,n=[],r,s={}){const{data:c}=b(t,n,{...s,initialData:s.initialData??r});return c??r}exports.WebDBProvider=y;exports.useLiveQuery=b;exports.useLiveQueryData=L;exports.useOptionalWebDB=C;exports.useWebDB=x;
2
+ //# sourceMappingURL=react.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react.cjs","sources":["../src/react/index.ts"],"sourcesContent":["import {\n useState,\n useEffect,\n useCallback,\n useRef,\n createContext,\n useContext,\n createElement,\n type DependencyList,\n type ReactNode,\n} from 'react';\nimport {\n createLiveQuery,\n type WebDB,\n type DbRow,\n type LiveQueryFn,\n type LiveQueryOptions,\n type LiveQueryState,\n type LiveQueryController,\n} from '@ahmadmoussawi/webdb';\n\nexport interface UseLiveQueryResult<T> extends LiveQueryState<T> {\n /** Manually re-runs the live query */\n refresh: () => Promise<T | undefined>;\n}\n\nconst WebDBContext = createContext<WebDB | null>(null);\n\nexport interface WebDBProviderProps {\n db: WebDB | null;\n children?: ReactNode;\n}\n\n/**\n * Optional React Context Provider for sharing a WebDB instance across components.\n */\nexport function WebDBProvider({ db, children }: WebDBProviderProps) {\n return createElement(WebDBContext.Provider, { value: db }, children);\n}\n\n/**\n * Returns the WebDB instance from the nearest `<WebDBProvider>`.\n * Throws if used outside a `<WebDBProvider>` without an active instance.\n */\nexport function useWebDB(): WebDB {\n const db = useContext(WebDBContext);\n if (!db) {\n throw new Error(\n 'useWebDB() must be used within a <WebDBProvider db={...}> with an initialized WebDB instance.',\n );\n }\n return db;\n}\n\n/**\n * Returns the WebDB instance from the nearest `<WebDBProvider>`, or `null` if none is present.\n */\nexport function useOptionalWebDB(): WebDB | null {\n return useContext(WebDBContext);\n}\n\n/**\n * React hook that executes a WebDB query and automatically re-runs whenever any\n * referenced tables (including JOINs and subqueries) are modified locally or across tabs.\n *\n * @example\n * ```tsx\n * const { data: todos, isLoading, error } = useLiveQuery(\n * () => db.from('todos').where('completed', '=', 0).orderBy('id', 'desc'),\n * [filter],\n * { initialData: [] }\n * );\n * ```\n */\nexport function useLiveQuery<T = DbRow[]>(\n queryFn: LiveQueryFn<T>,\n deps: DependencyList = [],\n options: LiveQueryOptions<T> = {},\n): UseLiveQueryResult<T> {\n const contextDb = useContext(WebDBContext);\n const resolvedDb = options.db ?? contextDb;\n\n const queryFnRef = useRef<LiveQueryFn<T>>(queryFn);\n queryFnRef.current = queryFn;\n\n const optionsRef = useRef<LiveQueryOptions<T>>(options);\n optionsRef.current = options;\n\n const controllerRef = useRef<LiveQueryController<T> | null>(null);\n\n const [state, setState] = useState<LiveQueryState<T>>(() => ({\n data: options.initialData,\n isLoading: true,\n error: null,\n lastUpdated: null,\n lastEvent: null,\n }));\n\n useEffect(() => {\n const controller = createLiveQuery<T>(() => queryFnRef.current(), {\n ...optionsRef.current,\n db: resolvedDb,\n });\n controllerRef.current = controller;\n\n const unsubscribe = controller.subscribe((nextState) => {\n setState(nextState);\n });\n\n return () => {\n unsubscribe();\n controller.destroy();\n if (controllerRef.current === controller) {\n controllerRef.current = null;\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [resolvedDb, ...deps]);\n\n const refresh = useCallback(async (): Promise<T | undefined> => {\n if (controllerRef.current) {\n return controllerRef.current.refresh();\n }\n return undefined;\n }, []);\n\n return {\n ...state,\n refresh,\n };\n}\n\n/**\n * Concise React hook (similar to Dexie's `useLiveQuery`) that returns the live query\n * result directly (or `defaultValue` while loading).\n *\n * @example\n * ```tsx\n * const todos = useLiveQueryData(\n * () => db.from('todos').orderBy('id', 'desc'),\n * [],\n * []\n * );\n * ```\n */\nexport function useLiveQueryData<T = DbRow[]>(\n queryFn: LiveQueryFn<T>,\n deps: DependencyList = [],\n defaultValue?: T,\n options: LiveQueryOptions<T> = {},\n): T | undefined {\n const { data } = useLiveQuery<T>(queryFn, deps, {\n ...options,\n initialData: options.initialData ?? defaultValue,\n });\n return data ?? defaultValue;\n}\n\n"],"names":["WebDBContext","createContext","WebDBProvider","db","children","createElement","useWebDB","useContext","useOptionalWebDB","useLiveQuery","queryFn","deps","options","contextDb","resolvedDb","queryFnRef","useRef","optionsRef","controllerRef","state","setState","useState","useEffect","controller","createLiveQuery","unsubscribe","nextState","refresh","useCallback","useLiveQueryData","defaultValue","data"],"mappings":"2IA0BMA,EAAeC,EAAAA,cAA4B,IAAI,EAU9C,SAASC,EAAc,CAAE,GAAAC,EAAI,SAAAC,GAAgC,CAClE,OAAOC,EAAAA,cAAcL,EAAa,SAAU,CAAE,MAAOG,CAAA,EAAMC,CAAQ,CACrE,CAMO,SAASE,GAAkB,CAChC,MAAMH,EAAKI,EAAAA,WAAWP,CAAY,EAClC,GAAI,CAACG,EACH,MAAM,IAAI,MACR,+FAAA,EAGJ,OAAOA,CACT,CAKO,SAASK,GAAiC,CAC/C,OAAOD,EAAAA,WAAWP,CAAY,CAChC,CAeO,SAASS,EACdC,EACAC,EAAuB,CAAA,EACvBC,EAA+B,CAAA,EACR,CACvB,MAAMC,EAAYN,EAAAA,WAAWP,CAAY,EACnCc,EAAaF,EAAQ,IAAMC,EAE3BE,EAAaC,EAAAA,OAAuBN,CAAO,EACjDK,EAAW,QAAUL,EAErB,MAAMO,EAAaD,EAAAA,OAA4BJ,CAAO,EACtDK,EAAW,QAAUL,EAErB,MAAMM,EAAgBF,EAAAA,OAAsC,IAAI,EAE1D,CAACG,EAAOC,CAAQ,EAAIC,EAAAA,SAA4B,KAAO,CAC3D,KAAMT,EAAQ,YACd,UAAW,GACX,MAAO,KACP,YAAa,KACb,UAAW,IAAA,EACX,EAEFU,EAAAA,UAAU,IAAM,CACd,MAAMC,EAAaC,EAAAA,gBAAmB,IAAMT,EAAW,UAAW,CAChE,GAAGE,EAAW,QACd,GAAIH,CAAA,CACL,EACDI,EAAc,QAAUK,EAExB,MAAME,EAAcF,EAAW,UAAWG,GAAc,CACtDN,EAASM,CAAS,CACpB,CAAC,EAED,MAAO,IAAM,CACXD,EAAA,EACAF,EAAW,QAAA,EACPL,EAAc,UAAYK,IAC5BL,EAAc,QAAU,KAE5B,CAEF,EAAG,CAACJ,EAAY,GAAGH,CAAI,CAAC,EAExB,MAAMgB,EAAUC,EAAAA,YAAY,SAAoC,CAC9D,GAAIV,EAAc,QAChB,OAAOA,EAAc,QAAQ,QAAA,CAGjC,EAAG,CAAA,CAAE,EAEL,MAAO,CACL,GAAGC,EACH,QAAAQ,CAAA,CAEJ,CAeO,SAASE,EACdnB,EACAC,EAAuB,CAAA,EACvBmB,EACAlB,EAA+B,GAChB,CACf,KAAM,CAAE,KAAAmB,CAAA,EAAStB,EAAgBC,EAASC,EAAM,CAC9C,GAAGC,EACH,YAAaA,EAAQ,aAAekB,CAAA,CACrC,EACD,OAAOC,GAAQD,CACjB"}
@@ -0,0 +1,52 @@
1
+ import { DependencyList, ReactNode } from 'react';
2
+ import { WebDB, DbRow, LiveQueryFn, LiveQueryOptions, LiveQueryState } from '@ahmadmoussawi/webdb';
3
+ export interface UseLiveQueryResult<T> extends LiveQueryState<T> {
4
+ /** Manually re-runs the live query */
5
+ refresh: () => Promise<T | undefined>;
6
+ }
7
+ export interface WebDBProviderProps {
8
+ db: WebDB | null;
9
+ children?: ReactNode;
10
+ }
11
+ /**
12
+ * Optional React Context Provider for sharing a WebDB instance across components.
13
+ */
14
+ export declare function WebDBProvider({ db, children }: WebDBProviderProps): import('react').FunctionComponentElement<import('react').ProviderProps<WebDB | null>>;
15
+ /**
16
+ * Returns the WebDB instance from the nearest `<WebDBProvider>`.
17
+ * Throws if used outside a `<WebDBProvider>` without an active instance.
18
+ */
19
+ export declare function useWebDB(): WebDB;
20
+ /**
21
+ * Returns the WebDB instance from the nearest `<WebDBProvider>`, or `null` if none is present.
22
+ */
23
+ export declare function useOptionalWebDB(): WebDB | null;
24
+ /**
25
+ * React hook that executes a WebDB query and automatically re-runs whenever any
26
+ * referenced tables (including JOINs and subqueries) are modified locally or across tabs.
27
+ *
28
+ * @example
29
+ * ```tsx
30
+ * const { data: todos, isLoading, error } = useLiveQuery(
31
+ * () => db.from('todos').where('completed', '=', 0).orderBy('id', 'desc'),
32
+ * [filter],
33
+ * { initialData: [] }
34
+ * );
35
+ * ```
36
+ */
37
+ export declare function useLiveQuery<T = DbRow[]>(queryFn: LiveQueryFn<T>, deps?: DependencyList, options?: LiveQueryOptions<T>): UseLiveQueryResult<T>;
38
+ /**
39
+ * Concise React hook (similar to Dexie's `useLiveQuery`) that returns the live query
40
+ * result directly (or `defaultValue` while loading).
41
+ *
42
+ * @example
43
+ * ```tsx
44
+ * const todos = useLiveQueryData(
45
+ * () => db.from('todos').orderBy('id', 'desc'),
46
+ * [],
47
+ * []
48
+ * );
49
+ * ```
50
+ */
51
+ export declare function useLiveQueryData<T = DbRow[]>(queryFn: LiveQueryFn<T>, deps?: DependencyList, defaultValue?: T, options?: LiveQueryOptions<T>): T | undefined;
52
+ //# sourceMappingURL=index.d.ts.map
package/dist/react.js ADDED
@@ -0,0 +1,66 @@
1
+ import { createContext as W, createElement as m, useContext as a, useRef as o, useState as h, useEffect as x, useCallback as y } from "react";
2
+ import { createLiveQuery as w } from "@ahmadmoussawi/webdb";
3
+ const s = W(null);
4
+ function R({ db: e, children: r }) {
5
+ return m(s.Provider, { value: e }, r);
6
+ }
7
+ function P() {
8
+ const e = a(s);
9
+ if (!e)
10
+ throw new Error(
11
+ "useWebDB() must be used within a <WebDBProvider db={...}> with an initialized WebDB instance."
12
+ );
13
+ return e;
14
+ }
15
+ function Q() {
16
+ return a(s);
17
+ }
18
+ function C(e, r = [], t = {}) {
19
+ const u = a(s), c = t.db ?? u, l = o(e);
20
+ l.current = e;
21
+ const b = o(t);
22
+ b.current = t;
23
+ const n = o(null), [f, d] = h(() => ({
24
+ data: t.initialData,
25
+ isLoading: !0,
26
+ error: null,
27
+ lastUpdated: null,
28
+ lastEvent: null
29
+ }));
30
+ x(() => {
31
+ const i = w(() => l.current(), {
32
+ ...b.current,
33
+ db: c
34
+ });
35
+ n.current = i;
36
+ const v = i.subscribe((B) => {
37
+ d(B);
38
+ });
39
+ return () => {
40
+ v(), i.destroy(), n.current === i && (n.current = null);
41
+ };
42
+ }, [c, ...r]);
43
+ const D = y(async () => {
44
+ if (n.current)
45
+ return n.current.refresh();
46
+ }, []);
47
+ return {
48
+ ...f,
49
+ refresh: D
50
+ };
51
+ }
52
+ function p(e, r = [], t, u = {}) {
53
+ const { data: c } = C(e, r, {
54
+ ...u,
55
+ initialData: u.initialData ?? t
56
+ });
57
+ return c ?? t;
58
+ }
59
+ export {
60
+ R as WebDBProvider,
61
+ C as useLiveQuery,
62
+ p as useLiveQueryData,
63
+ Q as useOptionalWebDB,
64
+ P as useWebDB
65
+ };
66
+ //# sourceMappingURL=react.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react.js","sources":["../src/react/index.ts"],"sourcesContent":["import {\n useState,\n useEffect,\n useCallback,\n useRef,\n createContext,\n useContext,\n createElement,\n type DependencyList,\n type ReactNode,\n} from 'react';\nimport {\n createLiveQuery,\n type WebDB,\n type DbRow,\n type LiveQueryFn,\n type LiveQueryOptions,\n type LiveQueryState,\n type LiveQueryController,\n} from '@ahmadmoussawi/webdb';\n\nexport interface UseLiveQueryResult<T> extends LiveQueryState<T> {\n /** Manually re-runs the live query */\n refresh: () => Promise<T | undefined>;\n}\n\nconst WebDBContext = createContext<WebDB | null>(null);\n\nexport interface WebDBProviderProps {\n db: WebDB | null;\n children?: ReactNode;\n}\n\n/**\n * Optional React Context Provider for sharing a WebDB instance across components.\n */\nexport function WebDBProvider({ db, children }: WebDBProviderProps) {\n return createElement(WebDBContext.Provider, { value: db }, children);\n}\n\n/**\n * Returns the WebDB instance from the nearest `<WebDBProvider>`.\n * Throws if used outside a `<WebDBProvider>` without an active instance.\n */\nexport function useWebDB(): WebDB {\n const db = useContext(WebDBContext);\n if (!db) {\n throw new Error(\n 'useWebDB() must be used within a <WebDBProvider db={...}> with an initialized WebDB instance.',\n );\n }\n return db;\n}\n\n/**\n * Returns the WebDB instance from the nearest `<WebDBProvider>`, or `null` if none is present.\n */\nexport function useOptionalWebDB(): WebDB | null {\n return useContext(WebDBContext);\n}\n\n/**\n * React hook that executes a WebDB query and automatically re-runs whenever any\n * referenced tables (including JOINs and subqueries) are modified locally or across tabs.\n *\n * @example\n * ```tsx\n * const { data: todos, isLoading, error } = useLiveQuery(\n * () => db.from('todos').where('completed', '=', 0).orderBy('id', 'desc'),\n * [filter],\n * { initialData: [] }\n * );\n * ```\n */\nexport function useLiveQuery<T = DbRow[]>(\n queryFn: LiveQueryFn<T>,\n deps: DependencyList = [],\n options: LiveQueryOptions<T> = {},\n): UseLiveQueryResult<T> {\n const contextDb = useContext(WebDBContext);\n const resolvedDb = options.db ?? contextDb;\n\n const queryFnRef = useRef<LiveQueryFn<T>>(queryFn);\n queryFnRef.current = queryFn;\n\n const optionsRef = useRef<LiveQueryOptions<T>>(options);\n optionsRef.current = options;\n\n const controllerRef = useRef<LiveQueryController<T> | null>(null);\n\n const [state, setState] = useState<LiveQueryState<T>>(() => ({\n data: options.initialData,\n isLoading: true,\n error: null,\n lastUpdated: null,\n lastEvent: null,\n }));\n\n useEffect(() => {\n const controller = createLiveQuery<T>(() => queryFnRef.current(), {\n ...optionsRef.current,\n db: resolvedDb,\n });\n controllerRef.current = controller;\n\n const unsubscribe = controller.subscribe((nextState) => {\n setState(nextState);\n });\n\n return () => {\n unsubscribe();\n controller.destroy();\n if (controllerRef.current === controller) {\n controllerRef.current = null;\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [resolvedDb, ...deps]);\n\n const refresh = useCallback(async (): Promise<T | undefined> => {\n if (controllerRef.current) {\n return controllerRef.current.refresh();\n }\n return undefined;\n }, []);\n\n return {\n ...state,\n refresh,\n };\n}\n\n/**\n * Concise React hook (similar to Dexie's `useLiveQuery`) that returns the live query\n * result directly (or `defaultValue` while loading).\n *\n * @example\n * ```tsx\n * const todos = useLiveQueryData(\n * () => db.from('todos').orderBy('id', 'desc'),\n * [],\n * []\n * );\n * ```\n */\nexport function useLiveQueryData<T = DbRow[]>(\n queryFn: LiveQueryFn<T>,\n deps: DependencyList = [],\n defaultValue?: T,\n options: LiveQueryOptions<T> = {},\n): T | undefined {\n const { data } = useLiveQuery<T>(queryFn, deps, {\n ...options,\n initialData: options.initialData ?? defaultValue,\n });\n return data ?? defaultValue;\n}\n\n"],"names":["WebDBContext","createContext","WebDBProvider","db","children","createElement","useWebDB","useContext","useOptionalWebDB","useLiveQuery","queryFn","deps","options","contextDb","resolvedDb","queryFnRef","useRef","optionsRef","controllerRef","state","setState","useState","useEffect","controller","createLiveQuery","unsubscribe","nextState","refresh","useCallback","useLiveQueryData","defaultValue","data"],"mappings":";;AA0BA,MAAMA,IAAeC,EAA4B,IAAI;AAU9C,SAASC,EAAc,EAAE,IAAAC,GAAI,UAAAC,KAAgC;AAClE,SAAOC,EAAcL,EAAa,UAAU,EAAE,OAAOG,EAAA,GAAMC,CAAQ;AACrE;AAMO,SAASE,IAAkB;AAChC,QAAMH,IAAKI,EAAWP,CAAY;AAClC,MAAI,CAACG;AACH,UAAM,IAAI;AAAA,MACR;AAAA,IAAA;AAGJ,SAAOA;AACT;AAKO,SAASK,IAAiC;AAC/C,SAAOD,EAAWP,CAAY;AAChC;AAeO,SAASS,EACdC,GACAC,IAAuB,CAAA,GACvBC,IAA+B,CAAA,GACR;AACvB,QAAMC,IAAYN,EAAWP,CAAY,GACnCc,IAAaF,EAAQ,MAAMC,GAE3BE,IAAaC,EAAuBN,CAAO;AACjD,EAAAK,EAAW,UAAUL;AAErB,QAAMO,IAAaD,EAA4BJ,CAAO;AACtD,EAAAK,EAAW,UAAUL;AAErB,QAAMM,IAAgBF,EAAsC,IAAI,GAE1D,CAACG,GAAOC,CAAQ,IAAIC,EAA4B,OAAO;AAAA,IAC3D,MAAMT,EAAQ;AAAA,IACd,WAAW;AAAA,IACX,OAAO;AAAA,IACP,aAAa;AAAA,IACb,WAAW;AAAA,EAAA,EACX;AAEF,EAAAU,EAAU,MAAM;AACd,UAAMC,IAAaC,EAAmB,MAAMT,EAAW,WAAW;AAAA,MAChE,GAAGE,EAAW;AAAA,MACd,IAAIH;AAAA,IAAA,CACL;AACD,IAAAI,EAAc,UAAUK;AAExB,UAAME,IAAcF,EAAW,UAAU,CAACG,MAAc;AACtD,MAAAN,EAASM,CAAS;AAAA,IACpB,CAAC;AAED,WAAO,MAAM;AACX,MAAAD,EAAA,GACAF,EAAW,QAAA,GACPL,EAAc,YAAYK,MAC5BL,EAAc,UAAU;AAAA,IAE5B;AAAA,EAEF,GAAG,CAACJ,GAAY,GAAGH,CAAI,CAAC;AAExB,QAAMgB,IAAUC,EAAY,YAAoC;AAC9D,QAAIV,EAAc;AAChB,aAAOA,EAAc,QAAQ,QAAA;AAAA,EAGjC,GAAG,CAAA,CAAE;AAEL,SAAO;AAAA,IACL,GAAGC;AAAA,IACH,SAAAQ;AAAA,EAAA;AAEJ;AAeO,SAASE,EACdnB,GACAC,IAAuB,CAAA,GACvBmB,GACAlB,IAA+B,IAChB;AACf,QAAM,EAAE,MAAAmB,EAAA,IAAStB,EAAgBC,GAASC,GAAM;AAAA,IAC9C,GAAGC;AAAA,IACH,aAAaA,EAAQ,eAAekB;AAAA,EAAA,CACrC;AACD,SAAOC,KAAQD;AACjB;"}
@@ -40,6 +40,10 @@ export declare function read_u64(view: DataView, offset: number): bigint;
40
40
  export declare function write_u64(view: DataView, offset: number, val: bigint): void;
41
41
  export declare function read_i64(view: DataView, offset: number): bigint;
42
42
  export declare function write_i64(view: DataView, offset: number, val: bigint): void;
43
+ export declare function i64_to_f64(val: bigint): number;
44
+ export declare function i64_to_i32(val: bigint): number;
45
+ export declare function f64_to_i64(val: number): bigint;
46
+ export declare function f64_to_i32(val: number): number;
43
47
  export declare function get_bit(mask: Uint8Array, offset_or_bit: number, bit_idx?: number): number;
44
48
  export declare function set_bit(mask: Uint8Array, offset_or_bit: number, bit_idx?: number): void;
45
49
  export declare function clear_bit(mask: Uint8Array, offset_or_bit: number, bit_idx?: number): void;
@@ -1 +1 @@
1
- {"version":3,"file":"c_runtime.d.ts","sourceRoot":"","sources":["../../src/shared/c_runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"c_runtime.d.ts","sourceRoot":"","sources":["../../src/shared/c_runtime.ts"],"names":[],"mappings":"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"}
@@ -29,6 +29,13 @@ export interface VmSorter {
29
29
  isSorted: boolean;
30
30
  maxK?: number;
31
31
  }
32
+ export interface VmAggSlot {
33
+ count: number;
34
+ sum: number;
35
+ min_val: number;
36
+ max_val: number;
37
+ has_val: boolean;
38
+ }
32
39
  export interface VmAggBucket {
33
40
  hash: number;
34
41
  keys: any[];
@@ -37,6 +44,7 @@ export interface VmAggBucket {
37
44
  min_val: number;
38
45
  max_val: number;
39
46
  has_val: boolean;
47
+ slots?: VmAggSlot[];
40
48
  }
41
49
  export interface VmAggregator {
42
50
  mode: number;
@@ -46,6 +54,7 @@ export interface VmAggregator {
46
54
  occupiedCount: number;
47
55
  readIdx: number;
48
56
  buckets: VmAggBucket[];
57
+ currentBucket?: VmAggBucket | null;
49
58
  }
50
59
  export interface VmContext {
51
60
  pc: number;
@@ -67,6 +76,8 @@ export interface VmContext {
67
76
  outputColumns?: ColumnMeta[];
68
77
  udfs?: Record<number, (...args: any[]) => any>;
69
78
  inSets?: Set<any>[];
79
+ _resetId?: number;
80
+ _fastHostMode?: boolean;
70
81
  }
71
82
  export declare function createVmContext(): VmContext;
72
83
  export declare function resetVmContext(ctx: VmContext, table?: TableMeta, tables?: TableMeta[]): void;
@@ -1 +1 @@
1
- {"version":3,"file":"vm_context.d.ts","sourceRoot":"","sources":["../../src/shared/vm_context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vm_context.d.ts","sourceRoot":"","sources":["../../src/shared/vm_context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpE,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,cAAc,IAAI,QAAQ,CAUzC;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,UAAU,CAAC;CACtB;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,SAAS,CAAC;IACnB,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,aAAa,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,QAAQ,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC;IAC5D,MAAM,EAAE,QAAQ,CAAC;IACjB,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtB,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,WAAW,EAAE,YAAY,EAAE,CAAC;IAC5B,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IACxB,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,aAAa,CAAC,EAAE,UAAU,EAAE,CAAC;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC;IAC/C,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,wBAAgB,eAAe,IAAI,SAAS,CAuB3C;AAED,wBAAgB,cAAc,CAC5B,GAAG,EAAE,SAAS,EACd,KAAK,CAAC,EAAE,SAAS,EACjB,MAAM,CAAC,EAAE,SAAS,EAAE,GACnB,IAAI,CA+BN"}
@@ -143,6 +143,10 @@ export interface TableDescriptor {
143
143
  flags: number;
144
144
  rowCountEstimate: number;
145
145
  autoIncNext: bigint;
146
+ pkRootPageId?: number;
147
+ pkColumnCount?: number;
148
+ pkFlags?: number;
149
+ pkColumnIndices?: number[];
146
150
  }
147
151
  export interface IndexDescriptor {
148
152
  indexId: number;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,oBAAY,QAAQ;IAClB,IAAI,IAAI;IACR,KAAK,IAAI;IACT,KAAK,IAAI;IACT,OAAO,IAAI;IACX,IAAI,IAAI;IACR,IAAI,IAAI;IACR,IAAI,IAAI;IACR,IAAI,IAAI;CACT;AAED,oBAAY,UAAU;IACpB,IAAI,IAAI;IACR,WAAW,IAAO;IAClB,QAAQ,IAAO;IACf,OAAO,IAAO;IACd,QAAQ,IAAO;CAChB;AAED,oBAAY,SAAS;IACnB,IAAI,IAAI;IACR,MAAM,IAAO;IACb,MAAM,IAAO;CACd;AAED,oBAAY,SAAS;IACnB,IAAI,IAAI;IACR,MAAM,IAAO;IACb,OAAO,IAAO;IACd,cAAc,IAAO;CACtB;AAED,oBAAY,MAAM;IAEhB,OAAO,IAAO;IACd,cAAc,IAAO;IACrB,SAAS,IAAO;IAChB,WAAW,IAAO;IAClB,aAAa,IAAO;IACpB,eAAe,IAAO;IACtB,cAAc,IAAO;IACrB,cAAc,IAAO;IACrB,OAAO,IAAO;IACd,WAAW,IAAO;IAClB,cAAc,KAAO;IACrB,cAAc,KAAO;IACrB,aAAa,KAAO;IACpB,gBAAgB,KAAO;IACvB,gBAAgB,KAAO;IACvB,aAAa,KAAO;IAGpB,UAAU,KAAO;IACjB,cAAc,KAAO;IACrB,KAAK,KAAO;IACZ,KAAK,KAAO;IACZ,KAAK,KAAO;IACZ,KAAK,KAAO;IACZ,KAAK,KAAO;IACZ,KAAK,KAAO;IACZ,OAAO,KAAO;IACd,WAAW,KAAO;IAClB,eAAe,KAAO;IACtB,eAAe,KAAO;IACtB,kBAAkB,KAAO;IACzB,gBAAgB,KAAO;IACvB,YAAY,KAAO;IACnB,KAAK,KAAO;IAGZ,WAAW,KAAO;IAClB,aAAa,KAAO;IACpB,YAAY,KAAO;IACnB,YAAY,KAAO;IACnB,WAAW,KAAO;IAClB,aAAa,KAAO;IACpB,SAAS,KAAO;IAChB,QAAQ,KAAO;IACf,WAAW,KAAO;IAClB,YAAY,KAAO;IACnB,YAAY,KAAO;IACnB,aAAa,KAAO;IACpB,aAAa,KAAO;IACpB,WAAW,KAAO;IAClB,WAAW,KAAO;IAClB,aAAa,KAAO;IAGpB,cAAc,KAAO;IACrB,gBAAgB,KAAO;IACvB,cAAc,KAAO;IACrB,cAAc,KAAO;IAGrB,aAAa,KAAO;IACpB,YAAY,KAAO;IAGnB,MAAM,KAAO;IACb,MAAM,KAAO;IACb,MAAM,KAAO;IACb,MAAM,KAAO;IACb,MAAM,KAAO;IAGb,iBAAiB,KAAO;IACxB,kBAAkB,KAAO;IAGzB,aAAa,KAAO;IACpB,WAAW,KAAO;IAClB,OAAO,KAAO;IAGd,WAAW,KAAO;IAClB,WAAW,KAAO;IAClB,WAAW,KAAO;IAClB,YAAY,KAAO;IAGnB,cAAc,KAAO;IACrB,kBAAkB,KAAO;IAGzB,aAAa,KAAO;IACpB,eAAe,KAAO;IACtB,aAAa,KAAO;CACrB;AAED,oBAAY,QAAQ;IAClB,OAAO,IAAI;IACX,IAAI,IAAI;IACR,UAAU,IAAI;IACd,WAAW,IAAI;IACf,KAAK,IAAI;IACT,OAAO,IAAI;IACX,eAAe,IAAI;IACnB,gBAAgB,IAAI;CACrB;AAED,MAAM,MAAM,cAAc,GACtB,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GACjE,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAEtE,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,cAAc,GAAG,QAAQ,CAAC;IAChC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE;QACN,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AAExC,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAGD,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC;AAEzC,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC;AACnE,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAG5C,qBAAa,yBAA0B,SAAQ,KAAK;gBACtC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,MAAa;CAI/C;AAED,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;CAInD;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC5B;AAED,MAAM,WAAW,aAAc,SAAQ,kBAAkB;IACvD,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACnC,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAC;IACtC,KAAK,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,KAAK,OAAO,CAAC;CAC7D;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACnC,EAAE,EAAE,OAAO,GAAG,OAAO,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClD,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,SAAS,IAAI,cAAc,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,MAAM,WAAW,SAAS;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,MAAM,gBAAgB,GAAG,CAC7B,SAAS,EAAE,SAAS,EACpB,EAAE,EAAE,GAAG,KACJ,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAE1B,MAAM,MAAM,UAAU,GAAG,CAAC,SAAS,EAAE,SAAS,KAAK,IAAI,CAAC;AAExD,MAAM,MAAM,yBAAyB,GAAG,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;AAE1E,MAAM,MAAM,mBAAmB,GAC3B;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAClD;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,gBAAgB,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,GACvE;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3C,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,UAAU,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW;CAMnD;AAED,qBAAa,wBAAyB,SAAQ,KAAK;gBACrC,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;CAQnD;AAED,qBAAa,qBAAsB,SAAQ,KAAK;gBAClC,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;CAQnD;AAED,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,SAAS,EAAE,MAAM;CAI9B;AAED,qBAAa,uBAAwB,SAAQ,KAAK;gBACpC,SAAS,EAAE,MAAM;CAI9B;AAED,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,SAAS,EAAE,MAAM;CAI9B;AAED,qBAAa,uBAAwB,SAAQ,KAAK;gBACpC,SAAS,EAAE,MAAM;CAI9B;AAED,qBAAa,8BAA+B,SAAQ,KAAK;gBAC3C,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,gBAAiB,SAAQ,KAAK;IACtB,MAAM,EAAE,MAAM;IAAS,cAAc,EAAE,MAAM,GAAG,MAAM;IAAS,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM;gBAAjG,MAAM,EAAE,MAAM,EAAS,cAAc,EAAE,MAAM,GAAG,MAAM,EAAS,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,YAAA;CAQrH;AAED,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,WAAW,EAAE,MAAM,EAAE,KAAK,GAAE,MAAY;CAIrD;AAED,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,UAAU,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW;CAInD;AAED,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,UAAU,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU;CAIlD;AAED,qBAAa,6BAA8B,SAAQ,KAAK;gBAC1C,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,wBAAyB,SAAQ,KAAK;gBACrC,OAAO,GAAE,MAA0C;CAIhE;AAED,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,WAAW,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW;CAIpD;AAED,qBAAa,qBAAsB,SAAQ,KAAK;gBAClC,aAAa,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW;CAItD;AAED,qBAAa,2BAA4B,SAAQ,KAAK;gBACxC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU;CAI7C;AAED,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,OAAO,GAAE,MAAiE;CAIvF;AAED,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,OAAO,GAAE,MAAiE;CAIvF;AAED,qBAAa,0BAA2B,SAAQ,KAAK;gBACvC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU;CAI7C;AAED,qBAAa,0BAA2B,SAAQ,KAAK;gBACvC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU;CAI7C;AAED,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,QAAQ,EAAE,MAAM;CAI7B;AAED,qBAAa,+BAAgC,SAAQ,KAAK;gBAC5C,QAAQ,EAAE,MAAM;CAI7B;AAED,qBAAa,qBAAsB,SAAQ,KAAK;gBAClC,OAAO,GAAE,MAA6C;CAInE;AAED,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,OAAO,GAAE,MAAuC;CAI7D;AAED,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC"}
package/dist/vue.cjs ADDED
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("vue"),w=require("@ahmadmoussawi/webdb"),a=Symbol("WEBDB_INSTANCE");function L(e,n){return n&&typeof n.provide=="function"?n.provide(a,e):t.provide(a,e),e}function S(){const e=c();if(!e)throw new Error("useWebDB() found no provided WebDB instance. Call provideWebDB(db) in a parent component or on your Vue app.");return e}function c(){try{return t.inject(a,null)??null}catch{return null}}function _(e){return!(!e||typeof e!="object"||Array.isArray(e)||"__v_isRef"in e||"value"in e||"effect"in e)}function h(e,n,s){let o,r;_(n)?(r=n,o=r.watch):(o=n,r=s??{},!o&&r.watch&&(o=r.watch));const B=r.db?null:c(),W=r.db??B,d=t.shallowRef(r.initialData),f=t.ref(!0),b=t.shallowRef(null),v=t.ref(null),y=t.shallowRef(null),u=w.createLiveQuery(e,{...r,db:W}),E=u.subscribe(i=>{d.value=i.data,f.value=i.isLoading,b.value=i.error,v.value=i.lastUpdated,y.value=i.lastEvent});let l=null;o&&(l=t.watch(o,()=>{u.refresh()},{deep:r.deep}));let p=!1;const D=()=>{if(!p){if(p=!0,l){try{l()}catch{}l=null}E(),u.destroy()}};return t.getCurrentScope()&&t.onScopeDispose(D),{data:t.readonly(d),isLoading:t.readonly(f),error:t.readonly(b),lastUpdated:t.readonly(v),lastEvent:t.readonly(y),refresh:()=>u.refresh(),stop:D}}function g(e,n,s,o={}){const{data:r}=h(e,n,{...o,initialData:o.initialData??s});return r}exports.WEBDB_INJECTION_KEY=a;exports.provideWebDB=L;exports.useLiveQuery=h;exports.useLiveQueryData=g;exports.useOptionalWebDB=c;exports.useWebDB=S;
2
+ //# sourceMappingURL=vue.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vue.cjs","sources":["../src/vue/index.ts"],"sourcesContent":["/// <reference path=\"./peer-types.d.ts\" />\nimport {\n ref,\n shallowRef,\n readonly,\n watch,\n getCurrentScope,\n onScopeDispose,\n provide,\n inject,\n type Ref,\n type ShallowRef,\n type WatchSource,\n type InjectionKey,\n} from 'vue';\nimport {\n createLiveQuery,\n type WebDB,\n type DbRow,\n type TableChangeEvent,\n type LiveQueryFn,\n type LiveQueryOptions,\n} from '@ahmadmoussawi/webdb';\n\n/**\n * Vue InjectionKey for providing and injecting a WebDB instance across a Vue component tree.\n */\nexport const WEBDB_INJECTION_KEY: InjectionKey<WebDB> = Symbol('WEBDB_INSTANCE') as InjectionKey<WebDB>;\n\n/**\n * Provides a WebDB instance either inside a Vue component's `setup()` or on a Vue `App` instance.\n *\n * @example\n * ```ts\n * // In main.ts:\n * const app = createApp(App);\n * provideWebDB(db, app);\n *\n * // Or inside a root component <script setup>:\n * provideWebDB(db);\n * ```\n */\nexport function provideWebDB(\n db: WebDB,\n app?: { provide: (key: any, value: any) => any },\n): WebDB {\n if (app && typeof app.provide === 'function') {\n app.provide(WEBDB_INJECTION_KEY, db);\n } else {\n provide(WEBDB_INJECTION_KEY, db);\n }\n return db;\n}\n\n/**\n * Injects the nearest provided WebDB instance in a Vue component or composable.\n * Throws if no WebDB instance was provided via `provideWebDB(db)`.\n */\nexport function useWebDB(): WebDB {\n const db = useOptionalWebDB();\n if (!db) {\n throw new Error(\n 'useWebDB() found no provided WebDB instance. Call provideWebDB(db) in a parent component or on your Vue app.',\n );\n }\n return db;\n}\n\n/**\n * Injects the nearest provided WebDB instance, or returns `null` if none is provided.\n */\nexport function useOptionalWebDB(): WebDB | null {\n try {\n return inject(WEBDB_INJECTION_KEY, null as unknown as WebDB) ?? null;\n } catch {\n return null;\n }\n}\n\nexport interface VueLiveQueryOptions<T> extends LiveQueryOptions<T> {\n /**\n * Optional Vue reactive watch source(s) (`Ref`, `ComputedRef`, getter, or array of sources)\n * that should trigger a query re-execution when mutated.\n */\n watch?: WatchSource | WatchSource[];\n /**\n * Whether to enable deep watching on `watch` sources (default: false).\n */\n deep?: boolean;\n}\n\nexport interface UseVueLiveQueryReturn<T> {\n /** Reactive ref containing the latest query result (`initialData` or `undefined` while loading) */\n readonly data: Readonly<ShallowRef<T | undefined>>;\n /** Reactive ref indicating whether the initial query is currently loading */\n readonly isLoading: Readonly<Ref<boolean>>;\n /** Reactive ref containing the latest query error, or `null` */\n readonly error: Readonly<ShallowRef<Error | null>>;\n /** Reactive ref containing the timestamp of the last successful query execution */\n readonly lastUpdated: Readonly<Ref<number | null>>;\n /** Reactive ref containing the last table change event that triggered a refresh */\n readonly lastEvent: Readonly<ShallowRef<TableChangeEvent | null>>;\n /** Manually forces a re-execution of the query */\n refresh: () => Promise<T | undefined>;\n /** Stops all database and reactive watchers for this live query */\n stop: () => void;\n}\n\nfunction isLiveQueryOptionsObject<T>(\n val: unknown,\n): val is VueLiveQueryOptions<T> {\n if (!val || typeof val !== 'object' || Array.isArray(val)) return false;\n // Vue Ref / ComputedRef have `.value` or `__v_isRef`\n if ('__v_isRef' in val || 'value' in val || 'effect' in val) return false;\n return true;\n}\n\n/**\n * Vue 3 composable that executes a WebDB query and automatically updates reactive `Ref`s whenever:\n * 1. Any referenced WebDB tables (including JOINs & subqueries) are modified locally or across tabs, OR\n * 2. Any watched Vue `Ref` / `ComputedRef` / getter passed in `deps` or `options.watch` changes.\n *\n * Automatically cleans up subscriptions when the enclosing Vue component or `effectScope` is disposed.\n *\n * @example\n * ```vue\n * <script setup lang=\"ts\">\n * import { ref } from 'vue';\n * import { useLiveQuery } from '@ahmadmoussawi/webdb/vue';\n *\n * const filterStatus = ref('active');\n * const { data: todos, isLoading, error } = useLiveQuery(\n * () => db.from('todos').where('status', '=', filterStatus.value).orderBy('id', 'desc'),\n * [filterStatus],\n * { initialData: [] }\n * );\n * </script>\n * ```\n */\nexport function useLiveQuery<T = DbRow[]>(\n queryFn: LiveQueryFn<T>,\n depsOrOptions?: WatchSource | WatchSource[] | VueLiveQueryOptions<T>,\n maybeOptions?: VueLiveQueryOptions<T>,\n): UseVueLiveQueryReturn<T> {\n let watchSources: WatchSource | WatchSource[] | undefined;\n let options: VueLiveQueryOptions<T>;\n\n if (isLiveQueryOptionsObject<T>(depsOrOptions)) {\n options = depsOrOptions;\n watchSources = options.watch;\n } else {\n watchSources = depsOrOptions as WatchSource | WatchSource[] | undefined;\n options = maybeOptions ?? {};\n if (!watchSources && options.watch) {\n watchSources = options.watch;\n }\n }\n\n const injectedDb = options.db ? null : useOptionalWebDB();\n const resolvedDb = options.db ?? injectedDb;\n\n const data = shallowRef<T | undefined>(options.initialData);\n const isLoading = ref<boolean>(true);\n const error = shallowRef<Error | null>(null);\n const lastUpdated = ref<number | null>(null);\n const lastEvent = shallowRef<TableChangeEvent | null>(null);\n\n const controller = createLiveQuery<T>(queryFn, {\n ...options,\n db: resolvedDb,\n });\n\n const unsubController = controller.subscribe((state) => {\n data.value = state.data;\n isLoading.value = state.isLoading;\n error.value = state.error;\n lastUpdated.value = state.lastUpdated;\n lastEvent.value = state.lastEvent;\n });\n\n let stopWatch: (() => void) | null = null;\n if (watchSources) {\n stopWatch = watch(\n watchSources,\n () => {\n void controller.refresh();\n },\n { deep: options.deep },\n );\n }\n\n let isStopped = false;\n const stop = () => {\n if (isStopped) return;\n isStopped = true;\n if (stopWatch) {\n try {\n stopWatch();\n } catch {}\n stopWatch = null;\n }\n unsubController();\n controller.destroy();\n };\n\n if (getCurrentScope()) {\n onScopeDispose(stop);\n }\n\n return {\n data: readonly(data) as Readonly<ShallowRef<T | undefined>>,\n isLoading: readonly(isLoading) as Readonly<Ref<boolean>>,\n error: readonly(error) as Readonly<ShallowRef<Error | null>>,\n lastUpdated: readonly(lastUpdated) as Readonly<Ref<number | null>>,\n lastEvent: readonly(lastEvent) as Readonly<ShallowRef<TableChangeEvent | null>>,\n refresh: () => controller.refresh(),\n stop,\n };\n}\n\n/**\n * Concise Vue 3 composable that returns a single readonly `Ref<T | undefined>` containing\n * the live query result directly (or `defaultValue` while loading).\n *\n * @example\n * ```vue\n * <script setup lang=\"ts\">\n * import { useLiveQueryData } from '@ahmadmoussawi/webdb/vue';\n *\n * const todos = useLiveQueryData(\n * () => db.from('todos').orderBy('id', 'desc'),\n * [],\n * []\n * );\n * </script>\n * ```\n */\nexport function useLiveQueryData<T = DbRow[]>(\n queryFn: LiveQueryFn<T>,\n deps?: WatchSource | WatchSource[],\n defaultValue?: T,\n options: VueLiveQueryOptions<T> = {},\n): Readonly<ShallowRef<T | undefined>> {\n const { data } = useLiveQuery<T>(queryFn, deps, {\n ...options,\n initialData: options.initialData ?? defaultValue,\n });\n return data;\n}\n\n"],"names":["WEBDB_INJECTION_KEY","provideWebDB","db","app","provide","useWebDB","useOptionalWebDB","inject","isLiveQueryOptionsObject","val","useLiveQuery","queryFn","depsOrOptions","maybeOptions","watchSources","options","injectedDb","resolvedDb","data","shallowRef","isLoading","ref","error","lastUpdated","lastEvent","controller","createLiveQuery","unsubController","state","stopWatch","watch","isStopped","stop","getCurrentScope","onScopeDispose","readonly","useLiveQueryData","deps","defaultValue"],"mappings":"yIA2BaA,EAA2C,OAAO,gBAAgB,EAexE,SAASC,EACdC,EACAC,EACO,CACP,OAAIA,GAAO,OAAOA,EAAI,SAAY,WAChCA,EAAI,QAAQH,EAAqBE,CAAE,EAEnCE,EAAAA,QAAQJ,EAAqBE,CAAE,EAE1BA,CACT,CAMO,SAASG,GAAkB,CAChC,MAAMH,EAAKI,EAAA,EACX,GAAI,CAACJ,EACH,MAAM,IAAI,MACR,8GAAA,EAGJ,OAAOA,CACT,CAKO,SAASI,GAAiC,CAC/C,GAAI,CACF,OAAOC,SAAOP,EAAqB,IAAwB,GAAK,IAClE,MAAQ,CACN,OAAO,IACT,CACF,CA+BA,SAASQ,EACPC,EAC+B,CAG/B,MAFI,GAACA,GAAO,OAAOA,GAAQ,UAAY,MAAM,QAAQA,CAAG,GAEpD,cAAeA,GAAO,UAAWA,GAAO,WAAYA,EAE1D,CAwBO,SAASC,EACdC,EACAC,EACAC,EAC0B,CAC1B,IAAIC,EACAC,EAEAP,EAA4BI,CAAa,GAC3CG,EAAUH,EACVE,EAAeC,EAAQ,QAEvBD,EAAeF,EACfG,EAAUF,GAAgB,CAAA,EACtB,CAACC,GAAgBC,EAAQ,QAC3BD,EAAeC,EAAQ,QAI3B,MAAMC,EAAaD,EAAQ,GAAK,KAAOT,EAAA,EACjCW,EAAaF,EAAQ,IAAMC,EAE3BE,EAAOC,EAAAA,WAA0BJ,EAAQ,WAAW,EACpDK,EAAYC,EAAAA,IAAa,EAAI,EAC7BC,EAAQH,EAAAA,WAAyB,IAAI,EACrCI,EAAcF,EAAAA,IAAmB,IAAI,EACrCG,EAAYL,EAAAA,WAAoC,IAAI,EAEpDM,EAAaC,EAAAA,gBAAmBf,EAAS,CAC7C,GAAGI,EACH,GAAIE,CAAA,CACL,EAEKU,EAAkBF,EAAW,UAAWG,GAAU,CACtDV,EAAK,MAAQU,EAAM,KACnBR,EAAU,MAAQQ,EAAM,UACxBN,EAAM,MAAQM,EAAM,MACpBL,EAAY,MAAQK,EAAM,YAC1BJ,EAAU,MAAQI,EAAM,SAC1B,CAAC,EAED,IAAIC,EAAiC,KACjCf,IACFe,EAAYC,EAAAA,MACVhB,EACA,IAAM,CACCW,EAAW,QAAA,CAClB,EACA,CAAE,KAAMV,EAAQ,IAAA,CAAK,GAIzB,IAAIgB,EAAY,GAChB,MAAMC,EAAO,IAAM,CACjB,GAAI,CAAAD,EAEJ,IADAA,EAAY,GACRF,EAAW,CACb,GAAI,CACFA,EAAA,CACF,MAAQ,CAAC,CACTA,EAAY,IACd,CACAF,EAAA,EACAF,EAAW,QAAA,EACb,EAEA,OAAIQ,EAAAA,mBACFC,EAAAA,eAAeF,CAAI,EAGd,CACL,KAAMG,EAAAA,SAASjB,CAAI,EACnB,UAAWiB,EAAAA,SAASf,CAAS,EAC7B,MAAOe,EAAAA,SAASb,CAAK,EACrB,YAAaa,EAAAA,SAASZ,CAAW,EACjC,UAAWY,EAAAA,SAASX,CAAS,EAC7B,QAAS,IAAMC,EAAW,QAAA,EAC1B,KAAAO,CAAA,CAEJ,CAmBO,SAASI,EACdzB,EACA0B,EACAC,EACAvB,EAAkC,CAAA,EACG,CACrC,KAAM,CAAE,KAAAG,CAAA,EAASR,EAAgBC,EAAS0B,EAAM,CAC9C,GAAGtB,EACH,YAAaA,EAAQ,aAAeuB,CAAA,CACrC,EACD,OAAOpB,CACT"}
package/dist/vue.d.ts ADDED
@@ -0,0 +1,100 @@
1
+ import { Ref, ShallowRef, WatchSource, InjectionKey } from 'vue';
2
+ import { WebDB, DbRow, TableChangeEvent, LiveQueryFn, LiveQueryOptions } from '@ahmadmoussawi/webdb';
3
+ /**
4
+ * Vue InjectionKey for providing and injecting a WebDB instance across a Vue component tree.
5
+ */
6
+ export declare const WEBDB_INJECTION_KEY: InjectionKey<WebDB>;
7
+ /**
8
+ * Provides a WebDB instance either inside a Vue component's `setup()` or on a Vue `App` instance.
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * // In main.ts:
13
+ * const app = createApp(App);
14
+ * provideWebDB(db, app);
15
+ *
16
+ * // Or inside a root component <script setup>:
17
+ * provideWebDB(db);
18
+ * ```
19
+ */
20
+ export declare function provideWebDB(db: WebDB, app?: {
21
+ provide: (key: any, value: any) => any;
22
+ }): WebDB;
23
+ /**
24
+ * Injects the nearest provided WebDB instance in a Vue component or composable.
25
+ * Throws if no WebDB instance was provided via `provideWebDB(db)`.
26
+ */
27
+ export declare function useWebDB(): WebDB;
28
+ /**
29
+ * Injects the nearest provided WebDB instance, or returns `null` if none is provided.
30
+ */
31
+ export declare function useOptionalWebDB(): WebDB | null;
32
+ export interface VueLiveQueryOptions<T> extends LiveQueryOptions<T> {
33
+ /**
34
+ * Optional Vue reactive watch source(s) (`Ref`, `ComputedRef`, getter, or array of sources)
35
+ * that should trigger a query re-execution when mutated.
36
+ */
37
+ watch?: WatchSource | WatchSource[];
38
+ /**
39
+ * Whether to enable deep watching on `watch` sources (default: false).
40
+ */
41
+ deep?: boolean;
42
+ }
43
+ export interface UseVueLiveQueryReturn<T> {
44
+ /** Reactive ref containing the latest query result (`initialData` or `undefined` while loading) */
45
+ readonly data: Readonly<ShallowRef<T | undefined>>;
46
+ /** Reactive ref indicating whether the initial query is currently loading */
47
+ readonly isLoading: Readonly<Ref<boolean>>;
48
+ /** Reactive ref containing the latest query error, or `null` */
49
+ readonly error: Readonly<ShallowRef<Error | null>>;
50
+ /** Reactive ref containing the timestamp of the last successful query execution */
51
+ readonly lastUpdated: Readonly<Ref<number | null>>;
52
+ /** Reactive ref containing the last table change event that triggered a refresh */
53
+ readonly lastEvent: Readonly<ShallowRef<TableChangeEvent | null>>;
54
+ /** Manually forces a re-execution of the query */
55
+ refresh: () => Promise<T | undefined>;
56
+ /** Stops all database and reactive watchers for this live query */
57
+ stop: () => void;
58
+ }
59
+ /**
60
+ * Vue 3 composable that executes a WebDB query and automatically updates reactive `Ref`s whenever:
61
+ * 1. Any referenced WebDB tables (including JOINs & subqueries) are modified locally or across tabs, OR
62
+ * 2. Any watched Vue `Ref` / `ComputedRef` / getter passed in `deps` or `options.watch` changes.
63
+ *
64
+ * Automatically cleans up subscriptions when the enclosing Vue component or `effectScope` is disposed.
65
+ *
66
+ * @example
67
+ * ```vue
68
+ * <script setup lang="ts">
69
+ * import { ref } from 'vue';
70
+ * import { useLiveQuery } from '@ahmadmoussawi/webdb/vue';
71
+ *
72
+ * const filterStatus = ref('active');
73
+ * const { data: todos, isLoading, error } = useLiveQuery(
74
+ * () => db.from('todos').where('status', '=', filterStatus.value).orderBy('id', 'desc'),
75
+ * [filterStatus],
76
+ * { initialData: [] }
77
+ * );
78
+ * </script>
79
+ * ```
80
+ */
81
+ export declare function useLiveQuery<T = DbRow[]>(queryFn: LiveQueryFn<T>, depsOrOptions?: WatchSource | WatchSource[] | VueLiveQueryOptions<T>, maybeOptions?: VueLiveQueryOptions<T>): UseVueLiveQueryReturn<T>;
82
+ /**
83
+ * Concise Vue 3 composable that returns a single readonly `Ref<T | undefined>` containing
84
+ * the live query result directly (or `defaultValue` while loading).
85
+ *
86
+ * @example
87
+ * ```vue
88
+ * <script setup lang="ts">
89
+ * import { useLiveQueryData } from '@ahmadmoussawi/webdb/vue';
90
+ *
91
+ * const todos = useLiveQueryData(
92
+ * () => db.from('todos').orderBy('id', 'desc'),
93
+ * [],
94
+ * []
95
+ * );
96
+ * </script>
97
+ * ```
98
+ */
99
+ export declare function useLiveQueryData<T = DbRow[]>(queryFn: LiveQueryFn<T>, deps?: WatchSource | WatchSource[], defaultValue?: T, options?: VueLiveQueryOptions<T>): Readonly<ShallowRef<T | undefined>>;
100
+ //# sourceMappingURL=index.d.ts.map
package/dist/vue.js ADDED
@@ -0,0 +1,80 @@
1
+ import { provide as L, shallowRef as s, ref as h, watch as m, getCurrentScope as S, onScopeDispose as _, readonly as i, inject as C } from "vue";
2
+ import { createLiveQuery as g } from "@ahmadmoussawi/webdb";
3
+ const c = Symbol("WEBDB_INSTANCE");
4
+ function I(e, r) {
5
+ return r && typeof r.provide == "function" ? r.provide(c, e) : L(c, e), e;
6
+ }
7
+ function U() {
8
+ const e = B();
9
+ if (!e)
10
+ throw new Error(
11
+ "useWebDB() found no provided WebDB instance. Call provideWebDB(db) in a parent component or on your Vue app."
12
+ );
13
+ return e;
14
+ }
15
+ function B() {
16
+ try {
17
+ return C(c, null) ?? null;
18
+ } catch {
19
+ return null;
20
+ }
21
+ }
22
+ function j(e) {
23
+ return !(!e || typeof e != "object" || Array.isArray(e) || "__v_isRef" in e || "value" in e || "effect" in e);
24
+ }
25
+ function N(e, r, a) {
26
+ let n, t;
27
+ j(r) ? (t = r, n = t.watch) : (n = r, t = a ?? {}, !n && t.watch && (n = t.watch));
28
+ const E = t.db ? null : B(), W = t.db ?? E, f = s(t.initialData), d = h(!0), p = s(null), b = h(null), v = s(null), u = g(e, {
29
+ ...t,
30
+ db: W
31
+ }), w = u.subscribe((o) => {
32
+ f.value = o.data, d.value = o.isLoading, p.value = o.error, b.value = o.lastUpdated, v.value = o.lastEvent;
33
+ });
34
+ let l = null;
35
+ n && (l = m(
36
+ n,
37
+ () => {
38
+ u.refresh();
39
+ },
40
+ { deep: t.deep }
41
+ ));
42
+ let D = !1;
43
+ const y = () => {
44
+ if (!D) {
45
+ if (D = !0, l) {
46
+ try {
47
+ l();
48
+ } catch {
49
+ }
50
+ l = null;
51
+ }
52
+ w(), u.destroy();
53
+ }
54
+ };
55
+ return S() && _(y), {
56
+ data: i(f),
57
+ isLoading: i(d),
58
+ error: i(p),
59
+ lastUpdated: i(b),
60
+ lastEvent: i(v),
61
+ refresh: () => u.refresh(),
62
+ stop: y
63
+ };
64
+ }
65
+ function R(e, r, a, n = {}) {
66
+ const { data: t } = N(e, r, {
67
+ ...n,
68
+ initialData: n.initialData ?? a
69
+ });
70
+ return t;
71
+ }
72
+ export {
73
+ c as WEBDB_INJECTION_KEY,
74
+ I as provideWebDB,
75
+ N as useLiveQuery,
76
+ R as useLiveQueryData,
77
+ B as useOptionalWebDB,
78
+ U as useWebDB
79
+ };
80
+ //# sourceMappingURL=vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vue.js","sources":["../src/vue/index.ts"],"sourcesContent":["/// <reference path=\"./peer-types.d.ts\" />\nimport {\n ref,\n shallowRef,\n readonly,\n watch,\n getCurrentScope,\n onScopeDispose,\n provide,\n inject,\n type Ref,\n type ShallowRef,\n type WatchSource,\n type InjectionKey,\n} from 'vue';\nimport {\n createLiveQuery,\n type WebDB,\n type DbRow,\n type TableChangeEvent,\n type LiveQueryFn,\n type LiveQueryOptions,\n} from '@ahmadmoussawi/webdb';\n\n/**\n * Vue InjectionKey for providing and injecting a WebDB instance across a Vue component tree.\n */\nexport const WEBDB_INJECTION_KEY: InjectionKey<WebDB> = Symbol('WEBDB_INSTANCE') as InjectionKey<WebDB>;\n\n/**\n * Provides a WebDB instance either inside a Vue component's `setup()` or on a Vue `App` instance.\n *\n * @example\n * ```ts\n * // In main.ts:\n * const app = createApp(App);\n * provideWebDB(db, app);\n *\n * // Or inside a root component <script setup>:\n * provideWebDB(db);\n * ```\n */\nexport function provideWebDB(\n db: WebDB,\n app?: { provide: (key: any, value: any) => any },\n): WebDB {\n if (app && typeof app.provide === 'function') {\n app.provide(WEBDB_INJECTION_KEY, db);\n } else {\n provide(WEBDB_INJECTION_KEY, db);\n }\n return db;\n}\n\n/**\n * Injects the nearest provided WebDB instance in a Vue component or composable.\n * Throws if no WebDB instance was provided via `provideWebDB(db)`.\n */\nexport function useWebDB(): WebDB {\n const db = useOptionalWebDB();\n if (!db) {\n throw new Error(\n 'useWebDB() found no provided WebDB instance. Call provideWebDB(db) in a parent component or on your Vue app.',\n );\n }\n return db;\n}\n\n/**\n * Injects the nearest provided WebDB instance, or returns `null` if none is provided.\n */\nexport function useOptionalWebDB(): WebDB | null {\n try {\n return inject(WEBDB_INJECTION_KEY, null as unknown as WebDB) ?? null;\n } catch {\n return null;\n }\n}\n\nexport interface VueLiveQueryOptions<T> extends LiveQueryOptions<T> {\n /**\n * Optional Vue reactive watch source(s) (`Ref`, `ComputedRef`, getter, or array of sources)\n * that should trigger a query re-execution when mutated.\n */\n watch?: WatchSource | WatchSource[];\n /**\n * Whether to enable deep watching on `watch` sources (default: false).\n */\n deep?: boolean;\n}\n\nexport interface UseVueLiveQueryReturn<T> {\n /** Reactive ref containing the latest query result (`initialData` or `undefined` while loading) */\n readonly data: Readonly<ShallowRef<T | undefined>>;\n /** Reactive ref indicating whether the initial query is currently loading */\n readonly isLoading: Readonly<Ref<boolean>>;\n /** Reactive ref containing the latest query error, or `null` */\n readonly error: Readonly<ShallowRef<Error | null>>;\n /** Reactive ref containing the timestamp of the last successful query execution */\n readonly lastUpdated: Readonly<Ref<number | null>>;\n /** Reactive ref containing the last table change event that triggered a refresh */\n readonly lastEvent: Readonly<ShallowRef<TableChangeEvent | null>>;\n /** Manually forces a re-execution of the query */\n refresh: () => Promise<T | undefined>;\n /** Stops all database and reactive watchers for this live query */\n stop: () => void;\n}\n\nfunction isLiveQueryOptionsObject<T>(\n val: unknown,\n): val is VueLiveQueryOptions<T> {\n if (!val || typeof val !== 'object' || Array.isArray(val)) return false;\n // Vue Ref / ComputedRef have `.value` or `__v_isRef`\n if ('__v_isRef' in val || 'value' in val || 'effect' in val) return false;\n return true;\n}\n\n/**\n * Vue 3 composable that executes a WebDB query and automatically updates reactive `Ref`s whenever:\n * 1. Any referenced WebDB tables (including JOINs & subqueries) are modified locally or across tabs, OR\n * 2. Any watched Vue `Ref` / `ComputedRef` / getter passed in `deps` or `options.watch` changes.\n *\n * Automatically cleans up subscriptions when the enclosing Vue component or `effectScope` is disposed.\n *\n * @example\n * ```vue\n * <script setup lang=\"ts\">\n * import { ref } from 'vue';\n * import { useLiveQuery } from '@ahmadmoussawi/webdb/vue';\n *\n * const filterStatus = ref('active');\n * const { data: todos, isLoading, error } = useLiveQuery(\n * () => db.from('todos').where('status', '=', filterStatus.value).orderBy('id', 'desc'),\n * [filterStatus],\n * { initialData: [] }\n * );\n * </script>\n * ```\n */\nexport function useLiveQuery<T = DbRow[]>(\n queryFn: LiveQueryFn<T>,\n depsOrOptions?: WatchSource | WatchSource[] | VueLiveQueryOptions<T>,\n maybeOptions?: VueLiveQueryOptions<T>,\n): UseVueLiveQueryReturn<T> {\n let watchSources: WatchSource | WatchSource[] | undefined;\n let options: VueLiveQueryOptions<T>;\n\n if (isLiveQueryOptionsObject<T>(depsOrOptions)) {\n options = depsOrOptions;\n watchSources = options.watch;\n } else {\n watchSources = depsOrOptions as WatchSource | WatchSource[] | undefined;\n options = maybeOptions ?? {};\n if (!watchSources && options.watch) {\n watchSources = options.watch;\n }\n }\n\n const injectedDb = options.db ? null : useOptionalWebDB();\n const resolvedDb = options.db ?? injectedDb;\n\n const data = shallowRef<T | undefined>(options.initialData);\n const isLoading = ref<boolean>(true);\n const error = shallowRef<Error | null>(null);\n const lastUpdated = ref<number | null>(null);\n const lastEvent = shallowRef<TableChangeEvent | null>(null);\n\n const controller = createLiveQuery<T>(queryFn, {\n ...options,\n db: resolvedDb,\n });\n\n const unsubController = controller.subscribe((state) => {\n data.value = state.data;\n isLoading.value = state.isLoading;\n error.value = state.error;\n lastUpdated.value = state.lastUpdated;\n lastEvent.value = state.lastEvent;\n });\n\n let stopWatch: (() => void) | null = null;\n if (watchSources) {\n stopWatch = watch(\n watchSources,\n () => {\n void controller.refresh();\n },\n { deep: options.deep },\n );\n }\n\n let isStopped = false;\n const stop = () => {\n if (isStopped) return;\n isStopped = true;\n if (stopWatch) {\n try {\n stopWatch();\n } catch {}\n stopWatch = null;\n }\n unsubController();\n controller.destroy();\n };\n\n if (getCurrentScope()) {\n onScopeDispose(stop);\n }\n\n return {\n data: readonly(data) as Readonly<ShallowRef<T | undefined>>,\n isLoading: readonly(isLoading) as Readonly<Ref<boolean>>,\n error: readonly(error) as Readonly<ShallowRef<Error | null>>,\n lastUpdated: readonly(lastUpdated) as Readonly<Ref<number | null>>,\n lastEvent: readonly(lastEvent) as Readonly<ShallowRef<TableChangeEvent | null>>,\n refresh: () => controller.refresh(),\n stop,\n };\n}\n\n/**\n * Concise Vue 3 composable that returns a single readonly `Ref<T | undefined>` containing\n * the live query result directly (or `defaultValue` while loading).\n *\n * @example\n * ```vue\n * <script setup lang=\"ts\">\n * import { useLiveQueryData } from '@ahmadmoussawi/webdb/vue';\n *\n * const todos = useLiveQueryData(\n * () => db.from('todos').orderBy('id', 'desc'),\n * [],\n * []\n * );\n * </script>\n * ```\n */\nexport function useLiveQueryData<T = DbRow[]>(\n queryFn: LiveQueryFn<T>,\n deps?: WatchSource | WatchSource[],\n defaultValue?: T,\n options: VueLiveQueryOptions<T> = {},\n): Readonly<ShallowRef<T | undefined>> {\n const { data } = useLiveQuery<T>(queryFn, deps, {\n ...options,\n initialData: options.initialData ?? defaultValue,\n });\n return data;\n}\n\n"],"names":["WEBDB_INJECTION_KEY","provideWebDB","db","app","provide","useWebDB","useOptionalWebDB","inject","isLiveQueryOptionsObject","val","useLiveQuery","queryFn","depsOrOptions","maybeOptions","watchSources","options","injectedDb","resolvedDb","data","shallowRef","isLoading","ref","error","lastUpdated","lastEvent","controller","createLiveQuery","unsubController","state","stopWatch","watch","isStopped","stop","getCurrentScope","onScopeDispose","readonly","useLiveQueryData","deps","defaultValue"],"mappings":";;AA2BO,MAAMA,IAA2C,OAAO,gBAAgB;AAexE,SAASC,EACdC,GACAC,GACO;AACP,SAAIA,KAAO,OAAOA,EAAI,WAAY,aAChCA,EAAI,QAAQH,GAAqBE,CAAE,IAEnCE,EAAQJ,GAAqBE,CAAE,GAE1BA;AACT;AAMO,SAASG,IAAkB;AAChC,QAAMH,IAAKI,EAAA;AACX,MAAI,CAACJ;AACH,UAAM,IAAI;AAAA,MACR;AAAA,IAAA;AAGJ,SAAOA;AACT;AAKO,SAASI,IAAiC;AAC/C,MAAI;AACF,WAAOC,EAAOP,GAAqB,IAAwB,KAAK;AAAA,EAClE,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AA+BA,SAASQ,EACPC,GAC+B;AAG/B,SAFI,GAACA,KAAO,OAAOA,KAAQ,YAAY,MAAM,QAAQA,CAAG,KAEpD,eAAeA,KAAO,WAAWA,KAAO,YAAYA;AAE1D;AAwBO,SAASC,EACdC,GACAC,GACAC,GAC0B;AAC1B,MAAIC,GACAC;AAEJ,EAAIP,EAA4BI,CAAa,KAC3CG,IAAUH,GACVE,IAAeC,EAAQ,UAEvBD,IAAeF,GACfG,IAAUF,KAAgB,CAAA,GACtB,CAACC,KAAgBC,EAAQ,UAC3BD,IAAeC,EAAQ;AAI3B,QAAMC,IAAaD,EAAQ,KAAK,OAAOT,EAAA,GACjCW,IAAaF,EAAQ,MAAMC,GAE3BE,IAAOC,EAA0BJ,EAAQ,WAAW,GACpDK,IAAYC,EAAa,EAAI,GAC7BC,IAAQH,EAAyB,IAAI,GACrCI,IAAcF,EAAmB,IAAI,GACrCG,IAAYL,EAAoC,IAAI,GAEpDM,IAAaC,EAAmBf,GAAS;AAAA,IAC7C,GAAGI;AAAA,IACH,IAAIE;AAAA,EAAA,CACL,GAEKU,IAAkBF,EAAW,UAAU,CAACG,MAAU;AACtD,IAAAV,EAAK,QAAQU,EAAM,MACnBR,EAAU,QAAQQ,EAAM,WACxBN,EAAM,QAAQM,EAAM,OACpBL,EAAY,QAAQK,EAAM,aAC1BJ,EAAU,QAAQI,EAAM;AAAA,EAC1B,CAAC;AAED,MAAIC,IAAiC;AACrC,EAAIf,MACFe,IAAYC;AAAA,IACVhB;AAAA,IACA,MAAM;AACJ,MAAKW,EAAW,QAAA;AAAA,IAClB;AAAA,IACA,EAAE,MAAMV,EAAQ,KAAA;AAAA,EAAK;AAIzB,MAAIgB,IAAY;AAChB,QAAMC,IAAO,MAAM;AACjB,QAAI,CAAAD,GAEJ;AAAA,UADAA,IAAY,IACRF,GAAW;AACb,YAAI;AACF,UAAAA,EAAA;AAAA,QACF,QAAQ;AAAA,QAAC;AACT,QAAAA,IAAY;AAAA,MACd;AACA,MAAAF,EAAA,GACAF,EAAW,QAAA;AAAA;AAAA,EACb;AAEA,SAAIQ,OACFC,EAAeF,CAAI,GAGd;AAAA,IACL,MAAMG,EAASjB,CAAI;AAAA,IACnB,WAAWiB,EAASf,CAAS;AAAA,IAC7B,OAAOe,EAASb,CAAK;AAAA,IACrB,aAAaa,EAASZ,CAAW;AAAA,IACjC,WAAWY,EAASX,CAAS;AAAA,IAC7B,SAAS,MAAMC,EAAW,QAAA;AAAA,IAC1B,MAAAO;AAAA,EAAA;AAEJ;AAmBO,SAASI,EACdzB,GACA0B,GACAC,GACAvB,IAAkC,CAAA,GACG;AACrC,QAAM,EAAE,MAAAG,EAAA,IAASR,EAAgBC,GAAS0B,GAAM;AAAA,IAC9C,GAAGtB;AAAA,IACH,aAAaA,EAAQ,eAAeuB;AAAA,EAAA,CACrC;AACD,SAAOpB;AACT;"}