From 5eacc70e209bf49c485eaf6304f4b376cf9f025b Mon Sep 17 00:00:00 2001 From: Miron Pawlik Date: Wed, 12 Jun 2024 09:13:22 +0200 Subject: [PATCH 1/4] 'fix' package-lock.json --- package-lock.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index cb33530..f8fff12 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,11 +1,11 @@ { - "name": "@jellyfish-dev/react-client-sdk", + "name": "@fishjam-dev/react-client", "version": "0.4.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "@jellyfish-dev/react-client-sdk", + "name": "@fishjam-dev/react-client", "version": "0.4.0", "license": "Apache-2.0", "dependencies": { From 78f580bb4382656387bbcff36a59d5a62724e7af Mon Sep 17 00:00:00 2001 From: Miron Pawlik Date: Wed, 12 Jun 2024 09:13:46 +0200 Subject: [PATCH 2/4] Add new rule to eslintrc --- .eslintrc | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/.eslintrc b/.eslintrc index 7f0848e..5add10d 100644 --- a/.eslintrc +++ b/.eslintrc @@ -6,22 +6,23 @@ "eslint:recommended", "plugin:@typescript-eslint/eslint-recommended", "plugin:@typescript-eslint/recommended", - "prettier" + "prettier", ], "rules": { - "react-hooks/rules-of-hooks": "error", - "react-hooks/exhaustive-deps": "error", - "@typescript-eslint/no-empty-function": "off", "@typescript-eslint/ban-ts-comment": "off", + "@typescript-eslint/consistent-type-imports": "error", + "@typescript-eslint/no-empty-function": "off", "@typescript-eslint/no-unused-vars": [ "warn", { "argsIgnorePattern": "^_", "varsIgnorePattern": "^_", - "caughtErrorsIgnorePattern": "^_" - } + "caughtErrorsIgnorePattern": "^_", + }, ], "no-console": ["error", { "allow": ["warn", "error"] }], - "react-refresh/only-export-components": ["warn", { "allowConstantExport": true }] - } + "react-hooks/exhaustive-deps": "error", + "react-hooks/rules-of-hooks": "error", + "react-refresh/only-export-components": ["warn", { "allowConstantExport": true }], + }, } From 407d80ecc42578c8f9a6fbcd51ed43c6b326f139 Mon Sep 17 00:00:00 2001 From: Miron Pawlik Date: Wed, 12 Jun 2024 09:13:57 +0200 Subject: [PATCH 3/4] Fix all files by adding import type --- examples/minimal-react/src/components/App.tsx | 3 ++- .../src/components/VideoPlayer.tsx | 3 ++- .../minimal-react/src/components/client.ts | 2 +- .../src/Badge.tsx | 2 +- .../src/DeviceControls.tsx | 4 ++-- .../src/DeviceSelector.tsx | 3 ++- .../src/VideoPlayer.tsx | 3 ++- .../src/fishjamSetup.tsx | 3 ++- src/Client.ts | 19 +++++++++++-------- src/DeviceManager.ts | 13 +++++++------ src/ScreenShareManager.ts | 5 +++-- src/create.tsx | 16 +++++++++------- src/state.types.ts | 10 +++++----- src/types.ts | 6 +++--- tests/globalSetupState.ts | 2 +- tests/utils.ts | 3 ++- 16 files changed, 55 insertions(+), 42 deletions(-) diff --git a/examples/minimal-react/src/components/App.tsx b/examples/minimal-react/src/components/App.tsx index e6aca71..49b5982 100644 --- a/examples/minimal-react/src/components/App.tsx +++ b/examples/minimal-react/src/components/App.tsx @@ -1,5 +1,6 @@ import VideoPlayer from "./VideoPlayer"; -import { SCREEN_SHARING_MEDIA_CONSTRAINTS, Client } from "@fishjam-dev/react-client"; +import type { Client } from "@fishjam-dev/react-client"; +import { SCREEN_SHARING_MEDIA_CONSTRAINTS } from "@fishjam-dev/react-client"; import { useState } from "react"; import { useConnect, useDisconnect, useClient, useStatus, useTracks } from "./client"; diff --git a/examples/minimal-react/src/components/VideoPlayer.tsx b/examples/minimal-react/src/components/VideoPlayer.tsx index eb0d7bc..9adfe56 100644 --- a/examples/minimal-react/src/components/VideoPlayer.tsx +++ b/examples/minimal-react/src/components/VideoPlayer.tsx @@ -1,4 +1,5 @@ -import { RefObject, useEffect, useRef } from "react"; +import type { RefObject} from "react"; +import { useEffect, useRef } from "react"; type Props = { stream: MediaStream | null | undefined; diff --git a/examples/minimal-react/src/components/client.ts b/examples/minimal-react/src/components/client.ts index 2bed81b..20abf29 100644 --- a/examples/minimal-react/src/components/client.ts +++ b/examples/minimal-react/src/components/client.ts @@ -1,5 +1,5 @@ import { create } from "@fishjam-dev/react-client"; -import { PeerMetadata, TrackMetadata } from "./App"; +import type { PeerMetadata, TrackMetadata } from "./App"; // Create a Membrane client instance // remember to use FishjamContextProvider diff --git a/examples/use-camera-and-microphone-example/src/Badge.tsx b/examples/use-camera-and-microphone-example/src/Badge.tsx index f871601..0c64366 100644 --- a/examples/use-camera-and-microphone-example/src/Badge.tsx +++ b/examples/use-camera-and-microphone-example/src/Badge.tsx @@ -1,4 +1,4 @@ -import { PeerStatus } from "@fishjam-dev/react-client"; +import type { PeerStatus } from "@fishjam-dev/react-client"; type Props = { status: PeerStatus; diff --git a/examples/use-camera-and-microphone-example/src/DeviceControls.tsx b/examples/use-camera-and-microphone-example/src/DeviceControls.tsx index 78752ad..81286e4 100644 --- a/examples/use-camera-and-microphone-example/src/DeviceControls.tsx +++ b/examples/use-camera-and-microphone-example/src/DeviceControls.tsx @@ -1,5 +1,5 @@ -import { PeerStatus, UseMicrophoneResult, UseCameraResult, UseScreenShareResult } from "@fishjam-dev/react-client"; -import { TrackMetadata } from "./fishjamSetup"; +import type { PeerStatus, UseMicrophoneResult, UseCameraResult, UseScreenShareResult } from "@fishjam-dev/react-client"; +import type { TrackMetadata } from "./fishjamSetup"; type DeviceControlsProps = { status: PeerStatus; diff --git a/examples/use-camera-and-microphone-example/src/DeviceSelector.tsx b/examples/use-camera-and-microphone-example/src/DeviceSelector.tsx index 688703b..2f31d84 100644 --- a/examples/use-camera-and-microphone-example/src/DeviceSelector.tsx +++ b/examples/use-camera-and-microphone-example/src/DeviceSelector.tsx @@ -1,4 +1,5 @@ -import { ChangeEvent, useState } from "react"; +import type { ChangeEvent} from "react"; +import { useState } from "react"; type Props = { name: string; diff --git a/examples/use-camera-and-microphone-example/src/VideoPlayer.tsx b/examples/use-camera-and-microphone-example/src/VideoPlayer.tsx index 028e469..114bbfe 100644 --- a/examples/use-camera-and-microphone-example/src/VideoPlayer.tsx +++ b/examples/use-camera-and-microphone-example/src/VideoPlayer.tsx @@ -1,4 +1,5 @@ -import { RefObject, useEffect, useRef } from "react"; +import type { RefObject} from "react"; +import { useEffect, useRef } from "react"; type Props = { stream: MediaStream | null | undefined; diff --git a/examples/use-camera-and-microphone-example/src/fishjamSetup.tsx b/examples/use-camera-and-microphone-example/src/fishjamSetup.tsx index ded0de2..f40b34b 100644 --- a/examples/use-camera-and-microphone-example/src/fishjamSetup.tsx +++ b/examples/use-camera-and-microphone-example/src/fishjamSetup.tsx @@ -1,5 +1,6 @@ import { z } from "zod"; -import { ClientEvents, create } from "@fishjam-dev/react-client"; +import type { ClientEvents} from "@fishjam-dev/react-client"; +import { create } from "@fishjam-dev/react-client"; import { useEffect, useState } from "react"; const peerMetadataSchema = z.object({ diff --git a/src/Client.ts b/src/Client.ts index 7587ef6..6ad7cd4 100644 --- a/src/Client.ts +++ b/src/Client.ts @@ -1,23 +1,26 @@ import EventEmitter from "events"; -import TypedEmitter from "typed-emitter"; -import { +import type TypedEmitter from "typed-emitter"; +import type { AuthErrorReason, BandwidthLimit, Component, ConnectConfig, CreateConfig, - FishjamClient, MessageEvents, Peer, SimulcastConfig, TrackBandwidthLimit, TrackContext, - TrackEncoding, -} from "@fishjam-dev/ts-client"; -import { PeerId, PeerState, PeerStatus, Track, TrackId, TrackWithOrigin } from "./state.types"; -import { DeviceManager, DeviceManagerEvents } from "./DeviceManager"; -import { MediaDeviceType, ScreenShareManager, ScreenShareManagerConfig } from "./ScreenShareManager"; + TrackEncoding} from "@fishjam-dev/ts-client"; import { + FishjamClient +} from "@fishjam-dev/ts-client"; +import type { PeerId, PeerState, PeerStatus, Track, TrackId, TrackWithOrigin } from "./state.types"; +import type { DeviceManagerEvents } from "./DeviceManager"; +import { DeviceManager } from "./DeviceManager"; +import type { MediaDeviceType, ScreenShareManagerConfig } from "./ScreenShareManager"; +import { ScreenShareManager } from "./ScreenShareManager"; +import type { DeviceManagerConfig, DeviceState, InitMediaConfig, diff --git a/src/DeviceManager.ts b/src/DeviceManager.ts index f7458a3..661c1af 100644 --- a/src/DeviceManager.ts +++ b/src/DeviceManager.ts @@ -1,4 +1,4 @@ -import { +import type { AudioOrVideoType, CurrentDevices, DeviceError, @@ -9,13 +9,14 @@ import { GetMedia, InitMediaConfig, Media, + StorageConfig, + UseUserMediaStartConfig} from "./types"; +import { NOT_FOUND_ERROR, OVERCONSTRAINED_ERROR, parseError, PERMISSION_DENIED, - StorageConfig, - UNHANDLED_ERROR, - UseUserMediaStartConfig, + UNHANDLED_ERROR } from "./types"; import { loadObject, saveObject } from "./localStorage"; @@ -27,8 +28,8 @@ import { } from "./constraints"; import EventEmitter from "events"; -import TypedEmitter from "typed-emitter"; -import { TrackType } from "./ScreenShareManager"; +import type TypedEmitter from "typed-emitter"; +import type { TrackType } from "./ScreenShareManager"; const removeExact = ( trackConstraints: boolean | MediaTrackConstraints | undefined, diff --git a/src/ScreenShareManager.ts b/src/ScreenShareManager.ts index 92256f8..ddbc129 100644 --- a/src/ScreenShareManager.ts +++ b/src/ScreenShareManager.ts @@ -1,6 +1,7 @@ import EventEmitter from "events"; -import TypedEmitter from "typed-emitter"; -import { AudioOrVideoType, DeviceError, DevicesStatus, parseError } from "./types"; +import type TypedEmitter from "typed-emitter"; +import type { AudioOrVideoType, DeviceError, DevicesStatus} from "./types"; +import { parseError } from "./types"; export type TrackType = "audio" | "video" | "audiovideo"; export type MediaDeviceType = "displayMedia" | "userMedia"; diff --git a/src/create.tsx b/src/create.tsx index 17dee2a..90a3ccb 100644 --- a/src/create.tsx +++ b/src/create.tsx @@ -1,7 +1,8 @@ +import type { + JSX, + ReactNode} from "react"; import { createContext, - JSX, - ReactNode, useCallback, useContext, useEffect, @@ -10,9 +11,9 @@ import { useSyncExternalStore, } from "react"; import type { Selector, State } from "./state.types"; -import { PeerStatus, TrackId, TrackWithOrigin } from "./state.types"; -import { ConnectConfig, CreateConfig } from "@fishjam-dev/ts-client"; -import { +import type { PeerStatus, TrackId, TrackWithOrigin } from "./state.types"; +import type { ConnectConfig, CreateConfig } from "@fishjam-dev/ts-client"; +import type { DeviceManagerConfig, UseCameraAndMicrophoneResult, UseCameraResult, @@ -21,8 +22,9 @@ import { UseSetupMediaConfig, UseSetupMediaResult, } from "./types"; -import { Client, ClientApi, ClientEvents } from "./Client"; -import { MediaDeviceType, ScreenShareManagerConfig } from "./ScreenShareManager"; +import type { ClientApi, ClientEvents } from "./Client"; +import { Client } from "./Client"; +import type { MediaDeviceType, ScreenShareManagerConfig } from "./ScreenShareManager"; export type FishjamContextProviderProps = { children: ReactNode; diff --git a/src/state.types.ts b/src/state.types.ts index 3717426..29077a7 100644 --- a/src/state.types.ts +++ b/src/state.types.ts @@ -1,9 +1,9 @@ import type { TrackEncoding, VadStatus, SimulcastConfig } from "@fishjam-dev/ts-client"; -import { UseUserMediaState } from "./types"; -import { UseCameraAndMicrophoneResult } from "./types"; -import { Client } from "./Client"; -import { DeviceManager } from "./DeviceManager"; -import { ScreenShareManager } from "./ScreenShareManager"; +import type { UseUserMediaState } from "./types"; +import type { UseCameraAndMicrophoneResult } from "./types"; +import type { Client } from "./Client"; +import type { DeviceManager } from "./DeviceManager"; +import type { ScreenShareManager } from "./ScreenShareManager"; export type TrackId = string; export type PeerId = string; diff --git a/src/types.ts b/src/types.ts index 4885334..4b65e13 100644 --- a/src/types.ts +++ b/src/types.ts @@ -1,6 +1,6 @@ -import { SimulcastConfig, TrackBandwidthLimit } from "@fishjam-dev/ts-client"; -import { ScreenShareManagerConfig } from "./ScreenShareManager"; -import { Track } from "./state.types"; +import type { SimulcastConfig, TrackBandwidthLimit } from "@fishjam-dev/ts-client"; +import type { ScreenShareManagerConfig } from "./ScreenShareManager"; +import type { Track } from "./state.types"; export type AudioOrVideoType = "audio" | "video"; diff --git a/tests/globalSetupState.ts b/tests/globalSetupState.ts index 5f262c1..d346072 100644 --- a/tests/globalSetupState.ts +++ b/tests/globalSetupState.ts @@ -1,4 +1,4 @@ -import { StartedDockerComposeEnvironment } from "testcontainers"; +import type { StartedDockerComposeEnvironment } from "testcontainers"; export type SetupState = { fishjamContainer: StartedDockerComposeEnvironment | null; diff --git a/tests/utils.ts b/tests/utils.ts index 6cc6cf7..fbe463b 100644 --- a/tests/utils.ts +++ b/tests/utils.ts @@ -1,4 +1,5 @@ -import { expect, Page, test } from "@playwright/test"; +import type { Page} from "@playwright/test"; +import { expect, test } from "@playwright/test"; export const joinRoomAndAddScreenShare = async (page: Page, roomId: string): Promise => test.step("Join room and add track", async () => { From 2bb3c73cbab48910e9c99efafb9ddc255a8e130d Mon Sep 17 00:00:00 2001 From: Miron Pawlik Date: Wed, 12 Jun 2024 11:36:17 +0200 Subject: [PATCH 4/4] =?UTF-8?q?Fix=20formatting=20=F0=9F=A4=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../minimal-react/src/components/VideoPlayer.tsx | 2 +- .../src/DeviceSelector.tsx | 2 +- .../src/VideoPlayer.tsx | 2 +- .../src/fishjamSetup.tsx | 2 +- src/Client.ts | 5 ++--- src/DeviceManager.ts | 9 ++------- src/ScreenShareManager.ts | 2 +- src/create.tsx | 14 ++------------ tests/utils.ts | 2 +- 9 files changed, 12 insertions(+), 28 deletions(-) diff --git a/examples/minimal-react/src/components/VideoPlayer.tsx b/examples/minimal-react/src/components/VideoPlayer.tsx index 9adfe56..0514862 100644 --- a/examples/minimal-react/src/components/VideoPlayer.tsx +++ b/examples/minimal-react/src/components/VideoPlayer.tsx @@ -1,4 +1,4 @@ -import type { RefObject} from "react"; +import type { RefObject } from "react"; import { useEffect, useRef } from "react"; type Props = { diff --git a/examples/use-camera-and-microphone-example/src/DeviceSelector.tsx b/examples/use-camera-and-microphone-example/src/DeviceSelector.tsx index 2f31d84..900259e 100644 --- a/examples/use-camera-and-microphone-example/src/DeviceSelector.tsx +++ b/examples/use-camera-and-microphone-example/src/DeviceSelector.tsx @@ -1,4 +1,4 @@ -import type { ChangeEvent} from "react"; +import type { ChangeEvent } from "react"; import { useState } from "react"; type Props = { diff --git a/examples/use-camera-and-microphone-example/src/VideoPlayer.tsx b/examples/use-camera-and-microphone-example/src/VideoPlayer.tsx index 114bbfe..5d3c8f2 100644 --- a/examples/use-camera-and-microphone-example/src/VideoPlayer.tsx +++ b/examples/use-camera-and-microphone-example/src/VideoPlayer.tsx @@ -1,4 +1,4 @@ -import type { RefObject} from "react"; +import type { RefObject } from "react"; import { useEffect, useRef } from "react"; type Props = { diff --git a/examples/use-camera-and-microphone-example/src/fishjamSetup.tsx b/examples/use-camera-and-microphone-example/src/fishjamSetup.tsx index f40b34b..7f41ef5 100644 --- a/examples/use-camera-and-microphone-example/src/fishjamSetup.tsx +++ b/examples/use-camera-and-microphone-example/src/fishjamSetup.tsx @@ -1,5 +1,5 @@ import { z } from "zod"; -import type { ClientEvents} from "@fishjam-dev/react-client"; +import type { ClientEvents } from "@fishjam-dev/react-client"; import { create } from "@fishjam-dev/react-client"; import { useEffect, useState } from "react"; diff --git a/src/Client.ts b/src/Client.ts index 6ad7cd4..2d8c2e9 100644 --- a/src/Client.ts +++ b/src/Client.ts @@ -11,10 +11,9 @@ import type { SimulcastConfig, TrackBandwidthLimit, TrackContext, - TrackEncoding} from "@fishjam-dev/ts-client"; -import { - FishjamClient + TrackEncoding, } from "@fishjam-dev/ts-client"; +import { FishjamClient } from "@fishjam-dev/ts-client"; import type { PeerId, PeerState, PeerStatus, Track, TrackId, TrackWithOrigin } from "./state.types"; import type { DeviceManagerEvents } from "./DeviceManager"; import { DeviceManager } from "./DeviceManager"; diff --git a/src/DeviceManager.ts b/src/DeviceManager.ts index 661c1af..eaa63c1 100644 --- a/src/DeviceManager.ts +++ b/src/DeviceManager.ts @@ -10,14 +10,9 @@ import type { InitMediaConfig, Media, StorageConfig, - UseUserMediaStartConfig} from "./types"; -import { - NOT_FOUND_ERROR, - OVERCONSTRAINED_ERROR, - parseError, - PERMISSION_DENIED, - UNHANDLED_ERROR + UseUserMediaStartConfig, } from "./types"; +import { NOT_FOUND_ERROR, OVERCONSTRAINED_ERROR, parseError, PERMISSION_DENIED, UNHANDLED_ERROR } from "./types"; import { loadObject, saveObject } from "./localStorage"; import { diff --git a/src/ScreenShareManager.ts b/src/ScreenShareManager.ts index ddbc129..e659c87 100644 --- a/src/ScreenShareManager.ts +++ b/src/ScreenShareManager.ts @@ -1,6 +1,6 @@ import EventEmitter from "events"; import type TypedEmitter from "typed-emitter"; -import type { AudioOrVideoType, DeviceError, DevicesStatus} from "./types"; +import type { AudioOrVideoType, DeviceError, DevicesStatus } from "./types"; import { parseError } from "./types"; export type TrackType = "audio" | "video" | "audiovideo"; diff --git a/src/create.tsx b/src/create.tsx index 90a3ccb..bf57929 100644 --- a/src/create.tsx +++ b/src/create.tsx @@ -1,15 +1,5 @@ -import type { - JSX, - ReactNode} from "react"; -import { - createContext, - useCallback, - useContext, - useEffect, - useMemo, - useRef, - useSyncExternalStore, -} from "react"; +import type { JSX, ReactNode } from "react"; +import { createContext, useCallback, useContext, useEffect, useMemo, useRef, useSyncExternalStore } from "react"; import type { Selector, State } from "./state.types"; import type { PeerStatus, TrackId, TrackWithOrigin } from "./state.types"; import type { ConnectConfig, CreateConfig } from "@fishjam-dev/ts-client"; diff --git a/tests/utils.ts b/tests/utils.ts index fbe463b..9bf86ba 100644 --- a/tests/utils.ts +++ b/tests/utils.ts @@ -1,4 +1,4 @@ -import type { Page} from "@playwright/test"; +import type { Page } from "@playwright/test"; import { expect, test } from "@playwright/test"; export const joinRoomAndAddScreenShare = async (page: Page, roomId: string): Promise =>