@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.
Files changed (168) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +686 -3
  3. package/dist/auth.d.ts +73 -0
  4. package/dist/auth.d.ts.map +1 -0
  5. package/dist/auth.js +193 -0
  6. package/dist/auth.js.map +1 -0
  7. package/dist/catalog.d.ts +48 -0
  8. package/dist/catalog.d.ts.map +1 -0
  9. package/dist/catalog.js +92 -0
  10. package/dist/catalog.js.map +1 -0
  11. package/dist/client.d.ts +459 -0
  12. package/dist/client.d.ts.map +1 -0
  13. package/dist/client.js +783 -0
  14. package/dist/client.js.map +1 -0
  15. package/dist/contracts.d.ts +33 -0
  16. package/dist/contracts.d.ts.map +1 -0
  17. package/dist/contracts.js +48 -0
  18. package/dist/contracts.js.map +1 -0
  19. package/dist/cover.d.ts +69 -0
  20. package/dist/cover.d.ts.map +1 -0
  21. package/dist/cover.js +132 -0
  22. package/dist/cover.js.map +1 -0
  23. package/dist/credits.d.ts +200 -0
  24. package/dist/credits.d.ts.map +1 -0
  25. package/dist/credits.js +465 -0
  26. package/dist/credits.js.map +1 -0
  27. package/dist/deployments.d.ts +221 -0
  28. package/dist/deployments.d.ts.map +1 -0
  29. package/dist/deployments.js +176 -0
  30. package/dist/deployments.js.map +1 -0
  31. package/dist/execute.d.ts +30 -0
  32. package/dist/execute.d.ts.map +1 -0
  33. package/dist/execute.js +31 -0
  34. package/dist/execute.js.map +1 -0
  35. package/dist/index.d.ts +21 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +52 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/internal.d.ts +13 -0
  40. package/dist/internal.d.ts.map +1 -0
  41. package/dist/internal.js +41 -0
  42. package/dist/internal.js.map +1 -0
  43. package/dist/mix.d.ts +144 -0
  44. package/dist/mix.d.ts.map +1 -0
  45. package/dist/mix.js +656 -0
  46. package/dist/mix.js.map +1 -0
  47. package/dist/pressing.d.ts +137 -0
  48. package/dist/pressing.d.ts.map +1 -0
  49. package/dist/pressing.js +390 -0
  50. package/dist/pressing.js.map +1 -0
  51. package/dist/publication.d.ts +215 -0
  52. package/dist/publication.d.ts.map +1 -0
  53. package/dist/publication.js +864 -0
  54. package/dist/publication.js.map +1 -0
  55. package/dist/queries.d.ts +2 -0
  56. package/dist/queries.d.ts.map +1 -0
  57. package/dist/queries.js +8 -0
  58. package/dist/queries.js.map +1 -0
  59. package/dist/read/artist.d.ts +18 -0
  60. package/dist/read/artist.d.ts.map +1 -0
  61. package/dist/read/artist.js +86 -0
  62. package/dist/read/artist.js.map +1 -0
  63. package/dist/read/catalog.d.ts +93 -0
  64. package/dist/read/catalog.d.ts.map +1 -0
  65. package/dist/read/catalog.js +441 -0
  66. package/dist/read/catalog.js.map +1 -0
  67. package/dist/read/client.d.ts +37 -0
  68. package/dist/read/client.d.ts.map +1 -0
  69. package/dist/read/client.js +50 -0
  70. package/dist/read/client.js.map +1 -0
  71. package/dist/read/config.d.ts +68 -0
  72. package/dist/read/config.d.ts.map +1 -0
  73. package/dist/read/config.js +63 -0
  74. package/dist/read/config.js.map +1 -0
  75. package/dist/read/genres.d.ts +7 -0
  76. package/dist/read/genres.d.ts.map +1 -0
  77. package/dist/read/genres.js +38 -0
  78. package/dist/read/genres.js.map +1 -0
  79. package/dist/read/index.d.ts +14 -0
  80. package/dist/read/index.d.ts.map +1 -0
  81. package/dist/read/index.js +23 -0
  82. package/dist/read/index.js.map +1 -0
  83. package/dist/read/internal/scalars.d.ts +23 -0
  84. package/dist/read/internal/scalars.d.ts.map +1 -0
  85. package/dist/read/internal/scalars.js +57 -0
  86. package/dist/read/internal/scalars.js.map +1 -0
  87. package/dist/read/internal/walrus.d.ts +6 -0
  88. package/dist/read/internal/walrus.d.ts.map +1 -0
  89. package/dist/read/internal/walrus.js +29 -0
  90. package/dist/read/internal/walrus.js.map +1 -0
  91. package/dist/read/receipts.d.ts +41 -0
  92. package/dist/read/receipts.d.ts.map +1 -0
  93. package/dist/read/receipts.js +398 -0
  94. package/dist/read/receipts.js.map +1 -0
  95. package/dist/read/types.d.ts +328 -0
  96. package/dist/read/types.d.ts.map +1 -0
  97. package/dist/read/types.js +21 -0
  98. package/dist/read/types.js.map +1 -0
  99. package/dist/read/wallet.d.ts +74 -0
  100. package/dist/read/wallet.d.ts.map +1 -0
  101. package/dist/read/wallet.js +578 -0
  102. package/dist/read/wallet.js.map +1 -0
  103. package/dist/read/works.d.ts +29 -0
  104. package/dist/read/works.d.ts.map +1 -0
  105. package/dist/read/works.js +191 -0
  106. package/dist/read/works.js.map +1 -0
  107. package/dist/recording-extensions.d.ts +58 -0
  108. package/dist/recording-extensions.d.ts.map +1 -0
  109. package/dist/recording-extensions.js +148 -0
  110. package/dist/recording-extensions.js.map +1 -0
  111. package/dist/release-extensions.d.ts +93 -0
  112. package/dist/release-extensions.d.ts.map +1 -0
  113. package/dist/release-extensions.js +190 -0
  114. package/dist/release-extensions.js.map +1 -0
  115. package/dist/release-graph.d.ts +65 -0
  116. package/dist/release-graph.d.ts.map +1 -0
  117. package/dist/release-graph.js +136 -0
  118. package/dist/release-graph.js.map +1 -0
  119. package/dist/share-template.d.ts +3 -0
  120. package/dist/share-template.d.ts.map +1 -0
  121. package/dist/share-template.js +46 -0
  122. package/dist/share-template.js.map +1 -0
  123. package/dist/share.d.ts +67 -0
  124. package/dist/share.d.ts.map +1 -0
  125. package/dist/share.js +157 -0
  126. package/dist/share.js.map +1 -0
  127. package/dist/transactions.d.ts +216 -0
  128. package/dist/transactions.d.ts.map +1 -0
  129. package/dist/transactions.js +314 -0
  130. package/dist/transactions.js.map +1 -0
  131. package/dist/vault.d.ts +364 -0
  132. package/dist/vault.d.ts.map +1 -0
  133. package/dist/vault.js +507 -0
  134. package/dist/vault.js.map +1 -0
  135. package/package.json +145 -5
  136. package/src/auth.ts +275 -0
  137. package/src/catalog.ts +189 -0
  138. package/src/client.ts +1310 -0
  139. package/src/contracts.ts +53 -0
  140. package/src/cover.ts +240 -0
  141. package/src/credits.ts +906 -0
  142. package/src/deployments.ts +354 -0
  143. package/src/execute.ts +52 -0
  144. package/src/index.ts +69 -0
  145. package/src/internal.ts +46 -0
  146. package/src/mix.ts +910 -0
  147. package/src/pressing.ts +705 -0
  148. package/src/publication.ts +1205 -0
  149. package/src/queries.ts +9 -0
  150. package/src/read/artist.ts +118 -0
  151. package/src/read/catalog.ts +668 -0
  152. package/src/read/client.ts +87 -0
  153. package/src/read/config.ts +138 -0
  154. package/src/read/genres.ts +37 -0
  155. package/src/read/index.ts +85 -0
  156. package/src/read/internal/scalars.ts +59 -0
  157. package/src/read/internal/walrus.ts +42 -0
  158. package/src/read/receipts.ts +476 -0
  159. package/src/read/types.ts +415 -0
  160. package/src/read/wallet.ts +687 -0
  161. package/src/read/works.ts +297 -0
  162. package/src/recording-extensions.ts +241 -0
  163. package/src/release-extensions.ts +311 -0
  164. package/src/release-graph.ts +219 -0
  165. package/src/share-template.ts +55 -0
  166. package/src/share.ts +261 -0
  167. package/src/transactions.ts +542 -0
  168. package/src/vault.ts +1009 -0
package/src/queries.ts ADDED
@@ -0,0 +1,9 @@
1
+ // Copyright (c) Miso Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ // Shared read plumbing for the platform reads.
5
+
6
+ // `isNotFound` is the protocol SDK's — the not-found taxonomy is a property of
7
+ // the Sui transports, not of any one package's objects, so it is defined once in
8
+ // `@misofm/protocol` and re-exported here for the platform readers.
9
+ export { isNotFound } from "@misofm/protocol";
@@ -0,0 +1,118 @@
1
+ // Copyright (c) Miso Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ //
4
+ // Artist reads: a `Party` plus every extension attached to its UID.
5
+ //
6
+ // The artist page is the clearest case for this whole layer. Its data lives in
7
+ // separate dynamic fields, each its own package and read — party, profile, ctas,
8
+ // genres, links, roles, and tags. Here they are one call, resolved once, cached
9
+ // once.
10
+ //
11
+ // `roles` and `tags` are opt-in via `include`.
12
+
13
+ import { resolveGenreNames } from "./genres.ts";
14
+ import type { MisoClient } from "./client.ts";
15
+ import type {
16
+ ArtistProfile,
17
+ PartyMember,
18
+ PartySummary,
19
+ } from "./types.ts";
20
+
21
+ /** Optional sub-resources — read only when asked for. */
22
+ export type ArtistInclude = "roles" | "tags";
23
+
24
+ export interface GetArtistOptions {
25
+ include?: readonly ArtistInclude[];
26
+ }
27
+
28
+ /** Public avatar URL for a party (served from the API's R2 lane; 404 when unset). */
29
+ export function partyAvatarUrl(apiBaseUrl: string, partyId: string): string {
30
+ return `${apiBaseUrl.replace(/\/$/, "")}/media/avatar/${partyId}`;
31
+ }
32
+
33
+ /**
34
+ * An artist page, fully resolved. Throws only if the PARTY itself can't be read —
35
+ * every extension is optional by design (a party with no profile set is a new
36
+ * party, not a broken one), so each decoration read falls back to its empty value.
37
+ */
38
+ export async function getArtistProfile(
39
+ client: MisoClient,
40
+ partyId: string,
41
+ options: GetArtistOptions = {},
42
+ ): Promise<ArtistProfile> {
43
+ const include = new Set(options.include ?? []);
44
+ const { party } = client.sui.miso;
45
+
46
+ const [profile, ctas, genreIds, links, roles, tags, entity] =
47
+ await Promise.all([
48
+ party.getProfile(partyId).catch(() => null),
49
+ party.getCtas(partyId).catch(() => []),
50
+ party.getGenres(partyId).catch(() => [] as string[]),
51
+ party.getLinks(partyId).catch(() => []),
52
+ include.has("roles")
53
+ ? party.getRoles(partyId).catch(() => [] as string[])
54
+ : Promise.resolve(undefined),
55
+ include.has("tags")
56
+ ? party.getTags(partyId).catch(() => [] as string[])
57
+ : Promise.resolve(undefined),
58
+ party.getPartyById(partyId),
59
+ ]);
60
+
61
+ const [genres, members] = await Promise.all([
62
+ resolveGenreNames(client, genreIds),
63
+ resolveMembers(
64
+ client,
65
+ entity.kind === "group" ? (entity.members ?? []) : [],
66
+ ),
67
+ ]);
68
+
69
+ return {
70
+ id: entity.id,
71
+ kind: entity.kind,
72
+ name: entity.name,
73
+ createdAtMs: entity.createdAtMs,
74
+ bioShort: profile?.bioShort ?? null,
75
+ bioLong: profile?.bioLong ?? null,
76
+ country: profile?.country ?? null,
77
+ languages: profile?.languages ?? [],
78
+ genres,
79
+ links: links.map((l) => ({
80
+ platform: l.platform,
81
+ value: l.value,
82
+ url: l.url,
83
+ })),
84
+ ctas: ctas.map((c) => ({ label: c.label, url: c.url })),
85
+ members,
86
+ ...(roles !== undefined ? { roles } : {}),
87
+ ...(tags !== undefined ? { tags } : {}),
88
+ avatarUrl: partyAvatarUrl(client.config.apiBaseUrl, entity.id),
89
+ };
90
+ }
91
+
92
+ /** Group members with names resolved. A member that fails to read is dropped. */
93
+ async function resolveMembers(
94
+ client: MisoClient,
95
+ memberIds: readonly string[],
96
+ ): Promise<PartyMember[]> {
97
+ if (memberIds.length === 0) return [];
98
+ const parties = await client.sui.miso.party
99
+ .getPartiesByIds([...memberIds])
100
+ .catch(() => ({}) as Record<string, undefined>);
101
+ return memberIds.flatMap((id) => {
102
+ const p = parties[id];
103
+ return p ? [{ id, name: p.name }] : [];
104
+ });
105
+ }
106
+
107
+ /** Name + kind for many parties at once. Ids that don't resolve are omitted. */
108
+ export async function getPartySummaries(
109
+ client: MisoClient,
110
+ ids: readonly string[],
111
+ ): Promise<PartySummary[]> {
112
+ if (ids.length === 0) return [];
113
+ const parties = await client.sui.miso.party.getPartiesByIds([...ids]);
114
+ return ids.flatMap((id) => {
115
+ const p = parties[id];
116
+ return p ? [{ id, name: p.name, kind: p.kind }] : [];
117
+ });
118
+ }