u4pm-jaydata-dynamic-metadata
Version:
OData v4 metadata to JayData context util
101 lines • 4.43 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.DynamicMetadata = exports.ServiceParams = exports.odatajs = exports.MetadataHandler = void 0;
const extend = require("extend");
const metadataHandler_1 = require("./metadataHandler");
const jaydata_error_handler_1 = require("jaydata-error-handler");
const u4pm_jaydata_promise_handler_1 = require("u4pm-jaydata-promise-handler");
var metadataHandler_2 = require("./metadataHandler");
Object.defineProperty(exports, "MetadataHandler", { enumerable: true, get: function () { return metadataHandler_2.MetadataHandler; } });
Object.defineProperty(exports, "odatajs", { enumerable: true, get: function () { return metadataHandler_2.odatajs; } });
class ServiceParams {
constructor() {
this.config = {};
}
}
exports.ServiceParams = ServiceParams;
class DynamicMetadata {
constructor($data) {
this.$data = $data;
}
service(serviceUri, config, callback) {
var params = new ServiceParams();
DynamicMetadata.getParam(config, params);
DynamicMetadata.getParam(callback, params);
if (typeof serviceUri == 'object') {
extend(params.config, serviceUri);
}
else if (typeof serviceUri == 'string') {
params.config = params.config || {};
params.config.url = serviceUri;
}
var pHandler = this.$data && this.$data.PromiseHandler ? new this.$data.PromiseHandler() : new u4pm_jaydata_promise_handler_1.PromiseHandler();
var _callback = pHandler.createCallback(params.callback);
var self = this;
new metadataHandler_1.MetadataHandler(this.$data, params.config).load().then(function (factory) {
var type = factory.type;
//register to local store
var storeAlias = params.config.serviceName || params.config.storeAlias;
if (storeAlias && 'addStore' in self.$data) {
self.$data.addStore(storeAlias, factory, params.config.isDefault === undefined || params.config.isDefault);
}
_callback.success(factory, type);
}, function (err) {
_callback.error(err);
});
return pHandler.getPromise();
}
initService(serviceUri, config, callback) {
var params = new ServiceParams();
DynamicMetadata.getParam(config, params);
DynamicMetadata.getParam(callback, params);
if (typeof serviceUri == 'object') {
extend(params.config, serviceUri);
}
else if (typeof serviceUri == 'string') {
params.config = params.config || {};
params.config.url = serviceUri;
}
var pHandler = this.$data && this.$data.PromiseHandler ? new this.$data.PromiseHandler() : new u4pm_jaydata_promise_handler_1.PromiseHandler();
var _callback = pHandler.createCallback(params.callback);
this.service(params.config.url, params.config, {
success: function (factory) {
var ctx = factory();
if (ctx) {
return ctx.onReady().then((ctx) => {
ctx.factory = factory;
ctx.type = factory.type;
_callback.success(ctx, factory, factory.type);
}, _callback.error);
}
return _callback.error(new jaydata_error_handler_1.Exception("Missing Context Type"));
},
error: _callback.error
});
return pHandler.getPromise();
}
static use($data) {
var dynamicMetadata = new DynamicMetadata($data);
$data.service = dynamicMetadata.service;
$data.initService = dynamicMetadata.initService;
}
}
exports.DynamicMetadata = DynamicMetadata;
DynamicMetadata.getParam = function (paramValue, params) {
switch (typeof paramValue) {
case 'object':
if (typeof paramValue.success === 'function' || typeof paramValue.error === 'function') {
params.callback = paramValue;
}
else {
params.config = paramValue;
}
break;
case 'function':
params.callback = paramValue;
break;
default:
break;
}
};
//# sourceMappingURL=service.js.map