sanity 6.9.2-next.21 → 6.9.2-next.22

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 (105) hide show
  1. package/lib/{AddonDatasetProvider-B5npf4J4.js → AddonDatasetProvider-CfAw3oMr.js} +2 -2
  2. package/lib/{AddonDatasetProvider-B5npf4J4.js.map → AddonDatasetProvider-CfAw3oMr.js.map} +1 -1
  3. package/lib/{CalendarFilter-DYJEZDCP.js → CalendarFilter-OHGevGRx.js} +3 -3
  4. package/lib/{CalendarFilter-DYJEZDCP.js.map → CalendarFilter-OHGevGRx.js.map} +1 -1
  5. package/lib/{CommentsDocumentLayout-CTL7lt6a.js → CommentsDocumentLayout-p8p-oNuH.js} +2 -2
  6. package/lib/{CommentsDocumentLayout-CTL7lt6a.js.map → CommentsDocumentLayout-p8p-oNuH.js.map} +1 -1
  7. package/lib/{CommentsField-BE_CI2SY.js → CommentsField-CqXs722Y.js} +3 -3
  8. package/lib/{CommentsField-BE_CI2SY.js.map → CommentsField-CqXs722Y.js.map} +1 -1
  9. package/lib/{CommentsInput-D_EM-t5a.js → CommentsInput-B3rd8HlF.js} +5 -5
  10. package/lib/{CommentsInput-D_EM-t5a.js.map → CommentsInput-B3rd8HlF.js.map} +1 -1
  11. package/lib/{CommentsInspector-DtBIUadl.js → CommentsInspector-DTHmjTFc.js} +5 -5
  12. package/lib/{CommentsInspector-DtBIUadl.js.map → CommentsInspector-DTHmjTFc.js.map} +1 -1
  13. package/lib/{CommentsListItem-BFRqZMJ6.js → CommentsListItem-C2Ac0esL.js} +3 -3
  14. package/lib/{CommentsListItem-BFRqZMJ6.js.map → CommentsListItem-C2Ac0esL.js.map} +1 -1
  15. package/lib/{CommentsSelectedPathProvider-CIKpHpK3.js → CommentsSelectedPathProvider-DwDw8s-s.js} +3 -3
  16. package/lib/{CommentsSelectedPathProvider-CIKpHpK3.js.map → CommentsSelectedPathProvider-DwDw8s-s.js.map} +1 -1
  17. package/lib/{CommentsStudioLayout-Dx0jIDle.js → CommentsStudioLayout-e2hCA_5z.js} +4 -4
  18. package/lib/{CommentsStudioLayout-Dx0jIDle.js.map → CommentsStudioLayout-e2hCA_5z.js.map} +1 -1
  19. package/lib/{ReleasesMetadataProvider-hILX90V4.js → ReleasesMetadataProvider-BWsmHWkh.js} +2 -2
  20. package/lib/{ReleasesMetadataProvider-hILX90V4.js.map → ReleasesMetadataProvider-BWsmHWkh.js.map} +1 -1
  21. package/lib/{ReleasesNav-DIv-1iR7.js → ReleasesNav-DPSjEs29.js} +14 -14
  22. package/lib/{ReleasesNav-DIv-1iR7.js.map → ReleasesNav-DPSjEs29.js.map} +1 -1
  23. package/lib/{ReleasesStudioLayout-DW7fJSfG.js → ReleasesStudioLayout-CtyE88nI.js} +8 -8
  24. package/lib/{ReleasesStudioLayout-DW7fJSfG.js.map → ReleasesStudioLayout-CtyE88nI.js.map} +1 -1
  25. package/lib/{ReleasesTool-BQjO7osC.js → ReleasesTool-BjbRMZlc.js} +15 -15
  26. package/lib/{ReleasesTool-BQjO7osC.js.map → ReleasesTool-BjbRMZlc.js.map} +1 -1
  27. package/lib/{SchedulePublishingStudioLayout-Cwmdz7HZ.js → SchedulePublishingStudioLayout-gZWH97ZL.js} +3 -3
  28. package/lib/{SchedulePublishingStudioLayout-Cwmdz7HZ.js.map → SchedulePublishingStudioLayout-gZWH97ZL.js.map} +1 -1
  29. package/lib/{SchedulePublishingUpsellProvider-C5B21VDh.js → SchedulePublishingUpsellProvider-DsI8OUg-.js} +2 -2
  30. package/lib/{SchedulePublishingUpsellProvider-C5B21VDh.js.map → SchedulePublishingUpsellProvider-DsI8OUg-.js.map} +1 -1
  31. package/lib/{ScheduledPublishingEnabledProvider-BNMAVqrS.js → ScheduledPublishingEnabledProvider-BDRtV8OB.js} +3 -3
  32. package/lib/{ScheduledPublishingEnabledProvider-BNMAVqrS.js.map → ScheduledPublishingEnabledProvider-BDRtV8OB.js.map} +1 -1
  33. package/lib/{SearchProvider-DkGUk8a6.js → SearchProvider-Hk7IMQqR.js} +4 -4
  34. package/lib/{SearchProvider-DkGUk8a6.js.map → SearchProvider-Hk7IMQqR.js.map} +1 -1
  35. package/lib/{SingleDocReleaseLayout-fW8U-ktp.js → SingleDocReleaseLayout-evCp37zs.js} +2 -2
  36. package/lib/{SingleDocReleaseLayout-fW8U-ktp.js.map → SingleDocReleaseLayout-evCp37zs.js.map} +1 -1
  37. package/lib/{SingleDocReleaseUpsellProvider-BNF2Rj3j.js → SingleDocReleaseUpsellProvider-BOe2BACb.js} +4 -4
  38. package/lib/{SingleDocReleaseUpsellProvider-BNF2Rj3j.js.map → SingleDocReleaseUpsellProvider-BOe2BACb.js.map} +1 -1
  39. package/lib/{TasksStudioActiveToolLayout-CHazNA61.js → TasksStudioActiveToolLayout-Dbs-1GX6.js} +11 -11
  40. package/lib/{TasksStudioActiveToolLayout-CHazNA61.js.map → TasksStudioActiveToolLayout-Dbs-1GX6.js.map} +1 -1
  41. package/lib/{TasksStudioLayout-B7bCL28Q.js → TasksStudioLayout-Pn-RwtPi.js} +5 -5
  42. package/lib/{TasksStudioLayout-B7bCL28Q.js.map → TasksStudioLayout-Pn-RwtPi.js.map} +1 -1
  43. package/lib/{Tool-rkq_tjXo.js → Tool-D4-WLZtb.js} +12 -12
  44. package/lib/{Tool-rkq_tjXo.js.map → Tool-D4-WLZtb.js.map} +1 -1
  45. package/lib/{UnpublishVersionDialog-DWYCXGkz.js → UnpublishVersionDialog-DmFHVqhI.js} +4 -4
  46. package/lib/{UnpublishVersionDialog-DWYCXGkz.js.map → UnpublishVersionDialog-DmFHVqhI.js.map} +1 -1
  47. package/lib/{UpsellDialog-BiDSVmne.js → UpsellDialog-DRhOCOce.js} +2 -2
  48. package/lib/{UpsellDialog-BiDSVmne.js.map → UpsellDialog-DRhOCOce.js.map} +1 -1
  49. package/lib/{VariantsStudioNavbar-Bae9LOIN.js → VariantsStudioNavbar-CXpr7UUl.js} +7 -7
  50. package/lib/{VariantsStudioNavbar-Bae9LOIN.js.map → VariantsStudioNavbar-CXpr7UUl.js.map} +1 -1
  51. package/lib/{VariantsTool-E4ptTHik.js → VariantsTool-BCtrSWfP.js} +7 -7
  52. package/lib/{VariantsTool-E4ptTHik.js.map → VariantsTool-BCtrSWfP.js.map} +1 -1
  53. package/lib/{WorkspaceLoader-sdFQ9rkh.js → WorkspaceLoader-_w6NnbDb.js} +21 -21
  54. package/lib/{WorkspaceLoader-sdFQ9rkh.js.map → WorkspaceLoader-_w6NnbDb.js.map} +1 -1
  55. package/lib/_createContext.js +1 -1
  56. package/lib/{buildTextSelectionFromFragment-CuXpitEZ.js → buildTextSelectionFromFragment-Egmw5rNs.js} +3 -3
  57. package/lib/{buildTextSelectionFromFragment-CuXpitEZ.js.map → buildTextSelectionFromFragment-Egmw5rNs.js.map} +1 -1
  58. package/lib/{datastores-XTDIa3jc.js → datastores-DpJ5Y313.js} +2 -2
  59. package/lib/{datastores-XTDIa3jc.js.map → datastores-DpJ5Y313.js.map} +1 -1
  60. package/lib/index.js +28 -28
  61. package/lib/{inputResolver-DLP8YZcM.js → inputResolver-BX-VuloN.js} +4 -4
  62. package/lib/{inputResolver-DLP8YZcM.js.map → inputResolver-BX-VuloN.js.map} +1 -1
  63. package/lib/{navigation.telemetry-4pppJENG.js → navigation.telemetry-VbqjOek0.js} +7 -7
  64. package/lib/{navigation.telemetry-4pppJENG.js.map → navigation.telemetry-VbqjOek0.js.map} +1 -1
  65. package/lib/{plugin-BmARoHKH.js → plugin-DGOEvpWT.js} +4 -4
  66. package/lib/{plugin-BmARoHKH.js.map → plugin-DGOEvpWT.js.map} +1 -1
  67. package/lib/{plugin-BUox1zeI.js → plugin-Da_fKb0U.js} +3 -3
  68. package/lib/{plugin-BUox1zeI.js.map → plugin-Da_fKb0U.js.map} +1 -1
  69. package/lib/{plugin-CjN39wwt.js → plugin-DqqaZdOH.js} +5 -5
  70. package/lib/{plugin-CjN39wwt.js.map → plugin-DqqaZdOH.js.map} +1 -1
  71. package/lib/{plugin-BRnqEpCl.js → plugin-qHXYpO99.js} +6 -6
  72. package/lib/{plugin-BRnqEpCl.js.map → plugin-qHXYpO99.js.map} +1 -1
  73. package/lib/{scheduleItem-Dtb26ejO.js → scheduleItem-DcC1HE9G.js} +8 -8
  74. package/lib/{scheduleItem-Dtb26ejO.js.map → scheduleItem-DcC1HE9G.js.map} +1 -1
  75. package/lib/{schedules-6qsR7E_I.js → schedules-CbnXaXM9.js} +3 -3
  76. package/lib/{schedules-6qsR7E_I.js.map → schedules-CbnXaXM9.js.map} +1 -1
  77. package/lib/{searchDocumentRelease-CUk7BiST.js → searchDocumentRelease-C5sClmGF.js} +4 -4
  78. package/lib/{searchDocumentRelease-CUk7BiST.js.map → searchDocumentRelease-C5sClmGF.js.map} +1 -1
  79. package/lib/{studioClient-D1Z2zK3C.js → studioClient-CwMJwOTd.js} +2 -2
  80. package/lib/{studioClient-D1Z2zK3C.js.map → studioClient-CwMJwOTd.js.map} +1 -1
  81. package/lib/{useBundleDocuments-BnCBcbdJ.js → useBundleDocuments-DvVAF6cf.js} +7 -7
  82. package/lib/{useBundleDocuments-BnCBcbdJ.js.map → useBundleDocuments-DvVAF6cf.js.map} +1 -1
  83. package/lib/{useComments-Bm-0CwNH.js → useComments-DuEOnDkA.js} +2 -2
  84. package/lib/{useComments-Bm-0CwNH.js.map → useComments-DuEOnDkA.js.map} +1 -1
  85. package/lib/{useCommentsTelemetry-D1kYRuPU.js → useCommentsTelemetry-BgNdQdz5.js} +3 -3
  86. package/lib/{useCommentsTelemetry-D1kYRuPU.js.map → useCommentsTelemetry-BgNdQdz5.js.map} +1 -1
  87. package/lib/{useDocumentPreviewValues-DJvES8Wi.js → useDocumentPreviewValues-B1zNjl_D.js} +3 -3
  88. package/lib/{useDocumentPreviewValues-DJvES8Wi.js.map → useDocumentPreviewValues-B1zNjl_D.js.map} +1 -1
  89. package/lib/{useFeatureEnabled-g8eZoiLM.js → useFeatureEnabled-4qCpV_mX.js} +2 -2
  90. package/lib/{useFeatureEnabled-g8eZoiLM.js.map → useFeatureEnabled-4qCpV_mX.js.map} +1 -1
  91. package/lib/{useFieldActions-BV_qfe65.js → useFieldActions-uDe2qh98.js} +2 -2
  92. package/lib/{useFieldActions-BV_qfe65.js.map → useFieldActions-uDe2qh98.js.map} +1 -1
  93. package/lib/{useReleasesToolAvailable-Duu10qV0.js → useReleasesToolAvailable-DDuNc6HV.js} +3 -3
  94. package/lib/{useReleasesToolAvailable-Duu10qV0.js.map → useReleasesToolAvailable-DDuNc6HV.js.map} +1 -1
  95. package/lib/{useScheduledDraftMenuActions-Byiy3-k3.js → useScheduledDraftMenuActions-DqkHlC0c.js} +5 -5
  96. package/lib/{useScheduledDraftMenuActions-Byiy3-k3.js.map → useScheduledDraftMenuActions-DqkHlC0c.js.map} +1 -1
  97. package/lib/{useStudioUrl-BEb30_UK.js → useStudioUrl-B4w58A2i.js} +5 -5
  98. package/lib/{useStudioUrl-BEb30_UK.js.map → useStudioUrl-B4w58A2i.js.map} +1 -1
  99. package/lib/{useTimeZone-zs0ybzXu.js → useTimeZone-8Wd1UR4j.js} +2 -2
  100. package/lib/{useTimeZone-zs0ybzXu.js.map → useTimeZone-8Wd1UR4j.js.map} +1 -1
  101. package/lib/{validationUtils-LdwtMTh5.js → validationUtils-Cuk0jhWJ.js} +4 -4
  102. package/lib/{validationUtils-LdwtMTh5.js.map → validationUtils-Cuk0jhWJ.js.map} +1 -1
  103. package/lib/{version-XEmBTnIh.js → version-BVcB_xWL.js} +2 -2
  104. package/lib/{version-XEmBTnIh.js.map → version-BVcB_xWL.js.map} +1 -1
  105. package/package.json +10 -10
@@ -1 +1 @@
1
- {"version":3,"file":"validationUtils-LdwtMTh5.js","names":["BadgeTone","TimeZoneScope","ScheduleAction","ScheduleState","SCHEDULE_ACTION_DICTIONARY","Record","actionName","badgeColor","badgeTone","publish","unpublish","SCHEDULE_STATE_DICTIONARY","title","scheduled","succeeded","cancelled","SCHEDULE_FILTERS","Object","keys","filter","f","TOOL_HEADER_HEIGHT","DOCUMENT_HAS_WARNINGS_TEXT","DOCUMENT_HAS_ERRORS_TEXT","SCHEDULE_FAILED_TEXT","TOOL_TITLE","RELEASES_DOCS_URL","FORBIDDEN_RESPONSE_TEXT","SCHEDULED_PUBLISHING_TOOL_NAME","SCHEDULED_PUBLISHING_TIME_ZONE_SCOPE","type","Schedule","getLastExecuteDate","schedule","executedAt","executeAt","Schedule","getLastExecuteDate","sortByExecuteDate","reverseOrder","a","b","aExecuteDate","bExecuteDate","CalendarIcon","Inline","Stack","Text","Props","body","title","ToastDescription","props","$","_c","t0","Symbol","for","t1","t2","t3","t4","ClientError","FORBIDDEN_RESPONSE_TEXT","isClientError","e","getErrorMessage","err","message","response","statusCode","Error","String","SanityClient","useMemo","useClient","debugWithName","Schedule","debug","useScheduleApi","$","_c","t0","Symbol","for","apiVersion","client","t1","createScheduleApi","dataset","projectId","config","_create","date","documentId","roundedDate","Date","setSeconds","setMilliseconds","request","body","documents","executeAt","name","method","uri","_delete","scheduleId","_deleteMultiple","scheduleIds","requests","map","Promise","allSettled","_publish","transactionId","_update","documentSchedule","Partial","create","delete","deleteMultiple","publish","update","useToast","useTimeZone","ToastDescription","Schedule","getErrorMessage","useScheduleApi","ScheduleEvents","create","const","delete","deleteMultiple","publish","update","ScheduleCreateEvent","date","documentId","ScheduleDeleteEvent","scheduleId","ScheduleDeleteMultipleEvent","scheduleIds","SchedulePublishEvent","ScheduleUpdateEvent","global","WindowEventMap","CustomEvent","UnpackCustomEventPayload","T","U","pluralize","word","count","scheduleCustomEvent","name","payload","Omit","CustomEventInit","D","detail","useScheduleOperation","$","_c","toast","t0","Symbol","for","type","formatDateTz","api","t1","createSchedule","t2","displayToast","t3","undefined","run","data","window","dispatchEvent","executeAt","push","closable","description","Date","includeTimeZone","prefix","duration","status","catch","err","deleteSchedule","t4","schedule","displayToast_0","run_0","id","err_0","deleteSchedules","t5","schedules","displayToast_1","run_1","map","_temp","response","fulfilledIds","rejectedReasons","reduce","acc","v","index","reason","numFulfilledIds","length","numRejectedReasons","toString","err_1","publishSchedule","t6","schedule_1","displayToast_2","t7","updateSchedule","date_0","scheduleId_0","displayToast_3","documentSchedule","t8","schedule_0","useCallback","useEffect","useMemo","useSWR","useClient","useScheduledPublishingEnabled","Schedule","ScheduleState","sortByExecuteDate","ScheduleDeleteEvent","ScheduleDeleteMultipleEvent","ScheduleEvents","SchedulePublishEvent","ScheduleUpdateEvent","QueryKey","params","documentIds","state","url","useScheduleBaseUrl","$","_c","t0","Symbol","for","apiVersion","client","t1","config","dataset","projectId","useFetcher","queryKey","request","query","method","uri","NO_SCHEDULES","usePollSchedules","undefined","documentId","mode","enabled","t2","t3","t4","t5","refreshWhenHidden","refreshWhenOffline","revalidateOnFocus","shouldRetryOnError","refreshInterval","revalidateIfStale","revalidateOnReconnect","SWR_OPTIONS","swrOptions","t6","t7","fetcher","data","error","mutate","t8","event","currentData","schedules","filter","schedule","id","detail","scheduleId","handleDelete","t9","event_0","currentData_0","schedule_0","scheduleIds","includes","handleDeleteMultiple","t10","event_1","currentData_1","currentSchedules","index","findIndex","schedule_1","slice","executeAt","Date","toISOString","handlePublish","t11","event_2","currentData_2","currentSchedules_0","index_0","schedule_2","date","handleUpdate","t12","t13","window","addEventListener","delete","deleteMultiple","publish","update","removeEventListener","t14","sort","sortedSchedules","t15","t16","t17","isInitialLoading","useMemo","usePublishedId","id","$","_c","t0","replaceAll","undefined","T","isValidationErrorMarker","isValidationWarningMarker","ValidationMarker","ButtonTone","useMemo","ValidationStatus","EMPTY_VALIDATION_STATUS","validation","isValidating","ValidationState","markers","validationTone","hasError","hasWarning","getValidationState","validationMarkers","filter","length","useValidationState","$","_c","t0"],"sources":["../src/core/scheduled-publishing/constants.tsx","../src/core/scheduled-publishing/utils/scheduleUtils.ts","../src/core/scheduled-publishing/utils/sortByExecuteDate.ts","../src/core/scheduled-publishing/components/toastDescription/ToastDescription.tsx","../src/core/scheduled-publishing/utils/getErrorMessage.ts","../src/core/scheduled-publishing/hooks/useScheduleApi.ts","../src/core/scheduled-publishing/hooks/useScheduleOperation.tsx","../src/core/scheduled-publishing/hooks/usePollSchedules.ts","../src/core/scheduled-publishing/hooks/usePublishedId.ts","../src/core/scheduled-publishing/utils/validationUtils.ts"],"sourcesContent":["import {type BadgeTone} from '@sanity/ui'\n\nimport {type TimeZoneScope} from '../hooks/useTimeZone'\nimport {type ScheduleAction, type ScheduleState} from './types'\n\nexport const SCHEDULE_ACTION_DICTIONARY: Record<\n ScheduleAction,\n {\n actionName: string\n badgeColor?: 'primary' | 'success' | 'warning' | 'danger' // Document badge specific\n badgeTone: BadgeTone\n }\n> = {\n publish: {\n actionName: 'Publishing',\n badgeColor: 'primary',\n badgeTone: 'positive',\n },\n unpublish: {\n actionName: 'Unpublishing',\n badgeColor: 'danger',\n badgeTone: 'critical',\n },\n}\n\nexport const SCHEDULE_STATE_DICTIONARY: Record<\n ScheduleState,\n {\n title: string\n }\n> = {\n scheduled: {\n title: 'Upcoming',\n },\n succeeded: {\n title: 'Completed',\n },\n cancelled: {\n title: 'Failed',\n },\n}\n\n// Tool: denotes order of filter tags as well as accessible routes\nexport const SCHEDULE_FILTERS: ScheduleState[] = Object.keys(SCHEDULE_STATE_DICTIONARY).filter(\n (f): f is ScheduleState => !!f,\n)\n\nexport const TOOL_HEADER_HEIGHT = 55 // px\n\nexport const DOCUMENT_HAS_WARNINGS_TEXT = 'This document has validation warnings.'\nexport const DOCUMENT_HAS_ERRORS_TEXT =\n 'This document has validation errors that should be resolved before its publish date.'\n\nexport const SCHEDULE_FAILED_TEXT = 'This schedule failed to run.'\n\nexport const TOOL_TITLE = 'Schedules'\n\nexport const RELEASES_DOCS_URL = 'https://www.sanity.io/blog/introducing-content-releases'\n\nexport const FORBIDDEN_RESPONSE_TEXT =\n 'Forbidden. Please check that your project has access to Scheduled Publishing.'\n\nexport const SCHEDULED_PUBLISHING_TOOL_NAME = 'schedules'\n\nexport const SCHEDULED_PUBLISHING_TIME_ZONE_SCOPE: TimeZoneScope = {type: 'scheduledPublishing'}\n","import {type Schedule} from '../types'\n\n/**\n * Return a schedule's `executedAt` date if it exists, otherwise just return `executeAt`.\n *\n * When dealing with schedules that may have differing values for `executeAt` and\n * `executedAt` (e.g. schedules force-published ahead of time), for the purposes of\n * rendering and sorting we only care about the _final_ date a schedule was executed.\n *\n * Note that it's possible for both `executedAt` and `executeAt` to be null\n * (if creating Schedules via the Scheduling API without dates).\n */\nexport function getLastExecuteDate(schedule: Schedule): string | null {\n return schedule?.executedAt || schedule?.executeAt\n}\n","import {type Schedule} from '../types'\nimport {getLastExecuteDate} from './scheduleUtils'\n\nexport function sortByExecuteDate({reverseOrder}: {reverseOrder: boolean} = {reverseOrder: false}) {\n return function (a: Schedule, b: Schedule): number {\n const aExecuteDate = getLastExecuteDate(a)\n const bExecuteDate = getLastExecuteDate(b)\n\n if (aExecuteDate === bExecuteDate) {\n return 0\n }\n if (aExecuteDate === null) {\n return 1\n }\n if (bExecuteDate === null) {\n return -1\n }\n return (aExecuteDate > bExecuteDate ? 1 : -1) * (reverseOrder ? -1 : 1)\n }\n}\n","import {CalendarIcon} from '@sanity/icons/Calendar'\nimport {Inline, Stack, Text} from '@sanity/ui'\n\ninterface Props {\n body?: string\n title: string\n}\n\nconst ToastDescription = (props: Props) => {\n const {body, title} = props\n return (\n <Stack paddingY={1} gap={3}>\n <Inline gap={2}>\n <CalendarIcon />\n {title && (\n <Text size={2} weight=\"semibold\">\n {title}\n </Text>\n )}\n </Inline>\n {body && <Text size={1}>{body}</Text>}\n </Stack>\n )\n}\n\nexport default ToastDescription\n","import {type ClientError} from '@sanity/client'\n\nimport {FORBIDDEN_RESPONSE_TEXT} from '../constants'\n\n// this is used in place of `instanceof` so the matching can be more robust and\n// won't have any issues with dual packages etc\n// https://nodejs.org/api/packages.html#dual-package-hazard\nfunction isClientError(e: unknown): e is ClientError {\n if (typeof e !== 'object') return false\n if (!e) return false\n return 'statusCode' in e && 'response' in e\n}\n\nexport default function getErrorMessage(err: unknown): string {\n let message\n\n if (isClientError(err)) {\n // The request was made and the server responded with a status code\n if (err.response.statusCode === 403) {\n message = FORBIDDEN_RESPONSE_TEXT\n } else {\n message = err.message\n }\n } else {\n if (err instanceof Error) {\n message = err.message\n }\n message = String(err)\n }\n\n return message\n}\n","import {type SanityClient} from '@sanity/client'\nimport {useMemo} from 'react'\n\nimport {useClient} from '../../hooks/useClient'\nimport {debugWithName} from '../../studio/timezones/utils/debug'\nimport {type Schedule} from '../types'\n\nconst debug = debugWithName('useScheduleOperation')\n\nexport function useScheduleApi(): ReturnType<typeof createScheduleApi> {\n const client = useClient({apiVersion: '2022-09-01'})\n return useMemo(() => createScheduleApi(client), [client])\n}\n\nfunction createScheduleApi(client: SanityClient) {\n const {dataset, projectId} = client.config()\n function _create({date, documentId}: {date: string; documentId: string}) {\n debug('_create:', documentId)\n\n // Round date to nearest second (mutate)\n const roundedDate = new Date(date)\n roundedDate.setSeconds(0)\n roundedDate.setMilliseconds(0)\n\n return client.request<Schedule>({\n body: {\n documents: [{documentId}],\n executeAt: roundedDate,\n name: roundedDate,\n },\n method: 'POST',\n uri: `/schedules/${projectId}/${dataset}`,\n })\n }\n\n function _delete({scheduleId}: {scheduleId: string}) {\n debug('_delete:', scheduleId)\n return client.request<void>({\n method: 'DELETE',\n uri: `/schedules/${projectId}/${dataset}/${scheduleId}`,\n })\n }\n\n function _deleteMultiple({scheduleIds}: {scheduleIds: string[]}) {\n debug('_deleteMultiple:', scheduleIds)\n const requests = scheduleIds.map((scheduleId) => _delete({scheduleId}))\n return Promise.allSettled(requests)\n }\n\n function _publish({scheduleId}: {scheduleId: string}) {\n debug('_publish:', scheduleId)\n\n return client.request<{transactionId: string}>({\n method: 'POST',\n uri: `/schedules/${projectId}/${dataset}/${scheduleId}/publish`,\n })\n }\n\n function _update({\n documentSchedule,\n scheduleId,\n }: {\n documentSchedule: Partial<Schedule>\n scheduleId: string\n }) {\n debug('_update:', scheduleId, documentSchedule)\n return client.request<{transactionId: string}>({\n body: documentSchedule,\n method: 'PATCH',\n uri: `/schedules/${projectId}/${dataset}/${scheduleId}`,\n })\n }\n\n return {\n create: _create,\n delete: _delete,\n deleteMultiple: _deleteMultiple,\n publish: _publish,\n update: _update,\n }\n}\n","import {useToast} from '@sanity/ui'\n\nimport {useTimeZone} from '../../hooks/useTimeZone'\nimport ToastDescription from '../components/toastDescription/ToastDescription'\nimport {type Schedule} from '../types'\nimport getErrorMessage from '../utils/getErrorMessage'\nimport {useScheduleApi} from './useScheduleApi'\n\n// Custom events\nexport const ScheduleEvents = {\n create: 'scheduleCreate' as const,\n delete: 'scheduleDelete' as const,\n deleteMultiple: 'scheduleDeleteMultiple' as const,\n publish: 'schedulePublish' as const,\n update: 'scheduleUpdate' as const,\n}\n\nexport type ScheduleCreateEvent = {\n date: string\n documentId: string\n}\n\nexport type ScheduleDeleteEvent = {\n scheduleId: string\n}\n\nexport type ScheduleDeleteMultipleEvent = {\n scheduleIds: string[]\n}\n\nexport type SchedulePublishEvent = {\n scheduleId: string\n}\n\nexport type ScheduleUpdateEvent = {\n date: string\n scheduleId: string\n}\n\n// Add our custom events to `WindowEventMap`, providing typing when using `addEventListener`\ndeclare global {\n interface WindowEventMap {\n [ScheduleEvents.create]: CustomEvent<ScheduleCreateEvent>\n [ScheduleEvents.delete]: CustomEvent<ScheduleDeleteEvent>\n [ScheduleEvents.deleteMultiple]: CustomEvent<ScheduleDeleteMultipleEvent>\n [ScheduleEvents.publish]: CustomEvent<SchedulePublishEvent>\n [ScheduleEvents.update]: CustomEvent<ScheduleUpdateEvent>\n }\n}\n\ntype UnpackCustomEventPayload<T> = T extends CustomEvent<infer U> ? U : never\n\nfunction pluralize(word: string, count: number) {\n return `${count} ${word}${count === 1 ? '' : 's'}`\n}\n// Proxy that generates type safe CustomEvents.\n// We infer our CustomEvent's `detail` using `UnpackCustomEventPayload`\nconst scheduleCustomEvent = <\n T extends (typeof ScheduleEvents)[keyof typeof ScheduleEvents],\n D extends UnpackCustomEventPayload<WindowEventMap[T]>,\n>(\n name: T,\n // override `detail` in `CustomEventInit` with our own custom payload\n payload: Omit<CustomEventInit<D>, 'detail'> & {\n detail: D\n },\n): CustomEvent<D> => new CustomEvent(name, payload)\n\nexport default function useScheduleOperation() {\n const toast = useToast()\n const {formatDateTz} = useTimeZone({type: 'scheduledPublishing'})\n const api = useScheduleApi()\n\n async function createSchedule({\n date,\n displayToast = true,\n documentId,\n }: {\n date: string\n displayToast?: boolean\n documentId: string\n }) {\n // The run().catch() syntax instead of try/catch is because of the React Compiler not fully supporting the syntax yet\n const run = async () => {\n const data = await api.create({date, documentId})\n\n window.dispatchEvent(\n scheduleCustomEvent(ScheduleEvents.create, {\n detail: {\n date,\n documentId,\n },\n }),\n )\n\n if (displayToast && data?.executeAt) {\n toast.push({\n closable: true,\n description: (\n <ToastDescription\n body={formatDateTz({\n date: new Date(data.executeAt),\n includeTimeZone: true,\n prefix: 'Publishing on ',\n })}\n title=\"Schedule created\"\n />\n ),\n duration: 15000, // 15s\n status: 'success',\n })\n }\n }\n await run().catch((err) => {\n if (displayToast) {\n toast.push({\n closable: true,\n description: (\n <ToastDescription body={getErrorMessage(err)} title=\"Unable to create schedule\" />\n ),\n duration: 15000, // 15s\n status: 'error',\n })\n }\n })\n }\n\n async function deleteSchedule({\n displayToast = true,\n schedule,\n }: {\n displayToast?: boolean\n schedule: Schedule\n }) {\n // The run().catch() syntax instead of try/catch is because of the React Compiler not fully supporting the syntax yet\n const run = async () => {\n await api.delete({scheduleId: schedule?.id})\n\n window.dispatchEvent(\n scheduleCustomEvent(ScheduleEvents.delete, {\n detail: {\n scheduleId: schedule?.id,\n },\n }),\n )\n\n if (displayToast) {\n toast.push({\n closable: true,\n description: <ToastDescription title=\"Schedule deleted\" />,\n status: 'success',\n })\n }\n }\n await run().catch((err) => {\n if (displayToast) {\n toast.push({\n closable: true,\n description: (\n <ToastDescription body={getErrorMessage(err)} title=\"Unable to delete schedule\" />\n ),\n duration: 15000, // 15s\n status: 'error',\n })\n }\n })\n }\n\n async function deleteSchedules({\n displayToast = true,\n schedules,\n }: {\n displayToast?: boolean\n schedules: Schedule[]\n }) {\n // The run().catch() syntax instead of try/catch is because of the React Compiler not fully supporting the syntax yet\n const run = async () => {\n const scheduleIds = schedules.map((schedule) => schedule.id)\n const response = await api.deleteMultiple({scheduleIds})\n\n const {fulfilledIds, rejectedReasons} = response.reduce<{\n fulfilledIds: string[]\n rejectedReasons: string[]\n }>(\n (acc, v, index) => {\n if (v.status === 'fulfilled') {\n acc.fulfilledIds.push(schedules[index].id)\n }\n\n if (v.status === 'rejected') {\n acc.rejectedReasons.push(`[${schedules[index].id}]: ${v.reason}`)\n }\n\n return acc\n },\n {fulfilledIds: [], rejectedReasons: []},\n )\n const numFulfilledIds = fulfilledIds.length\n const numRejectedReasons = rejectedReasons.length\n\n if (fulfilledIds?.length > 0) {\n window.dispatchEvent(\n scheduleCustomEvent(ScheduleEvents.deleteMultiple, {\n detail: {scheduleIds: fulfilledIds},\n }),\n )\n }\n\n if (displayToast) {\n if (fulfilledIds?.length > 0) {\n toast.push({\n closable: true,\n description: (\n <ToastDescription title={`${pluralize('schedule', numFulfilledIds)} deleted`} />\n ),\n status: 'success',\n })\n }\n if (rejectedReasons?.length > 0) {\n toast.push({\n closable: true,\n description: (\n <ToastDescription\n body={rejectedReasons?.toString()}\n title={`Unable to delete ${pluralize('schedule', numRejectedReasons)}`}\n />\n ),\n duration: 15000, // 15s\n status: 'error',\n })\n }\n }\n }\n await run().catch((err) => {\n if (displayToast) {\n toast.push({\n closable: true,\n description: (\n <ToastDescription body={getErrorMessage(err)} title=\"Unable to delete schedules\" />\n ),\n duration: 15000, // 15s\n status: 'error',\n })\n }\n })\n }\n\n async function publishSchedule({\n displayToast = true,\n schedule,\n }: {\n displayToast?: boolean\n schedule: Schedule\n }) {\n try {\n const scheduleId = schedule.id\n await api.publish({scheduleId})\n\n window.dispatchEvent(scheduleCustomEvent(ScheduleEvents.publish, {detail: {scheduleId}}))\n\n if (displayToast) {\n toast.push({\n closable: true,\n description: <ToastDescription title=\"Document published\" />,\n status: 'success',\n })\n }\n } catch (err) {\n if (displayToast) {\n toast.push({\n closable: true,\n description: (\n <ToastDescription body={getErrorMessage(err)} title=\"Unable to publish schedule\" />\n ),\n duration: 15000, // 15s\n status: 'error',\n })\n }\n }\n }\n\n async function updateSchedule({\n date,\n displayToast = true,\n scheduleId,\n }: {\n date: string\n displayToast?: boolean\n scheduleId: string\n }) {\n try {\n await api.update({documentSchedule: {executeAt: date}, scheduleId})\n\n window.dispatchEvent(scheduleCustomEvent(ScheduleEvents.update, {detail: {date, scheduleId}}))\n\n if (displayToast) {\n toast.push({\n closable: true,\n description: (\n <ToastDescription\n body={formatDateTz({\n date: new Date(date),\n includeTimeZone: true,\n prefix: 'Publishing on ',\n })}\n title=\"Schedule updated\"\n />\n ),\n duration: 15000, // 15s\n status: 'success',\n })\n }\n } catch (err) {\n if (displayToast) {\n toast.push({\n closable: true,\n description: (\n <ToastDescription body={getErrorMessage(err)} title=\"Unable to update schedule\" />\n ),\n duration: 15000, // 15s\n status: 'error',\n })\n }\n }\n }\n\n return {\n createSchedule,\n deleteSchedule,\n deleteSchedules,\n publishSchedule,\n updateSchedule,\n }\n}\n","import {useCallback, useEffect, useMemo} from 'react'\nimport useSWR from 'swr'\n\nimport {useClient} from '../../hooks/useClient'\nimport {useScheduledPublishingEnabled} from '../../scheduledPublishing/contexts/ScheduledPublishingEnabledProvider'\nimport {type Schedule, type ScheduleState} from '../types'\nimport {sortByExecuteDate} from '../utils/sortByExecuteDate'\nimport {\n type ScheduleDeleteEvent,\n type ScheduleDeleteMultipleEvent,\n ScheduleEvents,\n type SchedulePublishEvent,\n type ScheduleUpdateEvent,\n} from './useScheduleOperation'\n\ntype QueryKey = {\n params?: {\n documentIds?: string\n state?: ScheduleState\n }\n url: string\n}\n\nfunction useScheduleBaseUrl() {\n const client = useClient({apiVersion: '2022-09-01'})\n const {dataset, projectId} = client.config()\n return `/schedules/${projectId}/${dataset}`\n}\n\nfunction useFetcher(queryKey: QueryKey) {\n const client = useClient({apiVersion: '2022-09-01'})\n return useCallback(\n () =>\n client.request<{schedules: Schedule[] | undefined}>({\n query: queryKey.params,\n method: 'GET',\n uri: queryKey.url,\n }),\n [client, queryKey],\n )\n}\n\nconst NO_SCHEDULES: Schedule[] = []\n\n/**\n * Poll for all schedules\n */\nfunction usePollSchedules({documentId, state}: {documentId?: string; state?: ScheduleState} = {}): {\n error: Error\n isInitialLoading: boolean\n schedules: Schedule[]\n} {\n const {mode, enabled} = useScheduledPublishingEnabled()\n\n const swrOptions = useMemo(() => {\n const SWR_OPTIONS = {\n refreshWhenHidden: false,\n refreshWhenOffline: false,\n revalidateOnFocus: false,\n shouldRetryOnError: false,\n // Revalidate data only on default mode, upsell mode should not poll given the data won't change.\n refreshInterval: mode === 'default' ? 10000 : undefined, // 10s\n revalidateIfStale: mode === 'default',\n revalidateOnReconnect: mode === 'default',\n }\n return SWR_OPTIONS\n }, [mode])\n const url = useScheduleBaseUrl()\n const queryKey: QueryKey = useMemo(\n () => ({params: {documentIds: documentId, state}, url}),\n [url, documentId, state],\n )\n\n const fetcher = useFetcher(queryKey)\n\n // Disables SWR if scheduled publishing is not enabled by not providing a key\n const {data, error, mutate} = useSWR(enabled ? queryKey : null, fetcher, swrOptions)\n\n // Immediately remove schedule from SWR cache and revalidate\n const handleDelete = useCallback(\n (event: CustomEvent<ScheduleDeleteEvent>) => {\n void mutate(\n (currentData) => ({\n schedules: currentData?.schedules?.filter(\n (schedule) => schedule.id !== event.detail.scheduleId,\n ),\n }),\n true, // revalidate SWR\n )\n },\n [mutate],\n )\n\n // Immediately remove schedules from SWR cache and revalidate\n const handleDeleteMultiple = useCallback(\n (event: CustomEvent<ScheduleDeleteMultipleEvent>) => {\n void mutate(\n (currentData) => ({\n schedules: currentData?.schedules?.filter(\n (schedule) => !event.detail.scheduleIds.includes(schedule.id),\n ),\n }),\n true, // revalidate SWR\n )\n },\n [mutate],\n )\n\n // Immediately publish schedule in SWR cache and revalidate\n const handlePublish = useCallback(\n (event: CustomEvent<SchedulePublishEvent>) => {\n void mutate(\n (currentData) => {\n const currentSchedules = currentData?.schedules || []\n const index = currentSchedules.findIndex(\n (schedule) => schedule.id === event.detail.scheduleId,\n )\n return {\n schedules: [\n ...currentSchedules.slice(0, index),\n {\n ...currentSchedules[index],\n executeAt: new Date().toISOString(),\n state: 'succeeded',\n },\n ...currentSchedules.slice(index + 1),\n ],\n }\n },\n true, // revalidate SWR\n )\n },\n [mutate],\n )\n\n // Immediately update schedule in SWR cache and revalidate\n const handleUpdate = useCallback(\n (event: CustomEvent<ScheduleUpdateEvent>) => {\n void mutate(\n (currentData) => {\n const currentSchedules = currentData?.schedules || []\n const index = currentSchedules.findIndex(\n (schedule) => schedule.id === event.detail.scheduleId,\n )\n\n return {\n schedules: [\n ...currentSchedules.slice(0, index),\n {\n ...currentSchedules[index],\n executeAt: event.detail.date,\n },\n ...currentSchedules.slice(index + 1),\n ],\n }\n },\n true, // revalidate SWR\n )\n },\n [mutate],\n )\n\n // Listen to schedule events\n useEffect(() => {\n window.addEventListener(ScheduleEvents.delete, handleDelete)\n window.addEventListener(ScheduleEvents.deleteMultiple, handleDeleteMultiple)\n window.addEventListener(ScheduleEvents.publish, handlePublish)\n window.addEventListener(ScheduleEvents.update, handleUpdate)\n return () => {\n window.removeEventListener(ScheduleEvents.delete, handleDelete)\n window.removeEventListener(ScheduleEvents.deleteMultiple, handleDeleteMultiple)\n window.removeEventListener(ScheduleEvents.publish, handlePublish)\n window.removeEventListener(ScheduleEvents.update, handleUpdate)\n }\n }, [handleDelete, handleDeleteMultiple, handlePublish, handleUpdate])\n\n // By default: sort schedules by last execute date (executedAt || executeAt)\n const sortedSchedules = useMemo(\n () => data?.schedules?.sort(sortByExecuteDate()),\n [data?.schedules],\n )\n\n return {\n error,\n isInitialLoading: !error && !data,\n schedules: sortedSchedules || NO_SCHEDULES,\n }\n}\n\nexport default usePollSchedules\n","import {useMemo} from 'react'\n\nexport function usePublishedId<T extends string | undefined>(id: T): T {\n return useMemo(() => (id ? id.replaceAll('drafts.', '') : undefined) as T, [id])\n}\n","import {\n isValidationErrorMarker,\n isValidationWarningMarker,\n type ValidationMarker,\n} from '@sanity/types'\nimport {type ButtonTone} from '@sanity/ui'\nimport {useMemo} from 'react'\n\nimport {type ValidationStatus} from '../types'\n\nexport const EMPTY_VALIDATION_STATUS: ValidationStatus = {\n validation: [],\n isValidating: false,\n}\n\ninterface ValidationState {\n markers: ValidationMarker[]\n validationTone: ButtonTone\n hasError: boolean\n hasWarning: boolean\n}\n\nfunction getValidationState(\n validationMarkers: ValidationMarker[] = EMPTY_VALIDATION_STATUS.validation,\n): ValidationState {\n const hasError = validationMarkers.filter(isValidationErrorMarker).length > 0\n const hasWarning = validationMarkers.filter(isValidationWarningMarker).length > 0\n\n let validationTone: ButtonTone = 'default'\n if (hasWarning) {\n validationTone = 'default' //not using 'caution' for now\n }\n if (hasError) {\n validationTone = 'critical'\n }\n\n return {\n markers: validationMarkers,\n validationTone,\n hasError,\n hasWarning,\n }\n}\n\nexport function useValidationState(markers: ValidationMarker[]): ValidationState {\n return useMemo(() => getValidationState(markers), [markers])\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"validationUtils-Cuk0jhWJ.js","names":["BadgeTone","TimeZoneScope","ScheduleAction","ScheduleState","SCHEDULE_ACTION_DICTIONARY","Record","actionName","badgeColor","badgeTone","publish","unpublish","SCHEDULE_STATE_DICTIONARY","title","scheduled","succeeded","cancelled","SCHEDULE_FILTERS","Object","keys","filter","f","TOOL_HEADER_HEIGHT","DOCUMENT_HAS_WARNINGS_TEXT","DOCUMENT_HAS_ERRORS_TEXT","SCHEDULE_FAILED_TEXT","TOOL_TITLE","RELEASES_DOCS_URL","FORBIDDEN_RESPONSE_TEXT","SCHEDULED_PUBLISHING_TOOL_NAME","SCHEDULED_PUBLISHING_TIME_ZONE_SCOPE","type","Schedule","getLastExecuteDate","schedule","executedAt","executeAt","Schedule","getLastExecuteDate","sortByExecuteDate","reverseOrder","a","b","aExecuteDate","bExecuteDate","CalendarIcon","Inline","Stack","Text","Props","body","title","ToastDescription","props","$","_c","t0","Symbol","for","t1","t2","t3","t4","ClientError","FORBIDDEN_RESPONSE_TEXT","isClientError","e","getErrorMessage","err","message","response","statusCode","Error","String","SanityClient","useMemo","useClient","debugWithName","Schedule","debug","useScheduleApi","$","_c","t0","Symbol","for","apiVersion","client","t1","createScheduleApi","dataset","projectId","config","_create","date","documentId","roundedDate","Date","setSeconds","setMilliseconds","request","body","documents","executeAt","name","method","uri","_delete","scheduleId","_deleteMultiple","scheduleIds","requests","map","Promise","allSettled","_publish","transactionId","_update","documentSchedule","Partial","create","delete","deleteMultiple","publish","update","useToast","useTimeZone","ToastDescription","Schedule","getErrorMessage","useScheduleApi","ScheduleEvents","create","const","delete","deleteMultiple","publish","update","ScheduleCreateEvent","date","documentId","ScheduleDeleteEvent","scheduleId","ScheduleDeleteMultipleEvent","scheduleIds","SchedulePublishEvent","ScheduleUpdateEvent","global","WindowEventMap","CustomEvent","UnpackCustomEventPayload","T","U","pluralize","word","count","scheduleCustomEvent","name","payload","Omit","CustomEventInit","D","detail","useScheduleOperation","$","_c","toast","t0","Symbol","for","type","formatDateTz","api","t1","createSchedule","t2","displayToast","t3","undefined","run","data","window","dispatchEvent","executeAt","push","closable","description","Date","includeTimeZone","prefix","duration","status","catch","err","deleteSchedule","t4","schedule","displayToast_0","run_0","id","err_0","deleteSchedules","t5","schedules","displayToast_1","run_1","map","_temp","response","fulfilledIds","rejectedReasons","reduce","acc","v","index","reason","numFulfilledIds","length","numRejectedReasons","toString","err_1","publishSchedule","t6","schedule_1","displayToast_2","t7","updateSchedule","date_0","scheduleId_0","displayToast_3","documentSchedule","t8","schedule_0","useCallback","useEffect","useMemo","useSWR","useClient","useScheduledPublishingEnabled","Schedule","ScheduleState","sortByExecuteDate","ScheduleDeleteEvent","ScheduleDeleteMultipleEvent","ScheduleEvents","SchedulePublishEvent","ScheduleUpdateEvent","QueryKey","params","documentIds","state","url","useScheduleBaseUrl","$","_c","t0","Symbol","for","apiVersion","client","t1","config","dataset","projectId","useFetcher","queryKey","request","query","method","uri","NO_SCHEDULES","usePollSchedules","undefined","documentId","mode","enabled","t2","t3","t4","t5","refreshWhenHidden","refreshWhenOffline","revalidateOnFocus","shouldRetryOnError","refreshInterval","revalidateIfStale","revalidateOnReconnect","SWR_OPTIONS","swrOptions","t6","t7","fetcher","data","error","mutate","t8","event","currentData","schedules","filter","schedule","id","detail","scheduleId","handleDelete","t9","event_0","currentData_0","schedule_0","scheduleIds","includes","handleDeleteMultiple","t10","event_1","currentData_1","currentSchedules","index","findIndex","schedule_1","slice","executeAt","Date","toISOString","handlePublish","t11","event_2","currentData_2","currentSchedules_0","index_0","schedule_2","date","handleUpdate","t12","t13","window","addEventListener","delete","deleteMultiple","publish","update","removeEventListener","t14","sort","sortedSchedules","t15","t16","t17","isInitialLoading","useMemo","usePublishedId","id","$","_c","t0","replaceAll","undefined","T","isValidationErrorMarker","isValidationWarningMarker","ValidationMarker","ButtonTone","useMemo","ValidationStatus","EMPTY_VALIDATION_STATUS","validation","isValidating","ValidationState","markers","validationTone","hasError","hasWarning","getValidationState","validationMarkers","filter","length","useValidationState","$","_c","t0"],"sources":["../src/core/scheduled-publishing/constants.tsx","../src/core/scheduled-publishing/utils/scheduleUtils.ts","../src/core/scheduled-publishing/utils/sortByExecuteDate.ts","../src/core/scheduled-publishing/components/toastDescription/ToastDescription.tsx","../src/core/scheduled-publishing/utils/getErrorMessage.ts","../src/core/scheduled-publishing/hooks/useScheduleApi.ts","../src/core/scheduled-publishing/hooks/useScheduleOperation.tsx","../src/core/scheduled-publishing/hooks/usePollSchedules.ts","../src/core/scheduled-publishing/hooks/usePublishedId.ts","../src/core/scheduled-publishing/utils/validationUtils.ts"],"sourcesContent":["import {type BadgeTone} from '@sanity/ui'\n\nimport {type TimeZoneScope} from '../hooks/useTimeZone'\nimport {type ScheduleAction, type ScheduleState} from './types'\n\nexport const SCHEDULE_ACTION_DICTIONARY: Record<\n ScheduleAction,\n {\n actionName: string\n badgeColor?: 'primary' | 'success' | 'warning' | 'danger' // Document badge specific\n badgeTone: BadgeTone\n }\n> = {\n publish: {\n actionName: 'Publishing',\n badgeColor: 'primary',\n badgeTone: 'positive',\n },\n unpublish: {\n actionName: 'Unpublishing',\n badgeColor: 'danger',\n badgeTone: 'critical',\n },\n}\n\nexport const SCHEDULE_STATE_DICTIONARY: Record<\n ScheduleState,\n {\n title: string\n }\n> = {\n scheduled: {\n title: 'Upcoming',\n },\n succeeded: {\n title: 'Completed',\n },\n cancelled: {\n title: 'Failed',\n },\n}\n\n// Tool: denotes order of filter tags as well as accessible routes\nexport const SCHEDULE_FILTERS: ScheduleState[] = Object.keys(SCHEDULE_STATE_DICTIONARY).filter(\n (f): f is ScheduleState => !!f,\n)\n\nexport const TOOL_HEADER_HEIGHT = 55 // px\n\nexport const DOCUMENT_HAS_WARNINGS_TEXT = 'This document has validation warnings.'\nexport const DOCUMENT_HAS_ERRORS_TEXT =\n 'This document has validation errors that should be resolved before its publish date.'\n\nexport const SCHEDULE_FAILED_TEXT = 'This schedule failed to run.'\n\nexport const TOOL_TITLE = 'Schedules'\n\nexport const RELEASES_DOCS_URL = 'https://www.sanity.io/blog/introducing-content-releases'\n\nexport const FORBIDDEN_RESPONSE_TEXT =\n 'Forbidden. Please check that your project has access to Scheduled Publishing.'\n\nexport const SCHEDULED_PUBLISHING_TOOL_NAME = 'schedules'\n\nexport const SCHEDULED_PUBLISHING_TIME_ZONE_SCOPE: TimeZoneScope = {type: 'scheduledPublishing'}\n","import {type Schedule} from '../types'\n\n/**\n * Return a schedule's `executedAt` date if it exists, otherwise just return `executeAt`.\n *\n * When dealing with schedules that may have differing values for `executeAt` and\n * `executedAt` (e.g. schedules force-published ahead of time), for the purposes of\n * rendering and sorting we only care about the _final_ date a schedule was executed.\n *\n * Note that it's possible for both `executedAt` and `executeAt` to be null\n * (if creating Schedules via the Scheduling API without dates).\n */\nexport function getLastExecuteDate(schedule: Schedule): string | null {\n return schedule?.executedAt || schedule?.executeAt\n}\n","import {type Schedule} from '../types'\nimport {getLastExecuteDate} from './scheduleUtils'\n\nexport function sortByExecuteDate({reverseOrder}: {reverseOrder: boolean} = {reverseOrder: false}) {\n return function (a: Schedule, b: Schedule): number {\n const aExecuteDate = getLastExecuteDate(a)\n const bExecuteDate = getLastExecuteDate(b)\n\n if (aExecuteDate === bExecuteDate) {\n return 0\n }\n if (aExecuteDate === null) {\n return 1\n }\n if (bExecuteDate === null) {\n return -1\n }\n return (aExecuteDate > bExecuteDate ? 1 : -1) * (reverseOrder ? -1 : 1)\n }\n}\n","import {CalendarIcon} from '@sanity/icons/Calendar'\nimport {Inline, Stack, Text} from '@sanity/ui'\n\ninterface Props {\n body?: string\n title: string\n}\n\nconst ToastDescription = (props: Props) => {\n const {body, title} = props\n return (\n <Stack paddingY={1} gap={3}>\n <Inline gap={2}>\n <CalendarIcon />\n {title && (\n <Text size={2} weight=\"semibold\">\n {title}\n </Text>\n )}\n </Inline>\n {body && <Text size={1}>{body}</Text>}\n </Stack>\n )\n}\n\nexport default ToastDescription\n","import {type ClientError} from '@sanity/client'\n\nimport {FORBIDDEN_RESPONSE_TEXT} from '../constants'\n\n// this is used in place of `instanceof` so the matching can be more robust and\n// won't have any issues with dual packages etc\n// https://nodejs.org/api/packages.html#dual-package-hazard\nfunction isClientError(e: unknown): e is ClientError {\n if (typeof e !== 'object') return false\n if (!e) return false\n return 'statusCode' in e && 'response' in e\n}\n\nexport default function getErrorMessage(err: unknown): string {\n let message\n\n if (isClientError(err)) {\n // The request was made and the server responded with a status code\n if (err.response.statusCode === 403) {\n message = FORBIDDEN_RESPONSE_TEXT\n } else {\n message = err.message\n }\n } else {\n if (err instanceof Error) {\n message = err.message\n }\n message = String(err)\n }\n\n return message\n}\n","import {type SanityClient} from '@sanity/client'\nimport {useMemo} from 'react'\n\nimport {useClient} from '../../hooks/useClient'\nimport {debugWithName} from '../../studio/timezones/utils/debug'\nimport {type Schedule} from '../types'\n\nconst debug = debugWithName('useScheduleOperation')\n\nexport function useScheduleApi(): ReturnType<typeof createScheduleApi> {\n const client = useClient({apiVersion: '2022-09-01'})\n return useMemo(() => createScheduleApi(client), [client])\n}\n\nfunction createScheduleApi(client: SanityClient) {\n const {dataset, projectId} = client.config()\n function _create({date, documentId}: {date: string; documentId: string}) {\n debug('_create:', documentId)\n\n // Round date to nearest second (mutate)\n const roundedDate = new Date(date)\n roundedDate.setSeconds(0)\n roundedDate.setMilliseconds(0)\n\n return client.request<Schedule>({\n body: {\n documents: [{documentId}],\n executeAt: roundedDate,\n name: roundedDate,\n },\n method: 'POST',\n uri: `/schedules/${projectId}/${dataset}`,\n })\n }\n\n function _delete({scheduleId}: {scheduleId: string}) {\n debug('_delete:', scheduleId)\n return client.request<void>({\n method: 'DELETE',\n uri: `/schedules/${projectId}/${dataset}/${scheduleId}`,\n })\n }\n\n function _deleteMultiple({scheduleIds}: {scheduleIds: string[]}) {\n debug('_deleteMultiple:', scheduleIds)\n const requests = scheduleIds.map((scheduleId) => _delete({scheduleId}))\n return Promise.allSettled(requests)\n }\n\n function _publish({scheduleId}: {scheduleId: string}) {\n debug('_publish:', scheduleId)\n\n return client.request<{transactionId: string}>({\n method: 'POST',\n uri: `/schedules/${projectId}/${dataset}/${scheduleId}/publish`,\n })\n }\n\n function _update({\n documentSchedule,\n scheduleId,\n }: {\n documentSchedule: Partial<Schedule>\n scheduleId: string\n }) {\n debug('_update:', scheduleId, documentSchedule)\n return client.request<{transactionId: string}>({\n body: documentSchedule,\n method: 'PATCH',\n uri: `/schedules/${projectId}/${dataset}/${scheduleId}`,\n })\n }\n\n return {\n create: _create,\n delete: _delete,\n deleteMultiple: _deleteMultiple,\n publish: _publish,\n update: _update,\n }\n}\n","import {useToast} from '@sanity/ui'\n\nimport {useTimeZone} from '../../hooks/useTimeZone'\nimport ToastDescription from '../components/toastDescription/ToastDescription'\nimport {type Schedule} from '../types'\nimport getErrorMessage from '../utils/getErrorMessage'\nimport {useScheduleApi} from './useScheduleApi'\n\n// Custom events\nexport const ScheduleEvents = {\n create: 'scheduleCreate' as const,\n delete: 'scheduleDelete' as const,\n deleteMultiple: 'scheduleDeleteMultiple' as const,\n publish: 'schedulePublish' as const,\n update: 'scheduleUpdate' as const,\n}\n\nexport type ScheduleCreateEvent = {\n date: string\n documentId: string\n}\n\nexport type ScheduleDeleteEvent = {\n scheduleId: string\n}\n\nexport type ScheduleDeleteMultipleEvent = {\n scheduleIds: string[]\n}\n\nexport type SchedulePublishEvent = {\n scheduleId: string\n}\n\nexport type ScheduleUpdateEvent = {\n date: string\n scheduleId: string\n}\n\n// Add our custom events to `WindowEventMap`, providing typing when using `addEventListener`\ndeclare global {\n interface WindowEventMap {\n [ScheduleEvents.create]: CustomEvent<ScheduleCreateEvent>\n [ScheduleEvents.delete]: CustomEvent<ScheduleDeleteEvent>\n [ScheduleEvents.deleteMultiple]: CustomEvent<ScheduleDeleteMultipleEvent>\n [ScheduleEvents.publish]: CustomEvent<SchedulePublishEvent>\n [ScheduleEvents.update]: CustomEvent<ScheduleUpdateEvent>\n }\n}\n\ntype UnpackCustomEventPayload<T> = T extends CustomEvent<infer U> ? U : never\n\nfunction pluralize(word: string, count: number) {\n return `${count} ${word}${count === 1 ? '' : 's'}`\n}\n// Proxy that generates type safe CustomEvents.\n// We infer our CustomEvent's `detail` using `UnpackCustomEventPayload`\nconst scheduleCustomEvent = <\n T extends (typeof ScheduleEvents)[keyof typeof ScheduleEvents],\n D extends UnpackCustomEventPayload<WindowEventMap[T]>,\n>(\n name: T,\n // override `detail` in `CustomEventInit` with our own custom payload\n payload: Omit<CustomEventInit<D>, 'detail'> & {\n detail: D\n },\n): CustomEvent<D> => new CustomEvent(name, payload)\n\nexport default function useScheduleOperation() {\n const toast = useToast()\n const {formatDateTz} = useTimeZone({type: 'scheduledPublishing'})\n const api = useScheduleApi()\n\n async function createSchedule({\n date,\n displayToast = true,\n documentId,\n }: {\n date: string\n displayToast?: boolean\n documentId: string\n }) {\n // The run().catch() syntax instead of try/catch is because of the React Compiler not fully supporting the syntax yet\n const run = async () => {\n const data = await api.create({date, documentId})\n\n window.dispatchEvent(\n scheduleCustomEvent(ScheduleEvents.create, {\n detail: {\n date,\n documentId,\n },\n }),\n )\n\n if (displayToast && data?.executeAt) {\n toast.push({\n closable: true,\n description: (\n <ToastDescription\n body={formatDateTz({\n date: new Date(data.executeAt),\n includeTimeZone: true,\n prefix: 'Publishing on ',\n })}\n title=\"Schedule created\"\n />\n ),\n duration: 15000, // 15s\n status: 'success',\n })\n }\n }\n await run().catch((err) => {\n if (displayToast) {\n toast.push({\n closable: true,\n description: (\n <ToastDescription body={getErrorMessage(err)} title=\"Unable to create schedule\" />\n ),\n duration: 15000, // 15s\n status: 'error',\n })\n }\n })\n }\n\n async function deleteSchedule({\n displayToast = true,\n schedule,\n }: {\n displayToast?: boolean\n schedule: Schedule\n }) {\n // The run().catch() syntax instead of try/catch is because of the React Compiler not fully supporting the syntax yet\n const run = async () => {\n await api.delete({scheduleId: schedule?.id})\n\n window.dispatchEvent(\n scheduleCustomEvent(ScheduleEvents.delete, {\n detail: {\n scheduleId: schedule?.id,\n },\n }),\n )\n\n if (displayToast) {\n toast.push({\n closable: true,\n description: <ToastDescription title=\"Schedule deleted\" />,\n status: 'success',\n })\n }\n }\n await run().catch((err) => {\n if (displayToast) {\n toast.push({\n closable: true,\n description: (\n <ToastDescription body={getErrorMessage(err)} title=\"Unable to delete schedule\" />\n ),\n duration: 15000, // 15s\n status: 'error',\n })\n }\n })\n }\n\n async function deleteSchedules({\n displayToast = true,\n schedules,\n }: {\n displayToast?: boolean\n schedules: Schedule[]\n }) {\n // The run().catch() syntax instead of try/catch is because of the React Compiler not fully supporting the syntax yet\n const run = async () => {\n const scheduleIds = schedules.map((schedule) => schedule.id)\n const response = await api.deleteMultiple({scheduleIds})\n\n const {fulfilledIds, rejectedReasons} = response.reduce<{\n fulfilledIds: string[]\n rejectedReasons: string[]\n }>(\n (acc, v, index) => {\n if (v.status === 'fulfilled') {\n acc.fulfilledIds.push(schedules[index].id)\n }\n\n if (v.status === 'rejected') {\n acc.rejectedReasons.push(`[${schedules[index].id}]: ${v.reason}`)\n }\n\n return acc\n },\n {fulfilledIds: [], rejectedReasons: []},\n )\n const numFulfilledIds = fulfilledIds.length\n const numRejectedReasons = rejectedReasons.length\n\n if (fulfilledIds?.length > 0) {\n window.dispatchEvent(\n scheduleCustomEvent(ScheduleEvents.deleteMultiple, {\n detail: {scheduleIds: fulfilledIds},\n }),\n )\n }\n\n if (displayToast) {\n if (fulfilledIds?.length > 0) {\n toast.push({\n closable: true,\n description: (\n <ToastDescription title={`${pluralize('schedule', numFulfilledIds)} deleted`} />\n ),\n status: 'success',\n })\n }\n if (rejectedReasons?.length > 0) {\n toast.push({\n closable: true,\n description: (\n <ToastDescription\n body={rejectedReasons?.toString()}\n title={`Unable to delete ${pluralize('schedule', numRejectedReasons)}`}\n />\n ),\n duration: 15000, // 15s\n status: 'error',\n })\n }\n }\n }\n await run().catch((err) => {\n if (displayToast) {\n toast.push({\n closable: true,\n description: (\n <ToastDescription body={getErrorMessage(err)} title=\"Unable to delete schedules\" />\n ),\n duration: 15000, // 15s\n status: 'error',\n })\n }\n })\n }\n\n async function publishSchedule({\n displayToast = true,\n schedule,\n }: {\n displayToast?: boolean\n schedule: Schedule\n }) {\n try {\n const scheduleId = schedule.id\n await api.publish({scheduleId})\n\n window.dispatchEvent(scheduleCustomEvent(ScheduleEvents.publish, {detail: {scheduleId}}))\n\n if (displayToast) {\n toast.push({\n closable: true,\n description: <ToastDescription title=\"Document published\" />,\n status: 'success',\n })\n }\n } catch (err) {\n if (displayToast) {\n toast.push({\n closable: true,\n description: (\n <ToastDescription body={getErrorMessage(err)} title=\"Unable to publish schedule\" />\n ),\n duration: 15000, // 15s\n status: 'error',\n })\n }\n }\n }\n\n async function updateSchedule({\n date,\n displayToast = true,\n scheduleId,\n }: {\n date: string\n displayToast?: boolean\n scheduleId: string\n }) {\n try {\n await api.update({documentSchedule: {executeAt: date}, scheduleId})\n\n window.dispatchEvent(scheduleCustomEvent(ScheduleEvents.update, {detail: {date, scheduleId}}))\n\n if (displayToast) {\n toast.push({\n closable: true,\n description: (\n <ToastDescription\n body={formatDateTz({\n date: new Date(date),\n includeTimeZone: true,\n prefix: 'Publishing on ',\n })}\n title=\"Schedule updated\"\n />\n ),\n duration: 15000, // 15s\n status: 'success',\n })\n }\n } catch (err) {\n if (displayToast) {\n toast.push({\n closable: true,\n description: (\n <ToastDescription body={getErrorMessage(err)} title=\"Unable to update schedule\" />\n ),\n duration: 15000, // 15s\n status: 'error',\n })\n }\n }\n }\n\n return {\n createSchedule,\n deleteSchedule,\n deleteSchedules,\n publishSchedule,\n updateSchedule,\n }\n}\n","import {useCallback, useEffect, useMemo} from 'react'\nimport useSWR from 'swr'\n\nimport {useClient} from '../../hooks/useClient'\nimport {useScheduledPublishingEnabled} from '../../scheduledPublishing/contexts/ScheduledPublishingEnabledProvider'\nimport {type Schedule, type ScheduleState} from '../types'\nimport {sortByExecuteDate} from '../utils/sortByExecuteDate'\nimport {\n type ScheduleDeleteEvent,\n type ScheduleDeleteMultipleEvent,\n ScheduleEvents,\n type SchedulePublishEvent,\n type ScheduleUpdateEvent,\n} from './useScheduleOperation'\n\ntype QueryKey = {\n params?: {\n documentIds?: string\n state?: ScheduleState\n }\n url: string\n}\n\nfunction useScheduleBaseUrl() {\n const client = useClient({apiVersion: '2022-09-01'})\n const {dataset, projectId} = client.config()\n return `/schedules/${projectId}/${dataset}`\n}\n\nfunction useFetcher(queryKey: QueryKey) {\n const client = useClient({apiVersion: '2022-09-01'})\n return useCallback(\n () =>\n client.request<{schedules: Schedule[] | undefined}>({\n query: queryKey.params,\n method: 'GET',\n uri: queryKey.url,\n }),\n [client, queryKey],\n )\n}\n\nconst NO_SCHEDULES: Schedule[] = []\n\n/**\n * Poll for all schedules\n */\nfunction usePollSchedules({documentId, state}: {documentId?: string; state?: ScheduleState} = {}): {\n error: Error\n isInitialLoading: boolean\n schedules: Schedule[]\n} {\n const {mode, enabled} = useScheduledPublishingEnabled()\n\n const swrOptions = useMemo(() => {\n const SWR_OPTIONS = {\n refreshWhenHidden: false,\n refreshWhenOffline: false,\n revalidateOnFocus: false,\n shouldRetryOnError: false,\n // Revalidate data only on default mode, upsell mode should not poll given the data won't change.\n refreshInterval: mode === 'default' ? 10000 : undefined, // 10s\n revalidateIfStale: mode === 'default',\n revalidateOnReconnect: mode === 'default',\n }\n return SWR_OPTIONS\n }, [mode])\n const url = useScheduleBaseUrl()\n const queryKey: QueryKey = useMemo(\n () => ({params: {documentIds: documentId, state}, url}),\n [url, documentId, state],\n )\n\n const fetcher = useFetcher(queryKey)\n\n // Disables SWR if scheduled publishing is not enabled by not providing a key\n const {data, error, mutate} = useSWR(enabled ? queryKey : null, fetcher, swrOptions)\n\n // Immediately remove schedule from SWR cache and revalidate\n const handleDelete = useCallback(\n (event: CustomEvent<ScheduleDeleteEvent>) => {\n void mutate(\n (currentData) => ({\n schedules: currentData?.schedules?.filter(\n (schedule) => schedule.id !== event.detail.scheduleId,\n ),\n }),\n true, // revalidate SWR\n )\n },\n [mutate],\n )\n\n // Immediately remove schedules from SWR cache and revalidate\n const handleDeleteMultiple = useCallback(\n (event: CustomEvent<ScheduleDeleteMultipleEvent>) => {\n void mutate(\n (currentData) => ({\n schedules: currentData?.schedules?.filter(\n (schedule) => !event.detail.scheduleIds.includes(schedule.id),\n ),\n }),\n true, // revalidate SWR\n )\n },\n [mutate],\n )\n\n // Immediately publish schedule in SWR cache and revalidate\n const handlePublish = useCallback(\n (event: CustomEvent<SchedulePublishEvent>) => {\n void mutate(\n (currentData) => {\n const currentSchedules = currentData?.schedules || []\n const index = currentSchedules.findIndex(\n (schedule) => schedule.id === event.detail.scheduleId,\n )\n return {\n schedules: [\n ...currentSchedules.slice(0, index),\n {\n ...currentSchedules[index],\n executeAt: new Date().toISOString(),\n state: 'succeeded',\n },\n ...currentSchedules.slice(index + 1),\n ],\n }\n },\n true, // revalidate SWR\n )\n },\n [mutate],\n )\n\n // Immediately update schedule in SWR cache and revalidate\n const handleUpdate = useCallback(\n (event: CustomEvent<ScheduleUpdateEvent>) => {\n void mutate(\n (currentData) => {\n const currentSchedules = currentData?.schedules || []\n const index = currentSchedules.findIndex(\n (schedule) => schedule.id === event.detail.scheduleId,\n )\n\n return {\n schedules: [\n ...currentSchedules.slice(0, index),\n {\n ...currentSchedules[index],\n executeAt: event.detail.date,\n },\n ...currentSchedules.slice(index + 1),\n ],\n }\n },\n true, // revalidate SWR\n )\n },\n [mutate],\n )\n\n // Listen to schedule events\n useEffect(() => {\n window.addEventListener(ScheduleEvents.delete, handleDelete)\n window.addEventListener(ScheduleEvents.deleteMultiple, handleDeleteMultiple)\n window.addEventListener(ScheduleEvents.publish, handlePublish)\n window.addEventListener(ScheduleEvents.update, handleUpdate)\n return () => {\n window.removeEventListener(ScheduleEvents.delete, handleDelete)\n window.removeEventListener(ScheduleEvents.deleteMultiple, handleDeleteMultiple)\n window.removeEventListener(ScheduleEvents.publish, handlePublish)\n window.removeEventListener(ScheduleEvents.update, handleUpdate)\n }\n }, [handleDelete, handleDeleteMultiple, handlePublish, handleUpdate])\n\n // By default: sort schedules by last execute date (executedAt || executeAt)\n const sortedSchedules = useMemo(\n () => data?.schedules?.sort(sortByExecuteDate()),\n [data?.schedules],\n )\n\n return {\n error,\n isInitialLoading: !error && !data,\n schedules: sortedSchedules || NO_SCHEDULES,\n }\n}\n\nexport default usePollSchedules\n","import {useMemo} from 'react'\n\nexport function usePublishedId<T extends string | undefined>(id: T): T {\n return useMemo(() => (id ? id.replaceAll('drafts.', '') : undefined) as T, [id])\n}\n","import {\n isValidationErrorMarker,\n isValidationWarningMarker,\n type ValidationMarker,\n} from '@sanity/types'\nimport {type ButtonTone} from '@sanity/ui'\nimport {useMemo} from 'react'\n\nimport {type ValidationStatus} from '../types'\n\nexport const EMPTY_VALIDATION_STATUS: ValidationStatus = {\n validation: [],\n isValidating: false,\n}\n\ninterface ValidationState {\n markers: ValidationMarker[]\n validationTone: ButtonTone\n hasError: boolean\n hasWarning: boolean\n}\n\nfunction getValidationState(\n validationMarkers: ValidationMarker[] = EMPTY_VALIDATION_STATUS.validation,\n): ValidationState {\n const hasError = validationMarkers.filter(isValidationErrorMarker).length > 0\n const hasWarning = validationMarkers.filter(isValidationWarningMarker).length > 0\n\n let validationTone: ButtonTone = 'default'\n if (hasWarning) {\n validationTone = 'default' //not using 'caution' for now\n }\n if (hasError) {\n validationTone = 'critical'\n }\n\n return {\n markers: validationMarkers,\n validationTone,\n hasError,\n hasWarning,\n }\n}\n\nexport function useValidationState(markers: ValidationMarker[]): ValidationState {\n return useMemo(() => getValidationState(markers), [markers])\n}\n"],"mappings":"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"}
@@ -6,7 +6,7 @@ try {
6
6
  * @hidden
7
7
  * @beta
8
8
  */
9
- const SANITY_VERSION = buildVersion || "6.9.2-next.21+b1b2c34b46";
9
+ const SANITY_VERSION = buildVersion || "6.9.2-next.22+885108d584";
10
10
  export { SANITY_VERSION as t };
11
11
 
12
- //# sourceMappingURL=version-XEmBTnIh.js.map
12
+ //# sourceMappingURL=version-BVcB_xWL.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version-XEmBTnIh.js","names":["version","global","__PKG_VERSION__","buildVersion","process","env","PKG_BUILD_VERSION","SANITY_VERSION"],"sources":["../src/core/version.ts"],"sourcesContent":["import {version} from '../../package.json'\n\ndeclare global {\n /**\n * Replaced with the published package version by tsdown at build time (see the `define` option\n * in `tsdown.config.ts`); undefined when running from source, e.g. in dev or test environments\n */\n var __PKG_VERSION__: string | undefined\n}\n\nlet buildVersion: string | undefined\ntry {\n // this offers a way to override what version is displayed\n // currently used for test-studio preview builds to attach custom version details like git info\n buildVersion = process.env.PKG_BUILD_VERSION\n} catch {\n // ignore, assume process.env is not defined by the runtime\n}\n\n/**\n * @hidden\n * @beta\n */\nexport const SANITY_VERSION =\n buildVersion || (typeof __PKG_VERSION__ === 'string' ? __PKG_VERSION__ : `${version}-dev`)\n"],"mappings":"AAUA,IAAIG;AACJ,IAAI;CAGFA,eAAeC,QAAQC,IAAIC;AAC7B,QAAQ,CACN;;;;;AAOF,MAAaC,iBACXJ,gBAAAA"}
1
+ {"version":3,"file":"version-BVcB_xWL.js","names":["version","global","__PKG_VERSION__","buildVersion","process","env","PKG_BUILD_VERSION","SANITY_VERSION"],"sources":["../src/core/version.ts"],"sourcesContent":["import {version} from '../../package.json'\n\ndeclare global {\n /**\n * Replaced with the published package version by tsdown at build time (see the `define` option\n * in `tsdown.config.ts`); undefined when running from source, e.g. in dev or test environments\n */\n var __PKG_VERSION__: string | undefined\n}\n\nlet buildVersion: string | undefined\ntry {\n // this offers a way to override what version is displayed\n // currently used for test-studio preview builds to attach custom version details like git info\n buildVersion = process.env.PKG_BUILD_VERSION\n} catch {\n // ignore, assume process.env is not defined by the runtime\n}\n\n/**\n * @hidden\n * @beta\n */\nexport const SANITY_VERSION =\n buildVersion || (typeof __PKG_VERSION__ === 'string' ? __PKG_VERSION__ : `${version}-dev`)\n"],"mappings":"AAUA,IAAIG;AACJ,IAAI;CAGFA,eAAeC,QAAQC,IAAIC;AAC7B,QAAQ,CACN;;;;;AAOF,MAAaC,iBACXJ,gBAAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sanity",
3
- "version": "6.9.2-next.21",
3
+ "version": "6.9.2-next.22",
4
4
  "description": "Sanity is a real-time content infrastructure with a scalable, hosted backend featuring a Graph Oriented Query Language (GROQ), asset pipelines and fast edge caches",
5
5
  "keywords": [
6
6
  "cms",
@@ -158,11 +158,11 @@
158
158
  "uuid": "^14.0.1",
159
159
  "web-vitals": "^6.0.0",
160
160
  "xstate": "^5.32.5",
161
- "@sanity/mutator": "6.9.2-next.21+b1b2c34b46",
162
- "@sanity/schema": "6.9.2-next.21+b1b2c34b46",
163
- "@sanity/diff": "6.9.2-next.21+b1b2c34b46",
164
- "@sanity/types": "6.9.2-next.21+b1b2c34b46",
165
- "@sanity/util": "6.9.2-next.21+b1b2c34b46"
161
+ "@sanity/diff": "6.9.2-next.22+885108d584",
162
+ "@sanity/mutator": "6.9.2-next.22+885108d584",
163
+ "@sanity/types": "6.9.2-next.22+885108d584",
164
+ "@sanity/schema": "6.9.2-next.22+885108d584",
165
+ "@sanity/util": "6.9.2-next.22+885108d584"
166
166
  },
167
167
  "devDependencies": {
168
168
  "@rolldown/plugin-babel": "^0.2.3",
@@ -202,10 +202,10 @@
202
202
  "vitest": "^4.1.10",
203
203
  "vitest-browser-react": "^2.2.0",
204
204
  "vitest-package-exports": "^1.2.0",
205
- "@repo/package.bundle": "6.9.2-next.21+b1b2c34b46",
206
- "@repo/test-config": "6.9.2-next.21+b1b2c34b46",
207
- "@repo/tsdown.config": "6.9.2-next.21+b1b2c34b46",
208
- "@repo/tsconfig": "6.9.2-next.21+b1b2c34b46"
205
+ "@repo/package.bundle": "6.9.2-next.22+885108d584",
206
+ "@repo/test-config": "6.9.2-next.22+885108d584",
207
+ "@repo/tsdown.config": "6.9.2-next.22+885108d584",
208
+ "@repo/tsconfig": "6.9.2-next.22+885108d584"
209
209
  },
210
210
  "peerDependencies": {
211
211
  "react": "^19.2.2",