@crowdedkingdoms/crowdyjs 18.5.0-dev.1 → 18.6.0-dev.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.
- package/MIGRATION.md +29 -0
- package/README.md +1 -0
- package/dist/crowdy-client.d.ts +3 -0
- package/dist/crowdy-client.d.ts.map +1 -1
- package/dist/crowdy-client.js +2 -0
- package/dist/domains/apps.d.ts +7 -1
- package/dist/domains/apps.d.ts.map +1 -1
- package/dist/domains/apps.js +7 -1
- package/dist/domains/inputLog.d.ts +74 -0
- package/dist/domains/inputLog.d.ts.map +1 -0
- package/dist/domains/inputLog.js +74 -0
- package/dist/generated/graphql-schema.d.ts +416 -1
- package/dist/generated/graphql-schema.d.ts.map +1 -1
- package/dist/generated/graphql-schema.js +27 -0
- package/dist/generated/graphql.d.ts +79 -0
- package/dist/generated/graphql.d.ts.map +1 -1
- package/dist/generated/graphql.js +8 -6
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/package.json +1 -1
package/MIGRATION.md
CHANGED
|
@@ -120,6 +120,35 @@ super-admin's session). There is no SDK replacement.
|
|
|
120
120
|
`dev`'s SDL after #417 merged (`npm run schema:sync:paths -- --schema <that schema.gql>`, then
|
|
121
121
|
`npm run codegen`).
|
|
122
122
|
|
|
123
|
+
## 18.6.0: the input log
|
|
124
|
+
|
|
125
|
+
Additive. An app with replay logging on has its client inputs recorded, and `client.inputLog`
|
|
126
|
+
reads them back on the app-scoped client:
|
|
127
|
+
|
|
128
|
+
```ts
|
|
129
|
+
const { edges, pageInfo } = await game.inputLog.sessions(appId, { first: 20 });
|
|
130
|
+
let after: string | undefined;
|
|
131
|
+
do {
|
|
132
|
+
const page = await game.inputLog.messages(appId, edges[0].node.gameTokenId, { first: 200, after });
|
|
133
|
+
for (const { node } of page.edges) handle(node.messageType, decodeBase64(node.body));
|
|
134
|
+
after = page.pageInfo.endCursor ?? undefined;
|
|
135
|
+
if (!page.pageInfo.hasNextPage) break;
|
|
136
|
+
} while (after);
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
A player reads only the sessions and inputs they sent; a holder of `manage_apps` on the app reads
|
|
140
|
+
every session. Keep paging while `hasNextPage` is true: a messages page can be short, or empty,
|
|
141
|
+
when it stopped at the server's time or scan limit. Inputs are kept for the published retention,
|
|
142
|
+
so an old session can still be listed after its inputs are gone. Both calls throw
|
|
143
|
+
`INPUT_LOG_UNAVAILABLE` on a deployment without input logging, and `messages` throws it, retryable
|
|
144
|
+
with the same cursor, when the log cannot be read right now.
|
|
145
|
+
|
|
146
|
+
`App.replayLoggingEnabled` is selected on every app read and set with `apps.update(appId,
|
|
147
|
+
{ replayLoggingEnabled: true })` (`manage_apps`). Turning it on is refused with
|
|
148
|
+
`INPUT_LOG_FUNDS_NEEDED` unless the org's wallet has a spendable balance or the org is exempt from
|
|
149
|
+
billing, because stored input logs are billed (crowdedkingdoms.com/pricing). It needs ck-api with
|
|
150
|
+
the input log (`inputLogSessions`, `inputLogMessages`).
|
|
151
|
+
|
|
123
152
|
## 18.5.0: channel messages limited by distance
|
|
124
153
|
|
|
125
154
|
Additive. `client.udp.sendRangedChannelMessage(input)` publishes to a channel like
|
package/README.md
CHANGED
|
@@ -243,6 +243,7 @@ never told about, so a native refresh without it is a re-placement.
|
|
|
243
243
|
| `client.chunks`, `client.voxels`, `client.actors`, `client.avatars`, `client.state` | World data reads + writes: terrain/LODs, voxel edit + history/rollback, durable actors, avatars, per-user app state blobs. |
|
|
244
244
|
| `client.host` | Game-host election (`get`, `amIHost`) + actor liveness `heartbeat`. `amIHost` is UI convenience only — a hub decides host-only actions from its caller. |
|
|
245
245
|
| `client.teleport` | Teleport requests. |
|
|
246
|
+
| `client.inputLog` | The input log (18.6.0): `sessions(appId)` and `messages(appId, gameTokenId)` read the client inputs recorded for an app with replay logging on (`apps.update(appId, { replayLoggingEnabled: true })`). A player reads their own; `manage_apps` reads every session. Keep paging while `hasNextPage` is true. |
|
|
246
247
|
| `client.channels`, `client.teams` | Messaging channels and app-scoped player teams (membership + roles). |
|
|
247
248
|
| `client.exec` | **ck-exec:** an app's server code as hubs and spokes. `connect(appId, { nodeType, key })` opens a player's connection to an execution host; the `ExecConnection` it returns has `call`, `callRaw`, `subscribe`, `ping`, `onReconnect` and `close`, with MessagePack payloads, and it reconnects and renews subscriptions by itself. `starters` / `build` / `deploy` build and deploy an app (`manage_compute`); `logs`, `instances`, `versions`, `activateVersion` and `setEnabled` operate it; `mod*` are players' mods on grids they own, and `modClient*`, `gridClientMods`, `consentClientMod`, `trustAuthor`, `revokeClientModConsent` and `revokeAuthorTrust` their CLIENT halves. See [ck-exec](#ck-exec). |
|
|
248
249
|
| `client.playerWallet` | Player spend: balance, ledger, hourly charges, spend caps, card setup, auto-recharge. A ck-exec mod's compute is billed here, to its owner. |
|
package/dist/crowdy-client.d.ts
CHANGED
|
@@ -51,6 +51,7 @@ import { GameAppsAPI } from './domains/gameApps.js';
|
|
|
51
51
|
import { VoxelsAPI } from './domains/voxels.js';
|
|
52
52
|
import { ActorsAPI } from './domains/actors.js';
|
|
53
53
|
import { TeleportAPI } from './domains/teleport.js';
|
|
54
|
+
import { InputLogAPI } from './domains/inputLog.js';
|
|
54
55
|
import { StateAPI } from './domains/state.js';
|
|
55
56
|
import { ServerStatusAPI } from './domains/serverStatus.js';
|
|
56
57
|
import { ChannelsAPI } from './domains/channels.js';
|
|
@@ -267,6 +268,8 @@ export declare class CrowdyClient {
|
|
|
267
268
|
readonly actors: ActorsAPI;
|
|
268
269
|
/** Teleport: move an actor to a destination chunk/world. */
|
|
269
270
|
readonly teleport: TeleportAPI;
|
|
271
|
+
/** The input log: recorded client inputs of an app with replay logging on. */
|
|
272
|
+
readonly inputLog: InputLogAPI;
|
|
270
273
|
/** Per-user/per-app persisted state blobs. */
|
|
271
274
|
readonly state: StateAPI;
|
|
272
275
|
/** Server status + version discovery (UDP availability, version floors). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crowdy-client.d.ts","sourceRoot":"","sources":["../src/crowdy-client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"crowdy-client.d.ts","sourceRoot":"","sources":["../src/crowdy-client.ts"],"names":[],"mappings":"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"}
|
package/dist/crowdy-client.js
CHANGED
|
@@ -52,6 +52,7 @@ import { GameAppsAPI } from './domains/gameApps.js';
|
|
|
52
52
|
import { VoxelsAPI } from './domains/voxels.js';
|
|
53
53
|
import { ActorsAPI } from './domains/actors.js';
|
|
54
54
|
import { TeleportAPI } from './domains/teleport.js';
|
|
55
|
+
import { InputLogAPI } from './domains/inputLog.js';
|
|
55
56
|
import { StateAPI } from './domains/state.js';
|
|
56
57
|
import { ServerStatusAPI } from './domains/serverStatus.js';
|
|
57
58
|
import { ChannelsAPI } from './domains/channels.js';
|
|
@@ -203,6 +204,7 @@ export class CrowdyClient {
|
|
|
203
204
|
this.voxels = new VoxelsAPI(this.graphql);
|
|
204
205
|
this.actors = new ActorsAPI(this.graphql);
|
|
205
206
|
this.teleport = new TeleportAPI(this.graphql);
|
|
207
|
+
this.inputLog = new InputLogAPI(this.graphql);
|
|
206
208
|
this.state = new StateAPI(this.graphql);
|
|
207
209
|
this.serverStatus = new ServerStatusAPI(this.graphql);
|
|
208
210
|
this.channels = new ChannelsAPI(this.graphql);
|
package/dist/domains/apps.d.ts
CHANGED
|
@@ -218,11 +218,17 @@ export declare class AppsAPI {
|
|
|
218
218
|
* world grid covers): every voxel and chunk write there is refused with `FORBIDDEN`,
|
|
219
219
|
* whoever makes it, within 15 seconds on every game API replica. Apps start open.
|
|
220
220
|
*
|
|
221
|
+
* `replayLoggingEnabled: true` turns on replay logging: the realtime servers record
|
|
222
|
+
* every client input they accept for the app, readable with `client.inputLog` and
|
|
223
|
+
* billed as stored input logs (crowdedkingdoms.com/pricing). Apps start with it off
|
|
224
|
+
* ("No replication logging"), and recording stops shortly after it is turned off.
|
|
225
|
+
*
|
|
221
226
|
* @param appId - Numeric app id.
|
|
222
227
|
* @param input - {@link UpdateAppInput} fields to change.
|
|
223
228
|
* @returns The updated {@link App}.
|
|
224
229
|
* @throws {CrowdyGraphQLError} `FORBIDDEN`/`SCOPE_MISSING` without
|
|
225
|
-
* `manage_apps
|
|
230
|
+
* `manage_apps`, or `INPUT_LOG_FUNDS_NEEDED` when turning replay logging on for
|
|
231
|
+
* an org whose wallet has no spendable balance (a billing-exempt org needs none).
|
|
226
232
|
*/
|
|
227
233
|
update(appId: string, input: UpdateAppInput): Promise<UpdateAppMutation['updateApp']>;
|
|
228
234
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apps.d.ts","sourceRoot":"","sources":["../../src/domains/apps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAgBL,KAAK,QAAQ,EAEb,KAAK,cAAc,EAEnB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,6BAA6B,EAClC,KAAK,mBAAmB,EACxB,KAAK,4BAA4B,EACjC,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,yBAAyB,EAC9B,KAAK,sBAAsB,EAC3B,KAAK,+BAA+B,EACpC,KAAK,oBAAoB,EACzB,KAAK,8BAA8B,EACnC,KAAK,yBAAyB,EAE9B,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACvB,MAAM,yBAAyB,CAAC;AAEjC;;;;GAIG;AACH,MAAM,WAAW,QAAQ;IACvB,4DAA4D;IAC5D,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,SAAS,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC;;;;OAIG;IACH,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAgBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,qBAAa,OAAO;IACN,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,aAAa;IAE/C;;;OAGG;IACG,iBAAiB,CACrB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,yBAAyB,CAAC,sBAAsB,CAAC,CAAC;IAO7D;;;;OAIG;IACG,cAAc,CAClB,KAAK,EAAE,MAAM,EACb,cAAc,UAAQ,GACrB,OAAO,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,CAAC;IAYvD;;;;OAIG;IACG,oBAAoB,CACxB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,+BAA+B,CAAC,yBAAyB,CAAC,CAAC;IAQtE;;;OAGG;IACG,SAAS,CACb,KAAK,EAAE,iBAAiB,GACvB,OAAO,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;IAKhD;;;OAGG;IACG,mBAAmB,CACvB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,8BAA8B,CAAC,wBAAwB,CAAC,CAAC;IAQpE;;;;;;;;;OASG;IACG,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAQlD;;;;;;;;;;;;OAYG;IACG,SAAS,CACb,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IAQvC;;;;;;;;OAQG;IACG,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAQ9C;;;;;;;;;;;;;OAaG;IACG,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAYhD;;;;;;;OAOG;IACG,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;IAKrE;;;;;;;;;OASG;IACG,WAAW,CACf,IAAI,GAAE;QACJ,MAAM,CAAC,EAAE,6BAA6B,CAAC,QAAQ,CAAC,CAAC;QACjD,KAAK,CAAC,EAAE,6BAA6B,CAAC,OAAO,CAAC,CAAC;QAC/C,MAAM,CAAC,EAAE,6BAA6B,CAAC,QAAQ,CAAC,CAAC;KAC7C,GACL,OAAO,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAKxC;;;;;;;OAOG;IACG,qBAAqB,CACzB,IAAI,GAAE,4BAAiC,GACtC,OAAO,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;IAKjD;;;;;;;;;;;;;;;;;;;;;OAqBG;IACG,oBAAoB,IAAI,OAAO,CACnC,yBAAyB,CAAC,sBAAsB,CAAC,CAClD;IAKD;;;;;;;;;;;;;;OAcG;IACG,MAAM,CACV,KAAK,EAAE,cAAc,GACpB,OAAO,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAK1C
|
|
1
|
+
{"version":3,"file":"apps.d.ts","sourceRoot":"","sources":["../../src/domains/apps.ts"],"names":[],"mappings":"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"}
|
package/dist/domains/apps.js
CHANGED
|
@@ -256,11 +256,17 @@ export class AppsAPI {
|
|
|
256
256
|
* world grid covers): every voxel and chunk write there is refused with `FORBIDDEN`,
|
|
257
257
|
* whoever makes it, within 15 seconds on every game API replica. Apps start open.
|
|
258
258
|
*
|
|
259
|
+
* `replayLoggingEnabled: true` turns on replay logging: the realtime servers record
|
|
260
|
+
* every client input they accept for the app, readable with `client.inputLog` and
|
|
261
|
+
* billed as stored input logs (crowdedkingdoms.com/pricing). Apps start with it off
|
|
262
|
+
* ("No replication logging"), and recording stops shortly after it is turned off.
|
|
263
|
+
*
|
|
259
264
|
* @param appId - Numeric app id.
|
|
260
265
|
* @param input - {@link UpdateAppInput} fields to change.
|
|
261
266
|
* @returns The updated {@link App}.
|
|
262
267
|
* @throws {CrowdyGraphQLError} `FORBIDDEN`/`SCOPE_MISSING` without
|
|
263
|
-
* `manage_apps
|
|
268
|
+
* `manage_apps`, or `INPUT_LOG_FUNDS_NEEDED` when turning replay logging on for
|
|
269
|
+
* an org whose wallet has no spendable balance (a billing-exempt org needs none).
|
|
264
270
|
*/
|
|
265
271
|
async update(appId, input) {
|
|
266
272
|
const data = await this.api.request(UpdateAppDocument, {
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import type { GraphQLClient } from '../client.js';
|
|
2
|
+
import { type InputLogMessageFilter, type InputLogMessagesQuery, type InputLogSessionFilter, type InputLogSessionsQuery } from '../generated/graphql.js';
|
|
3
|
+
/** One page of {@link InputLogAPI.sessions}. */
|
|
4
|
+
export type InputLogSessionPage = InputLogSessionsQuery['inputLogSessions'];
|
|
5
|
+
/** One recorded session, as {@link InputLogAPI.sessions} returns it. */
|
|
6
|
+
export type InputLogSessionRecord = InputLogSessionPage['edges'][number]['node'];
|
|
7
|
+
/** One page of {@link InputLogAPI.messages}. */
|
|
8
|
+
export type InputLogMessagePage = InputLogMessagesQuery['inputLogMessages'];
|
|
9
|
+
/** One recorded input, as {@link InputLogAPI.messages} returns it. */
|
|
10
|
+
export type InputLogMessageRecord = InputLogMessagePage['edges'][number]['node'];
|
|
11
|
+
/** Paging and filters for {@link InputLogAPI.sessions} and {@link InputLogAPI.messages}. */
|
|
12
|
+
export interface InputLogPageOptions<Filter> {
|
|
13
|
+
/** Page size. The server defaults to 50 and clamps to 1..200. */
|
|
14
|
+
first?: number;
|
|
15
|
+
/** A previous page's `pageInfo.endCursor`; omit for the first page. */
|
|
16
|
+
after?: string;
|
|
17
|
+
filter?: Filter;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* The input log: the client inputs the realtime servers recorded for an app with
|
|
21
|
+
* replay logging on (`App.replayLoggingEnabled`, set with {@link AppsAPI.update}).
|
|
22
|
+
* Exposed as `client.inputLog`.
|
|
23
|
+
*
|
|
24
|
+
* **Game plane.** Call it on the app-scoped client for the app (`portal.mintAppToken`
|
|
25
|
+
* or hosted sign-in). An identity session token is refused, and the client follows
|
|
26
|
+
* the app to its datacenter like any gameplay call.
|
|
27
|
+
*
|
|
28
|
+
* **Who sees what.** A player reads only the sessions and inputs they sent. A holder of
|
|
29
|
+
* `manage_apps` on the app reads every session and may filter by `userId`.
|
|
30
|
+
*
|
|
31
|
+
* Inputs are kept for the input log's published retention (crowdedkingdoms.com/pricing)
|
|
32
|
+
* and then deleted, so an old session can still be listed after its inputs are gone.
|
|
33
|
+
* Without input logging on the deployment, both calls throw
|
|
34
|
+
* {@link CrowdyGraphQLError} `INPUT_LOG_UNAVAILABLE`; `messages` also throws it, retryable
|
|
35
|
+
* with the same cursor, when the log cannot be read right now.
|
|
36
|
+
*/
|
|
37
|
+
export declare class InputLogAPI {
|
|
38
|
+
private gql;
|
|
39
|
+
constructor(gql: GraphQLClient);
|
|
40
|
+
/**
|
|
41
|
+
* Recorded sessions of an app, newest first. A session is one game token's inputs.
|
|
42
|
+
*
|
|
43
|
+
* @param appId - Numeric app id.
|
|
44
|
+
* @param opts - Paging, and {@link InputLogSessionFilter}: `userId` (another user's
|
|
45
|
+
* needs `manage_apps`), `from` / `to`, and `messageType` (sessions containing it).
|
|
46
|
+
* @returns One page: `edges[].node` are the sessions, `pageInfo.endCursor` the next
|
|
47
|
+
* page's `after`, `totalCount` the matching sessions.
|
|
48
|
+
* @throws {CrowdyGraphQLError} `FORBIDDEN` for another user's sessions without
|
|
49
|
+
* `manage_apps`, or `INPUT_LOG_UNAVAILABLE`.
|
|
50
|
+
*/
|
|
51
|
+
sessions(appId: string, opts?: InputLogPageOptions<InputLogSessionFilter>): Promise<InputLogSessionPage>;
|
|
52
|
+
/**
|
|
53
|
+
* The recorded inputs of one session, oldest first, each as the client sent it.
|
|
54
|
+
*
|
|
55
|
+
* `body` is the message in base64, from its type byte up to its authentication tail,
|
|
56
|
+
* which is not recorded (`decodeBase64` gives the bytes). `sizeBytes` is what stored
|
|
57
|
+
* input logs are billed on. Spatial inputs also carry their chunk and actor, and
|
|
58
|
+
* channel inputs their channel.
|
|
59
|
+
*
|
|
60
|
+
* **Keep paging while `pageInfo.hasNextPage` is true.** A page can hold fewer than
|
|
61
|
+
* `first` inputs, or none, when it reached the server's time or scan limit.
|
|
62
|
+
*
|
|
63
|
+
* @param appId - Numeric app id.
|
|
64
|
+
* @param gameTokenId - The session: {@link InputLogSessionRecord.gameTokenId}.
|
|
65
|
+
* @param opts - Paging, and {@link InputLogMessageFilter}: `from` / `to`, and
|
|
66
|
+
* `messageTypes` (at most 64).
|
|
67
|
+
* @returns One page of inputs.
|
|
68
|
+
* @throws {CrowdyGraphQLError} `NOT_FOUND` for a session that is not yours without
|
|
69
|
+
* `manage_apps`, `BAD_USER_INPUT` for a cursor from another session, or
|
|
70
|
+
* `INPUT_LOG_UNAVAILABLE`.
|
|
71
|
+
*/
|
|
72
|
+
messages(appId: string, gameTokenId: string, opts?: InputLogPageOptions<InputLogMessageFilter>): Promise<InputLogMessagePage>;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=inputLog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inputLog.d.ts","sourceRoot":"","sources":["../../src/domains/inputLog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,OAAO,EAGL,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC3B,MAAM,yBAAyB,CAAC;AAEjC,gDAAgD;AAChD,MAAM,MAAM,mBAAmB,GAAG,qBAAqB,CAAC,kBAAkB,CAAC,CAAC;AAC5E,wEAAwE;AACxE,MAAM,MAAM,qBAAqB,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC;AACjF,gDAAgD;AAChD,MAAM,MAAM,mBAAmB,GAAG,qBAAqB,CAAC,kBAAkB,CAAC,CAAC;AAC5E,sEAAsE;AACtE,MAAM,MAAM,qBAAqB,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjF,4FAA4F;AAC5F,MAAM,WAAW,mBAAmB,CAAC,MAAM;IACzC,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,WAAW;IACV,OAAO,CAAC,GAAG;gBAAH,GAAG,EAAE,aAAa;IAEtC;;;;;;;;;;OAUG;IACG,QAAQ,CACZ,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,mBAAmB,CAAC,qBAAqB,CAAM,GACpD,OAAO,CAAC,mBAAmB,CAAC;IAU/B;;;;;;;;;;;;;;;;;;;OAmBG;IACG,QAAQ,CACZ,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,IAAI,GAAE,mBAAmB,CAAC,qBAAqB,CAAM,GACpD,OAAO,CAAC,mBAAmB,CAAC;CAUhC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { InputLogMessagesDocument, InputLogSessionsDocument, } from '../generated/graphql.js';
|
|
2
|
+
/**
|
|
3
|
+
* The input log: the client inputs the realtime servers recorded for an app with
|
|
4
|
+
* replay logging on (`App.replayLoggingEnabled`, set with {@link AppsAPI.update}).
|
|
5
|
+
* Exposed as `client.inputLog`.
|
|
6
|
+
*
|
|
7
|
+
* **Game plane.** Call it on the app-scoped client for the app (`portal.mintAppToken`
|
|
8
|
+
* or hosted sign-in). An identity session token is refused, and the client follows
|
|
9
|
+
* the app to its datacenter like any gameplay call.
|
|
10
|
+
*
|
|
11
|
+
* **Who sees what.** A player reads only the sessions and inputs they sent. A holder of
|
|
12
|
+
* `manage_apps` on the app reads every session and may filter by `userId`.
|
|
13
|
+
*
|
|
14
|
+
* Inputs are kept for the input log's published retention (crowdedkingdoms.com/pricing)
|
|
15
|
+
* and then deleted, so an old session can still be listed after its inputs are gone.
|
|
16
|
+
* Without input logging on the deployment, both calls throw
|
|
17
|
+
* {@link CrowdyGraphQLError} `INPUT_LOG_UNAVAILABLE`; `messages` also throws it, retryable
|
|
18
|
+
* with the same cursor, when the log cannot be read right now.
|
|
19
|
+
*/
|
|
20
|
+
export class InputLogAPI {
|
|
21
|
+
constructor(gql) {
|
|
22
|
+
this.gql = gql;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Recorded sessions of an app, newest first. A session is one game token's inputs.
|
|
26
|
+
*
|
|
27
|
+
* @param appId - Numeric app id.
|
|
28
|
+
* @param opts - Paging, and {@link InputLogSessionFilter}: `userId` (another user's
|
|
29
|
+
* needs `manage_apps`), `from` / `to`, and `messageType` (sessions containing it).
|
|
30
|
+
* @returns One page: `edges[].node` are the sessions, `pageInfo.endCursor` the next
|
|
31
|
+
* page's `after`, `totalCount` the matching sessions.
|
|
32
|
+
* @throws {CrowdyGraphQLError} `FORBIDDEN` for another user's sessions without
|
|
33
|
+
* `manage_apps`, or `INPUT_LOG_UNAVAILABLE`.
|
|
34
|
+
*/
|
|
35
|
+
async sessions(appId, opts = {}) {
|
|
36
|
+
const data = await this.gql.request(InputLogSessionsDocument, {
|
|
37
|
+
appId,
|
|
38
|
+
first: opts.first,
|
|
39
|
+
after: opts.after,
|
|
40
|
+
filter: opts.filter,
|
|
41
|
+
});
|
|
42
|
+
return data.inputLogSessions;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* The recorded inputs of one session, oldest first, each as the client sent it.
|
|
46
|
+
*
|
|
47
|
+
* `body` is the message in base64, from its type byte up to its authentication tail,
|
|
48
|
+
* which is not recorded (`decodeBase64` gives the bytes). `sizeBytes` is what stored
|
|
49
|
+
* input logs are billed on. Spatial inputs also carry their chunk and actor, and
|
|
50
|
+
* channel inputs their channel.
|
|
51
|
+
*
|
|
52
|
+
* **Keep paging while `pageInfo.hasNextPage` is true.** A page can hold fewer than
|
|
53
|
+
* `first` inputs, or none, when it reached the server's time or scan limit.
|
|
54
|
+
*
|
|
55
|
+
* @param appId - Numeric app id.
|
|
56
|
+
* @param gameTokenId - The session: {@link InputLogSessionRecord.gameTokenId}.
|
|
57
|
+
* @param opts - Paging, and {@link InputLogMessageFilter}: `from` / `to`, and
|
|
58
|
+
* `messageTypes` (at most 64).
|
|
59
|
+
* @returns One page of inputs.
|
|
60
|
+
* @throws {CrowdyGraphQLError} `NOT_FOUND` for a session that is not yours without
|
|
61
|
+
* `manage_apps`, `BAD_USER_INPUT` for a cursor from another session, or
|
|
62
|
+
* `INPUT_LOG_UNAVAILABLE`.
|
|
63
|
+
*/
|
|
64
|
+
async messages(appId, gameTokenId, opts = {}) {
|
|
65
|
+
const data = await this.gql.request(InputLogMessagesDocument, {
|
|
66
|
+
appId,
|
|
67
|
+
gameTokenId,
|
|
68
|
+
first: opts.first,
|
|
69
|
+
after: opts.after,
|
|
70
|
+
filter: opts.filter,
|
|
71
|
+
});
|
|
72
|
+
return data.inputLogMessages;
|
|
73
|
+
}
|
|
74
|
+
}
|