@axonkit/client-sdk-js 0.1.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/LICENSE +85 -0
- package/README.md +125 -0
- package/dist/Room.d.ts +273 -0
- package/dist/axonkit-client.esm.js +1 -0
- package/dist/axonkit-client.umd.js +1 -0
- package/dist/connectionHelper/ConnectionCheck.d.ts +33 -0
- package/dist/data-stream/DataStreamManager.d.ts +65 -0
- package/dist/events.d.ts +432 -0
- package/dist/index.d.ts +41 -0
- package/dist/participant/LocalParticipant.d.ts +186 -0
- package/dist/participant/LocalTrackPublication.d.ts +28 -0
- package/dist/participant/Participant.d.ts +133 -0
- package/dist/participant/RemoteParticipant.d.ts +30 -0
- package/dist/participant/RemoteTrackPublication.d.ts +63 -0
- package/dist/protocol/errors.d.ts +22 -0
- package/dist/protocol/message.d.ts +30 -0
- package/dist/protocol/types.d.ts +522 -0
- package/dist/room/DefaultReconnectPolicy.d.ts +28 -0
- package/dist/room/options.d.ts +74 -0
- package/dist/rpc.d.ts +28 -0
- package/dist/signal/RPCClient.d.ts +28 -0
- package/dist/signal/SignalClient.d.ts +14 -0
- package/dist/stats/StatsCollector.d.ts +15 -0
- package/dist/track/LocalAudioTrack.d.ts +20 -0
- package/dist/track/LocalTrack.d.ts +108 -0
- package/dist/track/LocalVideoTrack.d.ts +35 -0
- package/dist/track/RemoteAudioTrack.d.ts +7 -0
- package/dist/track/RemoteTrack.d.ts +33 -0
- package/dist/track/RemoteVideoTrack.d.ts +31 -0
- package/dist/track/Track.d.ts +62 -0
- package/dist/track/create.d.ts +30 -0
- package/dist/track/options.d.ts +525 -0
- package/dist/track/processor/types.d.ts +49 -0
- package/dist/track/publishUtils.d.ts +14 -0
- package/dist/transport/TransportManager.d.ts +62 -0
- package/dist/types.d.ts +146 -0
- package/dist/utils/browser.d.ts +113 -0
- package/dist/utils/deviceFailure.d.ts +30 -0
- package/dist/utils/id.d.ts +1 -0
- package/dist/utils/logger.d.ts +39 -0
- package/dist/utils/typedEmitter.d.ts +24 -0
- package/dist/version.d.ts +2 -0
- package/package.json +80 -0
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A message exchanged between participants (chat, whiteboard, document, etc.).
|
|
3
|
+
*/
|
|
4
|
+
export interface Message {
|
|
5
|
+
/** Unique message identifier. */
|
|
6
|
+
id: string;
|
|
7
|
+
/** Message type: "text", "whiteboard", "document", "image", "video", "audio", "file", "system", etc. */
|
|
8
|
+
type?: string;
|
|
9
|
+
/** Unix timestamp in milliseconds when the message was sent. */
|
|
10
|
+
timestamp: number;
|
|
11
|
+
/** The text content of the message. */
|
|
12
|
+
message: string;
|
|
13
|
+
/** Unix timestamp in milliseconds of the last edit, if edited. */
|
|
14
|
+
editTimestamp?: number;
|
|
15
|
+
/** If true, the message is not persisted (e.g. mouse coordinates). */
|
|
16
|
+
transient?: boolean;
|
|
17
|
+
/** Optional file attachment identifiers. */
|
|
18
|
+
attachedFiles?: string[];
|
|
19
|
+
}
|
|
20
|
+
/** @deprecated Use {@link Message} instead. */
|
|
21
|
+
export type ChatMessage = Message;
|
|
22
|
+
/**
|
|
23
|
+
* Options when sending a text message.
|
|
24
|
+
*/
|
|
25
|
+
export interface SendTextOptions {
|
|
26
|
+
/** Topic identifier used to route the message to appropriate handlers. */
|
|
27
|
+
topic?: string;
|
|
28
|
+
/** Participant identities to send to. If empty, sends to all. */
|
|
29
|
+
destinationIdentities?: string[];
|
|
30
|
+
/** Optional file attachment identifiers. */
|
|
31
|
+
attachments?: string[];
|
|
32
|
+
/** Progress callback (0–1). */
|
|
33
|
+
onProgress?: (progress: number) => void;
|
|
34
|
+
/** Key-value attributes attached to the stream. */
|
|
35
|
+
attributes?: Record<string, string>;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Options when opening an incremental text stream.
|
|
39
|
+
*/
|
|
40
|
+
export interface StreamTextOptions {
|
|
41
|
+
/** Topic identifier. */
|
|
42
|
+
topic?: string;
|
|
43
|
+
/** Participant identities to send to. If empty, sends to all. */
|
|
44
|
+
destinationIdentities?: string[];
|
|
45
|
+
/** Key-value attributes attached to the stream. */
|
|
46
|
+
attributes?: Record<string, string>;
|
|
47
|
+
/** Total size in bytes if known ahead of time. */
|
|
48
|
+
totalSize?: number;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Options when streaming raw bytes.
|
|
52
|
+
*/
|
|
53
|
+
export interface StreamBytesOptions {
|
|
54
|
+
/** Human-readable name for the stream. */
|
|
55
|
+
name?: string;
|
|
56
|
+
/** Topic identifier. */
|
|
57
|
+
topic?: string;
|
|
58
|
+
/** MIME type of the data. */
|
|
59
|
+
mimeType?: string;
|
|
60
|
+
/** Key-value attributes attached to the stream. */
|
|
61
|
+
attributes?: Record<string, string>;
|
|
62
|
+
/** Participant identities to send to. If empty, sends to all. */
|
|
63
|
+
destinationIdentities?: string[];
|
|
64
|
+
/** Total size in bytes if known ahead of time. */
|
|
65
|
+
totalSize?: number;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Options when sending a file.
|
|
69
|
+
*/
|
|
70
|
+
export interface SendFileOptions {
|
|
71
|
+
/** Topic identifier. */
|
|
72
|
+
topic?: string;
|
|
73
|
+
/** MIME type override. If omitted, derived from the File object. */
|
|
74
|
+
mimeType?: string;
|
|
75
|
+
/** Participant identities to send to. */
|
|
76
|
+
destinationIdentities?: string[];
|
|
77
|
+
/** Progress callback (0–1). */
|
|
78
|
+
onProgress?: (progress: number) => void;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Base information about an incoming data stream.
|
|
82
|
+
*/
|
|
83
|
+
export interface BaseStreamInfo {
|
|
84
|
+
id: string;
|
|
85
|
+
mimeType: string;
|
|
86
|
+
topic: string;
|
|
87
|
+
timestamp: number;
|
|
88
|
+
/** Total size in bytes for finite streams, `undefined` for unknown-size streams. */
|
|
89
|
+
size?: number;
|
|
90
|
+
attributes?: Record<string, string>;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Information about an incoming byte stream.
|
|
94
|
+
*/
|
|
95
|
+
export interface ByteStreamInfo extends BaseStreamInfo {
|
|
96
|
+
name: string;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Information about an incoming text stream.
|
|
100
|
+
*/
|
|
101
|
+
export type TextStreamInfo = BaseStreamInfo;
|
|
102
|
+
/**
|
|
103
|
+
* Identifies the participant who sent a data stream.
|
|
104
|
+
*/
|
|
105
|
+
export interface StreamSenderInfo {
|
|
106
|
+
identity: string;
|
|
107
|
+
sid: string;
|
|
108
|
+
}
|
|
109
|
+
import type { TextStreamReader, ByteStreamReader } from './data-stream/DataStreamManager';
|
|
110
|
+
/**
|
|
111
|
+
* Handler called when an incoming text stream is received on a registered topic.
|
|
112
|
+
*/
|
|
113
|
+
export type TextStreamHandler = (reader: TextStreamReader, sender: StreamSenderInfo) => void;
|
|
114
|
+
/**
|
|
115
|
+
* Handler called when an incoming byte stream is received on a registered topic.
|
|
116
|
+
*/
|
|
117
|
+
export type ByteStreamHandler = (reader: ByteStreamReader, sender: StreamSenderInfo) => void;
|
|
118
|
+
/**
|
|
119
|
+
* Parameters for initiating a P2P RPC call.
|
|
120
|
+
*/
|
|
121
|
+
export interface PerformRpcParams {
|
|
122
|
+
/** The `identity` of the destination participant. */
|
|
123
|
+
destinationIdentity: string;
|
|
124
|
+
/** The method name to call. */
|
|
125
|
+
method: string;
|
|
126
|
+
/** The method payload (typically JSON string). */
|
|
127
|
+
payload: string;
|
|
128
|
+
/**
|
|
129
|
+
* Timeout for receiving a response (milliseconds).
|
|
130
|
+
* @defaultValue 15000
|
|
131
|
+
*/
|
|
132
|
+
responseTimeout?: number;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Data passed to an RPC method handler.
|
|
136
|
+
*/
|
|
137
|
+
export interface RpcInvocationData {
|
|
138
|
+
/** The unique request ID. */
|
|
139
|
+
requestId: string;
|
|
140
|
+
/** The identity of the caller. */
|
|
141
|
+
callerIdentity: string;
|
|
142
|
+
/** The payload of the request. */
|
|
143
|
+
payload: string;
|
|
144
|
+
/** The maximum time the caller will wait for a response. */
|
|
145
|
+
responseTimeout: number;
|
|
146
|
+
}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import type { LocalTrack } from '../track/LocalTrack';
|
|
2
|
+
import type { Track } from '../track/Track';
|
|
3
|
+
/**
|
|
4
|
+
* Details about the current browser.
|
|
5
|
+
*/
|
|
6
|
+
export interface BrowserDetails {
|
|
7
|
+
name: string;
|
|
8
|
+
version: string;
|
|
9
|
+
os?: string;
|
|
10
|
+
osVersion?: string;
|
|
11
|
+
supportsInsertableStreams: boolean;
|
|
12
|
+
supportsTransceiver: boolean;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Options for creating an audio analyser.
|
|
16
|
+
*/
|
|
17
|
+
export interface AudioAnalyserOptions {
|
|
18
|
+
/**
|
|
19
|
+
* FFT size for the analyser node. Must be a power of 2 between 32 and 32768.
|
|
20
|
+
* @defaultValue 2048
|
|
21
|
+
*/
|
|
22
|
+
fftSize?: number;
|
|
23
|
+
/**
|
|
24
|
+
* Smoothing constant for the analyser node.
|
|
25
|
+
* @defaultValue 0.8
|
|
26
|
+
*/
|
|
27
|
+
smoothingTimeConstant?: number;
|
|
28
|
+
/**
|
|
29
|
+
* If `true`, uses float frequency data; otherwise uses byte frequency data.
|
|
30
|
+
* @defaultValue false
|
|
31
|
+
*/
|
|
32
|
+
useFloat?: boolean;
|
|
33
|
+
}
|
|
34
|
+
/** Whether we are running in a web (browser/Electron) environment as opposed to Node/React Native. */
|
|
35
|
+
export declare function isWeb(): boolean;
|
|
36
|
+
/** Whether the current device is a mobile device. */
|
|
37
|
+
export declare function isMobile(): boolean;
|
|
38
|
+
export declare function isFireFox(): boolean;
|
|
39
|
+
export declare function isSafari(): boolean;
|
|
40
|
+
export declare function isSafariBased(): boolean;
|
|
41
|
+
export declare function isChromiumBased(): boolean;
|
|
42
|
+
/** Check whether the current browser supports the minimum WebRTC features. */
|
|
43
|
+
export declare function isBrowserSupported(): boolean;
|
|
44
|
+
/** Whether the browser supports adaptive stream (IntersectionObserver + ResizeObserver). */
|
|
45
|
+
export declare function supportsAdaptiveStream(): boolean;
|
|
46
|
+
/** Whether the browser is likely to support dynacast (simulcast encoding control). */
|
|
47
|
+
export declare function supportsDynacast(): boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Check for AV1 support. Safari reports AV1 capability on iPhone 14 but
|
|
50
|
+
* doesn't actually support it; Firefox supports AV1 decode but SVC
|
|
51
|
+
* publishing is broken.
|
|
52
|
+
*/
|
|
53
|
+
export declare function supportsAV1(): boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Check for VP9 support. Firefox VP9 SVC publishing is broken
|
|
56
|
+
* (https://bugzilla.mozilla.org/show_bug.cgi?id=1633876). Safari below
|
|
57
|
+
* version 16 does not support VP9.
|
|
58
|
+
*/
|
|
59
|
+
export declare function supportsVP9(): boolean;
|
|
60
|
+
/** Check for H.265/HEVC support via `RTCRtpSender.getCapabilities`. */
|
|
61
|
+
export declare function supportsH265(): boolean;
|
|
62
|
+
/** Whether the browser supports `HTMLMediaElement.setSinkId` for audio output device selection. */
|
|
63
|
+
export declare function supportsAudioOutputSelection(): boolean;
|
|
64
|
+
/**
|
|
65
|
+
* Compare two version strings (e.g. "17.4.1" vs "17.2").
|
|
66
|
+
* Returns negative if a < b, 0 if equal, positive if a > b.
|
|
67
|
+
*/
|
|
68
|
+
export declare function compareVersions(a: string, b: string): number;
|
|
69
|
+
/** Detect the current browser name, version, and OS. */
|
|
70
|
+
export declare function getBrowser(): BrowserDetails;
|
|
71
|
+
/**
|
|
72
|
+
* Create a silent audio `MediaStreamTrack`. Useful as a placeholder when
|
|
73
|
+
* a real track isn't available.
|
|
74
|
+
*/
|
|
75
|
+
export declare function getEmptyAudioStreamTrack(): MediaStreamTrack;
|
|
76
|
+
/**
|
|
77
|
+
* Create a black video `MediaStreamTrack`. Useful as a placeholder when
|
|
78
|
+
* a real track isn't available.
|
|
79
|
+
*/
|
|
80
|
+
export declare function getEmptyVideoStreamTrack(width?: number, height?: number): MediaStreamTrack;
|
|
81
|
+
/**
|
|
82
|
+
* Attempt to determine facing mode from a device label string.
|
|
83
|
+
* Returns `'user'` for front cameras and `'environment'` for back cameras.
|
|
84
|
+
*/
|
|
85
|
+
export declare function facingModeFromDeviceLabel(label: string): string | undefined;
|
|
86
|
+
/**
|
|
87
|
+
* Detect facing mode from an existing {@link LocalTrack} by inspecting
|
|
88
|
+
* track settings and device label.
|
|
89
|
+
*/
|
|
90
|
+
export declare function facingModeFromLocalTrack(track: LocalTrack): string | undefined;
|
|
91
|
+
/**
|
|
92
|
+
* Create a Web Audio `AnalyserNode` connected to a track's audio.
|
|
93
|
+
* Returns the analyser and a cleanup function.
|
|
94
|
+
*/
|
|
95
|
+
export declare function createAudioAnalyser(track: Track, options?: AudioAnalyserOptions): {
|
|
96
|
+
analyser: AnalyserNode;
|
|
97
|
+
cleanup: () => void;
|
|
98
|
+
};
|
|
99
|
+
/** Safari 17+ or iOS 17+. */
|
|
100
|
+
export declare function isSafari17Based(): boolean;
|
|
101
|
+
/**
|
|
102
|
+
* Safari 18.4+ uses a different SVC API that requires
|
|
103
|
+
* `scaleResolutionDownBy` to be set on each encoding.
|
|
104
|
+
*/
|
|
105
|
+
export declare function isSafariSvcApi(browser?: BrowserDetails): boolean;
|
|
106
|
+
/**
|
|
107
|
+
* Unwrap a `ConstrainDOMString` / `ConstrainULong` / `ConstrainDouble` to
|
|
108
|
+
* its primitive value. Handles plain values, `{ exact }`, `{ ideal }`, and
|
|
109
|
+
* arrays (returns the first element).
|
|
110
|
+
*/
|
|
111
|
+
export declare function unwrapConstraint(constraint: ConstrainDOMString): string;
|
|
112
|
+
export declare function unwrapConstraint(constraint: ConstrainULong): number;
|
|
113
|
+
export declare function unwrapConstraint(constraint: ConstrainDouble): number;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The type of device failure that occurred.
|
|
3
|
+
*/
|
|
4
|
+
export type DeviceFailureKind = 'PermissionDenied' | 'NotFound' | 'DeviceInUse';
|
|
5
|
+
/**
|
|
6
|
+
* Utility class for determining the type of media device failure from an error
|
|
7
|
+
* object.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* try {
|
|
12
|
+
* await createLocalAudioTrack();
|
|
13
|
+
* } catch (e) {
|
|
14
|
+
* const failure = MediaDeviceFailure.getFailure(e);
|
|
15
|
+
* if (failure === 'PermissionDenied') {
|
|
16
|
+
* // show permission dialog
|
|
17
|
+
* }
|
|
18
|
+
* }
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export declare class MediaDeviceFailure {
|
|
22
|
+
/**
|
|
23
|
+
* Determine the failure kind from a caught error.
|
|
24
|
+
*
|
|
25
|
+
* @param error - The error thrown by `getUserMedia` or similar APIs.
|
|
26
|
+
* @returns The categorised failure, or `undefined` if the error is not a
|
|
27
|
+
* recognised device failure.
|
|
28
|
+
*/
|
|
29
|
+
static getFailure(error: any): DeviceFailureKind | undefined;
|
|
30
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function generateLogId(): string;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export declare enum LogLevel {
|
|
2
|
+
TRACE = 0,
|
|
3
|
+
DEBUG = 1,
|
|
4
|
+
INFO = 2,
|
|
5
|
+
WARN = 3,
|
|
6
|
+
ERROR = 4,
|
|
7
|
+
SILENT = 5
|
|
8
|
+
}
|
|
9
|
+
export interface LoggerInterface {
|
|
10
|
+
trace(msg: string, ...args: any[]): void;
|
|
11
|
+
debug(msg: string, ...args: any[]): void;
|
|
12
|
+
info(msg: string, ...args: any[]): void;
|
|
13
|
+
warn(msg: string, ...args: any[]): void;
|
|
14
|
+
error(msg: string, ...args: any[]): void;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Callback signature for log extensions. Receives the log level, formatted
|
|
18
|
+
* message, and any additional context passed to the logger call.
|
|
19
|
+
*/
|
|
20
|
+
export type LogExtension = (level: LogLevel, msg: string, context: Record<string, unknown>) => void;
|
|
21
|
+
export declare function setLogLevel(level: LogLevel): void;
|
|
22
|
+
export declare function getLogLevel(): LogLevel;
|
|
23
|
+
export declare function setLogger(logger: LoggerInterface): void;
|
|
24
|
+
/**
|
|
25
|
+
* Set an extension handler that receives all SDK log messages. This can be
|
|
26
|
+
* used to forward logs to a third-party logging service (e.g. Sentry,
|
|
27
|
+
* Datadog).
|
|
28
|
+
*
|
|
29
|
+
* @param handler - The extension handler function, or `undefined` to remove.
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```ts
|
|
33
|
+
* setLogExtension((level, msg, context) => {
|
|
34
|
+
* myLoggingService.log({ level: LogLevel[level], message: msg, ...context });
|
|
35
|
+
* });
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export declare function setLogExtension(handler: LogExtension | undefined): void;
|
|
39
|
+
export declare function getLogger(tag: string): LoggerInterface;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { EventEmitter } from 'events';
|
|
2
|
+
/**
|
|
3
|
+
* A typed wrapper over Node's `EventEmitter`.
|
|
4
|
+
*
|
|
5
|
+
* Extends `EventEmitter` with `declare` overrides so that `emit`, `on`,
|
|
6
|
+
* `off`, etc. are type-safe without introducing circular-reference issues
|
|
7
|
+
* that arise when using `typed-emitter` directly in `extends` clauses
|
|
8
|
+
* whose event maps reference the class itself.
|
|
9
|
+
*
|
|
10
|
+
* Runtime behaviour is 100% `EventEmitter`; this class adds zero runtime
|
|
11
|
+
* code.
|
|
12
|
+
*/
|
|
13
|
+
export declare class TypedEmitter<T extends Record<string, (...args: any[]) => void> = {}> extends EventEmitter {
|
|
14
|
+
emit: <E extends string | number>(event: E, ...args: E extends keyof T ? Parameters<T[E]> : any[]) => boolean;
|
|
15
|
+
on: <E extends string | number>(event: E, listener: E extends keyof T ? T[E] : (...args: any[]) => void) => this;
|
|
16
|
+
once: <E extends string | number>(event: E, listener: E extends keyof T ? T[E] : (...args: any[]) => void) => this;
|
|
17
|
+
off: <E extends string | number>(event: E, listener: E extends keyof T ? T[E] : (...args: any[]) => void) => this;
|
|
18
|
+
addListener: <E extends string | number>(event: E, listener: E extends keyof T ? T[E] : (...args: any[]) => void) => this;
|
|
19
|
+
removeListener: <E extends string | number>(event: E, listener: E extends keyof T ? T[E] : (...args: any[]) => void) => this;
|
|
20
|
+
removeAllListeners: (event?: string | number) => this;
|
|
21
|
+
listeners: <E extends string | number>(event: E) => E extends keyof T ? T[E][] : ((...args: any[]) => void)[];
|
|
22
|
+
rawListeners: <E extends string | number>(event: E) => E extends keyof T ? T[E][] : ((...args: any[]) => void)[];
|
|
23
|
+
listenerCount: (event: string | number) => number;
|
|
24
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@axonkit/client-sdk-js",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "AxonKit JS/TS Client SDK based on mediasoup-client",
|
|
5
|
+
"main": "dist/axonkit-client.umd.js",
|
|
6
|
+
"module": "dist/axonkit-client.esm.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"files": [
|
|
9
|
+
"dist",
|
|
10
|
+
"README.md",
|
|
11
|
+
"LICENSE"
|
|
12
|
+
],
|
|
13
|
+
"scripts": {
|
|
14
|
+
"build": "rollup -c",
|
|
15
|
+
"build:clean": "rm -rf dist && rollup -c",
|
|
16
|
+
"docs": "typedoc",
|
|
17
|
+
"lint": "eslint src/",
|
|
18
|
+
"format": "prettier --write src/",
|
|
19
|
+
"format:check": "prettier --check src/",
|
|
20
|
+
"test": "vitest run src",
|
|
21
|
+
"dev": "vite examples/demo",
|
|
22
|
+
"size": "size-limit",
|
|
23
|
+
"clean": "rm -rf dist docs",
|
|
24
|
+
"verify:dist": "test -f dist/axonkit-client.esm.js && test -f dist/axonkit-client.umd.js && test -f dist/index.d.ts && ! ls dist/**/*.map 2>/dev/null | grep -q . && echo 'dist OK (no source maps shipped)'",
|
|
25
|
+
"prepublishOnly": "npm run clean && npm run build && npm run verify:dist"
|
|
26
|
+
},
|
|
27
|
+
"keywords": [
|
|
28
|
+
"webrtc",
|
|
29
|
+
"mediasoup",
|
|
30
|
+
"axonkit",
|
|
31
|
+
"realtime"
|
|
32
|
+
],
|
|
33
|
+
"type": "module",
|
|
34
|
+
"license": "SEE LICENSE IN LICENSE",
|
|
35
|
+
"author": "axonkit",
|
|
36
|
+
"repository": {
|
|
37
|
+
"type": "git",
|
|
38
|
+
"url": "git+https://github.com/axonkit/client-sdk-js.git"
|
|
39
|
+
},
|
|
40
|
+
"homepage": "https://github.com/axonkit/client-sdk-js#readme",
|
|
41
|
+
"bugs": {
|
|
42
|
+
"url": "https://github.com/axonkit/client-sdk-js/issues"
|
|
43
|
+
},
|
|
44
|
+
"publishConfig": {
|
|
45
|
+
"access": "public"
|
|
46
|
+
},
|
|
47
|
+
"engines": {
|
|
48
|
+
"node": ">=18"
|
|
49
|
+
},
|
|
50
|
+
"sideEffects": false,
|
|
51
|
+
"dependencies": {
|
|
52
|
+
"async-mutex": "^0.5.0",
|
|
53
|
+
"events": "^3.3.0",
|
|
54
|
+
"mediasoup-client": "^3.18.7",
|
|
55
|
+
"tslib": "^2.8.1"
|
|
56
|
+
},
|
|
57
|
+
"devDependencies": {
|
|
58
|
+
"@rollup/plugin-commonjs": "^29.0.1",
|
|
59
|
+
"@rollup/plugin-json": "^6.1.0",
|
|
60
|
+
"@rollup/plugin-node-resolve": "^16.0.3",
|
|
61
|
+
"@rollup/plugin-terser": "^1.0.0",
|
|
62
|
+
"@rollup/plugin-typescript": "^12.3.0",
|
|
63
|
+
"@size-limit/preset-small-lib": "^12.0.1",
|
|
64
|
+
"@types/events": "^3.0.3",
|
|
65
|
+
"@typescript-eslint/eslint-plugin": "^8.56.1",
|
|
66
|
+
"@typescript-eslint/parser": "^8.56.1",
|
|
67
|
+
"eslint": "^10.0.2",
|
|
68
|
+
"eslint-config-prettier": "^10.1.0",
|
|
69
|
+
"eslint-plugin-prettier": "^5.2.0",
|
|
70
|
+
"happy-dom": "^17.4.4",
|
|
71
|
+
"prettier": "^3.8.1",
|
|
72
|
+
"rollup": "^4.59.0",
|
|
73
|
+
"size-limit": "^12.0.1",
|
|
74
|
+
"typedoc": "^0.28.17",
|
|
75
|
+
"typescript": "^5.9.3",
|
|
76
|
+
"vite": "^6.3.0",
|
|
77
|
+
"vitest": "^3.1.0"
|
|
78
|
+
},
|
|
79
|
+
"packageManager": "pnpm@10.22.0"
|
|
80
|
+
}
|