@pluv/react 3.2.2 → 4.0.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.
@@ -1,18 +1,18 @@
1
1
 
2
- > @pluv/react@3.2.2 build /home/runner/work/pluv/pluv/packages/react
3
- > tsup src/index.ts --format esm,cjs --dts --external react
2
+ > @pluv/react@4.0.1 build /home/runner/work/pluv/pluv/packages/react
3
+ > tsdown
4
4
 
5
- CLI Building entry: src/index.ts
6
- CLI Using tsconfig: tsconfig.json
7
- CLI tsup v8.5.0
8
- CLI Target: es6
9
- ESM Build start
10
- CJS Build start
11
- ESM dist/index.mjs 17.22 KB
12
- ESM ⚡️ Build success in 74ms
13
- CJS dist/index.js 19.62 KB
14
- CJS ⚡️ Build success in 78ms
15
- DTS Build start
16
- DTS ⚡️ Build success in 6196ms
17
- DTS dist/index.d.mts 6.00 KB
18
- DTS dist/index.d.ts 6.00 KB
5
+ ℹ tsdown v0.20.0-beta.4 powered by rolldown v1.0.0-beta.60
6
+ ℹ config file: /home/runner/work/pluv/pluv/packages/react/tsdown.config.ts
7
+ ℹ entry: src/index.ts
8
+ ℹ target: esnext
9
+ ℹ tsconfig: tsconfig.json
10
+ ℹ Build start
11
+ ℹ dist/index.mjs 13.72 kB │ gzip: 3.20 kB
12
+ [PLUGIN_TIMINGS] Warning: Your build spent significant time in plugin `rolldown-plugin-dts:generate`. See https://rolldown.rs/options/checks#plugintimings for more details.
13
+
14
+ ℹ dist/index.mjs.map 35.93 kB │ gzip: 7.89 kB
15
+ ℹ dist/index.d.mts.map  3.93 kB │ gzip: 1.05 kB
16
+ ℹ dist/index.d.mts  6.17 kB │ gzip: 1.56 kB
17
+ ℹ 4 files, total: 59.75 kB
18
+ ✔ Build complete in 3832ms
package/CHANGELOG.md CHANGED
@@ -1,5 +1,33 @@
1
1
  # @pluv/react
2
2
 
3
+ ## 4.0.1
4
+
5
+ ### Patch Changes
6
+
7
+ - @pluv/client@4.0.1
8
+ - @pluv/crdt@4.0.1
9
+ - @pluv/types@4.0.1
10
+
11
+ ## 4.0.0
12
+
13
+ ### Major Changes
14
+
15
+ - df5c39c: Update all packages to be ESM only.
16
+
17
+ ### Minor Changes
18
+
19
+ - 037074e: Migrated build process from tsup to tsdown.
20
+
21
+ ### Patch Changes
22
+
23
+ - 2eb5def: Bumped dependencies.
24
+ - Updated dependencies [2eb5def]
25
+ - Updated dependencies [df5c39c]
26
+ - Updated dependencies [037074e]
27
+ - @pluv/client@4.0.0
28
+ - @pluv/types@4.0.0
29
+ - @pluv/crdt@4.0.0
30
+
3
31
  ## 3.2.2
4
32
 
5
33
  ### Patch Changes
package/dist/index.d.mts CHANGED
@@ -1,72 +1,71 @@
1
- import { PluvRouterEventConfig, MockedRoomEvents, MergeEvents, PluvRoomDebug, PluvClient, WebSocketConnection, UserInfo, PluvRoomAddon, PluvRouter } from '@pluv/client';
2
- import { InferStorage, AbstractCrdtDocFactory, InferInitialStorageFn, InferDoc, InferCrdtJson } from '@pluv/crdt';
3
- import { IOLike, JsonObject, InferIOCrdtKind, MaybePromise, InferIOOutput, Id, IOEventMessage, InferIOInput, CrdtDocLike, UpdateMyPresenceAction, RoomLike } from '@pluv/types';
4
- import { FC, ReactNode, Dispatch } from 'react';
1
+ import { MergeEvents, MockedRoomEvents, PluvClient, PluvRoomAddon, PluvRoomDebug, PluvRouter, PluvRouterEventConfig, UserInfo, WebSocketConnection } from "@pluv/client";
2
+ import { Dispatch, FC, ReactNode } from "react";
3
+ import { AbstractCrdtDocFactory, InferCrdtJson, InferDoc, InferInitialStorageFn, InferStorage } from "@pluv/crdt";
4
+ import { CrdtDocLike, IOEventMessage, IOLike, Id, InferIOCrdtKind, InferIOInput, InferIOOutput, JsonObject, MaybePromise, RoomLike, UpdateMyPresenceAction } from "@pluv/types";
5
5
 
6
+ //#region src/types.d.ts
6
7
  interface PluvProviderProps {
7
- children?: ReactNode;
8
+ children?: ReactNode;
8
9
  }
9
10
  type BaseRoomProviderProps<TPresence extends Record<string, any>, TCrdt extends AbstractCrdtDocFactory<any, any>> = {
10
- children?: ReactNode;
11
- initialStorage?: keyof InferStorage<TCrdt> extends never ? never : InferInitialStorageFn<TCrdt>;
12
- room: string;
11
+ children?: ReactNode;
12
+ initialStorage?: keyof InferStorage<TCrdt> extends never ? never : InferInitialStorageFn<TCrdt>;
13
+ room: string;
13
14
  } & (keyof TPresence extends never ? {
14
- initialPresence?: never;
15
+ initialPresence?: never;
15
16
  } : {
16
- initialPresence: TPresence;
17
+ initialPresence: TPresence;
17
18
  });
18
19
  type MockedRoomProviderProps<TIO extends IOLike, TPresence extends Record<string, any>, TCrdt extends AbstractCrdtDocFactory<any, any>, TEvents extends PluvRouterEventConfig<TIO, TPresence, InferStorage<TCrdt>> = {}> = BaseRoomProviderProps<TPresence, TCrdt> & {
19
- events?: MockedRoomEvents<MergeEvents<TEvents, TIO>>;
20
- };
21
- type BroadcastProxy<TIO extends IOLike> = (<TEvent extends keyof InferIOInput<TIO>>(event: TEvent, data: Id<InferIOInput<TIO>[TEvent]>) => void) & {
22
- [event in keyof InferIOInput<TIO>]: (input: Id<InferIOInput<TIO>[event]>) => void;
23
- };
24
- type EventProxy<TIO extends IOLike> = {
25
- [event in keyof InferIOOutput<TIO>]: {
26
- useEvent: (callback: (data: Id<IOEventMessage<TIO, event>>) => void) => void;
27
- };
20
+ events?: MockedRoomEvents<MergeEvents<TEvents, TIO>>;
28
21
  };
22
+ type BroadcastProxy<TIO extends IOLike> = (<TEvent extends keyof InferIOInput<TIO>>(event: TEvent, data: Id<InferIOInput<TIO>[TEvent]>) => void) & { [event in keyof InferIOInput<TIO>]: (input: Id<InferIOInput<TIO>[event]>) => void };
23
+ type EventProxy<TIO extends IOLike> = { [event in keyof InferIOOutput<TIO>]: {
24
+ useEvent: (callback: (data: Id<IOEventMessage<TIO, event>>) => void) => void;
25
+ } };
29
26
  type MetadataGetter<TMetadata extends JsonObject> = TMetadata | (() => MaybePromise<TMetadata>);
30
27
  type PluvRoomProviderProps<TIO extends IOLike<any, any, any>, TMetadata extends JsonObject, TPresence extends Record<string, any>, TCrdt extends AbstractCrdtDocFactory<any, any>> = BaseRoomProviderProps<TPresence, TCrdt> & {
31
- connect?: boolean;
32
- debug?: boolean | PluvRoomDebug<TIO>;
33
- onAuthorizationFail?: (error: Error) => void;
28
+ connect?: boolean;
29
+ debug?: boolean | PluvRoomDebug<TIO>;
30
+ onAuthorizationFail?: (error: Error) => void;
34
31
  } & (keyof TMetadata extends never ? {
35
- metadata?: undefined;
32
+ metadata?: undefined;
36
33
  } : {
37
- metadata: MetadataGetter<TMetadata>;
34
+ metadata: MetadataGetter<TMetadata>;
38
35
  });
39
36
  interface SubscriptionHookOptions<T extends unknown> {
40
- isEqual?: (a: T, b: T) => boolean;
37
+ isEqual?: (a: T, b: T) => boolean;
41
38
  }
42
39
  interface CreateBundle<TIO extends IOLike<any, any, any>, TMetadata extends JsonObject, TPresence extends Record<string, any> = {}, TCrdt extends InferIOCrdtKind<TIO> = InferIOCrdtKind<TIO>, TEvents extends PluvRouterEventConfig<TIO, TPresence, InferStorage<TCrdt>> = {}> {
43
- MockedRoomProvider: FC<MockedRoomProviderProps<TIO, TPresence, TCrdt>>;
44
- PluvProvider: FC<PluvProviderProps>;
45
- PluvRoomProvider: FC<PluvRoomProviderProps<TIO, TMetadata, TPresence, TCrdt>>;
46
- event: EventProxy<MergeEvents<TEvents, TIO>>;
47
- useBroadcast: () => BroadcastProxy<MergeEvents<TEvents, TIO>>;
48
- useCanRedo: () => boolean;
49
- useCanUndo: () => boolean;
50
- useClient: () => PluvClient<TIO, TPresence, TCrdt, TMetadata>;
51
- useConnection: <T extends unknown = WebSocketConnection>(selector?: (connection: WebSocketConnection) => T, options?: SubscriptionHookOptions<Id<T>>) => Id<T>;
52
- useDoc: () => CrdtDocLike<InferDoc<TCrdt>, InferStorage<TCrdt>>;
53
- useEvent: <TType extends keyof InferIOOutput<MergeEvents<TEvents, TIO>>>(type: TType, callback: (data: Id<IOEventMessage<MergeEvents<TEvents, TIO>, TType>>) => void) => void;
54
- useMyPresence: <T extends unknown = TPresence>(selector?: (myPresence: TPresence) => T, options?: SubscriptionHookOptions<Id<T> | null>) => [myPresence: Id<T>, updateMyPresence: Dispatch<UpdateMyPresenceAction<TPresence>>];
55
- useMyself: <T extends unknown = UserInfo<TIO, TPresence>>(selector?: (myself: Id<UserInfo<TIO, TPresence>>) => T, options?: SubscriptionHookOptions<Id<T> | null>) => Id<T> | null;
56
- useOther: <T extends unknown = UserInfo<TIO, TPresence>>(connectionId: string, selector?: (other: UserInfo<TIO, TPresence>) => T, options?: SubscriptionHookOptions<T | null>) => T | null;
57
- useOthers: <T extends unknown = readonly UserInfo<TIO, TPresence>[]>(selector?: (other: readonly Id<UserInfo<TIO, TPresence>>[]) => T, options?: SubscriptionHookOptions<T>) => T;
58
- useRedo: () => () => void;
59
- useRoom: () => RoomLike<TIO, InferDoc<TCrdt>, TPresence, InferStorage<TCrdt>, TEvents>;
60
- useStorage: <TKey extends keyof InferStorage<TCrdt>, TData extends unknown = InferCrdtJson<InferStorage<TCrdt>[TKey]>>(key: TKey, selector?: (data: InferCrdtJson<InferStorage<TCrdt>[TKey]>) => TData, options?: SubscriptionHookOptions<TData | null>) => [data: TData | null, sharedType: InferStorage<TCrdt>[TKey] | null];
61
- useTransact: () => (fn: (storage: InferStorage<TCrdt>) => void, origin?: string) => void;
62
- useUndo: () => () => void;
40
+ MockedRoomProvider: FC<MockedRoomProviderProps<TIO, TPresence, TCrdt>>;
41
+ PluvProvider: FC<PluvProviderProps>;
42
+ PluvRoomProvider: FC<PluvRoomProviderProps<TIO, TMetadata, TPresence, TCrdt>>;
43
+ event: EventProxy<MergeEvents<TEvents, TIO>>;
44
+ useBroadcast: () => BroadcastProxy<MergeEvents<TEvents, TIO>>;
45
+ useCanRedo: () => boolean;
46
+ useCanUndo: () => boolean;
47
+ useClient: () => PluvClient<TIO, TPresence, TCrdt, TMetadata>;
48
+ useConnection: <T extends unknown = WebSocketConnection>(selector?: (connection: WebSocketConnection) => T, options?: SubscriptionHookOptions<Id<T>>) => Id<T>;
49
+ useDoc: () => CrdtDocLike<InferDoc<TCrdt>, InferStorage<TCrdt>>;
50
+ useEvent: <TType extends keyof InferIOOutput<MergeEvents<TEvents, TIO>>>(type: TType, callback: (data: Id<IOEventMessage<MergeEvents<TEvents, TIO>, TType>>) => void) => void;
51
+ useMyPresence: <T extends unknown = TPresence>(selector?: (myPresence: TPresence) => T, options?: SubscriptionHookOptions<Id<T> | null>) => [myPresence: Id<T>, updateMyPresence: Dispatch<UpdateMyPresenceAction<TPresence>>];
52
+ useMyself: <T extends unknown = UserInfo<TIO, TPresence>>(selector?: (myself: Id<UserInfo<TIO, TPresence>>) => T, options?: SubscriptionHookOptions<Id<T> | null>) => Id<T> | null;
53
+ useOther: <T extends unknown = UserInfo<TIO, TPresence>>(connectionId: string, selector?: (other: UserInfo<TIO, TPresence>) => T, options?: SubscriptionHookOptions<T | null>) => T | null;
54
+ useOthers: <T extends unknown = readonly UserInfo<TIO, TPresence>[]>(selector?: (other: readonly Id<UserInfo<TIO, TPresence>>[]) => T, options?: SubscriptionHookOptions<T>) => T;
55
+ useRedo: () => () => void;
56
+ useRoom: () => RoomLike<TIO, InferDoc<TCrdt>, TPresence, InferStorage<TCrdt>, TEvents>;
57
+ useStorage: <TKey extends keyof InferStorage<TCrdt>, TData extends unknown = InferCrdtJson<InferStorage<TCrdt>[TKey]>>(key: TKey, selector?: (data: InferCrdtJson<InferStorage<TCrdt>[TKey]>) => TData, options?: SubscriptionHookOptions<TData | null>) => [data: TData | null, sharedType: InferStorage<TCrdt>[TKey] | null];
58
+ useTransact: () => (fn: (storage: InferStorage<TCrdt>) => void, origin?: string) => void;
59
+ useUndo: () => () => void;
63
60
  }
64
61
  type InferBundleRoom<TBundle extends CreateBundle<any, any, any, any, any>> = TBundle extends CreateBundle<infer IIO, any, infer IPresence, infer ICrdt, infer IEvents> ? RoomLike<IIO, InferDoc<ICrdt>, IPresence, InferStorage<ICrdt>, IEvents> : never;
65
-
62
+ //#endregion
63
+ //#region src/createBundle.d.ts
66
64
  type CreateBundleOptions<TIO extends IOLike<any, any, any>, TMetadata extends JsonObject = {}, TPresence extends Record<string, any> = {}, TCrdt extends InferIOCrdtKind<TIO> = InferIOCrdtKind<TIO>, TEvents extends PluvRouterEventConfig<TIO, TPresence, InferStorage<TCrdt>> = {}> = {
67
- addons?: readonly PluvRoomAddon<TIO, TMetadata, TPresence, TCrdt>[];
68
- router?: PluvRouter<TIO, TPresence, InferStorage<TCrdt>, TEvents>;
65
+ addons?: readonly PluvRoomAddon<TIO, TMetadata, TPresence, TCrdt>[];
66
+ router?: PluvRouter<TIO, TPresence, InferStorage<TCrdt>, TEvents>;
69
67
  };
70
68
  declare const createBundle: <TIO extends IOLike<any, any, any>, TMetadata extends JsonObject = {}, TPresence extends Record<string, any> = {}, TCrdt extends InferIOCrdtKind<TIO> = InferIOCrdtKind<TIO>, TEvents extends PluvRouterEventConfig<TIO, TPresence, InferStorage<TCrdt>> = {}>(client: PluvClient<TIO, TPresence, TCrdt, TMetadata>, options?: CreateBundleOptions<TIO, TMetadata, TPresence, TCrdt, TEvents>) => CreateBundle<TIO, TMetadata, TPresence, TCrdt, TEvents>;
71
-
69
+ //#endregion
72
70
  export { type CreateBundle, type EventProxy, type InferBundleRoom, type PluvProviderProps, type PluvRoomProviderProps, type SubscriptionHookOptions, createBundle };
71
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/types.ts","../src/createBundle.tsx"],"mappings":"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"}