UNPKG

pailingual-odata

Version:

TypeScript client for OData v4 services

98 lines (97 loc) 4.37 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var query_1 = require("./query"); var collectionSource_1 = require("./collectionSource"); var singleSource_1 = require("./singleSource"); var executable_1 = require("./executable"); function expandExpressionBuild(propertyName, expression, apiMetadata, entityType, options) { var navPropMD = entityType.navProperties[propertyName]; if (navPropMD == null) throw new Error("Expand support navigation properties only"); var propType = navPropMD.type; var q = query_1.Query.create(apiMetadata, propType, options); var sourceFactory = function () { return navPropMD.collection ? new collectionSource_1.CollectionSource(propType, apiMetadata, q) : new singleSource_1.SingleSource(propType, apiMetadata, q); }; var params = buildQueryParamsExpression(expression, sourceFactory, options, ";"); if (params) return propertyName + "(" + params + ")"; return propertyName; } exports.expandExpressionBuild = expandExpressionBuild; function buildPathExpression(func, metadata, apiMetadata) { var entity = new singleSource_1.SingleSource(metadata, apiMetadata, query_1.Query.create(null, metadata, undefined)); entity = func(entity); var path = entity.query.url(false); if (startsWith(path, "/")) return path.substr(1); return path; } exports.buildPathExpression = buildPathExpression; function buildQueryParamsExpression(func, sourceFactory, options, separator) { if (separator === void 0) { separator = ","; } var entity = sourceFactory(); entity = func(entity); return entity.query.buildParams(options, separator); } exports.buildQueryParamsExpression = buildQueryParamsExpression; function generateOperations(obj, queryAccessor, apiMetadata, entityType, isCollection) { if (isCollection === void 0) { isCollection = false; } for (var ns in apiMetadata.namespaces) { var _loop_1 = function (metadata) { if ((metadata.bindingTo == undefined && entityType == undefined) //unbounded || (metadata.bindingTo && (metadata.bindingTo.collection || false) == isCollection && metadata.bindingTo.type == entityType)) { Object.defineProperty(obj, metadata.name, { get: function () { return function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } var query = queryAccessor().operation(metadata, args); if (metadata.returnType && metadata.returnType.collection) return new collectionSource_1.CollectionSource(metadata.returnType.type, apiMetadata, query); return new executable_1.Executable(query); }; } }); } }; for (var _i = 0, _a = apiMetadata.namespaces[ns].operations; _i < _a.length; _i++) { var metadata = _a[_i]; _loop_1(metadata); } } } exports.generateOperations = generateOperations; function startsWith(str, search, position) { if (position === void 0) { position = 0; } return str.indexOf(search, position) == position; } exports.startsWith = startsWith; function endsWith(subjectString, search, position) { if (position === undefined || position > subjectString.length) { position = subjectString.length; } position -= search.length; var lastIndex = subjectString.indexOf(search, position); return lastIndex !== -1 && lastIndex === position; } exports.endsWith = endsWith; function _extends(ctor, funcs) { if (funcs) { var _loop_2 = function () { var base = ctor.prototype[name]; var func = funcs[name]; ctor.prototype[name] = function () { return func.apply(this, [base && base.bind(this)].concat(Array.from(arguments))); }; }; for (var name in funcs) { _loop_2(); } } } exports._extends = _extends;