@sanity/debug-live-sync-tags
1.0.161.0.17
dist/Tool-CNMlAw5M.js.map+
dist/Tool-CNMlAw5M.js.mapNew file+1
Index: package/dist/Tool-CNMlAw5M.js.map
===================================================================
--- package/dist/Tool-CNMlAw5M.js.map
+++ package/dist/Tool-CNMlAw5M.js.map
@@ -0,0 +1,1 @@
+{"version":3,"file":"Tool-CNMlAw5M.js","names":["{\n events,\n findResolvedTag,\n showTimestamp,\n showEventId,\n}: {\n events: Map<string, LiveEvent & {timestamp: string}>\n findResolvedTag: (tag: string) => string\n showTimestamp: boolean\n showEventId: boolean\n}","<StyledTable>\n <thead>\n <tr>\n {showTimestamp && <th>time</th>}\n {showEventId && <th>id</th>}\n <th>type</th>\n <th>tags</th>\n </tr>\n </thead>\n <tbody>\n {rows.map((event, i) => {\n const tags = 'tags' in event ? event.tags : []\n const time = new Date(event.timestamp).toLocaleTimeString()\n const eventId = 'id' in event ? event.id : null\n const bg =\n i % 2 !== 0\n ? 'color-mix(in srgb, var(--card-border-color, #ddd) 15%, transparent)'\n : undefined\n return (\n <tr key={event.timestamp} style={{background: bg}}>\n {showTimestamp && <td>{time}</td>}\n {showEventId && <td>{eventId}</td>}\n <td style={{fontWeight: 600}}>{event.type}</td>\n <td style={{whiteSpace: 'normal'}}>\n {tags.length > 0 && (\n <TagGrid>\n {tags.map((tag) => (\n <Fragment key={tag}>\n <span title={tag}>{tag}</span>\n <span>{findResolvedTag(tag)}</span>\n </Fragment>\n ))}\n </TagGrid>\n )}\n </td>\n </tr>\n )\n })}\n </tbody>\n </StyledTable>","showTimestamp && <th>time</th>","showEventId && <th>id</th>","<th>type</th>","<th>tags</th>","<thead>\n <tr>\n {showTimestamp && <th>time</th>}\n {showEventId && <th>id</th>}\n <th>type</th>\n <th>tags</th>\n </tr>\n </thead>","{apiVersion: '2026-03-17'}","() => new Map()","() => {\n const subscription = client.live.events({tag: 'debug-live-sync-tags'}).subscribe({\n next: (event) => {\n startTransition(() =>\n setLiveEvents((prev) => {\n const next = new Map(prev)\n next.set('id' in event ? event.id : new Date().toJSON(), {\n ...event,\n timestamp: new Date().toJSON(),\n })\n return next\n }),\n )\n },\n error: console.error,\n })\n return () => subscription.unsubscribe()\n }","live","[client]","() => {\n const subscription = client.live\n .events({tag: 'debug-live-sync-tags', includeDrafts: true})\n .subscribe({\n next: (event) => {\n startTransition(() =>\n setLiveEventsIncludingAllDocuments((prev) => {\n const next = new Map(prev)\n next.set('id' in event ? event.id : new Date().toJSON(), {\n ...event,\n timestamp: new Date().toJSON(),\n })\n return next\n }),\n )\n },\n error: console.error,\n })\n return () => subscription.unsubscribe()\n }","subscription","next","prev","event","() => {\n const controller = new AbortController()\n client\n .fetch<string[]>(\n `array::unique(*._type)`,\n {},\n {\n signal: controller.signal,\n returnQuery: false,\n tag: 'debug-live-sync-tags',\n filterResponse: false,\n },\n )\n .then(({result, syncTags}) => {\n if (controller.signal.aborted) return\n setSyncTagForEverything(syncTags?.[0] ?? null)\n\n setAllDocumentTypes((prev) => {\n const next = new Map(prev)\n for (const type of result) {\n if (!next.has(type)) {\n next.set(type, null)\n }\n }\n return next\n })\n return\n })\n .catch(console.error)\n return () => controller.abort()\n }","{result, syncTags}","(documentType: string, resolvedDocumentType: string) =>\n startTransition(() =>\n setAllDocumentTypes((prev) => {\n const next = new Map(prev)\n next.set(documentType, resolvedDocumentType)\n return next\n }),\n )","documentType","resolvedDocumentType","Array.from(allDocumentTypes.keys())","documentIdToTagMap","documentId","tag","(documentId: string, tag: string | null) =>\n startTransition(() =>\n setDocumentIdToTagMap((prev) => {\n const next = new Map(prev)\n next.set(documentId, tag)\n return next\n }),\n )","documentSlugToTagMap","slug","(slug: string, tag: string | null) =>\n startTransition(() =>\n setDocumentSlugToTagMap((prev) => {\n const next = new Map(prev)\n next.set(slug, tag)\n return next\n }),\n )","() => {\n if (allDocumentTypesArray.length === 0) {\n return undefined\n }\n\n const listener = client\n .listen(\n '*[_type in $type]',\n {type: allDocumentTypesArray},\n {\n events: ['mutation'],\n includePreviousRevision: false,\n includeResult: true,\n includeAllVersions: true,\n includeMutations: false,\n tag: 'debug-live-sync-tags',\n },\n )\n .subscribe({\n next: (event) => {\n startTransition(() => {\n setDocumentIdToTagMap((prev) => {\n if (prev.has(event.documentId)) {\n return prev\n }\n const next = new Map(prev)\n next.set(event.documentId, null)\n return next\n })\n\n const slugField = event.result?.['slug']\n const slug =\n slugField &&\n typeof slugField === 'object' &&\n 'current' in slugField &&\n typeof slugField.current === 'string'\n ? slugField.current\n : null\n if (slug) {\n setDocumentSlugToTagMap((prev) => {\n if (prev.has(slug)) {\n return prev\n }\n const next = new Map(prev)\n next.set(slug, null)\n return next\n })\n }\n })\n },\n error: console.error,\n })\n return () => listener.unsubscribe()\n }","allDocumentTypesArray.length","'slug'","[client, allDocumentTypesArray]","() =>\n setWhichList((prev) =>\n prev === 'liveEvents' ? 'liveEventsIncludingAllDocuments' : 'liveEvents',\n )","(prev) =>\n prev === 'liveEvents' ? 'liveEventsIncludingAllDocuments' : 'liveEvents'","<Checkbox\n checked={whichList === 'liveEventsIncludingAllDocuments'}\n onChange={() =>\n setWhichList((prev) =>\n prev === 'liveEvents' ? 'liveEventsIncludingAllDocuments' : 'liveEvents',\n )\n }\n />","whichList === 'liveEventsIncludingAllDocuments'","<Label size={1}>Include all documents</Label>","<Flex as=\"label\" align=\"center\" gap={2}>\n <Checkbox\n checked={whichList === 'liveEventsIncludingAllDocuments'}\n onChange={() =>\n setWhichList((prev) =>\n prev === 'liveEvents' ? 'liveEventsIncludingAllDocuments' : 'liveEvents',\n )\n }\n />\n <Label size={1}>Include all documents</Label>\n </Flex>","() => setShowTimestamp((prev) => !prev)","(prev) => !prev","<Checkbox checked={showTimestamp} onChange={() => setShowTimestamp((prev) => !prev)} />","<Label size={1}>Show timestamp</Label>","<Flex as=\"label\" align=\"center\" gap={2}>\n <Checkbox checked={showTimestamp} onChange={() => setShowTimestamp((prev) => !prev)} />\n <Label size={1}>Show timestamp</Label>\n </Flex>","() => setShowEventId((prev) => !prev)","<Checkbox checked={showEventId} onChange={() => setShowEventId((prev) => !prev)} />","<Label size={1}>Show event ID</Label>","<Flex as=\"label\" align=\"center\" gap={2}>\n <Checkbox checked={showEventId} onChange={() => setShowEventId((prev) => !prev)} />\n <Label size={1}>Show event ID</Label>\n </Flex>","<Sidebar gap={4}>\n <Flex as=\"label\" align=\"center\" gap={2}>\n <Checkbox\n checked={whichList === 'liveEventsIncludingAllDocuments'}\n onChange={() =>\n setWhichList((prev) =>\n prev === 'liveEvents' ? 'liveEventsIncludingAllDocuments' : 'liveEvents',\n )\n }\n />\n <Label size={1}>Include all documents</Label>\n </Flex>\n <Flex as=\"label\" align=\"center\" gap={2}>\n <Checkbox checked={showTimestamp} onChange={() => setShowTimestamp((prev) => !prev)} />\n <Label size={1}>Show timestamp</Label>\n </Flex>\n <Flex as=\"label\" align=\"center\" gap={2}>\n <Checkbox checked={showEventId} onChange={() => setShowEventId((prev) => !prev)} />\n <Label size={1}>Show event ID</Label>\n </Flex>\n </Sidebar>","<EventTable\n events={liveEvents}\n findResolvedTag={findResolvedTag}\n showTimestamp={showTimestamp}\n showEventId={showEventId}\n />","<Activity mode={whichList === 'liveEvents' ? 'visible' : 'hidden'}>\n <EventTable\n events={liveEvents}\n findResolvedTag={findResolvedTag}\n showTimestamp={showTimestamp}\n showEventId={showEventId}\n />\n </Activity>","whichList === 'liveEvents' ? 'visible' : 'hidden'","<EventTable\n events={liveEventsIncludingAllDocuments}\n findResolvedTag={findResolvedTag}\n showTimestamp={showTimestamp}\n showEventId={showEventId}\n />","<Activity mode={whichList === 'liveEventsIncludingAllDocuments' ? 'visible' : 'hidden'}>\n <EventTable\n events={liveEventsIncludingAllDocuments}\n findResolvedTag={findResolvedTag}\n showTimestamp={showTimestamp}\n showEventId={showEventId}\n />\n </Activity>","whichList === 'liveEventsIncludingAllDocuments' ? 'visible' : 'hidden'","<Main>\n <Activity mode={whichList === 'liveEvents' ? 'visible' : 'hidden'}>\n <EventTable\n events={liveEvents}\n findResolvedTag={findResolvedTag}\n showTimestamp={showTimestamp}\n showEventId={showEventId}\n />\n </Activity>\n <Activity mode={whichList === 'liveEventsIncludingAllDocuments' ? 'visible' : 'hidden'}>\n <EventTable\n events={liveEventsIncludingAllDocuments}\n findResolvedTag={findResolvedTag}\n showTimestamp={showTimestamp}\n showEventId={showEventId}\n />\n </Activity>\n </Main>","unknownDocumentTypes.map((unknownDocumentType) => (\n <ResolveDocumentType\n key={unknownDocumentType}\n projectId={projectId}\n dataset={dataset}\n documentType={unknownDocumentType}\n client={client}\n setDocumentType={setDocumentType}\n />\n ))","<Layout>\n <Sidebar gap={4}>\n <Flex as=\"label\" align=\"center\" gap={2}>\n <Checkbox\n checked={whichList === 'liveEventsIncludingAllDocuments'}\n onChange={() =>\n setWhichList((prev) =>\n prev === 'liveEvents' ? 'liveEventsIncludingAllDocuments' : 'liveEvents',\n )\n }\n />\n <Label size={1}>Include all documents</Label>\n </Flex>\n <Flex as=\"label\" align=\"center\" gap={2}>\n <Checkbox checked={showTimestamp} onChange={() => setShowTimestamp((prev) => !prev)} />\n <Label size={1}>Show timestamp</Label>\n </Flex>\n <Flex as=\"label\" align=\"center\" gap={2}>\n <Checkbox checked={showEventId} onChange={() => setShowEventId((prev) => !prev)} />\n <Label size={1}>Show event ID</Label>\n </Flex>\n </Sidebar>\n <Main>\n <Activity mode={whichList === 'liveEvents' ? 'visible' : 'hidden'}>\n <EventTable\n events={liveEvents}\n findResolvedTag={findResolvedTag}\n showTimestamp={showTimestamp}\n showEventId={showEventId}\n />\n </Activity>\n <Activity mode={whichList === 'liveEventsIncludingAllDocuments' ? 'visible' : 'hidden'}>\n <EventTable\n events={liveEventsIncludingAllDocuments}\n findResolvedTag={findResolvedTag}\n showTimestamp={showTimestamp}\n showEventId={showEventId}\n />\n </Activity>\n </Main>\n {unknownDocumentTypes.map((unknownDocumentType) => (\n <ResolveDocumentType\n key={unknownDocumentType}\n projectId={projectId}\n dataset={dataset}\n documentType={unknownDocumentType}\n client={client}\n setDocumentType={setDocumentType}\n />\n ))}\n {unknownDocumentIds.map((unknownDocumentId) => (\n <ResolveDocumentId\n key={unknownDocumentId}\n projectId={projectId}\n dataset={dataset}\n documentId={unknownDocumentId}\n client={client}\n setDocumentIdTag={setDocumentIdTag}\n />\n ))}\n {unknownDocumentSlugs.map((unknownSlug) => (\n <ResolveDocumentSlug\n key={unknownSlug}\n projectId={projectId}\n dataset={dataset}\n slug={unknownSlug}\n client={client}\n setDocumentSlugTag={setDocumentSlugTag}\n />\n ))}\n </Layout>","unknownDocumentIds.map((unknownDocumentId) => (\n <ResolveDocumentId\n key={unknownDocumentId}\n projectId={projectId}\n dataset={dataset}\n documentId={unknownDocumentId}\n client={client}\n setDocumentIdTag={setDocumentIdTag}\n />\n ))","unknownDocumentSlugs.map((unknownSlug) => (\n <ResolveDocumentSlug\n key={unknownSlug}\n projectId={projectId}\n dataset={dataset}\n slug={unknownSlug}\n client={client}\n setDocumentSlugTag={setDocumentSlugTag}\n />\n ))","{\n projectId,\n dataset,\n documentType,\n client,\n setDocumentType,\n}: {\n projectId: string\n dataset: string\n documentType: string\n client: SanityClient\n setDocumentType: (documentType: string, resolvedDocumentType: string) => void\n}","() => {\n const localStorageKey = `debug-live-sync-tags-resolved-document-type-${projectId}-${dataset}-${documentType}`\n const localStorageValue = localStorage.getItem(localStorageKey)\n if (localStorageValue && typeof localStorageValue === 'string') {\n setDocumentType(documentType, localStorageValue)\n return undefined\n }\n\n const controller = new AbortController()\n void client\n .fetch(\n `count(*[_type == $type])`,\n {type: documentType},\n {\n filterResponse: false,\n perspective: 'published',\n returnQuery: false,\n resultSourceMap: false,\n stega: false,\n useCdn: true,\n },\n )\n .then(({syncTags}) => {\n if (controller.signal.aborted) return\n if (!Array.isArray(syncTags)) {\n throw new TypeError('syncTags is not an array', {cause: {syncTags, documentType}})\n }\n if (syncTags.length !== 1) {\n throw new TypeError('syncTags is not an array of exactly one item', {\n cause: {syncTags, documentType},\n })\n }\n setDocumentType(documentType, syncTags[0]!)\n localStorage.setItem(localStorageKey, syncTags[0]!)\n return\n })\n return () => controller.abort()\n }","[documentType, client, dataset, setDocumentType, projectId]","{syncTags}","{\n projectId,\n dataset,\n documentId,\n client,\n setDocumentIdTag,\n}: {\n projectId: string\n dataset: string\n documentId: string\n client: SanityClient\n setDocumentIdTag: (documentId: string, tag: string | null) => void\n}","() => {\n const localStorageKey = `debug-live-sync-tags-resolved-document-id-${projectId}-${dataset}-${documentId}`\n const localStorageValue = localStorage.getItem(localStorageKey)\n if (localStorageValue && typeof localStorageValue === 'string') {\n setDocumentIdTag(documentId, localStorageValue)\n return undefined\n }\n const controller = new AbortController()\n void client\n .fetch(\n `count(*[_id == $id])`,\n {id: documentId},\n {\n filterResponse: false,\n // perspective: 'published',\n returnQuery: false,\n resultSourceMap: false,\n stega: false,\n useCdn: true,\n },\n )\n .then(({syncTags}) => {\n if (controller.signal.aborted) return\n if (!Array.isArray(syncTags)) {\n throw new TypeError('syncTags is not an array', {cause: {syncTags, documentId}})\n }\n if (syncTags.length !== 1) {\n throw new TypeError('syncTags is not an array of exactly one item', {\n cause: {syncTags, documentId},\n })\n }\n setDocumentIdTag(documentId, syncTags[0]!)\n localStorage.setItem(localStorageKey, syncTags[0]!)\n return\n })\n return () => controller.abort()\n }","[documentId, client, dataset, setDocumentIdTag, projectId]","{\n projectId,\n dataset,\n slug,\n client,\n setDocumentSlugTag,\n}: {\n projectId: string\n dataset: string\n slug: string\n client: SanityClient\n setDocumentSlugTag: (slug: string, tag: string | null) => void\n}","() => {\n const localStorageKey = `debug-live-sync-tags-resolved-document-slug-${projectId}-${dataset}-${slug}`\n const localStorageValue = localStorage.getItem(localStorageKey)\n if (localStorageValue && typeof localStorageValue === 'string') {\n setDocumentSlugTag(slug, localStorageValue)\n return undefined\n }\n const controller = new AbortController()\n void client\n .fetch(\n `count(*[slug.current == $slug])`,\n {slug},\n {\n filterResponse: false,\n returnQuery: false,\n resultSourceMap: false,\n stega: false,\n useCdn: true,\n },\n )\n .then(({syncTags}) => {\n if (controller.signal.aborted) return\n if (!Array.isArray(syncTags)) {\n throw new TypeError('syncTags is not an array', {cause: {syncTags, slug}})\n }\n if (syncTags.length !== 1) {\n throw new TypeError('syncTags is not an array of exactly one item', {\n cause: {syncTags, slug},\n })\n }\n setDocumentSlugTag(slug, syncTags[0]!)\n localStorage.setItem(localStorageKey, syncTags[0]!)\n return\n })\n return () => controller.abort()\n }","[slug, client, dataset, setDocumentSlugTag, projectId]"],"sources":["../src/components/Tool.tsx"],"sourcesContent":["import {type LiveEvent} from '@sanity/client'\nimport {Checkbox, Flex, Label, Stack} from '@sanity/ui'\nimport {Activity, Fragment, startTransition, useEffect, useState} from 'react'\nimport {useClient, useProjectId, useDataset, type SanityClient} from 'sanity'\nimport {styled} from 'styled-components'\n\nconst Layout = styled(Flex)`\n height: 100%;\n width: 100%;\n`\n\nconst Sidebar = styled(Stack)`\n flex-shrink: 0;\n width: 200px;\n padding: 16px;\n border-right: 1px solid var(--card-border-color, #ddd);\n overflow-y: auto;\n`\n\nconst Main = styled.div`\n flex: 1;\n min-width: 0;\n overflow: auto;\n`\n\nconst StyledTable = styled.table`\n width: 100%;\n border-collapse: collapse;\n font-family: monospace;\n font-size: 13px;\n\n thead {\n position: sticky;\n top: 0;\n z-index: 1;\n background: var(--card-bg-color, #fff);\n box-shadow: inset 0 -2px 0 var(--card-border-color, #ddd);\n }\n\n th,\n td {\n padding: 4px 8px;\n text-align: left;\n vertical-align: top;\n white-space: nowrap;\n }\n\n th {\n font-weight: 600;\n }\n`\n\nconst TagGrid = styled.div`\n display: grid;\n grid-template-columns: auto 1fr;\n gap: 0 12px;\n`\n\nfunction EventTable({\n events,\n findResolvedTag,\n showTimestamp,\n showEventId,\n}: {\n events: Map<string, LiveEvent & {timestamp: string}>\n findResolvedTag: (tag: string) => string\n showTimestamp: boolean\n showEventId: boolean\n}) {\n const rows = Array.from(events.values())\n if (rows.length === 0) return null\n\n return (\n <StyledTable>\n <thead>\n <tr>\n {showTimestamp && <th>time</th>}\n {showEventId && <th>id</th>}\n <th>type</th>\n <th>tags</th>\n </tr>\n </thead>\n <tbody>\n {rows.map((event, i) => {\n const tags = 'tags' in event ? event.tags : []\n const time = new Date(event.timestamp).toLocaleTimeString()\n const eventId = 'id' in event ? event.id : null\n const bg =\n i % 2 !== 0\n ? 'color-mix(in srgb, var(--card-border-color, #ddd) 15%, transparent)'\n : undefined\n return (\n <tr key={event.timestamp} style={{background: bg}}>\n {showTimestamp && <td>{time}</td>}\n {showEventId && <td>{eventId}</td>}\n <td style={{fontWeight: 600}}>{event.type}</td>\n <td style={{whiteSpace: 'normal'}}>\n {tags.length > 0 && (\n <TagGrid>\n {tags.map((tag) => (\n <Fragment key={tag}>\n <span title={tag}>{tag}</span>\n <span>{findResolvedTag(tag)}</span>\n </Fragment>\n ))}\n </TagGrid>\n )}\n </td>\n </tr>\n )\n })}\n </tbody>\n </StyledTable>\n )\n}\n\nexport default function Tool() {\n const client = useClient({apiVersion: '2026-03-17'})\n const projectId = useProjectId()\n const dataset = useDataset()\n const [liveEvents, setLiveEvents] = useState<Map<string, LiveEvent & {timestamp: string}>>(\n () => new Map(),\n )\n const [liveEventsIncludingAllDocuments, setLiveEventsIncludingAllDocuments] = useState<\n Map<string, LiveEvent & {timestamp: string}>\n >(() => new Map())\n\n useEffect(() => {\n const subscription = client.live.events({tag: 'debug-live-sync-tags'}).subscribe({\n next: (event) => {\n startTransition(() =>\n setLiveEvents((prev) => {\n const next = new Map(prev)\n next.set('id' in event ? event.id : new Date().toJSON(), {\n ...event,\n timestamp: new Date().toJSON(),\n })\n return next\n }),\n )\n },\n error: console.error,\n })\n return () => subscription.unsubscribe()\n }, [client])\n\n useEffect(() => {\n const subscription = client.live\n .events({tag: 'debug-live-sync-tags', includeDrafts: true})\n .subscribe({\n next: (event) => {\n startTransition(() =>\n setLiveEventsIncludingAllDocuments((prev) => {\n const next = new Map(prev)\n next.set('id' in event ? event.id : new Date().toJSON(), {\n ...event,\n timestamp: new Date().toJSON(),\n })\n return next\n }),\n )\n },\n error: console.error,\n })\n return () => subscription.unsubscribe()\n }, [client])\n\n const [syncTagForEverything, setSyncTagForEverything] = useState<string | null>(null)\n const [allDocumentTypes, setAllDocumentTypes] = useState<Map<string, string | null>>(\n () => new Map(),\n )\n useEffect(() => {\n const controller = new AbortController()\n client\n .fetch<string[]>(\n `array::unique(*._type)`,\n {},\n {\n signal: controller.signal,\n returnQuery: false,\n tag: 'debug-live-sync-tags',\n filterResponse: false,\n },\n )\n .then(({result, syncTags}) => {\n if (controller.signal.aborted) return\n setSyncTagForEverything(syncTags?.[0] ?? null)\n\n setAllDocumentTypes((prev) => {\n const next = new Map(prev)\n for (const type of result) {\n if (!next.has(type)) {\n next.set(type, null)\n }\n }\n return next\n })\n return\n })\n .catch(console.error)\n return () => controller.abort()\n }, [client])\n\n const [whichList, setWhichList] = useState<'liveEvents' | 'liveEventsIncludingAllDocuments'>(\n 'liveEvents',\n )\n const [showTimestamp, setShowTimestamp] = useState(true)\n const [showEventId, setShowEventId] = useState(false)\n\n const unknownDocumentTypes: string[] = []\n for (const [documentType, resolvedDocumentType] of allDocumentTypes.entries()) {\n if (resolvedDocumentType === null) {\n unknownDocumentTypes.push(documentType)\n }\n }\n const setDocumentType = (documentType: string, resolvedDocumentType: string) =>\n startTransition(() =>\n setAllDocumentTypes((prev) => {\n const next = new Map(prev)\n next.set(documentType, resolvedDocumentType)\n return next\n }),\n )\n function findResolvedTag(tag: string): string {\n if (tag === syncTagForEverything) {\n return 'any:*'\n }\n for (const [documentType, resolvedDocumentType] of allDocumentTypes.entries()) {\n if (resolvedDocumentType === tag) {\n return `type:${documentType}`\n }\n }\n for (const [documentId, resolvedDocumentId] of documentIdToTagMap.entries()) {\n if (resolvedDocumentId === tag) {\n return `id:${documentId}`\n }\n }\n for (const [slug, resolvedSlug] of documentSlugToTagMap.entries()) {\n if (resolvedSlug === tag) {\n return `slug:${slug}`\n }\n }\n return tag\n }\n\n const allDocumentTypesArray = Array.from(allDocumentTypes.keys())\n const [documentIdToTagMap, setDocumentIdToTagMap] = useState<Map<string, string | null>>(\n () => new Map(),\n )\n const unknownDocumentIds: string[] = []\n for (const [documentId, tag] of documentIdToTagMap.entries()) {\n if (tag === null) {\n unknownDocumentIds.push(documentId)\n }\n }\n const setDocumentIdTag = (documentId: string, tag: string | null) =>\n startTransition(() =>\n setDocumentIdToTagMap((prev) => {\n const next = new Map(prev)\n next.set(documentId, tag)\n return next\n }),\n )\n\n const [documentSlugToTagMap, setDocumentSlugToTagMap] = useState<Map<string, string | null>>(\n () => new Map(),\n )\n const unknownDocumentSlugs: string[] = []\n for (const [slug, tag] of documentSlugToTagMap.entries()) {\n if (tag === null) {\n unknownDocumentSlugs.push(slug)\n }\n }\n const setDocumentSlugTag = (slug: string, tag: string | null) =>\n startTransition(() =>\n setDocumentSlugToTagMap((prev) => {\n const next = new Map(prev)\n next.set(slug, tag)\n return next\n }),\n )\n\n useEffect(() => {\n if (allDocumentTypesArray.length === 0) {\n return undefined\n }\n\n const listener = client\n .listen(\n '*[_type in $type]',\n {type: allDocumentTypesArray},\n {\n events: ['mutation'],\n includePreviousRevision: false,\n includeResult: true,\n includeAllVersions: true,\n includeMutations: false,\n tag: 'debug-live-sync-tags',\n },\n )\n .subscribe({\n next: (event) => {\n startTransition(() => {\n setDocumentIdToTagMap((prev) => {\n if (prev.has(event.documentId)) {\n return prev\n }\n const next = new Map(prev)\n next.set(event.documentId, null)\n return next\n })\n\n const slugField = event.result?.['slug']\n const slug =\n slugField &&\n typeof slugField === 'object' &&\n 'current' in slugField &&\n typeof slugField.current === 'string'\n ? slugField.current\n : null\n if (slug) {\n setDocumentSlugToTagMap((prev) => {\n if (prev.has(slug)) {\n return prev\n }\n const next = new Map(prev)\n next.set(slug, null)\n return next\n })\n }\n })\n },\n error: console.error,\n })\n return () => listener.unsubscribe()\n }, [client, allDocumentTypesArray])\n\n return (\n <Layout>\n <Sidebar gap={4}>\n <Flex as=\"label\" align=\"center\" gap={2}>\n <Checkbox\n checked={whichList === 'liveEventsIncludingAllDocuments'}\n onChange={() =>\n setWhichList((prev) =>\n prev === 'liveEvents' ? 'liveEventsIncludingAllDocuments' : 'liveEvents',\n )\n }\n />\n <Label size={1}>Include all documents</Label>\n </Flex>\n <Flex as=\"label\" align=\"center\" gap={2}>\n <Checkbox checked={showTimestamp} onChange={() => setShowTimestamp((prev) => !prev)} />\n <Label size={1}>Show timestamp</Label>\n </Flex>\n <Flex as=\"label\" align=\"center\" gap={2}>\n <Checkbox checked={showEventId} onChange={() => setShowEventId((prev) => !prev)} />\n <Label size={1}>Show event ID</Label>\n </Flex>\n </Sidebar>\n <Main>\n <Activity mode={whichList === 'liveEvents' ? 'visible' : 'hidden'}>\n <EventTable\n events={liveEvents}\n findResolvedTag={findResolvedTag}\n showTimestamp={showTimestamp}\n showEventId={showEventId}\n />\n </Activity>\n <Activity mode={whichList === 'liveEventsIncludingAllDocuments' ? 'visible' : 'hidden'}>\n <EventTable\n events={liveEventsIncludingAllDocuments}\n findResolvedTag={findResolvedTag}\n showTimestamp={showTimestamp}\n showEventId={showEventId}\n />\n </Activity>\n </Main>\n {unknownDocumentTypes.map((unknownDocumentType) => (\n <ResolveDocumentType\n key={unknownDocumentType}\n projectId={projectId}\n dataset={dataset}\n documentType={unknownDocumentType}\n client={client}\n setDocumentType={setDocumentType}\n />\n ))}\n {unknownDocumentIds.map((unknownDocumentId) => (\n <ResolveDocumentId\n key={unknownDocumentId}\n projectId={projectId}\n dataset={dataset}\n documentId={unknownDocumentId}\n client={client}\n setDocumentIdTag={setDocumentIdTag}\n />\n ))}\n {unknownDocumentSlugs.map((unknownSlug) => (\n <ResolveDocumentSlug\n key={unknownSlug}\n projectId={projectId}\n dataset={dataset}\n slug={unknownSlug}\n client={client}\n setDocumentSlugTag={setDocumentSlugTag}\n />\n ))}\n </Layout>\n )\n}\n\nfunction ResolveDocumentType({\n projectId,\n dataset,\n documentType,\n client,\n setDocumentType,\n}: {\n projectId: string\n dataset: string\n documentType: string\n client: SanityClient\n setDocumentType: (documentType: string, resolvedDocumentType: string) => void\n}) {\n useEffect(() => {\n const localStorageKey = `debug-live-sync-tags-resolved-document-type-${projectId}-${dataset}-${documentType}`\n const localStorageValue = localStorage.getItem(localStorageKey)\n if (localStorageValue && typeof localStorageValue === 'string') {\n setDocumentType(documentType, localStorageValue)\n return undefined\n }\n\n const controller = new AbortController()\n void client\n .fetch(\n `count(*[_type == $type])`,\n {type: documentType},\n {\n filterResponse: false,\n perspective: 'published',\n returnQuery: false,\n resultSourceMap: false,\n stega: false,\n useCdn: true,\n },\n )\n .then(({syncTags}) => {\n if (controller.signal.aborted) return\n if (!Array.isArray(syncTags)) {\n throw new TypeError('syncTags is not an array', {cause: {syncTags, documentType}})\n }\n if (syncTags.length !== 1) {\n throw new TypeError('syncTags is not an array of exactly one item', {\n cause: {syncTags, documentType},\n })\n }\n setDocumentType(documentType, syncTags[0]!)\n localStorage.setItem(localStorageKey, syncTags[0]!)\n return\n })\n return () => controller.abort()\n }, [documentType, client, dataset, setDocumentType, projectId])\n\n return null\n}\n\nfunction ResolveDocumentId({\n projectId,\n dataset,\n documentId,\n client,\n setDocumentIdTag,\n}: {\n projectId: string\n dataset: string\n documentId: string\n client: SanityClient\n setDocumentIdTag: (documentId: string, tag: string | null) => void\n}) {\n useEffect(() => {\n const localStorageKey = `debug-live-sync-tags-resolved-document-id-${projectId}-${dataset}-${documentId}`\n const localStorageValue = localStorage.getItem(localStorageKey)\n if (localStorageValue && typeof localStorageValue === 'string') {\n setDocumentIdTag(documentId, localStorageValue)\n return undefined\n }\n const controller = new AbortController()\n void client\n .fetch(\n `count(*[_id == $id])`,\n {id: documentId},\n {\n filterResponse: false,\n // perspective: 'published',\n returnQuery: false,\n resultSourceMap: false,\n stega: false,\n useCdn: true,\n },\n )\n .then(({syncTags}) => {\n if (controller.signal.aborted) return\n if (!Array.isArray(syncTags)) {\n throw new TypeError('syncTags is not an array', {cause: {syncTags, documentId}})\n }\n if (syncTags.length !== 1) {\n throw new TypeError('syncTags is not an array of exactly one item', {\n cause: {syncTags, documentId},\n })\n }\n setDocumentIdTag(documentId, syncTags[0]!)\n localStorage.setItem(localStorageKey, syncTags[0]!)\n return\n })\n return () => controller.abort()\n }, [documentId, client, dataset, setDocumentIdTag, projectId])\n return null\n}\n\nfunction ResolveDocumentSlug({\n projectId,\n dataset,\n slug,\n client,\n setDocumentSlugTag,\n}: {\n projectId: string\n dataset: string\n slug: string\n client: SanityClient\n setDocumentSlugTag: (slug: string, tag: string | null) => void\n}) {\n useEffect(() => {\n const localStorageKey = `debug-live-sync-tags-resolved-document-slug-${projectId}-${dataset}-${slug}`\n const localStorageValue = localStorage.getItem(localStorageKey)\n if (localStorageValue && typeof localStorageValue === 'string') {\n setDocumentSlugTag(slug, localStorageValue)\n return undefined\n }\n const controller = new AbortController()\n void client\n .fetch(\n `count(*[slug.current == $slug])`,\n {slug},\n {\n filterResponse: false,\n returnQuery: false,\n resultSourceMap: false,\n stega: false,\n useCdn: true,\n },\n )\n .then(({syncTags}) => {\n if (controller.signal.aborted) return\n if (!Array.isArray(syncTags)) {\n throw new TypeError('syncTags is not an array', {cause: {syncTags, slug}})\n }\n if (syncTags.length !== 1) {\n throw new TypeError('syncTags is not an array of exactly one item', {\n cause: {syncTags, slug},\n })\n }\n setDocumentSlugTag(slug, syncTags[0]!)\n localStorage.setItem(localStorageKey, syncTags[0]!)\n return\n })\n return () => controller.abort()\n }, [slug, client, dataset, setDocumentSlugTag, projectId])\n return null\n}\n"],"mappings":"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"}
\ No newline at end of file