@crowdedkingdomstudios/crowdyjs 2.1.1 → 3.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.
Files changed (45) hide show
  1. package/MIGRATION.md +26 -0
  2. package/README.md +110 -772
  3. package/dist/auth-state.d.ts +6 -16
  4. package/dist/auth-state.d.ts.map +1 -1
  5. package/dist/auth-state.js +9 -26
  6. package/dist/client.d.ts +14 -5
  7. package/dist/client.d.ts.map +1 -1
  8. package/dist/client.js +22 -17
  9. package/dist/crowdy-client.d.ts +21 -3
  10. package/dist/crowdy-client.d.ts.map +1 -1
  11. package/dist/crowdy-client.js +37 -20
  12. package/dist/domains/serverStatus.d.ts +2 -1
  13. package/dist/domains/serverStatus.d.ts.map +1 -1
  14. package/dist/domains/serverStatus.js +5 -1
  15. package/dist/domains/udp.d.ts +19 -2
  16. package/dist/domains/udp.d.ts.map +1 -1
  17. package/dist/domains/udp.js +38 -0
  18. package/dist/errors.d.ts +42 -0
  19. package/dist/errors.d.ts.map +1 -0
  20. package/dist/errors.js +42 -0
  21. package/dist/generated/graphql.d.ts +404 -12
  22. package/dist/generated/graphql.d.ts.map +1 -1
  23. package/dist/generated/graphql.js +2 -0
  24. package/dist/index.d.ts +10 -6
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +8 -6
  27. package/dist/logger.d.ts +8 -0
  28. package/dist/logger.d.ts.map +1 -0
  29. package/dist/logger.js +1 -0
  30. package/dist/realtime.d.ts +86 -0
  31. package/dist/realtime.d.ts.map +1 -0
  32. package/dist/realtime.js +270 -0
  33. package/dist/session.d.ts +27 -0
  34. package/dist/session.d.ts.map +1 -0
  35. package/dist/session.js +61 -0
  36. package/dist/subscriptions.d.ts +1 -48
  37. package/dist/subscriptions.d.ts.map +1 -1
  38. package/dist/subscriptions.js +1 -192
  39. package/dist/utils.d.ts +12 -0
  40. package/dist/utils.d.ts.map +1 -0
  41. package/dist/utils.js +50 -0
  42. package/dist/world.d.ts +35 -0
  43. package/dist/world.d.ts.map +1 -0
  44. package/dist/world.js +88 -0
  45. package/package.json +13 -3
@@ -341,6 +341,148 @@ export type ChunksByDistanceResponse = {
341
341
  limit: Maybe<Scalars['Int']['output']>;
342
342
  skip: Maybe<Scalars['Int']['output']>;
343
343
  };
344
+ export type CksEnvironment = {
345
+ __typename?: 'CksEnvironment';
346
+ billingGraceDeadline: Maybe<Scalars['DateTime']['output']>;
347
+ billingStatus: Scalars['String']['output'];
348
+ createdAt: Scalars['DateTime']['output'];
349
+ databaseFlavor: Maybe<Scalars['String']['output']>;
350
+ desiredEnvironmentVersion: Maybe<Scalars['String']['output']>;
351
+ displayName: Scalars['String']['output'];
352
+ graphqlFlavor: Maybe<Scalars['String']['output']>;
353
+ id: Scalars['String']['output'];
354
+ observedEnvironmentVersion: Maybe<Scalars['String']['output']>;
355
+ orgId: Scalars['BigInt']['output'];
356
+ primaryCloud: Scalars['String']['output'];
357
+ primaryRegion: Scalars['String']['output'];
358
+ slug: Scalars['String']['output'];
359
+ status: Scalars['String']['output'];
360
+ subdomainHandle: Maybe<Scalars['String']['output']>;
361
+ suspendedAt: Maybe<Scalars['DateTime']['output']>;
362
+ udpBuddyFlavor: Maybe<Scalars['String']['output']>;
363
+ updatedAt: Scalars['DateTime']['output'];
364
+ };
365
+ export type CksEnvironmentAudit = {
366
+ __typename?: 'CksEnvironmentAudit';
367
+ action: Scalars['String']['output'];
368
+ createdAt: Scalars['DateTime']['output'];
369
+ environmentId: Scalars['String']['output'];
370
+ id: Scalars['String']['output'];
371
+ payloadJson: Maybe<Scalars['String']['output']>;
372
+ };
373
+ export type CksEnvironmentBillingResource = {
374
+ __typename?: 'CksEnvironmentBillingResource';
375
+ componentKind: Scalars['String']['output'];
376
+ customerHourlyPriceCents: Maybe<Scalars['BigInt']['output']>;
377
+ environmentId: Scalars['String']['output'];
378
+ flavorName: Maybe<Scalars['String']['output']>;
379
+ id: Scalars['String']['output'];
380
+ observedAt: Scalars['DateTime']['output'];
381
+ provider: Scalars['String']['output'];
382
+ region: Scalars['String']['output'];
383
+ resourceId: Scalars['String']['output'];
384
+ resourceName: Maybe<Scalars['String']['output']>;
385
+ status: Scalars['String']['output'];
386
+ };
387
+ export type CksEnvironmentChangeOrder = {
388
+ __typename?: 'CksEnvironmentChangeOrder';
389
+ claimedAt: Maybe<Scalars['DateTime']['output']>;
390
+ claimedBy: Maybe<Scalars['String']['output']>;
391
+ createdAt: Scalars['DateTime']['output'];
392
+ environmentId: Scalars['String']['output'];
393
+ error: Maybe<Scalars['String']['output']>;
394
+ finishedAt: Maybe<Scalars['DateTime']['output']>;
395
+ id: Scalars['String']['output'];
396
+ kind: Scalars['String']['output'];
397
+ payloadJson: Scalars['String']['output'];
398
+ requestedBy: Maybe<Scalars['BigInt']['output']>;
399
+ status: Scalars['String']['output'];
400
+ updatedAt: Scalars['DateTime']['output'];
401
+ };
402
+ export type CksEnvironmentComponent = {
403
+ __typename?: 'CksEnvironmentComponent';
404
+ desiredSpecJson: Maybe<Scalars['String']['output']>;
405
+ desiredVersion: Maybe<Scalars['String']['output']>;
406
+ environmentId: Scalars['String']['output'];
407
+ id: Scalars['String']['output'];
408
+ kind: Scalars['String']['output'];
409
+ lastObservedAt: Maybe<Scalars['DateTime']['output']>;
410
+ observedSpecJson: Maybe<Scalars['String']['output']>;
411
+ observedVersion: Maybe<Scalars['String']['output']>;
412
+ status: Maybe<Scalars['String']['output']>;
413
+ };
414
+ export type CksEnvironmentDetail = {
415
+ __typename?: 'CksEnvironmentDetail';
416
+ audit: Array<CksEnvironmentAudit>;
417
+ billingResources: Array<CksEnvironmentBillingResource>;
418
+ changeOrders: Array<CksEnvironmentChangeOrder>;
419
+ components: Array<CksEnvironmentComponent>;
420
+ environment: CksEnvironment;
421
+ outputs: Array<CksEnvironmentOutput>;
422
+ secrets: Array<CksEnvironmentSecretValue>;
423
+ };
424
+ export type CksEnvironmentOutput = {
425
+ __typename?: 'CksEnvironmentOutput';
426
+ componentKind: Scalars['String']['output'];
427
+ environmentId: Scalars['String']['output'];
428
+ id: Scalars['String']['output'];
429
+ label: Scalars['String']['output'];
430
+ name: Scalars['String']['output'];
431
+ value: Scalars['String']['output'];
432
+ valueKind: Scalars['String']['output'];
433
+ };
434
+ export type CksEnvironmentQuote = {
435
+ __typename?: 'CksEnvironmentQuote';
436
+ availableBalanceCents: Scalars['BigInt']['output'];
437
+ canCreate: Scalars['Boolean']['output'];
438
+ currency: Scalars['String']['output'];
439
+ databaseFlavor: Scalars['String']['output'];
440
+ datacenter: Scalars['String']['output'];
441
+ firstDayReserveCents: Scalars['BigInt']['output'];
442
+ graphqlFlavor: Scalars['String']['output'];
443
+ hourlyCostCents: Scalars['BigInt']['output'];
444
+ udpBuddyFlavor: Scalars['String']['output'];
445
+ walletBalanceCents: Scalars['BigInt']['output'];
446
+ };
447
+ export type CksEnvironmentSecretValue = {
448
+ __typename?: 'CksEnvironmentSecretValue';
449
+ createdAt: Scalars['DateTime']['output'];
450
+ environmentId: Scalars['String']['output'];
451
+ id: Scalars['String']['output'];
452
+ kind: Maybe<Scalars['String']['output']>;
453
+ name: Scalars['String']['output'];
454
+ sealedCiphertextBase64: Scalars['String']['output'];
455
+ updatedAt: Scalars['DateTime']['output'];
456
+ };
457
+ export type CksEnvironmentVersion = {
458
+ __typename?: 'CksEnvironmentVersion';
459
+ notes: Maybe<Scalars['String']['output']>;
460
+ releasedAt: Scalars['DateTime']['output'];
461
+ status: Scalars['String']['output'];
462
+ version: Scalars['String']['output'];
463
+ };
464
+ export type CksOvhDatacenter = {
465
+ __typename?: 'CksOvhDatacenter';
466
+ continent: Maybe<Scalars['String']['output']>;
467
+ isAvailable: Scalars['Boolean']['output'];
468
+ name: Maybe<Scalars['String']['output']>;
469
+ region: Scalars['String']['output'];
470
+ status: Scalars['String']['output'];
471
+ syncedAt: Scalars['DateTime']['output'];
472
+ };
473
+ export type CksOvhFlavor = {
474
+ __typename?: 'CksOvhFlavor';
475
+ currency: Scalars['String']['output'];
476
+ customerHourlyPriceCents: Maybe<Scalars['BigInt']['output']>;
477
+ diskGb: Maybe<Scalars['Int']['output']>;
478
+ flavorName: Scalars['String']['output'];
479
+ flavorType: Maybe<Scalars['String']['output']>;
480
+ quotaAvailable: Maybe<Scalars['Int']['output']>;
481
+ ramMb: Maybe<Scalars['Int']['output']>;
482
+ rawHourlyCostCents: Maybe<Scalars['BigInt']['output']>;
483
+ syncedAt: Scalars['DateTime']['output'];
484
+ vcpus: Maybe<Scalars['Int']['output']>;
485
+ };
344
486
  /** Notification received when another client sends an audio packet (voice chat). Received via the udpNotifications subscription. */
345
487
  export type ClientAudioNotification = {
346
488
  __typename?: 'ClientAudioNotification';
@@ -468,11 +610,6 @@ export type ClientTextPacketInput = {
468
610
  /** A unique identifier for the text source (typically the player UUID). Must be exactly 32 bytes when encoded as UTF-8. */
469
611
  uuid: Scalars['String']['input'];
470
612
  };
471
- /** Input for connecting to the UDP proxy. The server automatically selects the UDP game server with the least number of clients. This input type exists only because GraphQL requires input types to have at least one field - the _placeholder field can be ignored. */
472
- export type ConnectUdpProxyInput = {
473
- /** Placeholder field (can be ignored). GraphQL requires input types to have at least one field. */
474
- _placeholder?: InputMaybe<Scalars['Boolean']['input']>;
475
- };
476
613
  export type CreateAccessTierInput = {
477
614
  appId: Scalars['BigInt']['input'];
478
615
  description?: InputMaybe<Scalars['String']['input']>;
@@ -512,8 +649,18 @@ export type CreateCheckoutInput = {
512
649
  successUrl?: InputMaybe<Scalars['String']['input']>;
513
650
  tierId?: InputMaybe<Scalars['BigInt']['input']>;
514
651
  };
652
+ export type CreateEnvironmentInput = {
653
+ databaseFlavor: Scalars['String']['input'];
654
+ datacenter: Scalars['String']['input'];
655
+ displayName: Scalars['String']['input'];
656
+ graphqlFlavor: Scalars['String']['input'];
657
+ orgId: Scalars['BigInt']['input'];
658
+ slug: Scalars['String']['input'];
659
+ udpBuddyFlavor: Scalars['String']['input'];
660
+ x25519PublicKeyBase64: Scalars['String']['input'];
661
+ };
515
662
  export type CreateGridInput = {
516
- app_id: Scalars['BigInt']['input'];
663
+ appId: Scalars['BigInt']['input'];
517
664
  corner1: ChunkCoordinatesInput;
518
665
  corner2: ChunkCoordinatesInput;
519
666
  };
@@ -541,12 +688,38 @@ export type CreateUserAppStateInput = {
541
688
  appId: Scalars['BigInt']['input'];
542
689
  state?: InputMaybe<Scalars['String']['input']>;
543
690
  };
691
+ export type DestroyEnvironmentInput = {
692
+ orgId: Scalars['BigInt']['input'];
693
+ slug: Scalars['String']['input'];
694
+ };
695
+ export type EnvironmentQuoteInput = {
696
+ databaseFlavor: Scalars['String']['input'];
697
+ datacenter: Scalars['String']['input'];
698
+ graphqlFlavor: Scalars['String']['input'];
699
+ orgId: Scalars['BigInt']['input'];
700
+ udpBuddyFlavor: Scalars['String']['input'];
701
+ };
544
702
  export type FreePlayWindowInfo = {
545
703
  __typename?: 'FreePlayWindowInfo';
546
704
  description: Scalars['String']['output'];
547
705
  isCurrentlyActive: Scalars['Boolean']['output'];
548
706
  nextWindowStart: Maybe<Scalars['String']['output']>;
549
707
  };
708
+ /** Startup contract for browser game clients. Fetch this after login to initialize protocol/version checks and UDP proxy state in one round trip. */
709
+ export type GameClientBootstrap = {
710
+ __typename?: 'GameClientBootstrap';
711
+ appId: Scalars['BigInt']['output'];
712
+ maxDecayRate: Scalars['Int']['output'];
713
+ maxReplicationDistance: Scalars['Int']['output'];
714
+ me: User;
715
+ /** GraphQL WebSocket subprotocol expected by udpNotifications. */
716
+ realtimeProtocol: Scalars['String']['output'];
717
+ sequenceNumberModulo: Scalars['Int']['output'];
718
+ /** GraphQL subscription field that carries UDP proxy notifications. */
719
+ subscriptionName: Scalars['String']['output'];
720
+ udpProxyConnectionStatus: UdpProxyConnectionStatus;
721
+ versionInfo: ServerVersionInfo;
722
+ };
550
723
  /** Generic error response from the UDP game server. Uses the sequence number to match the original request that failed. */
551
724
  export type GenericErrorResponse = {
552
725
  __typename?: 'GenericErrorResponse';
@@ -644,6 +817,7 @@ export type Mutation = {
644
817
  createAvatar: Avatar;
645
818
  /** Creates a Checkout row, opens the provider session, and returns the row with externalUrl set. Redirect the user to externalUrl. Status starts PENDING and updates via webhook. */
646
819
  createCheckout: Checkout;
820
+ createEnvironment: CksEnvironmentDetail;
647
821
  createGrid: CreateGridResponse;
648
822
  createOrgRole: OrgRole;
649
823
  /** Returns the plaintext token exactly once. Save it; subsequent queries only show metadata. */
@@ -656,6 +830,7 @@ export type Mutation = {
656
830
  deleteOrgRole: Scalars['Boolean']['output'];
657
831
  deleteQuota: Scalars['Boolean']['output'];
658
832
  deleteUserAppState: UserAppState;
833
+ destroyEnvironment: CksEnvironmentChangeOrder;
659
834
  /** Close the UDP proxy session and socket for this game token. Unsubscribing from udpNotifications does not disconnect; use this mutation (or rely on server inactivity timeout). */
660
835
  disconnectUdpProxy: Scalars['Boolean']['output'];
661
836
  forceLogoutUser: Scalars['Boolean']['output'];
@@ -669,6 +844,7 @@ export type Mutation = {
669
844
  requestPasswordReset: Scalars['Boolean']['output'];
670
845
  resendConfirmationEmail: Scalars['Boolean']['output'];
671
846
  resetPassword: Scalars['Boolean']['output'];
847
+ resumeEnvironment: CksEnvironmentChangeOrder;
672
848
  revokeAppAccess: AppUserAccess;
673
849
  revokeOrgToken: Scalars['Boolean']['output'];
674
850
  /** Reverts every voxel edit by `userId` in `appId` between `from` and `to`. Gated by the org permission `manage_apps`. Defaults to dryRun=true; pass dryRun=false to apply. */
@@ -723,9 +899,6 @@ export type MutationChangePasswordArgs = {
723
899
  export type MutationConfirmEmailArgs = {
724
900
  token: Scalars['String']['input'];
725
901
  };
726
- export type MutationConnectUdpProxyArgs = {
727
- input?: InputMaybe<ConnectUdpProxyInput>;
728
- };
729
902
  export type MutationCreateAccessTierArgs = {
730
903
  input: CreateAccessTierInput;
731
904
  };
@@ -741,6 +914,9 @@ export type MutationCreateAvatarArgs = {
741
914
  export type MutationCreateCheckoutArgs = {
742
915
  input: CreateCheckoutInput;
743
916
  };
917
+ export type MutationCreateEnvironmentArgs = {
918
+ input: CreateEnvironmentInput;
919
+ };
744
920
  export type MutationCreateGridArgs = {
745
921
  input: CreateGridInput;
746
922
  };
@@ -768,6 +944,9 @@ export type MutationDeleteQuotaArgs = {
768
944
  export type MutationDeleteUserAppStateArgs = {
769
945
  appId: Scalars['BigInt']['input'];
770
946
  };
947
+ export type MutationDestroyEnvironmentArgs = {
948
+ input: DestroyEnvironmentInput;
949
+ };
771
950
  export type MutationForceLogoutUserArgs = {
772
951
  userId: Scalars['BigInt']['input'];
773
952
  };
@@ -796,6 +975,9 @@ export type MutationResendConfirmationEmailArgs = {
796
975
  export type MutationResetPasswordArgs = {
797
976
  resetPasswordInput: ResetPasswordInput;
798
977
  };
978
+ export type MutationResumeEnvironmentArgs = {
979
+ input: ResumeEnvironmentInput;
980
+ };
799
981
  export type MutationRevokeAppAccessArgs = {
800
982
  appId: Scalars['BigInt']['input'];
801
983
  userId: Scalars['BigInt']['input'];
@@ -1019,7 +1201,13 @@ export type Query = {
1019
1201
  checkouts: CheckoutsPage;
1020
1202
  /** The most-specific quota that applies to (orgId, appId, tierId, metric). Walks tier -> app -> org -> free_tier_defaults. Returns null if nothing matches. */
1021
1203
  effectiveQuota: Maybe<ServiceQuota>;
1204
+ environmentDatacenters: Array<CksOvhDatacenter>;
1205
+ environmentFlavors: Array<CksOvhFlavor>;
1206
+ environmentQuote: CksEnvironmentQuote;
1207
+ environmentVersions: Array<CksEnvironmentVersion>;
1022
1208
  freePlayWindowInfo: FreePlayWindowInfo;
1209
+ /** Single startup payload for browser game clients: current user, version requirements, UDP proxy status, realtime protocol details, and spatial send limits. */
1210
+ gameClientBootstrap: GameClientBootstrap;
1023
1211
  getChunk: Maybe<Chunk>;
1024
1212
  getChunkLods: Maybe<ChunkLodsResponse>;
1025
1213
  getChunksByDistance: ChunksByDistanceResponse;
@@ -1038,6 +1226,8 @@ export type Query = {
1038
1226
  myDonationData: UserDonationData;
1039
1227
  myOrganizations: Array<OrgMembership>;
1040
1228
  myPropertyTokens: UserPropertyTokenData;
1229
+ orgEnvironment: Maybe<CksEnvironmentDetail>;
1230
+ orgEnvironments: Array<CksEnvironment>;
1041
1231
  orgMembers: Array<OrgMember>;
1042
1232
  /** The full seed list of permission keys. Used by the UI to render role editors. */
1043
1233
  orgPermissions: Array<OrgPermission>;
@@ -1117,6 +1307,15 @@ export type QueryEffectiveQuotaArgs = {
1117
1307
  orgId?: InputMaybe<Scalars['BigInt']['input']>;
1118
1308
  tierId?: InputMaybe<Scalars['BigInt']['input']>;
1119
1309
  };
1310
+ export type QueryEnvironmentFlavorsArgs = {
1311
+ datacenter: Scalars['String']['input'];
1312
+ };
1313
+ export type QueryEnvironmentQuoteArgs = {
1314
+ input: EnvironmentQuoteInput;
1315
+ };
1316
+ export type QueryGameClientBootstrapArgs = {
1317
+ appId: Scalars['BigInt']['input'];
1318
+ };
1120
1319
  export type QueryGetChunkArgs = {
1121
1320
  input: GetChunkInput;
1122
1321
  };
@@ -1145,6 +1344,13 @@ export type QueryMyCheckoutsArgs = {
1145
1344
  limit?: InputMaybe<Scalars['Int']['input']>;
1146
1345
  offset?: InputMaybe<Scalars['Int']['input']>;
1147
1346
  };
1347
+ export type QueryOrgEnvironmentArgs = {
1348
+ orgId: Scalars['BigInt']['input'];
1349
+ slug: Scalars['String']['input'];
1350
+ };
1351
+ export type QueryOrgEnvironmentsArgs = {
1352
+ orgId: Scalars['BigInt']['input'];
1353
+ };
1148
1354
  export type QueryOrgMembersArgs = {
1149
1355
  orgId: Scalars['BigInt']['input'];
1150
1356
  };
@@ -1196,6 +1402,14 @@ export type QueryWalletTransactionsArgs = {
1196
1402
  offset?: InputMaybe<Scalars['Int']['input']>;
1197
1403
  orgId: Scalars['BigInt']['input'];
1198
1404
  };
1405
+ /** SDK-facing realtime lifecycle event emitted on udpNotifications when the subscription cannot open a UDP proxy session. */
1406
+ export type RealtimeConnectionEvent = {
1407
+ __typename?: 'RealtimeConnectionEvent';
1408
+ code: Scalars['String']['output'];
1409
+ message: Scalars['String']['output'];
1410
+ retryable: Scalars['Boolean']['output'];
1411
+ status: Scalars['String']['output'];
1412
+ };
1199
1413
  export type RegisterUserInput = {
1200
1414
  email: Scalars['String']['input'];
1201
1415
  gamertag?: InputMaybe<Scalars['String']['input']>;
@@ -1205,6 +1419,10 @@ export type ResetPasswordInput = {
1205
1419
  newPassword: Scalars['String']['input'];
1206
1420
  token: Scalars['String']['input'];
1207
1421
  };
1422
+ export type ResumeEnvironmentInput = {
1423
+ orgId: Scalars['BigInt']['input'];
1424
+ slug: Scalars['String']['input'];
1425
+ };
1208
1426
  export type RollbackVoxelEventResult = {
1209
1427
  __typename?: 'RollbackVoxelEventResult';
1210
1428
  appId: Scalars['BigInt']['output'];
@@ -1309,13 +1527,13 @@ export type SetQuotaInput = {
1309
1527
  };
1310
1528
  export type Subscription = {
1311
1529
  __typename?: 'Subscription';
1312
- /** Downlink from the game server (responses, notifications, GenericErrorResponse). On subscribe, opens a UDP proxy session if none exists (least-loaded server). Requires a game token—without one, yields a single null then ends. Connection failures may yield null. Unsubscribing stops delivery only; call disconnectUdpProxy to release the session. */
1530
+ /** Downlink from the game server (responses, notifications, GenericErrorResponse, and RealtimeConnectionEvent). On subscribe, opens a UDP proxy session if none exists (least-loaded server). Connection failures are delivered as RealtimeConnectionEvent. Unsubscribing stops delivery only; call disconnectUdpProxy to release the session. */
1313
1531
  udpNotifications: Maybe<UdpNotification>;
1314
1532
  };
1315
1533
  export type TeleportRequestInput = {
1316
- UUID: Scalars['String']['input'];
1317
1534
  appId: Scalars['BigInt']['input'];
1318
1535
  chunkAddress: ChunkCoordinatesInput;
1536
+ uuid: Scalars['String']['input'];
1319
1537
  voxelAddress: VoxelCoordinatesInput;
1320
1538
  };
1321
1539
  export type TeleportResponse = {
@@ -1356,7 +1574,7 @@ export declare enum UdpErrorCode {
1356
1574
  UserNotAuthenticated = "USER_NOT_AUTHENTICATED"
1357
1575
  }
1358
1576
  /** All game-server messages delivered over the UDP proxy as GraphQL payloads. Subscribe to udpNotifications before or with sending mutations so responses and GenericErrorResponse (correlate via sequenceNumber) are not missed. */
1359
- export type UdpNotification = ActorUpdateNotification | ActorUpdateResponse | ClientAudioNotification | ClientEventNotification | ClientTextNotification | GenericErrorResponse | ServerEventNotification | VoxelUpdateNotification | VoxelUpdateResponse;
1577
+ export type UdpNotification = ActorUpdateNotification | ActorUpdateResponse | ClientAudioNotification | ClientEventNotification | ClientTextNotification | GenericErrorResponse | RealtimeConnectionEvent | ServerEventNotification | VoxelUpdateNotification | VoxelUpdateResponse;
1360
1578
  /** UDP proxy session for the game token on the request. Returned by udpProxyConnectionStatus and connectUdpProxy. Binary UDP layouts are documented in database/client-wire-formats.md. */
1361
1579
  export type UdpProxyConnectionStatus = {
1362
1580
  __typename?: 'UdpProxyConnectionStatus';
@@ -2968,6 +3186,61 @@ export type ActiveGraphQlServersQuery = {
2968
3186
  updatedAt: string;
2969
3187
  }>;
2970
3188
  };
3189
+ export type GameClientBootstrapQueryVariables = Exact<{
3190
+ appId: Scalars['BigInt']['input'];
3191
+ }>;
3192
+ export type GameClientBootstrapQuery = {
3193
+ __typename?: 'Query';
3194
+ gameClientBootstrap: {
3195
+ __typename?: 'GameClientBootstrap';
3196
+ appId: string;
3197
+ realtimeProtocol: string;
3198
+ subscriptionName: string;
3199
+ maxReplicationDistance: number;
3200
+ maxDecayRate: number;
3201
+ sequenceNumberModulo: number;
3202
+ udpProxyConnectionStatus: {
3203
+ __typename?: 'UdpProxyConnectionStatus';
3204
+ connected: boolean;
3205
+ serverIp6: string | null;
3206
+ serverClientPort: number | null;
3207
+ lastMessageTime: string | null;
3208
+ };
3209
+ versionInfo: {
3210
+ __typename?: 'ServerVersionInfo';
3211
+ serverVersion: {
3212
+ __typename?: 'VersionInfo';
3213
+ major: number;
3214
+ minor: number;
3215
+ patch: number;
3216
+ build: number;
3217
+ };
3218
+ minimumClientVersion: {
3219
+ __typename?: 'VersionInfo';
3220
+ major: number;
3221
+ minor: number;
3222
+ patch: number;
3223
+ build: number;
3224
+ };
3225
+ };
3226
+ me: {
3227
+ __typename?: 'User';
3228
+ userId: string;
3229
+ email: string | null;
3230
+ gamertag: string | null;
3231
+ disambiguation: string | null;
3232
+ state: string | null;
3233
+ isConfirmed: boolean;
3234
+ createdAt: string;
3235
+ grantEarlyAccess: boolean;
3236
+ grantEarlyAccessOverride: boolean;
3237
+ orgId: string | null;
3238
+ externalId: string | null;
3239
+ userType: string;
3240
+ isSuperAdmin: boolean;
3241
+ };
3242
+ };
3243
+ };
2971
3244
  export type GraphqlServersQueryVariables = Exact<{
2972
3245
  [key: string]: never;
2973
3246
  }>;
@@ -3147,6 +3420,123 @@ export type SendVoxelUpdateMutation = {
3147
3420
  __typename?: 'Mutation';
3148
3421
  sendVoxelUpdate: boolean;
3149
3422
  };
3423
+ export type UdpNotificationsSubscriptionVariables = Exact<{
3424
+ [key: string]: never;
3425
+ }>;
3426
+ export type UdpNotificationsSubscription = {
3427
+ __typename?: 'Subscription';
3428
+ udpNotifications: {
3429
+ __typename: 'ActorUpdateNotification';
3430
+ appId: string;
3431
+ chunkX: string;
3432
+ chunkY: string;
3433
+ chunkZ: string;
3434
+ distance: number;
3435
+ decayRate: number;
3436
+ uuid: string;
3437
+ state: string;
3438
+ sequenceNumber: number;
3439
+ epochMillis: string;
3440
+ } | {
3441
+ __typename: 'ActorUpdateResponse';
3442
+ appId: string;
3443
+ chunkX: string;
3444
+ chunkY: string;
3445
+ chunkZ: string;
3446
+ distance: number;
3447
+ decayRate: number;
3448
+ uuid: string;
3449
+ sequenceNumber: number;
3450
+ epochMillis: string;
3451
+ } | {
3452
+ __typename: 'ClientAudioNotification';
3453
+ appId: string;
3454
+ chunkX: string;
3455
+ chunkY: string;
3456
+ chunkZ: string;
3457
+ distance: number;
3458
+ decayRate: number;
3459
+ uuid: string;
3460
+ audioData: string;
3461
+ sequenceNumber: number;
3462
+ epochMillis: string;
3463
+ } | {
3464
+ __typename: 'ClientEventNotification';
3465
+ appId: string;
3466
+ chunkX: string;
3467
+ chunkY: string;
3468
+ chunkZ: string;
3469
+ distance: number;
3470
+ decayRate: number;
3471
+ uuid: string;
3472
+ eventType: number;
3473
+ state: string;
3474
+ sequenceNumber: number;
3475
+ epochMillis: string;
3476
+ } | {
3477
+ __typename: 'ClientTextNotification';
3478
+ appId: string;
3479
+ chunkX: string;
3480
+ chunkY: string;
3481
+ chunkZ: string;
3482
+ distance: number;
3483
+ decayRate: number;
3484
+ uuid: string;
3485
+ text: string;
3486
+ sequenceNumber: number;
3487
+ epochMillis: string;
3488
+ } | {
3489
+ __typename: 'GenericErrorResponse';
3490
+ sequenceNumber: number;
3491
+ errorCode: UdpErrorCode;
3492
+ } | {
3493
+ __typename: 'RealtimeConnectionEvent';
3494
+ status: string;
3495
+ code: string;
3496
+ message: string;
3497
+ retryable: boolean;
3498
+ } | {
3499
+ __typename: 'ServerEventNotification';
3500
+ appId: string;
3501
+ chunkX: string;
3502
+ chunkY: string;
3503
+ chunkZ: string;
3504
+ distance: number;
3505
+ decayRate: number;
3506
+ uuid: string;
3507
+ eventType: number;
3508
+ state: string;
3509
+ sequenceNumber: number;
3510
+ epochMillis: string;
3511
+ } | {
3512
+ __typename: 'VoxelUpdateNotification';
3513
+ appId: string;
3514
+ chunkX: string;
3515
+ chunkY: string;
3516
+ chunkZ: string;
3517
+ distance: number;
3518
+ decayRate: number;
3519
+ uuid: string;
3520
+ voxelX: number;
3521
+ voxelY: number;
3522
+ voxelZ: number;
3523
+ voxelType: number;
3524
+ voxelState: string;
3525
+ sequenceNumber: number;
3526
+ epochMillis: string;
3527
+ } | {
3528
+ __typename: 'VoxelUpdateResponse';
3529
+ appId: string;
3530
+ chunkX: string;
3531
+ chunkY: string;
3532
+ chunkZ: string;
3533
+ distance: number;
3534
+ decayRate: number;
3535
+ uuid: string;
3536
+ sequenceNumber: number;
3537
+ epochMillis: string;
3538
+ } | null;
3539
+ };
3150
3540
  export type UdpProxyConnectionStatusQueryVariables = Exact<{
3151
3541
  [key: string]: never;
3152
3542
  }>;
@@ -3537,6 +3927,7 @@ export declare const QuotasForAppDocument: DocumentNode<QuotasForAppQuery, Quota
3537
3927
  export declare const QuotasForOrgDocument: DocumentNode<QuotasForOrgQuery, QuotasForOrgQueryVariables>;
3538
3928
  export declare const SetQuotaDocument: DocumentNode<SetQuotaMutation, SetQuotaMutationVariables>;
3539
3929
  export declare const ActiveGraphQlServersDocument: DocumentNode<ActiveGraphQlServersQuery, ActiveGraphQlServersQueryVariables>;
3930
+ export declare const GameClientBootstrapDocument: DocumentNode<GameClientBootstrapQuery, GameClientBootstrapQueryVariables>;
3540
3931
  export declare const GraphqlServersDocument: DocumentNode<GraphqlServersQuery, GraphqlServersQueryVariables>;
3541
3932
  export declare const ServerWithLeastClientsDocument: DocumentNode<ServerWithLeastClientsQuery, ServerWithLeastClientsQueryVariables>;
3542
3933
  export declare const VersionInfoDocument: DocumentNode<VersionInfoQuery, VersionInfoQueryVariables>;
@@ -3552,6 +3943,7 @@ export declare const SendAudioPacketDocument: DocumentNode<SendAudioPacketMutati
3552
3943
  export declare const SendClientEventDocument: DocumentNode<SendClientEventMutation, SendClientEventMutationVariables>;
3553
3944
  export declare const SendTextPacketDocument: DocumentNode<SendTextPacketMutation, SendTextPacketMutationVariables>;
3554
3945
  export declare const SendVoxelUpdateDocument: DocumentNode<SendVoxelUpdateMutation, SendVoxelUpdateMutationVariables>;
3946
+ export declare const UdpNotificationsDocument: DocumentNode<UdpNotificationsSubscription, UdpNotificationsSubscriptionVariables>;
3555
3947
  export declare const UdpProxyConnectionStatusDocument: DocumentNode<UdpProxyConnectionStatusQuery, UdpProxyConnectionStatusQueryVariables>;
3556
3948
  export declare const DeleteMyAccountDocument: DocumentNode<DeleteMyAccountMutation, DeleteMyAccountMutationVariables>;
3557
3949
  export declare const ForceLogoutUserDocument: DocumentNode<ForceLogoutUserMutation, ForceLogoutUserMutationVariables>;