@sanity/validation 3.14.4 → 6.12.0-next.112

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.
Files changed (40) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +52 -0
  3. package/lib/_internal.d.ts +96 -0
  4. package/lib/_internal.js +39 -0
  5. package/lib/_internal.js.map +1 -0
  6. package/lib/index.d.ts +2 -0
  7. package/lib/index.js +2 -1306
  8. package/lib/validateDocument-6pLTIHIn.d.ts +277 -0
  9. package/lib/validateDocument-Cq33kUmN.js +1127 -0
  10. package/lib/validateDocument-Cq33kUmN.js.map +1 -0
  11. package/package.json +53 -45
  12. package/lib/dts/src/index.d.ts +0 -50
  13. package/lib/index.cjs.mjs +0 -9
  14. package/lib/index.esm.js +0 -1286
  15. package/lib/index.esm.js.map +0 -1
  16. package/lib/index.js.map +0 -1
  17. package/src/Rule.ts +0 -424
  18. package/src/ValidationError.ts +0 -32
  19. package/src/index.ts +0 -9
  20. package/src/inferFromSchema.ts +0 -19
  21. package/src/inferFromSchemaType.ts +0 -50
  22. package/src/util/convertToValidationMarker.ts +0 -84
  23. package/src/util/deepEquals.ts +0 -77
  24. package/src/util/escapeRegex.ts +0 -5
  25. package/src/util/normalizeValidationRules.test.ts +0 -170
  26. package/src/util/normalizeValidationRules.ts +0 -118
  27. package/src/util/pathToString.ts +0 -21
  28. package/src/util/requestIdleCallback.ts +0 -31
  29. package/src/util/typeString.test.ts +0 -27
  30. package/src/util/typeString.ts +0 -23
  31. package/src/validateDocument.test.ts +0 -703
  32. package/src/validateDocument.ts +0 -240
  33. package/src/validators/arrayValidator.ts +0 -100
  34. package/src/validators/booleanValidator.ts +0 -16
  35. package/src/validators/dateValidator.ts +0 -113
  36. package/src/validators/genericValidator.ts +0 -117
  37. package/src/validators/numberValidator.ts +0 -66
  38. package/src/validators/objectValidator.ts +0 -64
  39. package/src/validators/slugValidator.ts +0 -117
  40. package/src/validators/stringValidator.ts +0 -120
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.esm.js","sources":["../src/ValidationError.ts","../src/util/escapeRegex.ts","../src/util/pathToString.ts","../src/util/convertToValidationMarker.ts","../src/util/typeString.ts","../src/util/deepEquals.ts","../src/validators/genericValidator.ts","../src/validators/booleanValidator.ts","../src/validators/numberValidator.ts","../src/validators/stringValidator.ts","../src/validators/arrayValidator.ts","../src/validators/objectValidator.ts","../src/validators/dateValidator.ts","../src/Rule.ts","../src/util/requestIdleCallback.ts","../src/validators/slugValidator.ts","../src/util/normalizeValidationRules.ts","../src/validateDocument.ts","../src/inferFromSchemaType.ts","../src/inferFromSchema.ts"],"sourcesContent":["import {\n Path,\n ValidationMarker,\n ValidationError as IValidationError,\n ValidationErrorOptions,\n ValidationErrorClass,\n} from '@sanity/types'\n\n// Follows the same pattern as Rule and RuleClass. @see Rule\nconst ValidationError: ValidationErrorClass = class ValidationError implements IValidationError {\n message: string\n paths: Path[]\n children: ValidationMarker[] | undefined\n operation: 'AND' | 'OR' | undefined\n\n constructor(message: string, options: ValidationErrorOptions = {}) {\n this.message = message\n this.paths = options.paths || []\n this.children = options.children\n this.operation = options.operation\n }\n\n cloneWithMessage(msg: string): ValidationError {\n return new ValidationError(msg, {\n paths: this.paths,\n children: this.children,\n operation: this.operation,\n })\n }\n}\n\nexport default ValidationError\n","/* eslint-disable no-useless-escape */\nexport default (string: string): string => {\n // Escape ^$.*+-?=!:|\\/()[]{},\n return string.replace(/[\\^\\$\\.\\*\\+\\-\\?\\=\\!\\:\\|\\\\\\/\\(\\)\\[\\]\\{\\}\\,]/g, '\\\\$&')\n}\n","import {Path, isKeyedObject} from '@sanity/types'\n\nexport default function pathToString(path: Path | undefined = []): string {\n return path.reduce<string>((target, segment, i) => {\n const segmentType = typeof segment\n if (segmentType === 'number') {\n return `${target}[${segment}]`\n }\n\n if (segmentType === 'string') {\n const separator = i === 0 ? '' : '.'\n return `${target}${separator}${segment}`\n }\n\n if (isKeyedObject(segment)) {\n return `${target}[_key==\"${segment._key}\"]`\n }\n\n throw new Error(`Unsupported path segment \"${segment}\"`)\n }, '')\n}\n","import {ValidationMarker, ValidationError, ValidationContext} from '@sanity/types'\nimport ValidationErrorClass from '../ValidationError'\nimport pathToString from '../util/pathToString'\n\ntype ValidationErrorLike = Pick<ValidationError, 'message'> & Partial<ValidationError>\n\nexport function isNonNullable<T>(t: T): t is NonNullable<T> {\n return t !== null || t !== undefined\n}\n\nexport function convertToValidationMarker(\n validatorResult:\n | true\n | true[]\n | string\n | string[]\n | ValidationError\n | ValidationError[]\n | ValidationErrorLike\n | ValidationErrorLike[],\n level: 'error' | 'warning' | 'info' | undefined,\n context: ValidationContext\n): ValidationMarker[] {\n if (!context) {\n throw new Error('missing context')\n }\n\n if (validatorResult === true) return []\n\n if (Array.isArray(validatorResult)) {\n return validatorResult\n .flatMap((child) => convertToValidationMarker(child, level, context))\n .filter(isNonNullable)\n }\n\n if (typeof validatorResult === 'string') {\n return convertToValidationMarker(new ValidationErrorClass(validatorResult), level, context)\n }\n\n if (!(validatorResult instanceof ValidationErrorClass)) {\n // in order to accept the `ValidationErrorLike`, it at least needs to have\n // a `message` in the object\n if (typeof validatorResult?.message !== 'string') {\n throw new Error(\n `${pathToString(\n context.path\n )}: Validator must return 'true' if valid or an error message as a string on errors`\n )\n }\n\n // this is the occurs when an object is returned that wasn't created with the\n // `ValidationErrorClass`. in this case, we want to convert it to a class\n return convertToValidationMarker(\n new ValidationErrorClass(validatorResult.message, validatorResult),\n level,\n context\n )\n }\n\n const results: ValidationMarker[] = []\n\n // the validator result does not include any item-level relative paths,\n // then just return the top-level path with the validation result\n if (!validatorResult.paths?.length) {\n return [\n {\n level: level || 'error',\n item: validatorResult,\n path: context.path || [],\n },\n ]\n }\n\n // if the validator result did include item-level relative paths, then for\n // each item-level relative path, create a validation marker that concatenates\n // the relative path with the path from the validation context\n return results.concat(\n validatorResult.paths.map((path) => ({\n path: (context.path || []).concat(path),\n level: level || 'error',\n item: validatorResult,\n }))\n )\n}\n","// this file was adapted from a previous dependency `type-of-is`\n// https://github.com/stephenhandley/type-of-is/blob/7138a7e79f5af7c286bf8123f60843a91aaebf38/index.js\nconst _toString = {}.toString\n\nconst builtIns = [Object, Function, Array, String, Boolean, Number, Date, RegExp, Error]\n\nfunction isBuiltIn(_constructor: unknown) {\n for (let i = 0; i < builtIns.length; i++) {\n if (builtIns[i] === _constructor) return true\n }\n return false\n}\n\nexport default function typeString(obj: unknown): string {\n // [object Blah] -> Blah\n const stringType = _toString.call(obj).slice(8, -1)\n if (obj === null || obj === undefined) return stringType.toLowerCase()\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n const constructorType = (obj as object).constructor\n if (constructorType && !isBuiltIn(constructorType)) return constructorType.name\n return stringType\n}\n","/**\n * Modified version of fast-deep-equal (https://github.com/epoberezkin/fast-deep-equal)\n * MIT-licensed, copyright (c) 2017 Evgeny Poberezkin\n **/\n\n// NOTE: when converting to typescript, some of the checks were inlined (vs\n// having them in a variable) because the type predicate type narrowing only\n// works when type predicate is called inline in the condition that starts the\n// control flow branch.\n// see here: https://www.typescriptlang.org/docs/handbook/2/narrowing.html\nexport default function deepEquals(a: unknown, b: unknown): boolean {\n if (a === b) {\n return true\n }\n\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length != b.length) return false\n for (let i = 0; i < a.length; i++) {\n if (!deepEquals(a[i], b[i])) {\n return false\n }\n }\n return true\n }\n\n if (Array.isArray(a) != Array.isArray(b)) {\n return false\n }\n\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n const keys = Object.keys(a)\n if (keys.length !== Object.keys(b).length) {\n return false\n }\n\n if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime()\n }\n\n if (a instanceof Date != b instanceof Date) {\n return false\n }\n\n if (a instanceof RegExp && b instanceof RegExp) {\n return a.toString() == b.toString()\n }\n\n if (a instanceof RegExp != b instanceof RegExp) {\n return false\n }\n\n for (let i = 0; i < keys.length; i++) {\n if (keys[i] === '_key') {\n continue\n }\n\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) {\n return false\n }\n }\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i] as keyof typeof a\n if (key === '_key') {\n continue\n }\n\n if (!deepEquals(a[key], b[key])) {\n return false\n }\n }\n\n return true\n }\n\n return false\n}\n","import {ValidationMarker, Validators} from '@sanity/types'\nimport typeString from '../util/typeString'\nimport deepEquals from '../util/deepEquals'\nimport pathToString from '../util/pathToString'\nimport ValidationErrorClass from '../ValidationError'\n\nconst SLOW_VALIDATOR_TIMEOUT = 5000\n\nconst formatValidationErrors = (options: {\n message: string | undefined\n results: ValidationMarker[]\n operation: 'AND' | 'OR'\n}) => {\n let message\n\n if (options.message) {\n message = options.message\n } else if (options.results.length === 1) {\n message = options.results[0]?.item.message\n } else {\n message = `[${options.results\n .map((err) => err.item.message)\n .join(` - ${options.operation} - `)}]`\n }\n\n return new ValidationErrorClass(message, {\n children: options.results.length > 1 ? options.results : undefined,\n operation: options.operation,\n })\n}\n\nconst genericValidators: Validators = {\n type: (expected, value, message) => {\n const actualType = typeString(value)\n if (actualType !== expected && actualType !== 'undefined') {\n return message || `Expected type \"${expected}\", got \"${actualType}\"`\n }\n\n return true\n },\n\n presence: (expected, value, message) => {\n if (value === undefined && expected === 'required') {\n return message || 'Value is required'\n }\n\n return true\n },\n\n all: async (children, value, message, context) => {\n const resolved = await Promise.all(children.map((child) => child.validate(value, context)))\n const results = resolved.flat()\n\n if (!results.length) return true\n\n return formatValidationErrors({\n message,\n results,\n operation: 'AND',\n })\n },\n\n either: async (children, value, message, context) => {\n const resolved = await Promise.all(children.map((child) => child.validate(value, context)))\n const results = resolved.flat()\n\n // Read: There is at least one rule that matched\n if (results.length < children.length) return true\n\n return formatValidationErrors({\n message,\n results,\n operation: 'OR',\n })\n },\n\n valid: (allowedValues, actual, message) => {\n const valueType = typeof actual\n if (valueType === 'undefined') {\n return true\n }\n\n const value = (valueType === 'number' || valueType === 'string') && `${actual}`\n const strValue = value && value.length > 30 ? `${value.slice(0, 30)}…` : value\n\n const defaultMessage = value\n ? `Value \"${strValue}\" did not match any allowed values`\n : 'Value did not match any allowed values'\n\n return allowedValues.some((expected) => deepEquals(expected, actual))\n ? true\n : message || defaultMessage\n },\n\n custom: async (fn, value, message, context) => {\n const slowTimer = setTimeout(() => {\n // eslint-disable-next-line no-console\n console.warn(\n `Custom validator at ${pathToString(\n context.path\n )} has taken more than ${SLOW_VALIDATOR_TIMEOUT}ms to respond`\n )\n }, SLOW_VALIDATOR_TIMEOUT)\n\n let result\n try {\n result = await fn(value, context)\n } finally {\n clearTimeout(slowTimer)\n }\n\n if (typeof result === 'string') return message || result\n return result\n },\n}\n\nexport default genericValidators\n","import {Validators} from '@sanity/types'\nimport genericValidator from './genericValidator'\n\nconst booleanValidators: Validators = {\n ...genericValidator,\n\n presence: (flag, value, message) => {\n if (flag === 'required' && typeof value !== 'boolean') {\n return message || 'Required'\n }\n\n return true\n },\n}\n\nexport default booleanValidators\n","import {Validators} from '@sanity/types'\nimport genericValidator from './genericValidator'\n\nconst precisionRx = /(?:\\.(\\d+))?(?:[eE]([+-]?\\d+))?$/\n\nconst numberValidators: Validators = {\n ...genericValidator,\n\n integer: (_unused, value, message) => {\n if (!Number.isInteger(value)) {\n return message || 'Must be an integer'\n }\n\n return true\n },\n\n precision: (limit, value, message) => {\n if (value === undefined) return true\n\n const places = value.toString().match(precisionRx)\n const decimals = Math.max(\n (places[1] ? places[1].length : 0) - (places[2] ? parseInt(places[2], 10) : 0),\n 0\n )\n\n if (decimals > limit) {\n return message || `Max precision is ${limit}`\n }\n\n return true\n },\n\n min: (minNum, value, message) => {\n if (value >= minNum) {\n return true\n }\n\n return message || `Must be greater than or equal ${minNum}`\n },\n\n max: (maxNum, value, message) => {\n if (value <= maxNum) {\n return true\n }\n\n return message || `Must be less than or equal ${maxNum}`\n },\n\n greaterThan: (num, value, message) => {\n if (value > num) {\n return true\n }\n\n return message || `Must be greater than ${num}`\n },\n\n lessThan: (maxNum, value, message) => {\n if (value < maxNum) {\n return true\n }\n\n return message || `Must be less than ${maxNum}`\n },\n}\n\nexport default numberValidators\n","import {Validators} from '@sanity/types'\nimport genericValidator from './genericValidator'\n\nconst DUMMY_ORIGIN = 'http://sanity'\nconst emailRegex =\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\nconst isRelativeUrl = (url: string) => /^\\.*\\//.test(url)\n\nconst stringValidators: Validators = {\n ...genericValidator,\n\n min: (minLength, value, message) => {\n if (!value || value.length >= minLength) {\n return true\n }\n\n return message || `Must be at least ${minLength} characters long`\n },\n\n max: (maxLength, value, message) => {\n if (!value || value.length <= maxLength) {\n return true\n }\n\n return message || `Must be at most ${maxLength} characters long`\n },\n\n length: (wantedLength, value, message) => {\n const strValue = value || ''\n if (strValue.length === wantedLength) {\n return true\n }\n\n return message || `Must be exactly ${wantedLength} characters long`\n },\n\n uri: (constraints, value, message) => {\n const strValue = value || ''\n const {options} = constraints\n const {allowCredentials, relativeOnly} = options\n const allowRelative = options.allowRelative || relativeOnly\n\n let url\n try {\n // WARNING: Safari checks for a given `base` param by looking at the length of arguments passed\n // to new URL(str, base), and will fail if invoked with new URL(strValue, undefined)\n url = allowRelative ? new URL(strValue, DUMMY_ORIGIN) : new URL(strValue)\n } catch (err) {\n return message || 'Not a valid URL'\n }\n\n if (relativeOnly && url.origin !== DUMMY_ORIGIN) {\n return message || 'Only relative URLs are allowed'\n }\n\n if (!allowRelative && url.origin === DUMMY_ORIGIN && isRelativeUrl(strValue)) {\n return message || 'Relative URLs are not allowed'\n }\n\n if (!allowCredentials && (url.username || url.password)) {\n return message || `Username/password not allowed`\n }\n\n const urlScheme = url.protocol.replace(/:$/, '')\n const matchesAllowedScheme = options.scheme.some((scheme) => scheme.test(urlScheme))\n if (!matchesAllowedScheme) {\n return message || 'Does not match allowed protocols/schemes'\n }\n\n return true\n },\n\n stringCasing: (casing, value, message) => {\n const strValue = value || ''\n if (casing === 'uppercase' && strValue !== strValue.toLocaleUpperCase()) {\n return message || `Must be all uppercase letters`\n }\n\n if (casing === 'lowercase' && strValue !== strValue.toLocaleLowerCase()) {\n return message || `Must be all lowercase letters`\n }\n\n return true\n },\n\n presence: (flag, value, message) => {\n if (flag === 'required' && !value) {\n return message || 'Required'\n }\n\n return true\n },\n\n regex: (options, value, message) => {\n const {pattern, name, invert} = options\n const regName = name || `\"${pattern.toString()}\"`\n const strValue = value || ''\n const matches = pattern.test(strValue)\n if ((!invert && !matches) || (invert && matches)) {\n const defaultMessage = invert\n ? `Should not match ${regName}-pattern`\n : `Does not match ${regName}-pattern`\n\n return message || defaultMessage\n }\n\n return true\n },\n\n email: (_unused, value, message) => {\n const strValue = `${value || ''}`.trim()\n if (!strValue || emailRegex.test(strValue)) {\n return true\n }\n\n return message || 'Must be a valid email address'\n },\n}\n\nexport default stringValidators\n","import {Path, PathSegment, Validators} from '@sanity/types'\nimport deepEquals from '../util/deepEquals'\nimport ValidationErrorClass from '../ValidationError'\nimport genericValidator from './genericValidator'\n\nconst arrayValidators: Validators = {\n ...genericValidator,\n\n min: (minLength, value, message) => {\n if (!value || value.length >= minLength) {\n return true\n }\n\n return message || `Must have at least ${minLength} items`\n },\n\n max: (maxLength, value, message) => {\n if (!value || value.length <= maxLength) {\n return true\n }\n\n return message || `Must have at most ${maxLength} items`\n },\n\n length: (wantedLength, value, message) => {\n if (!value || value.length === wantedLength) {\n return true\n }\n\n return message || `Must have exactly ${wantedLength} items`\n },\n\n presence: (flag, value, message) => {\n if (flag === 'required' && !value) {\n return message || 'Required'\n }\n\n return true\n },\n\n valid: (allowedValues, values, message) => {\n const valueType = typeof values\n if (valueType === 'undefined') {\n return true\n }\n\n const paths: Path[] = []\n for (let i = 0; i < values.length; i++) {\n const value = values[i]\n if (allowedValues.some((expected) => deepEquals(expected, value))) {\n continue\n }\n\n const pathSegment: PathSegment = value && value._key ? {_key: value._key} : i\n paths.push([pathSegment])\n }\n\n return paths.length === 0\n ? true\n : new ValidationErrorClass(message || 'Value did not match any allowed values', {paths})\n },\n\n unique: (_unused, value, message) => {\n const dupeIndices = []\n if (!value) {\n return true\n }\n\n for (let x = 0; x < value.length; x++) {\n for (let y = x + 1; y < value.length; y++) {\n const itemA = value[x]\n const itemB = value[y]\n\n if (!deepEquals(itemA, itemB)) {\n continue\n }\n\n if (dupeIndices.indexOf(x) === -1) {\n dupeIndices.push(x)\n }\n\n if (dupeIndices.indexOf(y) === -1) {\n dupeIndices.push(y)\n }\n }\n }\n\n const paths = dupeIndices.map((idx) => {\n const item = value[idx]\n const pathSegment = item && item._key ? {_key: item._key} : idx\n return [pathSegment]\n })\n\n return dupeIndices.length > 0\n ? new ValidationErrorClass(message || `Can't be a duplicate`, {paths})\n : true\n },\n}\n\nexport default arrayValidators\n","import {Validators, isReference} from '@sanity/types'\nimport genericValidator from './genericValidator'\n\nconst metaKeys = ['_key', '_type', '_weak']\n\nconst objectValidators: Validators = {\n ...genericValidator,\n\n presence: (expected, value, message) => {\n if (expected !== 'required') {\n return true\n }\n\n const keys = value && Object.keys(value).filter((key) => !metaKeys.includes(key))\n\n if (value === undefined || (keys && keys.length === 0)) {\n return message || 'Required'\n }\n\n return true\n },\n\n reference: async (_unused, value: unknown, message, context) => {\n if (!value) {\n return true\n }\n\n if (!isReference(value)) {\n return message || 'Must be a reference to a document'\n }\n\n const {type, getDocumentExists} = context\n\n if (!type) {\n throw new Error(`\\`type\\` was not provided in validation context`)\n }\n\n if ('weak' in type && type.weak) {\n return true\n }\n\n if (!getDocumentExists) {\n throw new Error(`\\`getDocumentExists\\` was not provided in validation context`)\n }\n\n const exists = await getDocumentExists({id: value._ref})\n if (!exists) {\n return 'This reference must be published'\n }\n\n return true\n },\n\n assetRequired: (flag, value, message) => {\n if (!value || !value.asset || !value.asset._ref) {\n const assetType = flag.assetType || 'Asset'\n return message || `${assetType} required`\n }\n\n return true\n },\n}\n\nexport default objectValidators\n","import {Validators} from '@sanity/types'\nimport formatDate from 'date-fns/format'\nimport genericValidator from './genericValidator'\n\nexport function isRecord(obj: unknown): obj is Record<string, unknown> {\n return typeof obj === 'object' && obj !== null && !Array.isArray(obj)\n}\n\nconst isoDate =\n /^(?:[-+]\\d{2})?(?:\\d{4}(?!\\d{2}\\b))(?:(-?)(?:(?:0[1-9]|1[0-2])(?:\\1(?:[12]\\d|0[1-9]|3[01]))?|W(?:[0-4]\\d|5[0-2])(?:-?[1-7])?|(?:00[1-9]|0[1-9]\\d|[12]\\d{2}|3(?:[0-5]\\d|6[1-6])))(?![T]$|[T][\\d]+Z$)(?:[T\\s](?:(?:(?:[01]\\d|2[0-3])(?:(:?)[0-5]\\d)?|24:?00)(?:[.,]\\d+(?!:))?)(?:\\2[0-5]\\d(?:[.,]\\d+)?)?(?:[Z]|(?:[+-])(?:[01]\\d|2[0-3])(?::?[0-5]\\d)?)?)?)?$/\n\n// eslint-disable-next-line no-warning-comments\n// TODO (eventually): move these to schema type package\ninterface DateTimeOptions {\n dateFormat?: string\n timeFormat?: string\n}\n\nconst getFormattedDate = (type = '', value: string | number | Date, options?: DateTimeOptions) => {\n let format = 'yyyy-MM-dd'\n if (options && options.dateFormat) {\n format = options.dateFormat\n }\n\n if (type === 'date') {\n // If the type is date only\n return formatDate(new Date(value), format)\n }\n\n // If the type is datetime\n if (options && options.timeFormat) {\n format += ` ${options.timeFormat}`\n } else {\n format += ' HH:mm'\n }\n\n return formatDate(new Date(value), format)\n}\n\nfunction parseDate(date: unknown): Date | null\nfunction parseDate(date: unknown, throwOnError: true): Date\nfunction parseDate(date: unknown, throwOnError = false): Date | null {\n if (!date) return null\n if (date === 'now') return new Date()\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const parsed = new Date(date as any)\n const isInvalid = isNaN(parsed.getTime())\n if (isInvalid && throwOnError) {\n throw new Error(`Unable to parse \"${date}\" to a date`)\n }\n\n return isInvalid ? null : parsed\n}\n\nconst dateValidators: Validators = {\n ...genericValidator,\n\n type: (_unused, value, message) => {\n const strVal = `${value}`\n if (!strVal || isoDate.test(value)) {\n return true\n }\n\n return message || 'Must be a valid ISO-8601 formatted date string'\n },\n\n min: (minDate, value, message, context) => {\n const dateVal = parseDate(value)\n if (!dateVal) {\n return true // `type()` should catch parse errors\n }\n\n if (!value || dateVal >= parseDate(minDate, true)) {\n return true\n }\n if (!context.type) {\n throw new Error(`\\`type\\` was not provided in validation context.`)\n }\n\n const dateTimeOptions: DateTimeOptions = isRecord(context.type.options)\n ? (context.type.options as DateTimeOptions)\n : {}\n\n const date = getFormattedDate(context.type.name, minDate, dateTimeOptions)\n\n return message || `Must be at or after ${date}`\n },\n\n max: (maxDate, value, message, context) => {\n const dateVal = parseDate(value)\n if (!dateVal) {\n return true // `type()` should catch parse errors\n }\n\n if (!value || dateVal <= parseDate(maxDate, true)) {\n return true\n }\n\n if (!context.type) {\n throw new Error(`\\`type\\` was not provided in validation context.`)\n }\n\n const dateTimeOptions: DateTimeOptions = isRecord(context.type.options)\n ? (context.type.options as DateTimeOptions)\n : {}\n\n const date = getFormattedDate(context.type.name, maxDate, dateTimeOptions)\n return message || `Must be at or before ${date}`\n },\n}\n\nexport default dateValidators\n","import {\n SchemaType,\n Rule as IRule,\n RuleClass,\n CustomValidator,\n RuleSpecConstraint,\n FieldRules,\n ValidationContext,\n RuleSpec,\n ValidationMarker,\n RuleTypeConstraint,\n Validator,\n} from '@sanity/types'\nimport {cloneDeep, get} from 'lodash'\nimport ValidationErrorClass from './ValidationError'\nimport escapeRegex from './util/escapeRegex'\nimport {convertToValidationMarker} from './util/convertToValidationMarker'\nimport pathToString from './util/pathToString'\nimport genericValidator from './validators/genericValidator'\nimport booleanValidator from './validators/booleanValidator'\nimport numberValidator from './validators/numberValidator'\nimport stringValidator from './validators/stringValidator'\nimport arrayValidator from './validators/arrayValidator'\nimport objectValidator from './validators/objectValidator'\nimport dateValidator from './validators/dateValidator'\n\nconst typeValidators = {\n Boolean: booleanValidator,\n Number: numberValidator,\n String: stringValidator,\n Array: arrayValidator,\n Object: objectValidator,\n Date: dateValidator,\n}\n\nconst getBaseType = (type: SchemaType | undefined): SchemaType | undefined => {\n return type && type.type ? getBaseType(type.type) : type\n}\n\nconst isFieldRef = (constraint: unknown): constraint is {type: symbol; path: string | string[]} => {\n if (typeof constraint !== 'object' || !constraint) return false\n return (constraint as Record<string, unknown>).type === Rule.FIELD_REF\n}\n\nconst EMPTY_ARRAY: unknown[] = []\nconst FIELD_REF = Symbol('FIELD_REF')\nconst ruleConstraintTypes: RuleTypeConstraint[] = [\n 'Array',\n 'Boolean',\n 'Date',\n 'Number',\n 'Object',\n 'String',\n]\n\n// Note: `RuleClass` and `Rule` are split to fit the current `@sanity/types`\n// setup. Classes are a bit weird in the `@sanity/types` package because classes\n// create an actual javascript class while simultaneously creating a type\n// definition.\n//\n// This implicitly creates two types:\n// 1. the instance type — `Rule` and\n// 2. the static/class type - `RuleClass`\n//\n// The `RuleClass` type contains the static methods and the `Rule` instance\n// contains the instance methods.\n//\n// This package exports the RuleClass as a value without implicitly exporting\n// an instance definition. This should help reminder downstream users to import\n// from the `@sanity/types` package.\nconst 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 | 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): Rule {\n const rule = this.clone()\n rule._level = 'error'\n rule._message = message || undefined\n return rule\n }\n\n warning(message?: string): Rule {\n const rule = this.clone()\n rule._level = 'warning'\n rule._message = message || undefined\n return rule\n }\n\n info(message?: string): 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>(fn: CustomValidator<T>): Rule {\n return this.cloneWithRules([{flag: 'custom', constraint: fn as CustomValidator}])\n }\n\n min(len: number): Rule {\n return this.cloneWithRules([{flag: 'min', constraint: len}])\n }\n\n max(len: number): Rule {\n return this.cloneWithRules([{flag: 'max', constraint: len}])\n }\n\n length(len: number): 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): 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): Rule {\n return this.cloneWithRules([{flag: 'greaterThan', constraint: num}])\n }\n\n lessThan(num: number): 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 async validate(value: unknown, context: ValidationContext): Promise<ValidationMarker[]> {\n if (!context) {\n throw new Error('missing context')\n }\n\n const valueIsEmpty = value === null || value === undefined\n\n // Short-circuit on optional, empty fields\n if (valueIsEmpty && this._required === 'optional') {\n return EMPTY_ARRAY as ValidationMarker[]\n }\n\n const rules =\n // Run only the _custom_ functions if the rule is not set to required or optional\n this._required === undefined && valueIsEmpty\n ? this._rules.filter((curr) => curr.flag === 'custom')\n : this._rules\n\n const validators = (this._type && typeValidators[this._type]) || genericValidator\n\n const results = await Promise.all(\n rules.map(async (curr) => {\n if (curr.flag === undefined) {\n throw new Error('Invalid rule, did not contain \"flag\"-property')\n }\n\n const validator: Validator | undefined = validators[curr.flag]\n if (!validator) {\n const forType = this._type ? `type \"${this._type}\"` : 'rule without declared type'\n throw new Error(`Validator for flag \"${curr.flag}\" not found for ${forType}`)\n }\n\n let specConstraint = 'constraint' in curr ? curr.constraint : null\n if (isFieldRef(specConstraint)) {\n specConstraint = get(context.parent, specConstraint.path)\n }\n\n let result\n try {\n result = await validator(specConstraint, value, this._message, context)\n } catch (err) {\n const errorFromException = new ValidationErrorClass(\n `${pathToString(context.path)}: Exception occurred while validating value: ${\n err.message\n }`\n )\n return convertToValidationMarker(errorFromException, 'error', context)\n }\n\n return convertToValidationMarker(result, this._level, context)\n })\n )\n\n return results.flat()\n }\n}\n\nexport default Rule\n","/**\n * Simple requestIdleCallback polyfill\n * Can be removed when all browsers support requestIdleCallback: https://caniuse.com/requestidlecallback\n * @param callback -\n * @param options -\n */\nconst requestIdleCallbackShim: typeof window.requestIdleCallback = function requestIdleCallbackShim(\n callback,\n options?\n): number {\n const start = Date.now()\n return window.setTimeout(() => {\n callback({\n didTimeout: false,\n timeRemaining() {\n return Math.max(0, Date.now() - start)\n },\n })\n }, 0)\n}\n\nconst cancelIdleCallbackShim: typeof window.cancelIdleCallback = function cancelIdleCallbackShim(\n handle: number\n): void {\n return window.clearTimeout(handle)\n}\n\nconst win = typeof window === 'undefined' ? undefined : window\n\nexport const requestIdleCallback = win?.requestIdleCallback || requestIdleCallbackShim\nexport const cancelIdleCallback = win?.cancelIdleCallback || cancelIdleCallbackShim\n","import {\n SlugIsUniqueValidator,\n Path,\n CustomValidator,\n isKeyedObject,\n SlugValidationContext,\n SlugParent,\n SlugSchemaType,\n} from '@sanity/types'\nimport {memoize} from 'lodash'\n// import getClient from '../getClient'\n\nconst memoizedWarnOnArraySlug = memoize(warnOnArraySlug)\n\nfunction getDocumentIds(id: string) {\n const isDraft = id.indexOf('drafts.') === 0\n return {\n published: isDraft ? id.slice('drafts.'.length) : id,\n draft: isDraft ? id : `drafts.${id}`,\n }\n}\n\nfunction serializePath(path: Path): string {\n return path.reduce<string>((target, part, i) => {\n const isIndex = typeof part === 'number'\n const isKey = isKeyedObject(part)\n const separator = i === 0 ? '' : '.'\n const add = isIndex || isKey ? '[]' : `${separator}${part}`\n return `${target}${add}`\n }, '')\n}\n\nconst defaultIsUnique: SlugIsUniqueValidator = (slug, context) => {\n const {getClient, document, path, type} = context\n const schemaOptions = type?.options as {disableArrayWarning?: boolean} | undefined\n\n if (!document) {\n throw new Error(`\\`document\\` was not provided in validation context.`)\n }\n if (!path) {\n throw new Error(`\\`path\\` was not provided in validation context.`)\n }\n\n const disableArrayWarning = schemaOptions?.disableArrayWarning || false\n const {published, draft} = getDocumentIds(document._id)\n const docType = document._type\n const atPath = serializePath(path.concat('current'))\n\n if (!disableArrayWarning && atPath.includes('[]')) {\n memoizedWarnOnArraySlug(serializePath(path))\n }\n\n const constraints = [\n '_type == $docType',\n `!(_id in [$draft, $published])`,\n `${atPath} == $slug`,\n ].join(' && ')\n\n return getClient({apiVersion: '2022-09-09'}).fetch<boolean>(\n `!defined(*[${constraints}][0]._id)`,\n {\n docType,\n draft,\n published,\n slug,\n },\n {tag: 'validation.slug-is-unique'}\n )\n}\n\nfunction warnOnArraySlug(serializedPath: string) {\n /* eslint-disable no-console */\n console.warn(\n [\n `Slug field at path ${serializedPath} is within an array and cannot be automatically checked for uniqueness`,\n `If you need to check for uniqueness, provide your own \"isUnique\" method`,\n `To disable this message, set \\`disableArrayWarning: true\\` on the slug \\`options\\` field`,\n ].join('\\n')\n )\n /* eslint-enable no-console */\n}\n\n/**\n * Validates slugs values by querying for uniqueness from the client.\n *\n * This is a custom rule implementation (e.g. `Rule.custom(slugValidator)`)\n * that's populated in `inferFromSchemaType` when the type name is `slug`\n */\nexport const slugValidator: CustomValidator = async (value, context) => {\n if (!value) {\n return true\n }\n if (typeof value !== 'object') {\n return 'Slug must be an object'\n }\n\n const slugValue = (value as {current?: string}).current\n if (!slugValue) {\n return 'Slug must have a value'\n }\n\n const options = context?.type?.options as {isUnique?: SlugIsUniqueValidator} | undefined\n const isUnique = options?.isUnique || defaultIsUnique\n\n const slugContext: SlugValidationContext = {\n ...context,\n parent: context.parent as SlugParent,\n type: context.type as SlugSchemaType,\n defaultIsUnique,\n }\n const wasUnique = await isUnique(slugValue, slugContext)\n if (wasUnique) {\n return true\n }\n\n return 'Slug is already in use'\n}\n","import {SchemaType, Rule, RuleTypeConstraint} from '@sanity/types'\nimport RuleClass from '../Rule'\nimport {slugValidator} from '../validators/slugValidator'\n\nconst ruleConstraintTypes: {[P in Lowercase<RuleTypeConstraint>]: true} = {\n array: true,\n boolean: true,\n date: true,\n number: true,\n object: true,\n string: true,\n}\n\nconst isRuleConstraint = (typeString: string): typeString is Lowercase<RuleTypeConstraint> =>\n typeString in ruleConstraintTypes\n\nfunction getTypeChain(type: SchemaType | undefined, visited: Set<SchemaType>): SchemaType[] {\n if (!type) return []\n if (visited.has(type)) return []\n\n visited.add(type)\n\n const next = type.type ? getTypeChain(type.type, visited) : []\n return [...next, type]\n}\n\nfunction baseRuleReducer(inputRule: Rule, type: SchemaType) {\n let baseRule = inputRule\n\n if (isRuleConstraint(type.jsonType)) {\n baseRule = baseRule.type(type.jsonType)\n }\n\n const typeOptionsList =\n // if type.options is truthy\n type?.options &&\n // and type.options is an object (non-null from the previous)\n typeof type.options === 'object' &&\n // and if `list` is in options\n 'list' in type.options &&\n // then finally access the list\n type.options.list\n\n if (Array.isArray(typeOptionsList)) {\n baseRule = baseRule.valid(\n typeOptionsList.map((option) => extractValueFromListOption(option, type))\n )\n }\n\n if (type.name === 'datetime') return baseRule.type('Date')\n if (type.name === 'date') return baseRule.type('Date')\n if (type.name === 'url') return baseRule.uri()\n if (type.name === 'slug') return baseRule.custom(slugValidator)\n if (type.name === 'reference') return baseRule.reference()\n if (type.name === 'email') return baseRule.email()\n return baseRule\n}\n\nfunction hasValueField(typeDef: SchemaType | undefined): boolean {\n if (!typeDef) return false\n if (!('fields' in typeDef) && typeDef.type) return hasValueField(typeDef.type)\n if (!('fields' in typeDef)) return false\n if (!Array.isArray(typeDef.fields)) return false\n return typeDef.fields.some((field) => field.name === 'value')\n}\n\nfunction extractValueFromListOption(option: unknown, typeDef: SchemaType): unknown {\n // If you define a `list` option with object items, where the item has a `value` field,\n // we don't want to treat that as the value but rather the surrounding object\n // This differs from the case where you have a title/value pair setup for a string/number, for instance\n if (typeDef.jsonType === 'object' && hasValueField(typeDef)) return option\n\n return (option as Record<string, unknown>).value === undefined\n ? option\n : (option as Record<string, unknown>).value\n}\n\n/**\n * Takes in `SchemaValidationValue` and returns an array of `Rule` instances.\n */\nexport default function normalizeValidationRules(typeDef: SchemaType | undefined): Rule[] {\n if (!typeDef) {\n return []\n }\n\n const validation = typeDef.validation\n\n if (Array.isArray(validation)) {\n return validation.flatMap((i) =>\n normalizeValidationRules({\n ...typeDef,\n validation: i,\n })\n )\n }\n\n if (validation instanceof RuleClass) {\n return [validation]\n }\n\n const baseRule =\n // using an object + Object.values to de-dupe the type chain by type name\n Object.values(\n getTypeChain(typeDef, new Set()).reduce<Record<string, SchemaType>>((acc, type) => {\n acc[type.name] = type\n return acc\n }, {})\n ).reduce(baseRuleReducer, new RuleClass(typeDef))\n\n if (!validation) {\n return [baseRule]\n }\n\n return normalizeValidationRules({\n ...typeDef,\n validation: validation(baseRule),\n })\n}\n","import {\n SanityDocument,\n Schema,\n SchemaType,\n ValidationContext,\n ValidationMarker,\n isKeyedObject,\n isTypedObject,\n isBlockSchemaType,\n isSpanSchemaType,\n isPortableTextTextBlock,\n} from '@sanity/types'\nimport {concat, defer, lastValueFrom, merge, Observable, of} from 'rxjs'\nimport {catchError, map, mergeAll, mergeMap, toArray} from 'rxjs/operators'\nimport {flatten, uniqBy} from 'lodash'\nimport typeString from './util/typeString'\nimport {cancelIdleCallback, requestIdleCallback} from './util/requestIdleCallback'\nimport ValidationErrorClass from './ValidationError'\nimport normalizeValidationRules from './util/normalizeValidationRules'\n\nconst isRecord = (maybeRecord: unknown): maybeRecord is Record<string, unknown> =>\n typeof maybeRecord === 'object' && maybeRecord !== null && !Array.isArray(maybeRecord)\n\nconst isNonNullable = <T>(value: T): value is NonNullable<T> =>\n value !== null && value !== undefined\n\n/**\n * @internal\n */\nexport function resolveTypeForArrayItem(\n item: unknown,\n candidates: SchemaType[]\n): SchemaType | undefined {\n // if there is only one type available, assume that it's the correct one\n if (candidates.length === 1) return candidates[0]\n\n const itemType = isTypedObject(item) && item._type\n const primitive =\n item === undefined || item === null || (!itemType && typeString(item).toLowerCase())\n\n if (primitive && primitive !== 'object') {\n return candidates.find((candidate) => candidate.jsonType === primitive)\n }\n\n return (\n candidates.find((candidate) => candidate.type?.name === itemType) ||\n candidates.find((candidate) => candidate.name === itemType) ||\n candidates.find((candidate) => candidate.name === 'object' && primitive === 'object')\n )\n}\nconst EMPTY_MARKERS: ValidationMarker[] = []\n\nexport default async function validateDocument(\n getClient: ValidateItemOptions['getClient'],\n doc: SanityDocument,\n schema: Schema,\n context?: Pick<ValidationContext, 'getDocumentExists'>\n): Promise<ValidationMarker[]> {\n return lastValueFrom(validateDocumentObservable(getClient, doc, schema, context))\n}\n\nexport function validateDocumentObservable(\n getClient: ValidateItemOptions['getClient'],\n doc: SanityDocument,\n schema: Schema,\n context?: Pick<ValidationContext, 'getDocumentExists'>\n): Observable<ValidationMarker[]> {\n const documentType = schema.get(doc._type)\n if (!documentType) {\n console.warn('Schema type for object type \"%s\" not found, skipping validation', doc._type)\n return of(EMPTY_MARKERS)\n }\n\n const validationOptions: ValidateItemOptions = {\n getClient,\n schema,\n parent: undefined,\n value: doc,\n path: [],\n document: doc,\n type: documentType,\n getDocumentExists: context?.getDocumentExists,\n }\n\n return validateItemObservable(validationOptions).pipe(\n catchError((err) => {\n console.error(err)\n return of([\n {\n type: 'validation' as const,\n level: 'error' as const,\n path: [],\n item: new ValidationErrorClass(err?.message),\n },\n ])\n })\n )\n}\n\n/**\n * this is used make optional properties required by replacing optionals with\n * `T[P] | undefined`. this is used to prevent errors in `validateItem` where\n * an option from a previous invocation would be incorrectly passed down.\n *\n * https://medium.com/terria/typescript-transforming-optional-properties-to-required-properties-that-may-be-undefined-7482cb4e1585\n */\ntype ExplicitUndefined<T> = {\n [P in keyof Required<T>]: Pick<T, P> extends Required<Pick<T, P>> ? T[P] : T[P] | undefined\n}\n\ntype ValidateItemOptions = {\n value: unknown\n} & ExplicitUndefined<ValidationContext>\n\nexport function validateItem(opts: ValidateItemOptions): Promise<ValidationMarker[]> {\n return lastValueFrom(validateItemObservable(opts))\n}\n\nfunction validateItemObservable({\n value,\n type,\n path = [],\n parent,\n ...restOfContext\n}: ValidateItemOptions): Observable<ValidationMarker[]> {\n const rules = normalizeValidationRules(type)\n // run validation for the current value\n const selfChecks = rules.map((rule) =>\n defer(() =>\n rule.validate(value, {\n ...restOfContext,\n parent,\n path,\n type,\n })\n )\n )\n\n // run validation for nested values (conditionally)\n let nestedChecks: Array<Observable<ValidationMarker[]>> = []\n\n const selfIsRequired = rules.some((rule) => rule.isRequired())\n const shouldRunNestedObjectValidation =\n // run nested validation for objects\n type?.jsonType === 'object' &&\n // if the value is truthy\n (!!value || // or\n // (the value is null or undefined) and the top-level value is required\n ((value === null || value === undefined) && selfIsRequired))\n\n if (shouldRunNestedObjectValidation) {\n const fieldTypes = type.fields.reduce<Record<string, SchemaType>>((acc, field) => {\n acc[field.name] = field.type\n return acc\n }, {})\n\n // Validation for rules set at the object level with `Rule.fields({/* ... */})`\n nestedChecks = nestedChecks.concat(\n rules\n .map((rule) => rule._fieldRules)\n .filter(isNonNullable)\n .flatMap((fieldResults) => Object.entries(fieldResults))\n .flatMap(([name, validation]) => {\n const fieldType = fieldTypes[name]\n return normalizeValidationRules({...fieldType, validation}).map((subRule) => {\n const nestedValue = isRecord(value) ? value[name] : undefined\n return defer(() =>\n subRule.validate(nestedValue, {\n ...restOfContext,\n parent: value,\n path: path.concat(name),\n type: fieldType,\n })\n )\n })\n })\n )\n\n // Validation from each field's schema `validation: Rule => {/* ... */}` function\n nestedChecks = nestedChecks.concat(\n type.fields.map((field) =>\n validateItemObservable({\n ...restOfContext,\n parent: value,\n value: isRecord(value) ? value[field.name] : undefined,\n path: path.concat(field.name),\n type: field.type,\n })\n )\n )\n }\n\n // note: unlike objects, arrays should not run nested validation for undefined\n // values because we won't have a valid path to put a marker (i.e. missing the\n // key or index in the path) and the downstream form builder won't have a\n // valid target component\n const shouldRunNestedValidationForArrays = type?.jsonType === 'array' && Array.isArray(value)\n\n if (shouldRunNestedValidationForArrays) {\n nestedChecks = nestedChecks.concat(\n value.map((item, index) =>\n validateItemObservable({\n ...restOfContext,\n parent: value,\n value: item,\n path: path.concat(isKeyedObject(item) ? {_key: item._key} : index),\n type: resolveTypeForArrayItem(item, type.of),\n })\n )\n )\n }\n\n return defer(() => merge([...selfChecks, ...nestedChecks])).pipe(\n mergeMap((validateNode) => concat(idle(), validateNode), 40),\n mergeAll(),\n toArray(),\n map(flatten),\n map((results) => {\n // run `uniqBy` if `_fieldRules` are present because they can\n // cause repeat markers\n if (rules.some((rule) => rule._fieldRules)) {\n return uniqBy(results, (rule) => JSON.stringify(rule))\n }\n return results\n })\n )\n}\n\nfunction idle(timeout?: number): Observable<never> {\n return new Observable<never>((observer) => {\n const handle = requestIdleCallback(\n () => {\n observer.complete()\n },\n timeout ? {timeout} : undefined\n )\n\n return () => cancelIdleCallback(handle)\n })\n}\n","import {Schema, SchemaType} from '@sanity/types'\nimport normalizeValidationRules from './util/normalizeValidationRules'\n\nfunction traverse(typeDef: SchemaType, visited: Set<SchemaType>) {\n if (visited.has(typeDef)) {\n return\n }\n\n visited.add(typeDef)\n\n typeDef.validation = normalizeValidationRules(typeDef)\n\n if ('fields' in typeDef) {\n for (const field of typeDef.fields) {\n traverse(field.type, visited)\n }\n }\n\n if ('of' in typeDef) {\n for (const candidate of typeDef.of) {\n traverse(candidate, visited)\n }\n }\n\n // eslint-disable-next-line no-warning-comments\n // @ts-expect-error TODO (eventually): `annotations` does not exist on the SchemaType yet\n if (typeDef.annotations) {\n // eslint-disable-next-line no-warning-comments\n // @ts-expect-error TODO (eventually): `annotations` does not exist on the SchemaType yet\n for (const annotation of typeDef.annotations) {\n traverse(annotation, visited)\n }\n }\n}\n\n// NOTE: this overload is for TS API compatibility with a previous implementation\nfunction inferFromSchemaType(\n typeDef: SchemaType,\n // these are intentionally unused\n _schema: Schema,\n _visited?: Set<SchemaType>\n): SchemaType\n// note: this seemingly redundant overload is required\nfunction inferFromSchemaType(typeDef: SchemaType): SchemaType\nfunction inferFromSchemaType(typeDef: SchemaType): SchemaType {\n traverse(typeDef, new Set())\n return typeDef\n}\n\nexport default inferFromSchemaType\n","import {Schema} from '@sanity/types'\nimport inferFromSchemaType from './inferFromSchemaType'\n\n// Note: Mutates schema. Refactor when @sanity/schema supports middlewares\nfunction inferFromSchema(schema: Schema): Schema {\n const typeNames = schema.getTypeNames()\n\n typeNames.forEach((typeName) => {\n const schemaType = schema.get(typeName)\n\n if (schemaType) {\n inferFromSchemaType(schemaType)\n }\n })\n\n return schema\n}\n\nexport default inferFromSchema\n"],"names":["ValidationError","constructor","message","options","arguments","length","undefined","__publicField","paths","children","operation","cloneWithMessage","msg","escapeRegex","string","replace","pathToString","path","reduce","target","segment","i","segmentType","concat","separator","isKeyedObject","_key","Error","isNonNullable","t","convertToValidationMarker","validatorResult","level","context","_a","Array","isArray","flatMap","child","filter","ValidationErrorClass","results","item","map","_toString","toString","builtIns","Object","Function","String","Boolean","Number","Date","RegExp","isBuiltIn","_constructor","typeString","obj","stringType","call","slice","toLowerCase","constructorType","name","deepEquals","a","b","keys","getTime","prototype","hasOwnProperty","key","SLOW_VALIDATOR_TIMEOUT","formatValidationErrors","err","join","genericValidators","type","expected","value","actualType","presence","all","resolved","Promise","validate","flat","either","valid","allowedValues","actual","valueType","strValue","defaultMessage","some","custom","fn","slowTimer","setTimeout","console","warn","result","clearTimeout","booleanValidators","genericValidator","flag","precisionRx","numberValidators","integer","_unused","isInteger","precision","limit","places","match","decimals","Math","max","parseInt","min","minNum","maxNum","greaterThan","num","lessThan","DUMMY_ORIGIN","emailRegex","isRelativeUrl","url","test","stringValidators","minLength","maxLength","wantedLength","uri","constraints","allowCredentials","relativeOnly","allowRelative","URL","origin","username","password","urlScheme","protocol","matchesAllowedScheme","scheme","stringCasing","casing","toLocaleUpperCase","toLocaleLowerCase","regex","pattern","invert","regName","matches","email","trim","arrayValidators","values","pathSegment","push","unique","dupeIndices","x","y","itemA","itemB","indexOf","idx","metaKeys","objectValidators","includes","reference","isReference","getDocumentExists","weak","exists","id","_ref","assetRequired","asset","assetType","isRecord","isoDate","getFormattedDate","format","dateFormat","formatDate","timeFormat","parseDate","date","throwOnError","parsed","isInvalid","isNaN","dateValidators","strVal","minDate","dateVal","dateTimeOptions","maxDate","typeValidators","booleanValidator","numberValidator","stringValidator","arrayValidator","objectValidator","dateValidator","getBaseType","isFieldRef","constraint","Rule","FIELD_REF","EMPTY_ARRAY","Symbol","ruleConstraintTypes","typeDef","valueOfField","bind","_typeDef","reset","_mergeRequired","next","_required","error","rule","clone","_level","_message","warning","info","_type","_rules","_fieldRules","isRequired","cloneDeep","cloneWithRules","rules","newRules","Set","forEach","curr","add","disallowDuplicate","isDuplicate","has","merge","newRule","targetType","toUpperCase","optional","required","len","positive","negative","uppercase","lowercase","_b","opts","optsScheme","schemes","fields","base","valueIsEmpty","validators","validator","forType","specConstraint","get","parent","errorFromException","def","requestIdleCallbackShim","requestIdleCallbackShim2","callback","start","now","window","didTimeout","timeRemaining","cancelIdleCallbackShim","handle","win","requestIdleCallback","cancelIdleCallback","memoizedWarnOnArraySlug","memoize","warnOnArraySlug","getDocumentIds","isDraft","published","draft","serializePath","part","isIndex","isKey","defaultIsUnique","slug","getClient","document","schemaOptions","disableArrayWarning","_id","docType","atPath","apiVersion","fetch","tag","serializedPath","slugValidator","slugValue","current","isUnique","slugContext","wasUnique","array","boolean","number","object","isRuleConstraint","getTypeChain","visited","baseRuleReducer","inputRule","baseRule","jsonType","typeOptionsList","list","option","extractValueFromListOption","hasValueField","field","normalizeValidationRules","validation","RuleClass","acc","maybeRecord","resolveTypeForArrayItem","candidates","itemType","isTypedObject","primitive","find","candidate","EMPTY_MARKERS","validateDocument","doc","schema","lastValueFrom","validateDocumentObservable","documentType","of","validationOptions","validateItemObservable","pipe","catchError","restOfContext","selfChecks","defer","nestedChecks","selfIsRequired","shouldRunNestedObjectValidation","fieldTypes","fieldResults","entries","_ref2","fieldType","subRule","nestedValue","shouldRunNestedValidationForArrays","index","mergeMap","validateNode","idle","mergeAll","toArray","flatten","uniqBy","JSON","stringify","timeout","Observable","observer","complete","traverse","annotations","annotation","inferFromSchemaType","inferFromSchema","typeNames","getTypeNames","typeName","schemaType"],"mappings":"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"}
package/lib/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../src/ValidationError.ts","../src/util/escapeRegex.ts","../src/util/pathToString.ts","../src/util/convertToValidationMarker.ts","../src/util/typeString.ts","../src/util/deepEquals.ts","../src/validators/genericValidator.ts","../src/validators/booleanValidator.ts","../src/validators/numberValidator.ts","../src/validators/stringValidator.ts","../src/validators/arrayValidator.ts","../src/validators/objectValidator.ts","../src/validators/dateValidator.ts","../src/Rule.ts","../src/util/requestIdleCallback.ts","../src/validators/slugValidator.ts","../src/util/normalizeValidationRules.ts","../src/validateDocument.ts","../src/inferFromSchemaType.ts","../src/inferFromSchema.ts"],"sourcesContent":["import {\n Path,\n ValidationMarker,\n ValidationError as IValidationError,\n ValidationErrorOptions,\n ValidationErrorClass,\n} from '@sanity/types'\n\n// Follows the same pattern as Rule and RuleClass. @see Rule\nconst ValidationError: ValidationErrorClass = class ValidationError implements IValidationError {\n message: string\n paths: Path[]\n children: ValidationMarker[] | undefined\n operation: 'AND' | 'OR' | undefined\n\n constructor(message: string, options: ValidationErrorOptions = {}) {\n this.message = message\n this.paths = options.paths || []\n this.children = options.children\n this.operation = options.operation\n }\n\n cloneWithMessage(msg: string): ValidationError {\n return new ValidationError(msg, {\n paths: this.paths,\n children: this.children,\n operation: this.operation,\n })\n }\n}\n\nexport default ValidationError\n","/* eslint-disable no-useless-escape */\nexport default (string: string): string => {\n // Escape ^$.*+-?=!:|\\/()[]{},\n return string.replace(/[\\^\\$\\.\\*\\+\\-\\?\\=\\!\\:\\|\\\\\\/\\(\\)\\[\\]\\{\\}\\,]/g, '\\\\$&')\n}\n","import {Path, isKeyedObject} from '@sanity/types'\n\nexport default function pathToString(path: Path | undefined = []): string {\n return path.reduce<string>((target, segment, i) => {\n const segmentType = typeof segment\n if (segmentType === 'number') {\n return `${target}[${segment}]`\n }\n\n if (segmentType === 'string') {\n const separator = i === 0 ? '' : '.'\n return `${target}${separator}${segment}`\n }\n\n if (isKeyedObject(segment)) {\n return `${target}[_key==\"${segment._key}\"]`\n }\n\n throw new Error(`Unsupported path segment \"${segment}\"`)\n }, '')\n}\n","import {ValidationMarker, ValidationError, ValidationContext} from '@sanity/types'\nimport ValidationErrorClass from '../ValidationError'\nimport pathToString from '../util/pathToString'\n\ntype ValidationErrorLike = Pick<ValidationError, 'message'> & Partial<ValidationError>\n\nexport function isNonNullable<T>(t: T): t is NonNullable<T> {\n return t !== null || t !== undefined\n}\n\nexport function convertToValidationMarker(\n validatorResult:\n | true\n | true[]\n | string\n | string[]\n | ValidationError\n | ValidationError[]\n | ValidationErrorLike\n | ValidationErrorLike[],\n level: 'error' | 'warning' | 'info' | undefined,\n context: ValidationContext\n): ValidationMarker[] {\n if (!context) {\n throw new Error('missing context')\n }\n\n if (validatorResult === true) return []\n\n if (Array.isArray(validatorResult)) {\n return validatorResult\n .flatMap((child) => convertToValidationMarker(child, level, context))\n .filter(isNonNullable)\n }\n\n if (typeof validatorResult === 'string') {\n return convertToValidationMarker(new ValidationErrorClass(validatorResult), level, context)\n }\n\n if (!(validatorResult instanceof ValidationErrorClass)) {\n // in order to accept the `ValidationErrorLike`, it at least needs to have\n // a `message` in the object\n if (typeof validatorResult?.message !== 'string') {\n throw new Error(\n `${pathToString(\n context.path\n )}: Validator must return 'true' if valid or an error message as a string on errors`\n )\n }\n\n // this is the occurs when an object is returned that wasn't created with the\n // `ValidationErrorClass`. in this case, we want to convert it to a class\n return convertToValidationMarker(\n new ValidationErrorClass(validatorResult.message, validatorResult),\n level,\n context\n )\n }\n\n const results: ValidationMarker[] = []\n\n // the validator result does not include any item-level relative paths,\n // then just return the top-level path with the validation result\n if (!validatorResult.paths?.length) {\n return [\n {\n level: level || 'error',\n item: validatorResult,\n path: context.path || [],\n },\n ]\n }\n\n // if the validator result did include item-level relative paths, then for\n // each item-level relative path, create a validation marker that concatenates\n // the relative path with the path from the validation context\n return results.concat(\n validatorResult.paths.map((path) => ({\n path: (context.path || []).concat(path),\n level: level || 'error',\n item: validatorResult,\n }))\n )\n}\n","// this file was adapted from a previous dependency `type-of-is`\n// https://github.com/stephenhandley/type-of-is/blob/7138a7e79f5af7c286bf8123f60843a91aaebf38/index.js\nconst _toString = {}.toString\n\nconst builtIns = [Object, Function, Array, String, Boolean, Number, Date, RegExp, Error]\n\nfunction isBuiltIn(_constructor: unknown) {\n for (let i = 0; i < builtIns.length; i++) {\n if (builtIns[i] === _constructor) return true\n }\n return false\n}\n\nexport default function typeString(obj: unknown): string {\n // [object Blah] -> Blah\n const stringType = _toString.call(obj).slice(8, -1)\n if (obj === null || obj === undefined) return stringType.toLowerCase()\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n const constructorType = (obj as object).constructor\n if (constructorType && !isBuiltIn(constructorType)) return constructorType.name\n return stringType\n}\n","/**\n * Modified version of fast-deep-equal (https://github.com/epoberezkin/fast-deep-equal)\n * MIT-licensed, copyright (c) 2017 Evgeny Poberezkin\n **/\n\n// NOTE: when converting to typescript, some of the checks were inlined (vs\n// having them in a variable) because the type predicate type narrowing only\n// works when type predicate is called inline in the condition that starts the\n// control flow branch.\n// see here: https://www.typescriptlang.org/docs/handbook/2/narrowing.html\nexport default function deepEquals(a: unknown, b: unknown): boolean {\n if (a === b) {\n return true\n }\n\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length != b.length) return false\n for (let i = 0; i < a.length; i++) {\n if (!deepEquals(a[i], b[i])) {\n return false\n }\n }\n return true\n }\n\n if (Array.isArray(a) != Array.isArray(b)) {\n return false\n }\n\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n const keys = Object.keys(a)\n if (keys.length !== Object.keys(b).length) {\n return false\n }\n\n if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime()\n }\n\n if (a instanceof Date != b instanceof Date) {\n return false\n }\n\n if (a instanceof RegExp && b instanceof RegExp) {\n return a.toString() == b.toString()\n }\n\n if (a instanceof RegExp != b instanceof RegExp) {\n return false\n }\n\n for (let i = 0; i < keys.length; i++) {\n if (keys[i] === '_key') {\n continue\n }\n\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) {\n return false\n }\n }\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i] as keyof typeof a\n if (key === '_key') {\n continue\n }\n\n if (!deepEquals(a[key], b[key])) {\n return false\n }\n }\n\n return true\n }\n\n return false\n}\n","import {ValidationMarker, Validators} from '@sanity/types'\nimport typeString from '../util/typeString'\nimport deepEquals from '../util/deepEquals'\nimport pathToString from '../util/pathToString'\nimport ValidationErrorClass from '../ValidationError'\n\nconst SLOW_VALIDATOR_TIMEOUT = 5000\n\nconst formatValidationErrors = (options: {\n message: string | undefined\n results: ValidationMarker[]\n operation: 'AND' | 'OR'\n}) => {\n let message\n\n if (options.message) {\n message = options.message\n } else if (options.results.length === 1) {\n message = options.results[0]?.item.message\n } else {\n message = `[${options.results\n .map((err) => err.item.message)\n .join(` - ${options.operation} - `)}]`\n }\n\n return new ValidationErrorClass(message, {\n children: options.results.length > 1 ? options.results : undefined,\n operation: options.operation,\n })\n}\n\nconst genericValidators: Validators = {\n type: (expected, value, message) => {\n const actualType = typeString(value)\n if (actualType !== expected && actualType !== 'undefined') {\n return message || `Expected type \"${expected}\", got \"${actualType}\"`\n }\n\n return true\n },\n\n presence: (expected, value, message) => {\n if (value === undefined && expected === 'required') {\n return message || 'Value is required'\n }\n\n return true\n },\n\n all: async (children, value, message, context) => {\n const resolved = await Promise.all(children.map((child) => child.validate(value, context)))\n const results = resolved.flat()\n\n if (!results.length) return true\n\n return formatValidationErrors({\n message,\n results,\n operation: 'AND',\n })\n },\n\n either: async (children, value, message, context) => {\n const resolved = await Promise.all(children.map((child) => child.validate(value, context)))\n const results = resolved.flat()\n\n // Read: There is at least one rule that matched\n if (results.length < children.length) return true\n\n return formatValidationErrors({\n message,\n results,\n operation: 'OR',\n })\n },\n\n valid: (allowedValues, actual, message) => {\n const valueType = typeof actual\n if (valueType === 'undefined') {\n return true\n }\n\n const value = (valueType === 'number' || valueType === 'string') && `${actual}`\n const strValue = value && value.length > 30 ? `${value.slice(0, 30)}…` : value\n\n const defaultMessage = value\n ? `Value \"${strValue}\" did not match any allowed values`\n : 'Value did not match any allowed values'\n\n return allowedValues.some((expected) => deepEquals(expected, actual))\n ? true\n : message || defaultMessage\n },\n\n custom: async (fn, value, message, context) => {\n const slowTimer = setTimeout(() => {\n // eslint-disable-next-line no-console\n console.warn(\n `Custom validator at ${pathToString(\n context.path\n )} has taken more than ${SLOW_VALIDATOR_TIMEOUT}ms to respond`\n )\n }, SLOW_VALIDATOR_TIMEOUT)\n\n let result\n try {\n result = await fn(value, context)\n } finally {\n clearTimeout(slowTimer)\n }\n\n if (typeof result === 'string') return message || result\n return result\n },\n}\n\nexport default genericValidators\n","import {Validators} from '@sanity/types'\nimport genericValidator from './genericValidator'\n\nconst booleanValidators: Validators = {\n ...genericValidator,\n\n presence: (flag, value, message) => {\n if (flag === 'required' && typeof value !== 'boolean') {\n return message || 'Required'\n }\n\n return true\n },\n}\n\nexport default booleanValidators\n","import {Validators} from '@sanity/types'\nimport genericValidator from './genericValidator'\n\nconst precisionRx = /(?:\\.(\\d+))?(?:[eE]([+-]?\\d+))?$/\n\nconst numberValidators: Validators = {\n ...genericValidator,\n\n integer: (_unused, value, message) => {\n if (!Number.isInteger(value)) {\n return message || 'Must be an integer'\n }\n\n return true\n },\n\n precision: (limit, value, message) => {\n if (value === undefined) return true\n\n const places = value.toString().match(precisionRx)\n const decimals = Math.max(\n (places[1] ? places[1].length : 0) - (places[2] ? parseInt(places[2], 10) : 0),\n 0\n )\n\n if (decimals > limit) {\n return message || `Max precision is ${limit}`\n }\n\n return true\n },\n\n min: (minNum, value, message) => {\n if (value >= minNum) {\n return true\n }\n\n return message || `Must be greater than or equal ${minNum}`\n },\n\n max: (maxNum, value, message) => {\n if (value <= maxNum) {\n return true\n }\n\n return message || `Must be less than or equal ${maxNum}`\n },\n\n greaterThan: (num, value, message) => {\n if (value > num) {\n return true\n }\n\n return message || `Must be greater than ${num}`\n },\n\n lessThan: (maxNum, value, message) => {\n if (value < maxNum) {\n return true\n }\n\n return message || `Must be less than ${maxNum}`\n },\n}\n\nexport default numberValidators\n","import {Validators} from '@sanity/types'\nimport genericValidator from './genericValidator'\n\nconst DUMMY_ORIGIN = 'http://sanity'\nconst emailRegex =\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\nconst isRelativeUrl = (url: string) => /^\\.*\\//.test(url)\n\nconst stringValidators: Validators = {\n ...genericValidator,\n\n min: (minLength, value, message) => {\n if (!value || value.length >= minLength) {\n return true\n }\n\n return message || `Must be at least ${minLength} characters long`\n },\n\n max: (maxLength, value, message) => {\n if (!value || value.length <= maxLength) {\n return true\n }\n\n return message || `Must be at most ${maxLength} characters long`\n },\n\n length: (wantedLength, value, message) => {\n const strValue = value || ''\n if (strValue.length === wantedLength) {\n return true\n }\n\n return message || `Must be exactly ${wantedLength} characters long`\n },\n\n uri: (constraints, value, message) => {\n const strValue = value || ''\n const {options} = constraints\n const {allowCredentials, relativeOnly} = options\n const allowRelative = options.allowRelative || relativeOnly\n\n let url\n try {\n // WARNING: Safari checks for a given `base` param by looking at the length of arguments passed\n // to new URL(str, base), and will fail if invoked with new URL(strValue, undefined)\n url = allowRelative ? new URL(strValue, DUMMY_ORIGIN) : new URL(strValue)\n } catch (err) {\n return message || 'Not a valid URL'\n }\n\n if (relativeOnly && url.origin !== DUMMY_ORIGIN) {\n return message || 'Only relative URLs are allowed'\n }\n\n if (!allowRelative && url.origin === DUMMY_ORIGIN && isRelativeUrl(strValue)) {\n return message || 'Relative URLs are not allowed'\n }\n\n if (!allowCredentials && (url.username || url.password)) {\n return message || `Username/password not allowed`\n }\n\n const urlScheme = url.protocol.replace(/:$/, '')\n const matchesAllowedScheme = options.scheme.some((scheme) => scheme.test(urlScheme))\n if (!matchesAllowedScheme) {\n return message || 'Does not match allowed protocols/schemes'\n }\n\n return true\n },\n\n stringCasing: (casing, value, message) => {\n const strValue = value || ''\n if (casing === 'uppercase' && strValue !== strValue.toLocaleUpperCase()) {\n return message || `Must be all uppercase letters`\n }\n\n if (casing === 'lowercase' && strValue !== strValue.toLocaleLowerCase()) {\n return message || `Must be all lowercase letters`\n }\n\n return true\n },\n\n presence: (flag, value, message) => {\n if (flag === 'required' && !value) {\n return message || 'Required'\n }\n\n return true\n },\n\n regex: (options, value, message) => {\n const {pattern, name, invert} = options\n const regName = name || `\"${pattern.toString()}\"`\n const strValue = value || ''\n const matches = pattern.test(strValue)\n if ((!invert && !matches) || (invert && matches)) {\n const defaultMessage = invert\n ? `Should not match ${regName}-pattern`\n : `Does not match ${regName}-pattern`\n\n return message || defaultMessage\n }\n\n return true\n },\n\n email: (_unused, value, message) => {\n const strValue = `${value || ''}`.trim()\n if (!strValue || emailRegex.test(strValue)) {\n return true\n }\n\n return message || 'Must be a valid email address'\n },\n}\n\nexport default stringValidators\n","import {Path, PathSegment, Validators} from '@sanity/types'\nimport deepEquals from '../util/deepEquals'\nimport ValidationErrorClass from '../ValidationError'\nimport genericValidator from './genericValidator'\n\nconst arrayValidators: Validators = {\n ...genericValidator,\n\n min: (minLength, value, message) => {\n if (!value || value.length >= minLength) {\n return true\n }\n\n return message || `Must have at least ${minLength} items`\n },\n\n max: (maxLength, value, message) => {\n if (!value || value.length <= maxLength) {\n return true\n }\n\n return message || `Must have at most ${maxLength} items`\n },\n\n length: (wantedLength, value, message) => {\n if (!value || value.length === wantedLength) {\n return true\n }\n\n return message || `Must have exactly ${wantedLength} items`\n },\n\n presence: (flag, value, message) => {\n if (flag === 'required' && !value) {\n return message || 'Required'\n }\n\n return true\n },\n\n valid: (allowedValues, values, message) => {\n const valueType = typeof values\n if (valueType === 'undefined') {\n return true\n }\n\n const paths: Path[] = []\n for (let i = 0; i < values.length; i++) {\n const value = values[i]\n if (allowedValues.some((expected) => deepEquals(expected, value))) {\n continue\n }\n\n const pathSegment: PathSegment = value && value._key ? {_key: value._key} : i\n paths.push([pathSegment])\n }\n\n return paths.length === 0\n ? true\n : new ValidationErrorClass(message || 'Value did not match any allowed values', {paths})\n },\n\n unique: (_unused, value, message) => {\n const dupeIndices = []\n if (!value) {\n return true\n }\n\n for (let x = 0; x < value.length; x++) {\n for (let y = x + 1; y < value.length; y++) {\n const itemA = value[x]\n const itemB = value[y]\n\n if (!deepEquals(itemA, itemB)) {\n continue\n }\n\n if (dupeIndices.indexOf(x) === -1) {\n dupeIndices.push(x)\n }\n\n if (dupeIndices.indexOf(y) === -1) {\n dupeIndices.push(y)\n }\n }\n }\n\n const paths = dupeIndices.map((idx) => {\n const item = value[idx]\n const pathSegment = item && item._key ? {_key: item._key} : idx\n return [pathSegment]\n })\n\n return dupeIndices.length > 0\n ? new ValidationErrorClass(message || `Can't be a duplicate`, {paths})\n : true\n },\n}\n\nexport default arrayValidators\n","import {Validators, isReference} from '@sanity/types'\nimport genericValidator from './genericValidator'\n\nconst metaKeys = ['_key', '_type', '_weak']\n\nconst objectValidators: Validators = {\n ...genericValidator,\n\n presence: (expected, value, message) => {\n if (expected !== 'required') {\n return true\n }\n\n const keys = value && Object.keys(value).filter((key) => !metaKeys.includes(key))\n\n if (value === undefined || (keys && keys.length === 0)) {\n return message || 'Required'\n }\n\n return true\n },\n\n reference: async (_unused, value: unknown, message, context) => {\n if (!value) {\n return true\n }\n\n if (!isReference(value)) {\n return message || 'Must be a reference to a document'\n }\n\n const {type, getDocumentExists} = context\n\n if (!type) {\n throw new Error(`\\`type\\` was not provided in validation context`)\n }\n\n if ('weak' in type && type.weak) {\n return true\n }\n\n if (!getDocumentExists) {\n throw new Error(`\\`getDocumentExists\\` was not provided in validation context`)\n }\n\n const exists = await getDocumentExists({id: value._ref})\n if (!exists) {\n return 'This reference must be published'\n }\n\n return true\n },\n\n assetRequired: (flag, value, message) => {\n if (!value || !value.asset || !value.asset._ref) {\n const assetType = flag.assetType || 'Asset'\n return message || `${assetType} required`\n }\n\n return true\n },\n}\n\nexport default objectValidators\n","import {Validators} from '@sanity/types'\nimport formatDate from 'date-fns/format'\nimport genericValidator from './genericValidator'\n\nexport function isRecord(obj: unknown): obj is Record<string, unknown> {\n return typeof obj === 'object' && obj !== null && !Array.isArray(obj)\n}\n\nconst isoDate =\n /^(?:[-+]\\d{2})?(?:\\d{4}(?!\\d{2}\\b))(?:(-?)(?:(?:0[1-9]|1[0-2])(?:\\1(?:[12]\\d|0[1-9]|3[01]))?|W(?:[0-4]\\d|5[0-2])(?:-?[1-7])?|(?:00[1-9]|0[1-9]\\d|[12]\\d{2}|3(?:[0-5]\\d|6[1-6])))(?![T]$|[T][\\d]+Z$)(?:[T\\s](?:(?:(?:[01]\\d|2[0-3])(?:(:?)[0-5]\\d)?|24:?00)(?:[.,]\\d+(?!:))?)(?:\\2[0-5]\\d(?:[.,]\\d+)?)?(?:[Z]|(?:[+-])(?:[01]\\d|2[0-3])(?::?[0-5]\\d)?)?)?)?$/\n\n// eslint-disable-next-line no-warning-comments\n// TODO (eventually): move these to schema type package\ninterface DateTimeOptions {\n dateFormat?: string\n timeFormat?: string\n}\n\nconst getFormattedDate = (type = '', value: string | number | Date, options?: DateTimeOptions) => {\n let format = 'yyyy-MM-dd'\n if (options && options.dateFormat) {\n format = options.dateFormat\n }\n\n if (type === 'date') {\n // If the type is date only\n return formatDate(new Date(value), format)\n }\n\n // If the type is datetime\n if (options && options.timeFormat) {\n format += ` ${options.timeFormat}`\n } else {\n format += ' HH:mm'\n }\n\n return formatDate(new Date(value), format)\n}\n\nfunction parseDate(date: unknown): Date | null\nfunction parseDate(date: unknown, throwOnError: true): Date\nfunction parseDate(date: unknown, throwOnError = false): Date | null {\n if (!date) return null\n if (date === 'now') return new Date()\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const parsed = new Date(date as any)\n const isInvalid = isNaN(parsed.getTime())\n if (isInvalid && throwOnError) {\n throw new Error(`Unable to parse \"${date}\" to a date`)\n }\n\n return isInvalid ? null : parsed\n}\n\nconst dateValidators: Validators = {\n ...genericValidator,\n\n type: (_unused, value, message) => {\n const strVal = `${value}`\n if (!strVal || isoDate.test(value)) {\n return true\n }\n\n return message || 'Must be a valid ISO-8601 formatted date string'\n },\n\n min: (minDate, value, message, context) => {\n const dateVal = parseDate(value)\n if (!dateVal) {\n return true // `type()` should catch parse errors\n }\n\n if (!value || dateVal >= parseDate(minDate, true)) {\n return true\n }\n if (!context.type) {\n throw new Error(`\\`type\\` was not provided in validation context.`)\n }\n\n const dateTimeOptions: DateTimeOptions = isRecord(context.type.options)\n ? (context.type.options as DateTimeOptions)\n : {}\n\n const date = getFormattedDate(context.type.name, minDate, dateTimeOptions)\n\n return message || `Must be at or after ${date}`\n },\n\n max: (maxDate, value, message, context) => {\n const dateVal = parseDate(value)\n if (!dateVal) {\n return true // `type()` should catch parse errors\n }\n\n if (!value || dateVal <= parseDate(maxDate, true)) {\n return true\n }\n\n if (!context.type) {\n throw new Error(`\\`type\\` was not provided in validation context.`)\n }\n\n const dateTimeOptions: DateTimeOptions = isRecord(context.type.options)\n ? (context.type.options as DateTimeOptions)\n : {}\n\n const date = getFormattedDate(context.type.name, maxDate, dateTimeOptions)\n return message || `Must be at or before ${date}`\n },\n}\n\nexport default dateValidators\n","import {\n SchemaType,\n Rule as IRule,\n RuleClass,\n CustomValidator,\n RuleSpecConstraint,\n FieldRules,\n ValidationContext,\n RuleSpec,\n ValidationMarker,\n RuleTypeConstraint,\n Validator,\n} from '@sanity/types'\nimport {cloneDeep, get} from 'lodash'\nimport ValidationErrorClass from './ValidationError'\nimport escapeRegex from './util/escapeRegex'\nimport {convertToValidationMarker} from './util/convertToValidationMarker'\nimport pathToString from './util/pathToString'\nimport genericValidator from './validators/genericValidator'\nimport booleanValidator from './validators/booleanValidator'\nimport numberValidator from './validators/numberValidator'\nimport stringValidator from './validators/stringValidator'\nimport arrayValidator from './validators/arrayValidator'\nimport objectValidator from './validators/objectValidator'\nimport dateValidator from './validators/dateValidator'\n\nconst typeValidators = {\n Boolean: booleanValidator,\n Number: numberValidator,\n String: stringValidator,\n Array: arrayValidator,\n Object: objectValidator,\n Date: dateValidator,\n}\n\nconst getBaseType = (type: SchemaType | undefined): SchemaType | undefined => {\n return type && type.type ? getBaseType(type.type) : type\n}\n\nconst isFieldRef = (constraint: unknown): constraint is {type: symbol; path: string | string[]} => {\n if (typeof constraint !== 'object' || !constraint) return false\n return (constraint as Record<string, unknown>).type === Rule.FIELD_REF\n}\n\nconst EMPTY_ARRAY: unknown[] = []\nconst FIELD_REF = Symbol('FIELD_REF')\nconst ruleConstraintTypes: RuleTypeConstraint[] = [\n 'Array',\n 'Boolean',\n 'Date',\n 'Number',\n 'Object',\n 'String',\n]\n\n// Note: `RuleClass` and `Rule` are split to fit the current `@sanity/types`\n// setup. Classes are a bit weird in the `@sanity/types` package because classes\n// create an actual javascript class while simultaneously creating a type\n// definition.\n//\n// This implicitly creates two types:\n// 1. the instance type — `Rule` and\n// 2. the static/class type - `RuleClass`\n//\n// The `RuleClass` type contains the static methods and the `Rule` instance\n// contains the instance methods.\n//\n// This package exports the RuleClass as a value without implicitly exporting\n// an instance definition. This should help reminder downstream users to import\n// from the `@sanity/types` package.\nconst 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 | 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): Rule {\n const rule = this.clone()\n rule._level = 'error'\n rule._message = message || undefined\n return rule\n }\n\n warning(message?: string): Rule {\n const rule = this.clone()\n rule._level = 'warning'\n rule._message = message || undefined\n return rule\n }\n\n info(message?: string): 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>(fn: CustomValidator<T>): Rule {\n return this.cloneWithRules([{flag: 'custom', constraint: fn as CustomValidator}])\n }\n\n min(len: number): Rule {\n return this.cloneWithRules([{flag: 'min', constraint: len}])\n }\n\n max(len: number): Rule {\n return this.cloneWithRules([{flag: 'max', constraint: len}])\n }\n\n length(len: number): 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): 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): Rule {\n return this.cloneWithRules([{flag: 'greaterThan', constraint: num}])\n }\n\n lessThan(num: number): 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 async validate(value: unknown, context: ValidationContext): Promise<ValidationMarker[]> {\n if (!context) {\n throw new Error('missing context')\n }\n\n const valueIsEmpty = value === null || value === undefined\n\n // Short-circuit on optional, empty fields\n if (valueIsEmpty && this._required === 'optional') {\n return EMPTY_ARRAY as ValidationMarker[]\n }\n\n const rules =\n // Run only the _custom_ functions if the rule is not set to required or optional\n this._required === undefined && valueIsEmpty\n ? this._rules.filter((curr) => curr.flag === 'custom')\n : this._rules\n\n const validators = (this._type && typeValidators[this._type]) || genericValidator\n\n const results = await Promise.all(\n rules.map(async (curr) => {\n if (curr.flag === undefined) {\n throw new Error('Invalid rule, did not contain \"flag\"-property')\n }\n\n const validator: Validator | undefined = validators[curr.flag]\n if (!validator) {\n const forType = this._type ? `type \"${this._type}\"` : 'rule without declared type'\n throw new Error(`Validator for flag \"${curr.flag}\" not found for ${forType}`)\n }\n\n let specConstraint = 'constraint' in curr ? curr.constraint : null\n if (isFieldRef(specConstraint)) {\n specConstraint = get(context.parent, specConstraint.path)\n }\n\n let result\n try {\n result = await validator(specConstraint, value, this._message, context)\n } catch (err) {\n const errorFromException = new ValidationErrorClass(\n `${pathToString(context.path)}: Exception occurred while validating value: ${\n err.message\n }`\n )\n return convertToValidationMarker(errorFromException, 'error', context)\n }\n\n return convertToValidationMarker(result, this._level, context)\n })\n )\n\n return results.flat()\n }\n}\n\nexport default Rule\n","/**\n * Simple requestIdleCallback polyfill\n * Can be removed when all browsers support requestIdleCallback: https://caniuse.com/requestidlecallback\n * @param callback -\n * @param options -\n */\nconst requestIdleCallbackShim: typeof window.requestIdleCallback = function requestIdleCallbackShim(\n callback,\n options?\n): number {\n const start = Date.now()\n return window.setTimeout(() => {\n callback({\n didTimeout: false,\n timeRemaining() {\n return Math.max(0, Date.now() - start)\n },\n })\n }, 0)\n}\n\nconst cancelIdleCallbackShim: typeof window.cancelIdleCallback = function cancelIdleCallbackShim(\n handle: number\n): void {\n return window.clearTimeout(handle)\n}\n\nconst win = typeof window === 'undefined' ? undefined : window\n\nexport const requestIdleCallback = win?.requestIdleCallback || requestIdleCallbackShim\nexport const cancelIdleCallback = win?.cancelIdleCallback || cancelIdleCallbackShim\n","import {\n SlugIsUniqueValidator,\n Path,\n CustomValidator,\n isKeyedObject,\n SlugValidationContext,\n SlugParent,\n SlugSchemaType,\n} from '@sanity/types'\nimport {memoize} from 'lodash'\n// import getClient from '../getClient'\n\nconst memoizedWarnOnArraySlug = memoize(warnOnArraySlug)\n\nfunction getDocumentIds(id: string) {\n const isDraft = id.indexOf('drafts.') === 0\n return {\n published: isDraft ? id.slice('drafts.'.length) : id,\n draft: isDraft ? id : `drafts.${id}`,\n }\n}\n\nfunction serializePath(path: Path): string {\n return path.reduce<string>((target, part, i) => {\n const isIndex = typeof part === 'number'\n const isKey = isKeyedObject(part)\n const separator = i === 0 ? '' : '.'\n const add = isIndex || isKey ? '[]' : `${separator}${part}`\n return `${target}${add}`\n }, '')\n}\n\nconst defaultIsUnique: SlugIsUniqueValidator = (slug, context) => {\n const {getClient, document, path, type} = context\n const schemaOptions = type?.options as {disableArrayWarning?: boolean} | undefined\n\n if (!document) {\n throw new Error(`\\`document\\` was not provided in validation context.`)\n }\n if (!path) {\n throw new Error(`\\`path\\` was not provided in validation context.`)\n }\n\n const disableArrayWarning = schemaOptions?.disableArrayWarning || false\n const {published, draft} = getDocumentIds(document._id)\n const docType = document._type\n const atPath = serializePath(path.concat('current'))\n\n if (!disableArrayWarning && atPath.includes('[]')) {\n memoizedWarnOnArraySlug(serializePath(path))\n }\n\n const constraints = [\n '_type == $docType',\n `!(_id in [$draft, $published])`,\n `${atPath} == $slug`,\n ].join(' && ')\n\n return getClient({apiVersion: '2022-09-09'}).fetch<boolean>(\n `!defined(*[${constraints}][0]._id)`,\n {\n docType,\n draft,\n published,\n slug,\n },\n {tag: 'validation.slug-is-unique'}\n )\n}\n\nfunction warnOnArraySlug(serializedPath: string) {\n /* eslint-disable no-console */\n console.warn(\n [\n `Slug field at path ${serializedPath} is within an array and cannot be automatically checked for uniqueness`,\n `If you need to check for uniqueness, provide your own \"isUnique\" method`,\n `To disable this message, set \\`disableArrayWarning: true\\` on the slug \\`options\\` field`,\n ].join('\\n')\n )\n /* eslint-enable no-console */\n}\n\n/**\n * Validates slugs values by querying for uniqueness from the client.\n *\n * This is a custom rule implementation (e.g. `Rule.custom(slugValidator)`)\n * that's populated in `inferFromSchemaType` when the type name is `slug`\n */\nexport const slugValidator: CustomValidator = async (value, context) => {\n if (!value) {\n return true\n }\n if (typeof value !== 'object') {\n return 'Slug must be an object'\n }\n\n const slugValue = (value as {current?: string}).current\n if (!slugValue) {\n return 'Slug must have a value'\n }\n\n const options = context?.type?.options as {isUnique?: SlugIsUniqueValidator} | undefined\n const isUnique = options?.isUnique || defaultIsUnique\n\n const slugContext: SlugValidationContext = {\n ...context,\n parent: context.parent as SlugParent,\n type: context.type as SlugSchemaType,\n defaultIsUnique,\n }\n const wasUnique = await isUnique(slugValue, slugContext)\n if (wasUnique) {\n return true\n }\n\n return 'Slug is already in use'\n}\n","import {SchemaType, Rule, RuleTypeConstraint} from '@sanity/types'\nimport RuleClass from '../Rule'\nimport {slugValidator} from '../validators/slugValidator'\n\nconst ruleConstraintTypes: {[P in Lowercase<RuleTypeConstraint>]: true} = {\n array: true,\n boolean: true,\n date: true,\n number: true,\n object: true,\n string: true,\n}\n\nconst isRuleConstraint = (typeString: string): typeString is Lowercase<RuleTypeConstraint> =>\n typeString in ruleConstraintTypes\n\nfunction getTypeChain(type: SchemaType | undefined, visited: Set<SchemaType>): SchemaType[] {\n if (!type) return []\n if (visited.has(type)) return []\n\n visited.add(type)\n\n const next = type.type ? getTypeChain(type.type, visited) : []\n return [...next, type]\n}\n\nfunction baseRuleReducer(inputRule: Rule, type: SchemaType) {\n let baseRule = inputRule\n\n if (isRuleConstraint(type.jsonType)) {\n baseRule = baseRule.type(type.jsonType)\n }\n\n const typeOptionsList =\n // if type.options is truthy\n type?.options &&\n // and type.options is an object (non-null from the previous)\n typeof type.options === 'object' &&\n // and if `list` is in options\n 'list' in type.options &&\n // then finally access the list\n type.options.list\n\n if (Array.isArray(typeOptionsList)) {\n baseRule = baseRule.valid(\n typeOptionsList.map((option) => extractValueFromListOption(option, type))\n )\n }\n\n if (type.name === 'datetime') return baseRule.type('Date')\n if (type.name === 'date') return baseRule.type('Date')\n if (type.name === 'url') return baseRule.uri()\n if (type.name === 'slug') return baseRule.custom(slugValidator)\n if (type.name === 'reference') return baseRule.reference()\n if (type.name === 'email') return baseRule.email()\n return baseRule\n}\n\nfunction hasValueField(typeDef: SchemaType | undefined): boolean {\n if (!typeDef) return false\n if (!('fields' in typeDef) && typeDef.type) return hasValueField(typeDef.type)\n if (!('fields' in typeDef)) return false\n if (!Array.isArray(typeDef.fields)) return false\n return typeDef.fields.some((field) => field.name === 'value')\n}\n\nfunction extractValueFromListOption(option: unknown, typeDef: SchemaType): unknown {\n // If you define a `list` option with object items, where the item has a `value` field,\n // we don't want to treat that as the value but rather the surrounding object\n // This differs from the case where you have a title/value pair setup for a string/number, for instance\n if (typeDef.jsonType === 'object' && hasValueField(typeDef)) return option\n\n return (option as Record<string, unknown>).value === undefined\n ? option\n : (option as Record<string, unknown>).value\n}\n\n/**\n * Takes in `SchemaValidationValue` and returns an array of `Rule` instances.\n */\nexport default function normalizeValidationRules(typeDef: SchemaType | undefined): Rule[] {\n if (!typeDef) {\n return []\n }\n\n const validation = typeDef.validation\n\n if (Array.isArray(validation)) {\n return validation.flatMap((i) =>\n normalizeValidationRules({\n ...typeDef,\n validation: i,\n })\n )\n }\n\n if (validation instanceof RuleClass) {\n return [validation]\n }\n\n const baseRule =\n // using an object + Object.values to de-dupe the type chain by type name\n Object.values(\n getTypeChain(typeDef, new Set()).reduce<Record<string, SchemaType>>((acc, type) => {\n acc[type.name] = type\n return acc\n }, {})\n ).reduce(baseRuleReducer, new RuleClass(typeDef))\n\n if (!validation) {\n return [baseRule]\n }\n\n return normalizeValidationRules({\n ...typeDef,\n validation: validation(baseRule),\n })\n}\n","import {\n SanityDocument,\n Schema,\n SchemaType,\n ValidationContext,\n ValidationMarker,\n isKeyedObject,\n isTypedObject,\n isBlockSchemaType,\n isSpanSchemaType,\n isPortableTextTextBlock,\n} from '@sanity/types'\nimport {concat, defer, lastValueFrom, merge, Observable, of} from 'rxjs'\nimport {catchError, map, mergeAll, mergeMap, toArray} from 'rxjs/operators'\nimport {flatten, uniqBy} from 'lodash'\nimport typeString from './util/typeString'\nimport {cancelIdleCallback, requestIdleCallback} from './util/requestIdleCallback'\nimport ValidationErrorClass from './ValidationError'\nimport normalizeValidationRules from './util/normalizeValidationRules'\n\nconst isRecord = (maybeRecord: unknown): maybeRecord is Record<string, unknown> =>\n typeof maybeRecord === 'object' && maybeRecord !== null && !Array.isArray(maybeRecord)\n\nconst isNonNullable = <T>(value: T): value is NonNullable<T> =>\n value !== null && value !== undefined\n\n/**\n * @internal\n */\nexport function resolveTypeForArrayItem(\n item: unknown,\n candidates: SchemaType[]\n): SchemaType | undefined {\n // if there is only one type available, assume that it's the correct one\n if (candidates.length === 1) return candidates[0]\n\n const itemType = isTypedObject(item) && item._type\n const primitive =\n item === undefined || item === null || (!itemType && typeString(item).toLowerCase())\n\n if (primitive && primitive !== 'object') {\n return candidates.find((candidate) => candidate.jsonType === primitive)\n }\n\n return (\n candidates.find((candidate) => candidate.type?.name === itemType) ||\n candidates.find((candidate) => candidate.name === itemType) ||\n candidates.find((candidate) => candidate.name === 'object' && primitive === 'object')\n )\n}\nconst EMPTY_MARKERS: ValidationMarker[] = []\n\nexport default async function validateDocument(\n getClient: ValidateItemOptions['getClient'],\n doc: SanityDocument,\n schema: Schema,\n context?: Pick<ValidationContext, 'getDocumentExists'>\n): Promise<ValidationMarker[]> {\n return lastValueFrom(validateDocumentObservable(getClient, doc, schema, context))\n}\n\nexport function validateDocumentObservable(\n getClient: ValidateItemOptions['getClient'],\n doc: SanityDocument,\n schema: Schema,\n context?: Pick<ValidationContext, 'getDocumentExists'>\n): Observable<ValidationMarker[]> {\n const documentType = schema.get(doc._type)\n if (!documentType) {\n console.warn('Schema type for object type \"%s\" not found, skipping validation', doc._type)\n return of(EMPTY_MARKERS)\n }\n\n const validationOptions: ValidateItemOptions = {\n getClient,\n schema,\n parent: undefined,\n value: doc,\n path: [],\n document: doc,\n type: documentType,\n getDocumentExists: context?.getDocumentExists,\n }\n\n return validateItemObservable(validationOptions).pipe(\n catchError((err) => {\n console.error(err)\n return of([\n {\n type: 'validation' as const,\n level: 'error' as const,\n path: [],\n item: new ValidationErrorClass(err?.message),\n },\n ])\n })\n )\n}\n\n/**\n * this is used make optional properties required by replacing optionals with\n * `T[P] | undefined`. this is used to prevent errors in `validateItem` where\n * an option from a previous invocation would be incorrectly passed down.\n *\n * https://medium.com/terria/typescript-transforming-optional-properties-to-required-properties-that-may-be-undefined-7482cb4e1585\n */\ntype ExplicitUndefined<T> = {\n [P in keyof Required<T>]: Pick<T, P> extends Required<Pick<T, P>> ? T[P] : T[P] | undefined\n}\n\ntype ValidateItemOptions = {\n value: unknown\n} & ExplicitUndefined<ValidationContext>\n\nexport function validateItem(opts: ValidateItemOptions): Promise<ValidationMarker[]> {\n return lastValueFrom(validateItemObservable(opts))\n}\n\nfunction validateItemObservable({\n value,\n type,\n path = [],\n parent,\n ...restOfContext\n}: ValidateItemOptions): Observable<ValidationMarker[]> {\n const rules = normalizeValidationRules(type)\n // run validation for the current value\n const selfChecks = rules.map((rule) =>\n defer(() =>\n rule.validate(value, {\n ...restOfContext,\n parent,\n path,\n type,\n })\n )\n )\n\n // run validation for nested values (conditionally)\n let nestedChecks: Array<Observable<ValidationMarker[]>> = []\n\n const selfIsRequired = rules.some((rule) => rule.isRequired())\n const shouldRunNestedObjectValidation =\n // run nested validation for objects\n type?.jsonType === 'object' &&\n // if the value is truthy\n (!!value || // or\n // (the value is null or undefined) and the top-level value is required\n ((value === null || value === undefined) && selfIsRequired))\n\n if (shouldRunNestedObjectValidation) {\n const fieldTypes = type.fields.reduce<Record<string, SchemaType>>((acc, field) => {\n acc[field.name] = field.type\n return acc\n }, {})\n\n // Validation for rules set at the object level with `Rule.fields({/* ... */})`\n nestedChecks = nestedChecks.concat(\n rules\n .map((rule) => rule._fieldRules)\n .filter(isNonNullable)\n .flatMap((fieldResults) => Object.entries(fieldResults))\n .flatMap(([name, validation]) => {\n const fieldType = fieldTypes[name]\n return normalizeValidationRules({...fieldType, validation}).map((subRule) => {\n const nestedValue = isRecord(value) ? value[name] : undefined\n return defer(() =>\n subRule.validate(nestedValue, {\n ...restOfContext,\n parent: value,\n path: path.concat(name),\n type: fieldType,\n })\n )\n })\n })\n )\n\n // Validation from each field's schema `validation: Rule => {/* ... */}` function\n nestedChecks = nestedChecks.concat(\n type.fields.map((field) =>\n validateItemObservable({\n ...restOfContext,\n parent: value,\n value: isRecord(value) ? value[field.name] : undefined,\n path: path.concat(field.name),\n type: field.type,\n })\n )\n )\n }\n\n // note: unlike objects, arrays should not run nested validation for undefined\n // values because we won't have a valid path to put a marker (i.e. missing the\n // key or index in the path) and the downstream form builder won't have a\n // valid target component\n const shouldRunNestedValidationForArrays = type?.jsonType === 'array' && Array.isArray(value)\n\n if (shouldRunNestedValidationForArrays) {\n nestedChecks = nestedChecks.concat(\n value.map((item, index) =>\n validateItemObservable({\n ...restOfContext,\n parent: value,\n value: item,\n path: path.concat(isKeyedObject(item) ? {_key: item._key} : index),\n type: resolveTypeForArrayItem(item, type.of),\n })\n )\n )\n }\n\n return defer(() => merge([...selfChecks, ...nestedChecks])).pipe(\n mergeMap((validateNode) => concat(idle(), validateNode), 40),\n mergeAll(),\n toArray(),\n map(flatten),\n map((results) => {\n // run `uniqBy` if `_fieldRules` are present because they can\n // cause repeat markers\n if (rules.some((rule) => rule._fieldRules)) {\n return uniqBy(results, (rule) => JSON.stringify(rule))\n }\n return results\n })\n )\n}\n\nfunction idle(timeout?: number): Observable<never> {\n return new Observable<never>((observer) => {\n const handle = requestIdleCallback(\n () => {\n observer.complete()\n },\n timeout ? {timeout} : undefined\n )\n\n return () => cancelIdleCallback(handle)\n })\n}\n","import {Schema, SchemaType} from '@sanity/types'\nimport normalizeValidationRules from './util/normalizeValidationRules'\n\nfunction traverse(typeDef: SchemaType, visited: Set<SchemaType>) {\n if (visited.has(typeDef)) {\n return\n }\n\n visited.add(typeDef)\n\n typeDef.validation = normalizeValidationRules(typeDef)\n\n if ('fields' in typeDef) {\n for (const field of typeDef.fields) {\n traverse(field.type, visited)\n }\n }\n\n if ('of' in typeDef) {\n for (const candidate of typeDef.of) {\n traverse(candidate, visited)\n }\n }\n\n // eslint-disable-next-line no-warning-comments\n // @ts-expect-error TODO (eventually): `annotations` does not exist on the SchemaType yet\n if (typeDef.annotations) {\n // eslint-disable-next-line no-warning-comments\n // @ts-expect-error TODO (eventually): `annotations` does not exist on the SchemaType yet\n for (const annotation of typeDef.annotations) {\n traverse(annotation, visited)\n }\n }\n}\n\n// NOTE: this overload is for TS API compatibility with a previous implementation\nfunction inferFromSchemaType(\n typeDef: SchemaType,\n // these are intentionally unused\n _schema: Schema,\n _visited?: Set<SchemaType>\n): SchemaType\n// note: this seemingly redundant overload is required\nfunction inferFromSchemaType(typeDef: SchemaType): SchemaType\nfunction inferFromSchemaType(typeDef: SchemaType): SchemaType {\n traverse(typeDef, new Set())\n return typeDef\n}\n\nexport default inferFromSchemaType\n","import {Schema} from '@sanity/types'\nimport inferFromSchemaType from './inferFromSchemaType'\n\n// Note: Mutates schema. Refactor when @sanity/schema supports middlewares\nfunction inferFromSchema(schema: Schema): Schema {\n const typeNames = schema.getTypeNames()\n\n typeNames.forEach((typeName) => {\n const schemaType = schema.get(typeName)\n\n if (schemaType) {\n inferFromSchemaType(schemaType)\n }\n })\n\n return schema\n}\n\nexport default inferFromSchema\n"],"names":["ValidationError","constructor","message","options","arguments","length","undefined","__publicField","paths","children","operation","cloneWithMessage","msg","escapeRegex","string","replace","pathToString","path","reduce","target","segment","i","segmentType","concat","separator","isKeyedObject","_key","Error","isNonNullable","t","convertToValidationMarker","validatorResult","level","context","_a","Array","isArray","flatMap","child","filter","ValidationErrorClass","results","item","map","_toString","toString","builtIns","Object","Function","String","Boolean","Number","Date","RegExp","isBuiltIn","_constructor","typeString","obj","stringType","call","slice","toLowerCase","constructorType","name","deepEquals","a","b","keys","getTime","prototype","hasOwnProperty","key","SLOW_VALIDATOR_TIMEOUT","formatValidationErrors","err","join","genericValidators","type","expected","value","actualType","presence","all","resolved","Promise","validate","flat","either","valid","allowedValues","actual","valueType","strValue","defaultMessage","some","custom","fn","slowTimer","setTimeout","console","warn","result","clearTimeout","booleanValidators","genericValidator","flag","precisionRx","numberValidators","integer","_unused","isInteger","precision","limit","places","match","decimals","Math","max","parseInt","min","minNum","maxNum","greaterThan","num","lessThan","DUMMY_ORIGIN","emailRegex","isRelativeUrl","url","test","stringValidators","minLength","maxLength","wantedLength","uri","constraints","allowCredentials","relativeOnly","allowRelative","URL","origin","username","password","urlScheme","protocol","matchesAllowedScheme","scheme","stringCasing","casing","toLocaleUpperCase","toLocaleLowerCase","regex","pattern","invert","regName","matches","email","trim","arrayValidators","values","pathSegment","push","unique","dupeIndices","x","y","itemA","itemB","indexOf","idx","metaKeys","objectValidators","includes","reference","isReference","getDocumentExists","weak","exists","id","_ref","assetRequired","asset","assetType","isRecord","isoDate","getFormattedDate","format","dateFormat","formatDate","default","timeFormat","parseDate","date","throwOnError","parsed","isInvalid","isNaN","dateValidators","strVal","minDate","dateVal","dateTimeOptions","maxDate","typeValidators","booleanValidator","numberValidator","stringValidator","arrayValidator","objectValidator","dateValidator","getBaseType","isFieldRef","constraint","Rule","FIELD_REF","EMPTY_ARRAY","Symbol","ruleConstraintTypes","typeDef","valueOfField","bind","_typeDef","reset","_mergeRequired","next","_required","error","rule","clone","_level","_message","warning","info","_type","_rules","_fieldRules","isRequired","cloneDeep","cloneWithRules","rules","newRules","Set","forEach","curr","add","disallowDuplicate","isDuplicate","has","merge","newRule","targetType","toUpperCase","optional","required","len","positive","negative","uppercase","lowercase","_b","opts","optsScheme","schemes","fields","base","valueIsEmpty","validators","validator","forType","specConstraint","get","parent","errorFromException","def","requestIdleCallbackShim","requestIdleCallbackShim2","callback","start","now","window","didTimeout","timeRemaining","cancelIdleCallbackShim","handle","win","requestIdleCallback","cancelIdleCallback","memoizedWarnOnArraySlug","memoize","warnOnArraySlug","getDocumentIds","isDraft","published","draft","serializePath","part","isIndex","isKey","defaultIsUnique","slug","getClient","document","schemaOptions","disableArrayWarning","_id","docType","atPath","apiVersion","fetch","tag","serializedPath","slugValidator","slugValue","current","isUnique","slugContext","wasUnique","array","boolean","number","object","isRuleConstraint","getTypeChain","visited","baseRuleReducer","inputRule","baseRule","jsonType","typeOptionsList","list","option","extractValueFromListOption","hasValueField","field","normalizeValidationRules","validation","RuleClass","acc","maybeRecord","resolveTypeForArrayItem","candidates","itemType","isTypedObject","primitive","find","candidate","EMPTY_MARKERS","validateDocument","doc","schema","lastValueFrom","validateDocumentObservable","documentType","of","validationOptions","validateItemObservable","pipe","catchError","restOfContext","selfChecks","defer","nestedChecks","selfIsRequired","shouldRunNestedObjectValidation","fieldTypes","fieldResults","entries","_ref2","fieldType","subRule","nestedValue","shouldRunNestedValidationForArrays","index","mergeMap","validateNode","idle","mergeAll","toArray","flatten","uniqBy","JSON","stringify","timeout","Observable","observer","complete","traverse","annotations","annotation","inferFromSchemaType","inferFromSchema","typeNames","getTypeNames","typeName","schemaType"],"mappings":"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"}