@playcademy/sdk 0.2.6 → 0.2.7

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.
@@ -6328,6 +6328,36 @@ interface BucketFile {
6328
6328
  uploaded: string;
6329
6329
  contentType?: string;
6330
6330
  }
6331
+ /**
6332
+ * KV key entry
6333
+ */
6334
+ interface KVKeyEntry {
6335
+ name: string;
6336
+ expiration?: number;
6337
+ metadata?: Record<string, unknown>;
6338
+ }
6339
+ /**
6340
+ * KV key metadata
6341
+ */
6342
+ interface KVKeyMetadata {
6343
+ metadata?: Record<string, unknown>;
6344
+ }
6345
+ /**
6346
+ * KV statistics
6347
+ */
6348
+ interface KVStatsResponse {
6349
+ totalKeys: number;
6350
+ prefixes: Record<string, number>;
6351
+ }
6352
+ /**
6353
+ * KV seed entry for bulk operations
6354
+ */
6355
+ interface KVSeedEntry {
6356
+ key: string;
6357
+ value: string;
6358
+ expiration_ttl?: number;
6359
+ metadata?: Record<string, unknown>;
6360
+ }
6331
6361
  type DevUploadEvent = {
6332
6362
  type: 'init';
6333
6363
  } | {
@@ -7029,6 +7059,16 @@ declare class PlaycademyInternalClient extends PlaycademyBaseClient {
7029
7059
  put: (slug: string, key: string, content: ArrayBuffer | Blob | Uint8Array<ArrayBufferLike>, contentType?: string | undefined) => Promise<void>;
7030
7060
  delete: (slug: string, key: string) => Promise<void>;
7031
7061
  };
7062
+ kv: {
7063
+ list: (slug: string, prefix?: string | undefined) => Promise<KVKeyEntry[]>;
7064
+ get: (slug: string, key: string) => Promise<string | null>;
7065
+ set: (slug: string, key: string, value: string) => Promise<void>;
7066
+ delete: (slug: string, key: string) => Promise<void>;
7067
+ inspect: (slug: string, key: string) => Promise<KVKeyMetadata | null>;
7068
+ stats: (slug: string) => Promise<KVStatsResponse>;
7069
+ seed: (slug: string, entries: KVSeedEntry[]) => Promise<number>;
7070
+ clear: (slug: string) => Promise<number>;
7071
+ };
7032
7072
  domains: {
7033
7073
  add: (slug: string, hostname: string) => Promise<GameCustomHostname>;
7034
7074
  list: (slug: string) => Promise<GameCustomHostname[]>;
@@ -7576,4 +7616,4 @@ declare class PlaycademyInternalClient extends PlaycademyBaseClient {
7576
7616
  }
7577
7617
 
7578
7618
  export { AchievementCompletionType, ApiError, ConnectionManager, ConnectionMonitor, MessageEvents, NotificationStatus, NotificationType, PlaycademyInternalClient as PlaycademyClient, PlaycademyError, PlaycademyInternalClient, extractApiErrorInfo, messaging };
7579
- export type { AchievementCurrent, AchievementHistoryEntry, AchievementProgressResponse, AchievementScopeType, AchievementWithStatus, ApiErrorCode, ApiErrorInfo, AuthCallbackPayload, AuthOptions, AuthProviderType, AuthResult, AuthServerMessage, AuthStateChangePayload, AuthStateUpdate, AuthenticatedUser, BetterAuthApiKey, BetterAuthApiKeyResponse, BetterAuthSignInResponse, BucketFile, CharacterComponentRow as CharacterComponent, CharacterComponentType, CharacterComponentWithSpriteUrl, CharacterComponentsOptions, ClientConfig, ClientEvents, ConnectionMonitorConfig, ConnectionState, ConnectionStatePayload, CreateCharacterData, CreateMapObjectData, CurrencyRow as Currency, DevUploadEvent, DevUploadHooks, DeveloperStatusEnumType, DeveloperStatusResponse, DeveloperStatusValue, DisconnectContext, DisconnectHandler, DisplayAlertPayload, ErrorResponseBody, EventListeners, ExternalGame, FetchedGame, Game, GameContextPayload, GameCustomHostname, GameInitUser, GameLeaderboardEntry, MapRow as GameMap, GamePlatform, GameRow as GameRecord, GameSessionRow as GameSession, GameTimebackIntegration, GameTokenResponse, GameType, GameUser, HostedGame, InitPayload, InsertCurrencyInput, InsertItemInput, InsertShopListingInput, InteractionType, InventoryItemRow as InventoryItem, InventoryItemWithItem, InventoryMutationResponse, ItemRow as Item, ItemType, KeyEventPayload, LeaderboardEntry, LeaderboardOptions, LeaderboardTimeframe, LevelConfigRow as LevelConfig, LevelProgressResponse, LevelUpCheckResult, LoginResponse, ManifestV1, MapData, MapElementRow as MapElement, MapElementMetadata, MapElementWithGame, MapObjectRow as MapObject, MapObjectWithItem, NotificationRow as Notification, NotificationStats, PlaceableItemMetadata, PlatformTimebackUser, PlatformTimebackUserContext, PlaycademyServerClientConfig, PlaycademyServerClientState, PlayerCharacterRow as PlayerCharacter, PlayerCharacterAccessoryRow as PlayerCharacterAccessory, PlayerCurrency, PlayerInventoryItem, PlayerProfile, PlayerSessionPayload, PopulateStudentResponse, RealtimeTokenResponse, ScoreSubmission, ShopCurrency, ShopDisplayItem, ShopListingRow as ShopListing, ShopViewResponse, SpriteAnimationFrame, SpriteConfigWithDimensions, SpriteTemplateRow as SpriteTemplate, SpriteTemplateData, StartSessionResponse, TelemetryPayload, TimebackEnrollment, TimebackInitContext, TimebackOrganization, TimebackUser, TimebackUserContext, TodayXpResponse, TokenRefreshPayload, TokenType, TotalXpResponse, UpdateCharacterData, UpdateCurrencyInput, UpdateItemInput, UpdateShopListingInput, UpsertGameMetadataInput, UserRow as User, UserEnrollment, UserInfo, UserLevelRow as UserLevel, UserLevelWithConfig, UserOrganization, UserRank, UserRankResponse, UserRoleEnumType, UserScore, UserTimebackData, XPAddResult, XpHistoryResponse, XpSummaryResponse };
7619
+ export type { AchievementCurrent, AchievementHistoryEntry, AchievementProgressResponse, AchievementScopeType, AchievementWithStatus, ApiErrorCode, ApiErrorInfo, AuthCallbackPayload, AuthOptions, AuthProviderType, AuthResult, AuthServerMessage, AuthStateChangePayload, AuthStateUpdate, AuthenticatedUser, BetterAuthApiKey, BetterAuthApiKeyResponse, BetterAuthSignInResponse, BucketFile, CharacterComponentRow as CharacterComponent, CharacterComponentType, CharacterComponentWithSpriteUrl, CharacterComponentsOptions, ClientConfig, ClientEvents, ConnectionMonitorConfig, ConnectionState, ConnectionStatePayload, CreateCharacterData, CreateMapObjectData, CurrencyRow as Currency, DevUploadEvent, DevUploadHooks, DeveloperStatusEnumType, DeveloperStatusResponse, DeveloperStatusValue, DisconnectContext, DisconnectHandler, DisplayAlertPayload, ErrorResponseBody, EventListeners, ExternalGame, FetchedGame, Game, GameContextPayload, GameCustomHostname, GameInitUser, GameLeaderboardEntry, MapRow as GameMap, GamePlatform, GameRow as GameRecord, GameSessionRow as GameSession, GameTimebackIntegration, GameTokenResponse, GameType, GameUser, HostedGame, InitPayload, InsertCurrencyInput, InsertItemInput, InsertShopListingInput, InteractionType, InventoryItemRow as InventoryItem, InventoryItemWithItem, InventoryMutationResponse, ItemRow as Item, ItemType, KVKeyEntry, KVKeyMetadata, KVSeedEntry, KVStatsResponse, KeyEventPayload, LeaderboardEntry, LeaderboardOptions, LeaderboardTimeframe, LevelConfigRow as LevelConfig, LevelProgressResponse, LevelUpCheckResult, LoginResponse, ManifestV1, MapData, MapElementRow as MapElement, MapElementMetadata, MapElementWithGame, MapObjectRow as MapObject, MapObjectWithItem, NotificationRow as Notification, NotificationStats, PlaceableItemMetadata, PlatformTimebackUser, PlatformTimebackUserContext, PlaycademyServerClientConfig, PlaycademyServerClientState, PlayerCharacterRow as PlayerCharacter, PlayerCharacterAccessoryRow as PlayerCharacterAccessory, PlayerCurrency, PlayerInventoryItem, PlayerProfile, PlayerSessionPayload, PopulateStudentResponse, RealtimeTokenResponse, ScoreSubmission, ShopCurrency, ShopDisplayItem, ShopListingRow as ShopListing, ShopViewResponse, SpriteAnimationFrame, SpriteConfigWithDimensions, SpriteTemplateRow as SpriteTemplate, SpriteTemplateData, StartSessionResponse, TelemetryPayload, TimebackEnrollment, TimebackInitContext, TimebackOrganization, TimebackUser, TimebackUserContext, TodayXpResponse, TokenRefreshPayload, TokenType, TotalXpResponse, UpdateCharacterData, UpdateCurrencyInput, UpdateItemInput, UpdateShopListingInput, UpsertGameMetadataInput, UserRow as User, UserEnrollment, UserInfo, UserLevelRow as UserLevel, UserLevelWithConfig, UserOrganization, UserRank, UserRankResponse, UserRoleEnumType, UserScore, UserTimebackData, XPAddResult, XpHistoryResponse, XpSummaryResponse };
package/dist/internal.js CHANGED
@@ -1823,6 +1823,41 @@ function createDevNamespace(client) {
1823
1823
  await client["request"](`/games/${slug}/bucket/${encodeURIComponent(key)}`, "DELETE");
1824
1824
  }
1825
1825
  },
1826
+ kv: {
1827
+ list: async (slug, prefix) => {
1828
+ const params = prefix ? `?prefix=${encodeURIComponent(prefix)}` : "";
1829
+ const result = await client["request"](`/games/${slug}/kv${params}`, "GET");
1830
+ return result.keys;
1831
+ },
1832
+ get: async (slug, key) => {
1833
+ const result = await client["request"](`/games/${slug}/kv/${encodeURIComponent(key)}`, "GET");
1834
+ return result.value;
1835
+ },
1836
+ set: async (slug, key, value) => {
1837
+ await client["request"](`/games/${slug}/kv/${encodeURIComponent(key)}`, "PUT", {
1838
+ body: value,
1839
+ headers: { "Content-Type": "text/plain" }
1840
+ });
1841
+ },
1842
+ delete: async (slug, key) => {
1843
+ await client["request"](`/games/${slug}/kv/${encodeURIComponent(key)}`, "DELETE");
1844
+ },
1845
+ inspect: async (slug, key) => {
1846
+ const result = await client["request"](`/games/${slug}/kv/${encodeURIComponent(key)}/metadata`, "GET");
1847
+ return result.metadata;
1848
+ },
1849
+ stats: async (slug) => {
1850
+ return client["request"](`/games/${slug}/kv/stats`, "GET");
1851
+ },
1852
+ seed: async (slug, entries) => {
1853
+ const result = await client["request"](`/games/${slug}/kv/bulk`, "PUT", { body: { entries } });
1854
+ return result.count;
1855
+ },
1856
+ clear: async (slug) => {
1857
+ const result = await client["request"](`/games/${slug}/kv`, "DELETE");
1858
+ return result.deleted;
1859
+ }
1860
+ },
1826
1861
  domains: {
1827
1862
  add: async (slug, hostname) => {
1828
1863
  return client["request"](`/games/${slug}/domains`, "POST", {
package/dist/types.d.ts CHANGED
@@ -5438,6 +5438,36 @@ interface BucketFile {
5438
5438
  uploaded: string;
5439
5439
  contentType?: string;
5440
5440
  }
5441
+ /**
5442
+ * KV key entry
5443
+ */
5444
+ interface KVKeyEntry {
5445
+ name: string;
5446
+ expiration?: number;
5447
+ metadata?: Record<string, unknown>;
5448
+ }
5449
+ /**
5450
+ * KV key metadata
5451
+ */
5452
+ interface KVKeyMetadata {
5453
+ metadata?: Record<string, unknown>;
5454
+ }
5455
+ /**
5456
+ * KV statistics
5457
+ */
5458
+ interface KVStatsResponse {
5459
+ totalKeys: number;
5460
+ prefixes: Record<string, number>;
5461
+ }
5462
+ /**
5463
+ * KV seed entry for bulk operations
5464
+ */
5465
+ interface KVSeedEntry {
5466
+ key: string;
5467
+ value: string;
5468
+ expiration_ttl?: number;
5469
+ metadata?: Record<string, unknown>;
5470
+ }
5441
5471
  type DevUploadEvent = {
5442
5472
  type: 'init';
5443
5473
  } | {
@@ -5686,4 +5716,4 @@ interface PlaycademyServerClientState {
5686
5716
  }
5687
5717
 
5688
5718
  export { AchievementCompletionType, NotificationStatus, NotificationType, PlaycademyClient };
5689
- export type { AchievementCurrent, AchievementHistoryEntry, AchievementProgressResponse, AchievementScopeType, AchievementWithStatus, AuthCallbackPayload, AuthOptions, AuthProviderType, AuthResult, AuthServerMessage, AuthStateChangePayload, AuthStateUpdate, AuthenticatedUser, BetterAuthApiKey, BetterAuthApiKeyResponse, BetterAuthSignInResponse, BucketFile, CharacterComponentRow as CharacterComponent, CharacterComponentType, CharacterComponentWithSpriteUrl, CharacterComponentsOptions, ClientConfig, ClientEvents, ConnectionStatePayload, CreateCharacterData, CreateMapObjectData, CurrencyRow as Currency, DevUploadEvent, DevUploadHooks, DeveloperStatusEnumType, DeveloperStatusResponse, DeveloperStatusValue, DisconnectContext, DisconnectHandler, DisplayAlertPayload, EventListeners, ExternalGame, FetchedGame, Game, GameContextPayload, GameCustomHostname, GameInitUser, GameLeaderboardEntry, MapRow as GameMap, GamePlatform, GameRow as GameRecord, GameSessionRow as GameSession, GameTimebackIntegration, GameTokenResponse, GameType, GameUser, HostedGame, InitPayload, InsertCurrencyInput, InsertItemInput, InsertShopListingInput, InteractionType, InventoryItemRow as InventoryItem, InventoryItemWithItem, InventoryMutationResponse, ItemRow as Item, ItemType, KeyEventPayload, LeaderboardEntry, LeaderboardOptions, LeaderboardTimeframe, LevelConfigRow as LevelConfig, LevelProgressResponse, LevelUpCheckResult, LoginResponse, ManifestV1, MapData, MapElementRow as MapElement, MapElementMetadata, MapElementWithGame, MapObjectRow as MapObject, MapObjectWithItem, NotificationRow as Notification, NotificationStats, PlaceableItemMetadata, PlatformTimebackUser, PlatformTimebackUserContext, PlaycademyServerClientConfig, PlaycademyServerClientState, PlayerCharacterRow as PlayerCharacter, PlayerCharacterAccessoryRow as PlayerCharacterAccessory, PlayerCurrency, PlayerInventoryItem, PlayerProfile, PlayerSessionPayload, PopulateStudentResponse, RealtimeTokenResponse, ScoreSubmission, ShopCurrency, ShopDisplayItem, ShopListingRow as ShopListing, ShopViewResponse, SpriteAnimationFrame, SpriteConfigWithDimensions, SpriteTemplateRow as SpriteTemplate, SpriteTemplateData, StartSessionResponse, TelemetryPayload, TimebackEnrollment, TimebackInitContext, TimebackOrganization, TimebackUser, TimebackUserContext, TodayXpResponse, TokenRefreshPayload, TokenType, TotalXpResponse, UpdateCharacterData, UpdateCurrencyInput, UpdateItemInput, UpdateShopListingInput, UpsertGameMetadataInput, UserRow as User, UserEnrollment, UserInfo, UserLevelRow as UserLevel, UserLevelWithConfig, UserOrganization, UserRank, UserRankResponse, UserRoleEnumType, UserScore, UserTimebackData, XPAddResult, XpHistoryResponse, XpSummaryResponse };
5719
+ export type { AchievementCurrent, AchievementHistoryEntry, AchievementProgressResponse, AchievementScopeType, AchievementWithStatus, AuthCallbackPayload, AuthOptions, AuthProviderType, AuthResult, AuthServerMessage, AuthStateChangePayload, AuthStateUpdate, AuthenticatedUser, BetterAuthApiKey, BetterAuthApiKeyResponse, BetterAuthSignInResponse, BucketFile, CharacterComponentRow as CharacterComponent, CharacterComponentType, CharacterComponentWithSpriteUrl, CharacterComponentsOptions, ClientConfig, ClientEvents, ConnectionStatePayload, CreateCharacterData, CreateMapObjectData, CurrencyRow as Currency, DevUploadEvent, DevUploadHooks, DeveloperStatusEnumType, DeveloperStatusResponse, DeveloperStatusValue, DisconnectContext, DisconnectHandler, DisplayAlertPayload, EventListeners, ExternalGame, FetchedGame, Game, GameContextPayload, GameCustomHostname, GameInitUser, GameLeaderboardEntry, MapRow as GameMap, GamePlatform, GameRow as GameRecord, GameSessionRow as GameSession, GameTimebackIntegration, GameTokenResponse, GameType, GameUser, HostedGame, InitPayload, InsertCurrencyInput, InsertItemInput, InsertShopListingInput, InteractionType, InventoryItemRow as InventoryItem, InventoryItemWithItem, InventoryMutationResponse, ItemRow as Item, ItemType, KVKeyEntry, KVKeyMetadata, KVSeedEntry, KVStatsResponse, KeyEventPayload, LeaderboardEntry, LeaderboardOptions, LeaderboardTimeframe, LevelConfigRow as LevelConfig, LevelProgressResponse, LevelUpCheckResult, LoginResponse, ManifestV1, MapData, MapElementRow as MapElement, MapElementMetadata, MapElementWithGame, MapObjectRow as MapObject, MapObjectWithItem, NotificationRow as Notification, NotificationStats, PlaceableItemMetadata, PlatformTimebackUser, PlatformTimebackUserContext, PlaycademyServerClientConfig, PlaycademyServerClientState, PlayerCharacterRow as PlayerCharacter, PlayerCharacterAccessoryRow as PlayerCharacterAccessory, PlayerCurrency, PlayerInventoryItem, PlayerProfile, PlayerSessionPayload, PopulateStudentResponse, RealtimeTokenResponse, ScoreSubmission, ShopCurrency, ShopDisplayItem, ShopListingRow as ShopListing, ShopViewResponse, SpriteAnimationFrame, SpriteConfigWithDimensions, SpriteTemplateRow as SpriteTemplate, SpriteTemplateData, StartSessionResponse, TelemetryPayload, TimebackEnrollment, TimebackInitContext, TimebackOrganization, TimebackUser, TimebackUserContext, TodayXpResponse, TokenRefreshPayload, TokenType, TotalXpResponse, UpdateCharacterData, UpdateCurrencyInput, UpdateItemInput, UpdateShopListingInput, UpsertGameMetadataInput, UserRow as User, UserEnrollment, UserInfo, UserLevelRow as UserLevel, UserLevelWithConfig, UserOrganization, UserRank, UserRankResponse, UserRoleEnumType, UserScore, UserTimebackData, XPAddResult, XpHistoryResponse, XpSummaryResponse };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@playcademy/sdk",
3
- "version": "0.2.6",
3
+ "version": "0.2.7",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
@@ -44,12 +44,12 @@
44
44
  "@playcademy/data": "0.0.1",
45
45
  "@playcademy/logger": "0.0.1",
46
46
  "@playcademy/types": "0.0.1",
47
- "@playcademy/sandbox": "0.3.9",
47
+ "@playcademy/sandbox": "0.3.10",
48
48
  "@playcademy/test": "0.0.1",
49
49
  "@playcademy/timeback": "0.0.1",
50
50
  "@playcademy/utils": "0.0.1",
51
51
  "@types/bun": "latest",
52
- "playcademy": "0.15.5",
52
+ "playcademy": "0.15.6",
53
53
  "rollup": "^4.50.2",
54
54
  "rollup-plugin-dts": "^6.2.3",
55
55
  "typescript": "^5.7.2"