@interop/was-client 0.99.0 → 0.100.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 (149) hide show
  1. package/README.md +94 -71
  2. package/dist/Collection.d.ts +20 -8
  3. package/dist/Collection.d.ts.map +1 -1
  4. package/dist/Collection.js +89 -69
  5. package/dist/Collection.js.map +1 -1
  6. package/dist/Resource.d.ts +14 -3
  7. package/dist/Resource.d.ts.map +1 -1
  8. package/dist/Resource.js +38 -27
  9. package/dist/Resource.js.map +1 -1
  10. package/dist/Space.d.ts +18 -4
  11. package/dist/Space.d.ts.map +1 -1
  12. package/dist/Space.js +64 -61
  13. package/dist/Space.js.map +1 -1
  14. package/dist/WasClient.d.ts +105 -58
  15. package/dist/WasClient.d.ts.map +1 -1
  16. package/dist/WasClient.js +216 -142
  17. package/dist/WasClient.js.map +1 -1
  18. package/dist/codec.d.ts +3 -2
  19. package/dist/codec.d.ts.map +1 -1
  20. package/dist/edv/EdvCodec.d.ts.map +1 -1
  21. package/dist/edv/EdvCodec.js +37 -26
  22. package/dist/edv/EdvCodec.js.map +1 -1
  23. package/dist/edv/WasTransport.d.ts +7 -4
  24. package/dist/edv/WasTransport.d.ts.map +1 -1
  25. package/dist/edv/WasTransport.js +39 -20
  26. package/dist/edv/WasTransport.js.map +1 -1
  27. package/dist/edv/acquire.d.ts +3 -3
  28. package/dist/edv/acquire.d.ts.map +1 -1
  29. package/dist/edv/acquire.js +3 -3
  30. package/dist/edv/acquire.js.map +1 -1
  31. package/dist/edv/cipher.d.ts +7 -4
  32. package/dist/edv/cipher.d.ts.map +1 -1
  33. package/dist/edv/cipher.js +7 -4
  34. package/dist/edv/cipher.js.map +1 -1
  35. package/dist/edv/core.d.ts +1 -1
  36. package/dist/edv/core.d.ts.map +1 -1
  37. package/dist/edv/core.js +1 -1
  38. package/dist/edv/core.js.map +1 -1
  39. package/dist/edv/docCipher.d.ts +10 -7
  40. package/dist/edv/docCipher.d.ts.map +1 -1
  41. package/dist/edv/docCipher.js +12 -8
  42. package/dist/edv/docCipher.js.map +1 -1
  43. package/dist/edv/encryption.d.ts +2 -2
  44. package/dist/edv/encryption.d.ts.map +1 -1
  45. package/dist/edv/encryption.js +8 -6
  46. package/dist/edv/encryption.js.map +1 -1
  47. package/dist/edv/epochCrypto.d.ts +12 -4
  48. package/dist/edv/epochCrypto.d.ts.map +1 -1
  49. package/dist/edv/epochCrypto.js +37 -10
  50. package/dist/edv/epochCrypto.js.map +1 -1
  51. package/dist/edv/epochKeys.d.ts +6 -2
  52. package/dist/edv/epochKeys.d.ts.map +1 -1
  53. package/dist/edv/epochKeys.js +25 -14
  54. package/dist/edv/epochKeys.js.map +1 -1
  55. package/dist/edv/hmacKey.d.ts +7 -1
  56. package/dist/edv/hmacKey.d.ts.map +1 -1
  57. package/dist/edv/hmacKey.js +9 -3
  58. package/dist/edv/hmacKey.js.map +1 -1
  59. package/dist/edv/index.d.ts +1 -1
  60. package/dist/edv/index.d.ts.map +1 -1
  61. package/dist/edv/index.js +1 -1
  62. package/dist/edv/index.js.map +1 -1
  63. package/dist/edv/recipients.d.ts.map +1 -1
  64. package/dist/edv/recipients.js +2 -0
  65. package/dist/edv/recipients.js.map +1 -1
  66. package/dist/edv/refreshingDocCipher.d.ts +3 -3
  67. package/dist/edv/refreshingDocCipher.d.ts.map +1 -1
  68. package/dist/edv/refreshingDocCipher.js +3 -3
  69. package/dist/edv/refreshingDocCipher.js.map +1 -1
  70. package/dist/edv/transportFactory.d.ts +3 -3
  71. package/dist/edv/transportFactory.d.ts.map +1 -1
  72. package/dist/edv/transportFactory.js +3 -3
  73. package/dist/edv/transportFactory.js.map +1 -1
  74. package/dist/errors.d.ts +6 -4
  75. package/dist/errors.d.ts.map +1 -1
  76. package/dist/errors.js +6 -4
  77. package/dist/errors.js.map +1 -1
  78. package/dist/index.d.ts +2 -1
  79. package/dist/index.d.ts.map +1 -1
  80. package/dist/index.js +1 -1
  81. package/dist/index.js.map +1 -1
  82. package/dist/internal/codec.d.ts +7 -7
  83. package/dist/internal/codec.d.ts.map +1 -1
  84. package/dist/internal/codec.js +19 -18
  85. package/dist/internal/codec.js.map +1 -1
  86. package/dist/internal/conditional.d.ts +3 -3
  87. package/dist/internal/conditional.d.ts.map +1 -1
  88. package/dist/internal/conditional.js +5 -5
  89. package/dist/internal/conditional.js.map +1 -1
  90. package/dist/internal/grant.d.ts +15 -26
  91. package/dist/internal/grant.d.ts.map +1 -1
  92. package/dist/internal/grant.js +95 -29
  93. package/dist/internal/grant.js.map +1 -1
  94. package/dist/internal/memo.d.ts +13 -4
  95. package/dist/internal/memo.d.ts.map +1 -1
  96. package/dist/internal/memo.js +18 -7
  97. package/dist/internal/memo.js.map +1 -1
  98. package/dist/internal/meta.d.ts +8 -8
  99. package/dist/internal/meta.d.ts.map +1 -1
  100. package/dist/internal/meta.js +13 -10
  101. package/dist/internal/meta.js.map +1 -1
  102. package/dist/internal/pagination.d.ts +30 -15
  103. package/dist/internal/pagination.d.ts.map +1 -1
  104. package/dist/internal/pagination.js +31 -17
  105. package/dist/internal/pagination.js.map +1 -1
  106. package/dist/internal/paths.d.ts +332 -195
  107. package/dist/internal/paths.d.ts.map +1 -1
  108. package/dist/internal/paths.js +400 -367
  109. package/dist/internal/paths.js.map +1 -1
  110. package/dist/internal/policy.d.ts +23 -23
  111. package/dist/internal/policy.d.ts.map +1 -1
  112. package/dist/internal/policy.js +20 -20
  113. package/dist/internal/policy.js.map +1 -1
  114. package/dist/internal/request.d.ts +17 -21
  115. package/dist/internal/request.d.ts.map +1 -1
  116. package/dist/internal/request.js +10 -21
  117. package/dist/internal/request.js.map +1 -1
  118. package/dist/internal/revoke.d.ts +34 -13
  119. package/dist/internal/revoke.d.ts.map +1 -1
  120. package/dist/internal/revoke.js +97 -28
  121. package/dist/internal/revoke.js.map +1 -1
  122. package/dist/internal/service.d.ts +25 -7
  123. package/dist/internal/service.d.ts.map +1 -1
  124. package/dist/internal/service.js +49 -45
  125. package/dist/internal/service.js.map +1 -1
  126. package/dist/internal/write.d.ts +18 -18
  127. package/dist/internal/write.d.ts.map +1 -1
  128. package/dist/internal/write.js +27 -27
  129. package/dist/internal/write.js.map +1 -1
  130. package/dist/paths.d.ts +32 -25
  131. package/dist/paths.d.ts.map +1 -1
  132. package/dist/paths.js +32 -25
  133. package/dist/paths.js.map +1 -1
  134. package/dist/sync/index.d.ts +4 -2
  135. package/dist/sync/index.d.ts.map +1 -1
  136. package/dist/sync/index.js +4 -2
  137. package/dist/sync/index.js.map +1 -1
  138. package/dist/sync/port.d.ts +3 -3
  139. package/dist/sync/port.d.ts.map +1 -1
  140. package/dist/sync/port.js +12 -12
  141. package/dist/sync/port.js.map +1 -1
  142. package/dist/sync/provisioning.d.ts +10 -9
  143. package/dist/sync/provisioning.d.ts.map +1 -1
  144. package/dist/sync/provisioning.js +19 -18
  145. package/dist/sync/provisioning.js.map +1 -1
  146. package/dist/sync/types.d.ts +2 -2
  147. package/dist/types.d.ts +13 -5
  148. package/dist/types.d.ts.map +1 -1
  149. package/package.json +4 -4
package/dist/index.js CHANGED
@@ -10,7 +10,7 @@ export { Space } from './Space.js';
10
10
  export { Collection } from './Collection.js';
11
11
  export { Resource } from './Resource.js';
12
12
  export { zcapClientForSigner } from './zcapClient.js';
13
- export { discoverService } from './internal/service.js';
13
+ export { discoverService, readServiceDescription } from './internal/service.js';
14
14
  export { parseSpaceTarget } from './internal/paths.js';
15
15
  export { allowsAction } from './internal/grant.js';
16
16
  export { readEtag, writeHeaders } from './internal/conditional.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;GAGG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAEvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAElD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,4EAA4E;AAC5E,8EAA8E;AAC9E,+EAA+E;AAC/E,gDAAgD;AAChD,OAAO,EACL,4BAA4B,EAC5B,oBAAoB,EACpB,gBAAgB,EAChB,YAAY,EACb,MAAM,uBAAuB,CAAA;AAG9B,OAAO,EACL,QAAQ,EACR,aAAa,EACb,sBAAsB,EACtB,sBAAsB,EACtB,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,uBAAuB,EACvB,aAAa,EACb,uBAAuB,EACvB,oBAAoB,EACpB,kBAAkB,EAClB,eAAe,EACf,sBAAsB,EACtB,yBAAyB,EACzB,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,cAAc,EACd,UAAU,EACV,aAAa,EACb,QAAQ,EACT,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;GAGG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAE/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAElD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,4EAA4E;AAC5E,8EAA8E;AAC9E,+EAA+E;AAC/E,gDAAgD;AAChD,OAAO,EACL,4BAA4B,EAC5B,oBAAoB,EACpB,gBAAgB,EAChB,YAAY,EACb,MAAM,uBAAuB,CAAA;AAG9B,OAAO,EACL,QAAQ,EACR,aAAa,EACb,sBAAsB,EACtB,sBAAsB,EACtB,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,uBAAuB,EACvB,aAAa,EACb,uBAAuB,EACvB,oBAAoB,EACpB,kBAAkB,EAClB,eAAe,EACf,sBAAsB,EACtB,yBAAyB,EACzB,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,cAAc,EACd,UAAU,EACV,aAAa,EACb,QAAQ,EACT,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA"}
@@ -93,7 +93,7 @@ export declare class CodecHolder {
93
93
  * through unchanged.
94
94
  */
95
95
  interface CodecTarget {
96
- spaceId: string;
96
+ spaceUrl: string;
97
97
  collectionId: string;
98
98
  override?: EncryptionOverride;
99
99
  capability?: IZcap;
@@ -105,7 +105,7 @@ interface CodecTarget {
105
105
  *
106
106
  * @param context {ClientContext}
107
107
  * @param options {object}
108
- * @param options.spaceId {string}
108
+ * @param options.spaceUrl {string}
109
109
  * @param options.collectionId {string}
110
110
  * @param [options.override] {EncryptionOverride} per-handle override
111
111
  * @param [options.capability] {IZcap} the handle's bound capability
@@ -131,7 +131,7 @@ export declare const identityCodec: ResourceCodec;
131
131
  *
132
132
  * @param context {ClientContext}
133
133
  * @param options {object}
134
- * @param options.spaceId {string}
134
+ * @param options.spaceUrl {string}
135
135
  * @param options.collectionId {string}
136
136
  * @param [options.override] {EncryptionOverride} per-handle override; wins
137
137
  * over the descriptor and skips the descriptor read
@@ -141,7 +141,7 @@ export declare const identityCodec: ResourceCodec;
141
141
  * @returns {Promise<CodecResolution>} the codec, plus the metadata snapshot
142
142
  * the index-schema read produced when there was one
143
143
  */
144
- export declare function resolveCodec(context: ClientContext, { spaceId, collectionId, override, capability }: CodecTarget): Promise<CodecResolution>;
144
+ export declare function resolveCodec(context: ClientContext, { spaceUrl, collectionId, override, capability }: CodecTarget): Promise<CodecResolution>;
145
145
  /**
146
146
  * Builds the codec a descriptor names, for a write that states the descriptor
147
147
  * itself rather than discovering it from stored state: the identity codec when
@@ -152,14 +152,14 @@ export declare function resolveCodec(context: ClientContext, { spaceId, collecti
152
152
  *
153
153
  * @param context {ClientContext}
154
154
  * @param options {object}
155
- * @param options.spaceId {string}
155
+ * @param options.spaceUrl {string}
156
156
  * @param options.collectionId {string}
157
157
  * @param [options.descriptor] {CollectionEncryption} the descriptor the write
158
158
  * declares; absent means plaintext
159
159
  * @returns {Promise<ResourceCodec | null>}
160
160
  */
161
- export declare function codecForDescriptor(context: ClientContext, { spaceId, collectionId, descriptor }: {
162
- spaceId: string;
161
+ export declare function codecForDescriptor(context: ClientContext, { spaceUrl, collectionId, descriptor }: {
162
+ spaceUrl: string;
163
163
  collectionId: string;
164
164
  descriptor?: CollectionEncryption;
165
165
  }): Promise<ResourceCodec | null>;
@@ -1 +1 @@
1
- {"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../../src/internal/codec.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAA+B,aAAa,EAAE,MAAM,aAAa,CAAA;AAC7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAajD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAA;AAK7D,OAAO,KAAK,EACV,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,KAAK,EAGL,sBAAsB,EAEvB,MAAM,aAAa,CAAA;AAEpB;;;;;;;;;;GAUG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,aAAa,CAAA;IACpB,IAAI,CAAC,EAAE,CAAC,kBAAkB,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI,CAAA;IACtD,QAAQ,CAAC,EAAE,YAAY,CAAA;CACxB;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,wBAAwB,CAAA;IAClC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,sBAAsB,CAAA;CAChC;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,kBAAkB,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC5C,QAAQ,EAAE,YAAY,CAAA;CACvB;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,WAAW;;IAGtB;;;OAGG;gBACS,OAAO,EAAE,MAAM,OAAO,CAAC,eAAe,CAAC;IAInD;;;;;OAKG;IACG,GAAG,IAAI,OAAO,CAAC,aAAa,CAAC;IAOnC;;;;;;;;;OASG;IACG,OAAO,IAAI,OAAO,CAAC,eAAe,CAAC;IAczC;;;;OAIG;IACH,KAAK,IAAI,IAAI;CAGd;AAED;;;;;GAKG;AACH,UAAU,WAAW;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,kBAAkB,CAAA;IAC7B,UAAU,CAAC,EAAE,KAAK,CAAA;CACnB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,WAAW,GACnB,WAAW,CAEb;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,EAAE,aAyD3B,CAAA;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,aAAa,EACtB,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,WAAW,GAC3D,OAAO,CAAC,eAAe,CAAC,CA+E1B;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,aAAa,EACtB,EACE,OAAO,EACP,YAAY,EACZ,UAAU,EACX,EAAE;IACD,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,oBAAoB,CAAA;CAClC,GACA,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAc/B;AA4CD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,gBAAgB,CAAC,EACrC,KAAK,EACL,MAAM,EACP,EAAE;IACD,KAAK,EAAE,aAAa,CAAA;IACpB,MAAM,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,CAAA;CAC7B,GAAG,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,CASzC"}
1
+ {"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../../src/internal/codec.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAA+B,aAAa,EAAE,MAAM,aAAa,CAAA;AAC7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAajD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAA;AAM7D,OAAO,KAAK,EACV,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,KAAK,EAGL,sBAAsB,EAEvB,MAAM,aAAa,CAAA;AAEpB;;;;;;;;;;GAUG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,aAAa,CAAA;IACpB,IAAI,CAAC,EAAE,CAAC,kBAAkB,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI,CAAA;IACtD,QAAQ,CAAC,EAAE,YAAY,CAAA;CACxB;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,wBAAwB,CAAA;IAClC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,sBAAsB,CAAA;CAChC;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,kBAAkB,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC5C,QAAQ,EAAE,YAAY,CAAA;CACvB;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,WAAW;;IAGtB;;;OAGG;gBACS,OAAO,EAAE,MAAM,OAAO,CAAC,eAAe,CAAC;IAInD;;;;;OAKG;IACG,GAAG,IAAI,OAAO,CAAC,aAAa,CAAC;IAOnC;;;;;;;;;OASG;IACG,OAAO,IAAI,OAAO,CAAC,eAAe,CAAC;IAczC;;;;OAIG;IACH,KAAK,IAAI,IAAI;CAGd;AAED;;;;;GAKG;AACH,UAAU,WAAW;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,kBAAkB,CAAA;IAC7B,UAAU,CAAC,EAAE,KAAK,CAAA;CACnB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,WAAW,GACnB,WAAW,CAEb;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,EAAE,aAyD3B,CAAA;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,aAAa,EACtB,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,WAAW,GAC5D,OAAO,CAAC,eAAe,CAAC,CA+E1B;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,aAAa,EACtB,EACE,QAAQ,EACR,YAAY,EACZ,UAAU,EACX,EAAE;IACD,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,oBAAoB,CAAA;CAClC,GACA,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAc/B;AA4CD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,gBAAgB,CAAC,EACrC,KAAK,EACL,MAAM,EACP,EAAE;IACD,KAAK,EAAE,aAAa,CAAA;IACpB,MAAM,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,CAAA;CAC7B,GAAG,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,CASzC"}
@@ -2,6 +2,7 @@ import { decodedStream, mediaType, prepareBody, parseResource } from './content.
2
2
  import { bytesToStream } from './blob.js';
3
3
  import { asCollectionMetadata, storedEncryption, unreadableDescriptionError } from './describe.js';
4
4
  import { readCollectionMetadata } from './meta.js';
5
+ import { collectionUrl } from './paths.js';
5
6
  import { readIndexSchema } from './indexSchema.js';
6
7
  import { Memo } from './memo.js';
7
8
  import { EncryptionError, NotImplementedError } from '../errors.js';
@@ -78,7 +79,7 @@ export class CodecHolder {
78
79
  *
79
80
  * @param context {ClientContext}
80
81
  * @param options {object}
81
- * @param options.spaceId {string}
82
+ * @param options.spaceUrl {string}
82
83
  * @param options.collectionId {string}
83
84
  * @param [options.override] {EncryptionOverride} per-handle override
84
85
  * @param [options.capability] {IZcap} the handle's bound capability
@@ -144,7 +145,7 @@ export const identityCodec = {
144
145
  *
145
146
  * @param context {ClientContext}
146
147
  * @param options {object}
147
- * @param options.spaceId {string}
148
+ * @param options.spaceUrl {string}
148
149
  * @param options.collectionId {string}
149
150
  * @param [options.override] {EncryptionOverride} per-handle override; wins
150
151
  * over the descriptor and skips the descriptor read
@@ -154,7 +155,7 @@ export const identityCodec = {
154
155
  * @returns {Promise<CodecResolution>} the codec, plus the metadata snapshot
155
156
  * the index-schema read produced when there was one
156
157
  */
157
- export async function resolveCodec(context, { spaceId, collectionId, override, capability }) {
158
+ export async function resolveCodec(context, { spaceUrl, collectionId, override, capability }) {
158
159
  // 1. A per-handle override wins and skips the descriptor read.
159
160
  if (override !== undefined) {
160
161
  if (override === 'plaintext') {
@@ -166,7 +167,7 @@ export async function resolveCodec(context, { spaceId, collectionId, override, c
166
167
  // fail-closed, so dropping the descriptor here would break every read and
167
168
  // write.
168
169
  const { codec } = await buildEncryptingCodec(context, {
169
- spaceId,
170
+ spaceUrl,
170
171
  collectionId,
171
172
  scheme: override.scheme,
172
173
  keys: override.keys,
@@ -175,7 +176,7 @@ export async function resolveCodec(context, { spaceId, collectionId, override, c
175
176
  // The override skipped the Collection Metadata read, so a searchable
176
177
  // collection's persisted index schema is fetched here.
177
178
  const snapshot = await loadIndexSchema(context, {
178
- spaceId,
179
+ spaceUrl,
179
180
  collectionId,
180
181
  capability,
181
182
  codec
@@ -197,13 +198,13 @@ export async function resolveCodec(context, { spaceId, collectionId, override, c
197
198
  // downgrading to plaintext and writing the caller's secret as server-visible
198
199
  // plaintext into a possibly-encrypted collection.
199
200
  const read = await readCollectionMetadata(context, {
200
- spaceId,
201
+ spaceUrl,
201
202
  collectionId,
202
203
  capability
203
204
  });
204
205
  if (read === null) {
205
206
  throw unreadableDescriptionError({
206
- operation: `determine whether collection ${spaceId}/${collectionId} is ` +
207
+ operation: `determine whether collection ${collectionUrl({ spaceUrl, collectionId })} is ` +
207
208
  'encrypted',
208
209
  consequence: 'an encryption-capable client refuses to fall back to plaintext',
209
210
  advice: 'Pass an explicit per-handle encryption override -- ' +
@@ -215,7 +216,7 @@ export async function resolveCodec(context, { spaceId, collectionId, override, c
215
216
  const declared = storedEncryption(read.metadata);
216
217
  const { codec } = declared
217
218
  ? await buildEncryptingCodec(context, {
218
- spaceId,
219
+ spaceUrl,
219
220
  collectionId,
220
221
  scheme: declared.scheme,
221
222
  encryption: declared
@@ -241,13 +242,13 @@ export async function resolveCodec(context, { spaceId, collectionId, override, c
241
242
  *
242
243
  * @param context {ClientContext}
243
244
  * @param options {object}
244
- * @param options.spaceId {string}
245
+ * @param options.spaceUrl {string}
245
246
  * @param options.collectionId {string}
246
247
  * @param [options.descriptor] {CollectionEncryption} the descriptor the write
247
248
  * declares; absent means plaintext
248
249
  * @returns {Promise<ResourceCodec | null>}
249
250
  */
250
- export async function codecForDescriptor(context, { spaceId, collectionId, descriptor }) {
251
+ export async function codecForDescriptor(context, { spaceUrl, collectionId, descriptor }) {
251
252
  if (descriptor === undefined) {
252
253
  return identityCodec;
253
254
  }
@@ -255,7 +256,7 @@ export async function codecForDescriptor(context, { spaceId, collectionId, descr
255
256
  return null;
256
257
  }
257
258
  const codec = await context.encryption.codecFor({
258
- spaceId,
259
+ spaceUrl,
259
260
  collectionId,
260
261
  scheme: descriptor.scheme,
261
262
  encryption: descriptor
@@ -330,7 +331,7 @@ export async function openStoredCustom({ codec, stored }) {
330
331
  *
331
332
  * @param context {ClientContext}
332
333
  * @param options {object}
333
- * @param options.spaceId {string}
334
+ * @param options.spaceUrl {string}
334
335
  * @param options.collectionId {string}
335
336
  * @param options.scheme {string}
336
337
  * @param [options.encryption] {CollectionEncryption} the descriptor, passed
@@ -338,15 +339,15 @@ export async function openStoredCustom({ codec, stored }) {
338
339
  * @param [options.keys] {unknown} override-supplied key material
339
340
  * @returns {Promise<CodecResolution>}
340
341
  */
341
- async function buildEncryptingCodec(context, { spaceId, collectionId, scheme, encryption, keys }) {
342
- const where = `${spaceId}/${collectionId}`;
342
+ async function buildEncryptingCodec(context, { spaceUrl, collectionId, scheme, encryption, keys }) {
343
+ const where = collectionUrl({ spaceUrl, collectionId });
343
344
  if (!context.encryption) {
344
345
  throw new EncryptionError(`Collection ${where} is encrypted (scheme "${scheme}") but this client ` +
345
346
  'has no encryption provider. Construct the WasClient with an ' +
346
347
  '`encryption` provider (see @interop/was-client/edv).');
347
348
  }
348
349
  const codec = await context.encryption.codecFor({
349
- spaceId,
350
+ spaceUrl,
350
351
  collectionId,
351
352
  scheme,
352
353
  encryption,
@@ -384,7 +385,7 @@ async function buildEncryptingCodec(context, { spaceId, collectionId, scheme, en
384
385
  *
385
386
  * @param context {ClientContext}
386
387
  * @param options {object}
387
- * @param options.spaceId {string}
388
+ * @param options.spaceUrl {string}
388
389
  * @param options.collectionId {string}
389
390
  * @param [options.capability] {IZcap}
390
391
  * @param options.codec {ResourceCodec} the codec to install the schema on
@@ -392,14 +393,14 @@ async function buildEncryptingCodec(context, { spaceId, collectionId, scheme, en
392
393
  * the read behind it, `null` when there is none to read, and `undefined`
393
394
  * when no read happened at all
394
395
  */
395
- async function loadIndexSchema(context, { spaceId, collectionId, capability, codec }) {
396
+ async function loadIndexSchema(context, { spaceUrl, collectionId, capability, codec }) {
396
397
  if (!codec.indexing) {
397
398
  return undefined;
398
399
  }
399
400
  let read;
400
401
  try {
401
402
  read = await readCollectionMetadata(context, {
402
- spaceId,
403
+ spaceUrl,
403
404
  collectionId,
404
405
  capability
405
406
  });
@@ -1 +1 @@
1
- {"version":3,"file":"codec.js","sourceRoot":"","sources":["../../src/internal/codec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codec.js","sourceRoot":"","sources":["../../src/internal/codec.ts"],"names":[],"mappings":"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"}
@@ -154,13 +154,13 @@ export declare function readEtag(response: ResponseLike | null): string | undefi
154
154
  * the server.
155
155
  *
156
156
  * @param options {object}
157
- * @param options.path {string} the resource path written
157
+ * @param options.url {string} the resource URL written
158
158
  * @param options.current {ResponseLike | null} the pre-read document
159
159
  * @param [options.precondition] {WritePrecondition} the caller's precondition
160
160
  * @returns {void}
161
161
  */
162
- export declare function assertPreconditionAgainstPreRead({ path, current, precondition }: {
163
- path: string;
162
+ export declare function assertPreconditionAgainstPreRead({ url, current, precondition }: {
163
+ url: string;
164
164
  current: ResponseLike | null;
165
165
  precondition?: WritePrecondition;
166
166
  }): void;
@@ -1 +1 @@
1
- {"version":3,"file":"conditional.d.ts","sourceRoot":"","sources":["../../src/internal/conditional.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC7D,OAAO,EACL,iBAAiB,EAGlB,MAAM,cAAc,CAAA;AAErB;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,cAAc,CAAA;AAE3C;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,cAAc,CAAA;AAE3C;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,iBAAiB,CAE5E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,CAAC,EAAE,iBAAiB,GAC/B,iBAAiB,GAAG,SAAS,CAK/B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CACtC,YAAY,CAAC,EAAE,iBAAiB,GAC/B,IAAI,CAQN;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAOtD;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,YAAY,CAAC,EAC3B,WAAW,EACX,YAAiB,EACjB,KAAK,EACL,QAAQ,EACT,EAAE;IACD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,iBAAiB,CAAA;IAChC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAqBrC;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,2BAA2B,CAAC,EAC1C,SAAS,EACV,EAAE;IACD,SAAS,EAAE,MAAM,CAAA;CAClB,GAAG,iBAAiB,CASpB;AAED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAE1E;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,gCAAgC,CAAC,EAC/C,IAAI,EACJ,OAAO,EACP,YAAY,EACb,EAAE;IACD,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,YAAY,GAAG,IAAI,CAAA;IAC5B,YAAY,CAAC,EAAE,iBAAiB,CAAA;CACjC,GAAG,IAAI,CAkCP"}
1
+ {"version":3,"file":"conditional.d.ts","sourceRoot":"","sources":["../../src/internal/conditional.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC7D,OAAO,EACL,iBAAiB,EAGlB,MAAM,cAAc,CAAA;AAErB;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,cAAc,CAAA;AAE3C;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,cAAc,CAAA;AAE3C;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,iBAAiB,CAE5E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,CAAC,EAAE,iBAAiB,GAC/B,iBAAiB,GAAG,SAAS,CAK/B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CACtC,YAAY,CAAC,EAAE,iBAAiB,GAC/B,IAAI,CAQN;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAOtD;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,YAAY,CAAC,EAC3B,WAAW,EACX,YAAiB,EACjB,KAAK,EACL,QAAQ,EACT,EAAE;IACD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,iBAAiB,CAAA;IAChC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAqBrC;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,2BAA2B,CAAC,EAC1C,SAAS,EACV,EAAE;IACD,SAAS,EAAE,MAAM,CAAA;CAClB,GAAG,iBAAiB,CASpB;AAED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAE1E;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,gCAAgC,CAAC,EAC/C,GAAG,EACH,OAAO,EACP,YAAY,EACb,EAAE;IACD,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,YAAY,GAAG,IAAI,CAAA;IAC5B,YAAY,CAAC,EAAE,iBAAiB,CAAA;CACjC,GAAG,IAAI,CAkCP"}
@@ -173,17 +173,17 @@ export function readEtag(response) {
173
173
  * the server.
174
174
  *
175
175
  * @param options {object}
176
- * @param options.path {string} the resource path written
176
+ * @param options.url {string} the resource URL written
177
177
  * @param options.current {ResponseLike | null} the pre-read document
178
178
  * @param [options.precondition] {WritePrecondition} the caller's precondition
179
179
  * @returns {void}
180
180
  */
181
- export function assertPreconditionAgainstPreRead({ path, current, precondition }) {
181
+ export function assertPreconditionAgainstPreRead({ url, current, precondition }) {
182
182
  if (precondition === undefined) {
183
183
  return;
184
184
  }
185
185
  if (precondition.ifNoneMatch && current !== null) {
186
- throw new PreconditionFailedError(`Cannot create the document at "${path}": create-if-absent was ` +
186
+ throw new PreconditionFailedError(`Cannot create the document at "${url}": create-if-absent was ` +
187
187
  'requested (ifNoneMatch), but a document is already stored there. ' +
188
188
  'Re-read it and write an update instead.', { status: 412 });
189
189
  }
@@ -191,14 +191,14 @@ export function assertPreconditionAgainstPreRead({ path, current, precondition }
191
191
  return;
192
192
  }
193
193
  if (current === null) {
194
- throw new PreconditionFailedError(`Cannot update the document at "${path}": an ifMatch validator was ` +
194
+ throw new PreconditionFailedError(`Cannot update the document at "${url}": an ifMatch validator was ` +
195
195
  'supplied, but no current document is readable there -- it was ' +
196
196
  'deleted, or it is not readable with this capability (WAS masks ' +
197
197
  'unauthorized reads as 404). Re-read the resource before retrying.', { status: 412 });
198
198
  }
199
199
  const etag = readEtag(current);
200
200
  if (etag !== undefined && etag !== precondition.ifMatch) {
201
- throw new PreconditionFailedError(`Cannot update the document at "${path}": its current version ` +
201
+ throw new PreconditionFailedError(`Cannot update the document at "${url}": its current version ` +
202
202
  `(${etag}) is not the one the write was pinned to ` +
203
203
  `(${precondition.ifMatch}) -- another writer changed it. Re-read the ` +
204
204
  'resource, rebase the change, and retry.', { status: 412 });
@@ -1 +1 @@
1
- {"version":3,"file":"conditional.js","sourceRoot":"","sources":["../../src/internal/conditional.ts"],"names":[],"mappings":"AAYA,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,eAAe,EAChB,MAAM,cAAc,CAAA;AAErB;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAA;AAE3C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAA;AAa3C;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAqB;IACvD,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAA;AACvE,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iBAAiB,CAC/B,YAAgC;IAEhC,OAAO,YAAY,KAAK,SAAS;QAC/B,CAAC,YAAY,CAAC,OAAO,KAAK,SAAS,IAAI,YAAY,CAAC,WAAW,CAAC;QAChE,CAAC,CAAC,YAAY;QACd,CAAC,CAAC,SAAS,CAAA;AACf,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,wBAAwB,CACtC,YAAgC;IAEhC,IAAI,YAAY,EAAE,OAAO,KAAK,SAAS,IAAI,YAAY,CAAC,WAAW,EAAE,CAAC;QACpE,MAAM,IAAI,eAAe,CACvB,yEAAyE;YACvE,gEAAgE;YAChE,uDAAuD,CAC1D,CAAA;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAAC,QAAiB;IAC9C,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,eAAe,CACvB,uEAAuE;YACrE,mDAAmD,CACtD,CAAA;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,YAAY,CAAC,EAC3B,WAAW,EACX,YAAY,GAAG,EAAE,EACjB,KAAK,EACL,QAAQ,EAMT;IACC,wBAAwB,CAAC,YAAY,CAAC,CAAA;IACtC,cAAc,CAAC,QAAQ,CAAC,CAAA;IACxB,MAAM,OAAO,GAA2B,EAAE,CAAA;IAC1C,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,CAAC,cAAc,CAAC,GAAG,WAAW,CAAA;IACvC,CAAC;IACD,IAAI,YAAY,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACvC,OAAO,CAAC,UAAU,CAAC,GAAG,YAAY,CAAC,OAAO,CAAA;IAC5C,CAAC;IACD,IAAI,YAAY,CAAC,WAAW,EAAE,CAAC;QAC7B,OAAO,CAAC,eAAe,CAAC,GAAG,GAAG,CAAA;IAChC,CAAC;IACD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,6EAA6E;QAC7E,OAAO,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,GAAG,KAAK,CAAA;IACjD,CAAC;IACD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,GAAG,QAAQ,CAAA;IACpD,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAA;AAC9D,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,2BAA2B,CAAC,EAC1C,SAAS,EAGV;IACC,OAAO,IAAI,iBAAiB,CAC1B,GAAG,SAAS,4DAA4D;QACtE,wEAAwE;QACxE,sEAAsE;QACtE,wEAAwE;QACxE,qEAAqE;QACrE,4CAA4C,CAC/C,CAAA;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,QAAQ,CAAC,QAA6B;IACpD,OAAO,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,SAAS,CAAA;AACnD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,gCAAgC,CAAC,EAC/C,IAAI,EACJ,OAAO,EACP,YAAY,EAKb;IACC,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAM;IACR,CAAC;IACD,IAAI,YAAY,CAAC,WAAW,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACjD,MAAM,IAAI,uBAAuB,CAC/B,kCAAkC,IAAI,0BAA0B;YAC9D,mEAAmE;YACnE,yCAAyC,EAC3C,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAA;IACH,CAAC;IACD,IAAI,YAAY,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACvC,OAAM;IACR,CAAC;IACD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,MAAM,IAAI,uBAAuB,CAC/B,kCAAkC,IAAI,8BAA8B;YAClE,gEAAgE;YAChE,iEAAiE;YACjE,mEAAmE,EACrE,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAA;IACH,CAAC;IACD,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAA;IAC9B,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,YAAY,CAAC,OAAO,EAAE,CAAC;QACxD,MAAM,IAAI,uBAAuB,CAC/B,kCAAkC,IAAI,yBAAyB;YAC7D,IAAI,IAAI,2CAA2C;YACnD,IAAI,YAAY,CAAC,OAAO,8CAA8C;YACtE,yCAAyC,EAC3C,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAA;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"conditional.js","sourceRoot":"","sources":["../../src/internal/conditional.ts"],"names":[],"mappings":"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"}
@@ -1,35 +1,21 @@
1
- /*!
2
- * Copyright (c) 2026 Interop Alliance. All rights reserved.
3
- */
4
- /**
5
- * The delegation primitive shared by `was.grant()` and the `space`/`collection`
6
- * grant sugar. Maps `GrantOptions` onto `zcapClient.delegate(...)`, normalizing
7
- * action verbs to uppercase so a lowercase grant (`'get'`) still validates on
8
- * the server (which matches actions case-sensitively against `'GET'`).
9
- *
10
- * An unparented grant whose target lies in the server's Space tree is delegated
11
- * from that **Space's** root capability, with the target carried as an
12
- * attenuated `invocationTarget`, rather than from the target's own root
13
- * capability. Both forms grant the same access (the server verifies WAS routes
14
- * with target attenuation allowed), but only a Space-rooted chain can be revoked
15
- * -- revocation is Space-scoped, and the endpoint requires the chain to root
16
- * exactly in the Space (see `revoke.ts`).
17
- */
18
1
  import type { ClientContext } from './request.js';
19
2
  import type { GrantOptions, IDelegatedZcap, IZcap } from '../types.js';
20
3
  /**
21
4
  * Delegates a capability per `GrantOptions`, returning the signed zcap to hand
22
5
  * off out-of-band. An explicit `capability` (re-delegation of a parent zcap)
23
- * always wins; otherwise a Space-tree target is rooted at its Space, so the
24
- * resulting capability is revocable via `space.revoke()` / `was.revoke()`.
6
+ * always wins; otherwise a grant naming its `spaceUrl` is rooted at that
7
+ * Space, so the resulting capability is revocable via `space.revoke()` /
8
+ * `was.revoke()`; otherwise ezcap roots it at the target's own root
9
+ * capability.
25
10
  *
26
11
  * @param context {ClientContext}
27
12
  * @param options {GrantOptions}
28
13
  * @returns {Promise<IDelegatedZcap>}
29
14
  * @throws {ValidationError} when neither `target` nor `capability` is given,
30
- * so the delegation names nothing to grant
15
+ * so the delegation names nothing to grant; or when `spaceUrl` is given
16
+ * and `target` does not lie at or beneath it
31
17
  */
32
- export declare function delegateGrant(context: ClientContext, { to, actions, expires, target, capability }: GrantOptions): Promise<IDelegatedZcap>;
18
+ export declare function delegateGrant(context: ClientContext, { to, actions, expires, target, capability, spaceUrl }: GrantOptions): Promise<IDelegatedZcap>;
33
19
  /**
34
20
  * Whether a capability permits `action`, matched case-insensitively against
35
21
  * its `allowedAction` (a single verb or a list). A capability that states no
@@ -49,18 +35,21 @@ export declare function allowsAction({ zcap, action }: {
49
35
  /**
50
36
  * The scoped-grant sugar shared by `Space.grant` and `Collection.grant`:
51
37
  * delegates per `GrantOptions` with the grant `target` prefilled from the
52
- * handle's `path` (and the handle's bound `capability`, if any, as the parent
53
- * for re-delegation). Explicit options win over both prefills.
38
+ * handle's `url`, the rooting `spaceUrl` from the handle's Space, and the
39
+ * handle's bound `capability`, if any, as the parent for re-delegation.
40
+ * Explicit options win over every prefill.
54
41
  *
55
42
  * @param context {ClientContext}
56
43
  * @param options {object}
57
- * @param options.path {string} the handle's path (target fallback)
44
+ * @param options.url {string} the handle's URL (target fallback)
45
+ * @param options.spaceUrl {string} the handle's Space (rooting fallback)
58
46
  * @param options.options {GrantOptions} the caller's grant options
59
47
  * @param [options.capability] {IZcap} the handle's bound capability
60
48
  * @returns {Promise<IDelegatedZcap>}
61
49
  */
62
- export declare function delegateGrantAt(context: ClientContext, { path, options, capability }: {
63
- path: string;
50
+ export declare function delegateGrantAt(context: ClientContext, { url, spaceUrl, options, capability }: {
51
+ url: string;
52
+ spaceUrl: string;
64
53
  options: GrantOptions;
65
54
  capability?: IZcap;
66
55
  }): Promise<IDelegatedZcap>;
@@ -1 +1 @@
1
- {"version":3,"file":"grant.d.ts","sourceRoot":"","sources":["../../src/internal/grant.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAIjD,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAgCtE;;;;;;;;;;;GAWG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,aAAa,EACtB,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,YAAY,GACzD,OAAO,CAAC,cAAc,CAAC,CAuBzB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,EAC3B,IAAI,EACJ,MAAM,EACP,EAAE;IACD,IAAI,CAAC,EAAE,KAAK,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;CACf,GAAG,OAAO,CAWV;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,aAAa,EACtB,EACE,IAAI,EACJ,OAAO,EACP,UAAU,EACX,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,YAAY,CAAC;IAAC,UAAU,CAAC,EAAE,KAAK,CAAA;CAAE,GAC7D,OAAO,CAAC,cAAc,CAAC,CAMzB"}
1
+ {"version":3,"file":"grant.d.ts","sourceRoot":"","sources":["../../src/internal/grant.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAIjD,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAyEtE;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,aAAa,EACtB,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,YAAY,GACnE,OAAO,CAAC,cAAc,CAAC,CAsBzB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,EAC3B,IAAI,EACJ,MAAM,EACP,EAAE;IACD,IAAI,CAAC,EAAE,KAAK,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;CACf,GAAG,OAAO,CAWV;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,aAAa,EACtB,EACE,GAAG,EACH,QAAQ,EACR,OAAO,EACP,UAAU,EACX,EAAE;IACD,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,YAAY,CAAA;IACrB,UAAU,CAAC,EAAE,KAAK,CAAA;CACnB,GACA,OAAO,CAAC,cAAc,CAAC,CAOzB"}
@@ -1,42 +1,106 @@
1
- import { parseSpaceTarget, spacePath, toUrl } from './paths.js';
1
+ /*!
2
+ * Copyright (c) 2026 Interop Alliance. All rights reserved.
3
+ */
4
+ /**
5
+ * The delegation primitive shared by `was.grant()` and the `space`/`collection`
6
+ * grant sugar. Maps `GrantOptions` onto `zcapClient.delegate(...)`, normalizing
7
+ * action verbs to uppercase so a lowercase grant (`'get'`) still validates on
8
+ * the server (which matches actions case-sensitively against `'GET'`).
9
+ *
10
+ * An unparented grant that names its Space (`spaceUrl`, which the scoped sugar
11
+ * fills from the handle) is delegated from that **Space's** root capability,
12
+ * with the target carried as an attenuated `invocationTarget`, rather than
13
+ * from the target's own root capability. Both forms grant the same access (the
14
+ * server verifies WAS routes with target attenuation allowed), but only a
15
+ * Space-rooted chain can be revoked -- revocation is Space-scoped, and the
16
+ * endpoint requires the chain to root exactly in the Space (see `revoke.ts`).
17
+ *
18
+ * A bare `was.grant({ target })` without `spaceUrl` is the other mode, kept
19
+ * on purpose: it delegates from the target's own root capability (ezcap's
20
+ * default). It is the shape for a server at the basic conformance level,
21
+ * which may serve fixed collections, or resources alone, with no Space
22
+ * container to root a chain in. Such a grant cannot be revoked through a
23
+ * Space's revocation endpoint; that is a limitation of that conformance
24
+ * level, not of the client.
25
+ */
26
+ import { isValidTarget } from '@interop/zcap';
27
+ import { canonicalSpaceUrl } from './paths.js';
2
28
  import { rootCapabilityId } from './revoke.js';
3
29
  import { ValidationError } from '../errors.js';
4
30
  /**
5
- * The root capability id (`urn:zcap:root:<encoded target>`) of the Space
6
- * containing `target`, or `undefined` when `target` is not a URL beneath this
7
- * server's `/space` tree (e.g. a `/kms` target, or another origin) -- in which
8
- * case the caller lets ezcap default to the target's own root capability.
31
+ * Roots a grant in its Space: the root capability id
32
+ * (`urn:zcap:root:<encoded Space URL>`) to parent it on, after checking that
33
+ * `target` lies at or beneath the Space, and the target to delegate. A chain
34
+ * rooted in one Space cannot delegate a target outside it, and the server
35
+ * would refuse the capability at invocation, so the mismatch is refused here
36
+ * by name.
37
+ *
38
+ * The Space itself may be named in either form. The bare (slash-less) form
39
+ * is accepted as the target, as `parseSpaceTarget` accepts it, and is
40
+ * delegated in canonical form: the server verifies a Space-rooted chain
41
+ * against the canonical Space URL, under which the bare form is not an
42
+ * attenuation of the Space but a sibling of it.
9
43
  *
10
44
  * The id is returned as a string, which `zcapClient.delegate(...)` accepts for a
11
45
  * root parent capability. (Its sibling `request(...)` does not, for a non-`https:`
12
46
  * target -- hence the object form in `revoke.ts`.)
13
47
  *
14
48
  * @param options {object}
15
- * @param options.baseUrl {string} the client's server base URL
16
- * @param options.target {string} the absolute grant target URL
17
- * @returns {string | undefined}
49
+ * @param options.spaceUrl {string} the Space to root the grant in
50
+ * @param options.target {string} the absolute grant target URL
51
+ * @returns {{ parent: string, target: string }}
52
+ * @throws {ValidationError} when `target` is not at or beneath `spaceUrl`,
53
+ * or its path is rewritten by URL normalization (a dot segment)
18
54
  */
19
- function spaceRootCapabilityId({ baseUrl, target }) {
20
- const parsed = parseSpaceTarget({ baseUrl, target });
21
- if (parsed === null) {
22
- return undefined;
55
+ function spaceRooted({ spaceUrl, target }) {
56
+ const canonical = canonicalSpaceUrl(spaceUrl);
57
+ // The check runs against the canonical Space URL, the base the server
58
+ // verifies the chain against, so what passes here is what the server
59
+ // accepts. The bare form is the one exception, matched exactly: as a base
60
+ // it would also admit `{space}?x`, which the server refuses.
61
+ const bare = canonical.slice(0, -1);
62
+ if (target !== bare &&
63
+ !isValidTarget({
64
+ invocationTarget: target,
65
+ baseInvocationTarget: canonical,
66
+ allowTargetAttenuation: true
67
+ })) {
68
+ throw new ValidationError(`Grant target "${target}" is not at or beneath the Space ` +
69
+ `"${canonical}" the grant would be rooted in.`);
70
+ }
71
+ // The prefix check reads the raw string, so a dot segment (`{space}../x`)
72
+ // passes it while naming a path outside the Space once a URL parser
73
+ // normalizes it. The server resolves the request URL that way, so such a
74
+ // target can never be invoked. Refuse a target whose path does not survive
75
+ // normalization unchanged. The query, if any, is left as given.
76
+ const origin = new URL(canonical).origin;
77
+ const rawPath = target.slice(origin.length).replace(/[?#].*$/, '');
78
+ if (target !== bare && new URL(target).pathname !== rawPath) {
79
+ throw new ValidationError(`Grant target "${target}" has a path that URL normalization rewrites ` +
80
+ '(a dot segment or an unencoded character); give the target in its ' +
81
+ 'normalized form.');
23
82
  }
24
- const spaceUrl = toUrl({ baseUrl, path: spacePath(parsed.spaceId) });
25
- return rootCapabilityId(spaceUrl);
83
+ return {
84
+ parent: rootCapabilityId(canonical),
85
+ target: target === bare ? canonical : target
86
+ };
26
87
  }
27
88
  /**
28
89
  * Delegates a capability per `GrantOptions`, returning the signed zcap to hand
29
90
  * off out-of-band. An explicit `capability` (re-delegation of a parent zcap)
30
- * always wins; otherwise a Space-tree target is rooted at its Space, so the
31
- * resulting capability is revocable via `space.revoke()` / `was.revoke()`.
91
+ * always wins; otherwise a grant naming its `spaceUrl` is rooted at that
92
+ * Space, so the resulting capability is revocable via `space.revoke()` /
93
+ * `was.revoke()`; otherwise ezcap roots it at the target's own root
94
+ * capability.
32
95
  *
33
96
  * @param context {ClientContext}
34
97
  * @param options {GrantOptions}
35
98
  * @returns {Promise<IDelegatedZcap>}
36
99
  * @throws {ValidationError} when neither `target` nor `capability` is given,
37
- * so the delegation names nothing to grant
100
+ * so the delegation names nothing to grant; or when `spaceUrl` is given
101
+ * and `target` does not lie at or beneath it
38
102
  */
39
- export async function delegateGrant(context, { to, actions, expires, target, capability }) {
103
+ export async function delegateGrant(context, { to, actions, expires, target, capability, spaceUrl }) {
40
104
  // The scoped sugar always prefills `target`, so this only catches a direct
41
105
  // `was.grant()`. Without either member ezcap has no invocation target and no
42
106
  // parent to take one from, and rejects the call with a bare `TypeError` a
@@ -45,16 +109,15 @@ export async function delegateGrant(context, { to, actions, expires, target, cap
45
109
  throw new ValidationError('A grant needs a `target` (the invocationTarget URL to grant) or a ' +
46
110
  '`capability` (the parent capability to attenuate); neither was given.');
47
111
  }
48
- const parent = capability ??
49
- (target === undefined
50
- ? undefined
51
- : spaceRootCapabilityId({ baseUrl: context.baseUrl, target }));
112
+ const rooted = capability === undefined && target !== undefined && spaceUrl !== undefined
113
+ ? spaceRooted({ spaceUrl, target })
114
+ : { parent: capability, target };
52
115
  return context.zcapClient.delegate({
53
116
  controller: to,
54
- invocationTarget: target,
117
+ invocationTarget: rooted.target,
55
118
  allowedActions: actions.map(action => action.toUpperCase()),
56
119
  expires,
57
- capability: parent
120
+ capability: rooted.parent
58
121
  });
59
122
  }
60
123
  /**
@@ -84,20 +147,23 @@ export function allowsAction({ zcap, action }) {
84
147
  /**
85
148
  * The scoped-grant sugar shared by `Space.grant` and `Collection.grant`:
86
149
  * delegates per `GrantOptions` with the grant `target` prefilled from the
87
- * handle's `path` (and the handle's bound `capability`, if any, as the parent
88
- * for re-delegation). Explicit options win over both prefills.
150
+ * handle's `url`, the rooting `spaceUrl` from the handle's Space, and the
151
+ * handle's bound `capability`, if any, as the parent for re-delegation.
152
+ * Explicit options win over every prefill.
89
153
  *
90
154
  * @param context {ClientContext}
91
155
  * @param options {object}
92
- * @param options.path {string} the handle's path (target fallback)
156
+ * @param options.url {string} the handle's URL (target fallback)
157
+ * @param options.spaceUrl {string} the handle's Space (rooting fallback)
93
158
  * @param options.options {GrantOptions} the caller's grant options
94
159
  * @param [options.capability] {IZcap} the handle's bound capability
95
160
  * @returns {Promise<IDelegatedZcap>}
96
161
  */
97
- export async function delegateGrantAt(context, { path, options, capability }) {
162
+ export async function delegateGrantAt(context, { url, spaceUrl, options, capability }) {
98
163
  return delegateGrant(context, {
99
164
  ...options,
100
- target: options.target ?? toUrl({ baseUrl: context.baseUrl, path }),
165
+ target: options.target ?? url,
166
+ spaceUrl: options.spaceUrl ?? spaceUrl,
101
167
  capability: options.capability ?? capability
102
168
  });
103
169
  }