UNPKG

@liveblocks/node

Version:

A server-side utility that lets you set up a Liveblocks authentication endpoint. Liveblocks is the all-in-one toolkit to build collaborative products like Figma, Notion, and more.

1 lines 132 kB
{"version":3,"sources":["/home/runner/work/liveblocks/liveblocks/packages/liveblocks-node/dist/index.cjs","../src/index.ts","../src/version.ts","../src/client.ts","../src/lib/itertools.ts","../src/lib/ndjson.ts","../src/Session.ts","../src/utils.ts","../src/webhooks.ts"],"names":["url","LiveObject"],"mappings":"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","file":"/home/runner/work/liveblocks/liveblocks/packages/liveblocks-node/dist/index.cjs","sourcesContent":[null,"import { detectDupes } from \"@liveblocks/core\";\n\nimport { PKG_FORMAT, PKG_NAME, PKG_VERSION } from \"./version\";\n\ndetectDupes(PKG_NAME, PKG_VERSION, PKG_FORMAT);\n\nexport type {\n CreateRoomOptions,\n GetInboxNotificationsOptions,\n GetRoomsOptions,\n InboxNotificationsQueryCriteria,\n LiveblocksOptions,\n MassMutateStorageCallback,\n MassMutateStorageOptions,\n MutateStorageCallback,\n MutateStorageOptions,\n Page,\n PaginationOptions,\n RoomAccesses,\n RoomData,\n RoomPermission,\n RoomsQueryCriteria,\n RoomUser,\n Schema,\n ThreadParticipants,\n UpdateRoomOptions,\n UpsertRoomOptions,\n} from \"./client\";\nexport { Liveblocks, LiveblocksError } from \"./client\";\nexport type {\n CommentCreatedEvent,\n CommentDeletedEvent,\n CommentEditedEvent,\n CommentReactionAdded,\n CommentReactionRemoved,\n CustomNotificationEvent,\n NotificationEvent,\n RoomCreatedEvent,\n RoomDeletedEvent,\n StorageUpdatedEvent,\n TextMentionNotificationEvent,\n ThreadCreatedEvent,\n ThreadDeletedEvent,\n ThreadMarkedAsResolvedEvent,\n ThreadMarkedAsUnresolvedEvent,\n ThreadMetadataUpdatedEvent,\n ThreadNotificationEvent,\n UserEnteredEvent,\n UserLeftEvent,\n WebhookEvent,\n WebhookRequest,\n YDocUpdatedEvent,\n} from \"./webhooks\";\nexport {\n isCustomNotificationEvent,\n isTextMentionNotificationEvent,\n isThreadNotificationEvent,\n WebhookHandler,\n} from \"./webhooks\";\nexport type {\n CommentBody,\n CommentBodyBlockElement,\n CommentBodyElement,\n CommentBodyInlineElement,\n CommentBodyLink,\n CommentBodyLinkElementArgs,\n CommentBodyMention,\n CommentBodyMentionElementArgs,\n CommentBodyParagraph,\n CommentBodyParagraphElementArgs,\n CommentBodyText,\n CommentBodyTextElementArgs,\n CommentData,\n CommentUserReaction,\n IUserInfo,\n Json,\n JsonArray,\n JsonObject,\n JsonScalar,\n LiveStructure,\n Lson,\n LsonObject,\n PlainLsonObject,\n ResolveUsersArgs,\n StringifyCommentBodyElements,\n StringifyCommentBodyOptions,\n ThreadData,\n User,\n} from \"@liveblocks/core\";\nexport {\n getMentionsFromCommentBody,\n isNotificationChannelEnabled,\n LiveList,\n LiveMap,\n LiveObject,\n stringifyCommentBody,\n} from \"@liveblocks/core\";\n","declare const __VERSION__: string;\ndeclare const TSUP_FORMAT: string;\n\nexport const PKG_NAME = \"@liveblocks/node\";\nexport const PKG_VERSION = typeof __VERSION__ === \"string\" && __VERSION__;\nexport const PKG_FORMAT = typeof TSUP_FORMAT === \"string\" && TSUP_FORMAT;\n","/**\n * NOTE: only types should be imported from @liveblocks/core.\n * This is because this package is made to be used in Node.js, and\n * @liveblocks/core has browser-specific code.\n */\nimport type {\n Awaitable,\n BaseMetadata,\n BaseUserMeta,\n ClientMsg,\n CommentBody,\n CommentData,\n CommentDataPlain,\n CommentUserReaction,\n CommentUserReactionPlain,\n DAD,\n DE,\n DM,\n DS,\n DU,\n IdTuple,\n InboxNotificationData,\n InboxNotificationDataPlain,\n Json,\n JsonObject,\n KDAD,\n LsonObject,\n NotificationSettings,\n NotificationSettingsPlain,\n Op,\n OptionalTupleUnless,\n PartialNotificationSettings,\n PartialUnless,\n Patchable,\n PlainLsonObject,\n QueryMetadata,\n QueryParams,\n RoomSubscriptionSettings,\n SerializedCrdt,\n StorageUpdate,\n SubscriptionData,\n SubscriptionDataPlain,\n ThreadData,\n ThreadDataPlain,\n ToImmutable,\n URLSafeString,\n UserRoomSubscriptionSettings,\n UserSubscriptionData,\n UserSubscriptionDataPlain,\n} from \"@liveblocks/core\";\nimport {\n checkBounds,\n ClientMsgCode,\n convertToCommentData,\n convertToCommentUserReaction,\n convertToInboxNotificationData,\n convertToSubscriptionData,\n convertToThreadData,\n convertToUserSubscriptionData,\n createManagedPool,\n createNotificationSettings,\n isPlainObject,\n LiveObject,\n makeAbortController,\n objectToQuery,\n tryParseJson,\n url,\n urljoin,\n} from \"@liveblocks/core\";\n\nimport { asyncConsume, runConcurrently } from \"./lib/itertools\";\nimport { LineStream, NdJsonStream } from \"./lib/ndjson\";\nimport { Session } from \"./Session\";\nimport {\n assertNonEmpty,\n assertSecretKey,\n fetchPolyfill,\n getBaseUrl,\n normalizeStatusCode,\n} from \"./utils\";\n\n// Recursively convert ReadonlyMap<K, V> to { [key: K]: V }\ntype SerializeMaps<T> =\n T extends ReadonlyMap<infer K, infer V>\n ? K extends string\n ? { readonly [P in K]: SerializeMaps<V> }\n : { readonly [key: string]: SerializeMaps<V> }\n : T extends object\n ? { readonly [P in keyof T]: SerializeMaps<T[P]> }\n : T;\n\ntype ToSimplifiedJson<S extends LsonObject> = LsonObject extends S\n ? JsonObject\n : // ToImmutable converts LiveMap instances to ReadonlyMap versions, but\n // the \"simplified JSON\" format actually requires (because of serialization)\n // and converts the maps to plain objects.\n SerializeMaps<ToImmutable<S>>;\n\nexport type LiveblocksOptions = {\n /**\n * The Liveblocks secret key. Must start with \"sk_\".\n * Get it from https://liveblocks.io/dashboard/apikeys\n */\n secret: string;\n\n /**\n * @internal To point the client to a different Liveblocks server. Only\n * useful for Liveblocks developers. Not for end users.\n */\n baseUrl?: string;\n};\n\ntype DateToString<T> = {\n [P in keyof T]: Date extends T[P] ? string : T[P];\n};\n\nexport type CreateSessionOptions<U extends BaseUserMeta = DU> =\n //\n PartialUnless<U[\"info\"], { userInfo: U[\"info\"] }>;\n\nexport type IdentifyUserOptions<U extends BaseUserMeta = DU> =\n //\n PartialUnless<U[\"info\"], { userInfo: U[\"info\"] }>;\n\nexport type AuthResponse = {\n status: number;\n body: string;\n error?: Error;\n};\n\ntype Identity = {\n userId: string;\n groupIds: string[];\n tenantId?: string;\n};\n\nexport type ThreadParticipants = {\n participantIds: string[];\n};\n\nexport type CreateThreadOptions<M extends BaseMetadata> = {\n roomId: string;\n data: {\n comment: { userId: string; createdAt?: Date; body: CommentBody };\n } & PartialUnless<M, { metadata: M }>;\n};\n\nexport type RoomPermission =\n | []\n | [\"room:write\"]\n | [\"room:read\", \"room:presence:write\"];\nexport type RoomAccesses = Record<\n string,\n [\"room:write\"] | [\"room:read\", \"room:presence:write\"]\n>;\nexport type RoomMetadata = Record<string, string | string[]>;\ntype QueryRoomMetadata = Record<string, string>;\n\nexport type RoomData = {\n type: \"room\";\n id: string;\n createdAt: Date;\n lastConnectionAt?: Date;\n defaultAccesses: RoomPermission;\n usersAccesses: RoomAccesses;\n groupsAccesses: RoomAccesses;\n metadata: RoomMetadata;\n};\n\ntype RoomDataPlain = DateToString<RoomData>;\n\nexport type RoomUser<U extends BaseUserMeta = DU> = {\n type: \"user\";\n id: string | null;\n connectionId: number;\n info: U[\"info\"];\n};\n\nexport type Schema = {\n id: string;\n name: string;\n version: number;\n body: string;\n createdAt: Date;\n updatedAt: Date;\n};\n\ntype SchemaPlain = DateToString<Schema>;\n\ntype RequestStorageMutationResponse = {\n actor: number;\n nodes: IdTuple<SerializedCrdt>[];\n};\n\nexport type MutateStorageCallback = (context: {\n root: LiveObject<S>;\n}) => Awaitable<void>;\nexport type MutateStorageOptions = RequestOptions;\n\nexport type MassMutateStorageCallback = (context: {\n room: RoomData;\n root: LiveObject<S>;\n}) => Awaitable<void>;\n\n// prettier-ignore\nexport type MassMutateStorageOptions =\n & MutateStorageOptions\n & { concurrency?: number };\n\n// NOTE: We should _never_ rely on using the default types (DS, DU, DE, ...)\n// inside the Liveblocks implementation. We should only rely on the type\n// \"params\" (S, U, E, ...) instead, where the concrete type is bound to the\n// class. In this case, we're not doing that at the class level, but globally.\n// The idea is that we \"start small\" and could always add them in at the class\n// level later.\ntype E = DE;\ntype M = DM;\ntype S = DS;\ntype U = DU;\n\nexport type RoomsQueryCriteria = {\n userId?: string;\n groupIds?: string[];\n /**\n * The query to filter rooms by. It is based on our query language.\n * @example\n * ```\n * {\n * query: 'metadata[\"status\"]:\"open\" AND roomId^\"liveblocks:\"'\n * }\n * ```\n * @example\n * ```\n * {\n * query: {\n * metadata: {\n * status: \"open\",\n * },\n * roomId: {\n * startsWith: \"liveblocks:\"\n * }\n * }\n * }\n * ```\n */\n query?:\n | string\n | {\n metadata?: QueryRoomMetadata;\n roomId?: {\n startsWith: string;\n };\n };\n};\n\nexport type InboxNotificationsQueryCriteria = {\n userId: string;\n /**\n * The query to filter inbox notifications by. It is based on our query language.\n *\n * @example\n * ```\n * {\n * query: \"unread:true\"\n * }\n * ```\n *\n * @example\n * ```\n * {\n * query: {\n * unread: true\n * }\n * }\n * ```\n *\n */\n query?: string | { unread: boolean };\n};\n\nexport type PaginationOptions = {\n limit?: number;\n startingAfter?: string;\n};\n\nexport type Page<T> = {\n nextCursor: string | null;\n data: T[];\n};\n\n// prettier-ignore\nexport type GetRoomsOptions =\n & RoomsQueryCriteria\n & PaginationOptions\n\n// prettier-ignore\nexport type GetInboxNotificationsOptions =\n & InboxNotificationsQueryCriteria\n & PaginationOptions;\n\nexport type CreateRoomOptions = {\n defaultAccesses: RoomPermission;\n groupsAccesses?: RoomAccesses;\n usersAccesses?: RoomAccesses;\n metadata?: RoomMetadata;\n};\n\nexport type UpdateRoomOptions = {\n defaultAccesses?: RoomPermission | null;\n groupsAccesses?: Record<\n string,\n [\"room:write\"] | [\"room:read\", \"room:presence:write\"] | null\n >;\n usersAccesses?: Record<\n string,\n [\"room:write\"] | [\"room:read\", \"room:presence:write\"] | null\n >;\n metadata?: Record<string, string | string[] | null>;\n};\n\nexport type UpsertRoomOptions = {\n update: UpdateRoomOptions;\n create?: CreateRoomOptions;\n};\n\nexport type RequestOptions = {\n signal?: AbortSignal;\n};\n\n/**\n * Converts ISO-formatted date strings to Date instances on RoomDataPlain\n * values.\n */\nfunction inflateRoomData(room: RoomDataPlain): RoomData {\n const createdAt = new Date(room.createdAt);\n const lastConnectionAt = room.lastConnectionAt\n ? new Date(room.lastConnectionAt)\n : undefined;\n\n return {\n ...room,\n createdAt,\n lastConnectionAt,\n };\n}\n\n/**\n * Interact with the Liveblocks API from your Node.js backend.\n */\nexport class Liveblocks {\n readonly #secret: string;\n readonly #baseUrl: URL;\n\n /**\n * Interact with the Liveblocks API from your Node.js backend.\n */\n constructor(options: LiveblocksOptions) {\n const options_ = options as Record<string, unknown>;\n const secret = options_.secret;\n assertSecretKey(secret, \"secret\");\n this.#secret = secret;\n this.#baseUrl = new URL(getBaseUrl(options.baseUrl));\n }\n\n async #post(\n path: URLSafeString,\n json: Json,\n options?: RequestOptions\n ): Promise<Response> {\n const url = urljoin(this.#baseUrl, path);\n const headers = {\n Authorization: `Bearer ${this.#secret}`,\n \"Content-Type\": \"application/json\",\n };\n const fetch = await fetchPolyfill();\n const res = await fetch(url, {\n method: \"POST\",\n headers,\n body: JSON.stringify(json),\n signal: options?.signal,\n });\n return res;\n }\n\n async #put(\n path: URLSafeString,\n json: Json,\n options?: RequestOptions\n ): Promise<Response> {\n const url = urljoin(this.#baseUrl, path);\n const headers = {\n Authorization: `Bearer ${this.#secret}`,\n \"Content-Type\": \"application/json\",\n };\n const fetch = await fetchPolyfill();\n return await fetch(url, {\n method: \"PUT\",\n headers,\n body: JSON.stringify(json),\n signal: options?.signal,\n });\n }\n\n async #putBinary(\n path: URLSafeString,\n body: Uint8Array,\n params?: QueryParams,\n options?: RequestOptions\n ): Promise<Response> {\n const url = urljoin(this.#baseUrl, path, params);\n const headers = {\n Authorization: `Bearer ${this.#secret}`,\n \"Content-Type\": \"application/octet-stream\",\n };\n const fetch = await fetchPolyfill();\n return await fetch(url, {\n method: \"PUT\",\n headers,\n body,\n signal: options?.signal,\n });\n }\n\n async #delete(\n path: URLSafeString,\n options?: RequestOptions\n ): Promise<Response> {\n const url = urljoin(this.#baseUrl, path);\n const headers = {\n Authorization: `Bearer ${this.#secret}`,\n };\n const fetch = await fetchPolyfill();\n const res = await fetch(url, {\n method: \"DELETE\",\n headers,\n signal: options?.signal,\n });\n return res;\n }\n\n async #get(\n path: URLSafeString,\n params?: QueryParams,\n options?: RequestOptions\n ): Promise<Response> {\n const url = urljoin(this.#baseUrl, path, params);\n const headers = {\n Authorization: `Bearer ${this.#secret}`,\n };\n const fetch = await fetchPolyfill();\n const res = await fetch(url, {\n method: \"GET\",\n headers,\n signal: options?.signal,\n });\n return res;\n }\n\n /* -------------------------------------------------------------------------------------------------\n * Authentication\n * -----------------------------------------------------------------------------------------------*/\n\n /**\n * Prepares a new session to authorize a user to access Liveblocks.\n *\n * IMPORTANT:\n * Always make sure that you trust the user making the request to your\n * backend before calling .prepareSession()!\n *\n * @param userId Tell Liveblocks the user ID of the user to authorize. Must\n * uniquely identify the user account in your system. The uniqueness of this\n * value will determine how many MAUs will be counted/billed.\n *\n * @param options.userInfo Custom metadata to attach to this user. Data you\n * add here will be visible to all other clients in the room, through the\n * `other.info` property.\n *\n */\n prepareSession(\n userId: string,\n ...rest: OptionalTupleUnless<\n CreateSessionOptions<U>,\n [options: CreateSessionOptions<U>]\n >\n ): Session {\n const options = rest[0];\n return new Session(this.#post.bind(this), userId, options?.userInfo);\n }\n\n /**\n * Call this to authenticate the user as an actor you want to allow to use\n * Liveblocks.\n *\n * You should use this method only if you want to manage your permissions\n * through the Liveblocks Permissions API. This method is more complicated to\n * set up, but allows for finer-grained specification of permissions.\n *\n * Calling `.identifyUser()` only lets you securely identify a user (and what\n * groups they belong to). What permissions this user will end up having is\n * determined by whatever permissions you assign the user/group in your\n * Liveblocks account, through the Permissions API:\n * https://liveblocks.io/docs/rooms/permissions\n *\n * IMPORTANT:\n * Always verify that you trust the user making the request before calling\n * .identifyUser()!\n *\n * @param identity Tell Liveblocks the user ID of the user to authenticate.\n * Must uniquely identify the user account in your system. The uniqueness of\n * this value will determine how many MAUs will be counted/billed.\n *\n * If you also want to assign which groups this user belongs to, use the\n * object form and specify the `groupIds` property. Those `groupIds` should\n * match the groupIds you assigned permissions to via the Liveblocks\n * Permissions API, see\n * https://liveblocks.io/docs/rooms/permissions#permissions-levels-groups-accesses-example\n *\n * @param options.userInfo Custom metadata to attach to this user. Data you\n * add here will be visible to all other clients in the room, through the\n * `other.info` property.\n */\n // These fields define the security identity of the user. Whatever you pass in here will define which\n public async identifyUser(\n identity:\n | string // Shorthand for userId\n | Identity,\n ...rest: OptionalTupleUnless<\n IdentifyUserOptions<U>,\n [options: IdentifyUserOptions<U>]\n >\n ): Promise<AuthResponse> {\n const options = rest[0];\n\n const path = url`/v2/identify-user`;\n\n const { userId, groupIds, tenantId } =\n typeof identity === \"string\"\n ? { userId: identity, groupIds: undefined, tenantId: undefined }\n : identity;\n\n assertNonEmpty(userId, \"userId\");\n\n const body = {\n userId,\n groupIds,\n tenantId,\n userInfo: options?.userInfo,\n };\n\n try {\n const resp = await this.#post(path, body);\n\n return {\n status: normalizeStatusCode(resp.status),\n body: await resp.text(),\n };\n } catch (er) {\n return {\n status: 503 /* Service Unavailable */,\n body: `Call to ${urljoin(\n this.#baseUrl,\n path\n )} failed. See \"error\" for more information.`,\n error: er as Error | undefined,\n };\n }\n }\n\n /* -------------------------------------------------------------------------------------------------\n * Room\n * -----------------------------------------------------------------------------------------------*/\n\n /**\n * Returns a list of your rooms. The rooms are returned sorted by creation date, from newest to oldest. You can filter rooms by metadata, users accesses and groups accesses.\n * @param params.limit (optional) A limit on the number of rooms to be returned. The limit can range between 1 and 100, and defaults to 20.\n * @param params.startingAfter (optional) A cursor used for pagination. You get the value from the response of the previous page.\n * @param params.userId (optional) A filter on users accesses.\n * @param params.metadata (optional) A filter on metadata. Multiple metadata keys can be used to filter rooms.\n * @param params.groupIds (optional) A filter on groups accesses. Multiple groups can be used.\n * @param params.query (optional) A query to filter rooms by. It is based on our query language. You can filter by metadata and room ID.\n * @param options.signal (optional) An abort signal to cancel the request.\n * @returns A list of rooms.\n */\n public async getRooms(\n params: GetRoomsOptions = {},\n options?: RequestOptions\n ): Promise<Page<RoomData>> {\n const path = url`/v2/rooms`;\n\n let query: string | undefined;\n\n if (typeof params.query === \"string\") {\n query = params.query;\n } else if (typeof params.query === \"object\") {\n query = objectToQuery(params.query);\n }\n\n const queryParams = {\n limit: params.limit,\n startingAfter: params.startingAfter,\n userId: params.userId,\n groupIds: params.groupIds ? params.groupIds.join(\",\") : undefined,\n query,\n };\n\n const res = await this.#get(path, queryParams, options);\n if (!res.ok) {\n throw await LiveblocksError.from(res);\n }\n\n const page = (await res.json()) as Page<RoomDataPlain>;\n const rooms: RoomData[] = page.data.map(inflateRoomData);\n return {\n ...page,\n data: rooms,\n };\n }\n\n /**\n * Iterates over all rooms that match the given criteria.\n *\n * The difference with .getRooms() is that pagination will happen\n * automatically under the hood, using the given `pageSize`.\n *\n * @param criteria.userId (optional) A filter on users accesses.\n * @param criteria.groupIds (optional) A filter on groups accesses. Multiple groups can be used.\n * @param criteria.query.roomId (optional) A filter by room ID.\n * @param criteria.query.metadata (optional) A filter by metadata.\n *\n * @param options.pageSize (optional) The page size to use for each request.\n * @param options.signal (optional) An abort signal to cancel the request.\n */\n async *iterRooms(\n criteria: RoomsQueryCriteria,\n options?: RequestOptions & { pageSize?: number }\n ): AsyncGenerator<RoomData> {\n // TODO Dry up this async iterable implementation for pagination\n const { signal } = options ?? {};\n const pageSize = checkBounds(\"pageSize\", options?.pageSize ?? 40, 20);\n\n let cursor: string | undefined = undefined;\n while (true) {\n const { nextCursor, data } = await this.getRooms(\n { ...criteria, startingAfter: cursor, limit: pageSize },\n { signal }\n );\n for (const item of data) {\n yield item;\n }\n if (!nextCursor) {\n break;\n }\n cursor = nextCursor;\n }\n }\n\n /**\n * Creates a new room with the given id.\n * @param roomId The id of the room to create.\n * @param params.defaultAccesses The default accesses for the room.\n * @param params.groupsAccesses (optional) The group accesses for the room. Can contain a maximum of 100 entries. Key length has a limit of 40 characters.\n * @param params.usersAccesses (optional) The user accesses for the room. Can contain a maximum of 100 entries. Key length has a limit of 40 characters.\n * @param params.metadata (optional) The metadata for the room. Supports upto a maximum of 50 entries. Key length has a limit of 40 characters. Value length has a limit of 256 characters.\n * @param options.signal (optional) An abort signal to cancel the request.\n * @returns The created room.\n */\n public async createRoom(\n roomId: string,\n params: CreateRoomOptions,\n options?: RequestOptions & { idempotent?: boolean }\n ): Promise<RoomData> {\n const { defaultAccesses, groupsAccesses, usersAccesses, metadata } = params;\n\n const res = await this.#post(\n options?.idempotent ? url`/v2/rooms?idempotent` : url`/v2/rooms`,\n {\n id: roomId,\n defaultAccesses,\n groupsAccesses,\n usersAccesses,\n metadata,\n },\n options\n );\n\n if (!res.ok) {\n throw await LiveblocksError.from(res);\n }\n\n const data = (await res.json()) as RoomDataPlain;\n return inflateRoomData(data);\n }\n\n /**\n * Returns a room with the given id, or creates one with the given creation\n * options if it doesn't exist yet.\n *\n * @param roomId The id of the room.\n * @param params.defaultAccesses The default accesses for the room if the room will be created.\n * @param params.groupsAccesses (optional) The group accesses for the room if the room will be created. Can contain a maximum of 100 entries. Key length has a limit of 40 characters.\n * @param params.usersAccesses (optional) The user accesses for the room if the room will be created. Can contain a maximum of 100 entries. Key length has a limit of 40 characters.\n * @param params.metadata (optional) The metadata for the room if the room will be created. Supports upto a maximum of 50 entries. Key length has a limit of 40 characters. Value length has a limit of 256 characters.\n * @param options.signal (optional) An abort signal to cancel the request.\n * @returns The room.\n */\n public async getOrCreateRoom(\n roomId: string,\n params: CreateRoomOptions,\n options?: RequestOptions\n ): Promise<RoomData> {\n return await this.createRoom(roomId, params, {\n ...options,\n idempotent: true,\n });\n }\n\n /**\n * Updates or creates a new room with the given properties.\n *\n * @param roomId The id of the room to update or create.\n * @param update The fields to update. These values will be updated when the room exists, or set when the room does not exist and gets created. Must specify at least one key.\n * @param create (optional) The fields to only use when the room does not exist and will be created. When the room already exists, these values are ignored.\n * @param options.signal (optional) An abort signal to cancel the request.\n * @returns The room.\n */\n public async upsertRoom(\n roomId: string,\n params: UpsertRoomOptions,\n options?: RequestOptions\n ): Promise<RoomData> {\n const res = await this.#post(\n url`/v2/rooms/${roomId}/upsert`,\n params,\n options\n );\n if (!res.ok) {\n throw await LiveblocksError.from(res);\n }\n\n const data = (await res.json()) as RoomDataPlain;\n return inflateRoomData(data);\n }\n\n /**\n * Returns a room with the given id.\n * @param roomId The id of the room to return.\n * @returns The room with the given id.\n * @param options.signal (optional) An abort signal to cancel the request.\n */\n public async getRoom(\n roomId: string,\n options?: RequestOptions\n ): Promise<RoomData> {\n const res = await this.#get(url`/v2/rooms/${roomId}`, undefined, options);\n\n if (!res.ok) {\n throw await LiveblocksError.from(res);\n }\n\n const data = (await res.json()) as RoomDataPlain;\n return inflateRoomData(data);\n }\n\n /**\n * Updates specific properties of a room. It’s not necessary to provide the entire room’s information.\n * Setting a property to `null` means to delete this property.\n * @param roomId The id of the room to update.\n * @param params.defaultAccesses (optional) The default accesses for the room.\n * @param params.groupsAccesses (optional) The group accesses for the room. Can contain a maximum of 100 entries. Key length has a limit of 40 characters.\n * @param params.usersAccesses (optional) The user accesses for the room. Can contain a maximum of 100 entries. Key length has a limit of 40 characters.\n * @param params.metadata (optional) The metadata for the room. Supports upto a maximum of 50 entries. Key length has a limit of 40 characters. Value length has a limit of 256 characters.\n * @param options.signal (optional) An abort signal to cancel the request.\n * @returns The updated room.\n */\n public async updateRoom(\n roomId: string,\n params: UpdateRoomOptions,\n options?: RequestOptions\n ): Promise<RoomData> {\n const { defaultAccesses, groupsAccesses, usersAccesses, metadata } = params;\n\n const res = await this.#post(\n url`/v2/rooms/${roomId}`,\n {\n defaultAccesses,\n groupsAccesses,\n usersAccesses,\n metadata,\n },\n options\n );\n\n if (!res.ok) {\n throw await LiveblocksError.from(res);\n }\n\n const data = (await res.json()) as RoomDataPlain;\n return inflateRoomData(data);\n }\n\n /**\n * Deletes a room with the given id. A deleted room is no longer accessible from the API or the dashboard and it cannot be restored.\n * @param roomId The id of the room to delete.\n * @param options.signal (optional) An abort signal to cancel the request.\n */\n public async deleteRoom(\n roomId: string,\n options?: RequestOptions\n ): Promise<void> {\n const res = await this.#delete(url`/v2/rooms/${roomId}`, options);\n\n if (!res.ok) {\n throw await LiveblocksError.from(res);\n }\n }\n\n /**\n * Returns a list of users currently present in the requested room. For better performance, we recommand to call this endpoint every 10 seconds maximum. Duplicates can happen if a user is in the requested room with multiple browser tabs opened.\n * @param roomId The id of the room to get the users from.\n * @param options.signal (optional) An abort signal to cancel the request.\n * @returns A list of users currently present in the requested room.\n */\n public async getActiveUsers(\n roomId: string,\n options?: RequestOptions\n ): Promise<{ data: RoomUser<U>[] }> {\n const res = await this.#get(\n url`/v2/rooms/${roomId}/active_users`,\n undefined,\n options\n );\n\n if (!res.ok) {\n throw await LiveblocksError.from(res);\n }\n\n return (await res.json()) as Promise<{ data: RoomUser<U>[] }>;\n }\n\n /**\n * Boadcasts an event to a room without having to connect to it via the client from @liveblocks/client. The connectionId passed to event listeners is -1 when using this API.\n * @param roomId The id of the room to broadcast the event to.\n * @param message The message to broadcast. It can be any JSON serializable value.\n * @param options.signal (optional) An abort signal to cancel the request.\n */\n public async broadcastEvent(\n roomId: string,\n message: E,\n options?: RequestOptions\n ): Promise<void> {\n const res = await this.#post(\n url`/v2/rooms/${roomId}/broadcast_event`,\n message,\n options\n );\n if (!res.ok) {\n throw await LiveblocksError.from(res);\n }\n }\n\