@kokimoki/app 1.7.2 → 1.8.1

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.
@@ -77,7 +77,7 @@ export declare class KokimokiClient<ClientContextT = any> extends KokimokiClient
77
77
  private sendUnsubscribeReq;
78
78
  join<T extends S.Generic<unknown>>(store: KokimokiStore<T>): Promise<void>;
79
79
  leave<T extends S.Generic<unknown>>(store: KokimokiStore<T>): Promise<void>;
80
- transact(handler: (t: KokimokiTransaction) => void | Promise<void>): Promise<void>;
80
+ transact<ReturnT = void>(handler: (t: KokimokiTransaction) => ReturnT | Promise<ReturnT>): Promise<ReturnT>;
81
81
  close(): Promise<void>;
82
82
  getRoomHash<T extends S.Generic<unknown>>(store: KokimokiStore<T>): number;
83
83
  /** Initializers */
@@ -93,7 +93,7 @@ export declare class KokimokiClient<ClientContextT = any> extends KokimokiClient
93
93
  * @param metadata
94
94
  * @returns
95
95
  */
96
- insertLeaderboardEntry<MetadataT, PrivateMetadataT>(leaderboardName: string, sortMethod: "asc" | "desc", score: number, metadata: MetadataT, privateMetadata: PrivateMetadataT): Promise<{
96
+ insertLeaderboardEntry<MetadataT, PrivateMetadataT>(leaderboardName: string, sortDir: "asc" | "desc", score: number, metadata: MetadataT, privateMetadata: PrivateMetadataT): Promise<{
97
97
  rank: number;
98
98
  }>;
99
99
  /**
@@ -104,7 +104,7 @@ export declare class KokimokiClient<ClientContextT = any> extends KokimokiClient
104
104
  * @param privateMetadata Can only be read using the leaderboard API
105
105
  * @returns
106
106
  */
107
- upsertLeaderboardEntry<MetadataT, PrivateMetadataT>(leaderboardName: string, sortMethod: "asc" | "desc", score: number, metadata: MetadataT, privateMetadata: PrivateMetadataT): Promise<{
107
+ upsertLeaderboardEntry<MetadataT, PrivateMetadataT>(leaderboardName: string, sortDir: "asc" | "desc", score: number, metadata: MetadataT, privateMetadata: PrivateMetadataT): Promise<{
108
108
  rank: number;
109
109
  }>;
110
110
  /**
@@ -114,9 +114,21 @@ export declare class KokimokiClient<ClientContextT = any> extends KokimokiClient
114
114
  * @param limit
115
115
  * @returns
116
116
  */
117
- listLeaderboardEntries<MetadataT>(leaderboardName: string, sortMethod: "asc" | "desc", skip?: number, limit?: number): Promise<Paginated<{
117
+ listLeaderboardEntries<MetadataT>(leaderboardName: string, sortDir: "asc" | "desc", skip?: number, limit?: number): Promise<Paginated<{
118
+ rank: number;
118
119
  score: number;
119
120
  metadata: MetadataT;
120
121
  }>>;
122
+ /**
123
+ * Get best entry in leaderboard for a client, defaults to current client
124
+ * @param leaderboardName
125
+ * @param sortDir
126
+ * @param clientId
127
+ */
128
+ getBestLeaderboardEntry<MetadataT>(leaderboardName: string, sortDir: "asc" | "desc", clientId?: string): Promise<{
129
+ rank: number;
130
+ score: number;
131
+ metadata: MetadataT;
132
+ }>;
121
133
  }
122
134
  export {};
@@ -481,10 +481,10 @@ export class KokimokiClient extends EventEmitter {
481
481
  // throw new Error("Client not connected");
482
482
  // }
483
483
  const transaction = new KokimokiTransaction(this);
484
- await handler(transaction);
484
+ const returnValue = await handler(transaction);
485
485
  const { updates, consumedMessages } = await transaction.getUpdates();
486
486
  if (!updates.length) {
487
- return;
487
+ return returnValue;
488
488
  }
489
489
  // Construct buffers
490
490
  const remoteUpdateWriter = new WsMessageWriter();
@@ -547,6 +547,7 @@ export class KokimokiClient extends EventEmitter {
547
547
  const reader = new WsMessageReader(localBuffer);
548
548
  this.handleRoomUpdateMessage(reader);
549
549
  }
550
+ return returnValue;
550
551
  }
551
552
  async close() {
552
553
  this._autoReconnect = false;
@@ -615,13 +616,13 @@ export class KokimokiClient extends EventEmitter {
615
616
  * @param metadata
616
617
  * @returns
617
618
  */
618
- async insertLeaderboardEntry(leaderboardName, sortMethod, score, metadata, privateMetadata) {
619
+ async insertLeaderboardEntry(leaderboardName, sortDir, score, metadata, privateMetadata) {
619
620
  const res = await fetch(`${this._apiUrl}/leaderboard-entries`, {
620
621
  method: "POST",
621
622
  headers: this.apiHeaders,
622
623
  body: JSON.stringify({
623
624
  leaderboardName,
624
- sortMethod,
625
+ sortDir,
625
626
  score,
626
627
  metadata,
627
628
  privateMetadata,
@@ -638,13 +639,13 @@ export class KokimokiClient extends EventEmitter {
638
639
  * @param privateMetadata Can only be read using the leaderboard API
639
640
  * @returns
640
641
  */
641
- async upsertLeaderboardEntry(leaderboardName, sortMethod, score, metadata, privateMetadata) {
642
+ async upsertLeaderboardEntry(leaderboardName, sortDir, score, metadata, privateMetadata) {
642
643
  const res = await fetch(`${this._apiUrl}/leaderboard-entries`, {
643
644
  method: "POST",
644
645
  headers: this.apiHeaders,
645
646
  body: JSON.stringify({
646
647
  leaderboardName,
647
- sortMethod,
648
+ sortDir,
648
649
  score,
649
650
  metadata,
650
651
  privateMetadata,
@@ -660,8 +661,18 @@ export class KokimokiClient extends EventEmitter {
660
661
  * @param limit
661
662
  * @returns
662
663
  */
663
- async listLeaderboardEntries(leaderboardName, sortMethod, skip = 0, limit = 100) {
664
- const res = await fetch(`${this._apiUrl}/leaderboard-entries?leaderboardName=${leaderboardName}&sortMethod=${sortMethod}&skip=${skip}&limit=${limit}`);
664
+ async listLeaderboardEntries(leaderboardName, sortDir, skip = 0, limit = 100) {
665
+ const res = await fetch(`${this._apiUrl}/leaderboard-entries?leaderboardName=${leaderboardName}&sortDir=${sortDir}&skip=${skip}&limit=${limit}`);
666
+ return await res.json();
667
+ }
668
+ /**
669
+ * Get best entry in leaderboard for a client, defaults to current client
670
+ * @param leaderboardName
671
+ * @param sortDir
672
+ * @param clientId
673
+ */
674
+ async getBestLeaderboardEntry(leaderboardName, sortDir, clientId) {
675
+ const res = await fetch(`${this._apiUrl}/leaderboard-entries/best?leaderboardName=${leaderboardName}&sortDir=${sortDir}&clientId=${clientId || this.id}`);
665
676
  return await res.json();
666
677
  }
667
678
  }
@@ -300,7 +300,7 @@ declare class KokimokiClient<ClientContextT = any> extends KokimokiClient_base {
300
300
  private sendUnsubscribeReq;
301
301
  join<T extends KokimokiSchema.Generic<unknown>>(store: KokimokiStore<T>): Promise<void>;
302
302
  leave<T extends KokimokiSchema.Generic<unknown>>(store: KokimokiStore<T>): Promise<void>;
303
- transact(handler: (t: KokimokiTransaction) => void | Promise<void>): Promise<void>;
303
+ transact<ReturnT = void>(handler: (t: KokimokiTransaction) => ReturnT | Promise<ReturnT>): Promise<ReturnT>;
304
304
  close(): Promise<void>;
305
305
  getRoomHash<T extends KokimokiSchema.Generic<unknown>>(store: KokimokiStore<T>): number;
306
306
  /** Initializers */
@@ -316,7 +316,7 @@ declare class KokimokiClient<ClientContextT = any> extends KokimokiClient_base {
316
316
  * @param metadata
317
317
  * @returns
318
318
  */
319
- insertLeaderboardEntry<MetadataT, PrivateMetadataT>(leaderboardName: string, sortMethod: "asc" | "desc", score: number, metadata: MetadataT, privateMetadata: PrivateMetadataT): Promise<{
319
+ insertLeaderboardEntry<MetadataT, PrivateMetadataT>(leaderboardName: string, sortDir: "asc" | "desc", score: number, metadata: MetadataT, privateMetadata: PrivateMetadataT): Promise<{
320
320
  rank: number;
321
321
  }>;
322
322
  /**
@@ -327,7 +327,7 @@ declare class KokimokiClient<ClientContextT = any> extends KokimokiClient_base {
327
327
  * @param privateMetadata Can only be read using the leaderboard API
328
328
  * @returns
329
329
  */
330
- upsertLeaderboardEntry<MetadataT, PrivateMetadataT>(leaderboardName: string, sortMethod: "asc" | "desc", score: number, metadata: MetadataT, privateMetadata: PrivateMetadataT): Promise<{
330
+ upsertLeaderboardEntry<MetadataT, PrivateMetadataT>(leaderboardName: string, sortDir: "asc" | "desc", score: number, metadata: MetadataT, privateMetadata: PrivateMetadataT): Promise<{
331
331
  rank: number;
332
332
  }>;
333
333
  /**
@@ -337,10 +337,22 @@ declare class KokimokiClient<ClientContextT = any> extends KokimokiClient_base {
337
337
  * @param limit
338
338
  * @returns
339
339
  */
340
- listLeaderboardEntries<MetadataT>(leaderboardName: string, sortMethod: "asc" | "desc", skip?: number, limit?: number): Promise<Paginated<{
340
+ listLeaderboardEntries<MetadataT>(leaderboardName: string, sortDir: "asc" | "desc", skip?: number, limit?: number): Promise<Paginated<{
341
+ rank: number;
341
342
  score: number;
342
343
  metadata: MetadataT;
343
344
  }>>;
345
+ /**
346
+ * Get best entry in leaderboard for a client, defaults to current client
347
+ * @param leaderboardName
348
+ * @param sortDir
349
+ * @param clientId
350
+ */
351
+ getBestLeaderboardEntry<MetadataT>(leaderboardName: string, sortDir: "asc" | "desc", clientId?: string): Promise<{
352
+ rank: number;
353
+ score: number;
354
+ metadata: MetadataT;
355
+ }>;
344
356
  }
345
357
 
346
358
  declare class RoomSubscription {
@@ -486,7 +486,7 @@ function eventTargetAgnosticAddListener(emitter, name, listener, flags) {
486
486
  var eventsExports = events.exports;
487
487
  var EventEmitter$1 = /*@__PURE__*/getDefaultExportFromCjs(eventsExports);
488
488
 
489
- const KOKIMOKI_APP_VERSION = "1.7.2";
489
+ const KOKIMOKI_APP_VERSION = "1.8.1";
490
490
 
491
491
  /**
492
492
  * Utility module to work with key-value stores.
@@ -15111,10 +15111,10 @@ class KokimokiClient extends EventEmitter$1 {
15111
15111
  // throw new Error("Client not connected");
15112
15112
  // }
15113
15113
  const transaction = new KokimokiTransaction(this);
15114
- await handler(transaction);
15114
+ const returnValue = await handler(transaction);
15115
15115
  const { updates, consumedMessages } = await transaction.getUpdates();
15116
15116
  if (!updates.length) {
15117
- return;
15117
+ return returnValue;
15118
15118
  }
15119
15119
  // Construct buffers
15120
15120
  const remoteUpdateWriter = new WsMessageWriter();
@@ -15177,6 +15177,7 @@ class KokimokiClient extends EventEmitter$1 {
15177
15177
  const reader = new WsMessageReader(localBuffer);
15178
15178
  this.handleRoomUpdateMessage(reader);
15179
15179
  }
15180
+ return returnValue;
15180
15181
  }
15181
15182
  async close() {
15182
15183
  this._autoReconnect = false;
@@ -15245,13 +15246,13 @@ class KokimokiClient extends EventEmitter$1 {
15245
15246
  * @param metadata
15246
15247
  * @returns
15247
15248
  */
15248
- async insertLeaderboardEntry(leaderboardName, sortMethod, score, metadata, privateMetadata) {
15249
+ async insertLeaderboardEntry(leaderboardName, sortDir, score, metadata, privateMetadata) {
15249
15250
  const res = await fetch(`${this._apiUrl}/leaderboard-entries`, {
15250
15251
  method: "POST",
15251
15252
  headers: this.apiHeaders,
15252
15253
  body: JSON.stringify({
15253
15254
  leaderboardName,
15254
- sortMethod,
15255
+ sortDir,
15255
15256
  score,
15256
15257
  metadata,
15257
15258
  privateMetadata,
@@ -15268,13 +15269,13 @@ class KokimokiClient extends EventEmitter$1 {
15268
15269
  * @param privateMetadata Can only be read using the leaderboard API
15269
15270
  * @returns
15270
15271
  */
15271
- async upsertLeaderboardEntry(leaderboardName, sortMethod, score, metadata, privateMetadata) {
15272
+ async upsertLeaderboardEntry(leaderboardName, sortDir, score, metadata, privateMetadata) {
15272
15273
  const res = await fetch(`${this._apiUrl}/leaderboard-entries`, {
15273
15274
  method: "POST",
15274
15275
  headers: this.apiHeaders,
15275
15276
  body: JSON.stringify({
15276
15277
  leaderboardName,
15277
- sortMethod,
15278
+ sortDir,
15278
15279
  score,
15279
15280
  metadata,
15280
15281
  privateMetadata,
@@ -15290,8 +15291,18 @@ class KokimokiClient extends EventEmitter$1 {
15290
15291
  * @param limit
15291
15292
  * @returns
15292
15293
  */
15293
- async listLeaderboardEntries(leaderboardName, sortMethod, skip = 0, limit = 100) {
15294
- const res = await fetch(`${this._apiUrl}/leaderboard-entries?leaderboardName=${leaderboardName}&sortMethod=${sortMethod}&skip=${skip}&limit=${limit}`);
15294
+ async listLeaderboardEntries(leaderboardName, sortDir, skip = 0, limit = 100) {
15295
+ const res = await fetch(`${this._apiUrl}/leaderboard-entries?leaderboardName=${leaderboardName}&sortDir=${sortDir}&skip=${skip}&limit=${limit}`);
15296
+ return await res.json();
15297
+ }
15298
+ /**
15299
+ * Get best entry in leaderboard for a client, defaults to current client
15300
+ * @param leaderboardName
15301
+ * @param sortDir
15302
+ * @param clientId
15303
+ */
15304
+ async getBestLeaderboardEntry(leaderboardName, sortDir, clientId) {
15305
+ const res = await fetch(`${this._apiUrl}/leaderboard-entries/best?leaderboardName=${leaderboardName}&sortDir=${sortDir}&clientId=${clientId || this.id}`);
15295
15306
  return await res.json();
15296
15307
  }
15297
15308
  }