Spaces:
Sleeping
Sleeping
Update
Browse files- Dockerfile +4 -0
- client/js/src/robotics/consumer.ts +2 -2
- client/js/src/robotics/core.ts +1 -1
- client/js/src/robotics/factory.ts +3 -3
- client/js/src/robotics/producer.ts +2 -2
- client/js/src/video/consumer.ts +2 -2
- client/js/src/video/core.ts +1 -1
- client/js/src/video/factory.ts +3 -3
- client/js/src/video/producer.ts +2 -2
- client/js/tests/factory.test.ts +6 -6
- client/python/src/transport_server_client/__pycache__/client.cpython-312.pyc +0 -0
- client/python/src/transport_server_client/client.py +6 -6
- client/python/src/transport_server_client/video/__pycache__/consumer.cpython-312.pyc +0 -0
- client/python/src/transport_server_client/video/__pycache__/core.cpython-312.pyc +0 -0
- client/python/src/transport_server_client/video/__pycache__/factory.cpython-312.pyc +0 -0
- client/python/src/transport_server_client/video/__pycache__/producer.cpython-312.pyc +0 -0
- client/python/src/transport_server_client/video/consumer.py +2 -2
- client/python/src/transport_server_client/video/core.py +1 -1
- client/python/src/transport_server_client/video/factory.py +3 -3
- client/python/src/transport_server_client/video/producer.py +2 -2
- demo/.env.example +1 -0
- demo/bun.lock +597 -0
- demo/src/lib/settings.svelte.ts +9 -0
- demo/src/routes/+page.svelte +5 -1
- demo/src/routes/[workspaceId]/+page.svelte +3 -2
- demo/src/routes/[workspaceId]/robotics/+page.svelte +2 -1
- demo/src/routes/[workspaceId]/robotics/consumer/+page.svelte +2 -1
- demo/src/routes/[workspaceId]/robotics/producer/+page.svelte +3 -2
- demo/src/routes/[workspaceId]/video/+page.svelte +2 -1
- demo/src/routes/[workspaceId]/video/consumer/+page.svelte +2 -1
- demo/src/routes/[workspaceId]/video/producer/+page.svelte +3 -2
- server/launch_with_ui.py +1 -1
- test-docker.sh +3 -3
Dockerfile
CHANGED
@@ -1,6 +1,10 @@
|
|
1 |
# Stage 1: Build frontend with Bun (client library + demo)
|
2 |
FROM oven/bun:1-alpine AS frontend-builder
|
3 |
|
|
|
|
|
|
|
|
|
4 |
WORKDIR /app
|
5 |
|
6 |
# Install git for dependencies that might need it
|
|
|
1 |
# Stage 1: Build frontend with Bun (client library + demo)
|
2 |
FROM oven/bun:1-alpine AS frontend-builder
|
3 |
|
4 |
+
# Build argument for transport server URL
|
5 |
+
ARG PUBLIC_TRANSPORT_SERVER_URL=https://blanchon-robothub-transportserver.hf.space/api
|
6 |
+
ENV PUBLIC_TRANSPORT_SERVER_URL=${PUBLIC_TRANSPORT_SERVER_URL}
|
7 |
+
|
8 |
WORKDIR /app
|
9 |
|
10 |
# Install git for dependencies that might need it
|
client/js/src/robotics/consumer.ts
CHANGED
@@ -17,7 +17,7 @@ export class RoboticsConsumer extends RoboticsClientCore {
|
|
17 |
private onStateSyncCallback: StateSyncCallback | null = null;
|
18 |
private onJointUpdateCallback: JointUpdateCallback | null = null;
|
19 |
|
20 |
-
constructor(baseUrl
|
21 |
super(baseUrl, options);
|
22 |
}
|
23 |
|
@@ -93,7 +93,7 @@ export class RoboticsConsumer extends RoboticsClientCore {
|
|
93 |
static async createAndConnect(
|
94 |
workspaceId: string,
|
95 |
roomId: string,
|
96 |
-
baseUrl
|
97 |
participantId?: string
|
98 |
): Promise<RoboticsConsumer> {
|
99 |
const consumer = new RoboticsConsumer(baseUrl);
|
|
|
17 |
private onStateSyncCallback: StateSyncCallback | null = null;
|
18 |
private onJointUpdateCallback: JointUpdateCallback | null = null;
|
19 |
|
20 |
+
constructor(baseUrl: string, options: ClientOptions = {}) {
|
21 |
super(baseUrl, options);
|
22 |
}
|
23 |
|
|
|
93 |
static async createAndConnect(
|
94 |
workspaceId: string,
|
95 |
roomId: string,
|
96 |
+
baseUrl: string,
|
97 |
participantId?: string
|
98 |
): Promise<RoboticsConsumer> {
|
99 |
const consumer = new RoboticsConsumer(baseUrl);
|
client/js/src/robotics/core.ts
CHANGED
@@ -38,7 +38,7 @@ export class RoboticsClientCore extends EventEmitter {
|
|
38 |
protected onConnectedCallback: ConnectedCallback | null = null;
|
39 |
protected onDisconnectedCallback: DisconnectedCallback | null = null;
|
40 |
|
41 |
-
constructor(baseUrl
|
42 |
super();
|
43 |
this.baseUrl = baseUrl.replace(/\/$/, '');
|
44 |
this.apiBase = `${this.baseUrl}/robotics`;
|
|
|
38 |
protected onConnectedCallback: ConnectedCallback | null = null;
|
39 |
protected onDisconnectedCallback: DisconnectedCallback | null = null;
|
40 |
|
41 |
+
constructor(baseUrl: string, options: ClientOptions = {}) {
|
42 |
super();
|
43 |
this.baseUrl = baseUrl.replace(/\/$/, '');
|
44 |
this.apiBase = `${this.baseUrl}/robotics`;
|
client/js/src/robotics/factory.ts
CHANGED
@@ -11,7 +11,7 @@ import type { ParticipantRole, ClientOptions } from './types.js';
|
|
11 |
*/
|
12 |
export function createClient(
|
13 |
role: ParticipantRole,
|
14 |
-
baseUrl
|
15 |
options: ClientOptions = {}
|
16 |
): RoboticsProducer | RoboticsConsumer {
|
17 |
if (role === 'producer') {
|
@@ -27,7 +27,7 @@ export function createClient(
|
|
27 |
* Create and connect a producer client
|
28 |
*/
|
29 |
export async function createProducerClient(
|
30 |
-
baseUrl
|
31 |
workspaceId?: string,
|
32 |
roomId?: string,
|
33 |
participantId?: string,
|
@@ -51,7 +51,7 @@ export async function createProducerClient(
|
|
51 |
export async function createConsumerClient(
|
52 |
workspaceId: string,
|
53 |
roomId: string,
|
54 |
-
baseUrl
|
55 |
participantId?: string,
|
56 |
options: ClientOptions = {}
|
57 |
): Promise<RoboticsConsumer> {
|
|
|
11 |
*/
|
12 |
export function createClient(
|
13 |
role: ParticipantRole,
|
14 |
+
baseUrl: string,
|
15 |
options: ClientOptions = {}
|
16 |
): RoboticsProducer | RoboticsConsumer {
|
17 |
if (role === 'producer') {
|
|
|
27 |
* Create and connect a producer client
|
28 |
*/
|
29 |
export async function createProducerClient(
|
30 |
+
baseUrl: string,
|
31 |
workspaceId?: string,
|
32 |
roomId?: string,
|
33 |
participantId?: string,
|
|
|
51 |
export async function createConsumerClient(
|
52 |
workspaceId: string,
|
53 |
roomId: string,
|
54 |
+
baseUrl: string,
|
55 |
participantId?: string,
|
56 |
options: ClientOptions = {}
|
57 |
): Promise<RoboticsConsumer> {
|
client/js/src/robotics/producer.ts
CHANGED
@@ -11,7 +11,7 @@ import type {
|
|
11 |
} from './types.js';
|
12 |
|
13 |
export class RoboticsProducer extends RoboticsClientCore {
|
14 |
-
constructor(baseUrl
|
15 |
super(baseUrl, options);
|
16 |
}
|
17 |
|
@@ -88,7 +88,7 @@ export class RoboticsProducer extends RoboticsClientCore {
|
|
88 |
* Create a room and automatically connect as producer
|
89 |
*/
|
90 |
static async createAndConnect(
|
91 |
-
baseUrl
|
92 |
workspaceId?: string,
|
93 |
roomId?: string,
|
94 |
participantId?: string
|
|
|
11 |
} from './types.js';
|
12 |
|
13 |
export class RoboticsProducer extends RoboticsClientCore {
|
14 |
+
constructor(baseUrl: string, options: ClientOptions = {}) {
|
15 |
super(baseUrl, options);
|
16 |
}
|
17 |
|
|
|
88 |
* Create a room and automatically connect as producer
|
89 |
*/
|
90 |
static async createAndConnect(
|
91 |
+
baseUrl: string,
|
92 |
workspaceId?: string,
|
93 |
roomId?: string,
|
94 |
participantId?: string
|
client/js/src/video/consumer.ts
CHANGED
@@ -39,7 +39,7 @@ export class VideoConsumer extends VideoClientCore {
|
|
39 |
private iceCandidateQueue: { candidate: RTCIceCandidate; fromProducer: string }[] = [];
|
40 |
private hasRemoteDescription = false;
|
41 |
|
42 |
-
constructor(baseUrl
|
43 |
super(baseUrl, options);
|
44 |
}
|
45 |
|
@@ -393,7 +393,7 @@ export class VideoConsumer extends VideoClientCore {
|
|
393 |
static async createAndConnect(
|
394 |
workspaceId: string,
|
395 |
roomId: string,
|
396 |
-
baseUrl
|
397 |
participantId?: string
|
398 |
): Promise<VideoConsumer> {
|
399 |
const consumer = new VideoConsumer(baseUrl);
|
|
|
39 |
private iceCandidateQueue: { candidate: RTCIceCandidate; fromProducer: string }[] = [];
|
40 |
private hasRemoteDescription = false;
|
41 |
|
42 |
+
constructor(baseUrl: string, options: ClientOptions = {}) {
|
43 |
super(baseUrl, options);
|
44 |
}
|
45 |
|
|
|
393 |
static async createAndConnect(
|
394 |
workspaceId: string,
|
395 |
roomId: string,
|
396 |
+
baseUrl: string,
|
397 |
participantId?: string
|
398 |
): Promise<VideoConsumer> {
|
399 |
const consumer = new VideoConsumer(baseUrl);
|
client/js/src/video/core.ts
CHANGED
@@ -48,7 +48,7 @@ export class VideoClientCore extends EventEmitter {
|
|
48 |
protected onConnectedCallback: ConnectedCallback | null = null;
|
49 |
protected onDisconnectedCallback: DisconnectedCallback | null = null;
|
50 |
|
51 |
-
constructor(baseUrl
|
52 |
super();
|
53 |
this.baseUrl = baseUrl.replace(/\/$/, '');
|
54 |
this.apiBase = `${this.baseUrl}/video`;
|
|
|
48 |
protected onConnectedCallback: ConnectedCallback | null = null;
|
49 |
protected onDisconnectedCallback: DisconnectedCallback | null = null;
|
50 |
|
51 |
+
constructor(baseUrl: string, options: ClientOptions = {}) {
|
52 |
super();
|
53 |
this.baseUrl = baseUrl.replace(/\/$/, '');
|
54 |
this.apiBase = `${this.baseUrl}/video`;
|
client/js/src/video/factory.ts
CHANGED
@@ -11,7 +11,7 @@ import type { ParticipantRole, ClientOptions } from './types.js';
|
|
11 |
*/
|
12 |
export function createClient(
|
13 |
role: ParticipantRole,
|
14 |
-
baseUrl
|
15 |
options: ClientOptions = {}
|
16 |
): VideoProducer | VideoConsumer {
|
17 |
if (role === 'producer') {
|
@@ -27,7 +27,7 @@ export function createClient(
|
|
27 |
* Create and connect a producer client
|
28 |
*/
|
29 |
export async function createProducerClient(
|
30 |
-
baseUrl
|
31 |
workspaceId?: string,
|
32 |
roomId?: string,
|
33 |
participantId?: string,
|
@@ -51,7 +51,7 @@ export async function createProducerClient(
|
|
51 |
export async function createConsumerClient(
|
52 |
workspaceId: string,
|
53 |
roomId: string,
|
54 |
-
baseUrl
|
55 |
participantId?: string,
|
56 |
options: ClientOptions = {}
|
57 |
): Promise<VideoConsumer> {
|
|
|
11 |
*/
|
12 |
export function createClient(
|
13 |
role: ParticipantRole,
|
14 |
+
baseUrl: string,
|
15 |
options: ClientOptions = {}
|
16 |
): VideoProducer | VideoConsumer {
|
17 |
if (role === 'producer') {
|
|
|
27 |
* Create and connect a producer client
|
28 |
*/
|
29 |
export async function createProducerClient(
|
30 |
+
baseUrl: string,
|
31 |
workspaceId?: string,
|
32 |
roomId?: string,
|
33 |
participantId?: string,
|
|
|
51 |
export async function createConsumerClient(
|
52 |
workspaceId: string,
|
53 |
roomId: string,
|
54 |
+
baseUrl: string,
|
55 |
participantId?: string,
|
56 |
options: ClientOptions = {}
|
57 |
): Promise<VideoConsumer> {
|
client/js/src/video/producer.ts
CHANGED
@@ -20,7 +20,7 @@ export class VideoProducer extends VideoClientCore {
|
|
20 |
// Multiple peer connections - one per consumer
|
21 |
private consumerConnections: Map<string, RTCPeerConnection> = new Map();
|
22 |
|
23 |
-
constructor(baseUrl
|
24 |
super(baseUrl, options);
|
25 |
}
|
26 |
|
@@ -413,7 +413,7 @@ export class VideoProducer extends VideoClientCore {
|
|
413 |
* Create a room and automatically connect as producer
|
414 |
*/
|
415 |
static async createAndConnect(
|
416 |
-
baseUrl
|
417 |
workspaceId?: string,
|
418 |
roomId?: string,
|
419 |
participantId?: string
|
|
|
20 |
// Multiple peer connections - one per consumer
|
21 |
private consumerConnections: Map<string, RTCPeerConnection> = new Map();
|
22 |
|
23 |
+
constructor(baseUrl: string, options: ClientOptions = {}) {
|
24 |
super(baseUrl, options);
|
25 |
}
|
26 |
|
|
|
413 |
* Create a room and automatically connect as producer
|
414 |
*/
|
415 |
static async createAndConnect(
|
416 |
+
baseUrl: string,
|
417 |
workspaceId?: string,
|
418 |
roomId?: string,
|
419 |
participantId?: string
|
client/js/tests/factory.test.ts
CHANGED
@@ -19,25 +19,25 @@ describe("Factory Functions", () => {
|
|
19 |
});
|
20 |
|
21 |
test("create client producer", () => {
|
22 |
-
const client = createClient("producer");
|
23 |
expect(client).toBeInstanceOf(RoboticsProducer);
|
24 |
expect(client.isConnected()).toBe(false);
|
25 |
expect(client.getConnectionInfo().base_url).toBe("http://localhost:8000");
|
26 |
});
|
27 |
|
28 |
test("create client consumer", () => {
|
29 |
-
const client = createClient("consumer");
|
30 |
expect(client).toBeInstanceOf(RoboticsConsumer);
|
31 |
expect(client.isConnected()).toBe(false);
|
32 |
expect(client.getConnectionInfo().base_url).toBe("http://localhost:8000");
|
33 |
});
|
34 |
|
35 |
test("create client invalid role", () => {
|
36 |
-
expect(() => createClient("invalid_role" as any)).toThrow("Invalid role");
|
37 |
});
|
38 |
|
39 |
test("create client default url", () => {
|
40 |
-
const client = createClient("producer");
|
41 |
expect(client.getConnectionInfo().base_url).toBe("http://localhost:8000");
|
42 |
});
|
43 |
|
@@ -152,7 +152,7 @@ describe("Factory Functions", () => {
|
|
152 |
});
|
153 |
|
154 |
test("convenience functions with default url", async () => {
|
155 |
-
const producer = await createProducerClient();
|
156 |
const producerInfo = producer.getConnectionInfo();
|
157 |
const workspaceId = producerInfo.workspace_id!;
|
158 |
const roomId = producerInfo.room_id!;
|
@@ -162,7 +162,7 @@ describe("Factory Functions", () => {
|
|
162 |
expect(producerInfo.base_url).toBe("http://localhost:8000");
|
163 |
expect(producer.isConnected()).toBe(true);
|
164 |
|
165 |
-
const consumer = await createConsumerClient(workspaceId, roomId);
|
166 |
|
167 |
try {
|
168 |
const consumerInfo = consumer.getConnectionInfo();
|
|
|
19 |
});
|
20 |
|
21 |
test("create client producer", () => {
|
22 |
+
const client = createClient("producer", TEST_SERVER_URL);
|
23 |
expect(client).toBeInstanceOf(RoboticsProducer);
|
24 |
expect(client.isConnected()).toBe(false);
|
25 |
expect(client.getConnectionInfo().base_url).toBe("http://localhost:8000");
|
26 |
});
|
27 |
|
28 |
test("create client consumer", () => {
|
29 |
+
const client = createClient("consumer", TEST_SERVER_URL);
|
30 |
expect(client).toBeInstanceOf(RoboticsConsumer);
|
31 |
expect(client.isConnected()).toBe(false);
|
32 |
expect(client.getConnectionInfo().base_url).toBe("http://localhost:8000");
|
33 |
});
|
34 |
|
35 |
test("create client invalid role", () => {
|
36 |
+
expect(() => createClient("invalid_role" as any, TEST_SERVER_URL)).toThrow("Invalid role");
|
37 |
});
|
38 |
|
39 |
test("create client default url", () => {
|
40 |
+
const client = createClient("producer", TEST_SERVER_URL);
|
41 |
expect(client.getConnectionInfo().base_url).toBe("http://localhost:8000");
|
42 |
});
|
43 |
|
|
|
152 |
});
|
153 |
|
154 |
test("convenience functions with default url", async () => {
|
155 |
+
const producer = await createProducerClient(TEST_SERVER_URL);
|
156 |
const producerInfo = producer.getConnectionInfo();
|
157 |
const workspaceId = producerInfo.workspace_id!;
|
158 |
const roomId = producerInfo.room_id!;
|
|
|
162 |
expect(producerInfo.base_url).toBe("http://localhost:8000");
|
163 |
expect(producer.isConnected()).toBe(true);
|
164 |
|
165 |
+
const consumer = await createConsumerClient(workspaceId, roomId, TEST_SERVER_URL);
|
166 |
|
167 |
try {
|
168 |
const consumerInfo = consumer.getConnectionInfo();
|
client/python/src/transport_server_client/__pycache__/client.cpython-312.pyc
CHANGED
Binary files a/client/python/src/transport_server_client/__pycache__/client.cpython-312.pyc and b/client/python/src/transport_server_client/__pycache__/client.cpython-312.pyc differ
|
|
client/python/src/transport_server_client/client.py
CHANGED
@@ -14,7 +14,7 @@ logger = logging.getLogger(__name__)
|
|
14 |
class RoboticsClientCore:
|
15 |
"""Base client for RobotHub TransportServer robotics API"""
|
16 |
|
17 |
-
def __init__(self, base_url: str
|
18 |
self.base_url = base_url.rstrip("/")
|
19 |
self.api_base = f"{self.base_url}/robotics"
|
20 |
|
@@ -314,7 +314,7 @@ class RoboticsClientCore:
|
|
314 |
class RoboticsProducer(RoboticsClientCore):
|
315 |
"""Producer client for controlling robots"""
|
316 |
|
317 |
-
def __init__(self, base_url: str
|
318 |
super().__init__(base_url)
|
319 |
self._on_error_callback: Callable[[str], None] | None = None
|
320 |
self._on_connected_callback: Callable[[], None] | None = None
|
@@ -401,7 +401,7 @@ class RoboticsProducer(RoboticsClientCore):
|
|
401 |
class RoboticsConsumer(RoboticsClientCore):
|
402 |
"""Consumer client for receiving robot commands"""
|
403 |
|
404 |
-
def __init__(self, base_url: str
|
405 |
super().__init__(base_url)
|
406 |
self._on_state_sync_callback: Callable[[dict], None] | None = None
|
407 |
self._on_joint_update_callback: Callable[[list], None] | None = None
|
@@ -492,7 +492,7 @@ class RoboticsConsumer(RoboticsClientCore):
|
|
492 |
# ============= FACTORY FUNCTIONS =============
|
493 |
|
494 |
|
495 |
-
def create_client(role: str, base_url: str
|
496 |
"""Factory function to create the appropriate client based on role"""
|
497 |
if role == "producer":
|
498 |
return RoboticsProducer(base_url)
|
@@ -503,7 +503,7 @@ def create_client(role: str, base_url: str = "http://localhost:8000"):
|
|
503 |
|
504 |
|
505 |
async def create_producer_client(
|
506 |
-
base_url: str
|
507 |
workspace_id: str | None = None,
|
508 |
room_id: str | None = None,
|
509 |
) -> RoboticsProducer:
|
@@ -516,7 +516,7 @@ async def create_producer_client(
|
|
516 |
|
517 |
|
518 |
async def create_consumer_client(
|
519 |
-
workspace_id: str, room_id: str, base_url: str
|
520 |
) -> RoboticsConsumer:
|
521 |
"""Create and connect a consumer client"""
|
522 |
client = RoboticsConsumer(base_url)
|
|
|
14 |
class RoboticsClientCore:
|
15 |
"""Base client for RobotHub TransportServer robotics API"""
|
16 |
|
17 |
+
def __init__(self, base_url: str):
|
18 |
self.base_url = base_url.rstrip("/")
|
19 |
self.api_base = f"{self.base_url}/robotics"
|
20 |
|
|
|
314 |
class RoboticsProducer(RoboticsClientCore):
|
315 |
"""Producer client for controlling robots"""
|
316 |
|
317 |
+
def __init__(self, base_url: str):
|
318 |
super().__init__(base_url)
|
319 |
self._on_error_callback: Callable[[str], None] | None = None
|
320 |
self._on_connected_callback: Callable[[], None] | None = None
|
|
|
401 |
class RoboticsConsumer(RoboticsClientCore):
|
402 |
"""Consumer client for receiving robot commands"""
|
403 |
|
404 |
+
def __init__(self, base_url: str):
|
405 |
super().__init__(base_url)
|
406 |
self._on_state_sync_callback: Callable[[dict], None] | None = None
|
407 |
self._on_joint_update_callback: Callable[[list], None] | None = None
|
|
|
492 |
# ============= FACTORY FUNCTIONS =============
|
493 |
|
494 |
|
495 |
+
def create_client(role: str, base_url: str):
|
496 |
"""Factory function to create the appropriate client based on role"""
|
497 |
if role == "producer":
|
498 |
return RoboticsProducer(base_url)
|
|
|
503 |
|
504 |
|
505 |
async def create_producer_client(
|
506 |
+
base_url: str,
|
507 |
workspace_id: str | None = None,
|
508 |
room_id: str | None = None,
|
509 |
) -> RoboticsProducer:
|
|
|
516 |
|
517 |
|
518 |
async def create_consumer_client(
|
519 |
+
workspace_id: str, room_id: str, base_url: str
|
520 |
) -> RoboticsConsumer:
|
521 |
"""Create and connect a consumer client"""
|
522 |
client = RoboticsConsumer(base_url)
|
client/python/src/transport_server_client/video/__pycache__/consumer.cpython-312.pyc
CHANGED
Binary files a/client/python/src/transport_server_client/video/__pycache__/consumer.cpython-312.pyc and b/client/python/src/transport_server_client/video/__pycache__/consumer.cpython-312.pyc differ
|
|
client/python/src/transport_server_client/video/__pycache__/core.cpython-312.pyc
CHANGED
Binary files a/client/python/src/transport_server_client/video/__pycache__/core.cpython-312.pyc and b/client/python/src/transport_server_client/video/__pycache__/core.cpython-312.pyc differ
|
|
client/python/src/transport_server_client/video/__pycache__/factory.cpython-312.pyc
CHANGED
Binary files a/client/python/src/transport_server_client/video/__pycache__/factory.cpython-312.pyc and b/client/python/src/transport_server_client/video/__pycache__/factory.cpython-312.pyc differ
|
|
client/python/src/transport_server_client/video/__pycache__/producer.cpython-312.pyc
CHANGED
Binary files a/client/python/src/transport_server_client/video/__pycache__/producer.cpython-312.pyc and b/client/python/src/transport_server_client/video/__pycache__/producer.cpython-312.pyc differ
|
|
client/python/src/transport_server_client/video/consumer.py
CHANGED
@@ -32,7 +32,7 @@ class VideoConsumer(VideoClientCore):
|
|
32 |
|
33 |
def __init__(
|
34 |
self,
|
35 |
-
base_url: str
|
36 |
options: ClientOptions | None = None,
|
37 |
):
|
38 |
super().__init__(base_url, options)
|
@@ -588,7 +588,7 @@ class VideoConsumer(VideoClientCore):
|
|
588 |
async def create_and_connect(
|
589 |
workspace_id: str,
|
590 |
room_id: str,
|
591 |
-
base_url: str
|
592 |
participant_id: str | None = None,
|
593 |
) -> "VideoConsumer":
|
594 |
"""Create a consumer and automatically connect to a room"""
|
|
|
32 |
|
33 |
def __init__(
|
34 |
self,
|
35 |
+
base_url: str,
|
36 |
options: ClientOptions | None = None,
|
37 |
):
|
38 |
super().__init__(base_url, options)
|
|
|
588 |
async def create_and_connect(
|
589 |
workspace_id: str,
|
590 |
room_id: str,
|
591 |
+
base_url: str,
|
592 |
participant_id: str | None = None,
|
593 |
) -> "VideoConsumer":
|
594 |
"""Create a consumer and automatically connect to a room"""
|
client/python/src/transport_server_client/video/core.py
CHANGED
@@ -52,7 +52,7 @@ class VideoClientCore:
|
|
52 |
|
53 |
def __init__(
|
54 |
self,
|
55 |
-
base_url: str
|
56 |
options: ClientOptions | None = None,
|
57 |
):
|
58 |
self.base_url = base_url.rstrip("/")
|
|
|
52 |
|
53 |
def __init__(
|
54 |
self,
|
55 |
+
base_url: str,
|
56 |
options: ClientOptions | None = None,
|
57 |
):
|
58 |
self.base_url = base_url.rstrip("/")
|
client/python/src/transport_server_client/video/factory.py
CHANGED
@@ -9,7 +9,7 @@ from .types import ClientOptions, ParticipantRole
|
|
9 |
|
10 |
def create_client(
|
11 |
role: ParticipantRole,
|
12 |
-
base_url: str
|
13 |
options: ClientOptions | None = None,
|
14 |
) -> "VideoProducer | VideoConsumer":
|
15 |
"""Factory function to create the appropriate client based on role"""
|
@@ -22,7 +22,7 @@ def create_client(
|
|
22 |
|
23 |
|
24 |
async def create_producer_client(
|
25 |
-
base_url: str
|
26 |
workspace_id: str | None = None,
|
27 |
room_id: str | None = None,
|
28 |
participant_id: str | None = None,
|
@@ -44,7 +44,7 @@ async def create_producer_client(
|
|
44 |
async def create_consumer_client(
|
45 |
workspace_id: str,
|
46 |
room_id: str,
|
47 |
-
base_url: str
|
48 |
participant_id: str | None = None,
|
49 |
options: ClientOptions | None = None,
|
50 |
) -> VideoConsumer:
|
|
|
9 |
|
10 |
def create_client(
|
11 |
role: ParticipantRole,
|
12 |
+
base_url: str,
|
13 |
options: ClientOptions | None = None,
|
14 |
) -> "VideoProducer | VideoConsumer":
|
15 |
"""Factory function to create the appropriate client based on role"""
|
|
|
22 |
|
23 |
|
24 |
async def create_producer_client(
|
25 |
+
base_url: str,
|
26 |
workspace_id: str | None = None,
|
27 |
room_id: str | None = None,
|
28 |
participant_id: str | None = None,
|
|
|
44 |
async def create_consumer_client(
|
45 |
workspace_id: str,
|
46 |
room_id: str,
|
47 |
+
base_url: str,
|
48 |
participant_id: str | None = None,
|
49 |
options: ClientOptions | None = None,
|
50 |
) -> VideoConsumer:
|
client/python/src/transport_server_client/video/producer.py
CHANGED
@@ -188,7 +188,7 @@ class VideoProducer(VideoClientCore):
|
|
188 |
|
189 |
def __init__(
|
190 |
self,
|
191 |
-
base_url: str
|
192 |
options: ClientOptions | None = None,
|
193 |
):
|
194 |
super().__init__(base_url, options)
|
@@ -699,7 +699,7 @@ class VideoProducer(VideoClientCore):
|
|
699 |
|
700 |
@staticmethod
|
701 |
async def create_and_connect(
|
702 |
-
base_url: str
|
703 |
workspace_id: str | None = None,
|
704 |
room_id: str | None = None,
|
705 |
participant_id: str | None = None,
|
|
|
188 |
|
189 |
def __init__(
|
190 |
self,
|
191 |
+
base_url: str,
|
192 |
options: ClientOptions | None = None,
|
193 |
):
|
194 |
super().__init__(base_url, options)
|
|
|
699 |
|
700 |
@staticmethod
|
701 |
async def create_and_connect(
|
702 |
+
base_url: str,
|
703 |
workspace_id: str | None = None,
|
704 |
room_id: str | None = None,
|
705 |
participant_id: str | None = None,
|
demo/.env.example
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
PUBLIC_TRANSPORT_SERVER_URL=...
|
demo/bun.lock
ADDED
@@ -0,0 +1,597 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"lockfileVersion": 1,
|
3 |
+
"workspaces": {
|
4 |
+
"": {
|
5 |
+
"name": "demo",
|
6 |
+
"dependencies": {
|
7 |
+
"@robothub/transport-server-client": "file:../client/js",
|
8 |
+
},
|
9 |
+
"devDependencies": {
|
10 |
+
"@eslint/compat": "^1.2.5",
|
11 |
+
"@eslint/js": "^9.18.0",
|
12 |
+
"@sveltejs/adapter-static": "^3.0.0",
|
13 |
+
"@sveltejs/kit": "^2.16.0",
|
14 |
+
"@sveltejs/vite-plugin-svelte": "^5.0.0",
|
15 |
+
"@tailwindcss/vite": "^4.0.0",
|
16 |
+
"eslint": "^9.18.0",
|
17 |
+
"eslint-config-prettier": "^10.0.1",
|
18 |
+
"eslint-plugin-svelte": "^3.0.0",
|
19 |
+
"globals": "^16.0.0",
|
20 |
+
"prettier": "^3.4.2",
|
21 |
+
"prettier-plugin-svelte": "^3.3.3",
|
22 |
+
"prettier-plugin-tailwindcss": "^0.6.11",
|
23 |
+
"svelte": "^5.0.0",
|
24 |
+
"svelte-check": "^4.0.0",
|
25 |
+
"tailwindcss": "^4.0.0",
|
26 |
+
"typescript": "^5.0.0",
|
27 |
+
"typescript-eslint": "^8.20.0",
|
28 |
+
"vite": "^6.2.6",
|
29 |
+
},
|
30 |
+
},
|
31 |
+
},
|
32 |
+
"packages": {
|
33 |
+
"@ampproject/remapping": ["@ampproject/remapping@2.3.0", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw=="],
|
34 |
+
|
35 |
+
"@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.5", "", { "os": "aix", "cpu": "ppc64" }, "sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA=="],
|
36 |
+
|
37 |
+
"@esbuild/android-arm": ["@esbuild/android-arm@0.25.5", "", { "os": "android", "cpu": "arm" }, "sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA=="],
|
38 |
+
|
39 |
+
"@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.5", "", { "os": "android", "cpu": "arm64" }, "sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg=="],
|
40 |
+
|
41 |
+
"@esbuild/android-x64": ["@esbuild/android-x64@0.25.5", "", { "os": "android", "cpu": "x64" }, "sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw=="],
|
42 |
+
|
43 |
+
"@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.25.5", "", { "os": "darwin", "cpu": "arm64" }, "sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ=="],
|
44 |
+
|
45 |
+
"@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.25.5", "", { "os": "darwin", "cpu": "x64" }, "sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ=="],
|
46 |
+
|
47 |
+
"@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.25.5", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw=="],
|
48 |
+
|
49 |
+
"@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.25.5", "", { "os": "freebsd", "cpu": "x64" }, "sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw=="],
|
50 |
+
|
51 |
+
"@esbuild/linux-arm": ["@esbuild/linux-arm@0.25.5", "", { "os": "linux", "cpu": "arm" }, "sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw=="],
|
52 |
+
|
53 |
+
"@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.25.5", "", { "os": "linux", "cpu": "arm64" }, "sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg=="],
|
54 |
+
|
55 |
+
"@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.25.5", "", { "os": "linux", "cpu": "ia32" }, "sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA=="],
|
56 |
+
|
57 |
+
"@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.25.5", "", { "os": "linux", "cpu": "none" }, "sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg=="],
|
58 |
+
|
59 |
+
"@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.25.5", "", { "os": "linux", "cpu": "none" }, "sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg=="],
|
60 |
+
|
61 |
+
"@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.25.5", "", { "os": "linux", "cpu": "ppc64" }, "sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ=="],
|
62 |
+
|
63 |
+
"@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.25.5", "", { "os": "linux", "cpu": "none" }, "sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA=="],
|
64 |
+
|
65 |
+
"@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.25.5", "", { "os": "linux", "cpu": "s390x" }, "sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ=="],
|
66 |
+
|
67 |
+
"@esbuild/linux-x64": ["@esbuild/linux-x64@0.25.5", "", { "os": "linux", "cpu": "x64" }, "sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw=="],
|
68 |
+
|
69 |
+
"@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.25.5", "", { "os": "none", "cpu": "arm64" }, "sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw=="],
|
70 |
+
|
71 |
+
"@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.25.5", "", { "os": "none", "cpu": "x64" }, "sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ=="],
|
72 |
+
|
73 |
+
"@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.25.5", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw=="],
|
74 |
+
|
75 |
+
"@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.25.5", "", { "os": "openbsd", "cpu": "x64" }, "sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg=="],
|
76 |
+
|
77 |
+
"@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.25.5", "", { "os": "sunos", "cpu": "x64" }, "sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA=="],
|
78 |
+
|
79 |
+
"@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.25.5", "", { "os": "win32", "cpu": "arm64" }, "sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw=="],
|
80 |
+
|
81 |
+
"@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.25.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ=="],
|
82 |
+
|
83 |
+
"@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.5", "", { "os": "win32", "cpu": "x64" }, "sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g=="],
|
84 |
+
|
85 |
+
"@eslint-community/eslint-utils": ["@eslint-community/eslint-utils@4.7.0", "", { "dependencies": { "eslint-visitor-keys": "^3.4.3" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw=="],
|
86 |
+
|
87 |
+
"@eslint-community/regexpp": ["@eslint-community/regexpp@4.12.1", "", {}, "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ=="],
|
88 |
+
|
89 |
+
"@eslint/compat": ["@eslint/compat@1.3.0", "", { "peerDependencies": { "eslint": "^9.10.0" }, "optionalPeers": ["eslint"] }, "sha512-ZBygRBqpDYiIHsN+d1WyHn3TYgzgpzLEcgJUxTATyiInQbKZz6wZb6+ljwdg8xeeOe4v03z6Uh6lELiw0/mVhQ=="],
|
90 |
+
|
91 |
+
"@eslint/config-array": ["@eslint/config-array@0.20.1", "", { "dependencies": { "@eslint/object-schema": "^2.1.6", "debug": "^4.3.1", "minimatch": "^3.1.2" } }, "sha512-OL0RJzC/CBzli0DrrR31qzj6d6i6Mm3HByuhflhl4LOBiWxN+3i6/t/ZQQNii4tjksXi8r2CRW1wMpWA2ULUEw=="],
|
92 |
+
|
93 |
+
"@eslint/config-helpers": ["@eslint/config-helpers@0.2.3", "", {}, "sha512-u180qk2Um1le4yf0ruXH3PYFeEZeYC3p/4wCTKrr2U1CmGdzGi3KtY0nuPDH48UJxlKCC5RDzbcbh4X0XlqgHg=="],
|
94 |
+
|
95 |
+
"@eslint/core": ["@eslint/core@0.14.0", "", { "dependencies": { "@types/json-schema": "^7.0.15" } }, "sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg=="],
|
96 |
+
|
97 |
+
"@eslint/eslintrc": ["@eslint/eslintrc@3.3.1", "", { "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^10.0.1", "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" } }, "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ=="],
|
98 |
+
|
99 |
+
"@eslint/js": ["@eslint/js@9.29.0", "", {}, "sha512-3PIF4cBw/y+1u2EazflInpV+lYsSG0aByVIQzAgb1m1MhHFSbqTyNqtBKHgWf/9Ykud+DhILS9EGkmekVhbKoQ=="],
|
100 |
+
|
101 |
+
"@eslint/object-schema": ["@eslint/object-schema@2.1.6", "", {}, "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA=="],
|
102 |
+
|
103 |
+
"@eslint/plugin-kit": ["@eslint/plugin-kit@0.3.2", "", { "dependencies": { "@eslint/core": "^0.15.0", "levn": "^0.4.1" } }, "sha512-4SaFZCNfJqvk/kenHpI8xvN42DMaoycy4PzKc5otHxRswww1kAt82OlBuwRVLofCACCTZEcla2Ydxv8scMXaTg=="],
|
104 |
+
|
105 |
+
"@humanfs/core": ["@humanfs/core@0.19.1", "", {}, "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA=="],
|
106 |
+
|
107 |
+
"@humanfs/node": ["@humanfs/node@0.16.6", "", { "dependencies": { "@humanfs/core": "^0.19.1", "@humanwhocodes/retry": "^0.3.0" } }, "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw=="],
|
108 |
+
|
109 |
+
"@humanwhocodes/module-importer": ["@humanwhocodes/module-importer@1.0.1", "", {}, "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA=="],
|
110 |
+
|
111 |
+
"@humanwhocodes/retry": ["@humanwhocodes/retry@0.4.3", "", {}, "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ=="],
|
112 |
+
|
113 |
+
"@isaacs/fs-minipass": ["@isaacs/fs-minipass@4.0.1", "", { "dependencies": { "minipass": "^7.0.4" } }, "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w=="],
|
114 |
+
|
115 |
+
"@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.8", "", { "dependencies": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA=="],
|
116 |
+
|
117 |
+
"@jridgewell/resolve-uri": ["@jridgewell/resolve-uri@3.1.2", "", {}, "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="],
|
118 |
+
|
119 |
+
"@jridgewell/set-array": ["@jridgewell/set-array@1.2.1", "", {}, "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A=="],
|
120 |
+
|
121 |
+
"@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.0", "", {}, "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ=="],
|
122 |
+
|
123 |
+
"@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.25", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ=="],
|
124 |
+
|
125 |
+
"@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="],
|
126 |
+
|
127 |
+
"@nodelib/fs.stat": ["@nodelib/fs.stat@2.0.5", "", {}, "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="],
|
128 |
+
|
129 |
+
"@nodelib/fs.walk": ["@nodelib/fs.walk@1.2.8", "", { "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg=="],
|
130 |
+
|
131 |
+
"@polka/url": ["@polka/url@1.0.0-next.29", "", {}, "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww=="],
|
132 |
+
|
133 |
+
"@robothub/transport-server-client": ["@robothub/transport-server-client@file:../client/js", { "dependencies": { "eventemitter3": "^5.0.1" }, "devDependencies": { "@types/bun": "^1.2.15", "typescript": "^5.3.3" }, "peerDependencies": { "typescript": ">=5.0.0" } }],
|
134 |
+
|
135 |
+
"@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.44.0", "", { "os": "android", "cpu": "arm" }, "sha512-xEiEE5oDW6tK4jXCAyliuntGR+amEMO7HLtdSshVuhFnKTYoeYMyXQK7pLouAJJj5KHdwdn87bfHAR2nSdNAUA=="],
|
136 |
+
|
137 |
+
"@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.44.0", "", { "os": "android", "cpu": "arm64" }, "sha512-uNSk/TgvMbskcHxXYHzqwiyBlJ/lGcv8DaUfcnNwict8ba9GTTNxfn3/FAoFZYgkaXXAdrAA+SLyKplyi349Jw=="],
|
138 |
+
|
139 |
+
"@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.44.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-VGF3wy0Eq1gcEIkSCr8Ke03CWT+Pm2yveKLaDvq51pPpZza3JX/ClxXOCmTYYq3us5MvEuNRTaeyFThCKRQhOA=="],
|
140 |
+
|
141 |
+
"@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.44.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-fBkyrDhwquRvrTxSGH/qqt3/T0w5Rg0L7ZIDypvBPc1/gzjJle6acCpZ36blwuwcKD/u6oCE/sRWlUAcxLWQbQ=="],
|
142 |
+
|
143 |
+
"@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.44.0", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-u5AZzdQJYJXByB8giQ+r4VyfZP+walV+xHWdaFx/1VxsOn6eWJhK2Vl2eElvDJFKQBo/hcYIBg/jaKS8ZmKeNQ=="],
|
144 |
+
|
145 |
+
"@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.44.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-qC0kS48c/s3EtdArkimctY7h3nHicQeEUdjJzYVJYR3ct3kWSafmn6jkNCA8InbUdge6PVx6keqjk5lVGJf99g=="],
|
146 |
+
|
147 |
+
"@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.44.0", "", { "os": "linux", "cpu": "arm" }, "sha512-x+e/Z9H0RAWckn4V2OZZl6EmV0L2diuX3QB0uM1r6BvhUIv6xBPL5mrAX2E3e8N8rEHVPwFfz/ETUbV4oW9+lQ=="],
|
148 |
+
|
149 |
+
"@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.44.0", "", { "os": "linux", "cpu": "arm" }, "sha512-1exwiBFf4PU/8HvI8s80icyCcnAIB86MCBdst51fwFmH5dyeoWVPVgmQPcKrMtBQ0W5pAs7jBCWuRXgEpRzSCg=="],
|
150 |
+
|
151 |
+
"@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.44.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-ZTR2mxBHb4tK4wGf9b8SYg0Y6KQPjGpR4UWwTFdnmjB4qRtoATZ5dWn3KsDwGa5Z2ZBOE7K52L36J9LueKBdOQ=="],
|
152 |
+
|
153 |
+
"@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.44.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-GFWfAhVhWGd4r6UxmnKRTBwP1qmModHtd5gkraeW2G490BpFOZkFtem8yuX2NyafIP/mGpRJgTJ2PwohQkUY/Q=="],
|
154 |
+
|
155 |
+
"@rollup/rollup-linux-loongarch64-gnu": ["@rollup/rollup-linux-loongarch64-gnu@4.44.0", "", { "os": "linux", "cpu": "none" }, "sha512-xw+FTGcov/ejdusVOqKgMGW3c4+AgqrfvzWEVXcNP6zq2ue+lsYUgJ+5Rtn/OTJf7e2CbgTFvzLW2j0YAtj0Gg=="],
|
156 |
+
|
157 |
+
"@rollup/rollup-linux-powerpc64le-gnu": ["@rollup/rollup-linux-powerpc64le-gnu@4.44.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-bKGibTr9IdF0zr21kMvkZT4K6NV+jjRnBoVMt2uNMG0BYWm3qOVmYnXKzx7UhwrviKnmK46IKMByMgvpdQlyJQ=="],
|
158 |
+
|
159 |
+
"@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.44.0", "", { "os": "linux", "cpu": "none" }, "sha512-vV3cL48U5kDaKZtXrti12YRa7TyxgKAIDoYdqSIOMOFBXqFj2XbChHAtXquEn2+n78ciFgr4KIqEbydEGPxXgA=="],
|
160 |
+
|
161 |
+
"@rollup/rollup-linux-riscv64-musl": ["@rollup/rollup-linux-riscv64-musl@4.44.0", "", { "os": "linux", "cpu": "none" }, "sha512-TDKO8KlHJuvTEdfw5YYFBjhFts2TR0VpZsnLLSYmB7AaohJhM8ctDSdDnUGq77hUh4m/djRafw+9zQpkOanE2Q=="],
|
162 |
+
|
163 |
+
"@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.44.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-8541GEyktXaw4lvnGp9m84KENcxInhAt6vPWJ9RodsB/iGjHoMB2Pp5MVBCiKIRxrxzJhGCxmNzdu+oDQ7kwRA=="],
|
164 |
+
|
165 |
+
"@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.44.0", "", { "os": "linux", "cpu": "x64" }, "sha512-iUVJc3c0o8l9Sa/qlDL2Z9UP92UZZW1+EmQ4xfjTc1akr0iUFZNfxrXJ/R1T90h/ILm9iXEY6+iPrmYB3pXKjw=="],
|
166 |
+
|
167 |
+
"@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.44.0", "", { "os": "linux", "cpu": "x64" }, "sha512-PQUobbhLTQT5yz/SPg116VJBgz+XOtXt8D1ck+sfJJhuEsMj2jSej5yTdp8CvWBSceu+WW+ibVL6dm0ptG5fcA=="],
|
168 |
+
|
169 |
+
"@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.44.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-M0CpcHf8TWn+4oTxJfh7LQuTuaYeXGbk0eageVjQCKzYLsajWS/lFC94qlRqOlyC2KvRT90ZrfXULYmukeIy7w=="],
|
170 |
+
|
171 |
+
"@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.44.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-3XJ0NQtMAXTWFW8FqZKcw3gOQwBtVWP/u8TpHP3CRPXD7Pd6s8lLdH3sHWh8vqKCyyiI8xW5ltJScQmBU9j7WA=="],
|
172 |
+
|
173 |
+
"@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.44.0", "", { "os": "win32", "cpu": "x64" }, "sha512-Q2Mgwt+D8hd5FIPUuPDsvPR7Bguza6yTkJxspDGkZj7tBRn2y4KSWYuIXpftFSjBra76TbKerCV7rgFPQrn+wQ=="],
|
174 |
+
|
175 |
+
"@sveltejs/acorn-typescript": ["@sveltejs/acorn-typescript@1.0.5", "", { "peerDependencies": { "acorn": "^8.9.0" } }, "sha512-IwQk4yfwLdibDlrXVE04jTZYlLnwsTT2PIOQQGNLWfjavGifnk1JD1LcZjZaBTRcxZu2FfPfNLOE04DSu9lqtQ=="],
|
176 |
+
|
177 |
+
"@sveltejs/adapter-static": ["@sveltejs/adapter-static@3.0.8", "", { "peerDependencies": { "@sveltejs/kit": "^2.0.0" } }, "sha512-YaDrquRpZwfcXbnlDsSrBQNCChVOT9MGuSg+dMAyfsAa1SmiAhrA5jUYUiIMC59G92kIbY/AaQOWcBdq+lh+zg=="],
|
178 |
+
|
179 |
+
"@sveltejs/kit": ["@sveltejs/kit@2.22.0", "", { "dependencies": { "@sveltejs/acorn-typescript": "^1.0.5", "@types/cookie": "^0.6.0", "acorn": "^8.14.1", "cookie": "^0.6.0", "devalue": "^5.1.0", "esm-env": "^1.2.2", "kleur": "^4.1.5", "magic-string": "^0.30.5", "mrmime": "^2.0.0", "sade": "^1.8.1", "set-cookie-parser": "^2.6.0", "sirv": "^3.0.0", "vitefu": "^1.0.6" }, "peerDependencies": { "@sveltejs/vite-plugin-svelte": "^3.0.0 || ^4.0.0-next.1 || ^5.0.0 || ^6.0.0-next.0", "svelte": "^4.0.0 || ^5.0.0-next.0", "vite": "^5.0.3 || ^6.0.0 || ^7.0.0-beta.0" }, "bin": { "svelte-kit": "svelte-kit.js" } }, "sha512-DJm0UxVgzXq+1MUfiJK4Ridk7oIQsIets6JwHiEl97sI6nXScfXe+BeqNhzB7jQIVBb3BM51U4hNk8qQxRXBAA=="],
|
180 |
+
|
181 |
+
"@sveltejs/vite-plugin-svelte": ["@sveltejs/vite-plugin-svelte@5.1.0", "", { "dependencies": { "@sveltejs/vite-plugin-svelte-inspector": "^4.0.1", "debug": "^4.4.1", "deepmerge": "^4.3.1", "kleur": "^4.1.5", "magic-string": "^0.30.17", "vitefu": "^1.0.6" }, "peerDependencies": { "svelte": "^5.0.0", "vite": "^6.0.0" } }, "sha512-wojIS/7GYnJDYIg1higWj2ROA6sSRWvcR1PO/bqEyFr/5UZah26c8Cz4u0NaqjPeVltzsVpt2Tm8d2io0V+4Tw=="],
|
182 |
+
|
183 |
+
"@sveltejs/vite-plugin-svelte-inspector": ["@sveltejs/vite-plugin-svelte-inspector@4.0.1", "", { "dependencies": { "debug": "^4.3.7" }, "peerDependencies": { "@sveltejs/vite-plugin-svelte": "^5.0.0", "svelte": "^5.0.0", "vite": "^6.0.0" } }, "sha512-J/Nmb2Q2y7mck2hyCX4ckVHcR5tu2J+MtBEQqpDrrgELZ2uvraQcK/ioCV61AqkdXFgriksOKIceDcQmqnGhVw=="],
|
184 |
+
|
185 |
+
"@tailwindcss/node": ["@tailwindcss/node@4.1.10", "", { "dependencies": { "@ampproject/remapping": "^2.3.0", "enhanced-resolve": "^5.18.1", "jiti": "^2.4.2", "lightningcss": "1.30.1", "magic-string": "^0.30.17", "source-map-js": "^1.2.1", "tailwindcss": "4.1.10" } }, "sha512-2ACf1znY5fpRBwRhMgj9ZXvb2XZW8qs+oTfotJ2C5xR0/WNL7UHZ7zXl6s+rUqedL1mNi+0O+WQr5awGowS3PQ=="],
|
186 |
+
|
187 |
+
"@tailwindcss/oxide": ["@tailwindcss/oxide@4.1.10", "", { "dependencies": { "detect-libc": "^2.0.4", "tar": "^7.4.3" }, "optionalDependencies": { "@tailwindcss/oxide-android-arm64": "4.1.10", "@tailwindcss/oxide-darwin-arm64": "4.1.10", "@tailwindcss/oxide-darwin-x64": "4.1.10", "@tailwindcss/oxide-freebsd-x64": "4.1.10", "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.10", "@tailwindcss/oxide-linux-arm64-gnu": "4.1.10", "@tailwindcss/oxide-linux-arm64-musl": "4.1.10", "@tailwindcss/oxide-linux-x64-gnu": "4.1.10", "@tailwindcss/oxide-linux-x64-musl": "4.1.10", "@tailwindcss/oxide-wasm32-wasi": "4.1.10", "@tailwindcss/oxide-win32-arm64-msvc": "4.1.10", "@tailwindcss/oxide-win32-x64-msvc": "4.1.10" } }, "sha512-v0C43s7Pjw+B9w21htrQwuFObSkio2aV/qPx/mhrRldbqxbWJK6KizM+q7BF1/1CmuLqZqX3CeYF7s7P9fbA8Q=="],
|
188 |
+
|
189 |
+
"@tailwindcss/oxide-android-arm64": ["@tailwindcss/oxide-android-arm64@4.1.10", "", { "os": "android", "cpu": "arm64" }, "sha512-VGLazCoRQ7rtsCzThaI1UyDu/XRYVyH4/EWiaSX6tFglE+xZB5cvtC5Omt0OQ+FfiIVP98su16jDVHDEIuH4iQ=="],
|
190 |
+
|
191 |
+
"@tailwindcss/oxide-darwin-arm64": ["@tailwindcss/oxide-darwin-arm64@4.1.10", "", { "os": "darwin", "cpu": "arm64" }, "sha512-ZIFqvR1irX2yNjWJzKCqTCcHZbgkSkSkZKbRM3BPzhDL/18idA8uWCoopYA2CSDdSGFlDAxYdU2yBHwAwx8euQ=="],
|
192 |
+
|
193 |
+
"@tailwindcss/oxide-darwin-x64": ["@tailwindcss/oxide-darwin-x64@4.1.10", "", { "os": "darwin", "cpu": "x64" }, "sha512-eCA4zbIhWUFDXoamNztmS0MjXHSEJYlvATzWnRiTqJkcUteSjO94PoRHJy1Xbwp9bptjeIxxBHh+zBWFhttbrQ=="],
|
194 |
+
|
195 |
+
"@tailwindcss/oxide-freebsd-x64": ["@tailwindcss/oxide-freebsd-x64@4.1.10", "", { "os": "freebsd", "cpu": "x64" }, "sha512-8/392Xu12R0cc93DpiJvNpJ4wYVSiciUlkiOHOSOQNH3adq9Gi/dtySK7dVQjXIOzlpSHjeCL89RUUI8/GTI6g=="],
|
196 |
+
|
197 |
+
"@tailwindcss/oxide-linux-arm-gnueabihf": ["@tailwindcss/oxide-linux-arm-gnueabihf@4.1.10", "", { "os": "linux", "cpu": "arm" }, "sha512-t9rhmLT6EqeuPT+MXhWhlRYIMSfh5LZ6kBrC4FS6/+M1yXwfCtp24UumgCWOAJVyjQwG+lYva6wWZxrfvB+NhQ=="],
|
198 |
+
|
199 |
+
"@tailwindcss/oxide-linux-arm64-gnu": ["@tailwindcss/oxide-linux-arm64-gnu@4.1.10", "", { "os": "linux", "cpu": "arm64" }, "sha512-3oWrlNlxLRxXejQ8zImzrVLuZ/9Z2SeKoLhtCu0hpo38hTO2iL86eFOu4sVR8cZc6n3z7eRXXqtHJECa6mFOvA=="],
|
200 |
+
|
201 |
+
"@tailwindcss/oxide-linux-arm64-musl": ["@tailwindcss/oxide-linux-arm64-musl@4.1.10", "", { "os": "linux", "cpu": "arm64" }, "sha512-saScU0cmWvg/Ez4gUmQWr9pvY9Kssxt+Xenfx1LG7LmqjcrvBnw4r9VjkFcqmbBb7GCBwYNcZi9X3/oMda9sqQ=="],
|
202 |
+
|
203 |
+
"@tailwindcss/oxide-linux-x64-gnu": ["@tailwindcss/oxide-linux-x64-gnu@4.1.10", "", { "os": "linux", "cpu": "x64" }, "sha512-/G3ao/ybV9YEEgAXeEg28dyH6gs1QG8tvdN9c2MNZdUXYBaIY/Gx0N6RlJzfLy/7Nkdok4kaxKPHKJUlAaoTdA=="],
|
204 |
+
|
205 |
+
"@tailwindcss/oxide-linux-x64-musl": ["@tailwindcss/oxide-linux-x64-musl@4.1.10", "", { "os": "linux", "cpu": "x64" }, "sha512-LNr7X8fTiKGRtQGOerSayc2pWJp/9ptRYAa4G+U+cjw9kJZvkopav1AQc5HHD+U364f71tZv6XamaHKgrIoVzA=="],
|
206 |
+
|
207 |
+
"@tailwindcss/oxide-wasm32-wasi": ["@tailwindcss/oxide-wasm32-wasi@4.1.10", "", { "dependencies": { "@emnapi/core": "^1.4.3", "@emnapi/runtime": "^1.4.3", "@emnapi/wasi-threads": "^1.0.2", "@napi-rs/wasm-runtime": "^0.2.10", "@tybys/wasm-util": "^0.9.0", "tslib": "^2.8.0" }, "cpu": "none" }, "sha512-d6ekQpopFQJAcIK2i7ZzWOYGZ+A6NzzvQ3ozBvWFdeyqfOZdYHU66g5yr+/HC4ipP1ZgWsqa80+ISNILk+ae/Q=="],
|
208 |
+
|
209 |
+
"@tailwindcss/oxide-win32-arm64-msvc": ["@tailwindcss/oxide-win32-arm64-msvc@4.1.10", "", { "os": "win32", "cpu": "arm64" }, "sha512-i1Iwg9gRbwNVOCYmnigWCCgow8nDWSFmeTUU5nbNx3rqbe4p0kRbEqLwLJbYZKmSSp23g4N6rCDmm7OuPBXhDA=="],
|
210 |
+
|
211 |
+
"@tailwindcss/oxide-win32-x64-msvc": ["@tailwindcss/oxide-win32-x64-msvc@4.1.10", "", { "os": "win32", "cpu": "x64" }, "sha512-sGiJTjcBSfGq2DVRtaSljq5ZgZS2SDHSIfhOylkBvHVjwOsodBhnb3HdmiKkVuUGKD0I7G63abMOVaskj1KpOA=="],
|
212 |
+
|
213 |
+
"@tailwindcss/vite": ["@tailwindcss/vite@4.1.10", "", { "dependencies": { "@tailwindcss/node": "4.1.10", "@tailwindcss/oxide": "4.1.10", "tailwindcss": "4.1.10" }, "peerDependencies": { "vite": "^5.2.0 || ^6" } }, "sha512-QWnD5HDY2IADv+vYR82lOhqOlS1jSCUUAmfem52cXAhRTKxpDh3ARX8TTXJTCCO7Rv7cD2Nlekabv02bwP3a2A=="],
|
214 |
+
|
215 |
+
"@types/bun": ["@types/bun@1.2.17", "", { "dependencies": { "bun-types": "1.2.17" } }, "sha512-l/BYs/JYt+cXA/0+wUhulYJB6a6p//GTPiJ7nV+QHa8iiId4HZmnu/3J/SowP5g0rTiERY2kfGKXEK5Ehltx4Q=="],
|
216 |
+
|
217 |
+
"@types/cookie": ["@types/cookie@0.6.0", "", {}, "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA=="],
|
218 |
+
|
219 |
+
"@types/estree": ["@types/estree@1.0.8", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="],
|
220 |
+
|
221 |
+
"@types/json-schema": ["@types/json-schema@7.0.15", "", {}, "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="],
|
222 |
+
|
223 |
+
"@types/node": ["@types/node@24.0.4", "", { "dependencies": { "undici-types": "~7.8.0" } }, "sha512-ulyqAkrhnuNq9pB76DRBTkcS6YsmDALy6Ua63V8OhrOBgbcYt6IOdzpw5P1+dyRIyMerzLkeYWBeOXPpA9GMAA=="],
|
224 |
+
|
225 |
+
"@typescript-eslint/eslint-plugin": ["@typescript-eslint/eslint-plugin@8.35.0", "", { "dependencies": { "@eslint-community/regexpp": "^4.10.0", "@typescript-eslint/scope-manager": "8.35.0", "@typescript-eslint/type-utils": "8.35.0", "@typescript-eslint/utils": "8.35.0", "@typescript-eslint/visitor-keys": "8.35.0", "graphemer": "^1.4.0", "ignore": "^7.0.0", "natural-compare": "^1.4.0", "ts-api-utils": "^2.1.0" }, "peerDependencies": { "@typescript-eslint/parser": "^8.35.0", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.9.0" } }, "sha512-ijItUYaiWuce0N1SoSMrEd0b6b6lYkYt99pqCPfybd+HKVXtEvYhICfLdwp42MhiI5mp0oq7PKEL+g1cNiz/Eg=="],
|
226 |
+
|
227 |
+
"@typescript-eslint/parser": ["@typescript-eslint/parser@8.35.0", "", { "dependencies": { "@typescript-eslint/scope-manager": "8.35.0", "@typescript-eslint/types": "8.35.0", "@typescript-eslint/typescript-estree": "8.35.0", "@typescript-eslint/visitor-keys": "8.35.0", "debug": "^4.3.4" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.9.0" } }, "sha512-6sMvZePQrnZH2/cJkwRpkT7DxoAWh+g6+GFRK6bV3YQo7ogi3SX5rgF6099r5Q53Ma5qeT7LGmOmuIutF4t3lA=="],
|
228 |
+
|
229 |
+
"@typescript-eslint/project-service": ["@typescript-eslint/project-service@8.35.0", "", { "dependencies": { "@typescript-eslint/tsconfig-utils": "^8.35.0", "@typescript-eslint/types": "^8.35.0", "debug": "^4.3.4" }, "peerDependencies": { "typescript": ">=4.8.4 <5.9.0" } }, "sha512-41xatqRwWZuhUMF/aZm2fcUsOFKNcG28xqRSS6ZVr9BVJtGExosLAm5A1OxTjRMagx8nJqva+P5zNIGt8RIgbQ=="],
|
230 |
+
|
231 |
+
"@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@8.35.0", "", { "dependencies": { "@typescript-eslint/types": "8.35.0", "@typescript-eslint/visitor-keys": "8.35.0" } }, "sha512-+AgL5+mcoLxl1vGjwNfiWq5fLDZM1TmTPYs2UkyHfFhgERxBbqHlNjRzhThJqz+ktBqTChRYY6zwbMwy0591AA=="],
|
232 |
+
|
233 |
+
"@typescript-eslint/tsconfig-utils": ["@typescript-eslint/tsconfig-utils@8.35.0", "", { "peerDependencies": { "typescript": ">=4.8.4 <5.9.0" } }, "sha512-04k/7247kZzFraweuEirmvUj+W3bJLI9fX6fbo1Qm2YykuBvEhRTPl8tcxlYO8kZZW+HIXfkZNoasVb8EV4jpA=="],
|
234 |
+
|
235 |
+
"@typescript-eslint/type-utils": ["@typescript-eslint/type-utils@8.35.0", "", { "dependencies": { "@typescript-eslint/typescript-estree": "8.35.0", "@typescript-eslint/utils": "8.35.0", "debug": "^4.3.4", "ts-api-utils": "^2.1.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.9.0" } }, "sha512-ceNNttjfmSEoM9PW87bWLDEIaLAyR+E6BoYJQ5PfaDau37UGca9Nyq3lBk8Bw2ad0AKvYabz6wxc7DMTO2jnNA=="],
|
236 |
+
|
237 |
+
"@typescript-eslint/types": ["@typescript-eslint/types@8.35.0", "", {}, "sha512-0mYH3emanku0vHw2aRLNGqe7EXh9WHEhi7kZzscrMDf6IIRUQ5Jk4wp1QrledE/36KtdZrVfKnE32eZCf/vaVQ=="],
|
238 |
+
|
239 |
+
"@typescript-eslint/typescript-estree": ["@typescript-eslint/typescript-estree@8.35.0", "", { "dependencies": { "@typescript-eslint/project-service": "8.35.0", "@typescript-eslint/tsconfig-utils": "8.35.0", "@typescript-eslint/types": "8.35.0", "@typescript-eslint/visitor-keys": "8.35.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", "ts-api-utils": "^2.1.0" }, "peerDependencies": { "typescript": ">=4.8.4 <5.9.0" } }, "sha512-F+BhnaBemgu1Qf8oHrxyw14wq6vbL8xwWKKMwTMwYIRmFFY/1n/9T/jpbobZL8vp7QyEUcC6xGrnAO4ua8Kp7w=="],
|
240 |
+
|
241 |
+
"@typescript-eslint/utils": ["@typescript-eslint/utils@8.35.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", "@typescript-eslint/scope-manager": "8.35.0", "@typescript-eslint/types": "8.35.0", "@typescript-eslint/typescript-estree": "8.35.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.9.0" } }, "sha512-nqoMu7WWM7ki5tPgLVsmPM8CkqtoPUG6xXGeefM5t4x3XumOEKMoUZPdi+7F+/EotukN4R9OWdmDxN80fqoZeg=="],
|
242 |
+
|
243 |
+
"@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.35.0", "", { "dependencies": { "@typescript-eslint/types": "8.35.0", "eslint-visitor-keys": "^4.2.1" } }, "sha512-zTh2+1Y8ZpmeQaQVIc/ZZxsx8UzgKJyNg1PTvjzC7WMhPSVS8bfDX34k1SrwOf016qd5RU3az2UxUNue3IfQ5g=="],
|
244 |
+
|
245 |
+
"acorn": ["acorn@8.15.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg=="],
|
246 |
+
|
247 |
+
"acorn-jsx": ["acorn-jsx@5.3.2", "", { "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="],
|
248 |
+
|
249 |
+
"ajv": ["ajv@6.12.6", "", { "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g=="],
|
250 |
+
|
251 |
+
"ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="],
|
252 |
+
|
253 |
+
"argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="],
|
254 |
+
|
255 |
+
"aria-query": ["aria-query@5.3.2", "", {}, "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw=="],
|
256 |
+
|
257 |
+
"axobject-query": ["axobject-query@4.1.0", "", {}, "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ=="],
|
258 |
+
|
259 |
+
"balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="],
|
260 |
+
|
261 |
+
"brace-expansion": ["brace-expansion@1.1.12", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg=="],
|
262 |
+
|
263 |
+
"braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="],
|
264 |
+
|
265 |
+
"bun-types": ["bun-types@1.2.17", "", { "dependencies": { "@types/node": "*" } }, "sha512-ElC7ItwT3SCQwYZDYoAH+q6KT4Fxjl8DtZ6qDulUFBmXA8YB4xo+l54J9ZJN+k2pphfn9vk7kfubeSd5QfTVJQ=="],
|
266 |
+
|
267 |
+
"callsites": ["callsites@3.1.0", "", {}, "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="],
|
268 |
+
|
269 |
+
"chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="],
|
270 |
+
|
271 |
+
"chokidar": ["chokidar@4.0.3", "", { "dependencies": { "readdirp": "^4.0.1" } }, "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA=="],
|
272 |
+
|
273 |
+
"chownr": ["chownr@3.0.0", "", {}, "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g=="],
|
274 |
+
|
275 |
+
"clsx": ["clsx@2.1.1", "", {}, "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="],
|
276 |
+
|
277 |
+
"color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="],
|
278 |
+
|
279 |
+
"color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="],
|
280 |
+
|
281 |
+
"concat-map": ["concat-map@0.0.1", "", {}, "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="],
|
282 |
+
|
283 |
+
"cookie": ["cookie@0.6.0", "", {}, "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw=="],
|
284 |
+
|
285 |
+
"cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="],
|
286 |
+
|
287 |
+
"cssesc": ["cssesc@3.0.0", "", { "bin": { "cssesc": "bin/cssesc" } }, "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="],
|
288 |
+
|
289 |
+
"debug": ["debug@4.4.1", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ=="],
|
290 |
+
|
291 |
+
"deep-is": ["deep-is@0.1.4", "", {}, "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="],
|
292 |
+
|
293 |
+
"deepmerge": ["deepmerge@4.3.1", "", {}, "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A=="],
|
294 |
+
|
295 |
+
"detect-libc": ["detect-libc@2.0.4", "", {}, "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA=="],
|
296 |
+
|
297 |
+
"devalue": ["devalue@5.1.1", "", {}, "sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw=="],
|
298 |
+
|
299 |
+
"enhanced-resolve": ["enhanced-resolve@5.18.2", "", { "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" } }, "sha512-6Jw4sE1maoRJo3q8MsSIn2onJFbLTOjY9hlx4DZXmOKvLRd1Ok2kXmAGXaafL2+ijsJZ1ClYbl/pmqr9+k4iUQ=="],
|
300 |
+
|
301 |
+
"esbuild": ["esbuild@0.25.5", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.5", "@esbuild/android-arm": "0.25.5", "@esbuild/android-arm64": "0.25.5", "@esbuild/android-x64": "0.25.5", "@esbuild/darwin-arm64": "0.25.5", "@esbuild/darwin-x64": "0.25.5", "@esbuild/freebsd-arm64": "0.25.5", "@esbuild/freebsd-x64": "0.25.5", "@esbuild/linux-arm": "0.25.5", "@esbuild/linux-arm64": "0.25.5", "@esbuild/linux-ia32": "0.25.5", "@esbuild/linux-loong64": "0.25.5", "@esbuild/linux-mips64el": "0.25.5", "@esbuild/linux-ppc64": "0.25.5", "@esbuild/linux-riscv64": "0.25.5", "@esbuild/linux-s390x": "0.25.5", "@esbuild/linux-x64": "0.25.5", "@esbuild/netbsd-arm64": "0.25.5", "@esbuild/netbsd-x64": "0.25.5", "@esbuild/openbsd-arm64": "0.25.5", "@esbuild/openbsd-x64": "0.25.5", "@esbuild/sunos-x64": "0.25.5", "@esbuild/win32-arm64": "0.25.5", "@esbuild/win32-ia32": "0.25.5", "@esbuild/win32-x64": "0.25.5" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ=="],
|
302 |
+
|
303 |
+
"escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="],
|
304 |
+
|
305 |
+
"eslint": ["eslint@9.29.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.20.1", "@eslint/config-helpers": "^0.2.1", "@eslint/core": "^0.14.0", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "9.29.0", "@eslint/plugin-kit": "^0.3.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.4.0", "eslint-visitor-keys": "^4.2.1", "espree": "^10.4.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, "peerDependencies": { "jiti": "*" }, "optionalPeers": ["jiti"], "bin": { "eslint": "bin/eslint.js" } }, "sha512-GsGizj2Y1rCWDu6XoEekL3RLilp0voSePurjZIkxL3wlm5o5EC9VpgaP7lrCvjnkuLvzFBQWB3vWB3K5KQTveQ=="],
|
306 |
+
|
307 |
+
"eslint-config-prettier": ["eslint-config-prettier@10.1.5", "", { "peerDependencies": { "eslint": ">=7.0.0" }, "bin": { "eslint-config-prettier": "bin/cli.js" } }, "sha512-zc1UmCpNltmVY34vuLRV61r1K27sWuX39E+uyUnY8xS2Bex88VV9cugG+UZbRSRGtGyFboj+D8JODyme1plMpw=="],
|
308 |
+
|
309 |
+
"eslint-plugin-svelte": ["eslint-plugin-svelte@3.9.3", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.6.1", "@jridgewell/sourcemap-codec": "^1.5.0", "esutils": "^2.0.3", "globals": "^16.0.0", "known-css-properties": "^0.37.0", "postcss": "^8.4.49", "postcss-load-config": "^3.1.4", "postcss-safe-parser": "^7.0.0", "semver": "^7.6.3", "svelte-eslint-parser": "^1.2.0" }, "peerDependencies": { "eslint": "^8.57.1 || ^9.0.0", "svelte": "^3.37.0 || ^4.0.0 || ^5.0.0" }, "optionalPeers": ["svelte"] }, "sha512-PlcyK80sqAZ43IITeZkgl3zPFWJytx/Joup9iKGqIOsXM2m3pWfPbWuXPr5PN3loXFEypqTY/JyZwNqlSpSvRw=="],
|
310 |
+
|
311 |
+
"eslint-scope": ["eslint-scope@8.4.0", "", { "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg=="],
|
312 |
+
|
313 |
+
"eslint-visitor-keys": ["eslint-visitor-keys@4.2.1", "", {}, "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ=="],
|
314 |
+
|
315 |
+
"esm-env": ["esm-env@1.2.2", "", {}, "sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA=="],
|
316 |
+
|
317 |
+
"espree": ["espree@10.4.0", "", { "dependencies": { "acorn": "^8.15.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^4.2.1" } }, "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ=="],
|
318 |
+
|
319 |
+
"esquery": ["esquery@1.6.0", "", { "dependencies": { "estraverse": "^5.1.0" } }, "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg=="],
|
320 |
+
|
321 |
+
"esrap": ["esrap@1.4.9", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15" } }, "sha512-3OMlcd0a03UGuZpPeUC1HxR3nA23l+HEyCiZw3b3FumJIN9KphoGzDJKMXI1S72jVS1dsenDyQC0kJlO1U9E1g=="],
|
322 |
+
|
323 |
+
"esrecurse": ["esrecurse@4.3.0", "", { "dependencies": { "estraverse": "^5.2.0" } }, "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag=="],
|
324 |
+
|
325 |
+
"estraverse": ["estraverse@5.3.0", "", {}, "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA=="],
|
326 |
+
|
327 |
+
"esutils": ["esutils@2.0.3", "", {}, "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="],
|
328 |
+
|
329 |
+
"eventemitter3": ["eventemitter3@5.0.1", "", {}, "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA=="],
|
330 |
+
|
331 |
+
"fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="],
|
332 |
+
|
333 |
+
"fast-glob": ["fast-glob@3.3.3", "", { "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.8" } }, "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg=="],
|
334 |
+
|
335 |
+
"fast-json-stable-stringify": ["fast-json-stable-stringify@2.1.0", "", {}, "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="],
|
336 |
+
|
337 |
+
"fast-levenshtein": ["fast-levenshtein@2.0.6", "", {}, "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="],
|
338 |
+
|
339 |
+
"fastq": ["fastq@1.19.1", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ=="],
|
340 |
+
|
341 |
+
"fdir": ["fdir@6.4.6", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w=="],
|
342 |
+
|
343 |
+
"file-entry-cache": ["file-entry-cache@8.0.0", "", { "dependencies": { "flat-cache": "^4.0.0" } }, "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ=="],
|
344 |
+
|
345 |
+
"fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="],
|
346 |
+
|
347 |
+
"find-up": ["find-up@5.0.0", "", { "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" } }, "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="],
|
348 |
+
|
349 |
+
"flat-cache": ["flat-cache@4.0.1", "", { "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.4" } }, "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw=="],
|
350 |
+
|
351 |
+
"flatted": ["flatted@3.3.3", "", {}, "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg=="],
|
352 |
+
|
353 |
+
"fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="],
|
354 |
+
|
355 |
+
"glob-parent": ["glob-parent@6.0.2", "", { "dependencies": { "is-glob": "^4.0.3" } }, "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="],
|
356 |
+
|
357 |
+
"globals": ["globals@16.2.0", "", {}, "sha512-O+7l9tPdHCU320IigZZPj5zmRCFG9xHmx9cU8FqU2Rp+JN714seHV+2S9+JslCpY4gJwU2vOGox0wzgae/MCEg=="],
|
358 |
+
|
359 |
+
"graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="],
|
360 |
+
|
361 |
+
"graphemer": ["graphemer@1.4.0", "", {}, "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag=="],
|
362 |
+
|
363 |
+
"has-flag": ["has-flag@4.0.0", "", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="],
|
364 |
+
|
365 |
+
"ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="],
|
366 |
+
|
367 |
+
"import-fresh": ["import-fresh@3.3.1", "", { "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" } }, "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ=="],
|
368 |
+
|
369 |
+
"imurmurhash": ["imurmurhash@0.1.4", "", {}, "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA=="],
|
370 |
+
|
371 |
+
"is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="],
|
372 |
+
|
373 |
+
"is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="],
|
374 |
+
|
375 |
+
"is-number": ["is-number@7.0.0", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="],
|
376 |
+
|
377 |
+
"is-reference": ["is-reference@3.0.3", "", { "dependencies": { "@types/estree": "^1.0.6" } }, "sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw=="],
|
378 |
+
|
379 |
+
"isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="],
|
380 |
+
|
381 |
+
"jiti": ["jiti@2.4.2", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A=="],
|
382 |
+
|
383 |
+
"js-yaml": ["js-yaml@4.1.0", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA=="],
|
384 |
+
|
385 |
+
"json-buffer": ["json-buffer@3.0.1", "", {}, "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="],
|
386 |
+
|
387 |
+
"json-schema-traverse": ["json-schema-traverse@0.4.1", "", {}, "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="],
|
388 |
+
|
389 |
+
"json-stable-stringify-without-jsonify": ["json-stable-stringify-without-jsonify@1.0.1", "", {}, "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw=="],
|
390 |
+
|
391 |
+
"keyv": ["keyv@4.5.4", "", { "dependencies": { "json-buffer": "3.0.1" } }, "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw=="],
|
392 |
+
|
393 |
+
"kleur": ["kleur@4.1.5", "", {}, "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ=="],
|
394 |
+
|
395 |
+
"known-css-properties": ["known-css-properties@0.37.0", "", {}, "sha512-JCDrsP4Z1Sb9JwG0aJ8Eo2r7k4Ou5MwmThS/6lcIe1ICyb7UBJKGRIUUdqc2ASdE/42lgz6zFUnzAIhtXnBVrQ=="],
|
396 |
+
|
397 |
+
"levn": ["levn@0.4.1", "", { "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" } }, "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ=="],
|
398 |
+
|
399 |
+
"lightningcss": ["lightningcss@1.30.1", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-darwin-arm64": "1.30.1", "lightningcss-darwin-x64": "1.30.1", "lightningcss-freebsd-x64": "1.30.1", "lightningcss-linux-arm-gnueabihf": "1.30.1", "lightningcss-linux-arm64-gnu": "1.30.1", "lightningcss-linux-arm64-musl": "1.30.1", "lightningcss-linux-x64-gnu": "1.30.1", "lightningcss-linux-x64-musl": "1.30.1", "lightningcss-win32-arm64-msvc": "1.30.1", "lightningcss-win32-x64-msvc": "1.30.1" } }, "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg=="],
|
400 |
+
|
401 |
+
"lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.30.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ=="],
|
402 |
+
|
403 |
+
"lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.30.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA=="],
|
404 |
+
|
405 |
+
"lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.30.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig=="],
|
406 |
+
|
407 |
+
"lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.30.1", "", { "os": "linux", "cpu": "arm" }, "sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q=="],
|
408 |
+
|
409 |
+
"lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.30.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw=="],
|
410 |
+
|
411 |
+
"lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.30.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ=="],
|
412 |
+
|
413 |
+
"lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.30.1", "", { "os": "linux", "cpu": "x64" }, "sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw=="],
|
414 |
+
|
415 |
+
"lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.30.1", "", { "os": "linux", "cpu": "x64" }, "sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ=="],
|
416 |
+
|
417 |
+
"lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.30.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA=="],
|
418 |
+
|
419 |
+
"lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.30.1", "", { "os": "win32", "cpu": "x64" }, "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg=="],
|
420 |
+
|
421 |
+
"lilconfig": ["lilconfig@2.1.0", "", {}, "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ=="],
|
422 |
+
|
423 |
+
"locate-character": ["locate-character@3.0.0", "", {}, "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA=="],
|
424 |
+
|
425 |
+
"locate-path": ["locate-path@6.0.0", "", { "dependencies": { "p-locate": "^5.0.0" } }, "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw=="],
|
426 |
+
|
427 |
+
"lodash.merge": ["lodash.merge@4.6.2", "", {}, "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="],
|
428 |
+
|
429 |
+
"magic-string": ["magic-string@0.30.17", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0" } }, "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA=="],
|
430 |
+
|
431 |
+
"merge2": ["merge2@1.4.1", "", {}, "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="],
|
432 |
+
|
433 |
+
"micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="],
|
434 |
+
|
435 |
+
"minimatch": ["minimatch@3.1.2", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="],
|
436 |
+
|
437 |
+
"minipass": ["minipass@7.1.2", "", {}, "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw=="],
|
438 |
+
|
439 |
+
"minizlib": ["minizlib@3.0.2", "", { "dependencies": { "minipass": "^7.1.2" } }, "sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA=="],
|
440 |
+
|
441 |
+
"mkdirp": ["mkdirp@3.0.1", "", { "bin": { "mkdirp": "dist/cjs/src/bin.js" } }, "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg=="],
|
442 |
+
|
443 |
+
"mri": ["mri@1.2.0", "", {}, "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA=="],
|
444 |
+
|
445 |
+
"mrmime": ["mrmime@2.0.1", "", {}, "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ=="],
|
446 |
+
|
447 |
+
"ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="],
|
448 |
+
|
449 |
+
"nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="],
|
450 |
+
|
451 |
+
"natural-compare": ["natural-compare@1.4.0", "", {}, "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="],
|
452 |
+
|
453 |
+
"optionator": ["optionator@0.9.4", "", { "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", "type-check": "^0.4.0", "word-wrap": "^1.2.5" } }, "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g=="],
|
454 |
+
|
455 |
+
"p-limit": ["p-limit@3.1.0", "", { "dependencies": { "yocto-queue": "^0.1.0" } }, "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="],
|
456 |
+
|
457 |
+
"p-locate": ["p-locate@5.0.0", "", { "dependencies": { "p-limit": "^3.0.2" } }, "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw=="],
|
458 |
+
|
459 |
+
"parent-module": ["parent-module@1.0.1", "", { "dependencies": { "callsites": "^3.0.0" } }, "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g=="],
|
460 |
+
|
461 |
+
"path-exists": ["path-exists@4.0.0", "", {}, "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="],
|
462 |
+
|
463 |
+
"path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="],
|
464 |
+
|
465 |
+
"picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="],
|
466 |
+
|
467 |
+
"picomatch": ["picomatch@4.0.2", "", {}, "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg=="],
|
468 |
+
|
469 |
+
"postcss": ["postcss@8.5.6", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg=="],
|
470 |
+
|
471 |
+
"postcss-load-config": ["postcss-load-config@3.1.4", "", { "dependencies": { "lilconfig": "^2.0.5", "yaml": "^1.10.2" }, "peerDependencies": { "postcss": ">=8.0.9", "ts-node": ">=9.0.0" }, "optionalPeers": ["postcss", "ts-node"] }, "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg=="],
|
472 |
+
|
473 |
+
"postcss-safe-parser": ["postcss-safe-parser@7.0.1", "", { "peerDependencies": { "postcss": "^8.4.31" } }, "sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A=="],
|
474 |
+
|
475 |
+
"postcss-scss": ["postcss-scss@4.0.9", "", { "peerDependencies": { "postcss": "^8.4.29" } }, "sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A=="],
|
476 |
+
|
477 |
+
"postcss-selector-parser": ["postcss-selector-parser@7.1.0", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA=="],
|
478 |
+
|
479 |
+
"prelude-ls": ["prelude-ls@1.2.1", "", {}, "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="],
|
480 |
+
|
481 |
+
"prettier": ["prettier@3.6.1", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-5xGWRa90Sp2+x1dQtNpIpeOQpTDBs9cZDmA/qs2vDNN2i18PdapqY7CmBeyLlMuGqXJRIOPaCaVZTLNQRWUH/A=="],
|
482 |
+
|
483 |
+
"prettier-plugin-svelte": ["prettier-plugin-svelte@3.4.0", "", { "peerDependencies": { "prettier": "^3.0.0", "svelte": "^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0" } }, "sha512-pn1ra/0mPObzqoIQn/vUTR3ZZI6UuZ0sHqMK5x2jMLGrs53h0sXhkVuDcrlssHwIMk7FYrMjHBPoUSyyEEDlBQ=="],
|
484 |
+
|
485 |
+
"prettier-plugin-tailwindcss": ["prettier-plugin-tailwindcss@0.6.13", "", { "peerDependencies": { "@ianvs/prettier-plugin-sort-imports": "*", "@prettier/plugin-pug": "*", "@shopify/prettier-plugin-liquid": "*", "@trivago/prettier-plugin-sort-imports": "*", "@zackad/prettier-plugin-twig": "*", "prettier": "^3.0", "prettier-plugin-astro": "*", "prettier-plugin-css-order": "*", "prettier-plugin-import-sort": "*", "prettier-plugin-jsdoc": "*", "prettier-plugin-marko": "*", "prettier-plugin-multiline-arrays": "*", "prettier-plugin-organize-attributes": "*", "prettier-plugin-organize-imports": "*", "prettier-plugin-sort-imports": "*", "prettier-plugin-style-order": "*", "prettier-plugin-svelte": "*" }, "optionalPeers": ["@ianvs/prettier-plugin-sort-imports", "@prettier/plugin-pug", "@shopify/prettier-plugin-liquid", "@trivago/prettier-plugin-sort-imports", "@zackad/prettier-plugin-twig", "prettier-plugin-astro", "prettier-plugin-css-order", "prettier-plugin-import-sort", "prettier-plugin-jsdoc", "prettier-plugin-marko", "prettier-plugin-multiline-arrays", "prettier-plugin-organize-attributes", "prettier-plugin-organize-imports", "prettier-plugin-sort-imports", "prettier-plugin-style-order", "prettier-plugin-svelte"] }, "sha512-uQ0asli1+ic8xrrSmIOaElDu0FacR4x69GynTh2oZjFY10JUt6EEumTQl5tB4fMeD6I1naKd+4rXQQ7esT2i1g=="],
|
486 |
+
|
487 |
+
"punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="],
|
488 |
+
|
489 |
+
"queue-microtask": ["queue-microtask@1.2.3", "", {}, "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="],
|
490 |
+
|
491 |
+
"readdirp": ["readdirp@4.1.2", "", {}, "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg=="],
|
492 |
+
|
493 |
+
"resolve-from": ["resolve-from@4.0.0", "", {}, "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="],
|
494 |
+
|
495 |
+
"reusify": ["reusify@1.1.0", "", {}, "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw=="],
|
496 |
+
|
497 |
+
"rollup": ["rollup@4.44.0", "", { "dependencies": { "@types/estree": "1.0.8" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.44.0", "@rollup/rollup-android-arm64": "4.44.0", "@rollup/rollup-darwin-arm64": "4.44.0", "@rollup/rollup-darwin-x64": "4.44.0", "@rollup/rollup-freebsd-arm64": "4.44.0", "@rollup/rollup-freebsd-x64": "4.44.0", "@rollup/rollup-linux-arm-gnueabihf": "4.44.0", "@rollup/rollup-linux-arm-musleabihf": "4.44.0", "@rollup/rollup-linux-arm64-gnu": "4.44.0", "@rollup/rollup-linux-arm64-musl": "4.44.0", "@rollup/rollup-linux-loongarch64-gnu": "4.44.0", "@rollup/rollup-linux-powerpc64le-gnu": "4.44.0", "@rollup/rollup-linux-riscv64-gnu": "4.44.0", "@rollup/rollup-linux-riscv64-musl": "4.44.0", "@rollup/rollup-linux-s390x-gnu": "4.44.0", "@rollup/rollup-linux-x64-gnu": "4.44.0", "@rollup/rollup-linux-x64-musl": "4.44.0", "@rollup/rollup-win32-arm64-msvc": "4.44.0", "@rollup/rollup-win32-ia32-msvc": "4.44.0", "@rollup/rollup-win32-x64-msvc": "4.44.0", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-qHcdEzLCiktQIfwBq420pn2dP+30uzqYxv9ETm91wdt2R9AFcWfjNAmje4NWlnCIQ5RMTzVf0ZyisOKqHR6RwA=="],
|
498 |
+
|
499 |
+
"run-parallel": ["run-parallel@1.2.0", "", { "dependencies": { "queue-microtask": "^1.2.2" } }, "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="],
|
500 |
+
|
501 |
+
"sade": ["sade@1.8.1", "", { "dependencies": { "mri": "^1.1.0" } }, "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A=="],
|
502 |
+
|
503 |
+
"semver": ["semver@7.7.2", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA=="],
|
504 |
+
|
505 |
+
"set-cookie-parser": ["set-cookie-parser@2.7.1", "", {}, "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ=="],
|
506 |
+
|
507 |
+
"shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="],
|
508 |
+
|
509 |
+
"shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="],
|
510 |
+
|
511 |
+
"sirv": ["sirv@3.0.1", "", { "dependencies": { "@polka/url": "^1.0.0-next.24", "mrmime": "^2.0.0", "totalist": "^3.0.0" } }, "sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A=="],
|
512 |
+
|
513 |
+
"source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="],
|
514 |
+
|
515 |
+
"strip-json-comments": ["strip-json-comments@3.1.1", "", {}, "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="],
|
516 |
+
|
517 |
+
"supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="],
|
518 |
+
|
519 |
+
"svelte": ["svelte@5.34.8", "", { "dependencies": { "@ampproject/remapping": "^2.3.0", "@jridgewell/sourcemap-codec": "^1.5.0", "@sveltejs/acorn-typescript": "^1.0.5", "@types/estree": "^1.0.5", "acorn": "^8.12.1", "aria-query": "^5.3.1", "axobject-query": "^4.1.0", "clsx": "^2.1.1", "esm-env": "^1.2.1", "esrap": "^1.4.8", "is-reference": "^3.0.3", "locate-character": "^3.0.0", "magic-string": "^0.30.11", "zimmerframe": "^1.1.2" } }, "sha512-TF+8irl7rpj3+fpaLuPRX5BqReTAqckp0Fumxa/mCeK3fo0/MnBb9W/Z2bLwtqj3C3r5Lm6NKIAw7YrgIv1Fwg=="],
|
520 |
+
|
521 |
+
"svelte-check": ["svelte-check@4.2.2", "", { "dependencies": { "@jridgewell/trace-mapping": "^0.3.25", "chokidar": "^4.0.1", "fdir": "^6.2.0", "picocolors": "^1.0.0", "sade": "^1.7.4" }, "peerDependencies": { "svelte": "^4.0.0 || ^5.0.0-next.0", "typescript": ">=5.0.0" }, "bin": { "svelte-check": "bin/svelte-check" } }, "sha512-1+31EOYZ7NKN0YDMKusav2hhEoA51GD9Ws6o//0SphMT0ve9mBTsTUEX7OmDMadUP3KjNHsSKtJrqdSaD8CrGQ=="],
|
522 |
+
|
523 |
+
"svelte-eslint-parser": ["svelte-eslint-parser@1.2.0", "", { "dependencies": { "eslint-scope": "^8.2.0", "eslint-visitor-keys": "^4.0.0", "espree": "^10.0.0", "postcss": "^8.4.49", "postcss-scss": "^4.0.9", "postcss-selector-parser": "^7.0.0" }, "peerDependencies": { "svelte": "^3.37.0 || ^4.0.0 || ^5.0.0" }, "optionalPeers": ["svelte"] }, "sha512-mbPtajIeuiyU80BEyGvwAktBeTX7KCr5/0l+uRGLq1dafwRNrjfM5kHGJScEBlPG3ipu6dJqfW/k0/fujvIEVw=="],
|
524 |
+
|
525 |
+
"tailwindcss": ["tailwindcss@4.1.10", "", {}, "sha512-P3nr6WkvKV/ONsTzj6Gb57sWPMX29EPNPopo7+FcpkQaNsrNpZ1pv8QmrYI2RqEKD7mlGqLnGovlcYnBK0IqUA=="],
|
526 |
+
|
527 |
+
"tapable": ["tapable@2.2.2", "", {}, "sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg=="],
|
528 |
+
|
529 |
+
"tar": ["tar@7.4.3", "", { "dependencies": { "@isaacs/fs-minipass": "^4.0.0", "chownr": "^3.0.0", "minipass": "^7.1.2", "minizlib": "^3.0.1", "mkdirp": "^3.0.1", "yallist": "^5.0.0" } }, "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw=="],
|
530 |
+
|
531 |
+
"tinyglobby": ["tinyglobby@0.2.14", "", { "dependencies": { "fdir": "^6.4.4", "picomatch": "^4.0.2" } }, "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ=="],
|
532 |
+
|
533 |
+
"to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="],
|
534 |
+
|
535 |
+
"totalist": ["totalist@3.0.1", "", {}, "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ=="],
|
536 |
+
|
537 |
+
"ts-api-utils": ["ts-api-utils@2.1.0", "", { "peerDependencies": { "typescript": ">=4.8.4" } }, "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ=="],
|
538 |
+
|
539 |
+
"type-check": ["type-check@0.4.0", "", { "dependencies": { "prelude-ls": "^1.2.1" } }, "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew=="],
|
540 |
+
|
541 |
+
"typescript": ["typescript@5.8.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ=="],
|
542 |
+
|
543 |
+
"typescript-eslint": ["typescript-eslint@8.35.0", "", { "dependencies": { "@typescript-eslint/eslint-plugin": "8.35.0", "@typescript-eslint/parser": "8.35.0", "@typescript-eslint/utils": "8.35.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.9.0" } }, "sha512-uEnz70b7kBz6eg/j0Czy6K5NivaYopgxRjsnAJ2Fx5oTLo3wefTHIbL7AkQr1+7tJCRVpTs/wiM8JR/11Loq9A=="],
|
544 |
+
|
545 |
+
"undici-types": ["undici-types@7.8.0", "", {}, "sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw=="],
|
546 |
+
|
547 |
+
"uri-js": ["uri-js@4.4.1", "", { "dependencies": { "punycode": "^2.1.0" } }, "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg=="],
|
548 |
+
|
549 |
+
"util-deprecate": ["util-deprecate@1.0.2", "", {}, "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="],
|
550 |
+
|
551 |
+
"vite": ["vite@6.3.5", "", { "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.4.4", "picomatch": "^4.0.2", "postcss": "^8.5.3", "rollup": "^4.34.9", "tinyglobby": "^0.2.13" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", "jiti": ">=1.21.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ=="],
|
552 |
+
|
553 |
+
"vitefu": ["vitefu@1.0.7", "", { "peerDependencies": { "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0" }, "optionalPeers": ["vite"] }, "sha512-eRWXLBbJjW3X5z5P5IHcSm2yYbYRPb2kQuc+oqsbAl99WB5kVsPbiiox+cymo8twTzifA6itvhr2CmjnaZZp0Q=="],
|
554 |
+
|
555 |
+
"which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="],
|
556 |
+
|
557 |
+
"word-wrap": ["word-wrap@1.2.5", "", {}, "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA=="],
|
558 |
+
|
559 |
+
"yallist": ["yallist@5.0.0", "", {}, "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw=="],
|
560 |
+
|
561 |
+
"yaml": ["yaml@1.10.2", "", {}, "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg=="],
|
562 |
+
|
563 |
+
"yocto-queue": ["yocto-queue@0.1.0", "", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="],
|
564 |
+
|
565 |
+
"zimmerframe": ["zimmerframe@1.1.2", "", {}, "sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w=="],
|
566 |
+
|
567 |
+
"@eslint-community/eslint-utils/eslint-visitor-keys": ["eslint-visitor-keys@3.4.3", "", {}, "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="],
|
568 |
+
|
569 |
+
"@eslint/eslintrc/globals": ["globals@14.0.0", "", {}, "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ=="],
|
570 |
+
|
571 |
+
"@eslint/plugin-kit/@eslint/core": ["@eslint/core@0.15.0", "", { "dependencies": { "@types/json-schema": "^7.0.15" } }, "sha512-b7ePw78tEWWkpgZCDYkbqDOP8dmM6qe+AOC6iuJqlq1R/0ahMAeH3qynpnqKFGkMltrp44ohV4ubGyvLX28tzw=="],
|
572 |
+
|
573 |
+
"@humanfs/node/@humanwhocodes/retry": ["@humanwhocodes/retry@0.3.1", "", {}, "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA=="],
|
574 |
+
|
575 |
+
"@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.4.3", "", { "dependencies": { "@emnapi/wasi-threads": "1.0.2", "tslib": "^2.4.0" }, "bundled": true }, "sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g=="],
|
576 |
+
|
577 |
+
"@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.4.3", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ=="],
|
578 |
+
|
579 |
+
"@tailwindcss/oxide-wasm32-wasi/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.0.2", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA=="],
|
580 |
+
|
581 |
+
"@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@0.2.11", "", { "dependencies": { "@emnapi/core": "^1.4.3", "@emnapi/runtime": "^1.4.3", "@tybys/wasm-util": "^0.9.0" }, "bundled": true }, "sha512-9DPkXtvHydrcOsopiYpUgPHpmj0HWZKMUnL2dZqpvC42lsratuBG06V5ipyno0fUek5VlFsNQ+AcFATSrJXgMA=="],
|
582 |
+
|
583 |
+
"@tailwindcss/oxide-wasm32-wasi/@tybys/wasm-util": ["@tybys/wasm-util@0.9.0", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw=="],
|
584 |
+
|
585 |
+
"@tailwindcss/oxide-wasm32-wasi/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
|
586 |
+
|
587 |
+
"@typescript-eslint/eslint-plugin/ignore": ["ignore@7.0.5", "", {}, "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg=="],
|
588 |
+
|
589 |
+
"@typescript-eslint/typescript-estree/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="],
|
590 |
+
|
591 |
+
"fast-glob/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="],
|
592 |
+
|
593 |
+
"micromatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="],
|
594 |
+
|
595 |
+
"@typescript-eslint/typescript-estree/minimatch/brace-expansion": ["brace-expansion@2.0.2", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ=="],
|
596 |
+
}
|
597 |
+
}
|
demo/src/lib/settings.svelte.ts
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import { PUBLIC_TRANSPORT_SERVER_URL } from '$env/static/public';
|
2 |
+
|
3 |
+
interface Settings {
|
4 |
+
transportServerUrl: string;
|
5 |
+
}
|
6 |
+
|
7 |
+
export const settings: Settings = $state({
|
8 |
+
transportServerUrl: PUBLIC_TRANSPORT_SERVER_URL ?? 'http://localhost:8000'
|
9 |
+
});
|
demo/src/routes/+page.svelte
CHANGED
@@ -3,6 +3,7 @@
|
|
3 |
import { robotics } from '@robothub/transport-server-client';
|
4 |
import type { robotics as roboticsTypes } from '@robothub/transport-server-client';
|
5 |
import { goto } from '$app/navigation';
|
|
|
6 |
|
7 |
// Server status
|
8 |
let serverStatus = $state<'checking' | 'connected' | 'error'>('checking');
|
@@ -30,7 +31,7 @@
|
|
30 |
|
31 |
try {
|
32 |
// Use the configured server URL
|
33 |
-
const client = new robotics.RoboticsClientCore(
|
34 |
const roomList = await client.listRooms('');
|
35 |
rooms = roomList;
|
36 |
serverInfo = { rooms: roomList.length, version: '1.0.0' };
|
@@ -137,6 +138,9 @@
|
|
137 |
<p class="mt-1 font-mono text-sm text-gray-500">
|
138 |
Select or create a workspace to get started
|
139 |
</p>
|
|
|
|
|
|
|
140 |
</div>
|
141 |
|
142 |
<!-- Workspace Selection -->
|
|
|
3 |
import { robotics } from '@robothub/transport-server-client';
|
4 |
import type { robotics as roboticsTypes } from '@robothub/transport-server-client';
|
5 |
import { goto } from '$app/navigation';
|
6 |
+
import { settings } from '$lib/settings.svelte';
|
7 |
|
8 |
// Server status
|
9 |
let serverStatus = $state<'checking' | 'connected' | 'error'>('checking');
|
|
|
31 |
|
32 |
try {
|
33 |
// Use the configured server URL
|
34 |
+
const client = new robotics.RoboticsClientCore(settings.transportServerUrl);
|
35 |
const roomList = await client.listRooms('');
|
36 |
rooms = roomList;
|
37 |
serverInfo = { rooms: roomList.length, version: '1.0.0' };
|
|
|
138 |
<p class="mt-1 font-mono text-sm text-gray-500">
|
139 |
Select or create a workspace to get started
|
140 |
</p>
|
141 |
+
<p class="mt-1 font-mono text-sm text-gray-500">
|
142 |
+
Transport server URL: {settings.transportServerUrl}
|
143 |
+
</p>
|
144 |
</div>
|
145 |
|
146 |
<!-- Workspace Selection -->
|
demo/src/routes/[workspaceId]/+page.svelte
CHANGED
@@ -2,6 +2,7 @@
|
|
2 |
import { onMount } from 'svelte';
|
3 |
import { robotics, video } from '@robothub/transport-server-client';
|
4 |
import type { robotics as roboticsTypes, video as videoTypes } from '@robothub/transport-server-client';
|
|
|
5 |
|
6 |
|
7 |
// Get data from load function
|
@@ -42,7 +43,7 @@
|
|
42 |
|
43 |
// Load robotics rooms
|
44 |
try {
|
45 |
-
roboticsClient = new robotics.RoboticsClientCore(
|
46 |
roboticsRooms = await roboticsClient.listRooms(workspaceId);
|
47 |
} catch (err) {
|
48 |
roboticsError = 'Failed to load robotics rooms';
|
@@ -51,7 +52,7 @@
|
|
51 |
|
52 |
// Load video rooms
|
53 |
try {
|
54 |
-
videoClient = new video.VideoClientCore(
|
55 |
videoRooms = await videoClient.listRooms(workspaceId);
|
56 |
} catch (err) {
|
57 |
videoError = 'Failed to load video rooms';
|
|
|
2 |
import { onMount } from 'svelte';
|
3 |
import { robotics, video } from '@robothub/transport-server-client';
|
4 |
import type { robotics as roboticsTypes, video as videoTypes } from '@robothub/transport-server-client';
|
5 |
+
import { settings } from '$lib/settings.svelte.js';
|
6 |
|
7 |
|
8 |
// Get data from load function
|
|
|
43 |
|
44 |
// Load robotics rooms
|
45 |
try {
|
46 |
+
roboticsClient = new robotics.RoboticsClientCore(settings.transportServerUrl);
|
47 |
roboticsRooms = await roboticsClient.listRooms(workspaceId);
|
48 |
} catch (err) {
|
49 |
roboticsError = 'Failed to load robotics rooms';
|
|
|
52 |
|
53 |
// Load video rooms
|
54 |
try {
|
55 |
+
videoClient = new video.VideoClientCore(settings.transportServerUrl);
|
56 |
videoRooms = await videoClient.listRooms(workspaceId);
|
57 |
} catch (err) {
|
58 |
videoError = 'Failed to load video rooms';
|
demo/src/routes/[workspaceId]/robotics/+page.svelte
CHANGED
@@ -2,6 +2,7 @@
|
|
2 |
import { onMount } from 'svelte';
|
3 |
import { robotics } from '@robothub/transport-server-client';
|
4 |
import type { robotics as roboticsTypes } from '@robothub/transport-server-client';
|
|
|
5 |
|
6 |
|
7 |
// Get data from load function
|
@@ -43,7 +44,7 @@
|
|
43 |
try {
|
44 |
loading = true;
|
45 |
error = '';
|
46 |
-
client = new robotics.RoboticsClientCore(
|
47 |
rooms = await client.listRooms(workspaceId);
|
48 |
debugInfo.responseTime = Date.now() - startTime;
|
49 |
} catch (err) {
|
|
|
2 |
import { onMount } from 'svelte';
|
3 |
import { robotics } from '@robothub/transport-server-client';
|
4 |
import type { robotics as roboticsTypes } from '@robothub/transport-server-client';
|
5 |
+
import { settings } from '$lib/settings.svelte.js';
|
6 |
|
7 |
|
8 |
// Get data from load function
|
|
|
44 |
try {
|
45 |
loading = true;
|
46 |
error = '';
|
47 |
+
client = new robotics.RoboticsClientCore(settings.transportServerUrl);
|
48 |
rooms = await client.listRooms(workspaceId);
|
49 |
debugInfo.responseTime = Date.now() - startTime;
|
50 |
} catch (err) {
|
demo/src/routes/[workspaceId]/robotics/consumer/+page.svelte
CHANGED
@@ -2,6 +2,7 @@
|
|
2 |
import { onMount } from 'svelte';
|
3 |
import { robotics } from '@robothub/transport-server-client';
|
4 |
import type { robotics as roboticsTypes } from '@robothub/transport-server-client';
|
|
|
5 |
|
6 |
|
7 |
// Get data from load function
|
@@ -71,7 +72,7 @@
|
|
71 |
connecting = true;
|
72 |
error = '';
|
73 |
|
74 |
-
consumer = new robotics.RoboticsConsumer(
|
75 |
|
76 |
// Set up event handlers
|
77 |
consumer.onConnected(() => {
|
|
|
2 |
import { onMount } from 'svelte';
|
3 |
import { robotics } from '@robothub/transport-server-client';
|
4 |
import type { robotics as roboticsTypes } from '@robothub/transport-server-client';
|
5 |
+
import { settings } from '$lib/settings.svelte.js';
|
6 |
|
7 |
|
8 |
// Get data from load function
|
|
|
72 |
connecting = true;
|
73 |
error = '';
|
74 |
|
75 |
+
consumer = new robotics.RoboticsConsumer(settings.transportServerUrl);
|
76 |
|
77 |
// Set up event handlers
|
78 |
consumer.onConnected(() => {
|
demo/src/routes/[workspaceId]/robotics/producer/+page.svelte
CHANGED
@@ -1,6 +1,7 @@
|
|
1 |
<script lang="ts">
|
2 |
import { onMount } from 'svelte';
|
3 |
import { robotics } from '@robothub/transport-server-client';
|
|
|
4 |
|
5 |
|
6 |
// Get data from load function
|
@@ -99,7 +100,7 @@
|
|
99 |
connecting = true;
|
100 |
error = '';
|
101 |
|
102 |
-
producer = new robotics.RoboticsProducer(
|
103 |
|
104 |
producer.onConnected(() => {
|
105 |
connected = true;
|
@@ -139,7 +140,7 @@
|
|
139 |
connecting = true;
|
140 |
error = '';
|
141 |
|
142 |
-
producer = new robotics.RoboticsProducer(
|
143 |
|
144 |
producer.onConnected(() => {
|
145 |
connected = true;
|
|
|
1 |
<script lang="ts">
|
2 |
import { onMount } from 'svelte';
|
3 |
import { robotics } from '@robothub/transport-server-client';
|
4 |
+
import { settings } from '$lib/settings.svelte.js';
|
5 |
|
6 |
|
7 |
// Get data from load function
|
|
|
100 |
connecting = true;
|
101 |
error = '';
|
102 |
|
103 |
+
producer = new robotics.RoboticsProducer(settings.transportServerUrl);
|
104 |
|
105 |
producer.onConnected(() => {
|
106 |
connected = true;
|
|
|
140 |
connecting = true;
|
141 |
error = '';
|
142 |
|
143 |
+
producer = new robotics.RoboticsProducer(settings.transportServerUrl);
|
144 |
|
145 |
producer.onConnected(() => {
|
146 |
connected = true;
|
demo/src/routes/[workspaceId]/video/+page.svelte
CHANGED
@@ -2,6 +2,7 @@
|
|
2 |
import { onMount } from 'svelte';
|
3 |
import { video } from '@robothub/transport-server-client';
|
4 |
import type { video as videoTypes } from '@robothub/transport-server-client';
|
|
|
5 |
|
6 |
|
7 |
// Get data from load function
|
@@ -43,7 +44,7 @@
|
|
43 |
try {
|
44 |
loading = true;
|
45 |
error = '';
|
46 |
-
client = new video.VideoClientCore(
|
47 |
rooms = await client.listRooms(workspaceId);
|
48 |
debugInfo.responseTime = Date.now() - startTime;
|
49 |
} catch (err) {
|
|
|
2 |
import { onMount } from 'svelte';
|
3 |
import { video } from '@robothub/transport-server-client';
|
4 |
import type { video as videoTypes } from '@robothub/transport-server-client';
|
5 |
+
import { settings } from '$lib/settings.svelte.js';
|
6 |
|
7 |
|
8 |
// Get data from load function
|
|
|
44 |
try {
|
45 |
loading = true;
|
46 |
error = '';
|
47 |
+
client = new video.VideoClientCore(settings.transportServerUrl);
|
48 |
rooms = await client.listRooms(workspaceId);
|
49 |
debugInfo.responseTime = Date.now() - startTime;
|
50 |
} catch (err) {
|
demo/src/routes/[workspaceId]/video/consumer/+page.svelte
CHANGED
@@ -1,6 +1,7 @@
|
|
1 |
<script lang="ts">
|
2 |
import { onMount } from 'svelte';
|
3 |
import { video } from '@robothub/transport-server-client';
|
|
|
4 |
|
5 |
|
6 |
// Get data from load function
|
@@ -79,7 +80,7 @@
|
|
79 |
connecting = true;
|
80 |
error = '';
|
81 |
|
82 |
-
consumer = new video.VideoConsumer(
|
83 |
|
84 |
// Set up event handlers
|
85 |
consumer.onConnected(() => {
|
|
|
1 |
<script lang="ts">
|
2 |
import { onMount } from 'svelte';
|
3 |
import { video } from '@robothub/transport-server-client';
|
4 |
+
import { settings } from '$lib/settings.svelte.js';
|
5 |
|
6 |
|
7 |
// Get data from load function
|
|
|
80 |
connecting = true;
|
81 |
error = '';
|
82 |
|
83 |
+
consumer = new video.VideoConsumer(settings.transportServerUrl);
|
84 |
|
85 |
// Set up event handlers
|
86 |
consumer.onConnected(() => {
|
demo/src/routes/[workspaceId]/video/producer/+page.svelte
CHANGED
@@ -1,6 +1,7 @@
|
|
1 |
<script lang="ts">
|
2 |
import { onMount } from 'svelte';
|
3 |
import { video } from '@robothub/transport-server-client';
|
|
|
4 |
|
5 |
|
6 |
// Get data from load function
|
@@ -31,7 +32,7 @@
|
|
31 |
|
32 |
// Media stream
|
33 |
let localVideoStream = $state<MediaStream | null>(null);
|
34 |
-
let localVideoRef: HTMLVideoElement;
|
35 |
|
36 |
// Available video devices
|
37 |
let videoDevices = $state<MediaDeviceInfo[]>([]);
|
@@ -194,7 +195,7 @@
|
|
194 |
connecting = true;
|
195 |
error = '';
|
196 |
|
197 |
-
producer = new video.VideoProducer(
|
198 |
|
199 |
producer.onConnected(() => {
|
200 |
connected = true;
|
|
|
1 |
<script lang="ts">
|
2 |
import { onMount } from 'svelte';
|
3 |
import { video } from '@robothub/transport-server-client';
|
4 |
+
import { settings } from '$lib/settings.svelte.js';
|
5 |
|
6 |
|
7 |
// Get data from load function
|
|
|
32 |
|
33 |
// Media stream
|
34 |
let localVideoStream = $state<MediaStream | null>(null);
|
35 |
+
let localVideoRef: HTMLVideoElement | null = $state(null);
|
36 |
|
37 |
// Available video devices
|
38 |
let videoDevices = $state<MediaDeviceInfo[]>([]);
|
|
|
195 |
connecting = true;
|
196 |
error = '';
|
197 |
|
198 |
+
producer = new video.VideoProducer(settings.transportServerUrl);
|
199 |
|
200 |
producer.onConnected(() => {
|
201 |
connected = true;
|
server/launch_with_ui.py
CHANGED
@@ -106,7 +106,7 @@ else:
|
|
106 |
|
107 |
|
108 |
if __name__ == "__main__":
|
109 |
-
port = int(os.getenv("PORT",
|
110 |
host = os.getenv("HOST", "localhost")
|
111 |
|
112 |
logger.info("π€ Starting RobotHub TransportServer Combined Server...")
|
|
|
106 |
|
107 |
|
108 |
if __name__ == "__main__":
|
109 |
+
port = int(os.getenv("PORT", 8000))
|
110 |
host = os.getenv("HOST", "localhost")
|
111 |
|
112 |
logger.info("π€ Starting RobotHub TransportServer Combined Server...")
|
test-docker.sh
CHANGED
@@ -14,7 +14,7 @@ NC='\033[0m' # No Color
|
|
14 |
|
15 |
# Configuration
|
16 |
CONTAINER_NAME="robothub-transport-server-test"
|
17 |
-
PORT=
|
18 |
MAX_WAIT=60
|
19 |
|
20 |
# Cleanup function
|
@@ -39,7 +39,7 @@ echo -e "${GREEN}β
Docker image built successfully${NC}"
|
|
39 |
echo -e "\n${YELLOW}Step 2: Starting container...${NC}"
|
40 |
docker run -d \
|
41 |
--name $CONTAINER_NAME \
|
42 |
-
-p $PORT:
|
43 |
-e SERVE_FRONTEND=true \
|
44 |
robothub-transport-server || {
|
45 |
echo -e "${RED}β Failed to start container${NC}"
|
@@ -156,6 +156,6 @@ echo "π Access the application at: http://localhost:$PORT"
|
|
156 |
echo "π API docs available at: http://localhost:$PORT/api/docs"
|
157 |
echo ""
|
158 |
echo "To manually test:"
|
159 |
-
echo " docker run -p
|
160 |
echo ""
|
161 |
echo -e "${YELLOW}Container will be cleaned up automatically.${NC}"
|
|
|
14 |
|
15 |
# Configuration
|
16 |
CONTAINER_NAME="robothub-transport-server-test"
|
17 |
+
PORT=8000
|
18 |
MAX_WAIT=60
|
19 |
|
20 |
# Cleanup function
|
|
|
39 |
echo -e "\n${YELLOW}Step 2: Starting container...${NC}"
|
40 |
docker run -d \
|
41 |
--name $CONTAINER_NAME \
|
42 |
+
-p $PORT:8000 \
|
43 |
-e SERVE_FRONTEND=true \
|
44 |
robothub-transport-server || {
|
45 |
echo -e "${RED}β Failed to start container${NC}"
|
|
|
156 |
echo "π API docs available at: http://localhost:$PORT/api/docs"
|
157 |
echo ""
|
158 |
echo "To manually test:"
|
159 |
+
echo " docker run -p 8000:8000 -e SERVE_FRONTEND=true robothub-transport-server"
|
160 |
echo ""
|
161 |
echo -e "${YELLOW}Container will be cleaned up automatically.${NC}"
|