io.parrots
Version:
Parrots.io App
154 lines (153 loc) • 18.4 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Headers, RequestOptions, RequestMethod } from '@angular/http';
import { AbstractServerResource } from 'com.phloxui';
var /** @type {?} */ BASE_PATH = "./json";
var JSONResource = /** @class */ (function (_super) {
tslib_1.__extends(JSONResource, _super);
function JSONResource(connectionMgr, basePath) {
var _this = _super.call(this, connectionMgr) || this;
_this.basePath = BASE_PATH;
_this.schemaCached = {};
_this.defaultHeaders = new Headers();
if (basePath !== null && basePath !== undefined && basePath !== '') {
_this.basePath = basePath;
}
return _this;
}
/**
* @param {?} className
* @return {?}
*/
JSONResource.prototype.getSchema = /**
* @param {?} className
* @return {?}
*/
function (className) {
var _this = this;
if (className === null || typeof className !== 'string' || className === '') {
return Promise.resolve(null);
}
if (this.schemaCached[className] !== null && typeof this.schemaCached[className] !== 'undefined') {
return Promise.resolve(this.schemaCached[className]);
}
return new Promise(function (resolve, reject) {
// cache only default load
var /** @type {?} */ path = _this.basePath + "/" + className + "/schema";
var /** @type {?} */ headers = new Headers(_this.defaultHeaders.toJSON());
var /** @type {?} */ requestOptions = new RequestOptions({
method: RequestMethod.Get,
headers: headers
});
var /** @type {?} */ prom = _this.connectionMgr.getWithHttpInfo(path, requestOptions);
prom.then(function (response) {
var /** @type {?} */ jsonSchemaResult = null;
if (response !== null && typeof response !== 'undefined') {
jsonSchemaResult = response.json();
if (jsonSchemaResult !== null && typeof jsonSchemaResult !== 'undefined') {
// cache result
// cache result
_this.schemaCached[className] = jsonSchemaResult;
}
}
resolve(jsonSchemaResult);
}, function (errorResult) {
reject(errorResult);
});
}).catch(function (error) {
return Promise.reject(error);
});
};
/**
* @param {?} className
* @param {?} ignoreNull
* @param {?} ignoreEmpty
* @param {?} ignorePropRegex
* @param {?} includePropsFields
* @return {?}
*/
JSONResource.prototype.getSchemaWithConfigs = /**
* @param {?} className
* @param {?} ignoreNull
* @param {?} ignoreEmpty
* @param {?} ignorePropRegex
* @param {?} includePropsFields
* @return {?}
*/
function (className, ignoreNull, ignoreEmpty, ignorePropRegex, includePropsFields) {
var _this = this;
if (className === null || typeof className !== 'string' || className === '') {
return Promise.resolve(null);
}
return new Promise(function (resolve, reject) {
// cache only default load
var /** @type {?} */ path = _this.basePath + "/" + className + "/schema";
var /** @type {?} */ pathParam = "";
if (ignoreNull !== null && typeof ignoreNull !== 'undefined') {
pathParam += "ignoreNull=" + (ignoreNull ? "true" : "false") + "&";
}
if (ignoreEmpty !== null && typeof ignoreEmpty !== 'undefined') {
pathParam += "ignoreEmpty=" + (ignoreEmpty ? "true" : "false") + "&";
}
if (ignorePropRegex !== null && typeof ignorePropRegex !== 'undefined' && ignorePropRegex !== '') {
pathParam += "ignorePropRegex=" + ignorePropRegex + "&";
}
if (includePropsFields !== null && typeof includePropsFields !== 'undefined') {
var /** @type {?} */ nameAppendStmt = "";
try {
for (var includePropsFields_1 = tslib_1.__values(includePropsFields), includePropsFields_1_1 = includePropsFields_1.next(); !includePropsFields_1_1.done; includePropsFields_1_1 = includePropsFields_1.next()) {
var name_1 = includePropsFields_1_1.value;
nameAppendStmt += name_1 + ",";
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (includePropsFields_1_1 && !includePropsFields_1_1.done && (_a = includePropsFields_1.return)) _a.call(includePropsFields_1);
}
finally { if (e_1) throw e_1.error; }
}
if (nameAppendStmt !== '') {
nameAppendStmt = nameAppendStmt.slice(0, nameAppendStmt.length - 1);
pathParam += "includePropsFields=" + nameAppendStmt + "&";
}
}
if (pathParam !== "") {
pathParam = pathParam.slice(0, pathParam.length - 1);
path += "?" + pathParam;
}
var /** @type {?} */ headers = new Headers(_this.defaultHeaders.toJSON());
var /** @type {?} */ requestOptions = new RequestOptions({
method: RequestMethod.Get,
headers: headers
});
var /** @type {?} */ prom = _this.connectionMgr.getWithHttpInfo(path, requestOptions);
prom.then(function (response) {
var /** @type {?} */ jsonSchemaResult = null;
if (response !== null && typeof response !== 'undefined') {
jsonSchemaResult = response.json();
}
resolve(jsonSchemaResult);
}, function (errorResult) {
reject(errorResult);
});
var e_1, _a;
}).catch(function (error) {
return Promise.reject(error);
});
};
return JSONResource;
}(AbstractServerResource));
export { JSONResource };
function JSONResource_tsickle_Closure_declarations() {
/** @type {?} */
JSONResource.prototype.schemaCached;
/** @type {?} */
JSONResource.prototype.basePath;
/** @type {?} */
JSONResource.prototype.defaultHeaders;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSlNPTlJlc291cmNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vaW8ucGFycm90cy8iLCJzb3VyY2VzIjpbImxpYi9zaGFyZS9yZXNvdXJjZS9KU09OUmVzb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSxPQUFPLEVBQWtCLE9BQU8sRUFBRSxjQUFjLEVBQTRELGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdqSixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFLckQscUJBQU0sU0FBUyxHQUFXLFFBQVEsQ0FBQztBQUVuQyxJQUFBO0lBQWtDLHdDQUFzQjtJQU10RCxzQkFBWSxhQUFpQyxFQUFFLFFBQWlCO1FBQWhFLFlBQ0Usa0JBQU0sYUFBYSxDQUFDLFNBUXJCO3lCQVpvQixTQUFTO1FBTTVCLEtBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLEtBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUVwQyxFQUFFLENBQUEsQ0FBQyxRQUFRLEtBQUssSUFBSSxJQUFJLFFBQVEsS0FBSyxTQUFTLElBQUksUUFBUSxLQUFLLEVBQUUsQ0FBQyxDQUFBLENBQUM7WUFDakUsS0FBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7U0FDMUI7O0tBQ0Y7Ozs7O0lBRU0sZ0NBQVM7Ozs7Y0FBQyxTQUFpQjs7UUFDaEMsRUFBRSxDQUFDLENBQUMsU0FBUyxLQUFLLElBQUksSUFBSSxPQUFPLFNBQVMsS0FBSyxRQUFRLElBQUksU0FBUyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDNUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDOUI7UUFFRCxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxLQUFLLElBQUksSUFBSSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEtBQUssV0FBVyxDQUFD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QixPQUFPLEVBQUUsT0FBTzthQUNqQixDQUFDLENBQUM7WUFFSCxxQkFBSSxJQUFJLEdBQUcsS0FBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1lBQ3BFLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBQyxRQUFhO2dCQUN0QixxQkFBSSxnQkFBZ0IsR0FBUSxJQUFJLENBQUM7Z0JBQ2pDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsS0FBSyxJQUFJLElBQUksT0FBTyxRQUFRLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQztvQkFDekQsZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO2lCQUNwQztnQkFFRCxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQzthQUMzQixFQUFFLFVBQUMsV0FBVztnQkFDYixNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDckIsQ0FBQyxDQUFDOztTQUNKLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBQyxLQUFLO1lBQ2IsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDOUIsQ0FBQyxDQUFDOzt1QkE1SFA7RUFXa0Msc0JBQXNCLEVBbUh2RCxDQUFBO0FBbkhELHdCQW1IQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHAsIFJlc3BvbnNlLCBIZWFkZXJzLCBSZXF1ZXN0T3B0aW9ucywgUmVxdWVzdE9wdGlvbnNBcmdzLCBVUkxTZWFyY2hQYXJhbXMsIFJlc3BvbnNlQ29udGVudFR5cGUsIFJlcXVlc3RNZXRob2QgfSBmcm9tICdAYW5ndWxhci9odHRwJztcbmltcG9ydCB7IENvbm5lY3Rpb25NYW5hZ2VyIH0gZnJvbSAnY29tLnBobG94dWknO1xuaW1wb3J0IHsgSnNvblNjaGVtYSB9IGZyb20gJ2NvbS5waGxveHVpJztcbmltcG9ydCB7IEFic3RyYWN0U2VydmVyUmVzb3VyY2UgfSBmcm9tICdjb20ucGhsb3h1aSc7XG5pbXBvcnQgeyBJQ29ubmVjdGlvbk1hbmFnZXIgfSBmcm9tICdjb20ucGhsb3h1aSc7XG5cbmRlY2xhcmUgdmFyIHdpbmRvdzogYW55O1xuXG5jb25zdCBCQVNFX1BBVEg6IHN0cmluZyA9IFwiLi9qc29uXCI7XG5cbmV4cG9ydCBjbGFzcyBKU09OUmVzb3VyY2UgZXh0ZW5kcyBBYnN0cmFjdFNlcnZlclJlc291cmNlIHtcblxuICBwcml2YXRlIHNjaGVtYUNhY2hlZDogYW55OyAvLyBNYXA8U3RyaW5nW2NsYXNzTmFtZV0sIEpzb25TY2hlbWE+XG4gIHByb3RlY3RlZCBiYXNlUGF0aCA9IEJBU0VfUEFUSDtcbiAgcHVibGljIGRlZmF1bHRIZWFkZXJzOiBIZWFkZXJzO1xuXG4gIGNvbnN0cnVjdG9yKGNvbm5lY3Rpb25NZ3I6IElDb25uZWN0aW9uTWFuYWdlciwgYmFzZVBhdGg/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihjb25uZWN0aW9uTWdyKTtcblxuICAgIHRoaXMuc2NoZW1hQ2FjaGVkID0ge307XG4gICAgdGhpcy5kZWZhdWx0SGVhZGVycyA9IG5ldyBIZWFkZXJzKCk7XG5cbiAgICBpZihiYXNlUGF0aCAhPT0gbnVsbCAmJiBiYXNlUGF0aCAhPT0gdW5kZWZpbmVkICYmIGJhc2VQYXRoICE9PSAnJyl7XG4gICAgICB0aGlzLmJhc2VQYXRoID0gYmFzZVBhdGg7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldFNjaGVtYShjbGFzc05hbWU6IHN0cmluZyk6IFByb21pc2U8UmVzcG9uc2U+IHtcbiAgICBpZiAoY2xhc3NOYW1lID09PSBudWxsIHx8IHR5cGVvZiBjbGFzc05hbWUgIT09ICdzdHJpbmcnIHx8IGNsYXNzTmFtZSA9PT0gJycpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobnVsbCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2NoZW1hQ2FjaGVkW2NsYXNzTmFtZV0gIT09IG51bGwgJiYgdHlwZW9mIHRoaXMuc2NoZW1hQ2FjaGVkW2NsYXNzTmFtZV0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuc2NoZW1hQ2FjaGVkW2NsYXNzTmFtZV0pO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgUHJvbWlzZTxSZXNwb25zZT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgLy8gY2FjaGUgb25seSBkZWZhdWx0IGxvYWRcbiAgICAgIGxldCBwYXRoID0gdGhpcy5iYXNlUGF0aCArIFwiL1wiICsgY2xhc3NOYW1lICsgXCIvc2NoZW1hXCI7XG5cbiAgICAgIGxldCBoZWFkZXJzID0gbmV3IEhlYWRlcnModGhpcy5kZWZhdWx0SGVhZGVycy50b0pTT04oKSk7XG5cbiAgICAgIGxldCByZXF1ZXN0T3B0aW9uczogUmVxdWVzdE9wdGlvbnNBcmdzID0gbmV3IFJlcXVlc3RPcHRpb25zKHtcbiAgICAgICAgbWV0aG9kOiBSZXF1ZXN0TWV0aG9kLkdldCxcbiAgICAgICAgaGVhZGVyczogaGVhZGVyc1xuICAgICAgfSk7XG5cbiAgICAgIGxldCBwcm9tID0gdGhpcy5jb25uZWN0aW9uTWdyLmdldFdpdGhIdHRwSW5mbyhwYXRoLCByZXF1ZXN0T3B0aW9ucyk7XG4gICAgICBwcm9tLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgbGV0IGpzb25TY2hlbWFSZXN1bHQ6IGFueSA9IG51bGw7XG4gICAgICAgIGlmIChyZXNwb25zZSAhPT0gbnVsbCAmJiB0eXBlb2YgcmVzcG9uc2UgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAganNvblNjaGVtYVJlc3VsdCA9IHJlc3BvbnNlLmpzb24oKTtcblxuICAgICAgICAgIGlmIChqc29uU2NoZW1hUmVzdWx0ICE9PSBudWxsICYmIHR5cGVvZiBqc29uU2NoZW1hUmVzdWx0ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgLy8gY2FjaGUgcmVzdWx0XG4gICAgICAgICAgICB0aGlzLnNjaGVtYUNhY2hlZFtjbGFzc05hbWVdID0ganNvblNjaGVtYVJlc3VsdDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXNvbHZlKGpzb25TY2hlbWFSZXN1bHQpO1xuICAgICAgfSwgKGVycm9yUmVzdWx0KSA9PiB7XG4gICAgICAgIHJlamVjdChlcnJvclJlc3VsdCk7XG4gICAgICB9KTtcbiAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0U2NoZW1hV2l0aENvbmZpZ3MoY2xhc3NOYW1lOiBzdHJpbmcsIGlnbm9yZU51bGw6IGJvb2xlYW4sIGlnbm9yZUVtcHR5OiBib29sZWFuLCBpZ25vcmVQcm9wUmVnZXg6IHN0cmluZywgaW5jbHVkZVByb3BzRmllbGRzOiBTdHJpbmdbXSk6IFByb21pc2U8UmVzcG9uc2U+IHtcbiAgICBpZiAoY2xhc3NOYW1lID09PSBudWxsIHx8IHR5cGVvZiBjbGFzc05hbWUgIT09ICdzdHJpbmcnIHx8IGNsYXNzTmFtZSA9PT0gJycpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobnVsbCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPFJlc3BvbnNlPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAvLyBjYWNoZSBvbmx5IGRlZmF1bHQgbG9hZFxuICAgICAgbGV0IHBhdGggPSB0aGlzLmJhc2VQYXRoICsgXCIvXCIgKyBjbGFzc05hbWUgKyBcIi9zY2hlbWFcIjtcblxuICAgICAgbGV0IHBhdGhQYXJhbSA9IFwiXCI7XG4gICAgICBpZiAoaWdub3JlTnVsbCAhPT0gbnVsbCAmJiB0eXBlb2YgaWdub3JlTnVsbCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcGF0aFBhcmFtICs9IFwiaWdub3JlTnVsbD1cIiArIChpZ25vcmVOdWxsID8gXCJ0cnVlXCIgOiBcImZhbHNlXCIpICsgXCImXCI7XG4gICAgICB9XG4gICAgICBpZiAoaWdub3JlRW1wdHkgIT09IG51bGwgJiYgdHlwZW9mIGlnbm9yZUVtcHR5ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBwYXRoUGFyYW0gKz0gXCJpZ25vcmVFbXB0eT1cIiArIChpZ25vcmVFbXB0eSA/IFwidHJ1ZVwiIDogXCJmYWxzZVwiKSArIFwiJlwiO1xuICAgICAgfVxuICAgICAgaWYgKGlnbm9yZVByb3BSZWdleCAhPT0gbnVsbCAmJiB0eXBlb2YgaWdub3JlUHJvcFJlZ2V4ICE9PSAndW5kZWZpbmVkJyAmJiBpZ25vcmVQcm9wUmVnZXggIT09ICcnKSB7XG4gICAgICAgIHBhdGhQYXJhbSArPSBcImlnbm9yZVByb3BSZWdleD1cIiArIGlnbm9yZVByb3BSZWdleCArIFwiJlwiO1xuICAgICAgfVxuICAgICAgaWYgKGluY2x1ZGVQcm9wc0ZpZWxkcyAhPT0gbnVsbCAmJiB0eXBlb2YgaW5jbHVkZVByb3BzRmllbGRzICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBsZXQgbmFtZUFwcGVuZFN0bXQgPSBcIlwiO1xuICAgICAgICBmb3IgKGxldCBuYW1lIG9mIGluY2x1ZGVQcm9wc0ZpZWxkcykge1xuICAgICAgICAgIG5hbWVBcHBlbmRTdG10ICs9IG5hbWUgKyBcIixcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChuYW1lQXBwZW5kU3RtdCAhPT0gJycpIHtcbiAgICAgICAgICBuYW1lQXBwZW5kU3RtdCA9IG5hbWVBcHBlbmRTdG10LnNsaWNlKDAsIG5hbWVBcHBlbmRTdG10Lmxlbmd0aCAtIDEpO1xuICAgICAgICAgIHBhdGhQYXJhbSArPSBcImluY2x1ZGVQcm9wc0ZpZWxkcz1cIiArIG5hbWVBcHBlbmRTdG10ICsgXCImXCI7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHBhdGhQYXJhbSAhPT0gXCJcIikge1xuICAgICAgICBwYXRoUGFyYW0gPSBwYXRoUGFyYW0uc2xpY2UoMCwgcGF0aFBhcmFtLmxlbmd0aCAtIDEpO1xuICAgICAgICBwYXRoICs9IFwiP1wiICsgcGF0aFBhcmFtO1xuICAgICAgfVxuXG4gICAgICBsZXQgaGVhZGVycyA9IG5ldyBIZWFkZXJzKHRoaXMuZGVmYXVsdEhlYWRlcnMudG9KU09OKCkpO1xuICAgICAgbGV0IHJlcXVlc3RPcHRpb25zOiBSZXF1ZXN0T3B0aW9uc0FyZ3MgPSBuZXcgUmVxdWVzdE9wdGlvbnMoe1xuICAgICAgICBtZXRob2Q6IFJlcXVlc3RNZXRob2QuR2V0LFxuICAgICAgICBoZWFkZXJzOiBoZWFkZXJzXG4gICAgICB9KTtcblxuICAgICAgbGV0IHByb20gPSB0aGlzLmNvbm5lY3Rpb25NZ3IuZ2V0V2l0aEh0dHBJbmZvKHBhdGgsIHJlcXVlc3RPcHRpb25zKTtcbiAgICAgIHByb20udGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICBsZXQganNvblNjaGVtYVJlc3VsdDogYW55ID0gbnVsbDtcbiAgICAgICAgaWYgKHJlc3BvbnNlICE9PSBudWxsICYmIHR5cGVvZiByZXNwb25zZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICBqc29uU2NoZW1hUmVzdWx0ID0gcmVzcG9uc2UuanNvbigpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzb2x2ZShqc29uU2NoZW1hUmVzdWx0KTtcbiAgICAgIH0sIChlcnJvclJlc3VsdCkgPT4ge1xuICAgICAgICByZWplY3QoZXJyb3JSZXN1bHQpO1xuICAgICAgfSk7XG4gICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpO1xuICAgIH0pO1xuICB9XG59XG4iXX0=