@sanity/agent-schema 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,317 @@
1
+ import { a as ValidateValueFn, c as ValidationErrorCode, h as ManifestSchemaType, i as PatchOperations, l as ValidationResult, n as InsertOperation, o as ValidationContext, r as LocalizationConfig, s as ValidationError, t as FieldSchemaLookupResult } from "../_chunks-dts/types.js";
2
+ import { SanityClient } from "@sanity/client";
3
+ /**
4
+ * Validate an array value and its items.
5
+ */
6
+ declare function validateArray(value: unknown, fieldSchema: ManifestSchemaType, path: string, schema: ManifestSchemaType[], errors: ValidationError[], context: ValidationContext, validateValue: ValidateValueFn): Promise<void>;
7
+ /**
8
+ * Validate that new items don't duplicate existing array items or each other.
9
+ * Used by patch operations (APPEND, INSERT) to check uniqueItems constraints
10
+ * against the existing document state.
11
+ */
12
+ declare function validateUniqueItems(newItems: unknown[], existingArray: unknown[], pathPrefix: string, errors: ValidationError[]): void;
13
+ /**
14
+ * Return paths of fields with custom validators on the document type.
15
+ * Document-level custom validators are reported at `(document)`.
16
+ */
17
+ declare function detectCustomValidators(documentType: string, schema: ManifestSchemaType[]): string[];
18
+ interface PathResolutionResult {
19
+ /** The resolved field schema, or null if not found */
20
+ schema: ManifestSchemaType | null;
21
+ /** How the schema was resolved: 'schema' (static), 'document' (dynamic), or null (failed) */
22
+ resolvedVia: 'schema' | 'document' | null;
23
+ }
24
+ /**
25
+ * Resolve field schema at path, using document for accurate type resolution.
26
+ *
27
+ * When a document is provided and the path contains array selectors, we use
28
+ * document-based resolution to determine the correct type at each array access.
29
+ * This is essential for union arrays where multiple types have the same field name.
30
+ *
31
+ * @param path - Dot-notation path, may include array selectors like [_key=="abc"]
32
+ * @param typeSchema - The document type schema to start navigation from
33
+ * @param allSchemas - All available schemas for type resolution
34
+ * @param document - Optional existing document for dynamic resolution
35
+ * @returns Resolution result with schema and resolution method
36
+ */
37
+ declare function resolveFieldSchemaAtPath(path: string, typeSchema: ManifestSchemaType, allSchemas: ManifestSchemaType[], document?: Record<string, unknown>): PathResolutionResult;
38
+ /**
39
+ * Validate a document-level language field value against available languages.
40
+ *
41
+ * This validator is called when:
42
+ * 1. The document uses document-level translation
43
+ * 2. The field being validated is the language field (e.g., "language", "locale")
44
+ * 3. There are known available languages to validate against
45
+ *
46
+ * @param value - The language value to validate
47
+ * @param languageFieldName - Name of the language field (e.g., "language", "locale")
48
+ * @param availableLanguages - List of valid language codes from existing documents
49
+ * @param path - The field path for error reporting
50
+ * @param errors - Array to collect validation errors
51
+ */
52
+ declare function validateDocumentLanguageField(value: unknown, languageFieldName: string, availableLanguages: string[], path: string, errors: ValidationError[]): void;
53
+ /**
54
+ * Validate a field-level language key (the _key in internationalizedArray items).
55
+ *
56
+ * This validator is called when processing arrays with options.languages,
57
+ * to ensure that array item _key values match configured language IDs.
58
+ *
59
+ * @param key - The _key value from an array item
60
+ * @param allowedLanguages - List of allowed languages with id and title
61
+ * @param path - The field path for error reporting
62
+ * @param errors - Array to collect validation errors
63
+ */
64
+ declare function validateFieldLevelLanguageKey(key: string, allowedLanguages: Array<{
65
+ id: string;
66
+ title: string | null;
67
+ }>, path: string, errors: ValidationError[]): void;
68
+ /**
69
+ * Validate a field-level language field value (v5 format where language is a dedicated field).
70
+ *
71
+ * In v5 of the internationalized-array plugin, the language code is stored in a
72
+ * dedicated `language` field instead of `_key`.
73
+ */
74
+ declare function validateFieldLevelLanguageField(languageValue: unknown, allowedLanguages: Array<{
75
+ id: string;
76
+ title: string | null;
77
+ }>, path: string, errors: ValidationError[]): void;
78
+ type LanguageOption = {
79
+ id: string;
80
+ title: string | null;
81
+ };
82
+ interface SchemaWithOptions {
83
+ name?: string;
84
+ type?: string;
85
+ fields?: Array<{
86
+ name: string;
87
+ type: string;
88
+ }>;
89
+ of?: Array<{
90
+ name?: string;
91
+ type?: string;
92
+ fields?: Array<{
93
+ name: string;
94
+ type: string;
95
+ }>;
96
+ }>;
97
+ options?: {
98
+ languages?: LanguageOption[];
99
+ };
100
+ }
101
+ /**
102
+ * Detect whether an internationalized array uses v5 format (dedicated `language` field)
103
+ * by checking if the array's value type has a `language` field in its schema.
104
+ */
105
+ declare function isV5InternationalizedArray(fieldSchema: SchemaWithOptions, allSchemas: SchemaWithOptions[]): boolean;
106
+ /**
107
+ * Check if a field schema represents an internationalized array type.
108
+ *
109
+ * @param fieldSchema - The field schema to check
110
+ * @returns true if the field is an internationalized array
111
+ */
112
+ declare function isInternationalizedArrayField(fieldSchema: SchemaWithOptions): boolean;
113
+ /**
114
+ * Validate a SET operation against internationalized array language constraints.
115
+ *
116
+ * Handles two cases:
117
+ * 1. Setting the whole array (value is an array) — validates each item's _key
118
+ * 2. Setting a _key directly (path ends with `._key`) — validates the new key value
119
+ *
120
+ * Resolves the field schema from the path. No-ops if the field isn't an internationalized array.
121
+ *
122
+ * @param path - The SET operation path
123
+ * @param value - The new value being set
124
+ * @param fieldSchema - The resolved field schema for the path
125
+ * @param typeSchema - The document type schema (for resolving parent paths)
126
+ * @param allSchemas - All schemas for resolving named types
127
+ * @param errors - Array to collect validation errors
128
+ */
129
+ declare function validateInternationalizedArraySet(path: string, value: unknown, fieldSchema: ManifestSchemaType, typeSchema: ManifestSchemaType, allSchemas: ManifestSchemaType[], errors: ValidationError[]): void;
130
+ /**
131
+ * Validate language keys for items being added to an internationalized array.
132
+ *
133
+ * Callers should check `isInternationalizedArrayField()` before calling this.
134
+ *
135
+ * @param items - Array items to validate
136
+ * @param fieldSchema - The field schema (may be a named type reference)
137
+ * @param allSchemas - All schemas for resolving named types
138
+ * @param path - The array field path (e.g., 'description')
139
+ * @param errors - Array to collect validation errors
140
+ */
141
+ declare function validateInternationalizedArrayItems(items: unknown[], fieldSchema: SchemaWithOptions, allSchemas: SchemaWithOptions[], path: string, errors: ValidationError[]): void;
142
+ /**
143
+ * Validate an object value and its fields.
144
+ */
145
+ declare function validateObject(value: unknown, fieldSchema: ManifestSchemaType, path: string, schema: ManifestSchemaType[], errors: ValidationError[], context: ValidationContext, validateValue: ValidateValueFn): Promise<void>;
146
+ /**
147
+ * Get valid image metadata field names for a given image path.
148
+ *
149
+ * This uses the navigation logic to find the image field schema
150
+ * and extract valid metadata field names. Used for silent filtering of metadata.
151
+ *
152
+ * @param imagePath - The path to the image field
153
+ * @param typeSchema - The document type schema
154
+ * @param schema - All available schemas
155
+ * @returns Set of valid metadata field names, or null if path is invalid
156
+ */
157
+ declare function getValidImageMetadataFields(imagePath: string, typeSchema: ManifestSchemaType, schema: ManifestSchemaType[]): Set<string> | null;
158
+ /**
159
+ * Get the field schema(s) at a given path in the document type.
160
+ *
161
+ * For union types (arrays with multiple `of` types), returns ALL possible schemas.
162
+ * This is important for validating fields that might exist in some but not all union types.
163
+ *
164
+ * @param path - Dot-notation path, may include array selectors like [_key=="abc"]
165
+ * @param documentType - The document type name
166
+ * @param schema - Full schema array
167
+ * @param existingDocument - Optional document to validate path existence against
168
+ * @returns Object with schemas array and any validation errors
169
+ */
170
+ declare function getFieldSchemaAtPath(path: string, documentType: string, schema: ManifestSchemaType[], existingDocument?: Record<string, unknown>): FieldSchemaLookupResult;
171
+ /**
172
+ * Validate that a path points to an image field.
173
+ *
174
+ * This is a convenience wrapper around getFieldSchemaAtPath that checks
175
+ * whether the field at the path is an image type.
176
+ *
177
+ * @param path - Dot-notation path to the field
178
+ * @param documentType - The document type name
179
+ * @param schema - Full schema array
180
+ * @param existingDocument - Optional document to validate path existence against
181
+ * @returns Validation result with errors if path is invalid or not an image field
182
+ */
183
+ declare function validateImagePath(path: string, documentType: string, schema: ManifestSchemaType[], existingDocument?: Record<string, unknown>): ValidationResult;
184
+ /**
185
+ * Validates metadata fields for an image against the schema
186
+ * Removes fields that don't exist in the image field's schema definition
187
+ *
188
+ * @param metadata - The metadata object to validate (e.g., {alt: "...", caption: "..."})
189
+ * @param imagePath - The path to the image field (e.g., "heroImage" or "content[_key=="abc"].image")
190
+ * @param typeSchema - The document type schema
191
+ * @param schema - All available schemas
192
+ * @returns Cleaned metadata object with only valid fields, or undefined if no valid fields
193
+ */
194
+ declare function validateImageMetadata(metadata: Record<string, string>, imagePath: string, typeSchema: ManifestSchemaType, schema: ManifestSchemaType[]): Record<string, string> | undefined;
195
+ /**
196
+ * Validate a Portable Text block value.
197
+ *
198
+ * Blocks have special validation requirements:
199
+ * - children must be an array containing spans and inline objects (from block.of)
200
+ * - markDefs must be an array containing annotations (from block.marks.annotations)
201
+ * - style, listItem, level are optional fields
202
+ */
203
+ declare function validateBlock(value: unknown, fieldSchema: ManifestSchemaType, path: string, schema: ManifestSchemaType[], errors: ValidationError[], context: ValidationContext, validateValue: ValidateValueFn): Promise<void>;
204
+ /**
205
+ * Validate a primitive value against its schema type.
206
+ */
207
+ declare function validatePrimitive(value: unknown, schemaType: string, path: string, errors: ValidationError[], fieldSchema?: ManifestSchemaType): void;
208
+ /**
209
+ * Validate a value against schema validation rules (min, max, enum, uniqueItems).
210
+ *
211
+ * Supports two schema formats:
212
+ * - Manifest format: { flag: 'min', constraint: 5 }
213
+ * - Encoded format (from @sanity/descriptors): { type: 'minimum', value: '5' }
214
+ */
215
+ declare function validateSchemaRules(value: unknown, fieldSchema: ManifestSchemaType, path: string, errors: ValidationError[], warnings?: ValidationError[]): void;
216
+ /**
217
+ * Validate a reference value.
218
+ * Checks structure and optionally validates existence via client.
219
+ */
220
+ declare function validateReference(value: unknown, fieldSchema: ManifestSchemaType, path: string, errors: ValidationError[], context: ValidationContext): Promise<void>;
221
+ declare function validateRequiredFields(document: Record<string, unknown>, documentType: string, schema: ManifestSchemaType[]): ValidationError[];
222
+ /**
223
+ * Check whether the slug values on a draft collide with any other document in
224
+ * the dataset (excluding the draft and its published twin).
225
+ */
226
+ declare function validateSlugCollisions(document: Record<string, unknown>, documentType: string, schema: ManifestSchemaType[], client: SanityClient, ids: {
227
+ publishedId: string;
228
+ draftId: string;
229
+ }): Promise<ValidationError[]>;
230
+ /**
231
+ * Validate a slug value.
232
+ */
233
+ declare function validateSlug(value: unknown, path: string, errors: ValidationError[]): void;
234
+ /**
235
+ * Validate a geopoint value.
236
+ */
237
+ declare function validateGeopoint(value: unknown, path: string, errors: ValidationError[]): void;
238
+ /**
239
+ * Validate an image value structure.
240
+ * Note: Asset existence is validated separately in reference validation.
241
+ */
242
+ declare function validateImage(value: unknown, path: string, errors: ValidationError[], fieldSchema?: ManifestSchemaType, schema?: ManifestSchemaType[]): void;
243
+ /**
244
+ * Validate a file value structure.
245
+ */
246
+ declare function validateFile(value: unknown, path: string, errors: ValidationError[]): void;
247
+ /**
248
+ * Create a validation error with consistent formatting.
249
+ */
250
+ declare function createError(path: string, code: ValidationErrorCode, message: string, received: string, expected: string, fix: string): ValidationError;
251
+ /**
252
+ * Format a value for display in error messages.
253
+ * Handles truncation for long values.
254
+ */
255
+ declare function formatValue(value: unknown): string;
256
+ /**
257
+ * Map Sanity schema type to expected JavaScript type.
258
+ * See SANITY_SCHEMA_STRUCTURE.md for full reference.
259
+ */
260
+ declare function getExpectedJsType(schemaType: string): 'string' | 'number' | 'boolean' | 'array' | 'object';
261
+ /**
262
+ * Get the actual JavaScript type of a value.
263
+ */
264
+ declare function getActualJsType(value: unknown): 'string' | 'number' | 'boolean' | 'array' | 'object' | 'null' | 'undefined';
265
+ /**
266
+ * Get the uniqueness key for an array item based on its type.
267
+ * - References: unique by _ref
268
+ * - Primitives: unique by value
269
+ * - Objects: strip _key and compare rest
270
+ */
271
+ declare function getUniquenessKey(item: unknown): string;
272
+ /**
273
+ * Get a value from an object using a path string.
274
+ * Supports dot notation, array index notation [0], and _key selectors [_key=="value"].
275
+ */
276
+ declare function getValueAtPath(obj: unknown, path: string): unknown;
277
+ /**
278
+ * Validate that an object only contains allowed properties.
279
+ * Reports errors for any unknown properties found.
280
+ *
281
+ * @param obj - The object to validate
282
+ * @param allowedProperties - Set of property names that are allowed
283
+ * @param path - The path to the object for error reporting
284
+ * @param typeName - Human-readable type name for error messages (e.g., "reference", "slug")
285
+ * @param errors - Array to collect validation errors
286
+ */
287
+ declare function validateNoExtraProperties(obj: Record<string, unknown>, allowedProperties: Set<string>, path: string, typeName: string, errors: ValidationError[]): void;
288
+ /**
289
+ * Format validation errors for display to the LLM.
290
+ *
291
+ * @param errors - List of validation errors
292
+ * @returns Formatted error message
293
+ */
294
+ declare function formatValidationErrors(errors: ValidationError[]): string;
295
+ /**
296
+ * Validate a single value against its schema.
297
+ * This is the core recursive validator that dispatches to type-specific validators.
298
+ */
299
+ declare function validateValue(value: unknown, fieldSchema: ManifestSchemaType, path: string, errors: ValidationError[], context: ValidationContext, schema: ManifestSchemaType[], warnings?: ValidationError[]): Promise<void>;
300
+ type ValidateForPublishInput = {
301
+ document: Record<string, unknown>;
302
+ documentType: string;
303
+ schema: ManifestSchemaType[];
304
+ client: SanityClient;
305
+ publishedId: string;
306
+ draftId: string;
307
+ };
308
+ declare function validateForPublish({
309
+ document,
310
+ documentType,
311
+ schema,
312
+ client,
313
+ publishedId,
314
+ draftId
315
+ }: ValidateForPublishInput): Promise<ValidationResult>;
316
+ export { type FieldSchemaLookupResult, type InsertOperation, type LocalizationConfig, type PatchOperations, type ValidateValueFn, type ValidationContext, type ValidationError, type ValidationErrorCode, type ValidationResult, createError, detectCustomValidators, formatValidationErrors, formatValue, getActualJsType, getExpectedJsType, getFieldSchemaAtPath, getUniquenessKey, getValidImageMetadataFields, getValueAtPath, isInternationalizedArrayField, isV5InternationalizedArray, resolveFieldSchemaAtPath, validateArray, validateBlock, validateDocumentLanguageField, validateFieldLevelLanguageField, validateFieldLevelLanguageKey, validateFile, validateForPublish, validateGeopoint, validateImage, validateImageMetadata, validateImagePath, validateInternationalizedArrayItems, validateInternationalizedArraySet, validateNoExtraProperties, validateObject, validatePrimitive, validateReference, validateRequiredFields, validateSchemaRules, validateSlug, validateSlugCollisions, validateUniqueItems, validateValue };
317
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/validation/array.validator.ts","../../src/validation/customValidators.ts","../../src/validation/document-path-resolver.ts","../../src/validation/language.validator.ts","../../src/validation/object.validator.ts","../../src/validation/path-validation.ts","../../src/validation/portable-text.validator.ts","../../src/validation/primitive.validator.ts","../../src/validation/reference.validator.ts","../../src/validation/requiredFields.ts","../../src/validation/slugCollisions.ts","../../src/validation/special-types.validator.ts","../../src/validation/utils.ts","../../src/validation/validate-value.ts","../../src/validation/validateForPublish.ts"],"mappings":"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"}