"use strict"; // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. Object.defineProperty(exports, "__esModule", { value: true }); 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; exports.maybeObj = maybeObj; exports.isEmptyObj = isEmptyObj; exports.hasOwn = hasOwn; exports.isObj = isObj; const error_1 = require("../../core/error.js"); // https://url.spec.whatwg.org/#url-scheme-string const startsWithSchemeRegexp = /^[a-z][a-z0-9+.-]*:/i; const isAbsoluteURL = (url) => { return startsWithSchemeRegexp.test(url); }; exports.isAbsoluteURL = isAbsoluteURL; let isArray = (val) => ((exports.isArray = Array.isArray), (0, exports.isArray)(val)); exports.isArray = isArray; exports.isReadonlyArray = exports.isArray; /** Returns an object if the given value isn't an object, otherwise returns as-is */ function maybeObj(x) { if (typeof x !== 'object') { return {}; } return x ?? {}; } // https://stackoverflow.com/a/34491287 function isEmptyObj(obj) { if (!obj) return true; for (const _k in obj) return false; return true; } // https://eslint.org/docs/latest/rules/no-prototype-builtins function hasOwn(obj, key) { return Object.prototype.hasOwnProperty.call(obj, key); } function isObj(obj) { return obj != null && typeof obj === 'object' && !Array.isArray(obj); } const ensurePresent = (value) => { if (value == null) { throw new error_1.OpenAIError(`Expected a value to be given but received ${value} instead.`); } return value; }; exports.ensurePresent = ensurePresent; const validatePositiveInteger = (name, n) => { if (typeof n !== 'number' || !Number.isInteger(n)) { throw new error_1.OpenAIError(`${name} must be an integer`); } if (n < 0) { throw new error_1.OpenAIError(`${name} must be a positive integer`); } return n; }; exports.validatePositiveInteger = validatePositiveInteger; const coerceInteger = (value) => { if (typeof value === 'number') return Math.round(value); if (typeof value === 'string') return parseInt(value, 10); throw new error_1.OpenAIError(`Could not coerce ${value} (type: ${typeof value}) into a number`); }; exports.coerceInteger = coerceInteger; const coerceFloat = (value) => { if (typeof value === 'number') return value; if (typeof value === 'string') return parseFloat(value); throw new error_1.OpenAIError(`Could not coerce ${value} (type: ${typeof value}) into a number`); }; exports.coerceFloat = coerceFloat; const coerceBoolean = (value) => { if (typeof value === 'boolean') return value; if (typeof value === 'string') return value === 'true'; return Boolean(value); }; exports.coerceBoolean = coerceBoolean; const maybeCoerceInteger = (value) => { if (value === undefined) { return undefined; } return (0, exports.coerceInteger)(value); }; exports.maybeCoerceInteger = maybeCoerceInteger; const maybeCoerceFloat = (value) => { if (value === undefined) { return undefined; } return (0, exports.coerceFloat)(value); }; exports.maybeCoerceFloat = maybeCoerceFloat; const maybeCoerceBoolean = (value) => { if (value === undefined) { return undefined; } return (0, exports.coerceBoolean)(value); }; exports.maybeCoerceBoolean = maybeCoerceBoolean; const safeJSON = (text) => { try { return JSON.parse(text); } catch (err) { return undefined; } }; exports.safeJSON = safeJSON; //# sourceMappingURL=values.js.map