@misofm/platform 0.0.0 → 0.19.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/LICENSE +201 -0
- package/README.md +686 -3
- package/dist/auth.d.ts +73 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +193 -0
- package/dist/auth.js.map +1 -0
- package/dist/catalog.d.ts +48 -0
- package/dist/catalog.d.ts.map +1 -0
- package/dist/catalog.js +92 -0
- package/dist/catalog.js.map +1 -0
- package/dist/client.d.ts +459 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +783 -0
- package/dist/client.js.map +1 -0
- package/dist/contracts.d.ts +33 -0
- package/dist/contracts.d.ts.map +1 -0
- package/dist/contracts.js +48 -0
- package/dist/contracts.js.map +1 -0
- package/dist/cover.d.ts +69 -0
- package/dist/cover.d.ts.map +1 -0
- package/dist/cover.js +132 -0
- package/dist/cover.js.map +1 -0
- package/dist/credits.d.ts +200 -0
- package/dist/credits.d.ts.map +1 -0
- package/dist/credits.js +465 -0
- package/dist/credits.js.map +1 -0
- package/dist/deployments.d.ts +221 -0
- package/dist/deployments.d.ts.map +1 -0
- package/dist/deployments.js +176 -0
- package/dist/deployments.js.map +1 -0
- package/dist/execute.d.ts +30 -0
- package/dist/execute.d.ts.map +1 -0
- package/dist/execute.js +31 -0
- package/dist/execute.js.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +52 -0
- package/dist/index.js.map +1 -0
- package/dist/internal.d.ts +13 -0
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.js +41 -0
- package/dist/internal.js.map +1 -0
- package/dist/mix.d.ts +144 -0
- package/dist/mix.d.ts.map +1 -0
- package/dist/mix.js +656 -0
- package/dist/mix.js.map +1 -0
- package/dist/pressing.d.ts +137 -0
- package/dist/pressing.d.ts.map +1 -0
- package/dist/pressing.js +390 -0
- package/dist/pressing.js.map +1 -0
- package/dist/publication.d.ts +215 -0
- package/dist/publication.d.ts.map +1 -0
- package/dist/publication.js +864 -0
- package/dist/publication.js.map +1 -0
- package/dist/queries.d.ts +2 -0
- package/dist/queries.d.ts.map +1 -0
- package/dist/queries.js +8 -0
- package/dist/queries.js.map +1 -0
- package/dist/read/artist.d.ts +18 -0
- package/dist/read/artist.d.ts.map +1 -0
- package/dist/read/artist.js +86 -0
- package/dist/read/artist.js.map +1 -0
- package/dist/read/catalog.d.ts +93 -0
- package/dist/read/catalog.d.ts.map +1 -0
- package/dist/read/catalog.js +441 -0
- package/dist/read/catalog.js.map +1 -0
- package/dist/read/client.d.ts +37 -0
- package/dist/read/client.d.ts.map +1 -0
- package/dist/read/client.js +50 -0
- package/dist/read/client.js.map +1 -0
- package/dist/read/config.d.ts +68 -0
- package/dist/read/config.d.ts.map +1 -0
- package/dist/read/config.js +63 -0
- package/dist/read/config.js.map +1 -0
- package/dist/read/genres.d.ts +7 -0
- package/dist/read/genres.d.ts.map +1 -0
- package/dist/read/genres.js +38 -0
- package/dist/read/genres.js.map +1 -0
- package/dist/read/index.d.ts +14 -0
- package/dist/read/index.d.ts.map +1 -0
- package/dist/read/index.js +23 -0
- package/dist/read/index.js.map +1 -0
- package/dist/read/internal/scalars.d.ts +23 -0
- package/dist/read/internal/scalars.d.ts.map +1 -0
- package/dist/read/internal/scalars.js +57 -0
- package/dist/read/internal/scalars.js.map +1 -0
- package/dist/read/internal/walrus.d.ts +6 -0
- package/dist/read/internal/walrus.d.ts.map +1 -0
- package/dist/read/internal/walrus.js +29 -0
- package/dist/read/internal/walrus.js.map +1 -0
- package/dist/read/receipts.d.ts +41 -0
- package/dist/read/receipts.d.ts.map +1 -0
- package/dist/read/receipts.js +398 -0
- package/dist/read/receipts.js.map +1 -0
- package/dist/read/types.d.ts +328 -0
- package/dist/read/types.d.ts.map +1 -0
- package/dist/read/types.js +21 -0
- package/dist/read/types.js.map +1 -0
- package/dist/read/wallet.d.ts +74 -0
- package/dist/read/wallet.d.ts.map +1 -0
- package/dist/read/wallet.js +578 -0
- package/dist/read/wallet.js.map +1 -0
- package/dist/read/works.d.ts +29 -0
- package/dist/read/works.d.ts.map +1 -0
- package/dist/read/works.js +191 -0
- package/dist/read/works.js.map +1 -0
- package/dist/recording-extensions.d.ts +58 -0
- package/dist/recording-extensions.d.ts.map +1 -0
- package/dist/recording-extensions.js +148 -0
- package/dist/recording-extensions.js.map +1 -0
- package/dist/release-extensions.d.ts +93 -0
- package/dist/release-extensions.d.ts.map +1 -0
- package/dist/release-extensions.js +190 -0
- package/dist/release-extensions.js.map +1 -0
- package/dist/release-graph.d.ts +65 -0
- package/dist/release-graph.d.ts.map +1 -0
- package/dist/release-graph.js +136 -0
- package/dist/release-graph.js.map +1 -0
- package/dist/share-template.d.ts +3 -0
- package/dist/share-template.d.ts.map +1 -0
- package/dist/share-template.js +46 -0
- package/dist/share-template.js.map +1 -0
- package/dist/share.d.ts +67 -0
- package/dist/share.d.ts.map +1 -0
- package/dist/share.js +157 -0
- package/dist/share.js.map +1 -0
- package/dist/transactions.d.ts +216 -0
- package/dist/transactions.d.ts.map +1 -0
- package/dist/transactions.js +314 -0
- package/dist/transactions.js.map +1 -0
- package/dist/vault.d.ts +364 -0
- package/dist/vault.d.ts.map +1 -0
- package/dist/vault.js +507 -0
- package/dist/vault.js.map +1 -0
- package/package.json +145 -5
- package/src/auth.ts +275 -0
- package/src/catalog.ts +189 -0
- package/src/client.ts +1310 -0
- package/src/contracts.ts +53 -0
- package/src/cover.ts +240 -0
- package/src/credits.ts +906 -0
- package/src/deployments.ts +354 -0
- package/src/execute.ts +52 -0
- package/src/index.ts +69 -0
- package/src/internal.ts +46 -0
- package/src/mix.ts +910 -0
- package/src/pressing.ts +705 -0
- package/src/publication.ts +1205 -0
- package/src/queries.ts +9 -0
- package/src/read/artist.ts +118 -0
- package/src/read/catalog.ts +668 -0
- package/src/read/client.ts +87 -0
- package/src/read/config.ts +138 -0
- package/src/read/genres.ts +37 -0
- package/src/read/index.ts +85 -0
- package/src/read/internal/scalars.ts +59 -0
- package/src/read/internal/walrus.ts +42 -0
- package/src/read/receipts.ts +476 -0
- package/src/read/types.ts +415 -0
- package/src/read/wallet.ts +687 -0
- package/src/read/works.ts +297 -0
- package/src/recording-extensions.ts +241 -0
- package/src/release-extensions.ts +311 -0
- package/src/release-graph.ts +219 -0
- package/src/share-template.ts +55 -0
- package/src/share.ts +261 -0
- package/src/transactions.ts +542 -0
- package/src/vault.ts +1009 -0
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
// Copyright (c) Miso Labs, Inc.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
import { normalizeSuiAddress } from "@mysten/sui/utils";
|
|
4
|
+
import { contracts, extractTypeParams2, getCompositionsByIds, } from "@misofm/protocol";
|
|
5
|
+
/** Resolve all work share types in one aliased GraphQL request. */
|
|
6
|
+
export async function getWorkAddressesByShareTypes(client, shareTypes, misoPackageId) {
|
|
7
|
+
const compositions = [...new Set(shareTypes.compositions)];
|
|
8
|
+
const recordings = new Set(shareTypes.recordings);
|
|
9
|
+
const out = { compositions: {}, recordings: {} };
|
|
10
|
+
if (compositions.length === 0 && recordings.size === 0)
|
|
11
|
+
return out;
|
|
12
|
+
const declarations = [];
|
|
13
|
+
const selections = [];
|
|
14
|
+
const variables = {};
|
|
15
|
+
compositions.forEach((shareType, index) => {
|
|
16
|
+
const variable = `compositionType${index}`;
|
|
17
|
+
declarations.push(`$${variable}: String!`);
|
|
18
|
+
selections.push(`composition${index}: objects(first: 1, filter: { type: $${variable} }) { nodes { address } }`);
|
|
19
|
+
variables[variable] =
|
|
20
|
+
`${misoPackageId}::composition::Composition<${shareType}>`;
|
|
21
|
+
});
|
|
22
|
+
if (recordings.size > 0) {
|
|
23
|
+
declarations.push("$recordingType: String!");
|
|
24
|
+
selections.push(`recordings: objects(first: 50, filter: { type: $recordingType }) {
|
|
25
|
+
pageInfo { hasNextPage endCursor }
|
|
26
|
+
nodes { address asMoveObject { contents { type { repr } } } }
|
|
27
|
+
}`);
|
|
28
|
+
variables.recordingType = `${misoPackageId}::recording::Recording`;
|
|
29
|
+
}
|
|
30
|
+
const result = await client.query({
|
|
31
|
+
query: `query WorkAddressesByShareTypes(${declarations.join(", ")}) {
|
|
32
|
+
${selections.join("\n")}
|
|
33
|
+
}`,
|
|
34
|
+
variables,
|
|
35
|
+
});
|
|
36
|
+
if (result.errors?.length) {
|
|
37
|
+
throw new AggregateError(result.errors.map((error) => new Error(error.message)), "Work type discovery failed");
|
|
38
|
+
}
|
|
39
|
+
compositions.forEach((shareType, index) => {
|
|
40
|
+
const address = result.data?.[`composition${index}`]?.nodes[0]?.address;
|
|
41
|
+
if (address)
|
|
42
|
+
out.compositions[shareType] = address;
|
|
43
|
+
});
|
|
44
|
+
const readRecordingPage = (page) => {
|
|
45
|
+
for (const node of page?.nodes ?? []) {
|
|
46
|
+
const repr = node.asMoveObject?.contents?.type?.repr;
|
|
47
|
+
if (!repr)
|
|
48
|
+
continue;
|
|
49
|
+
try {
|
|
50
|
+
const [shareType] = extractTypeParams2(repr);
|
|
51
|
+
if (recordings.has(shareType))
|
|
52
|
+
out.recordings[shareType] = node.address;
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
// Ignore objects whose deployed type does not match the Recording ABI.
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
let page = result.data?.recordings;
|
|
60
|
+
readRecordingPage(page);
|
|
61
|
+
while (page?.pageInfo?.hasNextPage &&
|
|
62
|
+
page.pageInfo.endCursor &&
|
|
63
|
+
Object.keys(out.recordings).length < recordings.size) {
|
|
64
|
+
const next = await client.query({
|
|
65
|
+
query: `query RecordingWorkAddresses($recordingType: String!, $cursor: String!) {
|
|
66
|
+
recordings: objects(first: 50, after: $cursor, filter: { type: $recordingType }) {
|
|
67
|
+
pageInfo { hasNextPage endCursor }
|
|
68
|
+
nodes { address asMoveObject { contents { type { repr } } } }
|
|
69
|
+
}
|
|
70
|
+
}`,
|
|
71
|
+
variables: {
|
|
72
|
+
recordingType: variables.recordingType,
|
|
73
|
+
cursor: page.pageInfo.endCursor,
|
|
74
|
+
},
|
|
75
|
+
});
|
|
76
|
+
if (next.errors?.length) {
|
|
77
|
+
throw new AggregateError(next.errors.map((error) => new Error(error.message)), "Recording type discovery failed");
|
|
78
|
+
}
|
|
79
|
+
page = next.data?.recordings;
|
|
80
|
+
readRecordingPage(page);
|
|
81
|
+
}
|
|
82
|
+
return out;
|
|
83
|
+
}
|
|
84
|
+
function workState(value) {
|
|
85
|
+
return value?.$kind === "Published"
|
|
86
|
+
? { type: "Published", timestampMs: Number(value.Published) }
|
|
87
|
+
: { type: "Initialized" };
|
|
88
|
+
}
|
|
89
|
+
function parseComposition(id, content) {
|
|
90
|
+
const value = contracts.composition.Composition.parse(content);
|
|
91
|
+
return {
|
|
92
|
+
id,
|
|
93
|
+
state: workState(value.state),
|
|
94
|
+
title: String(value.title),
|
|
95
|
+
royaltyRate: {
|
|
96
|
+
value: Number(Array.isArray(value.royalty_rate)
|
|
97
|
+
? value.royalty_rate[0]
|
|
98
|
+
: value.royalty_rate),
|
|
99
|
+
},
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
function parseRecording(id, content) {
|
|
103
|
+
const value = contracts.recording.Recording.parse(content);
|
|
104
|
+
return {
|
|
105
|
+
id,
|
|
106
|
+
state: workState(value.state),
|
|
107
|
+
compositionId: String(value.composition_id),
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
export function parseReleaseObject(id, content) {
|
|
111
|
+
const value = contracts.release.Release.parse(content);
|
|
112
|
+
return {
|
|
113
|
+
id,
|
|
114
|
+
state: workState(value.state),
|
|
115
|
+
title: String(value.title),
|
|
116
|
+
tracks: (value.tracks ?? []).map((track) => ({
|
|
117
|
+
state: (track.state?.$kind ?? "Unassigned"),
|
|
118
|
+
compositionId: String(track.composition_id),
|
|
119
|
+
recordingId: String(track.recording_id),
|
|
120
|
+
splitBps: {
|
|
121
|
+
value: Number(Array.isArray(track.split_bps) ? track.split_bps[0] : track.split_bps),
|
|
122
|
+
},
|
|
123
|
+
})),
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
/** Fetch and parse heterogeneous works through one Core bulk request. */
|
|
127
|
+
export async function getWorksByIds(client, ids) {
|
|
128
|
+
const kinds = new Map();
|
|
129
|
+
for (const [kind, objectIds] of Object.entries(ids)) {
|
|
130
|
+
for (const objectId of objectIds) {
|
|
131
|
+
const normalized = normalizeSuiAddress(objectId);
|
|
132
|
+
const previous = kinds.get(normalized);
|
|
133
|
+
if (previous && previous !== kind) {
|
|
134
|
+
throw new Error(`Work ${normalized} was requested as both ${previous} and ${kind}`);
|
|
135
|
+
}
|
|
136
|
+
kinds.set(normalized, kind);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
const out = { compositions: {}, recordings: {}, releases: {} };
|
|
140
|
+
if (kinds.size === 0)
|
|
141
|
+
return out;
|
|
142
|
+
const { objects } = await client.core.getObjects({
|
|
143
|
+
objectIds: [...kinds.keys()],
|
|
144
|
+
include: { content: true },
|
|
145
|
+
});
|
|
146
|
+
for (const object of objects) {
|
|
147
|
+
if (object instanceof Error || !object.content)
|
|
148
|
+
continue;
|
|
149
|
+
const kind = kinds.get(normalizeSuiAddress(object.objectId));
|
|
150
|
+
if (kind === "compositions")
|
|
151
|
+
out.compositions[object.objectId] = parseComposition(object.objectId, object.content);
|
|
152
|
+
else if (kind === "recordings")
|
|
153
|
+
out.recordings[object.objectId] = parseRecording(object.objectId, object.content);
|
|
154
|
+
else if (kind === "releases")
|
|
155
|
+
out.releases[object.objectId] = parseReleaseObject(object.objectId, object.content);
|
|
156
|
+
}
|
|
157
|
+
return out;
|
|
158
|
+
}
|
|
159
|
+
/** Resolve recording titles through each recording's canonical composition type. */
|
|
160
|
+
export async function getRecordingTitles(client, graphql, recordingIds, misoPackageId) {
|
|
161
|
+
const ids = [...new Set(recordingIds)];
|
|
162
|
+
if (ids.length === 0)
|
|
163
|
+
return {};
|
|
164
|
+
const { objects } = await client.core.getObjects({
|
|
165
|
+
objectIds: ids,
|
|
166
|
+
include: {},
|
|
167
|
+
});
|
|
168
|
+
const titles = {};
|
|
169
|
+
const compositionShareByRecording = {};
|
|
170
|
+
for (const object of objects) {
|
|
171
|
+
if (object instanceof Error)
|
|
172
|
+
continue;
|
|
173
|
+
const [, compositionShareType] = extractTypeParams2(object.type);
|
|
174
|
+
compositionShareByRecording[object.objectId] = compositionShareType;
|
|
175
|
+
}
|
|
176
|
+
const compositionShareTypes = Object.values(compositionShareByRecording);
|
|
177
|
+
if (compositionShareTypes.length === 0)
|
|
178
|
+
return titles;
|
|
179
|
+
const addresses = await getWorkAddressesByShareTypes(graphql, { compositions: compositionShareTypes, recordings: [] }, misoPackageId);
|
|
180
|
+
const compositions = await getCompositionsByIds(client, Object.values(addresses.compositions).filter((id) => !!id));
|
|
181
|
+
for (const [recordingId, shareType] of Object.entries(compositionShareByRecording)) {
|
|
182
|
+
const compositionId = addresses.compositions[shareType];
|
|
183
|
+
const title = compositionId
|
|
184
|
+
? compositions[compositionId]?.title
|
|
185
|
+
: undefined;
|
|
186
|
+
if (title)
|
|
187
|
+
titles[recordingId] = title;
|
|
188
|
+
}
|
|
189
|
+
return titles;
|
|
190
|
+
}
|
|
191
|
+
//# sourceMappingURL=works.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"works.js","sourceRoot":"","sources":["../../src/read/works.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { ClientWithCoreApi } from "@mysten/sui/client";
|
|
2
|
+
import type { TransactionArgument } from "@mysten/sui/transactions";
|
|
3
|
+
import type { TxThunk } from "./transactions.ts";
|
|
4
|
+
import { type AdminCapAuthority, type ObjectInput } from "./vault.ts";
|
|
5
|
+
export interface RecordingExtensionTarget {
|
|
6
|
+
readonly recordingId: ObjectInput;
|
|
7
|
+
readonly authority: AdminCapAuthority;
|
|
8
|
+
readonly recordingShareType: string;
|
|
9
|
+
readonly compositionShareType: string;
|
|
10
|
+
}
|
|
11
|
+
type Rating = "Explicit" | "NotExplicit" | "Cleaned";
|
|
12
|
+
export interface SetRecordingAdvisoryParams extends RecordingExtensionTarget {
|
|
13
|
+
readonly recordingAdvisoryPackageId: string;
|
|
14
|
+
readonly rating: Rating;
|
|
15
|
+
}
|
|
16
|
+
export declare function setRecordingAdvisory(p: SetRecordingAdvisoryParams): TxThunk;
|
|
17
|
+
export interface SetRecordingLanguagesParams extends RecordingExtensionTarget {
|
|
18
|
+
readonly recordingLanguagePackageId: string;
|
|
19
|
+
/** A vector<LanguageCode> built by the language-code package in this PTB. */
|
|
20
|
+
readonly languages: TransactionArgument;
|
|
21
|
+
}
|
|
22
|
+
export declare function setRecordingLanguages(p: SetRecordingLanguagesParams): TxThunk;
|
|
23
|
+
export declare function setRecordingInstrumental(p: Omit<SetRecordingLanguagesParams, "languages">): TxThunk;
|
|
24
|
+
interface RecordingWalrusReferenceParams extends RecordingExtensionTarget {
|
|
25
|
+
/** An ori::WalrusData value assembled in the same PTB (must be a standalone blob on chain). */
|
|
26
|
+
readonly reference: TransactionArgument;
|
|
27
|
+
}
|
|
28
|
+
export interface SetRecordingMasterReferenceParams extends RecordingWalrusReferenceParams {
|
|
29
|
+
readonly recordingMasterReferencePackageId: string;
|
|
30
|
+
}
|
|
31
|
+
export declare function setRecordingMasterReference(p: SetRecordingMasterReferenceParams): TxThunk;
|
|
32
|
+
export interface SetRecordingStreamingTranscodeParams extends RecordingExtensionTarget {
|
|
33
|
+
readonly recordingStreamingTranscodePackageId: string;
|
|
34
|
+
/** External `ori` package used to construct the complete Walrus Quilt reference. */
|
|
35
|
+
readonly oriPackageId: string;
|
|
36
|
+
/** Complete Walrus Quilt ID as its on-chain `u256` value. */
|
|
37
|
+
readonly quiltId: bigint | string;
|
|
38
|
+
}
|
|
39
|
+
/** Sets or replaces the complete streaming-transcode Quilt attached to a Recording. */
|
|
40
|
+
export declare function setRecordingStreamingTranscode(p: SetRecordingStreamingTranscodeParams): TxThunk;
|
|
41
|
+
export type UnsetRecordingStreamingTranscodeParams = Omit<SetRecordingStreamingTranscodeParams, "oriPackageId" | "quiltId">;
|
|
42
|
+
/** Removes the Recording's streaming-transcode reference, if present. */
|
|
43
|
+
export declare function unsetRecordingStreamingTranscode(p: UnsetRecordingStreamingTranscodeParams): TxThunk;
|
|
44
|
+
/** Parse an attached master reference's standalone Walrus blob id. */
|
|
45
|
+
export declare function parseRecordingMasterReferenceContent(content: Uint8Array): string | null;
|
|
46
|
+
/** Deterministic dynamic-field id for a Recording's master reference. */
|
|
47
|
+
export declare function recordingMasterReferenceFieldId(recordingId: string, recordingMasterReferencePackageId: string): string;
|
|
48
|
+
/** Read one Recording's master-reference blob id, or null when absent. */
|
|
49
|
+
export declare function getRecordingMasterReference(client: ClientWithCoreApi, recordingId: string, recordingMasterReferencePackageId: string): Promise<string | null>;
|
|
50
|
+
/**
|
|
51
|
+
* Read master-reference blob ids for many Recordings in one Core request.
|
|
52
|
+
*
|
|
53
|
+
* Missing fields and malformed individual objects are omitted so one Recording
|
|
54
|
+
* without a playable master cannot make the rest of an album unplayable.
|
|
55
|
+
*/
|
|
56
|
+
export declare function getRecordingMasterReferencesByIds(client: ClientWithCoreApi, recordingIdsInput: readonly string[], recordingMasterReferencePackageId: string): Promise<Partial<Record<string, string>>>;
|
|
57
|
+
export {};
|
|
58
|
+
//# sourceMappingURL=recording-extensions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recording-extensions.d.ts","sourceRoot":"","sources":["../src/recording-extensions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
// Copyright (c) Miso Labs, Inc.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
/** Cap-authorized builders and reads for data-only Recording metadata extensions. */
|
|
4
|
+
import { bcs } from "@mysten/sui/bcs";
|
|
5
|
+
import { deriveDynamicFieldID } from "@mysten/sui/utils";
|
|
6
|
+
import { invokeWithAdminCap } from "./vault.js";
|
|
7
|
+
import * as advisory from "@misofm/protocol/contracts/recording_advisory/recording_advisory";
|
|
8
|
+
import * as language from "@misofm/protocol/contracts/recording_language/recording_language";
|
|
9
|
+
import * as walrusData from "@misofm/protocol/contracts/recording_master_reference/deps/ori/walrus_data";
|
|
10
|
+
import * as masterReference from "@misofm/protocol/contracts/recording_master_reference/recording_master_reference";
|
|
11
|
+
import * as streamingTranscode from "@misofm/protocol/contracts/recording_streaming_transcode/recording_streaming_transcode";
|
|
12
|
+
function object(tx, value) {
|
|
13
|
+
return typeof value === "string" ? tx.object(value) : value;
|
|
14
|
+
}
|
|
15
|
+
export function setRecordingAdvisory(p) {
|
|
16
|
+
return (tx) => {
|
|
17
|
+
const rating = tx.add(p.rating === "Explicit" ? advisory.explicit({ package: p.recordingAdvisoryPackageId })
|
|
18
|
+
: p.rating === "NotExplicit" ? advisory.notExplicit({ package: p.recordingAdvisoryPackageId })
|
|
19
|
+
: advisory.cleaned({ package: p.recordingAdvisoryPackageId }));
|
|
20
|
+
invokeWithAdminCap(tx, p.authority, {
|
|
21
|
+
target: `${p.recordingAdvisoryPackageId}::recording_advisory::set_rating`,
|
|
22
|
+
typeArguments: [p.recordingShareType, p.compositionShareType],
|
|
23
|
+
arguments: [object(tx, p.recordingId), rating],
|
|
24
|
+
adminCapIndex: 1,
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
export function setRecordingLanguages(p) {
|
|
29
|
+
return (tx) => {
|
|
30
|
+
invokeWithAdminCap(tx, p.authority, {
|
|
31
|
+
target: `${p.recordingLanguagePackageId}::recording_language::set_languages`,
|
|
32
|
+
typeArguments: [p.recordingShareType, p.compositionShareType],
|
|
33
|
+
arguments: [object(tx, p.recordingId), p.languages],
|
|
34
|
+
adminCapIndex: 1,
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
export function setRecordingInstrumental(p) {
|
|
39
|
+
return (tx) => {
|
|
40
|
+
invokeWithAdminCap(tx, p.authority, {
|
|
41
|
+
target: `${p.recordingLanguagePackageId}::recording_language::set_instrumental`,
|
|
42
|
+
typeArguments: [p.recordingShareType, p.compositionShareType],
|
|
43
|
+
arguments: [object(tx, p.recordingId)],
|
|
44
|
+
adminCapIndex: 1,
|
|
45
|
+
});
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
export function setRecordingMasterReference(p) {
|
|
49
|
+
return (tx) => {
|
|
50
|
+
invokeWithAdminCap(tx, p.authority, {
|
|
51
|
+
target: `${p.recordingMasterReferencePackageId}::recording_master_reference::set_master_reference`,
|
|
52
|
+
typeArguments: [p.recordingShareType, p.compositionShareType],
|
|
53
|
+
arguments: [object(tx, p.recordingId), p.reference],
|
|
54
|
+
adminCapIndex: 1,
|
|
55
|
+
});
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
/** Sets or replaces the complete streaming-transcode Quilt attached to a Recording. */
|
|
59
|
+
export function setRecordingStreamingTranscode(p) {
|
|
60
|
+
return (tx) => {
|
|
61
|
+
const quilt = tx.moveCall({
|
|
62
|
+
target: `${p.oriPackageId}::data::new_quilt`,
|
|
63
|
+
arguments: [tx.pure.u256(p.quiltId)],
|
|
64
|
+
});
|
|
65
|
+
const transcode = tx.add(streamingTranscode._new({
|
|
66
|
+
package: p.recordingStreamingTranscodePackageId,
|
|
67
|
+
arguments: [quilt],
|
|
68
|
+
}));
|
|
69
|
+
invokeWithAdminCap(tx, p.authority, {
|
|
70
|
+
target: `${p.recordingStreamingTranscodePackageId}::recording_streaming_transcode::set_streaming_transcode`,
|
|
71
|
+
typeArguments: [p.recordingShareType, p.compositionShareType],
|
|
72
|
+
arguments: [object(tx, p.recordingId), transcode],
|
|
73
|
+
adminCapIndex: 1,
|
|
74
|
+
});
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
/** Removes the Recording's streaming-transcode reference, if present. */
|
|
78
|
+
export function unsetRecordingStreamingTranscode(p) {
|
|
79
|
+
return (tx) => {
|
|
80
|
+
invokeWithAdminCap(tx, p.authority, {
|
|
81
|
+
target: `${p.recordingStreamingTranscodePackageId}::recording_streaming_transcode::unset_streaming_transcode`,
|
|
82
|
+
typeArguments: [p.recordingShareType, p.compositionShareType],
|
|
83
|
+
arguments: [object(tx, p.recordingId)],
|
|
84
|
+
adminCapIndex: 1,
|
|
85
|
+
});
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
// ── Master-reference reads ───────────────────────────────────────────────────
|
|
89
|
+
// recording_master_reference stores the ori::WalrusData value inline in a
|
|
90
|
+
// dynamic field on the Recording. Its empty ExtensionKey serializes to one false
|
|
91
|
+
// byte, so the field object id can be derived without listing the Recording's
|
|
92
|
+
// dynamic fields.
|
|
93
|
+
const MasterReferenceField = bcs.struct("Field", {
|
|
94
|
+
id: bcs.Address,
|
|
95
|
+
name: masterReference.ExtensionKey,
|
|
96
|
+
value: walrusData.WalrusData,
|
|
97
|
+
});
|
|
98
|
+
const MASTER_REFERENCE_KEY_BYTES = masterReference.ExtensionKey.serialize([
|
|
99
|
+
false,
|
|
100
|
+
]).toBytes();
|
|
101
|
+
/** Parse an attached master reference's standalone Walrus blob id. */
|
|
102
|
+
export function parseRecordingMasterReferenceContent(content) {
|
|
103
|
+
const reference = MasterReferenceField.parse(content).value;
|
|
104
|
+
return reference.$kind === "Blob" ? String(reference.Blob[0]) : null;
|
|
105
|
+
}
|
|
106
|
+
/** Deterministic dynamic-field id for a Recording's master reference. */
|
|
107
|
+
export function recordingMasterReferenceFieldId(recordingId, recordingMasterReferencePackageId) {
|
|
108
|
+
return deriveDynamicFieldID(recordingId, `${recordingMasterReferencePackageId}::recording_master_reference::ExtensionKey`, MASTER_REFERENCE_KEY_BYTES);
|
|
109
|
+
}
|
|
110
|
+
/** Read one Recording's master-reference blob id, or null when absent. */
|
|
111
|
+
export async function getRecordingMasterReference(client, recordingId, recordingMasterReferencePackageId) {
|
|
112
|
+
return ((await getRecordingMasterReferencesByIds(client, [recordingId], recordingMasterReferencePackageId))[recordingId] ?? null);
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Read master-reference blob ids for many Recordings in one Core request.
|
|
116
|
+
*
|
|
117
|
+
* Missing fields and malformed individual objects are omitted so one Recording
|
|
118
|
+
* without a playable master cannot make the rest of an album unplayable.
|
|
119
|
+
*/
|
|
120
|
+
export async function getRecordingMasterReferencesByIds(client, recordingIdsInput, recordingMasterReferencePackageId) {
|
|
121
|
+
const recordingIds = [...new Set(recordingIdsInput)];
|
|
122
|
+
const targets = recordingIds.map((recordingId) => ({
|
|
123
|
+
recordingId,
|
|
124
|
+
fieldId: recordingMasterReferenceFieldId(recordingId, recordingMasterReferencePackageId),
|
|
125
|
+
}));
|
|
126
|
+
if (targets.length === 0)
|
|
127
|
+
return {};
|
|
128
|
+
const { objects } = await client.core.getObjects({
|
|
129
|
+
objectIds: targets.map((target) => target.fieldId),
|
|
130
|
+
include: { content: true },
|
|
131
|
+
});
|
|
132
|
+
const out = {};
|
|
133
|
+
objects.forEach((object, index) => {
|
|
134
|
+
const target = targets[index];
|
|
135
|
+
if (!target || object instanceof Error || !object.content)
|
|
136
|
+
return;
|
|
137
|
+
try {
|
|
138
|
+
const blobId = parseRecordingMasterReferenceContent(object.content);
|
|
139
|
+
if (blobId)
|
|
140
|
+
out[target.recordingId] = blobId;
|
|
141
|
+
}
|
|
142
|
+
catch {
|
|
143
|
+
// Extension metadata is soft: retain valid tracks when one field is stale.
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
return out;
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=recording-extensions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recording-extensions.js","sourceRoot":"","sources":["../src/recording-extensions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import type { ClientWithCoreApi } from "@mysten/sui/client";
|
|
2
|
+
import type { TxThunk } from "./transactions.ts";
|
|
3
|
+
import { type AdminCapAuthority, type ObjectInput, type U64Input } from "./vault.ts";
|
|
4
|
+
type ReleaseAuthorityInput = {
|
|
5
|
+
readonly authority: AdminCapAuthority;
|
|
6
|
+
readonly releaseAdminCapId?: never;
|
|
7
|
+
} | {
|
|
8
|
+
readonly authority?: never;
|
|
9
|
+
readonly releaseAdminCapId: string;
|
|
10
|
+
};
|
|
11
|
+
interface ReleaseExtensionTargetBase {
|
|
12
|
+
releaseId: ObjectInput;
|
|
13
|
+
}
|
|
14
|
+
export type ReleaseExtensionTarget = ReleaseExtensionTargetBase & ReleaseAuthorityInput;
|
|
15
|
+
export type SetReleaseKindParams = ReleaseExtensionTarget & {
|
|
16
|
+
kind: string;
|
|
17
|
+
releaseKindPackageId: string;
|
|
18
|
+
};
|
|
19
|
+
/** Attach the release's self-declared kind (for example "EP" or "Mixtape"). */
|
|
20
|
+
export declare function setReleaseKind(p: SetReleaseKindParams): TxThunk;
|
|
21
|
+
/** Deterministic dynamic-field id for a Release's optional self-declared kind. */
|
|
22
|
+
export declare function releaseKindFieldId(releaseId: string, releaseKindPackageId: string): string;
|
|
23
|
+
/** Parse the dynamic field storing `Option<String>` as its present string. */
|
|
24
|
+
export declare function parseReleaseKindContent(content: Uint8Array): string;
|
|
25
|
+
/** Read a Release's self-declared kind, or `null` when the extension is absent. */
|
|
26
|
+
export declare function getReleaseKind(client: ClientWithCoreApi, releaseId: string, releaseKindPackageId: string): Promise<string | null>;
|
|
27
|
+
export type SetReleaseDescriptionParams = ReleaseExtensionTarget & {
|
|
28
|
+
description: string;
|
|
29
|
+
releaseDescriptionPackageId: string;
|
|
30
|
+
};
|
|
31
|
+
/** Attach the release's editorial description. */
|
|
32
|
+
export declare function setReleaseDescription(p: SetReleaseDescriptionParams): TxThunk;
|
|
33
|
+
/** Validate the canonical on-chain genre vocabulary spelling. */
|
|
34
|
+
export declare function assertCanonicalGenreName(name: string): void;
|
|
35
|
+
/** Derive the immutable Genre object address for a canonical vocabulary name.
|
|
36
|
+
* `genrePackageId` must be the genre package's defining (original publish)
|
|
37
|
+
* address — the on-chain derivation hashes type names with defining IDs. */
|
|
38
|
+
export declare function deriveGenreAddress(genreRegistryId: string, genrePackageId: string, canonicalName: string): string;
|
|
39
|
+
export interface TrackGenreAssignment {
|
|
40
|
+
trackIndex: U64Input;
|
|
41
|
+
genreId: string;
|
|
42
|
+
}
|
|
43
|
+
export type SetReleaseGenresParams = ReleaseExtensionTarget & {
|
|
44
|
+
primaryGenreId: string;
|
|
45
|
+
secondaryGenreIds?: readonly string[];
|
|
46
|
+
trackPrimaryGenres?: readonly TrackGenreAssignment[];
|
|
47
|
+
releaseGenrePackageId: string;
|
|
48
|
+
};
|
|
49
|
+
/** Attach primary/secondary release genres and optional per-track overrides. */
|
|
50
|
+
export declare function setReleaseGenres(p: SetReleaseGenresParams): TxThunk;
|
|
51
|
+
export type DspLink = {
|
|
52
|
+
platform: "Spotify";
|
|
53
|
+
id: string;
|
|
54
|
+
} | {
|
|
55
|
+
platform: "AppleMusic";
|
|
56
|
+
storefront: string;
|
|
57
|
+
albumId: string;
|
|
58
|
+
trackId?: string;
|
|
59
|
+
} | {
|
|
60
|
+
platform: "AmazonMusic";
|
|
61
|
+
albumId: string;
|
|
62
|
+
trackId?: string;
|
|
63
|
+
} | {
|
|
64
|
+
platform: "Bandcamp";
|
|
65
|
+
subdomain: string;
|
|
66
|
+
slug: string;
|
|
67
|
+
} | {
|
|
68
|
+
platform: "Deezer";
|
|
69
|
+
id: string;
|
|
70
|
+
} | {
|
|
71
|
+
platform: "SoundCloud";
|
|
72
|
+
user: string;
|
|
73
|
+
slug: string;
|
|
74
|
+
} | {
|
|
75
|
+
platform: "Tidal";
|
|
76
|
+
id: string;
|
|
77
|
+
} | {
|
|
78
|
+
platform: "YouTubeMusic";
|
|
79
|
+
id: string;
|
|
80
|
+
};
|
|
81
|
+
export interface TrackDspLink {
|
|
82
|
+
trackIndex: U64Input;
|
|
83
|
+
link: DspLink;
|
|
84
|
+
}
|
|
85
|
+
export type SetReleaseDspLinksParams = ReleaseExtensionTarget & {
|
|
86
|
+
releaseLinks?: readonly DspLink[];
|
|
87
|
+
trackLinks?: readonly TrackDspLink[];
|
|
88
|
+
releaseDspLinkPackageId: string;
|
|
89
|
+
};
|
|
90
|
+
/** Attach release-level and per-track DSP links. */
|
|
91
|
+
export declare function setReleaseDspLinks(p: SetReleaseDspLinksParams): TxThunk;
|
|
92
|
+
export {};
|
|
93
|
+
//# sourceMappingURL=release-extensions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release-extensions.d.ts","sourceRoot":"","sources":["../src/release-extensions.ts"],"names":[],"mappings":"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"}
|