Initial commit with Advoware proxy

This commit is contained in:
root
2025-10-19 14:57:07 +00:00
commit 273aa8b549
45771 changed files with 5534555 additions and 0 deletions

View File

@@ -0,0 +1,8 @@
export { Stream } from '@motiadev/stream-client-browser';
export { StreamItemSubscription } from '@motiadev/stream-client-browser';
export { StreamGroupSubscription } from '@motiadev/stream-client-browser';
export { MotiaStreamProvider } from './src/motia-stream-provider';
export { useMotiaStream } from './src/use-motia-stream';
export { useStreamItem, type StreamItemArgs } from './src/use-stream-item';
export { useStreamGroup, type StreamGroupArgs } from './src/use-stream-group';
export { useStreamEventHandler } from './src/use-stream-event-handler';

View File

@@ -0,0 +1,8 @@
export { Stream } from '@motiadev/stream-client-browser';
export { StreamItemSubscription } from '@motiadev/stream-client-browser';
export { StreamGroupSubscription } from '@motiadev/stream-client-browser';
export { MotiaStreamProvider } from './src/motia-stream-provider';
export { useMotiaStream } from './src/use-motia-stream';
export { useStreamItem } from './src/use-stream-item';
export { useStreamGroup } from './src/use-stream-group';
export { useStreamEventHandler } from './src/use-stream-event-handler';

View File

@@ -0,0 +1,7 @@
import React from 'react';
import { Stream } from '@motiadev/stream-client-browser';
type MotiaStreamContextType = {
stream: Stream | null;
};
export declare const MotiaStreamContext: React.Context<MotiaStreamContextType>;
export {};

View File

@@ -0,0 +1,4 @@
import React from 'react';
export const MotiaStreamContext = React.createContext({
stream: null,
});

View File

@@ -0,0 +1,15 @@
import React from 'react';
type Props = React.PropsWithChildren<{
/**
* The address of the stream server.
*
* @example
* ```tsx
* <MotiaStreamProvider address="ws://localhost:3000">
* <App />
* </MotiaStreamProvider>
*/
address: string;
}>;
export declare const MotiaStreamProvider: React.FC<Props>;
export {};

View File

@@ -0,0 +1,13 @@
import { jsx as _jsx } from "react/jsx-runtime";
import { Stream } from '@motiadev/stream-client-browser';
import { useEffect, useState } from 'react';
import { MotiaStreamContext } from './motia-stream-context';
export const MotiaStreamProvider = ({ children, address }) => {
const [stream, setStream] = useState(null);
useEffect(() => {
const stream = new Stream(address);
setStream(stream);
return () => stream.close();
}, [address]);
return _jsx(MotiaStreamContext.Provider, { value: { stream }, children: children });
};

View File

@@ -0,0 +1,11 @@
/**
* A hook to get the stream context.
*
* @example
* ```tsx
* const { stream } = useMotiaStream()
* ```
*/
export declare const useMotiaStream: () => {
stream: import("@motiadev/stream-client-browser").Stream | null;
};

View File

@@ -0,0 +1,17 @@
import React from 'react';
import { MotiaStreamContext } from './motia-stream-context';
/**
* A hook to get the stream context.
*
* @example
* ```tsx
* const { stream } = useMotiaStream()
* ```
*/
export const useMotiaStream = () => {
const context = React.useContext(MotiaStreamContext);
if (!context) {
throw new Error('useMotiaStream must be used within a MotiaStreamProvider');
}
return context;
};

View File

@@ -0,0 +1,24 @@
import { StreamSubscription } from '@motiadev/stream-client-browser';
import { DependencyList } from 'react';
type UseStreamEventHandler = {
event: StreamSubscription | null;
type: string;
listener: (event: any) => void;
};
/**
* A hook to handle custom stream events.
*
* @example
* ```tsx
* const { event } = useStreamItem({ streamName: 'my-stream', id: '123' })
*
* const onEventHandled = (event: any) => {
* // this is going to be called whenever 'on-custom-event' is sent from the server
* console.log(event)
* }
*
* useStreamEventHandler({ event, type: 'on-custom-event', listener: onEventHandled }, [])
* ```
*/
export declare const useStreamEventHandler: ({ event, type, listener }: UseStreamEventHandler, dependencies: DependencyList) => void;
export {};

View File

@@ -0,0 +1,24 @@
import { useEffect } from 'react';
/**
* A hook to handle custom stream events.
*
* @example
* ```tsx
* const { event } = useStreamItem({ streamName: 'my-stream', id: '123' })
*
* const onEventHandled = (event: any) => {
* // this is going to be called whenever 'on-custom-event' is sent from the server
* console.log(event)
* }
*
* useStreamEventHandler({ event, type: 'on-custom-event', listener: onEventHandled }, [])
* ```
*/
export const useStreamEventHandler = ({ event, type, listener }, dependencies) => {
useEffect(() => {
if (event) {
event.onEvent(type, listener);
return () => event.offEvent(type, listener);
}
}, [event, type, ...dependencies]);
};

View File

@@ -0,0 +1,33 @@
import { StreamSubscription } from '@motiadev/stream-client-browser';
export type StreamGroupArgs<TData extends {
id: string;
}> = {
streamName: string;
groupId: string;
sortKey?: keyof TData;
};
/**
* A hook to get a group of items from a stream.
*
* @example
* ```tsx
* const { data } = useStreamGroup<{ id:string; name: string }>({
* streamName: 'my-stream',
* groupId: '123',
* })
*
* return (
* <div>
* {data.map((item) => (
* <div key={item.id}>{item.name}</div>
* ))}
* </div>
* )
* ```
*/
export declare const useStreamGroup: <TData extends {
id: string;
}>(args?: StreamGroupArgs<TData>) => {
data: TData[];
event: StreamSubscription<unknown, unknown> | null;
};

View File

@@ -0,0 +1,39 @@
import { useEffect, useState } from 'react';
import { useMotiaStream } from './use-motia-stream';
/**
* A hook to get a group of items from a stream.
*
* @example
* ```tsx
* const { data } = useStreamGroup<{ id:string; name: string }>({
* streamName: 'my-stream',
* groupId: '123',
* })
*
* return (
* <div>
* {data.map((item) => (
* <div key={item.id}>{item.name}</div>
* ))}
* </div>
* )
* ```
*/
export const useStreamGroup = (args) => {
const { stream } = useMotiaStream();
const [data, setData] = useState([]);
const [event, setEvent] = useState(null);
useEffect(() => {
if (!args?.streamName || !args?.groupId || !stream)
return;
const subscription = stream.subscribeGroup(args.streamName, args.groupId, args.sortKey);
subscription.addChangeListener((data) => setData(data));
setEvent(subscription);
return () => {
setData([]);
setEvent(null);
subscription.close();
};
}, [stream, args?.streamName, args?.groupId, args?.sortKey]);
return { data, event };
};

View File

@@ -0,0 +1,26 @@
import { StreamSubscription } from '@motiadev/stream-client-browser';
export type StreamItemArgs = {
streamName: string;
groupId: string;
id?: string;
};
/**
* A hook to get a single item from a stream.
*
* @example
* ```tsx
* const { data } = useStreamItem<{ id:string; name: string }>({
* streamName: 'my-stream',
* groupId: '123',
* id: '123',
* })
*
* return (
* <div>{data?.name}</div>
* )
* ```
*/
export declare const useStreamItem: <TData>(args?: StreamItemArgs) => {
data: TData | null;
event: StreamSubscription<unknown, unknown> | null;
};

View File

@@ -0,0 +1,36 @@
import { useEffect, useState } from 'react';
import { useMotiaStream } from './use-motia-stream';
/**
* A hook to get a single item from a stream.
*
* @example
* ```tsx
* const { data } = useStreamItem<{ id:string; name: string }>({
* streamName: 'my-stream',
* groupId: '123',
* id: '123',
* })
*
* return (
* <div>{data?.name}</div>
* )
* ```
*/
export const useStreamItem = (args) => {
const { stream } = useMotiaStream();
const [data, setData] = useState(null);
const [event, setEvent] = useState(null);
useEffect(() => {
if (!args?.streamName || !args?.groupId || !args?.id || !stream)
return;
const subscription = stream.subscribeItem(args.streamName, args.groupId, args.id);
subscription.addChangeListener((data) => setData(data));
setEvent(subscription);
return () => {
setData(null);
setEvent(null);
subscription.close();
};
}, [stream, args?.streamName, args?.groupId, args?.id]);
return { data, event };
};

File diff suppressed because one or more lines are too long