values.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. "use strict";
  2. // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
  3. Object.defineProperty(exports, "__esModule", { value: true });
  4. exports.safeJSON = exports.maybeCoerceBoolean = exports.maybeCoerceFloat = exports.maybeCoerceInteger = exports.coerceBoolean = exports.coerceFloat = exports.coerceInteger = exports.validatePositiveInteger = exports.ensurePresent = exports.isReadonlyArray = exports.isArray = exports.isAbsoluteURL = void 0;
  5. exports.maybeObj = maybeObj;
  6. exports.isEmptyObj = isEmptyObj;
  7. exports.hasOwn = hasOwn;
  8. exports.isObj = isObj;
  9. const error_1 = require("../../core/error.js");
  10. // https://url.spec.whatwg.org/#url-scheme-string
  11. const startsWithSchemeRegexp = /^[a-z][a-z0-9+.-]*:/i;
  12. const isAbsoluteURL = (url) => {
  13. return startsWithSchemeRegexp.test(url);
  14. };
  15. exports.isAbsoluteURL = isAbsoluteURL;
  16. let isArray = (val) => ((exports.isArray = Array.isArray), (0, exports.isArray)(val));
  17. exports.isArray = isArray;
  18. exports.isReadonlyArray = exports.isArray;
  19. /** Returns an object if the given value isn't an object, otherwise returns as-is */
  20. function maybeObj(x) {
  21. if (typeof x !== 'object') {
  22. return {};
  23. }
  24. return x ?? {};
  25. }
  26. // https://stackoverflow.com/a/34491287
  27. function isEmptyObj(obj) {
  28. if (!obj)
  29. return true;
  30. for (const _k in obj)
  31. return false;
  32. return true;
  33. }
  34. // https://eslint.org/docs/latest/rules/no-prototype-builtins
  35. function hasOwn(obj, key) {
  36. return Object.prototype.hasOwnProperty.call(obj, key);
  37. }
  38. function isObj(obj) {
  39. return obj != null && typeof obj === 'object' && !Array.isArray(obj);
  40. }
  41. const ensurePresent = (value) => {
  42. if (value == null) {
  43. throw new error_1.OpenAIError(`Expected a value to be given but received ${value} instead.`);
  44. }
  45. return value;
  46. };
  47. exports.ensurePresent = ensurePresent;
  48. const validatePositiveInteger = (name, n) => {
  49. if (typeof n !== 'number' || !Number.isInteger(n)) {
  50. throw new error_1.OpenAIError(`${name} must be an integer`);
  51. }
  52. if (n < 0) {
  53. throw new error_1.OpenAIError(`${name} must be a positive integer`);
  54. }
  55. return n;
  56. };
  57. exports.validatePositiveInteger = validatePositiveInteger;
  58. const coerceInteger = (value) => {
  59. if (typeof value === 'number')
  60. return Math.round(value);
  61. if (typeof value === 'string')
  62. return parseInt(value, 10);
  63. throw new error_1.OpenAIError(`Could not coerce ${value} (type: ${typeof value}) into a number`);
  64. };
  65. exports.coerceInteger = coerceInteger;
  66. const coerceFloat = (value) => {
  67. if (typeof value === 'number')
  68. return value;
  69. if (typeof value === 'string')
  70. return parseFloat(value);
  71. throw new error_1.OpenAIError(`Could not coerce ${value} (type: ${typeof value}) into a number`);
  72. };
  73. exports.coerceFloat = coerceFloat;
  74. const coerceBoolean = (value) => {
  75. if (typeof value === 'boolean')
  76. return value;
  77. if (typeof value === 'string')
  78. return value === 'true';
  79. return Boolean(value);
  80. };
  81. exports.coerceBoolean = coerceBoolean;
  82. const maybeCoerceInteger = (value) => {
  83. if (value == null) {
  84. return undefined;
  85. }
  86. return (0, exports.coerceInteger)(value);
  87. };
  88. exports.maybeCoerceInteger = maybeCoerceInteger;
  89. const maybeCoerceFloat = (value) => {
  90. if (value == null) {
  91. return undefined;
  92. }
  93. return (0, exports.coerceFloat)(value);
  94. };
  95. exports.maybeCoerceFloat = maybeCoerceFloat;
  96. const maybeCoerceBoolean = (value) => {
  97. if (value == null) {
  98. return undefined;
  99. }
  100. return (0, exports.coerceBoolean)(value);
  101. };
  102. exports.maybeCoerceBoolean = maybeCoerceBoolean;
  103. const safeJSON = (text) => {
  104. try {
  105. return JSON.parse(text);
  106. }
  107. catch (err) {
  108. return undefined;
  109. }
  110. };
  111. exports.safeJSON = safeJSON;
  112. //# sourceMappingURL=values.js.map