@misofm/platform 0.27.0 → 0.28.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 +309 -204
- package/dist/Miso.d.ts +403 -0
- package/dist/Miso.d.ts.map +1 -0
- package/dist/Miso.js +455 -0
- package/dist/Miso.js.map +1 -0
- package/dist/auth.d.ts +11 -1
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +16 -3
- package/dist/auth.js.map +1 -1
- package/dist/catalog.d.ts +8 -5
- package/dist/catalog.d.ts.map +1 -1
- package/dist/catalog.js +36 -19
- package/dist/catalog.js.map +1 -1
- package/dist/client.d.ts +52 -443
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +58 -775
- package/dist/client.js.map +1 -1
- package/dist/contracts/composition_credits/composition_credits.d.ts +38 -48
- package/dist/contracts/composition_credits/composition_credits.d.ts.map +1 -1
- package/dist/contracts/composition_credits/composition_credits.js +20 -4
- package/dist/contracts/composition_credits/composition_credits.js.map +1 -1
- package/dist/contracts/composition_routed_stake/composition_routed_stake.d.ts +64 -1
- package/dist/contracts/composition_routed_stake/composition_routed_stake.d.ts.map +1 -1
- package/dist/contracts/composition_routed_stake/composition_routed_stake.js +66 -1
- package/dist/contracts/composition_routed_stake/composition_routed_stake.js.map +1 -1
- package/dist/contracts/composition_royalty_pool/composition_royalty_pool.d.ts +52 -4
- package/dist/contracts/composition_royalty_pool/composition_royalty_pool.d.ts.map +1 -1
- package/dist/contracts/composition_royalty_pool/composition_royalty_pool.js +52 -4
- package/dist/contracts/composition_royalty_pool/composition_royalty_pool.js.map +1 -1
- package/dist/contracts/composition_royalty_pool_plugin/composition_royalty_pool_plugin.d.ts +63 -1
- package/dist/contracts/composition_royalty_pool_plugin/composition_royalty_pool_plugin.d.ts.map +1 -1
- package/dist/contracts/composition_royalty_pool_plugin/composition_royalty_pool_plugin.js +63 -1
- package/dist/contracts/composition_royalty_pool_plugin/composition_royalty_pool_plugin.js.map +1 -1
- package/dist/contracts/genre/genre.d.ts +10 -1
- package/dist/contracts/genre/genre.d.ts.map +1 -1
- package/dist/contracts/genre/genre.js +8 -1
- package/dist/contracts/genre/genre.js.map +1 -1
- package/dist/contracts/miso_pay/deps/std/type_name.d.ts.map +1 -0
- package/dist/contracts/miso_pay/deps/std/type_name.js.map +1 -0
- package/dist/contracts/miso_pay/pay.d.ts +209 -0
- package/dist/contracts/miso_pay/pay.d.ts.map +1 -0
- package/dist/contracts/miso_pay/pay.js +195 -0
- package/dist/contracts/miso_pay/pay.js.map +1 -0
- package/dist/contracts/party_cta/party_cta.d.ts +49 -3
- package/dist/contracts/party_cta/party_cta.d.ts.map +1 -1
- package/dist/contracts/party_cta/party_cta.js +27 -5
- package/dist/contracts/party_cta/party_cta.js.map +1 -1
- package/dist/contracts/party_genre/party_genre.d.ts +25 -0
- package/dist/contracts/party_genre/party_genre.d.ts.map +1 -1
- package/dist/contracts/party_genre/party_genre.js +14 -3
- package/dist/contracts/party_genre/party_genre.js.map +1 -1
- package/dist/contracts/party_media/party_media.d.ts +19 -3
- package/dist/contracts/party_media/party_media.d.ts.map +1 -1
- package/dist/contracts/party_media/party_media.js +20 -4
- package/dist/contracts/party_media/party_media.js.map +1 -1
- package/dist/contracts/party_platform_link/party_platform_link.d.ts +15 -7
- package/dist/contracts/party_platform_link/party_platform_link.d.ts.map +1 -1
- package/dist/contracts/party_platform_link/party_platform_link.js +15 -7
- package/dist/contracts/party_platform_link/party_platform_link.js.map +1 -1
- package/dist/contracts/party_profile/party_profile.d.ts +63 -8
- package/dist/contracts/party_profile/party_profile.d.ts.map +1 -1
- package/dist/contracts/party_profile/party_profile.js +33 -8
- package/dist/contracts/party_profile/party_profile.js.map +1 -1
- package/dist/contracts/party_roles/party_roles.d.ts +28 -3
- package/dist/contracts/party_roles/party_roles.d.ts.map +1 -1
- package/dist/contracts/party_roles/party_roles.js +19 -4
- package/dist/contracts/party_roles/party_roles.js.map +1 -1
- package/dist/contracts/party_tags/party_tags.d.ts +23 -3
- package/dist/contracts/party_tags/party_tags.d.ts.map +1 -1
- package/dist/contracts/party_tags/party_tags.js +16 -4
- package/dist/contracts/party_tags/party_tags.js.map +1 -1
- package/dist/contracts/party_wallet/party_wallet.d.ts +4 -1
- package/dist/contracts/party_wallet/party_wallet.d.ts.map +1 -1
- package/dist/contracts/party_wallet/party_wallet.js +2 -1
- package/dist/contracts/party_wallet/party_wallet.js.map +1 -1
- package/dist/contracts/platform_link/platform_link.d.ts +207 -0
- package/dist/contracts/platform_link/platform_link.d.ts.map +1 -0
- package/dist/contracts/platform_link/platform_link.js +209 -0
- package/dist/contracts/platform_link/platform_link.js.map +1 -0
- package/dist/contracts/record/pressing.d.ts +53 -7
- package/dist/contracts/record/pressing.d.ts.map +1 -1
- package/dist/contracts/record/pressing.js +50 -4
- package/dist/contracts/record/pressing.js.map +1 -1
- package/dist/contracts/record/record.d.ts +14 -0
- package/dist/contracts/record/record.d.ts.map +1 -1
- package/dist/contracts/record/record.js +15 -1
- package/dist/contracts/record/record.js.map +1 -1
- package/dist/contracts/record_shop/listing.d.ts +80 -35
- package/dist/contracts/record_shop/listing.d.ts.map +1 -1
- package/dist/contracts/record_shop/listing.js +76 -13
- package/dist/contracts/record_shop/listing.js.map +1 -1
- package/dist/contracts/recording_advisory/recording_advisory.d.ts +15 -15
- package/dist/contracts/recording_advisory/recording_advisory.d.ts.map +1 -1
- package/dist/contracts/recording_advisory/recording_advisory.js +15 -8
- package/dist/contracts/recording_advisory/recording_advisory.js.map +1 -1
- package/dist/contracts/recording_credits/recording_credits.d.ts +95 -1350
- package/dist/contracts/recording_credits/recording_credits.d.ts.map +1 -1
- package/dist/contracts/recording_credits/recording_credits.js +63 -12
- package/dist/contracts/recording_credits/recording_credits.js.map +1 -1
- package/dist/contracts/recording_engine_session/recording_engine_session.d.ts +30 -49
- package/dist/contracts/recording_engine_session/recording_engine_session.d.ts.map +1 -1
- package/dist/contracts/recording_engine_session/recording_engine_session.js +19 -4
- package/dist/contracts/recording_engine_session/recording_engine_session.js.map +1 -1
- package/dist/contracts/recording_genre/recording_genre.d.ts +67 -9
- package/dist/contracts/recording_genre/recording_genre.d.ts.map +1 -1
- package/dist/contracts/recording_genre/recording_genre.js +53 -9
- package/dist/contracts/recording_genre/recording_genre.js.map +1 -1
- package/dist/contracts/recording_language/recording_language.d.ts +29 -5
- package/dist/contracts/recording_language/recording_language.d.ts.map +1 -1
- package/dist/contracts/recording_language/recording_language.js +18 -5
- package/dist/contracts/recording_language/recording_language.js.map +1 -1
- package/dist/contracts/recording_master_reference/recording_master_reference.d.ts +25 -15
- package/dist/contracts/recording_master_reference/recording_master_reference.d.ts.map +1 -1
- package/dist/contracts/recording_master_reference/recording_master_reference.js +18 -5
- package/dist/contracts/recording_master_reference/recording_master_reference.js.map +1 -1
- package/dist/contracts/recording_royalty_pool/recording_royalty_pool.d.ts +55 -4
- package/dist/contracts/recording_royalty_pool/recording_royalty_pool.d.ts.map +1 -1
- package/dist/contracts/recording_royalty_pool/recording_royalty_pool.js +55 -4
- package/dist/contracts/recording_royalty_pool/recording_royalty_pool.js.map +1 -1
- package/dist/contracts/recording_royalty_pool_plugin/recording_royalty_pool_plugin.d.ts +66 -1
- package/dist/contracts/recording_royalty_pool_plugin/recording_royalty_pool_plugin.d.ts.map +1 -1
- package/dist/contracts/recording_royalty_pool_plugin/recording_royalty_pool_plugin.js +66 -1
- package/dist/contracts/recording_royalty_pool_plugin/recording_royalty_pool_plugin.js.map +1 -1
- package/dist/contracts/recording_streaming_transcode/recording_streaming_transcode.d.ts +12 -9
- package/dist/contracts/recording_streaming_transcode/recording_streaming_transcode.d.ts.map +1 -1
- package/dist/contracts/recording_streaming_transcode/recording_streaming_transcode.js +11 -4
- package/dist/contracts/recording_streaming_transcode/recording_streaming_transcode.js.map +1 -1
- package/dist/contracts/release_cover_art/release_cover_art.d.ts +168 -74
- package/dist/contracts/release_cover_art/release_cover_art.d.ts.map +1 -1
- package/dist/contracts/release_cover_art/release_cover_art.js +126 -10
- package/dist/contracts/release_cover_art/release_cover_art.js.map +1 -1
- package/dist/contracts/release_credits/release_credits.d.ts +24 -28
- package/dist/contracts/release_credits/release_credits.d.ts.map +1 -1
- package/dist/contracts/release_credits/release_credits.js +18 -4
- package/dist/contracts/release_credits/release_credits.js.map +1 -1
- package/dist/contracts/release_description/release_description.d.ts +16 -5
- package/dist/contracts/release_description/release_description.d.ts.map +1 -1
- package/dist/contracts/release_description/release_description.js +9 -4
- package/dist/contracts/release_description/release_description.js.map +1 -1
- package/dist/contracts/release_dsp_link/release_dsp_link.d.ts +130 -160
- package/dist/contracts/release_dsp_link/release_dsp_link.d.ts.map +1 -1
- package/dist/contracts/release_dsp_link/release_dsp_link.js +74 -19
- package/dist/contracts/release_dsp_link/release_dsp_link.js.map +1 -1
- package/dist/contracts/release_genre/release_genre.d.ts +66 -11
- package/dist/contracts/release_genre/release_genre.d.ts.map +1 -1
- package/dist/contracts/release_genre/release_genre.js +52 -11
- package/dist/contracts/release_genre/release_genre.js.map +1 -1
- package/dist/contracts/release_kind/release_kind.d.ts +28 -5
- package/dist/contracts/release_kind/release_kind.d.ts.map +1 -1
- package/dist/contracts/release_kind/release_kind.js +19 -4
- package/dist/contracts/release_kind/release_kind.js.map +1 -1
- package/dist/contracts/release_revenue_distributor/release_revenue_distributor.d.ts +17 -0
- package/dist/contracts/release_revenue_distributor/release_revenue_distributor.d.ts.map +1 -1
- package/dist/contracts/release_revenue_distributor/release_revenue_distributor.js +15 -0
- package/dist/contracts/release_revenue_distributor/release_revenue_distributor.js.map +1 -1
- package/dist/contracts/release_revenue_distributor_plugin/release_revenue_distributor_plugin.d.ts +37 -1
- package/dist/contracts/release_revenue_distributor_plugin/release_revenue_distributor_plugin.d.ts.map +1 -1
- package/dist/contracts/release_revenue_distributor_plugin/release_revenue_distributor_plugin.js +37 -1
- package/dist/contracts/release_revenue_distributor_plugin/release_revenue_distributor_plugin.js.map +1 -1
- package/dist/contracts/routed_stake/routed_stake.d.ts +78 -6
- package/dist/contracts/routed_stake/routed_stake.d.ts.map +1 -1
- package/dist/contracts/routed_stake/routed_stake.js +79 -7
- package/dist/contracts/routed_stake/routed_stake.js.map +1 -1
- package/dist/contracts/royalty_pool/pool.d.ts +117 -27
- package/dist/contracts/royalty_pool/pool.d.ts.map +1 -1
- package/dist/contracts/royalty_pool/pool.js +117 -28
- package/dist/contracts/royalty_pool/pool.js.map +1 -1
- package/dist/contracts/royalty_pool/stake.d.ts +3 -0
- package/dist/contracts/royalty_pool/stake.d.ts.map +1 -1
- package/dist/contracts/royalty_pool/stake.js +5 -2
- package/dist/contracts/royalty_pool/stake.js.map +1 -1
- package/dist/contracts/share/share.d.ts +80 -0
- package/dist/contracts/share/share.d.ts.map +1 -0
- package/dist/contracts/share/share.js +72 -0
- package/dist/contracts/share/share.js.map +1 -0
- package/dist/contracts/vault/vault.d.ts +51 -0
- package/dist/contracts/vault/vault.d.ts.map +1 -1
- package/dist/contracts/vault/vault.js +55 -4
- package/dist/contracts/vault/vault.js.map +1 -1
- package/dist/contracts.d.ts +60 -0
- package/dist/contracts.d.ts.map +1 -1
- package/dist/contracts.js +17 -0
- package/dist/contracts.js.map +1 -1
- package/dist/cover.d.ts +5 -6
- package/dist/cover.d.ts.map +1 -1
- package/dist/cover.js +10 -10
- package/dist/cover.js.map +1 -1
- package/dist/credits.d.ts +12 -13
- package/dist/credits.d.ts.map +1 -1
- package/dist/credits.js +16 -10
- package/dist/credits.js.map +1 -1
- package/dist/deployments.d.ts +3 -3
- package/dist/deployments.d.ts.map +1 -1
- package/dist/deployments.js +2 -3
- package/dist/deployments.js.map +1 -1
- package/dist/errors.d.ts +24 -9
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +43 -16
- package/dist/errors.js.map +1 -1
- package/dist/events.d.ts +1687 -835
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +258 -39
- package/dist/events.js.map +1 -1
- package/dist/genre.d.ts +11 -12
- package/dist/genre.d.ts.map +1 -1
- package/dist/genre.js +5 -3
- package/dist/genre.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -2
- package/dist/index.js.map +1 -1
- package/dist/packages.d.ts +1047 -1695
- package/dist/packages.d.ts.map +1 -1
- package/dist/party/client.d.ts +113 -296
- package/dist/party/client.d.ts.map +1 -1
- package/dist/party/client.js +93 -178
- package/dist/party/client.js.map +1 -1
- package/dist/party/extensions/ctas.d.ts +3 -3
- package/dist/party/extensions/ctas.d.ts.map +1 -1
- package/dist/party/extensions/genres.d.ts +4 -4
- package/dist/party/extensions/genres.d.ts.map +1 -1
- package/dist/party/extensions/links.d.ts +5 -5
- package/dist/party/extensions/links.d.ts.map +1 -1
- package/dist/party/extensions/links.js.map +1 -1
- package/dist/party/extensions/media.d.ts +3 -3
- package/dist/party/extensions/media.d.ts.map +1 -1
- package/dist/party/extensions/profile.d.ts +3 -3
- package/dist/party/extensions/profile.d.ts.map +1 -1
- package/dist/party/extensions/roles.d.ts +4 -4
- package/dist/party/extensions/roles.d.ts.map +1 -1
- package/dist/party/extensions/roles.js.map +1 -1
- package/dist/party/extensions/tags.d.ts +4 -4
- package/dist/party/extensions/tags.d.ts.map +1 -1
- package/dist/party/index.d.ts +1 -1
- package/dist/party/index.d.ts.map +1 -1
- package/dist/party/index.js.map +1 -1
- package/dist/party/queries.d.ts +8 -8
- package/dist/party/queries.d.ts.map +1 -1
- package/dist/party/queries.js +83 -56
- package/dist/party/queries.js.map +1 -1
- package/dist/pressing.d.ts +13 -15
- package/dist/pressing.d.ts.map +1 -1
- package/dist/pressing.js +99 -29
- package/dist/pressing.js.map +1 -1
- package/dist/publication.d.ts +13 -6
- package/dist/publication.d.ts.map +1 -1
- package/dist/publication.js +26 -21
- package/dist/publication.js.map +1 -1
- package/dist/queries.js +3 -3
- package/dist/queries.js.map +1 -1
- package/dist/read/artist.d.ts +4 -3
- package/dist/read/artist.d.ts.map +1 -1
- package/dist/read/artist.js +24 -8
- package/dist/read/artist.js.map +1 -1
- package/dist/read/catalog.d.ts +17 -16
- package/dist/read/catalog.d.ts.map +1 -1
- package/dist/read/catalog.js +25 -11
- package/dist/read/catalog.js.map +1 -1
- package/dist/read/client.d.ts +41 -20
- package/dist/read/client.d.ts.map +1 -1
- package/dist/read/client.js +20 -12
- package/dist/read/client.js.map +1 -1
- package/dist/read/config.d.ts +25 -3
- package/dist/read/config.d.ts.map +1 -1
- package/dist/read/config.js +42 -25
- package/dist/read/config.js.map +1 -1
- package/dist/read/genres.d.ts +8 -3
- package/dist/read/genres.d.ts.map +1 -1
- package/dist/read/genres.js +23 -17
- package/dist/read/genres.js.map +1 -1
- package/dist/read/index.d.ts +1 -1
- package/dist/read/index.d.ts.map +1 -1
- package/dist/read/index.js +8 -6
- package/dist/read/index.js.map +1 -1
- package/dist/read/receipts.d.ts +5 -4
- package/dist/read/receipts.d.ts.map +1 -1
- package/dist/read/receipts.js +94 -46
- package/dist/read/receipts.js.map +1 -1
- package/dist/read/royalties.d.ts +6 -5
- package/dist/read/royalties.d.ts.map +1 -1
- package/dist/read/royalties.js +16 -9
- package/dist/read/royalties.js.map +1 -1
- package/dist/read/wallet.d.ts +23 -12
- package/dist/read/wallet.d.ts.map +1 -1
- package/dist/read/wallet.js +158 -177
- package/dist/read/wallet.js.map +1 -1
- package/dist/read/works.d.ts +6 -6
- package/dist/read/works.d.ts.map +1 -1
- package/dist/read/works.js +40 -26
- package/dist/read/works.js.map +1 -1
- package/dist/recording-extensions.d.ts +15 -16
- package/dist/recording-extensions.d.ts.map +1 -1
- package/dist/recording-extensions.js +12 -8
- package/dist/recording-extensions.js.map +1 -1
- package/dist/release-extensions.d.ts +5 -6
- package/dist/release-extensions.d.ts.map +1 -1
- package/dist/release-extensions.js +3 -2
- package/dist/release-extensions.js.map +1 -1
- package/dist/release-graph.d.ts +2 -2
- package/dist/release-graph.d.ts.map +1 -1
- package/dist/release-graph.js.map +1 -1
- package/dist/royalty.d.ts +4 -4
- package/dist/royalty.d.ts.map +1 -1
- package/dist/royalty.js +16 -7
- package/dist/royalty.js.map +1 -1
- package/dist/share.d.ts +58 -24
- package/dist/share.d.ts.map +1 -1
- package/dist/share.js +167 -92
- package/dist/share.js.map +1 -1
- package/dist/transactions.d.ts +15 -6
- package/dist/transactions.d.ts.map +1 -1
- package/dist/transactions.js +1 -0
- package/dist/transactions.js.map +1 -1
- package/dist/vault.d.ts +13 -3
- package/dist/vault.d.ts.map +1 -1
- package/dist/vault.js +22 -16
- package/dist/vault.js.map +1 -1
- package/package.json +9 -8
- package/src/Miso.ts +951 -0
- package/src/auth.ts +16 -3
- package/src/catalog.ts +58 -25
- package/src/client.ts +98 -1359
- package/src/contracts/composition_credits/composition_credits.ts +20 -4
- package/src/contracts/composition_routed_stake/composition_routed_stake.ts +67 -1
- package/src/contracts/composition_royalty_pool/composition_royalty_pool.ts +53 -4
- package/src/contracts/composition_royalty_pool_plugin/composition_royalty_pool_plugin.ts +64 -1
- package/src/contracts/genre/genre.ts +8 -1
- package/src/contracts/miso_pay/pay.ts +356 -0
- package/src/contracts/party_cta/party_cta.ts +27 -5
- package/src/contracts/party_genre/party_genre.ts +14 -3
- package/src/contracts/party_media/party_media.ts +20 -4
- package/src/contracts/party_platform_link/party_platform_link.ts +15 -7
- package/src/contracts/party_profile/party_profile.ts +33 -8
- package/src/contracts/party_roles/party_roles.ts +19 -4
- package/src/contracts/party_tags/party_tags.ts +16 -4
- package/src/contracts/party_wallet/party_wallet.ts +2 -1
- package/src/contracts/platform_link/platform_link.ts +322 -0
- package/src/contracts/record/pressing.ts +50 -4
- package/src/contracts/record/record.ts +15 -1
- package/src/contracts/record_shop/listing.ts +76 -13
- package/src/contracts/recording_advisory/recording_advisory.ts +15 -8
- package/src/contracts/recording_credits/recording_credits.ts +63 -12
- package/src/contracts/recording_engine_session/recording_engine_session.ts +19 -4
- package/src/contracts/recording_genre/recording_genre.ts +53 -9
- package/src/contracts/recording_language/recording_language.ts +18 -5
- package/src/contracts/recording_master_reference/recording_master_reference.ts +18 -5
- package/src/contracts/recording_royalty_pool/recording_royalty_pool.ts +56 -4
- package/src/contracts/recording_royalty_pool_plugin/recording_royalty_pool_plugin.ts +67 -1
- package/src/contracts/recording_streaming_transcode/recording_streaming_transcode.ts +11 -4
- package/src/contracts/release_cover_art/release_cover_art.ts +126 -10
- package/src/contracts/release_credits/release_credits.ts +18 -4
- package/src/contracts/release_description/release_description.ts +9 -4
- package/src/contracts/release_dsp_link/release_dsp_link.ts +74 -19
- package/src/contracts/release_genre/release_genre.ts +52 -11
- package/src/contracts/release_kind/release_kind.ts +19 -4
- package/src/contracts/release_revenue_distributor/release_revenue_distributor.ts +15 -0
- package/src/contracts/release_revenue_distributor_plugin/release_revenue_distributor_plugin.ts +38 -1
- package/src/contracts/routed_stake/routed_stake.ts +79 -7
- package/src/contracts/royalty_pool/pool.ts +140 -38
- package/src/contracts/royalty_pool/stake.ts +5 -2
- package/src/contracts/share/share.ts +97 -0
- package/src/contracts/vault/vault.ts +55 -4
- package/src/contracts.ts +18 -0
- package/src/cover.ts +14 -15
- package/src/credits.ts +27 -22
- package/src/deployments.ts +3 -4
- package/src/errors.ts +64 -34
- package/src/events.ts +260 -39
- package/src/genre.ts +15 -14
- package/src/index.ts +19 -10
- package/src/party/client.ts +217 -208
- package/src/party/extensions/ctas.ts +3 -3
- package/src/party/extensions/genres.ts +4 -4
- package/src/party/extensions/links.ts +7 -7
- package/src/party/extensions/media.ts +3 -3
- package/src/party/extensions/profile.ts +3 -3
- package/src/party/extensions/roles.ts +5 -5
- package/src/party/extensions/tags.ts +4 -4
- package/src/party/index.ts +0 -1
- package/src/party/queries.ts +90 -87
- package/src/pressing.ts +132 -89
- package/src/publication.ts +33 -32
- package/src/queries.ts +3 -3
- package/src/read/artist.ts +36 -17
- package/src/read/catalog.ts +68 -36
- package/src/read/client.ts +55 -30
- package/src/read/config.ts +55 -30
- package/src/read/genres.ts +22 -18
- package/src/read/index.ts +8 -6
- package/src/read/receipts.ts +130 -67
- package/src/read/royalties.ts +22 -10
- package/src/read/wallet.ts +226 -216
- package/src/read/works.ts +51 -44
- package/src/recording-extensions.ts +27 -24
- package/src/release-extensions.ts +7 -7
- package/src/release-graph.ts +2 -1
- package/src/royalty.ts +19 -25
- package/src/share.ts +197 -128
- package/src/transactions.ts +15 -8
- package/src/vault.ts +24 -31
- package/dist/contracts/record_shop/deps/std/type_name.d.ts.map +0 -1
- package/dist/contracts/record_shop/deps/std/type_name.js.map +0 -1
- package/dist/contracts/recording_language/deps/language_code/language_code.d.ts +0 -6
- package/dist/contracts/recording_language/deps/language_code/language_code.d.ts.map +0 -1
- package/dist/contracts/recording_language/deps/language_code/language_code.js +0 -8
- package/dist/contracts/recording_language/deps/language_code/language_code.js.map +0 -1
- package/dist/contracts/recording_master_reference/deps/ori/confidentiality.d.ts +0 -24
- package/dist/contracts/recording_master_reference/deps/ori/confidentiality.d.ts.map +0 -1
- package/dist/contracts/recording_master_reference/deps/ori/confidentiality.js +0 -24
- package/dist/contracts/recording_master_reference/deps/ori/confidentiality.js.map +0 -1
- package/dist/contracts/recording_master_reference/deps/ori/data.d.ts +0 -16
- package/dist/contracts/recording_master_reference/deps/ori/data.d.ts.map +0 -1
- package/dist/contracts/recording_master_reference/deps/ori/data.js +0 -12
- package/dist/contracts/recording_master_reference/deps/ori/data.js.map +0 -1
- package/dist/execute.d.ts +0 -32
- package/dist/execute.d.ts.map +0 -1
- package/dist/execute.js +0 -36
- package/dist/execute.js.map +0 -1
- package/src/contracts/recording_language/deps/language_code/language_code.ts +0 -8
- package/src/contracts/recording_master_reference/deps/ori/confidentiality.ts +0 -24
- package/src/contracts/recording_master_reference/deps/ori/data.ts +0 -12
- package/src/execute.ts +0 -56
- /package/dist/contracts/{record_shop → miso_pay}/deps/std/type_name.d.ts +0 -0
- /package/dist/contracts/{record_shop → miso_pay}/deps/std/type_name.js +0 -0
- /package/src/contracts/{record_shop → miso_pay}/deps/std/type_name.ts +0 -0
package/src/read/works.ts
CHANGED
|
@@ -1,21 +1,23 @@
|
|
|
1
1
|
// Copyright (c) Miso Labs, Inc.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
|
-
import { Effect } from "effect";
|
|
4
|
+
import { Effect, Result } from "effect";
|
|
5
5
|
import { normalizeSuiAddress } from "@mysten/sui/utils";
|
|
6
6
|
import {
|
|
7
7
|
contracts,
|
|
8
8
|
extractTypeParams2,
|
|
9
|
-
getCompositionsByIds,
|
|
10
9
|
getWorkAddressesByShareTypes,
|
|
10
|
+
Musicos,
|
|
11
11
|
Composition,
|
|
12
12
|
Recording,
|
|
13
13
|
Release,
|
|
14
|
+
type MusicosDeploymentInvalid,
|
|
15
|
+
type MusicosService,
|
|
14
16
|
type TrackState,
|
|
15
17
|
type WorkAddressesByShareType,
|
|
16
18
|
type WorkShareTypes,
|
|
17
19
|
} from "@misofm/musicos";
|
|
18
|
-
import {
|
|
20
|
+
import { ObjectId, Sui, SuiGraphQL, SuiSchema, type DecodeError, type GraphQLUnavailable, type TransportError } from "@unconfirmed/sui-effect";
|
|
19
21
|
|
|
20
22
|
// `getWorkAddressesByShareTypes` (GraphQL type discovery) is owned by
|
|
21
23
|
// `@misofm/musicos` now — re-exported here so existing platform imports keep
|
|
@@ -80,19 +82,33 @@ function mapReleaseObject(id: string, d: Parsed) {
|
|
|
80
82
|
}
|
|
81
83
|
|
|
82
84
|
/** Decode a Release object's raw BCS content into the public `Release` type. */
|
|
83
|
-
export function parseReleaseObject(id: string, content: Uint8Array): Effect.Effect<Release,
|
|
84
|
-
return
|
|
85
|
-
|
|
86
|
-
Release,
|
|
87
|
-
content,
|
|
88
|
-
{ type: "Release", objectId: id },
|
|
85
|
+
export function parseReleaseObject(id: string, content: Uint8Array): Effect.Effect<Release, DecodeError> {
|
|
86
|
+
return SuiSchema.decode(SuiSchema.bcs(contracts.release.Release), content, { objectId: ObjectId.make(id) }).pipe(
|
|
87
|
+
Effect.map((raw) => mapReleaseObject(id, raw as Parsed)),
|
|
89
88
|
);
|
|
90
89
|
}
|
|
91
90
|
|
|
92
|
-
/**
|
|
91
|
+
/**
|
|
92
|
+
* Builds `Musicos.layer({ deployment: { packageId } })`, provides it, and
|
|
93
|
+
* hands back the effect it wraps — see `catalog.ts`'s `withMusicos` for the
|
|
94
|
+
* same idiom (kept file-local rather than shared, since each of these
|
|
95
|
+
* standalone functions is a transitional non-facade consumer in its own
|
|
96
|
+
* right; see `docs/CONVERSION-STATUS.md`).
|
|
97
|
+
*/
|
|
98
|
+
function withMusicos<A, E>(
|
|
99
|
+
packageId: string,
|
|
100
|
+
effect: (musicos: MusicosService) => Effect.Effect<A, E, Sui>,
|
|
101
|
+
): Effect.Effect<A, E | MusicosDeploymentInvalid, Sui> {
|
|
102
|
+
return Effect.gen(function* () {
|
|
103
|
+
const musicos = yield* Musicos;
|
|
104
|
+
return yield* effect(musicos);
|
|
105
|
+
}).pipe(Effect.provide(Musicos.layer({ deployment: { packageId } })));
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/** Fetch and parse heterogeneous works through one chunked `sui.getObjects`. */
|
|
93
109
|
export const getWorksByIds = Effect.fn("getWorksByIds")(function* (
|
|
94
110
|
ids: WorkIds,
|
|
95
|
-
): Effect.fn.Return<WorksById,
|
|
111
|
+
): Effect.fn.Return<WorksById, DecodeError | TransportError, Sui> {
|
|
96
112
|
const kinds = new Map<string, keyof WorksById>();
|
|
97
113
|
for (const [kind, objectIds] of Object.entries(ids) as Array<[keyof WorksById, readonly string[]]>) {
|
|
98
114
|
for (const objectId of objectIds) {
|
|
@@ -107,30 +123,21 @@ export const getWorksByIds = Effect.fn("getWorksByIds")(function* (
|
|
|
107
123
|
const out: WorksById = { compositions: {}, recordings: {}, releases: {} };
|
|
108
124
|
if (kinds.size === 0) return out;
|
|
109
125
|
|
|
110
|
-
const
|
|
111
|
-
const
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
const
|
|
118
|
-
const objectId = object.objectId;
|
|
126
|
+
const sui = yield* Sui;
|
|
127
|
+
const requestedIds = [...kinds.keys()];
|
|
128
|
+
const objects = yield* sui.getObjects(requestedIds.map((id) => ObjectId.make(id)));
|
|
129
|
+
for (const [index, result] of objects.entries()) {
|
|
130
|
+
if (!Result.isSuccess(result)) continue;
|
|
131
|
+
const object = result.success;
|
|
132
|
+
const kind = kinds.get(requestedIds[index]!);
|
|
133
|
+
const objectId = object.id;
|
|
119
134
|
const content = object.content;
|
|
120
135
|
if (kind === "compositions") {
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
Composition,
|
|
124
|
-
content,
|
|
125
|
-
{ type: "Composition", objectId },
|
|
126
|
-
);
|
|
136
|
+
const raw = yield* SuiSchema.decode(SuiSchema.bcs(contracts.composition.Composition), content, { objectId });
|
|
137
|
+
out.compositions[objectId] = mapComposition(objectId, raw as Parsed) as unknown as Composition;
|
|
127
138
|
} else if (kind === "recordings") {
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
Recording,
|
|
131
|
-
content,
|
|
132
|
-
{ type: "Recording", objectId },
|
|
133
|
-
);
|
|
139
|
+
const raw = yield* SuiSchema.decode(SuiSchema.bcs(contracts.recording.Recording), content, { objectId });
|
|
140
|
+
out.recordings[objectId] = mapRecording(objectId, raw as Parsed) as unknown as Recording;
|
|
134
141
|
} else if (kind === "releases") {
|
|
135
142
|
out.releases[objectId] = yield* parseReleaseObject(objectId, content);
|
|
136
143
|
}
|
|
@@ -142,22 +149,20 @@ export const getWorksByIds = Effect.fn("getWorksByIds")(function* (
|
|
|
142
149
|
export const getRecordingTitles = Effect.fn("getRecordingTitles")(function* (
|
|
143
150
|
recordingIds: readonly string[],
|
|
144
151
|
misoPackageId: string,
|
|
145
|
-
): Effect.fn.Return<Record<string, string>,
|
|
152
|
+
): Effect.fn.Return<Record<string, string>, MusicosDeploymentInvalid | GraphQLUnavailable | TransportError, Sui | SuiGraphQL> {
|
|
146
153
|
const ids = [...new Set(recordingIds)];
|
|
147
154
|
if (ids.length === 0) return {};
|
|
148
155
|
|
|
149
|
-
const
|
|
150
|
-
const
|
|
151
|
-
try: (signal) => client.core.getObjects({ objectIds: ids, include: {}, signal }),
|
|
152
|
-
catch: (cause) => new SuiRpcError({ operation: "getObjects", cause }),
|
|
153
|
-
});
|
|
156
|
+
const sui = yield* Sui;
|
|
157
|
+
const objects = yield* sui.getObjects(ids.map((id) => ObjectId.make(id)));
|
|
154
158
|
const titles: Record<string, string> = {};
|
|
155
159
|
const compositionShareByRecording: Record<string, string> = {};
|
|
156
160
|
|
|
157
|
-
for (const
|
|
158
|
-
if (
|
|
161
|
+
for (const result of objects) {
|
|
162
|
+
if (!Result.isSuccess(result)) continue;
|
|
163
|
+
const object = result.success;
|
|
159
164
|
const [, compositionShareType] = extractTypeParams2(object.type);
|
|
160
|
-
compositionShareByRecording[object.
|
|
165
|
+
compositionShareByRecording[object.id] = compositionShareType;
|
|
161
166
|
}
|
|
162
167
|
|
|
163
168
|
const compositionShareTypes = Object.values(compositionShareByRecording);
|
|
@@ -166,12 +171,14 @@ export const getRecordingTitles = Effect.fn("getRecordingTitles")(function* (
|
|
|
166
171
|
{ compositions: compositionShareTypes, recordings: [] },
|
|
167
172
|
misoPackageId,
|
|
168
173
|
);
|
|
169
|
-
const
|
|
170
|
-
|
|
174
|
+
const compositionIds = Object.values(addresses.compositions).filter((id): id is string => !!id);
|
|
175
|
+
const results = yield* withMusicos(misoPackageId, (musicos) => musicos.getCompositionsByIds(compositionIds.map((id) => ObjectId.make(id))));
|
|
176
|
+
const compositionsById = new Map(
|
|
177
|
+
results.flatMap((result, index) => (Result.isSuccess(result) ? [[compositionIds[index]!, result.success] as const] : [])),
|
|
171
178
|
);
|
|
172
179
|
for (const [recordingId, shareType] of Object.entries(compositionShareByRecording)) {
|
|
173
180
|
const compositionId = addresses.compositions[shareType];
|
|
174
|
-
const title = compositionId ?
|
|
181
|
+
const title = compositionId ? compositionsById.get(compositionId)?.title : undefined;
|
|
175
182
|
if (title) titles[recordingId] = title;
|
|
176
183
|
}
|
|
177
184
|
return titles;
|
|
@@ -6,13 +6,14 @@
|
|
|
6
6
|
import { bcs } from "@mysten/sui/bcs";
|
|
7
7
|
import type { Transaction, TransactionArgument, TransactionObjectArgument } from "@mysten/sui/transactions";
|
|
8
8
|
import { deriveDynamicFieldID, fromHex, toHex } from "@mysten/sui/utils";
|
|
9
|
-
import { Effect, Option } from "effect";
|
|
10
|
-
import {
|
|
11
|
-
import type { TxThunk } from "./transactions.ts";
|
|
9
|
+
import { Effect, Option, Result } from "effect";
|
|
10
|
+
import { ObjectId, Sui, type DecodeError, type ObjectUnavailable, type TransportError, type Recipe } from "@unconfirmed/sui-effect";
|
|
12
11
|
import { invokeWithAdminCap, type AdminCapAuthority, type ObjectInput } from "./vault.ts";
|
|
13
12
|
import * as advisory from "./contracts/recording_advisory/recording_advisory.ts";
|
|
14
13
|
import * as language from "./contracts/recording_language/recording_language.ts";
|
|
15
|
-
|
|
14
|
+
// The generator prunes duplicate dependency subtrees and retains ori::data
|
|
15
|
+
// under cover_art. Both generated modules describe the same WalrusBlob ABI.
|
|
16
|
+
import * as walrusData from "./contracts/cover_art/deps/ori/data.ts";
|
|
16
17
|
import * as masterReference from "./contracts/recording_master_reference/recording_master_reference.ts";
|
|
17
18
|
import * as engineSession from "./contracts/recording_engine_session/recording_engine_session.ts";
|
|
18
19
|
import * as streamingTranscode from "./contracts/recording_streaming_transcode/recording_streaming_transcode.ts";
|
|
@@ -35,7 +36,7 @@ export interface SetRecordingAdvisoryParams extends RecordingExtensionTarget {
|
|
|
35
36
|
readonly rating: Rating;
|
|
36
37
|
}
|
|
37
38
|
|
|
38
|
-
export function setRecordingAdvisory(p: SetRecordingAdvisoryParams):
|
|
39
|
+
export function setRecordingAdvisory(p: SetRecordingAdvisoryParams): Recipe {
|
|
39
40
|
return (tx) => {
|
|
40
41
|
const rating = tx.add(
|
|
41
42
|
p.rating === "Explicit" ? advisory.explicit({ package: p.recordingAdvisoryPackageId })
|
|
@@ -57,7 +58,7 @@ export interface SetRecordingLanguagesParams extends RecordingExtensionTarget {
|
|
|
57
58
|
readonly languages: TransactionArgument;
|
|
58
59
|
}
|
|
59
60
|
|
|
60
|
-
export function setRecordingLanguages(p: SetRecordingLanguagesParams):
|
|
61
|
+
export function setRecordingLanguages(p: SetRecordingLanguagesParams): Recipe {
|
|
61
62
|
return (tx) => {
|
|
62
63
|
invokeWithAdminCap(tx, p.authority, {
|
|
63
64
|
target: `${p.recordingLanguagePackageId}::recording_language::set_languages`,
|
|
@@ -68,7 +69,7 @@ export function setRecordingLanguages(p: SetRecordingLanguagesParams): TxThunk {
|
|
|
68
69
|
};
|
|
69
70
|
}
|
|
70
71
|
|
|
71
|
-
export function setRecordingInstrumental(p: Omit<SetRecordingLanguagesParams, "languages">):
|
|
72
|
+
export function setRecordingInstrumental(p: Omit<SetRecordingLanguagesParams, "languages">): Recipe {
|
|
72
73
|
return (tx) => {
|
|
73
74
|
invokeWithAdminCap(tx, p.authority, {
|
|
74
75
|
target: `${p.recordingLanguagePackageId}::recording_language::set_instrumental`,
|
|
@@ -87,7 +88,7 @@ interface RecordingWalrusReferenceParams extends RecordingExtensionTarget {
|
|
|
87
88
|
export interface SetRecordingMasterReferenceParams extends RecordingWalrusReferenceParams {
|
|
88
89
|
readonly recordingMasterReferencePackageId: string;
|
|
89
90
|
}
|
|
90
|
-
export function setRecordingMasterReference(p: SetRecordingMasterReferenceParams):
|
|
91
|
+
export function setRecordingMasterReference(p: SetRecordingMasterReferenceParams): Recipe {
|
|
91
92
|
return (tx) => {
|
|
92
93
|
invokeWithAdminCap(tx, p.authority, {
|
|
93
94
|
target: `${p.recordingMasterReferencePackageId}::recording_master_reference::set_master_reference`,
|
|
@@ -109,7 +110,7 @@ export interface SetRecordingStreamingTranscodeParams extends RecordingExtension
|
|
|
109
110
|
/** Sets or replaces the complete streaming-transcode Quilt attached to a Recording. */
|
|
110
111
|
export function setRecordingStreamingTranscode(
|
|
111
112
|
p: SetRecordingStreamingTranscodeParams,
|
|
112
|
-
):
|
|
113
|
+
): Recipe {
|
|
113
114
|
return (tx) => {
|
|
114
115
|
const quilt = tx.moveCall({
|
|
115
116
|
target: `${p.oriPackageId}::data::new_quilt`,
|
|
@@ -174,7 +175,7 @@ function compareBytes(a: Uint8Array, b: Uint8Array): number {
|
|
|
174
175
|
* checked for duplicates here, mirroring `recording_engine_session::new`, so a
|
|
175
176
|
* bad input fails before signing rather than on chain.
|
|
176
177
|
*/
|
|
177
|
-
export function setRecordingEngineSession(p: SetRecordingEngineSessionParams):
|
|
178
|
+
export function setRecordingEngineSession(p: SetRecordingEngineSessionParams): Recipe {
|
|
178
179
|
const stems = p.stems
|
|
179
180
|
.map((stem) => ({ digest: stemDigestBytes(stem.digest), blobId: stem.blobId }))
|
|
180
181
|
.sort((a, b) => compareBytes(a.digest, b.digest));
|
|
@@ -216,7 +217,7 @@ export type UnsetRecordingEngineSessionParams = Omit<
|
|
|
216
217
|
>;
|
|
217
218
|
|
|
218
219
|
/** Removes the Recording's Miso Engine session reference, if present. */
|
|
219
|
-
export function unsetRecordingEngineSession(p: UnsetRecordingEngineSessionParams):
|
|
220
|
+
export function unsetRecordingEngineSession(p: UnsetRecordingEngineSessionParams): Recipe {
|
|
220
221
|
return (tx) => {
|
|
221
222
|
invokeWithAdminCap(tx, p.authority, {
|
|
222
223
|
target: `${p.recordingEngineSessionPackageId}::recording_engine_session::unset_engine_session`,
|
|
@@ -230,7 +231,7 @@ export function unsetRecordingEngineSession(p: UnsetRecordingEngineSessionParams
|
|
|
230
231
|
/** Removes the Recording's streaming-transcode reference, if present. */
|
|
231
232
|
export function unsetRecordingStreamingTranscode(
|
|
232
233
|
p: UnsetRecordingStreamingTranscodeParams,
|
|
233
|
-
):
|
|
234
|
+
): Recipe {
|
|
234
235
|
return (tx) => {
|
|
235
236
|
invokeWithAdminCap(tx, p.authority, {
|
|
236
237
|
target: `${p.recordingStreamingTranscodePackageId}::recording_streaming_transcode::unset_streaming_transcode`,
|
|
@@ -274,7 +275,7 @@ export function recordingStreamingTranscodeFieldId(
|
|
|
274
275
|
export const getRecordingStreamingTranscode = Effect.fn("getRecordingStreamingTranscode")(function* (
|
|
275
276
|
recordingId: string,
|
|
276
277
|
recordingStreamingTranscodePackageId: string,
|
|
277
|
-
): Effect.fn.Return<string | null,
|
|
278
|
+
): Effect.fn.Return<string | null, TransportError, Sui> {
|
|
278
279
|
const found = yield* getRecordingStreamingTranscodesByIds([recordingId], recordingStreamingTranscodePackageId);
|
|
279
280
|
return found[recordingId] ?? null;
|
|
280
281
|
});
|
|
@@ -286,7 +287,7 @@ export const getRecordingStreamingTranscode = Effect.fn("getRecordingStreamingTr
|
|
|
286
287
|
export function getRecordingStreamingTranscodesByIds(
|
|
287
288
|
recordingIdsInput: readonly string[],
|
|
288
289
|
recordingStreamingTranscodePackageId: string,
|
|
289
|
-
): Effect.Effect<Partial<Record<string, string>>,
|
|
290
|
+
): Effect.Effect<Partial<Record<string, string>>, TransportError, Sui> {
|
|
290
291
|
return readSoftFields(
|
|
291
292
|
recordingIdsInput,
|
|
292
293
|
(recordingId) => recordingStreamingTranscodeFieldId(recordingId, recordingStreamingTranscodePackageId),
|
|
@@ -303,17 +304,18 @@ const readSoftFields = Effect.fn("readSoftFields")(function* <T>(
|
|
|
303
304
|
recordingIdsInput: readonly string[],
|
|
304
305
|
fieldIdOf: (recordingId: string) => string,
|
|
305
306
|
parse: (content: Uint8Array) => T,
|
|
306
|
-
): Effect.fn.Return<Partial<Record<string, T>>,
|
|
307
|
+
): Effect.fn.Return<Partial<Record<string, T>>, TransportError, Sui> {
|
|
307
308
|
const recordingIds = [...new Set(recordingIdsInput)];
|
|
308
309
|
if (recordingIds.length === 0) return {};
|
|
309
310
|
const fieldIds = recordingIds.map(fieldIdOf);
|
|
310
|
-
const
|
|
311
|
+
const sui = yield* Sui;
|
|
312
|
+
const results = yield* sui.getObjects(fieldIds.map((id) => ObjectId.make(id)));
|
|
311
313
|
const out: Partial<Record<string, T>> = {};
|
|
312
314
|
recordingIds.forEach((recordingId, index) => {
|
|
313
|
-
const found =
|
|
314
|
-
if (!found) return;
|
|
315
|
+
const found = results[index]!;
|
|
316
|
+
if (!Result.isSuccess(found)) return;
|
|
315
317
|
try {
|
|
316
|
-
out[recordingId] = parse(found.content);
|
|
318
|
+
out[recordingId] = parse(found.success.content);
|
|
317
319
|
} catch {
|
|
318
320
|
// Extension metadata is soft: retain valid tracks when one field is stale.
|
|
319
321
|
}
|
|
@@ -371,9 +373,10 @@ export function recordingEngineSessionFieldId(
|
|
|
371
373
|
export const getRecordingEngineSession = Effect.fn("getRecordingEngineSession")(function* (
|
|
372
374
|
recordingId: string,
|
|
373
375
|
recordingEngineSessionPackageId: string,
|
|
374
|
-
): Effect.fn.Return<RecordingEngineSessionView | null,
|
|
376
|
+
): Effect.fn.Return<RecordingEngineSessionView | null, DecodeError | ObjectUnavailable | TransportError, Sui> {
|
|
375
377
|
const fieldId = recordingEngineSessionFieldId(recordingId, recordingEngineSessionPackageId);
|
|
376
|
-
const
|
|
378
|
+
const sui = yield* Sui;
|
|
379
|
+
const found = yield* sui.getObjectOption(ObjectId.make(fieldId));
|
|
377
380
|
if (Option.isNone(found)) return null;
|
|
378
381
|
return parseRecordingEngineSessionContent(found.value.content);
|
|
379
382
|
});
|
|
@@ -385,7 +388,7 @@ export const getRecordingEngineSession = Effect.fn("getRecordingEngineSession")(
|
|
|
385
388
|
export function getRecordingEngineSessionsByIds(
|
|
386
389
|
recordingIdsInput: readonly string[],
|
|
387
390
|
recordingEngineSessionPackageId: string,
|
|
388
|
-
): Effect.Effect<Partial<Record<string, RecordingEngineSessionView>>,
|
|
391
|
+
): Effect.Effect<Partial<Record<string, RecordingEngineSessionView>>, TransportError, Sui> {
|
|
389
392
|
return readSoftFields(
|
|
390
393
|
recordingIdsInput,
|
|
391
394
|
(recordingId) => recordingEngineSessionFieldId(recordingId, recordingEngineSessionPackageId),
|
|
@@ -433,7 +436,7 @@ export function recordingMasterReferenceFieldId(
|
|
|
433
436
|
export const getRecordingMasterReference = Effect.fn("getRecordingMasterReference")(function* (
|
|
434
437
|
recordingId: string,
|
|
435
438
|
recordingMasterReferencePackageId: string,
|
|
436
|
-
): Effect.fn.Return<string | null,
|
|
439
|
+
): Effect.fn.Return<string | null, TransportError, Sui> {
|
|
437
440
|
const found = yield* getRecordingMasterReferencesByIds([recordingId], recordingMasterReferencePackageId);
|
|
438
441
|
return found[recordingId] ?? null;
|
|
439
442
|
});
|
|
@@ -447,7 +450,7 @@ export const getRecordingMasterReference = Effect.fn("getRecordingMasterReferenc
|
|
|
447
450
|
export function getRecordingMasterReferencesByIds(
|
|
448
451
|
recordingIdsInput: readonly string[],
|
|
449
452
|
recordingMasterReferencePackageId: string,
|
|
450
|
-
): Effect.Effect<Partial<Record<string, string>>,
|
|
453
|
+
): Effect.Effect<Partial<Record<string, string>>, TransportError, Sui> {
|
|
451
454
|
return readSoftFields(
|
|
452
455
|
recordingIdsInput,
|
|
453
456
|
(recordingId) => recordingMasterReferenceFieldId(recordingId, recordingMasterReferencePackageId),
|
|
@@ -13,8 +13,7 @@ import type {
|
|
|
13
13
|
TransactionObjectArgument,
|
|
14
14
|
} from "@mysten/sui/transactions";
|
|
15
15
|
import { Effect, Option } from "effect";
|
|
16
|
-
import {
|
|
17
|
-
import type { TxThunk } from "./transactions.ts";
|
|
16
|
+
import { ObjectId, Sui, type DecodeError, type ObjectUnavailable, type TransportError, type Recipe } from "@unconfirmed/sui-effect";
|
|
18
17
|
import * as releaseDescription from "./contracts/release_description/release_description.ts";
|
|
19
18
|
import * as releaseDspLink from "./contracts/release_dsp_link/release_dsp_link.ts";
|
|
20
19
|
import * as releaseKind from "./contracts/release_kind/release_kind.ts";
|
|
@@ -43,7 +42,7 @@ export type SetReleaseKindParams = ReleaseExtensionTarget & {
|
|
|
43
42
|
};
|
|
44
43
|
|
|
45
44
|
/** Attach the release's self-declared kind (for example "EP" or "Mixtape"). */
|
|
46
|
-
export function setReleaseKind(p: SetReleaseKindParams):
|
|
45
|
+
export function setReleaseKind(p: SetReleaseKindParams): Recipe {
|
|
47
46
|
const bytes = new TextEncoder().encode(p.kind).length;
|
|
48
47
|
if (bytes === 0) throw new Error("setReleaseKind: kind must not be empty");
|
|
49
48
|
if (bytes > 32) {
|
|
@@ -90,8 +89,9 @@ export function parseReleaseKindContent(content: Uint8Array): string {
|
|
|
90
89
|
export const getReleaseKind = Effect.fn("getReleaseKind")(function* (
|
|
91
90
|
releaseId: string,
|
|
92
91
|
releaseKindPackageId: string,
|
|
93
|
-
): Effect.fn.Return<string | null,
|
|
94
|
-
const
|
|
92
|
+
): Effect.fn.Return<string | null, DecodeError | ObjectUnavailable | TransportError, Sui> {
|
|
93
|
+
const sui = yield* Sui;
|
|
94
|
+
const found = yield* sui.getObjectOption(ObjectId.make(releaseKindFieldId(releaseId, releaseKindPackageId)));
|
|
95
95
|
return Option.isNone(found) ? null : parseReleaseKindContent(found.value.content);
|
|
96
96
|
});
|
|
97
97
|
|
|
@@ -101,7 +101,7 @@ export type SetReleaseDescriptionParams = ReleaseExtensionTarget & {
|
|
|
101
101
|
};
|
|
102
102
|
|
|
103
103
|
/** Attach the release's editorial description. */
|
|
104
|
-
export function setReleaseDescription(p: SetReleaseDescriptionParams):
|
|
104
|
+
export function setReleaseDescription(p: SetReleaseDescriptionParams): Recipe {
|
|
105
105
|
const bytes = new TextEncoder().encode(p.description).length;
|
|
106
106
|
if (bytes === 0) {
|
|
107
107
|
throw new Error("setReleaseDescription: description must not be empty");
|
|
@@ -213,7 +213,7 @@ export type SetReleaseDspLinksParams = ReleaseExtensionTarget & {
|
|
|
213
213
|
};
|
|
214
214
|
|
|
215
215
|
/** Attach release-level and per-track DSP links. */
|
|
216
|
-
export function setReleaseDspLinks(p: SetReleaseDspLinksParams):
|
|
216
|
+
export function setReleaseDspLinks(p: SetReleaseDspLinksParams): Recipe {
|
|
217
217
|
return (tx) => {
|
|
218
218
|
for (const link of p.releaseLinks ?? []) {
|
|
219
219
|
const value = buildDspLink(tx, p.releaseDspLinkPackageId, link);
|
package/src/release-graph.ts
CHANGED
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
// is intentionally not used here.
|
|
26
26
|
|
|
27
27
|
import { Transaction, type TransactionObjectArgument } from "@mysten/sui/transactions";
|
|
28
|
+
import type { Recipe } from "@unconfirmed/sui-effect";
|
|
28
29
|
import { contracts } from "@misofm/musicos";
|
|
29
30
|
import { custodyOf, disperseShares, finalizeRelease, recordingAuthorityOf, requiredCommandResult, type AdminCustodyInput, type RecordingAuthorityInput, type ShareRecipient } from "./transactions.ts";
|
|
30
31
|
import { disposeNewAdminCap, invokeWithAdminCap } from "./vault.ts";
|
|
@@ -108,7 +109,7 @@ interface Parts {
|
|
|
108
109
|
}
|
|
109
110
|
|
|
110
111
|
/** Builds the entire graph in a single transaction (see file header for ordering). */
|
|
111
|
-
export function publishReleaseGraph(params: PublishReleaseGraphParams):
|
|
112
|
+
export function publishReleaseGraph(params: PublishReleaseGraphParams): Recipe {
|
|
112
113
|
const { misoPackageId: pkg, minatoPackageId } = params;
|
|
113
114
|
return (tx) => {
|
|
114
115
|
// ── 1) Create every composition, then every recording (borrow-before-share) ──
|
package/src/royalty.ts
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
import { Transaction, type TransactionArgument, type TransactionObjectArgument } from "@mysten/sui/transactions";
|
|
11
11
|
import { deriveObjectID, normalizeStructTag } from "@mysten/sui/utils";
|
|
12
12
|
import { Effect, Schema } from "effect";
|
|
13
|
-
import {
|
|
13
|
+
import { ObjectId, Sui, SuiSchema, type DecodeError, type ObjectUnavailable, type TransportError } from "@unconfirmed/sui-effect";
|
|
14
14
|
|
|
15
15
|
import { RoyaltyPool as RoyaltyPoolBcs } from "./contracts/royalty_pool/pool.ts";
|
|
16
16
|
import { Stake as RoyaltyStakeBcs } from "./contracts/royalty_pool/stake.ts";
|
|
@@ -108,43 +108,37 @@ function mapRoutedStake(
|
|
|
108
108
|
/** One royalty pool by object ID, or `null` when no such object exists. */
|
|
109
109
|
export const getRoyaltyPoolById = Effect.fn("getRoyaltyPoolById")(function* (
|
|
110
110
|
poolId: string,
|
|
111
|
-
): Effect.fn.Return<RoyaltyPool | null,
|
|
112
|
-
const
|
|
111
|
+
): Effect.fn.Return<RoyaltyPool | null, DecodeError | ObjectUnavailable | TransportError, Sui> {
|
|
112
|
+
const sui = yield* Sui;
|
|
113
|
+
const id = ObjectId.make(poolId);
|
|
114
|
+
const found = yield* sui.getObjectOption(id);
|
|
113
115
|
if (found._tag === "None") return null;
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
RoyaltyPool,
|
|
117
|
-
found.value.content,
|
|
118
|
-
{ type: "RoyaltyPool", objectId: poolId },
|
|
119
|
-
);
|
|
116
|
+
const parsed = yield* SuiSchema.decode(SuiSchema.bcs(RoyaltyPoolBcs), found.value.content, { objectId: id, actualType: found.value.type });
|
|
117
|
+
return new RoyaltyPool(mapRoyaltyPool(poolId, parsed));
|
|
120
118
|
});
|
|
121
119
|
|
|
122
120
|
/** One owned `Stake<Share>` by object ID, or `null` when no such object exists. */
|
|
123
121
|
export const getRoyaltyStakeById = Effect.fn("getRoyaltyStakeById")(function* (
|
|
124
122
|
stakeId: string,
|
|
125
|
-
): Effect.fn.Return<RoyaltyStake | null,
|
|
126
|
-
const
|
|
123
|
+
): Effect.fn.Return<RoyaltyStake | null, DecodeError | ObjectUnavailable | TransportError, Sui> {
|
|
124
|
+
const sui = yield* Sui;
|
|
125
|
+
const id = ObjectId.make(stakeId);
|
|
126
|
+
const found = yield* sui.getObjectOption(id);
|
|
127
127
|
if (found._tag === "None") return null;
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
RoyaltyStake,
|
|
131
|
-
found.value.content,
|
|
132
|
-
{ type: "RoyaltyStake", objectId: stakeId },
|
|
133
|
-
);
|
|
128
|
+
const parsed = yield* SuiSchema.decode(SuiSchema.bcs(RoyaltyStakeBcs), found.value.content, { objectId: id, actualType: found.value.type });
|
|
129
|
+
return new RoyaltyStake(mapRoyaltyStake(stakeId, parsed));
|
|
134
130
|
});
|
|
135
131
|
|
|
136
132
|
/** One shared routed stake by object ID, or `null` when no such object exists. */
|
|
137
133
|
export const getRoutedStakeById = Effect.fn("getRoutedStakeById")(function* (
|
|
138
134
|
routedStakeId: string,
|
|
139
|
-
): Effect.fn.Return<RoutedStake | null,
|
|
140
|
-
const
|
|
135
|
+
): Effect.fn.Return<RoutedStake | null, DecodeError | ObjectUnavailable | TransportError, Sui> {
|
|
136
|
+
const sui = yield* Sui;
|
|
137
|
+
const id = ObjectId.make(routedStakeId);
|
|
138
|
+
const found = yield* sui.getObjectOption(id);
|
|
141
139
|
if (found._tag === "None") return null;
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
RoutedStake,
|
|
145
|
-
found.value.content,
|
|
146
|
-
{ type: "RoutedStake", objectId: routedStakeId },
|
|
147
|
-
);
|
|
140
|
+
const parsed = yield* SuiSchema.decode(SuiSchema.bcs(RoutedStakeBcs), found.value.content, { objectId: id, actualType: found.value.type });
|
|
141
|
+
return new RoutedStake(mapRoutedStake(routedStakeId, parsed));
|
|
148
142
|
});
|
|
149
143
|
|
|
150
144
|
/** Deterministically derive the royalty-pool ID for a parent and type pair. */
|