maxEncodingCapacity.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.maxEncodingCapacity = void 0;
  4. const maxEncodingCapacity = (value) => {
  5. switch (typeof value) {
  6. case 'number':
  7. return 22;
  8. case 'string':
  9. return 5 + value.length * 5;
  10. case 'boolean':
  11. return 5;
  12. case 'object': {
  13. if (!value)
  14. return 4;
  15. const constructor = value.constructor;
  16. switch (constructor) {
  17. case Array: {
  18. const arr = value;
  19. const length = arr.length;
  20. let size = 5 + length * 1;
  21. for (let i = arr.length - 1; i >= 0; i--)
  22. size += (0, exports.maxEncodingCapacity)(arr[i]);
  23. return size;
  24. }
  25. case Uint8Array: {
  26. return 41 + value.length * 2;
  27. }
  28. case Object: {
  29. let size = 5;
  30. const obj = value;
  31. for (const key in obj)
  32. if (obj.hasOwnProperty(key))
  33. size += 2 + (0, exports.maxEncodingCapacity)(key) + (0, exports.maxEncodingCapacity)(obj[key]);
  34. return size;
  35. }
  36. default:
  37. return 45;
  38. }
  39. }
  40. case 'bigint':
  41. return 22;
  42. default:
  43. return 45;
  44. }
  45. };
  46. exports.maxEncodingCapacity = maxEncodingCapacity;
  47. //# sourceMappingURL=maxEncodingCapacity.js.map