@playkit-js/playkit-js-providers 2.41.0-canary.0-bb5f4a7 → 2.41.0-canary.0-3d6d02a
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/analytics-service/package.json +6 -0
- package/bookmark-service/package.json +6 -0
- package/dist/analytics-service.d.ts +160 -0
- package/dist/bookmark-service.d.ts +157 -0
- package/dist/ott-provider.d.ts +545 -0
- package/dist/{index.d.ts → ovp-provider.d.ts} +75 -120
- package/dist/playkit-analytics-service.js +1 -1
- package/dist/playkit-bookmark-service.js +1 -1
- package/dist/playkit-ott-provider.js +1 -1
- package/dist/playkit-ott-provider.js.map +1 -1
- package/dist/playkit-ovp-provider.js +1 -2
- package/dist/playkit-ovp-provider.js.map +1 -1
- package/dist/playkit-stats-service.js +1 -1
- package/dist/stats-service.d.ts +159 -0
- package/dist/tsdoc-metadata.json +1 -1
- package/dist/types.d.ts +391 -0
- package/ott-provider/package.json +6 -0
- package/ovp-provider/package.json +6 -0
- package/package.json +23 -15
- package/src/k-provider/common/base-provider.ts +13 -2
- package/src/k-provider/ovp/loaders/media-entry-loader.ts +4 -4
- package/src/k-provider/ovp/provider-parser.ts +12 -2
- package/src/k-provider/ovp/provider.ts +7 -5
- package/src/k-provider/ovp/regex-action-handler.ts +51 -44
- package/src/k-provider/ovp/services/base-entry-service.ts +2 -2
- package/src/types/index.ts +0 -8
- package/src/types/provider-options.ts +1 -0
- package/stats-service/package.json +6 -0
- package/types/package.json +5 -0
- package/dist/playkit-ovp-provider.js.LICENSE.txt +0 -1
- package/playkit-analytics-service/package.json +0 -5
- package/playkit-bookmark-service/package.json +0 -5
- package/playkit-ott-provider/package.json +0 -5
- package/playkit-ovp-provider/package.json +0 -5
- package/playkit-stats-service/package.json +0 -5
package/package.json
CHANGED
|
@@ -1,36 +1,44 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@playkit-js/playkit-js-providers",
|
|
3
|
-
"version": "2.41.0-canary.0-
|
|
3
|
+
"version": "2.41.0-canary.0-3d6d02a",
|
|
4
4
|
"description": "",
|
|
5
|
-
"types": "./dist/index.d.ts",
|
|
6
5
|
"files": [
|
|
7
6
|
"dist/**/*",
|
|
8
7
|
"src/**/*",
|
|
9
8
|
"flow-typed/**/*",
|
|
10
|
-
"
|
|
11
|
-
"
|
|
12
|
-
"
|
|
13
|
-
"
|
|
14
|
-
"
|
|
9
|
+
"analytics-service/*",
|
|
10
|
+
"bookmark-service/*",
|
|
11
|
+
"ott-provider/*",
|
|
12
|
+
"ovp-provider/*",
|
|
13
|
+
"stats-service/*",
|
|
14
|
+
"types/*"
|
|
15
15
|
],
|
|
16
16
|
"exports": {
|
|
17
|
-
"./
|
|
18
|
-
"./
|
|
19
|
-
"./
|
|
20
|
-
"./
|
|
21
|
-
"./
|
|
17
|
+
"./ovp-provider": "./dist/playkit-ovp-provider.js",
|
|
18
|
+
"./ott-provider": "./dist/playkit-ott-provider.js",
|
|
19
|
+
"./analytics-service": "./dist/playkit-analytics-service.js",
|
|
20
|
+
"./stats-service": "./dist/playkit-stats-service.js",
|
|
21
|
+
"./bookmark-service": "./dist/playkit-bookmark-service.js",
|
|
22
|
+
"./types": "./dist/types.d.ts"
|
|
22
23
|
},
|
|
23
24
|
"scripts": {
|
|
24
25
|
"serve": "webpack serve --open --mode=development",
|
|
25
26
|
"build:dev": "webpack --mode=development",
|
|
26
27
|
"build:prod": "webpack --mode=production --node-env=production",
|
|
27
28
|
"build": "yarn run build:prod && yarn run build:types",
|
|
28
|
-
"build:types": "
|
|
29
|
+
"build:types": "yarn run build:types:ovp && yarn run build:types:ott && yarn run build:types:analytics && yarn run build:types:bookmark && yarn run build:types:stats && yarn run build:types:types",
|
|
30
|
+
"build:types:ovp": "tsc --build tsconfig-lib.json && mkdir -p lib && api-extractor run --config api-extracor-config/api-extractor-ovp-provider.json --local",
|
|
31
|
+
"build:types:ott": "tsc --build tsconfig-lib.json && mkdir -p lib && api-extractor run --config api-extracor-config/api-extractor-ott-provider.json --local",
|
|
32
|
+
"build:types:analytics": "tsc --build tsconfig-lib.json && mkdir -p lib && api-extractor run --config api-extracor-config/api-extractor-analytics-service.json --local",
|
|
33
|
+
"build:types:bookmark": "tsc --build tsconfig-lib.json && mkdir -p lib && api-extractor run --config api-extracor-config/api-extractor-bookmark-service.json --local",
|
|
34
|
+
"build:types:stats": "tsc --build tsconfig-lib.json && mkdir -p lib && api-extractor run --config api-extracor-config/api-extractor-stats-service.json --local",
|
|
35
|
+
"build:types:types": "tsc --build tsconfig-lib.json && mkdir -p lib && api-extractor run --config api-extracor-config/api-extractor-types.json --local",
|
|
29
36
|
"type-check": "tsc --noEmit",
|
|
30
37
|
"type-check:watch": "npm run type-check -- --watch",
|
|
31
38
|
"watch": "webpack --mode=development --watch",
|
|
32
39
|
"test": "NODE_ENV=test karma start --color --mode development",
|
|
33
40
|
"test:watch": "NODE_ENV=test karma start --browsers=Chrome --single-run=false --auto-watch",
|
|
41
|
+
"test:debug": "NODE_ENV=test karma start --browsers=Chrome --single-run=false --auto-watch --debug",
|
|
34
42
|
"release": "standard-version",
|
|
35
43
|
"pushTaggedRelease": "git push --follow-tags --no-verify origin master",
|
|
36
44
|
"lint": "eslint src/ --ext .js --ext .ts",
|
|
@@ -43,8 +51,8 @@
|
|
|
43
51
|
"@babel/plugin-transform-runtime": "^7.22.15",
|
|
44
52
|
"@babel/preset-env": "^7.21.5",
|
|
45
53
|
"@babel/preset-typescript": "^7.22.15",
|
|
46
|
-
"@microsoft/api-extractor": "^7.
|
|
47
|
-
"@playkit-js/browserslist-config": "
|
|
54
|
+
"@microsoft/api-extractor": "^7.39.4",
|
|
55
|
+
"@playkit-js/browserslist-config": "1.0.8",
|
|
48
56
|
"@typescript-eslint/eslint-plugin": "^6.7.2",
|
|
49
57
|
"@typescript-eslint/parser": "^6.7.2",
|
|
50
58
|
"babel-eslint": "^10.1.0",
|
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
import {getLogLevel, setLogLevel, setLogger, LogLevelType, LogLevel} from '../../util/logger';
|
|
2
2
|
import DataLoaderManager from './data-loader-manager';
|
|
3
3
|
import Error from '../../util/error/error';
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
ProviderEntryListObject,
|
|
6
|
+
ProviderMediaConfigObject,
|
|
7
|
+
ProviderPlaylistInfoObject,
|
|
8
|
+
ProviderMediaConfigSourcesObject,
|
|
9
|
+
ProviderNetworkRetryParameters,
|
|
10
|
+
ProviderOptionsObject,
|
|
11
|
+
ProviderPlaylistObject
|
|
12
|
+
} from '../../types';
|
|
5
13
|
|
|
6
14
|
export default class BaseProvider<MI> {
|
|
7
15
|
private _partnerId: number;
|
|
@@ -11,7 +19,9 @@ export default class BaseProvider<MI> {
|
|
|
11
19
|
public _dataLoader!: DataLoaderManager;
|
|
12
20
|
private _playerVersion: string;
|
|
13
21
|
public _logger: any;
|
|
22
|
+
public _referrer?: string;
|
|
14
23
|
protected _isAnonymous: boolean;
|
|
24
|
+
|
|
15
25
|
public _networkRetryConfig: ProviderNetworkRetryParameters = {
|
|
16
26
|
async: true,
|
|
17
27
|
timeout: 0,
|
|
@@ -58,6 +68,7 @@ export default class BaseProvider<MI> {
|
|
|
58
68
|
this._isAnonymous = !options.ks;
|
|
59
69
|
this._ks = options.ks || '';
|
|
60
70
|
this._playerVersion = playerVersion;
|
|
71
|
+
this._referrer = options.referrer;
|
|
61
72
|
}
|
|
62
73
|
|
|
63
74
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
@@ -109,4 +120,4 @@ export default class BaseProvider<MI> {
|
|
|
109
120
|
}
|
|
110
121
|
}
|
|
111
122
|
|
|
112
|
-
export {BaseProvider}
|
|
123
|
+
export {BaseProvider};
|
|
@@ -9,9 +9,9 @@ import {KalturaMediaEntry} from '../response-types';
|
|
|
9
9
|
import {ILoader} from '../../../types';
|
|
10
10
|
|
|
11
11
|
type OVPMediaEntryLoaderResponse = {
|
|
12
|
-
entry: KalturaMediaEntry
|
|
13
|
-
playBackContextResult: KalturaPlaybackContext
|
|
14
|
-
metadataListResult: KalturaMetadataListResponse
|
|
12
|
+
entry: KalturaMediaEntry;
|
|
13
|
+
playBackContextResult: KalturaPlaybackContext;
|
|
14
|
+
metadataListResult: KalturaMetadataListResponse;
|
|
15
15
|
};
|
|
16
16
|
export type {OVPMediaEntryLoaderResponse};
|
|
17
17
|
|
|
@@ -68,7 +68,7 @@ export default class OVPMediaEntryLoader implements ILoader {
|
|
|
68
68
|
requests.push(OVPBaseEntryService.list(config.serviceUrl, params.ks, params.entryId, params.redirectFromEntryId, params.referenceId));
|
|
69
69
|
// Use the entry id from the request result to support loading by referenceId
|
|
70
70
|
const serviceEntryId = params.ks === '{1:result:ks}' ? '{2:result:objects:0:id}' : '{1:result:objects:0:id}';
|
|
71
|
-
requests.push(OVPBaseEntryService.getPlaybackContext(config.serviceUrl, params.ks, serviceEntryId));
|
|
71
|
+
requests.push(OVPBaseEntryService.getPlaybackContext(config.serviceUrl, params.ks, serviceEntryId, params.referrer));
|
|
72
72
|
requests.push(OVPMetadataService.list(config.serviceUrl, params.ks, serviceEntryId));
|
|
73
73
|
return requests;
|
|
74
74
|
}
|
|
@@ -45,7 +45,7 @@ class OVPProviderParser {
|
|
|
45
45
|
const kalturaSources = playbackContext.sources;
|
|
46
46
|
|
|
47
47
|
mediaEntry.sources = OVPProviderParser._getParsedSources(kalturaSources, ks, partnerId, uiConfId, entry, playbackContext);
|
|
48
|
-
OVPProviderParser._fillBaseData(mediaEntry, entry, metadataList);
|
|
48
|
+
OVPProviderParser._fillBaseData(mediaEntry, entry, metadataList, playbackContext);
|
|
49
49
|
if (mediaEntry.type !== MediaEntry.Type.LIVE && OVPConfiguration.get().useApiCaptions && playbackContext.data.playbackCaptions) {
|
|
50
50
|
mediaEntry.sources.captions = ExternalCaptionsBuilder.createConfig(playbackContext.data.playbackCaptions, ks);
|
|
51
51
|
}
|
|
@@ -151,7 +151,7 @@ class OVPProviderParser {
|
|
|
151
151
|
}
|
|
152
152
|
}
|
|
153
153
|
|
|
154
|
-
private static _fillBaseData(mediaEntry: MediaEntry, entry: KalturaMediaEntry, metadataList?: KalturaMetadataListResponse): MediaEntry {
|
|
154
|
+
private static _fillBaseData(mediaEntry: MediaEntry, entry: KalturaMediaEntry, metadataList?: KalturaMetadataListResponse, playbackContext?: any): MediaEntry {
|
|
155
155
|
mediaEntry.poster = entry.poster;
|
|
156
156
|
mediaEntry.id = entry.id;
|
|
157
157
|
mediaEntry.duration = entry.duration;
|
|
@@ -174,6 +174,16 @@ class OVPProviderParser {
|
|
|
174
174
|
mediaEntry.dvrStatus = entry.dvrStatus;
|
|
175
175
|
}
|
|
176
176
|
|
|
177
|
+
if (playbackContext &&
|
|
178
|
+
playbackContext.flavorAssets[0] &&
|
|
179
|
+
playbackContext.flavorAssets[0].width && playbackContext.flavorAssets[0].height) {
|
|
180
|
+
|
|
181
|
+
const {height, width} = playbackContext.flavorAssets[0];
|
|
182
|
+
mediaEntry.metadata.heightRatio = +Number(height / width).toFixed(2);
|
|
183
|
+
} else {
|
|
184
|
+
mediaEntry.metadata.heightRatio = 1.78;
|
|
185
|
+
}
|
|
186
|
+
|
|
177
187
|
return mediaEntry;
|
|
178
188
|
}
|
|
179
189
|
|
|
@@ -18,8 +18,10 @@ import {
|
|
|
18
18
|
ProviderFilterOptionsObject,
|
|
19
19
|
ProviderMediaConfigObject,
|
|
20
20
|
ProviderMediaConfigSourcesObject,
|
|
21
|
-
ProviderOptionsObject,
|
|
22
|
-
|
|
21
|
+
ProviderOptionsObject,
|
|
22
|
+
ProviderPlaylistInfoObject,
|
|
23
|
+
ProviderPlaylistObject,
|
|
24
|
+
RequestLoader
|
|
23
25
|
} from '../../types';
|
|
24
26
|
|
|
25
27
|
export default class OVPProvider extends BaseProvider<OVPProviderMediaInfoObject> {
|
|
@@ -65,7 +67,7 @@ export default class OVPProvider extends BaseProvider<OVPProviderMediaInfoObject
|
|
|
65
67
|
this._dataLoader.add(OVPSessionLoader, {widgetId: this.widgetId});
|
|
66
68
|
}
|
|
67
69
|
const redirectFromEntryId = this._getEntryRedirectFilter(mediaInfo);
|
|
68
|
-
this._dataLoader.add(OVPMediaEntryLoader, {entryId, ks, redirectFromEntryId, referenceId});
|
|
70
|
+
this._dataLoader.add(OVPMediaEntryLoader, {entryId, ks, redirectFromEntryId, referenceId, referrer: this._referrer});
|
|
69
71
|
return this._dataLoader.fetchData().then(
|
|
70
72
|
response => {
|
|
71
73
|
try {
|
|
@@ -85,7 +87,7 @@ export default class OVPProvider extends BaseProvider<OVPProviderMediaInfoObject
|
|
|
85
87
|
});
|
|
86
88
|
}
|
|
87
89
|
|
|
88
|
-
public doRequest(loaders: Array<RequestLoader>, ks?: string): Promise<any> {
|
|
90
|
+
public doRequest(loaders: Array<RequestLoader>, ks?: string, requestsMustSucceed?: boolean): Promise<any> {
|
|
89
91
|
const theKs: string = ks || this.ks;
|
|
90
92
|
const dataLoader = new OVPDataLoaderManager(this.playerVersion, this.partnerId, theKs, this._networkRetryConfig);
|
|
91
93
|
|
|
@@ -98,7 +100,7 @@ export default class OVPProvider extends BaseProvider<OVPProviderMediaInfoObject
|
|
|
98
100
|
// @ts-ignore
|
|
99
101
|
dataLoader.add(loaderRequest.loader, loaderRequest.params, theKs || '{1:result:ks}');
|
|
100
102
|
});
|
|
101
|
-
return dataLoader.fetchData().then(
|
|
103
|
+
return dataLoader.fetchData(requestsMustSucceed).then(
|
|
102
104
|
response => {
|
|
103
105
|
try {
|
|
104
106
|
resolve(response);
|
|
@@ -27,34 +27,39 @@ class RegexActionHandler {
|
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
/**
|
|
30
|
-
* Ping the ECDN url
|
|
31
|
-
* @function
|
|
30
|
+
* Ping the ECDN url and replace the host urls if needed
|
|
31
|
+
* @function _pingECDNAndReplaceHostUrls
|
|
32
|
+
* @param {ProviderMediaConfigObject} mediaConfig - The media config
|
|
32
33
|
* @param {KalturaAccessControlModifyRequestHostRegexAction} regexAction - The regex action
|
|
33
34
|
* @param {string} cdnUrl - The CDN url
|
|
34
|
-
* @returns {Promise<
|
|
35
|
+
* @returns {Promise<ProviderMediaConfigObject>} - The media config with old or modified urls
|
|
35
36
|
* @static
|
|
36
37
|
* @private
|
|
37
38
|
*/
|
|
38
|
-
private static
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
39
|
+
private static _pingECDNAndReplaceHostUrls(
|
|
40
|
+
mediaConfig: ProviderMediaConfigObject,
|
|
41
|
+
regexAction: KalturaAccessControlModifyRequestHostRegexAction,
|
|
42
|
+
cdnUrl: string
|
|
43
|
+
): Promise<ProviderMediaConfigObject> {
|
|
44
|
+
return new Promise(resolve => {
|
|
45
|
+
const urlPing = cdnUrl + '/api_v3/service/system/action/ping/format/1';
|
|
46
|
+
const req = new XMLHttpRequest();
|
|
47
|
+
req.open('GET', urlPing);
|
|
48
|
+
req.timeout = regexAction.checkAliveTimeoutMs;
|
|
49
|
+
req.onreadystatechange = ():void => {
|
|
50
|
+
if (req.readyState === 4) {
|
|
51
|
+
if (req.status === 200) {
|
|
52
|
+
RegexActionHandler._replaceHostUrls(mediaConfig, regexAction);
|
|
53
|
+
}
|
|
54
|
+
resolve(mediaConfig);
|
|
47
55
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
};
|
|
56
|
-
req.send();
|
|
57
|
-
return false;
|
|
56
|
+
};
|
|
57
|
+
req.ontimeout = ():void => {
|
|
58
|
+
RegexActionHandler._logger.warn(`Got timeout while pinging the ECDN url. the ping url: ${urlPing}`);
|
|
59
|
+
resolve(mediaConfig);
|
|
60
|
+
};
|
|
61
|
+
req.send();
|
|
62
|
+
});
|
|
58
63
|
}
|
|
59
64
|
|
|
60
65
|
/**
|
|
@@ -62,31 +67,33 @@ class RegexActionHandler {
|
|
|
62
67
|
* @function handleRegexAction
|
|
63
68
|
* @param {ProviderMediaConfigObject} mediaConfig - The media config
|
|
64
69
|
* @param {Map<string, Function>} rawResponse - The raw response data from backend
|
|
65
|
-
* @returns {
|
|
70
|
+
* @returns {ProviderMediaConfigObject} - The media config with old or modified urls
|
|
66
71
|
* @static
|
|
67
72
|
*/
|
|
68
|
-
public static
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
73
|
+
public static handleRegexAction(mediaConfig: ProviderMediaConfigObject, rawResponse: Map<string, ILoader>): Promise<ProviderMediaConfigObject> {
|
|
74
|
+
return new Promise(resolve => {
|
|
75
|
+
const cdnUrl = OVPConfiguration.get().cdnUrl;
|
|
76
|
+
const regexAction = RegexActionHandler._extractRegexActionFromData(rawResponse);
|
|
77
|
+
const regExp = RegexActionHandler._getRegExp(regexAction);
|
|
72
78
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
79
|
+
if(
|
|
80
|
+
cdnUrl &&
|
|
81
|
+
regexAction &&
|
|
82
|
+
regExp &&
|
|
83
|
+
cdnUrl.match(regExp)
|
|
84
|
+
) {
|
|
85
|
+
if (regexAction.checkAliveTimeoutMs > 0) {
|
|
86
|
+
RegexActionHandler._logger.debug('executing ping request...');
|
|
87
|
+
RegexActionHandler._pingECDNAndReplaceHostUrls(mediaConfig, regexAction, cdnUrl.replace(regExp, regexAction.replacement)).then(resolve);
|
|
88
|
+
} else {
|
|
89
|
+
RegexActionHandler._replaceHostUrls(mediaConfig, regexAction);
|
|
90
|
+
resolve(mediaConfig);
|
|
91
|
+
}
|
|
92
|
+
} else {
|
|
93
|
+
RegexActionHandler._logger.debug('exiting handleRegexAction - not applying regex action.');
|
|
94
|
+
resolve(mediaConfig);
|
|
95
|
+
}
|
|
96
|
+
});
|
|
90
97
|
}
|
|
91
98
|
|
|
92
99
|
/**
|
|
@@ -14,7 +14,7 @@ export default class OVPBaseEntryService extends OVPService {
|
|
|
14
14
|
* @returns {RequestBuilder} The request builder
|
|
15
15
|
* @static
|
|
16
16
|
*/
|
|
17
|
-
public static getPlaybackContext(serviceUrl: string, ks: string, serviceEntryId: string): RequestBuilder {
|
|
17
|
+
public static getPlaybackContext(serviceUrl: string, ks: string, serviceEntryId: string, referrer?: string): RequestBuilder {
|
|
18
18
|
const headers: Map<string, string> = new Map();
|
|
19
19
|
headers.set('Content-Type', 'application/json');
|
|
20
20
|
const request = new RequestBuilder(headers);
|
|
@@ -23,7 +23,7 @@ export default class OVPBaseEntryService extends OVPService {
|
|
|
23
23
|
request.method = 'POST';
|
|
24
24
|
request.url = request.getUrl(serviceUrl);
|
|
25
25
|
request.tag = 'baseEntry-getPlaybackContext';
|
|
26
|
-
const contextDataParams = {objectType: 'KalturaContextDataParams', flavorTags: 'all'};
|
|
26
|
+
const contextDataParams = {objectType: 'KalturaContextDataParams', flavorTags: 'all', referrer};
|
|
27
27
|
request.params = {entryId: serviceEntryId, ks: ks, contextDataParams: contextDataParams};
|
|
28
28
|
return request;
|
|
29
29
|
}
|
package/src/types/index.ts
CHANGED
|
@@ -24,11 +24,3 @@ export * from './playlist-info'
|
|
|
24
24
|
export * from './provider-options'
|
|
25
25
|
export * from './request-loader'
|
|
26
26
|
export * from './poster'
|
|
27
|
-
|
|
28
|
-
export { ProviderParser, RequestBuilder, ResponseTypes} from '../k-provider/ovp'
|
|
29
|
-
export { ContextType, MediaType} from '../k-provider/ott'
|
|
30
|
-
import {BaseProvider} from '../k-provider/common/base-provider'
|
|
31
|
-
import OTTProvider from '../k-provider/ott/provider'
|
|
32
|
-
import OVPProvider from '../k-provider/ovp/provider'
|
|
33
|
-
export {OTTProvider, OVPProvider, OTTProvider as Provider, BaseProvider}
|
|
34
|
-
export type IProvider = OTTProvider | OVPProvider;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */
|