@liveblocks/core 3.20.0-perm5 → 3.20.0-perm7
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/dist/index.cjs +99 -84
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +25 -27
- package/dist/index.d.ts +25 -27
- package/dist/index.js +101 -86
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -6,7 +6,7 @@ var __export = (target, all) => {
|
|
|
6
6
|
|
|
7
7
|
// src/version.ts
|
|
8
8
|
var PKG_NAME = "@liveblocks/core";
|
|
9
|
-
var PKG_VERSION = "3.20.0-
|
|
9
|
+
var PKG_VERSION = "3.20.0-perm7";
|
|
10
10
|
var PKG_FORMAT = "cjs";
|
|
11
11
|
|
|
12
12
|
// src/dupe-detection.ts
|
|
@@ -5167,7 +5167,7 @@ function createReceivingToolInvocation(invocationId, name, partialArgsText = "")
|
|
|
5167
5167
|
};
|
|
5168
5168
|
}
|
|
5169
5169
|
|
|
5170
|
-
// src/
|
|
5170
|
+
// src/permissions.ts
|
|
5171
5171
|
var Permission = {
|
|
5172
5172
|
/**
|
|
5173
5173
|
* Default permission for a room.
|
|
@@ -5202,24 +5202,13 @@ var Permission = {
|
|
|
5202
5202
|
*/
|
|
5203
5203
|
LegacyRoomPresenceWrite: "room:presence:write"
|
|
5204
5204
|
};
|
|
5205
|
-
var ACCESS_LEVELS = [
|
|
5206
|
-
|
|
5207
|
-
"read",
|
|
5208
|
-
"write"
|
|
5209
|
-
];
|
|
5210
|
-
var ACCESS_RANKS = {
|
|
5205
|
+
var ACCESS_LEVELS = ["none", "read", "write"];
|
|
5206
|
+
var ACCESS_LEVEL_RANKS = {
|
|
5211
5207
|
none: 0,
|
|
5212
5208
|
read: 1,
|
|
5213
5209
|
write: 2
|
|
5214
5210
|
};
|
|
5215
|
-
var
|
|
5216
|
-
room: "none",
|
|
5217
|
-
storage: "none",
|
|
5218
|
-
comments: "none",
|
|
5219
|
-
feeds: "none",
|
|
5220
|
-
personal: "write"
|
|
5221
|
-
};
|
|
5222
|
-
var RESOURCE_PERMISSIONS = {
|
|
5211
|
+
var PERMISSIONS_BY_RESOURCE = {
|
|
5223
5212
|
room: {
|
|
5224
5213
|
read: [Permission.Read, Permission.RoomRead],
|
|
5225
5214
|
write: [Permission.Write, Permission.RoomWrite]
|
|
@@ -5243,14 +5232,25 @@ var RESOURCE_PERMISSIONS = {
|
|
|
5243
5232
|
none: [Permission.FeedsNone]
|
|
5244
5233
|
}
|
|
5245
5234
|
};
|
|
5246
|
-
var
|
|
5235
|
+
var NO_PERMISSION_MATRIX = {
|
|
5236
|
+
room: "none",
|
|
5237
|
+
storage: "none",
|
|
5238
|
+
comments: "none",
|
|
5239
|
+
feeds: "none",
|
|
5240
|
+
personal: "none"
|
|
5241
|
+
};
|
|
5242
|
+
var BASE_PERMISSION_RESOURCE = "room";
|
|
5247
5243
|
var ROOM_PERMISSION_RESOURCES = [
|
|
5248
5244
|
"storage",
|
|
5249
5245
|
"comments",
|
|
5250
5246
|
"feeds"
|
|
5251
5247
|
];
|
|
5248
|
+
var VALID_PERMISSIONS = new Set(Object.values(Permission));
|
|
5249
|
+
function isPermission(permission) {
|
|
5250
|
+
return VALID_PERMISSIONS.has(permission);
|
|
5251
|
+
}
|
|
5252
5252
|
function resolveResourceAccess(scopes, resource) {
|
|
5253
|
-
const permissions =
|
|
5253
|
+
const permissions = PERMISSIONS_BY_RESOURCE[resource];
|
|
5254
5254
|
let resourceAccess;
|
|
5255
5255
|
for (const access of ACCESS_LEVELS) {
|
|
5256
5256
|
const scopedPermissions = permissions[access];
|
|
@@ -5260,13 +5260,14 @@ function resolveResourceAccess(scopes, resource) {
|
|
|
5260
5260
|
}
|
|
5261
5261
|
return resourceAccess;
|
|
5262
5262
|
}
|
|
5263
|
-
function
|
|
5263
|
+
function permissionMatrixFromResolvedScopes(resolved) {
|
|
5264
5264
|
if (!resolved.hasDefaultPermission) {
|
|
5265
|
-
return NO_PERMISSION_MATRIX;
|
|
5265
|
+
return { ...NO_PERMISSION_MATRIX };
|
|
5266
5266
|
}
|
|
5267
5267
|
const matrix = {
|
|
5268
5268
|
...NO_PERMISSION_MATRIX,
|
|
5269
|
-
[
|
|
5269
|
+
[BASE_PERMISSION_RESOURCE]: resolved.baseAccess,
|
|
5270
|
+
personal: "write"
|
|
5270
5271
|
};
|
|
5271
5272
|
for (const resource of ROOM_PERMISSION_RESOURCES) {
|
|
5272
5273
|
matrix[resource] = _nullishCoalesce(resolved.matrix[resource], () => ( resolved.baseAccess));
|
|
@@ -5274,9 +5275,9 @@ function resolveFullPermissionMatrix(resolved) {
|
|
|
5274
5275
|
return matrix;
|
|
5275
5276
|
}
|
|
5276
5277
|
function permissionMatrixFromScopes(scopes) {
|
|
5277
|
-
return
|
|
5278
|
+
return permissionMatrixFromResolvedScopes(resolvePermissionScopes(scopes));
|
|
5278
5279
|
}
|
|
5279
|
-
function
|
|
5280
|
+
function resolvePermissionScopes(scopes) {
|
|
5280
5281
|
const hasDefaultPermission = scopes.includes(Permission.Write) || scopes.includes(Permission.Read) || scopes.includes(Permission.RoomWrite) || scopes.includes(Permission.RoomRead);
|
|
5281
5282
|
const baseAccess = scopes.includes(Permission.Write) || scopes.includes(Permission.RoomWrite) ? "write" : scopes.includes(Permission.Read) || scopes.includes(Permission.RoomRead) ? "read" : "none";
|
|
5282
5283
|
const matrix = {};
|
|
@@ -5288,26 +5289,9 @@ function resolvePermissionMatrix(scopes) {
|
|
|
5288
5289
|
}
|
|
5289
5290
|
return { hasDefaultPermission, baseAccess, matrix };
|
|
5290
5291
|
}
|
|
5291
|
-
function hasPermissionAccess(
|
|
5292
|
-
const matrix = isPermissionScopes(source) ? permissionMatrixFromScopes(source) : source;
|
|
5292
|
+
function hasPermissionAccess(matrix, resource, requiredAccess) {
|
|
5293
5293
|
const access = _nullishCoalesce(matrix[resource], () => ( "none"));
|
|
5294
|
-
return
|
|
5295
|
-
}
|
|
5296
|
-
function isPermissionScopes(source) {
|
|
5297
|
-
return Array.isArray(source);
|
|
5298
|
-
}
|
|
5299
|
-
|
|
5300
|
-
// src/permissions.ts
|
|
5301
|
-
var VALID_PERMISSIONS = new Set(Object.values(Permission));
|
|
5302
|
-
function permissionForAccessLevel(resource, access, field = resource) {
|
|
5303
|
-
const levels = RESOURCE_PERMISSIONS[resource];
|
|
5304
|
-
const permissions = levels[access];
|
|
5305
|
-
if (permissions === void 0 || permissions.length === 0) {
|
|
5306
|
-
throw new Error(
|
|
5307
|
-
`Invalid permission level for ${field}: ${_nullishCoalesce(JSON.stringify(access), () => ( String(access)))}`
|
|
5308
|
-
);
|
|
5309
|
-
}
|
|
5310
|
-
return permissions[0];
|
|
5294
|
+
return ACCESS_LEVEL_RANKS[access] >= ACCESS_LEVEL_RANKS[requiredAccess];
|
|
5311
5295
|
}
|
|
5312
5296
|
function resolveRoomPermissionMatrix(permissions, roomId) {
|
|
5313
5297
|
const matchedPermissions = permissions.filter(
|
|
@@ -5321,7 +5305,7 @@ function resolveRoomPermissionMatrix(permissions, roomId) {
|
|
|
5321
5305
|
const explicitMatrix = {};
|
|
5322
5306
|
const explicitSpecificity = {};
|
|
5323
5307
|
for (const permission of matchedPermissions) {
|
|
5324
|
-
const resolved =
|
|
5308
|
+
const resolved = resolvePermissionScopes(permission.scopes);
|
|
5325
5309
|
const specificity = getResourceSpecificity(permission.resource);
|
|
5326
5310
|
if (resolved.hasDefaultPermission) {
|
|
5327
5311
|
hasDefaultPermission = true;
|
|
@@ -5343,61 +5327,59 @@ function resolveRoomPermissionMatrix(permissions, roomId) {
|
|
|
5343
5327
|
}
|
|
5344
5328
|
}
|
|
5345
5329
|
}
|
|
5346
|
-
return
|
|
5330
|
+
return permissionMatrixFromResolvedScopes({
|
|
5347
5331
|
hasDefaultPermission,
|
|
5348
5332
|
baseAccess,
|
|
5349
5333
|
matrix: explicitMatrix
|
|
5350
5334
|
});
|
|
5351
5335
|
}
|
|
5352
|
-
function
|
|
5353
|
-
if (!Array.isArray(
|
|
5336
|
+
function normalizeRoomPermissions(permissions) {
|
|
5337
|
+
if (!Array.isArray(permissions)) {
|
|
5354
5338
|
throw new Error("Permission list must be an array");
|
|
5355
5339
|
}
|
|
5356
|
-
return
|
|
5357
|
-
if (!
|
|
5340
|
+
return permissions.map((permission) => {
|
|
5341
|
+
if (!isPermission(permission)) {
|
|
5358
5342
|
throw new Error(`Not a valid permission: ${permission}`);
|
|
5359
5343
|
}
|
|
5360
5344
|
return permission;
|
|
5361
5345
|
});
|
|
5362
5346
|
}
|
|
5363
|
-
function
|
|
5364
|
-
if (
|
|
5347
|
+
function normalizeRoomAccesses(accesses) {
|
|
5348
|
+
if (accesses === void 0) {
|
|
5365
5349
|
return void 0;
|
|
5366
5350
|
}
|
|
5367
5351
|
return Object.fromEntries(
|
|
5368
|
-
Object.entries(
|
|
5352
|
+
Object.entries(accesses).map(([id, permissions]) => [
|
|
5369
5353
|
id,
|
|
5370
|
-
|
|
5354
|
+
normalizeRoomPermissions(permissions)
|
|
5371
5355
|
])
|
|
5372
5356
|
);
|
|
5373
5357
|
}
|
|
5374
|
-
function
|
|
5375
|
-
if (
|
|
5358
|
+
function normalizeUpdateRoomAccesses(accesses) {
|
|
5359
|
+
if (accesses === void 0) {
|
|
5376
5360
|
return void 0;
|
|
5377
5361
|
}
|
|
5378
5362
|
return Object.fromEntries(
|
|
5379
|
-
Object.entries(
|
|
5363
|
+
Object.entries(accesses).map(([id, permissions]) => [
|
|
5380
5364
|
id,
|
|
5381
|
-
permissions === null ? null :
|
|
5365
|
+
permissions === null ? null : normalizeRoomPermissions(permissions)
|
|
5382
5366
|
])
|
|
5383
5367
|
);
|
|
5384
5368
|
}
|
|
5385
|
-
function mergePermissionMatrices(
|
|
5369
|
+
function mergePermissionMatrices(matrices) {
|
|
5386
5370
|
return {
|
|
5387
|
-
room: strongestMatrixAccess(
|
|
5388
|
-
storage: strongestMatrixAccess(
|
|
5389
|
-
comments: strongestMatrixAccess(
|
|
5390
|
-
feeds: strongestMatrixAccess(
|
|
5391
|
-
personal: "
|
|
5371
|
+
room: strongestMatrixAccess(matrices, "room"),
|
|
5372
|
+
storage: strongestMatrixAccess(matrices, "storage"),
|
|
5373
|
+
comments: strongestMatrixAccess(matrices, "comments"),
|
|
5374
|
+
feeds: strongestMatrixAccess(matrices, "feeds"),
|
|
5375
|
+
personal: strongestMatrixAccess(matrices, "personal")
|
|
5392
5376
|
};
|
|
5393
5377
|
}
|
|
5394
5378
|
function permissionMatrixToScopes(matrix) {
|
|
5395
5379
|
const scopes = [];
|
|
5396
5380
|
const baseAccess = matrix.room;
|
|
5397
5381
|
if (baseAccess !== "none") {
|
|
5398
|
-
scopes.push(
|
|
5399
|
-
permissionForAccessLevel(DEFAULT_PERMISSION_RESOURCE, baseAccess)
|
|
5400
|
-
);
|
|
5382
|
+
scopes.push(permissionForAccessLevel(BASE_PERMISSION_RESOURCE, baseAccess));
|
|
5401
5383
|
}
|
|
5402
5384
|
for (const resource of ROOM_PERMISSION_RESOURCES) {
|
|
5403
5385
|
const access = matrix[resource];
|
|
@@ -5407,14 +5389,37 @@ function permissionMatrixToScopes(matrix) {
|
|
|
5407
5389
|
}
|
|
5408
5390
|
return scopes;
|
|
5409
5391
|
}
|
|
5410
|
-
function
|
|
5411
|
-
|
|
5412
|
-
|
|
5392
|
+
function mergeRoomPermissionScopes({
|
|
5393
|
+
defaultAccesses,
|
|
5394
|
+
groupsAccesses,
|
|
5395
|
+
userAccesses
|
|
5396
|
+
}) {
|
|
5397
|
+
return permissionMatrixToScopes(
|
|
5398
|
+
mergePermissionMatrices([
|
|
5399
|
+
permissionMatrixFromScopes(defaultAccesses),
|
|
5400
|
+
...groupsAccesses.map(permissionMatrixFromScopes),
|
|
5401
|
+
permissionMatrixFromScopes(userAccesses)
|
|
5402
|
+
])
|
|
5403
|
+
);
|
|
5404
|
+
}
|
|
5405
|
+
function permissionForAccessLevel(resource, access, field = resource) {
|
|
5406
|
+
const levels = PERMISSIONS_BY_RESOURCE[resource];
|
|
5407
|
+
const permissions = levels[access];
|
|
5408
|
+
if (permissions === void 0 || permissions.length === 0) {
|
|
5409
|
+
throw new Error(
|
|
5410
|
+
`Invalid permission level for ${field}: ${_nullishCoalesce(JSON.stringify(access), () => ( String(access)))}`
|
|
5411
|
+
);
|
|
5412
|
+
}
|
|
5413
|
+
return permissions[0];
|
|
5414
|
+
}
|
|
5415
|
+
function strongestMatrixAccess(matrices, resource) {
|
|
5416
|
+
return matrices.reduce(
|
|
5417
|
+
(strongest, matrix) => strongestAccess(strongest, matrix[resource]),
|
|
5413
5418
|
"none"
|
|
5414
5419
|
);
|
|
5415
5420
|
}
|
|
5416
5421
|
function strongestAccess(left, right) {
|
|
5417
|
-
return
|
|
5422
|
+
return ACCESS_LEVEL_RANKS[right] > ACCESS_LEVEL_RANKS[left] ? right : left;
|
|
5418
5423
|
}
|
|
5419
5424
|
function resourceMatchesRoomId(resource, roomId) {
|
|
5420
5425
|
if (resource.includes("*")) {
|
|
@@ -5592,7 +5597,7 @@ function makeCachedToken(token, expiresAt) {
|
|
|
5592
5597
|
function getAuthTokenPermissionScopes(permissions) {
|
|
5593
5598
|
return Object.entries(permissions).map(([resource, scopes]) => ({
|
|
5594
5599
|
resource,
|
|
5595
|
-
scopes
|
|
5600
|
+
scopes: normalizeRoomPermissions(scopes)
|
|
5596
5601
|
}));
|
|
5597
5602
|
}
|
|
5598
5603
|
function cachedTokenSatisfiesRequest(cachedToken, request) {
|
|
@@ -9500,15 +9505,15 @@ var ClientMsgCode = Object.freeze({
|
|
|
9500
9505
|
|
|
9501
9506
|
// src/refs/ManagedOthers.ts
|
|
9502
9507
|
function makeUser(conn, presence) {
|
|
9503
|
-
const { connectionId, id, info } = conn;
|
|
9504
|
-
const canWrite
|
|
9508
|
+
const { connectionId, id, info, access } = conn;
|
|
9509
|
+
const { canWrite, canComment } = access;
|
|
9505
9510
|
return freeze(
|
|
9506
9511
|
compactObject({
|
|
9507
9512
|
connectionId,
|
|
9508
9513
|
id,
|
|
9509
9514
|
info,
|
|
9510
9515
|
canWrite,
|
|
9511
|
-
canComment
|
|
9516
|
+
canComment,
|
|
9512
9517
|
isReadOnly: !canWrite,
|
|
9513
9518
|
// Deprecated, kept for backward-compatibility
|
|
9514
9519
|
presence
|
|
@@ -9579,7 +9584,7 @@ var ManagedOthers = class {
|
|
|
9579
9584
|
* Records a known connection. This records the connection ID and the
|
|
9580
9585
|
* associated metadata.
|
|
9581
9586
|
*/
|
|
9582
|
-
setConnection(connectionId, metaUserId, metaUserInfo,
|
|
9587
|
+
setConnection(connectionId, metaUserId, metaUserInfo, access) {
|
|
9583
9588
|
this.#internal.mutate((state) => {
|
|
9584
9589
|
state.connections.set(
|
|
9585
9590
|
connectionId,
|
|
@@ -9587,7 +9592,7 @@ var ManagedOthers = class {
|
|
|
9587
9592
|
connectionId,
|
|
9588
9593
|
id: metaUserId,
|
|
9589
9594
|
info: metaUserInfo,
|
|
9590
|
-
|
|
9595
|
+
access
|
|
9591
9596
|
})
|
|
9592
9597
|
);
|
|
9593
9598
|
if (!state.presences.has(connectionId)) {
|
|
@@ -9740,6 +9745,14 @@ function defaultMessageFromContext(context) {
|
|
|
9740
9745
|
|
|
9741
9746
|
// src/room.ts
|
|
9742
9747
|
var FEEDS_TIMEOUT = 5e3;
|
|
9748
|
+
function connectionAccessFromScopes(scopes) {
|
|
9749
|
+
const roomPermissions = normalizeRoomPermissions(scopes);
|
|
9750
|
+
const matrix = permissionMatrixFromScopes(roomPermissions);
|
|
9751
|
+
return {
|
|
9752
|
+
canWrite: hasPermissionAccess(matrix, "storage", "write"),
|
|
9753
|
+
canComment: hasPermissionAccess(matrix, "comments", "write")
|
|
9754
|
+
};
|
|
9755
|
+
}
|
|
9743
9756
|
function makeIdFactory(connectionId) {
|
|
9744
9757
|
let count = 0;
|
|
9745
9758
|
return () => `${connectionId}:${count++}`;
|
|
@@ -9964,8 +9977,8 @@ function createRoom(options, config) {
|
|
|
9964
9977
|
}
|
|
9965
9978
|
}
|
|
9966
9979
|
function isStorageWritable() {
|
|
9967
|
-
const
|
|
9968
|
-
return
|
|
9980
|
+
const permissionMatrix = _optionalChain([context, 'access', _224 => _224.dynamicSessionInfoSig, 'access', _225 => _225.get, 'call', _226 => _226(), 'optionalAccess', _227 => _227.permissionMatrix]);
|
|
9981
|
+
return permissionMatrix !== void 0 ? hasPermissionAccess(permissionMatrix, "storage", "write") : true;
|
|
9969
9982
|
}
|
|
9970
9983
|
const eventHub = {
|
|
9971
9984
|
status: makeEventSource(),
|
|
@@ -10027,7 +10040,7 @@ function createRoom(options, config) {
|
|
|
10027
10040
|
return null;
|
|
10028
10041
|
} else {
|
|
10029
10042
|
const canWrite = hasPermissionAccess(
|
|
10030
|
-
dynamicSession.
|
|
10043
|
+
dynamicSession.permissionMatrix,
|
|
10031
10044
|
"storage",
|
|
10032
10045
|
"write"
|
|
10033
10046
|
);
|
|
@@ -10038,7 +10051,7 @@ function createRoom(options, config) {
|
|
|
10038
10051
|
presence: myPresence,
|
|
10039
10052
|
canWrite,
|
|
10040
10053
|
canComment: hasPermissionAccess(
|
|
10041
|
-
dynamicSession.
|
|
10054
|
+
dynamicSession.permissionMatrix,
|
|
10042
10055
|
"comments",
|
|
10043
10056
|
"write"
|
|
10044
10057
|
)
|
|
@@ -10330,7 +10343,9 @@ function createRoom(options, config) {
|
|
|
10330
10343
|
context.dynamicSessionInfoSig.set({
|
|
10331
10344
|
actor: message.actor,
|
|
10332
10345
|
nonce: message.nonce,
|
|
10333
|
-
|
|
10346
|
+
permissionMatrix: permissionMatrixFromScopes(
|
|
10347
|
+
normalizeRoomPermissions(message.scopes)
|
|
10348
|
+
),
|
|
10334
10349
|
meta: message.meta
|
|
10335
10350
|
});
|
|
10336
10351
|
context.idFactory = makeIdFactory(message.actor);
|
|
@@ -10351,7 +10366,7 @@ function createRoom(options, config) {
|
|
|
10351
10366
|
connectionId,
|
|
10352
10367
|
user.id,
|
|
10353
10368
|
user.info,
|
|
10354
|
-
user.scopes
|
|
10369
|
+
connectionAccessFromScopes(user.scopes)
|
|
10355
10370
|
);
|
|
10356
10371
|
}
|
|
10357
10372
|
return { type: "reset" };
|
|
@@ -10371,7 +10386,7 @@ function createRoom(options, config) {
|
|
|
10371
10386
|
message.actor,
|
|
10372
10387
|
message.id,
|
|
10373
10388
|
message.info,
|
|
10374
|
-
message.scopes
|
|
10389
|
+
connectionAccessFromScopes(message.scopes)
|
|
10375
10390
|
);
|
|
10376
10391
|
context.buffer.messages.push({
|
|
10377
10392
|
type: ClientMsgCode.UPDATE_PRESENCE,
|
|
@@ -11737,7 +11752,6 @@ function createClient(options) {
|
|
|
11737
11752
|
),
|
|
11738
11753
|
authenticate: async () => {
|
|
11739
11754
|
const resp = await authManager.getAuthValue({
|
|
11740
|
-
// TODO: Should we have permissions for AI Copilots?
|
|
11741
11755
|
resource: "personal",
|
|
11742
11756
|
access: "write"
|
|
11743
11757
|
});
|
|
@@ -12703,5 +12717,6 @@ detectDupes(PKG_NAME, PKG_VERSION, PKG_FORMAT);
|
|
|
12703
12717
|
|
|
12704
12718
|
|
|
12705
12719
|
|
|
12706
|
-
|
|
12720
|
+
|
|
12721
|
+
exports.ClientMsgCode = ClientMsgCode; exports.CrdtType = CrdtType; exports.DefaultMap = DefaultMap; exports.Deque = Deque; exports.DerivedSignal = DerivedSignal; exports.FeedRequestErrorCode = FeedRequestErrorCode; exports.HttpError = HttpError; exports.LiveList = LiveList; exports.LiveMap = LiveMap; exports.LiveObject = LiveObject; exports.LiveblocksError = LiveblocksError; exports.MENTION_CHARACTER = MENTION_CHARACTER; exports.MutableSignal = MutableSignal; exports.OpCode = OpCode; exports.Permission = Permission; exports.Promise_withResolvers = Promise_withResolvers; exports.ServerMsgCode = ServerMsgCode; exports.Signal = Signal; exports.SortedList = SortedList; exports.TextEditorType = TextEditorType; exports.WebsocketCloseCodes = WebsocketCloseCodes; exports.asPos = asPos; exports.assert = assert; exports.assertNever = assertNever; exports.autoRetry = autoRetry; exports.b64decode = b64decode; exports.batch = batch; exports.checkBounds = checkBounds; exports.chunk = chunk; exports.cloneLson = cloneLson; exports.compactNodesToNodeStream = compactNodesToNodeStream; exports.compactObject = compactObject; exports.console = fancy_console_exports; exports.convertToCommentData = convertToCommentData; exports.convertToCommentUserReaction = convertToCommentUserReaction; exports.convertToGroupData = convertToGroupData; exports.convertToInboxNotificationData = convertToInboxNotificationData; exports.convertToSubscriptionData = convertToSubscriptionData; exports.convertToThreadData = convertToThreadData; exports.convertToUserSubscriptionData = convertToUserSubscriptionData; exports.createClient = createClient; exports.createCommentAttachmentId = createCommentAttachmentId; exports.createCommentId = createCommentId; exports.createInboxNotificationId = createInboxNotificationId; exports.createManagedPool = createManagedPool; exports.createNotificationSettings = createNotificationSettings; exports.createThreadId = createThreadId; exports.deepLiveify = deepLiveify; exports.defineAiTool = defineAiTool; exports.deprecate = deprecate; exports.deprecateIf = deprecateIf; exports.detectDupes = detectDupes; exports.entries = entries; exports.errorIf = errorIf; exports.findLastIndex = findLastIndex; exports.freeze = freeze; exports.generateUrl = generateUrl; exports.getMentionsFromCommentBody = getMentionsFromCommentBody; exports.getSubscriptionKey = getSubscriptionKey; exports.hasPermissionAccess = hasPermissionAccess; exports.html = html; exports.htmlSafe = htmlSafe; exports.isCommentBodyLink = isCommentBodyLink; exports.isCommentBodyMention = isCommentBodyMention; exports.isCommentBodyText = isCommentBodyText; exports.isJsonArray = isJsonArray; exports.isJsonObject = isJsonObject; exports.isJsonScalar = isJsonScalar; exports.isListStorageNode = isListStorageNode; exports.isLiveNode = isLiveNode; exports.isMapStorageNode = isMapStorageNode; exports.isNotificationChannelEnabled = isNotificationChannelEnabled; exports.isNumberOperator = isNumberOperator; exports.isObjectStorageNode = isObjectStorageNode; exports.isPlainObject = isPlainObject; exports.isRegisterStorageNode = isRegisterStorageNode; exports.isRootStorageNode = isRootStorageNode; exports.isStartsWithOperator = isStartsWithOperator; exports.isUrl = isUrl; exports.kInternal = kInternal; exports.keys = keys; exports.makeAbortController = makeAbortController; exports.makeEventSource = makeEventSource; exports.makePoller = makePoller; exports.makePosition = makePosition; exports.mapValues = mapValues; exports.memoizeOnSuccess = memoizeOnSuccess; exports.mergePermissionMatrices = mergePermissionMatrices; exports.mergeRoomPermissionScopes = mergeRoomPermissionScopes; exports.nanoid = nanoid; exports.nn = nn; exports.nodeStreamToCompactNodes = nodeStreamToCompactNodes; exports.normalizeRoomAccesses = normalizeRoomAccesses; exports.normalizeRoomPermissions = normalizeRoomPermissions; exports.normalizeUpdateRoomAccesses = normalizeUpdateRoomAccesses; exports.objectToQuery = objectToQuery; exports.patchNotificationSettings = patchNotificationSettings; exports.permissionMatrixFromScopes = permissionMatrixFromScopes; exports.permissionMatrixToScopes = permissionMatrixToScopes; exports.raise = raise; exports.resolveMentionsInCommentBody = resolveMentionsInCommentBody; exports.sanitizeUrl = sanitizeUrl; exports.shallow = shallow; exports.shallow2 = shallow2; exports.stableStringify = stableStringify; exports.stringifyCommentBody = stringifyCommentBody; exports.throwUsageError = throwUsageError; exports.toPlainLson = toPlainLson; exports.tryParseJson = tryParseJson; exports.url = url; exports.urljoin = urljoin; exports.wait = wait; exports.warnOnce = warnOnce; exports.warnOnceIf = warnOnceIf; exports.withTimeout = withTimeout;
|
|
12707
12722
|
//# sourceMappingURL=index.cjs.map
|