@liveblocks/core 3.20.0-perm4 → 3.20.0-perm6
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 +123 -145
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +30 -36
- package/dist/index.d.ts +30 -36
- package/dist/index.js +122 -144
- 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-perm6";
|
|
10
10
|
var PKG_FORMAT = "cjs";
|
|
11
11
|
|
|
12
12
|
// src/dupe-detection.ts
|
|
@@ -5167,100 +5167,87 @@ function createReceivingToolInvocation(invocationId, name, partialArgsText = "")
|
|
|
5167
5167
|
};
|
|
5168
5168
|
}
|
|
5169
5169
|
|
|
5170
|
-
// src/
|
|
5170
|
+
// src/permissions.ts
|
|
5171
5171
|
var Permission = {
|
|
5172
5172
|
/**
|
|
5173
|
-
* Default permission for a room
|
|
5173
|
+
* Default permission for a room.
|
|
5174
5174
|
*/
|
|
5175
|
-
|
|
5176
|
-
|
|
5175
|
+
Read: "*:read",
|
|
5176
|
+
Write: "*:write",
|
|
5177
5177
|
/**
|
|
5178
|
-
*
|
|
5178
|
+
* Legacy aliases for default room permissions.
|
|
5179
5179
|
*/
|
|
5180
|
-
|
|
5181
|
-
|
|
5180
|
+
RoomWrite: "room:write",
|
|
5181
|
+
RoomRead: "room:read",
|
|
5182
5182
|
/**
|
|
5183
5183
|
* Storage
|
|
5184
5184
|
*/
|
|
5185
|
-
|
|
5186
|
-
|
|
5187
|
-
|
|
5185
|
+
StorageRead: "storage:read",
|
|
5186
|
+
StorageWrite: "storage:write",
|
|
5187
|
+
StorageNone: "storage:none",
|
|
5188
5188
|
/**
|
|
5189
5189
|
* Comments
|
|
5190
5190
|
*/
|
|
5191
|
-
|
|
5192
|
-
|
|
5193
|
-
|
|
5191
|
+
CommentsWrite: "comments:write",
|
|
5192
|
+
CommentsRead: "comments:read",
|
|
5193
|
+
CommentsNone: "comments:none",
|
|
5194
5194
|
/**
|
|
5195
5195
|
* Feeds
|
|
5196
5196
|
*/
|
|
5197
|
-
|
|
5198
|
-
|
|
5199
|
-
|
|
5197
|
+
FeedsRead: "feeds:read",
|
|
5198
|
+
FeedsWrite: "feeds:write",
|
|
5199
|
+
FeedsNone: "feeds:none",
|
|
5200
5200
|
/**
|
|
5201
5201
|
* Legacy
|
|
5202
5202
|
*/
|
|
5203
|
-
LegacyRoomPresenceWrite: "room:presence:write"
|
|
5204
|
-
LegacyCommentsWrite: "comments:write",
|
|
5205
|
-
LegacyCommentsRead: "comments:read",
|
|
5206
|
-
LegacyFeedsWrite: "feeds:write"
|
|
5203
|
+
LegacyRoomPresenceWrite: "room:presence:write"
|
|
5207
5204
|
};
|
|
5208
|
-
var ACCESS_LEVELS = [
|
|
5209
|
-
|
|
5210
|
-
"read",
|
|
5211
|
-
"write"
|
|
5212
|
-
];
|
|
5213
|
-
var ACCESS_RANKS = {
|
|
5205
|
+
var ACCESS_LEVELS = ["none", "read", "write"];
|
|
5206
|
+
var ACCESS_LEVEL_RANKS = {
|
|
5214
5207
|
none: 0,
|
|
5215
5208
|
read: 1,
|
|
5216
5209
|
write: 2
|
|
5217
5210
|
};
|
|
5218
|
-
var
|
|
5219
|
-
room: "none",
|
|
5220
|
-
presence: "none",
|
|
5221
|
-
storage: "none",
|
|
5222
|
-
comments: "none",
|
|
5223
|
-
feeds: "none",
|
|
5224
|
-
personal: "write"
|
|
5225
|
-
};
|
|
5226
|
-
var RESOURCE_PERMISSIONS = {
|
|
5211
|
+
var PERMISSIONS_BY_RESOURCE = {
|
|
5227
5212
|
room: {
|
|
5228
|
-
read: [Permission.RoomRead],
|
|
5229
|
-
write: [Permission.RoomWrite]
|
|
5213
|
+
read: [Permission.Read, Permission.RoomRead],
|
|
5214
|
+
write: [Permission.Write, Permission.RoomWrite]
|
|
5230
5215
|
},
|
|
5231
5216
|
personal: {
|
|
5232
5217
|
write: []
|
|
5233
5218
|
},
|
|
5234
|
-
presence: {
|
|
5235
|
-
write: [Permission.LegacyRoomPresenceWrite],
|
|
5236
|
-
read: [Permission.RoomPresenceRead],
|
|
5237
|
-
none: [Permission.RoomPresenceNone]
|
|
5238
|
-
},
|
|
5239
5219
|
storage: {
|
|
5240
|
-
write: [Permission.
|
|
5241
|
-
read: [Permission.
|
|
5242
|
-
none: [Permission.
|
|
5220
|
+
write: [Permission.StorageWrite],
|
|
5221
|
+
read: [Permission.StorageRead],
|
|
5222
|
+
none: [Permission.StorageNone]
|
|
5243
5223
|
},
|
|
5244
5224
|
comments: {
|
|
5245
|
-
write: [Permission.
|
|
5246
|
-
read: [Permission.
|
|
5247
|
-
none: [Permission.
|
|
5225
|
+
write: [Permission.CommentsWrite],
|
|
5226
|
+
read: [Permission.CommentsRead],
|
|
5227
|
+
none: [Permission.CommentsNone]
|
|
5248
5228
|
},
|
|
5249
5229
|
feeds: {
|
|
5250
|
-
write: [Permission.
|
|
5251
|
-
read: [Permission.
|
|
5252
|
-
none: [Permission.
|
|
5230
|
+
write: [Permission.FeedsWrite],
|
|
5231
|
+
read: [Permission.FeedsRead],
|
|
5232
|
+
none: [Permission.FeedsNone]
|
|
5253
5233
|
}
|
|
5254
5234
|
};
|
|
5255
|
-
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";
|
|
5256
5243
|
var ROOM_PERMISSION_RESOURCES = [
|
|
5257
|
-
"presence",
|
|
5258
5244
|
"storage",
|
|
5259
5245
|
"comments",
|
|
5260
5246
|
"feeds"
|
|
5261
5247
|
];
|
|
5248
|
+
var VALID_PERMISSIONS = new Set(Object.values(Permission));
|
|
5262
5249
|
function resolveResourceAccess(scopes, resource) {
|
|
5263
|
-
const permissions =
|
|
5250
|
+
const permissions = PERMISSIONS_BY_RESOURCE[resource];
|
|
5264
5251
|
let resourceAccess;
|
|
5265
5252
|
for (const access of ACCESS_LEVELS) {
|
|
5266
5253
|
const scopedPermissions = permissions[access];
|
|
@@ -5270,13 +5257,14 @@ function resolveResourceAccess(scopes, resource) {
|
|
|
5270
5257
|
}
|
|
5271
5258
|
return resourceAccess;
|
|
5272
5259
|
}
|
|
5273
|
-
function
|
|
5260
|
+
function permissionMatrixFromResolvedScopes(resolved) {
|
|
5274
5261
|
if (!resolved.hasDefaultPermission) {
|
|
5275
|
-
return { ...NO_PERMISSION_MATRIX
|
|
5262
|
+
return { ...NO_PERMISSION_MATRIX };
|
|
5276
5263
|
}
|
|
5277
5264
|
const matrix = {
|
|
5278
5265
|
...NO_PERMISSION_MATRIX,
|
|
5279
|
-
[
|
|
5266
|
+
[BASE_PERMISSION_RESOURCE]: resolved.baseAccess,
|
|
5267
|
+
personal: "write"
|
|
5280
5268
|
};
|
|
5281
5269
|
for (const resource of ROOM_PERMISSION_RESOURCES) {
|
|
5282
5270
|
matrix[resource] = _nullishCoalesce(resolved.matrix[resource], () => ( resolved.baseAccess));
|
|
@@ -5284,11 +5272,11 @@ function resolveFullPermissionMatrix(resolved) {
|
|
|
5284
5272
|
return matrix;
|
|
5285
5273
|
}
|
|
5286
5274
|
function permissionMatrixFromScopes(scopes) {
|
|
5287
|
-
return
|
|
5275
|
+
return permissionMatrixFromResolvedScopes(resolvePermissionScopes(scopes));
|
|
5288
5276
|
}
|
|
5289
|
-
function
|
|
5290
|
-
const hasDefaultPermission = scopes.includes(Permission.RoomWrite) || scopes.includes(Permission.RoomRead);
|
|
5291
|
-
const baseAccess = scopes.includes(Permission.RoomWrite) ? "write" : scopes.includes(Permission.RoomRead) ? "read" : "none";
|
|
5277
|
+
function resolvePermissionScopes(scopes) {
|
|
5278
|
+
const hasDefaultPermission = scopes.includes(Permission.Write) || scopes.includes(Permission.Read) || scopes.includes(Permission.RoomWrite) || scopes.includes(Permission.RoomRead);
|
|
5279
|
+
const baseAccess = scopes.includes(Permission.Write) || scopes.includes(Permission.RoomWrite) ? "write" : scopes.includes(Permission.Read) || scopes.includes(Permission.RoomRead) ? "read" : "none";
|
|
5292
5280
|
const matrix = {};
|
|
5293
5281
|
for (const resource of ROOM_PERMISSION_RESOURCES) {
|
|
5294
5282
|
const access = resolveResourceAccess(scopes, resource);
|
|
@@ -5298,30 +5286,9 @@ function resolvePermissionMatrix(scopes) {
|
|
|
5298
5286
|
}
|
|
5299
5287
|
return { hasDefaultPermission, baseAccess, matrix };
|
|
5300
5288
|
}
|
|
5301
|
-
function hasPermissionAccess(
|
|
5302
|
-
const matrix = isPermissionScopes(source) ? permissionMatrixFromScopes(source) : source;
|
|
5289
|
+
function hasPermissionAccess(matrix, resource, requiredAccess) {
|
|
5303
5290
|
const access = _nullishCoalesce(matrix[resource], () => ( "none"));
|
|
5304
|
-
return
|
|
5305
|
-
}
|
|
5306
|
-
function isPermissionScopes(source) {
|
|
5307
|
-
return Array.isArray(source);
|
|
5308
|
-
}
|
|
5309
|
-
|
|
5310
|
-
// src/permissions.ts
|
|
5311
|
-
var VALID_PERMISSIONS = new Set(Object.values(Permission));
|
|
5312
|
-
var ROOM_PERMISSION_OBJECT_KEYS = /* @__PURE__ */ new Set([
|
|
5313
|
-
"default",
|
|
5314
|
-
...ROOM_PERMISSION_RESOURCES
|
|
5315
|
-
]);
|
|
5316
|
-
function permissionForAccessLevel(resource, access, field = resource) {
|
|
5317
|
-
const levels = RESOURCE_PERMISSIONS[resource];
|
|
5318
|
-
const permissions = levels[access];
|
|
5319
|
-
if (permissions === void 0 || permissions.length === 0) {
|
|
5320
|
-
throw new Error(
|
|
5321
|
-
`Invalid permission level for ${field}: ${_nullishCoalesce(JSON.stringify(access), () => ( String(access)))}`
|
|
5322
|
-
);
|
|
5323
|
-
}
|
|
5324
|
-
return permissions[0];
|
|
5291
|
+
return ACCESS_LEVEL_RANKS[access] >= ACCESS_LEVEL_RANKS[requiredAccess];
|
|
5325
5292
|
}
|
|
5326
5293
|
function resolveRoomPermissionMatrix(permissions, roomId) {
|
|
5327
5294
|
const matchedPermissions = permissions.filter(
|
|
@@ -5333,8 +5300,10 @@ function resolveRoomPermissionMatrix(permissions, roomId) {
|
|
|
5333
5300
|
let hasDefaultPermission = false;
|
|
5334
5301
|
let baseAccess = "none";
|
|
5335
5302
|
const explicitMatrix = {};
|
|
5303
|
+
const explicitSpecificity = {};
|
|
5336
5304
|
for (const permission of matchedPermissions) {
|
|
5337
|
-
const resolved =
|
|
5305
|
+
const resolved = resolvePermissionScopes(permission.scopes);
|
|
5306
|
+
const specificity = getResourceSpecificity(permission.resource);
|
|
5338
5307
|
if (resolved.hasDefaultPermission) {
|
|
5339
5308
|
hasDefaultPermission = true;
|
|
5340
5309
|
baseAccess = strongestAccess(baseAccess, resolved.baseAccess);
|
|
@@ -5342,59 +5311,35 @@ function resolveRoomPermissionMatrix(permissions, roomId) {
|
|
|
5342
5311
|
for (const resource of ROOM_PERMISSION_RESOURCES) {
|
|
5343
5312
|
const access = resolved.matrix[resource];
|
|
5344
5313
|
if (access !== void 0) {
|
|
5345
|
-
|
|
5346
|
-
|
|
5347
|
-
access
|
|
5348
|
-
|
|
5314
|
+
const currentSpecificity = _nullishCoalesce(explicitSpecificity[resource], () => ( -1));
|
|
5315
|
+
if (specificity > currentSpecificity) {
|
|
5316
|
+
explicitMatrix[resource] = access;
|
|
5317
|
+
explicitSpecificity[resource] = specificity;
|
|
5318
|
+
} else if (specificity === currentSpecificity) {
|
|
5319
|
+
explicitMatrix[resource] = strongestAccess(
|
|
5320
|
+
_nullishCoalesce(explicitMatrix[resource], () => ( "none")),
|
|
5321
|
+
access
|
|
5322
|
+
);
|
|
5323
|
+
}
|
|
5349
5324
|
}
|
|
5350
5325
|
}
|
|
5351
5326
|
}
|
|
5352
|
-
return
|
|
5327
|
+
return permissionMatrixFromResolvedScopes({
|
|
5353
5328
|
hasDefaultPermission,
|
|
5354
5329
|
baseAccess,
|
|
5355
5330
|
matrix: explicitMatrix
|
|
5356
5331
|
});
|
|
5357
5332
|
}
|
|
5358
|
-
function isRoomPermissionArray(input) {
|
|
5359
|
-
return Array.isArray(input);
|
|
5360
|
-
}
|
|
5361
5333
|
function normalizeRoomPermissionInput(input) {
|
|
5362
|
-
if (
|
|
5363
|
-
|
|
5364
|
-
if (!VALID_PERMISSIONS.has(permission)) {
|
|
5365
|
-
throw new Error(`Not a valid permission: ${permission}`);
|
|
5366
|
-
}
|
|
5367
|
-
return permission;
|
|
5368
|
-
});
|
|
5334
|
+
if (!Array.isArray(input)) {
|
|
5335
|
+
throw new Error("Permission list must be an array");
|
|
5369
5336
|
}
|
|
5370
|
-
return
|
|
5371
|
-
|
|
5372
|
-
|
|
5373
|
-
for (const key of Object.keys(objectInput)) {
|
|
5374
|
-
if (!ROOM_PERMISSION_OBJECT_KEYS.has(key)) {
|
|
5375
|
-
throw new Error(`Unknown permission field: ${key}`);
|
|
5337
|
+
return input.map((permission) => {
|
|
5338
|
+
if (!VALID_PERMISSIONS.has(permission)) {
|
|
5339
|
+
throw new Error(`Not a valid permission: ${permission}`);
|
|
5376
5340
|
}
|
|
5377
|
-
|
|
5378
|
-
|
|
5379
|
-
if (objectInput.default !== void 0) {
|
|
5380
|
-
permissions.push(
|
|
5381
|
-
permissionForAccessLevel(
|
|
5382
|
-
DEFAULT_PERMISSION_RESOURCE,
|
|
5383
|
-
objectInput.default,
|
|
5384
|
-
"default"
|
|
5385
|
-
)
|
|
5386
|
-
);
|
|
5387
|
-
}
|
|
5388
|
-
for (const resource of ROOM_PERMISSION_RESOURCES) {
|
|
5389
|
-
const access = objectInput[resource];
|
|
5390
|
-
if (access !== void 0) {
|
|
5391
|
-
permissions.push(permissionForAccessLevel(resource, access));
|
|
5392
|
-
}
|
|
5393
|
-
}
|
|
5394
|
-
if (permissions.length === 0) {
|
|
5395
|
-
throw new Error("Permission object cannot be empty");
|
|
5396
|
-
}
|
|
5397
|
-
return permissions;
|
|
5341
|
+
return permission;
|
|
5342
|
+
});
|
|
5398
5343
|
}
|
|
5399
5344
|
function normalizeRoomAccessesInput(input) {
|
|
5400
5345
|
if (input === void 0) {
|
|
@@ -5421,20 +5366,17 @@ function normalizeRoomAccessesUpdateInput(input) {
|
|
|
5421
5366
|
function mergePermissionMatrices(sources) {
|
|
5422
5367
|
return {
|
|
5423
5368
|
room: strongestMatrixAccess(sources, "room"),
|
|
5424
|
-
presence: strongestMatrixAccess(sources, "presence"),
|
|
5425
5369
|
storage: strongestMatrixAccess(sources, "storage"),
|
|
5426
5370
|
comments: strongestMatrixAccess(sources, "comments"),
|
|
5427
5371
|
feeds: strongestMatrixAccess(sources, "feeds"),
|
|
5428
|
-
personal: "
|
|
5372
|
+
personal: strongestMatrixAccess(sources, "personal")
|
|
5429
5373
|
};
|
|
5430
5374
|
}
|
|
5431
5375
|
function permissionMatrixToScopes(matrix) {
|
|
5432
5376
|
const scopes = [];
|
|
5433
5377
|
const baseAccess = matrix.room;
|
|
5434
5378
|
if (baseAccess !== "none") {
|
|
5435
|
-
scopes.push(
|
|
5436
|
-
permissionForAccessLevel(DEFAULT_PERMISSION_RESOURCE, baseAccess)
|
|
5437
|
-
);
|
|
5379
|
+
scopes.push(permissionForAccessLevel(BASE_PERMISSION_RESOURCE, baseAccess));
|
|
5438
5380
|
}
|
|
5439
5381
|
for (const resource of ROOM_PERMISSION_RESOURCES) {
|
|
5440
5382
|
const access = matrix[resource];
|
|
@@ -5444,6 +5386,28 @@ function permissionMatrixToScopes(matrix) {
|
|
|
5444
5386
|
}
|
|
5445
5387
|
return scopes;
|
|
5446
5388
|
}
|
|
5389
|
+
function mergeRoomPermissionScopes({
|
|
5390
|
+
defaultAccesses,
|
|
5391
|
+
groupsAccesses,
|
|
5392
|
+
userAccesses
|
|
5393
|
+
}) {
|
|
5394
|
+
const sources = [
|
|
5395
|
+
permissionMatrixFromScopes(defaultAccesses),
|
|
5396
|
+
...groupsAccesses.map((scopes) => permissionMatrixFromScopes(scopes)),
|
|
5397
|
+
...userAccesses !== void 0 ? [permissionMatrixFromScopes(userAccesses)] : []
|
|
5398
|
+
];
|
|
5399
|
+
return permissionMatrixToScopes(mergePermissionMatrices(sources));
|
|
5400
|
+
}
|
|
5401
|
+
function permissionForAccessLevel(resource, access, field = resource) {
|
|
5402
|
+
const levels = PERMISSIONS_BY_RESOURCE[resource];
|
|
5403
|
+
const permissions = levels[access];
|
|
5404
|
+
if (permissions === void 0 || permissions.length === 0) {
|
|
5405
|
+
throw new Error(
|
|
5406
|
+
`Invalid permission level for ${field}: ${_nullishCoalesce(JSON.stringify(access), () => ( String(access)))}`
|
|
5407
|
+
);
|
|
5408
|
+
}
|
|
5409
|
+
return permissions[0];
|
|
5410
|
+
}
|
|
5447
5411
|
function strongestMatrixAccess(sources, resource) {
|
|
5448
5412
|
return sources.reduce(
|
|
5449
5413
|
(strongest, source) => strongestAccess(strongest, source[resource]),
|
|
@@ -5451,7 +5415,7 @@ function strongestMatrixAccess(sources, resource) {
|
|
|
5451
5415
|
);
|
|
5452
5416
|
}
|
|
5453
5417
|
function strongestAccess(left, right) {
|
|
5454
|
-
return
|
|
5418
|
+
return ACCESS_LEVEL_RANKS[right] > ACCESS_LEVEL_RANKS[left] ? right : left;
|
|
5455
5419
|
}
|
|
5456
5420
|
function resourceMatchesRoomId(resource, roomId) {
|
|
5457
5421
|
if (resource.includes("*")) {
|
|
@@ -5459,6 +5423,9 @@ function resourceMatchesRoomId(resource, roomId) {
|
|
|
5459
5423
|
}
|
|
5460
5424
|
return resource === roomId;
|
|
5461
5425
|
}
|
|
5426
|
+
function getResourceSpecificity(resource) {
|
|
5427
|
+
return resource.replace("*", "").length;
|
|
5428
|
+
}
|
|
5462
5429
|
|
|
5463
5430
|
// src/protocol/AuthToken.ts
|
|
5464
5431
|
function isValidAuthTokenPayload(data) {
|
|
@@ -9535,14 +9502,22 @@ var ClientMsgCode = Object.freeze({
|
|
|
9535
9502
|
// src/refs/ManagedOthers.ts
|
|
9536
9503
|
function makeUser(conn, presence) {
|
|
9537
9504
|
const { connectionId, id, info } = conn;
|
|
9538
|
-
const canWrite = hasPermissionAccess(
|
|
9505
|
+
const canWrite = hasPermissionAccess(
|
|
9506
|
+
conn.permissionMatrix,
|
|
9507
|
+
"storage",
|
|
9508
|
+
"write"
|
|
9509
|
+
);
|
|
9539
9510
|
return freeze(
|
|
9540
9511
|
compactObject({
|
|
9541
9512
|
connectionId,
|
|
9542
9513
|
id,
|
|
9543
9514
|
info,
|
|
9544
9515
|
canWrite,
|
|
9545
|
-
canComment: hasPermissionAccess(
|
|
9516
|
+
canComment: hasPermissionAccess(
|
|
9517
|
+
conn.permissionMatrix,
|
|
9518
|
+
"comments",
|
|
9519
|
+
"write"
|
|
9520
|
+
),
|
|
9546
9521
|
isReadOnly: !canWrite,
|
|
9547
9522
|
// Deprecated, kept for backward-compatibility
|
|
9548
9523
|
presence
|
|
@@ -9621,7 +9596,7 @@ var ManagedOthers = class {
|
|
|
9621
9596
|
connectionId,
|
|
9622
9597
|
id: metaUserId,
|
|
9623
9598
|
info: metaUserInfo,
|
|
9624
|
-
scopes
|
|
9599
|
+
permissionMatrix: permissionMatrixFromScopes(scopes)
|
|
9625
9600
|
})
|
|
9626
9601
|
);
|
|
9627
9602
|
if (!state.presences.has(connectionId)) {
|
|
@@ -9998,8 +9973,8 @@ function createRoom(options, config) {
|
|
|
9998
9973
|
}
|
|
9999
9974
|
}
|
|
10000
9975
|
function isStorageWritable() {
|
|
10001
|
-
const
|
|
10002
|
-
return
|
|
9976
|
+
const permissionMatrix = _optionalChain([context, 'access', _224 => _224.dynamicSessionInfoSig, 'access', _225 => _225.get, 'call', _226 => _226(), 'optionalAccess', _227 => _227.permissionMatrix]);
|
|
9977
|
+
return permissionMatrix !== void 0 ? hasPermissionAccess(permissionMatrix, "storage", "write") : true;
|
|
10003
9978
|
}
|
|
10004
9979
|
const eventHub = {
|
|
10005
9980
|
status: makeEventSource(),
|
|
@@ -10061,7 +10036,7 @@ function createRoom(options, config) {
|
|
|
10061
10036
|
return null;
|
|
10062
10037
|
} else {
|
|
10063
10038
|
const canWrite = hasPermissionAccess(
|
|
10064
|
-
dynamicSession.
|
|
10039
|
+
dynamicSession.permissionMatrix,
|
|
10065
10040
|
"storage",
|
|
10066
10041
|
"write"
|
|
10067
10042
|
);
|
|
@@ -10072,7 +10047,7 @@ function createRoom(options, config) {
|
|
|
10072
10047
|
presence: myPresence,
|
|
10073
10048
|
canWrite,
|
|
10074
10049
|
canComment: hasPermissionAccess(
|
|
10075
|
-
dynamicSession.
|
|
10050
|
+
dynamicSession.permissionMatrix,
|
|
10076
10051
|
"comments",
|
|
10077
10052
|
"write"
|
|
10078
10053
|
)
|
|
@@ -10364,7 +10339,7 @@ function createRoom(options, config) {
|
|
|
10364
10339
|
context.dynamicSessionInfoSig.set({
|
|
10365
10340
|
actor: message.actor,
|
|
10366
10341
|
nonce: message.nonce,
|
|
10367
|
-
|
|
10342
|
+
permissionMatrix: permissionMatrixFromScopes(message.scopes),
|
|
10368
10343
|
meta: message.meta
|
|
10369
10344
|
});
|
|
10370
10345
|
context.idFactory = makeIdFactory(message.actor);
|
|
@@ -11482,7 +11457,9 @@ function createRoom(options, config) {
|
|
|
11482
11457
|
_dump: () => {
|
|
11483
11458
|
const n = context.pool.nodes.size;
|
|
11484
11459
|
return `Room "${roomId}" (${n} node${n === 1 ? "" : "s"}):
|
|
11485
|
-
${dumpPool(
|
|
11460
|
+
${dumpPool(
|
|
11461
|
+
context.pool
|
|
11462
|
+
)}`;
|
|
11486
11463
|
},
|
|
11487
11464
|
destroy: () => {
|
|
11488
11465
|
pendingFeedsRequests.forEach(
|
|
@@ -11677,7 +11654,7 @@ function makeAuthDelegateForRoom(roomId, authManager) {
|
|
|
11677
11654
|
return async () => {
|
|
11678
11655
|
return authManager.getAuthValue({
|
|
11679
11656
|
roomId,
|
|
11680
|
-
resource: "
|
|
11657
|
+
resource: "room",
|
|
11681
11658
|
access: "read"
|
|
11682
11659
|
});
|
|
11683
11660
|
};
|
|
@@ -12735,5 +12712,6 @@ detectDupes(PKG_NAME, PKG_VERSION, PKG_FORMAT);
|
|
|
12735
12712
|
|
|
12736
12713
|
|
|
12737
12714
|
|
|
12738
|
-
|
|
12715
|
+
|
|
12716
|
+
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.normalizeRoomAccessesInput = normalizeRoomAccessesInput; exports.normalizeRoomAccessesUpdateInput = normalizeRoomAccessesUpdateInput; exports.normalizeRoomPermissionInput = normalizeRoomPermissionInput; 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;
|
|
12739
12717
|
//# sourceMappingURL=index.cjs.map
|