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

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.
package/lib/index.js CHANGED
@@ -1,1413 +1,9 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: !0 });
3
- var omit = require("lodash/omit.js"), pick = require("lodash/pick.js"), resolve = require("./_chunks-cjs/resolve.js"), arrify = require("arrify"), isUndefined = require("lodash/isUndefined.js"), omitBy = require("lodash/omitBy.js"), capitalize = require("lodash/capitalize.js"), castArray = require("lodash/castArray.js"), flatMap = require("lodash/flatMap.js"), startCase = require("lodash/startCase.js"), isPlainObject = require("lodash/isPlainObject.js"), toPath = require("lodash/toPath.js");
4
- function _interopDefaultCompat(e) {
5
- return e && typeof e == "object" && "default" in e ? e : { default: e };
6
- }
7
- var omit__default = /* @__PURE__ */ _interopDefaultCompat(omit), pick__default = /* @__PURE__ */ _interopDefaultCompat(pick), arrify__default = /* @__PURE__ */ _interopDefaultCompat(arrify), isUndefined__default = /* @__PURE__ */ _interopDefaultCompat(isUndefined), omitBy__default = /* @__PURE__ */ _interopDefaultCompat(omitBy), capitalize__default = /* @__PURE__ */ _interopDefaultCompat(capitalize), castArray__default = /* @__PURE__ */ _interopDefaultCompat(castArray), flatMap__default = /* @__PURE__ */ _interopDefaultCompat(flatMap), startCase__default = /* @__PURE__ */ _interopDefaultCompat(startCase), isPlainObject__default = /* @__PURE__ */ _interopDefaultCompat(isPlainObject), toPath__default = /* @__PURE__ */ _interopDefaultCompat(toPath);
8
- function lazyGetter(target, key, getter, config = {}) {
9
- return Object.defineProperty(target, key, {
10
- configurable: !0,
11
- enumerable: config.enumerable !== !1,
12
- get() {
13
- const val = getter();
14
- return Object.defineProperty(target, key, {
15
- value: val,
16
- writable: !!config.writable,
17
- configurable: !1
18
- }), val;
19
- }
20
- }), target;
21
- }
22
- function hiddenGetter(target, key, value) {
23
- Object.defineProperty(target, key, {
24
- enumerable: !1,
25
- writable: !1,
26
- configurable: !1,
27
- value
28
- });
29
- }
30
- const OVERRIDABLE_FIELDS$f = [...resolve.DEFAULT_OVERRIDEABLE_FIELDS], ANY_CORE = {
31
- name: "any",
32
- type: null,
33
- jsonType: "any"
34
- }, AnyType = {
35
- get() {
36
- return ANY_CORE;
37
- },
38
- extend(subTypeDef, extendMember) {
39
- const ownProps = {
40
- ...subTypeDef,
41
- of: subTypeDef.of.map((fieldDef) => ({
42
- name: fieldDef.name,
43
- type: extendMember(omit__default.default(fieldDef, "name"))
44
- }))
45
- }, parsed = Object.assign(pick__default.default(ANY_CORE, OVERRIDABLE_FIELDS$f), ownProps, {
46
- type: ANY_CORE
47
- });
48
- return hiddenGetter(parsed, resolve.OWN_PROPS_NAME, ownProps), subtype(parsed);
49
- function subtype(parent) {
50
- return {
51
- get() {
52
- return parent;
53
- },
54
- extend: (extensionDef) => {
55
- if (extensionDef.of)
56
- throw new Error('Cannot override `of` property of subtypes of "array"');
57
- const subOwnProps = pick__default.default(extensionDef, OVERRIDABLE_FIELDS$f), current = Object.assign({}, parent, subOwnProps, {
58
- type: parent
59
- });
60
- return hiddenGetter(current, resolve.OWN_PROPS_NAME, subOwnProps), subtype(current);
61
- }
62
- };
63
- }
64
- }
65
- }, OVERRIDABLE_FIELDS$e = [...resolve.DEFAULT_OVERRIDEABLE_FIELDS], ARRAY_CORE = {
66
- name: "array",
67
- type: null,
68
- jsonType: "array",
69
- of: []
70
- }, ArrayType = {
71
- get() {
72
- return ARRAY_CORE;
73
- },
74
- extend(subTypeDef, createMemberType) {
75
- const parsed = Object.assign(pick__default.default(ARRAY_CORE, OVERRIDABLE_FIELDS$e), subTypeDef, {
76
- type: ARRAY_CORE
77
- });
78
- return lazyGetter(parsed, "of", () => subTypeDef.of.map((ofTypeDef) => createMemberType(ofTypeDef))), lazyGetter(parsed, resolve.OWN_PROPS_NAME, () => ({ ...subTypeDef, of: parsed.of }), {
79
- enumerable: !1,
80
- writable: !1
81
- }), subtype(parsed);
82
- function subtype(parent) {
83
- return {
84
- get() {
85
- return parent;
86
- },
87
- extend: (extensionDef) => {
88
- if (extensionDef.of)
89
- throw new Error('Cannot override `of` property of subtypes of "array"');
90
- const ownProps = pick__default.default(extensionDef, OVERRIDABLE_FIELDS$e), current = Object.assign({}, parent, ownProps, {
91
- type: parent
92
- });
93
- return hiddenGetter(current, resolve.OWN_PROPS_NAME, ownProps), subtype(current);
94
- }
95
- };
96
- }
97
- }
1
+ import { DeprecatedDefaultSchema, Schema as Schema$1 } from "./_chunks-es/Rule.js";
2
+ import { Rule } from "./_chunks-es/Rule.js";
3
+ const Schema = Schema$1;
4
+ export {
5
+ Rule,
6
+ Schema,
7
+ DeprecatedDefaultSchema as default
98
8
  };
99
- function warnIfPreviewOnOptions(type) {
100
- type.options && type.options.preview && console.warn(`Heads up! The preview config is no longer defined on "options", but instead on the type/field itself.
101
- Please move {options: {preview: ...}} to {..., preview: ...} on the type/field definition of "${type.name}".
102
- `);
103
- }
104
- function warnIfPreviewHasFields(type) {
105
- const preview = type.preview || (type.options || {}).preview;
106
- preview && "fields" in preview && console.warn(`Heads up! "preview.fields" should be renamed to "preview.select". Please update the preview config for "${type.name}".
107
- `);
108
- }
109
- function isEmpty(object) {
110
- for (const key in object)
111
- if (object.hasOwnProperty(key))
112
- return !1;
113
- return !0;
114
- }
115
- function _stringify(value, options, depth) {
116
- if (depth > options.maxDepth)
117
- return "...";
118
- if (Array.isArray(value)) {
119
- if (value.length === 0)
120
- return "[empty]";
121
- const capLength = Math.max(value.length - options.maxBreadth), asString2 = value.slice(0, options.maxBreadth).map((item, index) => _stringify(item, options, depth + 1)).concat(capLength > 0 ? `\u2026+${capLength}` : []).join(", ");
122
- return depth === 0 ? asString2 : `[${asString2}]`;
123
- }
124
- if (typeof value == "object" && value !== null) {
125
- const keys = Object.keys(value).filter(
126
- (key) => !options.ignoreKeys.includes(key) && typeof value[key] < "u"
127
- );
128
- if (isEmpty(pick__default.default(value, keys)))
129
- return "{empty}";
130
- const asString2 = keys.slice(0, options.maxBreadth).map((key) => `${key}: ${_stringify(value[key], options, depth + 1)}`).join(", ");
131
- return depth === 0 ? asString2 : `{${asString2}}`;
132
- }
133
- const asString = String(value);
134
- return asString === "" ? '""' : asString;
135
- }
136
- function stringify(value, options = {}) {
137
- const opts = {
138
- maxDepth: "maxDepth" in options ? options.maxDepth : 2,
139
- maxBreadth: "maxBreadth" in options ? options.maxBreadth : 2,
140
- ignoreKeys: "ignoreKeys" in options ? options.ignoreKeys : []
141
- };
142
- return _stringify(value, opts, 0);
143
- }
144
- const OPTIONS = {
145
- maxEntries: 2,
146
- maxDepth: 2,
147
- maxBreadth: 2,
148
- ignoreKeys: ["_id", "_type", "_key", "_ref"]
149
- };
150
- function createFallbackPrepare(fieldNames) {
151
- return (value) => ({
152
- title: stringify(pick__default.default(value, fieldNames), OPTIONS)
153
- });
154
- }
155
- function isBlockField(field) {
156
- return field.type === "array" && field.of && field.of.some((member) => member.type === "block") || !1;
157
- }
158
- const TITLE_CANDIDATES = ["title", "name", "label", "heading", "header", "caption"], DESCRIPTION_CANDIDATES = ["description", ...TITLE_CANDIDATES];
159
- function fieldHasReferenceTo(fieldDef, refType) {
160
- return arrify__default.default(fieldDef.to || []).some((memberTypeDef) => memberTypeDef.type === refType);
161
- }
162
- function isImageAssetField(fieldDef) {
163
- return fieldHasReferenceTo(fieldDef, "sanity.imageAsset");
164
- }
165
- function resolveImageAssetPath(typeDef) {
166
- const fields = typeDef.fields || [], imageAssetField = fields.find(isImageAssetField);
167
- if (imageAssetField)
168
- return imageAssetField.name;
169
- const fieldWithImageAsset = fields.find(
170
- (fieldDef) => (fieldDef.fields || []).some(isImageAssetField)
171
- );
172
- return fieldWithImageAsset ? `${fieldWithImageAsset.name}.asset` : void 0;
173
- }
174
- function isFileAssetField(fieldDef) {
175
- return fieldHasReferenceTo(fieldDef, "sanity.fileAsset");
176
- }
177
- function resolveFileAssetPath(typeDef) {
178
- const fields = typeDef.fields || [], assetField = fields.find(isFileAssetField);
179
- if (assetField)
180
- return assetField.name;
181
- const fieldWithFileAsset = fields.find(
182
- (fieldDef) => (fieldDef.fields || []).some(isFileAssetField)
183
- );
184
- return fieldWithFileAsset ? `${fieldWithFileAsset.name}.asset` : void 0;
185
- }
186
- function guessPreviewFields(rawObjectTypeDef) {
187
- const objectTypeDef = { fields: [], ...rawObjectTypeDef }, stringFieldNames = objectTypeDef.fields.filter((field) => field.type === "string").map((field) => field.name), blockFieldNames = objectTypeDef.fields.filter(isBlockField).map((field) => field.name);
188
- let titleField = TITLE_CANDIDATES.find(
189
- (candidate) => stringFieldNames.includes(candidate) || blockFieldNames.includes(candidate)
190
- ), descField = DESCRIPTION_CANDIDATES.find(
191
- (candidate) => candidate !== titleField && (stringFieldNames.includes(candidate) || blockFieldNames.includes(candidate))
192
- );
193
- titleField || (titleField = stringFieldNames[0] || blockFieldNames[0], descField = stringFieldNames[1] || blockFieldNames[1]);
194
- const mediaField = objectTypeDef.fields.find((field) => field.type === "image"), imageAssetPath = resolveImageAssetPath(objectTypeDef);
195
- if (!titleField) {
196
- const fileAssetPath = resolveFileAssetPath(objectTypeDef);
197
- fileAssetPath && (titleField = `${fileAssetPath}.originalFilename`), imageAssetPath && (titleField = `${imageAssetPath}.originalFilename`);
198
- }
199
- if (!titleField && !imageAssetPath) {
200
- const fieldNames = objectTypeDef.fields.map((field) => field.name);
201
- return {
202
- select: fieldNames.reduce((acc, fieldName) => (acc[fieldName] = fieldName, acc), {}),
203
- prepare: createFallbackPrepare(fieldNames)
204
- };
205
- }
206
- return {
207
- select: omitBy__default.default(
208
- {
209
- title: titleField,
210
- description: descField,
211
- media: mediaField ? mediaField.name : imageAssetPath
212
- },
213
- isUndefined__default.default
214
- )
215
- };
216
- }
217
- function parseSelection(selection) {
218
- return selection.reduce((acc, field) => (acc[field] = field, acc), {});
219
- }
220
- function parsePreview(preview) {
221
- if (!preview)
222
- return preview;
223
- const select = preview.select || preview.fields || {};
224
- return Array.isArray(select) ? {
225
- ...pick__default.default(preview, ["prepare", "component"]),
226
- select: parseSelection(select)
227
- } : {
228
- ...pick__default.default(preview, ["prepare", "component"]),
229
- select
230
- };
231
- }
232
- function createPreviewGetter(objectTypeDef) {
233
- return function() {
234
- return warnIfPreviewOnOptions(objectTypeDef), warnIfPreviewHasFields(objectTypeDef), parsePreview(objectTypeDef.preview || (objectTypeDef.options || {}).preview) || guessPreviewFields(objectTypeDef);
235
- };
236
- }
237
- const DEFAULT_LINK_ANNOTATION = {
238
- type: "object",
239
- name: "link",
240
- title: "Link",
241
- i18nTitleKey: "inputs.portable-text.annotation.link",
242
- options: {
243
- modal: { type: "popover" }
244
- },
245
- fields: [
246
- {
247
- name: "href",
248
- type: "url",
249
- title: "Link",
250
- description: "A valid web, email, phone, or relative link.",
251
- validation: (Rule) => Rule.uri({
252
- scheme: ["http", "https", "tel", "mailto"],
253
- allowRelative: !0
254
- })
255
- }
256
- ]
257
- }, DEFAULT_TEXT_FIELD = {
258
- type: "text",
259
- name: "text",
260
- title: "Text"
261
- }, DEFAULT_MARKS_FIELD = {
262
- name: "marks",
263
- type: "array",
264
- of: [{ type: "string" }],
265
- title: "Marks"
266
- }, LIST_TYPES = {
267
- bullet: {
268
- title: "Bulleted list",
269
- value: "bullet",
270
- i18nTitleKey: "inputs.portable-text.list-type.bullet"
271
- },
272
- numbered: {
273
- title: "Numbered list",
274
- value: "number",
275
- i18nTitleKey: "inputs.portable-text.list-type.number"
276
- }
277
- }, DEFAULT_LIST_TYPES = [LIST_TYPES.bullet, LIST_TYPES.numbered], BLOCK_STYLES = {
278
- normal: { title: "Normal", value: "normal", i18nTitleKey: "inputs.portable-text.style.normal" },
279
- h1: { title: "Heading 1", value: "h1", i18nTitleKey: "inputs.portable-text.style.h1" },
280
- h2: { title: "Heading 2", value: "h2", i18nTitleKey: "inputs.portable-text.style.h2" },
281
- h3: { title: "Heading 3", value: "h3", i18nTitleKey: "inputs.portable-text.style.h3" },
282
- h4: { title: "Heading 4", value: "h4", i18nTitleKey: "inputs.portable-text.style.h4" },
283
- h5: { title: "Heading 5", value: "h5", i18nTitleKey: "inputs.portable-text.style.h5" },
284
- h6: { title: "Heading 6", value: "h6", i18nTitleKey: "inputs.portable-text.style.h6" },
285
- blockquote: {
286
- title: "Quote",
287
- value: "blockquote",
288
- i18nTitleKey: "inputs.portable-text.style.quote"
289
- }
290
- }, DEFAULT_BLOCK_STYLES = [
291
- BLOCK_STYLES.normal,
292
- BLOCK_STYLES.h1,
293
- BLOCK_STYLES.h2,
294
- BLOCK_STYLES.h3,
295
- BLOCK_STYLES.h4,
296
- BLOCK_STYLES.h5,
297
- BLOCK_STYLES.h6,
298
- BLOCK_STYLES.blockquote
299
- ], DECORATOR_STRONG = {
300
- title: "Strong",
301
- value: "strong",
302
- i18nTitleKey: "inputs.portable-text.decorator.strong"
303
- }, DECORATOR_EMPHASIS = {
304
- title: "Italic",
305
- value: "em",
306
- i18nTitleKey: "inputs.portable-text.decorator.emphasis"
307
- }, DECORATOR_CODE = {
308
- title: "Code",
309
- value: "code",
310
- i18nTitleKey: "inputs.portable-text.decorator.code"
311
- }, DECORATOR_UNDERLINE = {
312
- title: "Underline",
313
- value: "underline",
314
- i18nTitleKey: "inputs.portable-text.decorator.underline"
315
- }, DECORATOR_STRIKE = {
316
- title: "Strike",
317
- value: "strike-through",
318
- i18nTitleKey: "inputs.portable-text.decorator.strike-through"
319
- }, DECORATORS = {
320
- strong: DECORATOR_STRONG,
321
- em: DECORATOR_EMPHASIS,
322
- code: DECORATOR_CODE,
323
- underline: DECORATOR_UNDERLINE,
324
- strikeThrough: DECORATOR_STRIKE
325
- }, DEFAULT_DECORATORS = [
326
- DECORATORS.strong,
327
- DECORATORS.em,
328
- DECORATORS.code,
329
- DECORATORS.underline,
330
- DECORATORS.strikeThrough
331
- ], INHERITED_FIELDS$1 = [
332
- "type",
333
- "name",
334
- "title",
335
- "jsonType",
336
- "description",
337
- "options",
338
- "fieldsets",
339
- "icon"
340
- ], BLOCK_CORE = {
341
- name: "block",
342
- title: "Block",
343
- type: null,
344
- jsonType: "object"
345
- }, DEFAULT_OPTIONS$3 = {}, BlockType = {
346
- get() {
347
- return BLOCK_CORE;
348
- },
349
- extend(subTypeDef, extendMember) {
350
- const options = { ...subTypeDef.options || DEFAULT_OPTIONS$3 }, { marks, styles, lists, of, ...rest } = subTypeDef, childrenField = createChildrenField(marks, of), styleField = createStyleField(styles), listItemField = createListItemField(lists), markDefsField = {
351
- name: "markDefs",
352
- title: "Mark definitions",
353
- type: "array",
354
- of: marks?.annotations || DEFAULT_ANNOTATIONS
355
- }, fields = [childrenField, styleField, listItemField, markDefsField, {
356
- name: "level",
357
- title: "Indentation",
358
- type: "number"
359
- }].concat(
360
- subTypeDef.fields || []
361
- ), ownProps = { ...rest, options }, parsed = Object.assign(pick__default.default(BLOCK_CORE, INHERITED_FIELDS$1), ownProps, {
362
- type: BLOCK_CORE
363
- });
364
- return lazyGetter(parsed, "fields", () => fields.map((fieldDef) => {
365
- const { name, ...type } = fieldDef;
366
- return {
367
- name,
368
- type: extendMember(type)
369
- };
370
- })), lazyGetter(parsed, "preview", createPreviewGetter(subTypeDef)), lazyGetter(
371
- parsed,
372
- resolve.OWN_PROPS_NAME,
373
- () => ({
374
- ...ownProps,
375
- fields: parsed.fields,
376
- preview: parsed.preview
377
- }),
378
- { enumerable: !1, writable: !1 }
379
- ), subtype(parsed);
380
- function subtype(parent) {
381
- return {
382
- get() {
383
- return parent;
384
- },
385
- extend: (extensionDef) => {
386
- if (extensionDef.fields)
387
- throw new Error('Cannot override `fields` of subtypes of "block"');
388
- const subOwnProps = pick__default.default(extensionDef, INHERITED_FIELDS$1), current = Object.assign({}, parent, subOwnProps, {
389
- type: parent
390
- });
391
- return hiddenGetter(current, resolve.OWN_PROPS_NAME, subOwnProps), subtype(current);
392
- }
393
- };
394
- }
395
- }
396
- };
397
- function ensureNormalStyle(styles) {
398
- return styles.some((style) => style.value === "normal") ? styles : [BLOCK_STYLES.normal, ...styles];
399
- }
400
- function createStyleField(styles) {
401
- return {
402
- name: "style",
403
- title: "Style",
404
- type: "string",
405
- options: {
406
- list: ensureNormalStyle(styles || DEFAULT_BLOCK_STYLES)
407
- }
408
- };
409
- }
410
- function createListItemField(lists) {
411
- return {
412
- name: "listItem",
413
- title: "List type",
414
- type: "string",
415
- options: {
416
- list: lists || DEFAULT_LIST_TYPES
417
- }
418
- };
419
- }
420
- const DEFAULT_ANNOTATIONS = [DEFAULT_LINK_ANNOTATION];
421
- function createChildrenField(marks, of = []) {
422
- return {
423
- name: "children",
424
- title: "Content",
425
- type: "array",
426
- of: [
427
- {
428
- type: "span",
429
- fields: [DEFAULT_TEXT_FIELD, DEFAULT_MARKS_FIELD],
430
- annotations: marks && marks.annotations ? marks.annotations : DEFAULT_ANNOTATIONS,
431
- decorators: marks && marks.decorators ? marks.decorators : DEFAULT_DECORATORS
432
- },
433
- ...of.filter((memberType) => memberType.type !== "span")
434
- ]
435
- };
436
- }
437
- const INHERITED_FIELDS = [
438
- "type",
439
- "name",
440
- "title",
441
- "jsonType",
442
- "description",
443
- "options",
444
- "fieldsets",
445
- "icon"
446
- ], SPAN_CORE = {
447
- name: "span",
448
- title: "Span",
449
- type: null,
450
- jsonType: "object"
451
- }, MARKS_FIELD = {
452
- name: "marks",
453
- title: "Marks",
454
- type: "array",
455
- of: [{ type: "string" }]
456
- }, TEXT_FIELD = {
457
- name: "text",
458
- title: "Text",
459
- type: "string"
460
- }, DEFAULT_OPTIONS$2 = {}, SpanType = {
461
- get() {
462
- return SPAN_CORE;
463
- },
464
- extend(subTypeDef, extendMember) {
465
- const options = { ...subTypeDef.options || DEFAULT_OPTIONS$2 }, { annotations = [], marks = [] } = subTypeDef, fields = [MARKS_FIELD, TEXT_FIELD], ownProps = { ...subTypeDef, options }, parsed = Object.assign(pick__default.default(SPAN_CORE, INHERITED_FIELDS), ownProps, {
466
- type: SPAN_CORE
467
- });
468
- return lazyGetter(parsed, "fields", () => fields.map((fieldDef) => {
469
- const { name, ...type } = fieldDef;
470
- return {
471
- name,
472
- type: extendMember(type)
473
- };
474
- })), lazyGetter(parsed, "annotations", () => annotations.map(extendMember)), lazyGetter(parsed, "marks", () => marks.map(extendMember)), lazyGetter(parsed, "preview", createPreviewGetter(subTypeDef)), lazyGetter(
475
- parsed,
476
- resolve.OWN_PROPS_NAME,
477
- () => ({
478
- ...ownProps,
479
- fields: parsed.fields,
480
- annotations: parsed.annotations,
481
- marks: parsed.marks,
482
- preview: parsed.preview
483
- }),
484
- { enumerable: !1, writable: !1 }
485
- ), subtype(parsed);
486
- function subtype(parent) {
487
- return {
488
- get() {
489
- return parent;
490
- },
491
- extend: (extensionDef) => {
492
- if (extensionDef.fields)
493
- throw new Error('Cannot override `fields` of subtypes of "span"');
494
- const subOwnProps = pick__default.default(extensionDef, INHERITED_FIELDS), current = Object.assign({}, parent, subOwnProps, {
495
- type: parent
496
- });
497
- return hiddenGetter(current, resolve.OWN_PROPS_NAME, subOwnProps), subtype(current);
498
- }
499
- };
500
- }
501
- }
502
- };
503
- var primitivePreview = {
504
- prepare: (val) => ({ title: String(val) })
505
- };
506
- const OVERRIDABLE_FIELDS$d = [...resolve.DEFAULT_OVERRIDEABLE_FIELDS], BOOLEAN_CORE = {
507
- name: "boolean",
508
- title: "Boolean",
509
- type: null,
510
- jsonType: "boolean"
511
- }, BooleanType = {
512
- get() {
513
- return BOOLEAN_CORE;
514
- },
515
- extend(subTypeDef) {
516
- const ownProps = {
517
- ...subTypeDef,
518
- preview: primitivePreview
519
- }, parsed = Object.assign(pick__default.default(BOOLEAN_CORE, OVERRIDABLE_FIELDS$d), ownProps, {
520
- type: BOOLEAN_CORE
521
- });
522
- return hiddenGetter(parsed, resolve.OWN_PROPS_NAME, ownProps), subtype(parsed);
523
- function subtype(parent) {
524
- return {
525
- get() {
526
- return parent;
527
- },
528
- extend: (extensionDef) => {
529
- const subOwnProps = pick__default.default(extensionDef, OVERRIDABLE_FIELDS$d), current = Object.assign({}, parent, subOwnProps, {
530
- type: parent
531
- });
532
- return hiddenGetter(current, resolve.OWN_PROPS_NAME, subOwnProps), subtype(current);
533
- }
534
- };
535
- }
536
- }
537
- }, REF_FIELD$2 = {
538
- name: "_ref",
539
- title: "Referenced document ID",
540
- type: "string"
541
- }, WEAK_FIELD$2 = {
542
- name: "_weak",
543
- title: "Weak reference marker",
544
- type: "boolean"
545
- }, DATASET_FIELD = {
546
- name: "_dataset",
547
- title: "Target dataset",
548
- type: "string"
549
- }, PROJECT_ID_FIELD = {
550
- name: "_projectId",
551
- title: "Target project ID",
552
- type: "string",
553
- hidden: !0
554
- }, REFERENCE_FIELDS$2 = [REF_FIELD$2, WEAK_FIELD$2, DATASET_FIELD, PROJECT_ID_FIELD], OVERRIDABLE_FIELDS$c = [...resolve.DEFAULT_OVERRIDEABLE_FIELDS], CROSS_DATASET_REFERENCE_CORE = {
555
- name: "crossDatasetReference",
556
- type: null,
557
- jsonType: "object"
558
- };
559
- function humanize$2(arr, conjunction) {
560
- const len = arr.length;
561
- if (len === 1)
562
- return arr[0];
563
- const first = arr.slice(0, len - 1), last = arr[len - 1];
564
- return `${first.join(", ")} ${conjunction} ${last}`;
565
- }
566
- function buildTitle$2(type) {
567
- return !type.to || type.to.length === 0 ? "Cross dataset Reference" : `Cross dataset reference to ${humanize$2(
568
- arrify__default.default(type.to).map((toType) => toType.title || capitalize__default.default(toType.type)),
569
- "or"
570
- ).toLowerCase()}`;
571
- }
572
- const CrossDatasetReferenceType = {
573
- get() {
574
- return CROSS_DATASET_REFERENCE_CORE;
575
- },
576
- extend(subTypeDef, createMemberType) {
577
- if (!subTypeDef.to)
578
- throw new Error(
579
- `Missing "to" field in cross dataset reference definition. Check the type ${subTypeDef.name}`
580
- );
581
- const parsed = Object.assign(
582
- pick__default.default(CROSS_DATASET_REFERENCE_CORE, OVERRIDABLE_FIELDS$c),
583
- subTypeDef,
584
- {
585
- type: CROSS_DATASET_REFERENCE_CORE
586
- }
587
- );
588
- return lazyGetter(parsed, "fields", () => REFERENCE_FIELDS$2.map((fieldDef) => {
589
- const { name, ...type } = fieldDef;
590
- return {
591
- name,
592
- type: createMemberType(type)
593
- };
594
- })), lazyGetter(parsed, "to", () => arrify__default.default(subTypeDef.to).map((toType) => ({
595
- ...toType,
596
- // eslint-disable-next-line camelcase
597
- __experimental_search: resolve.resolveSearchConfigForBaseFieldPaths(toType)
598
- }))), lazyGetter(parsed, "title", () => subTypeDef.title || buildTitle$2(parsed)), lazyGetter(
599
- parsed,
600
- resolve.OWN_PROPS_NAME,
601
- () => ({
602
- ...subTypeDef,
603
- fields: parsed.fields,
604
- to: parsed.to,
605
- title: parsed.title
606
- }),
607
- { enumerable: !1, writable: !1 }
608
- ), subtype(parsed);
609
- function subtype(parent) {
610
- return {
611
- get() {
612
- return parent;
613
- },
614
- extend: (extensionDef) => {
615
- if (extensionDef.of)
616
- throw new Error('Cannot override `of` of subtypes of "reference"');
617
- const ownProps = pick__default.default(extensionDef, OVERRIDABLE_FIELDS$c), current = Object.assign({}, parent, ownProps, {
618
- type: parent
619
- });
620
- return hiddenGetter(current, resolve.OWN_PROPS_NAME, ownProps), subtype(current);
621
- }
622
- };
623
- }
624
- }
625
- }, OVERRIDABLE_FIELDS$b = [...resolve.DEFAULT_OVERRIDEABLE_FIELDS], DATE_CORE = {
626
- name: "date",
627
- title: "Datetime",
628
- type: null,
629
- jsonType: "string"
630
- }, DateType = {
631
- get() {
632
- return DATE_CORE;
633
- },
634
- extend(subTypeDef) {
635
- const ownProps = {
636
- ...subTypeDef,
637
- preview: primitivePreview
638
- }, parsed = Object.assign(pick__default.default(DATE_CORE, OVERRIDABLE_FIELDS$b), ownProps, {
639
- type: DATE_CORE
640
- });
641
- return hiddenGetter(parsed, resolve.OWN_PROPS_NAME, ownProps), subtype(parsed);
642
- function subtype(parent) {
643
- return {
644
- get() {
645
- return parent;
646
- },
647
- extend: (extensionDef) => {
648
- const subOwnProps = pick__default.default(extensionDef, OVERRIDABLE_FIELDS$b), current = Object.assign({}, parent, subOwnProps, {
649
- type: parent
650
- });
651
- return hiddenGetter(current, resolve.OWN_PROPS_NAME, subOwnProps), subtype(current);
652
- }
653
- };
654
- }
655
- }
656
- }, OVERRIDABLE_FIELDS$a = [...resolve.DEFAULT_OVERRIDEABLE_FIELDS], DATETIME_CORE = {
657
- name: "datetime",
658
- title: "Datetime",
659
- type: null,
660
- jsonType: "string"
661
- }, DateTimeType = {
662
- get() {
663
- return DATETIME_CORE;
664
- },
665
- extend(subTypeDef) {
666
- const ownProps = {
667
- ...subTypeDef,
668
- preview: primitivePreview
669
- }, parsed = Object.assign(pick__default.default(DATETIME_CORE, OVERRIDABLE_FIELDS$a), ownProps, {
670
- type: DATETIME_CORE
671
- });
672
- return hiddenGetter(parsed, resolve.OWN_PROPS_NAME, ownProps), subtype(parsed);
673
- function subtype(parent) {
674
- return {
675
- get() {
676
- return parent;
677
- },
678
- extend: (extensionDef) => {
679
- const subOwnProps = pick__default.default(extensionDef, OVERRIDABLE_FIELDS$a), current = Object.assign({}, parent, subOwnProps, {
680
- type: parent
681
- });
682
- return hiddenGetter(current, resolve.OWN_PROPS_NAME, subOwnProps), subtype(current);
683
- }
684
- };
685
- }
686
- }
687
- }, CANDIDATES = ["title", "name", "label", "heading", "header", "caption", "description"], PRIMITIVES = ["string", "boolean", "number"], isPrimitive = (field) => PRIMITIVES.includes(field.type);
688
- function guessOrderingConfig(objectTypeDef) {
689
- let candidates = CANDIDATES.filter(
690
- (candidate) => objectTypeDef.fields.some((field) => isPrimitive(field) && field.name === candidate)
691
- );
692
- return candidates.length === 0 && (candidates = objectTypeDef.fields.filter(isPrimitive).map((field) => field.name)), candidates.map(
693
- (name) => ({
694
- name,
695
- i18n: {
696
- title: { key: `default-orderings.${name}`, ns: "studio" }
697
- },
698
- title: capitalize__default.default(startCase__default.default(name)),
699
- by: [{ field: name, direction: "asc" }]
700
- })
701
- );
702
- }
703
- function normalizeSearchConfigs(configs) {
704
- if (!Array.isArray(configs))
705
- throw new Error(
706
- "The search config of a document type must be an array of search config objects"
707
- );
708
- return configs.map((conf) => {
709
- if (conf === "defaults")
710
- return conf;
711
- if (!isPlainObject__default.default(conf))
712
- throw new Error("Search config must be an object of {path: string, weight: number}");
713
- return {
714
- weight: "weight" in conf ? conf.weight : 1,
715
- path: toPath__default.default(conf.path),
716
- mapWith: typeof conf.mapWith == "string" ? conf.mapWith : void 0
717
- };
718
- });
719
- }
720
- const OVERRIDABLE_FIELDS$9 = [
721
- ...resolve.DEFAULT_OVERRIDEABLE_FIELDS,
722
- "orderings",
723
- "__experimental_search",
724
- "blockEditor",
725
- "icon"
726
- ], ObjectType = {
727
- get() {
728
- return {
729
- name: "object",
730
- title: "Object",
731
- type: null,
732
- jsonType: "object"
733
- };
734
- },
735
- extend(rawSubTypeDef, createMemberType) {
736
- const subTypeDef = { fields: [], ...rawSubTypeDef }, options = { ...subTypeDef.options }, ownProps = {
737
- ...subTypeDef,
738
- title: subTypeDef.title || (subTypeDef.name ? startCase__default.default(subTypeDef.name) : "Object"),
739
- options,
740
- orderings: subTypeDef.orderings || guessOrderingConfig(subTypeDef),
741
- fields: subTypeDef.fields.map((fieldDef) => {
742
- const { name, fieldset, group, ...rest } = fieldDef;
743
- return lazyGetter({
744
- name,
745
- group,
746
- fieldset
747
- }, "type", () => createMemberType({
748
- ...rest,
749
- title: fieldDef.title || startCase__default.default(name)
750
- }));
751
- })
752
- }, parsed = Object.assign(pick__default.default(this.get(), OVERRIDABLE_FIELDS$9), ownProps, {
753
- type: this.get()
754
- });
755
- return lazyGetter(parsed, "fieldsets", () => createFieldsets(subTypeDef, parsed.fields)), lazyGetter(parsed, "groups", () => createFieldsGroups(subTypeDef, parsed.fields)), lazyGetter(parsed, "preview", createPreviewGetter(subTypeDef)), lazyGetter(
756
- parsed,
757
- resolve.OWN_PROPS_NAME,
758
- () => ({
759
- ...ownProps,
760
- preview: parsed.preview
761
- }),
762
- { enumerable: !1, writable: !1 }
763
- ), lazyGetter(
764
- parsed,
765
- "__experimental_search",
766
- () => {
767
- const userProvidedSearchConfig = subTypeDef.__experimental_search ? normalizeSearchConfigs(subTypeDef.__experimental_search) : null;
768
- return userProvidedSearchConfig ? userProvidedSearchConfig.map(
769
- (entry) => entry === "defaults" ? normalizeSearchConfigs(subTypeDef) : entry
770
- ) : resolve.resolveSearchConfig(parsed);
771
- },
772
- {
773
- enumerable: !1
774
- }
775
- ), subtype(parsed);
776
- function subtype(parent) {
777
- return {
778
- get() {
779
- return parent;
780
- },
781
- extend: (extensionDef) => {
782
- if (extensionDef.fields)
783
- throw new Error('Cannot override `fields` of subtypes of "object"');
784
- const subOwnProps = pick__default.default(extensionDef, OVERRIDABLE_FIELDS$9);
785
- subOwnProps.title = extensionDef.title || subTypeDef.title || (subTypeDef.name ? startCase__default.default(subTypeDef.name) : "Object");
786
- const current = Object.assign({}, parent, pick__default.default(extensionDef, OVERRIDABLE_FIELDS$9), {
787
- type: parent
788
- });
789
- return lazyGetter(current, "__experimental_search", () => parent.__experimental_search), hiddenGetter(current, resolve.OWN_PROPS_NAME, subOwnProps), subtype(current);
790
- }
791
- };
792
- }
793
- }
794
- };
795
- function createFieldsets(typeDef, fields) {
796
- const fieldsetsByName = {};
797
- for (const fieldset of typeDef.fieldsets || []) {
798
- if (fieldsetsByName[fieldset.name])
799
- throw new Error(
800
- `Duplicate fieldset name "${fieldset.name}" found for type '${typeDef.title ? typeDef.title : startCase__default.default(typeDef.name)}'`
801
- );
802
- fieldsetsByName[fieldset.name] = { title: startCase__default.default(fieldset.name), ...fieldset, fields: [] };
803
- }
804
- const fieldsets = /* @__PURE__ */ new Set();
805
- for (const field of fields) {
806
- if (!field.fieldset) {
807
- fieldsets.add({ single: !0, field });
808
- continue;
809
- }
810
- const fieldset = fieldsetsByName[field.fieldset];
811
- if (!fieldset)
812
- throw new Error(
813
- `Fieldset '${field.fieldset}' is not defined in schema for type '${typeDef.name}'`
814
- );
815
- fieldset.fields.push(field), fieldsets.add(fieldset);
816
- }
817
- return Array.from(fieldsets);
818
- }
819
- function createFieldsGroups(typeDef, fields) {
820
- const groupsByName = {};
821
- let numDefaultGroups = 0;
822
- for (const group of typeDef.groups || []) {
823
- if (groupsByName[group.name])
824
- throw new Error(
825
- `Duplicate group name "${group.name}" found for type '${typeDef.title ? typeDef.title : startCase__default.default(typeDef.name)}'`
826
- );
827
- if (groupsByName[group.name] = { title: startCase__default.default(group.name), ...group, fields: [] }, group.default && ++numDefaultGroups > 1)
828
- throw new Error(
829
- `More than one field group defined as default for type '${typeDef.title ? typeDef.title : startCase__default.default(typeDef.name)}' - only 1 is supported`
830
- );
831
- }
832
- return fields.forEach((field) => {
833
- const fieldGroupNames = castArray__default.default(field.group || []);
834
- fieldGroupNames.length !== 0 && fieldGroupNames.forEach((fieldGroupName) => {
835
- const currentGroup = groupsByName[fieldGroupName];
836
- if (!currentGroup)
837
- throw new Error(
838
- `Field group '${fieldGroupName}' is not defined in schema for type '${typeDef.title ? typeDef.name : startCase__default.default(typeDef.name)}'`
839
- );
840
- currentGroup.fields.push(field);
841
- });
842
- }), flatMap__default.default(groupsByName).filter((group) => group.fields.length > 0);
843
- }
844
- const DOCUMENT_CORE = {
845
- name: "document",
846
- title: "Document",
847
- type: null,
848
- jsonType: "object"
849
- }, DocumentType = {
850
- get() {
851
- return DOCUMENT_CORE;
852
- },
853
- extend: ObjectType.extend
854
- }, OVERRIDABLE_FIELDS$8 = [...resolve.DEFAULT_OVERRIDEABLE_FIELDS], EMAIL_CORE = {
855
- name: "email",
856
- title: "Email",
857
- type: null,
858
- jsonType: "string"
859
- };
860
- lazyGetter(
861
- EMAIL_CORE,
862
- resolve.OWN_PROPS_NAME,
863
- () => ({
864
- ...EMAIL_CORE,
865
- validation: (Rule) => Rule.email()
866
- }),
867
- { enumerable: !1 }
868
- );
869
- const EmailType = {
870
- get() {
871
- return EMAIL_CORE;
872
- },
873
- extend(subTypeDef) {
874
- const ownProps = {
875
- ...subTypeDef,
876
- preview: primitivePreview
877
- }, parsed = Object.assign(pick__default.default(EMAIL_CORE, OVERRIDABLE_FIELDS$8), ownProps, {
878
- type: EMAIL_CORE
879
- });
880
- return hiddenGetter(parsed, resolve.OWN_PROPS_NAME, ownProps), subtype(parsed);
881
- function subtype(parent) {
882
- return {
883
- get() {
884
- return parent;
885
- },
886
- extend: (extensionDef) => {
887
- const subOwnProps = pick__default.default(extensionDef, OVERRIDABLE_FIELDS$8), current = Object.assign({}, parent, subOwnProps, {
888
- type: parent
889
- });
890
- return hiddenGetter(current, resolve.OWN_PROPS_NAME, subOwnProps), subtype(current);
891
- }
892
- };
893
- }
894
- }
895
- }, ASSET_FIELD$1 = {
896
- name: "asset",
897
- type: "reference",
898
- to: { type: "sanity.fileAsset" }
899
- }, MEDIA_LIBRARY_ASSET_FIELD$1 = {
900
- name: "media",
901
- type: "globalDocumentReference",
902
- hidden: !0,
903
- to: [{ type: "sanity.asset" }]
904
- }, OVERRIDABLE_FIELDS$7 = [...resolve.DEFAULT_OVERRIDEABLE_FIELDS], FILE_CORE = {
905
- name: "file",
906
- title: "File",
907
- type: null,
908
- jsonType: "object"
909
- }, DEFAULT_OPTIONS$1 = {
910
- accept: ""
911
- }, FileType = {
912
- get() {
913
- return FILE_CORE;
914
- },
915
- extend(rawSubTypeDef, createMemberType) {
916
- const options = { ...rawSubTypeDef.options || DEFAULT_OPTIONS$1 }, fields = [ASSET_FIELD$1, MEDIA_LIBRARY_ASSET_FIELD$1, ...rawSubTypeDef.fields || []], subTypeDef = { ...rawSubTypeDef, fields }, parsed = Object.assign(pick__default.default(FILE_CORE, OVERRIDABLE_FIELDS$7), subTypeDef, {
917
- type: FILE_CORE,
918
- title: subTypeDef.title || (subTypeDef.name ? startCase__default.default(subTypeDef.name) : FILE_CORE.title),
919
- options,
920
- fields: subTypeDef.fields.map((fieldDef) => {
921
- const { name, fieldset, ...rest } = fieldDef, compiledField = {
922
- name,
923
- fieldset,
924
- isCustomized: !!rawSubTypeDef.fields
925
- };
926
- return lazyGetter(compiledField, "type", () => createMemberType({
927
- ...rest,
928
- title: fieldDef.title || startCase__default.default(name)
929
- }));
930
- })
931
- });
932
- return lazyGetter(parsed, "fieldsets", () => createFieldsets(subTypeDef, parsed.fields)), lazyGetter(parsed, "preview", createPreviewGetter(Object.assign({}, subTypeDef, { fields }))), lazyGetter(
933
- parsed,
934
- resolve.OWN_PROPS_NAME,
935
- () => ({
936
- ...subTypeDef,
937
- options,
938
- fields: parsed.fields,
939
- title: parsed.title,
940
- fieldsets: parsed.fieldsets,
941
- preview: parsed.preview
942
- }),
943
- { enumerable: !1, writable: !1 }
944
- ), subtype(parsed);
945
- function subtype(parent) {
946
- return {
947
- get() {
948
- return parent;
949
- },
950
- extend: (extensionDef) => {
951
- if (extensionDef.fields)
952
- throw new Error('Cannot override `fields` of subtypes of "file"');
953
- const ownProps = pick__default.default(extensionDef, OVERRIDABLE_FIELDS$7), current = Object.assign({}, parent, ownProps, {
954
- type: parent
955
- });
956
- return hiddenGetter(current, resolve.OWN_PROPS_NAME, ownProps), subtype(current);
957
- }
958
- };
959
- }
960
- }
961
- }, REF_FIELD$1 = {
962
- name: "_ref",
963
- title: "Referenced document ID",
964
- type: "string"
965
- }, WEAK_FIELD$1 = {
966
- name: "_weak",
967
- title: "Weak reference",
968
- type: "boolean"
969
- }, REFERENCE_FIELDS$1 = [REF_FIELD$1, WEAK_FIELD$1], OVERRIDABLE_FIELDS$6 = [...resolve.DEFAULT_OVERRIDEABLE_FIELDS], GLOBAL_DOCUMENT_REFERENCE_CORE = {
970
- name: "globalDocumentReference",
971
- title: "Global Document Reference",
972
- type: null,
973
- jsonType: "object"
974
- };
975
- function humanize$1(arr, conjunction) {
976
- const len = arr.length;
977
- if (len === 1)
978
- return arr[0];
979
- const first = arr.slice(0, len - 1), last = arr[len - 1];
980
- return `${first.join(", ")} ${conjunction} ${last}`;
981
- }
982
- function buildTitle$1(type) {
983
- return !type.to || type.to.length === 0 ? "Global Document Reference" : `Global Document Reference to ${humanize$1(
984
- arrify__default.default(type.to).map((toType) => toType.title),
985
- "or"
986
- ).toLowerCase()}`;
987
- }
988
- const GlobalDocumentReferenceType = {
989
- get() {
990
- return GLOBAL_DOCUMENT_REFERENCE_CORE;
991
- },
992
- extend(subTypeDef, createMemberType) {
993
- if (!subTypeDef.to)
994
- throw new Error(
995
- `Missing "to" field in global document reference definition. Check the type ${subTypeDef.name}`
996
- );
997
- const parsed = Object.assign(
998
- pick__default.default(GLOBAL_DOCUMENT_REFERENCE_CORE, OVERRIDABLE_FIELDS$6),
999
- subTypeDef,
1000
- {
1001
- type: GLOBAL_DOCUMENT_REFERENCE_CORE
1002
- }
1003
- );
1004
- return lazyGetter(parsed, "fields", () => REFERENCE_FIELDS$1.map((fieldDef) => {
1005
- const { name, ...type } = fieldDef;
1006
- return {
1007
- name,
1008
- type: createMemberType(type)
1009
- };
1010
- })), lazyGetter(parsed, "to", () => arrify__default.default(subTypeDef.to).map((toType) => ({
1011
- ...toType
1012
- }))), lazyGetter(parsed, "title", () => subTypeDef.title || buildTitle$1(parsed)), lazyGetter(
1013
- parsed,
1014
- resolve.OWN_PROPS_NAME,
1015
- () => ({
1016
- ...subTypeDef,
1017
- fields: parsed.fields,
1018
- to: parsed.to,
1019
- title: parsed.title
1020
- }),
1021
- { enumerable: !1, writable: !1 }
1022
- ), subtype(parsed);
1023
- function subtype(parent) {
1024
- return {
1025
- get() {
1026
- return parent;
1027
- },
1028
- extend: (extensionDef) => {
1029
- if (extensionDef.of)
1030
- throw new Error('Cannot override `of` of subtypes of "globalDocumentReference"');
1031
- const ownProps = pick__default.default(extensionDef, OVERRIDABLE_FIELDS$6), current = Object.assign({}, parent, ownProps, {
1032
- type: parent
1033
- });
1034
- return hiddenGetter(current, resolve.OWN_PROPS_NAME, ownProps), subtype(current);
1035
- }
1036
- };
1037
- }
1038
- }
1039
- }, ASSET_FIELD = {
1040
- name: "asset",
1041
- type: "reference",
1042
- to: [{ type: "sanity.imageAsset" }]
1043
- }, HOTSPOT_FIELD = {
1044
- name: "hotspot",
1045
- type: "sanity.imageHotspot"
1046
- }, CROP_FIELD = {
1047
- name: "crop",
1048
- type: "sanity.imageCrop"
1049
- }, MEDIA_LIBRARY_ASSET_FIELD = {
1050
- name: "media",
1051
- type: "globalDocumentReference",
1052
- hidden: !0,
1053
- to: [{ type: "sanity.asset" }]
1054
- }, OVERRIDABLE_FIELDS$5 = [...resolve.DEFAULT_OVERRIDEABLE_FIELDS], IMAGE_CORE = {
1055
- name: "image",
1056
- title: "Image",
1057
- type: null,
1058
- jsonType: "object"
1059
- }, DEFAULT_OPTIONS = {}, ImageType = {
1060
- get() {
1061
- return IMAGE_CORE;
1062
- },
1063
- extend(rawSubTypeDef, createMemberType) {
1064
- const options = { ...rawSubTypeDef.options || DEFAULT_OPTIONS };
1065
- let hotspotFields = [HOTSPOT_FIELD, CROP_FIELD];
1066
- options.hotspot || (hotspotFields = hotspotFields.map((field) => ({ ...field, hidden: !0 })));
1067
- const fields = [
1068
- ASSET_FIELD,
1069
- MEDIA_LIBRARY_ASSET_FIELD,
1070
- ...hotspotFields,
1071
- ...rawSubTypeDef.fields || []
1072
- ], subTypeDef = { ...rawSubTypeDef, fields }, parsed = Object.assign(pick__default.default(this.get(), OVERRIDABLE_FIELDS$5), subTypeDef, {
1073
- type: IMAGE_CORE,
1074
- title: subTypeDef.title || (subTypeDef.name ? startCase__default.default(subTypeDef.name) : IMAGE_CORE.title),
1075
- options,
1076
- fields: subTypeDef.fields.map((fieldDef) => {
1077
- const { name, fieldset, ...rest } = fieldDef, compiledField = {
1078
- name,
1079
- fieldset,
1080
- isCustomized: !!rawSubTypeDef.fields
1081
- };
1082
- return lazyGetter(compiledField, "type", () => createMemberType({
1083
- ...rest,
1084
- title: fieldDef.title || startCase__default.default(name)
1085
- }));
1086
- })
1087
- });
1088
- return lazyGetter(parsed, "fieldsets", () => createFieldsets(subTypeDef, parsed.fields)), lazyGetter(parsed, "preview", createPreviewGetter(Object.assign({}, subTypeDef, { fields }))), lazyGetter(
1089
- parsed,
1090
- resolve.OWN_PROPS_NAME,
1091
- () => ({
1092
- ...subTypeDef,
1093
- options,
1094
- fields: parsed.fields,
1095
- title: parsed.title,
1096
- fieldsets: parsed.fieldsets,
1097
- preview: parsed.preview
1098
- }),
1099
- { enumerable: !1, writable: !1 }
1100
- ), subtype(parsed);
1101
- function subtype(parent) {
1102
- return {
1103
- get() {
1104
- return parent;
1105
- },
1106
- extend: (extensionDef) => {
1107
- if (extensionDef.fields)
1108
- throw new Error('Cannot override `fields` of subtypes of "image"');
1109
- const ownProps = pick__default.default(extensionDef, OVERRIDABLE_FIELDS$5), current = Object.assign({}, parent, ownProps, {
1110
- type: parent
1111
- });
1112
- return hiddenGetter(current, resolve.OWN_PROPS_NAME, ownProps), subtype(current);
1113
- }
1114
- };
1115
- }
1116
- }
1117
- }, OVERRIDABLE_FIELDS$4 = [...resolve.DEFAULT_OVERRIDEABLE_FIELDS], NUMBER_CORE = {
1118
- name: "number",
1119
- title: "Number",
1120
- type: null,
1121
- jsonType: "number"
1122
- }, NumberType = {
1123
- get() {
1124
- return NUMBER_CORE;
1125
- },
1126
- extend(subTypeDef) {
1127
- const ownProps = {
1128
- ...subTypeDef,
1129
- preview: primitivePreview
1130
- }, parsed = Object.assign(pick__default.default(NUMBER_CORE, OVERRIDABLE_FIELDS$4), ownProps, {
1131
- type: NUMBER_CORE
1132
- });
1133
- return hiddenGetter(parsed, resolve.OWN_PROPS_NAME, ownProps), subtype(parsed);
1134
- function subtype(parent) {
1135
- return {
1136
- get() {
1137
- return parent;
1138
- },
1139
- extend: (extensionDef) => {
1140
- const subOwnProps = pick__default.default(extensionDef, OVERRIDABLE_FIELDS$4), current = Object.assign({}, parent, subOwnProps, {
1141
- type: parent
1142
- });
1143
- return hiddenGetter(current, resolve.OWN_PROPS_NAME, subOwnProps), subtype(current);
1144
- }
1145
- };
1146
- }
1147
- }
1148
- }, REF_FIELD = {
1149
- name: "_ref",
1150
- title: "Referenced document ID",
1151
- type: "string"
1152
- }, WEAK_FIELD = {
1153
- name: "_weak",
1154
- title: "Weak reference",
1155
- type: "boolean"
1156
- }, REFERENCE_FIELDS = [REF_FIELD, WEAK_FIELD], OVERRIDABLE_FIELDS$3 = [...resolve.DEFAULT_OVERRIDEABLE_FIELDS], REFERENCE_CORE = {
1157
- name: "reference",
1158
- title: "Reference",
1159
- type: null,
1160
- jsonType: "object"
1161
- };
1162
- function humanize(arr, conjunction) {
1163
- const len = arr.length;
1164
- if (len === 1)
1165
- return arr[0];
1166
- const first = arr.slice(0, len - 1), last = arr[len - 1];
1167
- return `${first.join(", ")} ${conjunction} ${last}`;
1168
- }
1169
- function buildTitle(type) {
1170
- return !type.to || type.to.length === 0 ? "Reference" : `Reference to ${humanize(
1171
- arrify__default.default(type.to).map((toType) => toType.title),
1172
- "or"
1173
- ).toLowerCase()}`;
1174
- }
1175
- const ReferenceType = {
1176
- get() {
1177
- return REFERENCE_CORE;
1178
- },
1179
- extend(subTypeDef, createMemberType) {
1180
- if (!subTypeDef.to)
1181
- throw new Error(
1182
- `Missing "to" field in reference definition. Check the type ${subTypeDef.name}`
1183
- );
1184
- const parsed = Object.assign(pick__default.default(REFERENCE_CORE, OVERRIDABLE_FIELDS$3), subTypeDef, {
1185
- type: REFERENCE_CORE
1186
- });
1187
- return lazyGetter(parsed, "fields", () => REFERENCE_FIELDS.map((fieldDef) => {
1188
- const { name, ...type } = fieldDef;
1189
- return {
1190
- name,
1191
- type: createMemberType(type)
1192
- };
1193
- })), lazyGetter(parsed, "fieldsets", () => createFieldsets(subTypeDef, parsed.fields)), lazyGetter(parsed, "to", () => arrify__default.default(subTypeDef.to).map((toType) => createMemberType(toType))), lazyGetter(parsed, "title", () => subTypeDef.title || buildTitle(parsed)), lazyGetter(
1194
- parsed,
1195
- resolve.OWN_PROPS_NAME,
1196
- () => ({
1197
- ...subTypeDef,
1198
- fields: parsed.fields,
1199
- fieldsets: parsed.fieldsets,
1200
- to: parsed.to,
1201
- title: parsed.title
1202
- }),
1203
- { enumerable: !1, writable: !1 }
1204
- ), subtype(parsed);
1205
- function subtype(parent) {
1206
- return {
1207
- get() {
1208
- return parent;
1209
- },
1210
- extend: (extensionDef) => {
1211
- if (extensionDef.of)
1212
- throw new Error('Cannot override `of` of subtypes of "reference"');
1213
- const ownProps = pick__default.default(extensionDef, OVERRIDABLE_FIELDS$3), current = Object.assign({}, parent, ownProps, {
1214
- type: parent
1215
- });
1216
- return hiddenGetter(current, resolve.OWN_PROPS_NAME, ownProps), subtype(current);
1217
- }
1218
- };
1219
- }
1220
- }
1221
- }, OVERRIDABLE_FIELDS$2 = [...resolve.DEFAULT_OVERRIDEABLE_FIELDS], STRING_CORE = {
1222
- name: "string",
1223
- title: "String",
1224
- type: null,
1225
- jsonType: "string"
1226
- }, StringType = {
1227
- get() {
1228
- return STRING_CORE;
1229
- },
1230
- extend(subTypeDef) {
1231
- const ownProps = {
1232
- ...subTypeDef,
1233
- preview: primitivePreview
1234
- }, parsed = Object.assign(pick__default.default(STRING_CORE, OVERRIDABLE_FIELDS$2), ownProps, {
1235
- type: STRING_CORE
1236
- });
1237
- return hiddenGetter(parsed, resolve.OWN_PROPS_NAME, ownProps), subtype(parsed);
1238
- function subtype(parent) {
1239
- return {
1240
- get() {
1241
- return parent;
1242
- },
1243
- extend: (extensionDef) => {
1244
- const subOwnProps = pick__default.default(extensionDef, OVERRIDABLE_FIELDS$2), current = Object.assign({}, parent, subOwnProps, {
1245
- type: parent
1246
- });
1247
- return hiddenGetter(current, resolve.OWN_PROPS_NAME, subOwnProps), subtype(current);
1248
- }
1249
- };
1250
- }
1251
- }
1252
- }, OVERRIDABLE_FIELDS$1 = [...resolve.DEFAULT_OVERRIDEABLE_FIELDS, "rows"], TEXT_CORE = {
1253
- name: "text",
1254
- title: "Text",
1255
- type: null,
1256
- jsonType: "string"
1257
- }, TextType = {
1258
- get() {
1259
- return TEXT_CORE;
1260
- },
1261
- extend(subTypeDef) {
1262
- const ownProps = {
1263
- ...subTypeDef,
1264
- preview: primitivePreview
1265
- }, parsed = Object.assign(pick__default.default(TEXT_CORE, OVERRIDABLE_FIELDS$1), ownProps, {
1266
- type: TEXT_CORE
1267
- });
1268
- return hiddenGetter(parsed, resolve.OWN_PROPS_NAME, ownProps), subtype(parsed);
1269
- function subtype(parent) {
1270
- return {
1271
- get() {
1272
- return parent;
1273
- },
1274
- extend: (extensionDef) => {
1275
- const subOwnProps = pick__default.default(extensionDef, OVERRIDABLE_FIELDS$1), current = Object.assign({}, parent, subOwnProps, {
1276
- type: parent
1277
- });
1278
- return hiddenGetter(current, resolve.OWN_PROPS_NAME, subOwnProps), subtype(current);
1279
- }
1280
- };
1281
- }
1282
- }
1283
- }, OVERRIDABLE_FIELDS = [...resolve.DEFAULT_OVERRIDEABLE_FIELDS], URL_CORE = {
1284
- name: "url",
1285
- title: "Url",
1286
- type: null,
1287
- jsonType: "string"
1288
- }, UrlType = {
1289
- get() {
1290
- return URL_CORE;
1291
- },
1292
- extend(subTypeDef) {
1293
- const ownProps = {
1294
- ...subTypeDef,
1295
- preview: primitivePreview
1296
- }, parsed = Object.assign(pick__default.default(URL_CORE, OVERRIDABLE_FIELDS), ownProps, {
1297
- type: URL_CORE
1298
- });
1299
- return hiddenGetter(parsed, resolve.OWN_PROPS_NAME, ownProps), subtype(parsed);
1300
- function subtype(parent) {
1301
- return {
1302
- get() {
1303
- return parent;
1304
- },
1305
- extend: (extensionDef) => {
1306
- const subOwnownProps = pick__default.default(extensionDef, OVERRIDABLE_FIELDS), current = Object.assign({}, parent, subOwnownProps, {
1307
- type: parent
1308
- });
1309
- return hiddenGetter(current, resolve.OWN_PROPS_NAME, subOwnownProps), subtype(current);
1310
- }
1311
- };
1312
- }
1313
- }
1314
- };
1315
- var types = /* @__PURE__ */ Object.freeze({
1316
- __proto__: null,
1317
- any: AnyType,
1318
- array: ArrayType,
1319
- block: BlockType,
1320
- boolean: BooleanType,
1321
- crossDatasetReference: CrossDatasetReferenceType,
1322
- date: DateType,
1323
- datetime: DateTimeType,
1324
- document: DocumentType,
1325
- email: EmailType,
1326
- file: FileType,
1327
- globalDocumentReference: GlobalDocumentReferenceType,
1328
- image: ImageType,
1329
- number: NumberType,
1330
- object: ObjectType,
1331
- reference: ReferenceType,
1332
- span: SpanType,
1333
- string: StringType,
1334
- text: TextType,
1335
- url: UrlType
1336
- });
1337
- function compileRegistry(schemaDef) {
1338
- const registry = /* @__PURE__ */ Object.create(null);
1339
- let localTypeNames;
1340
- schemaDef.parent ? (Object.assign(registry, schemaDef.parent._registry), localTypeNames = []) : (Object.assign(registry, types), localTypeNames = Object.keys(types));
1341
- const defsByName = schemaDef.types.reduce((acc, def) => {
1342
- if (acc[def.name])
1343
- throw new Error(`Duplicate type name added to schema: ${def.name}`);
1344
- return acc[def.name] = def, acc;
1345
- }, {});
1346
- return schemaDef.types.forEach(add), {
1347
- registry,
1348
- localTypeNames
1349
- };
1350
- function ensure(typeName) {
1351
- if (!registry[typeName]) {
1352
- if (!defsByName[typeName])
1353
- throw new Error(`Unknown type: ${typeName}`);
1354
- add(defsByName[typeName]);
1355
- }
1356
- }
1357
- function extendMember(memberDef) {
1358
- return ensure(memberDef.type), registry[memberDef.type].extend(memberDef, extendMember).get();
1359
- }
1360
- function add(typeDef) {
1361
- ensure(typeDef.type), !registry[typeDef.name] && (localTypeNames.push(typeDef.name), registry[typeDef.name] = registry[typeDef.type].extend(typeDef, extendMember));
1362
- }
1363
- }
1364
- let Schema$1 = class Schema {
1365
- _original;
1366
- _registry;
1367
- #localTypeNames;
1368
- static compile(schemaDef) {
1369
- return new Schema(schemaDef);
1370
- }
1371
- constructor(schemaDef) {
1372
- this._original = schemaDef;
1373
- const { registry, localTypeNames } = compileRegistry(schemaDef);
1374
- this._registry = registry, this.#localTypeNames = localTypeNames;
1375
- }
1376
- get name() {
1377
- return this._original.name;
1378
- }
1379
- /**
1380
- * Returns the parent schema.
1381
- */
1382
- get parent() {
1383
- return this._original.parent;
1384
- }
1385
- get(name) {
1386
- return this._registry[name] && this._registry[name].get();
1387
- }
1388
- has(name) {
1389
- return name in this._registry;
1390
- }
1391
- getTypeNames() {
1392
- return Object.keys(this._registry);
1393
- }
1394
- getLocalTypeNames() {
1395
- return this.#localTypeNames;
1396
- }
1397
- };
1398
- class DeprecatedDefaultSchema extends Schema$1 {
1399
- static compile(schemaDef) {
1400
- return new DeprecatedDefaultSchema(schemaDef);
1401
- }
1402
- constructor(schemaDef) {
1403
- super(schemaDef);
1404
- const stack = new Error(
1405
- 'The default export of `@sanity/schema` is deprecated. Use `import {Schema} from "@sanity/schema"` instead.'
1406
- ).stack.replace(/^Error/, "Warning");
1407
- console.warn(stack);
1408
- }
1409
- }
1410
- const Schema2 = Schema$1;
1411
- exports.Schema = Schema2;
1412
- exports.default = DeprecatedDefaultSchema;
1413
9
  //# sourceMappingURL=index.js.map