From 98d7585456d14b6ae67a5f5c48af542e554bf933 Mon Sep 17 00:00:00 2001 From: David Lee Date: Tue, 22 Oct 2024 02:22:40 -0700 Subject: [PATCH] fix: fix meta type to allow nested json (#788) --- .changeset/friendly-ghosts-drum.md | 6 ++++++ .../platform-cloudflare/src/CloudflarePlatform.ts | 11 ++++------- .../platform-cloudflare/src/platformCloudflare.ts | 7 ++----- packages/platform-node/src/NodePlatform.ts | 8 ++++---- packages/platform-node/src/platformNode.ts | 4 ++-- 5 files changed, 18 insertions(+), 18 deletions(-) create mode 100644 .changeset/friendly-ghosts-drum.md diff --git a/.changeset/friendly-ghosts-drum.md b/.changeset/friendly-ghosts-drum.md new file mode 100644 index 000000000..3032441f8 --- /dev/null +++ b/.changeset/friendly-ghosts-drum.md @@ -0,0 +1,6 @@ +--- +"@pluv/platform-cloudflare": patch +"@pluv/platform-node": patch +--- + +Update `meta` type on platform contexts to allow for nested json types. diff --git a/packages/platform-cloudflare/src/CloudflarePlatform.ts b/packages/platform-cloudflare/src/CloudflarePlatform.ts index 465aed01a..ea7d508bf 100644 --- a/packages/platform-cloudflare/src/CloudflarePlatform.ts +++ b/packages/platform-cloudflare/src/CloudflarePlatform.ts @@ -6,26 +6,23 @@ import type { } from "@pluv/io"; import { AbstractPlatform } from "@pluv/io"; import { PersistenceCloudflareTransactionalStorage } from "@pluv/persistence-cloudflare-transactional-storage"; -import type { JsonPrimitive } from "@pluv/types"; +import type { Json } from "@pluv/types"; import { CloudflareWebSocket } from "./CloudflareWebSocket"; import { DEFAULT_REGISTRATION_MODE } from "./constants"; -export type CloudflarePlatformRoomContext< - TEnv extends Record, - TMeta extends Record, -> = { +export type CloudflarePlatformRoomContext, TMeta extends Record> = { env: TEnv; state: DurableObjectState; } & (keyof TMeta extends never ? { meta?: undefined } : { meta: TMeta }); export type CloudflarePlatformConfig< TEnv extends Record = {}, - TMeta extends Record = {}, + TMeta extends Record = {}, > = AbstractPlatformConfig> & { mode?: WebSocketRegistrationMode }; export class CloudflarePlatform< TEnv extends Record = {}, - TMeta extends Record = {}, + TMeta extends Record = {}, > extends AbstractPlatform< CloudflareWebSocket, { env: TEnv; request: Request }, diff --git a/packages/platform-cloudflare/src/platformCloudflare.ts b/packages/platform-cloudflare/src/platformCloudflare.ts index 460cfad1d..507b37e5e 100644 --- a/packages/platform-cloudflare/src/platformCloudflare.ts +++ b/packages/platform-cloudflare/src/platformCloudflare.ts @@ -1,11 +1,8 @@ -import type { JsonPrimitive } from "@pluv/types"; +import type { Json } from "@pluv/types"; import type { CloudflarePlatformConfig } from "./CloudflarePlatform"; import { CloudflarePlatform } from "./CloudflarePlatform"; -export const platformCloudflare = < - TEnv extends Record = {}, - TMeta extends Record = {}, ->( +export const platformCloudflare = = {}, TMeta extends Record = {}>( config: CloudflarePlatformConfig = {}, ): CloudflarePlatform => { return new CloudflarePlatform(config); diff --git a/packages/platform-node/src/NodePlatform.ts b/packages/platform-node/src/NodePlatform.ts index 7dd7ebda0..a3b76231f 100644 --- a/packages/platform-node/src/NodePlatform.ts +++ b/packages/platform-node/src/NodePlatform.ts @@ -7,23 +7,23 @@ import type { WebSocketSerializedState, } from "@pluv/io"; import { AbstractPlatform } from "@pluv/io"; -import type { JsonPrimitive } from "@pluv/types"; +import type { Json } from "@pluv/types"; import crypto from "node:crypto"; import type { IncomingMessage } from "node:http"; import { TextDecoder } from "node:util"; import type { WebSocket } from "ws"; import { NodeWebSocket } from "./NodeWebSocket"; -export type NodePlatformRoomContext> = keyof TMeta extends never +export type NodePlatformRoomContext> = keyof TMeta extends never ? { meta?: undefined } : { meta: TMeta }; -export type NodePlatformConfig> = { mode?: WebSocketRegistrationMode } & ( +export type NodePlatformConfig> = { mode?: WebSocketRegistrationMode } & ( | { persistence?: undefined; pubSub?: undefined } | { persistence: AbstractPersistence; pubSub: AbstractPubSub } ) & { context?: NodePlatformRoomContext }; -export class NodePlatform = {}> extends AbstractPlatform< +export class NodePlatform = {}> extends AbstractPlatform< NodeWebSocket, { req: IncomingMessage }, NodePlatformRoomContext diff --git a/packages/platform-node/src/platformNode.ts b/packages/platform-node/src/platformNode.ts index 73c5c9e4f..ebe09f970 100644 --- a/packages/platform-node/src/platformNode.ts +++ b/packages/platform-node/src/platformNode.ts @@ -1,8 +1,8 @@ -import type { JsonPrimitive } from "@pluv/types"; +import type { Json } from "@pluv/types"; import type { NodePlatformConfig } from "./NodePlatform"; import { NodePlatform } from "./NodePlatform"; -export const platformNode = = {}>( +export const platformNode = = {}>( config: NodePlatformConfig = {}, ): NodePlatform => { return new NodePlatform(config);