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
JavaScript
// 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