UNPKG

u4pm-jaydata-dynamic-metadata

Version:

OData v4 metadata to JayData context util

101 lines 4.43 kB
"use strict"; 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