@wavezfm/api 0.1.1 → 0.1.4

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.
@@ -1,11 +1,11 @@
1
- import type { ApiLike, InventoryResponse, StoreCatalogResponse, WalletBalance } from "../types";
1
+ import type { ApiLike, InventoryResponse, StoreCatalogResponse, WalletBalance } from "../types.js";
2
2
  export declare function createShopResource(api: ApiLike): {
3
- getCatalog(): Promise<import("..").ApiSuccessResponse<StoreCatalogResponse>>;
4
- getWallet(): Promise<import("..").ApiSuccessResponse<WalletBalance>>;
3
+ getCatalog(): Promise<import("../types.js").ApiSuccessResponse<StoreCatalogResponse>>;
4
+ getWallet(): Promise<import("../types.js").ApiSuccessResponse<WalletBalance>>;
5
5
  purchase(input: {
6
6
  itemId: string;
7
7
  idempotencyKey?: string;
8
- }): Promise<import("..").ApiSuccessResponse<Record<string, unknown>>>;
9
- equip(itemId: string): Promise<import("..").ApiSuccessResponse<Record<string, unknown>>>;
10
- getInventory(): Promise<import("..").ApiSuccessResponse<InventoryResponse>>;
8
+ }): Promise<import("../types.js").ApiSuccessResponse<Record<string, unknown>>>;
9
+ equip(itemId: string): Promise<import("../types.js").ApiSuccessResponse<Record<string, unknown>>>;
10
+ getInventory(): Promise<import("../types.js").ApiSuccessResponse<InventoryResponse>>;
11
11
  };
@@ -1,8 +1,8 @@
1
- import type { ApiLike, MediaSearchResult } from "../types";
1
+ import type { ApiLike, MediaSearchResult } from "../types.js";
2
2
  export declare function createSourceResource(api: ApiLike): {
3
- search(source: string, query: string, limit?: number): Promise<import("..").ApiSuccessResponse<MediaSearchResult[]>>;
4
- searchYouTube(query: string, limit?: number): Promise<import("..").ApiSuccessResponse<MediaSearchResult[]>>;
5
- searchSoundCloud(query: string, limit?: number): Promise<import("..").ApiSuccessResponse<MediaSearchResult[]>>;
3
+ search(source: string, query: string, limit?: number): Promise<import("../types.js").ApiSuccessResponse<MediaSearchResult[]>>;
4
+ searchYouTube(query: string, limit?: number): Promise<import("../types.js").ApiSuccessResponse<MediaSearchResult[]>>;
5
+ searchSoundCloud(query: string, limit?: number): Promise<import("../types.js").ApiSuccessResponse<MediaSearchResult[]>>;
6
6
  searchAll(query: string, limit?: number): Promise<{
7
7
  data: {
8
8
  youtube: MediaSearchResult[];
@@ -1,6 +1,6 @@
1
- import type { ApiLike, SystemPublicStats, SystemStatus } from "../types";
1
+ import type { ApiLike, SystemPublicStats, SystemStatus } from "../types.js";
2
2
  export declare function createSystemResource(api: ApiLike): {
3
- status(): Promise<import("..").ApiSuccessResponse<SystemStatus>>;
4
- publicStats(): Promise<import("..").ApiSuccessResponse<SystemPublicStats>>;
5
- health(): Promise<import("..").ApiSuccessResponse<Record<string, unknown>>>;
3
+ status(): Promise<import("../types.js").ApiSuccessResponse<SystemStatus>>;
4
+ publicStats(): Promise<import("../types.js").ApiSuccessResponse<SystemPublicStats>>;
5
+ health(): Promise<import("../types.js").ApiSuccessResponse<Record<string, unknown>>>;
6
6
  };
@@ -1,7 +1,7 @@
1
- import type { ApiLike, BadgeAssignment, UserProfile } from "../types";
1
+ import type { ApiLike, BadgeAssignment, UserProfile } from "../types.js";
2
2
  export declare function createUserResource(api: ApiLike): {
3
- getById(userId: string): Promise<import("..").ApiSuccessResponse<UserProfile>>;
4
- getByUsername(username: string): Promise<import("..").ApiSuccessResponse<UserProfile>>;
5
- getBadges(userId: string): Promise<import("..").ApiSuccessResponse<BadgeAssignment[]>>;
6
- listAllBadges(): Promise<import("..").ApiSuccessResponse<BadgeAssignment[]>>;
3
+ getById(userId: string): Promise<import("../types.js").ApiSuccessResponse<UserProfile>>;
4
+ getByUsername(username: string): Promise<import("../types.js").ApiSuccessResponse<UserProfile>>;
5
+ getBadges(userId: string): Promise<import("../types.js").ApiSuccessResponse<BadgeAssignment[]>>;
6
+ listAllBadges(): Promise<import("../types.js").ApiSuccessResponse<BadgeAssignment[]>>;
7
7
  };
package/dist/types.d.ts CHANGED
@@ -129,6 +129,74 @@ export interface RoomSummary {
129
129
  } | null;
130
130
  [key: string]: unknown;
131
131
  }
132
+ export interface RoomQueueUser {
133
+ internalId: string;
134
+ publicId?: number | null;
135
+ id?: number | null;
136
+ username: string;
137
+ displayName: string;
138
+ avatar?: string | null;
139
+ avatarId?: string | null;
140
+ role?: string | null;
141
+ platformRole?: string | null;
142
+ level?: number | null;
143
+ infiniteLevel?: boolean;
144
+ bot?: boolean;
145
+ [key: string]: unknown;
146
+ }
147
+ export interface RoomQueueEntry extends RoomQueueUser {
148
+ index: number;
149
+ position: number;
150
+ isCurrentDj: boolean;
151
+ estimatedWaitSeconds: number | null;
152
+ estimatedWaitMinutes: number | null;
153
+ trackDurationSeconds: number | null;
154
+ }
155
+ export interface RoomQueueViewerStatus {
156
+ internalId?: string | null;
157
+ publicId?: number | null;
158
+ isQueued: boolean;
159
+ isCurrentDj: boolean;
160
+ index: number | null;
161
+ position: number | null;
162
+ estimatedWaitSeconds: number | null;
163
+ estimatedWaitMinutes: number | null;
164
+ [key: string]: unknown;
165
+ }
166
+ export interface RoomQueuePlayback {
167
+ trackId?: string | null;
168
+ source?: string | null;
169
+ sourceId?: string | null;
170
+ title?: string | null;
171
+ artist?: string | null;
172
+ currentDjId?: string | null;
173
+ currentDjUsername?: string | null;
174
+ paused: boolean;
175
+ durationSeconds: number | null;
176
+ remainingSeconds: number | null;
177
+ [key: string]: unknown;
178
+ }
179
+ export interface RoomQueueSnapshot {
180
+ roomId?: string | null;
181
+ roomSlug?: string | null;
182
+ count: number;
183
+ locked: boolean;
184
+ cycleEnabled: boolean;
185
+ entries: RoomQueueEntry[];
186
+ waitlist: RoomQueueEntry[];
187
+ queueUserIds: string[];
188
+ waitlistIds: string[];
189
+ currentDj: RoomQueueUser | null;
190
+ viewer: RoomQueueViewerStatus | null;
191
+ playback: RoomQueuePlayback | null;
192
+ queueTrackDurationsSeconds: Record<string, number>;
193
+ [key: string]: unknown;
194
+ }
195
+ export interface RoomQueueStatusResponse {
196
+ success?: boolean;
197
+ data: RoomQueueSnapshot;
198
+ [key: string]: unknown;
199
+ }
132
200
  export interface PlaylistSummary {
133
201
  id: string;
134
202
  name: string;
@@ -267,6 +335,13 @@ export interface RoomBotState {
267
335
  snapshot: Record<string, unknown>;
268
336
  customEmojis: unknown[];
269
337
  }
338
+ export interface RoomBotMessageReplyInput {
339
+ id: string;
340
+ }
341
+ export interface RoomBotSendMessageInput {
342
+ content: string;
343
+ replyTo?: RoomBotMessageReplyInput | null;
344
+ }
270
345
  export interface SystemPublicStats {
271
346
  rooms?: number;
272
347
  onlineUsers?: number;
@@ -367,6 +442,7 @@ export interface RoomBotRealtimeClient {
367
442
  joinRoom(roomId?: string): void;
368
443
  leaveRoom(roomId?: string): void;
369
444
  ping(): void;
445
+ sendChat(input: RoomBotSendMessageInput, requestId?: string): void;
370
446
  on(event: string, handler: (packet: WsPacket<Record<string, unknown>>) => void): () => void;
371
447
  off(event: string, handler: (packet: WsPacket<Record<string, unknown>>) => void): void;
372
448
  once(event: string, handler: (packet: WsPacket<Record<string, unknown>>) => void): () => void;
@@ -0,0 +1,5 @@
1
+ import type { RoomQueueSnapshot } from "../types.js";
2
+ export declare function parseRoomQueueSnapshot(input: unknown, options?: {
3
+ viewerUserId?: string | null;
4
+ viewerPublicId?: number | null;
5
+ }): RoomQueueSnapshot;
@@ -0,0 +1,354 @@
1
+ function asRecord(value) {
2
+ return typeof value === "object" && value !== null
3
+ ? value
4
+ : null;
5
+ }
6
+ function readString(value, fallback = "") {
7
+ return typeof value === "string" ? value : fallback;
8
+ }
9
+ function readNumber(value) {
10
+ return typeof value === "number" && Number.isFinite(value) ? value : null;
11
+ }
12
+ function readBoolean(value, fallback = false) {
13
+ return typeof value === "boolean" ? value : fallback;
14
+ }
15
+ function readRecordArray(value) {
16
+ if (!Array.isArray(value)) {
17
+ return [];
18
+ }
19
+ return value
20
+ .map((entry) => asRecord(entry))
21
+ .filter((entry) => Boolean(entry));
22
+ }
23
+ function readStringArray(value) {
24
+ if (!Array.isArray(value)) {
25
+ return [];
26
+ }
27
+ return value.filter((entry) => typeof entry === "string");
28
+ }
29
+ function readQueueDurationsSeconds(value) {
30
+ const record = asRecord(value);
31
+ if (!record) {
32
+ return {};
33
+ }
34
+ const output = {};
35
+ for (const [key, entry] of Object.entries(record)) {
36
+ const duration = readNumber(entry);
37
+ if (duration !== null && duration >= 0) {
38
+ output[key] = Math.max(0, Math.floor(duration));
39
+ }
40
+ }
41
+ return output;
42
+ }
43
+ function toMinutes(seconds) {
44
+ if (seconds === null) {
45
+ return null;
46
+ }
47
+ return Math.max(0, Math.ceil(seconds / 60));
48
+ }
49
+ function normalizeQueueUser(source, fallbackInternalId) {
50
+ const publicId = readNumber(source?.publicId ?? source?.id);
51
+ return {
52
+ internalId: readString(source?.internalId ?? source?.id, fallbackInternalId),
53
+ publicId,
54
+ id: publicId,
55
+ username: readString(source?.username, fallbackInternalId),
56
+ displayName: readString(source?.displayName ?? source?.username, readString(source?.username, fallbackInternalId)),
57
+ avatar: typeof source?.avatar === "string"
58
+ ? source.avatar
59
+ : null,
60
+ avatarId: typeof source?.avatarId === "string"
61
+ ? source.avatarId
62
+ : null,
63
+ role: typeof source?.role === "string"
64
+ ? source.role
65
+ : null,
66
+ platformRole: typeof source?.platformRole === "string"
67
+ ? source.platformRole
68
+ : null,
69
+ level: readNumber(source?.level),
70
+ infiniteLevel: readBoolean(source?.infiniteLevel),
71
+ bot: readBoolean(source?.bot),
72
+ };
73
+ }
74
+ function normalizePlayback(source) {
75
+ if (!source) {
76
+ return null;
77
+ }
78
+ const durationSeconds = readNumber(source.durationSeconds) ??
79
+ (() => {
80
+ const durationMs = readNumber(source.durationMs);
81
+ return durationMs === null ? null : Math.max(0, Math.floor(durationMs / 1000));
82
+ })();
83
+ const remainingSeconds = readNumber(source.remainingSeconds);
84
+ return {
85
+ trackId: typeof source.trackId === "string"
86
+ ? source.trackId
87
+ : null,
88
+ source: typeof source.source === "string"
89
+ ? source.source
90
+ : null,
91
+ sourceId: typeof source.sourceId === "string"
92
+ ? source.sourceId
93
+ : null,
94
+ title: typeof source.title === "string"
95
+ ? source.title
96
+ : null,
97
+ artist: typeof source.artist === "string"
98
+ ? source.artist
99
+ : null,
100
+ currentDjId: typeof source.currentDjId === "string"
101
+ ? source.currentDjId
102
+ : typeof source.djId === "string"
103
+ ? source.djId
104
+ : null,
105
+ currentDjUsername: typeof source.currentDjUsername === "string"
106
+ ? source.currentDjUsername
107
+ : typeof source.djUsername === "string"
108
+ ? source.djUsername
109
+ : null,
110
+ paused: readBoolean(source.paused),
111
+ durationSeconds,
112
+ remainingSeconds,
113
+ };
114
+ }
115
+ function deriveRemainingPlaybackSeconds(playback) {
116
+ if (!playback) {
117
+ return null;
118
+ }
119
+ const explicitRemainingSeconds = readNumber(playback.remainingSeconds);
120
+ if (explicitRemainingSeconds !== null) {
121
+ return Math.max(0, Math.floor(explicitRemainingSeconds));
122
+ }
123
+ const durationMs = readNumber(playback.durationMs);
124
+ if (durationMs === null || durationMs <= 0) {
125
+ return null;
126
+ }
127
+ const paused = readBoolean(playback.paused);
128
+ const pauseOffsetMs = Math.max(0, readNumber(playback.pauseOffsetMs) ?? 0);
129
+ const serverTimeMs = readNumber(playback.serverTimeMs) ?? Date.now();
130
+ const startedAtServerMs = readNumber(playback.startedAtServerMs) ?? serverTimeMs;
131
+ const elapsedMs = paused
132
+ ? pauseOffsetMs
133
+ : Math.max(0, serverTimeMs - startedAtServerMs);
134
+ return Math.max(0, Math.floor((durationMs - elapsedMs) / 1000));
135
+ }
136
+ function deriveViewerFromEntries(entries, currentDj, sourceViewer, options) {
137
+ if (sourceViewer) {
138
+ const index = readNumber(sourceViewer.index);
139
+ const position = readNumber(sourceViewer.position);
140
+ const estimatedWaitSeconds = readNumber(sourceViewer.estimatedWaitSeconds);
141
+ const publicId = readNumber(sourceViewer.publicId);
142
+ return {
143
+ internalId: typeof sourceViewer.internalId === "string"
144
+ ? sourceViewer.internalId
145
+ : null,
146
+ publicId,
147
+ isQueued: readBoolean(sourceViewer.isQueued),
148
+ isCurrentDj: readBoolean(sourceViewer.isCurrentDj),
149
+ index,
150
+ position,
151
+ estimatedWaitSeconds,
152
+ estimatedWaitMinutes: readNumber(sourceViewer.estimatedWaitMinutes) ??
153
+ toMinutes(estimatedWaitSeconds),
154
+ };
155
+ }
156
+ const match = entries.find((entry) => {
157
+ if (options?.viewerUserId && entry.internalId === options.viewerUserId) {
158
+ return true;
159
+ }
160
+ return (options?.viewerPublicId !== null &&
161
+ options?.viewerPublicId !== undefined &&
162
+ entry.publicId === options.viewerPublicId);
163
+ }) ?? null;
164
+ if (match) {
165
+ return {
166
+ internalId: match.internalId,
167
+ publicId: match.publicId ?? null,
168
+ isQueued: true,
169
+ isCurrentDj: match.isCurrentDj,
170
+ index: match.index,
171
+ position: match.position,
172
+ estimatedWaitSeconds: match.estimatedWaitSeconds,
173
+ estimatedWaitMinutes: match.estimatedWaitMinutes,
174
+ };
175
+ }
176
+ if (currentDj &&
177
+ ((options?.viewerUserId && currentDj.internalId === options.viewerUserId) ||
178
+ (options?.viewerPublicId !== null &&
179
+ options?.viewerPublicId !== undefined &&
180
+ currentDj.publicId === options.viewerPublicId))) {
181
+ return {
182
+ internalId: currentDj.internalId,
183
+ publicId: currentDj.publicId ?? null,
184
+ isQueued: false,
185
+ isCurrentDj: true,
186
+ index: null,
187
+ position: null,
188
+ estimatedWaitSeconds: 0,
189
+ estimatedWaitMinutes: 0,
190
+ };
191
+ }
192
+ return null;
193
+ }
194
+ function normalizeFromRichPayload(payload, options) {
195
+ const rawEntries = readRecordArray(payload.entries ?? payload.waitlist);
196
+ const entries = rawEntries.map((entry, index) => {
197
+ const normalizedUser = normalizeQueueUser(entry, readString(entry.internalId, `queue-user-${index}`));
198
+ const normalizedIndex = readNumber(entry.index) ?? index;
199
+ const position = readNumber(entry.position) ?? normalizedIndex + 1;
200
+ const estimatedWaitSeconds = readNumber(entry.estimatedWaitSeconds);
201
+ const trackDurationSeconds = readNumber(entry.trackDurationSeconds);
202
+ return {
203
+ ...normalizedUser,
204
+ index: normalizedIndex,
205
+ position,
206
+ isCurrentDj: readBoolean(entry.isCurrentDj),
207
+ estimatedWaitSeconds,
208
+ estimatedWaitMinutes: readNumber(entry.estimatedWaitMinutes) ??
209
+ toMinutes(estimatedWaitSeconds),
210
+ trackDurationSeconds,
211
+ };
212
+ });
213
+ const currentDj = normalizeQueueUser(asRecord(payload.currentDj), "");
214
+ const normalizedCurrentDj = currentDj.internalId.trim().length > 0 ? currentDj : null;
215
+ const queueUserIds = readStringArray(payload.queueUserIds).length > 0
216
+ ? readStringArray(payload.queueUserIds)
217
+ : readStringArray(payload.waitlistIds).length > 0
218
+ ? readStringArray(payload.waitlistIds)
219
+ : entries.map((entry) => entry.internalId);
220
+ const queueTrackDurationsSeconds = readQueueDurationsSeconds(payload.queueTrackDurationsSeconds);
221
+ const playback = normalizePlayback(asRecord(payload.playback));
222
+ const viewer = deriveViewerFromEntries(entries, normalizedCurrentDj, asRecord(payload.viewer), options);
223
+ return {
224
+ roomId: typeof payload.roomId === "string"
225
+ ? payload.roomId
226
+ : null,
227
+ roomSlug: typeof payload.roomSlug === "string"
228
+ ? payload.roomSlug
229
+ : typeof payload.slug === "string"
230
+ ? payload.slug
231
+ : null,
232
+ count: readNumber(payload.count) ?? entries.length,
233
+ locked: readBoolean(payload.locked),
234
+ cycleEnabled: readBoolean(payload.cycleEnabled ?? payload.cycleWaitlist),
235
+ entries,
236
+ waitlist: entries,
237
+ queueUserIds,
238
+ waitlistIds: readStringArray(payload.waitlistIds).length > 0
239
+ ? readStringArray(payload.waitlistIds)
240
+ : queueUserIds,
241
+ currentDj: normalizedCurrentDj,
242
+ viewer,
243
+ playback,
244
+ queueTrackDurationsSeconds,
245
+ };
246
+ }
247
+ function normalizeFromSnapshotPayload(payload, options) {
248
+ const queueUserIds = readStringArray(payload.queue);
249
+ const snapshotUsers = readRecordArray(payload.users);
250
+ const snapshotUsersById = new Map(snapshotUsers
251
+ .map((entry) => [readString(entry.id), entry])
252
+ .filter(([userId]) => userId.length > 0));
253
+ const playbackRecord = asRecord(payload.playback);
254
+ const playback = normalizePlayback(playbackRecord);
255
+ const normalizedPlayback = playback
256
+ ? {
257
+ ...playback,
258
+ remainingSeconds: playback.remainingSeconds ??
259
+ deriveRemainingPlaybackSeconds(playbackRecord),
260
+ }
261
+ : null;
262
+ const currentDjId = playback?.currentDjId ??
263
+ (typeof playbackRecord?.djId === "string" ? playbackRecord.djId : null);
264
+ const currentDj = currentDjId && snapshotUsersById.has(currentDjId)
265
+ ? normalizeQueueUser(snapshotUsersById.get(currentDjId) ?? null, currentDjId)
266
+ : currentDjId
267
+ ? {
268
+ internalId: currentDjId,
269
+ publicId: null,
270
+ id: null,
271
+ username: typeof playback?.currentDjUsername === "string"
272
+ ? playback.currentDjUsername
273
+ : currentDjId,
274
+ displayName: typeof playback?.currentDjUsername === "string"
275
+ ? playback.currentDjUsername
276
+ : currentDjId,
277
+ avatar: null,
278
+ avatarId: null,
279
+ role: null,
280
+ platformRole: null,
281
+ level: null,
282
+ infiniteLevel: false,
283
+ bot: false,
284
+ }
285
+ : null;
286
+ const queueTrackDurationsSeconds = readQueueDurationsSeconds((() => {
287
+ const rawDurations = asRecord(payload.queueTrackDurationsSeconds);
288
+ if (rawDurations) {
289
+ return rawDurations;
290
+ }
291
+ const rawDurationsMs = asRecord(payload.queueTrackDurationsMs);
292
+ if (!rawDurationsMs) {
293
+ return null;
294
+ }
295
+ const nextDurations = {};
296
+ for (const [userId, durationMs] of Object.entries(rawDurationsMs)) {
297
+ const numericDurationMs = readNumber(durationMs);
298
+ if (numericDurationMs !== null && numericDurationMs >= 0) {
299
+ nextDurations[userId] = Math.max(0, Math.floor(numericDurationMs / 1000));
300
+ }
301
+ }
302
+ return nextDurations;
303
+ })());
304
+ const initialCarrySeconds = currentDjId ? deriveRemainingPlaybackSeconds(playbackRecord) ?? 0 : 0;
305
+ let rollingWaitSeconds = initialCarrySeconds;
306
+ const entries = queueUserIds.map((userId, index) => {
307
+ const user = normalizeQueueUser(snapshotUsersById.get(userId) ?? null, userId);
308
+ const isCurrentDj = currentDjId === userId;
309
+ const estimatedWaitSeconds = isCurrentDj ? 0 : rollingWaitSeconds;
310
+ const trackDurationSeconds = queueTrackDurationsSeconds[userId] ?? null;
311
+ if (!isCurrentDj && trackDurationSeconds !== null) {
312
+ rollingWaitSeconds += trackDurationSeconds;
313
+ }
314
+ return {
315
+ ...user,
316
+ index,
317
+ position: index + 1,
318
+ isCurrentDj,
319
+ estimatedWaitSeconds,
320
+ estimatedWaitMinutes: toMinutes(estimatedWaitSeconds),
321
+ trackDurationSeconds,
322
+ };
323
+ });
324
+ return {
325
+ roomId: typeof payload.roomId === "string"
326
+ ? payload.roomId
327
+ : null,
328
+ roomSlug: typeof payload.roomSlug === "string"
329
+ ? payload.roomSlug
330
+ : typeof payload.slug === "string"
331
+ ? payload.slug
332
+ : null,
333
+ count: queueUserIds.length,
334
+ locked: readBoolean(payload.queueLocked ?? payload.locked),
335
+ cycleEnabled: readBoolean(payload.cycleWaitlist ?? payload.cycleEnabled),
336
+ entries,
337
+ waitlist: entries,
338
+ queueUserIds,
339
+ waitlistIds: queueUserIds,
340
+ currentDj,
341
+ viewer: deriveViewerFromEntries(entries, currentDj, null, options),
342
+ playback: normalizedPlayback,
343
+ queueTrackDurationsSeconds,
344
+ };
345
+ }
346
+ export function parseRoomQueueSnapshot(input, options) {
347
+ const root = asRecord(input);
348
+ const payload = asRecord(root?.data) ?? root ?? {};
349
+ if (Array.isArray(payload.entries) || Array.isArray(payload.waitlist)) {
350
+ return normalizeFromRichPayload(payload, options);
351
+ }
352
+ return normalizeFromSnapshotPayload(payload, options);
353
+ }
354
+ //# sourceMappingURL=roomQueue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roomQueue.js","sourceRoot":"","sources":["../../src/utils/roomQueue.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@wavezfm/api",
3
- "version": "0.1.1",
4
- "description": "Official JavaScript/TypeScript API client for Wavez.",
3
+ "version": "0.1.4",
4
+ "description": "Official JavaScript/TypeScript API client for WavezFM.",
5
5
  "type": "module",
6
6
  "license": "MIT",
7
7
  "sideEffects": false,
@@ -88,7 +88,7 @@
88
88
  }
89
89
  },
90
90
  "keywords": [
91
- "wavez",
91
+ "wavezfm",
92
92
  "api",
93
93
  "sdk",
94
94
  "typescript",