prune-shapes.js 845 B

123456789101112131415161718192021222324252627
  1. var getOperationShapeNames = require('./get-operation-shape-names').getOperationShapeNames;
  2. var visitRelatedShapeNames = require('./visit-related-shape-names').visitRelatedShapeNames;
  3. function pruneShapes(model) {
  4. // start by grabbing the input/output shapes on all operations
  5. var operationShapeNames = getOperationShapeNames(model);
  6. var shapeMap = model.shapes;
  7. for (operationShape of operationShapeNames) {
  8. // traverse the tree and store visited shapes
  9. visitRelatedShapeNames(operationShape, shapeMap);
  10. }
  11. // iterate over the shapeMap and remove any shape that wasn't visited
  12. var shapeNames = Object.keys(shapeMap);
  13. for (var name of shapeNames) {
  14. if (!shapeMap[name].visited) {
  15. delete shapeMap[name];
  16. }
  17. }
  18. };
  19. module.exports = {
  20. pruneShapes: pruneShapes
  21. };