@powerhousedao/reactor-browser 6.0.0-dev.193 → 6.0.0-dev.195

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/analytics/context.tsx","../../../src/analytics/hooks/analytics-query.ts","../../../src/analytics/hooks/timeline-items.ts","../../../src/analytics/hooks/document-timeline.ts"],"sourcesContent":["import type { AnalyticsQueryEngine } from \"@powerhousedao/analytics-engine-core\";\nimport {\n QueryClient,\n QueryClientProvider,\n useMutation,\n useQuery,\n useQueryClient,\n useSuspenseQuery,\n} from \"@tanstack/react-query\";\nimport { childLogger } from \"document-model\";\nimport type { PropsWithChildren } from \"react\";\nimport { useEffect } from \"react\";\nimport { getGlobal } from \"../global/core.js\";\nimport type { CreateStoreOptions } from \"./store.js\";\nimport { getAnalyticsStore } from \"./store.js\";\n\nconst logger = childLogger([\"reactor-browser\", \"analytics\", \"provider\"]);\n\nconst defaultQueryClient = new QueryClient();\n\nexport const analyticsOptionsKey = [\"analytics\", \"options\"] as const;\nexport const analyticsStoreKey = [\"analytics\", \"store\"] as const;\nexport const analyticsEngineKey = [\"analytics\", \"engine\"] as const;\n\nexport function useAnalyticsStoreOptions() {\n return useQuery<CreateStoreOptions | undefined>({\n queryKey: analyticsOptionsKey,\n }).data;\n}\n\nexport function useCreateAnalyticsStore(options?: CreateStoreOptions) {\n const queryClient = useQueryClient();\n useEffect(() => {\n queryClient.setQueryDefaults(analyticsOptionsKey, {\n queryFn: () => options,\n staleTime: Infinity,\n gcTime: Infinity,\n });\n }, [queryClient, options]);\n\n return useMutation({\n mutationFn: async () => {\n const store = getAnalyticsStore();\n queryClient.setQueryDefaults(analyticsStoreKey, {\n queryFn: () => store,\n staleTime: Infinity,\n gcTime: Infinity,\n });\n return store;\n },\n });\n}\n\nexport function useAnalyticsStoreQuery(options?: CreateStoreOptions) {\n return useSuspenseQuery({\n queryKey: [analyticsStoreKey, options],\n queryFn: () => getAnalyticsStore(),\n retry: true,\n });\n}\n\nexport function useAnalyticsStore(options?: CreateStoreOptions) {\n const store = useAnalyticsStoreQuery(options);\n return store.data;\n}\n\nexport function useAnalyticsStoreAsync(options?: CreateStoreOptions) {\n return useQuery({\n queryKey: [analyticsStoreKey, options],\n queryFn: () => getAnalyticsStore(),\n retry: true,\n throwOnError: false,\n });\n}\n\ninterface BaseAnalyticsProviderProps extends PropsWithChildren {\n /**\n * Custom QueryClient instance\n * @default undefined\n */\n queryClient?: QueryClient;\n}\n\ntype AnalyticsProviderProps = BaseAnalyticsProviderProps &\n (\n | {\n options?: CreateStoreOptions;\n }\n | {\n databaseName?: string;\n }\n );\n\nfunction CreateAnalyticsStore() {\n const { mutate } = useCreateAnalyticsStore();\n\n useEffect(() => {\n mutate();\n }, []);\n\n return null;\n}\n\nexport function AnalyticsProvider({\n children,\n queryClient = defaultQueryClient,\n ...props\n}: AnalyticsProviderProps) {\n return (\n <QueryClientProvider client={queryClient}>\n <CreateAnalyticsStore />\n {children}\n </QueryClientProvider>\n );\n}\n\nexport function useAnalyticsEngine(): AnalyticsQueryEngine | undefined {\n return useSuspenseQuery({\n queryKey: analyticsEngineKey,\n queryFn: async () => {\n const globalAnalytics = getGlobal(\"analytics\");\n if (!globalAnalytics) {\n throw new Error(\"No analytics store available\");\n }\n return (await globalAnalytics).engine;\n },\n retry: false,\n }).data;\n}\n\nexport function useAnalyticsEngineAsync() {\n return useQuery({\n queryKey: analyticsEngineKey,\n queryFn: async () => {\n const globalAnalytics = getGlobal(\"analytics\");\n if (!globalAnalytics) {\n throw new Error(\"No analytics store available\");\n }\n return (await globalAnalytics).engine;\n },\n retry: false,\n });\n}\n","import type {\n AnalyticsQuery,\n AnalyticsQueryEngine,\n AnalyticsSeries,\n AnalyticsSeriesInput,\n AnalyticsSeriesQuery,\n GroupedPeriodResults,\n IAnalyticsStore,\n} from \"@powerhousedao/analytics-engine-core\";\nimport { AnalyticsPath } from \"@powerhousedao/analytics-engine-core\";\nimport type {\n UseMutationOptions,\n UseQueryOptions,\n UseQueryResult,\n} from \"@tanstack/react-query\";\nimport { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\";\nimport { useEffect } from \"react\";\nimport {\n useAnalyticsEngineAsync,\n useAnalyticsStoreAsync,\n useAnalyticsStoreOptions,\n} from \"../context.js\";\nimport { getAnalyticsStore } from \"../store.js\";\n\nfunction useAnalyticsQueryWrapper<TQueryFnData = unknown, TData = TQueryFnData>(\n options: Omit<UseQueryOptions<TQueryFnData, Error, TData>, \"queryFn\"> & {\n queryFn: (analytics: {\n store: IAnalyticsStore;\n engine: AnalyticsQueryEngine;\n }) => Promise<TQueryFnData> | TQueryFnData;\n },\n) {\n const { queryFn, ...queryOptions } = options;\n const { data: store } = useAnalyticsStoreAsync();\n const { data: engine } = useAnalyticsEngineAsync();\n const enabled =\n \"enabled\" in queryOptions ? queryOptions.enabled : !!store && !!engine;\n\n return useQuery({\n ...queryOptions,\n enabled,\n queryFn: async () => {\n if (!store || !engine) {\n throw new Error(\n \"No analytics store available. Use within an AnalyticsProvider.\",\n );\n }\n return await queryFn({ store, engine });\n },\n });\n}\n\nfunction useAnalyticsMutationWrapper<TVariables, TData>(\n options: Omit<UseMutationOptions<TData, Error, TVariables>, \"mutationFn\"> & {\n mutationFn: (\n variables: TVariables,\n context: {\n store: IAnalyticsStore;\n },\n ) => Promise<TData> | TData;\n },\n) {\n const { mutationFn, ...mutationOptions } = options;\n const storeOptions = useAnalyticsStoreOptions();\n\n return useMutation({\n ...mutationOptions,\n mutationFn: async (value: TVariables) => {\n let store: IAnalyticsStore | null = null;\n try {\n store = await getAnalyticsStore();\n } catch (e) {\n console.error(e);\n }\n\n if (!store) {\n throw new Error(\n \"No analytics store available. Use within an AnalyticsProvider.\",\n );\n }\n return await mutationFn(value, { store });\n },\n });\n}\n\nexport type UseAnalyticsQueryOptions<TData = GroupedPeriodResults> = Omit<\n UseQueryOptions<GroupedPeriodResults, Error, TData>,\n \"queryKey\" | \"queryFn\"\n> & {\n sources?: AnalyticsPath[];\n};\n\nexport type UseAnalyticsQueryResult<TData = GroupedPeriodResults> =\n UseQueryResult<TData>;\n\nconst DEBOUNCE_INTERVAL = 200;\n\nexport function useAnalyticsQuery<TData = GroupedPeriodResults>(\n query: AnalyticsQuery,\n options?: UseAnalyticsQueryOptions<TData>,\n): UseAnalyticsQueryResult<TData> {\n const { data: store } = useAnalyticsStoreAsync();\n const queryClient = useQueryClient();\n const sources = options?.sources ?? [];\n\n const result = useAnalyticsQueryWrapper({\n queryKey: [\"analytics\", \"query\", query],\n queryFn: ({ engine }) => engine.execute(query),\n ...options,\n });\n\n useEffect(() => {\n if (!sources.length || !store) {\n return;\n }\n\n const subscriptions = new Array<() => void>();\n // Debounce invalidateQueries so it's not called too frequently\n let invalidateTimeout: ReturnType<typeof setTimeout> | null = null;\n const debouncedInvalidate = () => {\n if (invalidateTimeout) clearTimeout(invalidateTimeout);\n invalidateTimeout = setTimeout(() => {\n queryClient\n .invalidateQueries({\n queryKey: [\"analytics\", \"query\", query],\n })\n .catch((e) => {\n console.error(e);\n });\n }, DEBOUNCE_INTERVAL);\n };\n\n sources.forEach((path) => {\n const unsub = store.subscribeToSource(path, debouncedInvalidate);\n subscriptions.push(unsub);\n });\n\n // Unsubscribes from store when component unmounts or dependencies change\n return () => {\n subscriptions.forEach((unsub) => unsub());\n };\n }, [query, store, sources]);\n\n return result;\n}\n\nexport type UseAnalyticsSeriesOptions = Omit<\n UseQueryOptions<AnalyticsSeries[], Error, AnalyticsSeries[]>,\n \"queryKey\" | \"queryFn\"\n>;\n\nexport function useAnalyticsSeries(\n query: AnalyticsSeriesQuery,\n options?: UseAnalyticsSeriesOptions,\n) {\n return useAnalyticsQueryWrapper({\n queryKey: [\"analytics\", \"series\", query],\n queryFn: ({ store }) => store.getMatchingSeries(query),\n ...options,\n });\n}\n\nexport type UseAddSeriesValueOptions = Omit<\n UseMutationOptions<void, Error, AnalyticsSeriesInput>,\n \"mutationKey\" | \"mutationFn\"\n>;\n\nexport function useAddSeriesValue(options?: UseAddSeriesValueOptions) {\n return useAnalyticsMutationWrapper({\n mutationKey: [\"analytics\", \"addSeries\"],\n mutationFn: async (value, { store }) => {\n return await store.addSeriesValue(value);\n },\n ...options,\n });\n}\n\nexport type UseClearSeriesBySourceOptions = Omit<\n UseMutationOptions<\n number,\n Error,\n { source: AnalyticsPath; cleanUpDimensions?: boolean }\n >,\n \"mutationKey\" | \"mutationFn\"\n>;\n\nexport function useClearSeriesBySource(\n options?: UseClearSeriesBySourceOptions,\n) {\n return useAnalyticsMutationWrapper({\n mutationKey: [\"analytics\", \"clearSeries\"],\n mutationFn: async ({ source, cleanUpDimensions }, { store }) => {\n return store.clearSeriesBySource(source, cleanUpDimensions);\n },\n ...options,\n });\n}\n\nexport type UseClearEmptyAnalyticsDimensionsOptions = Omit<\n UseMutationOptions<number>,\n \"mutationKey\" | \"mutationFn\"\n>;\n\nexport function useClearEmptyAnalyticsDimensions(\n options?: UseClearEmptyAnalyticsDimensionsOptions,\n) {\n return useAnalyticsMutationWrapper({\n mutationKey: [\"analytics\", \"clearEmptyDimensions\"],\n mutationFn: async (_, { store }) => {\n return store.clearEmptyAnalyticsDimensions();\n },\n ...options,\n });\n}\n\nexport type UseAddSeriesValuesOptions = Omit<\n UseMutationOptions<void, Error, AnalyticsSeriesInput[]>,\n \"mutationKey\" | \"mutationFn\"\n>;\n\nexport function useAddSeriesValues(options?: UseAddSeriesValuesOptions) {\n return useAnalyticsMutationWrapper({\n mutationKey: [\"analytics\", \"addSeriesValues\"],\n mutationFn: async (values, { store }) => {\n return store.addSeriesValues(values);\n },\n ...options,\n });\n}\n\nexport type UseGetDimensionsOptions<TData> = Omit<\n UseQueryOptions<any, Error, TData>,\n \"queryKey\" | \"queryFn\"\n>;\n\nexport function useGetDimensions<TData = any>(\n options?: UseGetDimensionsOptions<TData>,\n) {\n return useAnalyticsQueryWrapper({\n queryKey: [\"analytics\", \"dimensions\"],\n queryFn: ({ store }) => store.getDimensions(),\n ...options,\n });\n}\n\nexport type UseMatchingSeriesOptions = Omit<\n UseQueryOptions<AnalyticsSeries[], Error, AnalyticsSeries[]>,\n \"queryKey\" | \"queryFn\"\n>;\n\nexport function useMatchingSeries(\n query: AnalyticsSeriesQuery,\n options?: UseMatchingSeriesOptions,\n) {\n const result = useAnalyticsQueryWrapper({\n queryKey: [\"analytics\", \"matchingSeries\", query],\n queryFn: ({ store }) => store.getMatchingSeries(query),\n ...options,\n });\n\n return result;\n}\n\nexport type UseQuerySourcesOptions = Omit<\n UseQueryOptions<AnalyticsPath[] | undefined>,\n \"queryKey\" | \"queryFn\"\n>;\n\nexport function useQuerySources(\n query: AnalyticsSeriesQuery,\n options?: UseQuerySourcesOptions,\n) {\n const { data: matchingSeries } = useMatchingSeries(query);\n\n return useQuery({\n queryKey: [\"analytics\", \"sources\", query],\n queryFn: () => {\n if (!matchingSeries?.length) {\n return [];\n }\n const uniqueSources = [\n ...new Set(matchingSeries.map((s) => s.source.toString())),\n ];\n return uniqueSources.map((source) => AnalyticsPath.fromString(source));\n },\n enabled: !!matchingSeries,\n ...options,\n });\n}\n","import type { GroupedPeriodResults } from \"@powerhousedao/analytics-engine-core\";\nimport {\n AnalyticsGranularity,\n AnalyticsPath,\n} from \"@powerhousedao/analytics-engine-core\";\nimport { DateTime } from \"luxon\";\nimport type { UseAnalyticsQueryResult } from \"./analytics-query.js\";\nimport { useAnalyticsQuery } from \"./analytics-query.js\";\n\nconst getBarSize = (value: number) => {\n if (value <= 0) return 0;\n if (value > 0 && value <= 50) return 1;\n if (value > 50 && value <= 100) return 2;\n if (value > 100 && value <= 250) return 3;\n return 4;\n};\n\n// Define types for our timeline items\ntype BarItem = {\n id: string;\n type: \"bar\";\n addSize: 0 | 1 | 2 | 3 | 4;\n delSize: 0 | 1 | 2 | 3 | 4;\n additions: number;\n deletions: number;\n timestampUtcMs: string;\n startDate: Date;\n endDate: Date;\n revision?: number;\n};\n\ntype DividerItem = {\n id: string;\n type: \"divider\";\n revision?: number;\n startDate?: Date;\n endDate?: Date;\n};\n\ntype TimelineItem = BarItem | DividerItem;\n\nfunction addItemsDividers(items: BarItem[]): TimelineItem[] {\n if (!items.length) return [];\n\n const result: TimelineItem[] = [];\n items.forEach((item, index) => {\n result.push(item);\n\n // Check if there's a next item and if they're not in consecutive hours\n if (index < items.length - 1) {\n const currentDate = new Date(item.startDate);\n const nextDate = new Date(items[index + 1].startDate);\n\n const currentHour = currentDate.getHours();\n const nextHour = nextDate.getHours();\n\n // Get day parts (without time) for comparison\n const currentDay = currentDate.toDateString();\n const nextDay = nextDate.toDateString();\n\n // If different days or non-consecutive hours on the same day\n if (\n currentDay !== nextDay ||\n (currentDay === nextDay && Math.abs(nextHour - currentHour) > 1)\n ) {\n result.push({\n id: `divider-${item.id}-${items[index + 1].id}`,\n type: \"divider\" as const,\n revision: 0,\n });\n }\n }\n });\n\n return result;\n}\n\nfunction metricsToItems(metrics: GroupedPeriodResults): TimelineItem[] {\n if (!metrics) return [];\n\n const items = metrics\n .sort((a, b) => {\n const aDate = new Date(a.start as unknown as Date);\n const bDate = new Date(b.start as unknown as Date);\n return aDate.getTime() - bDate.getTime();\n })\n .filter((result) => {\n return result.rows.every((row) => row.value > 0);\n })\n .map((result) => {\n const { additions, deletions } = result.rows.reduce(\n (acc, row) => {\n if (\n (row.dimensions.changes.path as unknown as string) ===\n \"ph/diff/changes/add\"\n ) {\n acc.additions += row.value;\n } else if (\n (row.dimensions.changes.path as unknown as string) ===\n \"ph/diff/changes/remove\"\n ) {\n acc.deletions += row.value;\n }\n return acc;\n },\n { additions: 0, deletions: 0 },\n );\n\n const startDate = new Date(result.start as unknown as Date);\n\n return {\n id: startDate.toISOString(),\n type: \"bar\" as const,\n addSize: getBarSize(additions),\n delSize: getBarSize(deletions),\n additions,\n deletions,\n timestampUtcMs: startDate.toISOString(),\n startDate: startDate,\n endDate: new Date(result.end as unknown as Date),\n revision: 0,\n } as const;\n });\n\n return addItemsDividers(items);\n}\n\nexport type UseTimelineItemsResult = UseAnalyticsQueryResult<TimelineItem[]>;\n\nexport const useTimelineItems = (\n documentId?: string,\n startTimestamp?: string,\n driveId?: string,\n): UseTimelineItemsResult => {\n const start = startTimestamp\n ? DateTime.fromISO(startTimestamp)\n : DateTime.now().startOf(\"day\");\n\n return useAnalyticsQuery<TimelineItem[]>(\n {\n start,\n end: DateTime.now().endOf(\"day\"),\n granularity: AnalyticsGranularity.Hourly,\n metrics: [\"Count\"],\n select: {\n changes: [AnalyticsPath.fromString(`ph/diff/changes`)],\n document: [AnalyticsPath.fromString(`ph/diff/document/${documentId}`)],\n },\n lod: {\n changes: 4,\n },\n },\n {\n sources: [AnalyticsPath.fromString(`ph/diff/${driveId}/${documentId}`)],\n select: metricsToItems,\n },\n );\n};\n","import { useDocumentById } from \"../../hooks/document-by-id.js\";\nimport { useTimelineItems } from \"./timeline-items.js\";\n\nexport function useDocumentTimeline(documentId?: string) {\n const [document] = useDocumentById(documentId);\n\n const id = document?.header.id;\n const createdAt = document?.header.createdAtUtcIso;\n const timelineItems = useTimelineItems(id, createdAt);\n\n return timelineItems.data || [];\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { n as ReactorGraphQLClient, t as createClient } from "../../client-DS0--utd.js";
2
+ export { ReactorGraphQLClient, createClient };
@@ -0,0 +1,2 @@
1
+ import { t as createClient } from "../../client-DMdsUVJw.js";
2
+ export { createClient };
@@ -0,0 +1,2 @@
1
+ import { a as RelationalDbWithLive, i as useRelationalQueryOptions, n as QueryCallbackReturnType, o as useRelationalDb, r as useRelationalQuery, t as createProcessorQuery } from "../../index-Ce4S7Kk1.js";
2
+ export { QueryCallbackReturnType, RelationalDbWithLive, createProcessorQuery, useRelationalDb, useRelationalQuery, useRelationalQueryOptions };
@@ -0,0 +1,2 @@
1
+ import { n as useRelationalQuery, r as useRelationalDb, t as createProcessorQuery } from "../../relational-jwreqDwz.js";
2
+ export { createProcessorQuery, useRelationalDb, useRelationalQuery };
@@ -0,0 +1,2 @@
1
+ import { A as logout, C as RenownUserButtonMenuItem, D as RenownAuthButton, E as RenownLoginButtonProps, M as RenownAuth, N as RenownAuthStatus, O as RenownAuthButtonProps, P as useRenownAuth, S as RenownUserButton, T as RenownLoginButton, _ as CopyIcon, a as CREDENTIAL_SCHEMA_EIP712_TYPE, b as SpinnerIcon, c as DOMAIN_TYPE, d as RENOWN_NETWORK_ID, f as RENOWN_URL, g as ChevronDownIcon, h as initRenownCrypto, i as useRenownInit, j as openRenown, k as login, l as ISSUER_TYPE, m as initConnectCrypto, n as RenownProps, o as CREDENTIAL_SUBJECT_TYPE, p as VERIFIABLE_CREDENTIAL_EIP712_TYPE, r as RenownInitOptions, s as CREDENTIAL_TYPES, t as Renown, u as RENOWN_CHAIN_ID, v as DisconnectIcon, w as RenownUserButtonProps, x as UserIcon, y as RenownLogo } from "../../index-DgwLcoI3.js";
2
+ export { CREDENTIAL_SCHEMA_EIP712_TYPE, CREDENTIAL_SUBJECT_TYPE, CREDENTIAL_TYPES, ChevronDownIcon, CopyIcon, DOMAIN_TYPE, DisconnectIcon, ISSUER_TYPE, RENOWN_CHAIN_ID, RENOWN_NETWORK_ID, RENOWN_URL, Renown, RenownAuth, RenownAuthButton, RenownAuthButtonProps, RenownAuthStatus, RenownInitOptions, RenownLoginButton, RenownLoginButtonProps, RenownLogo, RenownProps, RenownUserButton, RenownUserButtonMenuItem, RenownUserButtonProps, SpinnerIcon, UserIcon, VERIFIABLE_CREDENTIAL_EIP712_TYPE, initConnectCrypto, initRenownCrypto, login, logout, openRenown, useRenownAuth, useRenownInit };
@@ -0,0 +1,2 @@
1
+ import { C as RENOWN_CHAIN_ID, E as VERIFIABLE_CREDENTIAL_EIP712_TYPE, S as ISSUER_TYPE, T as RENOWN_URL, _ as openRenown, a as RenownAuthButton, b as CREDENTIAL_TYPES, c as ChevronDownIcon, d as RenownLogo, f as SpinnerIcon, g as logout, h as login, i as initRenownCrypto, l as CopyIcon, m as useRenownAuth, n as useRenownInit, o as RenownUserButton, p as UserIcon, r as initConnectCrypto, s as RenownLoginButton, t as Renown, u as DisconnectIcon, v as CREDENTIAL_SCHEMA_EIP712_TYPE, w as RENOWN_NETWORK_ID, x as DOMAIN_TYPE, y as CREDENTIAL_SUBJECT_TYPE } from "../../renown-CV_45Xc1.js";
2
+ export { CREDENTIAL_SCHEMA_EIP712_TYPE, CREDENTIAL_SUBJECT_TYPE, CREDENTIAL_TYPES, ChevronDownIcon, CopyIcon, DOMAIN_TYPE, DisconnectIcon, ISSUER_TYPE, RENOWN_CHAIN_ID, RENOWN_NETWORK_ID, RENOWN_URL, Renown, RenownAuthButton, RenownLoginButton, RenownLogo, RenownUserButton, SpinnerIcon, UserIcon, VERIFIABLE_CREDENTIAL_EIP712_TYPE, initConnectCrypto, initRenownCrypto, login, logout, openRenown, useRenownAuth, useRenownInit };
@@ -0,0 +1,22 @@
1
+ import { BrowserAnalyticsStore, BrowserAnalyticsStoreOptions } from "@powerhousedao/analytics-engine-browser";
2
+ import { AnalyticsQueryEngine, IAnalyticsStore } from "@powerhousedao/analytics-engine-core";
3
+
4
+ //#region src/analytics/store.d.ts
5
+ type CreateStoreOptions = BrowserAnalyticsStoreOptions;
6
+ declare function createAnalyticsStore(options: CreateStoreOptions): Promise<{
7
+ store: BrowserAnalyticsStore;
8
+ engine: AnalyticsQueryEngine;
9
+ options: BrowserAnalyticsStoreOptions;
10
+ }>;
11
+ declare function getAnalyticsStore(): Promise<IAnalyticsStore | null>;
12
+ //#endregion
13
+ //#region src/analytics/types.d.ts
14
+ type IAnalyticsStoreOptions = BrowserAnalyticsStoreOptions;
15
+ type IPowerhouseAnalytics = {
16
+ store: IAnalyticsStore;
17
+ engine: AnalyticsQueryEngine;
18
+ options: IAnalyticsStoreOptions;
19
+ };
20
+ //#endregion
21
+ export { getAnalyticsStore as a, createAnalyticsStore as i, IPowerhouseAnalytics as n, CreateStoreOptions as r, IAnalyticsStoreOptions as t };
22
+ //# sourceMappingURL=types-BmR60pPN.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types-BmR60pPN.d.ts","names":[],"sources":["../src/analytics/store.ts","../src/analytics/types.ts"],"mappings":";;;;KAMY,kBAAA,GAAqB,4BAAA;AAAA,iBAEX,oBAAA,CAAqB,OAAA,EAAS,kBAAA,GAAkB,OAAA;;;;;iBAYhD,iBAAA,CAAA,GAAqB,OAAA,CAAQ,eAAA;;;KCfvC,sBAAA,GAAyB,4BAAA;AAAA,KAEzB,oBAAA;EACV,KAAA,EAAO,eAAA;EACP,MAAA,EAAQ,oBAAA;EACR,OAAA,EAAS,sBAAA;AAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@powerhousedao/reactor-browser",
3
- "version": "6.0.0-dev.193",
3
+ "version": "6.0.0-dev.195",
4
4
  "license": "AGPL-3.0-only",
5
5
  "type": "module",
6
6
  "repository": {
@@ -17,11 +17,26 @@
17
17
  ".": {
18
18
  "types": "./dist/index.d.ts",
19
19
  "import": "./dist/index.js"
20
+ },
21
+ "./analytics": {
22
+ "types": "./dist/src/analytics/index.d.ts",
23
+ "import": "./dist/src/analytics/index.js"
24
+ },
25
+ "./graphql": {
26
+ "types": "./dist/src/graphql/client.d.ts",
27
+ "import": "./dist/src/graphql/client.js"
28
+ },
29
+ "./relational": {
30
+ "types": "./dist/src/relational/index.d.ts",
31
+ "import": "./dist/src/relational/index.js"
32
+ },
33
+ "./renown": {
34
+ "types": "./dist/src/renown/index.d.ts",
35
+ "import": "./dist/src/renown/index.js"
20
36
  }
21
37
  },
22
38
  "sideEffects": false,
23
39
  "dependencies": {
24
- "@electric-sql/pglite": "0.3.15",
25
40
  "@tanstack/react-query": "^5.49.2",
26
41
  "change-case": "5.4.4",
27
42
  "graphql": "16.12.0",
@@ -33,14 +48,15 @@
33
48
  "luxon": "^3.6.1",
34
49
  "lz-string": "^1.5.0",
35
50
  "slug": "^11.0.0",
36
- "@powerhousedao/analytics-engine-browser": "6.0.0-dev.193",
37
- "@powerhousedao/reactor": "6.0.0-dev.193",
38
- "@powerhousedao/analytics-engine-core": "6.0.0-dev.193",
39
- "@powerhousedao/shared": "6.0.0-dev.193",
40
- "@renown/sdk": "6.0.0-dev.193",
41
- "document-model": "6.0.0-dev.193"
51
+ "@powerhousedao/analytics-engine-core": "6.0.0-dev.195",
52
+ "@powerhousedao/analytics-engine-browser": "6.0.0-dev.195",
53
+ "@powerhousedao/shared": "6.0.0-dev.195",
54
+ "@powerhousedao/reactor": "6.0.0-dev.195",
55
+ "@renown/sdk": "6.0.0-dev.195",
56
+ "document-model": "6.0.0-dev.195"
42
57
  },
43
58
  "devDependencies": {
59
+ "@electric-sql/pglite": "0.3.15",
44
60
  "@graphql-codegen/cli": "6.1.1",
45
61
  "@graphql-codegen/typescript": "5.0.7",
46
62
  "@graphql-codegen/typescript-graphql-request": "6.4.0",