@orbit/jsonapi
Version:
JSON:API support for Orbit.
40 lines • 6.4 kB
JavaScript
import { JSONAPIBaseSerializer } from './jsonapi-base-serializer';
export class JSONAPIAtomicResultsDocumentSerializer extends JSONAPIBaseSerializer {
serialize(document) {
const result = {
'atomic:results': this.serializeResults(document.results)
};
this.serializeLinks(document, result);
this.serializeMeta(document, result);
return result;
}
serializeResults(results) {
return results.map((record) => this.resourceSerializer.serialize(record));
}
/* eslint-disable @typescript-eslint/no-unused-vars */
serializeLinks(document, resDocument) { }
serializeMeta(document, resDocument) { }
/* eslint-enable @typescript-eslint/no-unused-vars */
deserialize(document) {
const result = {
results: this.deserializeAtomicResults(document['atomic:results'])
};
this.deserializeLinks(document, result);
this.deserializeMeta(document, result);
return result;
}
deserializeAtomicResults(results) {
return results.map((resource) => this.resourceSerializer.deserialize(resource));
}
deserializeLinks(resDocument, document) {
if (resDocument.links) {
document.links = resDocument.links;
}
}
deserializeMeta(resDocument, document) {
if (resDocument.meta) {
document.meta = resDocument.meta;
}
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbmFwaS1hdG9taWMtcmVzdWx0cy1kb2N1bWVudC1zZXJpYWxpemVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcmlhbGl6ZXJzL2pzb25hcGktYXRvbWljLXJlc3VsdHMtZG9jdW1lbnQtc2VyaWFsaXplci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVsRSxNQUFNLE9BQU8sc0NBQXVDLFNBQVEscUJBSzNEO0lBQ0MsU0FBUyxDQUFDLFFBQStCO1FBQ3ZDLE1BQU0sTUFBTSxHQUFrQztZQUM1QyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztTQUMxRCxDQUFDO1FBRUYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFckMsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELGdCQUFnQixDQUFDLE9BQTRCO1FBQzNDLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFRCxzREFBc0Q7SUFDNUMsY0FBYyxDQUN0QixRQUErQixFQUMvQixXQUEwQyxJQUNuQyxDQUFDO0lBRUEsYUFBYSxDQUNyQixRQUErQixFQUMvQixXQUEwQyxJQUNuQyxDQUFDO0lBQ1YscURBQXFEO0lBRXJELFdBQVcsQ0FBQyxRQUF1QztRQUNqRCxNQUFNLE1BQU0sR0FBMEI7WUFDcEMsT0FBTyxFQUFFLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztTQUNuRSxDQUFDO1FBRUYsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUV2QyxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsd0JBQXdCLENBQUMsT0FBbUI7UUFDMUMsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FDOUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FDOUMsQ0FBQztJQUNKLENBQUM7SUFFUyxnQkFBZ0IsQ0FDeEIsV0FBMEMsRUFDMUMsUUFBK0I7UUFFL0IsSUFBSSxXQUFXLENBQUMsS0FBSyxFQUFFO1lBQ3JCLFFBQVEsQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQztTQUNwQztJQUNILENBQUM7SUFFUyxlQUFlLENBQ3ZCLFdBQTBDLEVBQzFDLFFBQStCO1FBRS9CLElBQUksV0FBVyxDQUFDLElBQUksRUFBRTtZQUNwQixRQUFRLENBQUMsSUFBSSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUM7U0FDbEM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbml0aWFsaXplZFJlY29yZCB9IGZyb20gJ0BvcmJpdC9yZWNvcmRzJztcbmltcG9ydCB7XG4gIFJlY29yZFJlc3VsdHNEb2N1bWVudCxcbiAgUmVzb3VyY2VBdG9taWNSZXN1bHRzRG9jdW1lbnRcbn0gZnJvbSAnLi4vcmVzb3VyY2Utb3BlcmF0aW9ucyc7XG5pbXBvcnQgeyBSZXNvdXJjZSB9IGZyb20gJy4uL3Jlc291cmNlLWRvY3VtZW50JztcbmltcG9ydCB7IEpTT05BUElCYXNlU2VyaWFsaXplciB9IGZyb20gJy4vanNvbmFwaS1iYXNlLXNlcmlhbGl6ZXInO1xuXG5leHBvcnQgY2xhc3MgSlNPTkFQSUF0b21pY1Jlc3VsdHNEb2N1bWVudFNlcmlhbGl6ZXIgZXh0ZW5kcyBKU09OQVBJQmFzZVNlcmlhbGl6ZXI8XG4gIFJlY29yZFJlc3VsdHNEb2N1bWVudCxcbiAgUmVzb3VyY2VBdG9taWNSZXN1bHRzRG9jdW1lbnQsXG4gIHVua25vd24sXG4gIHVua25vd25cbj4ge1xuICBzZXJpYWxpemUoZG9jdW1lbnQ6IFJlY29yZFJlc3VsdHNEb2N1bWVudCk6IFJlc291cmNlQXRvbWljUmVzdWx0c0RvY3VtZW50IHtcbiAgICBjb25zdCByZXN1bHQ6IFJlc291cmNlQXRvbWljUmVzdWx0c0RvY3VtZW50ID0ge1xuICAgICAgJ2F0b21pYzpyZXN1bHRzJzogdGhpcy5zZXJpYWxpemVSZXN1bHRzKGRvY3VtZW50LnJlc3VsdHMpXG4gICAgfTtcblxuICAgIHRoaXMuc2VyaWFsaXplTGlua3MoZG9jdW1lbnQsIHJlc3VsdCk7XG4gICAgdGhpcy5zZXJpYWxpemVNZXRhKGRvY3VtZW50LCByZXN1bHQpO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHNlcmlhbGl6ZVJlc3VsdHMocmVzdWx0czogSW5pdGlhbGl6ZWRSZWNvcmRbXSk6IFJlc291cmNlW10ge1xuICAgIHJldHVybiByZXN1bHRzLm1hcCgocmVjb3JkKSA9PiB0aGlzLnJlc291cmNlU2VyaWFsaXplci5zZXJpYWxpemUocmVjb3JkKSk7XG4gIH1cblxuICAvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgKi9cbiAgcHJvdGVjdGVkIHNlcmlhbGl6ZUxpbmtzKFxuICAgIGRvY3VtZW50OiBSZWNvcmRSZXN1bHRzRG9jdW1lbnQsXG4gICAgcmVzRG9jdW1lbnQ6IFJlc291cmNlQXRvbWljUmVzdWx0c0RvY3VtZW50XG4gICk6IHZvaWQge31cblxuICBwcm90ZWN0ZWQgc2VyaWFsaXplTWV0YShcbiAgICBkb2N1bWVudDogUmVjb3JkUmVzdWx0c0RvY3VtZW50LFxuICAgIHJlc0RvY3VtZW50OiBSZXNvdXJjZUF0b21pY1Jlc3VsdHNEb2N1bWVudFxuICApOiB2b2lkIHt9XG4gIC8qIGVzbGludC1lbmFibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG5cbiAgZGVzZXJpYWxpemUoZG9jdW1lbnQ6IFJlc291cmNlQXRvbWljUmVzdWx0c0RvY3VtZW50KTogUmVjb3JkUmVzdWx0c0RvY3VtZW50IHtcbiAgICBjb25zdCByZXN1bHQ6IFJlY29yZFJlc3VsdHNEb2N1bWVudCA9IHtcbiAgICAgIHJlc3VsdHM6IHRoaXMuZGVzZXJpYWxpemVBdG9taWNSZXN1bHRzKGRvY3VtZW50WydhdG9taWM6cmVzdWx0cyddKVxuICAgIH07XG5cbiAgICB0aGlzLmRlc2VyaWFsaXplTGlua3MoZG9jdW1lbnQsIHJlc3VsdCk7XG4gICAgdGhpcy5kZXNlcmlhbGl6ZU1ldGEoZG9jdW1lbnQsIHJlc3VsdCk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgZGVzZXJpYWxpemVBdG9taWNSZXN1bHRzKHJlc3VsdHM6IFJlc291cmNlW10pOiBJbml0aWFsaXplZFJlY29yZFtdIHtcbiAgICByZXR1cm4gcmVzdWx0cy5tYXAoKHJlc291cmNlKSA9PlxuICAgICAgdGhpcy5yZXNvdXJjZVNlcmlhbGl6ZXIuZGVzZXJpYWxpemUocmVzb3VyY2UpXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBkZXNlcmlhbGl6ZUxpbmtzKFxuICAgIHJlc0RvY3VtZW50OiBSZXNvdXJjZUF0b21pY1Jlc3VsdHNEb2N1bWVudCxcbiAgICBkb2N1bWVudDogUmVjb3JkUmVzdWx0c0RvY3VtZW50XG4gICk6IHZvaWQge1xuICAgIGlmIChyZXNEb2N1bWVudC5saW5rcykge1xuICAgICAgZG9jdW1lbnQubGlua3MgPSByZXNEb2N1bWVudC5saW5rcztcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgZGVzZXJpYWxpemVNZXRhKFxuICAgIHJlc0RvY3VtZW50OiBSZXNvdXJjZUF0b21pY1Jlc3VsdHNEb2N1bWVudCxcbiAgICBkb2N1bWVudDogUmVjb3JkUmVzdWx0c0RvY3VtZW50XG4gICk6IHZvaWQge1xuICAgIGlmIChyZXNEb2N1bWVudC5tZXRhKSB7XG4gICAgICBkb2N1bWVudC5tZXRhID0gcmVzRG9jdW1lbnQubWV0YTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==