@sanity/schema 5.0.0-next.0-9b570ece82-202507150640 → 5.0.0-next.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Rule.js","sources":["../../src/legacy/types/constants.ts","../../src/legacy/types/utils.ts","../../src/legacy/types/any.ts","../../src/legacy/types/array.ts","../../src/legacy/preview/deprecationUtils.ts","../../src/legacy/preview/JSONStringifyHuman.ts","../../src/legacy/preview/fallbackPrepare.ts","../../src/legacy/preview/portableText.ts","../../src/legacy/preview/guessPreviewConfig.ts","../../src/legacy/preview/createPreviewGetter.ts","../../src/legacy/types/blocks/defaults.ts","../../src/legacy/types/blocks/block.ts","../../src/legacy/types/blocks/span.ts","../../src/legacy/preview/primitivePreview.ts","../../src/legacy/types/boolean.ts","../../src/legacy/searchConfig/resolve.ts","../../src/legacy/types/crossDatasetReference.ts","../../src/legacy/types/date.ts","../../src/legacy/types/datetime.ts","../../src/legacy/ordering/guessOrderingConfig.ts","../../src/legacy/searchConfig/normalize.ts","../../src/legacy/types/object.ts","../../src/legacy/types/document.ts","../../src/legacy/types/email.ts","../../src/legacy/types/file.ts","../../src/legacy/types/globalDocumentReference.ts","../../src/legacy/types/image/fieldDefs.ts","../../src/legacy/types/image.ts","../../src/legacy/types/number.ts","../../src/legacy/types/reference.ts","../../src/legacy/types/string.ts","../../src/legacy/types/text.ts","../../src/legacy/types/url.ts","../../src/legacy/Schema.ts","../../src/legacy/Rule.ts"],"sourcesContent":["export const DEFAULT_OVERRIDEABLE_FIELDS = [\n 'jsonType',\n 'type',\n 'name',\n 'title',\n 'description',\n 'options',\n 'fieldsets',\n 'validation',\n 'readOnly',\n 'hidden',\n 'components',\n 'diffComponent',\n 'initialValue',\n 'deprecated',\n]\n\n/**\n * The property name used for each type where we store the \"own props\" of the type.\n * This is the set of properties which are _not_ inherited, but explicitly defined on this type.\n */\nexport const OWN_PROPS_NAME = '_internal_ownProps'\n\nexport const ALL_FIELDS_GROUP_NAME = 'all-fields'\n","interface Config {\n enumerable?: boolean\n writable?: boolean\n}\nexport function lazyGetter(target: any, key: any, getter: any, config: Config = {}) {\n Object.defineProperty(target, key, {\n configurable: true,\n enumerable: config.enumerable !== false,\n get() {\n const val = getter()\n Object.defineProperty(target, key, {\n value: val,\n writable: Boolean(config.writable),\n configurable: false,\n })\n return val\n },\n })\n return target\n}\n\nexport function hiddenGetter(target: any, key: string, value: unknown) {\n Object.defineProperty(target, key, {\n enumerable: false,\n writable: false,\n configurable: false,\n value,\n })\n}\n\n//\n// const o = lazyGetter({}, 'expensive', function() {\n// console.log('doing expensive calculations')\n// return 'RESULT OF EXPENSIVE'\n// })\n//\n// console.log(o.expensive)\n// console.log(o.expensive)\n// console.log(o.expensive)\n","import {omit, pick} from 'lodash'\n\nimport {DEFAULT_OVERRIDEABLE_FIELDS, OWN_PROPS_NAME} from './constants'\nimport {hiddenGetter} from './utils'\n\nconst OVERRIDABLE_FIELDS = [...DEFAULT_OVERRIDEABLE_FIELDS]\n\nconst ANY_CORE = {\n name: 'any',\n type: null,\n jsonType: 'any',\n}\n\nexport const AnyType = {\n get() {\n return ANY_CORE\n },\n extend(subTypeDef: any, extendMember: any) {\n const ownProps = {\n ...subTypeDef,\n of: subTypeDef.of.map((fieldDef: any) => {\n return {\n name: fieldDef.name,\n type: extendMember(omit(fieldDef, 'name')),\n }\n }),\n }\n\n const parsed = Object.assign(pick(ANY_CORE, OVERRIDABLE_FIELDS), ownProps, {\n type: ANY_CORE,\n })\n\n hiddenGetter(parsed, OWN_PROPS_NAME, ownProps)\n\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n if (extensionDef.of) {\n throw new Error('Cannot override `of` property of subtypes of \"array\"')\n }\n const subOwnProps = pick(extensionDef, OVERRIDABLE_FIELDS)\n const current = Object.assign({}, parent, subOwnProps, {\n type: parent,\n })\n hiddenGetter(current, OWN_PROPS_NAME, subOwnProps)\n return subtype(current)\n },\n }\n }\n },\n}\n","import {pick} from 'lodash'\n\nimport {DEFAULT_OVERRIDEABLE_FIELDS, OWN_PROPS_NAME} from './constants'\nimport {hiddenGetter, lazyGetter} from './utils'\n\nconst OVERRIDABLE_FIELDS = [...DEFAULT_OVERRIDEABLE_FIELDS]\n\nconst ARRAY_CORE = {\n name: 'array',\n type: null,\n jsonType: 'array',\n of: [],\n}\n\nexport const ArrayType = {\n get() {\n return ARRAY_CORE\n },\n extend(subTypeDef: any, createMemberType: any) {\n const parsed = Object.assign(pick(ARRAY_CORE, OVERRIDABLE_FIELDS), subTypeDef, {\n type: ARRAY_CORE,\n })\n lazyGetter(parsed, 'of', () => {\n return subTypeDef.of.map((ofTypeDef: any) => createMemberType.cached(ofTypeDef))\n })\n lazyGetter(parsed, OWN_PROPS_NAME, () => ({...subTypeDef, of: parsed.of}), {\n enumerable: false,\n writable: false,\n })\n\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n if (extensionDef.of) {\n throw new Error('Cannot override `of` property of subtypes of \"array\"')\n }\n const ownProps = pick(extensionDef, OVERRIDABLE_FIELDS)\n const current = Object.assign({}, parent, ownProps, {\n type: parent,\n })\n hiddenGetter(current, OWN_PROPS_NAME, ownProps)\n return subtype(current)\n },\n }\n }\n },\n}\n","export function warnIfPreviewOnOptions(type: any) {\n if (type.options && type.options.preview) {\n console.warn(`Heads up! The preview config is no longer defined on \"options\", but instead on the type/field itself.\nPlease move {options: {preview: ...}} to {..., preview: ...} on the type/field definition of \"${type.name}\".\n`)\n }\n}\n\nexport function warnIfPreviewHasFields(type: any) {\n const preview = type.preview || (type.options || {}).preview\n if (preview && 'fields' in preview) {\n console.warn(`Heads up! \"preview.fields\" should be renamed to \"preview.select\". Please update the preview config for \"${type.name}\".\n`)\n }\n}\n","import {pick} from 'lodash'\n\nfunction isEmpty(object: any) {\n for (const key in object) {\n if (object.hasOwnProperty(key)) {\n return false\n }\n }\n return true\n}\n\nfunction _stringify(value: any, options: any, depth: any): any {\n if (depth > options.maxDepth) {\n return '...'\n }\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return '[empty]'\n }\n const capLength = Math.max(value.length - options.maxBreadth)\n const asString: any = value\n .slice(0, options.maxBreadth)\n .map((item, index) => _stringify(item, options, depth + 1))\n .concat(capLength > 0 ? `…+${capLength}` : [])\n .join(', ')\n\n return depth === 0 ? asString : `[${asString}]`\n }\n if (typeof value === 'object' && value !== null) {\n const keys = Object.keys(value).filter(\n (key) => !options.ignoreKeys.includes(key) && typeof value[key] !== 'undefined',\n )\n\n if (isEmpty(pick(value, keys))) {\n return '{empty}'\n }\n\n const asString = keys\n .slice(0, options.maxBreadth)\n .map((key) => `${key}: ${_stringify(value[key], options, depth + 1)}`)\n .join(', ')\n\n return depth === 0 ? asString : `{${asString}}`\n }\n const asString = String(value)\n return asString === '' ? '\"\"' : asString\n}\n\nexport default function stringify(\n value: any,\n options: {maxDepth?: number; maxBreadth?: number; ignoreKeys?: string[]} = {},\n) {\n const opts = {\n maxDepth: 'maxDepth' in options ? options.maxDepth : 2,\n maxBreadth: 'maxBreadth' in options ? options.maxBreadth : 2,\n ignoreKeys: 'ignoreKeys' in options ? options.ignoreKeys : [],\n }\n return _stringify(value, opts, 0)\n}\n","import {pick} from 'lodash'\n\nimport stringify from './JSONStringifyHuman'\n\nconst OPTIONS = {\n maxEntries: 2,\n maxDepth: 2,\n maxBreadth: 2,\n ignoreKeys: ['_id', '_type', '_key', '_ref'],\n}\n\nexport function createFallbackPrepare(fieldNames: any) {\n return (value: any) => ({\n title: stringify(pick(value, fieldNames), OPTIONS),\n })\n}\n","type FieldDef = {\n type: string\n name: string\n of?: {type: string}[]\n}\n\nexport function isBlockField(field: FieldDef): boolean {\n return (\n (field.type === 'array' && field.of && field.of.some((member) => member.type === 'block')) ||\n false\n )\n}\n","import arrify from 'arrify'\nimport {isUndefined, omitBy} from 'lodash'\n\nimport {createFallbackPrepare} from './fallbackPrepare'\nimport {isBlockField} from './portableText'\n\nconst TITLE_CANDIDATES = ['title', 'name', 'label', 'heading', 'header', 'caption']\nconst DESCRIPTION_CANDIDATES = ['description', ...TITLE_CANDIDATES]\n\nfunction fieldHasReferenceTo(fieldDef: any, refType: any) {\n return arrify(fieldDef.to || []).some((memberTypeDef: any) => memberTypeDef.type === refType)\n}\n\nfunction isImageAssetField(fieldDef: any) {\n return fieldHasReferenceTo(fieldDef, 'sanity.imageAsset')\n}\n\nfunction resolveImageAssetPath(typeDef: any) {\n const fields = typeDef.fields || []\n const imageAssetField = fields.find(isImageAssetField)\n if (imageAssetField) {\n return imageAssetField.name\n }\n const fieldWithImageAsset = fields.find((fieldDef: any) =>\n (fieldDef.fields || []).some(isImageAssetField),\n )\n\n return fieldWithImageAsset ? `${fieldWithImageAsset.name}.asset` : undefined\n}\n\nfunction isFileAssetField(fieldDef: any) {\n return fieldHasReferenceTo(fieldDef, 'sanity.fileAsset')\n}\n\nfunction resolveFileAssetPath(typeDef: any) {\n const fields = typeDef.fields || []\n const assetField = fields.find(isFileAssetField)\n if (assetField) {\n return assetField.name\n }\n const fieldWithFileAsset = fields.find((fieldDef: any) =>\n (fieldDef.fields || []).some(isFileAssetField),\n )\n return fieldWithFileAsset ? `${fieldWithFileAsset.name}.asset` : undefined\n}\n\nexport default function guessPreviewFields(rawObjectTypeDef: any) {\n const objectTypeDef = {fields: [], ...rawObjectTypeDef}\n\n const stringFieldNames = objectTypeDef.fields\n .filter((field: any) => field.type === 'string')\n .map((field: any) => field.name)\n\n const blockFieldNames = objectTypeDef.fields.filter(isBlockField).map((field: any) => field.name)\n\n // Check if we have fields with names that is listed in candidate fields\n let titleField = TITLE_CANDIDATES.find(\n (candidate) => stringFieldNames.includes(candidate) || blockFieldNames.includes(candidate),\n )\n\n let descField = DESCRIPTION_CANDIDATES.find(\n (candidate) =>\n candidate !== titleField &&\n (stringFieldNames.includes(candidate) || blockFieldNames.includes(candidate)),\n )\n\n if (!titleField) {\n // Pick first defined string field\n titleField = stringFieldNames[0] || blockFieldNames[0]\n // Pick next as desc\n descField = stringFieldNames[1] || blockFieldNames[1]\n }\n\n const mediaField = objectTypeDef.fields.find((field: any) => field.type === 'image')\n\n const imageAssetPath = resolveImageAssetPath(objectTypeDef)\n\n if (!titleField) {\n const fileAssetPath = resolveFileAssetPath(objectTypeDef)\n if (fileAssetPath) {\n titleField = `${fileAssetPath}.originalFilename`\n }\n if (imageAssetPath) {\n titleField = `${imageAssetPath}.originalFilename`\n }\n }\n\n if (!titleField && !imageAssetPath) {\n // last resort, pick all fields and concat them\n const fieldNames = objectTypeDef.fields.map((field: any) => field.name)\n const fieldMapping = fieldNames.reduce((acc: any, fieldName: any) => {\n acc[fieldName] = fieldName\n return acc\n }, {})\n\n return {\n select: fieldMapping,\n prepare: createFallbackPrepare(fieldNames),\n }\n }\n\n const select = omitBy(\n {\n title: titleField,\n description: descField,\n media: mediaField ? mediaField.name : imageAssetPath,\n },\n isUndefined,\n )\n\n return {\n select: select,\n }\n}\n","import {pick} from 'lodash'\n\nimport {warnIfPreviewHasFields, warnIfPreviewOnOptions} from './deprecationUtils'\nimport guessPreviewConfig from './guessPreviewConfig'\n\nfunction parseSelection(selection: any) {\n return selection.reduce((acc: any, field: any) => {\n acc[field] = field\n return acc\n }, {})\n}\n\nfunction parsePreview(preview: any) {\n if (!preview) {\n return preview\n }\n const select = preview.select || preview.fields || {}\n if (Array.isArray(select)) {\n return {\n ...pick(preview, ['prepare', 'component']),\n select: parseSelection(select),\n }\n }\n return {\n ...pick(preview, ['prepare', 'component']),\n select,\n }\n}\n\nexport default function createPreviewGetter(objectTypeDef: any) {\n return function previewGetter() {\n warnIfPreviewOnOptions(objectTypeDef)\n warnIfPreviewHasFields(objectTypeDef)\n const preview = parsePreview(objectTypeDef.preview || (objectTypeDef.options || {}).preview)\n return preview || guessPreviewConfig(objectTypeDef)\n }\n}\n","export const DEFAULT_LINK_ANNOTATION = {\n type: 'object',\n name: 'link',\n title: 'Link',\n i18nTitleKey: 'inputs.portable-text.annotation.link',\n options: {\n modal: {type: 'popover'},\n },\n fields: [\n {\n name: 'href',\n type: 'url',\n title: 'Link',\n description: 'A valid web, email, phone, or relative link.',\n validation: (Rule: any) =>\n Rule.uri({\n scheme: ['http', 'https', 'tel', 'mailto'],\n allowRelative: true,\n }),\n },\n ],\n}\n\nexport const DEFAULT_TEXT_FIELD = {\n type: 'text',\n name: 'text',\n title: 'Text',\n}\n\nexport const DEFAULT_MARKS_FIELD = {\n name: 'marks',\n type: 'array',\n of: [{type: 'string'}],\n title: 'Marks',\n}\n\nexport const LIST_TYPES = {\n bullet: {\n title: 'Bulleted list',\n value: 'bullet',\n i18nTitleKey: 'inputs.portable-text.list-type.bullet',\n },\n numbered: {\n title: 'Numbered list',\n value: 'number',\n i18nTitleKey: 'inputs.portable-text.list-type.number',\n },\n}\n\nexport const DEFAULT_LIST_TYPES = [LIST_TYPES.bullet, LIST_TYPES.numbered]\n\nexport const BLOCK_STYLES = {\n normal: {title: 'Normal', value: 'normal', i18nTitleKey: 'inputs.portable-text.style.normal'},\n h1: {title: 'Heading 1', value: 'h1', i18nTitleKey: 'inputs.portable-text.style.h1'},\n h2: {title: 'Heading 2', value: 'h2', i18nTitleKey: 'inputs.portable-text.style.h2'},\n h3: {title: 'Heading 3', value: 'h3', i18nTitleKey: 'inputs.portable-text.style.h3'},\n h4: {title: 'Heading 4', value: 'h4', i18nTitleKey: 'inputs.portable-text.style.h4'},\n h5: {title: 'Heading 5', value: 'h5', i18nTitleKey: 'inputs.portable-text.style.h5'},\n h6: {title: 'Heading 6', value: 'h6', i18nTitleKey: 'inputs.portable-text.style.h6'},\n blockquote: {\n title: 'Quote',\n value: 'blockquote',\n i18nTitleKey: 'inputs.portable-text.style.quote',\n },\n}\n\nexport const DEFAULT_BLOCK_STYLES = [\n BLOCK_STYLES.normal,\n BLOCK_STYLES.h1,\n BLOCK_STYLES.h2,\n BLOCK_STYLES.h3,\n BLOCK_STYLES.h4,\n BLOCK_STYLES.h5,\n BLOCK_STYLES.h6,\n BLOCK_STYLES.blockquote,\n]\n\nexport const DECORATOR_STRONG = {\n title: 'Strong',\n value: 'strong',\n i18nTitleKey: 'inputs.portable-text.decorator.strong',\n}\nexport const DECORATOR_EMPHASIS = {\n title: 'Italic',\n value: 'em',\n i18nTitleKey: 'inputs.portable-text.decorator.emphasis',\n}\nexport const DECORATOR_CODE = {\n title: 'Code',\n value: 'code',\n i18nTitleKey: 'inputs.portable-text.decorator.code',\n}\nexport const DECORATOR_UNDERLINE = {\n title: 'Underline',\n value: 'underline',\n i18nTitleKey: 'inputs.portable-text.decorator.underline',\n}\nexport const DECORATOR_STRIKE = {\n title: 'Strike',\n value: 'strike-through',\n i18nTitleKey: 'inputs.portable-text.decorator.strike-through',\n}\n\nexport const DECORATORS = {\n strong: DECORATOR_STRONG,\n em: DECORATOR_EMPHASIS,\n code: DECORATOR_CODE,\n underline: DECORATOR_UNDERLINE,\n strikeThrough: DECORATOR_STRIKE,\n}\n\nexport const DEFAULT_DECORATORS = [\n DECORATORS.strong,\n DECORATORS.em,\n DECORATORS.code,\n DECORATORS.underline,\n DECORATORS.strikeThrough,\n]\n","import {pick} from 'lodash'\n\nimport createPreviewGetter from '../../preview/createPreviewGetter'\nimport {OWN_PROPS_NAME} from '../constants'\nimport {hiddenGetter, lazyGetter} from '../utils'\nimport {\n BLOCK_STYLES,\n DEFAULT_BLOCK_STYLES,\n DEFAULT_DECORATORS,\n DEFAULT_LINK_ANNOTATION,\n DEFAULT_LIST_TYPES,\n DEFAULT_MARKS_FIELD,\n DEFAULT_TEXT_FIELD,\n} from './defaults'\n\nconst INHERITED_FIELDS = [\n 'type',\n 'name',\n 'title',\n 'jsonType',\n 'description',\n 'options',\n 'fieldsets',\n 'icon',\n]\n\nconst BLOCK_CORE = {\n name: 'block',\n title: 'Block',\n type: null,\n jsonType: 'object',\n}\n\nconst DEFAULT_OPTIONS = {}\n\nexport const BlockType = {\n get() {\n return BLOCK_CORE\n },\n extend(subTypeDef: any, extendMember: any) {\n const options = {...(subTypeDef.options || DEFAULT_OPTIONS)}\n\n const {marks, styles, lists, of, ...rest} = subTypeDef\n\n const childrenField = createChildrenField(marks, of)\n const styleField = createStyleField(styles)\n const listItemField = createListItemField(lists)\n\n const markDefsField = {\n name: 'markDefs',\n title: 'Mark definitions',\n type: 'array',\n of: marks?.annotations || DEFAULT_ANNOTATIONS,\n }\n\n const levelField = {\n name: 'level',\n title: 'Indentation',\n type: 'number',\n }\n\n // NOTE: if you update this (EVEN THE ORDER OF FIELDS) you _NEED TO_ also\n // update `BlockSchemaType`, `isBlockSchemaType` and similar in `@sanity/types`\n const fields = [childrenField, styleField, listItemField, markDefsField, levelField].concat(\n subTypeDef.fields || [],\n )\n\n const ownProps = {...rest, options}\n\n const parsed = Object.assign(pick(BLOCK_CORE, INHERITED_FIELDS), ownProps, {\n type: BLOCK_CORE,\n })\n\n lazyGetter(parsed, 'fields', () => {\n return fields.map((fieldDef) => extendMember.cachedField(fieldDef))\n })\n\n lazyGetter(parsed, 'preview', createPreviewGetter(subTypeDef))\n\n lazyGetter(\n parsed,\n OWN_PROPS_NAME,\n () => ({\n ...ownProps,\n fields: parsed.fields,\n preview: parsed.preview,\n }),\n {enumerable: false, writable: false},\n )\n\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n if (extensionDef.fields) {\n throw new Error('Cannot override `fields` of subtypes of \"block\"')\n }\n const subOwnProps = pick(extensionDef, INHERITED_FIELDS)\n const current = Object.assign({}, parent, subOwnProps, {\n type: parent,\n })\n hiddenGetter(current, OWN_PROPS_NAME, subOwnProps)\n return subtype(current)\n },\n }\n }\n },\n}\n\nfunction ensureNormalStyle(styles: any) {\n return styles.some((style: any) => style.value === 'normal')\n ? styles\n : [BLOCK_STYLES.normal, ...styles]\n}\n\nfunction createStyleField(styles: any) {\n return {\n name: 'style',\n title: 'Style',\n type: 'string',\n options: {\n list: ensureNormalStyle(styles || DEFAULT_BLOCK_STYLES),\n },\n }\n}\n\nfunction createListItemField(lists: any) {\n return {\n name: 'listItem',\n title: 'List type',\n type: 'string',\n options: {\n list: lists || DEFAULT_LIST_TYPES,\n },\n }\n}\n\nconst DEFAULT_ANNOTATIONS = [DEFAULT_LINK_ANNOTATION]\n\nfunction createChildrenField(marks: any, of = []) {\n return {\n name: 'children',\n title: 'Content',\n type: 'array',\n of: [\n {\n type: 'span',\n fields: [DEFAULT_TEXT_FIELD, DEFAULT_MARKS_FIELD],\n annotations: marks && marks.annotations ? marks.annotations : DEFAULT_ANNOTATIONS,\n decorators: marks && marks.decorators ? marks.decorators : DEFAULT_DECORATORS,\n },\n ...of.filter((memberType: any) => memberType.type !== 'span'),\n ],\n }\n}\n","import {pick} from 'lodash'\n\nimport createPreviewGetter from '../../preview/createPreviewGetter'\nimport {OWN_PROPS_NAME} from '../constants'\nimport {hiddenGetter, lazyGetter} from '../utils'\n\nconst INHERITED_FIELDS = [\n 'type',\n 'name',\n 'title',\n 'jsonType',\n 'description',\n 'options',\n 'fieldsets',\n 'icon',\n]\n\nconst SPAN_CORE = {\n name: 'span',\n title: 'Span',\n type: null,\n jsonType: 'object',\n}\n\nconst MARKS_FIELD = {\n name: 'marks',\n title: 'Marks',\n type: 'array',\n of: [{type: 'string'}],\n}\n\nconst TEXT_FIELD = {\n name: 'text',\n title: 'Text',\n type: 'string',\n}\n\nconst DEFAULT_OPTIONS = {}\n\nexport const SpanType = {\n get() {\n return SPAN_CORE\n },\n extend(subTypeDef: any, extendMember: any) {\n const options = {...(subTypeDef.options || DEFAULT_OPTIONS)}\n\n const {annotations = [], marks = []} = subTypeDef\n\n // NOTE: if you update this please also update `SpanSchemaType` in`@sanity/types`\n const fields = [MARKS_FIELD, TEXT_FIELD]\n\n const ownProps = {...subTypeDef, options}\n\n const parsed = Object.assign(pick(SPAN_CORE, INHERITED_FIELDS), ownProps, {\n type: SPAN_CORE,\n })\n\n lazyGetter(parsed, 'fields', () => {\n return fields.map((fieldDef) => extendMember.cachedField(fieldDef))\n })\n\n lazyGetter(parsed, 'annotations', () => annotations.map(extendMember))\n lazyGetter(parsed, 'marks', () => marks.map(extendMember))\n\n lazyGetter(parsed, 'preview', createPreviewGetter(subTypeDef))\n\n lazyGetter(\n parsed,\n OWN_PROPS_NAME,\n () => ({\n ...ownProps,\n fields: parsed.fields,\n annotations: parsed.annotations,\n marks: parsed.marks,\n preview: parsed.preview,\n }),\n {enumerable: false, writable: false},\n )\n\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n if (extensionDef.fields) {\n throw new Error('Cannot override `fields` of subtypes of \"span\"')\n }\n const subOwnProps = pick(extensionDef, INHERITED_FIELDS)\n const current = Object.assign({}, parent, subOwnProps, {\n type: parent,\n })\n hiddenGetter(current, OWN_PROPS_NAME, subOwnProps)\n return subtype(current)\n },\n }\n }\n },\n}\n","export default {\n prepare: (val: any) => ({title: String(val)}),\n}\n","import {pick} from 'lodash'\n\nimport primitivePreview from '../preview/primitivePreview'\nimport {DEFAULT_OVERRIDEABLE_FIELDS, OWN_PROPS_NAME} from './constants'\nimport {hiddenGetter} from './utils'\n\nconst OVERRIDABLE_FIELDS = [...DEFAULT_OVERRIDEABLE_FIELDS]\n\nconst BOOLEAN_CORE = {\n name: 'boolean',\n title: 'Boolean',\n type: null,\n jsonType: 'boolean',\n}\n\nexport const BooleanType = {\n get() {\n return BOOLEAN_CORE\n },\n extend(subTypeDef: any) {\n const ownProps = {\n ...subTypeDef,\n preview: primitivePreview,\n }\n const parsed = Object.assign(pick(BOOLEAN_CORE, OVERRIDABLE_FIELDS), ownProps, {\n type: BOOLEAN_CORE,\n })\n\n hiddenGetter(parsed, OWN_PROPS_NAME, ownProps)\n\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n const subOwnProps = pick(extensionDef, OVERRIDABLE_FIELDS)\n const current = Object.assign({}, parent, subOwnProps, {\n type: parent,\n })\n hiddenGetter(current, OWN_PROPS_NAME, subOwnProps)\n return subtype(current)\n },\n }\n }\n },\n}\n","import {isFinite, uniqBy} from 'lodash'\n\nexport const DEFAULT_MAX_FIELD_DEPTH = 5\n\nconst stringFieldsSymbols = {} as Record<number, symbol>\n\nconst getStringFieldSymbol = (maxDepth: number) => {\n if (!stringFieldsSymbols[maxDepth]) {\n stringFieldsSymbols[maxDepth] = Symbol(`__cachedStringFields_${maxDepth}`)\n }\n\n return stringFieldsSymbols[maxDepth]\n}\n\nconst isReference = (type: any) => type.type && type.type.name === 'reference'\n\nconst portableTextFields = ['style', 'list']\nconst isPortableTextBlock: any = (type: any) =>\n type.name === 'block' || (type.type && isPortableTextBlock(type.type))\nconst isPortableTextArray = (type: any) =>\n type.jsonType === 'array' && Array.isArray(type.of) && type.of.some(isPortableTextBlock)\n\nfunction reduceType(type: any, reducer: any, acc: any, path = [], maxDepth: any) {\n if (maxDepth < 0) {\n return acc\n }\n\n const accumulator = reducer(acc, type, path)\n if (type.jsonType === 'array' && Array.isArray(type.of)) {\n return reduceArray(type, reducer, accumulator, path, maxDepth)\n }\n\n if (type.jsonType === 'object' && Array.isArray(type.fields) && !isReference(type)) {\n return reduceObject(type, reducer, accumulator, path, maxDepth)\n }\n\n return accumulator\n}\n\nfunction reduceArray(arrayType: any, reducer: any, accumulator: any, path: any, maxDepth: any) {\n return arrayType.of.reduce(\n (acc: any, ofType: any) => reduceType(ofType, reducer, acc, path, maxDepth - 1),\n accumulator,\n )\n}\n\nfunction reduceObject(objectType: any, reducer: any, accumulator: any, path: any, maxDepth: any) {\n const isPtBlock = isPortableTextBlock(objectType)\n return objectType.fields.reduce((acc: any, field: any) => {\n // Don't include styles and list types as searchable paths for portable text blocks\n if (isPtBlock && portableTextFields.includes(field.name)) {\n return acc\n }\n\n const segment = [field.name].concat(field.type.jsonType === 'array' ? [[]] : [])\n return reduceType(field.type, reducer, acc, path.concat(segment), maxDepth - 1)\n }, accumulator)\n}\n\nconst BASE_WEIGHTS = [\n {weight: 1, path: ['_id']},\n {weight: 1, path: ['_type']},\n]\n\nconst PREVIEW_FIELD_WEIGHT_MAP = {\n title: 10,\n subtitle: 5,\n description: 1.5,\n}\n\n/**\n * @internal\n */\nexport function deriveFromPreview(\n type: {\n preview: {select: Record<string, string>}\n },\n maxDepth: number,\n): {weight?: number; path: (string | number)[]}[] {\n const select = type?.preview?.select\n\n if (!select) {\n return []\n }\n\n const fields: {weight: number; path: (string | number)[]}[] = []\n\n for (const fieldName of Object.keys(select)) {\n if (!(fieldName in PREVIEW_FIELD_WEIGHT_MAP)) {\n continue\n }\n\n const path = select[fieldName].split('.')\n\n if (maxDepth > -1 && path.length - 1 > maxDepth) {\n continue\n }\n\n fields.push({\n weight: (PREVIEW_FIELD_WEIGHT_MAP as any)[fieldName],\n path,\n })\n }\n\n return fields\n}\n\nfunction getCachedStringFieldPaths(type: any, maxDepth: number) {\n const symbol = getStringFieldSymbol(maxDepth)\n if (!type[symbol]) {\n type[symbol] = uniqBy(\n [\n ...BASE_WEIGHTS,\n ...deriveFromPreview(type, maxDepth),\n ...getStringFieldPaths(type, maxDepth).map((path: any) => ({weight: 1, path})),\n ...getPortableTextFieldPaths(type, maxDepth).map((path: any) => ({\n weight: 1,\n path,\n mapWith: 'pt::text',\n })),\n ],\n (spec) => spec.path.join('.'),\n )\n }\n return type[symbol]\n}\n\nfunction getCachedBaseFieldPaths(type: any, maxDepth: number) {\n const symbol = getStringFieldSymbol(maxDepth)\n if (!type[symbol]) {\n type[symbol] = uniqBy([...BASE_WEIGHTS, ...deriveFromPreview(type, maxDepth)], (spec) =>\n spec.path.join('.'),\n )\n }\n return type[symbol]\n}\n\nfunction getStringFieldPaths(type: any, maxDepth: number) {\n const reducer = (accumulator: any, childType: any, path: any) =>\n childType.jsonType === 'string' ? [...accumulator, path] : accumulator\n\n return reduceType(type, reducer, [], [], maxDepth)\n}\n\nfunction getPortableTextFieldPaths(type: any, maxDepth: any) {\n const reducer = (accumulator: any, childType: any, path: any) =>\n isPortableTextArray(childType) ? [...accumulator, path] : accumulator\n\n return reduceType(type, reducer, [], [], maxDepth)\n}\n\nexport function resolveSearchConfigForBaseFieldPaths(type: any, maxDepth?: number) {\n return getCachedBaseFieldPaths(type, normalizeMaxDepth(maxDepth))\n}\n\n/**\n * @internal\n */\nexport function resolveSearchConfig(type: any, maxDepth?: number) {\n return getCachedStringFieldPaths(type, normalizeMaxDepth(maxDepth))\n}\n\n/**\n * Normalizes a one-indexed maxDepth to a zero-indexed maxDepth\n * 0 = all fields\n *\n * @internal\n */\nfunction normalizeMaxDepth(maxDepth?: number) {\n if (!isFinite(maxDepth) || maxDepth! < 1 || maxDepth! > DEFAULT_MAX_FIELD_DEPTH) {\n return DEFAULT_MAX_FIELD_DEPTH - 1\n }\n\n return maxDepth! - 1\n}\n","import arrify from 'arrify'\nimport {capitalize, pick} from 'lodash'\n\nimport {resolveSearchConfigForBaseFieldPaths} from '../searchConfig/resolve'\nimport {DEFAULT_OVERRIDEABLE_FIELDS, OWN_PROPS_NAME} from './constants'\nimport {hiddenGetter, lazyGetter} from './utils'\n\nexport const REF_FIELD = {\n name: '_ref',\n title: 'Referenced document ID',\n type: 'string',\n}\n\nexport const WEAK_FIELD = {\n name: '_weak',\n title: 'Weak reference marker',\n type: 'boolean',\n}\n\nconst DATASET_FIELD = {\n name: '_dataset',\n title: 'Target dataset',\n type: 'string',\n}\n\nconst PROJECT_ID_FIELD = {\n name: '_projectId',\n title: 'Target project ID',\n type: 'string',\n hidden: true,\n}\n\nconst REFERENCE_FIELDS = [REF_FIELD, WEAK_FIELD, DATASET_FIELD, PROJECT_ID_FIELD]\n\nconst OVERRIDABLE_FIELDS = [...DEFAULT_OVERRIDEABLE_FIELDS]\n\nconst CROSS_DATASET_REFERENCE_CORE = {\n name: 'crossDatasetReference',\n type: null,\n jsonType: 'object',\n}\n\nfunction humanize(arr: any, conjunction: any) {\n const len = arr.length\n if (len === 1) {\n return arr[0]\n }\n const first = arr.slice(0, len - 1)\n const last = arr[len - 1]\n return `${first.join(', ')} ${conjunction} ${last}`\n}\n\nfunction buildTitle(type: any) {\n if (!type.to || type.to.length === 0) {\n return 'Cross dataset Reference'\n }\n return `Cross dataset reference to ${humanize(\n arrify(type.to).map((toType: any) => toType.title || capitalize(toType.type)),\n 'or',\n ).toLowerCase()}`\n}\n\nexport const CrossDatasetReferenceType = {\n get() {\n return CROSS_DATASET_REFERENCE_CORE\n },\n extend(subTypeDef: any, createMemberType: any) {\n if (!subTypeDef.to) {\n throw new Error(\n `Missing \"to\" field in cross dataset reference definition. Check the type ${subTypeDef.name}`,\n )\n }\n const parsed = Object.assign(\n pick(CROSS_DATASET_REFERENCE_CORE, OVERRIDABLE_FIELDS),\n subTypeDef,\n {\n type: CROSS_DATASET_REFERENCE_CORE,\n },\n )\n\n lazyGetter(parsed, 'fields', () => {\n return REFERENCE_FIELDS.map((fieldDef) => createMemberType.cachedField(fieldDef))\n })\n\n lazyGetter(parsed, 'to', () => {\n return arrify(subTypeDef.to).map((toType: any) => {\n return {\n ...toType,\n // eslint-disable-next-line camelcase\n __experimental_search: resolveSearchConfigForBaseFieldPaths(toType),\n }\n })\n })\n\n lazyGetter(parsed, 'title', () => subTypeDef.title || buildTitle(parsed))\n\n lazyGetter(\n parsed,\n OWN_PROPS_NAME,\n () => ({\n ...subTypeDef,\n fields: parsed.fields,\n to: parsed.to,\n title: parsed.title,\n }),\n {enumerable: false, writable: false},\n )\n\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n if (extensionDef.of) {\n throw new Error('Cannot override `of` of subtypes of \"reference\"')\n }\n const ownProps = pick(extensionDef, OVERRIDABLE_FIELDS)\n const current = Object.assign({}, parent, ownProps, {\n type: parent,\n })\n hiddenGetter(current, OWN_PROPS_NAME, ownProps)\n return subtype(current)\n },\n }\n }\n },\n}\n","import {pick} from 'lodash'\n\nimport primitivePreview from '../preview/primitivePreview'\nimport {DEFAULT_OVERRIDEABLE_FIELDS, OWN_PROPS_NAME} from './constants'\nimport {hiddenGetter} from './utils'\n\nconst OVERRIDABLE_FIELDS = [...DEFAULT_OVERRIDEABLE_FIELDS]\n\nconst DATE_CORE = {\n name: 'date',\n title: 'Datetime',\n type: null,\n jsonType: 'string',\n}\n\nexport const DateType = {\n get() {\n return DATE_CORE\n },\n extend(subTypeDef: any) {\n const ownProps = {\n ...subTypeDef,\n preview: primitivePreview,\n }\n const parsed = Object.assign(pick(DATE_CORE, OVERRIDABLE_FIELDS), ownProps, {\n type: DATE_CORE,\n })\n\n hiddenGetter(parsed, OWN_PROPS_NAME, ownProps)\n\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n const subOwnProps = pick(extensionDef, OVERRIDABLE_FIELDS)\n const current = Object.assign({}, parent, subOwnProps, {\n type: parent,\n })\n hiddenGetter(current, OWN_PROPS_NAME, subOwnProps)\n return subtype(current)\n },\n }\n }\n },\n}\n","import {pick} from 'lodash'\n\nimport primitivePreview from '../preview/primitivePreview'\nimport {DEFAULT_OVERRIDEABLE_FIELDS, OWN_PROPS_NAME} from './constants'\nimport {hiddenGetter} from './utils'\n\nconst OVERRIDABLE_FIELDS = [...DEFAULT_OVERRIDEABLE_FIELDS]\n\nconst DATETIME_CORE = {\n name: 'datetime',\n title: 'Datetime',\n type: null,\n jsonType: 'string',\n}\n\nexport const DateTimeType = {\n get() {\n return DATETIME_CORE\n },\n extend(subTypeDef: any) {\n const ownProps = {\n ...subTypeDef,\n preview: primitivePreview,\n }\n const parsed = Object.assign(pick(DATETIME_CORE, OVERRIDABLE_FIELDS), ownProps, {\n type: DATETIME_CORE,\n })\n hiddenGetter(parsed, OWN_PROPS_NAME, ownProps)\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n const subOwnProps = pick(extensionDef, OVERRIDABLE_FIELDS)\n const current = Object.assign({}, parent, subOwnProps, {\n type: parent,\n })\n hiddenGetter(current, OWN_PROPS_NAME, subOwnProps)\n return subtype(current)\n },\n }\n }\n },\n}\n","import {type SortOrdering} from '@sanity/types'\nimport {capitalize, startCase} from 'lodash'\n\nconst CANDIDATES = ['title', 'name', 'label', 'heading', 'header', 'caption', 'description']\n\nconst PRIMITIVES = ['string', 'boolean', 'number']\n\nconst isPrimitive = (field: any) => PRIMITIVES.includes(field.type)\n\nexport default function guessOrderingConfig(objectTypeDef: any): SortOrdering[] {\n let candidates = CANDIDATES.filter((candidate) =>\n objectTypeDef.fields.some((field: any) => isPrimitive(field) && field.name === candidate),\n )\n\n // None of the candidates were found, fallback to all fields\n if (candidates.length === 0) {\n candidates = objectTypeDef.fields.filter(isPrimitive).map((field: any) => field.name)\n }\n\n return candidates.map(\n (name): SortOrdering => ({\n name: name,\n i18n: {\n title: {key: `default-orderings.${name}`, ns: 'studio'},\n },\n title: capitalize(startCase(name)),\n by: [{field: name, direction: 'asc'}],\n }),\n )\n}\n","import {isPlainObject, toPath} from 'lodash'\n\nexport function normalizeSearchConfigs(configs: any) {\n if (!Array.isArray(configs)) {\n throw new Error(\n 'The search config of a document type must be an array of search config objects',\n )\n }\n return configs.map((conf) => {\n if (conf === 'defaults') {\n return conf\n }\n if (!isPlainObject(conf)) {\n throw new Error('Search config must be an object of {path: string, weight: number}')\n }\n return {\n weight: 'weight' in conf ? conf.weight : 1,\n path: toPath(conf.path),\n mapWith: typeof conf.mapWith === 'string' ? conf.mapWith : undefined,\n }\n })\n}\n","import {\n type FieldGroup,\n type FieldGroupDefinition,\n type Fieldset,\n type FieldsetDefinition,\n type ObjectDefinition,\n type ObjectField,\n} from '@sanity/types'\nimport {castArray, flatMap, pick, startCase} from 'lodash'\n\nimport guessOrderingConfig from '../ordering/guessOrderingConfig'\nimport createPreviewGetter from '../preview/createPreviewGetter'\nimport {normalizeSearchConfigs} from '../searchConfig/normalize'\nimport {resolveSearchConfig} from '../searchConfig/resolve'\nimport {ALL_FIELDS_GROUP_NAME, DEFAULT_OVERRIDEABLE_FIELDS, OWN_PROPS_NAME} from './constants'\nimport {hiddenGetter, lazyGetter} from './utils'\n\nconst OVERRIDABLE_FIELDS = [\n ...DEFAULT_OVERRIDEABLE_FIELDS,\n 'orderings',\n '__experimental_search',\n 'blockEditor',\n 'icon',\n]\n\nexport const ObjectType = {\n get() {\n return {\n name: 'object',\n title: 'Object',\n type: null,\n jsonType: 'object',\n }\n },\n extend(rawSubTypeDef: any, createMemberType: any) {\n const subTypeDef = {fields: [], ...rawSubTypeDef}\n\n const options = {...subTypeDef.options}\n\n const ownProps = {\n ...subTypeDef,\n title: subTypeDef.title || (subTypeDef.name ? startCase(subTypeDef.name) : 'Object'),\n options: options,\n orderings: subTypeDef.orderings || guessOrderingConfig(subTypeDef),\n fields: subTypeDef.fields.map((fieldDef: any) =>\n createMemberType.cachedObjectField(fieldDef),\n ),\n }\n\n const parsed = Object.assign(pick(this.get(), OVERRIDABLE_FIELDS), ownProps, {\n type: this.get(),\n })\n\n lazyGetter(parsed, 'fieldsets', () => {\n return createFieldsets(subTypeDef, parsed.fields)\n })\n\n lazyGetter(parsed, 'groups', () => {\n return createFieldsGroups(subTypeDef, parsed.fields)\n })\n\n lazyGetter(parsed, 'preview', createPreviewGetter(subTypeDef))\n\n lazyGetter(\n parsed,\n OWN_PROPS_NAME,\n () => ({\n ...ownProps,\n preview: parsed.preview,\n }),\n {enumerable: false, writable: false},\n )\n\n lazyGetter(\n parsed,\n '__experimental_search',\n () => {\n const userProvidedSearchConfig = subTypeDef.__experimental_search\n ? normalizeSearchConfigs(subTypeDef.__experimental_search)\n : null\n\n if (userProvidedSearchConfig) {\n return userProvidedSearchConfig.map((entry) =>\n entry === 'defaults' ? normalizeSearchConfigs(subTypeDef) : entry,\n )\n }\n return resolveSearchConfig(parsed)\n },\n {\n enumerable: false,\n },\n )\n\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n if (extensionDef.fields) {\n throw new Error('Cannot override `fields` of subtypes of \"object\"')\n }\n\n const subOwnProps = pick(extensionDef, OVERRIDABLE_FIELDS)\n subOwnProps.title =\n extensionDef.title ||\n subTypeDef.title ||\n (subTypeDef.name ? startCase(subTypeDef.name) : 'Object')\n\n const current = Object.assign({}, parent, pick(extensionDef, OVERRIDABLE_FIELDS), {\n type: parent,\n })\n lazyGetter(current, '__experimental_search', () => parent.__experimental_search)\n hiddenGetter(current, OWN_PROPS_NAME, subOwnProps)\n return subtype(current)\n },\n }\n }\n },\n}\n\nexport function createFieldsets(typeDef: ObjectDefinition, fields: ObjectField[]): Fieldset[] {\n const fieldsetsByName: Record<string, FieldsetDefinition & {fields: ObjectField[]}> = {}\n\n for (const fieldset of typeDef.fieldsets || []) {\n if (fieldsetsByName[fieldset.name]) {\n throw new Error(\n `Duplicate fieldset name \"${fieldset.name}\" found for type '${\n typeDef.title ? typeDef.title : startCase(typeDef.name)\n }'`,\n )\n }\n\n fieldsetsByName[fieldset.name] = {title: startCase(fieldset.name), ...fieldset, fields: []}\n }\n\n const fieldsets = new Set<Fieldset>()\n\n for (const field of fields) {\n if (!field.fieldset) {\n fieldsets.add({single: true, field})\n continue\n }\n\n const fieldset = fieldsetsByName[field.fieldset]\n if (!fieldset) {\n throw new Error(\n `Fieldset '${field.fieldset}' is not defined in schema for type '${typeDef.name}'`,\n )\n }\n\n fieldset.fields.push(field)\n\n // The Set will prevent duplicates\n fieldsets.add(fieldset)\n }\n\n return Array.from(fieldsets)\n}\n\nfunction createFieldsGroups(typeDef: ObjectDefinition, fields: ObjectField[]): FieldGroup[] {\n const groupsByName: Record<string, FieldGroupDefinition & {fields: ObjectField[]}> = {}\n\n let numDefaultGroups = 0\n for (const group of typeDef.groups || []) {\n if (groupsByName[group.name]) {\n throw new Error(\n `Duplicate group name \"${group.name}\" found for type '${\n typeDef.title ? typeDef.title : startCase(typeDef.name)\n }'`,\n )\n }\n\n groupsByName[group.name] = {title: startCase(group.name), ...group, fields: []}\n\n if (group.default && ++numDefaultGroups > 1) {\n // Throw if you have multiple default field groups defined\n throw new Error(\n `More than one field group defined as default for type '${\n typeDef.title ? typeDef.title : startCase(typeDef.name)\n }' - only 1 is supported`,\n )\n }\n }\n\n fields.forEach((field) => {\n const fieldGroupNames = castArray(field.group || [])\n if (fieldGroupNames.length === 0) {\n return\n }\n\n fieldGroupNames.forEach((fieldGroupName) => {\n const currentGroup = groupsByName[fieldGroupName]\n\n if (!currentGroup) {\n throw new Error(\n `Field group '${fieldGroupName}' is not defined in schema for type '${\n typeDef.title ? typeDef.name : startCase(typeDef.name)\n }'`,\n )\n }\n\n currentGroup.fields.push(field)\n })\n })\n\n return flatMap(groupsByName).filter(\n // All fields group is added by default in structure.\n // To pass the properties from the schema to the form state, we need to include it in the list of groups.\n (group) => group.fields.length > 0 || group.name === ALL_FIELDS_GROUP_NAME,\n )\n}\n","import {ObjectType} from './object'\n\nconst DOCUMENT_CORE = {\n name: 'document',\n title: 'Document',\n type: null,\n jsonType: 'object',\n}\n\nexport const DocumentType = {\n get() {\n return DOCUMENT_CORE\n },\n extend: ObjectType.extend,\n}\n","import {pick} from 'lodash'\n\nimport primitivePreview from '../preview/primitivePreview'\nimport {DEFAULT_OVERRIDEABLE_FIELDS, OWN_PROPS_NAME} from './constants'\nimport {hiddenGetter, lazyGetter} from './utils'\n\nconst OVERRIDABLE_FIELDS = [...DEFAULT_OVERRIDEABLE_FIELDS]\n\nconst EMAIL_CORE = {\n name: 'email',\n title: 'Email',\n type: null,\n jsonType: 'string',\n}\n\nlazyGetter(\n EMAIL_CORE,\n OWN_PROPS_NAME,\n () => ({\n ...EMAIL_CORE,\n validation: (Rule: any) => Rule.email(),\n }),\n {enumerable: false},\n)\n\nexport const EmailType = {\n get() {\n return EMAIL_CORE\n },\n extend(subTypeDef: any) {\n const ownProps = {\n ...subTypeDef,\n preview: primitivePreview,\n }\n const parsed = Object.assign(pick(EMAIL_CORE, OVERRIDABLE_FIELDS), ownProps, {\n type: EMAIL_CORE,\n })\n hiddenGetter(parsed, OWN_PROPS_NAME, ownProps)\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n const subOwnProps = pick(extensionDef, OVERRIDABLE_FIELDS)\n const current = Object.assign({}, parent, subOwnProps, {\n type: parent,\n })\n hiddenGetter(current, OWN_PROPS_NAME, subOwnProps)\n return subtype(current)\n },\n }\n }\n },\n}\n","import {pick, startCase} from 'lodash'\n\nimport createPreviewGetter from '../preview/createPreviewGetter'\nimport {DEFAULT_OVERRIDEABLE_FIELDS, OWN_PROPS_NAME} from './constants'\nimport {createFieldsets} from './object'\nimport {hiddenGetter, lazyGetter} from './utils'\n\nexport const ASSET_FIELD = {\n name: 'asset',\n type: 'reference',\n to: {type: 'sanity.fileAsset'},\n}\n\nexport const MEDIA_LIBRARY_ASSET_FIELD = {\n name: 'media',\n type: 'globalDocumentReference',\n hidden: true,\n to: [{type: 'sanity.asset'}],\n}\n\nconst OVERRIDABLE_FIELDS = [...DEFAULT_OVERRIDEABLE_FIELDS]\n\nconst FILE_CORE = {\n name: 'file',\n title: 'File',\n type: null,\n jsonType: 'object',\n}\n\nconst DEFAULT_OPTIONS = {\n accept: '',\n}\n\nexport const FileType = {\n get() {\n return FILE_CORE\n },\n extend(rawSubTypeDef: any, createMemberType: any) {\n const options = {...(rawSubTypeDef.options || DEFAULT_OPTIONS)}\n\n const fields = [ASSET_FIELD, MEDIA_LIBRARY_ASSET_FIELD, ...(rawSubTypeDef.fields || [])]\n\n const subTypeDef = {...rawSubTypeDef, fields}\n\n const parsed = Object.assign(pick(FILE_CORE, OVERRIDABLE_FIELDS), subTypeDef, {\n type: FILE_CORE,\n title: subTypeDef.title || (subTypeDef.name ? startCase(subTypeDef.name) : FILE_CORE.title),\n options: options,\n fields: subTypeDef.fields.map((fieldDef: any) => {\n const {name, fieldset, ...rest} = fieldDef\n\n const compiledField = {\n name,\n fieldset,\n isCustomized: Boolean(rawSubTypeDef.fields),\n }\n\n return lazyGetter(compiledField, 'type', () => {\n return createMemberType({\n ...rest,\n title: fieldDef.title || startCase(name),\n })\n })\n }),\n })\n\n lazyGetter(parsed, 'fieldsets', () => {\n return createFieldsets(subTypeDef, parsed.fields)\n })\n\n lazyGetter(parsed, 'preview', createPreviewGetter(Object.assign({}, subTypeDef, {fields})))\n\n lazyGetter(\n parsed,\n OWN_PROPS_NAME,\n () => ({\n ...subTypeDef,\n options,\n fields: parsed.fields,\n title: parsed.title,\n fieldsets: parsed.fieldsets,\n preview: parsed.preview,\n }),\n {enumerable: false, writable: false},\n )\n\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n if (extensionDef.fields) {\n throw new Error('Cannot override `fields` of subtypes of \"file\"')\n }\n const ownProps = pick(extensionDef, OVERRIDABLE_FIELDS)\n const current = Object.assign({}, parent, ownProps, {\n type: parent,\n })\n hiddenGetter(current, OWN_PROPS_NAME, ownProps)\n return subtype(current)\n },\n }\n }\n },\n}\n","import arrify from 'arrify'\nimport {pick} from 'lodash'\n\nimport {DEFAULT_OVERRIDEABLE_FIELDS, OWN_PROPS_NAME} from './constants'\nimport {hiddenGetter, lazyGetter} from './utils'\n\nexport const REF_FIELD = {\n name: '_ref',\n title: 'Referenced document ID',\n type: 'string',\n}\n\nexport const WEAK_FIELD = {\n name: '_weak',\n title: 'Weak reference',\n type: 'boolean',\n}\n\nconst REFERENCE_FIELDS = [REF_FIELD, WEAK_FIELD]\n\nconst OVERRIDABLE_FIELDS = [...DEFAULT_OVERRIDEABLE_FIELDS]\n\nconst GLOBAL_DOCUMENT_REFERENCE_CORE = {\n name: 'globalDocumentReference',\n title: 'Global Document Reference',\n type: null,\n jsonType: 'object',\n}\n\nfunction humanize(arr: any, conjunction: any) {\n const len = arr.length\n if (len === 1) {\n return arr[0]\n }\n const first = arr.slice(0, len - 1)\n const last = arr[len - 1]\n return `${first.join(', ')} ${conjunction} ${last}`\n}\n\nfunction buildTitle(type: any) {\n if (!type.to || type.to.length === 0) {\n return 'Global Document Reference'\n }\n return `Global Document Reference to ${humanize(\n arrify(type.to).map((toType: any) => toType.title),\n 'or',\n ).toLowerCase()}`\n}\n\nexport const GlobalDocumentReferenceType = {\n get() {\n return GLOBAL_DOCUMENT_REFERENCE_CORE\n },\n extend(subTypeDef: any, createMemberType: any) {\n if (!subTypeDef.to) {\n throw new Error(\n `Missing \"to\" field in global document reference definition. Check the type ${subTypeDef.name}`,\n )\n }\n const parsed = Object.assign(\n pick(GLOBAL_DOCUMENT_REFERENCE_CORE, OVERRIDABLE_FIELDS),\n subTypeDef,\n {\n type: GLOBAL_DOCUMENT_REFERENCE_CORE,\n },\n )\n\n lazyGetter(parsed, 'fields', () => {\n return REFERENCE_FIELDS.map((fieldDef) => createMemberType.cachedField(fieldDef))\n })\n\n lazyGetter(parsed, 'to', () => {\n return arrify(subTypeDef.to).map((toType: any) => {\n return {\n ...toType,\n }\n })\n })\n\n lazyGetter(parsed, 'title', () => subTypeDef.title || buildTitle(parsed))\n\n lazyGetter(\n parsed,\n OWN_PROPS_NAME,\n () => ({\n ...subTypeDef,\n fields: parsed.fields,\n to: parsed.to,\n title: parsed.title,\n }),\n {enumerable: false, writable: false},\n )\n\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n if (extensionDef.of) {\n throw new Error('Cannot override `of` of subtypes of \"globalDocumentReference\"')\n }\n const ownProps = pick(extensionDef, OVERRIDABLE_FIELDS)\n const current = Object.assign({}, parent, ownProps, {\n type: parent,\n })\n hiddenGetter(current, OWN_PROPS_NAME, ownProps)\n return subtype(current)\n },\n }\n }\n },\n}\n","export const ASSET_FIELD = {\n name: 'asset',\n type: 'reference',\n to: [{type: 'sanity.imageAsset'}],\n}\n\nexport const HOTSPOT_FIELD = {\n name: 'hotspot',\n type: 'sanity.imageHotspot',\n}\n\nexport const CROP_FIELD = {\n name: 'crop',\n type: 'sanity.imageCrop',\n}\n\nexport const MEDIA_LIBRARY_ASSET_FIELD = {\n name: 'media',\n type: 'globalDocumentReference',\n hidden: true,\n to: [{type: 'sanity.asset'}],\n}\n","import {pick, startCase} from 'lodash'\n\nimport createPreviewGetter from '../preview/createPreviewGetter'\nimport {DEFAULT_OVERRIDEABLE_FIELDS, OWN_PROPS_NAME} from './constants'\nimport {ASSET_FIELD, CROP_FIELD, HOTSPOT_FIELD, MEDIA_LIBRARY_ASSET_FIELD} from './image/fieldDefs'\nimport {createFieldsets} from './object'\nimport {hiddenGetter, lazyGetter} from './utils'\n\nconst OVERRIDABLE_FIELDS = [...DEFAULT_OVERRIDEABLE_FIELDS]\n\nconst IMAGE_CORE = {\n name: 'image',\n title: 'Image',\n type: null,\n jsonType: 'object',\n}\n\nconst DEFAULT_OPTIONS = {}\n\nexport const ImageType = {\n get() {\n return IMAGE_CORE\n },\n extend(rawSubTypeDef: any, createMemberType: any) {\n const options = {...(rawSubTypeDef.options || DEFAULT_OPTIONS)}\n\n let hotspotFields = [HOTSPOT_FIELD, CROP_FIELD]\n if (!options.hotspot) {\n hotspotFields = hotspotFields.map((field) => ({...field, hidden: true}))\n }\n\n const fields = [\n ASSET_FIELD,\n MEDIA_LIBRARY_ASSET_FIELD,\n ...hotspotFields,\n ...(rawSubTypeDef.fields || []),\n ]\n const subTypeDef = {...rawSubTypeDef, fields}\n\n const parsed = Object.assign(pick(this.get(), OVERRIDABLE_FIELDS), subTypeDef, {\n type: IMAGE_CORE,\n title: subTypeDef.title || (subTypeDef.name ? startCase(subTypeDef.name) : IMAGE_CORE.title),\n options: options,\n fields: subTypeDef.fields.map((fieldDef: any) => {\n const {name, fieldset, ...rest} = fieldDef\n\n const compiledField = {\n name,\n fieldset,\n isCustomized: Boolean(rawSubTypeDef.fields),\n }\n\n return lazyGetter(compiledField, 'type', () => {\n return createMemberType({\n ...rest,\n title: fieldDef.title || startCase(name),\n })\n })\n }),\n })\n\n lazyGetter(parsed, 'fieldsets', () => {\n return createFieldsets(subTypeDef, parsed.fields)\n })\n\n lazyGetter(parsed, 'preview', createPreviewGetter(Object.assign({}, subTypeDef, {fields})))\n\n lazyGetter(\n parsed,\n OWN_PROPS_NAME,\n () => ({\n ...subTypeDef,\n options,\n fields: parsed.fields,\n title: parsed.title,\n fieldsets: parsed.fieldsets,\n preview: parsed.preview,\n }),\n {enumerable: false, writable: false},\n )\n\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n if (extensionDef.fields) {\n throw new Error('Cannot override `fields` of subtypes of \"image\"')\n }\n const ownProps = pick(extensionDef, OVERRIDABLE_FIELDS)\n const current = Object.assign({}, parent, ownProps, {\n type: parent,\n })\n hiddenGetter(current, OWN_PROPS_NAME, ownProps)\n return subtype(current)\n },\n }\n }\n },\n}\n","import {pick} from 'lodash'\n\nimport primitivePreview from '../preview/primitivePreview'\nimport {DEFAULT_OVERRIDEABLE_FIELDS, OWN_PROPS_NAME} from './constants'\nimport {hiddenGetter} from './utils'\n\nconst OVERRIDABLE_FIELDS = [...DEFAULT_OVERRIDEABLE_FIELDS]\n\nconst NUMBER_CORE = {\n name: 'number',\n title: 'Number',\n type: null,\n jsonType: 'number',\n}\n\nexport const NumberType = {\n get() {\n return NUMBER_CORE\n },\n extend(subTypeDef: any) {\n const ownProps = {\n ...subTypeDef,\n preview: primitivePreview,\n }\n\n const parsed = Object.assign(pick(NUMBER_CORE, OVERRIDABLE_FIELDS), ownProps, {\n type: NUMBER_CORE,\n })\n\n hiddenGetter(parsed, OWN_PROPS_NAME, ownProps)\n\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n const subOwnProps = pick(extensionDef, OVERRIDABLE_FIELDS)\n const current = Object.assign({}, parent, subOwnProps, {\n type: parent,\n })\n hiddenGetter(current, OWN_PROPS_NAME, subOwnProps)\n return subtype(current)\n },\n }\n }\n },\n}\n","import arrify from 'arrify'\nimport {pick} from 'lodash'\n\nimport {DEFAULT_OVERRIDEABLE_FIELDS, OWN_PROPS_NAME} from './constants'\nimport {createFieldsets} from './object'\nimport {hiddenGetter, lazyGetter} from './utils'\n\nexport const REF_FIELD = {\n name: '_ref',\n title: 'Referenced document ID',\n type: 'string',\n}\n\nexport const WEAK_FIELD = {\n name: '_weak',\n title: 'Weak reference',\n type: 'boolean',\n}\n\nconst REFERENCE_FIELDS = [REF_FIELD, WEAK_FIELD]\n\nconst OVERRIDABLE_FIELDS = [...DEFAULT_OVERRIDEABLE_FIELDS]\n\nconst REFERENCE_CORE = {\n name: 'reference',\n title: 'Reference',\n type: null,\n jsonType: 'object',\n}\n\nfunction humanize(arr: any, conjunction: any) {\n const len = arr.length\n if (len === 1) {\n return arr[0]\n }\n const first = arr.slice(0, len - 1)\n const last = arr[len - 1]\n return `${first.join(', ')} ${conjunction} ${last}`\n}\n\nfunction buildTitle(type: any) {\n if (!type.to || type.to.length === 0) {\n return 'Reference'\n }\n return `Reference to ${humanize(\n arrify(type.to).map((toType: any) => toType.title),\n 'or',\n ).toLowerCase()}`\n}\n\nexport const ReferenceType = {\n get() {\n return REFERENCE_CORE\n },\n extend(subTypeDef: any, createMemberType: any) {\n if (!subTypeDef.to) {\n throw new Error(\n `Missing \"to\" field in reference definition. Check the type ${subTypeDef.name}`,\n )\n }\n const parsed = Object.assign(pick(REFERENCE_CORE, OVERRIDABLE_FIELDS), subTypeDef, {\n type: REFERENCE_CORE,\n })\n\n lazyGetter(parsed, 'fields', () => {\n return REFERENCE_FIELDS.map((fieldDef) => createMemberType.cachedField(fieldDef))\n })\n\n lazyGetter(parsed, 'fieldsets', () => {\n return createFieldsets(subTypeDef, parsed.fields)\n })\n\n lazyGetter(parsed, 'to', () => {\n return arrify(subTypeDef.to).map((toType: any) => createMemberType(toType))\n })\n\n lazyGetter(parsed, 'title', () => subTypeDef.title || buildTitle(parsed))\n\n lazyGetter(\n parsed,\n OWN_PROPS_NAME,\n () => ({\n ...subTypeDef,\n fields: parsed.fields,\n fieldsets: parsed.fieldsets,\n to: parsed.to,\n title: parsed.title,\n }),\n {enumerable: false, writable: false},\n )\n\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n if (extensionDef.of) {\n throw new Error('Cannot override `of` of subtypes of \"reference\"')\n }\n const ownProps = pick(extensionDef, OVERRIDABLE_FIELDS)\n const current = Object.assign({}, parent, ownProps, {\n type: parent,\n })\n hiddenGetter(current, OWN_PROPS_NAME, ownProps)\n return subtype(current)\n },\n }\n }\n },\n}\n","import {pick} from 'lodash'\n\nimport primitivePreview from '../preview/primitivePreview'\nimport {DEFAULT_OVERRIDEABLE_FIELDS, OWN_PROPS_NAME} from './constants'\nimport {hiddenGetter} from './utils'\n\nconst OVERRIDABLE_FIELDS = [...DEFAULT_OVERRIDEABLE_FIELDS]\n\nconst STRING_CORE = {\n name: 'string',\n title: 'String',\n type: null,\n jsonType: 'string',\n}\n\nexport const StringType = {\n get() {\n return STRING_CORE\n },\n extend(subTypeDef: any) {\n const ownProps = {\n ...subTypeDef,\n preview: primitivePreview,\n }\n\n const parsed = Object.assign(pick(STRING_CORE, OVERRIDABLE_FIELDS), ownProps, {\n type: STRING_CORE,\n })\n\n hiddenGetter(parsed, OWN_PROPS_NAME, ownProps)\n\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n const subOwnProps = pick(extensionDef, OVERRIDABLE_FIELDS)\n const current = Object.assign({}, parent, subOwnProps, {\n type: parent,\n })\n hiddenGetter(current, OWN_PROPS_NAME, subOwnProps)\n return subtype(current)\n },\n }\n }\n },\n}\n","import {pick} from 'lodash'\n\nimport primitivePreview from '../preview/primitivePreview'\nimport {DEFAULT_OVERRIDEABLE_FIELDS, OWN_PROPS_NAME} from './constants'\nimport {hiddenGetter} from './utils'\n\nconst OVERRIDABLE_FIELDS = [...DEFAULT_OVERRIDEABLE_FIELDS, 'rows']\n\nconst TEXT_CORE = {\n name: 'text',\n title: 'Text',\n type: null,\n jsonType: 'string',\n}\n\nexport const TextType = {\n get() {\n return TEXT_CORE\n },\n extend(subTypeDef: any) {\n const ownProps = {\n ...subTypeDef,\n preview: primitivePreview,\n }\n\n const parsed = Object.assign(pick(TEXT_CORE, OVERRIDABLE_FIELDS), ownProps, {\n type: TEXT_CORE,\n })\n\n hiddenGetter(parsed, OWN_PROPS_NAME, ownProps)\n\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n const subOwnProps = pick(extensionDef, OVERRIDABLE_FIELDS)\n const current = Object.assign({}, parent, subOwnProps, {\n type: parent,\n })\n hiddenGetter(current, OWN_PROPS_NAME, subOwnProps)\n return subtype(current)\n },\n }\n }\n },\n}\n","import {pick} from 'lodash'\n\nimport primitivePreview from '../preview/primitivePreview'\nimport {DEFAULT_OVERRIDEABLE_FIELDS, OWN_PROPS_NAME} from './constants'\nimport {hiddenGetter} from './utils'\n\nconst OVERRIDABLE_FIELDS = [...DEFAULT_OVERRIDEABLE_FIELDS]\n\nconst URL_CORE = {\n name: 'url',\n title: 'Url',\n type: null,\n jsonType: 'string',\n}\n\nexport const UrlType = {\n get() {\n return URL_CORE\n },\n extend(subTypeDef: any) {\n const ownProps = {\n ...subTypeDef,\n preview: primitivePreview,\n }\n\n const parsed = Object.assign(pick(URL_CORE, OVERRIDABLE_FIELDS), ownProps, {\n type: URL_CORE,\n })\n\n hiddenGetter(parsed, OWN_PROPS_NAME, ownProps)\n\n return subtype(parsed)\n\n function subtype(parent: any) {\n return {\n get() {\n return parent\n },\n extend: (extensionDef: any) => {\n const subOwnownProps = pick(extensionDef, OVERRIDABLE_FIELDS)\n const current = Object.assign({}, parent, subOwnownProps, {\n type: parent,\n })\n hiddenGetter(current, OWN_PROPS_NAME, subOwnownProps)\n return subtype(current)\n },\n }\n }\n },\n}\n","import {startCase} from 'lodash'\n\nimport * as types from './types'\nimport {lazyGetter} from './types/utils'\n\ninterface ExtendHelper {\n /** Creates a new type based on the definition. */\n (memberDef: any): any\n\n cached(def: any): any\n cachedField(fieldDef: any): any\n cachedObjectField(fieldDef: any): any\n}\n\nfunction compileRegistry(schemaDef: any) {\n const registry = Object.create(null)\n let localTypeNames: string[]\n\n if (schemaDef.parent) {\n Object.assign(registry, schemaDef.parent._registry)\n localTypeNames = []\n } else {\n // For the root schema we inherit from the core types and also register these as the \"local\" ones.\n Object.assign(registry, types)\n localTypeNames = Object.keys(types)\n }\n\n const defsByName = schemaDef.types.reduce((acc: any, def: any) => {\n if (acc[def.name]) {\n throw new Error(`Duplicate type name added to schema: ${def.name}`)\n }\n acc[def.name] = def\n return acc\n }, {})\n\n const memberCache = new Map()\n const fieldCache = new Map()\n const objectFieldCache = new Map()\n\n const extendHelper: ExtendHelper = Object.assign(extendMember, {\n cached(def: any) {\n let member = memberCache.get(def)\n if (!member) {\n member = extendMember(def)\n memberCache.set(def, member)\n }\n return member\n },\n\n cachedField(fieldDef: any) {\n let field = fieldCache.get(fieldDef)\n if (!field) {\n const {name, ...type} = fieldDef\n field = {\n name,\n type: extendMember(type),\n }\n fieldCache.set(fieldDef, field)\n }\n return field\n },\n\n cachedObjectField(fieldDef: any) {\n let field = objectFieldCache.get(fieldDef)\n if (!field) {\n const {name, fieldset, group, ...rest} = fieldDef\n\n field = {\n name,\n group,\n fieldset,\n }\n\n lazyGetter(field, 'type', () => {\n return extendMember({\n ...rest,\n title: fieldDef.title || startCase(name),\n })\n })\n objectFieldCache.set(fieldDef, field)\n }\n return field\n },\n })\n\n schemaDef.types.forEach(add)\n\n return {\n registry,\n localTypeNames,\n }\n\n function ensure(typeName: any) {\n if (!registry[typeName]) {\n if (!defsByName[typeName]) {\n throw new Error(`Unknown type: ${typeName}`)\n }\n add(defsByName[typeName])\n }\n }\n\n function extendMember(memberDef: any) {\n ensure(memberDef.type)\n return registry[memberDef.type].extend(memberDef, extendHelper).get()\n }\n\n function add(typeDef: any) {\n ensure(typeDef.type)\n if (registry[typeDef.name]) {\n return\n }\n localTypeNames.push(typeDef.name)\n registry[typeDef.name] = registry[typeDef.type].extend(typeDef, extendMember)\n }\n}\n\n/**\n * @beta\n */\nexport class Schema {\n _original: {name: string; types: any[]; parent?: Schema}\n _registry: {[typeName: string]: any}\n #localTypeNames: string[]\n\n static compile(schemaDef: any): Schema {\n return new Schema(schemaDef)\n }\n\n constructor(schemaDef: any) {\n this._original = schemaDef\n\n const {registry, localTypeNames} = compileRegistry(schemaDef)\n this._registry = registry\n this.#localTypeNames = localTypeNames\n }\n\n get name(): string {\n return this._original.name\n }\n\n /**\n * Returns the parent schema.\n */\n get parent(): Schema | undefined {\n return this._original.parent\n }\n\n get(name: string): any {\n return this._registry[name] && this._registry[name].get()\n }\n\n has(name: string): boolean {\n return name in this._registry\n }\n\n getTypeNames(): string[] {\n return Object.keys(this._registry)\n }\n\n getLocalTypeNames(): string[] {\n return this.#localTypeNames\n }\n}\n\n/**\n * @deprecated Use `import {Schema} from \"@sanity/schema\"` instead\n */\nexport class DeprecatedDefaultSchema extends Schema {\n static compile(schemaDef: any): Schema {\n return new DeprecatedDefaultSchema(schemaDef)\n }\n\n constructor(schemaDef: any) {\n super(schemaDef)\n\n const stack = new Error(\n 'The default export of `@sanity/schema` is deprecated. Use `import {Schema} from \"@sanity/schema\"` instead.',\n ).stack!.replace(/^Error/, 'Warning')\n\n console.warn(stack)\n }\n}\n","import {\n type CustomValidator,\n type FieldReference,\n type FieldRules,\n type LocalizedValidationMessages,\n type MediaAssetTypes,\n type MediaValidator,\n type Rule as IRule,\n type RuleClass,\n type RuleSpec,\n type RuleSpecConstraint,\n type RuleTypeConstraint,\n type SchemaType,\n type ValidationContext,\n type ValidationMarker,\n} from '@sanity/types'\nimport {cloneDeep} from 'lodash'\n\nconst FIELD_REF = Symbol('FIELD_REF')\nconst ruleConstraintTypes: RuleTypeConstraint[] = [\n 'Array',\n 'Boolean',\n 'Date',\n 'Number',\n 'Object',\n 'String',\n]\n\n/**\n * Core Rule implementation without validation logic.\n * This is the base Rule class that can be extended with validation logic.\n *\n * @internal\n */\nexport const Rule: RuleClass = class Rule implements IRule {\n static readonly FIELD_REF = FIELD_REF\n static array = (def?: SchemaType): Rule => new Rule(def).type('Array')\n static object = (def?: SchemaType): Rule => new Rule(def).type('Object')\n static string = (def?: SchemaType): Rule => new Rule(def).type('String')\n static number = (def?: SchemaType): Rule => new Rule(def).type('Number')\n static boolean = (def?: SchemaType): Rule => new Rule(def).type('Boolean')\n static dateTime = (def?: SchemaType): Rule => new Rule(def).type('Date')\n static valueOfField = (path: string | string[]): {type: symbol; path: string | string[]} => ({\n type: FIELD_REF,\n path,\n })\n\n _type: RuleTypeConstraint | undefined = undefined\n _level: 'error' | 'warning' | 'info' | undefined = undefined\n _required: 'required' | 'optional' | undefined = undefined\n _typeDef: SchemaType | undefined = undefined\n _message: string | LocalizedValidationMessages | undefined = undefined\n _rules: RuleSpec[] = []\n _fieldRules: FieldRules | undefined = undefined\n\n constructor(typeDef?: SchemaType) {\n this._typeDef = typeDef\n this.reset()\n }\n\n private _mergeRequired(next: Rule) {\n if (this._required === 'required' || next._required === 'required') return 'required'\n if (this._required === 'optional' || next._required === 'optional') return 'optional'\n return undefined\n }\n\n // Alias to static method, since we often have access to an _instance_ of a rule but not the actual Rule class\n valueOfField = Rule.valueOfField.bind(Rule)\n\n error(message?: string | LocalizedValidationMessages): Rule {\n const rule = this.clone()\n rule._level = 'error'\n rule._message = message || undefined\n return rule\n }\n\n warning(message?: string | LocalizedValidationMessages): Rule {\n const rule = this.clone()\n rule._level = 'warning'\n rule._message = message || undefined\n return rule\n }\n\n info(message?: string | LocalizedValidationMessages): Rule {\n const rule = this.clone()\n rule._level = 'info'\n rule._message = message || undefined\n return rule\n }\n\n reset(): this {\n this._type = this._type || undefined\n this._rules = (this._rules || []).filter((rule) => rule.flag === 'type')\n this._message = undefined\n this._required = undefined\n this._level = 'error'\n this._fieldRules = undefined\n return this\n }\n\n isRequired(): boolean {\n return this._required === 'required'\n }\n\n clone(): Rule {\n const rule = new Rule()\n rule._type = this._type\n rule._message = this._message\n rule._required = this._required\n rule._rules = cloneDeep(this._rules)\n rule._level = this._level\n rule._fieldRules = this._fieldRules\n rule._typeDef = this._typeDef\n return rule\n }\n\n cloneWithRules(rules: RuleSpec[]): Rule {\n const rule = this.clone()\n const newRules = new Set()\n rules.forEach((curr) => {\n if (curr.flag === 'type') {\n rule._type = curr.constraint\n }\n\n newRules.add(curr.flag)\n })\n\n rule._rules = rule._rules\n .filter((curr) => {\n const disallowDuplicate = ['type', 'uri', 'email'].includes(curr.flag)\n const isDuplicate = newRules.has(curr.flag)\n return !(disallowDuplicate && isDuplicate)\n })\n .concat(rules)\n\n return rule\n }\n\n merge(rule: Rule): Rule {\n if (this._type && rule._type && this._type !== rule._type) {\n throw new Error('merge() failed: conflicting types')\n }\n\n const newRule = this.cloneWithRules(rule._rules)\n newRule._type = this._type || rule._type\n newRule._message = this._message || rule._message\n newRule._required = this._mergeRequired(rule)\n newRule._level = this._level === 'error' ? rule._level : this._level\n return newRule\n }\n\n // Validation flag setters\n type(targetType: RuleTypeConstraint | Lowercase<RuleTypeConstraint>): Rule {\n const type = `${targetType.slice(0, 1).toUpperCase()}${targetType.slice(1)}` as Capitalize<\n typeof targetType\n >\n\n if (!ruleConstraintTypes.includes(type)) {\n throw new Error(`Unknown type \"${targetType}\"`)\n }\n\n const rule = this.cloneWithRules([{flag: 'type', constraint: type}])\n rule._type = type\n return rule\n }\n\n all(children: Rule[]): Rule {\n return this.cloneWithRules([{flag: 'all', constraint: children}])\n }\n\n either(children: Rule[]): Rule {\n return this.cloneWithRules([{flag: 'either', constraint: children}])\n }\n\n // Shared rules\n optional(): Rule {\n const rule = this.cloneWithRules([{flag: 'presence', constraint: 'optional'}])\n rule._required = 'optional'\n return rule\n }\n\n required(): Rule {\n const rule = this.cloneWithRules([{flag: 'presence', constraint: 'required'}])\n rule._required = 'required'\n return rule\n }\n\n custom<T = unknown>(\n fn: CustomValidator<T>,\n options: {bypassConcurrencyLimit?: boolean} = {},\n ): Rule {\n if (options.bypassConcurrencyLimit) {\n Object.assign(fn, {bypassConcurrencyLimit: true})\n }\n return this.cloneWithRules([{flag: 'custom', constraint: fn as CustomValidator}])\n }\n\n min(len: number | string | FieldReference): Rule {\n return this.cloneWithRules([{flag: 'min', constraint: len}])\n }\n\n max(len: number | string | FieldReference): Rule {\n return this.cloneWithRules([{flag: 'max', constraint: len}])\n }\n\n length(len: number | FieldReference): Rule {\n return this.cloneWithRules([{flag: 'length', constraint: len}])\n }\n\n valid(value: unknown | unknown[]): Rule {\n const values = Array.isArray(value) ? value : [value]\n return this.cloneWithRules([{flag: 'valid', constraint: values}])\n }\n\n // Numbers only\n integer(): Rule {\n return this.cloneWithRules([{flag: 'integer'}])\n }\n\n precision(limit: number | FieldReference): Rule {\n return this.cloneWithRules([{flag: 'precision', constraint: limit}])\n }\n\n positive(): Rule {\n return this.cloneWithRules([{flag: 'min', constraint: 0}])\n }\n\n negative(): Rule {\n return this.cloneWithRules([{flag: 'lessThan', constraint: 0}])\n }\n\n greaterThan(num: number | FieldReference): Rule {\n return this.cloneWithRules([{flag: 'greaterThan', constraint: num}])\n }\n\n lessThan(num: number | FieldReference): Rule {\n return this.cloneWithRules([{flag: 'lessThan', constraint: num}])\n }\n\n // String only\n uppercase(): Rule {\n return this.cloneWithRules([{flag: 'stringCasing', constraint: 'uppercase'}])\n }\n\n lowercase(): Rule {\n return this.cloneWithRules([{flag: 'stringCasing', constraint: 'lowercase'}])\n }\n\n regex(pattern: RegExp, name: string, options: {name?: string; invert?: boolean}): Rule\n regex(pattern: RegExp, options: {name?: string; invert?: boolean}): Rule\n regex(pattern: RegExp, name: string): Rule\n regex(pattern: RegExp): Rule\n regex(\n pattern: RegExp,\n a?: string | {name?: string; invert?: boolean},\n b?: {name?: string; invert?: boolean},\n ): Rule {\n const name = typeof a === 'string' ? a : (a?.name ?? b?.name)\n const invert = typeof a === 'string' ? false : (a?.invert ?? b?.invert)\n\n const constraint: RuleSpecConstraint<'regex'> = {\n pattern,\n name,\n invert: invert || false,\n }\n\n return this.cloneWithRules([{flag: 'regex', constraint}])\n }\n\n email(): Rule {\n return this.cloneWithRules([{flag: 'email'}])\n }\n\n uri(opts?: {\n scheme?: (string | RegExp) | Array<string | RegExp>\n allowRelative?: boolean\n relativeOnly?: boolean\n allowCredentials?: boolean\n }): Rule {\n const optsScheme = opts?.scheme || ['http', 'https']\n const schemes = Array.isArray(optsScheme) ? optsScheme : [optsScheme]\n\n if (!schemes.length) {\n throw new Error('scheme must have at least 1 scheme specified')\n }\n\n const constraint: RuleSpecConstraint<'uri'> = {\n options: {\n scheme: schemes.map((scheme) => {\n if (!(scheme instanceof RegExp) && typeof scheme !== 'string') {\n throw new Error('scheme must be a RegExp or a String')\n }\n\n return typeof scheme === 'string' ? new RegExp(`^${escapeRegex(scheme)}$`) : scheme\n }),\n allowRelative: opts?.allowRelative || false,\n relativeOnly: opts?.relativeOnly || false,\n allowCredentials: opts?.allowCredentials || false,\n },\n }\n\n return this.cloneWithRules([{flag: 'uri', constraint}])\n }\n\n // Array only\n unique(): Rule {\n return this.cloneWithRules([{flag: 'unique'}])\n }\n\n // Objects only\n reference(): Rule {\n return this.cloneWithRules([{flag: 'reference'}])\n }\n\n fields(rules: FieldRules): Rule {\n if (this._type !== 'Object') {\n throw new Error('fields() can only be called on an object type')\n }\n\n const rule = this.cloneWithRules([])\n rule._fieldRules = rules\n return rule\n }\n\n assetRequired(): Rule {\n const base = getBaseType(this._typeDef)\n let assetType: 'asset' | 'image' | 'file'\n if (base && ['image', 'file'].includes(base.name)) {\n assetType = base.name === 'image' ? 'image' : 'file'\n } else {\n assetType = 'asset'\n }\n\n return this.cloneWithRules([{flag: 'assetRequired', constraint: {assetType}}])\n }\n\n media<T extends MediaAssetTypes = MediaAssetTypes>(fn: MediaValidator<T>): Rule {\n return this.cloneWithRules([{flag: 'media', constraint: fn}])\n }\n\n /**\n * The validate method is not implemented in the base Rule class.\n * It should be implemented by extending this class or injecting validation logic.\n */\n async validate(\n value: unknown,\n options: ValidationContext & {\n __internal?: {\n customValidationConcurrencyLimiter?: {\n ready: () => Promise<void>\n release: () => void\n }\n }\n },\n ): Promise<ValidationMarker[]> {\n throw new Error('validate() method must be implemented by extending Rule class')\n }\n}\n\n// Helper functions\nfunction getBaseType(type: SchemaType | undefined): SchemaType | undefined {\n return type && type.type ? getBaseType(type.type) : type\n}\n\nfunction escapeRegex(string: string): string {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n}\n"],"names":["OVERRIDABLE_FIELDS","asString","guessPreviewConfig","Rule","INHERITED_FIELDS","DEFAULT_OPTIONS","REF_FIELD","WEAK_FIELD","REFERENCE_FIELDS","humanize","buildTitle","ASSET_FIELD","MEDIA_LIBRARY_ASSET_FIELD"],"mappings":"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"}
@@ -1,3 +1,5 @@
1
+ import {Rule} from '@sanity/types'
2
+ import {SanityDocument} from '@sanity/types'
1
3
  import {Schema} from '@sanity/types'
2
4
  import {SchemaType} from '@sanity/types'
3
5
  import {SchemaType as SchemaType_2} from 'groq-js'
@@ -8,30 +10,242 @@ import {SetSynchronization} from '@sanity/descriptors'
8
10
  import {SynchronizationRequest} from '@sanity/descriptors'
9
11
  import {SynchronizationResult} from '@sanity/descriptors'
10
12
 
11
- export declare const builtinTypes: {
13
+ export declare const ALL_FIELDS_GROUP_NAME = 'all-fields'
14
+
15
+ export declare const builtinTypes: (
16
+ | {
17
+ title: string
18
+ name: string
19
+ type: string
20
+ fields: {
21
+ name: string
22
+ type: string
23
+ title: string
24
+ }[]
25
+ }
26
+ | {
27
+ name: string
28
+ title: string
29
+ type: string
30
+ fieldsets: {
31
+ name: string
32
+ title: string
33
+ description: string
34
+ }[]
35
+ fields: (
36
+ | {
37
+ name: string
38
+ type: string
39
+ title: string
40
+ readOnly: boolean
41
+ fieldset?: undefined
42
+ hidden?: undefined
43
+ }
44
+ | {
45
+ name: string
46
+ type: string
47
+ title: string
48
+ readOnly?: undefined
49
+ fieldset?: undefined
50
+ hidden?: undefined
51
+ }
52
+ | {
53
+ name: string
54
+ type: string
55
+ title: string
56
+ readOnly: boolean
57
+ fieldset: string
58
+ hidden?: undefined
59
+ }
60
+ | {
61
+ name: string
62
+ type: string
63
+ readOnly: boolean
64
+ hidden: boolean
65
+ fieldset: string
66
+ title?: undefined
67
+ }
68
+ )[]
69
+ preview: {
70
+ select: {
71
+ id: string
72
+ title: string
73
+ mimeType: string
74
+ size: string
75
+ media: string
76
+ }
77
+ prepare(doc: Partial<SanityDocument>): {
78
+ title: {}
79
+ media: {
80
+ media?: {} | undefined
81
+ asset: {
82
+ _ref: unknown
83
+ }
84
+ }
85
+ subtitle: string
86
+ }
87
+ }
88
+ orderings: {
89
+ title: string
90
+ name: string
91
+ by: {
92
+ field: string
93
+ direction: string
94
+ }[]
95
+ }[]
96
+ }
97
+ | {
98
+ name: string
99
+ title: string
100
+ type: string
101
+ fieldsets: {
102
+ name: string
103
+ title: string
104
+ description: string
105
+ }[]
106
+ fields: (
107
+ | {
108
+ name: string
109
+ type: string
110
+ title: string
111
+ readOnly: boolean
112
+ fieldset?: undefined
113
+ hidden?: undefined
114
+ }
115
+ | {
116
+ name: string
117
+ type: string
118
+ title: string
119
+ readOnly?: undefined
120
+ fieldset?: undefined
121
+ hidden?: undefined
122
+ }
123
+ | {
124
+ name: string
125
+ type: string
126
+ title: string
127
+ readOnly: boolean
128
+ fieldset: string
129
+ hidden?: undefined
130
+ }
131
+ | {
132
+ name: string
133
+ type: string
134
+ readOnly: boolean
135
+ hidden: boolean
136
+ fieldset: string
137
+ title?: undefined
138
+ }
139
+ )[]
140
+ preview: {
141
+ select: {
142
+ title: string
143
+ path: string
144
+ mimeType: string
145
+ size: string
146
+ }
147
+ prepare(doc: Record<string, any>): {
148
+ title: any
149
+ subtitle: string
150
+ }
151
+ }
152
+ orderings: {
153
+ title: string
154
+ name: string
155
+ by: {
156
+ field: string
157
+ direction: string
158
+ }[]
159
+ }[]
160
+ }
161
+ | {
162
+ name: string
163
+ title: string
164
+ type: string
165
+ fields: {
166
+ name: string
167
+ type: string
168
+ validation: (Rule: Rule) => Rule
169
+ }[]
170
+ }
171
+ | {
172
+ name: string
173
+ title: string
174
+ type: string
175
+ fieldsets: {
176
+ name: string
177
+ title: string
178
+ options: {
179
+ collapsable: boolean
180
+ }
181
+ }[]
182
+ fields: (
183
+ | {
184
+ name: string
185
+ type: string
186
+ title?: undefined
187
+ fieldset?: undefined
188
+ readOnly?: undefined
189
+ }
190
+ | {
191
+ name: string
192
+ title: string
193
+ type: string
194
+ fieldset: string
195
+ readOnly?: undefined
196
+ }
197
+ | {
198
+ name: string
199
+ title: string
200
+ type: string
201
+ readOnly: boolean
202
+ fieldset?: undefined
203
+ }
204
+ )[]
205
+ }
206
+ )[]
207
+
208
+ export declare function createSchemaFromManifestTypes(schemaDef: {
12
209
  name: string
13
- title: string
14
- type: string
15
- fields: {
16
- name: string
17
- type: string
18
- }[]
19
- }[]
210
+ types: unknown[]
211
+ }): Schema_2
20
212
 
21
213
  export declare const DEFAULT_MAX_FIELD_DEPTH = 5
22
214
 
23
215
  export declare class DescriptorConverter {
24
- opts: Options
25
216
  cache: WeakMap<Schema, SetSynchronization<RegistryType>>
26
- constructor(opts: Options)
27
217
  /**
28
218
  * Returns a synchronization object for a schema.
29
219
  *
30
220
  * This is automatically cached in a weak map.
31
221
  */
32
- get(schema: Schema): SetSynchronization<RegistryType>
222
+ get(
223
+ schema: Schema,
224
+ opts?: {
225
+ /**
226
+ * If present, this will use an idle scheduler which records duration into this array.
227
+ * This option will be ignored if the `scheduler` option is passed in.
228
+ **/
229
+ pauseDurations?: number[]
230
+ /** An explicit scheduler to do the work. */
231
+ scheduler?: Scheduler
232
+ },
233
+ ): Promise<SetSynchronization<RegistryType>>
33
234
  }
34
235
 
236
+ /**
237
+ * Extracts a GROQ-compatible schema from a Sanity schema definition. The extraction happens in three passes:
238
+ *
239
+ * 1. **Dependency analysis & hoisting detection** (`sortByDependencies`): Walks the entire schema to sort
240
+ * types topologically and identifies inline object fields that are used multiple times (candidates
241
+ * for "hoisting").
242
+ *
243
+ * 2. **Hoisted type creation**: For any repeated inline fields, we create top-level named type definitions
244
+ * first, so they exist before being referenced.
245
+ *
246
+ * 3. **Main type conversion**: Processes each schema type in dependency order. When a field was marked for
247
+ * hoisting, we emit an `inline` reference to the hoisted type instead of duplicating the structure.
248
+ */
35
249
  export declare function extractSchema(
36
250
  schemaDef: Schema,
37
251
  extractOptions?: ExtractSchemaOptions,
@@ -53,15 +267,9 @@ export declare function groupProblems(types: SchemaTypeDefinition[]): SchemaVali
53
267
 
54
268
  export declare const isActionEnabled: (schemaType: SchemaType, action: string) => boolean
55
269
 
56
- /**
57
- * Options used when converting the schema.
58
- *
59
- * We know we need this in order to handle validations.
60
- **/
61
- declare type Options = Record<never, never>
62
-
63
- declare interface Options_2 {
270
+ declare interface Options {
64
271
  transformTypeVisitors?: (visitors: typeof typeVisitors) => Partial<typeof typeVisitors>
272
+ transformCommonVisitors?: (visitors: any[]) => any[]
65
273
  }
66
274
 
67
275
  /**
@@ -112,6 +320,39 @@ export declare function resolveSearchConfig(type: any, maxDepth?: number): any
112
320
 
113
321
  export declare function resolveSearchConfigForBaseFieldPaths(type: any, maxDepth?: number): any
114
322
 
323
+ /** The scheduler is capable of executing work in different ways. */
324
+ declare type Scheduler = {
325
+ map<T, U>(arr: T[], fn: (val: T) => U): Promise<U[]>
326
+ forEach<T>(arr: T[], fn: (val: T) => void): Promise<void>
327
+ forEachIter<T>(iter: Iterable<T>, fn: (val: T) => void): Promise<void>
328
+ }
329
+
330
+ /**
331
+ * @beta
332
+ */
333
+ declare class Schema_2 {
334
+ #private
335
+ _original: {
336
+ name: string
337
+ types: any[]
338
+ parent?: Schema_2
339
+ }
340
+ _registry: {
341
+ [typeName: string]: any
342
+ }
343
+ static compile(schemaDef: any): Schema_2
344
+ constructor(schemaDef: any)
345
+ get name(): string
346
+ /**
347
+ * Returns the parent schema.
348
+ */
349
+ get parent(): Schema_2 | undefined
350
+ get(name: string): any
351
+ has(name: string): boolean
352
+ getTypeNames(): string[]
353
+ getLocalTypeNames(): string[]
354
+ }
355
+
115
356
  export declare type SchemaSynchronizationRequest = SynchronizationRequest
116
357
 
117
358
  export declare type SchemaSynchronizationResult = SynchronizationResult
@@ -173,7 +414,7 @@ export declare function validateMediaLibraryAssetAspect(
173
414
  */
174
415
  export declare function validateSchema(
175
416
  schemaTypes: FIXME,
176
- {transformTypeVisitors}?: Options_2,
417
+ {transformTypeVisitors, transformCommonVisitors}?: Options,
177
418
  ): {
178
419
  get(typeName: string): any
179
420
  has(typeName: string): boolean
@@ -182,4 +423,9 @@ export declare function validateSchema(
182
423
  toJSON(): any[]
183
424
  }
184
425
 
426
+ export declare class ValidationError extends Error {
427
+ problems: SchemaValidationProblemGroup[]
428
+ constructor(problems: SchemaValidationProblemGroup[])
429
+ }
430
+
185
431
  export {}