import { Utils } from '../common/Utils';
import { BaseResolver } from './BaseResolver';
const __ = {
private: Symbol('private'),
}
function _initPrivateMembers(that, param) {
that[__.private] = {};
const _private = that[__.private];
_private.getIndexByURI = (uri) => {
let index = null;
if (Array.isArray(uri)) {
index = uri.map(url => {
return _private.getIndexByURI(url);
});
}
else {
index = _private.URIs.indexOf(uri);
if (index == -1) {
index = _private.URIs.push(uri) - 1;
}
}
return index;
}
_private.getURIByIndex = (index) => {
let uri = null;
if (Array.isArray(index)) {
uri = index.map(i => {
return _private.getURIByIndex(i);
});
}
else {
uri = _private.URIs[index];
}
return uri;
}
_private.init = (param) => {
if (!param || !Utils.isFunction(param.getURIs)) {
Utils.error("the param is invalid");
return;
}
_private.URIs = param.getURIs();
}
_private.init(param);
}
/**
* @class TSFResolver
* The tsf resolver
* @memberof THING.EXTEND
* @extends THING.EXTEND.BaseResolver
*/
class TSFResolver extends BaseResolver {
constructor(param = {}) {
super();
_initPrivateMembers(this, param);
}
getURIByIndex(index) {
let _private = this[__.private];
return _private.getURIByIndex(index);
}
getIndexByURI(uri) {
let _private = this[__.private];
return _private.getIndexByURI(uri);
}
}
export { TSFResolver }