breeze-client
Version:
Breeze data management for JavaScript clients
37 lines • 5.4 kB
JavaScript
import * as breeze from 'breeze-client';
import { appendQueryStringParameter } from './adapter-core';
export 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);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRlci11cmktYnVpbGRlci1qc29uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FkYXB0ZXItdXJpLWJ1aWxkZXItanNvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1RCxNQUFNLE9BQU8scUJBQXFCO0lBQ2hDLElBQUksQ0FBUztJQUViO1FBQ0UsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBNEI7UUFDMUMsTUFBTSxHQUFHLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQ2pDLE1BQU0sQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLHFCQUFxQixDQUFDLENBQUM7UUFDNUQsT0FBTyxNQUFNLENBQUMseUJBQXlCLENBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQTBCLENBQUM7SUFDL0YsQ0FBQztJQUVELFVBQVUsS0FBSSxDQUFDO0lBRWYsUUFBUSxDQUFDLFdBQStCLEVBQUUsYUFBbUM7UUFDM0UsK0JBQStCO1FBQy9CLElBQUksVUFBVSxHQUFHLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDLFVBQVU7WUFBRSxVQUFVLEdBQUcsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ25FLElBQUksSUFBSSxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUMsQ0FBUSxDQUFDO1FBQzFGLElBQUksQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDO1FBQzlCLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRTtZQUM1Qyx1Q0FBdUM7WUFDdkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7U0FDN0I7UUFFRCxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RDLElBQUksVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDekIsSUFBSSxPQUFPLEdBQUcsa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDN0MsT0FBTywwQkFBMEIsQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ3RFO2FBQU07WUFDTCxPQUFPLFdBQVcsQ0FBQyxZQUFZLENBQUM7U0FDakM7SUFFSCxDQUFDO0NBRUY7QUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUscUJBQXFCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGJyZWV6ZSBmcm9tICdicmVlemUtY2xpZW50JztcclxuaW1wb3J0IHsgYXBwZW5kUXVlcnlTdHJpbmdQYXJhbWV0ZXIgfSBmcm9tICcuL2FkYXB0ZXItY29yZSc7XHJcblxyXG5leHBvcnQgY2xhc3MgVXJpQnVpbGRlckpzb25BZGFwdGVyIGltcGxlbWVudHMgYnJlZXplLlVyaUJ1aWxkZXJBZGFwdGVyIHtcclxuICBuYW1lOiBzdHJpbmc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5uYW1lID0gXCJqc29uXCI7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgcmVnaXN0ZXIoY29uZmlnPzogYnJlZXplLkJyZWV6ZUNvbmZpZykge1xyXG4gICAgY29uZmlnID0gY29uZmlnIHx8IGJyZWV6ZS5jb25maWc7XHJcbiAgICBjb25maWcucmVnaXN0ZXJBZGFwdGVyKFwidXJpQnVpbGRlclwiLCBVcmlCdWlsZGVySnNvbkFkYXB0ZXIpO1xyXG4gICAgcmV0dXJuIGNvbmZpZy5pbml0aWFsaXplQWRhcHRlckluc3RhbmNlKFwidXJpQnVpbGRlclwiLCBcImpzb25cIiwgdHJ1ZSkgYXMgVXJpQnVpbGRlckpzb25BZGFwdGVyO1xyXG4gIH1cclxuXHJcbiAgaW5pdGlhbGl6ZSgpIHt9XHJcblxyXG4gIGJ1aWxkVXJpKGVudGl0eVF1ZXJ5OiBicmVlemUuRW50aXR5UXVlcnksIG1ldGFkYXRhU3RvcmU6IGJyZWV6ZS5NZXRhZGF0YVN0b3JlKSB7XHJcbiAgICAvLyBmb3JjZSBlbnRpdHlUeXBlIHZhbGlkYXRpb247XHJcbiAgICBsZXQgZW50aXR5VHlwZSA9IGVudGl0eVF1ZXJ5Ll9nZXRGcm9tRW50aXR5VHlwZShtZXRhZGF0YVN0b3JlLCBmYWxzZSk7XHJcbiAgICBpZiAoIWVudGl0eVR5cGUpIGVudGl0eVR5cGUgPSBuZXcgYnJlZXplLkVudGl0eVR5cGUobWV0YWRhdGFTdG9yZSk7XHJcbiAgICBsZXQganNvbiA9IGVudGl0eVF1ZXJ5LnRvSlNPTkV4dCggeyBlbnRpdHlUeXBlOiBlbnRpdHlUeXBlLCB0b05hbWVPblNlcnZlcjogdHJ1ZX0pIGFzIGFueTtcclxuICAgIGpzb24uZnJvbSA9IHVuZGVmaW5lZDtcclxuICAgIGpzb24ucXVlcnlPcHRpb25zID0gdW5kZWZpbmVkO1xyXG4gICAgaWYgKGpzb24ucGFyYW1ldGVycyAmJiBqc29uLnBhcmFtZXRlcnMuJGRhdGEpIHtcclxuICAgICAgLy8gcmVtb3ZlIHBhcmFtZXRlcnMgaWYgZG9pbmcgYWpheCBwb3N0XHJcbiAgICAgIGpzb24ucGFyYW1ldGVycyA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICBsZXQganNvblN0cmluZyA9IEpTT04uc3RyaW5naWZ5KGpzb24pO1xyXG4gICAgaWYgKGpzb25TdHJpbmcubGVuZ3RoID4gMikge1xyXG4gICAgICBsZXQgdXJsQm9keSA9IGVuY29kZVVSSUNvbXBvbmVudChqc29uU3RyaW5nKTtcclxuICAgICAgcmV0dXJuIGFwcGVuZFF1ZXJ5U3RyaW5nUGFyYW1ldGVyKGVudGl0eVF1ZXJ5LnJlc291cmNlTmFtZSwgdXJsQm9keSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gZW50aXR5UXVlcnkucmVzb3VyY2VOYW1lO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG59XHJcblxyXG5icmVlemUuY29uZmlnLnJlZ2lzdGVyQWRhcHRlcihcInVyaUJ1aWxkZXJcIiwgVXJpQnVpbGRlckpzb25BZGFwdGVyKTtcclxuXHJcblxyXG5cclxuIl19