@misofm/sdk 0.15.0 → 0.15.1
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/dist/read/config.d.ts +2 -0
- package/dist/read/config.d.ts.map +1 -1
- package/dist/read/config.js +1 -0
- package/dist/read/config.js.map +1 -1
- package/dist/read/wallet.d.ts +14 -2
- package/dist/read/wallet.d.ts.map +1 -1
- package/dist/read/wallet.js +216 -17
- package/dist/read/wallet.js.map +1 -1
- package/package.json +1 -1
- package/src/read/config.ts +3 -0
- package/src/read/wallet.ts +265 -16
package/dist/read/config.d.ts
CHANGED
|
@@ -8,6 +8,8 @@ export interface ProtocolIds {
|
|
|
8
8
|
pressing: string;
|
|
9
9
|
/** `miso_record` package — the exact owner/type namespace for `record::Record`. */
|
|
10
10
|
record: string;
|
|
11
|
+
/** `vault` — shared custody for protocol admin capabilities. */
|
|
12
|
+
vault: string;
|
|
11
13
|
/** `release_cover_art` — the release cover extension. */
|
|
12
14
|
releaseCoverArt: string;
|
|
13
15
|
/** `composition_credits` / `recording_credits` / `release_credits` extensions. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/read/config.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAGnE,MAAM,MAAM,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;AAE5C,qFAAqF;AACrF,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAI9D;AAED,wFAAwF;AACxF,MAAM,WAAW,WAAW;IAC1B,2EAA2E;IAC3E,QAAQ,EAAE,MAAM,CAAC;IACjB,mFAAmF;IACnF,MAAM,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,eAAe,EAAE,MAAM,CAAC;IACxB,kFAAkF;IAClF,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,mFAAmF;IACnF,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,gFAAgF;AAChF,MAAM,WAAW,QAAQ;IACvB,sEAAsE;IACtE,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,qEAAqE;IACrE,UAAU,EAAE,cAAc,CAAC;IAC3B,QAAQ,EAAE,WAAW,CAAC;IACtB,KAAK,EAAE,QAAQ,CAAC;IAChB,0DAA0D;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB,4EAA4E;IAC5E,mBAAmB,EAAE,MAAM,CAAC;IAC5B;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,aAAa,EAAE,SAAS,YAAY,EAAE,CAAC;CACxC;AAED,oFAAoF;AACpF,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,4FAA4F;AAC5F,MAAM,MAAM,mBAAmB,GAAG,OAAO,CACvC,IAAI,CAAC,UAAU,EAAE,SAAS,GAAG,YAAY,GAAG,qBAAqB,GAAG,YAAY,GAAG,eAAe,CAAC,CACpG,CAAC;AAEF,iFAAiF;AACjF,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,GAAE,mBAAwB,GAAG,UAAU,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/read/config.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAGnE,MAAM,MAAM,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;AAE5C,qFAAqF;AACrF,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAI9D;AAED,wFAAwF;AACxF,MAAM,WAAW,WAAW;IAC1B,2EAA2E;IAC3E,QAAQ,EAAE,MAAM,CAAC;IACjB,mFAAmF;IACnF,MAAM,EAAE,MAAM,CAAC;IACf,gEAAgE;IAChE,KAAK,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,eAAe,EAAE,MAAM,CAAC;IACxB,kFAAkF;IAClF,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,mFAAmF;IACnF,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,gFAAgF;AAChF,MAAM,WAAW,QAAQ;IACvB,sEAAsE;IACtE,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,qEAAqE;IACrE,UAAU,EAAE,cAAc,CAAC;IAC3B,QAAQ,EAAE,WAAW,CAAC;IACtB,KAAK,EAAE,QAAQ,CAAC;IAChB,0DAA0D;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB,4EAA4E;IAC5E,mBAAmB,EAAE,MAAM,CAAC;IAC5B;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,aAAa,EAAE,SAAS,YAAY,EAAE,CAAC;CACxC;AAED,oFAAoF;AACpF,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,4FAA4F;AAC5F,MAAM,MAAM,mBAAmB,GAAG,OAAO,CACvC,IAAI,CAAC,UAAU,EAAE,SAAS,GAAG,YAAY,GAAG,qBAAqB,GAAG,YAAY,GAAG,eAAe,CAAC,CACpG,CAAC;AAEF,iFAAiF;AACjF,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,GAAE,mBAAwB,GAAG,UAAU,CA2B5F"}
|
package/dist/read/config.js
CHANGED
|
@@ -28,6 +28,7 @@ export function misoConfig(network, overrides = {}) {
|
|
|
28
28
|
protocol: {
|
|
29
29
|
pressing: platform.packages.pressing,
|
|
30
30
|
record: platform.packages.record,
|
|
31
|
+
vault: platform.packages.vault,
|
|
31
32
|
releaseCoverArt: platform.packages.releaseCoverArt,
|
|
32
33
|
compositionCredits: platform.packages.compositionCredits,
|
|
33
34
|
recordingCredits: platform.packages.recordingCredits,
|
package/dist/read/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/read/config.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,sCAAsC;AACtC,EAAE;AACF,iFAAiF;AACjF,+EAA+E;AAC/E,yEAAyE;AACzE,mFAAmF;AACnF,2CAA2C;AAC3C,EAAE;AACF,+EAA+E;AAC/E,iFAAiF;AACjF,gCAAgC;AAGhC,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAI9D,qFAAqF;AACrF,MAAM,UAAU,WAAW,CAAC,KAAyB;IACnD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACjE,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,MAAM,IAAI,KAAK,CAAC,0CAA0C,KAAK,IAAI,CAAC,CAAC;AACvE,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/read/config.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,sCAAsC;AACtC,EAAE;AACF,iFAAiF;AACjF,+EAA+E;AAC/E,yEAAyE;AACzE,mFAAmF;AACnF,2CAA2C;AAC3C,EAAE;AACF,+EAA+E;AAC/E,iFAAiF;AACjF,gCAAgC;AAGhC,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAI9D,qFAAqF;AACrF,MAAM,UAAU,WAAW,CAAC,KAAyB;IACnD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACjE,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,MAAM,IAAI,KAAK,CAAC,0CAA0C,KAAK,IAAI,CAAC,CAAC;AACvE,CAAC;AAgED,iFAAiF;AACjF,MAAM,UAAU,UAAU,CAAC,OAAgB,EAAE,YAAiC,EAAE;IAC9E,MAAM,QAAQ,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,MAAM,GAAe;QACzB,OAAO;QACP,UAAU,EAAE,QAAQ,CAAC,QAAQ;QAC7B,QAAQ,EAAE;YACR,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,QAAQ;YACpC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM;YAChC,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK;YAC9B,eAAe,EAAE,QAAQ,CAAC,QAAQ,CAAC,eAAe;YAClD,kBAAkB,EAAE,QAAQ,CAAC,QAAQ,CAAC,kBAAkB;YACxD,gBAAgB,EAAE,QAAQ,CAAC,QAAQ,CAAC,gBAAgB;YACpD,cAAc,EAAE,QAAQ,CAAC,QAAQ,CAAC,cAAc;YAChD,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM;SACjC;QACD,KAAK,EAAE;YACL,WAAW,EACT,sFAAsF;YACxF,WAAW,EAAE,CAAC;SACf;QACD,OAAO,EAAE,iCAAiC;QAC1C,UAAU,EAAE,wCAAwC;QACpD,mBAAmB,EAAE,gDAAgD;QACrE,UAAU,EAAE,6BAA6B;QACzC,aAAa,EAAE,EAAE;KAClB,CAAC;IACF,OAAO,EAAE,GAAG,MAAM,EAAE,GAAG,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;AACrD,CAAC;AAED,sEAAsE;AACtE,SAAS,cAAc,CAAmB,CAAI;IAC5C,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAe,CAAC;AAChG,CAAC"}
|
package/dist/read/wallet.d.ts
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
import type { MisoClient } from "./client.ts";
|
|
2
2
|
import type { Balance, OwnedParty, OwnedRecord, OwnedWork, Ownership, PendingMembership, WorkDetail } from "./types.ts";
|
|
3
|
+
type WorkAdminCapType = {
|
|
4
|
+
kind: "composition";
|
|
5
|
+
shareType: string;
|
|
6
|
+
} | {
|
|
7
|
+
kind: "recording";
|
|
8
|
+
shareType: string;
|
|
9
|
+
} | {
|
|
10
|
+
kind: "release";
|
|
11
|
+
};
|
|
12
|
+
/** @internal Exact nested-type classifier used by the vault-aware catalog read. */
|
|
13
|
+
export declare function classifyVaultedWorkAdminCapType(type: string, vaultPackageId: string, misoPackageId: string): WorkAdminCapType | null;
|
|
3
14
|
/**
|
|
4
15
|
* The records `owner` holds. Ownership is DIRECT — a record is an address-owned
|
|
5
16
|
* `<miso_record>::record::Record` with no pressing/license/receipt intermediary.
|
|
@@ -27,14 +38,14 @@ export declare function getPendingMemberships(client: MisoClient, owner: string)
|
|
|
27
38
|
* Every work the wallet administers, keyed by its ADMIN CAP id (the studio
|
|
28
39
|
* catalog's routing unit — caps are what control means here).
|
|
29
40
|
*
|
|
30
|
-
* Three transports, one answer: cap discovery is gRPC; one aliased GraphQL
|
|
41
|
+
* Three transports, one answer: direct or vaulted cap discovery is gRPC; one aliased GraphQL
|
|
31
42
|
* request maps every share type to its work address (gRPC cannot ask "which
|
|
32
43
|
* object has type X"); one gRPC batch loads all the work contents. Releases skip
|
|
33
44
|
* the GraphQL hop entirely — `ReleaseAdminCap` is not generic and carries
|
|
34
45
|
* `release_id` directly.
|
|
35
46
|
*/
|
|
36
47
|
export declare function getOwnedWorks(client: MisoClient, owner: string): Promise<OwnedWork[]>;
|
|
37
|
-
/** Classify a cap by its on-chain type, then resolve
|
|
48
|
+
/** Classify a direct or vaulted cap by its on-chain type, then resolve its work. */
|
|
38
49
|
export declare function getWorkByCap(client: MisoClient, capId: string): Promise<WorkDetail | null>;
|
|
39
50
|
/**
|
|
40
51
|
* A wallet's spendable balance in one currency. `core.getBalance` totals coin
|
|
@@ -60,4 +71,5 @@ export declare function ownsParty(client: MisoClient, address: string, partyId:
|
|
|
60
71
|
* fetch regardless.
|
|
61
72
|
*/
|
|
62
73
|
export declare function ownsRecord(client: MisoClient, address: string, recordId: string): Promise<Ownership>;
|
|
74
|
+
export {};
|
|
63
75
|
//# sourceMappingURL=wallet.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../src/read/wallet.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../src/read/wallet.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAG9C,OAAO,KAAK,EACV,OAAO,EACP,UAAU,EACV,WAAW,EACX,SAAS,EACT,SAAS,EACT,iBAAiB,EACjB,UAAU,EACX,MAAM,YAAY,CAAC;AAUpB,KAAK,gBAAgB,GACjB;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC;AAsDxB,mFAAmF;AACnF,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,MAAM,GACpB,gBAAgB,GAAG,IAAI,CAmBzB;AAyBD;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CA+B/F;AAID;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CA2B9F;AAED;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAuB9B;AAoHD;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAwD3F;AAED,oFAAoF;AACpF,wBAAsB,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CA2HhG;AAID;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CASzG;AAWD;;;;;;;;GAQG;AACH,wBAAsB,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAOxG;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAM1G"}
|
package/dist/read/wallet.js
CHANGED
|
@@ -9,9 +9,10 @@
|
|
|
9
9
|
// dance (owned caps over gRPC → share types over GraphQL → work contents over
|
|
10
10
|
// gRPC) is exactly the sort of thing that should exist once in the SDK rather
|
|
11
11
|
// than be reimplemented by every browser, Worker, server, or native client.
|
|
12
|
-
import { normalizeSuiAddress } from "@mysten/sui/utils";
|
|
12
|
+
import { normalizeStructTag, normalizeSuiAddress, parseStructTag } from "@mysten/sui/utils";
|
|
13
13
|
import { contracts as networkContracts, getCompositionByShareType, getOwnedReleaseAdminCaps, getRecordingByShareType, getReleaseById, isNotFound, } from "@misonetwork/sdk";
|
|
14
14
|
import { int, u64 } from "./internal/scalars.js";
|
|
15
|
+
import * as vaultContract from "../contracts/vault/vault.js";
|
|
15
16
|
import { getRecordingTitles, getWorkAddressesByShareTypes, getWorksByIds } from "./works.js";
|
|
16
17
|
/**
|
|
17
18
|
* Page cap on the owned-objects scan, so a wallet holding a huge unrelated object
|
|
@@ -19,6 +20,61 @@ import { getRecordingTitles, getWorkAddressesByShareTypes, getWorksByIds } from
|
|
|
19
20
|
* library.
|
|
20
21
|
*/
|
|
21
22
|
const MAX_PAGES = 20;
|
|
23
|
+
function classifyWorkAdminCapType(type, misoPackageId) {
|
|
24
|
+
let tag;
|
|
25
|
+
try {
|
|
26
|
+
tag = parseStructTag(type);
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
if (tag.address !== misoPackageId)
|
|
32
|
+
return null;
|
|
33
|
+
if (tag.module === "composition" &&
|
|
34
|
+
tag.name === "CompositionAdminCap" &&
|
|
35
|
+
tag.typeParams.length === 1) {
|
|
36
|
+
const share = tag.typeParams[0];
|
|
37
|
+
return {
|
|
38
|
+
kind: "composition",
|
|
39
|
+
shareType: typeof share === "string" ? share : normalizeStructTag(share),
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
if (tag.module === "recording" &&
|
|
43
|
+
tag.name === "RecordingAdminCap" &&
|
|
44
|
+
tag.typeParams.length === 1) {
|
|
45
|
+
const share = tag.typeParams[0];
|
|
46
|
+
return {
|
|
47
|
+
kind: "recording",
|
|
48
|
+
shareType: typeof share === "string" ? share : normalizeStructTag(share),
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
if (tag.module === "release" &&
|
|
52
|
+
tag.name === "ReleaseAdminCap" &&
|
|
53
|
+
tag.typeParams.length === 0) {
|
|
54
|
+
return { kind: "release" };
|
|
55
|
+
}
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
/** @internal Exact nested-type classifier used by the vault-aware catalog read. */
|
|
59
|
+
export function classifyVaultedWorkAdminCapType(type, vaultPackageId, misoPackageId) {
|
|
60
|
+
let tag;
|
|
61
|
+
try {
|
|
62
|
+
tag = parseStructTag(type);
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
if (tag.address !== vaultPackageId ||
|
|
68
|
+
tag.module !== "vault" ||
|
|
69
|
+
tag.name !== "VaultAdminCap" ||
|
|
70
|
+
tag.typeParams.length !== 1) {
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
const wrapped = tag.typeParams[0];
|
|
74
|
+
return wrapped && typeof wrapped !== "string"
|
|
75
|
+
? classifyWorkAdminCapType(normalizeStructTag(wrapped), misoPackageId)
|
|
76
|
+
: null;
|
|
77
|
+
}
|
|
22
78
|
// ── Records ──────────────────────────────────────────────────────────────────
|
|
23
79
|
function coerceNumber(v) {
|
|
24
80
|
if (typeof v === "number" && Number.isFinite(v))
|
|
@@ -150,20 +206,110 @@ export async function getPendingMemberships(client, owner) {
|
|
|
150
206
|
* not store the work's id — only its share type.
|
|
151
207
|
*/
|
|
152
208
|
async function ownedGenericCaps(client, owner, capType) {
|
|
153
|
-
const { objects } = await client.protocol.core.listOwnedObjects({ owner, type: capType, limit: 50 });
|
|
154
209
|
const caps = [];
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
210
|
+
let cursor = null;
|
|
211
|
+
for (let page = 0; page < MAX_PAGES; page++) {
|
|
212
|
+
const res = await client.protocol.core.listOwnedObjects({ owner, type: capType, cursor, limit: 50 });
|
|
213
|
+
for (const obj of res.objects) {
|
|
214
|
+
const match = /<(.+)>$/.exec(obj.type);
|
|
215
|
+
if (match?.[1])
|
|
216
|
+
caps.push({ id: obj.objectId, shareType: match[1] });
|
|
217
|
+
}
|
|
218
|
+
if (!res.hasNextPage)
|
|
219
|
+
break;
|
|
220
|
+
cursor = res.cursor;
|
|
221
|
+
if (!cursor)
|
|
222
|
+
break;
|
|
159
223
|
}
|
|
160
224
|
return caps;
|
|
161
225
|
}
|
|
226
|
+
/**
|
|
227
|
+
* Discover owner-held VaultAdminCaps whose wrapped capability administers a
|
|
228
|
+
* catalog work. PressingAdminCap is deliberately ignored: Catalog is a work
|
|
229
|
+
* surface (composition / recording / release), not a sale-management surface.
|
|
230
|
+
*/
|
|
231
|
+
async function ownedVaultedWorkCaps(client, owner) {
|
|
232
|
+
const out = { compositions: [], recordings: [], releases: [] };
|
|
233
|
+
const vaultPackageId = client.config.protocol.vault;
|
|
234
|
+
const misoPackageId = client.config.deployment.miso;
|
|
235
|
+
const capType = `${vaultPackageId}::vault::VaultAdminCap`;
|
|
236
|
+
let cursor = null;
|
|
237
|
+
for (let page = 0; page < MAX_PAGES; page++) {
|
|
238
|
+
const res = await client.protocol.core.listOwnedObjects({
|
|
239
|
+
owner,
|
|
240
|
+
type: capType,
|
|
241
|
+
cursor,
|
|
242
|
+
limit: 50,
|
|
243
|
+
include: { content: true },
|
|
244
|
+
});
|
|
245
|
+
for (const object of res.objects) {
|
|
246
|
+
if (!object.content)
|
|
247
|
+
continue;
|
|
248
|
+
const work = classifyVaultedWorkAdminCapType(object.type, vaultPackageId, misoPackageId);
|
|
249
|
+
if (!work)
|
|
250
|
+
continue;
|
|
251
|
+
try {
|
|
252
|
+
const { vault_id: vaultId } = vaultContract.VaultAdminCap.parse(object.content);
|
|
253
|
+
if (work.kind === "composition") {
|
|
254
|
+
out.compositions.push({ id: object.objectId, shareType: work.shareType, vaultId });
|
|
255
|
+
}
|
|
256
|
+
else if (work.kind === "recording") {
|
|
257
|
+
out.recordings.push({ id: object.objectId, shareType: work.shareType, vaultId });
|
|
258
|
+
}
|
|
259
|
+
else {
|
|
260
|
+
out.releases.push({ id: object.objectId, vaultId });
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
catch {
|
|
264
|
+
// A malformed object under the configured vault namespace is not usable
|
|
265
|
+
// authority and should not hide otherwise valid catalog entries.
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
if (!res.hasNextPage)
|
|
269
|
+
break;
|
|
270
|
+
cursor = res.cursor;
|
|
271
|
+
if (!cursor)
|
|
272
|
+
break;
|
|
273
|
+
}
|
|
274
|
+
return out;
|
|
275
|
+
}
|
|
276
|
+
/** Read the ReleaseAdminCap wrapped by each shared release vault. */
|
|
277
|
+
async function resolveVaultedReleaseCaps(client, caps) {
|
|
278
|
+
if (caps.length === 0)
|
|
279
|
+
return [];
|
|
280
|
+
const releaseCapType = `${client.config.deployment.miso}::release::ReleaseAdminCap`;
|
|
281
|
+
const vaultType = normalizeStructTag(`${client.config.protocol.vault}::vault::Vault<${releaseCapType}>`);
|
|
282
|
+
const { objects } = await client.protocol.core.getObjects({
|
|
283
|
+
objectIds: caps.map((cap) => cap.vaultId),
|
|
284
|
+
include: { content: true },
|
|
285
|
+
});
|
|
286
|
+
const releasesByVault = new Map();
|
|
287
|
+
for (const object of objects) {
|
|
288
|
+
if (object instanceof Error || !object.content)
|
|
289
|
+
continue;
|
|
290
|
+
try {
|
|
291
|
+
if (normalizeStructTag(object.type) !== vaultType)
|
|
292
|
+
continue;
|
|
293
|
+
const vault = vaultContract.Vault(networkContracts.release.ReleaseAdminCap).parse(object.content);
|
|
294
|
+
const releaseId = vault.cap.value?.release_id;
|
|
295
|
+
if (releaseId)
|
|
296
|
+
releasesByVault.set(object.objectId, releaseId);
|
|
297
|
+
}
|
|
298
|
+
catch {
|
|
299
|
+
// Batch catalog discovery is best-effort per authority, matching the
|
|
300
|
+
// existing direct-cap path's treatment of unreadable work objects.
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
return caps.flatMap((cap) => {
|
|
304
|
+
const releaseId = releasesByVault.get(cap.vaultId);
|
|
305
|
+
return releaseId ? [{ id: cap.id, releaseId }] : [];
|
|
306
|
+
});
|
|
307
|
+
}
|
|
162
308
|
/**
|
|
163
309
|
* Every work the wallet administers, keyed by its ADMIN CAP id (the studio
|
|
164
310
|
* catalog's routing unit — caps are what control means here).
|
|
165
311
|
*
|
|
166
|
-
* Three transports, one answer: cap discovery is gRPC; one aliased GraphQL
|
|
312
|
+
* Three transports, one answer: direct or vaulted cap discovery is gRPC; one aliased GraphQL
|
|
167
313
|
* request maps every share type to its work address (gRPC cannot ask "which
|
|
168
314
|
* object has type X"); one gRPC batch loads all the work contents. Releases skip
|
|
169
315
|
* the GraphQL hop entirely — `ReleaseAdminCap` is not generic and carries
|
|
@@ -171,11 +317,16 @@ async function ownedGenericCaps(client, owner, capType) {
|
|
|
171
317
|
*/
|
|
172
318
|
export async function getOwnedWorks(client, owner) {
|
|
173
319
|
const miso = client.config.deployment.miso;
|
|
174
|
-
const [
|
|
320
|
+
const [directCompCaps, directRecCaps, directRelCaps, vaulted] = await Promise.all([
|
|
175
321
|
ownedGenericCaps(client, owner, `${miso}::composition::CompositionAdminCap`),
|
|
176
322
|
ownedGenericCaps(client, owner, `${miso}::recording::RecordingAdminCap`),
|
|
177
323
|
getOwnedReleaseAdminCaps(client.protocol, owner, miso),
|
|
324
|
+
ownedVaultedWorkCaps(client, owner),
|
|
178
325
|
]);
|
|
326
|
+
const vaultedRelCaps = await resolveVaultedReleaseCaps(client, vaulted.releases);
|
|
327
|
+
const compCaps = [...directCompCaps, ...vaulted.compositions];
|
|
328
|
+
const recCaps = [...directRecCaps, ...vaulted.recordings];
|
|
329
|
+
const relCaps = [...directRelCaps, ...vaultedRelCaps];
|
|
179
330
|
const addresses = await getWorkAddressesByShareTypes(client.graphql, { compositions: compCaps.map((c) => c.shareType), recordings: recCaps.map((c) => c.shareType) }, miso);
|
|
180
331
|
const works = await getWorksByIds(client.protocol, {
|
|
181
332
|
compositions: Object.values(addresses.compositions).filter((id) => id !== undefined),
|
|
@@ -211,23 +362,29 @@ export async function getOwnedWorks(client, owner) {
|
|
|
211
362
|
});
|
|
212
363
|
return [...comps, ...recs, ...rels];
|
|
213
364
|
}
|
|
214
|
-
/** Classify a cap by its on-chain type, then resolve
|
|
365
|
+
/** Classify a direct or vaulted cap by its on-chain type, then resolve its work. */
|
|
215
366
|
export async function getWorkByCap(client, capId) {
|
|
216
367
|
const miso = client.config.deployment.miso;
|
|
217
368
|
let type;
|
|
218
369
|
let json;
|
|
370
|
+
let content;
|
|
219
371
|
try {
|
|
220
|
-
const { object } = await client.protocol.core.getObject({
|
|
372
|
+
const { object } = await client.protocol.core.getObject({
|
|
373
|
+
objectId: capId,
|
|
374
|
+
include: { json: true, content: true },
|
|
375
|
+
});
|
|
221
376
|
type = object.type;
|
|
222
377
|
json = (object.json ?? null);
|
|
378
|
+
content = object.content;
|
|
223
379
|
}
|
|
224
380
|
catch (e) {
|
|
225
381
|
if (isNotFound(e))
|
|
226
382
|
return null;
|
|
227
383
|
throw e;
|
|
228
384
|
}
|
|
229
|
-
|
|
230
|
-
|
|
385
|
+
const direct = classifyWorkAdminCapType(type, miso);
|
|
386
|
+
if (direct?.kind === "composition") {
|
|
387
|
+
const { shareType } = direct;
|
|
231
388
|
const c = await getCompositionByShareType(client.protocol, client.graphql, shareType, miso);
|
|
232
389
|
return {
|
|
233
390
|
capId,
|
|
@@ -239,8 +396,8 @@ export async function getWorkByCap(client, capId) {
|
|
|
239
396
|
shareType,
|
|
240
397
|
};
|
|
241
398
|
}
|
|
242
|
-
if (
|
|
243
|
-
const shareType =
|
|
399
|
+
if (direct?.kind === "recording") {
|
|
400
|
+
const { shareType } = direct;
|
|
244
401
|
const r = await getRecordingByShareType(client.protocol, client.graphql, shareType, miso);
|
|
245
402
|
const titles = await getRecordingTitles(client.protocol, client.graphql, [r.id], miso);
|
|
246
403
|
return {
|
|
@@ -252,7 +409,7 @@ export async function getWorkByCap(client, capId) {
|
|
|
252
409
|
shareType,
|
|
253
410
|
};
|
|
254
411
|
}
|
|
255
|
-
if (
|
|
412
|
+
if (direct?.kind === "release") {
|
|
256
413
|
const releaseId = typeof json?.release_id === "string" ? json.release_id : null;
|
|
257
414
|
if (!releaseId)
|
|
258
415
|
throw new Error(`Release cap ${capId} carries no release id`);
|
|
@@ -267,8 +424,50 @@ export async function getWorkByCap(client, capId) {
|
|
|
267
424
|
trackCount: r.tracks.length,
|
|
268
425
|
};
|
|
269
426
|
}
|
|
270
|
-
|
|
271
|
-
|
|
427
|
+
const vaulted = classifyVaultedWorkAdminCapType(type, client.config.protocol.vault, miso);
|
|
428
|
+
if (!vaulted || !content) {
|
|
429
|
+
// A real object, but not a supported work authority — "no such work",
|
|
430
|
+
// not a transport failure. PressingAdminCap intentionally lands here.
|
|
431
|
+
return null;
|
|
432
|
+
}
|
|
433
|
+
const { vault_id: vaultId } = vaultContract.VaultAdminCap.parse(content);
|
|
434
|
+
if (vaulted.kind === "composition") {
|
|
435
|
+
const c = await getCompositionByShareType(client.protocol, client.graphql, vaulted.shareType, miso);
|
|
436
|
+
return {
|
|
437
|
+
capId,
|
|
438
|
+
kind: "composition",
|
|
439
|
+
workId: c.id,
|
|
440
|
+
title: c.title,
|
|
441
|
+
state: c.state.type,
|
|
442
|
+
royaltyRateBps: int(c.royaltyRate.value),
|
|
443
|
+
shareType: vaulted.shareType,
|
|
444
|
+
};
|
|
445
|
+
}
|
|
446
|
+
if (vaulted.kind === "recording") {
|
|
447
|
+
const r = await getRecordingByShareType(client.protocol, client.graphql, vaulted.shareType, miso);
|
|
448
|
+
const titles = await getRecordingTitles(client.protocol, client.graphql, [r.id], miso);
|
|
449
|
+
return {
|
|
450
|
+
capId,
|
|
451
|
+
kind: "recording",
|
|
452
|
+
workId: r.id,
|
|
453
|
+
title: titles[r.id] ?? "Untitled",
|
|
454
|
+
state: r.state.type,
|
|
455
|
+
shareType: vaulted.shareType,
|
|
456
|
+
};
|
|
457
|
+
}
|
|
458
|
+
const [releaseCap] = await resolveVaultedReleaseCaps(client, [{ id: capId, vaultId }]);
|
|
459
|
+
if (!releaseCap)
|
|
460
|
+
throw new Error(`Release vault ${vaultId} carries no release admin cap`);
|
|
461
|
+
const r = await getReleaseById(client.protocol, releaseCap.releaseId);
|
|
462
|
+
return {
|
|
463
|
+
capId,
|
|
464
|
+
kind: "release",
|
|
465
|
+
workId: r.id,
|
|
466
|
+
title: r.title,
|
|
467
|
+
state: r.state.type,
|
|
468
|
+
discCount: r.tracks.length > 0 ? 1 : 0,
|
|
469
|
+
trackCount: r.tracks.length,
|
|
470
|
+
};
|
|
272
471
|
}
|
|
273
472
|
// ── Balance ──────────────────────────────────────────────────────────────────
|
|
274
473
|
/**
|
package/dist/read/wallet.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../src/read/wallet.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../src/read/wallet.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@misofm/sdk",
|
|
3
|
-
"version": "0.15.
|
|
3
|
+
"version": "0.15.1",
|
|
4
4
|
"packageManager": "bun@1.4.0",
|
|
5
5
|
"description": "Complete client SDK for the Miso platform on Sui — high-level reads, pressings, listings, records, and work publishing.",
|
|
6
6
|
"license": "Apache-2.0",
|
package/src/read/config.ts
CHANGED
|
@@ -29,6 +29,8 @@ export interface ProtocolIds {
|
|
|
29
29
|
pressing: string;
|
|
30
30
|
/** `miso_record` package — the exact owner/type namespace for `record::Record`. */
|
|
31
31
|
record: string;
|
|
32
|
+
/** `vault` — shared custody for protocol admin capabilities. */
|
|
33
|
+
vault: string;
|
|
32
34
|
/** `release_cover_art` — the release cover extension. */
|
|
33
35
|
releaseCoverArt: string;
|
|
34
36
|
/** `composition_credits` / `recording_credits` / `release_credits` extensions. */
|
|
@@ -92,6 +94,7 @@ export function misoConfig(network: Network, overrides: MisoConfigOverrides = {}
|
|
|
92
94
|
protocol: {
|
|
93
95
|
pressing: platform.packages.pressing,
|
|
94
96
|
record: platform.packages.record,
|
|
97
|
+
vault: platform.packages.vault,
|
|
95
98
|
releaseCoverArt: platform.packages.releaseCoverArt,
|
|
96
99
|
compositionCredits: platform.packages.compositionCredits,
|
|
97
100
|
recordingCredits: platform.packages.recordingCredits,
|
package/src/read/wallet.ts
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
// gRPC) is exactly the sort of thing that should exist once in the SDK rather
|
|
11
11
|
// than be reimplemented by every browser, Worker, server, or native client.
|
|
12
12
|
|
|
13
|
-
import { normalizeSuiAddress } from "@mysten/sui/utils";
|
|
13
|
+
import { normalizeStructTag, normalizeSuiAddress, parseStructTag } from "@mysten/sui/utils";
|
|
14
14
|
import {
|
|
15
15
|
contracts as networkContracts,
|
|
16
16
|
getCompositionByShareType,
|
|
@@ -21,6 +21,7 @@ import {
|
|
|
21
21
|
} from "@misonetwork/sdk";
|
|
22
22
|
import type { MisoClient } from "./client.ts";
|
|
23
23
|
import { int, u64 } from "./internal/scalars.ts";
|
|
24
|
+
import * as vaultContract from "../contracts/vault/vault.ts";
|
|
24
25
|
import type {
|
|
25
26
|
Balance,
|
|
26
27
|
OwnedParty,
|
|
@@ -39,6 +40,89 @@ import { getRecordingTitles, getWorkAddressesByShareTypes, getWorksByIds } from
|
|
|
39
40
|
*/
|
|
40
41
|
const MAX_PAGES = 20;
|
|
41
42
|
|
|
43
|
+
type WorkAdminCapType =
|
|
44
|
+
| { kind: "composition"; shareType: string }
|
|
45
|
+
| { kind: "recording"; shareType: string }
|
|
46
|
+
| { kind: "release" };
|
|
47
|
+
|
|
48
|
+
type VaultedGenericCap = {
|
|
49
|
+
id: string;
|
|
50
|
+
shareType: string;
|
|
51
|
+
vaultId: string;
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
type VaultedReleaseCap = {
|
|
55
|
+
id: string;
|
|
56
|
+
vaultId: string;
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
function classifyWorkAdminCapType(type: string, misoPackageId: string): WorkAdminCapType | null {
|
|
60
|
+
let tag: ReturnType<typeof parseStructTag>;
|
|
61
|
+
try {
|
|
62
|
+
tag = parseStructTag(type);
|
|
63
|
+
} catch {
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
if (tag.address !== misoPackageId) return null;
|
|
67
|
+
|
|
68
|
+
if (
|
|
69
|
+
tag.module === "composition" &&
|
|
70
|
+
tag.name === "CompositionAdminCap" &&
|
|
71
|
+
tag.typeParams.length === 1
|
|
72
|
+
) {
|
|
73
|
+
const share = tag.typeParams[0]!;
|
|
74
|
+
return {
|
|
75
|
+
kind: "composition",
|
|
76
|
+
shareType: typeof share === "string" ? share : normalizeStructTag(share),
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
if (
|
|
80
|
+
tag.module === "recording" &&
|
|
81
|
+
tag.name === "RecordingAdminCap" &&
|
|
82
|
+
tag.typeParams.length === 1
|
|
83
|
+
) {
|
|
84
|
+
const share = tag.typeParams[0]!;
|
|
85
|
+
return {
|
|
86
|
+
kind: "recording",
|
|
87
|
+
shareType: typeof share === "string" ? share : normalizeStructTag(share),
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
if (
|
|
91
|
+
tag.module === "release" &&
|
|
92
|
+
tag.name === "ReleaseAdminCap" &&
|
|
93
|
+
tag.typeParams.length === 0
|
|
94
|
+
) {
|
|
95
|
+
return { kind: "release" };
|
|
96
|
+
}
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/** @internal Exact nested-type classifier used by the vault-aware catalog read. */
|
|
101
|
+
export function classifyVaultedWorkAdminCapType(
|
|
102
|
+
type: string,
|
|
103
|
+
vaultPackageId: string,
|
|
104
|
+
misoPackageId: string,
|
|
105
|
+
): WorkAdminCapType | null {
|
|
106
|
+
let tag: ReturnType<typeof parseStructTag>;
|
|
107
|
+
try {
|
|
108
|
+
tag = parseStructTag(type);
|
|
109
|
+
} catch {
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
if (
|
|
113
|
+
tag.address !== vaultPackageId ||
|
|
114
|
+
tag.module !== "vault" ||
|
|
115
|
+
tag.name !== "VaultAdminCap" ||
|
|
116
|
+
tag.typeParams.length !== 1
|
|
117
|
+
) {
|
|
118
|
+
return null;
|
|
119
|
+
}
|
|
120
|
+
const wrapped = tag.typeParams[0];
|
|
121
|
+
return wrapped && typeof wrapped !== "string"
|
|
122
|
+
? classifyWorkAdminCapType(normalizeStructTag(wrapped), misoPackageId)
|
|
123
|
+
: null;
|
|
124
|
+
}
|
|
125
|
+
|
|
42
126
|
// ── Records ──────────────────────────────────────────────────────────────────
|
|
43
127
|
|
|
44
128
|
function coerceNumber(v: unknown): number | null {
|
|
@@ -183,20 +267,116 @@ export async function getPendingMemberships(
|
|
|
183
267
|
* not store the work's id — only its share type.
|
|
184
268
|
*/
|
|
185
269
|
async function ownedGenericCaps(client: MisoClient, owner: string, capType: string) {
|
|
186
|
-
const { objects } = await client.protocol.core.listOwnedObjects({ owner, type: capType, limit: 50 });
|
|
187
270
|
const caps: { id: string; shareType: string }[] = [];
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
271
|
+
let cursor: string | null = null;
|
|
272
|
+
for (let page = 0; page < MAX_PAGES; page++) {
|
|
273
|
+
const res: Awaited<ReturnType<typeof client.protocol.core.listOwnedObjects>> =
|
|
274
|
+
await client.protocol.core.listOwnedObjects({ owner, type: capType, cursor, limit: 50 });
|
|
275
|
+
for (const obj of res.objects) {
|
|
276
|
+
const match = /<(.+)>$/.exec(obj.type);
|
|
277
|
+
if (match?.[1]) caps.push({ id: obj.objectId, shareType: match[1] });
|
|
278
|
+
}
|
|
279
|
+
if (!res.hasNextPage) break;
|
|
280
|
+
cursor = res.cursor;
|
|
281
|
+
if (!cursor) break;
|
|
191
282
|
}
|
|
192
283
|
return caps;
|
|
193
284
|
}
|
|
194
285
|
|
|
286
|
+
/**
|
|
287
|
+
* Discover owner-held VaultAdminCaps whose wrapped capability administers a
|
|
288
|
+
* catalog work. PressingAdminCap is deliberately ignored: Catalog is a work
|
|
289
|
+
* surface (composition / recording / release), not a sale-management surface.
|
|
290
|
+
*/
|
|
291
|
+
async function ownedVaultedWorkCaps(client: MisoClient, owner: string) {
|
|
292
|
+
const out: {
|
|
293
|
+
compositions: VaultedGenericCap[];
|
|
294
|
+
recordings: VaultedGenericCap[];
|
|
295
|
+
releases: VaultedReleaseCap[];
|
|
296
|
+
} = { compositions: [], recordings: [], releases: [] };
|
|
297
|
+
const vaultPackageId = client.config.protocol.vault;
|
|
298
|
+
const misoPackageId = client.config.deployment.miso;
|
|
299
|
+
const capType = `${vaultPackageId}::vault::VaultAdminCap`;
|
|
300
|
+
let cursor: string | null = null;
|
|
301
|
+
|
|
302
|
+
for (let page = 0; page < MAX_PAGES; page++) {
|
|
303
|
+
const res: Awaited<ReturnType<typeof client.protocol.core.listOwnedObjects>> =
|
|
304
|
+
await client.protocol.core.listOwnedObjects({
|
|
305
|
+
owner,
|
|
306
|
+
type: capType,
|
|
307
|
+
cursor,
|
|
308
|
+
limit: 50,
|
|
309
|
+
include: { content: true },
|
|
310
|
+
});
|
|
311
|
+
for (const object of res.objects) {
|
|
312
|
+
if (!object.content) continue;
|
|
313
|
+
const work = classifyVaultedWorkAdminCapType(
|
|
314
|
+
object.type,
|
|
315
|
+
vaultPackageId,
|
|
316
|
+
misoPackageId,
|
|
317
|
+
);
|
|
318
|
+
if (!work) continue;
|
|
319
|
+
try {
|
|
320
|
+
const { vault_id: vaultId } = vaultContract.VaultAdminCap.parse(object.content);
|
|
321
|
+
if (work.kind === "composition") {
|
|
322
|
+
out.compositions.push({ id: object.objectId, shareType: work.shareType, vaultId });
|
|
323
|
+
} else if (work.kind === "recording") {
|
|
324
|
+
out.recordings.push({ id: object.objectId, shareType: work.shareType, vaultId });
|
|
325
|
+
} else {
|
|
326
|
+
out.releases.push({ id: object.objectId, vaultId });
|
|
327
|
+
}
|
|
328
|
+
} catch {
|
|
329
|
+
// A malformed object under the configured vault namespace is not usable
|
|
330
|
+
// authority and should not hide otherwise valid catalog entries.
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
if (!res.hasNextPage) break;
|
|
334
|
+
cursor = res.cursor;
|
|
335
|
+
if (!cursor) break;
|
|
336
|
+
}
|
|
337
|
+
return out;
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
/** Read the ReleaseAdminCap wrapped by each shared release vault. */
|
|
341
|
+
async function resolveVaultedReleaseCaps(
|
|
342
|
+
client: MisoClient,
|
|
343
|
+
caps: readonly VaultedReleaseCap[],
|
|
344
|
+
): Promise<{ id: string; releaseId: string }[]> {
|
|
345
|
+
if (caps.length === 0) return [];
|
|
346
|
+
const releaseCapType = `${client.config.deployment.miso}::release::ReleaseAdminCap`;
|
|
347
|
+
const vaultType = normalizeStructTag(
|
|
348
|
+
`${client.config.protocol.vault}::vault::Vault<${releaseCapType}>`,
|
|
349
|
+
);
|
|
350
|
+
const { objects } = await client.protocol.core.getObjects({
|
|
351
|
+
objectIds: caps.map((cap) => cap.vaultId),
|
|
352
|
+
include: { content: true },
|
|
353
|
+
});
|
|
354
|
+
const releasesByVault = new Map<string, string>();
|
|
355
|
+
for (const object of objects) {
|
|
356
|
+
if (object instanceof Error || !object.content) continue;
|
|
357
|
+
try {
|
|
358
|
+
if (normalizeStructTag(object.type) !== vaultType) continue;
|
|
359
|
+
const vault = vaultContract.Vault(networkContracts.release.ReleaseAdminCap).parse(
|
|
360
|
+
object.content,
|
|
361
|
+
);
|
|
362
|
+
const releaseId = vault.cap.value?.release_id;
|
|
363
|
+
if (releaseId) releasesByVault.set(object.objectId, releaseId);
|
|
364
|
+
} catch {
|
|
365
|
+
// Batch catalog discovery is best-effort per authority, matching the
|
|
366
|
+
// existing direct-cap path's treatment of unreadable work objects.
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
return caps.flatMap((cap) => {
|
|
370
|
+
const releaseId = releasesByVault.get(cap.vaultId);
|
|
371
|
+
return releaseId ? [{ id: cap.id, releaseId }] : [];
|
|
372
|
+
});
|
|
373
|
+
}
|
|
374
|
+
|
|
195
375
|
/**
|
|
196
376
|
* Every work the wallet administers, keyed by its ADMIN CAP id (the studio
|
|
197
377
|
* catalog's routing unit — caps are what control means here).
|
|
198
378
|
*
|
|
199
|
-
* Three transports, one answer: cap discovery is gRPC; one aliased GraphQL
|
|
379
|
+
* Three transports, one answer: direct or vaulted cap discovery is gRPC; one aliased GraphQL
|
|
200
380
|
* request maps every share type to its work address (gRPC cannot ask "which
|
|
201
381
|
* object has type X"); one gRPC batch loads all the work contents. Releases skip
|
|
202
382
|
* the GraphQL hop entirely — `ReleaseAdminCap` is not generic and carries
|
|
@@ -205,11 +385,16 @@ async function ownedGenericCaps(client: MisoClient, owner: string, capType: stri
|
|
|
205
385
|
export async function getOwnedWorks(client: MisoClient, owner: string): Promise<OwnedWork[]> {
|
|
206
386
|
const miso = client.config.deployment.miso;
|
|
207
387
|
|
|
208
|
-
const [
|
|
388
|
+
const [directCompCaps, directRecCaps, directRelCaps, vaulted] = await Promise.all([
|
|
209
389
|
ownedGenericCaps(client, owner, `${miso}::composition::CompositionAdminCap`),
|
|
210
390
|
ownedGenericCaps(client, owner, `${miso}::recording::RecordingAdminCap`),
|
|
211
391
|
getOwnedReleaseAdminCaps(client.protocol, owner, miso),
|
|
392
|
+
ownedVaultedWorkCaps(client, owner),
|
|
212
393
|
]);
|
|
394
|
+
const vaultedRelCaps = await resolveVaultedReleaseCaps(client, vaulted.releases);
|
|
395
|
+
const compCaps = [...directCompCaps, ...vaulted.compositions];
|
|
396
|
+
const recCaps = [...directRecCaps, ...vaulted.recordings];
|
|
397
|
+
const relCaps = [...directRelCaps, ...vaultedRelCaps];
|
|
213
398
|
|
|
214
399
|
const addresses = await getWorkAddressesByShareTypes(
|
|
215
400
|
client.graphql,
|
|
@@ -255,23 +440,29 @@ export async function getOwnedWorks(client: MisoClient, owner: string): Promise<
|
|
|
255
440
|
return [...comps, ...recs, ...rels];
|
|
256
441
|
}
|
|
257
442
|
|
|
258
|
-
/** Classify a cap by its on-chain type, then resolve
|
|
443
|
+
/** Classify a direct or vaulted cap by its on-chain type, then resolve its work. */
|
|
259
444
|
export async function getWorkByCap(client: MisoClient, capId: string): Promise<WorkDetail | null> {
|
|
260
445
|
const miso = client.config.deployment.miso;
|
|
261
446
|
|
|
262
447
|
let type: string;
|
|
263
448
|
let json: Record<string, unknown> | null;
|
|
449
|
+
let content: Uint8Array | undefined;
|
|
264
450
|
try {
|
|
265
|
-
const { object } = await client.protocol.core.getObject({
|
|
451
|
+
const { object } = await client.protocol.core.getObject({
|
|
452
|
+
objectId: capId,
|
|
453
|
+
include: { json: true, content: true },
|
|
454
|
+
});
|
|
266
455
|
type = object.type;
|
|
267
456
|
json = (object.json ?? null) as Record<string, unknown> | null;
|
|
457
|
+
content = object.content;
|
|
268
458
|
} catch (e) {
|
|
269
459
|
if (isNotFound(e)) return null;
|
|
270
460
|
throw e;
|
|
271
461
|
}
|
|
272
462
|
|
|
273
|
-
|
|
274
|
-
|
|
463
|
+
const direct = classifyWorkAdminCapType(type, miso);
|
|
464
|
+
if (direct?.kind === "composition") {
|
|
465
|
+
const { shareType } = direct;
|
|
275
466
|
const c = await getCompositionByShareType(client.protocol, client.graphql, shareType, miso);
|
|
276
467
|
return {
|
|
277
468
|
capId,
|
|
@@ -284,8 +475,8 @@ export async function getWorkByCap(client: MisoClient, capId: string): Promise<W
|
|
|
284
475
|
};
|
|
285
476
|
}
|
|
286
477
|
|
|
287
|
-
if (
|
|
288
|
-
const shareType =
|
|
478
|
+
if (direct?.kind === "recording") {
|
|
479
|
+
const { shareType } = direct;
|
|
289
480
|
const r = await getRecordingByShareType(client.protocol, client.graphql, shareType, miso);
|
|
290
481
|
const titles = await getRecordingTitles(client.protocol, client.graphql, [r.id], miso);
|
|
291
482
|
return {
|
|
@@ -298,7 +489,7 @@ export async function getWorkByCap(client: MisoClient, capId: string): Promise<W
|
|
|
298
489
|
};
|
|
299
490
|
}
|
|
300
491
|
|
|
301
|
-
if (
|
|
492
|
+
if (direct?.kind === "release") {
|
|
302
493
|
const releaseId = typeof json?.release_id === "string" ? json.release_id : null;
|
|
303
494
|
if (!releaseId) throw new Error(`Release cap ${capId} carries no release id`);
|
|
304
495
|
const r = await getReleaseById(client.protocol, releaseId);
|
|
@@ -313,8 +504,66 @@ export async function getWorkByCap(client: MisoClient, capId: string): Promise<W
|
|
|
313
504
|
};
|
|
314
505
|
}
|
|
315
506
|
|
|
316
|
-
|
|
317
|
-
|
|
507
|
+
const vaulted = classifyVaultedWorkAdminCapType(
|
|
508
|
+
type,
|
|
509
|
+
client.config.protocol.vault,
|
|
510
|
+
miso,
|
|
511
|
+
);
|
|
512
|
+
if (!vaulted || !content) {
|
|
513
|
+
// A real object, but not a supported work authority — "no such work",
|
|
514
|
+
// not a transport failure. PressingAdminCap intentionally lands here.
|
|
515
|
+
return null;
|
|
516
|
+
}
|
|
517
|
+
const { vault_id: vaultId } = vaultContract.VaultAdminCap.parse(content);
|
|
518
|
+
|
|
519
|
+
if (vaulted.kind === "composition") {
|
|
520
|
+
const c = await getCompositionByShareType(
|
|
521
|
+
client.protocol,
|
|
522
|
+
client.graphql,
|
|
523
|
+
vaulted.shareType,
|
|
524
|
+
miso,
|
|
525
|
+
);
|
|
526
|
+
return {
|
|
527
|
+
capId,
|
|
528
|
+
kind: "composition",
|
|
529
|
+
workId: c.id,
|
|
530
|
+
title: c.title,
|
|
531
|
+
state: c.state.type,
|
|
532
|
+
royaltyRateBps: int(c.royaltyRate.value),
|
|
533
|
+
shareType: vaulted.shareType,
|
|
534
|
+
};
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
if (vaulted.kind === "recording") {
|
|
538
|
+
const r = await getRecordingByShareType(
|
|
539
|
+
client.protocol,
|
|
540
|
+
client.graphql,
|
|
541
|
+
vaulted.shareType,
|
|
542
|
+
miso,
|
|
543
|
+
);
|
|
544
|
+
const titles = await getRecordingTitles(client.protocol, client.graphql, [r.id], miso);
|
|
545
|
+
return {
|
|
546
|
+
capId,
|
|
547
|
+
kind: "recording",
|
|
548
|
+
workId: r.id,
|
|
549
|
+
title: titles[r.id] ?? "Untitled",
|
|
550
|
+
state: r.state.type,
|
|
551
|
+
shareType: vaulted.shareType,
|
|
552
|
+
};
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
const [releaseCap] = await resolveVaultedReleaseCaps(client, [{ id: capId, vaultId }]);
|
|
556
|
+
if (!releaseCap) throw new Error(`Release vault ${vaultId} carries no release admin cap`);
|
|
557
|
+
const r = await getReleaseById(client.protocol, releaseCap.releaseId);
|
|
558
|
+
return {
|
|
559
|
+
capId,
|
|
560
|
+
kind: "release",
|
|
561
|
+
workId: r.id,
|
|
562
|
+
title: r.title,
|
|
563
|
+
state: r.state.type,
|
|
564
|
+
discCount: r.tracks.length > 0 ? 1 : 0,
|
|
565
|
+
trackCount: r.tracks.length,
|
|
566
|
+
};
|
|
318
567
|
}
|
|
319
568
|
|
|
320
569
|
// ── Balance ──────────────────────────────────────────────────────────────────
|