@sinclair/typebox
Version:
Json Schema Type Builder with Static Type Resolution for TypeScript
28 lines (26 loc) • 1.04 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Readonly = void 0;
const index_1 = require("../symbols/index");
const type_1 = require("../clone/type");
const index_2 = require("../discard/index");
const readonly_from_mapped_result_1 = require("./readonly-from-mapped-result");
const type_2 = require("../guard/type");
function RemoveReadonly(schema) {
return (0, index_2.Discard)((0, type_1.CloneType)(schema), [index_1.ReadonlyKind]);
}
function AddReadonly(schema) {
return { ...(0, type_1.CloneType)(schema), [index_1.ReadonlyKind]: 'Readonly' };
}
// prettier-ignore
function ReadonlyWithFlag(schema, F) {
return (F === false
? RemoveReadonly(schema)
: AddReadonly(schema));
}
/** `[Json]` Creates a Readonly property */
function Readonly(schema, enable) {
const F = enable ?? true;
return (0, type_2.IsMappedResult)(schema) ? (0, readonly_from_mapped_result_1.ReadonlyFromMappedResult)(schema, F) : ReadonlyWithFlag(schema, F);
}
exports.Readonly = Readonly;