@interop/wallet-core 0.101.1 → 0.103.0

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 (113) hide show
  1. package/README.md +33 -17
  2. package/dist/audiences/audienceGrant.d.ts +49 -0
  3. package/dist/audiences/audienceGrant.d.ts.map +1 -0
  4. package/dist/audiences/audienceGrant.js +46 -0
  5. package/dist/audiences/audienceGrant.js.map +1 -0
  6. package/dist/audiences/index.d.ts +10 -0
  7. package/dist/audiences/index.d.ts.map +1 -0
  8. package/dist/audiences/index.js +10 -0
  9. package/dist/audiences/index.js.map +1 -0
  10. package/dist/clientAnnex/grantRevocation.d.ts +0 -10
  11. package/dist/clientAnnex/grantRevocation.d.ts.map +1 -1
  12. package/dist/clientAnnex/grantRevocation.js +1 -23
  13. package/dist/clientAnnex/grantRevocation.js.map +1 -1
  14. package/dist/clientAnnex/index.d.ts +1 -1
  15. package/dist/clientAnnex/index.d.ts.map +1 -1
  16. package/dist/clientAnnex/index.js +1 -1
  17. package/dist/clientAnnex/index.js.map +1 -1
  18. package/dist/clientAnnex/log.d.ts +2 -1
  19. package/dist/clientAnnex/log.d.ts.map +1 -1
  20. package/dist/clientAnnex/log.js +5 -2
  21. package/dist/clientAnnex/log.js.map +1 -1
  22. package/dist/clients/rosterPolicy.d.ts.map +1 -1
  23. package/dist/clients/rosterPolicy.js +3 -1
  24. package/dist/clients/rosterPolicy.js.map +1 -1
  25. package/dist/connections/didKey.d.ts +27 -0
  26. package/dist/connections/didKey.d.ts.map +1 -1
  27. package/dist/connections/didKey.js +42 -6
  28. package/dist/connections/didKey.js.map +1 -1
  29. package/dist/connections/entry.d.ts +95 -13
  30. package/dist/connections/entry.d.ts.map +1 -1
  31. package/dist/connections/entry.js +102 -16
  32. package/dist/connections/entry.js.map +1 -1
  33. package/dist/connections/grants.d.ts +225 -3
  34. package/dist/connections/grants.d.ts.map +1 -1
  35. package/dist/connections/grants.js +293 -8
  36. package/dist/connections/grants.js.map +1 -1
  37. package/dist/connections/index.d.ts +15 -8
  38. package/dist/connections/index.d.ts.map +1 -1
  39. package/dist/connections/index.js +13 -6
  40. package/dist/connections/index.js.map +1 -1
  41. package/dist/connections/read.d.ts.map +1 -1
  42. package/dist/connections/read.js +2 -1
  43. package/dist/connections/read.js.map +1 -1
  44. package/dist/connections/resourceId.d.ts +33 -0
  45. package/dist/connections/resourceId.d.ts.map +1 -1
  46. package/dist/connections/resourceId.js +88 -8
  47. package/dist/connections/resourceId.js.map +1 -1
  48. package/dist/connections/upsert.d.ts +219 -7
  49. package/dist/connections/upsert.d.ts.map +1 -1
  50. package/dist/connections/upsert.js +628 -41
  51. package/dist/connections/upsert.js.map +1 -1
  52. package/dist/connections/writers.js +2 -1
  53. package/dist/connections/writers.js.map +1 -1
  54. package/dist/descriptors/index.d.ts +5 -0
  55. package/dist/descriptors/index.d.ts.map +1 -1
  56. package/dist/descriptors/index.js +5 -0
  57. package/dist/descriptors/index.js.map +1 -1
  58. package/dist/descriptors/logSource.d.ts +9 -4
  59. package/dist/descriptors/logSource.d.ts.map +1 -1
  60. package/dist/descriptors/logSource.js +13 -6
  61. package/dist/descriptors/logSource.js.map +1 -1
  62. package/dist/jsonObject.d.ts +16 -0
  63. package/dist/jsonObject.d.ts.map +1 -0
  64. package/dist/jsonObject.js +18 -0
  65. package/dist/jsonObject.js.map +1 -0
  66. package/dist/keys/index.d.ts +13 -9
  67. package/dist/keys/index.d.ts.map +1 -1
  68. package/dist/keys/index.js +11 -7
  69. package/dist/keys/index.js.map +1 -1
  70. package/dist/keys/userKeyCascade.d.ts +46 -0
  71. package/dist/keys/userKeyCascade.d.ts.map +1 -1
  72. package/dist/keys/userKeyCascade.js +153 -65
  73. package/dist/keys/userKeyCascade.js.map +1 -1
  74. package/dist/keys/userKeyRoster.d.ts +60 -7
  75. package/dist/keys/userKeyRoster.d.ts.map +1 -1
  76. package/dist/keys/userKeyRoster.js +165 -47
  77. package/dist/keys/userKeyRoster.js.map +1 -1
  78. package/dist/keys/userKeyRosterCascade.d.ts.map +1 -1
  79. package/dist/keys/userKeyRosterCascade.js +1 -0
  80. package/dist/keys/userKeyRosterCascade.js.map +1 -1
  81. package/dist/menders/ids.d.ts +1 -1
  82. package/dist/menders/ids.d.ts.map +1 -1
  83. package/dist/menders/ids.js +20 -4
  84. package/dist/menders/ids.js.map +1 -1
  85. package/dist/space/collections.d.ts +23 -3
  86. package/dist/space/collections.d.ts.map +1 -1
  87. package/dist/space/collections.js +26 -2
  88. package/dist/space/collections.js.map +1 -1
  89. package/dist/space/inboxMessage.d.ts +47 -0
  90. package/dist/space/inboxMessage.d.ts.map +1 -0
  91. package/dist/space/inboxMessage.js +86 -0
  92. package/dist/space/inboxMessage.js.map +1 -0
  93. package/dist/space/index.d.ts +6 -1
  94. package/dist/space/index.d.ts.map +1 -1
  95. package/dist/space/index.js +5 -1
  96. package/dist/space/index.js.map +1 -1
  97. package/dist/sync/contactsConflict.d.ts +23 -10
  98. package/dist/sync/contactsConflict.d.ts.map +1 -1
  99. package/dist/sync/contactsConflict.js +40 -21
  100. package/dist/sync/contactsConflict.js.map +1 -1
  101. package/dist/webvh/didWebProjection.d.ts +38 -5
  102. package/dist/webvh/didWebProjection.d.ts.map +1 -1
  103. package/dist/webvh/didWebProjection.js +35 -22
  104. package/dist/webvh/didWebProjection.js.map +1 -1
  105. package/dist/webvh/index.d.ts +4 -3
  106. package/dist/webvh/index.d.ts.map +1 -1
  107. package/dist/webvh/index.js +4 -3
  108. package/dist/webvh/index.js.map +1 -1
  109. package/dist/webvh/standingZcap.d.ts +19 -2
  110. package/dist/webvh/standingZcap.d.ts.map +1 -1
  111. package/dist/webvh/standingZcap.js +31 -3
  112. package/dist/webvh/standingZcap.js.map +1 -1
  113. package/package.json +11 -5
@@ -1 +1 @@
1
- {"version":3,"file":"rosterPolicy.d.ts","sourceRoot":"","sources":["../../src/clients/rosterPolicy.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AACpE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAA;AAC7E,OAAO,EAIL,KAAK,OAAO,EACZ,KAAK,uBAAuB,EAC7B,MAAM,kBAAkB,CAAA;AACzB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAInE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAErD;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAA;IAChB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,oBAAoB,CAAA;CACjC;AAuCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAsB,yBAAyB,CAAC,EAC9C,KAAK,EACL,OAAO,EACP,qBAAqB,EACrB,aAAa,EACb,YAAY,EACb,EAAE;IACD,KAAK,EAAE,yBAAyB,CAAA;IAChC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,qBAAqB,EAAE,gBAAgB,CAAA;IACvC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1D,GAAG,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC,CAqC1C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,wBAAsB,8BAA8B,CAAC,EACnD,OAAO,EACP,KAAK,EACL,OAAO,EACP,UAAU,EACV,IAAI,EACJ,qBAAqB,EACrB,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EACjB,EAAE;IACD,OAAO,EAAE,iBAAiB,CAAA;IAC1B,KAAK,EAAE,yBAAyB,CAAA;IAChC,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,oBAAoB,CAAA;IAChC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,qBAAqB,EAAE,gBAAgB,CAAA;IACvC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,kBAAkB,CAAC,EAAE,mBAAmB,CAAA;IACxC,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC9D,GAAG,OAAO,CAAC;IACV,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,OAAO,CAAA;IACf,iBAAiB,EAAE,MAAM,EAAE,CAAA;IAC3B,oBAAoB,EAAE,MAAM,EAAE,CAAA;IAC9B,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,oBAAoB,CAAA;CACjC,CAAC,CA+GD"}
1
+ {"version":3,"file":"rosterPolicy.d.ts","sourceRoot":"","sources":["../../src/clients/rosterPolicy.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AACpE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAA;AAC7E,OAAO,EAGL,KAAK,OAAO,EACZ,KAAK,uBAAuB,EAC7B,MAAM,kBAAkB,CAAA;AAEzB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAInE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAErD;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAA;IAChB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,oBAAoB,CAAA;CACjC;AAuCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAsB,yBAAyB,CAAC,EAC9C,KAAK,EACL,OAAO,EACP,qBAAqB,EACrB,aAAa,EACb,YAAY,EACb,EAAE;IACD,KAAK,EAAE,yBAAyB,CAAA;IAChC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,qBAAqB,EAAE,gBAAgB,CAAA;IACvC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1D,GAAG,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC,CAqC1C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,wBAAsB,8BAA8B,CAAC,EACnD,OAAO,EACP,KAAK,EACL,OAAO,EACP,UAAU,EACV,IAAI,EACJ,qBAAqB,EACrB,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EACjB,EAAE;IACD,OAAO,EAAE,iBAAiB,CAAA;IAC1B,KAAK,EAAE,yBAAyB,CAAA;IAChC,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,oBAAoB,CAAA;IAChC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,qBAAqB,EAAE,gBAAgB,CAAA;IACvC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,kBAAkB,CAAC,EAAE,mBAAmB,CAAA;IACxC,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC9D,GAAG,OAAO,CAAC;IACV,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,OAAO,CAAA;IACf,iBAAiB,EAAE,MAAM,EAAE,CAAA;IAC3B,oBAAoB,EAAE,MAAM,EAAE,CAAA;IAC9B,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,oBAAoB,CAAA;CACjC,CAAC,CAgHD"}
@@ -1,4 +1,5 @@
1
- import { convergeUserKeyRosterToDocument, isSealableDescriptorStore, readUserKeyRoster } from '../keys/index.js';
1
+ import { isSealableDescriptorStore, readUserKeyRoster } from '../keys/index.js';
2
+ import { convergeUserKeyRosterToDocument } from '../keys/userKeyRoster.js';
2
3
  import { log } from '../log.js';
3
4
  import { isResourceLogRefusal } from '../resourceLog/errors.js';
4
5
  import { verifyAccountLog } from '../webvh/index.js';
@@ -172,6 +173,7 @@ export async function convergeUserKeyRosterToAccount({ pointer, store, userKey,
172
173
  const result = await convergeUserKeyRosterToDocument({
173
174
  store,
174
175
  document: doc,
176
+ did: pointer.did,
175
177
  descriptor,
176
178
  ...(etag !== undefined ? { etag } : {}),
177
179
  // The escrow direction needs a key that unwraps every epoch, and the
@@ -1 +1 @@
1
- {"version":3,"file":"rosterPolicy.js","sourceRoot":"","sources":["../../src/clients/rosterPolicy.ts"],"names":[],"mappings":"AA4DA,OAAO,EACL,+BAA+B,EAC/B,yBAAyB,EACzB,iBAAiB,EAGlB,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAC/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAapD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,SAAS,eAAe,CAAC,GAAY;IACnC,IAAI,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,IAAI,GAAI,GAAiC,EAAE,IAAI,CAAA;IACrD,OAAO,CACL,IAAI,KAAK,8BAA8B;QACvC,IAAI,KAAK,6BAA6B;QACtC,IAAI,KAAK,0BAA0B,CACpC,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,EAC9C,KAAK,EACL,OAAO,EACP,qBAAqB,EACrB,aAAa,EACb,YAAY,EAOb;IACC,IAAI,IAAoC,CAAA;IACxC,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,iBAAiB,CAAC;YAC7B,KAAK;YACL,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/B,qBAAqB;YACrB,aAAa;SACd,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,GAAG,CAAA;QACX,CAAC;QACD,yEAAyE;QACzE,+DAA+D;QAC/D,GAAG,CAAC,IAAI,CACN,uEAAuE,EACvE;YACE,GAAG;SACJ,CACF,CAAA;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,IAAI,CAAA;IACb,CAAC;IACD,0EAA0E;IAC1E,sEAAsE;IACtE,2EAA2E;IAC3E,uEAAuE;IACvE,kEAAkE;IAClE,MAAM,YAAY,EAAE,CAAC;QACnB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,UAAU,EAAE,IAAI,CAAC,UAAU;KAC5B,CAAC,CAAA;IACF,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAAC,EACnD,OAAO,EACP,KAAK,EACL,OAAO,EACP,UAAU,EACV,IAAI,EACJ,qBAAqB,EACrB,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAWjB;IAQC,MAAM,SAAS,GAAG;QAChB,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,KAAK;QACb,iBAAiB,EAAE,EAAc;QACjC,oBAAoB,EAAE,EAAc;QACpC,OAAO;QACP,UAAU;KACX,CAAA;IACD,IAAI,OAAgB,CAAA;IACpB,IAAI,iBAA2B,CAAA;IAC/B,IAAI,oBAA8B,CAAA;IAClC,IAAI,SAAsC,CAAA;IAC1C,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,gBAAgB,CAAC;YACrC,GAAG,OAAO;YACV,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAChE,CAAC,CAAA;QACF,MAAM,MAAM,GAAG,MAAM,+BAA+B,CAAC;YACnD,KAAK;YACL,QAAQ,EAAE,GAAG;YACb,UAAU;YACV,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,qEAAqE;YACrE,qEAAqE;YACrE,oEAAoE;YACpE,uEAAuE;YACvE,oBAAoB,EAAE,qBAAqB;SAC5C,CAAC,CAAA;QACF,OAAO,GAAG,MAAM,CAAC,OAAO,CAAA;QACxB,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAA;QAC5C,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,CAAA;QAClD,SAAS,GAAG,MAAM,CAAC,UAAU,CAAA;IAC/B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,GAAG,CAAA;QACX,CAAC;QACD,GAAG,CAAC,IAAI,CACN,kEAAkE,EAClE;YACE,GAAG;SACJ,CACF,CAAA;QACD,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,qEAAqE;IACrE,0EAA0E;IAC1E,uEAAuE;IACvE,kEAAkE;IAClE,wEAAwE;IACxE,2EAA2E;IAC3E,yEAAyE;IACzE,yEAAyE;IACzE,0BAA0B;IAC1B,IAAI,MAAM,GAAG,KAAK,CAAA;IAClB,IAAI,yBAAyB,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,QAAQ,CAAA;QAC5C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzB,MAAM,GAAG,CAAA;YACX,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,wCAAwC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAA;QAC7D,CAAC;IACH,CAAC;IAED,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,GAAG,CAAC,IAAI,CACN,sEAAsE;YACpE,qCAAqC,EACvC,EAAE,sBAAsB,EAAE,oBAAoB,CAAC,MAAM,EAAE,CACxD,CAAA;IACH,CAAC;IACD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,GAAG,SAAS,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAA;IACvD,CAAC;IACD,GAAG,CAAC,IAAI,CACN,oEAAoE;QAClE,sEAAsE,EACxE,EAAE,mBAAmB,EAAE,iBAAiB,CAAC,MAAM,EAAE,CAClD,CAAA;IAED,uEAAuE;IACvE,0EAA0E;IAC1E,2EAA2E;IAC3E,yEAAyE;IACzE,yEAAyE;IACzE,wEAAwE;IACxE,0EAA0E;IAC1E,eAAe;IACf,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC;QACnC,KAAK;QACL,UAAU,EAAE,SAAU;QACtB,OAAO;QACP,qBAAqB;QACrB,aAAa;KACd,CAAC,CAAA;IACF,MAAM,gBAAgB,EAAE,CAAC;QACvB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,UAAU,EAAE,IAAI,CAAC,UAAU;KAC5B,CAAC,CAAA;IACF,OAAO;QACL,OAAO,EAAE,IAAI;QACb,MAAM;QACN,iBAAiB;QACjB,oBAAoB;QACpB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,UAAU,EAAE,IAAI,CAAC,UAAU;KAC5B,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"rosterPolicy.js","sourceRoot":"","sources":["../../src/clients/rosterPolicy.ts"],"names":[],"mappings":"AA4DA,OAAO,EACL,yBAAyB,EACzB,iBAAiB,EAGlB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,+BAA+B,EAAE,MAAM,0BAA0B,CAAA;AAE1E,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAC/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAapD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,SAAS,eAAe,CAAC,GAAY;IACnC,IAAI,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,IAAI,GAAI,GAAiC,EAAE,IAAI,CAAA;IACrD,OAAO,CACL,IAAI,KAAK,8BAA8B;QACvC,IAAI,KAAK,6BAA6B;QACtC,IAAI,KAAK,0BAA0B,CACpC,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,EAC9C,KAAK,EACL,OAAO,EACP,qBAAqB,EACrB,aAAa,EACb,YAAY,EAOb;IACC,IAAI,IAAoC,CAAA;IACxC,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,iBAAiB,CAAC;YAC7B,KAAK;YACL,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/B,qBAAqB;YACrB,aAAa;SACd,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,GAAG,CAAA;QACX,CAAC;QACD,yEAAyE;QACzE,+DAA+D;QAC/D,GAAG,CAAC,IAAI,CACN,uEAAuE,EACvE;YACE,GAAG;SACJ,CACF,CAAA;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,IAAI,CAAA;IACb,CAAC;IACD,0EAA0E;IAC1E,sEAAsE;IACtE,2EAA2E;IAC3E,uEAAuE;IACvE,kEAAkE;IAClE,MAAM,YAAY,EAAE,CAAC;QACnB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,UAAU,EAAE,IAAI,CAAC,UAAU;KAC5B,CAAC,CAAA;IACF,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAAC,EACnD,OAAO,EACP,KAAK,EACL,OAAO,EACP,UAAU,EACV,IAAI,EACJ,qBAAqB,EACrB,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAWjB;IAQC,MAAM,SAAS,GAAG;QAChB,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,KAAK;QACb,iBAAiB,EAAE,EAAc;QACjC,oBAAoB,EAAE,EAAc;QACpC,OAAO;QACP,UAAU;KACX,CAAA;IACD,IAAI,OAAgB,CAAA;IACpB,IAAI,iBAA2B,CAAA;IAC/B,IAAI,oBAA8B,CAAA;IAClC,IAAI,SAAsC,CAAA;IAC1C,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,gBAAgB,CAAC;YACrC,GAAG,OAAO;YACV,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAChE,CAAC,CAAA;QACF,MAAM,MAAM,GAAG,MAAM,+BAA+B,CAAC;YACnD,KAAK;YACL,QAAQ,EAAE,GAAG;YACb,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,UAAU;YACV,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,qEAAqE;YACrE,qEAAqE;YACrE,oEAAoE;YACpE,uEAAuE;YACvE,oBAAoB,EAAE,qBAAqB;SAC5C,CAAC,CAAA;QACF,OAAO,GAAG,MAAM,CAAC,OAAO,CAAA;QACxB,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAA;QAC5C,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,CAAA;QAClD,SAAS,GAAG,MAAM,CAAC,UAAU,CAAA;IAC/B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,GAAG,CAAA;QACX,CAAC;QACD,GAAG,CAAC,IAAI,CACN,kEAAkE,EAClE;YACE,GAAG;SACJ,CACF,CAAA;QACD,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,qEAAqE;IACrE,0EAA0E;IAC1E,uEAAuE;IACvE,kEAAkE;IAClE,wEAAwE;IACxE,2EAA2E;IAC3E,yEAAyE;IACzE,yEAAyE;IACzE,0BAA0B;IAC1B,IAAI,MAAM,GAAG,KAAK,CAAA;IAClB,IAAI,yBAAyB,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,QAAQ,CAAA;QAC5C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzB,MAAM,GAAG,CAAA;YACX,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,wCAAwC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAA;QAC7D,CAAC;IACH,CAAC;IAED,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,GAAG,CAAC,IAAI,CACN,sEAAsE;YACpE,qCAAqC,EACvC,EAAE,sBAAsB,EAAE,oBAAoB,CAAC,MAAM,EAAE,CACxD,CAAA;IACH,CAAC;IACD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,GAAG,SAAS,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAA;IACvD,CAAC;IACD,GAAG,CAAC,IAAI,CACN,oEAAoE;QAClE,sEAAsE,EACxE,EAAE,mBAAmB,EAAE,iBAAiB,CAAC,MAAM,EAAE,CAClD,CAAA;IAED,uEAAuE;IACvE,0EAA0E;IAC1E,2EAA2E;IAC3E,yEAAyE;IACzE,yEAAyE;IACzE,wEAAwE;IACxE,0EAA0E;IAC1E,eAAe;IACf,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC;QACnC,KAAK;QACL,UAAU,EAAE,SAAU;QACtB,OAAO;QACP,qBAAqB;QACrB,aAAa;KACd,CAAC,CAAA;IACF,MAAM,gBAAgB,EAAE,CAAC;QACvB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,UAAU,EAAE,IAAI,CAAC,UAAU;KAC5B,CAAC,CAAA;IACF,OAAO;QACL,OAAO,EAAE,IAAI;QACb,MAAM;QACN,iBAAiB;QACjB,oBAAoB;QACpB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,UAAU,EAAE,IAAI,CAAC,UAAU;KAC5B,CAAA;AACH,CAAC"}
@@ -1,3 +1,6 @@
1
+ import type { CapabilityAgent } from '@interop/capability-agent';
2
+ import type { ZcapClient } from '@interop/ezcap';
3
+ import type { ConnectionIdKey } from './resourceId.js';
1
4
  /**
2
5
  * The signing-key multibase an Ed25519 did:key carries, or `undefined` for any
3
6
  * other DID. The one join key between a wallet client's directory entry and
@@ -22,4 +25,28 @@ export declare function signingKeyMultibaseOfDid({ did }: {
22
25
  export declare function connectionRecipientKid({ did }: {
23
26
  did: string;
24
27
  }): string | undefined;
28
+ /**
29
+ * The wallet's pairwise did:key toward a party, and the signer behind it:
30
+ * was-client's `agentsFromSeed` over the entry's stored `seed`, after the
31
+ * seed's tag verifies under the directory's blinded-index key. A seed whose
32
+ * tag fails is refused with an `Error`, and the caller fails closed: a host
33
+ * that planted a seed is misbehaving, so the seed is not read as absent.
34
+ *
35
+ * @param options {object}
36
+ * @param options.hmacKey {ConnectionIdKey} the collection's blinded-index
37
+ * key
38
+ * @param options.seed {string} the entry's `seed`
39
+ * @param options.seedTag {string} the entry's `seedTag`
40
+ * @returns {Promise<object>} the did:key, the `ZcapClient` that signs as
41
+ * it, and the `CapabilityAgent` behind both
42
+ */
43
+ export declare function connectionDidKey({ hmacKey, seed, seedTag }: {
44
+ hmacKey: ConnectionIdKey;
45
+ seed: string;
46
+ seedTag: string;
47
+ }): Promise<{
48
+ did: string;
49
+ zcapClient: ZcapClient;
50
+ keyAgent: CapabilityAgent;
51
+ }>;
25
52
  //# sourceMappingURL=didKey.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"didKey.d.ts","sourceRoot":"","sources":["../../src/connections/didKey.ts"],"names":[],"mappings":"AAqBA;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CAAC,EACvC,GAAG,EACJ,EAAE;IACD,GAAG,EAAE,MAAM,CAAA;CACZ,GAAG,MAAM,GAAG,SAAS,CAErB;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,EACrC,GAAG,EACJ,EAAE;IACD,GAAG,EAAE,MAAM,CAAA;CACZ,GAAG,MAAM,GAAG,SAAS,CAUrB"}
1
+ {"version":3,"file":"didKey.d.ts","sourceRoot":"","sources":["../../src/connections/didKey.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAIhD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAItD;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CAAC,EACvC,GAAG,EACJ,EAAE;IACD,GAAG,EAAE,MAAM,CAAA;CACZ,GAAG,MAAM,GAAG,SAAS,CAErB;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,EACrC,GAAG,EACJ,EAAE;IACD,GAAG,EAAE,MAAM,CAAA;CACZ,GAAG,MAAM,GAAG,SAAS,CAUrB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,gBAAgB,CAAC,EACrC,OAAO,EACP,IAAI,EACJ,OAAO,EACR,EAAE;IACD,OAAO,EAAE,eAAe,CAAA;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAChB,GAAG,OAAO,CAAC;IACV,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,UAAU,CAAA;IACtB,QAAQ,EAAE,eAAe,CAAA;CAC1B,CAAC,CAeD"}
@@ -2,17 +2,24 @@
2
2
  * Copyright (c) 2026 Interop Alliance. All rights reserved.
3
3
  */
4
4
  /**
5
- * The two values a directory reader derives from a party's Ed25519 did:key:
5
+ * The values a directory reader derives from a did:key rather than stores:
6
6
  * the signing-key multibase a wallet client's entry joins the account
7
- * document on, and the key-epoch recipient kid a grantee is admitted under.
7
+ * document on, the key-epoch recipient kid a grantee is admitted under, and
8
+ * the wallet's own pairwise did:key toward a party, derived from the seed on
9
+ * the party's entry.
8
10
  *
9
- * Both are derived rather than stored. A wallet client's entry `id` is its
10
- * did:key, whose method-specific part is the `publicKeyMultibase` the account
11
- * document's verification method carries. A grantee's recipient key is the
12
- * X25519 twin was-client derives from the same DID.
11
+ * A wallet client's entry `id` is its did:key, whose method-specific part is
12
+ * the `publicKeyMultibase` the account document's verification method
13
+ * carries. A grantee's recipient key is the X25519 twin was-client derives
14
+ * from the same DID. The pairwise key comes from was-client's
15
+ * `agentsFromSeed` under its pinned bootstrap names, so every client of the
16
+ * account derives the same did:key from the same stored seed.
13
17
  */
14
18
  import { isEd25519DidKey, x25519RecipientFromDidKey } from '@interop/was-client/edv/cipher';
19
+ import { agentsFromSeed } from '@interop/was-client/identity';
15
20
  import { rosterRecipientKid } from '../keys/rosterRecipientKid.js';
21
+ import { decodeConnectionSeed } from './entry.js';
22
+ import { verifyConnectionSeedTag } from './resourceId.js';
16
23
  const DID_KEY_PREFIX = 'did:key:';
17
24
  /**
18
25
  * The signing-key multibase an Ed25519 did:key carries, or `undefined` for any
@@ -46,4 +53,33 @@ export function connectionRecipientKid({ did }) {
46
53
  keyAgreementKeyMultibase: publicKeyMultibase
47
54
  });
48
55
  }
56
+ /**
57
+ * The wallet's pairwise did:key toward a party, and the signer behind it:
58
+ * was-client's `agentsFromSeed` over the entry's stored `seed`, after the
59
+ * seed's tag verifies under the directory's blinded-index key. A seed whose
60
+ * tag fails is refused with an `Error`, and the caller fails closed: a host
61
+ * that planted a seed is misbehaving, so the seed is not read as absent.
62
+ *
63
+ * @param options {object}
64
+ * @param options.hmacKey {ConnectionIdKey} the collection's blinded-index
65
+ * key
66
+ * @param options.seed {string} the entry's `seed`
67
+ * @param options.seedTag {string} the entry's `seedTag`
68
+ * @returns {Promise<object>} the did:key, the `ZcapClient` that signs as
69
+ * it, and the `CapabilityAgent` behind both
70
+ */
71
+ export async function connectionDidKey({ hmacKey, seed, seedTag }) {
72
+ if (!(await verifyConnectionSeedTag({ hmacKey, seed, seedTag }))) {
73
+ throw new Error("The connections entry's seed tag does not verify under this " +
74
+ "directory's key; the seed is refused.");
75
+ }
76
+ const seedBytes = decodeConnectionSeed(seed);
77
+ if (seedBytes === undefined) {
78
+ throw new TypeError('A connection seed decodes to 32 bytes.');
79
+ }
80
+ const { controllerDid, zcapClient, keyAgent } = await agentsFromSeed({
81
+ seed: seedBytes
82
+ });
83
+ return { did: controllerDid, zcapClient, keyAgent };
84
+ }
49
85
  //# sourceMappingURL=didKey.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"didKey.js","sourceRoot":"","sources":["../../src/connections/didKey.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;GASG;AACH,OAAO,EACL,eAAe,EACf,yBAAyB,EAC1B,MAAM,gCAAgC,CAAA;AACvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AAElE,MAAM,cAAc,GAAG,UAAU,CAAA;AAEjC;;;;;;;;GAQG;AACH,MAAM,UAAU,wBAAwB,CAAC,EACvC,GAAG,EAGJ;IACC,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AAC5E,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,sBAAsB,CAAC,EACrC,GAAG,EAGJ;IACC,MAAM,mBAAmB,GAAG,wBAAwB,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;IAC7D,IAAI,mBAAmB,KAAK,SAAS,EAAE,CAAC;QACtC,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,MAAM,EAAE,kBAAkB,EAAE,GAAG,yBAAyB,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;IACjE,OAAO,kBAAkB,CAAC;QACxB,mBAAmB;QACnB,wBAAwB,EAAE,kBAAkB;KAC7C,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"didKey.js","sourceRoot":"","sources":["../../src/connections/didKey.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;GAaG;AACH,OAAO,EACL,eAAe,EACf,yBAAyB,EAC1B,MAAM,gCAAgC,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAG7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AAGzD,MAAM,cAAc,GAAG,UAAU,CAAA;AAEjC;;;;;;;;GAQG;AACH,MAAM,UAAU,wBAAwB,CAAC,EACvC,GAAG,EAGJ;IACC,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AAC5E,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,sBAAsB,CAAC,EACrC,GAAG,EAGJ;IACC,MAAM,mBAAmB,GAAG,wBAAwB,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;IAC7D,IAAI,mBAAmB,KAAK,SAAS,EAAE,CAAC;QACtC,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,MAAM,EAAE,kBAAkB,EAAE,GAAG,yBAAyB,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;IACjE,OAAO,kBAAkB,CAAC;QACxB,mBAAmB;QACnB,wBAAwB,EAAE,kBAAkB;KAC7C,CAAC,CAAA;AACJ,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,EACrC,OAAO,EACP,IAAI,EACJ,OAAO,EAKR;IAKC,IAAI,CAAC,CAAC,MAAM,uBAAuB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC;QACjE,MAAM,IAAI,KAAK,CACb,8DAA8D;YAC5D,uCAAuC,CAC1C,CAAA;IACH,CAAC;IACD,MAAM,SAAS,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAA;IAC5C,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,IAAI,SAAS,CAAC,wCAAwC,CAAC,CAAA;IAC/D,CAAC;IACD,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,MAAM,cAAc,CAAC;QACnE,IAAI,EAAE,SAAS;KAChB,CAAC,CAAA;IACF,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAA;AACrD,CAAC"}
@@ -21,18 +21,35 @@ export declare const GRANT_KINDS: readonly ["grant", "share"];
21
21
  * One value of {@link GRANT_KINDS}.
22
22
  */
23
23
  export type GrantKind = (typeof GRANT_KINDS)[number];
24
+ /**
25
+ * The `grantKind` vocabulary of `grantsReceived`, the capabilities a party
26
+ * handed the wallet: `'inbox'` is the party's POST capability on its own
27
+ * inbox, the channel a push goes through. An unknown stored value is kept as
28
+ * stored.
29
+ */
30
+ export declare const RECEIVED_GRANT_KINDS: readonly ["inbox"];
31
+ /**
32
+ * One value of {@link RECEIVED_GRANT_KINDS}.
33
+ */
34
+ export type ReceivedGrantKind = (typeof RECEIVED_GRANT_KINDS)[number];
35
+ /**
36
+ * The byte length of the pairwise seed, and the length of its base64url
37
+ * no-pad text.
38
+ */
39
+ export declare const CONNECTION_SEED_BYTES = 32;
24
40
  /**
25
41
  * The delegated capability a grant wrapper stores verbatim. Only the members
26
42
  * the directory's readers take are typed. The rest of the document (its
27
43
  * proof and chain) rides along untouched, since revocation POSTs it as it
28
- * stands.
44
+ * stands. `expires` is required: a capability with no expiry is not a grant
45
+ * the directory records.
29
46
  */
30
47
  export type ConnectionZcap = {
31
48
  id: string;
32
49
  controller: string;
33
50
  invocationTarget: string;
34
51
  allowedAction?: string | string[];
35
- expires?: string;
52
+ expires: string;
36
53
  [member: string]: unknown;
37
54
  };
38
55
  /**
@@ -44,9 +61,42 @@ export type ConnectionGrantRecord = {
44
61
  zcap: ConnectionZcap;
45
62
  grantKind: string;
46
63
  /**
47
- * ISO 8601 UTC time of the consent that wrote the grant.
64
+ * ISO 8601 UTC time of the consent that wrote the grant. A renewed record
65
+ * keeps the consent's time.
48
66
  */
49
67
  grantedAt: string;
68
+ /**
69
+ * ISO 8601 UTC time of the renewal that minted this record, present on a
70
+ * record `recordRenewedGrants` wrote.
71
+ */
72
+ renewedAt?: string;
73
+ [member: string]: unknown;
74
+ };
75
+ /**
76
+ * One member of an entry's `grantsReceived`: a capability the party handed
77
+ * the wallet, verbatim, the kind of grant it is, and when it was stored.
78
+ * `grantKind` is kept as stored.
79
+ */
80
+ export type ConnectionReceivedGrantRecord = {
81
+ zcap: ConnectionZcap;
82
+ grantKind: string;
83
+ /**
84
+ * ISO 8601 UTC time the record was stored.
85
+ */
86
+ receivedAt: string;
87
+ [member: string]: unknown;
88
+ };
89
+ /**
90
+ * One member of an entry's `outbox`: a pending envelope to the party,
91
+ * verbatim, and the time it was queued. The item names no channel; a push
92
+ * resolves the channel from `grantsReceived` at push time.
93
+ */
94
+ export type ConnectionOutboxItem = {
95
+ message: Record<string, unknown>;
96
+ /**
97
+ * ISO 8601 UTC time the item was queued.
98
+ */
99
+ createdAt: string;
50
100
  [member: string]: unknown;
51
101
  };
52
102
  /**
@@ -110,7 +160,33 @@ export type ConnectionEntry = {
110
160
  * ISO 8601 UTC time the relationship ended. Present once retired.
111
161
  */
112
162
  retired?: string;
163
+ /**
164
+ * ISO 8601 UTC time the owner declined this party's offer. Present while
165
+ * the decline stands; a fresh consent clears it.
166
+ */
167
+ declined?: string;
168
+ /**
169
+ * The wallet's pairwise seed toward this party: 32 random bytes, base64url
170
+ * with no padding. Written once, and always beside `seedTag`.
171
+ */
172
+ seed?: string;
173
+ /**
174
+ * The tag over `seed` under the directory's blinded-index key
175
+ * (`connectionSeedTag`), base64url with no padding. A site that turns the
176
+ * seed into a key verifies it first.
177
+ */
178
+ seedTag?: string;
113
179
  grants: ConnectionGrantRecord[];
180
+ /**
181
+ * The capabilities the party handed the wallet. Absent on a body an older
182
+ * build wrote, which reads as empty.
183
+ */
184
+ grantsReceived: ConnectionReceivedGrantRecord[];
185
+ /**
186
+ * The pending envelopes to the party. Absent on a body an older build
187
+ * wrote, which reads as empty.
188
+ */
189
+ outbox: ConnectionOutboxItem[];
114
190
  writers: ConnectionWriter[];
115
191
  };
116
192
  /**
@@ -188,20 +264,23 @@ export declare function newConnectionEntry({ kind, did, now }: {
188
264
  */
189
265
  export declare function isWritableConnectionEntry(entry: ConnectionEntry): boolean;
190
266
  /**
191
- * Whether a value is a plain JSON object (not null, not an array).
267
+ * Reads a stored capability's known members, or `undefined` when one of them
268
+ * has the wrong shape or `expires` is absent. The capability itself is
269
+ * returned verbatim.
192
270
  *
193
271
  * @param value {unknown}
194
- * @returns {boolean}
272
+ * @returns {ConnectionZcap | undefined}
195
273
  */
196
- export declare function isJsonObject(value: unknown): value is Record<string, unknown>;
274
+ export declare function parseConnectionZcap(value: unknown): ConnectionZcap | undefined;
197
275
  /**
198
- * Reads a stored capability's known members, or `undefined` when one of them
199
- * has the wrong shape. The capability itself is returned verbatim.
276
+ * The seed bytes a stored `seed` member decodes to, or `undefined` when it
277
+ * is not 43 characters of base64url with no padding decoding to 32 bytes.
278
+ * The same rule reads a stored `seedTag`, which has the same length.
200
279
  *
201
280
  * @param value {unknown}
202
- * @returns {ConnectionZcap | undefined}
281
+ * @returns {Uint8Array | undefined}
203
282
  */
204
- export declare function parseConnectionZcap(value: unknown): ConnectionZcap | undefined;
283
+ export declare function decodeConnectionSeed(value: unknown): Uint8Array | undefined;
205
284
  /**
206
285
  * Reads a stored body as a directory entry, or `undefined` when it is not
207
286
  * one. A body fails when any member this build knows has the wrong shape:
@@ -209,9 +288,12 @@ export declare function parseConnectionZcap(value: unknown): ConnectionZcap | un
209
288
  * is not a DID, a `name`, `label`, or writer `label` outside the display-name
210
289
  * rule (1 to 64 code points once the control and bidi characters are stripped
211
290
  * and the result trimmed), a timestamp `Date.parse` cannot read, a malformed
212
- * grant wrapper or writer member, or no `id` beside anything but exactly one
213
- * writer. Every display string a view renders is held to that one rule.
214
- * Unknown members are ignored. A body with a `version` above this build's
291
+ * grant wrapper, received-grant wrapper, outbox item, or writer member, a
292
+ * `seed` or `seedTag` that is not 43 characters of base64url decoding to 32
293
+ * bytes, a `seed` with no `seedTag` (or the reverse), or no `id` beside
294
+ * anything but exactly one writer. Every display string a view renders is
295
+ * held to that one rule. An absent `grantsReceived` or `outbox` (a body an
296
+ * older build wrote) reads as empty. Unknown members are ignored. A body with a `version` above this build's
215
297
  * that passes every check is returned for display;
216
298
  * {@link isWritableConnectionEntry} says it cannot be written.
217
299
  *
@@ -1 +1 @@
1
- {"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../../src/connections/entry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../../src/connections/entry.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,8 @@
19
19
  * its writer, so the storage host can plant one. The grant checks in
20
20
  * `grants.ts` bound what a planted grant can steer.
21
21
  */
22
+ import { base64urlnopad } from '@scure/base';
23
+ import { isJsonObject } from '../jsonObject.js';
22
24
  import { normalizeDisplayName } from '../labelText.js';
23
25
  /**
24
26
  * The entry version this build reads for writing and writes.
@@ -40,6 +42,19 @@ export const CONNECTION_KINDS = [
40
42
  * capability. A reader treats any other stored value as a plain grant.
41
43
  */
42
44
  export const GRANT_KINDS = ['grant', 'share'];
45
+ /**
46
+ * The `grantKind` vocabulary of `grantsReceived`, the capabilities a party
47
+ * handed the wallet: `'inbox'` is the party's POST capability on its own
48
+ * inbox, the channel a push goes through. An unknown stored value is kept as
49
+ * stored.
50
+ */
51
+ export const RECEIVED_GRANT_KINDS = ['inbox'];
52
+ /**
53
+ * The byte length of the pairwise seed, and the length of its base64url
54
+ * no-pad text.
55
+ */
56
+ export const CONNECTION_SEED_BYTES = 32;
57
+ const CONNECTION_SEED_TEXT_LENGTH = 43;
43
58
  const DAY_MS = 24 * 60 * 60 * 1000;
44
59
  /**
45
60
  * The writer policy: inactive after 90 days, at most 8 writers per entry,
@@ -103,6 +118,8 @@ export function newConnectionEntry({ kind, did, now }) {
103
118
  firstSeen: stamp,
104
119
  lastSeen: stamp,
105
120
  grants: [],
121
+ grantsReceived: [],
122
+ outbox: [],
106
123
  writers: []
107
124
  };
108
125
  }
@@ -116,15 +133,6 @@ export function newConnectionEntry({ kind, did, now }) {
116
133
  export function isWritableConnectionEntry(entry) {
117
134
  return entry.version === CONNECTION_ENTRY_VERSION;
118
135
  }
119
- /**
120
- * Whether a value is a plain JSON object (not null, not an array).
121
- *
122
- * @param value {unknown}
123
- * @returns {boolean}
124
- */
125
- export function isJsonObject(value) {
126
- return value !== null && typeof value === 'object' && !Array.isArray(value);
127
- }
128
136
  /**
129
137
  * Whether a value is a string `Date.parse` reads as a time.
130
138
  *
@@ -145,7 +153,8 @@ function isOptionalString(value) {
145
153
  }
146
154
  /**
147
155
  * Reads a stored capability's known members, or `undefined` when one of them
148
- * has the wrong shape. The capability itself is returned verbatim.
156
+ * has the wrong shape or `expires` is absent. The capability itself is
157
+ * returned verbatim.
149
158
  *
150
159
  * @param value {unknown}
151
160
  * @returns {ConnectionZcap | undefined}
@@ -163,7 +172,7 @@ export function parseConnectionZcap(value) {
163
172
  typeof allowedAction !== 'string' &&
164
173
  !(Array.isArray(allowedAction) &&
165
174
  allowedAction.every(action => typeof action === 'string'))) ||
166
- (expires !== undefined && !isTimestamp(expires))) {
175
+ !isTimestamp(expires)) {
167
176
  return undefined;
168
177
  }
169
178
  return value;
@@ -181,11 +190,70 @@ function parseGrantRecord(value) {
181
190
  }
182
191
  if (parseConnectionZcap(value.zcap) === undefined ||
183
192
  typeof value.grantKind !== 'string' ||
184
- !isTimestamp(value.grantedAt)) {
193
+ !isTimestamp(value.grantedAt) ||
194
+ (value.renewedAt !== undefined && !isTimestamp(value.renewedAt))) {
195
+ return undefined;
196
+ }
197
+ return value;
198
+ }
199
+ /**
200
+ * Reads one stored received-grant wrapper, or `undefined` when a known
201
+ * member has the wrong shape. The wrapper is returned verbatim, unknown
202
+ * members included.
203
+ *
204
+ * @param value {unknown}
205
+ * @returns {ConnectionReceivedGrantRecord | undefined}
206
+ */
207
+ function parseReceivedGrantRecord(value) {
208
+ if (!isJsonObject(value)) {
209
+ return undefined;
210
+ }
211
+ if (parseConnectionZcap(value.zcap) === undefined ||
212
+ typeof value.grantKind !== 'string' ||
213
+ !isTimestamp(value.receivedAt)) {
214
+ return undefined;
215
+ }
216
+ return value;
217
+ }
218
+ /**
219
+ * Reads one stored outbox item, or `undefined` when a known member has the
220
+ * wrong shape: `message` must be a JSON object and `createdAt` a timestamp.
221
+ * The item is returned verbatim.
222
+ *
223
+ * @param value {unknown}
224
+ * @returns {ConnectionOutboxItem | undefined}
225
+ */
226
+ function parseOutboxItem(value) {
227
+ if (!isJsonObject(value)) {
228
+ return undefined;
229
+ }
230
+ if (!isJsonObject(value.message) || !isTimestamp(value.createdAt)) {
185
231
  return undefined;
186
232
  }
187
233
  return value;
188
234
  }
235
+ /**
236
+ * The seed bytes a stored `seed` member decodes to, or `undefined` when it
237
+ * is not 43 characters of base64url with no padding decoding to 32 bytes.
238
+ * The same rule reads a stored `seedTag`, which has the same length.
239
+ *
240
+ * @param value {unknown}
241
+ * @returns {Uint8Array | undefined}
242
+ */
243
+ export function decodeConnectionSeed(value) {
244
+ if (typeof value !== 'string' ||
245
+ value.length !== CONNECTION_SEED_TEXT_LENGTH) {
246
+ return undefined;
247
+ }
248
+ let bytes;
249
+ try {
250
+ bytes = base64urlnopad.decode(value);
251
+ }
252
+ catch {
253
+ return undefined;
254
+ }
255
+ return bytes.length === CONNECTION_SEED_BYTES ? bytes : undefined;
256
+ }
189
257
  /**
190
258
  * Reads one stored writer member, or `undefined` when a known member has the
191
259
  * wrong shape. The member is returned verbatim, unknown members included.
@@ -217,9 +285,12 @@ function parseWriter(value) {
217
285
  * is not a DID, a `name`, `label`, or writer `label` outside the display-name
218
286
  * rule (1 to 64 code points once the control and bidi characters are stripped
219
287
  * and the result trimmed), a timestamp `Date.parse` cannot read, a malformed
220
- * grant wrapper or writer member, or no `id` beside anything but exactly one
221
- * writer. Every display string a view renders is held to that one rule.
222
- * Unknown members are ignored. A body with a `version` above this build's
288
+ * grant wrapper, received-grant wrapper, outbox item, or writer member, a
289
+ * `seed` or `seedTag` that is not 43 characters of base64url decoding to 32
290
+ * bytes, a `seed` with no `seedTag` (or the reverse), or no `id` beside
291
+ * anything but exactly one writer. Every display string a view renders is
292
+ * held to that one rule. An absent `grantsReceived` or `outbox` (a body an
293
+ * older build wrote) reads as empty. Unknown members are ignored. A body with a `version` above this build's
223
294
  * that passes every check is returned for display;
224
295
  * {@link isWritableConnectionEntry} says it cannot be written.
225
296
  *
@@ -234,7 +305,7 @@ export function parseConnectionEntry(body) {
234
305
  if (!isJsonObject(body)) {
235
306
  return undefined;
236
307
  }
237
- const { version, kind, id, name, label, origin, url, appKey, firstSeen, lastSeen, retired, grants, writers } = body;
308
+ const { version, kind, id, name, label, origin, url, appKey, firstSeen, lastSeen, retired, declined, seed, seedTag, grants, grantsReceived, outbox, writers } = body;
238
309
  if (typeof version !== 'number' ||
239
310
  !Number.isInteger(version) ||
240
311
  version < 1 ||
@@ -249,7 +320,13 @@ export function parseConnectionEntry(body) {
249
320
  !isTimestamp(firstSeen) ||
250
321
  !isTimestamp(lastSeen) ||
251
322
  (retired !== undefined && !isTimestamp(retired)) ||
323
+ (declined !== undefined && !isTimestamp(declined)) ||
324
+ (seed !== undefined && decodeConnectionSeed(seed) === undefined) ||
325
+ (seedTag !== undefined && decodeConnectionSeed(seedTag) === undefined) ||
326
+ (seed === undefined) !== (seedTag === undefined) ||
252
327
  !Array.isArray(grants) ||
328
+ (grantsReceived !== undefined && !Array.isArray(grantsReceived)) ||
329
+ (outbox !== undefined && !Array.isArray(outbox)) ||
253
330
  !Array.isArray(writers)) {
254
331
  return undefined;
255
332
  }
@@ -260,8 +337,12 @@ export function parseConnectionEntry(body) {
260
337
  return undefined;
261
338
  }
262
339
  const parsedGrants = grants.map(parseGrantRecord);
340
+ const parsedReceived = (grantsReceived ?? []).map(parseReceivedGrantRecord);
341
+ const parsedOutbox = (outbox ?? []).map(parseOutboxItem);
263
342
  const parsedWriters = writers.map(parseWriter);
264
343
  if (parsedGrants.some(grant => grant === undefined) ||
344
+ parsedReceived.some(grant => grant === undefined) ||
345
+ parsedOutbox.some(item => item === undefined) ||
265
346
  parsedWriters.some(writer => writer === undefined)) {
266
347
  return undefined;
267
348
  }
@@ -280,7 +361,12 @@ export function parseConnectionEntry(body) {
280
361
  firstSeen,
281
362
  lastSeen,
282
363
  ...(retired !== undefined && { retired }),
364
+ ...(declined !== undefined && { declined }),
365
+ ...(seed !== undefined && { seed: seed }),
366
+ ...(seedTag !== undefined && { seedTag: seedTag }),
283
367
  grants: parsedGrants,
368
+ grantsReceived: parsedReceived,
369
+ outbox: parsedOutbox,
284
370
  writers: parsedWriters
285
371
  };
286
372
  }
@@ -1 +1 @@
1
- {"version":3,"file":"entry.js","sourceRoot":"","sources":["../../src/connections/entry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entry.js","sourceRoot":"","sources":["../../src/connections/entry.ts"],"names":[],"mappings":"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"}