sanity-plugin-mux-input 1.1.7 → 1.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +9 -7
- package/build/actions/assets.js +0 -4
- package/build/actions/assets.js.map +1 -1
- package/build/actions/secrets.js +2 -18
- package/build/actions/secrets.js.map +1 -1
- package/build/actions/upload.js +6 -47
- package/build/actions/upload.js.map +1 -1
- package/build/clients/SanityClient.js +0 -3
- package/build/clients/SanityClient.js.map +1 -1
- package/build/clients/upChunkObservable.js +0 -11
- package/build/clients/upChunkObservable.js.map +1 -1
- package/build/components/EditThumbnailDialog.js +10 -35
- package/build/components/EditThumbnailDialog.js.map +1 -1
- package/build/components/FileInputButton.js +1 -20
- package/build/components/FileInputButton.js.map +1 -1
- package/build/components/Input.js +16 -94
- package/build/components/Input.js.map +1 -1
- package/build/components/InputBrowser.js +2 -8
- package/build/components/InputBrowser.js.map +1 -1
- package/build/components/InputError.js +1 -6
- package/build/components/InputError.js.map +1 -1
- package/build/components/MuxLogo.js +20 -34
- package/build/components/MuxLogo.js.map +1 -1
- package/build/components/Player.js +17 -66
- package/build/components/Player.js.map +1 -1
- package/build/components/Preview.js +7 -26
- package/build/components/Preview.js.map +1 -1
- package/build/components/SelectAsset.js +11 -34
- package/build/components/SelectAsset.js.map +1 -1
- package/build/components/Setup.js +8 -45
- package/build/components/Setup.js.map +1 -1
- package/build/components/SetupButton.js +6 -13
- package/build/components/SetupButton.js.map +1 -1
- package/build/components/SetupDialog.js +2 -8
- package/build/components/SetupDialog.js.map +1 -1
- package/build/components/SetupNotice.js +1 -9
- package/build/components/SetupNotice.js.map +1 -1
- package/build/components/Uploader.js +2 -53
- package/build/components/Uploader.js.map +1 -1
- package/build/components/Uploader.styles.js +27 -67
- package/build/components/Uploader.styles.js.map +1 -1
- package/build/components/VideoSource.js +5 -13
- package/build/components/VideoSource.js.map +1 -1
- package/build/components/VideoSource.styles.js +14 -38
- package/build/components/VideoSource.styles.js.map +1 -1
- package/build/config.js +1 -5
- package/build/config.js.map +1 -1
- package/build/index.js +0 -5
- package/build/index.js.map +1 -1
- package/build/schema/mux.video.js +0 -4
- package/build/schema/mux.video.js.map +1 -1
- package/build/schema/mux.videoAsset.js.map +1 -1
- package/build/util/areSecretsSignable.js +0 -1
- package/build/util/areSecretsSignable.js.map +1 -1
- package/build/util/extractFiles.js +7 -17
- package/build/util/extractFiles.js.map +1 -1
- package/build/util/generateJwt.js +0 -2
- package/build/util/generateJwt.js.map +1 -1
- package/build/util/getPlaybackId.js +0 -2
- package/build/util/getPlaybackId.js.map +1 -1
- package/build/util/getPlaybackPolicy.js +0 -2
- package/build/util/getPlaybackPolicy.js.map +1 -1
- package/build/util/getPosterSrc.js +8 -13
- package/build/util/getPosterSrc.js.map +1 -1
- package/build/util/getStoryboardSrc.js +3 -8
- package/build/util/getStoryboardSrc.js.map +1 -1
- package/build/util/getVideoSrc.js +3 -8
- package/build/util/getVideoSrc.js.map +1 -1
- package/build/util/isSigned.js +0 -6
- package/build/util/isSigned.js.map +1 -1
- package/package.json +19 -21
package/LICENSE
CHANGED
package/README.md
CHANGED
|
@@ -53,11 +53,7 @@ Not familiar with Sanity? [Visit www.sanity.io](https://www.sanity.io/)
|
|
|
53
53
|
|
|
54
54
|
# Playing videos in the frontend
|
|
55
55
|
|
|
56
|
-
We
|
|
57
|
-
|
|
58
|
-
You could use any player which supports HLS, just point the video source to:
|
|
59
|
-
|
|
60
|
-
`https://stream.mux.com/${assetDocument.playbackId}.m3u8`
|
|
56
|
+
We recommend using [Mux Player](https://www.mux.com/player), try the [Codesandbox example](https://codesandbox.io/s/github/sanity-io/sanity-plugin-mux-input/tree/main/example).
|
|
61
57
|
|
|
62
58
|
# Enabling Signed Urls
|
|
63
59
|
|
|
@@ -93,14 +89,20 @@ Issues are actively monitored and PRs are welcome. When developing this plugin t
|
|
|
93
89
|
|
|
94
90
|
# Publishing
|
|
95
91
|
|
|
96
|
-
|
|
92
|
+
Run the ["CI" workflow](https://github.com/sanity-io/sanity-plugin-mux-input/actions/workflows/ci.yml).
|
|
93
|
+
Make sure to select the studio-v2 branch and check "Release new version".
|
|
94
|
+
|
|
95
|
+
Semantic release will only release on configured branches, so it is safe to run release on any branch.
|
|
96
|
+
|
|
97
97
|
On the [studio-v2](/tree/studio-v2) branch this will result in:
|
|
98
98
|
|
|
99
99
|
- a new version on the `latest` dist-tag.
|
|
100
100
|
- running `yarn add sanity-plugin-mux-input` or `npm i sanity-plugin-mux-input` will fetch the new version.
|
|
101
101
|
- running `sanity install mux-input` will fetch the new version.
|
|
102
102
|
- studio-v3 users are unaffected.
|
|
103
|
-
|
|
103
|
+
|
|
104
|
+
On the [main](/tree/main) branch this will result in:
|
|
105
|
+
|
|
104
106
|
- a new prerelease version on the `studio-v3` dist-tag.
|
|
105
107
|
- running `yarn add sanity-plugin-mux-input@studio-v3` or `npm i sanity-plugin-mux-input@studio-v3` will fetch the new version.
|
|
106
108
|
- running `sanity install mux-input` won't fetch the new version.
|
package/build/actions/assets.js
CHANGED
|
@@ -5,11 +5,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.deleteAsset = deleteAsset;
|
|
7
7
|
exports.getAsset = getAsset;
|
|
8
|
-
|
|
9
8
|
var _SanityClient = _interopRequireDefault(require("../clients/SanityClient"));
|
|
10
|
-
|
|
11
9
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
12
|
-
|
|
13
10
|
function deleteAsset(assetId) {
|
|
14
11
|
var dataset = _SanityClient.default.clientConfig.dataset;
|
|
15
12
|
return _SanityClient.default.request({
|
|
@@ -18,7 +15,6 @@ function deleteAsset(assetId) {
|
|
|
18
15
|
method: 'DELETE'
|
|
19
16
|
});
|
|
20
17
|
}
|
|
21
|
-
|
|
22
18
|
function getAsset(assetId) {
|
|
23
19
|
var dataset = _SanityClient.default.clientConfig.dataset;
|
|
24
20
|
return _SanityClient.default.request({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assets.js","names":["deleteAsset","assetId","dataset","client","clientConfig","request","url","withCredentials","method","getAsset"],"sources":["../../src/actions/assets.ts"],"sourcesContent":["import client from '../clients/SanityClient'\nimport type {MuxAsset} from '../util/types'\n\nexport function deleteAsset(assetId: string) {\n const dataset = client.clientConfig.dataset\n return client.request<void>({\n url: `/addons/mux/assets/${dataset}/${assetId}`,\n withCredentials: true,\n method: 'DELETE',\n })\n}\n\nexport function getAsset(assetId: string) {\n const dataset = client.clientConfig.dataset\n return client.request<{data: MuxAsset}>({\n url: `/addons/mux/assets/${dataset}/data/${assetId}`,\n withCredentials: true,\n method: 'GET',\n })\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"assets.js","names":["deleteAsset","assetId","dataset","client","clientConfig","request","url","withCredentials","method","getAsset"],"sources":["../../src/actions/assets.ts"],"sourcesContent":["import client from '../clients/SanityClient'\nimport type {MuxAsset} from '../util/types'\n\nexport function deleteAsset(assetId: string) {\n const dataset = client.clientConfig.dataset\n return client.request<void>({\n url: `/addons/mux/assets/${dataset}/${assetId}`,\n withCredentials: true,\n method: 'DELETE',\n })\n}\n\nexport function getAsset(assetId: string) {\n const dataset = client.clientConfig.dataset\n return client.request<{data: MuxAsset}>({\n url: `/addons/mux/assets/${dataset}/data/${assetId}`,\n withCredentials: true,\n method: 'GET',\n })\n}\n"],"mappings":";;;;;;;AAAA;AAA4C;AAGrC,SAASA,WAAW,CAACC,OAAe,EAAE;EAC3C,IAAMC,OAAO,GAAGC,qBAAM,CAACC,YAAY,CAACF,OAAO;EAC3C,OAAOC,qBAAM,CAACE,OAAO,CAAO;IAC1BC,GAAG,+BAAwBJ,OAAO,cAAID,OAAO,CAAE;IAC/CM,eAAe,EAAE,IAAI;IACrBC,MAAM,EAAE;EACV,CAAC,CAAC;AACJ;AAEO,SAASC,QAAQ,CAACR,OAAe,EAAE;EACxC,IAAMC,OAAO,GAAGC,qBAAM,CAACC,YAAY,CAACF,OAAO;EAC3C,OAAOC,qBAAM,CAACE,OAAO,CAAmB;IACtCC,GAAG,+BAAwBJ,OAAO,mBAASD,OAAO,CAAE;IACpDM,eAAe,EAAE,IAAI;IACrBC,MAAM,EAAE;EACV,CAAC,CAAC;AACJ"}
|
package/build/actions/secrets.js
CHANGED
|
@@ -9,27 +9,19 @@ exports.haveValidSigningKeys = haveValidSigningKeys;
|
|
|
9
9
|
exports.saveSecrets = saveSecrets;
|
|
10
10
|
exports.testSecrets = testSecrets;
|
|
11
11
|
exports.testSecretsObservable = testSecretsObservable;
|
|
12
|
-
|
|
13
12
|
var _rxjs = require("rxjs");
|
|
14
|
-
|
|
15
13
|
var _SanityClient = _interopRequireDefault(require("../clients/SanityClient"));
|
|
16
|
-
|
|
17
14
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
18
|
-
|
|
19
15
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
20
|
-
|
|
21
16
|
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
22
|
-
|
|
23
17
|
var cache = {
|
|
24
18
|
secrets: null,
|
|
25
19
|
exists: false
|
|
26
20
|
};
|
|
27
|
-
|
|
28
21
|
function fetchSecrets() {
|
|
29
22
|
if (cache.exists) {
|
|
30
23
|
return Promise.resolve(cache);
|
|
31
24
|
}
|
|
32
|
-
|
|
33
25
|
return _SanityClient.default.fetch('*[_id == "secrets.mux"][0]').then(secrets => {
|
|
34
26
|
cache.exists = Boolean(secrets);
|
|
35
27
|
cache.secrets = {
|
|
@@ -42,7 +34,6 @@ function fetchSecrets() {
|
|
|
42
34
|
return cache;
|
|
43
35
|
});
|
|
44
36
|
}
|
|
45
|
-
|
|
46
37
|
function saveSecrets(token, secretKey, enableSignedUrls, signingKeyId, signingKeyPrivate) {
|
|
47
38
|
var doc = {
|
|
48
39
|
_id: 'secrets.mux',
|
|
@@ -65,7 +56,6 @@ function saveSecrets(token, secretKey, enableSignedUrls, signingKeyId, signingKe
|
|
|
65
56
|
return cache.secrets;
|
|
66
57
|
});
|
|
67
58
|
}
|
|
68
|
-
|
|
69
59
|
function createSigningKeys() {
|
|
70
60
|
var dataset = _SanityClient.default.clientConfig.dataset;
|
|
71
61
|
return _SanityClient.default.request({
|
|
@@ -74,7 +64,6 @@ function createSigningKeys() {
|
|
|
74
64
|
method: 'POST'
|
|
75
65
|
});
|
|
76
66
|
}
|
|
77
|
-
|
|
78
67
|
function testSecrets() {
|
|
79
68
|
var dataset = _SanityClient.default.clientConfig.dataset;
|
|
80
69
|
return _SanityClient.default.request({
|
|
@@ -83,28 +72,24 @@ function testSecrets() {
|
|
|
83
72
|
method: 'GET'
|
|
84
73
|
});
|
|
85
74
|
}
|
|
86
|
-
|
|
87
75
|
function haveValidSigningKeys(_x, _x2) {
|
|
88
76
|
return _haveValidSigningKeys.apply(this, arguments);
|
|
89
77
|
}
|
|
90
|
-
|
|
91
78
|
function _haveValidSigningKeys() {
|
|
92
79
|
_haveValidSigningKeys = _asyncToGenerator(function* (signingKeyId, signingKeyPrivate) {
|
|
93
80
|
if (!(signingKeyId && signingKeyPrivate)) {
|
|
94
81
|
return false;
|
|
95
82
|
}
|
|
96
|
-
|
|
97
83
|
var dataset = _SanityClient.default.clientConfig.dataset;
|
|
98
|
-
|
|
99
84
|
try {
|
|
100
85
|
var res = yield _SanityClient.default.request({
|
|
101
86
|
url: "/addons/mux/signing-keys/".concat(dataset, "/").concat(signingKeyId),
|
|
102
87
|
withCredentials: true,
|
|
103
88
|
method: 'GET'
|
|
104
|
-
});
|
|
89
|
+
});
|
|
90
|
+
//
|
|
105
91
|
// if this signing key is valid it will return { data: { id: 'xxxx' } }
|
|
106
92
|
//
|
|
107
|
-
|
|
108
93
|
return !!(res.data && res.data.id);
|
|
109
94
|
} catch (e) {
|
|
110
95
|
console.error('Error fetching signingKeyId', signingKeyId, 'assuming it is not valid');
|
|
@@ -113,7 +98,6 @@ function _haveValidSigningKeys() {
|
|
|
113
98
|
});
|
|
114
99
|
return _haveValidSigningKeys.apply(this, arguments);
|
|
115
100
|
}
|
|
116
|
-
|
|
117
101
|
function testSecretsObservable() {
|
|
118
102
|
var dataset = _SanityClient.default.clientConfig.dataset;
|
|
119
103
|
return (0, _rxjs.defer)(() => _SanityClient.default.observable.request({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secrets.js","names":["cache","secrets","exists","fetchSecrets","Promise","resolve","client","fetch","then","Boolean","token","secretKey","enableSignedUrls","signingKeyId","signingKeyPrivate","saveSecrets","doc","_id","_type","createOrReplace","createSigningKeys","dataset","clientConfig","request","url","withCredentials","method","testSecrets","haveValidSigningKeys","res","data","id","e","console","error","testSecretsObservable","defer","observable"],"sources":["../../src/actions/secrets.ts"],"sourcesContent":["import {defer} from 'rxjs'\n\nimport client from '../clients/SanityClient'\nimport type {Secrets} from '../util/types'\n\nconst cache: {secrets: Secrets | null; exists: boolean} = {\n secrets: null,\n exists: false,\n}\n\nexport function fetchSecrets() {\n if (cache.exists) {\n return Promise.resolve(cache)\n }\n\n return client.fetch('*[_id == \"secrets.mux\"][0]').then((secrets: Secrets | null) => {\n cache.exists = Boolean(secrets)\n cache.secrets = {\n token: secrets?.token || null,\n secretKey: secrets?.secretKey || null,\n enableSignedUrls: secrets?.enableSignedUrls || false,\n signingKeyId: secrets?.signingKeyId || null,\n signingKeyPrivate: secrets?.signingKeyPrivate || null,\n }\n return cache\n })\n}\n\nexport function saveSecrets(\n token: string,\n secretKey: string,\n enableSignedUrls: boolean,\n signingKeyId: string,\n signingKeyPrivate: string\n) {\n const doc = {\n _id: 'secrets.mux',\n _type: 'mux.apiKey',\n token,\n secretKey,\n enableSignedUrls,\n signingKeyId,\n signingKeyPrivate,\n }\n\n return client.createOrReplace(doc).then(() => {\n cache.exists = true\n cache.secrets = {\n token,\n secretKey,\n enableSignedUrls,\n signingKeyId,\n signingKeyPrivate,\n }\n return cache.secrets\n })\n}\n\nexport function createSigningKeys() {\n const dataset = client.clientConfig.dataset\n return client.request<{data: {private_key: string; id: string; created_at: string}}>({\n url: `/addons/mux/signing-keys/${dataset}`,\n withCredentials: true,\n method: 'POST',\n })\n}\n\nexport function testSecrets() {\n const dataset = client.clientConfig.dataset\n return client.request<{status: boolean}>({\n url: `/addons/mux/secrets/${dataset}/test`,\n withCredentials: true,\n method: 'GET',\n })\n}\n\nexport async function haveValidSigningKeys(signingKeyId: string, signingKeyPrivate: string) {\n if (!(signingKeyId && signingKeyPrivate)) {\n return false\n }\n\n const dataset = client.clientConfig.dataset\n try {\n const res = await client.request<{data: {id: string; created_at: string}}>({\n url: `/addons/mux/signing-keys/${dataset}/${signingKeyId}`,\n withCredentials: true,\n method: 'GET',\n })\n //\n // if this signing key is valid it will return { data: { id: 'xxxx' } }\n //\n return !!(res.data && res.data.id)\n } catch (e) {\n console.error('Error fetching signingKeyId', signingKeyId, 'assuming it is not valid')\n return false\n }\n}\n\nexport function testSecretsObservable() {\n const dataset = client.clientConfig.dataset\n return defer(() =>\n client.observable.request<{status: boolean}>({\n url: `/addons/mux/secrets/${dataset}/test`,\n withCredentials: true,\n method: 'GET',\n })\n )\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"secrets.js","names":["cache","secrets","exists","fetchSecrets","Promise","resolve","client","fetch","then","Boolean","token","secretKey","enableSignedUrls","signingKeyId","signingKeyPrivate","saveSecrets","doc","_id","_type","createOrReplace","createSigningKeys","dataset","clientConfig","request","url","withCredentials","method","testSecrets","haveValidSigningKeys","res","data","id","e","console","error","testSecretsObservable","defer","observable"],"sources":["../../src/actions/secrets.ts"],"sourcesContent":["import {defer} from 'rxjs'\n\nimport client from '../clients/SanityClient'\nimport type {Secrets} from '../util/types'\n\nconst cache: {secrets: Secrets | null; exists: boolean} = {\n secrets: null,\n exists: false,\n}\n\nexport function fetchSecrets() {\n if (cache.exists) {\n return Promise.resolve(cache)\n }\n\n return client.fetch('*[_id == \"secrets.mux\"][0]').then((secrets: Secrets | null) => {\n cache.exists = Boolean(secrets)\n cache.secrets = {\n token: secrets?.token || null,\n secretKey: secrets?.secretKey || null,\n enableSignedUrls: secrets?.enableSignedUrls || false,\n signingKeyId: secrets?.signingKeyId || null,\n signingKeyPrivate: secrets?.signingKeyPrivate || null,\n }\n return cache\n })\n}\n\nexport function saveSecrets(\n token: string,\n secretKey: string,\n enableSignedUrls: boolean,\n signingKeyId: string,\n signingKeyPrivate: string\n) {\n const doc = {\n _id: 'secrets.mux',\n _type: 'mux.apiKey',\n token,\n secretKey,\n enableSignedUrls,\n signingKeyId,\n signingKeyPrivate,\n }\n\n return client.createOrReplace(doc).then(() => {\n cache.exists = true\n cache.secrets = {\n token,\n secretKey,\n enableSignedUrls,\n signingKeyId,\n signingKeyPrivate,\n }\n return cache.secrets\n })\n}\n\nexport function createSigningKeys() {\n const dataset = client.clientConfig.dataset\n return client.request<{data: {private_key: string; id: string; created_at: string}}>({\n url: `/addons/mux/signing-keys/${dataset}`,\n withCredentials: true,\n method: 'POST',\n })\n}\n\nexport function testSecrets() {\n const dataset = client.clientConfig.dataset\n return client.request<{status: boolean}>({\n url: `/addons/mux/secrets/${dataset}/test`,\n withCredentials: true,\n method: 'GET',\n })\n}\n\nexport async function haveValidSigningKeys(signingKeyId: string, signingKeyPrivate: string) {\n if (!(signingKeyId && signingKeyPrivate)) {\n return false\n }\n\n const dataset = client.clientConfig.dataset\n try {\n const res = await client.request<{data: {id: string; created_at: string}}>({\n url: `/addons/mux/signing-keys/${dataset}/${signingKeyId}`,\n withCredentials: true,\n method: 'GET',\n })\n //\n // if this signing key is valid it will return { data: { id: 'xxxx' } }\n //\n return !!(res.data && res.data.id)\n } catch (e) {\n console.error('Error fetching signingKeyId', signingKeyId, 'assuming it is not valid')\n return false\n }\n}\n\nexport function testSecretsObservable() {\n const dataset = client.clientConfig.dataset\n return defer(() =>\n client.observable.request<{status: boolean}>({\n url: `/addons/mux/secrets/${dataset}/test`,\n withCredentials: true,\n method: 'GET',\n })\n )\n}\n"],"mappings":"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"}
|
package/build/actions/upload.js
CHANGED
|
@@ -7,37 +7,21 @@ exports.cancelUpload = cancelUpload;
|
|
|
7
7
|
exports.getUpload = getUpload;
|
|
8
8
|
exports.uploadFile = uploadFile;
|
|
9
9
|
exports.uploadUrl = uploadUrl;
|
|
10
|
-
|
|
11
10
|
var _uuid = require("@sanity/uuid");
|
|
12
|
-
|
|
13
11
|
var _lodash = require("lodash");
|
|
14
|
-
|
|
15
12
|
var _rxjs = require("rxjs");
|
|
16
|
-
|
|
17
13
|
var _operators = require("rxjs/operators");
|
|
18
|
-
|
|
19
14
|
var _SanityClient = _interopRequireDefault(require("../clients/SanityClient"));
|
|
20
|
-
|
|
21
15
|
var _upChunkObservable = require("../clients/upChunkObservable");
|
|
22
|
-
|
|
23
16
|
var _config = _interopRequireDefault(require("../config"));
|
|
24
|
-
|
|
25
17
|
var _assets = require("./assets");
|
|
26
|
-
|
|
27
18
|
var _secrets = require("./secrets");
|
|
28
|
-
|
|
29
19
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
30
|
-
|
|
31
20
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
32
|
-
|
|
33
21
|
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
34
|
-
|
|
35
22
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
36
|
-
|
|
37
23
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
38
|
-
|
|
39
24
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
40
|
-
|
|
41
25
|
function cancelUpload(uuid) {
|
|
42
26
|
return _SanityClient.default.observable.request({
|
|
43
27
|
url: "/addons/mux/uploads/".concat(_SanityClient.default.clientConfig.dataset, "/").concat(uuid),
|
|
@@ -45,7 +29,6 @@ function cancelUpload(uuid) {
|
|
|
45
29
|
method: 'DELETE'
|
|
46
30
|
});
|
|
47
31
|
}
|
|
48
|
-
|
|
49
32
|
function uploadUrl(url) {
|
|
50
33
|
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
51
34
|
return testUrl(url).pipe((0, _operators.switchMap)(validUrl => {
|
|
@@ -56,7 +39,6 @@ function uploadUrl(url) {
|
|
|
56
39
|
if (!json || !json.status) {
|
|
57
40
|
return (0, _rxjs.throwError)(new Error('Invalid credentials'));
|
|
58
41
|
}
|
|
59
|
-
|
|
60
42
|
var uuid = (0, _uuid.uuid)();
|
|
61
43
|
var enableSignedUrls = options.enableSignedUrls;
|
|
62
44
|
var muxBody = {
|
|
@@ -80,11 +62,9 @@ function uploadUrl(url) {
|
|
|
80
62
|
query
|
|
81
63
|
})).pipe((0, _operators.mergeMap)(result => {
|
|
82
64
|
var asset = result && result.results && result.results[0] && result.results[0].document || null;
|
|
83
|
-
|
|
84
65
|
if (!asset) {
|
|
85
66
|
return (0, _rxjs.throwError)(new Error('No asset document returned'));
|
|
86
67
|
}
|
|
87
|
-
|
|
88
68
|
return (0, _rxjs.of)({
|
|
89
69
|
type: 'success',
|
|
90
70
|
id: uuid,
|
|
@@ -94,7 +74,6 @@ function uploadUrl(url) {
|
|
|
94
74
|
})));
|
|
95
75
|
}));
|
|
96
76
|
}
|
|
97
|
-
|
|
98
77
|
function uploadFile(file) {
|
|
99
78
|
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
100
79
|
return testFile(file).pipe((0, _operators.switchMap)(fileOptions => {
|
|
@@ -105,7 +84,6 @@ function uploadFile(file) {
|
|
|
105
84
|
if (!json || !json.status) {
|
|
106
85
|
return (0, _rxjs.throwError)(new Error('Invalid credentials'));
|
|
107
86
|
}
|
|
108
|
-
|
|
109
87
|
var uuid = (0, _uuid.uuid)();
|
|
110
88
|
var enableSignedUrls = options.enableSignedUrls;
|
|
111
89
|
var body = {
|
|
@@ -125,19 +103,21 @@ function uploadFile(file) {
|
|
|
125
103
|
},
|
|
126
104
|
body
|
|
127
105
|
})).pipe((0, _operators.mergeMap)(result => {
|
|
128
|
-
return (0, _upChunkObservable.createUpChunkObservable)(uuid, result.upload.url, file).pipe(
|
|
106
|
+
return (0, _upChunkObservable.createUpChunkObservable)(uuid, result.upload.url, file).pipe(
|
|
107
|
+
// eslint-disable-next-line no-warning-comments
|
|
129
108
|
// @TODO type the observable events
|
|
130
109
|
// eslint-disable-next-line max-nested-callbacks
|
|
131
110
|
(0, _operators.mergeMap)(event => {
|
|
132
111
|
if (event.type !== 'success') {
|
|
133
112
|
return (0, _rxjs.of)(event);
|
|
134
113
|
}
|
|
135
|
-
|
|
136
|
-
|
|
114
|
+
return (0, _rxjs.from)(updateAssetDocumentFromUpload(uuid)).pipe(
|
|
115
|
+
// eslint-disable-next-line max-nested-callbacks
|
|
137
116
|
(0, _operators.mergeMap)(doc => (0, _rxjs.of)(_objectSpread(_objectSpread({}, event), {}, {
|
|
138
117
|
asset: doc
|
|
139
118
|
}))));
|
|
140
|
-
}),
|
|
119
|
+
}),
|
|
120
|
+
// eslint-disable-next-line max-nested-callbacks
|
|
141
121
|
(0, _operators.catchError)(err => {
|
|
142
122
|
// Delete asset document
|
|
143
123
|
return cancelUpload(uuid).pipe((0, _operators.mergeMapTo)((0, _rxjs.throwError)(err)));
|
|
@@ -146,7 +126,6 @@ function uploadFile(file) {
|
|
|
146
126
|
})));
|
|
147
127
|
}));
|
|
148
128
|
}
|
|
149
|
-
|
|
150
129
|
function getUpload(assetId) {
|
|
151
130
|
return _SanityClient.default.request({
|
|
152
131
|
url: "/addons/mux/uploads/".concat(_SanityClient.default.clientConfig.dataset, "/").concat(assetId),
|
|
@@ -154,7 +133,6 @@ function getUpload(assetId) {
|
|
|
154
133
|
method: 'GET'
|
|
155
134
|
});
|
|
156
135
|
}
|
|
157
|
-
|
|
158
136
|
function pollUpload(uuid) {
|
|
159
137
|
var maxTries = 10;
|
|
160
138
|
var pollInterval;
|
|
@@ -169,45 +147,36 @@ function pollUpload(uuid) {
|
|
|
169
147
|
reject(err);
|
|
170
148
|
return;
|
|
171
149
|
}
|
|
172
|
-
|
|
173
150
|
assetId = upload && upload.data && upload.data.asset_id;
|
|
174
|
-
|
|
175
151
|
if (assetId) {
|
|
176
152
|
clearInterval(pollInterval);
|
|
177
153
|
resolve(upload);
|
|
178
154
|
}
|
|
179
|
-
|
|
180
155
|
if (tries > maxTries) {
|
|
181
156
|
clearInterval(pollInterval);
|
|
182
157
|
reject(new Error('Upload did not finish'));
|
|
183
158
|
}
|
|
184
|
-
|
|
185
159
|
tries++;
|
|
186
160
|
}), 2000);
|
|
187
161
|
});
|
|
188
162
|
}
|
|
189
|
-
|
|
190
163
|
function updateAssetDocumentFromUpload(_x) {
|
|
191
164
|
return _updateAssetDocumentFromUpload.apply(this, arguments);
|
|
192
165
|
}
|
|
193
|
-
|
|
194
166
|
function _updateAssetDocumentFromUpload() {
|
|
195
167
|
_updateAssetDocumentFromUpload = _asyncToGenerator(function* (uuid) {
|
|
196
168
|
var upload;
|
|
197
169
|
var asset;
|
|
198
|
-
|
|
199
170
|
try {
|
|
200
171
|
upload = yield pollUpload(uuid);
|
|
201
172
|
} catch (err) {
|
|
202
173
|
return Promise.reject(err);
|
|
203
174
|
}
|
|
204
|
-
|
|
205
175
|
try {
|
|
206
176
|
asset = yield (0, _assets.getAsset)(upload.data.asset_id);
|
|
207
177
|
} catch (err) {
|
|
208
178
|
return Promise.reject(err);
|
|
209
179
|
}
|
|
210
|
-
|
|
211
180
|
var doc = {
|
|
212
181
|
_id: uuid,
|
|
213
182
|
_type: 'mux.videoAsset',
|
|
@@ -223,43 +192,33 @@ function _updateAssetDocumentFromUpload() {
|
|
|
223
192
|
});
|
|
224
193
|
return _updateAssetDocumentFromUpload.apply(this, arguments);
|
|
225
194
|
}
|
|
226
|
-
|
|
227
195
|
function testFile(file) {
|
|
228
196
|
if (typeof window !== 'undefined' && file instanceof window.File) {
|
|
229
197
|
var fileOptions = optionsFromFile({}, file);
|
|
230
198
|
return (0, _rxjs.of)(fileOptions);
|
|
231
199
|
}
|
|
232
|
-
|
|
233
200
|
return (0, _rxjs.throwError)(new Error('Invalid file'));
|
|
234
201
|
}
|
|
235
|
-
|
|
236
202
|
function testUrl(url) {
|
|
237
203
|
var error = new Error('Invalid URL');
|
|
238
|
-
|
|
239
204
|
if (!(0, _lodash.isString)(url)) {
|
|
240
205
|
return (0, _rxjs.throwError)(error);
|
|
241
206
|
}
|
|
242
|
-
|
|
243
207
|
var parsed;
|
|
244
|
-
|
|
245
208
|
try {
|
|
246
209
|
parsed = new URL(url);
|
|
247
210
|
} catch (err) {
|
|
248
211
|
return (0, _rxjs.throwError)(error);
|
|
249
212
|
}
|
|
250
|
-
|
|
251
213
|
if (parsed && !parsed.protocol.match(/http:|https:/)) {
|
|
252
214
|
return (0, _rxjs.throwError)(error);
|
|
253
215
|
}
|
|
254
|
-
|
|
255
216
|
return (0, _rxjs.of)(url);
|
|
256
217
|
}
|
|
257
|
-
|
|
258
218
|
function optionsFromFile(opts, file) {
|
|
259
219
|
if (typeof window === 'undefined' || !(file instanceof window.File)) {
|
|
260
220
|
return opts;
|
|
261
221
|
}
|
|
262
|
-
|
|
263
222
|
return {
|
|
264
223
|
name: opts.preserveFilename === false ? undefined : file.name,
|
|
265
224
|
type: file.type
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload.js","names":["cancelUpload","uuid","client","observable","request","url","clientConfig","dataset","withCredentials","method","uploadUrl","options","testUrl","pipe","switchMap","validUrl","concat","of","type","testSecretsObservable","json","status","throwError","Error","generateUuid","enableSignedUrls","muxBody","input","playback_policy","mp4_support","config","query","JSON","stringify","filename","split","slice","defer","headers","mergeMap","result","asset","results","document","id","uploadFile","file","testFile","fileOptions","body","createUpChunkObservable","upload","event","from","updateAssetDocumentFromUpload","doc","catchError","err","mergeMapTo","getUpload","assetId","pollUpload","maxTries","pollInterval","tries","Promise","resolve","reject","setInterval","data","asset_id","clearInterval","getAsset","_id","_type","playbackId","playback_ids","uploadId","createOrReplace","then","window","File","optionsFromFile","error","isString","parsed","URL","protocol","match","opts","name","preserveFilename","undefined"],"sources":["../../src/actions/upload.ts"],"sourcesContent":["/* eslint-disable camelcase */\nimport {uuid as generateUuid} from '@sanity/uuid'\nimport {isString} from 'lodash'\nimport {type Observable, concat, defer, from, of, throwError} from 'rxjs'\nimport {catchError, mergeMap, mergeMapTo, switchMap} from 'rxjs/operators'\n\nimport client from '../clients/SanityClient'\nimport {createUpChunkObservable} from '../clients/upChunkObservable'\nimport config from '../config'\nimport type {MuxAsset} from '../util/types'\nimport {getAsset} from './assets'\nimport {testSecretsObservable} from './secrets'\n\nexport function cancelUpload(uuid: string) {\n return client.observable.request({\n url: `/addons/mux/uploads/${client.clientConfig.dataset}/${uuid}`,\n withCredentials: true,\n method: 'DELETE',\n })\n}\n\nexport function uploadUrl(url: string, options: {enableSignedUrls?: boolean} = {}) {\n return testUrl(url).pipe(\n switchMap((validUrl) => {\n return concat(\n of({type: 'url', url: validUrl}),\n testSecretsObservable().pipe(\n switchMap((json) => {\n if (!json || !json.status) {\n return throwError(new Error('Invalid credentials'))\n }\n const uuid = generateUuid()\n const {enableSignedUrls} = options\n const muxBody = {\n input: validUrl,\n playback_policy: [enableSignedUrls ? 'signed' : 'public'],\n mp4_support: config.mp4_support,\n }\n const query = {\n muxBody: JSON.stringify(muxBody),\n filename: validUrl.split('/').slice(-1)[0],\n }\n\n const dataset = client.clientConfig.dataset\n return defer(() =>\n client.observable.request({\n url: `/addons/mux/assets/${dataset}`,\n withCredentials: true,\n method: 'POST',\n headers: {\n 'MUX-Proxy-UUID': uuid,\n 'Content-Type': 'application/json',\n },\n query,\n })\n ).pipe(\n mergeMap((result) => {\n const asset =\n (result && result.results && result.results[0] && result.results[0].document) ||\n null\n\n if (!asset) {\n return throwError(new Error('No asset document returned'))\n }\n return of({type: 'success', id: uuid, asset})\n })\n )\n })\n )\n )\n })\n )\n}\n\nexport function uploadFile(file: File, options: {enableSignedUrls?: boolean} = {}) {\n return testFile(file).pipe(\n switchMap((fileOptions) => {\n return concat(\n of({type: 'file', file: fileOptions}),\n testSecretsObservable().pipe(\n switchMap((json) => {\n if (!json || !json.status) {\n return throwError(new Error('Invalid credentials'))\n }\n const uuid = generateUuid()\n const {enableSignedUrls} = options\n const body = {\n mp4_support: config.mp4_support,\n playback_policy: [enableSignedUrls ? 'signed' : 'public'],\n }\n\n return concat(\n of({type: 'uuid', uuid}),\n defer(() =>\n client.observable.request<{\n sanityAssetId: string\n upload: {\n cors_origin: string\n id: string\n new_asset_settings: {\n mp4_support: 'standard' | 'none'\n passthrough: string\n playback_policies: ['public' | 'signed']\n }\n status: 'waiting'\n timeout: number\n url: string\n }\n }>({\n url: `/addons/mux/uploads/${client.clientConfig.dataset}`,\n withCredentials: true,\n method: 'POST',\n headers: {\n 'MUX-Proxy-UUID': uuid,\n 'Content-Type': 'application/json',\n },\n body,\n })\n ).pipe(\n mergeMap((result) => {\n return createUpChunkObservable(uuid, result.upload.url, file).pipe(\n // eslint-disable-next-line no-warning-comments\n // @TODO type the observable events\n // eslint-disable-next-line max-nested-callbacks\n mergeMap((event: any) => {\n if (event.type !== 'success') {\n return of(event)\n }\n return from(updateAssetDocumentFromUpload(uuid)).pipe(\n // eslint-disable-next-line max-nested-callbacks\n mergeMap((doc) => of({...event, asset: doc}))\n )\n }),\n // eslint-disable-next-line max-nested-callbacks\n catchError((err) => {\n // Delete asset document\n return cancelUpload(uuid).pipe(mergeMapTo(throwError(err)))\n })\n )\n })\n )\n )\n })\n )\n )\n })\n )\n}\n\ntype UploadResponse = {\n data: {\n asset_id: string\n cors_origin: string\n id: string\n new_asset_settings: {\n mp4_support: 'standard' | 'none'\n passthrough: string\n playback_policies: ['public' | 'signed']\n }\n status: string\n timeout: number\n }\n}\nexport function getUpload(assetId: string) {\n return client.request<UploadResponse>({\n url: `/addons/mux/uploads/${client.clientConfig.dataset}/${assetId}`,\n withCredentials: true,\n method: 'GET',\n })\n}\n\nfunction pollUpload(uuid: string): Promise<UploadResponse> {\n const maxTries = 10\n let pollInterval: number\n let tries = 0\n let assetId: string\n let upload: UploadResponse\n return new Promise((resolve, reject) => {\n pollInterval = (setInterval as typeof window.setInterval)(async () => {\n try {\n upload = await getUpload(uuid)\n } catch (err) {\n reject(err)\n return\n }\n assetId = upload && upload.data && upload.data.asset_id\n if (assetId) {\n clearInterval(pollInterval)\n resolve(upload)\n }\n if (tries > maxTries) {\n clearInterval(pollInterval)\n reject(new Error('Upload did not finish'))\n }\n tries++\n }, 2000)\n })\n}\n\nasync function updateAssetDocumentFromUpload(uuid: string) {\n let upload: UploadResponse\n let asset: {data: MuxAsset}\n try {\n upload = await pollUpload(uuid)\n } catch (err) {\n return Promise.reject(err)\n }\n try {\n asset = await getAsset(upload.data.asset_id)\n } catch (err) {\n return Promise.reject(err)\n }\n\n const doc = {\n _id: uuid,\n _type: 'mux.videoAsset',\n status: asset.data.status,\n data: asset.data,\n assetId: asset.data.id,\n playbackId: asset.data.playback_ids[0].id,\n uploadId: upload.data.id,\n }\n return client.createOrReplace(doc).then(() => {\n return doc\n })\n}\n\nfunction testFile(file: File) {\n if (typeof window !== 'undefined' && file instanceof window.File) {\n const fileOptions = optionsFromFile({}, file)\n return of(fileOptions)\n }\n return throwError(new Error('Invalid file'))\n}\n\nfunction testUrl(url: string): Observable<string> {\n const error = new Error('Invalid URL')\n if (!isString(url)) {\n return throwError(error)\n }\n let parsed\n try {\n parsed = new URL(url)\n } catch (err) {\n return throwError(error)\n }\n if (parsed && !parsed.protocol.match(/http:|https:/)) {\n return throwError(error)\n }\n return of(url)\n}\n\nfunction optionsFromFile(opts: {preserveFilename?: boolean}, file: File) {\n if (typeof window === 'undefined' || !(file instanceof window.File)) {\n return opts\n }\n return {\n name: opts.preserveFilename === false ? undefined : file.name,\n type: file.type,\n }\n}\n"],"mappings":";;;;;;;;;;AACA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AAEA;;AACA;;;;;;;;;;;;;;AAEO,SAASA,YAAT,CAAsBC,IAAtB,EAAoC;EACzC,OAAOC,qBAAA,CAAOC,UAAP,CAAkBC,OAAlB,CAA0B;IAC/BC,GAAG,gCAAyBH,qBAAA,CAAOI,YAAP,CAAoBC,OAA7C,cAAwDN,IAAxD,CAD4B;IAE/BO,eAAe,EAAE,IAFc;IAG/BC,MAAM,EAAE;EAHuB,CAA1B,CAAP;AAKD;;AAEM,SAASC,SAAT,CAAmBL,GAAnB,EAA4E;EAAA,IAA5CM,OAA4C,uEAAJ,EAAI;EACjF,OAAOC,OAAO,CAACP,GAAD,CAAP,CAAaQ,IAAb,CACL,IAAAC,oBAAA,EAAWC,QAAD,IAAc;IACtB,OAAO,IAAAC,YAAA,EACL,IAAAC,QAAA,EAAG;MAACC,IAAI,EAAE,KAAP;MAAcb,GAAG,EAAEU;IAAnB,CAAH,CADK,EAEL,IAAAI,8BAAA,IAAwBN,IAAxB,CACE,IAAAC,oBAAA,EAAWM,IAAD,IAAU;MAClB,IAAI,CAACA,IAAD,IAAS,CAACA,IAAI,CAACC,MAAnB,EAA2B;QACzB,OAAO,IAAAC,gBAAA,EAAW,IAAIC,KAAJ,CAAU,qBAAV,CAAX,CAAP;MACD;;MACD,IAAMtB,IAAI,GAAG,IAAAuB,UAAA,GAAb;MACA,IAAOC,gBAAP,GAA2Bd,OAA3B,CAAOc,gBAAP;MACA,IAAMC,OAAO,GAAG;QACdC,KAAK,EAAEZ,QADO;QAEda,eAAe,EAAE,CAACH,gBAAgB,GAAG,QAAH,GAAc,QAA/B,CAFH;QAGdI,WAAW,EAAEC,eAAA,CAAOD;MAHN,CAAhB;MAKA,IAAME,KAAK,GAAG;QACZL,OAAO,EAAEM,IAAI,CAACC,SAAL,CAAeP,OAAf,CADG;QAEZQ,QAAQ,EAAEnB,QAAQ,CAACoB,KAAT,CAAe,GAAf,EAAoBC,KAApB,CAA0B,CAAC,CAA3B,EAA8B,CAA9B;MAFE,CAAd;MAKA,IAAM7B,OAAO,GAAGL,qBAAA,CAAOI,YAAP,CAAoBC,OAApC;MACA,OAAO,IAAA8B,WAAA,EAAM,MACXnC,qBAAA,CAAOC,UAAP,CAAkBC,OAAlB,CAA0B;QACxBC,GAAG,+BAAwBE,OAAxB,CADqB;QAExBC,eAAe,EAAE,IAFO;QAGxBC,MAAM,EAAE,MAHgB;QAIxB6B,OAAO,EAAE;UACP,kBAAkBrC,IADX;UAEP,gBAAgB;QAFT,CAJe;QAQxB8B;MARwB,CAA1B,CADK,EAWLlB,IAXK,CAYL,IAAA0B,mBAAA,EAAUC,MAAD,IAAY;QACnB,IAAMC,KAAK,GACRD,MAAM,IAAIA,MAAM,CAACE,OAAjB,IAA4BF,MAAM,CAACE,OAAP,CAAe,CAAf,CAA5B,IAAiDF,MAAM,CAACE,OAAP,CAAe,CAAf,EAAkBC,QAApE,IACA,IAFF;;QAIA,IAAI,CAACF,KAAL,EAAY;UACV,OAAO,IAAAnB,gBAAA,EAAW,IAAIC,KAAJ,CAAU,4BAAV,CAAX,CAAP;QACD;;QACD,OAAO,IAAAN,QAAA,EAAG;UAACC,IAAI,EAAE,SAAP;UAAkB0B,EAAE,EAAE3C,IAAtB;UAA4BwC;QAA5B,CAAH,CAAP;MACD,CATD,CAZK,CAAP;IAuBD,CAxCD,CADF,CAFK,CAAP;EA8CD,CA/CD,CADK,CAAP;AAkDD;;AAEM,SAASI,UAAT,CAAoBC,IAApB,EAA4E;EAAA,IAA5CnC,OAA4C,uEAAJ,EAAI;EACjF,OAAOoC,QAAQ,CAACD,IAAD,CAAR,CAAejC,IAAf,CACL,IAAAC,oBAAA,EAAWkC,WAAD,IAAiB;IACzB,OAAO,IAAAhC,YAAA,EACL,IAAAC,QAAA,EAAG;MAACC,IAAI,EAAE,MAAP;MAAe4B,IAAI,EAAEE;IAArB,CAAH,CADK,EAEL,IAAA7B,8BAAA,IAAwBN,IAAxB,CACE,IAAAC,oBAAA,EAAWM,IAAD,IAAU;MAClB,IAAI,CAACA,IAAD,IAAS,CAACA,IAAI,CAACC,MAAnB,EAA2B;QACzB,OAAO,IAAAC,gBAAA,EAAW,IAAIC,KAAJ,CAAU,qBAAV,CAAX,CAAP;MACD;;MACD,IAAMtB,IAAI,GAAG,IAAAuB,UAAA,GAAb;MACA,IAAOC,gBAAP,GAA2Bd,OAA3B,CAAOc,gBAAP;MACA,IAAMwB,IAAI,GAAG;QACXpB,WAAW,EAAEC,eAAA,CAAOD,WADT;QAEXD,eAAe,EAAE,CAACH,gBAAgB,GAAG,QAAH,GAAc,QAA/B;MAFN,CAAb;MAKA,OAAO,IAAAT,YAAA,EACL,IAAAC,QAAA,EAAG;QAACC,IAAI,EAAE,MAAP;QAAejB;MAAf,CAAH,CADK,EAEL,IAAAoC,WAAA,EAAM,MACJnC,qBAAA,CAAOC,UAAP,CAAkBC,OAAlB,CAcG;QACDC,GAAG,gCAAyBH,qBAAA,CAAOI,YAAP,CAAoBC,OAA7C,CADF;QAEDC,eAAe,EAAE,IAFhB;QAGDC,MAAM,EAAE,MAHP;QAID6B,OAAO,EAAE;UACP,kBAAkBrC,IADX;UAEP,gBAAgB;QAFT,CAJR;QAQDgD;MARC,CAdH,CADF,EAyBEpC,IAzBF,CA0BE,IAAA0B,mBAAA,EAAUC,MAAD,IAAY;QACnB,OAAO,IAAAU,0CAAA,EAAwBjD,IAAxB,EAA8BuC,MAAM,CAACW,MAAP,CAAc9C,GAA5C,EAAiDyC,IAAjD,EAAuDjC,IAAvD,EACL;QACA;QACA;QACA,IAAA0B,mBAAA,EAAUa,KAAD,IAAgB;UACvB,IAAIA,KAAK,CAAClC,IAAN,KAAe,SAAnB,EAA8B;YAC5B,OAAO,IAAAD,QAAA,EAAGmC,KAAH,CAAP;UACD;;UACD,OAAO,IAAAC,UAAA,EAAKC,6BAA6B,CAACrD,IAAD,CAAlC,EAA0CY,IAA1C,EACL;UACA,IAAA0B,mBAAA,EAAUgB,GAAD,IAAS,IAAAtC,QAAA,kCAAOmC,KAAP;YAAcX,KAAK,EAAEc;UAArB,GAAlB,CAFK,CAAP;QAID,CARD,CAJK,EAaL;QACA,IAAAC,qBAAA,EAAYC,GAAD,IAAS;UAClB;UACA,OAAOzD,YAAY,CAACC,IAAD,CAAZ,CAAmBY,IAAnB,CAAwB,IAAA6C,qBAAA,EAAW,IAAApC,gBAAA,EAAWmC,GAAX,CAAX,CAAxB,CAAP;QACD,CAHD,CAdK,CAAP;MAmBD,CApBD,CA1BF,CAFK,CAAP;IAmDD,CA9DD,CADF,CAFK,CAAP;EAoED,CArED,CADK,CAAP;AAwED;;AAgBM,SAASE,SAAT,CAAmBC,OAAnB,EAAoC;EACzC,OAAO1D,qBAAA,CAAOE,OAAP,CAA+B;IACpCC,GAAG,gCAAyBH,qBAAA,CAAOI,YAAP,CAAoBC,OAA7C,cAAwDqD,OAAxD,CADiC;IAEpCpD,eAAe,EAAE,IAFmB;IAGpCC,MAAM,EAAE;EAH4B,CAA/B,CAAP;AAKD;;AAED,SAASoD,UAAT,CAAoB5D,IAApB,EAA2D;EACzD,IAAM6D,QAAQ,GAAG,EAAjB;EACA,IAAIC,YAAJ;EACA,IAAIC,KAAK,GAAG,CAAZ;EACA,IAAIJ,OAAJ;EACA,IAAIT,MAAJ;EACA,OAAO,IAAIc,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;IACtCJ,YAAY,GAAIK,WAAD,iCAA2C,aAAY;MACpE,IAAI;QACFjB,MAAM,SAASQ,SAAS,CAAC1D,IAAD,CAAxB;MACD,CAFD,CAEE,OAAOwD,GAAP,EAAY;QACZU,MAAM,CAACV,GAAD,CAAN;QACA;MACD;;MACDG,OAAO,GAAGT,MAAM,IAAIA,MAAM,CAACkB,IAAjB,IAAyBlB,MAAM,CAACkB,IAAP,CAAYC,QAA/C;;MACA,IAAIV,OAAJ,EAAa;QACXW,aAAa,CAACR,YAAD,CAAb;QACAG,OAAO,CAACf,MAAD,CAAP;MACD;;MACD,IAAIa,KAAK,GAAGF,QAAZ,EAAsB;QACpBS,aAAa,CAACR,YAAD,CAAb;QACAI,MAAM,CAAC,IAAI5C,KAAJ,CAAU,uBAAV,CAAD,CAAN;MACD;;MACDyC,KAAK;IACN,CAjBc,GAiBZ,IAjBY,CAAf;EAkBD,CAnBM,CAAP;AAoBD;;SAEcV,6B;;;;;qDAAf,WAA6CrD,IAA7C,EAA2D;IACzD,IAAIkD,MAAJ;IACA,IAAIV,KAAJ;;IACA,IAAI;MACFU,MAAM,SAASU,UAAU,CAAC5D,IAAD,CAAzB;IACD,CAFD,CAEE,OAAOwD,GAAP,EAAY;MACZ,OAAOQ,OAAO,CAACE,MAAR,CAAeV,GAAf,CAAP;IACD;;IACD,IAAI;MACFhB,KAAK,SAAS,IAAA+B,gBAAA,EAASrB,MAAM,CAACkB,IAAP,CAAYC,QAArB,CAAd;IACD,CAFD,CAEE,OAAOb,GAAP,EAAY;MACZ,OAAOQ,OAAO,CAACE,MAAR,CAAeV,GAAf,CAAP;IACD;;IAED,IAAMF,GAAG,GAAG;MACVkB,GAAG,EAAExE,IADK;MAEVyE,KAAK,EAAE,gBAFG;MAGVrD,MAAM,EAAEoB,KAAK,CAAC4B,IAAN,CAAWhD,MAHT;MAIVgD,IAAI,EAAE5B,KAAK,CAAC4B,IAJF;MAKVT,OAAO,EAAEnB,KAAK,CAAC4B,IAAN,CAAWzB,EALV;MAMV+B,UAAU,EAAElC,KAAK,CAAC4B,IAAN,CAAWO,YAAX,CAAwB,CAAxB,EAA2BhC,EAN7B;MAOViC,QAAQ,EAAE1B,MAAM,CAACkB,IAAP,CAAYzB;IAPZ,CAAZ;IASA,OAAO1C,qBAAA,CAAO4E,eAAP,CAAuBvB,GAAvB,EAA4BwB,IAA5B,CAAiC,MAAM;MAC5C,OAAOxB,GAAP;IACD,CAFM,CAAP;EAGD,C;;;;AAED,SAASR,QAAT,CAAkBD,IAAlB,EAA8B;EAC5B,IAAI,OAAOkC,MAAP,KAAkB,WAAlB,IAAiClC,IAAI,YAAYkC,MAAM,CAACC,IAA5D,EAAkE;IAChE,IAAMjC,WAAW,GAAGkC,eAAe,CAAC,EAAD,EAAKpC,IAAL,CAAnC;IACA,OAAO,IAAA7B,QAAA,EAAG+B,WAAH,CAAP;EACD;;EACD,OAAO,IAAA1B,gBAAA,EAAW,IAAIC,KAAJ,CAAU,cAAV,CAAX,CAAP;AACD;;AAED,SAASX,OAAT,CAAiBP,GAAjB,EAAkD;EAChD,IAAM8E,KAAK,GAAG,IAAI5D,KAAJ,CAAU,aAAV,CAAd;;EACA,IAAI,CAAC,IAAA6D,gBAAA,EAAS/E,GAAT,CAAL,EAAoB;IAClB,OAAO,IAAAiB,gBAAA,EAAW6D,KAAX,CAAP;EACD;;EACD,IAAIE,MAAJ;;EACA,IAAI;IACFA,MAAM,GAAG,IAAIC,GAAJ,CAAQjF,GAAR,CAAT;EACD,CAFD,CAEE,OAAOoD,GAAP,EAAY;IACZ,OAAO,IAAAnC,gBAAA,EAAW6D,KAAX,CAAP;EACD;;EACD,IAAIE,MAAM,IAAI,CAACA,MAAM,CAACE,QAAP,CAAgBC,KAAhB,CAAsB,cAAtB,CAAf,EAAsD;IACpD,OAAO,IAAAlE,gBAAA,EAAW6D,KAAX,CAAP;EACD;;EACD,OAAO,IAAAlE,QAAA,EAAGZ,GAAH,CAAP;AACD;;AAED,SAAS6E,eAAT,CAAyBO,IAAzB,EAA6D3C,IAA7D,EAAyE;EACvE,IAAI,OAAOkC,MAAP,KAAkB,WAAlB,IAAiC,EAAElC,IAAI,YAAYkC,MAAM,CAACC,IAAzB,CAArC,EAAqE;IACnE,OAAOQ,IAAP;EACD;;EACD,OAAO;IACLC,IAAI,EAAED,IAAI,CAACE,gBAAL,KAA0B,KAA1B,GAAkCC,SAAlC,GAA8C9C,IAAI,CAAC4C,IADpD;IAELxE,IAAI,EAAE4B,IAAI,CAAC5B;EAFN,CAAP;AAID"}
|
|
1
|
+
{"version":3,"file":"upload.js","names":["cancelUpload","uuid","client","observable","request","url","clientConfig","dataset","withCredentials","method","uploadUrl","options","testUrl","pipe","switchMap","validUrl","concat","of","type","testSecretsObservable","json","status","throwError","Error","generateUuid","enableSignedUrls","muxBody","input","playback_policy","mp4_support","config","query","JSON","stringify","filename","split","slice","defer","headers","mergeMap","result","asset","results","document","id","uploadFile","file","testFile","fileOptions","body","createUpChunkObservable","upload","event","from","updateAssetDocumentFromUpload","doc","catchError","err","mergeMapTo","getUpload","assetId","pollUpload","maxTries","pollInterval","tries","Promise","resolve","reject","setInterval","data","asset_id","clearInterval","getAsset","_id","_type","playbackId","playback_ids","uploadId","createOrReplace","then","window","File","optionsFromFile","error","isString","parsed","URL","protocol","match","opts","name","preserveFilename","undefined"],"sources":["../../src/actions/upload.ts"],"sourcesContent":["/* eslint-disable camelcase */\nimport {uuid as generateUuid} from '@sanity/uuid'\nimport {isString} from 'lodash'\nimport {type Observable, concat, defer, from, of, throwError} from 'rxjs'\nimport {catchError, mergeMap, mergeMapTo, switchMap} from 'rxjs/operators'\n\nimport client from '../clients/SanityClient'\nimport {createUpChunkObservable} from '../clients/upChunkObservable'\nimport config from '../config'\nimport type {MuxAsset} from '../util/types'\nimport {getAsset} from './assets'\nimport {testSecretsObservable} from './secrets'\n\nexport function cancelUpload(uuid: string) {\n return client.observable.request({\n url: `/addons/mux/uploads/${client.clientConfig.dataset}/${uuid}`,\n withCredentials: true,\n method: 'DELETE',\n })\n}\n\nexport function uploadUrl(url: string, options: {enableSignedUrls?: boolean} = {}) {\n return testUrl(url).pipe(\n switchMap((validUrl) => {\n return concat(\n of({type: 'url', url: validUrl}),\n testSecretsObservable().pipe(\n switchMap((json) => {\n if (!json || !json.status) {\n return throwError(new Error('Invalid credentials'))\n }\n const uuid = generateUuid()\n const {enableSignedUrls} = options\n const muxBody = {\n input: validUrl,\n playback_policy: [enableSignedUrls ? 'signed' : 'public'],\n mp4_support: config.mp4_support,\n }\n const query = {\n muxBody: JSON.stringify(muxBody),\n filename: validUrl.split('/').slice(-1)[0],\n }\n\n const dataset = client.clientConfig.dataset\n return defer(() =>\n client.observable.request({\n url: `/addons/mux/assets/${dataset}`,\n withCredentials: true,\n method: 'POST',\n headers: {\n 'MUX-Proxy-UUID': uuid,\n 'Content-Type': 'application/json',\n },\n query,\n })\n ).pipe(\n mergeMap((result) => {\n const asset =\n (result && result.results && result.results[0] && result.results[0].document) ||\n null\n\n if (!asset) {\n return throwError(new Error('No asset document returned'))\n }\n return of({type: 'success', id: uuid, asset})\n })\n )\n })\n )\n )\n })\n )\n}\n\nexport function uploadFile(file: File, options: {enableSignedUrls?: boolean} = {}) {\n return testFile(file).pipe(\n switchMap((fileOptions) => {\n return concat(\n of({type: 'file', file: fileOptions}),\n testSecretsObservable().pipe(\n switchMap((json) => {\n if (!json || !json.status) {\n return throwError(new Error('Invalid credentials'))\n }\n const uuid = generateUuid()\n const {enableSignedUrls} = options\n const body = {\n mp4_support: config.mp4_support,\n playback_policy: [enableSignedUrls ? 'signed' : 'public'],\n }\n\n return concat(\n of({type: 'uuid', uuid}),\n defer(() =>\n client.observable.request<{\n sanityAssetId: string\n upload: {\n cors_origin: string\n id: string\n new_asset_settings: {\n mp4_support: 'standard' | 'none'\n passthrough: string\n playback_policies: ['public' | 'signed']\n }\n status: 'waiting'\n timeout: number\n url: string\n }\n }>({\n url: `/addons/mux/uploads/${client.clientConfig.dataset}`,\n withCredentials: true,\n method: 'POST',\n headers: {\n 'MUX-Proxy-UUID': uuid,\n 'Content-Type': 'application/json',\n },\n body,\n })\n ).pipe(\n mergeMap((result) => {\n return createUpChunkObservable(uuid, result.upload.url, file).pipe(\n // eslint-disable-next-line no-warning-comments\n // @TODO type the observable events\n // eslint-disable-next-line max-nested-callbacks\n mergeMap((event: any) => {\n if (event.type !== 'success') {\n return of(event)\n }\n return from(updateAssetDocumentFromUpload(uuid)).pipe(\n // eslint-disable-next-line max-nested-callbacks\n mergeMap((doc) => of({...event, asset: doc}))\n )\n }),\n // eslint-disable-next-line max-nested-callbacks\n catchError((err) => {\n // Delete asset document\n return cancelUpload(uuid).pipe(mergeMapTo(throwError(err)))\n })\n )\n })\n )\n )\n })\n )\n )\n })\n )\n}\n\ntype UploadResponse = {\n data: {\n asset_id: string\n cors_origin: string\n id: string\n new_asset_settings: {\n mp4_support: 'standard' | 'none'\n passthrough: string\n playback_policies: ['public' | 'signed']\n }\n status: string\n timeout: number\n }\n}\nexport function getUpload(assetId: string) {\n return client.request<UploadResponse>({\n url: `/addons/mux/uploads/${client.clientConfig.dataset}/${assetId}`,\n withCredentials: true,\n method: 'GET',\n })\n}\n\nfunction pollUpload(uuid: string): Promise<UploadResponse> {\n const maxTries = 10\n let pollInterval: number\n let tries = 0\n let assetId: string\n let upload: UploadResponse\n return new Promise((resolve, reject) => {\n pollInterval = (setInterval as typeof window.setInterval)(async () => {\n try {\n upload = await getUpload(uuid)\n } catch (err) {\n reject(err)\n return\n }\n assetId = upload && upload.data && upload.data.asset_id\n if (assetId) {\n clearInterval(pollInterval)\n resolve(upload)\n }\n if (tries > maxTries) {\n clearInterval(pollInterval)\n reject(new Error('Upload did not finish'))\n }\n tries++\n }, 2000)\n })\n}\n\nasync function updateAssetDocumentFromUpload(uuid: string) {\n let upload: UploadResponse\n let asset: {data: MuxAsset}\n try {\n upload = await pollUpload(uuid)\n } catch (err) {\n return Promise.reject(err)\n }\n try {\n asset = await getAsset(upload.data.asset_id)\n } catch (err) {\n return Promise.reject(err)\n }\n\n const doc = {\n _id: uuid,\n _type: 'mux.videoAsset',\n status: asset.data.status,\n data: asset.data,\n assetId: asset.data.id,\n playbackId: asset.data.playback_ids[0].id,\n uploadId: upload.data.id,\n }\n return client.createOrReplace(doc).then(() => {\n return doc\n })\n}\n\nfunction testFile(file: File) {\n if (typeof window !== 'undefined' && file instanceof window.File) {\n const fileOptions = optionsFromFile({}, file)\n return of(fileOptions)\n }\n return throwError(new Error('Invalid file'))\n}\n\nfunction testUrl(url: string): Observable<string> {\n const error = new Error('Invalid URL')\n if (!isString(url)) {\n return throwError(error)\n }\n let parsed\n try {\n parsed = new URL(url)\n } catch (err) {\n return throwError(error)\n }\n if (parsed && !parsed.protocol.match(/http:|https:/)) {\n return throwError(error)\n }\n return of(url)\n}\n\nfunction optionsFromFile(opts: {preserveFilename?: boolean}, file: File) {\n if (typeof window === 'undefined' || !(file instanceof window.File)) {\n return opts\n }\n return {\n name: opts.preserveFilename === false ? undefined : file.name,\n type: file.type,\n }\n}\n"],"mappings":"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"}
|
|
@@ -4,11 +4,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = exports.client = void 0;
|
|
7
|
-
|
|
8
7
|
var _client = _interopRequireDefault(require("part:@sanity/base/client"));
|
|
9
|
-
|
|
10
8
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
-
|
|
12
9
|
var sanityClient = _client.default;
|
|
13
10
|
var isContentLakeSupported = typeof sanityClient.withConfig === 'function';
|
|
14
11
|
var client = isContentLakeSupported ? sanityClient.withConfig({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SanityClient.js","names":["sanityClient","_sanityClient","isContentLakeSupported","withConfig","client","apiVersion"],"sources":["../../src/clients/SanityClient.ts"],"sourcesContent":["import type {SanityClient} from '@sanity/client'\nimport _sanityClient from 'part:@sanity/base/client'\nconst sanityClient = _sanityClient as SanityClient\n\nconst isContentLakeSupported = typeof sanityClient.withConfig === 'function'\n\nexport const client = isContentLakeSupported\n ? sanityClient.withConfig({apiVersion: '2021-05-17'})\n : sanityClient\n\nexport default client\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"SanityClient.js","names":["sanityClient","_sanityClient","isContentLakeSupported","withConfig","client","apiVersion"],"sources":["../../src/clients/SanityClient.ts"],"sourcesContent":["import type {SanityClient} from '@sanity/client'\nimport _sanityClient from 'part:@sanity/base/client'\nconst sanityClient = _sanityClient as SanityClient\n\nconst isContentLakeSupported = typeof sanityClient.withConfig === 'function'\n\nexport const client = isContentLakeSupported\n ? sanityClient.withConfig({apiVersion: '2021-05-17'})\n : sanityClient\n\nexport default client\n"],"mappings":";;;;;;AACA;AAAoD;AACpD,IAAMA,YAAY,GAAGC,eAA6B;AAElD,IAAMC,sBAAsB,GAAG,OAAOF,YAAY,CAACG,UAAU,KAAK,UAAU;AAErE,IAAMC,MAAM,GAAGF,sBAAsB,GACxCF,YAAY,CAACG,UAAU,CAAC;EAACE,UAAU,EAAE;AAAY,CAAC,CAAC,GACnDL,YAAY;AAAA;AAAA,eAEDI,MAAM;AAAA"}
|
|
@@ -4,22 +4,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.createUpChunkObservable = createUpChunkObservable;
|
|
7
|
-
|
|
8
7
|
var UpChunk = _interopRequireWildcard(require("@mux/upchunk"));
|
|
9
|
-
|
|
10
8
|
var _rxjs = require("rxjs");
|
|
11
|
-
|
|
12
9
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
13
|
-
|
|
14
10
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
15
|
-
|
|
16
11
|
function createUpChunkObservable(uuid, uploadUrl, source) {
|
|
17
12
|
return new _rxjs.Observable(subscriber => {
|
|
18
13
|
var upchunk = UpChunk.createUpload({
|
|
19
14
|
endpoint: uploadUrl,
|
|
20
15
|
file: source,
|
|
21
16
|
chunkSize: 30720 // Uploads the file in 30 MB chunks
|
|
22
|
-
|
|
23
17
|
});
|
|
24
18
|
|
|
25
19
|
var successHandler = () => {
|
|
@@ -29,16 +23,13 @@ function createUpChunkObservable(uuid, uploadUrl, source) {
|
|
|
29
23
|
});
|
|
30
24
|
subscriber.complete();
|
|
31
25
|
};
|
|
32
|
-
|
|
33
26
|
var errorHandler = data => subscriber.error(new Error(data.detail.message));
|
|
34
|
-
|
|
35
27
|
var progressHandler = data => {
|
|
36
28
|
return subscriber.next({
|
|
37
29
|
type: 'progress',
|
|
38
30
|
percent: data.detail
|
|
39
31
|
});
|
|
40
32
|
};
|
|
41
|
-
|
|
42
33
|
var offlineHandler = () => {
|
|
43
34
|
upchunk.pause();
|
|
44
35
|
subscriber.next({
|
|
@@ -46,7 +37,6 @@ function createUpChunkObservable(uuid, uploadUrl, source) {
|
|
|
46
37
|
id: uuid
|
|
47
38
|
});
|
|
48
39
|
};
|
|
49
|
-
|
|
50
40
|
var onlineHandler = () => {
|
|
51
41
|
upchunk.resume();
|
|
52
42
|
subscriber.next({
|
|
@@ -54,7 +44,6 @@ function createUpChunkObservable(uuid, uploadUrl, source) {
|
|
|
54
44
|
id: uuid
|
|
55
45
|
});
|
|
56
46
|
};
|
|
57
|
-
|
|
58
47
|
upchunk.on('success', successHandler);
|
|
59
48
|
upchunk.on('error', errorHandler);
|
|
60
49
|
upchunk.on('progress', progressHandler);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upChunkObservable.js","names":["createUpChunkObservable","uuid","uploadUrl","source","Observable","subscriber","upchunk","UpChunk","createUpload","endpoint","file","chunkSize","successHandler","next","type","id","complete","errorHandler","data","error","Error","detail","message","progressHandler","percent","offlineHandler","pause","onlineHandler","resume","on","abort"],"sources":["../../src/clients/upChunkObservable.ts"],"sourcesContent":["import * as UpChunk from '@mux/upchunk'\nimport {Observable} from 'rxjs'\n\nexport function createUpChunkObservable(uuid: string, uploadUrl: string, source: File) {\n return new Observable((subscriber) => {\n const upchunk = UpChunk.createUpload({\n endpoint: uploadUrl,\n file: source,\n chunkSize: 30720, // Uploads the file in 30 MB chunks\n })\n\n const successHandler = () => {\n subscriber.next({\n type: 'success',\n id: uuid,\n })\n subscriber.complete()\n }\n\n const errorHandler = (data: CustomEvent) => subscriber.error(new Error(data.detail.message))\n\n const progressHandler = (data: CustomEvent) => {\n return subscriber.next({type: 'progress', percent: data.detail})\n }\n\n const offlineHandler = () => {\n upchunk.pause()\n subscriber.next({\n type: 'pause',\n id: uuid,\n })\n }\n\n const onlineHandler = () => {\n upchunk.resume()\n subscriber.next({\n type: 'resume',\n id: uuid,\n })\n }\n\n upchunk.on('success', successHandler)\n upchunk.on('error', errorHandler)\n upchunk.on('progress', progressHandler)\n upchunk.on('offline', offlineHandler)\n upchunk.on('online', onlineHandler)\n\n return () => upchunk.abort()\n })\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"upChunkObservable.js","names":["createUpChunkObservable","uuid","uploadUrl","source","Observable","subscriber","upchunk","UpChunk","createUpload","endpoint","file","chunkSize","successHandler","next","type","id","complete","errorHandler","data","error","Error","detail","message","progressHandler","percent","offlineHandler","pause","onlineHandler","resume","on","abort"],"sources":["../../src/clients/upChunkObservable.ts"],"sourcesContent":["import * as UpChunk from '@mux/upchunk'\nimport {Observable} from 'rxjs'\n\nexport function createUpChunkObservable(uuid: string, uploadUrl: string, source: File) {\n return new Observable((subscriber) => {\n const upchunk = UpChunk.createUpload({\n endpoint: uploadUrl,\n file: source,\n chunkSize: 30720, // Uploads the file in 30 MB chunks\n })\n\n const successHandler = () => {\n subscriber.next({\n type: 'success',\n id: uuid,\n })\n subscriber.complete()\n }\n\n const errorHandler = (data: CustomEvent) => subscriber.error(new Error(data.detail.message))\n\n const progressHandler = (data: CustomEvent) => {\n return subscriber.next({type: 'progress', percent: data.detail})\n }\n\n const offlineHandler = () => {\n upchunk.pause()\n subscriber.next({\n type: 'pause',\n id: uuid,\n })\n }\n\n const onlineHandler = () => {\n upchunk.resume()\n subscriber.next({\n type: 'resume',\n id: uuid,\n })\n }\n\n upchunk.on('success', successHandler)\n upchunk.on('error', errorHandler)\n upchunk.on('progress', progressHandler)\n upchunk.on('offline', offlineHandler)\n upchunk.on('online', onlineHandler)\n\n return () => upchunk.abort()\n })\n}\n"],"mappings":";;;;;;AAAA;AACA;AAA+B;AAAA;AAExB,SAASA,uBAAuB,CAACC,IAAY,EAAEC,SAAiB,EAAEC,MAAY,EAAE;EACrF,OAAO,IAAIC,gBAAU,CAAEC,UAAU,IAAK;IACpC,IAAMC,OAAO,GAAGC,OAAO,CAACC,YAAY,CAAC;MACnCC,QAAQ,EAAEP,SAAS;MACnBQ,IAAI,EAAEP,MAAM;MACZQ,SAAS,EAAE,KAAK,CAAE;IACpB,CAAC,CAAC;;IAEF,IAAMC,cAAc,GAAG,MAAM;MAC3BP,UAAU,CAACQ,IAAI,CAAC;QACdC,IAAI,EAAE,SAAS;QACfC,EAAE,EAAEd;MACN,CAAC,CAAC;MACFI,UAAU,CAACW,QAAQ,EAAE;IACvB,CAAC;IAED,IAAMC,YAAY,GAAIC,IAAiB,IAAKb,UAAU,CAACc,KAAK,CAAC,IAAIC,KAAK,CAACF,IAAI,CAACG,MAAM,CAACC,OAAO,CAAC,CAAC;IAE5F,IAAMC,eAAe,GAAIL,IAAiB,IAAK;MAC7C,OAAOb,UAAU,CAACQ,IAAI,CAAC;QAACC,IAAI,EAAE,UAAU;QAAEU,OAAO,EAAEN,IAAI,CAACG;MAAM,CAAC,CAAC;IAClE,CAAC;IAED,IAAMI,cAAc,GAAG,MAAM;MAC3BnB,OAAO,CAACoB,KAAK,EAAE;MACfrB,UAAU,CAACQ,IAAI,CAAC;QACdC,IAAI,EAAE,OAAO;QACbC,EAAE,EAAEd;MACN,CAAC,CAAC;IACJ,CAAC;IAED,IAAM0B,aAAa,GAAG,MAAM;MAC1BrB,OAAO,CAACsB,MAAM,EAAE;MAChBvB,UAAU,CAACQ,IAAI,CAAC;QACdC,IAAI,EAAE,QAAQ;QACdC,EAAE,EAAEd;MACN,CAAC,CAAC;IACJ,CAAC;IAEDK,OAAO,CAACuB,EAAE,CAAC,SAAS,EAAEjB,cAAc,CAAC;IACrCN,OAAO,CAACuB,EAAE,CAAC,OAAO,EAAEZ,YAAY,CAAC;IACjCX,OAAO,CAACuB,EAAE,CAAC,UAAU,EAAEN,eAAe,CAAC;IACvCjB,OAAO,CAACuB,EAAE,CAAC,SAAS,EAAEJ,cAAc,CAAC;IACrCnB,OAAO,CAACuB,EAAE,CAAC,QAAQ,EAAEF,aAAa,CAAC;IAEnC,OAAO,MAAMrB,OAAO,CAACwB,KAAK,EAAE;EAC9B,CAAC,CAAC;AACJ"}
|