UNPKG

breeze-client

Version:

Breeze data management for JavaScript clients

93 lines (88 loc) 3.39 kB
import * as breeze from 'breeze-client'; /** Appends parameter to url, with appropriate delimiter */ function appendQueryStringParameter(url, parameter) { if (!parameter) return url; let separator = url.endsWith("?") ? "" : url.includes("?") ? "&" : "?"; return url + separator + parameter; } /** Encodes the object into query string parameters */ function encodeParams(obj) { let query = ''; let subValue, innerObj, fullSubName; for (let name in obj) { if (!obj.hasOwnProperty(name)) { continue; } let value = obj[name]; if (value instanceof Array) { for (let i = 0; i < value.length; ++i) { subValue = value[i]; fullSubName = name + '[' + i + ']'; innerObj = {}; innerObj[fullSubName] = subValue; query += encodeParams(innerObj) + '&'; } } else if (value && value.toISOString) { // a feature of Date-like things query += encodeURIComponent(name) + '=' + encodeURIComponent(value.toISOString()) + '&'; } else if (value instanceof Object) { for (let subName in value) { if (obj.hasOwnProperty(name)) { subValue = value[subName]; fullSubName = name + '[' + subName + ']'; innerObj = {}; innerObj[fullSubName] = subValue; query += encodeParams(innerObj) + '&'; } } } else if (value === null) { query += encodeURIComponent(name) + '=&'; } else if (value !== undefined) { query += encodeURIComponent(name) + '=' + encodeURIComponent(value) + '&'; } } return query.length ? query.substr(0, query.length - 1) : query; } class UriBuilderJsonAdapter { name; constructor() { this.name = "json"; } static register(config) { config = config || breeze.config; config.registerAdapter("uriBuilder", UriBuilderJsonAdapter); return config.initializeAdapterInstance("uriBuilder", "json", true); } initialize() { } buildUri(entityQuery, metadataStore) { // force entityType validation; let entityType = entityQuery._getFromEntityType(metadataStore, false); if (!entityType) entityType = new breeze.EntityType(metadataStore); let json = entityQuery.toJSONExt({ entityType: entityType, toNameOnServer: true }); json.from = undefined; json.queryOptions = undefined; if (json.parameters && json.parameters.$data) { // remove parameters if doing ajax post json.parameters = undefined; } let jsonString = JSON.stringify(json); if (jsonString.length > 2) { let urlBody = encodeURIComponent(jsonString); return appendQueryStringParameter(entityQuery.resourceName, urlBody); } else { return entityQuery.resourceName; } } } breeze.config.registerAdapter("uriBuilder", UriBuilderJsonAdapter); /** * Generated bundle index. Do not edit. */ export { UriBuilderJsonAdapter }; //# sourceMappingURL=breeze-client-adapter-uri-builder-json.mjs.map