jazz-tools 0.20.0 → 0.20.2
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/.turbo/turbo-build.log +56 -56
- package/CHANGELOG.md +21 -0
- package/dist/{chunk-3CAPPS2F.js → chunk-Q5RNSSUM.js} +269 -95
- package/dist/chunk-Q5RNSSUM.js.map +1 -0
- package/dist/chunk-ZQWSQH6L.js +20 -0
- package/dist/index.js +2 -2
- package/dist/inspector/{chunk-MCTB5ZJC.js → chunk-6JPVMI3V.js} +302 -182
- package/dist/inspector/chunk-6JPVMI3V.js.map +1 -0
- package/dist/inspector/{custom-element-5YWVZBWA.js → custom-element-PWRX4VCA.js} +1337 -206
- package/dist/inspector/custom-element-PWRX4VCA.js.map +1 -0
- package/dist/inspector/in-app.d.ts +1 -0
- package/dist/inspector/in-app.d.ts.map +1 -1
- package/dist/inspector/index.d.ts +1 -0
- package/dist/inspector/index.d.ts.map +1 -1
- package/dist/inspector/index.js +1044 -17
- package/dist/inspector/index.js.map +1 -1
- package/dist/inspector/pages/home.d.ts +4 -1
- package/dist/inspector/pages/home.d.ts.map +1 -1
- package/dist/inspector/pages/performance/PerformancePage.d.ts +7 -0
- package/dist/inspector/pages/performance/PerformancePage.d.ts.map +1 -0
- package/dist/inspector/pages/performance/SubscriptionDetailPanel.d.ts +8 -0
- package/dist/inspector/pages/performance/SubscriptionDetailPanel.d.ts.map +1 -0
- package/dist/inspector/pages/performance/SubscriptionRow.d.ts +11 -0
- package/dist/inspector/pages/performance/SubscriptionRow.d.ts.map +1 -0
- package/dist/inspector/pages/performance/Timeline.d.ts +12 -0
- package/dist/inspector/pages/performance/Timeline.d.ts.map +1 -0
- package/dist/inspector/pages/performance/helpers.d.ts +5 -0
- package/dist/inspector/pages/performance/helpers.d.ts.map +1 -0
- package/dist/inspector/pages/performance/index.d.ts +3 -0
- package/dist/inspector/pages/performance/index.d.ts.map +1 -0
- package/dist/inspector/pages/performance/types.d.ts +13 -0
- package/dist/inspector/pages/performance/types.d.ts.map +1 -0
- package/dist/inspector/pages/performance/usePerformanceEntries.d.ts +3 -0
- package/dist/inspector/pages/performance/usePerformanceEntries.d.ts.map +1 -0
- package/dist/inspector/register-custom-element.js +3 -1
- package/dist/inspector/register-custom-element.js.map +1 -1
- package/dist/inspector/standalone.js +1 -1
- package/dist/inspector/tests/pages/performance/PerformancePage.test.d.ts +2 -0
- package/dist/inspector/tests/pages/performance/PerformancePage.test.d.ts.map +1 -0
- package/dist/inspector/tests/pages/performance/SubscriptionDetailPanel.test.d.ts +2 -0
- package/dist/inspector/tests/pages/performance/SubscriptionDetailPanel.test.d.ts.map +1 -0
- package/dist/inspector/tests/pages/performance/SubscriptionRow.test.d.ts +2 -0
- package/dist/inspector/tests/pages/performance/SubscriptionRow.test.d.ts.map +1 -0
- package/dist/inspector/tests/pages/performance/Timeline.test.d.ts +2 -0
- package/dist/inspector/tests/pages/performance/Timeline.test.d.ts.map +1 -0
- package/dist/inspector/tests/pages/performance/helpers.test.d.ts +2 -0
- package/dist/inspector/tests/pages/performance/helpers.test.d.ts.map +1 -0
- package/dist/inspector/viewer/delete-local-data.d.ts.map +1 -1
- package/dist/inspector/viewer/header.d.ts +4 -2
- package/dist/inspector/viewer/header.d.ts.map +1 -1
- package/dist/inspector/viewer/page-stack.d.ts +3 -1
- package/dist/inspector/viewer/page-stack.d.ts.map +1 -1
- package/dist/react-core/hooks.d.ts +2 -2
- package/dist/react-core/hooks.d.ts.map +1 -1
- package/dist/react-core/index.js +50 -18
- package/dist/react-core/index.js.map +1 -1
- package/dist/react-core/subscription-provider.d.ts.map +1 -1
- package/dist/react-native-core/media/image.d.ts +1 -1
- package/dist/svelte/jazz.class.svelte.d.ts.map +1 -1
- package/dist/svelte/jazz.class.svelte.js +27 -22
- package/dist/testing.js +2 -2
- package/dist/tools/coValues/interfaces.d.ts.map +1 -1
- package/dist/tools/exports.d.ts +1 -1
- package/dist/tools/exports.d.ts.map +1 -1
- package/dist/tools/implementation/zodSchema/runtimeConverters/coValueSchemaTransformation.d.ts.map +1 -1
- package/dist/tools/implementation/zodSchema/schemaTypes/AccountSchema.d.ts.map +1 -1
- package/dist/tools/implementation/zodSchema/schemaTypes/CoFeedSchema.d.ts +2 -1
- package/dist/tools/implementation/zodSchema/schemaTypes/CoFeedSchema.d.ts.map +1 -1
- package/dist/tools/implementation/zodSchema/schemaTypes/CoListSchema.d.ts +2 -1
- package/dist/tools/implementation/zodSchema/schemaTypes/CoListSchema.d.ts.map +1 -1
- package/dist/tools/implementation/zodSchema/schemaTypes/CoMapSchema.d.ts +2 -1
- package/dist/tools/implementation/zodSchema/schemaTypes/CoMapSchema.d.ts.map +1 -1
- package/dist/tools/implementation/zodSchema/schemaTypes/CoVectorSchema.d.ts +3 -1
- package/dist/tools/implementation/zodSchema/schemaTypes/CoVectorSchema.d.ts.map +1 -1
- package/dist/tools/implementation/zodSchema/schemaTypes/FileStreamSchema.d.ts +3 -1
- package/dist/tools/implementation/zodSchema/schemaTypes/FileStreamSchema.d.ts.map +1 -1
- package/dist/tools/implementation/zodSchema/schemaTypes/PlainTextSchema.d.ts +2 -1
- package/dist/tools/implementation/zodSchema/schemaTypes/PlainTextSchema.d.ts.map +1 -1
- package/dist/tools/implementation/zodSchema/schemaTypes/RichTextSchema.d.ts +6 -1
- package/dist/tools/implementation/zodSchema/schemaTypes/RichTextSchema.d.ts.map +1 -1
- package/dist/tools/implementation/zodSchema/zodCo.d.ts.map +1 -1
- package/dist/tools/ssr.js +1 -1
- package/dist/tools/subscribe/SubscriptionCache.d.ts +2 -2
- package/dist/tools/subscribe/SubscriptionCache.d.ts.map +1 -1
- package/dist/tools/subscribe/SubscriptionScope.d.ts +19 -12
- package/dist/tools/subscribe/SubscriptionScope.d.ts.map +1 -1
- package/dist/tools/subscribe/errorReporting.d.ts +6 -0
- package/dist/tools/subscribe/errorReporting.d.ts.map +1 -1
- package/dist/tools/subscribe/index.d.ts +4 -4
- package/dist/tools/subscribe/index.d.ts.map +1 -1
- package/dist/tools/subscribe/types.d.ts +48 -3
- package/dist/tools/subscribe/types.d.ts.map +1 -1
- package/dist/tools/subscribe/utils.d.ts +1 -1
- package/dist/tools/subscribe/utils.d.ts.map +1 -1
- package/dist/tools/tests/SubscriptionScope.performance.test.d.ts +2 -0
- package/dist/tools/tests/SubscriptionScope.performance.test.d.ts.map +1 -0
- package/package.json +4 -4
- package/src/inspector/in-app.tsx +41 -3
- package/src/inspector/index.tsx +5 -1
- package/src/inspector/pages/home.tsx +26 -3
- package/src/inspector/pages/performance/PerformancePage.tsx +215 -0
- package/src/inspector/pages/performance/SubscriptionDetailPanel.tsx +182 -0
- package/src/inspector/pages/performance/SubscriptionRow.tsx +242 -0
- package/src/inspector/pages/performance/Timeline.tsx +513 -0
- package/src/inspector/pages/performance/helpers.ts +70 -0
- package/src/inspector/pages/performance/index.ts +2 -0
- package/src/inspector/pages/performance/types.ts +12 -0
- package/src/inspector/pages/performance/usePerformanceEntries.ts +53 -0
- package/src/inspector/register-custom-element.ts +3 -0
- package/src/inspector/tests/pages/performance/PerformancePage.test.tsx +83 -0
- package/src/inspector/tests/pages/performance/SubscriptionDetailPanel.test.tsx +68 -0
- package/src/inspector/tests/pages/performance/SubscriptionRow.test.tsx +93 -0
- package/src/inspector/tests/pages/performance/Timeline.test.tsx +57 -0
- package/src/inspector/tests/pages/performance/helpers.test.ts +91 -0
- package/src/inspector/viewer/delete-local-data.tsx +24 -5
- package/src/inspector/viewer/header.tsx +96 -17
- package/src/inspector/viewer/page-stack.tsx +22 -18
- package/src/react-core/hooks.ts +34 -4
- package/src/react-core/subscription-provider.tsx +17 -8
- package/src/svelte/jazz.class.svelte.ts +51 -33
- package/src/tools/coValues/coList.ts +73 -37
- package/src/tools/coValues/interfaces.ts +3 -0
- package/src/tools/exports.ts +1 -0
- package/src/tools/implementation/zodSchema/runtimeConverters/coValueSchemaTransformation.ts +13 -0
- package/src/tools/implementation/zodSchema/schemaTypes/AccountSchema.ts +0 -2
- package/src/tools/implementation/zodSchema/schemaTypes/CoFeedSchema.ts +5 -2
- package/src/tools/implementation/zodSchema/schemaTypes/CoListSchema.ts +5 -2
- package/src/tools/implementation/zodSchema/schemaTypes/CoMapSchema.ts +5 -2
- package/src/tools/implementation/zodSchema/schemaTypes/CoVectorSchema.ts +6 -2
- package/src/tools/implementation/zodSchema/schemaTypes/FileStreamSchema.ts +6 -2
- package/src/tools/implementation/zodSchema/schemaTypes/PlainTextSchema.ts +5 -2
- package/src/tools/implementation/zodSchema/schemaTypes/RichTextSchema.ts +9 -2
- package/src/tools/subscribe/SubscriptionCache.ts +6 -4
- package/src/tools/subscribe/SubscriptionScope.ts +141 -23
- package/src/tools/subscribe/errorReporting.ts +1 -1
- package/src/tools/subscribe/index.ts +1 -1
- package/src/tools/subscribe/types.ts +62 -9
- package/src/tools/subscribe/utils.ts +2 -2
- package/src/tools/tests/SubscriptionScope.performance.test.ts +149 -0
- package/src/tools/tests/coList.test.ts +262 -0
- package/src/tools/tests/schema.withPermissions.test.ts +27 -4
- package/dist/chunk-3CAPPS2F.js.map +0 -1
- package/dist/chunk-PZ5AY32C.js +0 -10
- package/dist/inspector/chunk-MCTB5ZJC.js.map +0 -1
- package/dist/inspector/custom-element-5YWVZBWA.js.map +0 -1
- /package/dist/{chunk-PZ5AY32C.js.map → chunk-ZQWSQH6L.js.map} +0 -0
|
@@ -1225,3 +1225,265 @@ describe("lastUpdatedAt", () => {
|
|
|
1225
1225
|
expect(list.$jazz.lastUpdatedAt).not.toEqual(updatedAt);
|
|
1226
1226
|
});
|
|
1227
1227
|
});
|
|
1228
|
+
|
|
1229
|
+
describe("CoList proxy traps", () => {
|
|
1230
|
+
test(".values() returns the same values as Object.values()", () => {
|
|
1231
|
+
const TestList = co.list(z.string());
|
|
1232
|
+
const list = TestList.create([]);
|
|
1233
|
+
list.$jazz.push("bread");
|
|
1234
|
+
list.$jazz.push("butter");
|
|
1235
|
+
list.$jazz.push("onion");
|
|
1236
|
+
|
|
1237
|
+
const valuesFromMethod = [...list.values()];
|
|
1238
|
+
const valuesFromObject = Object.values(list);
|
|
1239
|
+
expect(valuesFromMethod).toEqual(valuesFromObject);
|
|
1240
|
+
expect(valuesFromMethod).toEqual(["bread", "butter", "onion"]);
|
|
1241
|
+
});
|
|
1242
|
+
|
|
1243
|
+
test(".values().map() returns the same values as .map()", () => {
|
|
1244
|
+
const TestList = co.list(z.string());
|
|
1245
|
+
const list = TestList.create([]);
|
|
1246
|
+
list.$jazz.push("bread");
|
|
1247
|
+
list.$jazz.push("butter");
|
|
1248
|
+
list.$jazz.push("onion");
|
|
1249
|
+
|
|
1250
|
+
const valuesFromMethod = [...list.values().map((v) => v.toUpperCase())];
|
|
1251
|
+
const valuesFromObject = list.map((v) => v.toUpperCase());
|
|
1252
|
+
|
|
1253
|
+
expect(valuesFromMethod).toEqual(valuesFromObject);
|
|
1254
|
+
expect(valuesFromMethod).toEqual(["BREAD", "BUTTER", "ONION"]);
|
|
1255
|
+
});
|
|
1256
|
+
|
|
1257
|
+
test(".keys() returns numeric indices", () => {
|
|
1258
|
+
const TestList = co.list(z.string());
|
|
1259
|
+
const list = TestList.create(["bread", "butter", "onion"]);
|
|
1260
|
+
|
|
1261
|
+
const keys = [...list.keys()];
|
|
1262
|
+
|
|
1263
|
+
expect(keys).toEqual([0, 1, 2]);
|
|
1264
|
+
});
|
|
1265
|
+
|
|
1266
|
+
test(".entries() returns index-value pairs", () => {
|
|
1267
|
+
const TestList = co.list(z.string());
|
|
1268
|
+
const list = TestList.create(["bread", "butter", "onion"]);
|
|
1269
|
+
|
|
1270
|
+
const entries = [...list.entries()];
|
|
1271
|
+
|
|
1272
|
+
expect(entries).toEqual([
|
|
1273
|
+
[0, "bread"],
|
|
1274
|
+
[1, "butter"],
|
|
1275
|
+
[2, "onion"],
|
|
1276
|
+
]);
|
|
1277
|
+
});
|
|
1278
|
+
|
|
1279
|
+
test("for...of iteration works correctly", () => {
|
|
1280
|
+
const TestList = co.list(z.string());
|
|
1281
|
+
const list = TestList.create(["bread", "butter", "onion"]);
|
|
1282
|
+
|
|
1283
|
+
const items: string[] = [];
|
|
1284
|
+
for (const item of list) {
|
|
1285
|
+
items.push(item);
|
|
1286
|
+
}
|
|
1287
|
+
|
|
1288
|
+
expect(items).toEqual(["bread", "butter", "onion"]);
|
|
1289
|
+
});
|
|
1290
|
+
|
|
1291
|
+
test("spread operator works correctly", () => {
|
|
1292
|
+
const TestList = co.list(z.string());
|
|
1293
|
+
const list = TestList.create(["bread", "butter", "onion"]);
|
|
1294
|
+
|
|
1295
|
+
const items = [...list];
|
|
1296
|
+
|
|
1297
|
+
expect(items).toEqual(["bread", "butter", "onion"]);
|
|
1298
|
+
});
|
|
1299
|
+
|
|
1300
|
+
test("Array.from works correctly", () => {
|
|
1301
|
+
const TestList = co.list(z.string());
|
|
1302
|
+
const list = TestList.create(["bread", "butter", "onion"]);
|
|
1303
|
+
|
|
1304
|
+
const items = Array.from(list);
|
|
1305
|
+
|
|
1306
|
+
expect(items).toEqual(["bread", "butter", "onion"]);
|
|
1307
|
+
});
|
|
1308
|
+
|
|
1309
|
+
test(".values() works with CoValue references", () => {
|
|
1310
|
+
const Dog = co.map({
|
|
1311
|
+
name: z.string(),
|
|
1312
|
+
});
|
|
1313
|
+
const DogList = co.list(Dog);
|
|
1314
|
+
|
|
1315
|
+
const list = DogList.create([
|
|
1316
|
+
{ name: "Rex" },
|
|
1317
|
+
{ name: "Fido" },
|
|
1318
|
+
{ name: "Buddy" },
|
|
1319
|
+
]);
|
|
1320
|
+
|
|
1321
|
+
const valuesFromMethod = [...list.values()];
|
|
1322
|
+
const valuesFromObject = Object.values(list);
|
|
1323
|
+
|
|
1324
|
+
expect(valuesFromMethod.length).toBe(3);
|
|
1325
|
+
expect(valuesFromMethod.map((d) => d?.name)).toEqual([
|
|
1326
|
+
"Rex",
|
|
1327
|
+
"Fido",
|
|
1328
|
+
"Buddy",
|
|
1329
|
+
]);
|
|
1330
|
+
expect(valuesFromMethod).toEqual(valuesFromObject);
|
|
1331
|
+
});
|
|
1332
|
+
|
|
1333
|
+
test(".values() works after ensureLoaded", async () => {
|
|
1334
|
+
const Task = co.map({
|
|
1335
|
+
title: z.string(),
|
|
1336
|
+
});
|
|
1337
|
+
const TaskList = co.list(Task);
|
|
1338
|
+
|
|
1339
|
+
const list = TaskList.create([
|
|
1340
|
+
{ title: "Task 1" },
|
|
1341
|
+
{ title: "Task 2" },
|
|
1342
|
+
{ title: "Task 3" },
|
|
1343
|
+
]);
|
|
1344
|
+
|
|
1345
|
+
const loadedList = await list.$jazz.ensureLoaded({
|
|
1346
|
+
resolve: { $each: true },
|
|
1347
|
+
});
|
|
1348
|
+
|
|
1349
|
+
const valuesFromMethod = [...loadedList.values()];
|
|
1350
|
+
const valuesFromObject = Object.values(loadedList);
|
|
1351
|
+
|
|
1352
|
+
expect(valuesFromMethod.length).toBe(3);
|
|
1353
|
+
expect(valuesFromMethod.map((t) => t.title)).toEqual([
|
|
1354
|
+
"Task 1",
|
|
1355
|
+
"Task 2",
|
|
1356
|
+
"Task 3",
|
|
1357
|
+
]);
|
|
1358
|
+
expect(valuesFromMethod.map((t) => t.$jazz.id)).toEqual(
|
|
1359
|
+
valuesFromObject.map((t) => t.$jazz.id),
|
|
1360
|
+
);
|
|
1361
|
+
});
|
|
1362
|
+
|
|
1363
|
+
test(".values() works on remotely loaded list", async () => {
|
|
1364
|
+
const Task = co.map({
|
|
1365
|
+
title: z.string(),
|
|
1366
|
+
});
|
|
1367
|
+
const TaskList = co.list(Task);
|
|
1368
|
+
|
|
1369
|
+
const group = Group.create();
|
|
1370
|
+
group.addMember("everyone", "writer");
|
|
1371
|
+
|
|
1372
|
+
const list = TaskList.create(
|
|
1373
|
+
[{ title: "Task 1" }, { title: "Task 2" }, { title: "Task 3" }],
|
|
1374
|
+
group,
|
|
1375
|
+
);
|
|
1376
|
+
|
|
1377
|
+
const userB = await createJazzTestAccount();
|
|
1378
|
+
|
|
1379
|
+
const loadedList = await TaskList.load(list.$jazz.id, {
|
|
1380
|
+
resolve: { $each: true },
|
|
1381
|
+
loadAs: userB,
|
|
1382
|
+
});
|
|
1383
|
+
|
|
1384
|
+
assertLoaded(loadedList);
|
|
1385
|
+
|
|
1386
|
+
const valuesFromMethod = [...loadedList.values()];
|
|
1387
|
+
const valuesFromObject = Object.values(loadedList);
|
|
1388
|
+
|
|
1389
|
+
expect(valuesFromMethod.length).toBe(3);
|
|
1390
|
+
expect(valuesFromMethod.map((t) => t.title)).toEqual([
|
|
1391
|
+
"Task 1",
|
|
1392
|
+
"Task 2",
|
|
1393
|
+
"Task 3",
|
|
1394
|
+
]);
|
|
1395
|
+
expect(valuesFromMethod.map((t) => t.$jazz.id)).toEqual(
|
|
1396
|
+
valuesFromObject.map((t) => t.$jazz.id),
|
|
1397
|
+
);
|
|
1398
|
+
});
|
|
1399
|
+
|
|
1400
|
+
test("iterator methods work on empty list", () => {
|
|
1401
|
+
const TestList = co.list(z.string());
|
|
1402
|
+
const list = TestList.create([]);
|
|
1403
|
+
|
|
1404
|
+
expect([...list.values()]).toEqual([]);
|
|
1405
|
+
expect([...list.keys()]).toEqual([]);
|
|
1406
|
+
expect([...list.entries()]).toEqual([]);
|
|
1407
|
+
expect([...list]).toEqual([]);
|
|
1408
|
+
});
|
|
1409
|
+
|
|
1410
|
+
test("Object.getOwnPropertyDescriptors returns correct descriptors", () => {
|
|
1411
|
+
const TestList = co.list(z.string());
|
|
1412
|
+
const list = TestList.create(["a", "b", "c"]);
|
|
1413
|
+
|
|
1414
|
+
const descriptors = Object.getOwnPropertyDescriptors(list);
|
|
1415
|
+
|
|
1416
|
+
// Check numeric index descriptors
|
|
1417
|
+
expect(descriptors["0"]).toEqual({
|
|
1418
|
+
enumerable: true,
|
|
1419
|
+
configurable: true,
|
|
1420
|
+
writable: false,
|
|
1421
|
+
value: "a",
|
|
1422
|
+
});
|
|
1423
|
+
expect(descriptors["1"]).toEqual({
|
|
1424
|
+
enumerable: true,
|
|
1425
|
+
configurable: true,
|
|
1426
|
+
writable: false,
|
|
1427
|
+
value: "b",
|
|
1428
|
+
});
|
|
1429
|
+
expect(descriptors["2"]).toEqual({
|
|
1430
|
+
enumerable: true,
|
|
1431
|
+
configurable: true,
|
|
1432
|
+
writable: false,
|
|
1433
|
+
value: "c",
|
|
1434
|
+
});
|
|
1435
|
+
|
|
1436
|
+
// Check length descriptor
|
|
1437
|
+
expect(descriptors["length"]).toEqual({
|
|
1438
|
+
enumerable: false,
|
|
1439
|
+
configurable: false,
|
|
1440
|
+
writable: true,
|
|
1441
|
+
value: 3,
|
|
1442
|
+
});
|
|
1443
|
+
|
|
1444
|
+
// Verify only expected enumerable keys
|
|
1445
|
+
const enumerableKeys = Object.keys(descriptors).filter(
|
|
1446
|
+
(key) => descriptors[key]?.enumerable,
|
|
1447
|
+
);
|
|
1448
|
+
expect(enumerableKeys.sort()).toEqual(["0", "1", "2"]);
|
|
1449
|
+
});
|
|
1450
|
+
|
|
1451
|
+
test("Object.getOwnPropertyDescriptors returns the resolved references", () => {
|
|
1452
|
+
const TestList = co.list(co.map({ name: z.string() }));
|
|
1453
|
+
const list = TestList.create([{ name: "a" }, { name: "b" }, { name: "c" }]);
|
|
1454
|
+
|
|
1455
|
+
const descriptors = Object.getOwnPropertyDescriptors(list);
|
|
1456
|
+
|
|
1457
|
+
// Check numeric index descriptors
|
|
1458
|
+
expect(descriptors["0"]).toEqual({
|
|
1459
|
+
enumerable: true,
|
|
1460
|
+
configurable: true,
|
|
1461
|
+
writable: false,
|
|
1462
|
+
value: list[0],
|
|
1463
|
+
});
|
|
1464
|
+
expect(descriptors["1"]).toEqual({
|
|
1465
|
+
enumerable: true,
|
|
1466
|
+
configurable: true,
|
|
1467
|
+
writable: false,
|
|
1468
|
+
value: list[1],
|
|
1469
|
+
});
|
|
1470
|
+
expect(descriptors["2"]).toEqual({
|
|
1471
|
+
enumerable: true,
|
|
1472
|
+
configurable: true,
|
|
1473
|
+
writable: false,
|
|
1474
|
+
value: list[2],
|
|
1475
|
+
});
|
|
1476
|
+
});
|
|
1477
|
+
|
|
1478
|
+
test("setting the lenght to 0 has no effect", () => {
|
|
1479
|
+
const TestList = co.list(z.string());
|
|
1480
|
+
const list = TestList.create(["a", "b", "c"]);
|
|
1481
|
+
|
|
1482
|
+
list.length = 0;
|
|
1483
|
+
|
|
1484
|
+
expect(list.length).toBe(3);
|
|
1485
|
+
expect(list[0]).toBe("a");
|
|
1486
|
+
expect(list[1]).toBe("b");
|
|
1487
|
+
expect(list[2]).toBe("c");
|
|
1488
|
+
});
|
|
1489
|
+
});
|
|
@@ -843,7 +843,7 @@ describe("setDefaultSchemaPermissions", () => {
|
|
|
843
843
|
expect(childOwner.getRoleOf(anotherAccount.$jazz.id)).toEqual("reader");
|
|
844
844
|
});
|
|
845
845
|
|
|
846
|
-
test("
|
|
846
|
+
test("modifies default permissions for existing schemas", () => {
|
|
847
847
|
const ExistingMap = co.map({
|
|
848
848
|
name: co.plainText(),
|
|
849
849
|
});
|
|
@@ -852,8 +852,31 @@ describe("setDefaultSchemaPermissions", () => {
|
|
|
852
852
|
});
|
|
853
853
|
|
|
854
854
|
const map = ExistingMap.create({ name: "Hello" });
|
|
855
|
-
expect(
|
|
856
|
-
|
|
857
|
-
|
|
855
|
+
expect(map.name.$jazz.owner.$jazz.id).toContain(map.$jazz.owner.$jazz.id);
|
|
856
|
+
});
|
|
857
|
+
|
|
858
|
+
test("modifies default permissions for copied schemas", async () => {
|
|
859
|
+
const anotherAccount = await createJazzTestAccount();
|
|
860
|
+
|
|
861
|
+
const ExistingMap = co.map({
|
|
862
|
+
name: co.plainText(),
|
|
863
|
+
});
|
|
864
|
+
setDefaultSchemaPermissions({
|
|
865
|
+
onCreate() {
|
|
866
|
+
// Do nothing
|
|
867
|
+
},
|
|
868
|
+
});
|
|
869
|
+
const CopiedMap = ExistingMap.resolved({ name: true });
|
|
870
|
+
setDefaultSchemaPermissions({
|
|
871
|
+
onCreate(newGroup) {
|
|
872
|
+
newGroup.addMember(anotherAccount, "reader");
|
|
873
|
+
},
|
|
874
|
+
});
|
|
875
|
+
|
|
876
|
+
const map = CopiedMap.create({ name: "Hello" });
|
|
877
|
+
await map.$jazz.waitForSync();
|
|
878
|
+
|
|
879
|
+
const mapOwner = map.$jazz.owner;
|
|
880
|
+
expect(mapOwner.getRoleOf(anotherAccount.$jazz.id)).toEqual("reader");
|
|
858
881
|
});
|
|
859
882
|
});
|