@orbit/record-cache
Version:
Orbit base classes used to access and maintain a set of records.
54 lines • 5.97 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.recordOperationChange = void 0;
const records_1 = require("@orbit/records");
function recordOperationChange(operation) {
const record = operation.record;
const change = {
...(0, records_1.cloneRecordIdentity)(record),
remove: false,
keys: [],
attributes: [],
relationships: [],
meta: [],
links: []
};
switch (operation.op) {
case 'addRecord':
case 'updateRecord':
if (record.keys) {
change.keys = Object.keys(record.keys);
}
if (record.attributes) {
change.attributes = Object.keys(record.attributes);
}
if (record.relationships) {
change.relationships = Object.keys(record.relationships);
}
if (record.meta) {
change.meta = Object.keys(record.meta);
}
if (record.links) {
change.links = Object.keys(record.links);
}
break;
case 'replaceAttribute':
change.attributes = [operation.attribute];
break;
case 'replaceKey':
change.keys = [operation.key];
break;
case 'replaceRelatedRecord':
case 'replaceRelatedRecords':
case 'addToRelatedRecords':
case 'removeFromRelatedRecords':
change.relationships = [operation.relationship];
break;
case 'removeRecord':
change.remove = true;
break;
}
return change;
}
exports.recordOperationChange = recordOperationChange;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkLWNoYW5nZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saXZlLXF1ZXJ5L3JlY29yZC1jaGFuZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNENBS3dCO0FBV3hCLFNBQWdCLHFCQUFxQixDQUNuQyxTQUEwQjtJQUUxQixNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsTUFBMkIsQ0FBQztJQUNyRCxNQUFNLE1BQU0sR0FBaUI7UUFDM0IsR0FBRyxJQUFBLDZCQUFtQixFQUFDLE1BQU0sQ0FBQztRQUM5QixNQUFNLEVBQUUsS0FBSztRQUNiLElBQUksRUFBRSxFQUFFO1FBQ1IsVUFBVSxFQUFFLEVBQUU7UUFDZCxhQUFhLEVBQUUsRUFBRTtRQUNqQixJQUFJLEVBQUUsRUFBRTtRQUNSLEtBQUssRUFBRSxFQUFFO0tBQ1YsQ0FBQztJQUVGLFFBQVEsU0FBUyxDQUFDLEVBQUUsRUFBRTtRQUNwQixLQUFLLFdBQVcsQ0FBQztRQUNqQixLQUFLLGNBQWM7WUFDakIsSUFBSSxNQUFNLENBQUMsSUFBSSxFQUFFO2dCQUNmLE1BQU0sQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDeEM7WUFDRCxJQUFJLE1BQU0sQ0FBQyxVQUFVLEVBQUU7Z0JBQ3JCLE1BQU0sQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDcEQ7WUFDRCxJQUFJLE1BQU0sQ0FBQyxhQUFhLEVBQUU7Z0JBQ3hCLE1BQU0sQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7YUFDMUQ7WUFDRCxJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUU7Z0JBQ2YsTUFBTSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUN4QztZQUNELElBQUksTUFBTSxDQUFDLEtBQUssRUFBRTtnQkFDaEIsTUFBTSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUMxQztZQUNELE1BQU07UUFDUixLQUFLLGtCQUFrQjtZQUNyQixNQUFNLENBQUMsVUFBVSxHQUFHLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzFDLE1BQU07UUFDUixLQUFLLFlBQVk7WUFDZixNQUFNLENBQUMsSUFBSSxHQUFHLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzlCLE1BQU07UUFDUixLQUFLLHNCQUFzQixDQUFDO1FBQzVCLEtBQUssdUJBQXVCLENBQUM7UUFDN0IsS0FBSyxxQkFBcUIsQ0FBQztRQUMzQixLQUFLLDBCQUEwQjtZQUM3QixNQUFNLENBQUMsYUFBYSxHQUFHLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ2hELE1BQU07UUFDUixLQUFLLGNBQWM7WUFDakIsTUFBTSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDckIsTUFBTTtLQUNUO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQW5ERCxzREFtREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBJbml0aWFsaXplZFJlY29yZCxcbiAgY2xvbmVSZWNvcmRJZGVudGl0eSxcbiAgUmVjb3JkSWRlbnRpdHksXG4gIFJlY29yZE9wZXJhdGlvblxufSBmcm9tICdAb3JiaXQvcmVjb3Jkcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVjb3JkQ2hhbmdlIGV4dGVuZHMgUmVjb3JkSWRlbnRpdHkge1xuICBrZXlzOiBzdHJpbmdbXTtcbiAgYXR0cmlidXRlczogc3RyaW5nW107XG4gIHJlbGF0aW9uc2hpcHM6IHN0cmluZ1tdO1xuICBtZXRhOiBzdHJpbmdbXTtcbiAgbGlua3M6IHN0cmluZ1tdO1xuICByZW1vdmU6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWNvcmRPcGVyYXRpb25DaGFuZ2UoXG4gIG9wZXJhdGlvbjogUmVjb3JkT3BlcmF0aW9uXG4pOiBSZWNvcmRDaGFuZ2Uge1xuICBjb25zdCByZWNvcmQgPSBvcGVyYXRpb24ucmVjb3JkIGFzIEluaXRpYWxpemVkUmVjb3JkO1xuICBjb25zdCBjaGFuZ2U6IFJlY29yZENoYW5nZSA9IHtcbiAgICAuLi5jbG9uZVJlY29yZElkZW50aXR5KHJlY29yZCksXG4gICAgcmVtb3ZlOiBmYWxzZSxcbiAgICBrZXlzOiBbXSxcbiAgICBhdHRyaWJ1dGVzOiBbXSxcbiAgICByZWxhdGlvbnNoaXBzOiBbXSxcbiAgICBtZXRhOiBbXSxcbiAgICBsaW5rczogW11cbiAgfTtcblxuICBzd2l0Y2ggKG9wZXJhdGlvbi5vcCkge1xuICAgIGNhc2UgJ2FkZFJlY29yZCc6XG4gICAgY2FzZSAndXBkYXRlUmVjb3JkJzpcbiAgICAgIGlmIChyZWNvcmQua2V5cykge1xuICAgICAgICBjaGFuZ2Uua2V5cyA9IE9iamVjdC5rZXlzKHJlY29yZC5rZXlzKTtcbiAgICAgIH1cbiAgICAgIGlmIChyZWNvcmQuYXR0cmlidXRlcykge1xuICAgICAgICBjaGFuZ2UuYXR0cmlidXRlcyA9IE9iamVjdC5rZXlzKHJlY29yZC5hdHRyaWJ1dGVzKTtcbiAgICAgIH1cbiAgICAgIGlmIChyZWNvcmQucmVsYXRpb25zaGlwcykge1xuICAgICAgICBjaGFuZ2UucmVsYXRpb25zaGlwcyA9IE9iamVjdC5rZXlzKHJlY29yZC5yZWxhdGlvbnNoaXBzKTtcbiAgICAgIH1cbiAgICAgIGlmIChyZWNvcmQubWV0YSkge1xuICAgICAgICBjaGFuZ2UubWV0YSA9IE9iamVjdC5rZXlzKHJlY29yZC5tZXRhKTtcbiAgICAgIH1cbiAgICAgIGlmIChyZWNvcmQubGlua3MpIHtcbiAgICAgICAgY2hhbmdlLmxpbmtzID0gT2JqZWN0LmtleXMocmVjb3JkLmxpbmtzKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3JlcGxhY2VBdHRyaWJ1dGUnOlxuICAgICAgY2hhbmdlLmF0dHJpYnV0ZXMgPSBbb3BlcmF0aW9uLmF0dHJpYnV0ZV07XG4gICAgICBicmVhaztcbiAgICBjYXNlICdyZXBsYWNlS2V5JzpcbiAgICAgIGNoYW5nZS5rZXlzID0gW29wZXJhdGlvbi5rZXldO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAncmVwbGFjZVJlbGF0ZWRSZWNvcmQnOlxuICAgIGNhc2UgJ3JlcGxhY2VSZWxhdGVkUmVjb3Jkcyc6XG4gICAgY2FzZSAnYWRkVG9SZWxhdGVkUmVjb3Jkcyc6XG4gICAgY2FzZSAncmVtb3ZlRnJvbVJlbGF0ZWRSZWNvcmRzJzpcbiAgICAgIGNoYW5nZS5yZWxhdGlvbnNoaXBzID0gW29wZXJhdGlvbi5yZWxhdGlvbnNoaXBdO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAncmVtb3ZlUmVjb3JkJzpcbiAgICAgIGNoYW5nZS5yZW1vdmUgPSB0cnVlO1xuICAgICAgYnJlYWs7XG4gIH1cblxuICByZXR1cm4gY2hhbmdlO1xufVxuIl19