@sanity/schema
Version:
## Terminology
1,414 lines (1,413 loc) • 49.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: !0 });
var omit = require("lodash/omit.js"), pick = require("lodash/pick.js"), resolve = require("./_chunks-cjs/resolve.js"), arrify = require("arrify"), isUndefined = require("lodash/isUndefined.js"), omitBy = require("lodash/omitBy.js"), capitalize = require("lodash/capitalize.js"), castArray = require("lodash/castArray.js"), flatMap = require("lodash/flatMap.js"), startCase = require("lodash/startCase.js"), isPlainObject = require("lodash/isPlainObject.js"), toPath = require("lodash/toPath.js");
function _interopDefaultCompat(e) {
return e && typeof e == "object" && "default" in e ? e : { default: e };
}
var omit__default = /* @__PURE__ */ _interopDefaultCompat(omit), pick__default = /* @__PURE__ */ _interopDefaultCompat(pick), arrify__default = /* @__PURE__ */ _interopDefaultCompat(arrify), isUndefined__default = /* @__PURE__ */ _interopDefaultCompat(isUndefined), omitBy__default = /* @__PURE__ */ _interopDefaultCompat(omitBy), capitalize__default = /* @__PURE__ */ _interopDefaultCompat(capitalize), castArray__default = /* @__PURE__ */ _interopDefaultCompat(castArray), flatMap__default = /* @__PURE__ */ _interopDefaultCompat(flatMap), startCase__default = /* @__PURE__ */ _interopDefaultCompat(startCase), isPlainObject__default = /* @__PURE__ */ _interopDefaultCompat(isPlainObject), toPath__default = /* @__PURE__ */ _interopDefaultCompat(toPath);
function lazyGetter(target, key, getter, config = {}) {
return Object.defineProperty(target, key, {
configurable: !0,
enumerable: config.enumerable !== !1,
get() {
const val = getter();
return Object.defineProperty(target, key, {
value: val,
writable: !!config.writable,
configurable: !1
}), val;
}
}), target;
}
function hiddenGetter(target, key, value) {
Object.defineProperty(target, key, {
enumerable: !1,
writable: !1,
configurable: !1,
value
});
}
const OVERRIDABLE_FIELDS$f = [...resolve.DEFAULT_OVERRIDEABLE_FIELDS], ANY_CORE = {
name: "any",
type: null,
jsonType: "any"
}, AnyType = {
get() {
return ANY_CORE;
},
extend(subTypeDef, extendMember) {
const ownProps = {
...subTypeDef,
of: subTypeDef.of.map((fieldDef) => ({
name: fieldDef.name,
type: extendMember(omit__default.default(fieldDef, "name"))
}))
}, parsed = Object.assign(pick__default.default(ANY_CORE, OVERRIDABLE_FIELDS$f), ownProps, {
type: ANY_CORE
});
return hiddenGetter(parsed, resolve.OWN_PROPS_NAME, ownProps), subtype(parsed);
function subtype(parent) {
return {
get() {
return parent;
},
extend: (extensionDef) => {
if (extensionDef.of)
throw new Error('Cannot override `of` property of subtypes of "array"');
const subOwnProps = pick__default.default(extensionDef, OVERRIDABLE_FIELDS$f), current = Object.assign({}, parent, subOwnProps, {
type: parent
});
return hiddenGetter(current, resolve.OWN_PROPS_NAME, subOwnProps), subtype(current);
}
};
}
}
}, OVERRIDABLE_FIELDS$e = [...resolve.DEFAULT_OVERRIDEABLE_FIELDS], ARRAY_CORE = {
name: "array",
type: null,
jsonType: "array",
of: []
}, ArrayType = {
get() {
return ARRAY_CORE;
},
extend(subTypeDef, createMemberType) {
const parsed = Object.assign(pick__default.default(ARRAY_CORE, OVERRIDABLE_FIELDS$e), subTypeDef, {
type: ARRAY_CORE
});
return lazyGetter(parsed, "of", () => subTypeDef.of.map((ofTypeDef) => createMemberType(ofTypeDef))), lazyGetter(parsed, resolve.OWN_PROPS_NAME, () => ({ ...subTypeDef, of: parsed.of }), {
enumerable: !1,
writable: !1
}), subtype(parsed);
function subtype(parent) {
return {
get() {
return parent;
},
extend: (extensionDef) => {
if (extensionDef.of)
throw new Error('Cannot override `of` property of subtypes of "array"');
const ownProps = pick__default.default(extensionDef, OVERRIDABLE_FIELDS$e), current = Object.assign({}, parent, ownProps, {
type: parent
});
return hiddenGetter(current, resolve.OWN_PROPS_NAME, ownProps), subtype(current);
}
};
}
}
};
function warnIfPreviewOnOptions(type) {
type.options && type.options.preview && console.warn(`Heads up! The preview config is no longer defined on "options", but instead on the type/field itself.
Please move {options: {preview: ...}} to {..., preview: ...} on the type/field definition of "${type.name}".
`);
}
function warnIfPreviewHasFields(type) {
const preview = type.preview || (type.options || {}).preview;
preview && "fields" in preview && console.warn(`Heads up! "preview.fields" should be renamed to "preview.select". Please update the preview config for "${type.name}".
`);
}
function isEmpty(object) {
for (const key in object)
if (object.hasOwnProperty(key))
return !1;
return !0;
}
function _stringify(value, options, depth) {
if (depth > options.maxDepth)
return "...";
if (Array.isArray(value)) {
if (value.length === 0)
return "[empty]";
const capLength = Math.max(value.length - options.maxBreadth), asString2 = value.slice(0, options.maxBreadth).map((item, index) => _stringify(item, options, depth + 1)).concat(capLength > 0 ? `\u2026+${capLength}` : []).join(", ");
return depth === 0 ? asString2 : `[${asString2}]`;
}
if (typeof value == "object" && value !== null) {
const keys = Object.keys(value).filter(
(key) => !options.ignoreKeys.includes(key) && typeof value[key] < "u"
);
if (isEmpty(pick__default.default(value, keys)))
return "{empty}";
const asString2 = keys.slice(0, options.maxBreadth).map((key) => `${key}: ${_stringify(value[key], options, depth + 1)}`).join(", ");
return depth === 0 ? asString2 : `{${asString2}}`;
}
const asString = String(value);
return asString === "" ? '""' : asString;
}
function stringify(value, options = {}) {
const opts = {
maxDepth: "maxDepth" in options ? options.maxDepth : 2,
maxBreadth: "maxBreadth" in options ? options.maxBreadth : 2,
ignoreKeys: "ignoreKeys" in options ? options.ignoreKeys : []
};
return _stringify(value, opts, 0);
}
const OPTIONS = {
maxEntries: 2,
maxDepth: 2,
maxBreadth: 2,
ignoreKeys: ["_id", "_type", "_key", "_ref"]
};
function createFallbackPrepare(fieldNames) {
return (value) => ({
title: stringify(pick__default.default(value, fieldNames), OPTIONS)
});
}
function isBlockField(field) {
return field.type === "array" && field.of && field.of.some((member) => member.type === "block") || !1;
}
const TITLE_CANDIDATES = ["title", "name", "label", "heading", "header", "caption"], DESCRIPTION_CANDIDATES = ["description", ...TITLE_CANDIDATES];
function fieldHasReferenceTo(fieldDef, refType) {
return arrify__default.default(fieldDef.to || []).some((memberTypeDef) => memberTypeDef.type === refType);
}
function isImageAssetField(fieldDef) {
return fieldHasReferenceTo(fieldDef, "sanity.imageAsset");
}
function resolveImageAssetPath(typeDef) {
const fields = typeDef.fields || [], imageAssetField = fields.find(isImageAssetField);
if (imageAssetField)
return imageAssetField.name;
const fieldWithImageAsset = fields.find(
(fieldDef) => (fieldDef.fields || []).some(isImageAssetField)
);
return fieldWithImageAsset ? `${fieldWithImageAsset.name}.asset` : void 0;
}
function isFileAssetField(fieldDef) {
return fieldHasReferenceTo(fieldDef, "sanity.fileAsset");
}
function resolveFileAssetPath(typeDef) {
const fields = typeDef.fields || [], assetField = fields.find(isFileAssetField);
if (assetField)
return assetField.name;
const fieldWithFileAsset = fields.find(
(fieldDef) => (fieldDef.fields || []).some(isFileAssetField)
);
return fieldWithFileAsset ? `${fieldWithFileAsset.name}.asset` : void 0;
}
function guessPreviewFields(rawObjectTypeDef) {
const objectTypeDef = { fields: [], ...rawObjectTypeDef }, stringFieldNames = objectTypeDef.fields.filter((field) => field.type === "string").map((field) => field.name), blockFieldNames = objectTypeDef.fields.filter(isBlockField).map((field) => field.name);
let titleField = TITLE_CANDIDATES.find(
(candidate) => stringFieldNames.includes(candidate) || blockFieldNames.includes(candidate)
), descField = DESCRIPTION_CANDIDATES.find(
(candidate) => candidate !== titleField && (stringFieldNames.includes(candidate) || blockFieldNames.includes(candidate))
);
titleField || (titleField = stringFieldNames[0] || blockFieldNames[0], descField = stringFieldNames[1] || blockFieldNames[1]);
const mediaField = objectTypeDef.fields.find((field) => field.type === "image"), imageAssetPath = resolveImageAssetPath(objectTypeDef);
if (!titleField) {
const fileAssetPath = resolveFileAssetPath(objectTypeDef);
fileAssetPath && (titleField = `${fileAssetPath}.originalFilename`), imageAssetPath && (titleField = `${imageAssetPath}.originalFilename`);
}
if (!titleField && !imageAssetPath) {
const fieldNames = objectTypeDef.fields.map((field) => field.name);
return {
select: fieldNames.reduce((acc, fieldName) => (acc[fieldName] = fieldName, acc), {}),
prepare: createFallbackPrepare(fieldNames)
};
}
return {
select: omitBy__default.default(
{
title: titleField,
description: descField,
media: mediaField ? mediaField.name : imageAssetPath
},
isUndefined__default.default
)
};
}
function parseSelection(selection) {
return selection.reduce((acc, field) => (acc[field] = field, acc), {});
}
function parsePreview(preview) {
if (!preview)
return preview;
const select = preview.select || preview.fields || {};
return Array.isArray(select) ? {
...pick__default.default(preview, ["prepare", "component"]),
select: parseSelection(select)
} : {
...pick__default.default(preview, ["prepare", "component"]),
select
};
}
function createPreviewGetter(objectTypeDef) {
return function() {
return warnIfPreviewOnOptions(objectTypeDef), warnIfPreviewHasFields(objectTypeDef), parsePreview(objectTypeDef.preview || (objectTypeDef.options || {}).preview) || guessPreviewFields(objectTypeDef);
};
}
const DEFAULT_LINK_ANNOTATION = {
type: "object",
name: "link",
title: "Link",
i18nTitleKey: "inputs.portable-text.annotation.link",
options: {
modal: { type: "popover" }
},
fields: [
{
name: "href",
type: "url",
title: "Link",
description: "A valid web, email, phone, or relative link.",
validation: (Rule) => Rule.uri({
scheme: ["http", "https", "tel", "mailto"],
allowRelative: !0
})
}
]
}, DEFAULT_TEXT_FIELD = {
type: "text",
name: "text",
title: "Text"
}, DEFAULT_MARKS_FIELD = {
name: "marks",
type: "array",
of: [{ type: "string" }],
title: "Marks"
}, LIST_TYPES = {
bullet: {
title: "Bulleted list",
value: "bullet",
i18nTitleKey: "inputs.portable-text.list-type.bullet"
},
numbered: {
title: "Numbered list",
value: "number",
i18nTitleKey: "inputs.portable-text.list-type.number"
}
}, DEFAULT_LIST_TYPES = [LIST_TYPES.bullet, LIST_TYPES.numbered], BLOCK_STYLES = {
normal: { title: "Normal", value: "normal", i18nTitleKey: "inputs.portable-text.style.normal" },
h1: { title: "Heading 1", value: "h1", i18nTitleKey: "inputs.portable-text.style.h1" },
h2: { title: "Heading 2", value: "h2", i18nTitleKey: "inputs.portable-text.style.h2" },
h3: { title: "Heading 3", value: "h3", i18nTitleKey: "inputs.portable-text.style.h3" },
h4: { title: "Heading 4", value: "h4", i18nTitleKey: "inputs.portable-text.style.h4" },
h5: { title: "Heading 5", value: "h5", i18nTitleKey: "inputs.portable-text.style.h5" },
h6: { title: "Heading 6", value: "h6", i18nTitleKey: "inputs.portable-text.style.h6" },
blockquote: {
title: "Quote",
value: "blockquote",
i18nTitleKey: "inputs.portable-text.style.quote"
}
}, DEFAULT_BLOCK_STYLES = [
BLOCK_STYLES.normal,
BLOCK_STYLES.h1,
BLOCK_STYLES.h2,
BLOCK_STYLES.h3,
BLOCK_STYLES.h4,
BLOCK_STYLES.h5,
BLOCK_STYLES.h6,
BLOCK_STYLES.blockquote
], DECORATOR_STRONG = {
title: "Strong",
value: "strong",
i18nTitleKey: "inputs.portable-text.decorator.strong"
}, DECORATOR_EMPHASIS = {
title: "Italic",
value: "em",
i18nTitleKey: "inputs.portable-text.decorator.emphasis"
}, DECORATOR_CODE = {
title: "Code",
value: "code",
i18nTitleKey: "inputs.portable-text.decorator.code"
}, DECORATOR_UNDERLINE = {
title: "Underline",
value: "underline",
i18nTitleKey: "inputs.portable-text.decorator.underline"
}, DECORATOR_STRIKE = {
title: "Strike",
value: "strike-through",
i18nTitleKey: "inputs.portable-text.decorator.strike-through"
}, DECORATORS = {
strong: DECORATOR_STRONG,
em: DECORATOR_EMPHASIS,
code: DECORATOR_CODE,
underline: DECORATOR_UNDERLINE,
strikeThrough: DECORATOR_STRIKE
}, DEFAULT_DECORATORS = [
DECORATORS.strong,
DECORATORS.em,
DECORATORS.code,
DECORATORS.underline,
DECORATORS.strikeThrough
], INHERITED_FIELDS$1 = [
"type",
"name",
"title",
"jsonType",
"description",
"options",
"fieldsets",
"icon"
], BLOCK_CORE = {
name: "block",
title: "Block",
type: null,
jsonType: "object"
}, DEFAULT_OPTIONS$3 = {}, BlockType = {
get() {
return BLOCK_CORE;
},
extend(subTypeDef, extendMember) {
const options = { ...subTypeDef.options || DEFAULT_OPTIONS$3 }, { marks, styles, lists, of, ...rest } = subTypeDef, childrenField = createChildrenField(marks, of), styleField = createStyleField(styles), listItemField = createListItemField(lists), markDefsField = {
name: "markDefs",
title: "Mark definitions",
type: "array",
of: marks?.annotations || DEFAULT_ANNOTATIONS
}, fields = [childrenField, styleField, listItemField, markDefsField, {
name: "level",
title: "Indentation",
type: "number"
}].concat(
subTypeDef.fields || []
), ownProps = { ...rest, options }, parsed = Object.assign(pick__default.default(BLOCK_CORE, INHERITED_FIELDS$1), ownProps, {
type: BLOCK_CORE
});
return lazyGetter(parsed, "fields", () => fields.map((fieldDef) => {
const { name, ...type } = fieldDef;
return {
name,
type: extendMember(type)
};
})), lazyGetter(parsed, "preview", createPreviewGetter(subTypeDef)), lazyGetter(
parsed,
resolve.OWN_PROPS_NAME,
() => ({
...ownProps,
fields: parsed.fields,
preview: parsed.preview
}),
{ enumerable: !1, writable: !1 }
), subtype(parsed);
function subtype(parent) {
return {
get() {
return parent;
},
extend: (extensionDef) => {
if (extensionDef.fields)
throw new Error('Cannot override `fields` of subtypes of "block"');
const subOwnProps = pick__default.default(extensionDef, INHERITED_FIELDS$1), current = Object.assign({}, parent, subOwnProps, {
type: parent
});
return hiddenGetter(current, resolve.OWN_PROPS_NAME, subOwnProps), subtype(current);
}
};
}
}
};
function ensureNormalStyle(styles) {
return styles.some((style) => style.value === "normal") ? styles : [BLOCK_STYLES.normal, ...styles];
}
function createStyleField(styles) {
return {
name: "style",
title: "Style",
type: "string",
options: {
list: ensureNormalStyle(styles || DEFAULT_BLOCK_STYLES)
}
};
}
function createListItemField(lists) {
return {
name: "listItem",
title: "List type",
type: "string",
options: {
list: lists || DEFAULT_LIST_TYPES
}
};
}
const DEFAULT_ANNOTATIONS = [DEFAULT_LINK_ANNOTATION];
function createChildrenField(marks, of = []) {
return {
name: "children",
title: "Content",
type: "array",
of: [
{
type: "span",
fields: [DEFAULT_TEXT_FIELD, DEFAULT_MARKS_FIELD],
annotations: marks && marks.annotations ? marks.annotations : DEFAULT_ANNOTATIONS,
decorators: marks && marks.decorators ? marks.decorators : DEFAULT_DECORATORS
},
...of.filter((memberType) => memberType.type !== "span")
]
};
}
const INHERITED_FIELDS = [
"type",
"name",
"title",
"jsonType",
"description",
"options",
"fieldsets",
"icon"
], SPAN_CORE = {
name: "span",
title: "Span",
type: null,
jsonType: "object"
}, MARKS_FIELD = {
name: "marks",
title: "Marks",
type: "array",
of: [{ type: "string" }]
}, TEXT_FIELD = {
name: "text",
title: "Text",
type: "string"
}, DEFAULT_OPTIONS$2 = {}, SpanType = {
get() {
return SPAN_CORE;
},
extend(subTypeDef, extendMember) {
const options = { ...subTypeDef.options || DEFAULT_OPTIONS$2 }, { annotations = [], marks = [] } = subTypeDef, fields = [MARKS_FIELD, TEXT_FIELD], ownProps = { ...subTypeDef, options }, parsed = Object.assign(pick__default.default(SPAN_CORE, INHERITED_FIELDS), ownProps, {
type: SPAN_CORE
});
return lazyGetter(parsed, "fields", () => fields.map((fieldDef) => {
const { name, ...type } = fieldDef;
return {
name,
type: extendMember(type)
};
})), lazyGetter(parsed, "annotations", () => annotations.map(extendMember)), lazyGetter(parsed, "marks", () => marks.map(extendMember)), lazyGetter(parsed, "preview", createPreviewGetter(subTypeDef)), lazyGetter(
parsed,
resolve.OWN_PROPS_NAME,
() => ({
...ownProps,
fields: parsed.fields,
annotations: parsed.annotations,
marks: parsed.marks,
preview: parsed.preview
}),
{ enumerable: !1, writable: !1 }
), subtype(parsed);
function subtype(parent) {
return {
get() {
return parent;
},
extend: (extensionDef) => {
if (extensionDef.fields)
throw new Error('Cannot override `fields` of subtypes of "span"');
const subOwnProps = pick__default.default(extensionDef, INHERITED_FIELDS), current = Object.assign({}, parent, subOwnProps, {
type: parent
});
return hiddenGetter(current, resolve.OWN_PROPS_NAME, subOwnProps), subtype(current);
}
};
}
}
};
var primitivePreview = {
prepare: (val) => ({ title: String(val) })
};
const OVERRIDABLE_FIELDS$d = [...resolve.DEFAULT_OVERRIDEABLE_FIELDS], BOOLEAN_CORE = {
name: "boolean",
title: "Boolean",
type: null,
jsonType: "boolean"
}, BooleanType = {
get() {
return BOOLEAN_CORE;
},
extend(subTypeDef) {
const ownProps = {
...subTypeDef,
preview: primitivePreview
}, parsed = Object.assign(pick__default.default(BOOLEAN_CORE, OVERRIDABLE_FIELDS$d), ownProps, {
type: BOOLEAN_CORE
});
return hiddenGetter(parsed, resolve.OWN_PROPS_NAME, ownProps), subtype(parsed);
function subtype(parent) {
return {
get() {
return parent;
},
extend: (extensionDef) => {
const subOwnProps = pick__default.default(extensionDef, OVERRIDABLE_FIELDS$d), current = Object.assign({}, parent, subOwnProps, {
type: parent
});
return hiddenGetter(current, resolve.OWN_PROPS_NAME, subOwnProps), subtype(current);
}
};
}
}
}, REF_FIELD$2 = {
name: "_ref",
title: "Referenced document ID",
type: "string"
}, WEAK_FIELD$2 = {
name: "_weak",
title: "Weak reference marker",
type: "boolean"
}, DATASET_FIELD = {
name: "_dataset",
title: "Target dataset",
type: "string"
}, PROJECT_ID_FIELD = {
name: "_projectId",
title: "Target project ID",
type: "string",
hidden: !0
}, REFERENCE_FIELDS$2 = [REF_FIELD$2, WEAK_FIELD$2, DATASET_FIELD, PROJECT_ID_FIELD], OVERRIDABLE_FIELDS$c = [...resolve.DEFAULT_OVERRIDEABLE_FIELDS], CROSS_DATASET_REFERENCE_CORE = {
name: "crossDatasetReference",
type: null,
jsonType: "object"
};
function humanize$2(arr, conjunction) {
const len = arr.length;
if (len === 1)
return arr[0];
const first = arr.slice(0, len - 1), last = arr[len - 1];
return `${first.join(", ")} ${conjunction} ${last}`;
}
function buildTitle$2(type) {
return !type.to || type.to.length === 0 ? "Cross dataset Reference" : `Cross dataset reference to ${humanize$2(
arrify__default.default(type.to).map((toType) => toType.title || capitalize__default.default(toType.type)),
"or"
).toLowerCase()}`;
}
const CrossDatasetReferenceType = {
get() {
return CROSS_DATASET_REFERENCE_CORE;
},
extend(subTypeDef, createMemberType) {
if (!subTypeDef.to)
throw new Error(
`Missing "to" field in cross dataset reference definition. Check the type ${subTypeDef.name}`
);
const parsed = Object.assign(
pick__default.default(CROSS_DATASET_REFERENCE_CORE, OVERRIDABLE_FIELDS$c),
subTypeDef,
{
type: CROSS_DATASET_REFERENCE_CORE
}
);
return lazyGetter(parsed, "fields", () => REFERENCE_FIELDS$2.map((fieldDef) => {
const { name, ...type } = fieldDef;
return {
name,
type: createMemberType(type)
};
})), lazyGetter(parsed, "to", () => arrify__default.default(subTypeDef.to).map((toType) => ({
...toType,
// eslint-disable-next-line camelcase
__experimental_search: resolve.resolveSearchConfigForBaseFieldPaths(toType)
}))), lazyGetter(parsed, "title", () => subTypeDef.title || buildTitle$2(parsed)), lazyGetter(
parsed,
resolve.OWN_PROPS_NAME,
() => ({
...subTypeDef,
fields: parsed.fields,
to: parsed.to,
title: parsed.title
}),
{ enumerable: !1, writable: !1 }
), subtype(parsed);
function subtype(parent) {
return {
get() {
return parent;
},
extend: (extensionDef) => {
if (extensionDef.of)
throw new Error('Cannot override `of` of subtypes of "reference"');
const ownProps = pick__default.default(extensionDef, OVERRIDABLE_FIELDS$c), current = Object.assign({}, parent, ownProps, {
type: parent
});
return hiddenGetter(current, resolve.OWN_PROPS_NAME, ownProps), subtype(current);
}
};
}
}
}, OVERRIDABLE_FIELDS$b = [...resolve.DEFAULT_OVERRIDEABLE_FIELDS], DATE_CORE = {
name: "date",
title: "Datetime",
type: null,
jsonType: "string"
}, DateType = {
get() {
return DATE_CORE;
},
extend(subTypeDef) {
const ownProps = {
...subTypeDef,
preview: primitivePreview
}, parsed = Object.assign(pick__default.default(DATE_CORE, OVERRIDABLE_FIELDS$b), ownProps, {
type: DATE_CORE
});
return hiddenGetter(parsed, resolve.OWN_PROPS_NAME, ownProps), subtype(parsed);
function subtype(parent) {
return {
get() {
return parent;
},
extend: (extensionDef) => {
const subOwnProps = pick__default.default(extensionDef, OVERRIDABLE_FIELDS$b), current = Object.assign({}, parent, subOwnProps, {
type: parent
});
return hiddenGetter(current, resolve.OWN_PROPS_NAME, subOwnProps), subtype(current);
}
};
}
}
}, OVERRIDABLE_FIELDS$a = [...resolve.DEFAULT_OVERRIDEABLE_FIELDS], DATETIME_CORE = {
name: "datetime",
title: "Datetime",
type: null,
jsonType: "string"
}, DateTimeType = {
get() {
return DATETIME_CORE;
},
extend(subTypeDef) {
const ownProps = {
...subTypeDef,
preview: primitivePreview
}, parsed = Object.assign(pick__default.default(DATETIME_CORE, OVERRIDABLE_FIELDS$a), ownProps, {
type: DATETIME_CORE
});
return hiddenGetter(parsed, resolve.OWN_PROPS_NAME, ownProps), subtype(parsed);
function subtype(parent) {
return {
get() {
return parent;
},
extend: (extensionDef) => {
const subOwnProps = pick__default.default(extensionDef, OVERRIDABLE_FIELDS$a), current = Object.assign({}, parent, subOwnProps, {
type: parent
});
return hiddenGetter(current, resolve.OWN_PROPS_NAME, subOwnProps), subtype(current);
}
};
}
}
}, CANDIDATES = ["title", "name", "label", "heading", "header", "caption", "description"], PRIMITIVES = ["string", "boolean", "number"], isPrimitive = (field) => PRIMITIVES.includes(field.type);
function guessOrderingConfig(objectTypeDef) {
let candidates = CANDIDATES.filter(
(candidate) => objectTypeDef.fields.some((field) => isPrimitive(field) && field.name === candidate)
);
return candidates.length === 0 && (candidates = objectTypeDef.fields.filter(isPrimitive).map((field) => field.name)), candidates.map(
(name) => ({
name,
i18n: {
title: { key: `default-orderings.${name}`, ns: "studio" }
},
title: capitalize__default.default(startCase__default.default(name)),
by: [{ field: name, direction: "asc" }]
})
);
}
function normalizeSearchConfigs(configs) {
if (!Array.isArray(configs))
throw new Error(
"The search config of a document type must be an array of search config objects"
);
return configs.map((conf) => {
if (conf === "defaults")
return conf;
if (!isPlainObject__default.default(conf))
throw new Error("Search config must be an object of {path: string, weight: number}");
return {
weight: "weight" in conf ? conf.weight : 1,
path: toPath__default.default(conf.path),
mapWith: typeof conf.mapWith == "string" ? conf.mapWith : void 0
};
});
}
const OVERRIDABLE_FIELDS$9 = [
...resolve.DEFAULT_OVERRIDEABLE_FIELDS,
"orderings",
"__experimental_search",
"blockEditor",
"icon"
], ObjectType = {
get() {
return {
name: "object",
title: "Object",
type: null,
jsonType: "object"
};
},
extend(rawSubTypeDef, createMemberType) {
const subTypeDef = { fields: [], ...rawSubTypeDef }, options = { ...subTypeDef.options }, ownProps = {
...subTypeDef,
title: subTypeDef.title || (subTypeDef.name ? startCase__default.default(subTypeDef.name) : "Object"),
options,
orderings: subTypeDef.orderings || guessOrderingConfig(subTypeDef),
fields: subTypeDef.fields.map((fieldDef) => {
const { name, fieldset, group, ...rest } = fieldDef;
return lazyGetter({
name,
group,
fieldset
}, "type", () => createMemberType({
...rest,
title: fieldDef.title || startCase__default.default(name)
}));
})
}, parsed = Object.assign(pick__default.default(this.get(), OVERRIDABLE_FIELDS$9), ownProps, {
type: this.get()
});
return lazyGetter(parsed, "fieldsets", () => createFieldsets(subTypeDef, parsed.fields)), lazyGetter(parsed, "groups", () => createFieldsGroups(subTypeDef, parsed.fields)), lazyGetter(parsed, "preview", createPreviewGetter(subTypeDef)), lazyGetter(
parsed,
resolve.OWN_PROPS_NAME,
() => ({
...ownProps,
preview: parsed.preview
}),
{ enumerable: !1, writable: !1 }
), lazyGetter(
parsed,
"__experimental_search",
() => {
const userProvidedSearchConfig = subTypeDef.__experimental_search ? normalizeSearchConfigs(subTypeDef.__experimental_search) : null;
return userProvidedSearchConfig ? userProvidedSearchConfig.map(
(entry) => entry === "defaults" ? normalizeSearchConfigs(subTypeDef) : entry
) : resolve.resolveSearchConfig(parsed);
},
{
enumerable: !1
}
), subtype(parsed);
function subtype(parent) {
return {
get() {
return parent;
},
extend: (extensionDef) => {
if (extensionDef.fields)
throw new Error('Cannot override `fields` of subtypes of "object"');
const subOwnProps = pick__default.default(extensionDef, OVERRIDABLE_FIELDS$9);
subOwnProps.title = extensionDef.title || subTypeDef.title || (subTypeDef.name ? startCase__default.default(subTypeDef.name) : "Object");
const current = Object.assign({}, parent, pick__default.default(extensionDef, OVERRIDABLE_FIELDS$9), {
type: parent
});
return lazyGetter(current, "__experimental_search", () => parent.__experimental_search), hiddenGetter(current, resolve.OWN_PROPS_NAME, subOwnProps), subtype(current);
}
};
}
}
};
function createFieldsets(typeDef, fields) {
const fieldsetsByName = {};
for (const fieldset of typeDef.fieldsets || []) {
if (fieldsetsByName[fieldset.name])
throw new Error(
`Duplicate fieldset name "${fieldset.name}" found for type '${typeDef.title ? typeDef.title : startCase__default.default(typeDef.name)}'`
);
fieldsetsByName[fieldset.name] = { title: startCase__default.default(fieldset.name), ...fieldset, fields: [] };
}
const fieldsets = /* @__PURE__ */ new Set();
for (const field of fields) {
if (!field.fieldset) {
fieldsets.add({ single: !0, field });
continue;
}
const fieldset = fieldsetsByName[field.fieldset];
if (!fieldset)
throw new Error(
`Fieldset '${field.fieldset}' is not defined in schema for type '${typeDef.name}'`
);
fieldset.fields.push(field), fieldsets.add(fieldset);
}
return Array.from(fieldsets);
}
function createFieldsGroups(typeDef, fields) {
const groupsByName = {};
let numDefaultGroups = 0;
for (const group of typeDef.groups || []) {
if (groupsByName[group.name])
throw new Error(
`Duplicate group name "${group.name}" found for type '${typeDef.title ? typeDef.title : startCase__default.default(typeDef.name)}'`
);
if (groupsByName[group.name] = { title: startCase__default.default(group.name), ...group, fields: [] }, group.default && ++numDefaultGroups > 1)
throw new Error(
`More than one field group defined as default for type '${typeDef.title ? typeDef.title : startCase__default.default(typeDef.name)}' - only 1 is supported`
);
}
return fields.forEach((field) => {
const fieldGroupNames = castArray__default.default(field.group || []);
fieldGroupNames.length !== 0 && fieldGroupNames.forEach((fieldGroupName) => {
const currentGroup = groupsByName[fieldGroupName];
if (!currentGroup)
throw new Error(
`Field group '${fieldGroupName}' is not defined in schema for type '${typeDef.title ? typeDef.name : startCase__default.default(typeDef.name)}'`
);
currentGroup.fields.push(field);
});
}), flatMap__default.default(groupsByName).filter((group) => group.fields.length > 0);
}
const DOCUMENT_CORE = {
name: "document",
title: "Document",
type: null,
jsonType: "object"
}, DocumentType = {
get() {
return DOCUMENT_CORE;
},
extend: ObjectType.extend
}, OVERRIDABLE_FIELDS$8 = [...resolve.DEFAULT_OVERRIDEABLE_FIELDS], EMAIL_CORE = {
name: "email",
title: "Email",
type: null,
jsonType: "string"
};
lazyGetter(
EMAIL_CORE,
resolve.OWN_PROPS_NAME,
() => ({
...EMAIL_CORE,
validation: (Rule) => Rule.email()
}),
{ enumerable: !1 }
);
const EmailType = {
get() {
return EMAIL_CORE;
},
extend(subTypeDef) {
const ownProps = {
...subTypeDef,
preview: primitivePreview
}, parsed = Object.assign(pick__default.default(EMAIL_CORE, OVERRIDABLE_FIELDS$8), ownProps, {
type: EMAIL_CORE
});
return hiddenGetter(parsed, resolve.OWN_PROPS_NAME, ownProps), subtype(parsed);
function subtype(parent) {
return {
get() {
return parent;
},
extend: (extensionDef) => {
const subOwnProps = pick__default.default(extensionDef, OVERRIDABLE_FIELDS$8), current = Object.assign({}, parent, subOwnProps, {
type: parent
});
return hiddenGetter(current, resolve.OWN_PROPS_NAME, subOwnProps), subtype(current);
}
};
}
}
}, ASSET_FIELD$1 = {
name: "asset",
type: "reference",
to: { type: "sanity.fileAsset" }
}, MEDIA_LIBRARY_ASSET_FIELD$1 = {
name: "media",
type: "globalDocumentReference",
hidden: !0,
to: [{ type: "sanity.asset" }]
}, OVERRIDABLE_FIELDS$7 = [...resolve.DEFAULT_OVERRIDEABLE_FIELDS], FILE_CORE = {
name: "file",
title: "File",
type: null,
jsonType: "object"
}, DEFAULT_OPTIONS$1 = {
accept: ""
}, FileType = {
get() {
return FILE_CORE;
},
extend(rawSubTypeDef, createMemberType) {
const options = { ...rawSubTypeDef.options || DEFAULT_OPTIONS$1 }, fields = [ASSET_FIELD$1, MEDIA_LIBRARY_ASSET_FIELD$1, ...rawSubTypeDef.fields || []], subTypeDef = { ...rawSubTypeDef, fields }, parsed = Object.assign(pick__default.default(FILE_CORE, OVERRIDABLE_FIELDS$7), subTypeDef, {
type: FILE_CORE,
title: subTypeDef.title || (subTypeDef.name ? startCase__default.default(subTypeDef.name) : FILE_CORE.title),
options,
fields: subTypeDef.fields.map((fieldDef) => {
const { name, fieldset, ...rest } = fieldDef, compiledField = {
name,
fieldset,
isCustomized: !!rawSubTypeDef.fields
};
return lazyGetter(compiledField, "type", () => createMemberType({
...rest,
title: fieldDef.title || startCase__default.default(name)
}));
})
});
return lazyGetter(parsed, "fieldsets", () => createFieldsets(subTypeDef, parsed.fields)), lazyGetter(parsed, "preview", createPreviewGetter(Object.assign({}, subTypeDef, { fields }))), lazyGetter(
parsed,
resolve.OWN_PROPS_NAME,
() => ({
...subTypeDef,
options,
fields: parsed.fields,
title: parsed.title,
fieldsets: parsed.fieldsets,
preview: parsed.preview
}),
{ enumerable: !1, writable: !1 }
), subtype(parsed);
function subtype(parent) {
return {
get() {
return parent;
},
extend: (extensionDef) => {
if (extensionDef.fields)
throw new Error('Cannot override `fields` of subtypes of "file"');
const ownProps = pick__default.default(extensionDef, OVERRIDABLE_FIELDS$7), current = Object.assign({}, parent, ownProps, {
type: parent
});
return hiddenGetter(current, resolve.OWN_PROPS_NAME, ownProps), subtype(current);
}
};
}
}
}, REF_FIELD$1 = {
name: "_ref",
title: "Referenced document ID",
type: "string"
}, WEAK_FIELD$1 = {
name: "_weak",
title: "Weak reference",
type: "boolean"
}, REFERENCE_FIELDS$1 = [REF_FIELD$1, WEAK_FIELD$1], OVERRIDABLE_FIELDS$6 = [...resolve.DEFAULT_OVERRIDEABLE_FIELDS], GLOBAL_DOCUMENT_REFERENCE_CORE = {
name: "globalDocumentReference",
title: "Global Document Reference",
type: null,
jsonType: "object"
};
function humanize$1(arr, conjunction) {
const len = arr.length;
if (len === 1)
return arr[0];
const first = arr.slice(0, len - 1), last = arr[len - 1];
return `${first.join(", ")} ${conjunction} ${last}`;
}
function buildTitle$1(type) {
return !type.to || type.to.length === 0 ? "Global Document Reference" : `Global Document Reference to ${humanize$1(
arrify__default.default(type.to).map((toType) => toType.title),
"or"
).toLowerCase()}`;
}
const GlobalDocumentReferenceType = {
get() {
return GLOBAL_DOCUMENT_REFERENCE_CORE;
},
extend(subTypeDef, createMemberType) {
if (!subTypeDef.to)
throw new Error(
`Missing "to" field in global document reference definition. Check the type ${subTypeDef.name}`
);
const parsed = Object.assign(
pick__default.default(GLOBAL_DOCUMENT_REFERENCE_CORE, OVERRIDABLE_FIELDS$6),
subTypeDef,
{
type: GLOBAL_DOCUMENT_REFERENCE_CORE
}
);
return lazyGetter(parsed, "fields", () => REFERENCE_FIELDS$1.map((fieldDef) => {
const { name, ...type } = fieldDef;
return {
name,
type: createMemberType(type)
};
})), lazyGetter(parsed, "to", () => arrify__default.default(subTypeDef.to).map((toType) => ({
...toType
}))), lazyGetter(parsed, "title", () => subTypeDef.title || buildTitle$1(parsed)), lazyGetter(
parsed,
resolve.OWN_PROPS_NAME,
() => ({
...subTypeDef,
fields: parsed.fields,
to: parsed.to,
title: parsed.title
}),
{ enumerable: !1, writable: !1 }
), subtype(parsed);
function subtype(parent) {
return {
get() {
return parent;
},
extend: (extensionDef) => {
if (extensionDef.of)
throw new Error('Cannot override `of` of subtypes of "globalDocumentReference"');
const ownProps = pick__default.default(extensionDef, OVERRIDABLE_FIELDS$6), current = Object.assign({}, parent, ownProps, {
type: parent
});
return hiddenGetter(current, resolve.OWN_PROPS_NAME, ownProps), subtype(current);
}
};
}
}
}, ASSET_FIELD = {
name: "asset",
type: "reference",
to: [{ type: "sanity.imageAsset" }]
}, HOTSPOT_FIELD = {
name: "hotspot",
type: "sanity.imageHotspot"
}, CROP_FIELD = {
name: "crop",
type: "sanity.imageCrop"
}, MEDIA_LIBRARY_ASSET_FIELD = {
name: "media",
type: "globalDocumentReference",
hidden: !0,
to: [{ type: "sanity.asset" }]
}, OVERRIDABLE_FIELDS$5 = [...resolve.DEFAULT_OVERRIDEABLE_FIELDS], IMAGE_CORE = {
name: "image",
title: "Image",
type: null,
jsonType: "object"
}, DEFAULT_OPTIONS = {}, ImageType = {
get() {
return IMAGE_CORE;
},
extend(rawSubTypeDef, createMemberType) {
const options = { ...rawSubTypeDef.options || DEFAULT_OPTIONS };
let hotspotFields = [HOTSPOT_FIELD, CROP_FIELD];
options.hotspot || (hotspotFields = hotspotFields.map((field) => ({ ...field, hidden: !0 })));
const fields = [
ASSET_FIELD,
MEDIA_LIBRARY_ASSET_FIELD,
...hotspotFields,
...rawSubTypeDef.fields || []
], subTypeDef = { ...rawSubTypeDef, fields }, parsed = Object.assign(pick__default.default(this.get(), OVERRIDABLE_FIELDS$5), subTypeDef, {
type: IMAGE_CORE,
title: subTypeDef.title || (subTypeDef.name ? startCase__default.default(subTypeDef.name) : IMAGE_CORE.title),
options,
fields: subTypeDef.fields.map((fieldDef) => {
const { name, fieldset, ...rest } = fieldDef, compiledField = {
name,
fieldset,
isCustomized: !!rawSubTypeDef.fields
};
return lazyGetter(compiledField, "type", () => createMemberType({
...rest,
title: fieldDef.title || startCase__default.default(name)
}));
})
});
return lazyGetter(parsed, "fieldsets", () => createFieldsets(subTypeDef, parsed.fields)), lazyGetter(parsed, "preview", createPreviewGetter(Object.assign({}, subTypeDef, { fields }))), lazyGetter(
parsed,
resolve.OWN_PROPS_NAME,
() => ({
...subTypeDef,
options,
fields: parsed.fields,
title: parsed.title,
fieldsets: parsed.fieldsets,
preview: parsed.preview
}),
{ enumerable: !1, writable: !1 }
), subtype(parsed);
function subtype(parent) {
return {
get() {
return parent;
},
extend: (extensionDef) => {
if (extensionDef.fields)
throw new Error('Cannot override `fields` of subtypes of "image"');
const ownProps = pick__default.default(extensionDef, OVERRIDABLE_FIELDS$5), current = Object.assign({}, parent, ownProps, {
type: parent
});
return hiddenGetter(current, resolve.OWN_PROPS_NAME, ownProps), subtype(current);
}
};
}
}
}, OVERRIDABLE_FIELDS$4 = [...resolve.DEFAULT_OVERRIDEABLE_FIELDS], NUMBER_CORE = {
name: "number",
title: "Number",
type: null,
jsonType: "number"
}, NumberType = {
get() {
return NUMBER_CORE;
},
extend(subTypeDef) {
const ownProps = {
...subTypeDef,
preview: primitivePreview
}, parsed = Object.assign(pick__default.default(NUMBER_CORE, OVERRIDABLE_FIELDS$4), ownProps, {
type: NUMBER_CORE
});
return hiddenGetter(parsed, resolve.OWN_PROPS_NAME, ownProps), subtype(parsed);
function subtype(parent) {
return {
get() {
return parent;
},
extend: (extensionDef) => {
const subOwnProps = pick__default.default(extensionDef, OVERRIDABLE_FIELDS$4), current = Object.assign({}, parent, subOwnProps, {
type: parent
});
return hiddenGetter(current, resolve.OWN_PROPS_NAME, subOwnProps), subtype(current);
}
};
}
}
}, REF_FIELD = {
name: "_ref",
title: "Referenced document ID",
type: "string"
}, WEAK_FIELD = {
name: "_weak",
title: "Weak reference",
type: "boolean"
}, REFERENCE_FIELDS = [REF_FIELD, WEAK_FIELD], OVERRIDABLE_FIELDS$3 = [...resolve.DEFAULT_OVERRIDEABLE_FIELDS], REFERENCE_CORE = {
name: "reference",
title: "Reference",
type: null,
jsonType: "object"
};
function humanize(arr, conjunction) {
const len = arr.length;
if (len === 1)
return arr[0];
const first = arr.slice(0, len - 1), last = arr[len - 1];
return `${first.join(", ")} ${conjunction} ${last}`;
}
function buildTitle(type) {
return !type.to || type.to.length === 0 ? "Reference" : `Reference to ${humanize(
arrify__default.default(type.to).map((toType) => toType.title),
"or"
).toLowerCase()}`;
}
const ReferenceType = {
get() {
return REFERENCE_CORE;
},
extend(subTypeDef, createMemberType) {
if (!subTypeDef.to)
throw new Error(
`Missing "to" field in reference definition. Check the type ${subTypeDef.name}`
);
const parsed = Object.assign(pick__default.default(REFERENCE_CORE, OVERRIDABLE_FIELDS$3), subTypeDef, {
type: REFERENCE_CORE
});
return lazyGetter(parsed, "fields", () => REFERENCE_FIELDS.map((fieldDef) => {
const { name, ...type } = fieldDef;
return {
name,
type: createMemberType(type)
};
})), lazyGetter(parsed, "fieldsets", () => createFieldsets(subTypeDef, parsed.fields)), lazyGetter(parsed, "to", () => arrify__default.default(subTypeDef.to).map((toType) => createMemberType(toType))), lazyGetter(parsed, "title", () => subTypeDef.title || buildTitle(parsed)), lazyGetter(
parsed,
resolve.OWN_PROPS_NAME,
() => ({
...subTypeDef,
fields: parsed.fields,
fieldsets: parsed.fieldsets,
to: parsed.to,
title: parsed.title
}),
{ enumerable: !1, writable: !1 }
), subtype(parsed);
function subtype(parent) {
return {
get() {
return parent;
},
extend: (extensionDef) => {
if (extensionDef.of)
throw new Error('Cannot override `of` of subtypes of "reference"');
const ownProps = pick__default.default(extensionDef, OVERRIDABLE_FIELDS$3), current = Object.assign({}, parent, ownProps, {
type: parent
});
return hiddenGetter(current, resolve.OWN_PROPS_NAME, ownProps), subtype(current);
}
};
}
}
}, OVERRIDABLE_FIELDS$2 = [...resolve.DEFAULT_OVERRIDEABLE_FIELDS], STRING_CORE = {
name: "string",
title: "String",
type: null,
jsonType: "string"
}, StringType = {
get() {
return STRING_CORE;
},
extend(subTypeDef) {
const ownProps = {
...subTypeDef,
preview: primitivePreview
}, parsed = Object.assign(pick__default.default(STRING_CORE, OVERRIDABLE_FIELDS$2), ownProps, {
type: STRING_CORE
});
return hiddenGetter(parsed, resolve.OWN_PROPS_NAME, ownProps), subtype(parsed);
function subtype(parent) {
return {
get() {
return parent;
},
extend: (extensionDef) => {
const subOwnProps = pick__default.default(extensionDef, OVERRIDABLE_FIELDS$2), current = Object.assign({}, parent, subOwnProps, {
type: parent
});
return hiddenGetter(current, resolve.OWN_PROPS_NAME, subOwnProps), subtype(current);
}
};
}
}
}, OVERRIDABLE_FIELDS$1 = [...resolve.DEFAULT_OVERRIDEABLE_FIELDS, "rows"], TEXT_CORE = {
name: "text",
title: "Text",
type: null,
jsonType: "string"
}, TextType = {
get() {
return TEXT_CORE;
},
extend(subTypeDef) {
const ownProps = {
...subTypeDef,
preview: primitivePreview
}, parsed = Object.assign(pick__default.default(TEXT_CORE, OVERRIDABLE_FIELDS$1), ownProps, {
type: TEXT_CORE
});
return hiddenGetter(parsed, resolve.OWN_PROPS_NAME, ownProps), subtype(parsed);
function subtype(parent) {
return {
get() {
return parent;
},
extend: (extensionDef) => {
const subOwnProps = pick__default.default(extensionDef, OVERRIDABLE_FIELDS$1), current = Object.assign({}, parent, subOwnProps, {
type: parent
});
return hiddenGetter(current, resolve.OWN_PROPS_NAME, subOwnProps), subtype(current);
}
};
}
}
}, OVERRIDABLE_FIELDS = [...resolve.DEFAULT_OVERRIDEABLE_FIELDS], URL_CORE = {
name: "url",
title: "Url",
type: null,
jsonType: "string"
}, UrlType = {
get() {
return URL_CORE;
},
extend(subTypeDef) {
const ownProps = {
...subTypeDef,
preview: primitivePreview
}, parsed = Object.assign(pick__default.default(URL_CORE, OVERRIDABLE_FIELDS), ownProps, {
type: URL_CORE
});
return hiddenGetter(parsed, resolve.OWN_PROPS_NAME, ownProps), subtype(parsed);
function subtype(parent) {
return {
get() {
return parent;
},
extend: (extensionDef) => {
const subOwnownProps = pick__default.default(extensionDef, OVERRIDABLE_FIELDS), current = Object.assign({}, parent, subOwnownProps, {
type: parent
});
return hiddenGetter(current, resolve.OWN_PROPS_NAME, subOwnownProps), subtype(current);
}
};
}
}
};
var types = /* @__PURE__ */ Object.freeze({
__proto__: null,
any: AnyType,
array: ArrayType,
block: BlockType,
boolean: BooleanType,
crossDatasetReference: CrossDatasetReferenceType,
date: DateType,
datetime: DateTimeType,
document: DocumentType,
email: EmailType,
file: FileType,
globalDocumentReference: GlobalDocumentReferenceType,
image: ImageType,
number: NumberType,
object: ObjectType,
reference: ReferenceType,
span: SpanType,
string: StringType,
text: TextType,
url: UrlType
});
function compileRegistry(schemaDef) {
const registry = /* @__PURE__ */ Object.create(null);
let localTypeNames;
schemaDef.parent ? (Object.assign(registry, schemaDef.parent._registry), localTypeNames = []) : (Object.assign(registry, types), localTypeNames = Object.keys(types));
const defsByName = schemaDef.types.reduce((acc, def) => {
if (acc[def.name])
throw new Error(`Duplicate type name added to schema: ${def.name}`);
return acc[def.name] = def, acc;
}, {});
return schemaDef.types.forEach(add), {
registry,
localTypeNames
};
function ensure(typeName) {
if (!registry[typeName]) {
if (!defsByName[typeName])
throw new Error(`Unknown type: ${typeName}`);
add(defsByName[typeName]);
}
}
function extendMember(memberDef) {
return ensure(memberDef.type), registry[memberDef.type].extend(memberDef, extendMember).get();
}
function add(typeDef) {
ensure(typeDef.type), !registry[typeDef.name] && (localTypeNames.push(typeDef.name), registry[typeDef.name] = registry[typeDef.type].extend(typeDef, extendMember));
}
}
let Schema$1 = class Schema {
_original;
_registry;
#localTypeNames;
static compile(schemaDef) {
return new Schema(schemaDef);
}
constructor(schemaDef) {
this._original = schemaDef;
const { registry, localTypeNames } = compileRegistry(schemaDef);
this._registry = registry, this.#localTypeNames = localTypeNames;
}
get name() {
return this._original.name;
}
/**
* Returns the parent schema.
*/
get parent() {
return this._original.parent;
}
get(name) {
return this._registry[name] && this._registry[name].get();
}
has(name) {
return name in this._registry;
}
getTypeNames() {
return Object.keys(this._registry);
}
getLocalTypeNames() {
return this.#localTypeNames;
}
};
class DeprecatedDefaultSchema extends Schema$1 {
static compile(schemaDef) {
return new DeprecatedDefaultSchema(schemaDef);
}
constructor(schemaDef) {
super(schemaDef);
const stack = new Error(
'The default export of `@sanity/schema` is deprecated. Use `import {Schema} from "@sanity/schema"` instead.'
).stack.replace(/^Error/, "Warning");
console.warn(stack);
}
}
const Schema2 = Schema$1;
exports.Schema = Schema2;
exports.default = DeprecatedDefaultSchema;
//# sourceMappingURL=index.js.map