cojson 0.18.29 → 0.18.30

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.
Files changed (144) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +9 -0
  3. package/dist/PeerState.d.ts +23 -14
  4. package/dist/PeerState.d.ts.map +1 -1
  5. package/dist/PeerState.js +74 -23
  6. package/dist/PeerState.js.map +1 -1
  7. package/dist/SyncStateManager.d.ts +3 -3
  8. package/dist/SyncStateManager.d.ts.map +1 -1
  9. package/dist/SyncStateManager.js +18 -44
  10. package/dist/SyncStateManager.js.map +1 -1
  11. package/dist/coValueContentMessage.d.ts.map +1 -1
  12. package/dist/coValueContentMessage.js +2 -1
  13. package/dist/coValueContentMessage.js.map +1 -1
  14. package/dist/coValueCore/PeerKnownState.d.ts +21 -0
  15. package/dist/coValueCore/PeerKnownState.d.ts.map +1 -0
  16. package/dist/coValueCore/PeerKnownState.js +52 -0
  17. package/dist/coValueCore/PeerKnownState.js.map +1 -0
  18. package/dist/coValueCore/coValueCore.d.ts +39 -8
  19. package/dist/coValueCore/coValueCore.d.ts.map +1 -1
  20. package/dist/coValueCore/coValueCore.js +139 -40
  21. package/dist/coValueCore/coValueCore.js.map +1 -1
  22. package/dist/coValueCore/decryptTransactionChangesAndMeta.d.ts.map +1 -1
  23. package/dist/coValueCore/decryptTransactionChangesAndMeta.js +0 -5
  24. package/dist/coValueCore/decryptTransactionChangesAndMeta.js.map +1 -1
  25. package/dist/coValueCore/verifiedState.d.ts +0 -14
  26. package/dist/coValueCore/verifiedState.d.ts.map +1 -1
  27. package/dist/coValueCore/verifiedState.js +2 -32
  28. package/dist/coValueCore/verifiedState.js.map +1 -1
  29. package/dist/coValues/coList.d.ts +3 -4
  30. package/dist/coValues/coList.d.ts.map +1 -1
  31. package/dist/coValues/coList.js +4 -4
  32. package/dist/coValues/coList.js.map +1 -1
  33. package/dist/coValues/coMap.d.ts +3 -4
  34. package/dist/coValues/coMap.d.ts.map +1 -1
  35. package/dist/coValues/coMap.js +5 -4
  36. package/dist/coValues/coMap.js.map +1 -1
  37. package/dist/coValues/coStream.d.ts +3 -3
  38. package/dist/coValues/coStream.d.ts.map +1 -1
  39. package/dist/coValues/coStream.js +3 -4
  40. package/dist/coValues/coStream.js.map +1 -1
  41. package/dist/coValues/group.d.ts +3 -3
  42. package/dist/coValues/group.d.ts.map +1 -1
  43. package/dist/coValues/group.js +74 -52
  44. package/dist/coValues/group.js.map +1 -1
  45. package/dist/exports.d.ts +2 -2
  46. package/dist/exports.d.ts.map +1 -1
  47. package/dist/exports.js +2 -2
  48. package/dist/exports.js.map +1 -1
  49. package/dist/localNode.d.ts.map +1 -1
  50. package/dist/localNode.js +7 -5
  51. package/dist/localNode.js.map +1 -1
  52. package/dist/permissions.d.ts +5 -1
  53. package/dist/permissions.d.ts.map +1 -1
  54. package/dist/permissions.js +173 -109
  55. package/dist/permissions.js.map +1 -1
  56. package/dist/sync.d.ts.map +1 -1
  57. package/dist/sync.js +33 -44
  58. package/dist/sync.js.map +1 -1
  59. package/dist/tests/PeerKnownState.test.d.ts +2 -0
  60. package/dist/tests/PeerKnownState.test.d.ts.map +1 -0
  61. package/dist/tests/PeerKnownState.test.js +342 -0
  62. package/dist/tests/PeerKnownState.test.js.map +1 -0
  63. package/dist/tests/PeerState.test.js +17 -16
  64. package/dist/tests/PeerState.test.js.map +1 -1
  65. package/dist/tests/StorageApiAsync.test.js +12 -12
  66. package/dist/tests/StorageApiAsync.test.js.map +1 -1
  67. package/dist/tests/StorageApiSync.test.js +11 -11
  68. package/dist/tests/StorageApiSync.test.js.map +1 -1
  69. package/dist/tests/SyncStateManager.test.js +16 -21
  70. package/dist/tests/SyncStateManager.test.js.map +1 -1
  71. package/dist/tests/coValueCore.dependencies.test.js +59 -0
  72. package/dist/tests/coValueCore.dependencies.test.js.map +1 -1
  73. package/dist/tests/coValueCore.test.js +41 -21
  74. package/dist/tests/coValueCore.test.js.map +1 -1
  75. package/dist/tests/group.addMember.test.js +266 -219
  76. package/dist/tests/group.addMember.test.js.map +1 -1
  77. package/dist/tests/group.inheritance.test.js +12 -0
  78. package/dist/tests/group.inheritance.test.js.map +1 -1
  79. package/dist/tests/group.invite.test.js +77 -0
  80. package/dist/tests/group.invite.test.js.map +1 -1
  81. package/dist/tests/group.removeMember.test.js +64 -7
  82. package/dist/tests/group.removeMember.test.js.map +1 -1
  83. package/dist/tests/group.roleOf.test.js +14 -4
  84. package/dist/tests/group.roleOf.test.js.map +1 -1
  85. package/dist/tests/permissions.test.js +51 -202
  86. package/dist/tests/permissions.test.js.map +1 -1
  87. package/dist/tests/sync.content.test.js +2 -2
  88. package/dist/tests/sync.content.test.js.map +1 -1
  89. package/dist/tests/sync.invite.test.js +6 -6
  90. package/dist/tests/sync.load.test.js +22 -22
  91. package/dist/tests/sync.mesh.test.js +9 -9
  92. package/dist/tests/sync.storage.test.js +13 -7
  93. package/dist/tests/sync.storage.test.js.map +1 -1
  94. package/dist/tests/sync.storageAsync.test.js +3 -3
  95. package/dist/tests/sync.test.js +13 -33
  96. package/dist/tests/sync.test.js.map +1 -1
  97. package/dist/tests/sync.upload.test.js +2 -2
  98. package/package.json +3 -3
  99. package/src/PeerState.ts +86 -34
  100. package/src/SyncStateManager.ts +25 -60
  101. package/src/coValueContentMessage.ts +3 -1
  102. package/src/coValueCore/PeerKnownState.ts +74 -0
  103. package/src/coValueCore/coValueCore.ts +180 -49
  104. package/src/coValueCore/decryptTransactionChangesAndMeta.ts +0 -6
  105. package/src/coValueCore/verifiedState.ts +2 -37
  106. package/src/coValues/coList.ts +7 -7
  107. package/src/coValues/coMap.ts +9 -7
  108. package/src/coValues/coStream.ts +6 -5
  109. package/src/coValues/group.ts +99 -60
  110. package/src/exports.ts +2 -1
  111. package/src/localNode.ts +7 -5
  112. package/src/permissions.ts +204 -123
  113. package/src/sync.ts +37 -53
  114. package/src/tests/PeerKnownState.test.ts +426 -0
  115. package/src/tests/PeerState.test.ts +24 -24
  116. package/src/tests/StorageApiAsync.test.ts +12 -12
  117. package/src/tests/StorageApiSync.test.ts +11 -11
  118. package/src/tests/SyncStateManager.test.ts +23 -53
  119. package/src/tests/coValueCore.dependencies.test.ts +87 -0
  120. package/src/tests/coValueCore.test.ts +64 -22
  121. package/src/tests/group.addMember.test.ts +384 -345
  122. package/src/tests/group.inheritance.test.ts +33 -0
  123. package/src/tests/group.invite.test.ts +117 -0
  124. package/src/tests/group.removeMember.test.ts +95 -9
  125. package/src/tests/group.roleOf.test.ts +16 -4
  126. package/src/tests/permissions.test.ts +56 -295
  127. package/src/tests/sync.content.test.ts +2 -2
  128. package/src/tests/sync.invite.test.ts +6 -6
  129. package/src/tests/sync.load.test.ts +22 -22
  130. package/src/tests/sync.mesh.test.ts +9 -9
  131. package/src/tests/sync.storage.test.ts +13 -8
  132. package/src/tests/sync.storageAsync.test.ts +3 -3
  133. package/src/tests/sync.test.ts +21 -50
  134. package/src/tests/sync.upload.test.ts +2 -2
  135. package/dist/PeerKnownStates.d.ts +0 -19
  136. package/dist/PeerKnownStates.d.ts.map +0 -1
  137. package/dist/PeerKnownStates.js +0 -64
  138. package/dist/PeerKnownStates.js.map +0 -1
  139. package/dist/tests/PeerKnownStates.test.d.ts +0 -2
  140. package/dist/tests/PeerKnownStates.test.d.ts.map +0 -1
  141. package/dist/tests/PeerKnownStates.test.js +0 -77
  142. package/dist/tests/PeerKnownStates.test.js.map +0 -1
  143. package/src/PeerKnownStates.ts +0 -93
  144. package/src/tests/PeerKnownStates.test.ts +0 -99
@@ -1 +1 @@
1
- {"version":3,"file":"group.roleOf.test.js","sourceRoot":"","sources":["../../src/tests/group.roleOf.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"group.roleOf.test.js","sourceRoot":"","sources":["../../src/tests/group.roleOf.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEhD,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,iBAAiB,EACjB,+BAA+B,EAC/B,uBAAuB,EACvB,OAAO,GACR,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,IAAI,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAC3C,MAAM,IAAI,GAAG,+BAA+B,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,MAAM,CAAC,MAAM,CAAC,GAAG,uBAAuB,EAAE,CAAC;QAE3C,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAClC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC7C,MAAM,IAAI,GAAG,+BAA+B,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,MAAM,CAAC,MAAM,CAAC,GAAG,uBAAuB,EAAE,CAAC;QAE3C,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,gCAAgC,EAAE,GAAG,EAAE;QAC1C,MAAM,IAAI,GAAG,+BAA+B,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,MAAM,CAAC,MAAM,CAAC,GAAG,uBAAuB,EAAE,CAAC;QAE3C,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAClC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC3B,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,uCAAuC,EAAE,GAAG,EAAE;QACjD,MAAM,IAAI,GAAG,+BAA+B,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,uBAAuB,EAAE,CAAC;QAEvD,KAAK,CAAC,iBAAiB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC9C,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAChD,MAAM,IAAI,GAAG,+BAA+B,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,uBAAuB,EAAE,CAAC;QAEvD,KAAK,CAAC,iBAAiB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC9C,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAClC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC/E,MAAM,IAAI,GAAG,+BAA+B,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,uBAAuB,EAAE,CAAC;QAEvD,KAAK,CAAC,iBAAiB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC9C,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAClC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAC/B,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC1D,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,KAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oEAAoE,EAAE,GAAG,EAAE;QAC9E,MAAM,IAAI,GAAG,+BAA+B,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,uBAAuB,EAAE,CAAC;QAEvD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACvC,WAAW,CAAC,iBAAiB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAEpD,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC1B,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAElC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,iFAAiF,EAAE,KAAK,IAAI,EAAE;QACjG,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAE3E,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACvC,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QAEtE,yCAAyC;QACzC,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACtC,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAEpC,uDAAuD;QACvD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAExD,yBAAyB;QACzB,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAEtC,wCAAwC;QACxC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,6EAA6E,EAAE,KAAK,IAAI,EAAE;QAC7F,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAE3E,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAC7C,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAC5C,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QAEtE,qBAAqB;QACrB,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAE/B,8CAA8C;QAC9C,WAAW,CAAC,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC5C,UAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAEzC,0EAA0E;QAC1E,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;QAC9E,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAE3E,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAEvC,yBAAyB;QACzB,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAEtC,6DAA6D;QAC7D,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,8EAA8E,EAAE,KAAK,IAAI,EAAE;QAC9F,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAE3E,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAC7C,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAE5C,qBAAqB;QACrB,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAE/B,8BAA8B;QAC9B,WAAW,CAAC,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAE5C,6CAA6C;QAC7C,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,wEAAwE,EAAE,KAAK,IAAI,EAAE;QACxF,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAE3E,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAClD,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAC7C,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAE5C,MAAM,iBAAiB,GAAG,MAAM,iBAAiB,CAC/C,KAAK,CAAC,IAAI,EACV,UAAU,CAAC,EAAE,CACd,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QAEtE,2BAA2B;QAC3B,WAAW,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACrC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAE/B,8BAA8B;QAC9B,gBAAgB,CAAC,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAEjD,kDAAkD;QAClD,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE7D,8BAA8B;QAC9B,WAAW,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAE1C,2EAA2E;QAC3E,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE7D,6BAA6B;QAC7B,UAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACxC,MAAM,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAEpC,mCAAmC;QACnC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAE5D,+BAA+B;QAC/B,MAAM,iBAAiB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAE3C,6CAA6C;QAC7C,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE7D,gCAAgC;QAChC,MAAM,WAAW,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAEpC,kDAAkD;QAClD,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,8CAA8C,EAAE,GAAG,EAAE;QAC5D,IAAI,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;YAC9D,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,uBAAuB,CACpD,QAAQ,EACR,QAAQ,CACT,CAAC;YAEF,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAEvC,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;YAEzC,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;YAE9B,MAAM,YAAY,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;YAEnE,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAEnD,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YAE/D,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;YAEhD,MAAM,OAAO,CAAC,KAAK,IAAI,EAAE;gBACvB,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC/D,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;YAClE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,uBAAuB,CACpD,QAAQ,EACR,QAAQ,CACT,CAAC;YAEF,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAEvC,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAEtC,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;YAEzC,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;YAE9B,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;YAEtC,MAAM,YAAY,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;YAEnE,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAEnD,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YAE/D,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAElD,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;YAEhD,MAAM,OAAO,CAAC,KAAK,IAAI,EAAE;gBACvB,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC/D,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;YAClE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,uBAAuB,CACpD,QAAQ,EACR,QAAQ,CACT,CAAC;YAEF,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAEvC,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAEtC,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;YAEzC,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;YAE9B,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;YAEtC,MAAM,YAAY,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;YAEnE,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAEnD,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YAE/D,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAElD,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;YAEhD,MAAM,OAAO,CAAC,KAAK,IAAI,EAAE;gBACvB,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC/D,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;YAClE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,uBAAuB,CACpD,QAAQ,EACR,QAAQ,CACT,CAAC;YAEF,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAEvC,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;YAEzC,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;YAE9B,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAC;YAE3C,MAAM,YAAY,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;YAEnE,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAEnD,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YAE/D,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAElD,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;YAEhD,MAAM,OAAO,CAAC,KAAK,IAAI,EAAE;gBACvB,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC/D,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;YAClE,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAEtC,MAAM,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAE/B,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,6BAA6B,CAAC,CAAC;YAEtD,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;YAEhE,MAAM,OAAO,CAAC,KAAK,IAAI,EAAE;gBACvB,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;gBAClE,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;YACpE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,uBAAuB,CACpD,QAAQ,EACR,QAAQ,CACT,CAAC;YAEF,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAEvC,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;YAEzC,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;YAE9B,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAC;YAE3C,MAAM,YAAY,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;YAEnE,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAEnD,IAAI,UAAU,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YAE7D,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAElD,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;YAEhD,MAAM,OAAO,CAAC,KAAK,IAAI,EAAE;gBACvB,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC/D,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;YAClE,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAEtC,MAAM,OAAO,CAAC,KAAK,IAAI,EAAE;gBACvB,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;YAC1E,CAAC,CAAC,CAAC;YAEH,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAC;YAEpD,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;YAEpE,MAAM,OAAO,CAAC,KAAK,IAAI,EAAE;gBACvB,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;gBAClE,oEAAoE;gBACpE,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;YACpE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;YACxD,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,yBAAyB,CAC7D,QAAQ,EACR,QAAQ,EACR,QAAQ,CACT,CAAC;YAEF,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAEvC,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;YAEzC,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;YAE9B,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAC;YAE3C,MAAM,YAAY,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;YAEnE,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAEnD,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YAE/D,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAElD,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;YAEhD,MAAM,OAAO,CAAC,KAAK,IAAI,EAAE;gBACvB,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC/D,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;YAClE,CAAC,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;YAEtE,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAEpC,MAAM,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAE/B,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YAE/D,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;YAC/E,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,yBAAyB,CAC7D,QAAQ,EACR,QAAQ,EACR,QAAQ,CACT,CAAC;YACF,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;YACtE,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAEvC,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;YAEzC,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;YAE9B,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAC;YAE3C,MAAM,YAAY,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;YAEnE,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAEnD,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YAC/D,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAEpC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAElD,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;YAEhD,MAAM,OAAO,CAAC,KAAK,IAAI,EAAE;gBACvB,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC/D,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;YAClE,CAAC,CAAC,CAAC;YAEH,MAAM,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAE/B,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YAE/D,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -39,7 +39,7 @@ test("Admins can't demote other admins in a group", async () => {
39
39
  test("Admins can't demote other admins in a group (high level)", async () => {
40
40
  const { group, admin, otherAdmin } = groupWithTwoAdminsHighLevel();
41
41
  const groupAsOtherAdmin = expectGroup(await group.core.contentInClonedNodeWithDifferentAccount(otherAdmin));
42
- expect(() => groupAsOtherAdmin.addMemberInternal(admin.id, "writer")).toThrow("Administrators cannot demote other administrators in a group");
42
+ expect(() => groupAsOtherAdmin.addMemberInternal(admin.id, "writer")).toThrow(`Failed to set role writer to ${admin.id} (role of current account is admin)`);
43
43
  expect(groupAsOtherAdmin.get(admin.id)).toEqual("admin");
44
44
  });
45
45
  test("Admins an add writers to a group, who can't add admins, writers, or readers", async () => {
@@ -67,9 +67,9 @@ test("Admins an add writers to a group, who can't add admins, writers, or reader
67
67
  const groupAsWriter = expectGroup(await group.core.contentInClonedNodeWithDifferentAccount(writer));
68
68
  expect(groupAsWriter.get(writer.id)).toEqual("writer");
69
69
  const otherAgent = createAccountInNode(groupAsWriter.core.node);
70
- expect(() => groupAsWriter.addMember(otherAgent, "admin")).toThrow("Failed to set role due to insufficient permissions (role of current account is writer)");
71
- expect(() => groupAsWriter.addMember(otherAgent, "writer")).toThrow("Failed to set role due to insufficient permissions (role of current account is writer)");
72
- expect(() => groupAsWriter.addMember(otherAgent, "reader")).toThrow("Failed to set role due to insufficient permissions (role of current account is writer)");
70
+ expect(() => groupAsWriter.addMember(otherAgent, "admin")).toThrow(`Failed to set role admin to ${otherAgent.id} (role of current account is writer)`);
71
+ expect(() => groupAsWriter.addMember(otherAgent, "writer")).toThrow(`Failed to set role writer to ${otherAgent.id} (role of current account is writer)`);
72
+ expect(() => groupAsWriter.addMember(otherAgent, "reader")).toThrow(`Failed to set role reader to ${otherAgent.id} (role of current account is writer)`);
73
73
  expect(groupAsWriter.get(otherAgent.id)).toBeUndefined();
74
74
  });
75
75
  test("Admins can add readers to a group, who can't add admins, writers, or readers", async () => {
@@ -96,9 +96,9 @@ test("Admins can add readers to a group, who can't add admins, writers, or reade
96
96
  const groupAsReader = expectGroup(await group.core.contentInClonedNodeWithDifferentAccount(reader));
97
97
  expect(groupAsReader.get(reader.id)).toEqual("reader");
98
98
  const otherAgent = createAccountInNode(groupAsReader.core.node);
99
- expect(() => groupAsReader.addMember(otherAgent, "admin")).toThrow("Failed to set role due to insufficient permissions (role of current account is reader)");
100
- expect(() => groupAsReader.addMember(otherAgent, "writer")).toThrow("Failed to set role due to insufficient permissions (role of current account is reader)");
101
- expect(() => groupAsReader.addMember(otherAgent, "reader")).toThrow("Failed to set role due to insufficient permissions (role of current account is reader)");
99
+ expect(() => groupAsReader.addMember(otherAgent, "admin")).toThrow(`Failed to set role admin to ${otherAgent.id} (role of current account is reader)`);
100
+ expect(() => groupAsReader.addMember(otherAgent, "writer")).toThrow(`Failed to set role writer to ${otherAgent.id} (role of current account is reader)`);
101
+ expect(() => groupAsReader.addMember(otherAgent, "reader")).toThrow(`Failed to set role reader to ${otherAgent.id} (role of current account is reader)`);
102
102
  expect(groupAsReader.get(otherAgent.id)).toBeUndefined();
103
103
  });
104
104
  test("Admins can write to an object that is owned by their group", () => {
@@ -832,7 +832,29 @@ test("Admins can create a readerInvite, which can add a reader (high-level)", as
832
832
  expect(groupAsInvitedReader.get(invitedReaderID)).toEqual("reader");
833
833
  expect(groupAsInvitedReader.core.getCurrentReadKey().secret).toBeDefined();
834
834
  });
835
- test("WriterInvites can not invite admins", async () => {
835
+ test.each([
836
+ // [inviteRole, finalRole]
837
+ ["adminInvite", "manager"],
838
+ ["adminInvite", "writer"],
839
+ ["adminInvite", "reader"],
840
+ ["adminInvite", "writeOnly"],
841
+ ["managerInvite", "admin"],
842
+ ["managerInvite", "writer"],
843
+ ["managerInvite", "reader"],
844
+ ["managerInvite", "writeOnly"],
845
+ ["writerInvite", "admin"],
846
+ ["writerInvite", "reader"],
847
+ ["writerInvite", "manager"],
848
+ ["writerInvite", "writeOnly"],
849
+ ["readerInvite", "admin"],
850
+ ["readerInvite", "writer"],
851
+ ["readerInvite", "manager"],
852
+ ["readerInvite", "writeOnly"],
853
+ ["writeOnlyInvite", "admin"],
854
+ ["writeOnlyInvite", "manager"],
855
+ ["writeOnlyInvite", "writer"],
856
+ ["writeOnlyInvite", "reader"],
857
+ ])("%s can not invite %s", async (inviteRole, finalRole) => {
836
858
  const { groupCore, admin } = newGroup();
837
859
  const inviteSecret = Crypto.newRandomAgentSecret();
838
860
  const inviteID = Crypto.getAgentID(inviteSecret);
@@ -849,8 +871,8 @@ test("WriterInvites can not invite admins", async () => {
849
871
  });
850
872
  group.set(`${readKeyID}_for_${admin.id}`, revelation, "trusting");
851
873
  group.set("readKey", readKeyID, "trusting");
852
- group.set(inviteID, "writerInvite", "trusting");
853
- expect(group.get(inviteID)).toEqual("writerInvite");
874
+ group.set(inviteID, inviteRole, "trusting");
875
+ expect(group.get(inviteID)).toEqual(inviteRole);
854
876
  const revelationForInvite = Crypto.seal({
855
877
  message: readKey,
856
878
  from: admin.currentSealerSecret(),
@@ -864,10 +886,17 @@ test("WriterInvites can not invite admins", async () => {
864
886
  const groupAsInvite = expectGroup(await groupCore.contentInClonedNodeWithDifferentAccount(new ControlledAgent(inviteSecret, Crypto)));
865
887
  const invitedAdminSecret = Crypto.newRandomAgentSecret();
866
888
  const invitedAdminID = Crypto.getAgentID(invitedAdminSecret);
867
- groupAsInvite.set(invitedAdminID, "admin", "trusting");
889
+ groupAsInvite.set(invitedAdminID, finalRole, "trusting");
868
890
  expect(groupAsInvite.get(invitedAdminID)).toBeUndefined();
869
891
  });
870
- test("ReaderInvites can not invite admins", async () => {
892
+ test.each([
893
+ // [inviteRole, finalRole]
894
+ ["adminInvite", "admin"],
895
+ ["managerInvite", "manager"],
896
+ ["writerInvite", "writer"],
897
+ ["readerInvite", "reader"],
898
+ ["writeOnlyInvite", "writeOnly"],
899
+ ])("%s can invite %s", async (inviteRole, finalRole) => {
871
900
  const { groupCore, admin } = newGroup();
872
901
  const inviteSecret = Crypto.newRandomAgentSecret();
873
902
  const inviteID = Crypto.getAgentID(inviteSecret);
@@ -884,8 +913,8 @@ test("ReaderInvites can not invite admins", async () => {
884
913
  });
885
914
  group.set(`${readKeyID}_for_${admin.id}`, revelation, "trusting");
886
915
  group.set("readKey", readKeyID, "trusting");
887
- group.set(inviteID, "readerInvite", "trusting");
888
- expect(group.get(inviteID)).toEqual("readerInvite");
916
+ group.set(inviteID, inviteRole, "trusting");
917
+ expect(group.get(inviteID)).toEqual(inviteRole);
889
918
  const revelationForInvite = Crypto.seal({
890
919
  message: readKey,
891
920
  from: admin.currentSealerSecret(),
@@ -899,148 +928,8 @@ test("ReaderInvites can not invite admins", async () => {
899
928
  const groupAsInvite = expectGroup(await groupCore.contentInClonedNodeWithDifferentAccount(new ControlledAgent(inviteSecret, Crypto)));
900
929
  const invitedAdminSecret = Crypto.newRandomAgentSecret();
901
930
  const invitedAdminID = Crypto.getAgentID(invitedAdminSecret);
902
- groupAsInvite.set(invitedAdminID, "admin", "trusting");
903
- expect(groupAsInvite.get(invitedAdminID)).toBeUndefined();
904
- });
905
- test("ReaderInvites can not invite writers", async () => {
906
- const { groupCore, admin } = newGroup();
907
- const inviteSecret = Crypto.newRandomAgentSecret();
908
- const inviteID = Crypto.getAgentID(inviteSecret);
909
- const group = expectGroup(groupCore.getCurrentContent());
910
- const { secret: readKey, id: readKeyID } = Crypto.newRandomKeySecret();
911
- const revelation = Crypto.seal({
912
- message: readKey,
913
- from: admin.currentSealerSecret(),
914
- to: admin.currentSealerID(),
915
- nOnceMaterial: {
916
- in: groupCore.id,
917
- tx: groupCore.nextTransactionID(),
918
- },
919
- });
920
- group.set(`${readKeyID}_for_${admin.id}`, revelation, "trusting");
921
- group.set("readKey", readKeyID, "trusting");
922
- group.set(inviteID, "readerInvite", "trusting");
923
- expect(group.get(inviteID)).toEqual("readerInvite");
924
- const revelationForInvite = Crypto.seal({
925
- message: readKey,
926
- from: admin.currentSealerSecret(),
927
- to: Crypto.getAgentSealerID(inviteID),
928
- nOnceMaterial: {
929
- in: groupCore.id,
930
- tx: groupCore.nextTransactionID(),
931
- },
932
- });
933
- group.set(`${readKeyID}_for_${inviteID}`, revelationForInvite, "trusting");
934
- const groupAsInvite = expectGroup(await groupCore.contentInClonedNodeWithDifferentAccount(new ControlledAgent(inviteSecret, Crypto)));
935
- const invitedWriterSecret = Crypto.newRandomAgentSecret();
936
- const invitedWriterID = Crypto.getAgentID(invitedWriterSecret);
937
- groupAsInvite.set(invitedWriterID, "writer", "trusting");
938
- expect(groupAsInvite.get(invitedWriterID)).toBeUndefined();
939
- });
940
- test("WriteOnlyInvites can not invite writers", async () => {
941
- const { groupCore, admin } = newGroup();
942
- const inviteSecret = Crypto.newRandomAgentSecret();
943
- const inviteID = Crypto.getAgentID(inviteSecret);
944
- const group = expectGroup(groupCore.getCurrentContent());
945
- const { secret: readKey, id: readKeyID } = Crypto.newRandomKeySecret();
946
- const revelation = Crypto.seal({
947
- message: readKey,
948
- from: admin.currentSealerSecret(),
949
- to: admin.currentSealerID(),
950
- nOnceMaterial: {
951
- in: groupCore.id,
952
- tx: groupCore.nextTransactionID(),
953
- },
954
- });
955
- group.set(`${readKeyID}_for_${admin.id}`, revelation, "trusting");
956
- group.set("readKey", readKeyID, "trusting");
957
- group.set(inviteID, "writeOnlyInvite", "trusting");
958
- expect(group.get(inviteID)).toEqual("writeOnlyInvite");
959
- const revelationForInvite = Crypto.seal({
960
- message: readKey,
961
- from: admin.currentSealerSecret(),
962
- to: Crypto.getAgentSealerID(inviteID),
963
- nOnceMaterial: {
964
- in: groupCore.id,
965
- tx: groupCore.nextTransactionID(),
966
- },
967
- });
968
- group.set(`${readKeyID}_for_${inviteID}`, revelationForInvite, "trusting");
969
- const groupAsInvite = expectGroup(await groupCore.contentInClonedNodeWithDifferentAccount(new ControlledAgent(inviteSecret, Crypto)));
970
- const invitedWriterSecret = Crypto.newRandomAgentSecret();
971
- const invitedWriterID = Crypto.getAgentID(invitedWriterSecret);
972
- groupAsInvite.set(invitedWriterID, "writer", "trusting");
973
- expect(groupAsInvite.get(invitedWriterID)).toBeUndefined();
974
- });
975
- test("WriteOnlyInvites can not invite admins", async () => {
976
- const { groupCore, admin } = newGroup();
977
- const inviteSecret = Crypto.newRandomAgentSecret();
978
- const inviteID = Crypto.getAgentID(inviteSecret);
979
- const group = expectGroup(groupCore.getCurrentContent());
980
- const { secret: readKey, id: readKeyID } = Crypto.newRandomKeySecret();
981
- const revelation = Crypto.seal({
982
- message: readKey,
983
- from: admin.currentSealerSecret(),
984
- to: admin.currentSealerID(),
985
- nOnceMaterial: {
986
- in: groupCore.id,
987
- tx: groupCore.nextTransactionID(),
988
- },
989
- });
990
- group.set(`${readKeyID}_for_${admin.id}`, revelation, "trusting");
991
- group.set("readKey", readKeyID, "trusting");
992
- group.set(inviteID, "writeOnlyInvite", "trusting");
993
- expect(group.get(inviteID)).toEqual("writeOnlyInvite");
994
- const revelationForInvite = Crypto.seal({
995
- message: readKey,
996
- from: admin.currentSealerSecret(),
997
- to: Crypto.getAgentSealerID(inviteID),
998
- nOnceMaterial: {
999
- in: groupCore.id,
1000
- tx: groupCore.nextTransactionID(),
1001
- },
1002
- });
1003
- group.set(`${readKeyID}_for_${inviteID}`, revelationForInvite, "trusting");
1004
- const groupAsInvite = expectGroup(await groupCore.contentInClonedNodeWithDifferentAccount(new ControlledAgent(inviteSecret, Crypto)));
1005
- const invitedWriterSecret = Crypto.newRandomAgentSecret();
1006
- const invitedWriterID = Crypto.getAgentID(invitedWriterSecret);
1007
- groupAsInvite.set(invitedWriterID, "admin", "trusting");
1008
- expect(groupAsInvite.get(invitedWriterID)).toBeUndefined();
1009
- });
1010
- test("WriteOnlyInvites can invite writeOnly", async () => {
1011
- const { groupCore, admin } = newGroup();
1012
- const inviteSecret = Crypto.newRandomAgentSecret();
1013
- const inviteID = Crypto.getAgentID(inviteSecret);
1014
- const group = expectGroup(groupCore.getCurrentContent());
1015
- const { secret: readKey, id: readKeyID } = Crypto.newRandomKeySecret();
1016
- const revelation = Crypto.seal({
1017
- message: readKey,
1018
- from: admin.currentSealerSecret(),
1019
- to: admin.currentSealerID(),
1020
- nOnceMaterial: {
1021
- in: groupCore.id,
1022
- tx: groupCore.nextTransactionID(),
1023
- },
1024
- });
1025
- group.set(`${readKeyID}_for_${admin.id}`, revelation, "trusting");
1026
- group.set("readKey", readKeyID, "trusting");
1027
- group.set(inviteID, "writeOnlyInvite", "trusting");
1028
- expect(group.get(inviteID)).toEqual("writeOnlyInvite");
1029
- const revelationForInvite = Crypto.seal({
1030
- message: readKey,
1031
- from: admin.currentSealerSecret(),
1032
- to: Crypto.getAgentSealerID(inviteID),
1033
- nOnceMaterial: {
1034
- in: groupCore.id,
1035
- tx: groupCore.nextTransactionID(),
1036
- },
1037
- });
1038
- group.set(`${readKeyID}_for_${inviteID}`, revelationForInvite, "trusting");
1039
- const groupAsInvite = expectGroup(await groupCore.contentInClonedNodeWithDifferentAccount(new ControlledAgent(inviteSecret, Crypto)));
1040
- const invitedWriterSecret = Crypto.newRandomAgentSecret();
1041
- const invitedWriterID = Crypto.getAgentID(invitedWriterSecret);
1042
- groupAsInvite.set(invitedWriterID, "writeOnly", "trusting");
1043
- expect(groupAsInvite.get(invitedWriterID)).toEqual("writeOnly");
931
+ groupAsInvite.set(invitedAdminID, finalRole, "trusting");
932
+ expect(groupAsInvite.get(invitedAdminID)).toEqual(finalRole);
1044
933
  });
1045
934
  test("WriteOnlyInvites can set writeKeys", async () => {
1046
935
  const { groupCore, admin } = newGroup();
@@ -1217,41 +1106,11 @@ test("Writers, readers and invitees can not set parent extensions", async () =>
1217
1106
  groupAsReaderInvite.set(`parent_${parentGroup.id}`, "extend", "trusting");
1218
1107
  expect(groupAsReaderInvite.get(`parent_${parentGroup.id}`)).toBeUndefined();
1219
1108
  });
1220
- test("Admins can set child extensions", () => {
1109
+ test("Child extensions are ignored", () => {
1221
1110
  const { group, node } = newGroupHighLevel();
1222
1111
  const childGroup = node.createGroup();
1223
1112
  group.set(`child_${childGroup.id}`, "extend", "trusting");
1224
- expect(group.get(`child_${childGroup.id}`)).toEqual("extend");
1225
- });
1226
- test("Admins can set child extensions when the admin role is inherited", async () => {
1227
- const { node1, node2 } = await createTwoConnectedNodes("server", "server");
1228
- const node2AccountOnNode1 = await loadCoValueOrFail(node1.node, node2.accountID);
1229
- const group = node1.node.createGroup();
1230
- group.addMember(node2AccountOnNode1, "admin");
1231
- const groupOnNode2 = await loadCoValueOrFail(node2.node, group.id);
1232
- const childGroup = node2.node.createGroup();
1233
- childGroup.extend(groupOnNode2);
1234
- const childGroupOnNode1 = await loadCoValueOrFail(node1.node, childGroup.id);
1235
- const grandChildGroup = node2.node.createGroup();
1236
- grandChildGroup.extend(childGroupOnNode1);
1237
- expect(childGroupOnNode1.get(`child_${grandChildGroup.id}`)).toEqual("extend");
1238
- expect(grandChildGroup.get(`parent_${childGroupOnNode1.id}`)).toEqual("extend");
1239
- });
1240
- test("Writers, readers and writeOnly can set child extensions", async () => {
1241
- const { group, node } = newGroupHighLevel();
1242
- const childGroup = node.createGroup();
1243
- const writer = createAccountInNode(node);
1244
- const reader = createAccountInNode(node);
1245
- const writeOnly = createAccountInNode(node);
1246
- group.addMember(writer, "writer");
1247
- group.addMember(reader, "reader");
1248
- group.addMember(writeOnly, "writeOnly");
1249
- const groupAsWriter = expectGroup(await group.core.contentInClonedNodeWithDifferentAccount(writer));
1250
- groupAsWriter.set(`child_${childGroup.id}`, "extend", "trusting");
1251
- expect(groupAsWriter.get(`child_${childGroup.id}`)).toEqual("extend");
1252
- const groupAsReader = expectGroup(await group.core.contentInClonedNodeWithDifferentAccount(reader));
1253
- groupAsReader.set(`child_${childGroup.id}`, "extend", "trusting");
1254
- expect(groupAsReader.get(`child_${childGroup.id}`)).toEqual("extend");
1113
+ expect(group.get(`child_${childGroup.id}`)).toEqual(undefined);
1255
1114
  });
1256
1115
  test("Member roles are inherited by child groups (except invites)", () => {
1257
1116
  const { group, node, admin } = newGroupHighLevel();
@@ -1509,10 +1368,9 @@ test("When rotating the key of a child group, the new child key is exposed to th
1509
1368
  console.log("Checking", `${newReadKeyID}_for_${parentReadKeyID}`);
1510
1369
  expect(group.get(`${newReadKeyID}_for_${parentReadKeyID}`)).toBeDefined();
1511
1370
  });
1512
- test("When rotating the key of a parent group, the keys of all child groups are also rotated", () => {
1371
+ test("When rotating the key of a parent group, the keys of all loaded child groups are also rotated", () => {
1513
1372
  const { group, node } = newGroupHighLevel();
1514
1373
  const parentGroup = node.createGroup();
1515
- parentGroup.set(`child_${group.id}`, "extend", "trusting");
1516
1374
  group.set(`parent_${parentGroup.id}`, "extend", "trusting");
1517
1375
  group.rotateReadKey();
1518
1376
  const currentChildReadKeyID = group.get("readKey");
@@ -1548,8 +1406,6 @@ test("When rotating the key of a grand-parent group, the keys of all child and g
1548
1406
  const { group, node } = newGroupHighLevel();
1549
1407
  const grandParentGroup = node.createGroup();
1550
1408
  const parentGroup = node.createGroup();
1551
- grandParentGroup.set(`child_${parentGroup.id}`, "extend", "trusting");
1552
- parentGroup.set(`child_${group.id}`, "extend", "trusting");
1553
1409
  parentGroup.set(`parent_${grandParentGroup.id}`, "extend", "trusting");
1554
1410
  group.set(`parent_${grandParentGroup.id}`, "extend", "trusting");
1555
1411
  const currentGrandParentReadKeyID = grandParentGroup.get("readKey");
@@ -1586,7 +1442,7 @@ test("Calling extend on group sets up parent and child references and reveals ch
1586
1442
  const parentGroup = node.createGroup();
1587
1443
  group.extend(parentGroup);
1588
1444
  expect(group.get(`parent_${parentGroup.id}`)).toEqual("extend");
1589
- expect(parentGroup.get(`child_${group.id}`)).toEqual("extend");
1445
+ expect(parentGroup.get(`child_${group.id}`)).toEqual(undefined);
1590
1446
  const parentReadKeyID = parentGroup.get("readKey");
1591
1447
  if (!parentReadKeyID) {
1592
1448
  throw new Error("Can't get parent group read key");
@@ -1617,8 +1473,8 @@ test("Calling extend to create grand-child groups parent and child references an
1617
1473
  parentGroup.extend(grandParentGroup);
1618
1474
  expect(group.get(`parent_${parentGroup.id}`)).toEqual("extend");
1619
1475
  expect(parentGroup.get(`parent_${grandParentGroup.id}`)).toEqual("extend");
1620
- expect(parentGroup.get(`child_${group.id}`)).toEqual("extend");
1621
- expect(grandParentGroup.get(`child_${parentGroup.id}`)).toEqual("extend");
1476
+ expect(parentGroup.get(`child_${group.id}`)).toEqual(undefined);
1477
+ expect(grandParentGroup.get(`child_${parentGroup.id}`)).toEqual(undefined);
1622
1478
  const reader = createAccountInNode(node);
1623
1479
  grandParentGroup.addMember(reader, "reader");
1624
1480
  const childObject = node.createCoValue({
@@ -1838,7 +1694,6 @@ test("High-level permissions work correctly when a group is extended", async ()
1838
1694
  });
1839
1695
  test("self-extensions should not break the permissions checks", () => {
1840
1696
  const { group } = newGroupHighLevel();
1841
- group.set(`child_${group.id}`, "extend", "trusting");
1842
1697
  group.set(`parent_${group.id}`, "extend", "trusting");
1843
1698
  const map = group.createMap();
1844
1699
  map.set("test", "Hello!");
@@ -1848,9 +1703,6 @@ test("extend cycles should not break the permissions checks", () => {
1848
1703
  const { group, node } = newGroupHighLevel();
1849
1704
  const group2 = node.createGroup();
1850
1705
  const group3 = node.createGroup();
1851
- group.set(`child_${group2.id}`, "extend", "trusting");
1852
- group2.set(`child_${group3.id}`, "extend", "trusting");
1853
- group3.set(`child_${group.id}`, "extend", "trusting");
1854
1706
  group.set(`parent_${group2.id}`, "extend", "trusting");
1855
1707
  group2.set(`parent_${group3.id}`, "extend", "trusting");
1856
1708
  group3.set(`parent_${group.id}`, "extend", "trusting");
@@ -1862,9 +1714,6 @@ test("extend cycles should not break the keys rotation", () => {
1862
1714
  const { group, node } = newGroupHighLevel();
1863
1715
  const group2 = node.createGroup();
1864
1716
  const group3 = node.createGroup();
1865
- group.set(`child_${group2.id}`, "extend", "trusting");
1866
- group2.set(`child_${group3.id}`, "extend", "trusting");
1867
- group3.set(`child_${group.id}`, "extend", "trusting");
1868
1717
  group.set(`parent_${group2.id}`, "extend", "trusting");
1869
1718
  group2.set(`parent_${group3.id}`, "extend", "trusting");
1870
1719
  group3.set(`parent_${group.id}`, "extend", "trusting");