freezeRenderState.js 811 B

123456789101112131415161718192021222324252627282930
  1. /**
  2. * Returns frozen renderState as well as all of the object literal properties. This function is deep object freeze
  3. * function ignoring properties named "_applyFunctions".
  4. *
  5. * @private
  6. *
  7. * @param {object} renderState
  8. * @returns {object} Returns frozen renderState.
  9. *
  10. */
  11. function freezeRenderState(renderState) {
  12. if (typeof renderState !== "object" || renderState === null) {
  13. return renderState;
  14. }
  15. let propName;
  16. const propNames = Object.keys(renderState);
  17. for (let i = 0; i < propNames.length; i++) {
  18. propName = propNames[i];
  19. if (
  20. renderState.hasOwnProperty(propName) &&
  21. propName !== "_applyFunctions"
  22. ) {
  23. renderState[propName] = freezeRenderState(renderState[propName]);
  24. }
  25. }
  26. return Object.freeze(renderState);
  27. }
  28. export default freezeRenderState;