@liveblocks/core 3.20.0-perm2 → 3.20.0-perm4
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 +72 -67
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +13 -8
- package/dist/index.d.ts +13 -8
- package/dist/index.js +75 -70
- 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-perm4";
|
|
10
10
|
var PKG_FORMAT = "cjs";
|
|
11
11
|
|
|
12
12
|
// src/dupe-detection.ts
|
|
@@ -5215,8 +5215,8 @@ var ACCESS_RANKS = {
|
|
|
5215
5215
|
read: 1,
|
|
5216
5216
|
write: 2
|
|
5217
5217
|
};
|
|
5218
|
-
var
|
|
5219
|
-
|
|
5218
|
+
var NO_PERMISSION_MATRIX = {
|
|
5219
|
+
room: "none",
|
|
5220
5220
|
presence: "none",
|
|
5221
5221
|
storage: "none",
|
|
5222
5222
|
comments: "none",
|
|
@@ -5224,7 +5224,7 @@ var NO_PERMISSION_CAPABILITIES = {
|
|
|
5224
5224
|
personal: "write"
|
|
5225
5225
|
};
|
|
5226
5226
|
var RESOURCE_PERMISSIONS = {
|
|
5227
|
-
|
|
5227
|
+
room: {
|
|
5228
5228
|
read: [Permission.RoomRead],
|
|
5229
5229
|
write: [Permission.RoomWrite]
|
|
5230
5230
|
},
|
|
@@ -5252,7 +5252,7 @@ var RESOURCE_PERMISSIONS = {
|
|
|
5252
5252
|
none: [Permission.RoomFeedsNone]
|
|
5253
5253
|
}
|
|
5254
5254
|
};
|
|
5255
|
-
var DEFAULT_PERMISSION_RESOURCE = "
|
|
5255
|
+
var DEFAULT_PERMISSION_RESOURCE = "room";
|
|
5256
5256
|
var ROOM_PERMISSION_RESOURCES = [
|
|
5257
5257
|
"presence",
|
|
5258
5258
|
"storage",
|
|
@@ -5270,75 +5270,60 @@ function resolveResourceAccess(scopes, resource) {
|
|
|
5270
5270
|
}
|
|
5271
5271
|
return resourceAccess;
|
|
5272
5272
|
}
|
|
5273
|
-
function
|
|
5273
|
+
function resolveFullPermissionMatrix(resolved) {
|
|
5274
5274
|
if (!resolved.hasDefaultPermission) {
|
|
5275
|
-
return { ...
|
|
5275
|
+
return { ...NO_PERMISSION_MATRIX, ...resolved.matrix };
|
|
5276
5276
|
}
|
|
5277
|
-
const
|
|
5278
|
-
...
|
|
5277
|
+
const matrix = {
|
|
5278
|
+
...NO_PERMISSION_MATRIX,
|
|
5279
5279
|
[DEFAULT_PERMISSION_RESOURCE]: resolved.baseAccess
|
|
5280
5280
|
};
|
|
5281
5281
|
for (const resource of ROOM_PERMISSION_RESOURCES) {
|
|
5282
|
-
|
|
5282
|
+
matrix[resource] = _nullishCoalesce(resolved.matrix[resource], () => ( resolved.baseAccess));
|
|
5283
5283
|
}
|
|
5284
|
-
return
|
|
5284
|
+
return matrix;
|
|
5285
5285
|
}
|
|
5286
|
-
function
|
|
5287
|
-
return
|
|
5288
|
-
resolvePermissionCapabilities(scopes)
|
|
5289
|
-
);
|
|
5286
|
+
function permissionMatrixFromScopes(scopes) {
|
|
5287
|
+
return resolveFullPermissionMatrix(resolvePermissionMatrix(scopes));
|
|
5290
5288
|
}
|
|
5291
|
-
function
|
|
5289
|
+
function resolvePermissionMatrix(scopes) {
|
|
5292
5290
|
const hasDefaultPermission = scopes.includes(Permission.RoomWrite) || scopes.includes(Permission.RoomRead);
|
|
5293
5291
|
const baseAccess = scopes.includes(Permission.RoomWrite) ? "write" : scopes.includes(Permission.RoomRead) ? "read" : "none";
|
|
5294
|
-
const
|
|
5292
|
+
const matrix = {};
|
|
5295
5293
|
for (const resource of ROOM_PERMISSION_RESOURCES) {
|
|
5296
5294
|
const access = resolveResourceAccess(scopes, resource);
|
|
5297
5295
|
if (access !== void 0) {
|
|
5298
|
-
|
|
5296
|
+
matrix[resource] = access;
|
|
5299
5297
|
}
|
|
5300
5298
|
}
|
|
5301
|
-
return { hasDefaultPermission, baseAccess,
|
|
5299
|
+
return { hasDefaultPermission, baseAccess, matrix };
|
|
5302
5300
|
}
|
|
5303
|
-
function
|
|
5304
|
-
const
|
|
5301
|
+
function hasPermissionAccess(source, resource, requiredAccess) {
|
|
5302
|
+
const matrix = isPermissionScopes(source) ? permissionMatrixFromScopes(source) : source;
|
|
5303
|
+
const access = _nullishCoalesce(matrix[resource], () => ( "none"));
|
|
5305
5304
|
return ACCESS_RANKS[access] >= ACCESS_RANKS[requiredAccess];
|
|
5306
5305
|
}
|
|
5307
|
-
function
|
|
5308
|
-
|
|
5309
|
-
return ACCESS_RANKS[access] >= ACCESS_RANKS[requiredAccess];
|
|
5306
|
+
function isPermissionScopes(source) {
|
|
5307
|
+
return Array.isArray(source);
|
|
5310
5308
|
}
|
|
5311
5309
|
|
|
5312
5310
|
// src/permissions.ts
|
|
5313
5311
|
var VALID_PERMISSIONS = new Set(Object.values(Permission));
|
|
5314
|
-
var DEFAULT_PERMISSIONS = [
|
|
5315
|
-
Permission.RoomRead,
|
|
5316
|
-
Permission.RoomWrite
|
|
5317
|
-
];
|
|
5318
5312
|
var ROOM_PERMISSION_OBJECT_KEYS = /* @__PURE__ */ new Set([
|
|
5319
5313
|
"default",
|
|
5320
5314
|
...ROOM_PERMISSION_RESOURCES
|
|
5321
5315
|
]);
|
|
5322
|
-
|
|
5323
|
-
presence: Object.values(RESOURCE_PERMISSIONS.presence).flat(),
|
|
5324
|
-
storage: Object.values(RESOURCE_PERMISSIONS.storage).flat(),
|
|
5325
|
-
comments: Object.values(RESOURCE_PERMISSIONS.comments).flat(),
|
|
5326
|
-
feeds: Object.values(RESOURCE_PERMISSIONS.feeds).flat()
|
|
5327
|
-
};
|
|
5328
|
-
var RESOURCE_SPECIFIC_PERMISSIONS = ROOM_PERMISSION_RESOURCES.flatMap(
|
|
5329
|
-
(resource) => RESOURCE_SPECIFIC_PERMISSIONS_BY_RESOURCE[resource]
|
|
5330
|
-
);
|
|
5331
|
-
function permissionForAccessLevel(resource, access) {
|
|
5316
|
+
function permissionForAccessLevel(resource, access, field = resource) {
|
|
5332
5317
|
const levels = RESOURCE_PERMISSIONS[resource];
|
|
5333
5318
|
const permissions = levels[access];
|
|
5334
5319
|
if (permissions === void 0 || permissions.length === 0) {
|
|
5335
5320
|
throw new Error(
|
|
5336
|
-
`Invalid permission level for ${
|
|
5321
|
+
`Invalid permission level for ${field}: ${_nullishCoalesce(JSON.stringify(access), () => ( String(access)))}`
|
|
5337
5322
|
);
|
|
5338
5323
|
}
|
|
5339
5324
|
return permissions[0];
|
|
5340
5325
|
}
|
|
5341
|
-
function
|
|
5326
|
+
function resolveRoomPermissionMatrix(permissions, roomId) {
|
|
5342
5327
|
const matchedPermissions = permissions.filter(
|
|
5343
5328
|
(permission) => resourceMatchesRoomId(permission.resource, roomId)
|
|
5344
5329
|
);
|
|
@@ -5347,27 +5332,27 @@ function resolveRoomPermissionCapabilities(permissions, roomId) {
|
|
|
5347
5332
|
}
|
|
5348
5333
|
let hasDefaultPermission = false;
|
|
5349
5334
|
let baseAccess = "none";
|
|
5350
|
-
const
|
|
5335
|
+
const explicitMatrix = {};
|
|
5351
5336
|
for (const permission of matchedPermissions) {
|
|
5352
|
-
const resolved =
|
|
5337
|
+
const resolved = resolvePermissionMatrix(permission.scopes);
|
|
5353
5338
|
if (resolved.hasDefaultPermission) {
|
|
5354
5339
|
hasDefaultPermission = true;
|
|
5355
5340
|
baseAccess = strongestAccess(baseAccess, resolved.baseAccess);
|
|
5356
5341
|
}
|
|
5357
5342
|
for (const resource of ROOM_PERMISSION_RESOURCES) {
|
|
5358
|
-
const access = resolved.
|
|
5343
|
+
const access = resolved.matrix[resource];
|
|
5359
5344
|
if (access !== void 0) {
|
|
5360
|
-
|
|
5361
|
-
_nullishCoalesce(
|
|
5345
|
+
explicitMatrix[resource] = strongestAccess(
|
|
5346
|
+
_nullishCoalesce(explicitMatrix[resource], () => ( "none")),
|
|
5362
5347
|
access
|
|
5363
5348
|
);
|
|
5364
5349
|
}
|
|
5365
5350
|
}
|
|
5366
5351
|
}
|
|
5367
|
-
return
|
|
5352
|
+
return resolveFullPermissionMatrix({
|
|
5368
5353
|
hasDefaultPermission,
|
|
5369
5354
|
baseAccess,
|
|
5370
|
-
|
|
5355
|
+
matrix: explicitMatrix
|
|
5371
5356
|
});
|
|
5372
5357
|
}
|
|
5373
5358
|
function isRoomPermissionArray(input) {
|
|
@@ -5393,7 +5378,11 @@ function normalizeRoomPermissionObject(objectInput) {
|
|
|
5393
5378
|
const permissions = [];
|
|
5394
5379
|
if (objectInput.default !== void 0) {
|
|
5395
5380
|
permissions.push(
|
|
5396
|
-
permissionForAccessLevel(
|
|
5381
|
+
permissionForAccessLevel(
|
|
5382
|
+
DEFAULT_PERMISSION_RESOURCE,
|
|
5383
|
+
objectInput.default,
|
|
5384
|
+
"default"
|
|
5385
|
+
)
|
|
5397
5386
|
);
|
|
5398
5387
|
}
|
|
5399
5388
|
for (const resource of ROOM_PERMISSION_RESOURCES) {
|
|
@@ -5429,17 +5418,37 @@ function normalizeRoomAccessesUpdateInput(input) {
|
|
|
5429
5418
|
])
|
|
5430
5419
|
);
|
|
5431
5420
|
}
|
|
5432
|
-
function
|
|
5433
|
-
|
|
5434
|
-
|
|
5421
|
+
function mergePermissionMatrices(sources) {
|
|
5422
|
+
return {
|
|
5423
|
+
room: strongestMatrixAccess(sources, "room"),
|
|
5424
|
+
presence: strongestMatrixAccess(sources, "presence"),
|
|
5425
|
+
storage: strongestMatrixAccess(sources, "storage"),
|
|
5426
|
+
comments: strongestMatrixAccess(sources, "comments"),
|
|
5427
|
+
feeds: strongestMatrixAccess(sources, "feeds"),
|
|
5428
|
+
personal: "write"
|
|
5429
|
+
};
|
|
5430
|
+
}
|
|
5431
|
+
function permissionMatrixToScopes(matrix) {
|
|
5432
|
+
const scopes = [];
|
|
5433
|
+
const baseAccess = matrix.room;
|
|
5434
|
+
if (baseAccess !== "none") {
|
|
5435
|
+
scopes.push(
|
|
5436
|
+
permissionForAccessLevel(DEFAULT_PERMISSION_RESOURCE, baseAccess)
|
|
5437
|
+
);
|
|
5435
5438
|
}
|
|
5436
5439
|
for (const resource of ROOM_PERMISSION_RESOURCES) {
|
|
5437
|
-
const
|
|
5438
|
-
if (
|
|
5439
|
-
|
|
5440
|
+
const access = matrix[resource];
|
|
5441
|
+
if (access !== baseAccess) {
|
|
5442
|
+
scopes.push(permissionForAccessLevel(resource, access));
|
|
5440
5443
|
}
|
|
5441
5444
|
}
|
|
5442
|
-
return
|
|
5445
|
+
return scopes;
|
|
5446
|
+
}
|
|
5447
|
+
function strongestMatrixAccess(sources, resource) {
|
|
5448
|
+
return sources.reduce(
|
|
5449
|
+
(strongest, source) => strongestAccess(strongest, source[resource]),
|
|
5450
|
+
"none"
|
|
5451
|
+
);
|
|
5443
5452
|
}
|
|
5444
5453
|
function strongestAccess(left, right) {
|
|
5445
5454
|
return ACCESS_RANKS[right] > ACCESS_RANKS[left] ? right : left;
|
|
@@ -5630,15 +5639,11 @@ function cachedTokenSatisfiesRequest(cachedToken, request) {
|
|
|
5630
5639
|
if (request.roomId === void 0) {
|
|
5631
5640
|
return false;
|
|
5632
5641
|
}
|
|
5633
|
-
const
|
|
5642
|
+
const matrix = resolveRoomPermissionMatrix(
|
|
5634
5643
|
_nullishCoalesce(cachedToken.permissions, () => ( [])),
|
|
5635
5644
|
request.roomId
|
|
5636
5645
|
);
|
|
5637
|
-
return
|
|
5638
|
-
capabilities,
|
|
5639
|
-
request.resource,
|
|
5640
|
-
request.access
|
|
5641
|
-
);
|
|
5646
|
+
return matrix !== void 0 && hasPermissionAccess(matrix, request.resource, request.access);
|
|
5642
5647
|
}
|
|
5643
5648
|
function prepareAuthentication(authOptions) {
|
|
5644
5649
|
const { publicApiKey, authEndpoint } = authOptions;
|
|
@@ -9530,14 +9535,14 @@ var ClientMsgCode = Object.freeze({
|
|
|
9530
9535
|
// src/refs/ManagedOthers.ts
|
|
9531
9536
|
function makeUser(conn, presence) {
|
|
9532
9537
|
const { connectionId, id, info } = conn;
|
|
9533
|
-
const canWrite =
|
|
9538
|
+
const canWrite = hasPermissionAccess(conn.scopes, "storage", "write");
|
|
9534
9539
|
return freeze(
|
|
9535
9540
|
compactObject({
|
|
9536
9541
|
connectionId,
|
|
9537
9542
|
id,
|
|
9538
9543
|
info,
|
|
9539
9544
|
canWrite,
|
|
9540
|
-
canComment:
|
|
9545
|
+
canComment: hasPermissionAccess(conn.scopes, "comments", "write"),
|
|
9541
9546
|
isReadOnly: !canWrite,
|
|
9542
9547
|
// Deprecated, kept for backward-compatibility
|
|
9543
9548
|
presence
|
|
@@ -9994,7 +9999,7 @@ function createRoom(options, config) {
|
|
|
9994
9999
|
}
|
|
9995
10000
|
function isStorageWritable() {
|
|
9996
10001
|
const scopes = _optionalChain([context, 'access', _224 => _224.dynamicSessionInfoSig, 'access', _225 => _225.get, 'call', _226 => _226(), 'optionalAccess', _227 => _227.scopes]);
|
|
9997
|
-
return scopes !== void 0 ?
|
|
10002
|
+
return scopes !== void 0 ? hasPermissionAccess(scopes, "storage", "write") : true;
|
|
9998
10003
|
}
|
|
9999
10004
|
const eventHub = {
|
|
10000
10005
|
status: makeEventSource(),
|
|
@@ -10055,7 +10060,7 @@ function createRoom(options, config) {
|
|
|
10055
10060
|
if (staticSession === null || dynamicSession === null) {
|
|
10056
10061
|
return null;
|
|
10057
10062
|
} else {
|
|
10058
|
-
const canWrite =
|
|
10063
|
+
const canWrite = hasPermissionAccess(
|
|
10059
10064
|
dynamicSession.scopes,
|
|
10060
10065
|
"storage",
|
|
10061
10066
|
"write"
|
|
@@ -10066,7 +10071,7 @@ function createRoom(options, config) {
|
|
|
10066
10071
|
info: staticSession.userInfo,
|
|
10067
10072
|
presence: myPresence,
|
|
10068
10073
|
canWrite,
|
|
10069
|
-
canComment:
|
|
10074
|
+
canComment: hasPermissionAccess(
|
|
10070
10075
|
dynamicSession.scopes,
|
|
10071
10076
|
"comments",
|
|
10072
10077
|
"write"
|
|
@@ -12730,5 +12735,5 @@ detectDupes(PKG_NAME, PKG_VERSION, PKG_FORMAT);
|
|
|
12730
12735
|
|
|
12731
12736
|
|
|
12732
12737
|
|
|
12733
|
-
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.
|
|
12738
|
+
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.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;
|
|
12734
12739
|
//# sourceMappingURL=index.cjs.map
|