@4players/odin-common 9.5.1 → 10.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/api/commands.d.ts +30 -30
- package/api/notifications.d.ts +7 -7
- package/api/schema/media.d.ts +6 -6
- package/api/schema/message.d.ts +2 -2
- package/api/schema/peer.d.ts +5 -5
- package/api/schema/room.d.ts +40 -30
- package/api/schema/token.d.ts +4 -4
- package/api/schema/webrtc.d.ts +2 -2
- package/api/serialization.d.ts +7 -7
- package/cjs/api/mod.js +1 -1
- package/cjs/mod.js +1 -1
- package/cjs/zod/mod.js +1 -1
- package/esm/api/mod.js +1 -1
- package/esm/mod.js +1 -1
- package/esm/zod/mod.js +1 -1
- package/package.json +1 -1
- package/plugin/api.d.ts +18 -16
- package/utility/log.d.ts +8 -1
- package/zod/mod.d.ts +1 -1
package/README.md
CHANGED
|
@@ -36,7 +36,7 @@ Re-exports the Zod library for consumers that need to create their own schemas w
|
|
|
36
36
|
adding a separate Zod dependency.
|
|
37
37
|
|
|
38
38
|
```ts
|
|
39
|
-
import {
|
|
39
|
+
import { z } from '@4players/odin-common/zod';
|
|
40
40
|
```
|
|
41
41
|
|
|
42
42
|
## Troubleshooting
|
package/api/commands.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { type infer as ZodInfer, type ZodType } from 'zod';
|
|
2
2
|
import type { RpcSchema } from './serialization.ts';
|
|
3
3
|
import type { PeerId, PeerPosition } from './schema/peer.ts';
|
|
4
4
|
import type { MediaId, MediaProperties } from './schema/media.ts';
|
|
@@ -9,12 +9,12 @@ export type CommandSchema = {
|
|
|
9
9
|
response: RpcSchema;
|
|
10
10
|
};
|
|
11
11
|
export type Commands = Record<string, CommandSchema>;
|
|
12
|
-
export type CommandRequest<C extends Commands, K extends keyof C> =
|
|
13
|
-
export type CommandResponse<C extends Commands, K extends keyof C> =
|
|
12
|
+
export type CommandRequest<C extends Commands, K extends keyof C> = ZodInfer<C[K]['request']>;
|
|
13
|
+
export type CommandResponse<C extends Commands, K extends keyof C> = ZodInfer<C[K]['response']>;
|
|
14
14
|
export type ParsedCommand<C extends Commands, K extends keyof C = keyof C> = {
|
|
15
15
|
[Name in K]: {
|
|
16
16
|
name: Name;
|
|
17
|
-
request:
|
|
17
|
+
request: ZodInfer<C[Name]['request']>;
|
|
18
18
|
};
|
|
19
19
|
}[K];
|
|
20
20
|
export declare function parseCommand<C extends Commands, K extends keyof C>(name: K, request: unknown, schema: C): ParsedCommand<C, K> | undefined;
|
|
@@ -22,94 +22,94 @@ export declare function parseRequest<C extends Commands, K extends keyof C>(name
|
|
|
22
22
|
export declare function parseResponse<C extends Commands, K extends keyof C>(name: K, response: unknown, schema: C): CommandResponse<C, K> | undefined;
|
|
23
23
|
export type MainCommands = {
|
|
24
24
|
Hello: {
|
|
25
|
-
request:
|
|
25
|
+
request: ZodType<{
|
|
26
26
|
stream: 'main';
|
|
27
27
|
}>;
|
|
28
|
-
response:
|
|
28
|
+
response: ZodType<null>;
|
|
29
29
|
};
|
|
30
30
|
JoinRoom: {
|
|
31
|
-
request:
|
|
31
|
+
request: ZodType<{
|
|
32
32
|
token: string;
|
|
33
33
|
room_id: RoomId;
|
|
34
34
|
user_data: Uint8Array;
|
|
35
35
|
position: PeerPosition;
|
|
36
36
|
}>;
|
|
37
|
-
response:
|
|
37
|
+
response: ZodType<{
|
|
38
38
|
peer_id: PeerId;
|
|
39
39
|
stream_id?: number;
|
|
40
40
|
token?: string;
|
|
41
41
|
}>;
|
|
42
42
|
};
|
|
43
43
|
WebRtcUpdate: {
|
|
44
|
-
request:
|
|
45
|
-
response:
|
|
44
|
+
request: ZodType<WebRtcUpdate>;
|
|
45
|
+
response: ZodType<null>;
|
|
46
46
|
};
|
|
47
47
|
RequestReconnectToken: {
|
|
48
|
-
request:
|
|
48
|
+
request: ZodType<{
|
|
49
49
|
peer_id?: PeerId;
|
|
50
50
|
}>;
|
|
51
|
-
response:
|
|
51
|
+
response: ZodType<string>;
|
|
52
52
|
};
|
|
53
53
|
Ping: {
|
|
54
|
-
request:
|
|
55
|
-
response:
|
|
54
|
+
request: ZodType<Record<PropertyKey, never>>;
|
|
55
|
+
response: ZodType<null>;
|
|
56
56
|
};
|
|
57
57
|
};
|
|
58
58
|
export declare const MainCommandsRpc: MainCommands;
|
|
59
59
|
export type RoomCommands = {
|
|
60
60
|
Hello: {
|
|
61
|
-
request:
|
|
61
|
+
request: ZodType<{
|
|
62
62
|
stream: 'room';
|
|
63
63
|
token: string;
|
|
64
64
|
room_id: string;
|
|
65
65
|
user_data: Uint8Array;
|
|
66
66
|
position: PeerPosition;
|
|
67
67
|
}>;
|
|
68
|
-
response:
|
|
68
|
+
response: ZodType<null>;
|
|
69
69
|
};
|
|
70
70
|
UpdatePeer: {
|
|
71
|
-
request:
|
|
71
|
+
request: ZodType<{
|
|
72
72
|
user_data: Uint8Array;
|
|
73
73
|
}>;
|
|
74
|
-
response:
|
|
74
|
+
response: ZodType<null>;
|
|
75
75
|
};
|
|
76
76
|
StartMedia: {
|
|
77
|
-
request:
|
|
77
|
+
request: ZodType<{
|
|
78
78
|
media_id: MediaId;
|
|
79
79
|
properties: MediaProperties;
|
|
80
80
|
}>;
|
|
81
|
-
response:
|
|
81
|
+
response: ZodType<null>;
|
|
82
82
|
};
|
|
83
83
|
StopMedia: {
|
|
84
|
-
request:
|
|
84
|
+
request: ZodType<{
|
|
85
85
|
media_id: MediaId;
|
|
86
86
|
}>;
|
|
87
|
-
response:
|
|
87
|
+
response: ZodType<null>;
|
|
88
88
|
};
|
|
89
89
|
PauseMedia: {
|
|
90
|
-
request:
|
|
90
|
+
request: ZodType<{
|
|
91
91
|
media_id: MediaId;
|
|
92
92
|
}>;
|
|
93
|
-
response:
|
|
93
|
+
response: ZodType<null>;
|
|
94
94
|
};
|
|
95
95
|
ResumeMedia: {
|
|
96
|
-
request:
|
|
96
|
+
request: ZodType<{
|
|
97
97
|
media_id: MediaId;
|
|
98
98
|
}>;
|
|
99
|
-
response:
|
|
99
|
+
response: ZodType<null>;
|
|
100
100
|
};
|
|
101
101
|
SetPeerPosition: {
|
|
102
|
-
request:
|
|
102
|
+
request: ZodType<{
|
|
103
103
|
position: PeerPosition;
|
|
104
104
|
}>;
|
|
105
|
-
response:
|
|
105
|
+
response: ZodType<null>;
|
|
106
106
|
};
|
|
107
107
|
SendMessage: {
|
|
108
|
-
request:
|
|
108
|
+
request: ZodType<{
|
|
109
109
|
target_peer_ids?: PeerId[];
|
|
110
110
|
message: Uint8Array;
|
|
111
111
|
}>;
|
|
112
|
-
response:
|
|
112
|
+
response: ZodType<null>;
|
|
113
113
|
};
|
|
114
114
|
};
|
|
115
115
|
export declare const RoomCommandsRpc: RoomCommands;
|
package/api/notifications.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { infer as ZodInfer, ZodType } from 'zod';
|
|
2
2
|
import type { PeerUpdate } from './schema/peer.ts';
|
|
3
3
|
import type { MessageReceived } from './schema/message.ts';
|
|
4
4
|
import type { WebRtcUpdate } from './schema/webrtc.ts';
|
|
@@ -8,18 +8,18 @@ export type Notifications = Record<string, RpcSchema>;
|
|
|
8
8
|
export type ParsedNotification<N extends Notifications, K extends keyof N = keyof N> = {
|
|
9
9
|
[Name in K]: {
|
|
10
10
|
name: Name;
|
|
11
|
-
properties:
|
|
11
|
+
properties: ZodInfer<N[Name]>;
|
|
12
12
|
};
|
|
13
13
|
}[K];
|
|
14
14
|
export declare function parseNotification<N extends Notifications, K extends keyof N>(name: K, properties: unknown, schema: N): ParsedNotification<N, K> | undefined;
|
|
15
15
|
export type MainNotifications = {
|
|
16
|
-
WebRtcUpdate:
|
|
16
|
+
WebRtcUpdate: ZodType<WebRtcUpdate>;
|
|
17
17
|
};
|
|
18
18
|
export declare const MainNotificationsRpc: MainNotifications;
|
|
19
19
|
export type RoomNotifications = {
|
|
20
|
-
RoomStatusChanged:
|
|
21
|
-
RoomUpdated:
|
|
22
|
-
PeerUpdated:
|
|
23
|
-
MessageReceived:
|
|
20
|
+
RoomStatusChanged: ZodType<RoomV1.RoomStatusChanged>;
|
|
21
|
+
RoomUpdated: ZodType<RoomV1.RoomUpdates>;
|
|
22
|
+
PeerUpdated: ZodType<PeerUpdate>;
|
|
23
|
+
MessageReceived: ZodType<MessageReceived>;
|
|
24
24
|
};
|
|
25
25
|
export declare const RoomNotificationsRpc: RoomNotifications;
|
package/api/schema/media.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { type ZodNumber, type ZodType } from 'zod';
|
|
2
2
|
export type MediaId = number;
|
|
3
|
-
export declare const MediaIdSchema:
|
|
3
|
+
export declare const MediaIdSchema: ZodNumber;
|
|
4
4
|
export type MediaAudioProperties = {
|
|
5
5
|
kind?: 'audio';
|
|
6
6
|
uid?: string;
|
|
7
7
|
ref?: string;
|
|
8
8
|
customType?: string;
|
|
9
9
|
};
|
|
10
|
-
export declare const MediaAudioPropertiesSchema:
|
|
10
|
+
export declare const MediaAudioPropertiesSchema: ZodType<MediaAudioProperties>;
|
|
11
11
|
export type MediaVideoProperties = {
|
|
12
12
|
kind: 'video';
|
|
13
13
|
codec?: string;
|
|
@@ -15,12 +15,12 @@ export type MediaVideoProperties = {
|
|
|
15
15
|
ref?: string;
|
|
16
16
|
customType?: string;
|
|
17
17
|
};
|
|
18
|
-
export declare const MediaVideoPropertiesSchema:
|
|
18
|
+
export declare const MediaVideoPropertiesSchema: ZodType<MediaVideoProperties>;
|
|
19
19
|
export type MediaProperties = MediaAudioProperties | MediaVideoProperties;
|
|
20
|
-
export declare const MediaPropertiesSchema:
|
|
20
|
+
export declare const MediaPropertiesSchema: ZodType<MediaProperties>;
|
|
21
21
|
export type Media = {
|
|
22
22
|
id: MediaId;
|
|
23
23
|
properties: MediaProperties;
|
|
24
24
|
paused: boolean;
|
|
25
25
|
};
|
|
26
|
-
export declare const MediaSchema:
|
|
26
|
+
export declare const MediaSchema: ZodType<Media>;
|
package/api/schema/message.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { type ZodType } from 'zod';
|
|
2
2
|
export type MessageReceived = {
|
|
3
3
|
sender_peer_id: number;
|
|
4
4
|
message: Uint8Array;
|
|
5
5
|
};
|
|
6
|
-
export declare const MessageReceivedSchema:
|
|
6
|
+
export declare const MessageReceivedSchema: ZodType<MessageReceived>;
|
package/api/schema/peer.d.ts
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { type ZodNumber, type ZodType } from 'zod';
|
|
2
2
|
import type { Media, MediaId } from './media.ts';
|
|
3
3
|
export type PeerId = number;
|
|
4
|
-
export declare const PeerIdSchema:
|
|
4
|
+
export declare const PeerIdSchema: ZodNumber;
|
|
5
5
|
export type PeerPosition = [number, number, number] | [number, number];
|
|
6
|
-
export declare const PeerPositionSchema:
|
|
6
|
+
export declare const PeerPositionSchema: ZodType<PeerPosition>;
|
|
7
7
|
export type Peer = {
|
|
8
8
|
id: PeerId;
|
|
9
9
|
user_id: string;
|
|
10
10
|
user_data: Uint8Array;
|
|
11
11
|
medias: Media[];
|
|
12
12
|
};
|
|
13
|
-
export declare const PeerSchema:
|
|
13
|
+
export declare const PeerSchema: ZodType<Peer>;
|
|
14
14
|
export type PeerUpdate = {
|
|
15
15
|
kind: 'UserDataChanged';
|
|
16
16
|
peer_id: PeerId;
|
|
@@ -24,4 +24,4 @@ export type PeerUpdate = {
|
|
|
24
24
|
peer_id: PeerId;
|
|
25
25
|
media_id: MediaId;
|
|
26
26
|
};
|
|
27
|
-
export declare const PeerUpdateSchema:
|
|
27
|
+
export declare const PeerUpdateSchema: ZodType<PeerUpdate>;
|
package/api/schema/room.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { type ZodString, type ZodType } from 'zod';
|
|
2
2
|
import type { MediaId } from './media.ts';
|
|
3
3
|
import type { Peer, PeerId } from './peer.ts';
|
|
4
4
|
import type { JsonValue } from '../serialization.ts';
|
|
5
5
|
export type RoomId = string;
|
|
6
|
-
export declare const RoomIdSchema:
|
|
6
|
+
export declare const RoomIdSchema: ZodString;
|
|
7
7
|
export declare namespace RoomV1 {
|
|
8
8
|
type Room = {
|
|
9
9
|
id: RoomId;
|
|
@@ -11,7 +11,7 @@ export declare namespace RoomV1 {
|
|
|
11
11
|
user_data: Uint8Array;
|
|
12
12
|
peers: Peer[];
|
|
13
13
|
};
|
|
14
|
-
const RoomSchema:
|
|
14
|
+
const RoomSchema: ZodType<Room>;
|
|
15
15
|
type RoomUpdate = {
|
|
16
16
|
kind: 'Joined';
|
|
17
17
|
room: Room;
|
|
@@ -30,33 +30,44 @@ export declare namespace RoomV1 {
|
|
|
30
30
|
kind: 'UserDataChanged';
|
|
31
31
|
user_data?: Uint8Array;
|
|
32
32
|
};
|
|
33
|
-
const RoomUpdateSchema:
|
|
33
|
+
const RoomUpdateSchema: ZodType<RoomUpdate>;
|
|
34
34
|
type RoomUpdates = {
|
|
35
35
|
updates: RoomUpdate[];
|
|
36
36
|
};
|
|
37
|
-
const RoomUpdatesSchema:
|
|
37
|
+
const RoomUpdatesSchema: ZodType<RoomUpdates>;
|
|
38
38
|
type RoomStatus = 'Joining' | 'Joined' | 'Closed';
|
|
39
|
-
const RoomStatusSchema:
|
|
39
|
+
const RoomStatusSchema: ZodType<RoomStatus>;
|
|
40
40
|
type RoomStatusChanged = {
|
|
41
41
|
status: RoomStatus;
|
|
42
42
|
message?: string;
|
|
43
43
|
};
|
|
44
|
-
const RoomStatusChangedSchema:
|
|
44
|
+
const RoomStatusChangedSchema: ZodType<RoomStatusChanged>;
|
|
45
45
|
}
|
|
46
46
|
export declare namespace RoomV2 {
|
|
47
47
|
type Parameters = Record<string, JsonValue>;
|
|
48
|
-
const ParametersSchema:
|
|
48
|
+
const ParametersSchema: ZodType<Parameters>;
|
|
49
|
+
type ChannelPosition = {
|
|
50
|
+
x: number;
|
|
51
|
+
y: number;
|
|
52
|
+
z: number;
|
|
53
|
+
channel: number;
|
|
54
|
+
};
|
|
55
|
+
const PositionSchema: ZodType<ChannelPosition>;
|
|
56
|
+
type ChannelMask = bigint;
|
|
57
|
+
const ChannelMaskSchema: ZodType<ChannelMask>;
|
|
49
58
|
type HelloRoom = {
|
|
50
59
|
token: string;
|
|
51
60
|
room_id?: RoomId;
|
|
52
61
|
user_data?: Uint8Array;
|
|
53
62
|
parameters?: Parameters;
|
|
63
|
+
channel_masks?: Array<[number, ChannelMask]>;
|
|
64
|
+
positions?: ChannelPosition[];
|
|
54
65
|
};
|
|
55
|
-
const HelloRoomSchema:
|
|
66
|
+
const HelloRoomSchema: ZodType<HelloRoom>;
|
|
56
67
|
type ClientHello = {
|
|
57
68
|
Room: HelloRoom;
|
|
58
69
|
};
|
|
59
|
-
const ClientHelloSchema:
|
|
70
|
+
const ClientHelloSchema: ZodType<ClientHello>;
|
|
60
71
|
type ServerHello = {
|
|
61
72
|
Ok: Record<string, never>;
|
|
62
73
|
} | {
|
|
@@ -64,46 +75,45 @@ export declare namespace RoomV2 {
|
|
|
64
75
|
message: string;
|
|
65
76
|
};
|
|
66
77
|
};
|
|
67
|
-
const ServerHelloSchema:
|
|
78
|
+
const ServerHelloSchema: ZodType<ServerHello>;
|
|
68
79
|
type PeerProperties = {
|
|
69
80
|
user_data?: Uint8Array;
|
|
70
81
|
tags?: string[];
|
|
71
|
-
|
|
72
|
-
video_parameters?: Record<string, JsonValue>;
|
|
82
|
+
parameters?: Record<string, JsonValue>;
|
|
73
83
|
};
|
|
74
|
-
const PeerPropertiesSchema:
|
|
84
|
+
const PeerPropertiesSchema: ZodType<PeerProperties>;
|
|
75
85
|
type Ping = {
|
|
76
86
|
Ping: {
|
|
77
87
|
id: number;
|
|
78
88
|
};
|
|
79
89
|
};
|
|
80
|
-
const PingSchema:
|
|
90
|
+
const PingSchema: ZodType<Ping>;
|
|
81
91
|
type ChangeSelf = {
|
|
82
92
|
ChangeSelf: Omit<PeerProperties, 'tags'>;
|
|
83
93
|
};
|
|
84
|
-
const ChangeSelfSchema:
|
|
94
|
+
const ChangeSelfSchema: ZodType<ChangeSelf>;
|
|
85
95
|
type SetAudioMask = {
|
|
86
96
|
SetAudioMask: {
|
|
87
97
|
peer_id: number;
|
|
88
98
|
mask: bigint;
|
|
89
99
|
};
|
|
90
100
|
};
|
|
91
|
-
const SetAudioMaskSchema:
|
|
101
|
+
const SetAudioMaskSchema: ZodType<SetAudioMask>;
|
|
92
102
|
type SendMessage = {
|
|
93
103
|
SendMessage: {
|
|
94
104
|
peer_ids: number[];
|
|
95
105
|
message: Uint8Array;
|
|
96
106
|
};
|
|
97
107
|
};
|
|
98
|
-
const SendMessageSchema:
|
|
108
|
+
const SendMessageSchema: ZodType<SendMessage>;
|
|
99
109
|
type Call = Ping | ChangeSelf | SetAudioMask | SendMessage;
|
|
100
|
-
const CallSchema:
|
|
110
|
+
const CallSchema: ZodType<Call>;
|
|
101
111
|
type Pong = {
|
|
102
112
|
Pong: {
|
|
103
113
|
id: number;
|
|
104
114
|
};
|
|
105
115
|
};
|
|
106
|
-
const PongSchema:
|
|
116
|
+
const PongSchema: ZodType<Pong>;
|
|
107
117
|
type Joined = {
|
|
108
118
|
Joined: {
|
|
109
119
|
own_peer_id: number;
|
|
@@ -111,51 +121,51 @@ export declare namespace RoomV2 {
|
|
|
111
121
|
customer: string;
|
|
112
122
|
};
|
|
113
123
|
};
|
|
114
|
-
const JoinedSchema:
|
|
124
|
+
const JoinedSchema: ZodType<Joined>;
|
|
115
125
|
type Left = {
|
|
116
126
|
Left: {
|
|
117
127
|
reason: 'room_closing' | 'server_closing' | 'peer_kicked';
|
|
118
128
|
};
|
|
119
129
|
};
|
|
120
|
-
const LeftSchema:
|
|
130
|
+
const LeftSchema: ZodType<Left>;
|
|
121
131
|
type PeerJoined = {
|
|
122
132
|
PeerJoined: PeerProperties & {
|
|
123
133
|
peer_id: number;
|
|
124
134
|
user_id: string;
|
|
125
135
|
};
|
|
126
136
|
};
|
|
127
|
-
const PeerJoinedSchema:
|
|
137
|
+
const PeerJoinedSchema: ZodType<PeerJoined>;
|
|
128
138
|
type PeerLeft = {
|
|
129
139
|
PeerLeft: {
|
|
130
140
|
peer_id: number;
|
|
131
141
|
};
|
|
132
142
|
};
|
|
133
|
-
const PeerLeftSchema:
|
|
143
|
+
const PeerLeftSchema: ZodType<PeerLeft>;
|
|
134
144
|
type PeerChanged = {
|
|
135
145
|
PeerChanged: PeerProperties & {
|
|
136
146
|
peer_id: number;
|
|
137
147
|
};
|
|
138
148
|
};
|
|
139
|
-
const PeerChangedSchema:
|
|
149
|
+
const PeerChangedSchema: ZodType<PeerChanged>;
|
|
140
150
|
type NewReconnectToken = {
|
|
141
151
|
NewReconnectToken: {
|
|
142
152
|
token: string;
|
|
143
153
|
};
|
|
144
154
|
};
|
|
145
|
-
const NewReconnectTokenSchema:
|
|
155
|
+
const NewReconnectTokenSchema: ZodType<NewReconnectToken>;
|
|
146
156
|
type MessageReceived = {
|
|
147
157
|
MessageReceived: {
|
|
148
158
|
sender_peer_id: number;
|
|
149
159
|
message: Uint8Array;
|
|
150
160
|
};
|
|
151
161
|
};
|
|
152
|
-
const MessageReceivedSchema:
|
|
162
|
+
const MessageReceivedSchema: ZodType<MessageReceived>;
|
|
153
163
|
type ServerError = {
|
|
154
164
|
Error: {
|
|
155
|
-
message:
|
|
165
|
+
message: string;
|
|
156
166
|
};
|
|
157
167
|
};
|
|
158
|
-
const ServerErrorSchema:
|
|
168
|
+
const ServerErrorSchema: ZodType<ServerError>;
|
|
159
169
|
type Event = Pong | Joined | Left | PeerJoined | PeerLeft | PeerChanged | NewReconnectToken | MessageReceived | ServerError;
|
|
160
|
-
const EventSchema:
|
|
170
|
+
const EventSchema: ZodType<Event>;
|
|
161
171
|
}
|
package/api/schema/token.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { type ZodType } from 'zod';
|
|
2
2
|
export type TokenAudience = 'sfu' | 'gateway';
|
|
3
|
-
export declare const TokenAudienceSchema:
|
|
3
|
+
export declare const TokenAudienceSchema: ZodType<TokenAudience>;
|
|
4
4
|
export type TokenSubject = 'connect' | 'roomclose' | 'roomupdate' | 'roombanclient' | 'roomsendmessage';
|
|
5
|
-
export declare const TokenSubjectSchema:
|
|
5
|
+
export declare const TokenSubjectSchema: ZodType<TokenSubject>;
|
|
6
6
|
export type TokenClaims = {
|
|
7
7
|
uid: string;
|
|
8
8
|
cid?: string;
|
|
@@ -20,4 +20,4 @@ export type TokenClaims = {
|
|
|
20
20
|
server?: string;
|
|
21
21
|
};
|
|
22
22
|
};
|
|
23
|
-
export declare const TokenClaimsSchema:
|
|
23
|
+
export declare const TokenClaimsSchema: ZodType<TokenClaims>;
|
package/api/schema/webrtc.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { type ZodType } from 'zod';
|
|
2
2
|
export type WebRtcUpdate = {
|
|
3
3
|
kind: 'Sdp';
|
|
4
4
|
type: 'Answer' | 'Offer';
|
|
@@ -13,4 +13,4 @@ export type WebRtcUpdate = {
|
|
|
13
13
|
} | {
|
|
14
14
|
kind: 'TrickleFinished';
|
|
15
15
|
};
|
|
16
|
-
export declare const WebRtcUpdateSchema:
|
|
16
|
+
export declare const WebRtcUpdateSchema: ZodType<WebRtcUpdate>;
|
package/api/serialization.d.ts
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { type infer as ZodInfer, type output as ZodOutput, type ZodType } from 'zod';
|
|
2
2
|
export type RpcValue = Uint8Array | string | number | boolean | null | RpcValue[] | {
|
|
3
3
|
[key: string]: RpcValue;
|
|
4
4
|
};
|
|
5
|
-
export type RpcSchema =
|
|
5
|
+
export type RpcSchema = ZodType<RpcValue, unknown>;
|
|
6
6
|
export type ByteArray = Uint8Array;
|
|
7
|
-
export declare const ByteArraySchema:
|
|
7
|
+
export declare const ByteArraySchema: ZodType<Uint8Array>;
|
|
8
8
|
export type JsonValue = string | number | boolean | null | {
|
|
9
9
|
[key: string]: JsonValue;
|
|
10
10
|
} | JsonValue[];
|
|
11
|
-
export declare const JsonSchema:
|
|
11
|
+
export declare const JsonSchema: ZodType<JsonValue>;
|
|
12
12
|
export type MessagePackRpc = [0, number, string, unknown] | [1, number, string | null, unknown] | [2, string, unknown];
|
|
13
|
-
export declare const MessagePackRpcSchema:
|
|
14
|
-
export declare function oneOrMany<T extends
|
|
15
|
-
export type Infer<T extends RpcSchema> =
|
|
13
|
+
export declare const MessagePackRpcSchema: ZodType<MessagePackRpc>;
|
|
14
|
+
export declare function oneOrMany<T extends ZodType>(type: T): ZodType<ZodInfer<T>[]>;
|
|
15
|
+
export type Infer<T extends RpcSchema> = ZodOutput<T>;
|
package/cjs/api/mod.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var
|
|
1
|
+
var b=Object.defineProperty;var X=Object.getOwnPropertyDescriptor;var Y=Object.getOwnPropertyNames;var $=Object.prototype.hasOwnProperty;var V=(n,a)=>{for(var u in a)b(n,u,{get:a[u],enumerable:!0})},ee=(n,a,u,m)=>{if(a&&typeof a=="object"||typeof a=="function")for(let l of Y(a))!$.call(n,l)&&l!==u&&b(n,l,{get:()=>a[l],enumerable:!(m=X(a,l))||m.enumerable});return n};var oe=n=>ee(b({},"__esModule",{value:!0}),n);var ye={};V(ye,{ByteArraySchema:()=>c,JsonSchema:()=>S,MainCommandsRpc:()=>pe,MainNotificationsRpc:()=>ce,MediaAudioPropertiesSchema:()=>A,MediaIdSchema:()=>g,MediaPropertiesSchema:()=>Z,MediaSchema:()=>C,MediaVideoPropertiesSchema:()=>q,MessagePackRpcSchema:()=>re,MessageReceivedSchema:()=>U,PeerIdSchema:()=>y,PeerPositionSchema:()=>P,PeerSchema:()=>M,PeerUpdateSchema:()=>R,RoomCommandsRpc:()=>de,RoomIdSchema:()=>T,RoomNotificationsRpc:()=>ue,RoomV1:()=>h,RoomV2:()=>N,TokenAudienceSchema:()=>I,TokenClaimsSchema:()=>te,TokenSubjectSchema:()=>v,WebRtcUpdateSchema:()=>k,oneOrMany:()=>f,parseCommand:()=>se,parseNotification:()=>me,parseRequest:()=>ie,parseResponse:()=>ae});module.exports=oe(ye);var d=require("zod");var o=require("zod"),c=(0,o.custom)(n=>n instanceof Uint8Array),S=(0,o.lazy)(()=>(0,o.union)([(0,o.union)([(0,o.string)(),(0,o.number)(),(0,o.boolean)(),(0,o.null)()]),(0,o.array)(S),(0,o.record)((0,o.string)(),S)])),re=(0,o.union)([(0,o.tuple)([(0,o.literal)(0),(0,o.number)(),(0,o.string)(),(0,o.unknown)()]),(0,o.tuple)([(0,o.literal)(1),(0,o.number)(),(0,o.nullable)((0,o.string)()),(0,o.unknown)()]),(0,o.tuple)([(0,o.literal)(2),(0,o.string)(),(0,o.unknown)()])]);function f(n){return(0,o.union)([n.transform(a=>[a]),(0,o.array)(n)])}var I=(0,d.enum)(["sfu","gateway"]),v=(0,d.enum)(["connect","roomclose","roomupdate","roombanclient","roomsendmessage"]),te=(0,d.object)({uid:(0,d.string)(),cid:(0,d.string)().optional(),rid:f((0,d.string)()).refine(n=>n.length>=1,{message:"missing rid"}),nsp:(0,d.string)().optional(),adr:(0,d.string)().optional(),aud:f(I).optional(),sub:f(v).optional(),exp:(0,d.number)().optional(),nbf:(0,d.number)().optional(),ups:(0,d.string)().optional(),tgs:f((0,d.string)()).optional(),tsp:(0,d.number)().optional(),internal:(0,d.object)({server:(0,d.string)().optional()}).optional()});var e=require("zod");var p=require("zod"),g=(0,p.number)(),A=(0,p.object)({kind:(0,p.literal)("audio").optional(),uid:(0,p.string)().optional(),ref:(0,p.string)().optional(),customType:(0,p.string)().optional()}),q=(0,p.object)({kind:(0,p.literal)("video"),codec:(0,p.string)().optional(),uid:(0,p.string)().optional(),ref:(0,p.string)().optional(),customType:(0,p.string)().optional()}),Z=(0,p.union)([A,q]),C=(0,p.object)({id:g,properties:Z,paused:(0,p.boolean)()});var i=require("zod");var y=(0,i.number)(),P=(0,i.union)([(0,i.tuple)([(0,i.number)(),(0,i.number)(),(0,i.number)()]),(0,i.tuple)([(0,i.number)(),(0,i.number)()])]),M=(0,i.object)({id:y,user_id:(0,i.string)(),user_data:c,medias:(0,i.array)(C)}),R=(0,i.discriminatedUnion)("kind",[(0,i.object)({kind:(0,i.literal)("UserDataChanged"),peer_id:y,user_data:c}),(0,i.object)({kind:(0,i.literal)("MediaStarted"),peer_id:y,media:C}),(0,i.object)({kind:(0,i.literal)("MediaStopped"),peer_id:y,media_id:g})]);var T=(0,e.string)(),h;(x=>(x.RoomSchema=(0,e.object)({id:T,customer:(0,e.string)(),user_data:c,peers:(0,e.array)(M)}),x.RoomUpdateSchema=(0,e.discriminatedUnion)("kind",[(0,e.object)({kind:(0,e.literal)("Joined"),room:x.RoomSchema,media_ids:(0,e.array)(g),own_peer_id:y}),(0,e.object)({kind:(0,e.literal)("Left"),reason:(0,e.enum)(["RoomClosing","ServerClosing","PeerKicked"])}),(0,e.object)({kind:(0,e.literal)("PeerJoined"),peer:M}),(0,e.object)({kind:(0,e.literal)("PeerLeft"),peer_id:y}),(0,e.object)({kind:(0,e.literal)("UserDataChanged"),user_data:c.optional()})]),x.RoomUpdatesSchema=(0,e.object)({updates:(0,e.array)(x.RoomUpdateSchema)}),x.RoomStatusSchema=(0,e.enum)(["Joining","Joined","Closed"]),x.RoomStatusChangedSchema=(0,e.object)({status:x.RoomStatusSchema,message:(0,e.string)().optional()})))(h||={});var N;(r=>{r.ParametersSchema=(0,e.record)((0,e.string)(),S),r.PositionSchema=(0,e.object)({x:(0,e.number)(),y:(0,e.number)(),z:(0,e.number)(),channel:(0,e.number)()}),r.ChannelMaskSchema=(0,e.bigint)().nonnegative().lte(0xFFFFFFFFFFFFFFFFn),r.HelloRoomSchema=(0,e.object)({token:(0,e.string)(),room_id:T.optional(),user_data:c.optional(),parameters:r.ParametersSchema.optional(),channel_masks:(0,e.array)((0,e.tuple)([(0,e.number)(),r.ChannelMaskSchema])).optional(),positions:(0,e.array)(r.PositionSchema).optional()}),r.ClientHelloSchema=(0,e.object)({Room:r.HelloRoomSchema}),r.ServerHelloSchema=(0,e.union)([(0,e.object)({Ok:(0,e.object)({})}),(0,e.object)({Rejected:(0,e.object)({message:(0,e.string)()})})]);let _=(0,e.object)({user_data:c.optional(),tags:(0,e.array)((0,e.string)()).optional(),parameters:r.ParametersSchema.optional()});r.PeerPropertiesSchema=_,r.PingSchema=(0,e.object)({Ping:(0,e.object)({id:(0,e.number)()})}),r.ChangeSelfSchema=(0,e.object)({ChangeSelf:_.omit({tags:!0})}),r.SetAudioMaskSchema=(0,e.object)({SetAudioMask:(0,e.object)({peer_id:(0,e.number)(),mask:r.ChannelMaskSchema})}),r.SendMessageSchema=(0,e.object)({SendMessage:(0,e.object)({peer_ids:(0,e.number)().array().default([]),message:c})}),r.CallSchema=r.PingSchema.or(r.ChangeSelfSchema).or(r.SetAudioMaskSchema).or(r.SendMessageSchema),r.PongSchema=(0,e.object)({Pong:(0,e.object)({id:(0,e.number)()})}),r.JoinedSchema=(0,e.object)({Joined:(0,e.object)({own_peer_id:(0,e.number)(),room_id:(0,e.string)(),customer:(0,e.string)()})}),r.LeftSchema=(0,e.object)({Left:(0,e.object)({reason:(0,e.enum)(["room_closing","server_closing","peer_kicked"])})}),r.PeerJoinedSchema=(0,e.object)({PeerJoined:_.extend({peer_id:(0,e.number)(),user_id:(0,e.string)()})}),r.PeerLeftSchema=(0,e.object)({PeerLeft:(0,e.object)({peer_id:(0,e.number)()})}),r.PeerChangedSchema=(0,e.object)({PeerChanged:_.extend({peer_id:(0,e.number)()})}),r.NewReconnectTokenSchema=(0,e.object)({NewReconnectToken:(0,e.object)({token:(0,e.string)()})}),r.MessageReceivedSchema=(0,e.object)({MessageReceived:(0,e.object)({sender_peer_id:(0,e.number)(),message:c})}),r.ServerErrorSchema=(0,e.object)({Error:(0,e.object)({message:(0,e.string)()})}),r.EventSchema=r.PongSchema.or(r.JoinedSchema).or(r.LeftSchema).or(r.PeerJoinedSchema).or(r.PeerLeftSchema).or(r.PeerChangedSchema).or(r.NewReconnectTokenSchema).or(r.MessageReceivedSchema).or(r.ServerErrorSchema)})(N||={});var w=require("zod");var U=(0,w.object)({sender_peer_id:y,message:c});var s=require("zod");var k=(0,s.discriminatedUnion)("kind",[(0,s.object)({kind:(0,s.literal)("Sdp"),type:(0,s.enum)(["Answer","Offer"]),sdp:(0,s.string)(),media_map:(0,s.array)((0,s.tuple)([g,(0,s.string)()]))}),(0,s.object)({kind:(0,s.literal)("Trickle"),candidate:(0,s.string)(),spd_mid:(0,s.string)().optional(),spd_mline_index:(0,s.number)().optional(),username_fragment:(0,s.union)([(0,s.string)(),(0,s.null)()]).optional()}),(0,s.object)({kind:(0,s.literal)("TrickleFinished")})]);var t=require("zod");function J(n,a){n||ne(a)}function ne(n){throw new Error(n)}function se(n,a,u){let m=u[n];if(!m)return;let l=m.request.safeParse(a);return l.success?{name:n,request:l.data}:void 0}function ie(n,a,u){let m=u[n];return J(m!==void 0,"unknown command schema"),m.request.parse(a)}function ae(n,a,u){let m=u[n]?.response.safeParse(a);return m?.success?m.data:void 0}var pe={Hello:{request:(0,t.object)({stream:(0,t.literal)("main")}),response:(0,t.null)()},JoinRoom:{request:(0,t.object)({token:(0,t.string)(),room_id:T,user_data:c,position:P}),response:(0,t.object)({peer_id:y,stream_id:(0,t.number)().optional(),token:(0,t.string)().optional()})},WebRtcUpdate:{request:k,response:(0,t.null)()},RequestReconnectToken:{request:(0,t.object)({peer_id:y.optional()}),response:(0,t.string)()},Ping:{request:(0,t.object)({}),response:(0,t.null)()}},de={Hello:{request:(0,t.object)({stream:(0,t.literal)("room"),token:(0,t.string)(),room_id:(0,t.string)(),user_data:c,position:P}),response:(0,t.null)()},UpdatePeer:{request:(0,t.object)({user_data:c}),response:(0,t.null)()},StartMedia:{request:(0,t.object)({media_id:g,properties:Z}),response:(0,t.null)()},StopMedia:{request:(0,t.object)({media_id:g}),response:(0,t.null)()},PauseMedia:{request:(0,t.object)({media_id:g}),response:(0,t.null)()},ResumeMedia:{request:(0,t.object)({media_id:g}),response:(0,t.null)()},SetPeerPosition:{request:(0,t.object)({position:P}),response:(0,t.null)()},SendMessage:{request:(0,t.object)({target_peer_ids:(0,t.array)(y).optional(),message:c}),response:(0,t.null)()}};function me(n,a,u){let m=u[n];if(!m)return;let l=m.safeParse(a);return l.success?{name:n,properties:l.data}:void 0}var ce={WebRtcUpdate:k},ue={RoomStatusChanged:h.RoomStatusChangedSchema,RoomUpdated:h.RoomUpdatesSchema,PeerUpdated:R,MessageReceived:U};0&&(module.exports={ByteArraySchema,JsonSchema,MainCommandsRpc,MainNotificationsRpc,MediaAudioPropertiesSchema,MediaIdSchema,MediaPropertiesSchema,MediaSchema,MediaVideoPropertiesSchema,MessagePackRpcSchema,MessageReceivedSchema,PeerIdSchema,PeerPositionSchema,PeerSchema,PeerUpdateSchema,RoomCommandsRpc,RoomIdSchema,RoomNotificationsRpc,RoomV1,RoomV2,TokenAudienceSchema,TokenClaimsSchema,TokenSubjectSchema,WebRtcUpdateSchema,oneOrMany,parseCommand,parseNotification,parseRequest,parseResponse});
|
package/cjs/mod.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var y=Object.defineProperty;var U=Object.getOwnPropertyDescriptor;var N=Object.getOwnPropertyNames;var M=Object.prototype.hasOwnProperty;var j=(e,t)=>{for(var r in t)y(e,r,{get:t[r],enumerable:!0})},_=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of N(t))!M.call(e,s)&&s!==r&&y(e,s,{get:()=>t[s],enumerable:!(n=U(t,s))||n.enumerable});return e};var $=e=>_(y({},"__esModule",{value:!0}),e);var Ue={};j(Ue,{APM_DEFAULTS:()=>H,Backend:()=>A,CONNECTION_STATS_INITIAL:()=>G,CallbackSink:()=>S,ConsoleSink:()=>f,Formatter:()=>P,GLOBAL_LOGGER:()=>p,InteractiveConsoleSink:()=>C,JITTER_STATS_INITIAL:()=>J,LogLevel:()=>d,LogSymbols:()=>w,Logger:()=>c,MinDBFS:()=>Me,Selector:()=>L,Strand:()=>h,VAD_DEFAULTS:()=>W,VideoCodec:()=>v,abortableSleep:()=>ae,assert:()=>g,debug:()=>Ie,error:()=>Fe,extendUrl:()=>le,fail:()=>b,failure:()=>u,find:()=>Q,fromBase64:()=>Z,fromBase64Url:()=>q,fromBytes:()=>X,generateUUID:()=>pe,info:()=>Be,isAudioCapable:()=>ee,isBlinkBrowser:()=>V,isElectronBrowser:()=>re,isFailure:()=>he,isFirefoxBrowser:()=>ne,isFunction:()=>me,isNull:()=>xe,isNumber:()=>ye,isObject:()=>be,isProperty:()=>fe,isSafariBrowser:()=>oe,isSharedArrayBufferCapable:()=>te,isString:()=>ve,isSuccess:()=>Re,isUndefined:()=>Le,log:()=>Ee,nextTick:()=>ue,normalizeUrl:()=>ce,sleep:()=>se,success:()=>o,toBytes:()=>Y,toRaw:()=>ie,tryParseLogLevel:()=>Pe,unwrap:()=>z,unwrapOr:()=>m,validateUUID:()=>ge,warn:()=>De});module.exports=$(Ue);var Me=-758.596,A;(t=>{let e;(a=>(a[a.InvalidPassword=-1]="InvalidPassword",a[a.Unknown=0]="Unknown",a[a.Unencrypted=1]="Unencrypted",a[a.Encrypted=2]="Encrypted"))(e=t.PeerCipherStatus||={})})(A||={});var G={bytesSent:0,bytesReceived:0,packetsSent:0,packetsReceived:0,rtt:0,packetLoss:0},J={packetsBuffered:0,packetsSeen:0,packetsProcessed:0,packetsTooEarly:0,packetsTooLate:0,packetsDropped:0,packetsInvalid:0,packetsRepeated:0,packetsLost:0},W={voiceActivity:{attackThreshold:.9,releaseThreshold:.8},volumeGate:{attackThreshold:-30,releaseThreshold:-40}},H={echoCanceller:!0,highPassFilter:!1,noiseSuppression:"Moderate",transientSuppressor:!1,gainController:!0};function g(e,t){e||b(t)}function b(e){throw new Error(e)}function o(e){return{type:"Success",value:e}}function u(e){return{type:"Failure",reason:e}}function z(e){return e.type==="Failure"&&b(e.reason),e.value}function m(e,t){return e.type==="Success"?e.value:t}function Z(e){try{let t=atob(e),r=Uint8Array.from(t,s=>s.codePointAt(0)),n=new TextDecoder("utf8");return o(n.decode(r))}catch(t){return u(String(t))}}function q(e){try{let t=atob(e.replace(/-/g,"+").replace(/_/g,"/")),r=Uint8Array.from(t,s=>s.codePointAt(0)),n=new TextDecoder("utf8");return o(n.decode(r))}catch(t){return u(String(t))}}function Y(e){try{g(e!==void 0,"undefined cannot be converted to byte array"),g(e!==null,"null cannot be converted to byte array");let t=JSON.stringify(e),r=new TextEncoder;return o(r.encode(t))}catch(t){return u(String(t))}}function X(e){try{g(e.length>0,"empty byte array cannot be converted to value");let t=new TextDecoder().decode(e),r=JSON.parse(t);return o(r)}catch(t){return u(String(t))}}var K=["VP8","VP9","AV1","H264"],v=class{constructor(t){this.codec=t}channels=0;clockRate=9e4;isValid(){return K.includes(this.codec)}isSupported(){if(typeof RTCRtpReceiver>"u"||typeof RTCRtpReceiver.getCapabilities>"u")return null;let t=m(this.getMimeType(),"").toLowerCase(),r=new Set(m(this.getSdpFmtpLine(),"").split(";").map(n=>n.trim().toLowerCase()));return RTCRtpReceiver.getCapabilities("video")?.codecs?.find(n=>{let s=n.mimeType.toLowerCase(),i=new Set((n.sdpFmtpLine??"").split(";").map(a=>a.trim().toLowerCase()));if(t!==s||r.size!==i.size)return!1;for(let a of r)if(!i.has(a))return!1;return!0})??null}getPayloadType(){switch(this.codec){case"VP8":return o(96);case"VP9":return o(98);case"AV1":return o(41);case"H264":return o(102);default:return u("invalid video codec")}}getMimeType(){switch(this.codec){case"VP8":return o("video/VP8");case"VP9":return o("video/VP9");case"AV1":return o("video/AV1");case"H264":return o("video/H264");default:return u("invalid video codec")}}getSdpFmtpLine(){switch(this.codec){case"VP8":return o("");case"VP9":return o("profile-id=2");case"AV1":return o("level-idx=5;profile=0;tier=0");case"H264":return o("level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f");default:return u("invalid video codec")}}};function Q(e,t){for(let r of e)if(t(r))return r}function ee(){return typeof AudioContext<"u"&&typeof Worker<"u"}function te(){return typeof SharedArrayBuffer<"u"}function V(){return/(apple)?webkit\/537\.36/i.test(globalThis.navigator.userAgent)}function re(){return/electron/i.test(globalThis.navigator.userAgent)}function ne(){return/firefox|iceweasel|fxios/i.test(globalThis.navigator.userAgent)}function oe(){return V()?!1:/safari|applewebkit/i.test(globalThis.navigator.userAgent)}function ie(e){return JSON.parse(JSON.stringify(e))}var L=class e{constructor(t){this._Generators=t;this._Futures=t.map(e.addIndex)}_Futures;async next(){let[t,r]=await Promise.race(this._Futures);return this._Futures[r]=e.addIndex(this._Generators[r],r),t}static async addIndex(t,r){return[await t(),r]}};function se(e,t){return e<=0?Promise.resolve(t):new Promise(r=>setTimeout(()=>r(t),e))}function ae(e,t){return t.aborted?Promise.resolve("aborted"):new Promise(r=>{let n=()=>r("aborted");t.addEventListener("abort",n,{once:!0}),setTimeout(()=>{t.removeEventListener("abort",n),r(void 0)},e)})}function ue(){return new Promise(e=>setTimeout(e,0))}var h=class{_Tasks=[];_Running=!1;_Values;constructor(...t){this._Values=t}enqueue(t){return new Promise((r,n)=>{let s=async()=>{try{let i=await t(...this._Values);r(i)}catch(i){n(i)}};this._Tasks.push(s),this._Running||this.execute()})}async execute(){for(this._Running=!0;;){let t=this._Tasks.shift();if(t===void 0)break;await t()}this._Running=!1}};function ce(e){let t=e.trim();e.indexOf("://")===-1&&(t=`https://${t}`);try{return o(new URL(t))}catch(r){return u(String(r))}}function le(e,t){let r=e.pathname;r.endsWith("/")===!1&&(r+="/");try{return o(new URL(r+t,e))}catch(n){return u(String(n))}}var de=/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function pe(){return crypto.randomUUID()}function ge(e){return de.test(e)}function fe(e,t){return t in e}function me(e){return typeof e=="function"}function xe(e){return typeof e=="object"&&e===null}function ye(e){return typeof e=="number"}function be(e){return typeof e=="object"}function ve(e){return typeof e=="string"}function Le(e){return typeof e>"u"}function he(e){return e.type==="Failure"}function Re(e){return e.type==="Success"}var{Deno:O}=globalThis,ke=typeof O?.noColor=="boolean"?O.noColor:!1,Te=!ke;function R(e,t){return{open:`\x1B[${e.join(";")}m`,close:`\x1B[${t}m`,regexp:new RegExp(`\\x1b\\[${t}m`,"g")}}function k(e,t){return Te?`${t.open}${e.replace(t.regexp,t.open)}${t.close}`:e}function x(e){return k(e,R([0],0))}function T(e){return k(e,R([1],22))}function F(e){return k(e,R([2],22))}var ot=new RegExp(["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TXZcf-nq-uy=><~]))"].join("|"),"g");var Se=new Date,d=(i=>(i[i.CRITICAL=0]="CRITICAL",i[i.ERROR=1]="ERROR",i[i.WARN=2]="WARN",i[i.INFO=3]="INFO",i[i.DEBUG=4]="DEBUG",i))(d||{}),w={0:"\u{1F4A5}",1:"\u{1F534}",2:"\u{1F7E1}",3:"\u{1F535}",4:"\u{1F7E3}"},we={4:F,3:x,2:x,1:T,0:T};function Pe(e){for(let t of Object.keys(d))if(isNaN(Number(t))!==!1&&t.localeCompare(e,void 0,{sensitivity:"accent"})===0)return d[t]}function Ae({message:e}){return String(e)}function D(e){return JSON.stringify({timestamp:e.date.toISOString(),level:d[e.level],message:e.message,extra:e.extra})}function B(e){function t(a,l){return[Math.floor(a/l),a%l]}function r(){let a,l=e.date.valueOf()-Se.valueOf();[l,a]=t(l,1e3);let[I,E]=t(l,60);return`${I.toString().padStart(4,"0")}:${E.toString().padStart(2,"0")}.${a.toString().padStart(4,"0")}`}function n(){return e.extra===void 0?"":typeof Deno=="object"?" "+Deno.inspect(e.extra,{compact:!1,colors:!0,trailingComma:!0}).trimStart():" "+JSON.stringify(e.extra)}let s=w[e.level],i=e.logger.name!==void 0?`@${e.logger}`:"";return`${x(r())}${i} ${s} ${we[e.level](String(e.message))}${n()}`}function Ve(e){let t=`[${e.date.toISOString()}]`,r=`[${d[e.level]}]`,n=e.logger.name!==void 0?`[${e.logger.name}] `:"",s=w[e.level];return`${t} ${s} ${r.padEnd(7," ")} ${n}${e.message}`}function Oe(){return typeof Deno=="object"&&Deno.stdout.isTerminal()}var P={sparse:Ae,json:D,pretty:B,structured:Ve,default:Oe()?B:D},f=class{formatter;consoleObject;filter;constructor(t=P.default,r=4,n=console){this.filter=r,this.formatter=t,this.consoleObject=n}handle(t){let r=this.formatter(t);switch(t.level){case 1:this.consoleObject.error(r);break;case 2:this.consoleObject.warn(r);break;case 3:this.consoleObject.info(r);break;case 4:this.consoleObject.debug(r);break}}},C=class extends f{handle(t){let r=this.formatter(t),n=t.extra!==void 0?[r,t.extra]:[r];switch(t.level){case 0:case 1:this.consoleObject.error(...n);break;case 2:this.consoleObject.warn(...n);break;case 3:this.consoleObject.info(...n);break;case 4:this.consoleObject.debug(...n);break}}},S=class{formatter;cb;filter;constructor(t,r=P.default,n=4){this.cb=t,this.formatter=r,this.filter=n}handle(t){let r=this.formatter(t);this.cb(r,t)}},c=class{#e;sinks;filter;parent;get name(){return this.#e}constructor(t,r=void 0,n=[],s=void 0){this.#e=r,this.sinks=n,this.filter=t,this.parent=s}log(t,r,n=void 0){let i={date:new Date,level:t,logger:this,message:r,extra:n};this.filter<t||this.insert(i)}insert(t){if(!(this.filter<t.level)){for(let r of this.sinks)r.filter>=t.level&&r.handle(t);this.parent!==void 0&&this.parent.insert(t)}}error=this.log.bind(this,1);warn=this.log.bind(this,2);info=this.log.bind(this,3);debug=this.log.bind(this,4)},p=new c(3,void 0,[new f]),Fe=c.prototype.log.bind(p,1),De=c.prototype.log.bind(p,2),Be=c.prototype.log.bind(p,3),Ie=c.prototype.log.bind(p,4),Ee=c.prototype.log.bind(p);0&&(module.exports={APM_DEFAULTS,Backend,CONNECTION_STATS_INITIAL,CallbackSink,ConsoleSink,Formatter,GLOBAL_LOGGER,InteractiveConsoleSink,JITTER_STATS_INITIAL,LogLevel,LogSymbols,Logger,MinDBFS,Selector,Strand,VAD_DEFAULTS,VideoCodec,abortableSleep,assert,debug,error,extendUrl,fail,failure,find,fromBase64,fromBase64Url,fromBytes,generateUUID,info,isAudioCapable,isBlinkBrowser,isElectronBrowser,isFailure,isFirefoxBrowser,isFunction,isNull,isNumber,isObject,isProperty,isSafariBrowser,isSharedArrayBufferCapable,isString,isSuccess,isUndefined,log,nextTick,normalizeUrl,sleep,success,toBytes,toRaw,tryParseLogLevel,unwrap,unwrapOr,validateUUID,warn});
|
|
1
|
+
var b=Object.defineProperty;var U=Object.getOwnPropertyDescriptor;var N=Object.getOwnPropertyNames;var M=Object.prototype.hasOwnProperty;var j=(e,t)=>{for(var r in t)b(e,r,{get:t[r],enumerable:!0})},_=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of N(t))!M.call(e,s)&&s!==r&&b(e,s,{get:()=>t[s],enumerable:!(n=U(t,s))||n.enumerable});return e};var $=e=>_(b({},"__esModule",{value:!0}),e);var Ue={};j(Ue,{APM_DEFAULTS:()=>H,Backend:()=>A,CONNECTION_STATS_INITIAL:()=>G,CallbackSink:()=>w,ConsoleSink:()=>m,Formatter:()=>f,GLOBAL_LOGGER:()=>p,InteractiveConsoleSink:()=>S,JITTER_STATS_INITIAL:()=>J,LogLevel:()=>d,LogSymbols:()=>P,Logger:()=>c,MinDBFS:()=>Me,Selector:()=>h,Strand:()=>R,VAD_DEFAULTS:()=>W,VideoCodec:()=>L,abortableSleep:()=>ae,assert:()=>g,debug:()=>Ee,error:()=>Fe,extendUrl:()=>le,fail:()=>v,failure:()=>u,find:()=>Q,fromBase64:()=>Z,fromBase64Url:()=>q,fromBytes:()=>X,generateUUID:()=>pe,info:()=>De,isAudioCapable:()=>ee,isBlinkBrowser:()=>V,isElectronBrowser:()=>re,isFailure:()=>he,isFirefoxBrowser:()=>ne,isFunction:()=>me,isNull:()=>ye,isNumber:()=>xe,isObject:()=>be,isProperty:()=>fe,isSafariBrowser:()=>oe,isSharedArrayBufferCapable:()=>te,isString:()=>ve,isSuccess:()=>Re,isUndefined:()=>Le,log:()=>Ie,nextTick:()=>ue,normalizeUrl:()=>ce,sleep:()=>se,success:()=>o,toBytes:()=>Y,toRaw:()=>ie,tryParseLogLevel:()=>Pe,unwrap:()=>z,unwrapOr:()=>y,validateUUID:()=>ge,warn:()=>Be});module.exports=$(Ue);var Me=-758.596,A;(t=>{let e;(a=>(a[a.InvalidPassword=-1]="InvalidPassword",a[a.Unknown=0]="Unknown",a[a.Unencrypted=1]="Unencrypted",a[a.Encrypted=2]="Encrypted"))(e=t.PeerCipherStatus||={})})(A||={});var G={bytesSent:0,bytesReceived:0,packetsSent:0,packetsReceived:0,rtt:0,packetLoss:0},J={packetsBuffered:0,packetsSeen:0,packetsProcessed:0,packetsTooEarly:0,packetsTooLate:0,packetsDropped:0,packetsInvalid:0,packetsRepeated:0,packetsLost:0},W={voiceActivity:{attackThreshold:.9,releaseThreshold:.8},volumeGate:{attackThreshold:-30,releaseThreshold:-40}},H={echoCanceller:!0,highPassFilter:!1,noiseSuppression:"Moderate",transientSuppressor:!1,gainController:!0};function g(e,t){e||v(t)}function v(e){throw new Error(e)}function o(e){return{type:"Success",value:e}}function u(e){return{type:"Failure",reason:e}}function z(e){return e.type==="Failure"&&v(e.reason),e.value}function y(e,t){return e.type==="Success"?e.value:t}function Z(e){try{let t=atob(e),r=Uint8Array.from(t,s=>s.codePointAt(0)),n=new TextDecoder("utf8");return o(n.decode(r))}catch(t){return u(String(t))}}function q(e){try{let t=atob(e.replace(/-/g,"+").replace(/_/g,"/")),r=Uint8Array.from(t,s=>s.codePointAt(0)),n=new TextDecoder("utf8");return o(n.decode(r))}catch(t){return u(String(t))}}function Y(e){try{g(e!==void 0,"undefined cannot be converted to byte array"),g(e!==null,"null cannot be converted to byte array");let t=JSON.stringify(e),r=new TextEncoder;return o(r.encode(t))}catch(t){return u(String(t))}}function X(e){try{g(e.length>0,"empty byte array cannot be converted to value");let t=new TextDecoder().decode(e),r=JSON.parse(t);return o(r)}catch(t){return u(String(t))}}var K=["VP8","VP9","AV1","H264"],L=class{constructor(t){this.codec=t}channels=0;clockRate=9e4;isValid(){return K.includes(this.codec)}isSupported(){if(typeof RTCRtpReceiver>"u"||typeof RTCRtpReceiver.getCapabilities>"u")return null;let t=y(this.getMimeType(),"").toLowerCase(),r=new Set(y(this.getSdpFmtpLine(),"").split(";").map(n=>n.trim().toLowerCase()));return RTCRtpReceiver.getCapabilities("video")?.codecs?.find(n=>{let s=n.mimeType.toLowerCase(),i=new Set((n.sdpFmtpLine??"").split(";").map(a=>a.trim().toLowerCase()));if(t!==s||r.size!==i.size)return!1;for(let a of r)if(!i.has(a))return!1;return!0})??null}getPayloadType(){switch(this.codec){case"VP8":return o(96);case"VP9":return o(98);case"AV1":return o(41);case"H264":return o(102);default:return u("invalid video codec")}}getMimeType(){switch(this.codec){case"VP8":return o("video/VP8");case"VP9":return o("video/VP9");case"AV1":return o("video/AV1");case"H264":return o("video/H264");default:return u("invalid video codec")}}getSdpFmtpLine(){switch(this.codec){case"VP8":return o("");case"VP9":return o("profile-id=2");case"AV1":return o("level-idx=5;profile=0;tier=0");case"H264":return o("level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f");default:return u("invalid video codec")}}};function Q(e,t){for(let r of e)if(t(r))return r}function ee(){return typeof AudioContext<"u"&&typeof Worker<"u"}function te(){return typeof SharedArrayBuffer<"u"}function V(){return/(apple)?webkit\/537\.36/i.test(globalThis.navigator.userAgent)}function re(){return/electron/i.test(globalThis.navigator.userAgent)}function ne(){return/firefox|iceweasel|fxios/i.test(globalThis.navigator.userAgent)}function oe(){return V()?!1:/safari|applewebkit/i.test(globalThis.navigator.userAgent)}function ie(e){return JSON.parse(JSON.stringify(e))}var h=class e{constructor(t){this._Generators=t;this._Futures=t.map(e.addIndex)}_Futures;async next(){let[t,r]=await Promise.race(this._Futures);return this._Futures[r]=e.addIndex(this._Generators[r],r),t}static async addIndex(t,r){return[await t(),r]}};function se(e,t){return e<=0?Promise.resolve(t):new Promise(r=>setTimeout(()=>r(t),e))}function ae(e,t){return t.aborted?Promise.resolve("aborted"):new Promise(r=>{let n=()=>r("aborted");t.addEventListener("abort",n,{once:!0}),setTimeout(()=>{t.removeEventListener("abort",n),r(void 0)},e)})}function ue(){return new Promise(e=>setTimeout(e,0))}var R=class{_Tasks=[];_Running=!1;_Values;constructor(...t){this._Values=t}enqueue(t){return new Promise((r,n)=>{let s=async()=>{try{let i=await t(...this._Values);r(i)}catch(i){n(i)}};this._Tasks.push(s),this._Running||this.execute()})}async execute(){for(this._Running=!0;;){let t=this._Tasks.shift();if(t===void 0)break;await t()}this._Running=!1}};function ce(e){let t=e.trim();e.indexOf("://")===-1&&(t=`https://${t}`);try{return o(new URL(t))}catch(r){return u(String(r))}}function le(e,t){let r=e.pathname;r.endsWith("/")===!1&&(r+="/");try{return o(new URL(r+t,e))}catch(n){return u(String(n))}}var de=/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function pe(){return crypto.randomUUID()}function ge(e){return de.test(e)}function fe(e,t){return t in e}function me(e){return typeof e=="function"}function ye(e){return typeof e=="object"&&e===null}function xe(e){return typeof e=="number"}function be(e){return typeof e=="object"}function ve(e){return typeof e=="string"}function Le(e){return typeof e>"u"}function he(e){return e.type==="Failure"}function Re(e){return e.type==="Success"}var{Deno:O}=globalThis,ke=typeof O?.noColor=="boolean"?O.noColor:!1,Te=!ke;function k(e,t){return{open:`\x1B[${e.join(";")}m`,close:`\x1B[${t}m`,regexp:new RegExp(`\\x1b\\[${t}m`,"g")}}function T(e,t){return Te?`${t.open}${e.replace(t.regexp,t.open)}${t.close}`:e}function x(e){return T(e,k([0],0))}function C(e){return T(e,k([1],22))}function F(e){return T(e,k([2],22))}var ot=new RegExp(["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TXZcf-nq-uy=><~]))"].join("|"),"g");var Se=new Date,d=(i=>(i[i.CRITICAL=0]="CRITICAL",i[i.ERROR=1]="ERROR",i[i.WARN=2]="WARN",i[i.INFO=3]="INFO",i[i.DEBUG=4]="DEBUG",i))(d||{}),P={0:"\u{1F4A5}",1:"\u{1F534}",2:"\u{1F7E1}",3:"\u{1F535}",4:"\u{1F7E3}"},we={4:F,3:x,2:x,1:C,0:C};function Pe(e){for(let t of Object.keys(d))if(isNaN(Number(t))!==!1&&t.localeCompare(e,void 0,{sensitivity:"accent"})===0)return d[t]}function Ae({message:e}){return String(e)}function B(e){return JSON.stringify({timestamp:e.date.toISOString(),level:d[e.level],message:e.message,extra:e.extra})}function D(e){function t(a,l){return[Math.floor(a/l),a%l]}function r(){let a,l=e.date.valueOf()-Se.valueOf();[l,a]=t(l,1e3);let[E,I]=t(l,60);return`${E.toString().padStart(4,"0")}:${I.toString().padStart(2,"0")}.${a.toString().padStart(4,"0")}`}function n(){return e.extra===void 0?"":typeof Deno=="object"?" "+Deno.inspect(e.extra,{compact:!1,colors:!0,trailingComma:!0}).trimStart():" "+JSON.stringify(e.extra)}let s=P[e.level],i=e.logger.name!==void 0?`@${e.logger}`:"";return`${x(r())}${i} ${s} ${we[e.level](String(e.message))}${n()}`}function Ve(e){let t=`[${e.date.toISOString()}]`,r=`[${d[e.level]}]`,n=e.logger.name!==void 0?`[${e.logger.name}] `:"",s=P[e.level];return`${t} ${s} ${r.padEnd(7," ")} ${n}${e.message}`}function Oe(){return typeof Deno=="object"&&Deno.stdout.isTerminal()}var f=class{static sparse=Ae;static json=B;static pretty=D;static structured=Ve;static default=Oe()?D:B;constructor(){}},m=class{formatter;consoleObject;filter;constructor(t=f.default,r=4,n=console){this.filter=r,this.formatter=t,this.consoleObject=n}handle(t){let r=this.formatter(t);switch(t.level){case 1:this.consoleObject.error(r);break;case 2:this.consoleObject.warn(r);break;case 3:this.consoleObject.info(r);break;case 4:this.consoleObject.debug(r);break}}},S=class extends m{handle(t){let r=this.formatter(t),n=t.extra!==void 0?[r,t.extra]:[r];switch(t.level){case 0:case 1:this.consoleObject.error(...n);break;case 2:this.consoleObject.warn(...n);break;case 3:this.consoleObject.info(...n);break;case 4:this.consoleObject.debug(...n);break}}},w=class{formatter;cb;filter;constructor(t,r=f.default,n=4){this.cb=t,this.formatter=r,this.filter=n}handle(t){let r=this.formatter(t);this.cb(r,t)}},c=class{#e;sinks;filter;parent;get name(){return this.#e}constructor(t,r=void 0,n=[],s=void 0){this.#e=r,this.sinks=n,this.filter=t,this.parent=s}log(t,r,n=void 0){let i={date:new Date,level:t,logger:this,message:r,extra:n};this.filter<t||this.insert(i)}insert(t){if(!(this.filter<t.level)){for(let r of this.sinks)r.filter>=t.level&&r.handle(t);this.parent!==void 0&&this.parent.insert(t)}}error=this.log.bind(this,1);warn=this.log.bind(this,2);info=this.log.bind(this,3);debug=this.log.bind(this,4)},p=new c(3,void 0,[new m]),Fe=c.prototype.log.bind(p,1),Be=c.prototype.log.bind(p,2),De=c.prototype.log.bind(p,3),Ee=c.prototype.log.bind(p,4),Ie=c.prototype.log.bind(p);0&&(module.exports={APM_DEFAULTS,Backend,CONNECTION_STATS_INITIAL,CallbackSink,ConsoleSink,Formatter,GLOBAL_LOGGER,InteractiveConsoleSink,JITTER_STATS_INITIAL,LogLevel,LogSymbols,Logger,MinDBFS,Selector,Strand,VAD_DEFAULTS,VideoCodec,abortableSleep,assert,debug,error,extendUrl,fail,failure,find,fromBase64,fromBase64Url,fromBytes,generateUUID,info,isAudioCapable,isBlinkBrowser,isElectronBrowser,isFailure,isFirefoxBrowser,isFunction,isNull,isNumber,isObject,isProperty,isSafariBrowser,isSharedArrayBufferCapable,isString,isSuccess,isUndefined,log,nextTick,normalizeUrl,sleep,success,toBytes,toRaw,tryParseLogLevel,unwrap,unwrapOr,validateUUID,warn});
|
package/cjs/zod/mod.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var
|
|
1
|
+
var a=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var p=(r,o,f,x)=>{if(o&&typeof o=="object"||typeof o=="function")for(let e of c(o))!d.call(r,e)&&e!==f&&a(r,e,{get:()=>o[e],enumerable:!(x=b(o,e))||x.enumerable});return r},t=(r,o,f)=>(p(r,o,"default"),f&&p(f,o,"default"));var g=r=>p(a({},"__esModule",{value:!0}),r);var m={};module.exports=g(m);t(m,require("zod"),module.exports);0&&(module.exports={...require("zod")});
|
package/esm/api/mod.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{enum as D,number as J,object as B,string as l}from"zod";import{array as z,boolean as ye,custom as le,lazy as ge,literal as A,null as xe,nullable as fe,number as w,record as Se,string as P,tuple as q,union as C,unknown as N}from"zod";var t=le(r=>r instanceof Uint8Array),M=ge(()=>C([C([P(),w(),ye(),xe()]),z(M),Se(P(),M)])),Ye=C([q([A(0),w(),P(),N()]),q([A(1),w(),fe(P()),N()]),q([A(2),P(),N()])]);function T(r){return C([r.transform(n=>[n]),z(r)])}var Pe=D(["sfu","gateway"]),Te=D(["connect","roomclose","roomupdate","roombanclient","roomsendmessage"]),oo=B({uid:l(),cid:l().optional(),rid:T(l()).refine(r=>r.length>=1,{message:"missing rid"}),nsp:l().optional(),adr:l().optional(),aud:T(Pe).optional(),sub:T(Te).optional(),exp:J().optional(),nbf:J().optional(),ups:l().optional(),tgs:T(l()).optional(),tsp:J().optional(),internal:B({server:l().optional()}).optional()});import{array as S,bigint as Ie,discriminatedUnion as ve,enum as E,literal as h,number as i,object as o,record as Ae,string as m,tuple as qe,union as Ne}from"zod";import{boolean as he,literal as G,number as ke,object as K,string as x,union as _e}from"zod";var d=ke(),Ze=K({kind:G("audio").optional(),uid:x().optional(),ref:x().optional(),customType:x().optional()}),Ce=K({kind:G("video"),codec:x().optional(),uid:x().optional(),ref:x().optional(),customType:x().optional()}),F=_e([Ze,Ce]),L=K({id:d,properties:F,paused:he()});import{array as Me,discriminatedUnion as be,literal as j,number as f,object as b,string as Re,tuple as Q,union as Ue}from"zod";var a=f(),R=Ue([Q([f(),f(),f()]),Q([f(),f()])]),H=b({id:a,user_id:Re(),user_data:t,medias:Me(L)}),X=be("kind",[b({kind:j("UserDataChanged"),peer_id:a,user_data:t}),b({kind:j("MediaStarted"),peer_id:a,media:L}),b({kind:j("MediaStopped"),peer_id:a,media_id:d})]);var U=m(),I;(y=>(y.RoomSchema=o({id:U,customer:m(),user_data:t,peers:S(H)}),y.RoomUpdateSchema=ve("kind",[o({kind:h("Joined"),room:y.RoomSchema,media_ids:S(d),own_peer_id:a}),o({kind:h("Left"),reason:E(["RoomClosing","ServerClosing","PeerKicked"])}),o({kind:h("PeerJoined"),peer:H}),o({kind:h("PeerLeft"),peer_id:a}),o({kind:h("UserDataChanged"),user_data:t.optional()})]),y.RoomUpdatesSchema=o({updates:S(y.RoomUpdateSchema)}),y.RoomStatusSchema=E(["Joining","Joined","Closed"]),y.RoomStatusChangedSchema=o({status:y.RoomStatusSchema,message:m().optional()})))(I||={});var we;(e=>{e.ParametersSchema=Ae(m(),M),e.PositionSchema=o({x:i(),y:i(),z:i(),channel:i()}),e.ChannelMaskSchema=Ie().nonnegative().lte(0xFFFFFFFFFFFFFFFFn),e.HelloRoomSchema=o({token:m(),room_id:U.optional(),user_data:t.optional(),parameters:e.ParametersSchema.optional(),channel_masks:S(qe([i(),e.ChannelMaskSchema])).optional(),positions:S(e.PositionSchema).optional()}),e.ClientHelloSchema=o({Room:e.HelloRoomSchema}),e.ServerHelloSchema=Ne([o({Ok:o({})}),o({Rejected:o({message:m()})})]);let Z=o({user_data:t.optional(),tags:S(m()).optional(),parameters:e.ParametersSchema.optional()});e.PeerPropertiesSchema=Z,e.PingSchema=o({Ping:o({id:i()})}),e.ChangeSelfSchema=o({ChangeSelf:Z.omit({tags:!0})}),e.SetAudioMaskSchema=o({SetAudioMask:o({peer_id:i(),mask:e.ChannelMaskSchema})}),e.SendMessageSchema=o({SendMessage:o({peer_ids:i().array().default([]),message:t})}),e.CallSchema=e.PingSchema.or(e.ChangeSelfSchema).or(e.SetAudioMaskSchema).or(e.SendMessageSchema),e.PongSchema=o({Pong:o({id:i()})}),e.JoinedSchema=o({Joined:o({own_peer_id:i(),room_id:m(),customer:m()})}),e.LeftSchema=o({Left:o({reason:E(["room_closing","server_closing","peer_kicked"])})}),e.PeerJoinedSchema=o({PeerJoined:Z.extend({peer_id:i(),user_id:m()})}),e.PeerLeftSchema=o({PeerLeft:o({peer_id:i()})}),e.PeerChangedSchema=o({PeerChanged:Z.extend({peer_id:i()})}),e.NewReconnectTokenSchema=o({NewReconnectToken:o({token:m()})}),e.MessageReceivedSchema=o({MessageReceived:o({sender_peer_id:i(),message:t})}),e.ServerErrorSchema=o({Error:o({message:m()})}),e.EventSchema=e.PongSchema.or(e.JoinedSchema).or(e.LeftSchema).or(e.PeerJoinedSchema).or(e.PeerLeftSchema).or(e.PeerChangedSchema).or(e.NewReconnectTokenSchema).or(e.MessageReceivedSchema).or(e.ServerErrorSchema)})(we||={});import{object as Je}from"zod";var Y=Je({sender_peer_id:a,message:t});import{array as Ke,discriminatedUnion as Fe,enum as Le,literal as W,null as je,number as He,object as O,string as k,tuple as Ee,union as We}from"zod";var v=Fe("kind",[O({kind:W("Sdp"),type:Le(["Answer","Offer"]),sdp:k(),media_map:Ke(Ee([d,k()]))}),O({kind:W("Trickle"),candidate:k(),spd_mid:k().optional(),spd_mline_index:He().optional(),username_fragment:We([k(),je()]).optional()}),O({kind:W("TrickleFinished")})]);import{array as ze,literal as V,null as u,number as Be,object as p,string as _}from"zod";function $(r,n){r||Oe(n)}function Oe(r){throw new Error(r)}function Io(r,n,c){let s=c[r];if(!s)return;let g=s.request.safeParse(n);return g.success?{name:r,request:g.data}:void 0}function vo(r,n,c){let s=c[r];return $(s!==void 0,"unknown command schema"),s.request.parse(n)}function Ao(r,n,c){let s=c[r]?.response.safeParse(n);return s?.success?s.data:void 0}var qo={Hello:{request:p({stream:V("main")}),response:u()},JoinRoom:{request:p({token:_(),room_id:U,user_data:t,position:R}),response:p({peer_id:a,stream_id:Be().optional(),token:_().optional()})},WebRtcUpdate:{request:v,response:u()},RequestReconnectToken:{request:p({peer_id:a.optional()}),response:_()},Ping:{request:p({}),response:u()}},No={Hello:{request:p({stream:V("room"),token:_(),room_id:_(),user_data:t,position:R}),response:u()},UpdatePeer:{request:p({user_data:t}),response:u()},StartMedia:{request:p({media_id:d,properties:F}),response:u()},StopMedia:{request:p({media_id:d}),response:u()},PauseMedia:{request:p({media_id:d}),response:u()},ResumeMedia:{request:p({media_id:d}),response:u()},SetPeerPosition:{request:p({position:R}),response:u()},SendMessage:{request:p({target_peer_ids:ze(a).optional(),message:t}),response:u()}};function jo(r,n,c){let s=c[r];if(!s)return;let g=s.safeParse(n);return g.success?{name:r,properties:g.data}:void 0}var Ho={WebRtcUpdate:v},Eo={RoomStatusChanged:I.RoomStatusChangedSchema,RoomUpdated:I.RoomUpdatesSchema,PeerUpdated:X,MessageReceived:Y};export{t as ByteArraySchema,M as JsonSchema,qo as MainCommandsRpc,Ho as MainNotificationsRpc,Ze as MediaAudioPropertiesSchema,d as MediaIdSchema,F as MediaPropertiesSchema,L as MediaSchema,Ce as MediaVideoPropertiesSchema,Ye as MessagePackRpcSchema,Y as MessageReceivedSchema,a as PeerIdSchema,R as PeerPositionSchema,H as PeerSchema,X as PeerUpdateSchema,No as RoomCommandsRpc,U as RoomIdSchema,Eo as RoomNotificationsRpc,I as RoomV1,we as RoomV2,Pe as TokenAudienceSchema,oo as TokenClaimsSchema,Te as TokenSubjectSchema,v as WebRtcUpdateSchema,T as oneOrMany,Io as parseCommand,jo as parseNotification,vo as parseRequest,Ao as parseResponse};
|
package/esm/mod.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var H=-758.596,
|
|
1
|
+
var H=-758.596,D;(t=>{let e;(s=>(s[s.InvalidPassword=-1]="InvalidPassword",s[s.Unknown=0]="Unknown",s[s.Unencrypted=1]="Unencrypted",s[s.Encrypted=2]="Encrypted"))(e=t.PeerCipherStatus||={})})(D||={});var z={bytesSent:0,bytesReceived:0,packetsSent:0,packetsReceived:0,rtt:0,packetLoss:0},Z={packetsBuffered:0,packetsSeen:0,packetsProcessed:0,packetsTooEarly:0,packetsTooLate:0,packetsDropped:0,packetsInvalid:0,packetsRepeated:0,packetsLost:0},q={voiceActivity:{attackThreshold:.9,releaseThreshold:.8},volumeGate:{attackThreshold:-30,releaseThreshold:-40}},Y={echoCanceller:!0,highPassFilter:!1,noiseSuppression:"Moderate",transientSuppressor:!1,gainController:!0};function g(e,t){e||h(t)}function h(e){throw new Error(e)}function o(e){return{type:"Success",value:e}}function u(e){return{type:"Failure",reason:e}}function K(e){return e.type==="Failure"&&h(e.reason),e.value}function x(e,t){return e.type==="Success"?e.value:t}function te(e){try{let t=atob(e),r=Uint8Array.from(t,a=>a.codePointAt(0)),n=new TextDecoder("utf8");return o(n.decode(r))}catch(t){return u(String(t))}}function re(e){try{let t=atob(e.replace(/-/g,"+").replace(/_/g,"/")),r=Uint8Array.from(t,a=>a.codePointAt(0)),n=new TextDecoder("utf8");return o(n.decode(r))}catch(t){return u(String(t))}}function ie(e){try{g(e!==void 0,"undefined cannot be converted to byte array"),g(e!==null,"null cannot be converted to byte array");let t=JSON.stringify(e),r=new TextEncoder;return o(r.encode(t))}catch(t){return u(String(t))}}function se(e){try{g(e.length>0,"empty byte array cannot be converted to value");let t=new TextDecoder().decode(e),r=JSON.parse(t);return o(r)}catch(t){return u(String(t))}}var E=["VP8","VP9","AV1","H264"],R=class{constructor(t){this.codec=t}channels=0;clockRate=9e4;isValid(){return E.includes(this.codec)}isSupported(){if(typeof RTCRtpReceiver>"u"||typeof RTCRtpReceiver.getCapabilities>"u")return null;let t=x(this.getMimeType(),"").toLowerCase(),r=new Set(x(this.getSdpFmtpLine(),"").split(";").map(n=>n.trim().toLowerCase()));return RTCRtpReceiver.getCapabilities("video")?.codecs?.find(n=>{let a=n.mimeType.toLowerCase(),i=new Set((n.sdpFmtpLine??"").split(";").map(s=>s.trim().toLowerCase()));if(t!==a||r.size!==i.size)return!1;for(let s of r)if(!i.has(s))return!1;return!0})??null}getPayloadType(){switch(this.codec){case"VP8":return o(96);case"VP9":return o(98);case"AV1":return o(41);case"H264":return o(102);default:return u("invalid video codec")}}getMimeType(){switch(this.codec){case"VP8":return o("video/VP8");case"VP9":return o("video/VP9");case"AV1":return o("video/AV1");case"H264":return o("video/H264");default:return u("invalid video codec")}}getSdpFmtpLine(){switch(this.codec){case"VP8":return o("");case"VP9":return o("profile-id=2");case"AV1":return o("level-idx=5;profile=0;tier=0");case"H264":return o("level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f");default:return u("invalid video codec")}}};function le(e,t){for(let r of e)if(t(r))return r}function pe(){return typeof AudioContext<"u"&&typeof Worker<"u"}function ge(){return typeof SharedArrayBuffer<"u"}function I(){return/(apple)?webkit\/537\.36/i.test(globalThis.navigator.userAgent)}function fe(){return/electron/i.test(globalThis.navigator.userAgent)}function me(){return/firefox|iceweasel|fxios/i.test(globalThis.navigator.userAgent)}function ye(){return I()?!1:/safari|applewebkit/i.test(globalThis.navigator.userAgent)}function be(e){return JSON.parse(JSON.stringify(e))}var k=class e{constructor(t){this._Generators=t;this._Futures=t.map(e.addIndex)}_Futures;async next(){let[t,r]=await Promise.race(this._Futures);return this._Futures[r]=e.addIndex(this._Generators[r],r),t}static async addIndex(t,r){return[await t(),r]}};function he(e,t){return e<=0?Promise.resolve(t):new Promise(r=>setTimeout(()=>r(t),e))}function Re(e,t){return t.aborted?Promise.resolve("aborted"):new Promise(r=>{let n=()=>r("aborted");t.addEventListener("abort",n,{once:!0}),setTimeout(()=>{t.removeEventListener("abort",n),r(void 0)},e)})}function ke(){return new Promise(e=>setTimeout(e,0))}var T=class{_Tasks=[];_Running=!1;_Values;constructor(...t){this._Values=t}enqueue(t){return new Promise((r,n)=>{let a=async()=>{try{let i=await t(...this._Values);r(i)}catch(i){n(i)}};this._Tasks.push(a),this._Running||this.execute()})}async execute(){for(this._Running=!0;;){let t=this._Tasks.shift();if(t===void 0)break;await t()}this._Running=!1}};function we(e){let t=e.trim();e.indexOf("://")===-1&&(t=`https://${t}`);try{return o(new URL(t))}catch(r){return u(String(r))}}function Pe(e,t){let r=e.pathname;r.endsWith("/")===!1&&(r+="/");try{return o(new URL(r+t,e))}catch(n){return u(String(n))}}var U=/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function Ve(){return crypto.randomUUID()}function Oe(e){return U.test(e)}function Be(e,t){return t in e}function De(e){return typeof e=="function"}function Ee(e){return typeof e=="object"&&e===null}function Ie(e){return typeof e=="number"}function Ue(e){return typeof e=="object"}function Ne(e){return typeof e=="string"}function Me(e){return typeof e>"u"}function je(e){return e.type==="Failure"}function _e(e){return e.type==="Success"}var{Deno:C}=globalThis,N=typeof C?.noColor=="boolean"?C.noColor:!1,M=!N;function b(e,t){return{open:`\x1B[${e.join(";")}m`,close:`\x1B[${t}m`,regexp:new RegExp(`\\x1b\\[${t}m`,"g")}}function v(e,t){return M?`${t.open}${e.replace(t.regexp,t.open)}${t.close}`:e}function f(e){return v(e,b([0],0))}function L(e){return v(e,b([1],22))}function S(e){return v(e,b([2],22))}var Ge=new RegExp(["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TXZcf-nq-uy=><~]))"].join("|"),"g");var _=new Date,d=(i=>(i[i.CRITICAL=0]="CRITICAL",i[i.ERROR=1]="ERROR",i[i.WARN=2]="WARN",i[i.INFO=3]="INFO",i[i.DEBUG=4]="DEBUG",i))(d||{}),O={0:"\u{1F4A5}",1:"\u{1F534}",2:"\u{1F7E1}",3:"\u{1F535}",4:"\u{1F7E3}"},$={4:S,3:f,2:f,1:L,0:L};function Je(e){for(let t of Object.keys(d))if(isNaN(Number(t))!==!1&&t.localeCompare(e,void 0,{sensitivity:"accent"})===0)return d[t]}function G({message:e}){return String(e)}function w(e){return JSON.stringify({timestamp:e.date.toISOString(),level:d[e.level],message:e.message,extra:e.extra})}function P(e){function t(s,l){return[Math.floor(s/l),s%l]}function r(){let s,l=e.date.valueOf()-_.valueOf();[l,s]=t(l,1e3);let[F,B]=t(l,60);return`${F.toString().padStart(4,"0")}:${B.toString().padStart(2,"0")}.${s.toString().padStart(4,"0")}`}function n(){return e.extra===void 0?"":typeof Deno=="object"?" "+Deno.inspect(e.extra,{compact:!1,colors:!0,trailingComma:!0}).trimStart():" "+JSON.stringify(e.extra)}let a=O[e.level],i=e.logger.name!==void 0?`@${e.logger}`:"";return`${f(r())}${i} ${a} ${$[e.level](String(e.message))}${n()}`}function J(e){let t=`[${e.date.toISOString()}]`,r=`[${d[e.level]}]`,n=e.logger.name!==void 0?`[${e.logger.name}] `:"",a=O[e.level];return`${t} ${a} ${r.padEnd(7," ")} ${n}${e.message}`}function W(){return typeof Deno=="object"&&Deno.stdout.isTerminal()}var m=class{static sparse=G;static json=w;static pretty=P;static structured=J;static default=W()?P:w;constructor(){}},y=class{formatter;consoleObject;filter;constructor(t=m.default,r=4,n=console){this.filter=r,this.formatter=t,this.consoleObject=n}handle(t){let r=this.formatter(t);switch(t.level){case 1:this.consoleObject.error(r);break;case 2:this.consoleObject.warn(r);break;case 3:this.consoleObject.info(r);break;case 4:this.consoleObject.debug(r);break}}},A=class extends y{handle(t){let r=this.formatter(t),n=t.extra!==void 0?[r,t.extra]:[r];switch(t.level){case 0:case 1:this.consoleObject.error(...n);break;case 2:this.consoleObject.warn(...n);break;case 3:this.consoleObject.info(...n);break;case 4:this.consoleObject.debug(...n);break}}},V=class{formatter;cb;filter;constructor(t,r=m.default,n=4){this.cb=t,this.formatter=r,this.filter=n}handle(t){let r=this.formatter(t);this.cb(r,t)}},c=class{#e;sinks;filter;parent;get name(){return this.#e}constructor(t,r=void 0,n=[],a=void 0){this.#e=r,this.sinks=n,this.filter=t,this.parent=a}log(t,r,n=void 0){let i={date:new Date,level:t,logger:this,message:r,extra:n};this.filter<t||this.insert(i)}insert(t){if(!(this.filter<t.level)){for(let r of this.sinks)r.filter>=t.level&&r.handle(t);this.parent!==void 0&&this.parent.insert(t)}}error=this.log.bind(this,1);warn=this.log.bind(this,2);info=this.log.bind(this,3);debug=this.log.bind(this,4)},p=new c(3,void 0,[new y]),We=c.prototype.log.bind(p,1),He=c.prototype.log.bind(p,2),ze=c.prototype.log.bind(p,3),Ze=c.prototype.log.bind(p,4),qe=c.prototype.log.bind(p);export{Y as APM_DEFAULTS,D as Backend,z as CONNECTION_STATS_INITIAL,V as CallbackSink,y as ConsoleSink,m as Formatter,p as GLOBAL_LOGGER,A as InteractiveConsoleSink,Z as JITTER_STATS_INITIAL,d as LogLevel,O as LogSymbols,c as Logger,H as MinDBFS,k as Selector,T as Strand,q as VAD_DEFAULTS,R as VideoCodec,Re as abortableSleep,g as assert,Ze as debug,We as error,Pe as extendUrl,h as fail,u as failure,le as find,te as fromBase64,re as fromBase64Url,se as fromBytes,Ve as generateUUID,ze as info,pe as isAudioCapable,I as isBlinkBrowser,fe as isElectronBrowser,je as isFailure,me as isFirefoxBrowser,De as isFunction,Ee as isNull,Ie as isNumber,Ue as isObject,Be as isProperty,ye as isSafariBrowser,ge as isSharedArrayBufferCapable,Ne as isString,_e as isSuccess,Me as isUndefined,qe as log,ke as nextTick,we as normalizeUrl,he as sleep,o as success,ie as toBytes,be as toRaw,Je as tryParseLogLevel,K as unwrap,x as unwrapOr,Oe as validateUUID,He as warn};
|
package/esm/zod/mod.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
export*from"zod";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@4players/odin-common",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "10.0.0",
|
|
4
4
|
"description": "Commonly used type definitions and utility functions across ODIN web projects",
|
|
5
5
|
"author": "Josho Bleicker <josho.bleicker@4players.io> (https://www.4players.io)",
|
|
6
6
|
"homepage": "https://www.4players.io",
|
package/plugin/api.d.ts
CHANGED
|
@@ -3,16 +3,16 @@ export declare namespace Backend {
|
|
|
3
3
|
type UID = string;
|
|
4
4
|
type OnStatusChanged = (status: 'started' | 'stopped') => void;
|
|
5
5
|
type OnEvent = (method: string, properties: unknown) => void;
|
|
6
|
-
type Version = '
|
|
6
|
+
type Version = '9';
|
|
7
7
|
type Transport = 'H3' | 'WebRTC';
|
|
8
8
|
interface Plugin {
|
|
9
9
|
readonly version: Version;
|
|
10
10
|
readonly playbackVolume: PlaybackVolume;
|
|
11
11
|
readonly supportedTransports: Transport[];
|
|
12
12
|
joinRoom(parameters: JoinRoomParameters): Room;
|
|
13
|
-
createAudioPlayback(parameters: CreateAudioPlaybackParameters): Promise<AudioPlayback>;
|
|
14
13
|
createAudioCapture(parameters: CreateAudioCaptureParameters): Promise<AudioCapture>;
|
|
15
|
-
|
|
14
|
+
createAudioPlayback(parameters: CreateAudioPlaybackParameters): Promise<AudioPlayback>;
|
|
15
|
+
createVideoCapture(ms: MediaStream, parameters?: CreateVideoCaptureParameters): Promise<VideoCapture>;
|
|
16
16
|
createVideoPlayback(parameters: CreateVideoPlaybackParameters): Promise<VideoPlayback>;
|
|
17
17
|
enumerateDevices(): Promise<Array<Device>>;
|
|
18
18
|
setOutputVolume(volume: PlaybackVolume): void;
|
|
@@ -27,7 +27,7 @@ export declare namespace Backend {
|
|
|
27
27
|
}
|
|
28
28
|
interface DeviceParameters {
|
|
29
29
|
readonly device?: Device;
|
|
30
|
-
onStatusChanged?: OnStatusChanged;
|
|
30
|
+
readonly onStatusChanged?: OnStatusChanged;
|
|
31
31
|
}
|
|
32
32
|
interface Activity {
|
|
33
33
|
isSilent: boolean;
|
|
@@ -59,13 +59,13 @@ export declare namespace Backend {
|
|
|
59
59
|
readonly userData?: Uint8Array;
|
|
60
60
|
readonly position?: [number, number, number];
|
|
61
61
|
readonly cipher?: SetupCipherSettings;
|
|
62
|
-
readonly onEvent: OnEvent;
|
|
63
62
|
readonly transport?: Transport;
|
|
63
|
+
readonly onEvent: OnEvent;
|
|
64
64
|
}
|
|
65
65
|
interface Room {
|
|
66
66
|
readonly token: string;
|
|
67
67
|
readonly cipher: Cipher | undefined;
|
|
68
|
-
connectionStats: ConnectionStats;
|
|
68
|
+
readonly connectionStats: ConnectionStats;
|
|
69
69
|
request(method: string, properties: unknown): Promise<unknown>;
|
|
70
70
|
link(media: Media): Promise<void>;
|
|
71
71
|
unlink(media: Media): void;
|
|
@@ -84,14 +84,13 @@ export declare namespace Backend {
|
|
|
84
84
|
readonly customType?: string;
|
|
85
85
|
}
|
|
86
86
|
interface CreateVideoPlaybackParameters {
|
|
87
|
-
id: string;
|
|
88
87
|
readonly uid: UID;
|
|
89
88
|
readonly customType?: string;
|
|
90
89
|
}
|
|
91
90
|
interface AudioPlayback extends AudioMedia {
|
|
92
|
-
readonly volume: PlaybackVolume;
|
|
93
91
|
readonly uid: UID;
|
|
94
|
-
|
|
92
|
+
readonly volume: PlaybackVolume;
|
|
93
|
+
readonly jitterStats: JitterStats;
|
|
95
94
|
setVolume(value: PlaybackVolume): void;
|
|
96
95
|
}
|
|
97
96
|
interface CreateAudioCaptureParameters extends Partial<DeviceParameters> {
|
|
@@ -100,6 +99,16 @@ export declare namespace Backend {
|
|
|
100
99
|
readonly apm?: ApmConfig;
|
|
101
100
|
readonly customType?: string;
|
|
102
101
|
}
|
|
102
|
+
interface CreateVideoCaptureParameters {
|
|
103
|
+
readonly codec?: 'H264' | 'AV1' | 'VP8' | 'VP9';
|
|
104
|
+
readonly maxBitrate?: number;
|
|
105
|
+
readonly maxFramerate?: number;
|
|
106
|
+
readonly scaleResolutionDownBy?: number;
|
|
107
|
+
readonly degradationPreference?: 'balanced' | 'maintain-framerate' | 'maintain-resolution';
|
|
108
|
+
readonly volume?: CaptureVolume;
|
|
109
|
+
readonly vad?: VadConfig;
|
|
110
|
+
readonly customType?: string;
|
|
111
|
+
}
|
|
103
112
|
interface AudioCapture extends AudioMedia {
|
|
104
113
|
readonly volume: CaptureVolume;
|
|
105
114
|
readonly vad?: VadConfig;
|
|
@@ -121,7 +130,6 @@ export declare namespace Backend {
|
|
|
121
130
|
audioCapture?: AudioCapture;
|
|
122
131
|
}
|
|
123
132
|
interface VideoPlayback extends Media {
|
|
124
|
-
readonly id: string;
|
|
125
133
|
readonly uid: UID;
|
|
126
134
|
readonly mediaStream?: MediaStream;
|
|
127
135
|
}
|
|
@@ -159,12 +167,6 @@ export declare namespace Backend {
|
|
|
159
167
|
configure(settings: CipherSettings): void;
|
|
160
168
|
getPeerStatus(peerId: number): PeerCipherStatus;
|
|
161
169
|
}
|
|
162
|
-
type VideoInputOptions = {
|
|
163
|
-
codec?: 'H264' | 'VP8' | 'VP9';
|
|
164
|
-
customType?: string;
|
|
165
|
-
vad?: VadConfig;
|
|
166
|
-
volume?: CaptureVolume;
|
|
167
|
-
};
|
|
168
170
|
}
|
|
169
171
|
export declare const CONNECTION_STATS_INITIAL: Backend.ConnectionStats;
|
|
170
172
|
export declare const JITTER_STATS_INITIAL: Backend.JitterStats;
|
package/utility/log.d.ts
CHANGED
|
@@ -15,7 +15,14 @@ export interface LogSink {
|
|
|
15
15
|
}
|
|
16
16
|
export type ConsoleObject = Pick<typeof console, 'error' | 'warn' | 'info' | 'debug'>;
|
|
17
17
|
export type LogFormatter = (record: LogRecord) => string;
|
|
18
|
-
export declare
|
|
18
|
+
export declare class Formatter {
|
|
19
|
+
static readonly sparse: LogFormatter;
|
|
20
|
+
static readonly json: LogFormatter;
|
|
21
|
+
static readonly pretty: LogFormatter;
|
|
22
|
+
static readonly structured: LogFormatter;
|
|
23
|
+
static readonly default: LogFormatter;
|
|
24
|
+
private constructor();
|
|
25
|
+
}
|
|
19
26
|
export declare class ConsoleSink implements LogSink {
|
|
20
27
|
protected formatter: LogFormatter;
|
|
21
28
|
protected consoleObject: ConsoleObject;
|
package/zod/mod.d.ts
CHANGED