From a25138fc8629318848767ae7824c05817173e379 Mon Sep 17 00:00:00 2001 From: Ravindra Singh Rathor Date: Tue, 30 Jun 2026 15:53:50 +0530 Subject: [PATCH 01/13] fix(recording-samples): remove flags, added cloudflare workers deployment support --- AGENTS.md | 6 +- recording-sdk-app-samples/AGENTS.md | 31 ++++++++-- recording-sdk-app-samples/README.md | 47 ++++++++++++-- .../record-single-preset/README.md | 37 +++++------ .../record-single-preset/package.json | 7 ++- .../record-single-preset/wrangler.jsonc | 17 +++++ .../recording-with-watermark/.gitignore | 5 +- .../recording-with-watermark/README.md | 54 ++++++++++++++++ .../recording-with-watermark/package.json | 7 ++- .../src/components/RecordingView.tsx | 12 ++-- .../src/controllers/FlagsmithController.ts | 62 ------------------- .../src/pages/RecordingPage.tsx | 37 +++-------- .../recording-with-watermark/src/types.ts | 1 + .../recording-with-watermark/wrangler.jsonc | 17 +++++ .../.gitignore | 3 +- .../README.md | 28 +++++++++ .../package.json | 7 ++- .../wrangler.jsonc | 17 +++++ .../screenshare-focused/.gitignore | 3 +- .../screenshare-focused/README.md | 28 +++++++++ .../screenshare-focused/package.json | 7 ++- .../screenshare-focused/wrangler.jsonc | 17 +++++ 22 files changed, 305 insertions(+), 145 deletions(-) create mode 100644 recording-sdk-app-samples/react-examples/record-single-preset/wrangler.jsonc create mode 100644 recording-sdk-app-samples/react-examples/recording-with-watermark/README.md delete mode 100644 recording-sdk-app-samples/react-examples/recording-with-watermark/src/controllers/FlagsmithController.ts create mode 100644 recording-sdk-app-samples/react-examples/recording-with-watermark/wrangler.jsonc create mode 100644 recording-sdk-app-samples/react-examples/screenshare-focused-with-snapshot-capture/README.md create mode 100644 recording-sdk-app-samples/react-examples/screenshare-focused-with-snapshot-capture/wrangler.jsonc create mode 100644 recording-sdk-app-samples/react-examples/screenshare-focused/README.md create mode 100644 recording-sdk-app-samples/react-examples/screenshare-focused/wrangler.jsonc diff --git a/AGENTS.md b/AGENTS.md index 7112d64..91deba8 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -15,7 +15,7 @@ realtimekit-web-examples/ ├── angular-examples/ # 3 Angular CLI examples → deployed as Cloudflare Worker ├── html-examples/ # 5 vanilla HTML/JS examples → deployed as Cloudflare Worker ├── demo-app/ # Gallery portal (React Router 7 SSR) → examples.realtime.cloudflare.com -├── recording-sdk-app-samples/ # 4 recording SDK examples → Vercel (NOT Cloudflare Workers) +├── recording-sdk-app-samples/ # 4 recording SDK examples → deployed as individual Cloudflare Workers ├── pnpm-workspace.yaml # Workspace definitions └── .github/workflows/ # 9 CI/CD workflows (staging + prod per framework) ``` @@ -27,7 +27,7 @@ realtimekit-web-examples/ | Add React example | `react-examples/examples//` | Also add to `demo-app/app/utils/react.ts` | | Add Angular example | `angular-examples/examples//` | Also add to `demo-app/app/utils/angular.ts` | | Add HTML example | `html-examples/examples//` | Also add to `demo-app/app/utils/vanilla.ts` | -| Add recording example | `recording-sdk-app-samples/react-examples//` | Vercel deploy; no wrangler config | +| Add recording example | `recording-sdk-app-samples/react-examples//` | Each example has own `wrangler.jsonc`; deploy via `pnpm deploy:staging` / `pnpm deploy:production` | | Update SDK versions | `/update-cloudflare-realtime-deps.sh` | Fetches from npm; pass `--env staging\|prod` | | Gallery example catalog | `demo-app/app/utils/react.ts`, `angular.ts`, `vanilla.ts` | Hardcoded; new examples won't appear without editing | | CI / deploy config | `.github/workflows/` | Per-framework staging + prod deploy workflows | @@ -63,7 +63,7 @@ cd demo-app && pnpm dev ## ANTI-PATTERNS - Do NOT use npm or yarn — preinstall hook will abort -- Do NOT add wrangler deploy config to `recording-sdk-app-samples` — it deploys to Vercel +- `recording-sdk-app-samples` examples each have their own `wrangler.jsonc` — deploy individually via `pnpm deploy:staging` / `pnpm deploy:production` - Do NOT add shared packages or libs — every example is intentionally isolated - Do NOT forget to register new examples in `demo-app/app/utils/` — they won't appear in the gallery diff --git a/recording-sdk-app-samples/AGENTS.md b/recording-sdk-app-samples/AGENTS.md index c51538a..0c48f2d 100644 --- a/recording-sdk-app-samples/AGENTS.md +++ b/recording-sdk-app-samples/AGENTS.md @@ -2,7 +2,7 @@ ## OVERVIEW -4 React apps for `@cloudflare/realtimekit-recording-sdk` — a headless recorder/bot client that runs inside a browser automation context (e.g., Puppeteer, Playwright). **Deploys to Vercel**, not Cloudflare Workers. +4 React apps for `@cloudflare/realtimekit-recording-sdk` — a headless recorder/bot client that runs inside a browser automation context (e.g., Puppeteer, Playwright). **Deploys to Cloudflare Workers** (Vite build + wrangler deploy). ## STRUCTURE @@ -12,7 +12,7 @@ recording-sdk-app-samples/ ├── record-single-preset/ # Records only participants with preset "LEAD" ├── screenshare-focused/ # Recording layout: screenshare fullscreen + participant bubbles ├── screenshare-focused-with-snapshot-capture/ # Same + periodic JPEG snapshots POSTed to endpoint - └── recording-with-watermark/ # Screenshare layout + watermark overlay + FlagsmithController + └── recording-with-watermark/ # Screenshare layout + watermark overlay + custom video subscription ``` ## WHERE TO LOOK @@ -22,21 +22,42 @@ recording-sdk-app-samples/ | Baseline recording layout | `screenshare-focused/` | Start here; other examples build on this | | Filter recording by preset | `record-single-preset/` | `participant.preset.name === 'LEAD'` filter | | Capture video snapshots | `screenshare-focused-with-snapshot-capture/` | `canvas.toDataURL` → POST to configurable endpoint | -| Feature-flagged watermark | `recording-with-watermark/` | `FlagsmithController` wraps `Watermark.tsx` | +| Watermark + video subscription | `recording-with-watermark/` | Watermark overlay + `videoUnsubscribePresetsRegex` config for custom video subscription | ## CONVENTIONS -- **Vercel deployment** — run `vercel` CLI to deploy; no `wrangler.jsonc` or `worker.js` here +- **Cloudflare Workers deployment** — each example has its own `wrangler.jsonc` with staging/production envs. Deploy via `pnpm deploy:staging` or `pnpm deploy:production` - Auth: `authToken` passed via URL query param — same as main react-examples - Versions pinned manually in each `package.json` — no `update-cloudflare-realtime-deps.sh` +- Worker names follow the pattern `recording-app--staging` / `recording-app--production` - Vite ^5 + TypeScript ^5 (newer than main react-examples workspace) ## ANTI-PATTERNS -- Do NOT add `worker.js` or `wrangler.jsonc` — Vercel only - Do NOT copy `@dyteinternals/utils` to new examples — it is a vestigial dep in `recording-with-watermark` from an upstream fork +## CONFIG + +The `recording-with-watermark` example accepts a base64-encoded JSON `config` query parameter with this shape: + +```ts +interface MeetingConfig { + uiKit: boolean; // Use UI Kit for rendering (default: false) + waitTimeMs: number; // Wait time before recording starts (default: 60000) + watermark: WatermarkConfig; // Watermark overlay settings + videoUnsubscribePresetsRegex?: string[]; // Regex patterns to unsubscribe video for matching presets +} +``` + +**`videoUnsubscribePresetsRegex`** — pass an array of regex patterns (e.g., `["Host$", "interviewer*"]`) to unsubscribe video for participants whose preset name matches. This replaces the previous Flagsmith-based feature flag approach — no external feature flag service is needed. + +Example URL with config: +``` +?authToken=&config= +``` + ## NOTES - `record-single-preset`: participant pin loop (`participant.pin()`) is commented out — optional feature intentionally disabled - `pnpm-workspace.yaml` at repo root references `recording-sdk-app-examples/react-examples/*` (misnamed: `examples` vs `samples`) — this workspace glob is broken and these packages are not resolved by the root pnpm workspace +- Flagsmith dependency has been removed from `recording-with-watermark` — custom video subscription is now controlled via the `videoUnsubscribePresetsRegex` config key diff --git a/recording-sdk-app-samples/README.md b/recording-sdk-app-samples/README.md index daf6aa0..30fa554 100644 --- a/recording-sdk-app-samples/README.md +++ b/recording-sdk-app-samples/README.md @@ -45,9 +45,9 @@ cd react-examples/recording-with-watermark development server and open up the page. ```sh -npm install +pnpm install # and to start a dev server -npm run dev +pnpm dev ``` 4. Load the dev server in your browser and make sure you pass the `authToken` @@ -56,9 +56,46 @@ npm run dev ``` http://localhost:5173/?authToken= ``` -5. Deploy your app using Vercel. + +### Custom Configuration (recording-with-watermark) + +The `recording-with-watermark` example supports an optional base64-encoded `config` query parameter to customize behavior: + +```ts +interface MeetingConfig { + uiKit: boolean; // Use UI Kit for rendering (default: false) + waitTimeMs: number; // Wait time before recording starts in ms (default: 60000) + watermark: WatermarkConfig; // Watermark overlay settings (position, size, opacity, etc.) + videoUnsubscribePresetsRegex?: string[]; // Regex patterns to unsubscribe video for matching presets +} +``` + +**`videoUnsubscribePresetsRegex`** — an array of regex patterns to selectively unsubscribe video for participants whose preset name matches any pattern. For example, `["Host$", "interviewer*"]` would unsubscribe video for participants with presets ending in "Host" or starting with "interviewer". + +To use it, base64-encode the JSON config and pass it as a query parameter: + +``` +http://localhost:5173/?authToken=&config= +``` + +Example: +```js +const config = { + uiKit: false, + waitTimeMs: 60000, + watermark: { enabled: false }, + videoUnsubscribePresetsRegex: ["Host$"] +}; +const encoded = btoa(JSON.stringify(config)); +// Use: ?authToken=&config= +``` + +5. Deploy to Cloudflare Workers. ```sh -npm install -g vercel -vercel +# Deploy to staging +pnpm deploy:staging + +# Deploy to production +pnpm deploy:production ``` diff --git a/recording-sdk-app-samples/react-examples/record-single-preset/README.md b/recording-sdk-app-samples/react-examples/record-single-preset/README.md index fed8556..1ae04c7 100644 --- a/recording-sdk-app-samples/react-examples/record-single-preset/README.md +++ b/recording-sdk-app-samples/react-examples/record-single-preset/README.md @@ -1,29 +1,26 @@ -# React + TypeScript + Vite +# Recording App - Record Single Preset -This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. +A recording SDK example that records only participants with the `LEAD` preset. Uses `RtkSimpleGrid` for camera-only views and `RtkMixedGrid` when a screenshare is active. -Currently, two official plugins are available: +## Local Development -- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh +```bash +pnpm install +pnpm dev +``` -## Expanding the ESLint configuration +Open `http://localhost:5173/?authToken=` in your browser. -If you are developing a production application, we recommend updating the configuration to enable type aware lint rules: +## Deploy to Cloudflare Workers -- Configure the top-level `parserOptions` property like this: +### Staging -```js -export default { - // other rules... - parserOptions: { - ecmaVersion: 'latest', - sourceType: 'module', - project: ['./tsconfig.json', './tsconfig.node.json'], - tsconfigRootDir: __dirname, - }, -} +```bash +pnpm deploy:staging ``` -- Replace `plugin:@typescript-eslint/recommended` to `plugin:@typescript-eslint/recommended-type-checked` or `plugin:@typescript-eslint/strict-type-checked` -- Optionally add `plugin:@typescript-eslint/stylistic-type-checked` -- Install [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) and add `plugin:react/recommended` & `plugin:react/jsx-runtime` to the `extends` list +### Production + +```bash +pnpm deploy:production +``` diff --git a/recording-sdk-app-samples/react-examples/record-single-preset/package.json b/recording-sdk-app-samples/react-examples/record-single-preset/package.json index 675b061..dac08aa 100644 --- a/recording-sdk-app-samples/react-examples/record-single-preset/package.json +++ b/recording-sdk-app-samples/react-examples/record-single-preset/package.json @@ -7,7 +7,9 @@ "dev": "vite", "build": "tsc -b && vite build", "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", - "preview": "vite preview" + "preview": "vite preview", + "deploy:staging": "pnpm build && wrangler deploy --env staging", + "deploy:production": "pnpm build && wrangler deploy --env production" }, "dependencies": { "@cloudflare/realtimekit": "^2.0.0", @@ -28,6 +30,7 @@ "eslint-plugin-react-hooks": "^4.6.2", "eslint-plugin-react-refresh": "^0.4.7", "typescript": "^5.2.2", - "vite": "^5.3.1" + "vite": "^5.3.1", + "wrangler": "^3.99.0" } } diff --git a/recording-sdk-app-samples/react-examples/record-single-preset/wrangler.jsonc b/recording-sdk-app-samples/react-examples/record-single-preset/wrangler.jsonc new file mode 100644 index 0000000..1109420 --- /dev/null +++ b/recording-sdk-app-samples/react-examples/record-single-preset/wrangler.jsonc @@ -0,0 +1,17 @@ +{ + "$schema": "node_modules/wrangler/config-schema.json", + "name": "recording-app-record-single-preset-production", + "compatibility_date": "2024-11-01", + "assets": { + "directory": "./dist", + "not_found_handling": "single-page-application" + }, + "env": { + "staging": { + "name": "recording-app-record-single-preset-staging" + }, + "production": { + "name": "recording-app-record-single-preset-production" + } + } +} diff --git a/recording-sdk-app-samples/react-examples/recording-with-watermark/.gitignore b/recording-sdk-app-samples/react-examples/recording-with-watermark/.gitignore index 1f8290b..192e777 100644 --- a/recording-sdk-app-samples/react-examples/recording-with-watermark/.gitignore +++ b/recording-sdk-app-samples/react-examples/recording-with-watermark/.gitignore @@ -1,3 +1,4 @@ -/.vercel /node_modules -/dist \ No newline at end of file +/dist +.wrangler +.DS_Store \ No newline at end of file diff --git a/recording-sdk-app-samples/react-examples/recording-with-watermark/README.md b/recording-sdk-app-samples/react-examples/recording-with-watermark/README.md new file mode 100644 index 0000000..a6cfb51 --- /dev/null +++ b/recording-sdk-app-samples/react-examples/recording-with-watermark/README.md @@ -0,0 +1,54 @@ +# Recording App - Recording with Watermark + +A recording SDK example with a screenshare-focused layout, watermark overlay, and custom video subscription via `videoUnsubscribePresetsRegex` config. + +## Local Development + +```bash +pnpm install +pnpm dev +``` + +Open `http://localhost:5173/?authToken=` in your browser. + +### Custom Configuration + +This example supports an optional base64-encoded `config` query parameter: + +```ts +interface MeetingConfig { + uiKit: boolean; // Use UI Kit for rendering (default: false) + waitTimeMs: number; // Wait time before recording starts in ms (default: 60000) + watermark: WatermarkConfig; // Watermark overlay settings + videoUnsubscribePresetsRegex?: string[]; // Regex patterns to unsubscribe video for matching presets +} +``` + +Example: + +```js +const config = { + uiKit: false, + waitTimeMs: 60000, + watermark: { enabled: false }, + videoUnsubscribePresetsRegex: ["Host$"] +}; +const encoded = btoa(JSON.stringify(config)); +// Use: ?authToken=&config= +``` + +## Deploy to Cloudflare Workers + +[![Deploy to Cloudflare Workers](https://deploy.workers.cloudflare.com/button)](https://deploy.workers.cloudflare.com/?url=https://github.com/cloudflare/realtimekit-web-examples/tree/staging/recording-sdk-app-samples/react-examples/recording-with-watermark) + +### Staging + +```bash +pnpm deploy:staging +``` + +### Production + +```bash +pnpm deploy:production +``` diff --git a/recording-sdk-app-samples/react-examples/recording-with-watermark/package.json b/recording-sdk-app-samples/react-examples/recording-with-watermark/package.json index ed85ca4..415f138 100644 --- a/recording-sdk-app-samples/react-examples/recording-with-watermark/package.json +++ b/recording-sdk-app-samples/react-examples/recording-with-watermark/package.json @@ -5,7 +5,9 @@ "scripts": { "dev": "vite", "build": "tsc && vite build", - "preview": "vite preview" + "preview": "vite preview", + "deploy:staging": "pnpm build && wrangler deploy --env staging", + "deploy:production": "pnpm build && wrangler deploy --env production" }, "dependencies": { "@dyteinternals/utils": "^3.0.0", @@ -31,6 +33,7 @@ "postcss": "^8.4.21", "tailwindcss": "^3.3.1", "typescript": "^4.6.4", - "vite": "^3.2.3" + "vite": "^3.2.3", + "wrangler": "^3.99.0" } } diff --git a/recording-sdk-app-samples/react-examples/recording-with-watermark/src/components/RecordingView.tsx b/recording-sdk-app-samples/react-examples/recording-with-watermark/src/components/RecordingView.tsx index 2163d0b..f7027a0 100644 --- a/recording-sdk-app-samples/react-examples/recording-with-watermark/src/components/RecordingView.tsx +++ b/recording-sdk-app-samples/react-examples/recording-with-watermark/src/components/RecordingView.tsx @@ -86,16 +86,12 @@ export default function UIKitMeeting(props: { let uiKitConfig = defaultUIConfig as UIConfig; if ( - client.__internals__.features.hasFeature("video_subscription_override") + config.videoUnsubscribePresetsRegex && + config.videoUnsubscribePresetsRegex.length > 0 ) { - console.log("enbale video subscription override"); + console.log("enable video subscription override"); try { - const overrides = JSON.parse( - client.__internals__.features.getFeatureValue( - "video_subscription_override", - ), - ); - const preset = overrides[client.self.organizationId] ?? []; + const preset = config.videoUnsubscribePresetsRegex; console.log("subscription override", preset); if (preset && preset.length > 0) { setOverrides({ videoUnsubscribed: { preset } }); diff --git a/recording-sdk-app-samples/react-examples/recording-with-watermark/src/controllers/FlagsmithController.ts b/recording-sdk-app-samples/react-examples/recording-with-watermark/src/controllers/FlagsmithController.ts deleted file mode 100644 index 491af7f..0000000 --- a/recording-sdk-app-samples/react-examples/recording-with-watermark/src/controllers/FlagsmithController.ts +++ /dev/null @@ -1,62 +0,0 @@ -import axios, { AxiosInstance } from "axios"; -import { globalFlagsmith as flagsmith } from '@dyteinternals/utils'; - -export enum FlagsmithFeatureFlags { - QUICK_ZOOM = 'quick_zoom', - INTERNAL_CALL_STATS = 'internal_call_stats', - CFWS = 'cfws', - LOGROCKET = 'logrocket', - SIMULCAST = 'simulcast', - CHAT_SOCKET_SERVER = 'chat_socket_server', - PLUGIN_SOCKET_SERVER = 'plugin_socket_server', - DEV_MODE_PLUGINS = 'dev_mode_plugins', - NR_OTEL_WEB = 'nr_otel_web', - FEAT_SPOTLIGHT = 'feat_spotlight', - UIKIT_RECORDING = 'uikit_recording', - WAIT_TIME_MS = "wait_time_ms_recording" -} - -export default class FlagsmithController { - requests: AxiosInstance; - organizationId!: string; - participantId!: string; - meetingId!: string; - authToken!: string; - - - constructor(authToken: string, baseURI: string | null) { - const { meetingId } = JSON.parse(atob(authToken.split('.')[1])); - this.requests = axios.create({ - baseURL: baseURI? `https://api.${baseURI}`: 'https://api.realtime.cloudflare.com', - timeout: 5000, - headers: { - Authorization: `Bearer ${authToken}`, - }, - }); - this.authToken = authToken; - this.meetingId = meetingId; - } - - async init() { - - - const res = await this.requests.get('/v2/internals/participant-details'); - this.organizationId = res?.data?.data?.participant?.organization_id; - this.participantId = res?.data?.data?.participant?.id; - - const randomString = Math.random().toString(36).substring(2,7); - await flagsmith.identify(`recorder_${this.participantId}_${randomString}`, { - roomName: this.meetingId, - organizationId: this.organizationId, - }); - } - - useUiKit() { - return flagsmith.hasFeature(FlagsmithFeatureFlags.FEAT_SPOTLIGHT) || - flagsmith.hasFeature(FlagsmithFeatureFlags.UIKIT_RECORDING); - } - - getWaitTimeMS() { - return parseInt(flagsmith.getValue(FlagsmithFeatureFlags.WAIT_TIME_MS) || '0', 10); - } -} \ No newline at end of file diff --git a/recording-sdk-app-samples/react-examples/recording-with-watermark/src/pages/RecordingPage.tsx b/recording-sdk-app-samples/react-examples/recording-with-watermark/src/pages/RecordingPage.tsx index ecca931..f242b24 100644 --- a/recording-sdk-app-samples/react-examples/recording-with-watermark/src/pages/RecordingPage.tsx +++ b/recording-sdk-app-samples/react-examples/recording-with-watermark/src/pages/RecordingPage.tsx @@ -1,9 +1,8 @@ -import React, { useEffect, useState } from 'react'; -import { useParams, useSearchParams } from 'react-router-dom'; +import { useEffect, useState } from 'react'; +import { useSearchParams } from 'react-router-dom'; import RecordingView from '../components/RecordingView'; import Watermark, { WatermarkConfig, WatermarkPosition } from '../components/Watermark'; import { MeetingConfig } from '../types'; -import FlagsmithController from '../controllers/FlagsmithController'; const DEFAULT_WATERMARK_CONFIG: WatermarkConfig = { @@ -18,43 +17,23 @@ const DEFAULT_WATERMARK_CONFIG: WatermarkConfig = { const DEFAULT_UIKIT = false; const DEFAULT_WAIT_TIME_MS = 60000; +const DEFAULT_VIDEO_UNSUBSCRIBE_PRESETS_REGEX: string[] = []; // Eg: ["Host$","interviewer*"] const DEFAULT_MEETING_CONFIG: MeetingConfig = { uiKit: DEFAULT_UIKIT, waitTimeMs: DEFAULT_WAIT_TIME_MS, watermark: DEFAULT_WATERMARK_CONFIG, + videoUnsubscribePresetsRegex: DEFAULT_VIDEO_UNSUBSCRIBE_PRESETS_REGEX, } function RecordingPage() { const [searchParams,] = useSearchParams(); const [config, setConfig] = useState(null); - const [flagsmith, setFlagsmith] = useState(null); const authToken = searchParams.get('authToken') as string; let baseURI = searchParams.get('baseURI'); useEffect(() => { - - const initializeFlagsmith = async (authToken: string) => { - const controller = new FlagsmithController(authToken, baseURI); - - try { - await controller.init(); - } catch (err) { - console.error("Failed to initialize flagsmith with error", err); - } - setFlagsmith(controller); - }; - if (authToken) { - initializeFlagsmith(authToken); - } - }, [authToken, setFlagsmith , baseURI]); - - useEffect(() => { - if (flagsmith === null) { - return; - } - const configJson = searchParams.get("config"); let parsedConfig: MeetingConfig; @@ -75,7 +54,9 @@ function RecordingPage() { parsedConfig.waitTimeMs = DEFAULT_WAIT_TIME_MS; } - parsedConfig.waitTimeMs = flagsmith.getWaitTimeMS() || parsedConfig.waitTimeMs; + if(!parsedConfig.videoUnsubscribePresetsRegex) { + parsedConfig.videoUnsubscribePresetsRegex = DEFAULT_VIDEO_UNSUBSCRIBE_PRESETS_REGEX; + } if (parsedConfig.watermark === undefined) { parsedConfig.watermark = DEFAULT_WATERMARK_CONFIG; @@ -87,7 +68,7 @@ function RecordingPage() { } setConfig(parsedConfig); - }, [setConfig, searchParams, flagsmith]); + }, [setConfig, searchParams]); if (!authToken) { return ( @@ -95,7 +76,7 @@ function RecordingPage() { ); } - if (config == null || flagsmith == null) { + if (config == null) { return (

Initializing.....

) diff --git a/recording-sdk-app-samples/react-examples/recording-with-watermark/src/types.ts b/recording-sdk-app-samples/react-examples/recording-with-watermark/src/types.ts index cd62438..337d8b3 100644 --- a/recording-sdk-app-samples/react-examples/recording-with-watermark/src/types.ts +++ b/recording-sdk-app-samples/react-examples/recording-with-watermark/src/types.ts @@ -4,4 +4,5 @@ export interface MeetingConfig { uiKit: boolean; watermark: WatermarkConfig; waitTimeMs: number; + videoUnsubscribePresetsRegex?: string[]; } \ No newline at end of file diff --git a/recording-sdk-app-samples/react-examples/recording-with-watermark/wrangler.jsonc b/recording-sdk-app-samples/react-examples/recording-with-watermark/wrangler.jsonc new file mode 100644 index 0000000..44bd2fd --- /dev/null +++ b/recording-sdk-app-samples/react-examples/recording-with-watermark/wrangler.jsonc @@ -0,0 +1,17 @@ +{ + "$schema": "node_modules/wrangler/config-schema.json", + "name": "recording-app-recording-with-watermark-production", + "compatibility_date": "2024-11-01", + "assets": { + "directory": "./dist", + "not_found_handling": "single-page-application" + }, + "env": { + "staging": { + "name": "recording-app-recording-with-watermark-staging" + }, + "production": { + "name": "recording-app-recording-with-watermark-production" + } + } +} diff --git a/recording-sdk-app-samples/react-examples/screenshare-focused-with-snapshot-capture/.gitignore b/recording-sdk-app-samples/react-examples/screenshare-focused-with-snapshot-capture/.gitignore index 93222a6..208f5e6 100644 --- a/recording-sdk-app-samples/react-examples/screenshare-focused-with-snapshot-capture/.gitignore +++ b/recording-sdk-app-samples/react-examples/screenshare-focused-with-snapshot-capture/.gitignore @@ -1,5 +1,4 @@ -/.vercel /node_modules /dist -.vercel +.wrangler .DS_Store diff --git a/recording-sdk-app-samples/react-examples/screenshare-focused-with-snapshot-capture/README.md b/recording-sdk-app-samples/react-examples/screenshare-focused-with-snapshot-capture/README.md new file mode 100644 index 0000000..52b41d6 --- /dev/null +++ b/recording-sdk-app-samples/react-examples/screenshare-focused-with-snapshot-capture/README.md @@ -0,0 +1,28 @@ +# Recording App - Screenshare Focused with Snapshot Capture + +A recording SDK example with a screenshare-focused layout plus periodic JPEG snapshot capture. Snapshots are captured via `canvas.toDataURL` and POSTed to a configurable endpoint. + +## Local Development + +```bash +pnpm install +pnpm dev +``` + +Open `http://localhost:5173/?authToken=` in your browser. + +## Deploy to Cloudflare Workers + +[![Deploy to Cloudflare Workers](https://deploy.workers.cloudflare.com/button)](https://deploy.workers.cloudflare.com/?url=https://github.com/cloudflare/realtimekit-web-examples/tree/staging/recording-sdk-app-samples/react-examples/screenshare-focused-with-snapshot-capture) + +### Staging + +```bash +pnpm deploy:staging +``` + +### Production + +```bash +pnpm deploy:production +``` diff --git a/recording-sdk-app-samples/react-examples/screenshare-focused-with-snapshot-capture/package.json b/recording-sdk-app-samples/react-examples/screenshare-focused-with-snapshot-capture/package.json index ea2b4f8..691fd1d 100644 --- a/recording-sdk-app-samples/react-examples/screenshare-focused-with-snapshot-capture/package.json +++ b/recording-sdk-app-samples/react-examples/screenshare-focused-with-snapshot-capture/package.json @@ -6,7 +6,9 @@ "scripts": { "dev": "vite", "build": "tsc && vite build", - "preview": "vite preview" + "preview": "vite preview", + "deploy:staging": "pnpm build && wrangler deploy --env staging", + "deploy:production": "pnpm build && wrangler deploy --env production" }, "dependencies": { "@cloudflare/realtimekit": "^2.0.0", @@ -31,6 +33,7 @@ "postcss": "^8.4.21", "tailwindcss": "^3.3.1", "typescript": "^4.6.4", - "vite": "^3.2.3" + "vite": "^3.2.3", + "wrangler": "^3.99.0" } } diff --git a/recording-sdk-app-samples/react-examples/screenshare-focused-with-snapshot-capture/wrangler.jsonc b/recording-sdk-app-samples/react-examples/screenshare-focused-with-snapshot-capture/wrangler.jsonc new file mode 100644 index 0000000..f97deb4 --- /dev/null +++ b/recording-sdk-app-samples/react-examples/screenshare-focused-with-snapshot-capture/wrangler.jsonc @@ -0,0 +1,17 @@ +{ + "$schema": "node_modules/wrangler/config-schema.json", + "name": "recording-app-screenshare-focused-with-snapshot-capture-production", + "compatibility_date": "2024-11-01", + "assets": { + "directory": "./dist", + "not_found_handling": "single-page-application" + }, + "env": { + "staging": { + "name": "recording-app-screenshare-focused-with-snapshot-capture-staging" + }, + "production": { + "name": "recording-app-screenshare-focused-with-snapshot-capture-production" + } + } +} diff --git a/recording-sdk-app-samples/react-examples/screenshare-focused/.gitignore b/recording-sdk-app-samples/react-examples/screenshare-focused/.gitignore index 93222a6..208f5e6 100644 --- a/recording-sdk-app-samples/react-examples/screenshare-focused/.gitignore +++ b/recording-sdk-app-samples/react-examples/screenshare-focused/.gitignore @@ -1,5 +1,4 @@ -/.vercel /node_modules /dist -.vercel +.wrangler .DS_Store diff --git a/recording-sdk-app-samples/react-examples/screenshare-focused/README.md b/recording-sdk-app-samples/react-examples/screenshare-focused/README.md new file mode 100644 index 0000000..c2cbd9e --- /dev/null +++ b/recording-sdk-app-samples/react-examples/screenshare-focused/README.md @@ -0,0 +1,28 @@ +# Recording App - Screenshare Focused + +A recording SDK example with a screenshare-focused layout. Displays the screenshare fullscreen with participant video bubbles overlaid. + +## Local Development + +```bash +pnpm install +pnpm dev +``` + +Open `http://localhost:5173/?authToken=` in your browser. + +## Deploy to Cloudflare Workers + +[![Deploy to Cloudflare Workers](https://deploy.workers.cloudflare.com/button)](https://deploy.workers.cloudflare.com/?url=https://github.com/cloudflare/realtimekit-web-examples/tree/staging/recording-sdk-app-samples/react-examples/screenshare-focused) + +### Staging + +```bash +pnpm deploy:staging +``` + +### Production + +```bash +pnpm deploy:production +``` diff --git a/recording-sdk-app-samples/react-examples/screenshare-focused/package.json b/recording-sdk-app-samples/react-examples/screenshare-focused/package.json index 3cb0463..8b43240 100644 --- a/recording-sdk-app-samples/react-examples/screenshare-focused/package.json +++ b/recording-sdk-app-samples/react-examples/screenshare-focused/package.json @@ -5,7 +5,9 @@ "scripts": { "dev": "vite", "build": "tsc && vite build", - "preview": "vite preview" + "preview": "vite preview", + "deploy:staging": "pnpm build && wrangler deploy --env staging", + "deploy:production": "pnpm build && wrangler deploy --env production" }, "dependencies": { "@cloudflare/realtimekit": "^2.0.0", @@ -27,6 +29,7 @@ "postcss": "^8.4.21", "tailwindcss": "^3.3.1", "typescript": "^4.6.4", - "vite": "^3.2.3" + "vite": "^3.2.3", + "wrangler": "^3.99.0" } } diff --git a/recording-sdk-app-samples/react-examples/screenshare-focused/wrangler.jsonc b/recording-sdk-app-samples/react-examples/screenshare-focused/wrangler.jsonc new file mode 100644 index 0000000..dd6cf47 --- /dev/null +++ b/recording-sdk-app-samples/react-examples/screenshare-focused/wrangler.jsonc @@ -0,0 +1,17 @@ +{ + "$schema": "node_modules/wrangler/config-schema.json", + "name": "recording-app-screenshare-focused-production", + "compatibility_date": "2024-11-01", + "assets": { + "directory": "./dist", + "not_found_handling": "single-page-application" + }, + "env": { + "staging": { + "name": "recording-app-screenshare-focused-staging" + }, + "production": { + "name": "recording-app-screenshare-focused-production" + } + } +} From d5dbfbc171d786506b91039646d3ed58ee236f8e Mon Sep 17 00:00:00 2001 From: Ravindra Singh Rathor Date: Tue, 30 Jun 2026 15:58:49 +0530 Subject: [PATCH 02/13] fix(ci): updating lock file --- pnpm-lock.yaml | 515 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 508 insertions(+), 7 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d03be1a..8bde0de 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1420,6 +1420,9 @@ importers: vite: specifier: ^5.3.1 version: 5.4.21(@types/node@22.19.21)(less@4.1.3)(lightningcss@1.30.1)(sass@1.58.1)(terser@5.48.0) + wrangler: + specifier: ^3.99.0 + version: 3.114.17 recording-sdk-app-samples/react-examples/recording-with-watermark: dependencies: @@ -1490,6 +1493,9 @@ importers: vite: specifier: ^3.2.3 version: 3.2.11(@types/node@22.19.21)(less@4.1.3)(sass@1.58.1)(terser@5.48.0) + wrangler: + specifier: ^3.99.0 + version: 3.114.17 recording-sdk-app-samples/react-examples/screenshare-focused: dependencies: @@ -1548,6 +1554,9 @@ importers: vite: specifier: ^3.2.3 version: 3.2.11(@types/node@22.19.21)(less@4.1.3)(sass@1.58.1)(terser@5.48.0) + wrangler: + specifier: ^3.99.0 + version: 3.114.17 recording-sdk-app-samples/react-examples/screenshare-focused-with-snapshot-capture: dependencies: @@ -1615,6 +1624,9 @@ importers: vite: specifier: ^3.2.3 version: 3.2.11(@types/node@22.19.21)(less@4.1.3)(sass@1.58.1)(terser@5.48.0) + wrangler: + specifier: ^3.99.0 + version: 3.114.17 packages: @@ -2418,6 +2430,10 @@ packages: resolution: {integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==} engines: {node: '>=6.9.0'} + '@cloudflare/kv-asset-handler@0.3.4': + resolution: {integrity: sha512-YLPHc8yASwjNkmcDMQMY35yiWjoKAKnhUbPRszBRS0YgH+IXtsMp61j+yTcnCE3oO2DgP0U3iejLC8FTtKDC8Q==} + engines: {node: '>=16.13'} + '@cloudflare/kv-asset-handler@0.4.0': resolution: {integrity: sha512-+tv3z+SPp+gqTIcImN9o0hqE9xyfQjI1XD9pL6NuKjua9B1y7mNYv0S9cP+QEbA4ppVgGZEmKOvHX5G5Ei1CVA==} engines: {node: '>=18.0.0'} @@ -2460,6 +2476,15 @@ packages: '@cloudflare/realtimekit@2.0.0': resolution: {integrity: sha512-z066fbMEqCsfaz5xDUsLphZt5uxydA1tv0BDZFAZxSWg90NGlmUJKZ0/byNQMkHQp0gpTWCYY/Ph5TODzYlZkw==} + '@cloudflare/unenv-preset@2.0.2': + resolution: {integrity: sha512-nyzYnlZjjV5xT3LizahG1Iu6mnrCaxglJ04rZLpDwlDVDZ7v46lNsfxhV3A/xtfgQuSHmLnc6SVI+KwBpc3Lwg==} + peerDependencies: + unenv: 2.0.0-rc.14 + workerd: ^1.20250124.0 + peerDependenciesMeta: + workerd: + optional: true + '@cloudflare/unenv-preset@2.7.4': resolution: {integrity: sha512-KIjbu/Dt50zseJIoOOK5y4eYpSojD9+xxkePYVK1Rg9k/p/st4YyMtz1Clju/zrenJHrOH+AAcjNArOPMwH4Bw==} peerDependencies: @@ -2475,30 +2500,60 @@ packages: vite: ^6.1.0 || ^7.0.0 wrangler: ^4.40.2 + '@cloudflare/workerd-darwin-64@1.20250718.0': + resolution: {integrity: sha512-FHf4t7zbVN8yyXgQ/r/GqLPaYZSGUVzeR7RnL28Mwj2djyw2ZergvytVc7fdGcczl6PQh+VKGfZCfUqpJlbi9g==} + engines: {node: '>=16'} + cpu: [x64] + os: [darwin] + '@cloudflare/workerd-darwin-64@1.20250924.0': resolution: {integrity: sha512-/+nWoNDIzdQaQib7MrWYEfeDt1vA40Ah68nXlZGXHonkIqJvkjaTP8dzdKZLuwnQokiV/SpnAXNMH0WGH31XMw==} engines: {node: '>=16'} cpu: [x64] os: [darwin] + '@cloudflare/workerd-darwin-arm64@1.20250718.0': + resolution: {integrity: sha512-fUiyUJYyqqp4NqJ0YgGtp4WJh/II/YZsUnEb6vVy5Oeas8lUOxnN+ZOJ8N/6/5LQCVAtYCChRiIrBbfhTn5Z8Q==} + engines: {node: '>=16'} + cpu: [arm64] + os: [darwin] + '@cloudflare/workerd-darwin-arm64@1.20250924.0': resolution: {integrity: sha512-UAjC5mra+WNWy6jMbIDe9orsFmYvvMlfvZdUyn5p3NlQhhU6cc4FkFuXJ/bV+6oVw5hIhlLlFCTnsGatki/uHg==} engines: {node: '>=16'} cpu: [arm64] os: [darwin] + '@cloudflare/workerd-linux-64@1.20250718.0': + resolution: {integrity: sha512-5+eb3rtJMiEwp08Kryqzzu8d1rUcK+gdE442auo5eniMpT170Dz0QxBrqkg2Z48SFUPYbj+6uknuA5tzdRSUSg==} + engines: {node: '>=16'} + cpu: [x64] + os: [linux] + '@cloudflare/workerd-linux-64@1.20250924.0': resolution: {integrity: sha512-IcwaoZFXGHq+yOBEj91QZH4qU61ws5upE7T43wVcrUAk8VXgxL12IGUVkMCEqfFXTO40PjKZBmK16B2q1HoFow==} engines: {node: '>=16'} cpu: [x64] os: [linux] + '@cloudflare/workerd-linux-arm64@1.20250718.0': + resolution: {integrity: sha512-Aa2M/DVBEBQDdATMbn217zCSFKE+ud/teS+fFS+OQqKABLn0azO2qq6ANAHYOIE6Q3Sq4CxDIQr8lGdaJHwUog==} + engines: {node: '>=16'} + cpu: [arm64] + os: [linux] + '@cloudflare/workerd-linux-arm64@1.20250924.0': resolution: {integrity: sha512-NgKG/cJiRNoJFa8QqweG0/bpkrUYKpR9mA9/qLJcGiwfvJrfK9b+ucw0lCru1BVMlyuS3kWDjagjMWqfujdBkA==} engines: {node: '>=16'} cpu: [arm64] os: [linux] + '@cloudflare/workerd-windows-64@1.20250718.0': + resolution: {integrity: sha512-dY16RXKffmugnc67LTbyjdDHZn5NoTF1yHEf2fN4+OaOnoGSp3N1x77QubTDwqZ9zECWxgQfDLjddcH8dWeFhg==} + engines: {node: '>=16'} + cpu: [x64] + os: [win32] + '@cloudflare/workerd-windows-64@1.20250924.0': resolution: {integrity: sha512-PntewemtjgLO2+8Gjw3G/NowDjpWZNKpKk/n4KmOQaWS9jIRq3IG1LkTqxj/BbMXqa4Oyrywk2kdqspj6QllOw==} engines: {node: '>=16'} @@ -2523,6 +2578,16 @@ packages: '@emnapi/runtime@1.11.1': resolution: {integrity: sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==} + '@esbuild-plugins/node-globals-polyfill@0.2.3': + resolution: {integrity: sha512-r3MIryXDeXDOZh7ih1l/yE9ZLORCd5e8vWg02azWRGj5SPTuoh69A2AIyn0Z31V/kHBfZ4HgWJ+OK3GTTwLmnw==} + peerDependencies: + esbuild: '*' + + '@esbuild-plugins/node-modules-polyfill@0.2.2': + resolution: {integrity: sha512-LXV7QsWJxRuMYvKbiznh+U1ilIop3g2TeKRzUxOG5X3YITc8JyyTa90BmLwqqv0YnX4v32CSlG+vsziZp9dMvA==} + peerDependencies: + esbuild: '*' + '@esbuild/aix-ppc64@0.21.5': resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} engines: {node: '>=12'} @@ -2541,6 +2606,12 @@ packages: cpu: [ppc64] os: [aix] + '@esbuild/android-arm64@0.17.19': + resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm64@0.17.8': resolution: {integrity: sha512-oa/N5j6v1svZQs7EIRPqR8f+Bf8g6HBDjD/xHC02radE/NjKHK7oQmtmLxPs1iVwYyvE+Kolo6lbpfEQ9xnhxQ==} engines: {node: '>=12'} @@ -2577,6 +2648,12 @@ packages: cpu: [arm] os: [android] + '@esbuild/android-arm@0.17.19': + resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + '@esbuild/android-arm@0.17.8': resolution: {integrity: sha512-0/rb91GYKhrtbeglJXOhAv9RuYimgI8h623TplY2X+vA4EXnk3Zj1fXZreJ0J3OJJu1bwmb0W7g+2cT/d8/l/w==} engines: {node: '>=12'} @@ -2607,6 +2684,12 @@ packages: cpu: [arm] os: [android] + '@esbuild/android-x64@0.17.19': + resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + '@esbuild/android-x64@0.17.8': resolution: {integrity: sha512-bTliMLqD7pTOoPg4zZkXqCDuzIUguEWLpeqkNfC41ODBHwoUgZ2w5JBeYimv4oP6TDVocoYmEhZrCLQTrH89bg==} engines: {node: '>=12'} @@ -2637,6 +2720,12 @@ packages: cpu: [x64] os: [android] + '@esbuild/darwin-arm64@0.17.19': + resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-arm64@0.17.8': resolution: {integrity: sha512-ghAbV3ia2zybEefXRRm7+lx8J/rnupZT0gp9CaGy/3iolEXkJ6LYRq4IpQVI9zR97ID80KJVoUlo3LSeA/sMAg==} engines: {node: '>=12'} @@ -2667,6 +2756,12 @@ packages: cpu: [arm64] os: [darwin] + '@esbuild/darwin-x64@0.17.19': + resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + '@esbuild/darwin-x64@0.17.8': resolution: {integrity: sha512-n5WOpyvZ9TIdv2V1K3/iIkkJeKmUpKaCTdun9buhGRWfH//osmUjlv4Z5mmWdPWind/VGcVxTHtLfLCOohsOXw==} engines: {node: '>=12'} @@ -2697,6 +2792,12 @@ packages: cpu: [x64] os: [darwin] + '@esbuild/freebsd-arm64@0.17.19': + resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-arm64@0.17.8': resolution: {integrity: sha512-a/SATTaOhPIPFWvHZDoZYgxaZRVHn0/LX1fHLGfZ6C13JqFUZ3K6SMD6/HCtwOQ8HnsNaEeokdiDSFLuizqv5A==} engines: {node: '>=12'} @@ -2727,6 +2828,12 @@ packages: cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-x64@0.17.19': + resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + '@esbuild/freebsd-x64@0.17.8': resolution: {integrity: sha512-xpFJb08dfXr5+rZc4E+ooZmayBW6R3q59daCpKZ/cDU96/kvDM+vkYzNeTJCGd8rtO6fHWMq5Rcv/1cY6p6/0Q==} engines: {node: '>=12'} @@ -2757,6 +2864,12 @@ packages: cpu: [x64] os: [freebsd] + '@esbuild/linux-arm64@0.17.19': + resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm64@0.17.8': resolution: {integrity: sha512-v3iwDQuDljLTxpsqQDl3fl/yihjPAyOguxuloON9kFHYwopeJEf1BkDXODzYyXEI19gisEsQlG1bM65YqKSIww==} engines: {node: '>=12'} @@ -2787,6 +2900,12 @@ packages: cpu: [arm64] os: [linux] + '@esbuild/linux-arm@0.17.19': + resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + '@esbuild/linux-arm@0.17.8': resolution: {integrity: sha512-6Ij8gfuGszcEwZpi5jQIJCVIACLS8Tz2chnEBfYjlmMzVsfqBP1iGmHQPp7JSnZg5xxK9tjCc+pJ2WtAmPRFVA==} engines: {node: '>=12'} @@ -2817,6 +2936,12 @@ packages: cpu: [arm] os: [linux] + '@esbuild/linux-ia32@0.17.19': + resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-ia32@0.17.8': resolution: {integrity: sha512-8svILYKhE5XetuFk/B6raFYIyIqydQi+GngEXJgdPdI7OMKUbSd7uzR02wSY4kb53xBrClLkhH4Xs8P61Q2BaA==} engines: {node: '>=12'} @@ -2853,6 +2978,12 @@ packages: cpu: [loong64] os: [linux] + '@esbuild/linux-loong64@0.17.19': + resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-loong64@0.17.8': resolution: {integrity: sha512-B6FyMeRJeV0NpyEOYlm5qtQfxbdlgmiGdD+QsipzKfFky0K5HW5Td6dyK3L3ypu1eY4kOmo7wW0o94SBqlqBSA==} engines: {node: '>=12'} @@ -2883,6 +3014,12 @@ packages: cpu: [loong64] os: [linux] + '@esbuild/linux-mips64el@0.17.19': + resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-mips64el@0.17.8': resolution: {integrity: sha512-CCb67RKahNobjm/eeEqeD/oJfJlrWyw29fgiyB6vcgyq97YAf3gCOuP6qMShYSPXgnlZe/i4a8WFHBw6N8bYAA==} engines: {node: '>=12'} @@ -2913,6 +3050,12 @@ packages: cpu: [mips64el] os: [linux] + '@esbuild/linux-ppc64@0.17.19': + resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-ppc64@0.17.8': resolution: {integrity: sha512-bytLJOi55y55+mGSdgwZ5qBm0K9WOCh0rx+vavVPx+gqLLhxtSFU0XbeYy/dsAAD6xECGEv4IQeFILaSS2auXw==} engines: {node: '>=12'} @@ -2943,6 +3086,12 @@ packages: cpu: [ppc64] os: [linux] + '@esbuild/linux-riscv64@0.17.19': + resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-riscv64@0.17.8': resolution: {integrity: sha512-2YpRyQJmKVBEHSBLa8kBAtbhucaclb6ex4wchfY0Tj3Kg39kpjeJ9vhRU7x4mUpq8ISLXRXH1L0dBYjAeqzZAw==} engines: {node: '>=12'} @@ -2973,6 +3122,12 @@ packages: cpu: [riscv64] os: [linux] + '@esbuild/linux-s390x@0.17.19': + resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-s390x@0.17.8': resolution: {integrity: sha512-QgbNY/V3IFXvNf11SS6exkpVcX0LJcob+0RWCgV9OiDAmVElnxciHIisoSix9uzYzScPmS6dJFbZULdSAEkQVw==} engines: {node: '>=12'} @@ -3003,6 +3158,12 @@ packages: cpu: [s390x] os: [linux] + '@esbuild/linux-x64@0.17.19': + resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + '@esbuild/linux-x64@0.17.8': resolution: {integrity: sha512-mM/9S0SbAFDBc4OPoyP6SEOo5324LpUxdpeIUUSrSTOfhHU9hEfqRngmKgqILqwx/0DVJBzeNW7HmLEWp9vcOA==} engines: {node: '>=12'} @@ -3045,6 +3206,12 @@ packages: cpu: [arm64] os: [netbsd] + '@esbuild/netbsd-x64@0.17.19': + resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + '@esbuild/netbsd-x64@0.17.8': resolution: {integrity: sha512-eKUYcWaWTaYr9zbj8GertdVtlt1DTS1gNBWov+iQfWuWyuu59YN6gSEJvFzC5ESJ4kMcKR0uqWThKUn5o8We6Q==} engines: {node: '>=12'} @@ -3087,6 +3254,12 @@ packages: cpu: [arm64] os: [openbsd] + '@esbuild/openbsd-x64@0.17.19': + resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + '@esbuild/openbsd-x64@0.17.8': resolution: {integrity: sha512-Vc9J4dXOboDyMXKD0eCeW0SIeEzr8K9oTHJU+Ci1mZc5njPfhKAqkRt3B/fUNU7dP+mRyralPu8QUkiaQn7iIg==} engines: {node: '>=12'} @@ -3123,6 +3296,12 @@ packages: cpu: [arm64] os: [openharmony] + '@esbuild/sunos-x64@0.17.19': + resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + '@esbuild/sunos-x64@0.17.8': resolution: {integrity: sha512-0xvOTNuPXI7ft1LYUgiaXtpCEjp90RuBBYovdd2lqAFxje4sEucurg30M1WIm03+3jxByd3mfo+VUmPtRSVuOw==} engines: {node: '>=12'} @@ -3153,6 +3332,12 @@ packages: cpu: [x64] os: [sunos] + '@esbuild/win32-arm64@0.17.19': + resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-arm64@0.17.8': resolution: {integrity: sha512-G0JQwUI5WdEFEnYNKzklxtBheCPkuDdu1YrtRrjuQv30WsYbkkoixKxLLv8qhJmNI+ATEWquZe/N0d0rpr55Mg==} engines: {node: '>=12'} @@ -3183,6 +3368,12 @@ packages: cpu: [arm64] os: [win32] + '@esbuild/win32-ia32@0.17.19': + resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-ia32@0.17.8': resolution: {integrity: sha512-Fqy63515xl20OHGFykjJsMnoIWS+38fqfg88ClvPXyDbLtgXal2DTlhb1TfTX34qWi3u4I7Cq563QcHpqgLx8w==} engines: {node: '>=12'} @@ -3213,6 +3404,12 @@ packages: cpu: [ia32] os: [win32] + '@esbuild/win32-x64@0.17.19': + resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + '@esbuild/win32-x64@0.17.8': resolution: {integrity: sha512-1iuezdyDNngPnz8rLRDO2C/ZZ/emJLb72OsZeqQ6gL6Avko/XCXZw+NuxBSNhBAP13Hie418V7VMt9et1FMvpg==} engines: {node: '>=12'} @@ -3289,6 +3486,10 @@ packages: resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@fastify/busboy@2.1.1': + resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} + engines: {node: '>=14'} + '@floating-ui/core@1.7.5': resolution: {integrity: sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ==} @@ -4402,6 +4603,9 @@ packages: resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} engines: {node: '>= 0.4'} + as-table@1.0.55: + resolution: {integrity: sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==} + async-function@1.0.0: resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} engines: {node: '>= 0.4'} @@ -4831,6 +5035,9 @@ packages: custom-event@1.0.1: resolution: {integrity: sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==} + data-uri-to-buffer@2.0.2: + resolution: {integrity: sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==} + data-view-buffer@1.0.2: resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} engines: {node: '>= 0.4'} @@ -5225,6 +5432,11 @@ packages: engines: {node: '>=12'} hasBin: true + esbuild@0.17.19: + resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} + engines: {node: '>=12'} + hasBin: true + esbuild@0.17.8: resolution: {integrity: sha512-g24ybC3fWhZddZK6R3uD2iF/RIPnRpwJAqLov6ouX3hMbY4+tKolP0VMF3zuIYCaXun+yHwS5IPQ91N2BT191g==} engines: {node: '>=12'} @@ -5383,6 +5595,9 @@ packages: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} + estree-walker@0.6.1: + resolution: {integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==} + esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} @@ -5613,6 +5828,9 @@ packages: resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} + get-source@2.0.12: + resolution: {integrity: sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==} + get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} @@ -6375,6 +6593,9 @@ packages: resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} engines: {node: '>=12'} + magic-string@0.25.9: + resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} + magic-string@0.26.7: resolution: {integrity: sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==} engines: {node: '>=12'} @@ -6485,6 +6706,11 @@ packages: peerDependencies: webpack: ^5.0.0 + miniflare@3.20250718.3: + resolution: {integrity: sha512-JuPrDJhwLrNLEJiNLWO7ZzJrv/Vv9kZuwMYCfv0LskQDM6Eonw4OvywO3CH/wCGjgHzha/qyjUh8JQ068TjDgQ==} + engines: {node: '>=16.13'} + hasBin: true + miniflare@4.20250924.0: resolution: {integrity: sha512-eQuWHklTeYYOil7sPPWo7Wrw86I4oac1kGAYfYcjg5dqMgMAiPUHvUWXMlTvW8ON6q33Ew23AsGDirm+Bea9ig==} engines: {node: '>=18.0.0'} @@ -6588,6 +6814,10 @@ packages: resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==} hasBin: true + mustache@4.2.0: + resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} + hasBin: true + mute-stream@0.0.8: resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} @@ -7057,6 +7287,9 @@ packages: resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} engines: {node: '>=6'} + printable-characters@1.0.42: + resolution: {integrity: sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==} + proc-log@2.0.1: resolution: {integrity: sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -7346,6 +7579,16 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true + rollup-plugin-inject@3.0.2: + resolution: {integrity: sha512-ptg9PQwzs3orn4jkgXJ74bfs5vYz1NCZlSQMBUA0wKcGp5i5pA1AO3fOUEte8enhGUC+iapTCzEWw2jEFFUO/w==} + deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-inject. + + rollup-plugin-node-polyfills@0.2.1: + resolution: {integrity: sha512-4kCrKPTJ6sK4/gLL/U5QzVT8cxJcofO0OU74tnB19F40cmuAKSzH5/siithxlofFEjwvw1YAhPmbvGNA6jEroA==} + + rollup-pluginutils@2.8.2: + resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==} + rollup@2.80.0: resolution: {integrity: sha512-cIFJOD1DESzpjOBl763Kp1AH7UE/0fcdHe6rZXUdQ9c50uvgigvW97u3IcSeBwOkgqL/PXPBktBCh0KEu5L8XQ==} engines: {node: '>=10.0.0'} @@ -7648,6 +7891,9 @@ packages: resolution: {integrity: sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + stacktracey@2.2.0: + resolution: {integrity: sha512-ETyQEz+CzXiLjEbyJqpbp+/T79RQD/6wqFucRBIlVNZfYq2Ay7wbretD4cxpbymZlaPWx58aIhPEY1Cr8DlVvg==} + statuses@1.5.0: resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} engines: {node: '>= 0.6'} @@ -7982,10 +8228,17 @@ packages: undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + undici@5.29.0: + resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==} + engines: {node: '>=14.0'} + undici@7.14.0: resolution: {integrity: sha512-Vqs8HTzjpQXZeXdpsfChQTlafcMQaaIwnGwLam1wudSSjlJeQ3bw1j+TLPePgrCnCpUXx7Ba5Pdpf5OBih62NQ==} engines: {node: '>=20.18.1'} + unenv@2.0.0-rc.14: + resolution: {integrity: sha512-od496pShMen7nOy5VmVJCnq8rptd45vh6Nx/r2iPbrba6pa6p+tS2ywuIHRZ/OBvSbQZB0kWvpO9XBNVFXHD3Q==} + unenv@2.0.0-rc.21: resolution: {integrity: sha512-Wj7/AMtE9MRnAXa6Su3Lk0LNCfqDYgfwVjwRFVum9U7wsto1imuHqk4kTm7Jni+5A0Hn7dttL6O/zjvUvoo+8A==} @@ -8401,11 +8654,26 @@ packages: worker-timers@7.0.60: resolution: {integrity: sha512-kom5j7+JQU0uuJAqAeFvxPpKlp21BH09YLMU/JLKA+0Zs3WTGk7WSBFYjdR3G+kjXr6qWD7zIcenv3oXaWBJzw==} + workerd@1.20250718.0: + resolution: {integrity: sha512-kqkIJP/eOfDlUyBzU7joBg+tl8aB25gEAGqDap+nFWb+WHhnooxjGHgxPBy3ipw2hnShPFNOQt5lFRxbwALirg==} + engines: {node: '>=16'} + hasBin: true + workerd@1.20250924.0: resolution: {integrity: sha512-ovO2vwRCcMOlOm3bNwQQrVb8KDcewE/3rjfbZAYSF535BQQDUZ9dE1kyGBYlGx4W5udH3kqmOr+0YqTBLlycyA==} engines: {node: '>=16'} hasBin: true + wrangler@3.114.17: + resolution: {integrity: sha512-tAvf7ly+tB+zwwrmjsCyJ2pJnnc7SZhbnNwXbH+OIdVas3zTSmjcZOjmLKcGGptssAA3RyTKhcF9BvKZzMUycA==} + engines: {node: '>=16.17.0'} + hasBin: true + peerDependencies: + '@cloudflare/workers-types': ^4.20250408.0 + peerDependenciesMeta: + '@cloudflare/workers-types': + optional: true + wrangler@4.40.2: resolution: {integrity: sha512-wcev8GF6GU4ME5AsYY/gUehHrGdRiUCkifuyCeuVvpOtha3TMK4/s39x+jLuJBRtibpgejDekO68rqxfamf16A==} engines: {node: '>=18.0.0'} @@ -8496,6 +8764,9 @@ packages: youch-core@0.3.3: resolution: {integrity: sha512-ho7XuGjLaJ2hWHoK8yFnsUGy2Y5uDpqSTq1FkHLK4/oqKtyUU1AFbOOxY4IpC9f0fTLjwYbslUz0Po5BpD1wrA==} + youch@3.3.4: + resolution: {integrity: sha512-UeVBXie8cA35DS6+nBkls68xaBBXCye0CNznrhszZjTbRVnJKQuNsyLKBTTL4ln1o1rh2PKtv35twV7irj5SEg==} + youch@4.1.0-beta.10: resolution: {integrity: sha512-rLfVLB4FgQneDr0dv1oddCVZmKjcJ6yX6mS4pU82Mq/Dt9a3cLZQ62pDBL4AUO+uVrCvtWz3ZFUL2HFAFJ/BXQ==} @@ -8586,7 +8857,7 @@ snapshots: dependencies: '@ampproject/remapping': 2.2.0 '@angular-devkit/architect': 0.1502.11(chokidar@3.5.3) - '@angular-devkit/build-webpack': 0.1502.11(chokidar@3.5.3)(webpack-dev-server@4.11.1(webpack@5.76.1(postcss@8.5.15)))(webpack@5.76.1(esbuild@0.17.8)(postcss@8.4.31)) + '@angular-devkit/build-webpack': 0.1502.11(chokidar@3.5.3)(webpack-dev-server@4.11.1(webpack@5.76.1(esbuild@0.17.8)(postcss@8.4.31)))(webpack@5.76.1(esbuild@0.17.8)(postcss@8.4.31)) '@angular-devkit/core': 15.2.11(chokidar@3.5.3) '@angular/compiler-cli': 15.2.10(@angular/compiler@15.2.10(@angular/core@15.2.10(rxjs@7.5.7)(zone.js@0.12.0)))(typescript@4.8.4) '@babel/core': 7.20.12 @@ -8643,7 +8914,7 @@ snapshots: typescript: 4.8.4 webpack: 5.76.1(esbuild@0.17.8)(postcss@8.4.31) webpack-dev-middleware: 6.1.2(webpack@5.76.1(esbuild@0.17.8)(postcss@8.4.31)) - webpack-dev-server: 4.11.1(webpack@5.76.1(postcss@8.5.15)) + webpack-dev-server: 4.11.1(webpack@5.76.1(esbuild@0.17.8)(postcss@8.4.31)) webpack-merge: 5.8.0 webpack-subresource-integrity: 5.1.0(webpack@5.76.1(esbuild@0.17.8)(postcss@8.4.31)) optionalDependencies: @@ -8672,12 +8943,12 @@ snapshots: - utf-8-validate - webpack-cli - '@angular-devkit/build-webpack@0.1502.11(chokidar@3.5.3)(webpack-dev-server@4.11.1(webpack@5.76.1(postcss@8.5.15)))(webpack@5.76.1(esbuild@0.17.8)(postcss@8.4.31))': + '@angular-devkit/build-webpack@0.1502.11(chokidar@3.5.3)(webpack-dev-server@4.11.1(webpack@5.76.1(esbuild@0.17.8)(postcss@8.4.31)))(webpack@5.76.1(esbuild@0.17.8)(postcss@8.4.31))': dependencies: '@angular-devkit/architect': 0.1502.11(chokidar@3.5.3) rxjs: 6.6.7 webpack: 5.76.1(esbuild@0.17.8)(postcss@8.4.31) - webpack-dev-server: 4.11.1(webpack@5.76.1(postcss@8.5.15)) + webpack-dev-server: 4.11.1(webpack@5.76.1(esbuild@0.17.8)(postcss@8.4.31)) transitivePeerDependencies: - chokidar @@ -9769,6 +10040,10 @@ snapshots: '@babel/helper-string-parser': 7.29.7 '@babel/helper-validator-identifier': 7.29.7 + '@cloudflare/kv-asset-handler@0.3.4': + dependencies: + mime: 3.0.0 + '@cloudflare/kv-asset-handler@0.4.0': dependencies: mime: 3.0.0 @@ -9819,6 +10094,12 @@ snapshots: uuid: 8.3.2 worker-timers: 7.0.60 + '@cloudflare/unenv-preset@2.0.2(unenv@2.0.0-rc.14)(workerd@1.20250718.0)': + dependencies: + unenv: 2.0.0-rc.14 + optionalDependencies: + workerd: 1.20250718.0 + '@cloudflare/unenv-preset@2.7.4(unenv@2.0.0-rc.21)(workerd@1.20250924.0)': dependencies: unenv: 2.0.0-rc.21 @@ -9842,18 +10123,33 @@ snapshots: - utf-8-validate - workerd + '@cloudflare/workerd-darwin-64@1.20250718.0': + optional: true + '@cloudflare/workerd-darwin-64@1.20250924.0': optional: true + '@cloudflare/workerd-darwin-arm64@1.20250718.0': + optional: true + '@cloudflare/workerd-darwin-arm64@1.20250924.0': optional: true + '@cloudflare/workerd-linux-64@1.20250718.0': + optional: true + '@cloudflare/workerd-linux-64@1.20250924.0': optional: true + '@cloudflare/workerd-linux-arm64@1.20250718.0': + optional: true + '@cloudflare/workerd-linux-arm64@1.20250924.0': optional: true + '@cloudflare/workerd-windows-64@1.20250718.0': + optional: true + '@cloudflare/workerd-windows-64@1.20250924.0': optional: true @@ -9874,6 +10170,16 @@ snapshots: tslib: 2.8.1 optional: true + '@esbuild-plugins/node-globals-polyfill@0.2.3(esbuild@0.17.19)': + dependencies: + esbuild: 0.17.19 + + '@esbuild-plugins/node-modules-polyfill@0.2.2(esbuild@0.17.19)': + dependencies: + esbuild: 0.17.19 + escape-string-regexp: 4.0.0 + rollup-plugin-node-polyfills: 0.2.1 + '@esbuild/aix-ppc64@0.21.5': optional: true @@ -9883,6 +10189,9 @@ snapshots: '@esbuild/aix-ppc64@0.25.4': optional: true + '@esbuild/android-arm64@0.17.19': + optional: true + '@esbuild/android-arm64@0.17.8': optional: true @@ -9901,6 +10210,9 @@ snapshots: '@esbuild/android-arm@0.15.18': optional: true + '@esbuild/android-arm@0.17.19': + optional: true + '@esbuild/android-arm@0.17.8': optional: true @@ -9916,6 +10228,9 @@ snapshots: '@esbuild/android-arm@0.25.4': optional: true + '@esbuild/android-x64@0.17.19': + optional: true + '@esbuild/android-x64@0.17.8': optional: true @@ -9931,6 +10246,9 @@ snapshots: '@esbuild/android-x64@0.25.4': optional: true + '@esbuild/darwin-arm64@0.17.19': + optional: true + '@esbuild/darwin-arm64@0.17.8': optional: true @@ -9946,6 +10264,9 @@ snapshots: '@esbuild/darwin-arm64@0.25.4': optional: true + '@esbuild/darwin-x64@0.17.19': + optional: true + '@esbuild/darwin-x64@0.17.8': optional: true @@ -9961,6 +10282,9 @@ snapshots: '@esbuild/darwin-x64@0.25.4': optional: true + '@esbuild/freebsd-arm64@0.17.19': + optional: true + '@esbuild/freebsd-arm64@0.17.8': optional: true @@ -9976,6 +10300,9 @@ snapshots: '@esbuild/freebsd-arm64@0.25.4': optional: true + '@esbuild/freebsd-x64@0.17.19': + optional: true + '@esbuild/freebsd-x64@0.17.8': optional: true @@ -9991,6 +10318,9 @@ snapshots: '@esbuild/freebsd-x64@0.25.4': optional: true + '@esbuild/linux-arm64@0.17.19': + optional: true + '@esbuild/linux-arm64@0.17.8': optional: true @@ -10006,6 +10336,9 @@ snapshots: '@esbuild/linux-arm64@0.25.4': optional: true + '@esbuild/linux-arm@0.17.19': + optional: true + '@esbuild/linux-arm@0.17.8': optional: true @@ -10021,6 +10354,9 @@ snapshots: '@esbuild/linux-arm@0.25.4': optional: true + '@esbuild/linux-ia32@0.17.19': + optional: true + '@esbuild/linux-ia32@0.17.8': optional: true @@ -10039,6 +10375,9 @@ snapshots: '@esbuild/linux-loong64@0.15.18': optional: true + '@esbuild/linux-loong64@0.17.19': + optional: true + '@esbuild/linux-loong64@0.17.8': optional: true @@ -10054,6 +10393,9 @@ snapshots: '@esbuild/linux-loong64@0.25.4': optional: true + '@esbuild/linux-mips64el@0.17.19': + optional: true + '@esbuild/linux-mips64el@0.17.8': optional: true @@ -10069,6 +10411,9 @@ snapshots: '@esbuild/linux-mips64el@0.25.4': optional: true + '@esbuild/linux-ppc64@0.17.19': + optional: true + '@esbuild/linux-ppc64@0.17.8': optional: true @@ -10084,6 +10429,9 @@ snapshots: '@esbuild/linux-ppc64@0.25.4': optional: true + '@esbuild/linux-riscv64@0.17.19': + optional: true + '@esbuild/linux-riscv64@0.17.8': optional: true @@ -10099,6 +10447,9 @@ snapshots: '@esbuild/linux-riscv64@0.25.4': optional: true + '@esbuild/linux-s390x@0.17.19': + optional: true + '@esbuild/linux-s390x@0.17.8': optional: true @@ -10114,6 +10465,9 @@ snapshots: '@esbuild/linux-s390x@0.25.4': optional: true + '@esbuild/linux-x64@0.17.19': + optional: true + '@esbuild/linux-x64@0.17.8': optional: true @@ -10135,6 +10489,9 @@ snapshots: '@esbuild/netbsd-arm64@0.25.4': optional: true + '@esbuild/netbsd-x64@0.17.19': + optional: true + '@esbuild/netbsd-x64@0.17.8': optional: true @@ -10156,6 +10513,9 @@ snapshots: '@esbuild/openbsd-arm64@0.25.4': optional: true + '@esbuild/openbsd-x64@0.17.19': + optional: true + '@esbuild/openbsd-x64@0.17.8': optional: true @@ -10174,6 +10534,9 @@ snapshots: '@esbuild/openharmony-arm64@0.25.12': optional: true + '@esbuild/sunos-x64@0.17.19': + optional: true + '@esbuild/sunos-x64@0.17.8': optional: true @@ -10189,6 +10552,9 @@ snapshots: '@esbuild/sunos-x64@0.25.4': optional: true + '@esbuild/win32-arm64@0.17.19': + optional: true + '@esbuild/win32-arm64@0.17.8': optional: true @@ -10204,6 +10570,9 @@ snapshots: '@esbuild/win32-arm64@0.25.4': optional: true + '@esbuild/win32-ia32@0.17.19': + optional: true + '@esbuild/win32-ia32@0.17.8': optional: true @@ -10219,6 +10588,9 @@ snapshots: '@esbuild/win32-ia32@0.25.4': optional: true + '@esbuild/win32-x64@0.17.19': + optional: true + '@esbuild/win32-x64@0.17.8': optional: true @@ -10301,6 +10673,8 @@ snapshots: '@eslint/core': 0.17.0 levn: 0.4.1 + '@fastify/busboy@2.1.1': {} + '@floating-ui/core@1.7.5': dependencies: '@floating-ui/utils': 0.2.11 @@ -11595,6 +11969,10 @@ snapshots: get-intrinsic: 1.3.0 is-array-buffer: 3.0.5 + as-table@1.0.55: + dependencies: + printable-characters: 1.0.42 + async-function@1.0.0: {} asynckit@0.4.0: {} @@ -12121,6 +12499,8 @@ snapshots: custom-event@1.0.1: {} + data-uri-to-buffer@2.0.2: {} + data-view-buffer@1.0.2: dependencies: call-bound: 1.0.4 @@ -12524,6 +12904,31 @@ snapshots: esbuild-windows-64: 0.15.18 esbuild-windows-arm64: 0.15.18 + esbuild@0.17.19: + optionalDependencies: + '@esbuild/android-arm': 0.17.19 + '@esbuild/android-arm64': 0.17.19 + '@esbuild/android-x64': 0.17.19 + '@esbuild/darwin-arm64': 0.17.19 + '@esbuild/darwin-x64': 0.17.19 + '@esbuild/freebsd-arm64': 0.17.19 + '@esbuild/freebsd-x64': 0.17.19 + '@esbuild/linux-arm': 0.17.19 + '@esbuild/linux-arm64': 0.17.19 + '@esbuild/linux-ia32': 0.17.19 + '@esbuild/linux-loong64': 0.17.19 + '@esbuild/linux-mips64el': 0.17.19 + '@esbuild/linux-ppc64': 0.17.19 + '@esbuild/linux-riscv64': 0.17.19 + '@esbuild/linux-s390x': 0.17.19 + '@esbuild/linux-x64': 0.17.19 + '@esbuild/netbsd-x64': 0.17.19 + '@esbuild/openbsd-x64': 0.17.19 + '@esbuild/sunos-x64': 0.17.19 + '@esbuild/win32-arm64': 0.17.19 + '@esbuild/win32-ia32': 0.17.19 + '@esbuild/win32-x64': 0.17.19 + esbuild@0.17.8: optionalDependencies: '@esbuild/android-arm': 0.17.8 @@ -12857,6 +13262,8 @@ snapshots: estraverse@5.3.0: {} + estree-walker@0.6.1: {} + esutils@2.0.3: {} etag@1.8.1: {} @@ -13136,6 +13543,11 @@ snapshots: dunder-proto: 1.0.1 es-object-atoms: 1.1.2 + get-source@2.0.12: + dependencies: + data-uri-to-buffer: 2.0.2 + source-map: 0.6.1 + get-stream@6.0.1: {} get-symbol-description@1.1.0: @@ -13904,6 +14316,10 @@ snapshots: lru-cache@7.18.3: {} + magic-string@0.25.9: + dependencies: + sourcemap-codec: 1.4.8 + magic-string@0.26.7: dependencies: sourcemap-codec: 1.4.8 @@ -14024,6 +14440,23 @@ snapshots: schema-utils: 4.3.3 webpack: 5.76.1(esbuild@0.17.8)(postcss@8.4.31) + miniflare@3.20250718.3: + dependencies: + '@cspotcode/source-map-support': 0.8.1 + acorn: 8.14.0 + acorn-walk: 8.3.2 + exit-hook: 2.2.1 + glob-to-regexp: 0.4.1 + stoppable: 1.1.0 + undici: 5.29.0 + workerd: 1.20250718.0 + ws: 8.18.0 + youch: 3.3.4 + zod: 3.22.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + miniflare@4.20250924.0: dependencies: '@cspotcode/source-map-support': 0.8.1 @@ -14144,6 +14577,8 @@ snapshots: dns-packet: 5.6.1 thunky: 1.1.0 + mustache@4.2.0: {} + mute-stream@0.0.8: {} mz@2.7.0: @@ -14634,6 +15069,8 @@ snapshots: pretty-bytes@5.6.0: {} + printable-characters@1.0.42: {} + proc-log@2.0.1: {} proc-log@3.0.0: {} @@ -14924,6 +15361,20 @@ snapshots: dependencies: glob: 7.2.3 + rollup-plugin-inject@3.0.2: + dependencies: + estree-walker: 0.6.1 + magic-string: 0.25.9 + rollup-pluginutils: 2.8.2 + + rollup-plugin-node-polyfills@0.2.1: + dependencies: + rollup-plugin-inject: 3.0.2 + + rollup-pluginutils@2.8.2: + dependencies: + estree-walker: 0.6.1 + rollup@2.80.0: optionalDependencies: fsevents: 2.3.3 @@ -15351,6 +15802,11 @@ snapshots: dependencies: minipass: 3.3.6 + stacktracey@2.2.0: + dependencies: + as-table: 1.0.55 + get-source: 2.0.12 + statuses@1.5.0: {} statuses@2.0.2: {} @@ -15697,8 +16153,20 @@ snapshots: undici-types@6.21.0: {} + undici@5.29.0: + dependencies: + '@fastify/busboy': 2.1.1 + undici@7.14.0: {} + unenv@2.0.0-rc.14: + dependencies: + defu: 6.1.7 + exsolve: 1.0.8 + ohash: 2.0.11 + pathe: 2.0.3 + ufo: 1.6.4 + unenv@2.0.0-rc.21: dependencies: defu: 6.1.7 @@ -15930,7 +16398,7 @@ snapshots: web-vitals@2.1.4: {} - webpack-dev-middleware@5.3.4(webpack@5.76.1(postcss@8.5.15)): + webpack-dev-middleware@5.3.4(webpack@5.76.1(esbuild@0.17.8)(postcss@8.4.31)): dependencies: colorette: 2.0.20 memfs: 3.5.3 @@ -15949,7 +16417,7 @@ snapshots: optionalDependencies: webpack: 5.76.1(esbuild@0.17.8)(postcss@8.4.31) - webpack-dev-server@4.11.1(webpack@5.76.1(postcss@8.5.15)): + webpack-dev-server@4.11.1(webpack@5.76.1(esbuild@0.17.8)(postcss@8.4.31)): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -15979,7 +16447,7 @@ snapshots: sockjs: 0.3.24 spdy: 4.0.2 webpack: 5.76.1(esbuild@0.17.8)(postcss@8.4.31) - webpack-dev-middleware: 5.3.4(webpack@5.76.1(postcss@8.5.15)) + webpack-dev-middleware: 5.3.4(webpack@5.76.1(esbuild@0.17.8)(postcss@8.4.31)) ws: 8.21.0 transitivePeerDependencies: - bufferutil @@ -16133,6 +16601,14 @@ snapshots: worker-timers-broker: 6.1.8 worker-timers-worker: 7.0.71 + workerd@1.20250718.0: + optionalDependencies: + '@cloudflare/workerd-darwin-64': 1.20250718.0 + '@cloudflare/workerd-darwin-arm64': 1.20250718.0 + '@cloudflare/workerd-linux-64': 1.20250718.0 + '@cloudflare/workerd-linux-arm64': 1.20250718.0 + '@cloudflare/workerd-windows-64': 1.20250718.0 + workerd@1.20250924.0: optionalDependencies: '@cloudflare/workerd-darwin-64': 1.20250924.0 @@ -16141,6 +16617,25 @@ snapshots: '@cloudflare/workerd-linux-arm64': 1.20250924.0 '@cloudflare/workerd-windows-64': 1.20250924.0 + wrangler@3.114.17: + dependencies: + '@cloudflare/kv-asset-handler': 0.3.4 + '@cloudflare/unenv-preset': 2.0.2(unenv@2.0.0-rc.14)(workerd@1.20250718.0) + '@esbuild-plugins/node-globals-polyfill': 0.2.3(esbuild@0.17.19) + '@esbuild-plugins/node-modules-polyfill': 0.2.2(esbuild@0.17.19) + blake3-wasm: 2.1.5 + esbuild: 0.17.19 + miniflare: 3.20250718.3 + path-to-regexp: 6.3.0 + unenv: 2.0.0-rc.14 + workerd: 1.20250718.0 + optionalDependencies: + fsevents: 2.3.3 + sharp: 0.33.5 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + wrangler@4.40.2: dependencies: '@cloudflare/kv-asset-handler': 0.4.0 @@ -16226,6 +16721,12 @@ snapshots: '@poppinss/exception': 1.2.3 error-stack-parser-es: 1.0.5 + youch@3.3.4: + dependencies: + cookie: 0.7.2 + mustache: 4.2.0 + stacktracey: 2.2.0 + youch@4.1.0-beta.10: dependencies: '@poppinss/colors': 4.1.6 From 05a222b00a636f07c1d3458c4ec22ea96fc09f53 Mon Sep 17 00:00:00 2001 From: Ravindra Singh Rathor Date: Tue, 30 Jun 2026 16:03:26 +0530 Subject: [PATCH 03/13] fix(ai-review): fixed sample regex, removed stale deps --- pnpm-lock.yaml | 50 ------------------- recording-sdk-app-samples/AGENTS.md | 2 +- recording-sdk-app-samples/README.md | 2 +- .../recording-with-watermark/package.json | 1 - .../src/components/RecordingView.tsx | 12 +---- .../src/pages/RecordingPage.tsx | 2 +- 6 files changed, 5 insertions(+), 64 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8bde0de..3b5199d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1444,9 +1444,6 @@ importers: '@dyteinternals/utils': specifier: ^3.0.0 version: 3.4.0 - axios: - specifier: 1.7.3 - version: 1.7.3 clsx: specifier: ^1.2.1 version: 1.2.1 @@ -4610,9 +4607,6 @@ packages: resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} engines: {node: '>= 0.4'} - asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - autoprefixer@10.4.13: resolution: {integrity: sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==} engines: {node: ^10 || ^12 || >=14} @@ -4631,9 +4625,6 @@ packages: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} - axios@1.7.3: - resolution: {integrity: sha512-Ar7ND9pU99eJ9GpoGQKhKf58GpUOgnzuaB7ueNQ5BMi0p+LZ5oaEnfF999fAArcTIBwXTCHAmGcHOZJaWPq9Nw==} - babel-dead-code-elimination@1.0.12: resolution: {integrity: sha512-GERT7L2TiYcYDtYk1IpD+ASAYXjKbLTDPhBtYj7X1NuRMDTMtAx9kyBenub1Ev41lo91OHCKdmP+egTDmfQ7Ig==} @@ -4910,10 +4901,6 @@ packages: colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} - combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} @@ -5108,10 +5095,6 @@ packages: defu@6.1.7: resolution: {integrity: sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==} - delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - delegates@1.0.0: resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} @@ -5744,10 +5727,6 @@ packages: resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} engines: {node: '>=14'} - form-data@4.0.6: - resolution: {integrity: sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==} - engines: {node: '>= 6'} - forwarded@0.2.0: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} @@ -7320,9 +7299,6 @@ packages: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} - proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - prr@1.0.1: resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} @@ -11975,8 +11951,6 @@ snapshots: async-function@1.0.0: {} - asynckit@0.4.0: {} - autoprefixer@10.4.13(postcss@8.4.31): dependencies: browserslist: 4.21.5 @@ -12000,14 +11974,6 @@ snapshots: dependencies: possible-typed-array-names: 1.1.0 - axios@1.7.3: - dependencies: - follow-redirects: 1.16.0 - form-data: 4.0.6 - proxy-from-env: 1.1.0 - transitivePeerDependencies: - - debug - babel-dead-code-elimination@1.0.12: dependencies: '@babel/core': 7.29.7 @@ -12360,10 +12326,6 @@ snapshots: colorette@2.0.20: {} - combined-stream@1.0.8: - dependencies: - delayed-stream: 1.0.0 - commander@2.20.3: {} commander@4.1.1: {} @@ -12559,8 +12521,6 @@ snapshots: defu@6.1.7: {} - delayed-stream@1.0.0: {} - delegates@1.0.0: {} depd@1.1.2: {} @@ -13451,14 +13411,6 @@ snapshots: cross-spawn: 7.0.6 signal-exit: 4.1.0 - form-data@4.0.6: - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - es-set-tostringtag: 2.1.0 - hasown: 2.0.4 - mime-types: 2.1.35 - forwarded@0.2.0: {} fraction.js@4.3.7: {} @@ -15095,8 +15047,6 @@ snapshots: forwarded: 0.2.0 ipaddr.js: 1.9.1 - proxy-from-env@1.1.0: {} - prr@1.0.1: optional: true diff --git a/recording-sdk-app-samples/AGENTS.md b/recording-sdk-app-samples/AGENTS.md index 0c48f2d..8139b91 100644 --- a/recording-sdk-app-samples/AGENTS.md +++ b/recording-sdk-app-samples/AGENTS.md @@ -49,7 +49,7 @@ interface MeetingConfig { } ``` -**`videoUnsubscribePresetsRegex`** — pass an array of regex patterns (e.g., `["Host$", "interviewer*"]`) to unsubscribe video for participants whose preset name matches. This replaces the previous Flagsmith-based feature flag approach — no external feature flag service is needed. +**`videoUnsubscribePresetsRegex`** — pass an array of regex patterns (e.g., `["Host$", "^interviewer"]`) to unsubscribe video for participants whose preset name matches. This replaces the previous Flagsmith-based feature flag approach — no external feature flag service is needed. Example URL with config: ``` diff --git a/recording-sdk-app-samples/README.md b/recording-sdk-app-samples/README.md index 30fa554..4e7d27a 100644 --- a/recording-sdk-app-samples/README.md +++ b/recording-sdk-app-samples/README.md @@ -70,7 +70,7 @@ interface MeetingConfig { } ``` -**`videoUnsubscribePresetsRegex`** — an array of regex patterns to selectively unsubscribe video for participants whose preset name matches any pattern. For example, `["Host$", "interviewer*"]` would unsubscribe video for participants with presets ending in "Host" or starting with "interviewer". +**`videoUnsubscribePresetsRegex`** — an array of regex patterns to selectively unsubscribe video for participants whose preset name matches any pattern. For example, `["Host$", "^interviewer"]` would unsubscribe video for participants with presets ending in "Host" or starting with "interviewer". To use it, base64-encode the JSON config and pass it as a query parameter: diff --git a/recording-sdk-app-samples/react-examples/recording-with-watermark/package.json b/recording-sdk-app-samples/react-examples/recording-with-watermark/package.json index 415f138..94ac5e1 100644 --- a/recording-sdk-app-samples/react-examples/recording-with-watermark/package.json +++ b/recording-sdk-app-samples/react-examples/recording-with-watermark/package.json @@ -16,7 +16,6 @@ "@cloudflare/realtimekit-react-ui": "^2.0.0", "@cloudflare/realtimekit-react": "^2.0.0", "@cloudflare/realtimekit-recording-sdk": "0.0.1", - "axios": "1.7.3", "clsx": "^1.2.1", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/recording-sdk-app-samples/react-examples/recording-with-watermark/src/components/RecordingView.tsx b/recording-sdk-app-samples/react-examples/recording-with-watermark/src/components/RecordingView.tsx index f7027a0..71f0217 100644 --- a/recording-sdk-app-samples/react-examples/recording-with-watermark/src/components/RecordingView.tsx +++ b/recording-sdk-app-samples/react-examples/recording-with-watermark/src/components/RecordingView.tsx @@ -89,16 +89,8 @@ export default function UIKitMeeting(props: { config.videoUnsubscribePresetsRegex && config.videoUnsubscribePresetsRegex.length > 0 ) { - console.log("enable video subscription override"); - try { - const preset = config.videoUnsubscribePresetsRegex; - console.log("subscription override", preset); - if (preset && preset.length > 0) { - setOverrides({ videoUnsubscribed: { preset } }); - } - } catch (error) { - console.log(error); - } + console.log("subscription override", config.videoUnsubscribePresetsRegex); + setOverrides({ videoUnsubscribed: { preset: config.videoUnsubscribePresetsRegex } }); } if (uiKitConfig.root) { diff --git a/recording-sdk-app-samples/react-examples/recording-with-watermark/src/pages/RecordingPage.tsx b/recording-sdk-app-samples/react-examples/recording-with-watermark/src/pages/RecordingPage.tsx index f242b24..0da62c6 100644 --- a/recording-sdk-app-samples/react-examples/recording-with-watermark/src/pages/RecordingPage.tsx +++ b/recording-sdk-app-samples/react-examples/recording-with-watermark/src/pages/RecordingPage.tsx @@ -17,7 +17,7 @@ const DEFAULT_WATERMARK_CONFIG: WatermarkConfig = { const DEFAULT_UIKIT = false; const DEFAULT_WAIT_TIME_MS = 60000; -const DEFAULT_VIDEO_UNSUBSCRIBE_PRESETS_REGEX: string[] = []; // Eg: ["Host$","interviewer*"] +const DEFAULT_VIDEO_UNSUBSCRIBE_PRESETS_REGEX: string[] = []; // Eg: ["Host$","^interviewer"] const DEFAULT_MEETING_CONFIG: MeetingConfig = { uiKit: DEFAULT_UIKIT, From c0dd5d6b257c7baff0ca1817a453ba9c5b310e23 Mon Sep 17 00:00:00 2001 From: Ravindra Singh Rathor Date: Tue, 30 Jun 2026 16:04:54 +0530 Subject: [PATCH 04/13] fix(ai-review): added try catch around config prop --- .../recording-with-watermark/src/pages/RecordingPage.tsx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/recording-sdk-app-samples/react-examples/recording-with-watermark/src/pages/RecordingPage.tsx b/recording-sdk-app-samples/react-examples/recording-with-watermark/src/pages/RecordingPage.tsx index 0da62c6..f08351f 100644 --- a/recording-sdk-app-samples/react-examples/recording-with-watermark/src/pages/RecordingPage.tsx +++ b/recording-sdk-app-samples/react-examples/recording-with-watermark/src/pages/RecordingPage.tsx @@ -43,7 +43,12 @@ function RecordingPage() { if (configJson == null) { parsedConfig = DEFAULT_MEETING_CONFIG; } else { - parsedConfig = JSON.parse(atob(configJson)); + try { + parsedConfig = JSON.parse(atob(configJson)); + } catch (error) { + console.error("Failed to parse config query parameter, using defaults:", error); + parsedConfig = DEFAULT_MEETING_CONFIG; + } } if (parsedConfig.uiKit === undefined) { From 2e29d2028491073b14861e344134548cf29bfe55 Mon Sep 17 00:00:00 2001 From: Ravindra Singh Rathor Date: Tue, 30 Jun 2026 16:06:35 +0530 Subject: [PATCH 05/13] fix(stale-gitignore): removed vercel, only wrangler is being used now --- react-examples/examples/chat-widget/.gitignore | 4 ---- 1 file changed, 4 deletions(-) diff --git a/react-examples/examples/chat-widget/.gitignore b/react-examples/examples/chat-widget/.gitignore index 4133381..acc9b08 100644 --- a/react-examples/examples/chat-widget/.gitignore +++ b/react-examples/examples/chat-widget/.gitignore @@ -39,7 +39,3 @@ yarn-error.log* .env.development.local .env.test.local .env.production.local - - -# vercel -.vercel From 655b633636996d84c14eda2306b3ef01a8529b48 Mon Sep 17 00:00:00 2001 From: Ravindra Singh Rathor Date: Tue, 30 Jun 2026 16:11:42 +0530 Subject: [PATCH 06/13] fix(ai-review): fixed tooling claim --- recording-sdk-app-samples/AGENTS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recording-sdk-app-samples/AGENTS.md b/recording-sdk-app-samples/AGENTS.md index 8139b91..bf7e671 100644 --- a/recording-sdk-app-samples/AGENTS.md +++ b/recording-sdk-app-samples/AGENTS.md @@ -30,7 +30,7 @@ recording-sdk-app-samples/ - Auth: `authToken` passed via URL query param — same as main react-examples - Versions pinned manually in each `package.json` — no `update-cloudflare-realtime-deps.sh` - Worker names follow the pattern `recording-app--staging` / `recording-app--production` -- Vite ^5 + TypeScript ^5 (newer than main react-examples workspace) +- `record-single-preset` uses Vite ^5 + TypeScript ^5; the other three examples use Vite ^3 + TypeScript ^4 ## ANTI-PATTERNS From d2c6bdcd55ede82e34c0c55088f051ff8d5d9e44 Mon Sep 17 00:00:00 2001 From: Ravindra Singh Rathor Date: Wed, 1 Jul 2026 15:04:12 +0530 Subject: [PATCH 07/13] feat(angular-recording-examples): added angular recording examples, fixed issues, altered examples path --- AGENTS.md | 9 +- .../app/components/audio-preview.component.ts | 2 +- .../create-your-own-ui/src/favicon.ico | Bin 948 -> 34494 bytes .../create-your-own-ui/src/index.html | 2 +- .../default-meeting-ui/src/favicon.ico | Bin 948 -> 34494 bytes .../default-meeting-ui/src/index.html | 2 +- .../with-video-transformer/src/favicon.ico | Bin 948 -> 34494 bytes .../with-video-transformer/src/index.html | 2 +- angular-examples/favicon.ico | Bin 678 -> 34494 bytes demo-app/public/favicon.ico | Bin 678 -> 34494 bytes .../background-transformer-ui/index.html | 24 +- .../components/audio-preview.js | 2 +- .../with-background-transformer/index.html | 18 +- .../examples/with-ui-addons/index.html | 2 +- html-examples/favicon.ico | Bin 678 -> 34494 bytes pnpm-lock.yaml | 343 +++++++++++++++++- pnpm-workspace.yaml | 3 +- .../back-to-back-meetings/src/Meeting.tsx | 6 +- .../examples/create-your-own-ui/src/App.tsx | 2 +- .../src/components/audio-preview.tsx | 2 +- .../multi-meeting-custom/src/Meeting.tsx | 6 +- .../src/App.tsx | 6 +- .../src/components/EffectsManager.tsx | 4 +- .../src/components/audio-preview.tsx | 2 +- .../src/components/meeting-loading.tsx | 2 +- .../with-background-transformer/src/App.tsx | 18 +- react-examples/favicon.ico | Bin 678 -> 34494 bytes recording-sdk-app-examples/AGENTS.md | 69 ++++ .../README.md | 0 .../record-single-preset/.editorconfig | 16 + .../record-single-preset/.gitignore | 18 + .../record-single-preset/angular.json | 79 ++++ .../record-single-preset/package.json | 38 ++ .../src/app/app.component.css | 0 .../src/app/app.component.html | 7 + .../src/app/app.component.ts | 45 +++ .../src/app/app.module.ts | 14 + .../components/recording-view.component.css | 0 .../components/recording-view.component.html | 24 ++ .../components/recording-view.component.ts | 51 +++ .../record-single-preset/src/assets/.gitkeep | 0 .../record-single-preset/src/favicon.ico | Bin 0 -> 34494 bytes .../record-single-preset/src/index.html | 13 + .../record-single-preset/src/main.ts | 7 + .../record-single-preset/src/styles.css | 8 + .../record-single-preset/tsconfig.app.json | 14 + .../record-single-preset/tsconfig.json | 35 ++ .../record-single-preset/wrangler.jsonc | 17 + .../recording-with-watermark/.editorconfig | 16 + .../recording-with-watermark/.gitignore | 18 + .../recording-with-watermark/angular.json | 79 ++++ .../recording-with-watermark/package.json | 38 ++ .../src/app/app.component.css | 0 .../src/app/app.component.html | 13 + .../src/app/app.component.ts | 77 ++++ .../src/app/app.module.ts | 15 + .../components/recording-view.component.css | 0 .../components/recording-view.component.html | 19 + .../components/recording-view.component.ts | 125 +++++++ .../src/app/components/watermark.component.ts | 42 +++ .../recording-with-watermark/src/app/types.ts | 26 ++ .../src/assets/.gitkeep | 0 .../recording-with-watermark/src/favicon.ico | Bin 0 -> 34494 bytes .../recording-with-watermark/src/index.html | 13 + .../recording-with-watermark/src/main.ts | 7 + .../recording-with-watermark/src/styles.css | 8 + .../tsconfig.app.json | 14 + .../recording-with-watermark/tsconfig.json | 35 ++ .../recording-with-watermark/wrangler.jsonc | 17 + .../.editorconfig | 16 + .../.gitignore | 18 + .../angular.json | 79 ++++ .../package.json | 40 ++ .../scripts/set-env.sh | 19 + .../src/app/app.component.css | 0 .../src/app/app.component.html | 7 + .../src/app/app.component.ts | 45 +++ .../src/app/app.module.ts | 14 + .../components/recording-view.component.css | 0 .../components/recording-view.component.html | 34 ++ .../components/recording-view.component.ts | 131 +++++++ .../src/assets/.gitkeep | 0 .../src/environments/environment.ts | 5 + .../src/favicon.ico | Bin 0 -> 34494 bytes .../src/index.html | 13 + .../src/main.ts | 7 + .../src/styles.css | 8 + .../tsconfig.app.json | 14 + .../tsconfig.json | 35 ++ .../wrangler.jsonc | 17 + .../screenshare-focused/.editorconfig | 16 + .../screenshare-focused/.gitignore | 18 + .../screenshare-focused/angular.json | 79 ++++ .../screenshare-focused/package.json | 38 ++ .../src/app/app.component.css | 0 .../src/app/app.component.html | 7 + .../src/app/app.component.ts | 45 +++ .../screenshare-focused/src/app/app.module.ts | 14 + .../components/recording-view.component.css | 0 .../components/recording-view.component.html | 33 ++ .../components/recording-view.component.ts | 53 +++ .../screenshare-focused/src/assets/.gitkeep | 0 .../screenshare-focused/src/favicon.ico | Bin 0 -> 34494 bytes .../screenshare-focused/src/index.html | 13 + .../screenshare-focused/src/main.ts | 7 + .../screenshare-focused/src/styles.css | 8 + .../screenshare-focused/tsconfig.app.json | 14 + .../screenshare-focused/tsconfig.json | 35 ++ .../screenshare-focused/wrangler.jsonc | 17 + .../record-single-preset/.eslintrc.cjs | 0 .../record-single-preset/.gitignore | 0 .../record-single-preset/README.md | 0 .../record-single-preset/index.html | 0 .../record-single-preset/package.json | 0 .../record-single-preset/public/vite.svg | 0 .../record-single-preset/src/App.css | 0 .../record-single-preset/src/App.tsx | 0 .../record-single-preset/src/assets/react.svg | 0 .../src/components/RecordingView.tsx | 0 .../record-single-preset/src/index.css | 0 .../record-single-preset/src/main.tsx | 0 .../record-single-preset/src/vite-env.d.ts | 0 .../record-single-preset/tsconfig.app.json | 0 .../record-single-preset/tsconfig.json | 0 .../record-single-preset/tsconfig.node.json | 0 .../record-single-preset/vite.config.ts | 0 .../record-single-preset/wrangler.jsonc | 0 .../recording-with-watermark/.gitignore | 0 .../recording-with-watermark/README.md | 2 - .../recording-with-watermark/index.css | 0 .../recording-with-watermark/index.html | 0 .../recording-with-watermark/package.json | 37 ++ .../postcss.config.js | 0 .../src/components/RecordingView.tsx | 0 .../src/components/Watermark.tsx | 0 .../recording-with-watermark/src/index.css | 0 .../recording-with-watermark/src/main.tsx | 0 .../src/pages/RecordingPage.tsx | 108 ++++++ .../src/reportWebVitals.ts | 0 .../recording-with-watermark/src/types.ts | 0 .../src/vite-env.d.ts | 0 .../tailwind.config.js | 0 .../recording-with-watermark/tsconfig.json | 0 .../tsconfig.node.json | 0 .../recording-with-watermark/vite.config.ts | 0 .../recording-with-watermark/wrangler.jsonc | 0 .../.gitignore | 0 .../README.md | 2 - .../index.html | 0 .../package.json | 0 .../postcss.config.js | 0 .../src/App.tsx | 0 .../src/components/RecordingView.tsx | 2 +- .../src/index.css | 0 .../src/main.tsx | 0 .../src/vite-env.d.ts | 0 .../tailwind.config.js | 0 .../tsconfig.json | 0 .../tsconfig.node.json | 0 .../vite.config.ts | 0 .../wrangler.jsonc | 0 .../screenshare-focused/.gitignore | 0 .../screenshare-focused/README.md | 2 - .../screenshare-focused/index.html | 0 .../screenshare-focused/package.json | 0 .../screenshare-focused/postcss.config.js | 0 .../screenshare-focused/src/App.tsx | 0 .../src/components/RecordingView.tsx | 0 .../screenshare-focused/src/index.css | 0 .../screenshare-focused/src/main.tsx | 0 .../screenshare-focused/src/vite-env.d.ts | 0 .../screenshare-focused/tailwind.config.js | 0 .../screenshare-focused/tsconfig.json | 0 .../screenshare-focused/tsconfig.node.json | 0 .../screenshare-focused/vite.config.ts | 0 .../screenshare-focused/wrangler.jsonc | 0 recording-sdk-app-samples/AGENTS.md | 24 +- .../recording-with-watermark/package.json | 1 - .../src/pages/RecordingPage.tsx | 2 +- 179 files changed, 2460 insertions(+), 93 deletions(-) create mode 100644 recording-sdk-app-examples/AGENTS.md rename {recording-sdk-app-samples => recording-sdk-app-examples}/README.md (100%) create mode 100644 recording-sdk-app-examples/angular-examples/record-single-preset/.editorconfig create mode 100644 recording-sdk-app-examples/angular-examples/record-single-preset/.gitignore create mode 100644 recording-sdk-app-examples/angular-examples/record-single-preset/angular.json create mode 100644 recording-sdk-app-examples/angular-examples/record-single-preset/package.json create mode 100644 recording-sdk-app-examples/angular-examples/record-single-preset/src/app/app.component.css create mode 100644 recording-sdk-app-examples/angular-examples/record-single-preset/src/app/app.component.html create mode 100644 recording-sdk-app-examples/angular-examples/record-single-preset/src/app/app.component.ts create mode 100644 recording-sdk-app-examples/angular-examples/record-single-preset/src/app/app.module.ts create mode 100644 recording-sdk-app-examples/angular-examples/record-single-preset/src/app/components/recording-view.component.css create mode 100644 recording-sdk-app-examples/angular-examples/record-single-preset/src/app/components/recording-view.component.html create mode 100644 recording-sdk-app-examples/angular-examples/record-single-preset/src/app/components/recording-view.component.ts create mode 100644 recording-sdk-app-examples/angular-examples/record-single-preset/src/assets/.gitkeep create mode 100644 recording-sdk-app-examples/angular-examples/record-single-preset/src/favicon.ico create mode 100644 recording-sdk-app-examples/angular-examples/record-single-preset/src/index.html create mode 100644 recording-sdk-app-examples/angular-examples/record-single-preset/src/main.ts create mode 100644 recording-sdk-app-examples/angular-examples/record-single-preset/src/styles.css create mode 100644 recording-sdk-app-examples/angular-examples/record-single-preset/tsconfig.app.json create mode 100644 recording-sdk-app-examples/angular-examples/record-single-preset/tsconfig.json create mode 100644 recording-sdk-app-examples/angular-examples/record-single-preset/wrangler.jsonc create mode 100644 recording-sdk-app-examples/angular-examples/recording-with-watermark/.editorconfig create mode 100644 recording-sdk-app-examples/angular-examples/recording-with-watermark/.gitignore create mode 100644 recording-sdk-app-examples/angular-examples/recording-with-watermark/angular.json create mode 100644 recording-sdk-app-examples/angular-examples/recording-with-watermark/package.json create mode 100644 recording-sdk-app-examples/angular-examples/recording-with-watermark/src/app/app.component.css create mode 100644 recording-sdk-app-examples/angular-examples/recording-with-watermark/src/app/app.component.html create mode 100644 recording-sdk-app-examples/angular-examples/recording-with-watermark/src/app/app.component.ts create mode 100644 recording-sdk-app-examples/angular-examples/recording-with-watermark/src/app/app.module.ts create mode 100644 recording-sdk-app-examples/angular-examples/recording-with-watermark/src/app/components/recording-view.component.css create mode 100644 recording-sdk-app-examples/angular-examples/recording-with-watermark/src/app/components/recording-view.component.html create mode 100644 recording-sdk-app-examples/angular-examples/recording-with-watermark/src/app/components/recording-view.component.ts create mode 100644 recording-sdk-app-examples/angular-examples/recording-with-watermark/src/app/components/watermark.component.ts create mode 100644 recording-sdk-app-examples/angular-examples/recording-with-watermark/src/app/types.ts create mode 100644 recording-sdk-app-examples/angular-examples/recording-with-watermark/src/assets/.gitkeep create mode 100644 recording-sdk-app-examples/angular-examples/recording-with-watermark/src/favicon.ico create mode 100644 recording-sdk-app-examples/angular-examples/recording-with-watermark/src/index.html create mode 100644 recording-sdk-app-examples/angular-examples/recording-with-watermark/src/main.ts create mode 100644 recording-sdk-app-examples/angular-examples/recording-with-watermark/src/styles.css create mode 100644 recording-sdk-app-examples/angular-examples/recording-with-watermark/tsconfig.app.json create mode 100644 recording-sdk-app-examples/angular-examples/recording-with-watermark/tsconfig.json create mode 100644 recording-sdk-app-examples/angular-examples/recording-with-watermark/wrangler.jsonc create mode 100644 recording-sdk-app-examples/angular-examples/screenshare-focused-with-snapshot-capture/.editorconfig create mode 100644 recording-sdk-app-examples/angular-examples/screenshare-focused-with-snapshot-capture/.gitignore create mode 100644 recording-sdk-app-examples/angular-examples/screenshare-focused-with-snapshot-capture/angular.json create mode 100644 recording-sdk-app-examples/angular-examples/screenshare-focused-with-snapshot-capture/package.json create mode 100644 recording-sdk-app-examples/angular-examples/screenshare-focused-with-snapshot-capture/scripts/set-env.sh create mode 100644 recording-sdk-app-examples/angular-examples/screenshare-focused-with-snapshot-capture/src/app/app.component.css create mode 100644 recording-sdk-app-examples/angular-examples/screenshare-focused-with-snapshot-capture/src/app/app.component.html create mode 100644 recording-sdk-app-examples/angular-examples/screenshare-focused-with-snapshot-capture/src/app/app.component.ts create mode 100644 recording-sdk-app-examples/angular-examples/screenshare-focused-with-snapshot-capture/src/app/app.module.ts create mode 100644 recording-sdk-app-examples/angular-examples/screenshare-focused-with-snapshot-capture/src/app/components/recording-view.component.css create mode 100644 recording-sdk-app-examples/angular-examples/screenshare-focused-with-snapshot-capture/src/app/components/recording-view.component.html create mode 100644 recording-sdk-app-examples/angular-examples/screenshare-focused-with-snapshot-capture/src/app/components/recording-view.component.ts create mode 100644 recording-sdk-app-examples/angular-examples/screenshare-focused-with-snapshot-capture/src/assets/.gitkeep create mode 100644 recording-sdk-app-examples/angular-examples/screenshare-focused-with-snapshot-capture/src/environments/environment.ts create mode 100644 recording-sdk-app-examples/angular-examples/screenshare-focused-with-snapshot-capture/src/favicon.ico create mode 100644 recording-sdk-app-examples/angular-examples/screenshare-focused-with-snapshot-capture/src/index.html create mode 100644 recording-sdk-app-examples/angular-examples/screenshare-focused-with-snapshot-capture/src/main.ts create mode 100644 recording-sdk-app-examples/angular-examples/screenshare-focused-with-snapshot-capture/src/styles.css create mode 100644 recording-sdk-app-examples/angular-examples/screenshare-focused-with-snapshot-capture/tsconfig.app.json create mode 100644 recording-sdk-app-examples/angular-examples/screenshare-focused-with-snapshot-capture/tsconfig.json create mode 100644 recording-sdk-app-examples/angular-examples/screenshare-focused-with-snapshot-capture/wrangler.jsonc create mode 100644 recording-sdk-app-examples/angular-examples/screenshare-focused/.editorconfig create mode 100644 recording-sdk-app-examples/angular-examples/screenshare-focused/.gitignore create mode 100644 recording-sdk-app-examples/angular-examples/screenshare-focused/angular.json create mode 100644 recording-sdk-app-examples/angular-examples/screenshare-focused/package.json create mode 100644 recording-sdk-app-examples/angular-examples/screenshare-focused/src/app/app.component.css create mode 100644 recording-sdk-app-examples/angular-examples/screenshare-focused/src/app/app.component.html create mode 100644 recording-sdk-app-examples/angular-examples/screenshare-focused/src/app/app.component.ts create mode 100644 recording-sdk-app-examples/angular-examples/screenshare-focused/src/app/app.module.ts create mode 100644 recording-sdk-app-examples/angular-examples/screenshare-focused/src/app/components/recording-view.component.css create mode 100644 recording-sdk-app-examples/angular-examples/screenshare-focused/src/app/components/recording-view.component.html create mode 100644 recording-sdk-app-examples/angular-examples/screenshare-focused/src/app/components/recording-view.component.ts create mode 100644 recording-sdk-app-examples/angular-examples/screenshare-focused/src/assets/.gitkeep create mode 100644 recording-sdk-app-examples/angular-examples/screenshare-focused/src/favicon.ico create mode 100644 recording-sdk-app-examples/angular-examples/screenshare-focused/src/index.html create mode 100644 recording-sdk-app-examples/angular-examples/screenshare-focused/src/main.ts create mode 100644 recording-sdk-app-examples/angular-examples/screenshare-focused/src/styles.css create mode 100644 recording-sdk-app-examples/angular-examples/screenshare-focused/tsconfig.app.json create mode 100644 recording-sdk-app-examples/angular-examples/screenshare-focused/tsconfig.json create mode 100644 recording-sdk-app-examples/angular-examples/screenshare-focused/wrangler.jsonc rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/record-single-preset/.eslintrc.cjs (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/record-single-preset/.gitignore (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/record-single-preset/README.md (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/record-single-preset/index.html (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/record-single-preset/package.json (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/record-single-preset/public/vite.svg (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/record-single-preset/src/App.css (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/record-single-preset/src/App.tsx (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/record-single-preset/src/assets/react.svg (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/record-single-preset/src/components/RecordingView.tsx (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/record-single-preset/src/index.css (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/record-single-preset/src/main.tsx (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/record-single-preset/src/vite-env.d.ts (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/record-single-preset/tsconfig.app.json (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/record-single-preset/tsconfig.json (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/record-single-preset/tsconfig.node.json (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/record-single-preset/vite.config.ts (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/record-single-preset/wrangler.jsonc (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/recording-with-watermark/.gitignore (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/recording-with-watermark/README.md (82%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/recording-with-watermark/index.css (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/recording-with-watermark/index.html (100%) create mode 100644 recording-sdk-app-examples/react-examples/recording-with-watermark/package.json rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/recording-with-watermark/postcss.config.js (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/recording-with-watermark/src/components/RecordingView.tsx (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/recording-with-watermark/src/components/Watermark.tsx (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/recording-with-watermark/src/index.css (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/recording-with-watermark/src/main.tsx (100%) create mode 100644 recording-sdk-app-examples/react-examples/recording-with-watermark/src/pages/RecordingPage.tsx rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/recording-with-watermark/src/reportWebVitals.ts (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/recording-with-watermark/src/types.ts (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/recording-with-watermark/src/vite-env.d.ts (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/recording-with-watermark/tailwind.config.js (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/recording-with-watermark/tsconfig.json (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/recording-with-watermark/tsconfig.node.json (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/recording-with-watermark/vite.config.ts (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/recording-with-watermark/wrangler.jsonc (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/screenshare-focused-with-snapshot-capture/.gitignore (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/screenshare-focused-with-snapshot-capture/README.md (64%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/screenshare-focused-with-snapshot-capture/index.html (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/screenshare-focused-with-snapshot-capture/package.json (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/screenshare-focused-with-snapshot-capture/postcss.config.js (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/screenshare-focused-with-snapshot-capture/src/App.tsx (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/screenshare-focused-with-snapshot-capture/src/components/RecordingView.tsx (98%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/screenshare-focused-with-snapshot-capture/src/index.css (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/screenshare-focused-with-snapshot-capture/src/main.tsx (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/screenshare-focused-with-snapshot-capture/src/vite-env.d.ts (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/screenshare-focused-with-snapshot-capture/tailwind.config.js (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/screenshare-focused-with-snapshot-capture/tsconfig.json (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/screenshare-focused-with-snapshot-capture/tsconfig.node.json (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/screenshare-focused-with-snapshot-capture/vite.config.ts (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/screenshare-focused-with-snapshot-capture/wrangler.jsonc (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/screenshare-focused/.gitignore (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/screenshare-focused/README.md (63%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/screenshare-focused/index.html (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/screenshare-focused/package.json (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/screenshare-focused/postcss.config.js (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/screenshare-focused/src/App.tsx (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/screenshare-focused/src/components/RecordingView.tsx (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/screenshare-focused/src/index.css (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/screenshare-focused/src/main.tsx (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/screenshare-focused/src/vite-env.d.ts (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/screenshare-focused/tailwind.config.js (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/screenshare-focused/tsconfig.json (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/screenshare-focused/tsconfig.node.json (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/screenshare-focused/vite.config.ts (100%) rename {recording-sdk-app-samples => recording-sdk-app-examples}/react-examples/screenshare-focused/wrangler.jsonc (100%) diff --git a/AGENTS.md b/AGENTS.md index 91deba8..477f82f 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -15,7 +15,7 @@ realtimekit-web-examples/ ├── angular-examples/ # 3 Angular CLI examples → deployed as Cloudflare Worker ├── html-examples/ # 5 vanilla HTML/JS examples → deployed as Cloudflare Worker ├── demo-app/ # Gallery portal (React Router 7 SSR) → examples.realtime.cloudflare.com -├── recording-sdk-app-samples/ # 4 recording SDK examples → deployed as individual Cloudflare Workers +├── recording-sdk-app-examples/ # 4 recording SDK examples → deployed as individual Cloudflare Workers ├── pnpm-workspace.yaml # Workspace definitions └── .github/workflows/ # 9 CI/CD workflows (staging + prod per framework) ``` @@ -27,7 +27,7 @@ realtimekit-web-examples/ | Add React example | `react-examples/examples//` | Also add to `demo-app/app/utils/react.ts` | | Add Angular example | `angular-examples/examples//` | Also add to `demo-app/app/utils/angular.ts` | | Add HTML example | `html-examples/examples//` | Also add to `demo-app/app/utils/vanilla.ts` | -| Add recording example | `recording-sdk-app-samples/react-examples//` | Each example has own `wrangler.jsonc`; deploy via `pnpm deploy:staging` / `pnpm deploy:production` | +| Add recording example | `recording-sdk-app-examples/react-examples//` | Each example has own `wrangler.jsonc`; deploy via `pnpm deploy:staging` / `pnpm deploy:production` | | Update SDK versions | `/update-cloudflare-realtime-deps.sh` | Fetches from npm; pass `--env staging\|prod` | | Gallery example catalog | `demo-app/app/utils/react.ts`, `angular.ts`, `vanilla.ts` | Hardcoded; new examples won't appear without editing | | CI / deploy config | `.github/workflows/` | Per-framework staging + prod deploy workflows | @@ -63,14 +63,13 @@ cd demo-app && pnpm dev ## ANTI-PATTERNS - Do NOT use npm or yarn — preinstall hook will abort -- `recording-sdk-app-samples` examples each have their own `wrangler.jsonc` — deploy individually via `pnpm deploy:staging` / `pnpm deploy:production` +- `recording-sdk-app-examples` examples each have their own `wrangler.jsonc` — deploy individually via `pnpm deploy:staging` / `pnpm deploy:production` - Do NOT add shared packages or libs — every example is intentionally isolated - Do NOT forget to register new examples in `demo-app/app/utils/` — they won't appear in the gallery ## NOTES -- `pnpm-workspace.yaml` has a stale path: `recording-sdk-app-examples/react-examples/*` (actual dir: `recording-sdk-app-samples`) — this workspace glob is broken +- `pnpm-workspace.yaml` has a stale path: `recording-sdk-app-examples/react-examples/*` (actual dir: `recording-sdk-app-examples`) — this workspace glob is broken - `demo-app/README.md` contains only "TODO" — consult root `README.md` - `REALTIMEKIT_BASE_URL=realtime.cloudflare.com` is the server-side API base hostname for production; public SDK example builds use `VITE_BASE_URL` with staging using `staging.realtime.cloudflare.com` - Node version unspecified in the repo; CI uses Node 20 — match locally -- `@dyteinternals/utils` in `recording-sdk-app-samples/react-examples/recording-with-watermark/package.json` is a vestigial upstream dependency diff --git a/angular-examples/examples/create-your-own-ui/src/app/components/audio-preview.component.ts b/angular-examples/examples/create-your-own-ui/src/app/components/audio-preview.component.ts index 3095a97..0d05a6e 100644 --- a/angular-examples/examples/create-your-own-ui/src/app/components/audio-preview.component.ts +++ b/angular-examples/examples/create-your-own-ui/src/app/components/audio-preview.component.ts @@ -15,7 +15,7 @@ interface CurrentDevices {
diff --git a/angular-examples/examples/create-your-own-ui/src/favicon.ico b/angular-examples/examples/create-your-own-ui/src/favicon.ico index 997406ad22c29aae95893fb3d666c30258a09537..3c1743067126d27bf0b2faee3963411fe3148b7d 100644 GIT binary patch literal 34494 zcmeHQ36K=k8E%eXlCp%dEQ+#Hx=}R55Mqq6h%vB1f{2M?Bm@mAQc6}sQdGPxmDMN$ z0ChgGeu>7EL-^0_?g*h+#L_?w5JASe8m?7?5sEOR!;qdrsz4+_H`c0ii`f50T z*SGxQAD;xoLsJ9dpVL(_c$O;uJ69D2r6KWMz!W714e`P{UHoN%CMImxhf~|t_|41y zJxeX*GGak0_pue>x*uMym7NKimvY-L+pYDEmCqSJe~(_U;-Jwlq?ibGW$Zr-NCh`GFfmdFnC~9j((XT|hp^<4RFO4%8suT=I3XNZ} zF4Hudle`Hgf^%AKBhC{m-YVBFANPsik`^m(T%7616lDIG7UnZnJU?f8I9;rGtK39n z;!G1)CQPfdZl)*QaQAVe(`t+@sfMFx%$^&L8BxPgpPBQond(eA-n>*NawyQ4-Vn~u z0YBNOiF+1fY@HRV7si(9Z;xFS%6E=u$>2X5<`bI^>Z0PbDIQ#Q_Wi-{kdqBq-io84}~xhQy?GA+d0WCj222O(uj- zGsV1ph8VY17Y`JL`B`|t$fGtsTw~-6nXOK{VU({rS^4}PbnL4(#H$

J9~q8;*U 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 AfdBvi literal 948 zcmV;l155mgP)CBYU7IjCFmI-B}4sMJt3^s9NVg!P0 z6hDQy(L`XWMkB@zOLgN$4KYz;j0zZxq9KKdpZE#5@k0crP^5f9KO};h)ZDQ%ybhht z%t9#h|nu0K(bJ ztIkhEr!*UyrZWQ1k2+YkGqDi8Z<|mIN&$kzpKl{cNP=OQzXHz>vn+c)F)zO|Bou>E z2|-d_=qY#Y+yOu1a}XI?cU}%04)zz%anD(XZC{#~WreV!a$7k2Ug`?&CUEc0EtrkZ zL49MB)h!_K{H(*l_93D5tO0;BUnvYlo+;yss%n^&qjt6fZOa+}+FDO(~2>G z2dx@=JZ?DHP^;b7*Y1as5^uphBsh*s*z&MBd?e@I>-9kU>63PjP&^#5YTOb&x^6Cf z?674rmSHB5Fk!{Gv7rv!?qX#ei_L(XtwVqLX3L}$MI|kJ*w(rhx~tc&L&xP#?cQow zX_|gx$wMr3pRZIIr_;;O|8fAjd;1`nOeu5K(pCu7>^3E&D2OBBq?sYa(%S?GwG&_0-s%_v$L@R!5H_fc)lOb9ZoOO#p`Nn`KU z3LTTBtjwo`7(HA6 z7gmO$yTR!5L>Bsg!X8616{JUngg_@&85%>W=mChTR;x4`P=?PJ~oPuy5 zU-L`C@_!34D21{fD~Y8NVnR3t;aqZI3fIhmgmx}$oc-dKDC6Ap$Gy>a!`A*x2L1v0 WcZ@i?LyX}70000 - Default Meeting UI - Dyte UI Kit + Default Meeting UI - RealtimeKit UI Kit diff --git a/angular-examples/examples/default-meeting-ui/src/favicon.ico b/angular-examples/examples/default-meeting-ui/src/favicon.ico index 997406ad22c29aae95893fb3d666c30258a09537..3c1743067126d27bf0b2faee3963411fe3148b7d 100644 GIT binary patch literal 34494 zcmeHQ36K=k8E%eXlCp%dEQ+#Hx=}R55Mqq6h%vB1f{2M?Bm@mAQc6}sQdGPxmDMN$ z0ChgGeu>7EL-^0_?g*h+#L_?w5JASe8m?7?5sEOR!;qdrsz4+_H`c0ii`f50T z*SGxQAD;xoLsJ9dpVL(_c$O;uJ69D2r6KWMz!W714e`P{UHoN%CMImxhf~|t_|41y zJxeX*GGak0_pue>x*uMym7NKimvY-L+pYDEmCqSJe~(_U;-Jwlq?ibGW$Zr-NCh`GFfmdFnC~9j((XT|hp^<4RFO4%8suT=I3XNZ} zF4Hudle`Hgf^%AKBhC{m-YVBFANPsik`^m(T%7616lDIG7UnZnJU?f8I9;rGtK39n z;!G1)CQPfdZl)*QaQAVe(`t+@sfMFx%$^&L8BxPgpPBQond(eA-n>*NawyQ4-Vn~u z0YBNOiF+1fY@HRV7si(9Z;xFS%6E=u$>2X5<`bI^>Z0PbDIQ#Q_Wi-{kdqBq-io84}~xhQy?GA+d0WCj222O(uj- zGsV1ph8VY17Y`JL`B`|t$fGtsTw~-6nXOK{VU({rS^4}PbnL4(#H$

J9~q8;*U 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 AfdBvi literal 948 zcmV;l155mgP)CBYU7IjCFmI-B}4sMJt3^s9NVg!P0 z6hDQy(L`XWMkB@zOLgN$4KYz;j0zZxq9KKdpZE#5@k0crP^5f9KO};h)ZDQ%ybhht z%t9#h|nu0K(bJ ztIkhEr!*UyrZWQ1k2+YkGqDi8Z<|mIN&$kzpKl{cNP=OQzXHz>vn+c)F)zO|Bou>E z2|-d_=qY#Y+yOu1a}XI?cU}%04)zz%anD(XZC{#~WreV!a$7k2Ug`?&CUEc0EtrkZ zL49MB)h!_K{H(*l_93D5tO0;BUnvYlo+;yss%n^&qjt6fZOa+}+FDO(~2>G z2dx@=JZ?DHP^;b7*Y1as5^uphBsh*s*z&MBd?e@I>-9kU>63PjP&^#5YTOb&x^6Cf z?674rmSHB5Fk!{Gv7rv!?qX#ei_L(XtwVqLX3L}$MI|kJ*w(rhx~tc&L&xP#?cQow zX_|gx$wMr3pRZIIr_;;O|8fAjd;1`nOeu5K(pCu7>^3E&D2OBBq?sYa(%S?GwG&_0-s%_v$L@R!5H_fc)lOb9ZoOO#p`Nn`KU z3LTTBtjwo`7(HA6 z7gmO$yTR!5L>Bsg!X8616{JUngg_@&85%>W=mChTR;x4`P=?PJ~oPuy5 zU-L`C@_!34D21{fD~Y8NVnR3t;aqZI3fIhmgmx}$oc-dKDC6Ap$Gy>a!`A*x2L1v0 WcZ@i?LyX}70000 - Default Meeting UI - Dyte UI Kit + Default Meeting UI - RealtimeKit UI Kit diff --git a/angular-examples/examples/with-video-transformer/src/favicon.ico b/angular-examples/examples/with-video-transformer/src/favicon.ico index 997406ad22c29aae95893fb3d666c30258a09537..3c1743067126d27bf0b2faee3963411fe3148b7d 100644 GIT binary patch literal 34494 zcmeHQ36K=k8E%eXlCp%dEQ+#Hx=}R55Mqq6h%vB1f{2M?Bm@mAQc6}sQdGPxmDMN$ z0ChgGeu>7EL-^0_?g*h+#L_?w5JASe8m?7?5sEOR!;qdrsz4+_H`c0ii`f50T z*SGxQAD;xoLsJ9dpVL(_c$O;uJ69D2r6KWMz!W714e`P{UHoN%CMImxhf~|t_|41y zJxeX*GGak0_pue>x*uMym7NKimvY-L+pYDEmCqSJe~(_U;-Jwlq?ibGW$Zr-NCh`GFfmdFnC~9j((XT|hp^<4RFO4%8suT=I3XNZ} zF4Hudle`Hgf^%AKBhC{m-YVBFANPsik`^m(T%7616lDIG7UnZnJU?f8I9;rGtK39n z;!G1)CQPfdZl)*QaQAVe(`t+@sfMFx%$^&L8BxPgpPBQond(eA-n>*NawyQ4-Vn~u z0YBNOiF+1fY@HRV7si(9Z;xFS%6E=u$>2X5<`bI^>Z0PbDIQ#Q_Wi-{kdqBq-io84}~xhQy?GA+d0WCj222O(uj- zGsV1ph8VY17Y`JL`B`|t$fGtsTw~-6nXOK{VU({rS^4}PbnL4(#H$

J9~q8;*U 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 AfdBvi literal 948 zcmV;l155mgP)CBYU7IjCFmI-B}4sMJt3^s9NVg!P0 z6hDQy(L`XWMkB@zOLgN$4KYz;j0zZxq9KKdpZE#5@k0crP^5f9KO};h)ZDQ%ybhht z%t9#h|nu0K(bJ ztIkhEr!*UyrZWQ1k2+YkGqDi8Z<|mIN&$kzpKl{cNP=OQzXHz>vn+c)F)zO|Bou>E z2|-d_=qY#Y+yOu1a}XI?cU}%04)zz%anD(XZC{#~WreV!a$7k2Ug`?&CUEc0EtrkZ zL49MB)h!_K{H(*l_93D5tO0;BUnvYlo+;yss%n^&qjt6fZOa+}+FDO(~2>G z2dx@=JZ?DHP^;b7*Y1as5^uphBsh*s*z&MBd?e@I>-9kU>63PjP&^#5YTOb&x^6Cf z?674rmSHB5Fk!{Gv7rv!?qX#ei_L(XtwVqLX3L}$MI|kJ*w(rhx~tc&L&xP#?cQow zX_|gx$wMr3pRZIIr_;;O|8fAjd;1`nOeu5K(pCu7>^3E&D2OBBq?sYa(%S?GwG&_0-s%_v$L@R!5H_fc)lOb9ZoOO#p`Nn`KU z3LTTBtjwo`7(HA6 z7gmO$yTR!5L>Bsg!X8616{JUngg_@&85%>W=mChTR;x4`P=?PJ~oPuy5 zU-L`C@_!34D21{fD~Y8NVnR3t;aqZI3fIhmgmx}$oc-dKDC6Ap$Gy>a!`A*x2L1v0 WcZ@i?LyX}70000 - With Video Transformer - Dyte UI Kit + With Video Transformer - RealtimeKit UI Kit diff --git a/angular-examples/favicon.ico b/angular-examples/favicon.ico index 6d647f9d0e6802cca6bcdf047b560609bb54e865..3c1743067126d27bf0b2faee3963411fe3148b7d 100644 GIT binary patch literal 34494 zcmeHQ36K=k8E%eXlCp%dEQ+#Hx=}R55Mqq6h%vB1f{2M?Bm@mAQc6}sQdGPxmDMN$ z0ChgGeu>7EL-^0_?g*h+#L_?w5JASe8m?7?5sEOR!;qdrsz4+_H`c0ii`f50T z*SGxQAD;xoLsJ9dpVL(_c$O;uJ69D2r6KWMz!W714e`P{UHoN%CMImxhf~|t_|41y zJxeX*GGak0_pue>x*uMym7NKimvY-L+pYDEmCqSJe~(_U;-Jwlq?ibGW$Zr-NCh`GFfmdFnC~9j((XT|hp^<4RFO4%8suT=I3XNZ} zF4Hudle`Hgf^%AKBhC{m-YVBFANPsik`^m(T%7616lDIG7UnZnJU?f8I9;rGtK39n z;!G1)CQPfdZl)*QaQAVe(`t+@sfMFx%$^&L8BxPgpPBQond(eA-n>*NawyQ4-Vn~u z0YBNOiF+1fY@HRV7si(9Z;xFS%6E=u$>2X5<`bI^>Z0PbDIQ#Q_Wi-{kdqBq-io84}~xhQy?GA+d0WCj222O(uj- zGsV1ph8VY17Y`JL`B`|t$fGtsTw~-6nXOK{VU({rS^4}PbnL4(#H$

J9~q8;*U z<|R&jDJs|gnv8rnZNHBL;uR|2dcXErtR2}?W6F01>nOp4r;YYkzv9!~vWjSTZhwBa zTRKs=Q{Vj3dcAPQ9^;9+ka;PW>!hFXIa{>>zZvbTzV=mL=0QpKa$XQsCY08hpX!e#A9p;bC73AAX%mI0vz{ERy6VLpeMNIv~xJ3NV+a z>zL0JPp{R*AFcVXvu?ttR~S!G8{9WJuqsyFoksY?m=!_s_Ue$B@I^>`xIQGN;M-b=Y-!BUw&(dx%iHFa?RQKc-aZFJJKkp z{bt*EG{mAUR(y|fezE==T~@#Ts3C5fSHB(ZFVgnXT$$>pKyskA7+#zneZ)LfY&oQd zzi(XfzjcnLZ#f?3o$F^g^yT{8kmLaUJ(6r)(bAJH zE;#o%i&8L*E&X z&QNE6{8ebkkU8qKWNG*n)^P(N^I~VYsp1Dt8XfT6uO>sodtZc}OSQge`OxPFC0ak$ ztBddsu=`iE@=}SLw@rHh-<@^w=y-CT`YC+_r&4|*dFXp_YV}7K5SiDJ`pJxMPSy<4PzboF|X4!P_q}j%)9W0qsd)PSfMRI5UlE7siD}CB< zD$f-z1pUb-{b-05TW45b+z{=P4*ijISo)JTyy}#3?Q6?|1x*z;R_O&hPMQVdx9LfR zDdk2!$pW@x{q4PTT9=Z0-j;1hjQw>xeHxx)9ZFQ4F~e)QQEW=0*_p^VtUcDK=H;-V z=;Pd)n*s4-u#XUuwj(C;IJi<_nFnBTgLjuZrGagrDJ^__9_DQ zFcG#lv2^I*8S^^iRj`(N)((f|?}RS=CD<1gZqdX{>=nTNMaiAAt2!uqa&eW^fs zVkPzs*6h;->@Vb+J^HC!H{W{15U}qQdruew>xfKx#NGn>r8rV&itva!f5vUo z$6B%{+TFpP|6rfsqeRA#bfuv_LwjlQ#++xr(2F!ft_w@LS$|w@A$5w@%WavnyfX-C zEd8d|4Abw{ALvX$nLZJF$7D|~>2uLceZkfxv`cgBNj_oIpJDx>HoOXb0s1TMmHWG4 z{h>WQ^y4Co_1!F;;r?pR!HHIf9@#kdKikn>QM&Xak#feb4eiAKYu?gtjDa|Z&$*MuxZ1*QpA~!b-WZcYb~|KHf2a=F@aMVo!=@!hysa~C{o(taM~xdFnXWGW z`D@{Qw$5+(k7CRl^TOibL@86|sgXK%4QxPR8`;jGC(b?^6?e7`(`!NQ51db-GZonX zx&(Qoj=_esJ=vWmq8Evzd3u35*-1|#IB1P%AEM127w;bL(2?oTExglfkJZXO=%nhm zWKDTk-V(R?khi5HR!^F-%kFi%(~c}P)zXxza(p7ygP?auNW!s$7JJ?1!Z;>mi> zyxI30Pp~Fnw#A%hVA*d`gl0m{?NDSyK6$v!}g{C_E;mQYzz(FcEspR_BrwLCi9GC#}IiF(icvj z1(4(_We!?woZ|>OaiSOZ5jw*>G*LX$BK5_hh4HM1Br}q)6&UAs;CQK1j&yc>Q^z@V z#)%VMeDB1meQ?ihmJK-5!n$Jj1)@LOgRA{nf24j`vaW}_^2p~+6-V-=x>?SQJD~j> zak8x#TKsYQHHj_}ow36CB7c@WK})t-ulFvRj6s?ohmyhv|>0 zXYtC&^fPBW5RUrJE8PLjL^jc!QJ4=qBp4zo4Z%_?9Yfed!6FK0<1J_s#94U>ab6yz zD>%9(;YGwpJ`AS_mRbjC_Yy_ zG^QT-^jnl1=Mwp3CBIALmz8`k zk#AP=za)9zq>&A*^usjU!TXXpynh9sNaQyb?V!Xf)UsmdT(nI)UP3(j?rJmD9-o*1az`;)KR1m^^IE!1jo zE-1ohEz5%RpfP0DpZd)@o1jZT^7C6)5& z|0U?6b7=8ofbWH}!*yndRCuR6RHt3TZOK&FfzmIvw&XZ;}=5rMo+jiotYYF~WWDLf|o^+0q>2EANT5IH7 z|GMQrJd3`Mac*-ncuO0f@#M6=Qt#0*%lZNA@Z-MAP!+xtcRQFeR|6 zv3z7AKfVRi?jzXU{-l4K59-}AL4RY*#9D0|d=po>X-?-o&M;4HES;ImUv^mUBF~p* z;9UWK!4=jSsify}ndI4BHpYkk@Hd*)^vzrzRr8RS`-|Mv$>n$uifq&bYA$TG5%`sT!QodFOm42vLo(_0A;OT&;1D+0eI^gMmrvsi2q+JIf((Jj& zUjZ)q?;5&d!czHIX~wWJeBVO)bqN304aKyO{v6=hf&4b$YHh(QE!fq9A`J0AIF*!a zDE=46g3>_*$%haN!lMKJFbC8TL=DJ>i)x`OAGOd`3daz1)lhM`^l&nXXU)(50g1C5 AfdBvi literal 678 zcmV;X0$Kf1Nk&GV0ssJ4MM6+kP&iDI0ssInAHW9?zvVcRBuB}+L%i_c8%&a4f+>^{ z3fs1A*!lm(5!*(Rq|_aMVB{YOHWoCb$hKWoi<|}EAkH%mFoGpKUZ# z=~dn6uEuV+7A-vD^72p6#tqN(FQ9=R#J1+-F>kX~>++v6kO+cAAk07@0zn9b!q0*_dj6jhN8h@aL1{#cd0d%cOOy!71lx>aWv+so7Xq{GRc3Rif8m*)CY>>Zg+xaKY zY}>Y(>udX?T6W8}-7;qHi){UYvwyvxi2hFit+0CnKJs_>&RLHSQ}@kLH{tP_W1Yuu zz98S6bkp-rn?}db?z~O2?|ujBV$H;$EXiY5%?0w!tOo$z9?>ZR4}1_j(uDRt{hdiK zUfsF+l+~l20Rdo!WIXtfHYQEegJ*}eP&!398HYPHGvlHo@%I@_D&W;nOPMeEChgGeu>7EL-^0_?g*h+#L_?w5JASe8m?7?5sEOR!;qdrsz4+_H`c0ii`f50T z*SGxQAD;xoLsJ9dpVL(_c$O;uJ69D2r6KWMz!W714e`P{UHoN%CMImxhf~|t_|41y zJxeX*GGak0_pue>x*uMym7NKimvY-L+pYDEmCqSJe~(_U;-Jwlq?ibGW$Zr-NCh`GFfmdFnC~9j((XT|hp^<4RFO4%8suT=I3XNZ} zF4Hudle`Hgf^%AKBhC{m-YVBFANPsik`^m(T%7616lDIG7UnZnJU?f8I9;rGtK39n z;!G1)CQPfdZl)*QaQAVe(`t+@sfMFx%$^&L8BxPgpPBQond(eA-n>*NawyQ4-Vn~u z0YBNOiF+1fY@HRV7si(9Z;xFS%6E=u$>2X5<`bI^>Z0PbDIQ#Q_Wi-{kdqBq-io84}~xhQy?GA+d0WCj222O(uj- zGsV1ph8VY17Y`JL`B`|t$fGtsTw~-6nXOK{VU({rS^4}PbnL4(#H$

J9~q8;*U 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 AfdBvi literal 678 zcmV;X0$Kf1Nk&GV0ssJ4MM6+kP&iDI0ssInAHW9?zvVcRBuB}+L%i_c8%&a4f+>^{ z3fs1A*!lm(5!*(Rq|_aMVB{YOHWoCb$hKWoi<|}EAkH%mFoGpKUZ# z=~dn6uEuV+7A-vD^72p6#tqN(FQ9=R#J1+-F>kX~>++v6kO+cAAk07@0zn9b!q0*_dj6jhN8h@aL1{#cd0d%cOOy!71lx>aWv+so7Xq{GRc3Rif8m*)CY>>Zg+xaKY zY}>Y(>udX?T6W8}-7;qHi){UYvwyvxi2hFit+0CnKJs_>&RLHSQ}@kLH{tP_W1Yuu zz98S6bkp-rn?}db?z~O2?|ujBV$H;$EXiY5%?0w!tOo$z9?>ZR4}1_j(uDRt{hdiK zUfsF+l+~l20Rdo!WIXtfHYQEegJ*}eP&!398HYPHGvlHo@%I@_D&W;nOPMeEBackgrounds

function loadBackgroundChangerUI() { const backgroundImages = [ - 'https://assets.dyte.io/backgrounds/bg-dyte-office.jpg', - 'https://assets.dyte.io/backgrounds/bg_0.jpg', - 'https://assets.dyte.io/backgrounds/bg_1.jpg', - 'https://assets.dyte.io/backgrounds/bg_2.jpg', - 'https://assets.dyte.io/backgrounds/bg_3.jpg', - 'https://assets.dyte.io/backgrounds/bg_4.jpg', - 'https://assets.dyte.io/backgrounds/bg_5.jpg', - 'https://assets.dyte.io/backgrounds/bg_6.jpg', - 'https://assets.dyte.io/backgrounds/bg_7.jpg', + 'https://rtk-assets.realtime.cloudflare.com/backgrounds/bg_1.jpg', + 'https://rtk-assets.realtime.cloudflare.com/backgrounds/bg_2.jpg', + 'https://rtk-assets.realtime.cloudflare.com/backgrounds/bg_3.jpg', + 'https://rtk-assets.realtime.cloudflare.com/backgrounds/bg_4.jpg', + 'https://rtk-assets.realtime.cloudflare.com/backgrounds/bg_5.jpg', + 'https://rtk-assets.realtime.cloudflare.com/backgrounds/bg_6.jpg', + 'https://rtk-assets.realtime.cloudflare.com/backgrounds/bg_7.jpg', ]; for (const image of backgroundImages) { diff --git a/html-examples/examples/create-your-own-ui/components/audio-preview.js b/html-examples/examples/create-your-own-ui/components/audio-preview.js index e2509e3..3ad97de 100644 --- a/html-examples/examples/create-your-own-ui/components/audio-preview.js +++ b/html-examples/examples/create-your-own-ui/components/audio-preview.js @@ -18,7 +18,7 @@ window.AudioPreview = (function() { ${canProduceAudio ? `
diff --git a/html-examples/examples/with-background-transformer/index.html b/html-examples/examples/with-background-transformer/index.html index dc5c6fb..58f43f2 100644 --- a/html-examples/examples/with-background-transformer/index.html +++ b/html-examples/examples/with-background-transformer/index.html @@ -69,20 +69,18 @@ // 2. To add a background image await meeting.self.addVideoMiddleware( await videoBackgroundTransformer.createStaticBackgroundVideoMiddleware( - 'https://assets.dyte.io/backgrounds/bg-dyte-office.jpg' + 'https://rtk-assets.realtime.cloudflare.com/backgrounds/bg_1.jpg' ) ); // We have the following set of images for your immediate use: - // https://assets.dyte.io/backgrounds/bg-dyte-office.jpg - // https://assets.dyte.io/backgrounds/bg_0.jpg - // https://assets.dyte.io/backgrounds/bg_1.jpg - // https://assets.dyte.io/backgrounds/bg_2.jpg - // https://assets.dyte.io/backgrounds/bg_3.jpg - // https://assets.dyte.io/backgrounds/bg_4.jpg - // https://assets.dyte.io/backgrounds/bg_5.jpg - // https://assets.dyte.io/backgrounds/bg_6.jpg - // https://assets.dyte.io/backgrounds/bg_7.jpg + // https://rtk-assets.realtime.cloudflare.com/backgrounds/bg_1.jpg + // https://rtk-assets.realtime.cloudflare.com/backgrounds/bg_2.jpg + // https://rtk-assets.realtime.cloudflare.com/backgrounds/bg_3.jpg + // https://rtk-assets.realtime.cloudflare.com/backgrounds/bg_4.jpg + // https://rtk-assets.realtime.cloudflare.com/backgrounds/bg_5.jpg + // https://rtk-assets.realtime.cloudflare.com/backgrounds/bg_6.jpg + // https://rtk-assets.realtime.cloudflare.com/backgrounds/bg_7.jpg }); diff --git a/html-examples/examples/with-ui-addons/index.html b/html-examples/examples/with-ui-addons/index.html index 73046a0..80f41ff 100644 --- a/html-examples/examples/with-ui-addons/index.html +++ b/html-examples/examples/with-ui-addons/index.html @@ -26,7 +26,7 @@
diff --git a/html-examples/favicon.ico b/html-examples/favicon.ico index 6d647f9d0e6802cca6bcdf047b560609bb54e865..3c1743067126d27bf0b2faee3963411fe3148b7d 100644 GIT binary patch literal 34494 zcmeHQ36K=k8E%eXlCp%dEQ+#Hx=}R55Mqq6h%vB1f{2M?Bm@mAQc6}sQdGPxmDMN$ z0ChgGeu>7EL-^0_?g*h+#L_?w5JASe8m?7?5sEOR!;qdrsz4+_H`c0ii`f50T z*SGxQAD;xoLsJ9dpVL(_c$O;uJ69D2r6KWMz!W714e`P{UHoN%CMImxhf~|t_|41y zJxeX*GGak0_pue>x*uMym7NKimvY-L+pYDEmCqSJe~(_U;-Jwlq?ibGW$Zr-NCh`GFfmdFnC~9j((XT|hp^<4RFO4%8suT=I3XNZ} zF4Hudle`Hgf^%AKBhC{m-YVBFANPsik`^m(T%7616lDIG7UnZnJU?f8I9;rGtK39n z;!G1)CQPfdZl)*QaQAVe(`t+@sfMFx%$^&L8BxPgpPBQond(eA-n>*NawyQ4-Vn~u z0YBNOiF+1fY@HRV7si(9Z;xFS%6E=u$>2X5<`bI^>Z0PbDIQ#Q_Wi-{kdqBq-io84}~xhQy?GA+d0WCj222O(uj- zGsV1ph8VY17Y`JL`B`|t$fGtsTw~-6nXOK{VU({rS^4}PbnL4(#H$

J9~q8;*U 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 AfdBvi literal 678 zcmV;X0$Kf1Nk&GV0ssJ4MM6+kP&iDI0ssInAHW9?zvVcRBuB}+L%i_c8%&a4f+>^{ z3fs1A*!lm(5!*(Rq|_aMVB{YOHWoCb$hKWoi<|}EAkH%mFoGpKUZ# z=~dn6uEuV+7A-vD^72p6#tqN(FQ9=R#J1+-F>kX~>++v6kO+cAAk07@0zn9b!q0*_dj6jhN8h@aL1{#cd0d%cOOy!71lx>aWv+so7Xq{GRc3Rif8m*)CY>>Zg+xaKY zY}>Y(>udX?T6W8}-7;qHi){UYvwyvxi2hFit+0CnKJs_>&RLHSQ}@kLH{tP_W1Yuu zz98S6bkp-rn?}db?z~O2?|ujBV$H;$EXiY5%?0w!tOo$z9?>ZR4}1_j(uDRt{hdiK zUfsF+l+~l20Rdo!WIXtfHYQEegJ*}eP&!398HYPHGvlHo@%I@_D&W;nOPMeE=10.0.0'} - '@dyteinternals/utils@3.4.0': - resolution: {integrity: sha512-UPkrshAvBBD8gFdBNpJGlgOEUJxIACRhpZq1xuQE2tmnIa/CnwCGxvHRk5RNa0CV2OeTtvcjZ/rV/OCPuNG4fg==} - '@emnapi/runtime@1.11.1': resolution: {integrity: sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==} @@ -10137,10 +10454,6 @@ snapshots: '@discoveryjs/json-ext@0.5.7': {} - '@dyteinternals/utils@3.4.0': - dependencies: - lodash-es: 4.18.1 - '@emnapi/runtime@1.11.1': dependencies: tslib: 2.8.1 @@ -16210,7 +16523,7 @@ snapshots: debug: 4.4.3 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.1.7(@types/node@22.19.21)(jiti@2.7.0)(less@4.1.3)(lightningcss@1.30.1)(terser@5.48.0) + vite: 6.4.3(@types/node@22.19.21)(jiti@2.7.0)(less@4.1.3)(lightningcss@1.30.1)(sass@1.58.1)(terser@5.48.0) transitivePeerDependencies: - '@types/node' - jiti diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index ed06446..c422b65 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -4,4 +4,5 @@ packages: - '*/react-examples/*' - '*/angular-examples/*' - '*/html-examples/*' - - 'recording-sdk-app-samples/react-examples/*' + - 'recording-sdk-app-examples/react-examples/*' + - 'recording-sdk-app-examples/angular-examples/*' diff --git a/react-examples/examples/back-to-back-meetings/src/Meeting.tsx b/react-examples/examples/back-to-back-meetings/src/Meeting.tsx index 51c7361..4517afc 100644 --- a/react-examples/examples/back-to-back-meetings/src/Meeting.tsx +++ b/react-examples/examples/back-to-back-meetings/src/Meeting.tsx @@ -123,9 +123,9 @@ export function Meeting( // Handle smaller screens ['rtk-more-toggle.activeMoreMenu', 'rtk-more-toggle.activeMoreMenu.md', 'rtk-more-toggle.activeMoreMenu.sm'].forEach((configElemKey) => { const configElem = newConfig?.root?.[configElemKey] as any; - configElem?.forEach((dyteElemConfigSet: any) => { - if (dyteElemConfigSet[0] === 'rtk-fullscreen-toggle') { - dyteElemConfigSet[1].targetElement = document.getElementById(meetingIdentifier)!; + configElem?.forEach((rtkElemConfigSet: any) => { + if (rtkElemConfigSet[0] === 'rtk-fullscreen-toggle') { + rtkElemConfigSet[1].targetElement = document.getElementById(meetingIdentifier)!; } }); }); diff --git a/react-examples/examples/create-your-own-ui/src/App.tsx b/react-examples/examples/create-your-own-ui/src/App.tsx index 3e455cc..e21cb8d 100644 --- a/react-examples/examples/create-your-own-ui/src/App.tsx +++ b/react-examples/examples/create-your-own-ui/src/App.tsx @@ -14,7 +14,7 @@ function Meeting() { useEffect(() => { if (meeting) { /** - * NOTE(ravindra-dyte): + * NOTE(ravindra-cloudflare): * During development phase, make sure to expose meeting object to window, * for debugging purposes. */ diff --git a/react-examples/examples/create-your-own-ui/src/components/audio-preview.tsx b/react-examples/examples/create-your-own-ui/src/components/audio-preview.tsx index 75dd056..f1a2c48 100644 --- a/react-examples/examples/create-your-own-ui/src/components/audio-preview.tsx +++ b/react-examples/examples/create-your-own-ui/src/components/audio-preview.tsx @@ -74,7 +74,7 @@ function AudioPreviewWithCustomUI() {