UNPKG

@orbit/jsonapi

Version:

JSON:API support for Orbit.

108 lines 14 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.JSONAPIResourceIdentitySerializer = void 0; const core_1 = require("@orbit/core"); const jsonapi_base_serializer_1 = require("./jsonapi-base-serializer"); const { assert } = core_1.Orbit; class JSONAPIResourceIdentitySerializer extends jsonapi_base_serializer_1.JSONAPIBaseSerializer { constructor(settings) { const { serializerFor, deserializationOptions, schema, keyMap, getResourceKey } = settings; super({ serializerFor, deserializationOptions, schema, keyMap }); this._resourceKeys = {}; this._getCustomResourceKey = getResourceKey; } getResourceKey(type) { let key = this._resourceKeys[type]; if (key === undefined) { if (this._getCustomResourceKey) { key = this._getCustomResourceKey(type); } if (key === undefined) { const model = this.schema.getModel(type); if (model === null || model === void 0 ? void 0 : model.keys) { let availableKeys = Object.keys(model.keys); if (availableKeys.length === 1) { key = availableKeys[0]; } } if (key === undefined) { key = 'id'; } } assert("JSONAPIResourceIdentitySerializer requires a keyMap to support resource keys other than 'id'", key === 'id' || this.keyMap !== undefined); this._resourceKeys[type] = key; } return key; } serialize(recordIdentity) { const { type, id } = recordIdentity; const resourceKey = this.getResourceKey(type); const resourceType = this.typeSerializer.serialize(type); const keyMap = this.keyMap; const resourceId = resourceKey === 'id' ? id : keyMap.idToKey(type, resourceKey, id); const resource = { type: resourceType }; if (resourceId !== undefined) { resource.id = resourceId; } return resource; } deserialize(resource, customOptions) { var _a; const options = this.buildDeserializationOptions(customOptions); const type = this.typeSerializer.deserialize(resource.type); const resourceKey = this.getResourceKey(type); if (resourceKey === 'id') { const { id } = resource; if (id) { return { type, id }; } else { throw new core_1.Assertion(`Resource of type '${type}' is missing 'id'`); } } else { const keyMap = this.keyMap; const primaryRecord = options === null || options === void 0 ? void 0 : options.primaryRecord; let id; let keys; if (resource.id) { keys = { [resourceKey]: resource.id }; id = ((_a = options.primaryRecord) === null || _a === void 0 ? void 0 : _a.id) || keyMap.idFromKeys(type, keys) || this.schema.generateId(type); } else { keys = null; id = (primaryRecord && primaryRecord.id) || this.schema.generateId(type); } const record = { type, id }; if (keys) { if (options.includeKeys) { record.keys = keys; keyMap.pushRecord(record); } else { keyMap.pushRecord({ type, id, keys }); } } return record; } } } exports.JSONAPIResourceIdentitySerializer = JSONAPIResourceIdentitySerializer; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbmFwaS1yZXNvdXJjZS1pZGVudGl0eS1zZXJpYWxpemVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcmlhbGl6ZXJzL2pzb25hcGktcmVzb3VyY2UtaWRlbnRpdHktc2VyaWFsaXplci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxzQ0FBK0M7QUFJL0MsdUVBQWtFO0FBR2xFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxZQUFLLENBQUM7QUFlekIsTUFBYSxpQ0FBa0MsU0FBUSwrQ0FLdEQ7SUFrQ0MsWUFBWSxRQUFtRDtRQUM3RCxNQUFNLEVBQ0osYUFBYSxFQUNiLHNCQUFzQixFQUN0QixNQUFNLEVBQ04sTUFBTSxFQUNOLGNBQWMsRUFDZixHQUFHLFFBQVEsQ0FBQztRQUNiLEtBQUssQ0FBQztZQUNKLGFBQWE7WUFDYixzQkFBc0I7WUFDdEIsTUFBTTtZQUNOLE1BQU07U0FDUCxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMscUJBQXFCLEdBQUcsY0FBYyxDQUFDO0lBQzlDLENBQUM7SUE5Q0QsY0FBYyxDQUFDLElBQVk7UUFDekIsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQyxJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUU7WUFDckIsSUFBSSxJQUFJLENBQUMscUJBQXFCLEVBQUU7Z0JBQzlCLEdBQUcsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDeEM7WUFFRCxJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUU7Z0JBQ3JCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN6QyxJQUFJLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxJQUFJLEVBQUU7b0JBQ2YsSUFBSSxh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Q0EsQ0FBQyxhQUFhLElBQUksYUFBYSxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3ZFO1lBRUQsTUFBTSxNQUFNLEdBQXNCLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBRS9DLElBQUksSUFBSSxFQUFFO2dCQUNSLElBQUksT0FBTyxDQUFDLFdBQVcsRUFBRTtvQkFDdkIsTUFBTSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7b0JBQ25CLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7aUJBQzNCO3FCQUFNO29CQUNMLE1BQU0sQ0FBQyxVQUFVLENBQUM7d0JBQ2hCLElBQUk7d0JBQ0osRUFBRTt3QkFDRixJQUFJO3FCQUNMLENBQUMsQ0FBQztpQkFDSjthQUNGO1lBRUQsT0FBTyxNQUFNLENBQUM7U0FDZjtJQUNILENBQUM7Q0FDRjtBQWxJRCw4RUFrSUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPcmJpdCwgQXNzZXJ0aW9uIH0gZnJvbSAnQG9yYml0L2NvcmUnO1xuaW1wb3J0IHsgSW5pdGlhbGl6ZWRSZWNvcmQsIFJlY29yZFNjaGVtYSwgUmVjb3JkS2V5TWFwIH0gZnJvbSAnQG9yYml0L3JlY29yZHMnO1xuaW1wb3J0IHsgRGljdCB9IGZyb20gJ0BvcmJpdC91dGlscyc7XG5pbXBvcnQgeyBSZXNvdXJjZSB9IGZyb20gJy4uL3Jlc291cmNlLWRvY3VtZW50JztcbmltcG9ydCB7IEpTT05BUElCYXNlU2VyaWFsaXplciB9IGZyb20gJy4vanNvbmFwaS1iYXNlLXNlcmlhbGl6ZXInO1xuaW1wb3J0IHsgU2VyaWFsaXplckZvckZuIH0gZnJvbSAnQG9yYml0L3NlcmlhbGl6ZXJzJztcblxuY29uc3QgeyBhc3NlcnQgfSA9IE9yYml0O1xuXG5leHBvcnQgaW50ZXJmYWNlIEpTT05BUElSZXNvdXJjZUlkZW50aXR5RGVzZXJpYWxpemF0aW9uT3B0aW9ucyB7XG4gIHByaW1hcnlSZWNvcmQ/OiBJbml0aWFsaXplZFJlY29yZDtcbiAgaW5jbHVkZUtleXM/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEpTT05BUElSZXNvdXJjZUlkZW50aXR5U2VyaWFsaXplclNldHRpbmdzIHtcbiAgc2VyaWFsaXplckZvcjogU2VyaWFsaXplckZvckZuO1xuICBkZXNlcmlhbGl6YXRpb25PcHRpb25zPzogSlNPTkFQSVJlc291cmNlSWRlbnRpdHlEZXNlcmlhbGl6YXRpb25PcHRpb25zO1xuICBzY2hlbWE6IFJlY29yZFNjaGVtYTtcbiAga2V5TWFwPzogUmVjb3JkS2V5TWFwO1xuICBnZXRSZXNvdXJjZUtleT86IChyZWNvcmRUeXBlOiBzdHJpbmcpID0+IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIEpTT05BUElSZXNvdXJjZUlkZW50aXR5U2VyaWFsaXplciBleHRlbmRzIEpTT05BUElCYXNlU2VyaWFsaXplcjxcbiAgSW5pdGlhbGl6ZWRSZWNvcmQsXG4gIFJlc291cmNlLFxuICB1bmtub3duLFxuICBKU09OQVBJUmVzb3VyY2VJZGVudGl0eURlc2VyaWFsaXphdGlvbk9wdGlvbnNcbj4ge1xuICBwcm90ZWN0ZWQgX3Jlc291cmNlS2V5czogRGljdDxzdHJpbmc+O1xuICBwcm90ZWN0ZWQgX2dldEN1c3RvbVJlc291cmNlS2V5PzogKHJlY29yZFR5cGU6IHN0cmluZykgPT4gc3RyaW5nO1xuXG4gIGdldFJlc291cmNlS2V5KHR5cGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgbGV0IGtleSA9IHRoaXMuX3Jlc291cmNlS2V5c1t0eXBlXTtcbiAgICBpZiAoa2V5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICh0aGlzLl9nZXRDdXN0b21SZXNvdXJjZUtleSkge1xuICAgICAgICBrZXkgPSB0aGlzLl9nZXRDdXN0b21SZXNvdXJjZUtleSh0eXBlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGtleSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IG1vZGVsID0gdGhpcy5zY2hlbWEuZ2V0TW9kZWwodHlwZSk7XG4gICAgICAgIGlmIChtb2RlbD8ua2V5cykge1xuICAgICAgICAgIGxldCBhdmFpbGFibGVLZXlzID0gT2JqZWN0LmtleXMobW9kZWwua2V5cyk7XG4gICAgICAgICAgaWYgKGF2YWlsYWJsZUtleXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICBrZXkgPSBhdmFpbGFibGVLZXlzWzBdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoa2V5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBrZXkgPSAnaWQnO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGFzc2VydChcbiAgICAgICAgXCJKU09OQVBJUmVzb3VyY2VJZGVudGl0eVNlcmlhbGl6ZXIgcmVxdWlyZXMgYSBrZXlNYXAgdG8gc3VwcG9ydCByZXNvdXJjZSBrZXlzIG90aGVyIHRoYW4gJ2lkJ1wiLFxuICAgICAgICBrZXkgPT09ICdpZCcgfHwgdGhpcy5rZXlNYXAgIT09IHVuZGVmaW5lZFxuICAgICAgKTtcblxuICAgICAgdGhpcy5fcmVzb3VyY2VLZXlzW3R5cGVdID0ga2V5O1xuICAgIH1cbiAgICByZXR1cm4ga2V5O1xuICB9XG5cbiAgY29uc3RydWN0b3Ioc2V0dGluZ3M6IEpTT05BUElSZXNvdXJjZUlkZW50aXR5U2VyaWFsaXplclNldHRpbmdzKSB7XG4gICAgY29uc3Qge1xuICAgICAgc2VyaWFsaXplckZvcixcbiAgICAgIGRlc2VyaWFsaXphdGlvbk9wdGlvbnMsXG4gICAgICBzY2hlbWEsXG4gICAgICBrZXlNYXAsXG4gICAgICBnZXRSZXNvdXJjZUtleVxuICAgIH0gPSBzZXR0aW5ncztcbiAgICBzdXBlcih7XG4gICAgICBzZXJpYWxpemVyRm9yLFxuICAgICAgZGVzZXJpYWxpemF0aW9uT3B0aW9ucyxcbiAgICAgIHNjaGVtYSxcbiAgICAgIGtleU1hcFxuICAgIH0pO1xuICAgIHRoaXMuX3Jlc291cmNlS2V5cyA9IHt9O1xuICAgIHRoaXMuX2dldEN1c3RvbVJlc291cmNlS2V5ID0gZ2V0UmVzb3VyY2VLZXk7XG4gIH1cblxuICBzZXJpYWxpemUocmVjb3JkSWRlbnRpdHk6IEluaXRpYWxpemVkUmVjb3JkKTogUmVzb3VyY2Uge1xuICAgIGNvbnN0IHsgdHlwZSwgaWQgfSA9IHJlY29yZElkZW50aXR5O1xuICAgIGNvbnN0IHJlc291cmNlS2V5ID0gdGhpcy5nZXRSZXNvdXJjZUtleSh0eXBlKTtcbiAgICBjb25zdCByZXNvdXJjZVR5cGUgPSB0aGlzLnR5cGVTZXJpYWxpemVyLnNlcmlhbGl6ZSh0eXBlKSBhcyBzdHJpbmc7XG4gICAgY29uc3Qga2V5TWFwID0gdGhpcy5rZXlNYXAgYXMgUmVjb3JkS2V5TWFwO1xuICAgIGNvbnN0IHJlc291cmNlSWQgPVxuICAgICAgcmVzb3VyY2VLZXkgPT09ICdpZCcgPyBpZCA6IGtleU1hcC5pZFRvS2V5KHR5cGUsIHJlc291cmNlS2V5LCBpZCk7XG5cbiAgICBjb25zdCByZXNvdXJjZTogUmVzb3VyY2UgPSB7XG4gICAgICB0eXBlOiByZXNvdXJjZVR5cGVcbiAgICB9O1xuXG4gICAgaWYgKHJlc291cmNlSWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmVzb3VyY2UuaWQgPSByZXNvdXJjZUlkO1xuICAgIH1cblxuICAgIHJldHVybiByZXNvdXJjZTtcbiAgfVxuXG4gIGRlc2VyaWFsaXplKFxuICAgIHJlc291cmNlOiBSZXNvdXJjZSxcbiAgICBjdXN0b21PcHRpb25zPzogSlNPTkFQSVJlc291cmNlSWRlbnRpdHlEZXNlcmlhbGl6YXRpb25PcHRpb25zXG4gICk6IEluaXRpYWxpemVkUmVjb3JkIHtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5idWlsZERlc2VyaWFsaXphdGlvbk9wdGlvbnMoY3VzdG9tT3B0aW9ucyk7XG4gICAgY29uc3QgdHlwZSA9IHRoaXMudHlwZVNlcmlhbGl6ZXIuZGVzZXJpYWxpemUocmVzb3VyY2UudHlwZSkgYXMgc3RyaW5nO1xuICAgIGNvbnN0IHJlc291cmNlS2V5ID0gdGhpcy5nZXRSZXNvdXJjZUtleSh0eXBlKTtcblxuICAgIGlmIChyZXNvdXJjZUtleSA9PT0gJ2lkJykge1xuICAgICAgY29uc3QgeyBpZCB9ID0gcmVzb3VyY2U7XG4gICAgICBpZiAoaWQpIHtcbiAgICAgICAgcmV0dXJuIHsgdHlwZSwgaWQgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBBc3NlcnRpb24oYFJlc291cmNlIG9mIHR5cGUgJyR7dHlwZX0nIGlzIG1pc3NpbmcgJ2lkJ2ApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBrZXlNYXAgPSB0aGlzLmtleU1hcCBhcyBSZWNvcmRLZXlNYXA7XG4gICAgICBjb25zdCBwcmltYXJ5UmVjb3JkID0gb3B0aW9ucz8ucHJpbWFyeVJlY29yZDtcbiAgICAgIGxldCBpZDogc3RyaW5nO1xuICAgICAgbGV0IGtleXM6IERpY3Q8c3RyaW5nPiB8IG51bGw7XG5cbiAgICAgIGlmIChyZXNvdXJjZS5pZCkge1xuICAgICAgICBrZXlzID0ge1xuICAgICAgICAgIFtyZXNvdXJjZUtleV06IHJlc291cmNlLmlkXG4gICAgICAgIH07XG5cbiAgICAgICAgaWQgPVxuICAgICAgICAgIG9wdGlvbnMucHJpbWFyeVJlY29yZD8uaWQgfHxcbiAgICAgICAgICBrZXlNYXAuaWRGcm9tS2V5cyh0eXBlLCBrZXlzKSB8fFxuICAgICAgICAgIHRoaXMuc2NoZW1hLmdlbmVyYXRlSWQodHlwZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBrZXlzID0gbnVsbDtcbiAgICAgICAgaWQgPVxuICAgICAgICAgIChwcmltYXJ5UmVjb3JkICYmIHByaW1hcnlSZWNvcmQuaWQpIHx8IHRoaXMuc2NoZW1hLmdlbmVyYXRlSWQodHlwZSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlY29yZDogSW5pdGlhbGl6ZWRSZWNvcmQgPSB7IHR5cGUsIGlkIH07XG5cbiAgICAgIGlmIChrZXlzKSB7XG4gICAgICAgIGlmIChvcHRpb25zLmluY2x1ZGVLZXlzKSB7XG4gICAgICAgICAgcmVjb3JkLmtleXMgPSBrZXlzO1xuICAgICAgICAgIGtleU1hcC5wdXNoUmVjb3JkKHJlY29yZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAga2V5TWFwLnB1c2hSZWNvcmQoe1xuICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAga2V5c1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZWNvcmQ7XG4gICAgfVxuICB9XG59XG4iXX0=