@macula-io/ts 0.28.0 → 0.30.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.
package/README.md CHANGED
@@ -25,10 +25,9 @@
25
25
  > P-384, which meets CNSA 2.0 and BSI TR-02102; signed requests), over macula-go's
26
26
  > pool. Calls and streams by direct dial, serving (under an org or in a node's
27
27
  > own namespace), publish/subscribe, the DHT and node-served content are
28
- > tested against in-process macula 12 stations on every `npm test`.
29
- > UCAN-gated calls are not here yet; see [Not yet
30
- > implemented](#not-yet-implemented). Releases before 0.18.0 speak the retired
31
- > 10.x wire and cannot reach the current fleet.
28
+ > tested against in-process macula 12 stations on every `npm test`, as are
29
+ > UCAN-gated calls, streams and serving. Releases before 0.18.0 speak the
30
+ > retired 10.x wire and cannot reach the current fleet.
32
31
 
33
32
  ## What is this?
34
33
 
@@ -174,18 +173,13 @@ call and session to JavaScript through a `ThreadSafeFunction`.
174
173
  | A node's own namespace (`ownProcedure`) | ✅ | ✅ | `~<node_id>/<name>`: served and called with no org and no realm key; the node's signature authorizes it |
175
174
  | Streams (`openStream`, `serveStream`) | ✅ | ✅ | Server, client and bidi; a QUIC stream per session, released on every path |
176
175
  | Sealed calls and streams (`confidential`, `kemAdvertise`) | ✅ | ✅ | macula 13's E2E seal scheme 1 through macula-go v0.18.0: a call or stream is sealed to the provider's advertised KEM key whenever its advertisement names one (`"preferred"`, the default), `"required"` never calls a provider that names none, and what could not be kept confidential is a `ConfidentialityError` with its `reason`. A provider names its key only with `kemAdvertise: 1` (off by default: turn it on once every station runs macula 12.11 or later and its callers run macula 13, macula-go 0.18 or this release); it serves `"preferred"` (with `kemAdvertise`, clear calls are taken only while its last keyless advertisement could still be served, then refused `sealed_required`), `"required"` or `"off"`, and each request says `sealed: 0 \| 1`. A provider that cannot open a sealed call twice answers a `ProviderError` of code `sealed_refused`, its `detail` the key id it holds now (hex, or empty when it holds none). `Pool.callReport` (a call's result with its seal report) and `Stream.report()` tell a caller afterwards whether the exchange went sealed, to which provider and key (`sealed: 0 \| 1`, `provider`, `sealKeyId`; macula-go v0.19.0). The report says sealing ran on that exchange, nothing more |
176
+ | UCANs (`NodeKey.ucan`, `Ucan`, `ucan`/`proofs`, `policy`) | ✅ | ✅ | macula 12's D7 through macula-go v0.17.0's C ABI: `NodeKey.ucan(audience, caps, expS, {prf})` mints a token for the node that presents it (`caps` a list of `{with, can}`, each `with` an MRI), and `Ucan.proofId` names a delegated token's parent. `call`, `callReport` and `openStream` present `ucan` with `proofs`, its chain's parents; an empty token, or proofs without one, is refused before anything is sent. `serve` and `serveStream` take `policy`: `Ucan.ucanRequired(issuer)` (a chain rooted at that node's identity key) or `Ucan.realmMemberRequired(keyId, can)` (rooted at that realm key, granting that can). libmacula checks each call and open before it reaches the handler: a refused call is a `ProviderError`, a refused open a `StreamError`, of code `unauthorized` (`malformed_frame` for a proof no token names). Tested against in-process stations: no token, a token for another node and one from another root refused; a direct grant and a one-level delegation served. Since 0.30.0 (macula-go v0.26.0) an issuer did:key over 4,400 characters is refused at once, before it is decoded (macula#87), and an `exp` more than ten years out authorizes nothing (macula#68) |
177
177
  | Publish/subscribe | ✅ | ✅ | Signed publications, delivered once across links |
178
178
  | DHT (`findRecord`, `findRecords`, `findRecordsByType`, `putRecord`) | ✅ | — | Records verified before they are handed on |
179
179
  | Realm proof v2 (`NodeKey.deviceRequestProof`) | ✅ | — | macula-realm#29: a join session over HTTP (`"http"`, the realm's JSON rule) or a membership UCAN over the mesh (`"mesh"`), with its device_info and ttl_seconds, the realm and the procedure signed, and a nonce; the realm's own vector reproduced through macula-go's encoder |
180
180
  | Ownership proof v2 (`NodeKey.ownershipProof`) | ✅ | — | mcl-om#7: the payload's `asserted_by`, binding every field a handler reads, the procedure, the realm, a timestamp and a nonce; a payload carrying `caller` is refused; mcl_om's own vector reproduced, and a payload signed here and delivered through a station accepted by mcl_om 0.32.0's `verify_asserted_by` |
181
181
  | Node-served content (`shareContent`, `unshareContent`, `getContent`) | ✅ | ✅ | macula 12.6.0 (D27): shared on the node's own `~<node_id>/content_v1` and announced; a fetch checks the block, the manifest and every chunk against the content id, bounded, with no realm key; `NotSharedError` / `ContentUnavailableError` |
182
182
 
183
- ## Not yet implemented
184
-
185
- - **UCAN-gated calls and serving.** macula 12 uses post-quantum UCANs
186
- (macula-go#2). Calls carry no token yet, and a gated procedure cannot be
187
- served.
188
-
189
183
  ## Testing
190
184
 
191
185
  ```bash
package/dist/binding.d.ts CHANGED
@@ -23,6 +23,8 @@ interface Native {
23
23
  deviceRequestMessage(publicKey: Uint8Array, realm: Uint8Array, procedure: string, timestampMs: number, nonce: Uint8Array, requestJson: string, rule: number): Uint8Array;
24
24
  keyOwnershipProof(key: Handle, realm: Uint8Array, procedure: string, payloadJson: string): Promise<string>;
25
25
  ownershipProofMessage(identity: Uint8Array, realm: Uint8Array, procedure: string, timestampMs: number, nonce: Uint8Array, fieldsJson: string): Uint8Array;
26
+ keyUcan(key: Handle, audience: Uint8Array, capsJson: string, expS: number, optionsJson: string): Promise<string>;
27
+ ucanProofId(token: string): string;
26
28
  keyFree(key: Handle): void;
27
29
  verify(data: Uint8Array, signature: Uint8Array, publicKey: Uint8Array, profile: string): boolean;
28
30
  signedObjectVerify(label: string, object: Uint8Array, profile: string): string;
@@ -1 +1 @@
1
- {"version":3,"file":"binding.js","sourceRoot":"","sources":["../src/binding.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"binding.js","sourceRoot":"","sources":["../src/binding.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -3,4 +3,5 @@ export { Pool, Subscription, Served, RecordType, type Seed, type PoolOptions, ty
3
3
  export { NotSharedError, ContentUnavailableError, DEFAULT_CONTENT_TIMEOUT_MS, type ContentOptions, type Mcid, } from "./content.js";
4
4
  export { Stream, StreamMode, type StreamEvent, type StreamRequest } from "./stream.js";
5
5
  export { verifySignedObject, type VerifiedObject } from "./signed_object.js";
6
+ export { Ucan, type Capability, type ServePolicy } from "./ucan.js";
6
7
  export { ProviderError, RelayError, StreamError, MaculaError, ConfidentialityError, UnverifiedError, DEFAULT_CALL_TIMEOUT_MS, type Confidential, type ServedConfidential, type SealReport, type JsonValue, type BytesOutput, type Id, } from "./wire.js";
package/dist/index.js CHANGED
@@ -4,5 +4,6 @@ export { Pool, Subscription, Served, RecordType, } from "./pool.js";
4
4
  export { NotSharedError, ContentUnavailableError, DEFAULT_CONTENT_TIMEOUT_MS, } from "./content.js";
5
5
  export { Stream, StreamMode } from "./stream.js";
6
6
  export { verifySignedObject } from "./signed_object.js";
7
+ export { Ucan } from "./ucan.js";
7
8
  export { ProviderError, RelayError, StreamError, MaculaError, ConfidentialityError, UnverifiedError, DEFAULT_CALL_TIMEOUT_MS, } from "./wire.js";
8
9
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,OAAO,EACL,OAAO,EACP,sBAAsB,EACtB,yBAAyB,GAM1B,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,IAAI,EACJ,YAAY,EACZ,MAAM,EACN,UAAU,GAQX,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,cAAc,EACd,uBAAuB,EACvB,0BAA0B,GAG3B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,MAAM,EAAE,UAAU,EAAwC,MAAM,aAAa,CAAC;AACvF,OAAO,EAAE,kBAAkB,EAAuB,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EACL,aAAa,EACb,UAAU,EACV,WAAW,EACX,WAAW,EACX,oBAAoB,EACpB,eAAe,EACf,uBAAuB,GAOxB,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,OAAO,EACL,OAAO,EACP,sBAAsB,EACtB,yBAAyB,GAM1B,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,IAAI,EACJ,YAAY,EACZ,MAAM,EACN,UAAU,GAQX,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,cAAc,EACd,uBAAuB,EACvB,0BAA0B,GAG3B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,MAAM,EAAE,UAAU,EAAwC,MAAM,aAAa,CAAC;AACvF,OAAO,EAAE,kBAAkB,EAAuB,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAqC,MAAM,WAAW,CAAC;AACpE,OAAO,EACL,aAAa,EACb,UAAU,EACV,WAAW,EACX,WAAW,EACX,oBAAoB,EACpB,eAAe,EACf,uBAAuB,GAOxB,MAAM,WAAW,CAAC"}
package/dist/key.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { type Handle } from "./binding.js";
2
2
  import { type Id, type JsonValue } from "./wire.js";
3
+ import type { Capability } from "./ucan.js";
3
4
  /** A crypto profile: "pq_hybrid" (the fleet's) or "pq_pure". */
4
5
  export type Profile = "pq_hybrid" | "pq_pure";
5
6
  /**
@@ -93,6 +94,16 @@ export declare class NodeKey {
93
94
  ownershipProof(realm: Id, procedure: string, payload: {
94
95
  [field: string]: JsonValue;
95
96
  }): Promise<OwnershipProven>;
97
+ /** A UCAN this key grants the node audience (macula's D7): caps until expS
98
+ * (Unix seconds). A token is minted for the node that presents it. `prf`
99
+ * names a delegated token's parent by Ucan.proofId (at most one); `nbf`,
100
+ * `nnc` and `fct` are the token's own fields. */
101
+ ucan(audience: Id, caps: readonly Capability[], expS: number, options?: {
102
+ nbf?: number;
103
+ nnc?: string;
104
+ fct?: JsonValue;
105
+ prf?: readonly string[];
106
+ }): Promise<string>;
96
107
  /** The exact bytes an ownership proof v2 signs for identity (a node_id), at
97
108
  * timestampMs with a 16-byte nonce, over payload's fields: all of it but
98
109
  * "asserted_by" and a text "caller", as a verifier reads a delivered
package/dist/key.js CHANGED
@@ -95,6 +95,28 @@ export class NodeKey {
95
95
  const signed = await native.keyOwnershipProof(this.live(), id32(realm, "realm"), procedure, JSON.stringify(payload));
96
96
  return JSON.parse(signed);
97
97
  }
98
+ /** A UCAN this key grants the node audience (macula's D7): caps until expS
99
+ * (Unix seconds). A token is minted for the node that presents it. `prf`
100
+ * names a delegated token's parent by Ucan.proofId (at most one); `nbf`,
101
+ * `nnc` and `fct` are the token's own fields. */
102
+ async ucan(audience, caps, expS, options = {}) {
103
+ if (!Number.isSafeInteger(expS))
104
+ throw new TypeError("@macula-io/ts: a UCAN's expiry is whole Unix seconds");
105
+ const o = {};
106
+ if (options.nbf !== undefined) {
107
+ // NaN and Infinity would go out as null, which mints no not-before at all.
108
+ if (!Number.isSafeInteger(options.nbf))
109
+ throw new TypeError("@macula-io/ts: a UCAN's nbf is whole Unix seconds");
110
+ o.nbf = options.nbf;
111
+ }
112
+ if (options.nnc !== undefined)
113
+ o.nnc = options.nnc;
114
+ if (options.fct !== undefined)
115
+ o.fct = options.fct;
116
+ if (options.prf !== undefined && options.prf.length > 0)
117
+ o.prf = options.prf;
118
+ return native.keyUcan(this.live(), id32(audience, "audience"), JSON.stringify(caps), expS, Object.keys(o).length === 0 ? "" : JSON.stringify(o));
119
+ }
98
120
  /** The exact bytes an ownership proof v2 signs for identity (a node_id), at
99
121
  * timestampMs with a 16-byte nonce, over payload's fields: all of it but
100
122
  * "asserted_by" and a text "caller", as a verifier reads a delivered
package/dist/key.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"key.js","sourceRoot":"","sources":["../src/key.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,6EAA6E;AAC7E,4EAA4E;AAC5E,cAAc;AACd,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAe,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,IAAI,EAA2B,MAAM,WAAW,CAAC;AAa/D,4DAA4D;AAC5D,MAAM,CAAC,MAAM,sBAAsB,GAAG,2BAA2B,CAAC;AAClE,6EAA6E;AAC7E,MAAM,CAAC,MAAM,yBAAyB,GAAG,8BAA8B,CAAC;AAoBxE,MAAM,UAAU,GAAG,CAAC,IAAuB,EAAU,EAAE,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAElF,MAAM,OAAO,OAAO;IACU,MAAM;IAAlC,YAA4B,MAAqB;sBAArB,MAAM;IAAkB,CAAC;IAErD;iCAC6B;IAC7B,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,GAAY,WAAW;QAClD,OAAO,IAAI,OAAO,CAAC,MAAM,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;IACxD,CAAC;IAED;0DACsD;IACtD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAY,EAAE,OAAO,GAAY,WAAW;QAC5D,OAAO,IAAI,OAAO,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,8EAA8E;IAC9E,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,IAAY,EAAE,OAAO,GAAY,WAAW;QACpE,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC5C,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,OAAO,GAAG,CAAC;QACb,CAAC;QACD,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,0DAA0D;IAC1D,KAAK,CAAC,IAAI,CAAC,IAAY;QACrB,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED,iCAAiC;IACjC,MAAM;QACJ,OAAO,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,oCAAoC;IACpC,SAAS;QACP,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED,6CAA6C;IAC7C,SAAS;QACP,OAAO,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,yBAAyB;IACzB,OAAO;QACL,OAAO,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAY,CAAC;IACnD,CAAC;IAED,2BAA2B;IAC3B,KAAK,CAAC,IAAI,CAAC,IAAgB;QACzB,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,kBAAkB,CAAC,KAAS,EAAE,SAAiB,EAAE,OAAuC,EAC5F,IAAuB;QACvB,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EACpH,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAuB,CAAC;IACjD,CAAC;IAED;4DACwD;IACxD,MAAM,CAAC,oBAAoB,CAAC,SAAqB,EAAE,KAAS,EAAE,SAAiB,EAAE,WAAmB,EAAE,KAAiB,EACrH,OAAuC,EAAE,IAAuB;QAChE,OAAO,MAAM,CAAC,oBAAoB,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAC/F,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,cAAc,CAAC,KAAS,EAAE,SAAiB,EAAE,OAAuC;QACxF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;QACrH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAoB,CAAC;IAC/C,CAAC;IAED;;;2DAGuD;IACvD,MAAM,CAAC,qBAAqB,CAAC,QAAY,EAAE,KAAS,EAAE,SAAiB,EAAE,WAAmB,EAAE,KAAiB,EAC7G,OAAuC;QACvC,OAAO,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EACjH,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7B,CAAC;IAED;;;4DAGwD;IACxD,MAAM,CAAC,MAAM,CAAC,IAAgB,EAAE,SAAqB,EAAE,SAAqB,EAAE,OAAO,GAAY,WAAW;QAC1G,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC;IAED,2DAA2D;IAC3D,IAAI;QACF,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI;YAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,gBAAgB;IAChB,IAAI;QACF,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QAC/E,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF"}
1
+ {"version":3,"file":"key.js","sourceRoot":"","sources":["../src/key.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,6EAA6E;AAC7E,4EAA4E;AAC5E,cAAc;AACd,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAe,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,IAAI,EAA2B,MAAM,WAAW,CAAC;AAc/D,4DAA4D;AAC5D,MAAM,CAAC,MAAM,sBAAsB,GAAG,2BAA2B,CAAC;AAClE,6EAA6E;AAC7E,MAAM,CAAC,MAAM,yBAAyB,GAAG,8BAA8B,CAAC;AAoBxE,MAAM,UAAU,GAAG,CAAC,IAAuB,EAAU,EAAE,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAElF,MAAM,OAAO,OAAO;IACU,MAAM;IAAlC,YAA4B,MAAqB;sBAArB,MAAM;IAAkB,CAAC;IAErD;iCAC6B;IAC7B,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,GAAY,WAAW;QAClD,OAAO,IAAI,OAAO,CAAC,MAAM,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;IACxD,CAAC;IAED;0DACsD;IACtD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAY,EAAE,OAAO,GAAY,WAAW;QAC5D,OAAO,IAAI,OAAO,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,8EAA8E;IAC9E,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,IAAY,EAAE,OAAO,GAAY,WAAW;QACpE,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC5C,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,OAAO,GAAG,CAAC;QACb,CAAC;QACD,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,0DAA0D;IAC1D,KAAK,CAAC,IAAI,CAAC,IAAY;QACrB,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED,iCAAiC;IACjC,MAAM;QACJ,OAAO,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,oCAAoC;IACpC,SAAS;QACP,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED,6CAA6C;IAC7C,SAAS;QACP,OAAO,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,yBAAyB;IACzB,OAAO;QACL,OAAO,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAY,CAAC;IACnD,CAAC;IAED,2BAA2B;IAC3B,KAAK,CAAC,IAAI,CAAC,IAAgB;QACzB,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,kBAAkB,CAAC,KAAS,EAAE,SAAiB,EAAE,OAAuC,EAC5F,IAAuB;QACvB,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EACpH,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAuB,CAAC;IACjD,CAAC;IAED;4DACwD;IACxD,MAAM,CAAC,oBAAoB,CAAC,SAAqB,EAAE,KAAS,EAAE,SAAiB,EAAE,WAAmB,EAAE,KAAiB,EACrH,OAAuC,EAAE,IAAuB;QAChE,OAAO,MAAM,CAAC,oBAAoB,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAC/F,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,cAAc,CAAC,KAAS,EAAE,SAAiB,EAAE,OAAuC;QACxF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;QACrH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAoB,CAAC;IAC/C,CAAC;IAED;;;qDAGiD;IACjD,KAAK,CAAC,IAAI,CAAC,QAAY,EAAE,IAA2B,EAAE,IAAY,EAChE,OAAO,GAA6E,EAAE;QACtF,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,SAAS,CAAC,sDAAsD,CAAC,CAAC;QAC7G,MAAM,CAAC,GAA6E,EAAE,CAAC;QACvF,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YAC9B,2EAA2E;YAC3E,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC;gBAAE,MAAM,IAAI,SAAS,CAAC,mDAAmD,CAAC,CAAC;YACjH,CAAC,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;QACtB,CAAC;QACD,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS;YAAE,CAAC,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;QACnD,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS;YAAE,CAAC,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;QACnD,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC;YAAE,CAAC,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;QAC7E,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EACvF,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED;;;2DAGuD;IACvD,MAAM,CAAC,qBAAqB,CAAC,QAAY,EAAE,KAAS,EAAE,SAAiB,EAAE,WAAmB,EAAE,KAAiB,EAC7G,OAAuC;QACvC,OAAO,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EACjH,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7B,CAAC;IAED;;;4DAGwD;IACxD,MAAM,CAAC,MAAM,CAAC,IAAgB,EAAE,SAAqB,EAAE,SAAqB,EAAE,OAAO,GAAY,WAAW;QAC1G,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC;IAED,2DAA2D;IAC3D,IAAI;QACF,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI;YAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,gBAAgB;IAChB,IAAI;QACF,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QAC/E,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF"}
package/dist/pool.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { type Handle } from "./binding.js";
2
2
  import { NodeKey } from "./key.js";
3
3
  import { Stream, StreamMode, type StreamRequest } from "./stream.js";
4
+ import type { ServePolicy } from "./ucan.js";
4
5
  import { type ContentOptions, type Mcid } from "./content.js";
5
6
  import { type Confidential, type SealReport, type ServedConfidential, type BytesOutput, type Id, type JsonValue } from "./wire.js";
6
7
  /** A station to link to, pinned by the node_id it must prove. */
@@ -129,10 +130,15 @@ export declare class Pool {
129
130
  * (`confidential` "preferred", the default); "required" never calls a
130
131
  * provider that names none. A provider's ERROR is thrown as a
131
132
  * ProviderError, a station's relay error as a RelayError, a call that
132
- * could not be kept confidential as a ConfidentialityError. */
133
+ * could not be kept confidential as a ConfidentialityError. `ucan` presents
134
+ * a token minted for this node to a gated procedure, with `proofs`, its
135
+ * chain's parents; a gated provider that refuses it answers a ProviderError
136
+ * of code "unauthorized". An open procedure ignores any token. */
133
137
  call(realm: Id, procedure: string, payload?: JsonValue, options?: {
134
138
  provider?: Id;
135
139
  confidential?: Confidential;
140
+ ucan?: string;
141
+ proofs?: readonly string[];
136
142
  timeoutMs?: number;
137
143
  bytes?: BytesOutput;
138
144
  }): Promise<JsonValue>;
@@ -143,6 +149,8 @@ export declare class Pool {
143
149
  callReport(realm: Id, procedure: string, payload?: JsonValue, options?: {
144
150
  provider?: Id;
145
151
  confidential?: Confidential;
152
+ ucan?: string;
153
+ proofs?: readonly string[];
146
154
  timeoutMs?: number;
147
155
  bytes?: BytesOutput;
148
156
  }): Promise<{
@@ -175,26 +183,35 @@ export declare class Pool {
175
183
  * (sealed_required), so a caller older than macula 13, macula-go 0.18 or
176
184
  * this release cannot call it after that; without kemAdvertise it names
177
185
  * no key and serves in the clear. "required" refuses every clear call
178
- * (sealed_required) and needs kemAdvertise; "off" serves in the clear. */
186
+ * (sealed_required) and needs kemAdvertise; "off" serves in the clear.
187
+ * `policy` (Ucan.ucanRequired, Ucan.realmMemberRequired) serves only
188
+ * callers whose UCAN chain it accepts; a refused call never reaches the
189
+ * handler. */
179
190
  serve(realm: Id, procedure: string, handler: (request: Request) => JsonValue | Promise<JsonValue>, options?: {
180
191
  confidential?: ServedConfidential;
192
+ policy?: ServePolicy;
181
193
  bytes?: BytesOutput;
182
194
  }): Promise<Served>;
183
195
  /** Serves procedure in realm as a stream of mode: handler drives each
184
196
  * session. The stream is closed when the handler returns without ending
185
197
  * it, aborted with code error when it throws, and released either way.
186
- * `confidential` as serve's. */
198
+ * `confidential` and `policy` as serve's. */
187
199
  serveStream(realm: Id, procedure: string, mode: StreamMode, handler: (stream: Stream, request: StreamRequest) => void | Promise<void>, options?: {
188
200
  confidential?: ServedConfidential;
201
+ policy?: ServePolicy;
189
202
  bytes?: BytesOutput;
190
203
  }): Promise<Served>;
191
204
  /** Opens a stream of mode on procedure in realm at a provider, by direct
192
205
  * dial, sealed as call is (`confidential`). A refusal arrives on its first
193
206
  * recv(); a stream that could not be kept confidential is a
194
- * ConfidentialityError here. */
207
+ * ConfidentialityError here. `ucan` and `proofs` as call's; a gated
208
+ * provider's refusal arrives on the first recv() as a StreamError of code
209
+ * "unauthorized". */
195
210
  openStream(realm: Id, procedure: string, mode: StreamMode, payload?: JsonValue, options?: {
196
211
  provider?: Id;
197
212
  confidential?: Confidential;
213
+ ucan?: string;
214
+ proofs?: readonly string[];
198
215
  deadlineMs?: number;
199
216
  timeoutMs?: number;
200
217
  bytes?: BytesOutput;
package/dist/pool.js CHANGED
@@ -10,12 +10,21 @@ import { Stream } from "./stream.js";
10
10
  import { DEFAULT_CONTENT_TIMEOUT_MS, mcid50 } from "./content.js";
11
11
  import { DEFAULT_CALL_TIMEOUT_MS, MaculaError, bytesOut, hex, sealReport, id32, } from "./wire.js";
12
12
  /** A call's or a stream's options, as macula_pool_call_opts takes them. */
13
- function callOptionsJson(provider, confidential, report) {
13
+ function callOptionsJson(provider, confidential, presented, report) {
14
14
  const o = {};
15
15
  if (provider !== undefined)
16
16
  o.provider = hex(id32(provider, "provider"));
17
17
  if (confidential !== undefined)
18
18
  o.confidential = confidential;
19
+ if (presented.ucan === "")
20
+ throw new TypeError("@macula-io/ts: a UCAN is never empty; leave it out for none");
21
+ if (presented.ucan !== undefined)
22
+ o.ucan = presented.ucan;
23
+ if (presented.proofs !== undefined && presented.proofs.length > 0) {
24
+ if (presented.ucan === undefined)
25
+ throw new TypeError("@macula-io/ts: proofs go with the UCAN they prove");
26
+ o.proofs = presented.proofs;
27
+ }
19
28
  // Handed on as given: callReport sends 1, and openStream hands on whatever
20
29
  // it was given, so the ABI refuses a report on a stream open rather than it
21
30
  // vanishing here. call sends none.
@@ -24,8 +33,13 @@ function callOptionsJson(provider, confidential, report) {
24
33
  return JSON.stringify(o);
25
34
  }
26
35
  /** A served procedure's options, as macula_pool_serve_opts takes them. */
27
- function serveOptionsJson(confidential) {
28
- return JSON.stringify(confidential === undefined ? {} : { confidential });
36
+ function serveOptionsJson(confidential, policy) {
37
+ const o = {};
38
+ if (confidential !== undefined)
39
+ o.confidential = confidential;
40
+ if (policy !== undefined)
41
+ o.policy = policy;
42
+ return JSON.stringify(o);
29
43
  }
30
44
  /** macula 12's record types. */
31
45
  export var RecordType;
@@ -124,10 +138,13 @@ export class Pool {
124
138
  * (`confidential` "preferred", the default); "required" never calls a
125
139
  * provider that names none. A provider's ERROR is thrown as a
126
140
  * ProviderError, a station's relay error as a RelayError, a call that
127
- * could not be kept confidential as a ConfidentialityError. */
141
+ * could not be kept confidential as a ConfidentialityError. `ucan` presents
142
+ * a token minted for this node to a gated procedure, with `proofs`, its
143
+ * chain's parents; a gated provider that refuses it answers a ProviderError
144
+ * of code "unauthorized". An open procedure ignores any token. */
128
145
  async call(realm, procedure, payload = {}, options = {}) {
129
146
  bytesOut(null, options.bytes);
130
- const result = await native.poolCall(this.live(), id32(realm, "realm"), procedure, JSON.stringify(payload), callOptionsJson(options.provider, options.confidential), options.timeoutMs ?? DEFAULT_CALL_TIMEOUT_MS);
147
+ const result = await native.poolCall(this.live(), id32(realm, "realm"), procedure, JSON.stringify(payload), callOptionsJson(options.provider, options.confidential, options), options.timeoutMs ?? DEFAULT_CALL_TIMEOUT_MS);
131
148
  return bytesOut(JSON.parse(result), options.bytes);
132
149
  }
133
150
  /** call, with the caller's seal report: whether the exchange behind the
@@ -136,7 +153,7 @@ export class Pool {
136
153
  * sealed_refused and one reseal, the report names the reseal's key. */
137
154
  async callReport(realm, procedure, payload = {}, options = {}) {
138
155
  bytesOut(null, options.bytes);
139
- const reply = JSON.parse(await native.poolCall(this.live(), id32(realm, "realm"), procedure, JSON.stringify(payload), callOptionsJson(options.provider, options.confidential, 1), options.timeoutMs ?? DEFAULT_CALL_TIMEOUT_MS));
156
+ const reply = JSON.parse(await native.poolCall(this.live(), id32(realm, "realm"), procedure, JSON.stringify(payload), callOptionsJson(options.provider, options.confidential, options, 1), options.timeoutMs ?? DEFAULT_CALL_TIMEOUT_MS));
140
157
  return { result: bytesOut(reply.result, options.bytes), report: sealReport(reply) };
141
158
  }
142
159
  /** The procedure's trusted providers, freshest first. */
@@ -177,10 +194,13 @@ export class Pool {
177
194
  * (sealed_required), so a caller older than macula 13, macula-go 0.18 or
178
195
  * this release cannot call it after that; without kemAdvertise it names
179
196
  * no key and serves in the clear. "required" refuses every clear call
180
- * (sealed_required) and needs kemAdvertise; "off" serves in the clear. */
197
+ * (sealed_required) and needs kemAdvertise; "off" serves in the clear.
198
+ * `policy` (Ucan.ucanRequired, Ucan.realmMemberRequired) serves only
199
+ * callers whose UCAN chain it accepts; a refused call never reaches the
200
+ * handler. */
181
201
  async serve(realm, procedure, handler, options = {}) {
182
202
  bytesOut(null, options.bytes);
183
- const handle = await native.poolServe(this.live(), id32(realm, "realm"), procedure, serveOptionsJson(options.confidential), (d) => {
203
+ const handle = await native.poolServe(this.live(), id32(realm, "realm"), procedure, serveOptionsJson(options.confidential, options.policy), (d) => {
184
204
  if (d.kind !== "request")
185
205
  return;
186
206
  void answer(d, handler, options.bytes);
@@ -190,10 +210,10 @@ export class Pool {
190
210
  /** Serves procedure in realm as a stream of mode: handler drives each
191
211
  * session. The stream is closed when the handler returns without ending
192
212
  * it, aborted with code error when it throws, and released either way.
193
- * `confidential` as serve's. */
213
+ * `confidential` and `policy` as serve's. */
194
214
  async serveStream(realm, procedure, mode, handler, options = {}) {
195
215
  bytesOut(null, options.bytes);
196
- const handle = await native.poolServeStream(this.live(), id32(realm, "realm"), procedure, mode, serveOptionsJson(options.confidential), (d) => {
216
+ const handle = await native.poolServeStream(this.live(), id32(realm, "realm"), procedure, mode, serveOptionsJson(options.confidential, options.policy), (d) => {
197
217
  if (d.kind !== "request")
198
218
  return;
199
219
  void runStream(new Stream(d.handle, options.bytes), handler);
@@ -203,10 +223,12 @@ export class Pool {
203
223
  /** Opens a stream of mode on procedure in realm at a provider, by direct
204
224
  * dial, sealed as call is (`confidential`). A refusal arrives on its first
205
225
  * recv(); a stream that could not be kept confidential is a
206
- * ConfidentialityError here. */
226
+ * ConfidentialityError here. `ucan` and `proofs` as call's; a gated
227
+ * provider's refusal arrives on the first recv() as a StreamError of code
228
+ * "unauthorized". */
207
229
  async openStream(realm, procedure, mode, payload = {}, options = {}) {
208
230
  bytesOut(null, options.bytes);
209
- const handle = await native.poolOpenStream(this.live(), id32(realm, "realm"), procedure, mode, JSON.stringify(payload), callOptionsJson(options.provider, options.confidential, options.report), options.deadlineMs ?? 0, options.timeoutMs ?? DEFAULT_CALL_TIMEOUT_MS);
231
+ const handle = await native.poolOpenStream(this.live(), id32(realm, "realm"), procedure, mode, JSON.stringify(payload), callOptionsJson(options.provider, options.confidential, options, options.report), options.deadlineMs ?? 0, options.timeoutMs ?? DEFAULT_CALL_TIMEOUT_MS);
210
232
  return new Stream(handle, options.bytes);
211
233
  }
212
234
  /** The verified record under key, or null when there is none. */
package/dist/pool.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"pool.js","sourceRoot":"","sources":["../src/pool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pool.js","sourceRoot":"","sources":["../src/pool.ts"],"names":[],"mappings":"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"}
package/dist/ucan.d.ts ADDED
@@ -0,0 +1,29 @@
1
+ import { type Id } from "./wire.js";
2
+ /** One capability a token grants: `with` an MRI (mri:realm:<realm>,
3
+ * mri:org:<realm>/<org>, mri:proc:<realm>/<org>/<name>), `can` an ability. */
4
+ export interface Capability {
5
+ readonly with: string;
6
+ readonly can: string;
7
+ }
8
+ /** Who may call or open a served procedure: a UCAN chain rooted at a node's
9
+ * identity key (ucanRequired), or at a realm key granting a can
10
+ * (realmMemberRequired). A refused call is a ProviderError of code
11
+ * "unauthorized" ("malformed_frame" for a proof no token names), a refused
12
+ * open a StreamError of the same code. */
13
+ export type ServePolicy = {
14
+ readonly kind: "ucan_required";
15
+ readonly issuer: string;
16
+ } | {
17
+ readonly kind: "realm_member_required";
18
+ readonly key_id: string;
19
+ readonly can: string;
20
+ };
21
+ export declare const Ucan: {
22
+ /** The proof id a child token's `prf` names token by: lowercase hex SHA-384
23
+ * of its text. */
24
+ proofId(token: string): string;
25
+ /** A chain rooted at the identity key of the node issuer names. */
26
+ ucanRequired(issuer: Id): ServePolicy;
27
+ /** A chain rooted at the realm key whose id keyId names, granting can. */
28
+ realmMemberRequired(keyId: Id, can: string): ServePolicy;
29
+ };
package/dist/ucan.js ADDED
@@ -0,0 +1,25 @@
1
+ // UCANs (macula 12's D7): a token is minted with NodeKey.ucan for the node that
2
+ // presents it; a gated procedure serves only callers whose chain a ServePolicy
3
+ // accepts. libmacula checks each call and open before it reaches TypeScript.
4
+ import { native } from "./binding.js";
5
+ import { hex, id32 } from "./wire.js";
6
+ export const Ucan = {
7
+ /** The proof id a child token's `prf` names token by: lowercase hex SHA-384
8
+ * of its text. */
9
+ proofId(token) {
10
+ if (token === "")
11
+ throw new TypeError("@macula-io/ts: a UCAN is never empty");
12
+ return native.ucanProofId(token);
13
+ },
14
+ /** A chain rooted at the identity key of the node issuer names. */
15
+ ucanRequired(issuer) {
16
+ return { kind: "ucan_required", issuer: hex(id32(issuer, "issuer")) };
17
+ },
18
+ /** A chain rooted at the realm key whose id keyId names, granting can. */
19
+ realmMemberRequired(keyId, can) {
20
+ if (can === "")
21
+ throw new TypeError("@macula-io/ts: a realm member policy names a can");
22
+ return { kind: "realm_member_required", key_id: hex(id32(keyId, "realm key id")), can };
23
+ },
24
+ };
25
+ //# sourceMappingURL=ucan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ucan.js","sourceRoot":"","sources":["../src/ucan.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,+EAA+E;AAC/E,6EAA6E;AAC7E,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAW,MAAM,WAAW,CAAC;AAkB/C,MAAM,CAAC,MAAM,IAAI,GAAG;IAClB;sBACkB;IAClB,OAAO,CAAC,KAAa;QACnB,IAAI,KAAK,KAAK,EAAE;YAAE,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;QAC9E,OAAO,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,mEAAmE;IACnE,YAAY,CAAC,MAAU;QACrB,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC;IACxE,CAAC;IAED,0EAA0E;IAC1E,mBAAmB,CAAC,KAAS,EAAE,GAAW;QACxC,IAAI,GAAG,KAAK,EAAE;YAAE,MAAM,IAAI,SAAS,CAAC,kDAAkD,CAAC,CAAC;QACxF,OAAO,EAAE,IAAI,EAAE,uBAAuB,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC;IAC1F,CAAC;CACF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@macula-io/ts",
3
- "version": "0.28.0",
3
+ "version": "0.30.0",
4
4
  "description": "TypeScript SDK for the Macula mesh, over macula-go's shared C ABI",
5
5
  "license": "Apache-2.0",
6
6
  "keywords": [
index ac63aa4..2e29636 100644
Binary file