jsonld
Version:
A JSON-LD Processor and API implementation in JavaScript.
39 lines (33 loc) • 819 B
JavaScript
/*
* Copyright (c) 2017 Digital Bazaar, Inc. All rights reserved.
*/
;
const {
isSubjectReference: _isSubjectReference
} = require('./graphTypes');
const {
createMergedNodeMap: _createMergedNodeMap
} = require('./nodeMap');
const api = {};
module.exports = api;
/**
* Performs JSON-LD flattening.
*
* @param input the expanded JSON-LD to flatten.
*
* @return the flattened output.
*/
api.flatten = input => {
const defaultGraph = _createMergedNodeMap(input);
// produce flattened output
const flattened = [];
const keys = Object.keys(defaultGraph).sort();
for(let ki = 0; ki < keys.length; ++ki) {
const node = defaultGraph[keys[ki]];
// only add full subjects to top-level
if(!_isSubjectReference(node)) {
flattened.push(node);
}
}
return flattened;
};