@eluvio/elv-client-js 3.1.66 → 3.1.67
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 +13 -2
- package/dist/ElvClient-min.js +2 -2
- package/dist/ElvClient-node-min.js +2 -2
- package/dist/ElvFrameClient-min.js +1 -1
- package/dist/src/ElvClient.js +6 -3
- package/dist/src/client/ContentAccess.js +868 -818
- package/package-lock.json +16 -11
- package/package.json +3 -1
- package/src/ElvClient.js +4 -1
- package/src/client/ContentAccess.js +29 -0
- package/testScripts/InitializeTenant.js +32 -1
- package/testScripts/Test.js +19 -0
- package/typeSpecs/Default.js +80 -0
- package/typeSpecs/DropEventSite.js +673 -0
- package/typeSpecs/EventSite.js +776 -0
- package/typeSpecs/EventSiteExtras.js +59 -0
- package/typeSpecs/EventTenant.js +86 -0
- package/typeSpecs/LanguageCodes.js +221 -0
- package/typeSpecs/MainSite.js +279 -0
- package/typeSpecs/Marketplace.js +203 -0
- package/typeSpecs/NFTCollection.js +69 -0
- package/typeSpecs/NFTTemplate.js +269 -0
- package/utilities/ChannelCreate.js +205 -0
- package/utilities/ChannelStartVaLOffering.js +63 -29
- package/utilities/LibraryListObjects.js +2 -0
- package/utilities/MezUnifyAudioDrmKeys.js +69 -0
package/package-lock.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eluvio/elv-client-js",
|
|
3
|
-
"version": "3.1.
|
|
3
|
+
"version": "3.1.67",
|
|
4
4
|
"lockfileVersion": 1,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"dependencies": {
|
|
@@ -3205,6 +3205,11 @@
|
|
|
3205
3205
|
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
|
|
3206
3206
|
"dev": true
|
|
3207
3207
|
},
|
|
3208
|
+
"country-codes-list": {
|
|
3209
|
+
"version": "1.6.8",
|
|
3210
|
+
"resolved": "https://registry.npmjs.org/country-codes-list/-/country-codes-list-1.6.8.tgz",
|
|
3211
|
+
"integrity": "sha512-wsqH44Yx3pTyPA77jYt2Nxso6kXziMwxI37fJFQLcd/3ome8Gqz6areaeG1w8zfeU9i+cZvJA3k2Mo5EW7rAtg=="
|
|
3212
|
+
},
|
|
3208
3213
|
"create-ecdh": {
|
|
3209
3214
|
"version": "4.0.3",
|
|
3210
3215
|
"resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz",
|
|
@@ -7731,9 +7736,9 @@
|
|
|
7731
7736
|
}
|
|
7732
7737
|
},
|
|
7733
7738
|
"minizlib": {
|
|
7734
|
-
"version": "2.1.
|
|
7735
|
-
"resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.
|
|
7736
|
-
"integrity": "sha512-
|
|
7739
|
+
"version": "2.1.2",
|
|
7740
|
+
"resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
|
|
7741
|
+
"integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
|
|
7737
7742
|
"dev": true,
|
|
7738
7743
|
"requires": {
|
|
7739
7744
|
"minipass": "^3.0.0",
|
|
@@ -8813,9 +8818,9 @@
|
|
|
8813
8818
|
"dev": true
|
|
8814
8819
|
},
|
|
8815
8820
|
"path-parse": {
|
|
8816
|
-
"version": "1.0.
|
|
8817
|
-
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.
|
|
8818
|
-
"integrity": "sha512-
|
|
8821
|
+
"version": "1.0.7",
|
|
8822
|
+
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
|
|
8823
|
+
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
|
|
8819
8824
|
"dev": true
|
|
8820
8825
|
},
|
|
8821
8826
|
"path-to-regexp": {
|
|
@@ -10635,15 +10640,15 @@
|
|
|
10635
10640
|
"dev": true
|
|
10636
10641
|
},
|
|
10637
10642
|
"tar": {
|
|
10638
|
-
"version": "6.
|
|
10639
|
-
"resolved": "https://registry.npmjs.org/tar/-/tar-6.
|
|
10640
|
-
"integrity": "sha512-
|
|
10643
|
+
"version": "6.1.11",
|
|
10644
|
+
"resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz",
|
|
10645
|
+
"integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==",
|
|
10641
10646
|
"dev": true,
|
|
10642
10647
|
"requires": {
|
|
10643
10648
|
"chownr": "^2.0.0",
|
|
10644
10649
|
"fs-minipass": "^2.0.0",
|
|
10645
10650
|
"minipass": "^3.0.0",
|
|
10646
|
-
"minizlib": "^2.1.
|
|
10651
|
+
"minizlib": "^2.1.1",
|
|
10647
10652
|
"mkdirp": "^1.0.3",
|
|
10648
10653
|
"yallist": "^4.0.0"
|
|
10649
10654
|
},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eluvio/elv-client-js",
|
|
3
|
-
"version": "3.1.
|
|
3
|
+
"version": "3.1.67",
|
|
4
4
|
"description": "Javascript client for the Eluvio Content Fabric",
|
|
5
5
|
"main": "src/ElvClient.js",
|
|
6
6
|
"author": "Kevin Talmadge",
|
|
@@ -45,6 +45,7 @@
|
|
|
45
45
|
"/contracts",
|
|
46
46
|
"/src",
|
|
47
47
|
"/testScripts",
|
|
48
|
+
"/typeSpecs",
|
|
48
49
|
"/utilities",
|
|
49
50
|
"TestConfiguration.json",
|
|
50
51
|
"LICENSE",
|
|
@@ -64,6 +65,7 @@
|
|
|
64
65
|
"buffer": "^5.2.1",
|
|
65
66
|
"cbor": "^4.1.5",
|
|
66
67
|
"columnify": "^1.5.4",
|
|
68
|
+
"country-codes-list": "^1.6.8",
|
|
67
69
|
"crocks": "^0.12.4",
|
|
68
70
|
"deep-equal": "^1.0.1",
|
|
69
71
|
"ellipsize": "^0.1.0",
|
package/src/ElvClient.js
CHANGED
|
@@ -349,6 +349,7 @@ class ElvClient {
|
|
|
349
349
|
this.contentTypes = {};
|
|
350
350
|
this.encryptionConks = {};
|
|
351
351
|
this.stateChannelAccess = {};
|
|
352
|
+
this.objectTenantIds = {};
|
|
352
353
|
this.objectLibraryIds = {};
|
|
353
354
|
this.objectImageUrls = {};
|
|
354
355
|
this.visibilityInfo = {};
|
|
@@ -589,12 +590,14 @@ class ElvClient {
|
|
|
589
590
|
* @namedParams
|
|
590
591
|
* @param {string=} idToken - OAuth ID token
|
|
591
592
|
* @param {string=} authToken - Eluvio authorization token previously issued from OAuth ID token
|
|
593
|
+
* @param {string=} tenantId - If specified, user will be associated with the tenant
|
|
592
594
|
*/
|
|
593
|
-
async SetRemoteSigner({idToken, authToken, address}) {
|
|
595
|
+
async SetRemoteSigner({idToken, authToken, tenantId, address}) {
|
|
594
596
|
const signer = new RemoteSigner({
|
|
595
597
|
rpcUris: this.authServiceURIs,
|
|
596
598
|
idToken,
|
|
597
599
|
authToken,
|
|
600
|
+
tenantId,
|
|
598
601
|
address,
|
|
599
602
|
provider: this.ethClient.provider
|
|
600
603
|
});
|
|
@@ -616,6 +616,35 @@ exports.ContentObjectOwner = async function({objectId}) {
|
|
|
616
616
|
);
|
|
617
617
|
};
|
|
618
618
|
|
|
619
|
+
/**
|
|
620
|
+
* Retrieve the tenant ID associated with the specified content object
|
|
621
|
+
*
|
|
622
|
+
* @methodGroup Content Objects
|
|
623
|
+
*
|
|
624
|
+
* @namedParams
|
|
625
|
+
* @param {string=} objectId - ID of the object
|
|
626
|
+
* @param {string=} versionHash - Version hash of the object
|
|
627
|
+
*
|
|
628
|
+
* @returns {Promise<string>} - Tenant ID of the object
|
|
629
|
+
*/
|
|
630
|
+
exports.ContentObjectTenantId = async function({objectId, versionHash}) {
|
|
631
|
+
versionHash ? ValidateVersion(versionHash) : ValidateObject(objectId);
|
|
632
|
+
|
|
633
|
+
if(versionHash) { objectId = this.utils.DecodeVersionHash(versionHash).objectId; }
|
|
634
|
+
|
|
635
|
+
if(!this.objectTenantIds[objectId]) {
|
|
636
|
+
this.objectTenantIds[objectId] = await this.authClient.MakeElvMasterCall({
|
|
637
|
+
methodName: "elv_getTenantById",
|
|
638
|
+
params: [
|
|
639
|
+
this.contentSpaceId,
|
|
640
|
+
objectId
|
|
641
|
+
]
|
|
642
|
+
});
|
|
643
|
+
}
|
|
644
|
+
|
|
645
|
+
return this.objectTenantIds[objectId];
|
|
646
|
+
};
|
|
647
|
+
|
|
619
648
|
/**
|
|
620
649
|
* Retrieve the library ID for the specified content object
|
|
621
650
|
*
|
|
@@ -14,6 +14,15 @@ const reportTypes = [
|
|
|
14
14
|
"Views Over Program Duration"
|
|
15
15
|
];
|
|
16
16
|
|
|
17
|
+
const liveTypes = [
|
|
18
|
+
{ name: "Eluvio LIVE Drop Event Site", spec: require("../typeSpecs/DropEventSite") },
|
|
19
|
+
{ name: "Eluvio LIVE Event Site", spec: require("../typeSpecs/EventSite") },
|
|
20
|
+
{ name: "Eluvio LIVE Marketplace", spec: require("../typeSpecs/Marketplace") },
|
|
21
|
+
{ name: "Eluvio LIVE Tenant", spec: require("../typeSpecs/EventTenant") },
|
|
22
|
+
{ name: "NFT Collection", spec: require("../typeSpecs/NFTCollection") },
|
|
23
|
+
{ name: "NFT Template", spec: require("../typeSpecs/NFTTemplate") }
|
|
24
|
+
];
|
|
25
|
+
|
|
17
26
|
const STANDARD_DRM_CERT={
|
|
18
27
|
elv: {
|
|
19
28
|
media: {
|
|
@@ -63,12 +72,17 @@ const SetLibraryPermissions = async (client, libraryId, tenantAdmins, contentAdm
|
|
|
63
72
|
const SetObjectPermissions = async (client, objectId, tenantAdmins, contentAdmins, contentUsers) => {
|
|
64
73
|
let promises = [
|
|
65
74
|
// Tenant admins
|
|
75
|
+
client.AddContentObjectGroupPermission({objectId, groupAddress: tenantAdmins, permission: "see"}),
|
|
76
|
+
client.AddContentObjectGroupPermission({objectId, groupAddress: tenantAdmins, permission: "access"}),
|
|
66
77
|
client.AddContentObjectGroupPermission({objectId, groupAddress: tenantAdmins, permission: "manage"}),
|
|
67
78
|
|
|
68
79
|
// Content admins
|
|
80
|
+
client.AddContentObjectGroupPermission({objectId, groupAddress: contentAdmins, permission: "see"}),
|
|
81
|
+
client.AddContentObjectGroupPermission({objectId, groupAddress: contentAdmins, permission: "access"}),
|
|
69
82
|
client.AddContentObjectGroupPermission({objectId, groupAddress: contentAdmins, permission: "manage"}),
|
|
70
83
|
|
|
71
84
|
// Content users
|
|
85
|
+
client.AddContentObjectGroupPermission({objectId, groupAddress: contentUsers, permission: "see"}),
|
|
72
86
|
client.AddContentObjectGroupPermission({objectId, groupAddress: contentUsers, permission: "access"})
|
|
73
87
|
];
|
|
74
88
|
|
|
@@ -241,7 +255,7 @@ const InitializeTenant = async ({configUrl, kmsId, tenantName}) => {
|
|
|
241
255
|
"playlists",
|
|
242
256
|
"gallery",
|
|
243
257
|
"live_stream"
|
|
244
|
-
]
|
|
258
|
+
]
|
|
245
259
|
}
|
|
246
260
|
}
|
|
247
261
|
}
|
|
@@ -258,6 +272,23 @@ const InitializeTenant = async ({configUrl, kmsId, tenantName}) => {
|
|
|
258
272
|
console.log(`\t${tenantName} - Channel: ${channelTypeId}`);
|
|
259
273
|
console.log(`\t${tenantName} - Live Stream: ${streamTypeId}`);
|
|
260
274
|
|
|
275
|
+
for(let i = 0; i < liveTypes.length; i++) {
|
|
276
|
+
const typeId = await client.CreateContentType({
|
|
277
|
+
name: `${tenantName} - ${liveTypes[i].name}`,
|
|
278
|
+
metadata: {
|
|
279
|
+
...typeMetadata,
|
|
280
|
+
public: {
|
|
281
|
+
...typeMetadata.public,
|
|
282
|
+
title_configuration: liveTypes[i].spec
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
});
|
|
286
|
+
|
|
287
|
+
await SetObjectPermissions(client, typeId, tenantAdminGroupAddress, contentAdminGroupAddress, contentUserGroupAddress);
|
|
288
|
+
|
|
289
|
+
console.log(`\t${tenantName} - ${liveTypes[i].name}: ${typeId}`);
|
|
290
|
+
}
|
|
291
|
+
|
|
261
292
|
|
|
262
293
|
/* Create libraries - Properties, Title Masters, Title Mezzanines and add each to the groups */
|
|
263
294
|
|
package/testScripts/Test.js
CHANGED
|
@@ -13,6 +13,25 @@ const Test = async () => {
|
|
|
13
13
|
});
|
|
14
14
|
|
|
15
15
|
client.SetSigner({signer});
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
const ethUrl = "https://host-216-66-40-19.contentfabric.io/eth";
|
|
19
|
+
const asUrl = "https://host-66-220-3-86.contentfabric.io";
|
|
20
|
+
|
|
21
|
+
client.SetNodes({
|
|
22
|
+
ethereumURIs: [
|
|
23
|
+
ethUrl
|
|
24
|
+
],
|
|
25
|
+
authServiceURIs: [
|
|
26
|
+
asUrl
|
|
27
|
+
]
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
console.log(
|
|
31
|
+
await client.ContentObjectTenantId({
|
|
32
|
+
objectId: "iq__3PXRZX5NCzPQsfTEquCctB2K3KJh"
|
|
33
|
+
})
|
|
34
|
+
)
|
|
16
35
|
} catch(error) {
|
|
17
36
|
console.error(error);
|
|
18
37
|
console.error(JSON.stringify(error, null, 2));
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
const defaultSpec = {
|
|
2
|
+
"profile": {
|
|
3
|
+
name: "Default",
|
|
4
|
+
version: "0.1",
|
|
5
|
+
},
|
|
6
|
+
manageApp: "default",
|
|
7
|
+
controls: [
|
|
8
|
+
"images",
|
|
9
|
+
"playlists"
|
|
10
|
+
],
|
|
11
|
+
asset_types: [
|
|
12
|
+
"primary",
|
|
13
|
+
"clip"
|
|
14
|
+
],
|
|
15
|
+
title_types: [
|
|
16
|
+
"collection",
|
|
17
|
+
"episode",
|
|
18
|
+
"season",
|
|
19
|
+
"series",
|
|
20
|
+
"site",
|
|
21
|
+
"title"
|
|
22
|
+
],
|
|
23
|
+
default_image_keys: [
|
|
24
|
+
"portrait",
|
|
25
|
+
"landscape"
|
|
26
|
+
],
|
|
27
|
+
info_fields: [
|
|
28
|
+
{name: "release_date", type: "date"},
|
|
29
|
+
{name: "synopsis", type: "textarea"},
|
|
30
|
+
{name: "copyright"},
|
|
31
|
+
{name: "creator"},
|
|
32
|
+
{name: "runtime", type: "integer"},
|
|
33
|
+
],
|
|
34
|
+
localizations: [],
|
|
35
|
+
associated_assets: [
|
|
36
|
+
{
|
|
37
|
+
name: "titles",
|
|
38
|
+
label: "Titles",
|
|
39
|
+
indexed: true,
|
|
40
|
+
slugged: true,
|
|
41
|
+
defaultable: true,
|
|
42
|
+
orderable: true
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: "series",
|
|
46
|
+
label: "Series",
|
|
47
|
+
asset_types: ["primary"],
|
|
48
|
+
title_types: ["series"],
|
|
49
|
+
for_title_types: ["site", "collection"],
|
|
50
|
+
indexed: true,
|
|
51
|
+
slugged: true,
|
|
52
|
+
defaultable: false,
|
|
53
|
+
orderable: true
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
name: "seasons",
|
|
57
|
+
label: "Seasons",
|
|
58
|
+
asset_types: ["primary"],
|
|
59
|
+
title_types: ["season"],
|
|
60
|
+
for_title_types: ["series"],
|
|
61
|
+
indexed: true,
|
|
62
|
+
slugged: true,
|
|
63
|
+
defaultable: false,
|
|
64
|
+
orderable: true
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
name: "episodes",
|
|
68
|
+
label: "Episodes",
|
|
69
|
+
asset_types: ["primary"],
|
|
70
|
+
title_types: ["episode"],
|
|
71
|
+
for_title_types: ["season"],
|
|
72
|
+
indexed: true,
|
|
73
|
+
slugged: true,
|
|
74
|
+
defaultable: false,
|
|
75
|
+
orderable: true
|
|
76
|
+
}
|
|
77
|
+
]
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
module.exports = defaultSpec;
|