A lexicon to manage your song recordings with all rights owner information

Switch to camel case

Hilke Ros 3a03fec1 dd42f226

Changed files
+128 -124
lexicons
src
+1 -1
lexicons/ch/indiemusi/alpha/actor/master_owner.json lexicons/ch/indiemusi/alpha/actor/masterOwner.json
··· 1 1 { 2 2 "lexicon": 1, 3 - "id": "ch.indiemusi.alpha.actor.master_owner", 3 + "id": "ch.indiemusi.alpha.actor.masterOwner", 4 4 "defs": { 5 5 "main": { 6 6 "type": "record",
+5 -5
lexicons/ch/indiemusi/alpha/actor/publishing_owner.json lexicons/ch/indiemusi/alpha/actor/publishingOwner.json
··· 1 1 { 2 2 "lexicon": 1, 3 - "id": "ch.indiemusi.alpha.actor.publishing_owner", 3 + "id": "ch.indiemusi.alpha.actor.publishingOwner", 4 4 "defs": { 5 5 "main": { 6 6 "key": "literal:self", ··· 9 9 "record": { 10 10 "type": "object", 11 11 "properties": { 12 - "first_name": { 12 + "firstName": { 13 13 "type": "string", 14 14 "maxLength": 255 15 15 }, 16 - "last_name": { 16 + "lastName": { 17 17 "type": "string", 18 18 "maxLength": 255 19 19 }, 20 - "company_name": { 20 + "companyName": { 21 21 "type": "string", 22 22 "maxLength": 255 23 23 }, ··· 26 26 "description": "Interested Party Information (IPI) number assigned to the publishing owner by a collecting society", 27 27 "maxLength": 11 28 28 }, 29 - "collecting_society": { 29 + "collectingSociety": { 30 30 "type": "string", 31 31 "maxLength": 255 32 32 }
+4 -4
lexicons/ch/indiemusi/alpha/recording.json
··· 41 41 "type": "string", 42 42 "description": "ISRC (International Standard Recording Code) with which the recording is registered" 43 43 }, 44 - "master_owner": { 44 + "masterOwner": { 45 45 "type": "object", 46 46 "description": "The entity (person or company) that owns the master recording rights", 47 47 "properties": { ··· 52 52 "type": "string", 53 53 "format": "did" 54 54 }, 55 - "master_owner": { 55 + "masterOwner": { 56 56 "type": "ref", 57 - "ref": "ch.indiemusi.alpha.actor.master_owner" 57 + "ref": "ch.indiemusi.alpha.actor.masterOwner" 58 58 } 59 59 } 60 60 }, ··· 62 62 "type": "integer", 63 63 "description": "Duration of the recording in seconds" 64 64 }, 65 - "audio_file": { 65 + "audioFile": { 66 66 "type": "blob", 67 67 "size": "integer" 68 68 }
+2 -2
lexicons/ch/indiemusi/alpha/release.json
··· 40 40 "description": "GTIN (Global Trade Item Number) with which the release is registered, e.g. EAN or UPC", 41 41 "maxLength": 14 42 42 }, 43 - "release_date": { 43 + "releaseDate": { 44 44 "type": "string", 45 45 "format": "datetime" 46 46 }, 47 - "artwork_image": { 47 + "artworkImage": { 48 48 "type": "blob", 49 49 "size": "integer" 50 50 },
+7 -7
lexicons/ch/indiemusi/alpha/song.json
··· 7 7 "description": "A song or musical work: the melody, lyrics, and arrangement created by composers and authors", 8 8 "record": { 9 9 "type": "object", 10 - "required": ["title", "interested_parties"], 10 + "required": ["title", "interestedParties"], 11 11 "properties": { 12 12 "title": { 13 13 "type": "string", ··· 18 18 "description": "ISWC (International Standard Musical Work Code) with which the song is registered at a collecting society", 19 19 "maxLength": 13 20 20 }, 21 - "interested_parties": { 21 + "interestedParties": { 22 22 "type": "array", 23 23 "description": "List of interested parties (authors, composers, publishers) associated with this song", 24 24 "minLength": 1, ··· 38 38 "type": "string", 39 39 "maxLength": 11 40 40 }, 41 - "collecting_society": { 41 + "collectingSociety": { 42 42 "type": "string", 43 43 "maxLength": 255 44 44 }, 45 - "performance_royalties_percentage": { 45 + "performanceRoyaltiesPercentage": { 46 46 "type": "integer", 47 47 "description": "Percentage of performance royalties allocated to this interested party, 10000 = 100%" 48 48 }, 49 - "mechanical_royalties_percentage": { 49 + "mechanicalRoyaltiesPercentage": { 50 50 "type": "integer", 51 51 "description": "Percentage of mechanical royalties allocated to this interested party, 10000 = 100%" 52 52 }, ··· 54 54 "type": "string", 55 55 "format": "did" 56 56 }, 57 - "publishing_owner": { 57 + "publishingOwner": { 58 58 "type": "ref", 59 - "ref": "ch.indiemusi.alpha.actor.publishing_owner" 59 + "ref": "ch.indiemusi.alpha.actor.publishingOwner" 60 60 } 61 61 } 62 62 }
+12 -8
src/features/actors/handlers.tsx
··· 91 91 oauthClient, 92 92 ); 93 93 94 - const newPublishingOwner = await client.ch.indiemusi.alpha.actor 95 - .publishingOwner.createRecord({ 96 - first_name: firstName?.trim(), 97 - last_name: lastName?.trim(), 98 - company_name: companyName?.trim(), 99 - ipi: cleanIpi, 100 - collecting_society: collectingSociety?.trim(), 101 - }); 94 + // const newPublishingOwner = await client.ch.indiemusi.alpha.actor 95 + // .publishingOwner.createRecord({ 96 + // first_name: firstName?.trim(), 97 + // last_name: lastName?.trim(), 98 + // company_name: companyName?.trim(), 99 + // ipi: cleanIpi, 100 + // collecting_society: collectingSociety?.trim(), 101 + // }); 102 + 103 + const newArtist = await client.ch.indiemusi.alpha.actor.artist.createRecord({ 104 + name: "Hilke" 105 + }) 102 106 103 107 return Response.redirect( 104 108 new URL(
+97 -97
src/generated_client.ts
··· 1 1 // Generated TypeScript client for AT Protocol records 2 - // Generated at: 2025-10-05 14:41:13 UTC 2 + // Generated at: 2025-10-12 08:03:29 UTC 3 3 // Lexicons: 23 4 4 5 5 /** ··· 906 906 /** ISRC (International Standard Recording Code) with which the recording is registered */ 907 907 isrc?: string; 908 908 /** The entity (person or company) that owns the master recording rights */ 909 - master_owner?: Record<string, unknown>; 909 + masterOwner?: Record<string, unknown>; 910 910 /** Duration of the recording in seconds */ 911 911 duration?: number; 912 - audio_file?: BlobRef; 912 + audioFile?: BlobRef; 913 913 } 914 914 915 915 export type ChIndiemusiAlphaRecordingSortFields = "title" | "isrc" | "duration"; ··· 929 929 artists: Record<string, unknown>[]; 930 930 /** GTIN (Global Trade Item Number) with which the release is registered, e.g. EAN or UPC */ 931 931 gtin?: string; 932 - release_date?: string; 933 - artwork_image?: BlobRef; 932 + releaseDate?: string; 933 + artworkImage?: BlobRef; 934 934 /** List of recordings (ch.indiemusi.alpha.recording) included in this release */ 935 935 recordings: ChIndiemusiAlphaRecording[]; 936 936 } ··· 938 938 export type ChIndiemusiAlphaReleaseSortFields = 939 939 | "title" 940 940 | "gtin" 941 - | "release_date"; 941 + | "releaseDate"; 942 942 943 943 export interface ChIndiemusiAlphaSong { 944 944 title: string; 945 945 /** ISWC (International Standard Musical Work Code) with which the song is registered at a collecting society */ 946 946 iswc?: string; 947 947 /** List of interested parties (authors, composers, publishers) associated with this song */ 948 - interested_parties: Record<string, unknown>[]; 948 + interestedParties: Record<string, unknown>[]; 949 949 } 950 950 951 951 export type ChIndiemusiAlphaSongSortFields = "title" | "iswc"; 952 952 953 - export interface ChIndiemusiAlphaActorPublishingOwner { 954 - first_name?: string; 955 - last_name?: string; 956 - company_name?: string; 957 - /** Interested Party Information (IPI) number assigned to the publishing owner by a collecting society */ 958 - ipi?: string; 959 - collecting_society?: string; 960 - } 961 - 962 - export type ChIndiemusiAlphaActorPublishingOwnerSortFields = 963 - | "first_name" 964 - | "last_name" 965 - | "company_name" 966 - | "ipi" 967 - | "collecting_society"; 968 - 969 953 export interface ChIndiemusiAlphaActorArtist { 970 954 name: string; 971 955 } ··· 977 961 } 978 962 979 963 export type ChIndiemusiAlphaActorMasterOwnerSortFields = "name"; 964 + 965 + export interface ChIndiemusiAlphaActorPublishingOwner { 966 + firstName?: string; 967 + lastName?: string; 968 + companyName?: string; 969 + /** Interested Party Information (IPI) number assigned to the publishing owner by a collecting society */ 970 + ipi?: string; 971 + collectingSociety?: string; 972 + } 973 + 974 + export type ChIndiemusiAlphaActorPublishingOwnerSortFields = 975 + | "firstName" 976 + | "lastName" 977 + | "companyName" 978 + | "ipi" 979 + | "collectingSociety"; 980 980 981 981 export interface ComAtprotoLabelDefsLabel { 982 982 /** Optionally, CID specifying the specific version of 'uri' resource this label applies to. */ ··· 1811 1811 } 1812 1812 } 1813 1813 1814 - class PublishingOwnerActorAlphaIndiemusiChClient { 1814 + class ArtistActorAlphaIndiemusiChClient { 1815 1815 private readonly client: SlicesClient; 1816 1816 1817 1817 constructor(client: SlicesClient) { ··· 1823 1823 limit?: number; 1824 1824 cursor?: string; 1825 1825 where?: { 1826 - [ 1827 - K in 1828 - | ChIndiemusiAlphaActorPublishingOwnerSortFields 1829 - | IndexedRecordFields 1830 - ]?: WhereCondition; 1826 + [K in ChIndiemusiAlphaActorArtistSortFields | IndexedRecordFields]?: 1827 + WhereCondition; 1831 1828 }; 1832 1829 orWhere?: { 1833 - [ 1834 - K in 1835 - | ChIndiemusiAlphaActorPublishingOwnerSortFields 1836 - | IndexedRecordFields 1837 - ]?: WhereCondition; 1830 + [K in ChIndiemusiAlphaActorArtistSortFields | IndexedRecordFields]?: 1831 + WhereCondition; 1838 1832 }; 1839 - sortBy?: SortField<ChIndiemusiAlphaActorPublishingOwnerSortFields>[]; 1833 + sortBy?: SortField<ChIndiemusiAlphaActorArtistSortFields>[]; 1840 1834 }, 1841 - ): Promise<GetRecordsResponse<ChIndiemusiAlphaActorPublishingOwner>> { 1835 + ): Promise<GetRecordsResponse<ChIndiemusiAlphaActorArtist>> { 1842 1836 return await this.client.getRecords( 1843 - "ch.indiemusi.alpha.actor.publishing_owner", 1837 + "ch.indiemusi.alpha.actor.artist", 1844 1838 params, 1845 1839 ); 1846 1840 } 1847 1841 1848 1842 async getRecord( 1849 1843 params: GetRecordParams, 1850 - ): Promise<RecordResponse<ChIndiemusiAlphaActorPublishingOwner>> { 1844 + ): Promise<RecordResponse<ChIndiemusiAlphaActorArtist>> { 1851 1845 return await this.client.getRecord( 1852 - "ch.indiemusi.alpha.actor.publishing_owner", 1846 + "ch.indiemusi.alpha.actor.artist", 1853 1847 params, 1854 1848 ); 1855 1849 } ··· 1859 1853 limit?: number; 1860 1854 cursor?: string; 1861 1855 where?: { 1862 - [ 1863 - K in 1864 - | ChIndiemusiAlphaActorPublishingOwnerSortFields 1865 - | IndexedRecordFields 1866 - ]?: WhereCondition; 1856 + [K in ChIndiemusiAlphaActorArtistSortFields | IndexedRecordFields]?: 1857 + WhereCondition; 1867 1858 }; 1868 1859 orWhere?: { 1869 - [ 1870 - K in 1871 - | ChIndiemusiAlphaActorPublishingOwnerSortFields 1872 - | IndexedRecordFields 1873 - ]?: WhereCondition; 1860 + [K in ChIndiemusiAlphaActorArtistSortFields | IndexedRecordFields]?: 1861 + WhereCondition; 1874 1862 }; 1875 - sortBy?: SortField<ChIndiemusiAlphaActorPublishingOwnerSortFields>[]; 1863 + sortBy?: SortField<ChIndiemusiAlphaActorArtistSortFields>[]; 1876 1864 }, 1877 1865 ): Promise<CountRecordsResponse> { 1878 1866 return await this.client.countRecords( 1879 - "ch.indiemusi.alpha.actor.publishing_owner", 1867 + "ch.indiemusi.alpha.actor.artist", 1880 1868 params, 1881 1869 ); 1882 1870 } 1883 1871 1884 1872 async createRecord( 1885 - record: ChIndiemusiAlphaActorPublishingOwner, 1873 + record: ChIndiemusiAlphaActorArtist, 1886 1874 useSelfRkey?: boolean, 1887 1875 ): Promise<{ uri: string; cid: string }> { 1888 1876 return await this.client.createRecord( 1889 - "ch.indiemusi.alpha.actor.publishing_owner", 1877 + "ch.indiemusi.alpha.actor.artist", 1890 1878 record, 1891 1879 useSelfRkey, 1892 1880 ); ··· 1894 1882 1895 1883 async updateRecord( 1896 1884 rkey: string, 1897 - record: ChIndiemusiAlphaActorPublishingOwner, 1885 + record: ChIndiemusiAlphaActorArtist, 1898 1886 ): Promise<{ uri: string; cid: string }> { 1899 1887 return await this.client.updateRecord( 1900 - "ch.indiemusi.alpha.actor.publishing_owner", 1888 + "ch.indiemusi.alpha.actor.artist", 1901 1889 rkey, 1902 1890 record, 1903 1891 ); ··· 1905 1893 1906 1894 async deleteRecord(rkey: string): Promise<void> { 1907 1895 return await this.client.deleteRecord( 1908 - "ch.indiemusi.alpha.actor.publishing_owner", 1896 + "ch.indiemusi.alpha.actor.artist", 1909 1897 rkey, 1910 1898 ); 1911 1899 } 1912 1900 } 1913 1901 1914 - class ArtistActorAlphaIndiemusiChClient { 1902 + class MasterOwnerActorAlphaIndiemusiChClient { 1915 1903 private readonly client: SlicesClient; 1916 1904 1917 1905 constructor(client: SlicesClient) { ··· 1923 1911 limit?: number; 1924 1912 cursor?: string; 1925 1913 where?: { 1926 - [K in ChIndiemusiAlphaActorArtistSortFields | IndexedRecordFields]?: 1927 - WhereCondition; 1914 + [ 1915 + K in ChIndiemusiAlphaActorMasterOwnerSortFields | IndexedRecordFields 1916 + ]?: WhereCondition; 1928 1917 }; 1929 1918 orWhere?: { 1930 - [K in ChIndiemusiAlphaActorArtistSortFields | IndexedRecordFields]?: 1931 - WhereCondition; 1919 + [ 1920 + K in ChIndiemusiAlphaActorMasterOwnerSortFields | IndexedRecordFields 1921 + ]?: WhereCondition; 1932 1922 }; 1933 - sortBy?: SortField<ChIndiemusiAlphaActorArtistSortFields>[]; 1923 + sortBy?: SortField<ChIndiemusiAlphaActorMasterOwnerSortFields>[]; 1934 1924 }, 1935 - ): Promise<GetRecordsResponse<ChIndiemusiAlphaActorArtist>> { 1925 + ): Promise<GetRecordsResponse<ChIndiemusiAlphaActorMasterOwner>> { 1936 1926 return await this.client.getRecords( 1937 - "ch.indiemusi.alpha.actor.artist", 1927 + "ch.indiemusi.alpha.actor.masterOwner", 1938 1928 params, 1939 1929 ); 1940 1930 } 1941 1931 1942 1932 async getRecord( 1943 1933 params: GetRecordParams, 1944 - ): Promise<RecordResponse<ChIndiemusiAlphaActorArtist>> { 1934 + ): Promise<RecordResponse<ChIndiemusiAlphaActorMasterOwner>> { 1945 1935 return await this.client.getRecord( 1946 - "ch.indiemusi.alpha.actor.artist", 1936 + "ch.indiemusi.alpha.actor.masterOwner", 1947 1937 params, 1948 1938 ); 1949 1939 } ··· 1953 1943 limit?: number; 1954 1944 cursor?: string; 1955 1945 where?: { 1956 - [K in ChIndiemusiAlphaActorArtistSortFields | IndexedRecordFields]?: 1957 - WhereCondition; 1946 + [ 1947 + K in ChIndiemusiAlphaActorMasterOwnerSortFields | IndexedRecordFields 1948 + ]?: WhereCondition; 1958 1949 }; 1959 1950 orWhere?: { 1960 - [K in ChIndiemusiAlphaActorArtistSortFields | IndexedRecordFields]?: 1961 - WhereCondition; 1951 + [ 1952 + K in ChIndiemusiAlphaActorMasterOwnerSortFields | IndexedRecordFields 1953 + ]?: WhereCondition; 1962 1954 }; 1963 - sortBy?: SortField<ChIndiemusiAlphaActorArtistSortFields>[]; 1955 + sortBy?: SortField<ChIndiemusiAlphaActorMasterOwnerSortFields>[]; 1964 1956 }, 1965 1957 ): Promise<CountRecordsResponse> { 1966 1958 return await this.client.countRecords( 1967 - "ch.indiemusi.alpha.actor.artist", 1959 + "ch.indiemusi.alpha.actor.masterOwner", 1968 1960 params, 1969 1961 ); 1970 1962 } 1971 1963 1972 1964 async createRecord( 1973 - record: ChIndiemusiAlphaActorArtist, 1965 + record: ChIndiemusiAlphaActorMasterOwner, 1974 1966 useSelfRkey?: boolean, 1975 1967 ): Promise<{ uri: string; cid: string }> { 1976 1968 return await this.client.createRecord( 1977 - "ch.indiemusi.alpha.actor.artist", 1969 + "ch.indiemusi.alpha.actor.masterOwner", 1978 1970 record, 1979 1971 useSelfRkey, 1980 1972 ); ··· 1982 1974 1983 1975 async updateRecord( 1984 1976 rkey: string, 1985 - record: ChIndiemusiAlphaActorArtist, 1977 + record: ChIndiemusiAlphaActorMasterOwner, 1986 1978 ): Promise<{ uri: string; cid: string }> { 1987 1979 return await this.client.updateRecord( 1988 - "ch.indiemusi.alpha.actor.artist", 1980 + "ch.indiemusi.alpha.actor.masterOwner", 1989 1981 rkey, 1990 1982 record, 1991 1983 ); ··· 1993 1985 1994 1986 async deleteRecord(rkey: string): Promise<void> { 1995 1987 return await this.client.deleteRecord( 1996 - "ch.indiemusi.alpha.actor.artist", 1988 + "ch.indiemusi.alpha.actor.masterOwner", 1997 1989 rkey, 1998 1990 ); 1999 1991 } 2000 1992 } 2001 1993 2002 - class MasterOwnerActorAlphaIndiemusiChClient { 1994 + class PublishingOwnerActorAlphaIndiemusiChClient { 2003 1995 private readonly client: SlicesClient; 2004 1996 2005 1997 constructor(client: SlicesClient) { ··· 2012 2004 cursor?: string; 2013 2005 where?: { 2014 2006 [ 2015 - K in ChIndiemusiAlphaActorMasterOwnerSortFields | IndexedRecordFields 2007 + K in 2008 + | ChIndiemusiAlphaActorPublishingOwnerSortFields 2009 + | IndexedRecordFields 2016 2010 ]?: WhereCondition; 2017 2011 }; 2018 2012 orWhere?: { 2019 2013 [ 2020 - K in ChIndiemusiAlphaActorMasterOwnerSortFields | IndexedRecordFields 2014 + K in 2015 + | ChIndiemusiAlphaActorPublishingOwnerSortFields 2016 + | IndexedRecordFields 2021 2017 ]?: WhereCondition; 2022 2018 }; 2023 - sortBy?: SortField<ChIndiemusiAlphaActorMasterOwnerSortFields>[]; 2019 + sortBy?: SortField<ChIndiemusiAlphaActorPublishingOwnerSortFields>[]; 2024 2020 }, 2025 - ): Promise<GetRecordsResponse<ChIndiemusiAlphaActorMasterOwner>> { 2021 + ): Promise<GetRecordsResponse<ChIndiemusiAlphaActorPublishingOwner>> { 2026 2022 return await this.client.getRecords( 2027 - "ch.indiemusi.alpha.actor.master_owner", 2023 + "ch.indiemusi.alpha.actor.publishingOwner", 2028 2024 params, 2029 2025 ); 2030 2026 } 2031 2027 2032 2028 async getRecord( 2033 2029 params: GetRecordParams, 2034 - ): Promise<RecordResponse<ChIndiemusiAlphaActorMasterOwner>> { 2030 + ): Promise<RecordResponse<ChIndiemusiAlphaActorPublishingOwner>> { 2035 2031 return await this.client.getRecord( 2036 - "ch.indiemusi.alpha.actor.master_owner", 2032 + "ch.indiemusi.alpha.actor.publishingOwner", 2037 2033 params, 2038 2034 ); 2039 2035 } ··· 2044 2040 cursor?: string; 2045 2041 where?: { 2046 2042 [ 2047 - K in ChIndiemusiAlphaActorMasterOwnerSortFields | IndexedRecordFields 2043 + K in 2044 + | ChIndiemusiAlphaActorPublishingOwnerSortFields 2045 + | IndexedRecordFields 2048 2046 ]?: WhereCondition; 2049 2047 }; 2050 2048 orWhere?: { 2051 2049 [ 2052 - K in ChIndiemusiAlphaActorMasterOwnerSortFields | IndexedRecordFields 2050 + K in 2051 + | ChIndiemusiAlphaActorPublishingOwnerSortFields 2052 + | IndexedRecordFields 2053 2053 ]?: WhereCondition; 2054 2054 }; 2055 - sortBy?: SortField<ChIndiemusiAlphaActorMasterOwnerSortFields>[]; 2055 + sortBy?: SortField<ChIndiemusiAlphaActorPublishingOwnerSortFields>[]; 2056 2056 }, 2057 2057 ): Promise<CountRecordsResponse> { 2058 2058 return await this.client.countRecords( 2059 - "ch.indiemusi.alpha.actor.master_owner", 2059 + "ch.indiemusi.alpha.actor.publishingOwner", 2060 2060 params, 2061 2061 ); 2062 2062 } 2063 2063 2064 2064 async createRecord( 2065 - record: ChIndiemusiAlphaActorMasterOwner, 2065 + record: ChIndiemusiAlphaActorPublishingOwner, 2066 2066 useSelfRkey?: boolean, 2067 2067 ): Promise<{ uri: string; cid: string }> { 2068 2068 return await this.client.createRecord( 2069 - "ch.indiemusi.alpha.actor.master_owner", 2069 + "ch.indiemusi.alpha.actor.publishingOwner", 2070 2070 record, 2071 2071 useSelfRkey, 2072 2072 ); ··· 2074 2074 2075 2075 async updateRecord( 2076 2076 rkey: string, 2077 - record: ChIndiemusiAlphaActorMasterOwner, 2077 + record: ChIndiemusiAlphaActorPublishingOwner, 2078 2078 ): Promise<{ uri: string; cid: string }> { 2079 2079 return await this.client.updateRecord( 2080 - "ch.indiemusi.alpha.actor.master_owner", 2080 + "ch.indiemusi.alpha.actor.publishingOwner", 2081 2081 rkey, 2082 2082 record, 2083 2083 ); ··· 2085 2085 2086 2086 async deleteRecord(rkey: string): Promise<void> { 2087 2087 return await this.client.deleteRecord( 2088 - "ch.indiemusi.alpha.actor.master_owner", 2088 + "ch.indiemusi.alpha.actor.publishingOwner", 2089 2089 rkey, 2090 2090 ); 2091 2091 } 2092 2092 } 2093 2093 2094 2094 class ActorAlphaIndiemusiChClient { 2095 - readonly publishingOwner: PublishingOwnerActorAlphaIndiemusiChClient; 2096 2095 readonly artist: ArtistActorAlphaIndiemusiChClient; 2097 2096 readonly masterOwner: MasterOwnerActorAlphaIndiemusiChClient; 2097 + readonly publishingOwner: PublishingOwnerActorAlphaIndiemusiChClient; 2098 2098 private readonly client: SlicesClient; 2099 2099 2100 2100 constructor(client: SlicesClient) { 2101 2101 this.client = client; 2102 + this.artist = new ArtistActorAlphaIndiemusiChClient(client); 2103 + this.masterOwner = new MasterOwnerActorAlphaIndiemusiChClient(client); 2102 2104 this.publishingOwner = new PublishingOwnerActorAlphaIndiemusiChClient( 2103 2105 client, 2104 2106 ); 2105 - this.artist = new ArtistActorAlphaIndiemusiChClient(client); 2106 - this.masterOwner = new MasterOwnerActorAlphaIndiemusiChClient(client); 2107 2107 } 2108 2108 } 2109 2109