UNPKG

jaydata

Version:

Cross-platform HTML5 data-management, JavaScript Language Query (JSLQ) support for OData, SQLite, WebSQL, IndexedDB, YQL and Facebook (packaged for Node.JS)

1,213 lines (1,106 loc) 161 kB
// JayData 1.5.10 // Dual licensed under MIT and GPL v2 // Copyright JayStack Technologies (http://jaydata.org/licensing) // // JayData is a standards-based, cross-platform Javascript library and a set of // practices to access and manipulate data from various online and offline sources. // // Credits: // Hajnalka Battancs, Dániel József, János Roden, László Horváth, Péter Nochta // Péter Zentai, Róbert Bónay, Szabolcs Czinege, Viktor Borza, Viktor Lázár, // Zoltán Gyebrovszki, Gábor Dolla // // More info: http://jaydata.org (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define("jaydata/odata",["jaydata/core"],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.$data = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.strategy = undefined; var _core = _dereq_('jaydata/core'); var _core2 = _interopRequireDefault(_core); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var strategy = { name: 'batch', condition: function condition(provider, convertedItems) { var disabled = false; if (typeof provider.providerConfiguration.disableBatch !== 'undefined') { disabled = !!provider.providerConfiguration.disableBatch; } else { disabled = !!_core2.default.defaults.OData.disableBatch; } if (!disabled) { var requests = convertedItems.getItems(); return requests.length > 1; } return false; }, save: function save(provider, convertedItems, callBack) { var that = provider; var items = convertedItems.getItems(); var requests = items.map(function (it) { return it.request.build().get(); }); var requestData = [{ requestUri: that.providerConfiguration.oDataServiceHost + "/$batch", method: "POST", data: { __batchRequests: [{ __changeRequests: requests }] }, headers: {} }, function (data, response) { if (response.statusCode == 200 || response.statusCode == 202) { var result = data.__batchResponses[0].__changeResponses; var errors = []; for (var i = 0; i < result.length; i++) { if (result[i].statusCode >= 200 && result[i].statusCode < 300) { var item = convertedItems.getByResponse(result[i], i); if (item instanceof _core2.default.Entity && result[i].statusCode != 204) { that.reload_fromResponse(item, result[i].data, result[i]); convertedItems.setProcessed(item); } } else { errors.push(that.parseError(result[i])); } } if (errors.length > 0) { if (errors.length === 1) { callBack.error(errors[0]); } else { callBack.error(new _core.Exception('See inner exceptions', 'Batch failed', errors)); } } else if (callBack.success) { callBack.success(convertedItems.length); } } else { callBack.error(that.parseError(response)); } }, function (e) { callBack.error(that.parseError(e)); }, that.oData.batch.batchHandler]; if (typeof that.providerConfiguration.useJsonLight !== 'undefined') { requestData[0].useJsonLight = that.providerConfiguration.useJsonLight; } that.appendBasicAuth(requestData[0], that.providerConfiguration.user, that.providerConfiguration.password, that.providerConfiguration.withCredentials); that.context.prepareRequest.call(that, requestData); that.oData.request.apply(that, requestData); } }; exports.strategy = strategy; },{"jaydata/core":"jaydata/core"}],2:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var strategy = { name: 'empty', condition: function condition(provider, convertedItems) { return true; }, save: function save(provider, convertedItems, callBack) { callBack.success(0); } }; exports.strategy = strategy; },{}],3:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.strategy = undefined; var _core = _dereq_('jaydata/core'); var _core2 = _interopRequireDefault(_core); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var strategy = { name: 'single', condition: function condition(provider, convertedItems) { var requests = convertedItems.getItems(); return requests.length > 0; }, save: function save(provider, convertedItems, callBack) { var that = provider; var items = convertedItems.getItems(); var doSave = function doSave(items, index, done) { var item = items[index]; if (!item) return done(); var request = item.request.build().get(); var requestData = [request, function (data, response) { if (response.statusCode >= 200 && response.statusCode < 300) { var item = convertedItems.getByResponse(response, index); if (item instanceof _core2.default.Entity && response.statusCode != 204) { that.reload_fromResponse(item, data, response); convertedItems.setProcessed(item); } doSave(items, ++index, done); } else { done(response); } }, done]; that.appendBasicAuth(requestData[0], that.providerConfiguration.user, that.providerConfiguration.password, that.providerConfiguration.withCredentials); that.context.prepareRequest.call(that, requestData); that.oData.request.apply(that, requestData); }; doSave(items, 0, function (err, result) { if (err) return callBack.error(that.parseError(err)); callBack.success(result); }); } }; exports.strategy = strategy; },{"jaydata/core":"jaydata/core"}],4:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _core = _dereq_('jaydata/core'); var _core2 = _interopRequireDefault(_core); var _oDataConverter = _dereq_('./oDataConverter.js'); var _oDataConverter2 = _interopRequireDefault(_oDataConverter); var _oDataProvider = _dereq_('./oDataProvider.js'); var _oDataProvider2 = _interopRequireDefault(_oDataProvider); var _oDataCompiler = _dereq_('./oDataCompiler.js'); var _oDataCompiler2 = _interopRequireDefault(_oDataCompiler); var _oDataWhereCompiler = _dereq_('./oDataWhereCompiler.js'); var _oDataWhereCompiler2 = _interopRequireDefault(_oDataWhereCompiler); var _oDataIncludeCompiler = _dereq_('./oDataIncludeCompiler.js'); var _oDataIncludeCompiler2 = _interopRequireDefault(_oDataIncludeCompiler); var _oDataOrderCompiler = _dereq_('./oDataOrderCompiler.js'); var _oDataOrderCompiler2 = _interopRequireDefault(_oDataOrderCompiler); var _oDataPagingCompiler = _dereq_('./oDataPagingCompiler.js'); var _oDataPagingCompiler2 = _interopRequireDefault(_oDataPagingCompiler); var _oDataProjectionCompiler = _dereq_('./oDataProjectionCompiler.js'); var _oDataProjectionCompiler2 = _interopRequireDefault(_oDataProjectionCompiler); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } exports.default = _core2.default; module.exports = exports['default']; },{"./oDataCompiler.js":5,"./oDataConverter.js":6,"./oDataIncludeCompiler.js":7,"./oDataOrderCompiler.js":8,"./oDataPagingCompiler.js":9,"./oDataProjectionCompiler.js":10,"./oDataProvider.js":11,"./oDataWhereCompiler.js":13,"jaydata/core":"jaydata/core"}],5:[function(_dereq_,module,exports){ 'use strict'; var _core = _dereq_('jaydata/core'); var _core2 = _interopRequireDefault(_core); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } (0, _core.$C)('$data.storageProviders.oData.oDataCompiler', _core2.default.Expressions.EntityExpressionVisitor, null, { constructor: function constructor() { this.context = {}; this.provider = {}; //this.logicalType = null; this.includes = null; this.mainEntitySet = null; }, compile: function compile(query) { this.provider = query.context.storageProvider; this.context = query.context; if (query.defaultType) { this.mainEntitySet = query.context.getEntitySetFromElementType(query.defaultType); } var queryFragments = { urlText: "" }; this.Visit(query.expression, queryFragments); if (queryFragments.$expand) { queryFragments.$expand = queryFragments.$expand.toString(); } query.modelBinderConfig = {}; var modelBinder = _core.Container.createModelBinderConfigCompiler(query, this.includes, true); modelBinder.Visit(query.expression); var queryText = queryFragments.urlText; var addAmp = false; if (queryFragments.$funcParams) { queryText += "(" + queryFragments.$funcParams + ")"; } for (var name in queryFragments) { if (name != "urlText" && name != "actionPack" && name != "data" && name != "lambda" && name != "method" && name != "postData" && name != "_isBatchExecuteQuery" && name != "_subQueries" && name != "$funcParams" && queryFragments[name] != "") { if (addAmp) { queryText += "&"; } else { queryText += "?"; } addAmp = true; if (name != "$urlParams") { queryText += name + '=' + queryFragments[name]; } else { queryText += queryFragments[name]; } } } query.queryText = queryText; query.postData = queryFragments.postData; var result = { queryText: queryText, withInlineCount: '$inlinecount' in queryFragments || '$count' in queryFragments, method: queryFragments.method || 'GET', postData: queryFragments.postData, isBatchExecuteQuery: queryFragments._isBatchExecuteQuery, subQueries: queryFragments._subQueries, params: [] }; query._getComplitedData = function () { return result; }; return result; }, VisitOrderExpression: function VisitOrderExpression(expression, context) { this.Visit(expression.source, context); var orderCompiler = _core.Container.createoDataOrderCompiler(this.provider); orderCompiler.compile(expression, context); }, VisitPagingExpression: function VisitPagingExpression(expression, context) { this.Visit(expression.source, context); var pagingCompiler = _core.Container.createoDataPagingCompiler(this.provider); pagingCompiler.compile(expression, context); }, VisitIncludeExpression: function VisitIncludeExpression(expression, context) { this.Visit(expression.source, context); var includeCompiler = _core.Container.createoDataIncludeCompiler(this.provider); this.includes = this.includes || []; var includeContext = { data: context["$expand"], includes: this.includes }; includeCompiler.compile(expression.selector, includeContext); context["$expand"] = includeContext.data; }, VisitFindExpression: function VisitFindExpression(expression, context) { this.Visit(expression.source, context); if (expression.subMember) { context.urlText += "/" + expression.subMember.memberName; } if (expression.params && expression.params.length > 0) { context.urlText += '('; if (expression.params.length === 1) { var param = expression.params[0]; var typeName = _core.Container.resolveName(param.type); var converter = this.provider.fieldConverter.toDb[typeName]; var value = converter ? converter(param.value) : param.value; converter = this.provider.fieldConverter.escape[typeName]; value = converter ? converter(param.value) : param.value; context.urlText += value; } else { for (var i = 0; i < expression.params.length; i++) { var param = expression.params[i]; var typeName = _core.Container.resolveName(param.type); var converter = this.provider.fieldConverter.toDb[typeName]; var value = converter ? converter(param.value) : param.value; converter = this.provider.fieldConverter.escape[typeName]; value = converter ? converter(param.value) : param.value; if (i > 0) context.urlText += ','; context.urlText += param.name + '=' + value; } } context.urlText += ')'; } }, VisitProjectionExpression: function VisitProjectionExpression(expression, context) { this.Visit(expression.source, context); var projectionCompiler = _core.Container.createoDataProjectionCompiler(this.provider); projectionCompiler.compile(expression, context); }, VisitFilterExpression: function VisitFilterExpression(expression, context) { ///<param name="expression" type="$data.Expressions.FilterExpression" /> this.Visit(expression.source, context); var filterCompiler = _core.Container.createoDataWhereCompiler(this.provider); context.data = ""; filterCompiler.compile(expression.selector, context); context["$filter"] = context.data; context.data = ""; }, VisitInlineCountExpression: function VisitInlineCountExpression(expression, context) { this.Visit(expression.source, context); if (this.provider.providerConfiguration.maxDataServiceVersion === "4.0") { context["$count"] = expression.selector.value === 'allpages'; } else { context["$inlinecount"] = expression.selector.value; } }, VisitEntitySetExpression: function VisitEntitySetExpression(expression, context) { this.Visit(expression.source, context); context.urlText += "/" + expression.instance.tableName; //this.logicalType = expression.instance.elementType; if (expression.params) { for (var i = 0; i < expression.params.length; i++) { this.Visit(expression.params[i], context); } } }, VisitServiceOperationExpression: function VisitServiceOperationExpression(expression, context) { if (expression.boundItem) { context.urlText += "/" + expression.boundItem.entitySet.tableName; if (expression.boundItem.data instanceof _core2.default.Entity) { context.urlText += '(' + this.provider.getEntityKeysValue(expression.boundItem) + ')'; } } context.urlText += "/" + (expression.cfg.namespace ? expression.cfg.namespace + "." + expression.cfg.serviceName : expression.cfg.serviceName); context.method = context.method || expression.cfg.method; //this.logicalType = expression.returnType; if (expression.params) { context.serviceConfig = expression.cfg; for (var i = 0; i < expression.params.length; i++) { this.Visit(expression.params[i], context); } delete context.serviceConfig; } }, VisitBatchDeleteExpression: function VisitBatchDeleteExpression(expression, context) { this.Visit(expression.source, context); context.urlText += '/$batchDelete'; context.method = 'DELETE'; }, VisitConstantExpression: function VisitConstantExpression(expression, context) { var typeName = _core.Container.resolveName(expression.type); if (expression.value instanceof _core2.default.Entity) typeName = _core2.default.Entity.fullName; var converter = this.provider.fieldConverter.toDb[typeName]; var value = converter ? converter(expression.value, expression) : expression.value; if (context.method === 'GET' || !context.method) { converter = this.provider.fieldConverter.escape[typeName]; value = converter ? converter(value, expression) : value; if (value !== undefined) { var serviceConfig = context.serviceConfig || {}; var paramConfig = serviceConfig && serviceConfig.params.filter(function (p) { return p.name == expression.name; })[0] || {}; var useAlias = serviceConfig.namespace && (paramConfig.useAlias || serviceConfig.useAlias || this.provider.providerConfiguration.useParameterAlias || _core2.default.defaults.OData.useParameterAlias); var paramValue = useAlias ? "@" + expression.name : value; var paramName = (useAlias ? "@" : "") + expression.name; if (context['$funcParams']) { context['$funcParams'] += ','; } else { context['$funcParams'] = ''; } context['$funcParams'] += expression.name + '=' + paramValue; if (useAlias) { if (context['$urlParams']) { context['$urlParams'] += '&'; } else { context['$urlParams'] = ''; } context['$urlParams'] += paramName + '=' + value; } } } else { context.postData = context.postData || {}; context.postData[expression.name] = value; } }, // VisitConstantExpression: function (expression, context) { // if (context['$urlParams']) { context['$urlParams'] += '&'; } else { context['$urlParams'] = ''; } // // // var valueType = Container.getTypeName(expression.value); // // // // context['$urlParams'] += expression.name + '=' + this.provider.fieldConverter.toDb[Container.resolveName(Container.resolveType(valueType))](expression.value); // }, VisitCountExpression: function VisitCountExpression(expression, context) { this.Visit(expression.source, context); context.urlText += '/$count'; }, VisitBatchExecuteQueryExpression: function VisitBatchExecuteQueryExpression(expression, context) { context.urlText += '/$batch'; context.method = 'POST'; context.postData = { __batchRequests: [] }; context._isBatchExecuteQuery = true; context._subQueries = expression.members; for (var i = 0; i < expression.members.length; i++) { var queryable = expression.members[i]; var compiler = new _core2.default.storageProviders.oData.oDataCompiler(); var compiled = compiler.compile(queryable); context.postData.__batchRequests.push({ requestUri: this.provider.providerConfiguration.oDataServiceHost + compiled.queryText, method: compiled.method, data: compiled.data, headers: compiled.headers }); } } }, {}); },{"jaydata/core":"jaydata/core"}],6:[function(_dereq_,module,exports){ (function (global){ 'use strict'; var _core = _dereq_('jaydata/core'); var _core2 = _interopRequireDefault(_core); var _atob = (typeof window !== "undefined" ? window['atob'] : typeof global !== "undefined" ? global['atob'] : null); var _atob2 = _interopRequireDefault(_atob); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } _core2.default.defaults = _core2.default.defaults || {}; _core2.default.defaults.oDataWebApi = false; _core2.default.oDataConverter = { fromDb: { '$data.Enum': function $dataEnum(v, enumType) { return _core2.default.Container.convertTo(v, enumType); }, '$data.Byte': _core2.default.Container.proxyConverter, '$data.SByte': _core2.default.Container.proxyConverter, '$data.Decimal': function $dataDecimal(v) { return _core2.default.Container.convertTo(v, _core2.default.Decimal); }, '$data.Float': _core2.default.Container.proxyConverter, '$data.Int16': _core2.default.Container.proxyConverter, '$data.Int64': function $dataInt64(v) { return _core2.default.Container.convertTo(v, _core2.default.Int64); }, '$data.ObjectID': _core2.default.Container.proxyConverter, '$data.Integer': _core2.default.Container.proxyConverter, //function (number) { return (typeof number === 'string' && /^\d+$/.test(number)) ? parseInt(number) : number; }, '$data.Int32': _core2.default.Container.proxyConverter, '$data.Number': _core2.default.Container.proxyConverter, '$data.Date': function $dataDate(dbData) { if (dbData) { if (dbData instanceof Date) { return dbData; } else if (dbData.substring(0, 6) === '/Date(') { return new Date(parseInt(dbData.substr(6))); } else { //ISODate without Z? Safari compatible with Z if (dbData.indexOf('Z') === -1 && !dbData.match('T.*[+-]')) dbData += 'Z'; return new Date(dbData); } } else { return dbData; } }, '$data.DateTimeOffset': function $dataDateTimeOffset(dbData) { if (dbData) { if (dbData instanceof Date) { return dbData; } else if (dbData.substring(0, 6) === '/Date(') { return new Date(parseInt(dbData.substr(6))); } else { //ISODate without Z? Safari compatible with Z if (dbData.indexOf('Z') === -1 && !dbData.match('T.*[+-]')) dbData += 'Z'; return new Date(dbData); } } else { return dbData; } }, '$data.Time': function $dataTime(v) { return _core2.default.Container.convertTo(v, _core2.default.Time); }, '$data.Day': _core2.default.Container.proxyConverter, '$data.Duration': _core2.default.Container.proxyConverter, '$data.String': _core2.default.Container.proxyConverter, '$data.Boolean': _core2.default.Container.proxyConverter, '$data.Blob': function $dataBlob(v) { if (typeof v == 'string') { try { return _core2.default.Container.convertTo((0, _atob2.default)(v), '$data.Blob'); } catch (e) { return v; } } else return v; }, '$data.Object': function $dataObject(o) { if (o === undefined) { return new _core2.default.Object(); } else if (typeof o === 'string') { return JSON.parse(o); }return o; }, '$data.Array': function $dataArray(o) { if (o === undefined) { return new _core2.default.Array(); } else if (o instanceof _core2.default.Array) { return o; }return JSON.parse(o); }, '$data.GeographyPoint': function $dataGeographyPoint(g) { if (g) { return new _core2.default.GeographyPoint(g); }return g; }, '$data.GeographyLineString': function $dataGeographyLineString(g) { if (g) { return new _core2.default.GeographyLineString(g); }return g; }, '$data.GeographyPolygon': function $dataGeographyPolygon(g) { if (g) { return new _core2.default.GeographyPolygon(g); }return g; }, '$data.GeographyMultiPoint': function $dataGeographyMultiPoint(g) { if (g) { return new _core2.default.GeographyMultiPoint(g); }return g; }, '$data.GeographyMultiLineString': function $dataGeographyMultiLineString(g) { if (g) { return new _core2.default.GeographyMultiLineString(g); }return g; }, '$data.GeographyMultiPolygon': function $dataGeographyMultiPolygon(g) { if (g) { return new _core2.default.GeographyMultiPolygon(g); }return g; }, '$data.GeographyCollection': function $dataGeographyCollection(g) { if (g) { return new _core2.default.GeographyCollection(g); }return g; }, '$data.GeometryPoint': function $dataGeometryPoint(g) { if (g) { return new _core2.default.GeometryPoint(g); }return g; }, '$data.GeometryLineString': function $dataGeometryLineString(g) { if (g) { return new _core2.default.GeometryLineString(g); }return g; }, '$data.GeometryPolygon': function $dataGeometryPolygon(g) { if (g) { return new _core2.default.GeometryPolygon(g); }return g; }, '$data.GeometryMultiPoint': function $dataGeometryMultiPoint(g) { if (g) { return new _core2.default.GeometryMultiPoint(g); }return g; }, '$data.GeometryMultiLineString': function $dataGeometryMultiLineString(g) { if (g) { return new _core2.default.GeometryMultiLineString(g); }return g; }, '$data.GeometryMultiPolygon': function $dataGeometryMultiPolygon(g) { if (g) { return new _core2.default.GeometryMultiPolygon(g); }return g; }, '$data.GeometryCollection': function $dataGeometryCollection(g) { if (g) { return new _core2.default.GeometryCollection(g); }return g; }, '$data.Guid': function $dataGuid(guid) { return guid ? guid.toString() : guid; } }, toDb: { '$data.Enum': function $dataEnum(e, enumType) { return e !== null && e !== undefined ? enumType && enumType.getEnumName ? enumType.getEnumName(e) : "" : e; }, '$data.Entity': _core2.default.Container.proxyConverter, '$data.Byte': _core2.default.Container.proxyConverter, '$data.SByte': _core2.default.Container.proxyConverter, '$data.Decimal': _core2.default.Container.proxyConverter, //function (v) { return v ? parseFloat(v) : v }, '$data.Float': _core2.default.Container.proxyConverter, '$data.Int16': _core2.default.Container.proxyConverter, '$data.Int64': _core2.default.Container.proxyConverter, //function (v) { return v ? parseInt(v) : v }, '$data.ObjectID': _core2.default.Container.proxyConverter, '$data.Integer': _core2.default.Container.proxyConverter, '$data.Int32': _core2.default.Container.proxyConverter, '$data.Number': _core2.default.Container.proxyConverter, '$data.Date': function $dataDate(e) { return e ? e.toISOString().replace('Z', '') : e; }, '$data.Time': _core2.default.Container.proxyConverter, '$data.Day': _core2.default.Container.proxyConverter, '$data.Duration': _core2.default.Container.proxyConverter, '$data.DateTimeOffset': function $dataDateTimeOffset(v) { return v ? v.toISOString() : v; }, '$data.String': _core2.default.Container.proxyConverter, '$data.Boolean': _core2.default.Container.proxyConverter, '$data.Blob': function $dataBlob(v) { return v ? _core2.default.Blob.toBase64(v) : v; }, '$data.Object': _core2.default.Container.proxyConverter, '$data.Array': function $dataArray(o, def) { if (o && def && def.elementType) { var typeName = _core.Container.resolveName(def.elementType); var values = []; for (var i = 0; i < o.length; i++) { values.push(_core2.default.oDataConverter['toDb'][typeName](o[i])); } return values; } return _core2.default.Container.proxyConverter.apply(this, arguments); }, '$data.GeographyPoint': _core2.default.Container.proxyConverter, '$data.GeographyLineString': _core2.default.Container.proxyConverter, '$data.GeographyPolygon': _core2.default.Container.proxyConverter, '$data.GeographyMultiPoint': _core2.default.Container.proxyConverter, '$data.GeographyMultiLineString': _core2.default.Container.proxyConverter, '$data.GeographyMultiPolygon': _core2.default.Container.proxyConverter, '$data.GeographyCollection': _core2.default.Container.proxyConverter, '$data.GeometryPoint': _core2.default.Container.proxyConverter, '$data.GeometryLineString': _core2.default.Container.proxyConverter, '$data.GeometryPolygon': _core2.default.Container.proxyConverter, '$data.GeometryMultiPoint': _core2.default.Container.proxyConverter, '$data.GeometryMultiLineString': _core2.default.Container.proxyConverter, '$data.GeometryMultiPolygon': _core2.default.Container.proxyConverter, '$data.GeometryCollection': _core2.default.Container.proxyConverter, '$data.Guid': _core2.default.Container.proxyConverter }, escape: { '$data.Enum': function $dataEnum(e, enumType) { return e !== null && e !== undefined ? (enumType ? enumType.fullName : "") + "'" + e + "'" : e; }, '$data.Entity': function $dataEntity(e) { return JSON.stringify(e); }, '$data.Integer': _core2.default.Container.proxyConverter, '$data.Int32': _core2.default.Container.proxyConverter, '$data.Number': function $dataNumber(v) { return v && _core2.default.defaults.oDataWebApi ? v + 'd' : v; }, '$data.Int16': _core2.default.Container.proxyConverter, '$data.Byte': _core2.default.Container.proxyConverter, '$data.SByte': _core2.default.Container.proxyConverter, '$data.Decimal': function $dataDecimal(v) { return v && _core2.default.defaults.oDataWebApi ? v + 'm' : v; }, '$data.Float': function $dataFloat(v) { return v && _core2.default.defaults.oDataWebApi ? v + 'f' : v; }, '$data.Int64': _core2.default.Container.proxyConverter, '$data.Time': _core2.default.Container.proxyConverter, '$data.Day': _core2.default.Container.proxyConverter, '$data.Duration': function $dataDuration(v) { return v ? "duration'" + v + "'" : v; }, '$data.DateTimeOffset': function $dataDateTimeOffset(d) { return d ? encodeURIComponent(d) : d; }, '$data.Date': function $dataDate(date) { return date ? "datetime'" + date + "'" : date; }, '$data.String': function $dataString(text) { return typeof text === 'string' ? "'" + text.replace(/'/g, "''") + "'" : text; }, '$data.ObjectID': function $dataObjectID(text) { return typeof text === 'string' ? "'" + text.replace(/'/g, "''") + "'" : text; }, '$data.Boolean': function $dataBoolean(bool) { return typeof bool === 'boolean' ? bool.toString() : bool; }, '$data.Blob': function $dataBlob(b) { return b ? "binary'" + b + "'" : b; }, '$data.Object': function $dataObject(o) { return JSON.stringify(o); }, '$data.Array': function $dataArray(o, def) { if (o && def && def.elementType) { var typeName = _core.Container.resolveName(def.elementType); var values = []; for (var i = 0; i < o.length; i++) { values.push(_core2.default.oDataConverter['escape'][typeName](o[i])); } return "[" + values.join(',') + "]"; } return JSON.stringify(o); }, '$data.GeographyPoint': function $dataGeographyPoint(g) { if (g) { return _core2.default.GeographyBase.stringifyToUrl(g); }return g; }, '$data.GeographyLineString': function $dataGeographyLineString(g) { if (g) { return _core2.default.GeographyBase.stringifyToUrl(g); }return g; }, '$data.GeographyPolygon': function $dataGeographyPolygon(g) { if (g) { return _core2.default.GeographyBase.stringifyToUrl(g); }return g; }, '$data.GeographyMultiPoint': function $dataGeographyMultiPoint(g) { if (g) { return _core2.default.GeographyBase.stringifyToUrl(g); }return g; }, '$data.GeographyMultiLineString': function $dataGeographyMultiLineString(g) { if (g) { return _core2.default.GeographyBase.stringifyToUrl(g); }return g; }, '$data.GeographyMultiPolygon': function $dataGeographyMultiPolygon(g) { if (g) { return _core2.default.GeographyBase.stringifyToUrl(g); }return g; }, '$data.GeographyCollection': function $dataGeographyCollection(g) { if (g) { return _core2.default.GeographyBase.stringifyToUrl(g); }return g; }, '$data.GeometryPoint': function $dataGeometryPoint(g) { if (g) { return _core2.default.GeometryBase.stringifyToUrl(g); }return g; }, '$data.GeometryLineString': function $dataGeometryLineString(g) { if (g) { return _core2.default.GeometryBase.stringifyToUrl(g); }return g; }, '$data.GeometryPolygon': function $dataGeometryPolygon(g) { if (g) { return _core2.default.GeometryBase.stringifyToUrl(g); }return g; }, '$data.GeometryMultiPoint': function $dataGeometryMultiPoint(g) { if (g) { return _core2.default.GeometryBase.stringifyToUrl(g); }return g; }, '$data.GeometryMultiLineString': function $dataGeometryMultiLineString(g) { if (g) { return _core2.default.GeometryBase.stringifyToUrl(g); }return g; }, '$data.GeometryMultiPolygon': function $dataGeometryMultiPolygon(g) { if (g) { return _core2.default.GeometryBase.stringifyToUrl(g); }return g; }, '$data.GeometryCollection': function $dataGeometryCollection(g) { if (g) { return _core2.default.GeometryBase.stringifyToUrl(g); }return g; }, '$data.Guid': function $dataGuid(guid) { return guid ? "" + guid.toString() + "" : guid; } }, unescape: { '$data.Entity': function $dataEntity(v, c) { var config = c || {}; var value = JSON.parse(v); if (value && config.type) { var type = _core.Container.resolveType(config.type); /*Todo converter*/ return new type(value, { converters: undefined }); } return value; }, '$data.Number': function $dataNumber(v) { return JSON.parse(v); }, '$data.Integer': function $dataInteger(v) { return JSON.parse(v); }, '$data.Int32': function $dataInt32(v) { return JSON.parse(v); }, '$data.Byte': function $dataByte(v) { return JSON.parse(v); }, '$data.SByte': function $dataSByte(v) { return JSON.parse(v); }, '$data.Decimal': function $dataDecimal(v) { if (typeof v === 'string' && v.toLowerCase().lastIndexOf('m') === v.length - 1) { return v.substr(0, v.length - 1); } else { return v; } }, '$data.Float': function $dataFloat(v) { if (typeof v === 'string' && v.toLowerCase().lastIndexOf('f') === v.length - 1) { return v.substr(0, v.length - 1); } else { return v; } }, '$data.Int16': function $dataInt16(v) { return JSON.parse(v); }, '$data.Int64': function $dataInt64(v) { return v; }, '$data.Boolean': function $dataBoolean(v) { return JSON.parse(v); }, '$data.Date': function $dataDate(v) { if (typeof v === 'string' && /^datetime'/.test(v)) { return v.slice(9, v.length - 1); } return v; }, '$data.String': function $dataString(v) { if (typeof v === 'string' && v.indexOf("'") === 0 && v.lastIndexOf("'") === v.length - 1) { return v.slice(1, v.length - 1); } else { return v; } }, '$data.ObjectID': function $dataObjectID(v) { if (typeof v === 'string' && v.indexOf("'") === 0 && v.lastIndexOf("'") === v.length - 1) { return v.slice(1, v.length - 1); } else { return v; } }, '$data.Guid': function $dataGuid(v) { if (/^\w{8}-\w{4}-\w{4}-\w{4}-\w{12}$/.test(v)) { var data = v.slice(5, v.length - 1); return _core2.default.parseGuid(data).toString(); } return v; }, '$data.Array': function $dataArray(v, c) { var config = c || {}; var value = JSON.parse(v) || []; if (value && config.elementType) { var type = _core.Container.resolveType(config.elementType); var typeName = _core.Container.resolveName(type); if (type && type.isAssignableTo && type.isAssignableTo(_core2.default.Entity)) { typeName = _core2.default.Entity.fullName; } if (Array.isArray(value)) { var converter = _core2.default.oDataConverter.unescape[typeName]; for (var i = 0; i < value.length; i++) { value[i] = converter ? converter(value[i]) : value[i]; } } return value; } return value; }, '$data.DateTimeOffset': function $dataDateTimeOffset(v) { if (typeof v === 'string') { return _core2.default.Container.convertTo(v, _core2.default.DateTimeOffset); } return v; }, '$data.Time': function $dataTime(v) { if (typeof v === 'string' && /^time'/.test(v)) { return _core2.default.Container.convertTo(v.slice(5, v.length - 1), _core2.default.Time); } return v; }, '$data.Day': function $dataDay(v) { if (typeof v === 'string' && /^date'/.test(v)) { return _core2.default.Container.convertTo(v.slice(5, v.length - 1), _core2.default.Day); } return v; }, '$data.Duration': function $dataDuration(v) { if (typeof v === 'string' && /^duration'/.test(v)) { return _core2.default.Container.convertTo(v.slice(9, v.length - 1), _core2.default.Duration); } return v; }, '$data.Blob': function $dataBlob(v) { if (typeof v === 'string') { if (/^X'/.test(v)) { return _core2.default.Blob.createFromHexString(v.slice(2, v.length - 1)); } else if (/^binary'/.test(v)) { return _core2.default.Blob.createFromHexString(v.slice(7, v.length - 1)); } } return v; }, '$data.Object': function $dataObject(v) { return JSON.parse(v); }, '$data.GeographyPoint': function $dataGeographyPoint(v) { if (/^geography'POINT\(/i.test(v)) { var data = v.slice(10, v.length - 1); return _core2.default.GeographyBase.parseFromString(data); } return v; }, '$data.GeographyPolygon': function $dataGeographyPolygon(v) { if (/^geography'POLYGON\(/i.test(v)) { var data = v.slice(10, v.length - 1); return _core2.default.GeographyBase.parseFromString(data); } return v; }, '$data.GeometryPoint': function $dataGeometryPoint(v) { if (/^geometry'POINT\(/i.test(v)) { var data = v.slice(9, v.length - 1); return _core2.default.GeometryBase.parseFromString(data); } return v; }, '$data.GeometryPolygon': function $dataGeometryPolygon(v) { if (/^geometry'POLYGON\(/i.test(v)) { var data = v.slice(9, v.length - 1); return _core2.default.GeometryBase.parseFromString(data); } return v; } }, xmlEscape: { '$data.Byte': function $dataByte(v) { return v.toString(); }, '$data.SByte': function $dataSByte(v) { return v.toString(); }, '$data.Decimal': function $dataDecimal(v) { return v.toString(); }, '$data.Float': function $dataFloat(v) { return v.toString(); }, '$data.Int16': function $dataInt16(v) { return v.toString(); }, '$data.Int64': function $dataInt64(v) { return v.toString(); }, '$data.Integer': function $dataInteger(v) { return v.toString(); }, '$data.Int32': function $dataInt32(v) { return v.toString(); }, '$data.Boolean': function $dataBoolean(v) { return v.toString(); }, '$data.Blob': function $dataBlob(v) { return _core2.default.Blob.toBase64(v); }, '$data.Date': function $dataDate(v) { return v.toISOString().replace('Z', ''); }, '$data.DateTimeOffset': function $dataDateTimeOffset(v) { return v.toISOString(); }, '$data.Time': function $dataTime(v) { return v.toString(); }, '$data.Day': function $dataDay(v) { return v.toString(); }, '$data.Duration': function $dataDuration(v) { return v.toString(); }, '$data.Number': function $dataNumber(v) { return v.toString(); }, '$data.String': function $dataString(v) { return v.toString(); }, '$data.ObjectID': function $dataObjectID(v) { return v.toString(); }, '$data.Object': function $dataObject(v) { return JSON.stringify(v); }, '$data.Guid': function $dataGuid(v) { return v.toString(); } /*, '$data.GeographyPoint': function (v) { return this._buildSpatialPoint(v, 'http://www.opengis.net/def/crs/EPSG/0/4326'); }, '$data.GeometryPoint': function (v) { return this._buildSpatialPoint(v, 'http://www.opengis.net/def/crs/EPSG/0/0'); }, '$data.GeographyLineString': function (v) { return this._buildSpatialLineString(v, 'http://www.opengis.net/def/crs/EPSG/0/4326'); }, '$data.GeometryLineString': function (v) { return this._buildSpatialLineString(v, 'http://www.opengis.net/def/crs/EPSG/0/0'); }*/ }, simple: { //$value, $count '$data.Byte': function $dataByte(v) { return v.toString(); }, '$data.SByte': function $dataSByte(v) { return v.toString(); }, '$data.Decimal': function $dataDecimal(v) { return v.toString(); }, '$data.Float': function $dataFloat(v) { return v.toString(); }, '$data.Int16': function $dataInt16(v) { return v.toString(); }, '$data.Int64': function $dataInt64(v) { return v.toString(); }, '$data.ObjectID': function $dataObjectID(o) { return o.toString(); }, '$data.Integer': function $dataInteger(o) { return o.toString(); }, '$data.Int32': function $dataInt32(o) { return o.toString(); }, '$data.Number': function $dataNumber(o) { return o.toString(); }, '$data.Date': function $dataDate(o) { return o instanceof _core2.default.Date ? o.toISOString().replace('Z', '') : o.toString(); }, '$data.DateTimeOffset': function $dataDateTimeOffset(v) { return v ? v.toISOString() : v; }, '$data.Time': function $dataTime(o) { return o.toString(); }, '$data.Day': function $dataDay(o) { return o.toString(); }, '$data.Duration': function $dataDuration(o) { return o.toString(); }, '$data.String': function $dataString(o) { return o.toString(); }, '$data.Boolean': function $dataBoolean(o) { return o.toString(); }, '$data.Blob': function $dataBlob(o) { return o; }, '$data.Object': function $dataObject(o) { return JSON.stringify(o); }, '$data.Array': function $dataArray(o) { return JSON.stringify(o); }, '$data.Guid': function $dataGuid(o) { return o.toString(); }, '$data.GeographyPoint': function $dataGeographyPoint(o) { return JSON.stringify(o); }, '$data.GeometryPoint': function $dataGeometryPoint(o) { return JSON.stringify(o); }, '$data.GeographyLineString': function $dataGeographyLineString(o) { return JSON.stringify(o); }, '$data.GeographyPolygon': function $dataGeographyPolygon(o) { return JSON.stringify(o); }, '$data.GeographyMultiPoint': function $dataGeographyMultiPoint(o) { return JSON.stringify(o); }, '$data.GeographyMultiLineString': function $dataGeographyMultiLineString(o) { return JSON.stringify(o); }, '$data.GeographyMultiPolygon': function $dataGeographyMultiPolygon(o) { return JSON.stringify(o); }, '$data.GeographyCollection': function $dataGeographyCollection(o) { return JSON.stringify(o); }, '$data.GeometryLineString': function $dataGeometryLineString(o) { return JSON.stringify(o); }, '$data.GeometryPolygon': function $dataGeometryPolygon(o) { return JSON.stringify(o); }, '$data.GeometryMultiPoint': function $dataGeometryMultiPoint(o) { return JSON.stringify(o); }, '$data.GeometryMultiLineString': function $dataGeometryMultiLineString(o) { return JSON.stringify(o); }, '$data.GeometryMultiPolygon': function $dataGeometryMultiPolygon(o) { return JSON.stringify(o); }, '$data.GeometryCollection': function $dataGeometryCollection(o) { return JSON.stringify(o); } } }; }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) },{"jaydata/core":"jaydata/core"}],7:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.ODataIncludeFragment = undefined; var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descri