@kotao/storefront 0.2.4 → 0.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/README.md +50 -2
  2. package/dist/bridge-ZKbKqgFd.d.ts +239 -0
  3. package/dist/cart-documents-BLavRDiu.d.ts +89 -0
  4. package/dist/cart-documents.d.ts +1 -2
  5. package/dist/cart-documents.js +1 -1
  6. package/dist/{chunk-M7BPQ54D.js → chunk-2MRB6SMP.js} +4 -3
  7. package/dist/chunk-2MRB6SMP.js.map +1 -0
  8. package/dist/chunk-CKGI3Y7L.js +19 -0
  9. package/dist/chunk-CKGI3Y7L.js.map +1 -0
  10. package/dist/{chunk-4TEFGD42.js → chunk-EG34HLSX.js} +209 -162
  11. package/dist/chunk-EG34HLSX.js.map +1 -0
  12. package/dist/chunk-O6YZEY7X.js +1382 -0
  13. package/dist/chunk-O6YZEY7X.js.map +1 -0
  14. package/dist/{chunk-7MTCGXIG.js → chunk-R4N565GX.js} +8 -4
  15. package/dist/chunk-R4N565GX.js.map +1 -0
  16. package/dist/{chunk-XMTWFJCZ.js → chunk-RFM27BKZ.js} +31 -7
  17. package/dist/chunk-RFM27BKZ.js.map +1 -0
  18. package/dist/{chunk-MYDKIJRH.js → chunk-SVMYFYIA.js} +2 -2
  19. package/dist/{chunk-MYDKIJRH.js.map → chunk-SVMYFYIA.js.map} +1 -1
  20. package/dist/{chunk-H3D7BAOL.js → chunk-VOTBNOWH.js} +21 -3
  21. package/dist/chunk-VOTBNOWH.js.map +1 -0
  22. package/dist/{chunk-PXVDVUFX.js → chunk-W74FGUZH.js} +10 -3
  23. package/dist/chunk-W74FGUZH.js.map +1 -0
  24. package/dist/{chunk-2IWNUDSZ.js → chunk-WNXI3MPM.js} +2 -2
  25. package/dist/chunk-WNXI3MPM.js.map +1 -0
  26. package/dist/chunk-XXNCFWXT.js +2118 -0
  27. package/dist/chunk-XXNCFWXT.js.map +1 -0
  28. package/dist/{client-bsiNPHBi.d.ts → client-CwOPPpFF.d.ts} +11 -1
  29. package/dist/{createCartHandler-C4RrPwSG.d.ts → createCartHandler-7DdKB-GF.d.ts} +1 -1
  30. package/dist/custom-css-Bl7Ur3-H.d.ts +6 -0
  31. package/dist/editor.d.ts +57 -104
  32. package/dist/editor.js +270 -1
  33. package/dist/editor.js.map +1 -1
  34. package/dist/events-react.d.ts +1 -1
  35. package/dist/events-react.js +1 -1
  36. package/dist/events.d.ts +3 -3
  37. package/dist/events.js +1 -1
  38. package/dist/{fetch-M3Y-fQrW.d.ts → fetch-Bq_cc8_G.d.ts} +5 -0
  39. package/dist/hydrogen-Bu7k0kE4.d.ts +259 -0
  40. package/dist/index.d.ts +74 -51
  41. package/dist/index.js +19 -15
  42. package/dist/index.js.map +1 -1
  43. package/dist/react-router.d.ts +30 -9
  44. package/dist/react-router.js +16 -7
  45. package/dist/react-router.js.map +1 -1
  46. package/dist/react.d.ts +79 -11
  47. package/dist/react.js +279 -10
  48. package/dist/react.js.map +1 -1
  49. package/dist/{routing-sEonP93J.d.ts → routing-Bz3Cg0BW.d.ts} +36 -6
  50. package/dist/seo.d.ts +7 -4
  51. package/dist/seo.js +2 -2
  52. package/dist/settings.d.ts +14 -4
  53. package/dist/settings.js +2 -2
  54. package/dist/{shop-BJSvtmnV.d.ts → shop-CnrnSAJw.d.ts} +33 -6
  55. package/dist/{store-CtCWHI8H.d.ts → store-DO08fzJi.d.ts} +1 -1
  56. package/dist/storefront-api-types.d.ts +12 -0
  57. package/dist/{types-BDhHWZsP.d.ts → types-BkY0yET-.d.ts} +3 -3
  58. package/dist/{types-bcbQzx87.d.ts → types-DZX8ScsJ.d.ts} +2 -0
  59. package/package.json +4 -4
  60. package/dist/cart-documents-CwwRTvm8.d.ts +0 -21
  61. package/dist/chunk-2IWNUDSZ.js.map +0 -1
  62. package/dist/chunk-4TEFGD42.js.map +0 -1
  63. package/dist/chunk-7MTCGXIG.js.map +0 -1
  64. package/dist/chunk-H3D7BAOL.js.map +0 -1
  65. package/dist/chunk-M7BPQ54D.js.map +0 -1
  66. package/dist/chunk-PXVDVUFX.js.map +0 -1
  67. package/dist/chunk-PXZ737N3.js +0 -439
  68. package/dist/chunk-PXZ737N3.js.map +0 -1
  69. package/dist/chunk-XMTWFJCZ.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/editor/hydrogen.ts"],"names":["control","override"],"mappings":"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","file":"chunk-XXNCFWXT.js","sourcesContent":["import {\n HYDROGEN_EDITOR_MANIFEST_LIMITS,\n HydrogenBreakpointSchema,\n HydrogenComponentDefinitionSchema,\n HydrogenContentBindingSchema,\n HydrogenDocumentSchema,\n HydrogenEditCapabilitySchema,\n HydrogenEditorManifestSchema,\n HydrogenInstanceSchema,\n HydrogenInstanceStylesSchema,\n HydrogenSourceLocationSchema,\n HydrogenUnsupportedFindingSchema,\n type HydrogenComponentDefinition,\n type HydrogenBreakpoint,\n type HydrogenContentBinding,\n type HydrogenDocument,\n type HydrogenEditCapability,\n type HydrogenEditorManifest,\n type HydrogenInstance,\n type HydrogenInstanceStyles,\n type HydrogenSourceLocation,\n type HydrogenUnsupportedFinding,\n} from '@kotao/storefront-contracts'\n\nimport type {\n StorefrontEditorMessageEvent,\n StorefrontEditorMessageSource,\n StorefrontEditorMessageTarget,\n} from './bridge'\n\nconst HOST_SOURCE = 'kotao:workspaces-hydrogen-editor'\nconst PREVIEW_SOURCE = 'kotao:storefront-hydrogen-preview'\nconst SHA_1 = /^[a-f0-9]{40}$/\nconst SHA_256 = /^[a-f0-9]{64}$/\nconst OPAQUE_ID = /^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/\nconst CHANNEL_NONCE = /^[A-Za-z0-9_-]{32,256}$/\nconst OPERATION_FAILURE_CODES = new Set<HydrogenEditorOperationFailureCode>([\n 'CAPABILITY_DENIED',\n 'COMPONENT_NOT_FOUND',\n 'DOCUMENT_MISMATCH',\n 'DUPLICATE_OPERATION_CONFLICT',\n 'INSTANCE_NOT_FOUND',\n 'INVALID_OPERATION',\n 'OPERATION_LIMIT_EXCEEDED',\n 'REVISION_MISMATCH',\n 'SLOT_CONSTRAINT',\n 'UNSUPPORTED_BOUNDARY',\n])\nconst PROTOCOL_FAILURE_CODES = new Set<HydrogenEditorProtocolFailureCode>([\n 'AUTH_CONTEXT_MISMATCH',\n 'BUFFER_LIMIT_EXCEEDED',\n 'DUPLICATE_MESSAGE_CONFLICT',\n 'MESSAGE_EXPIRED',\n 'MESSAGE_TOO_DEEP',\n 'MESSAGE_TOO_LARGE',\n 'SEQUENCE_STALE',\n 'UNKNOWN_MESSAGE',\n 'UNSUPPORTED_PROTOCOL',\n])\n\nexport const HYDROGEN_EDITOR_PROTOCOL_VERSION = 1 as const\n\nexport const HYDROGEN_EDITOR_BRIDGE_LIMITS = {\n maxMessageBytes: 131_072,\n maxMessageDepth: 32,\n maxBufferedMessages: 100,\n maxDraftOperations: 1_000,\n maxProcessedMessages: 2_048,\n} as const\n\nexport type HydrogenEditorReconciliationReason = 'route' | 'loader' | 'suspense' | 'hmr'\n\nexport type HydrogenEditorOperationFailureCode =\n | 'CAPABILITY_DENIED'\n | 'COMPONENT_NOT_FOUND'\n | 'DOCUMENT_MISMATCH'\n | 'DUPLICATE_OPERATION_CONFLICT'\n | 'INSTANCE_NOT_FOUND'\n | 'INVALID_OPERATION'\n | 'OPERATION_LIMIT_EXCEEDED'\n | 'REVISION_MISMATCH'\n | 'SLOT_CONSTRAINT'\n | 'UNSUPPORTED_BOUNDARY'\n\nexport type HydrogenEditorProtocolFailureCode =\n | 'AUTH_CONTEXT_MISMATCH'\n | 'BUFFER_LIMIT_EXCEEDED'\n | 'DUPLICATE_MESSAGE_CONFLICT'\n | 'MESSAGE_EXPIRED'\n | 'MESSAGE_TOO_DEEP'\n | 'MESSAGE_TOO_LARGE'\n | 'SEQUENCE_STALE'\n | 'UNKNOWN_MESSAGE'\n | 'UNSUPPORTED_PROTOCOL'\n\nexport interface HydrogenEditorSecurityContext {\n readonly sessionId: string\n readonly baseSha: string\n readonly manifestHash: string\n readonly channelNonce: string\n /**\n * A short-lived, audience-bound token minted by the trusted Web module. The bridge compares the\n * exact opaque token and expiry; it never parses claims or accepts a token from a message as\n * authority.\n */\n readonly previewToken: string\n readonly expiresAt: number\n}\n\nexport interface HydrogenEditorOperationBase {\n readonly operationId: string\n readonly revision: number\n}\n\nexport type HydrogenEditorPreviewOperation =\n | (HydrogenEditorOperationBase & {\n readonly type: 'prop.patch'\n readonly instanceId: string\n readonly propName: string\n readonly binding: HydrogenContentBinding\n })\n | (HydrogenEditorOperationBase & {\n readonly type: 'styles.patch'\n readonly instanceId: string\n readonly styles: HydrogenInstanceStyles\n })\n | (HydrogenEditorOperationBase & {\n readonly type: 'variant.set'\n readonly instanceId: string\n readonly variantId: string | null\n })\n | (HydrogenEditorOperationBase & {\n readonly type: 'slot.insert'\n readonly parentInstanceId: string\n readonly slotId: string\n readonly index: number\n readonly instance: Omit<HydrogenInstance, 'parent'>\n })\n | (HydrogenEditorOperationBase & {\n readonly type: 'instance.move'\n readonly instanceId: string\n readonly parentInstanceId: string\n readonly slotId: string\n readonly index: number\n })\n | (HydrogenEditorOperationBase & {\n readonly type: 'instance.remove'\n readonly instanceId: string\n })\n\nexport type HydrogenEditorCanvasIntent =\n | {\n readonly type: 'instance.move'\n readonly instanceId: string\n readonly parentInstanceId: string\n readonly slotId: string\n readonly index: number\n }\n | {\n readonly type: 'prop.inline'\n readonly instanceId: string\n readonly propName: string\n readonly value: string\n }\n | {\n readonly type: 'styles.adjust'\n readonly instanceId: string\n readonly controlId: string\n readonly value: number\n readonly breakpointId?: string\n }\n | {\n readonly type: 'slot.insert.request'\n readonly parentInstanceId: string\n readonly slotId: string\n readonly index: number\n }\n\nexport interface HydrogenEditorOperationFailure {\n readonly code: HydrogenEditorOperationFailureCode\n readonly message: string\n readonly instanceId?: string\n readonly capability?: HydrogenEditCapability\n readonly source?: HydrogenSourceLocation\n}\n\nexport type HydrogenEditorApplyResult =\n | {\n readonly status: 'applied' | 'duplicate'\n readonly revision: number\n readonly operationId: string\n }\n | {\n readonly status: 'rejected'\n readonly revision: number\n readonly operationId: string\n readonly failure: HydrogenEditorOperationFailure\n }\n\nexport type HydrogenEditorCanvasDispatchResult =\n | {\n readonly status: 'operation'\n readonly intent: Exclude<HydrogenEditorCanvasIntent, { readonly type: 'slot.insert.request' }>\n readonly operation: HydrogenEditorPreviewOperation\n readonly result: HydrogenEditorApplyResult\n }\n | {\n readonly status: 'insert-requested'\n readonly intent: Extract<HydrogenEditorCanvasIntent, { readonly type: 'slot.insert.request' }>\n readonly revision: number\n }\n | {\n readonly status: 'rejected'\n readonly failure: HydrogenEditorOperationFailure\n readonly revision: number\n }\n\nexport interface HydrogenEditorCapabilityReason {\n readonly code: string\n readonly severity: 'warning' | 'blocking'\n readonly message: string\n readonly capability?: HydrogenEditCapability\n readonly source?: HydrogenSourceLocation\n}\n\nexport interface HydrogenEditorInstanceSnapshot {\n readonly instance: HydrogenInstance\n readonly component: HydrogenComponentDefinition\n readonly childInstanceIds: Readonly<Record<string, readonly string[]>>\n readonly resolvedProps: Readonly<Record<string, unknown>>\n readonly mounted: boolean\n readonly editable: boolean\n readonly capabilityReasons: readonly HydrogenEditorCapabilityReason[]\n}\n\nexport interface HydrogenEditorPreviewSnapshot {\n readonly document: HydrogenDocument\n readonly route?: string\n readonly revision: number\n readonly selectedInstanceId: string | null\n readonly hoveredInstanceId: string | null\n readonly selectionStatus: 'active' | 'out-of-route' | 'none'\n readonly instanceIds: readonly string[]\n readonly mountedInstanceIds: readonly string[]\n}\n\nexport interface HydrogenEditorReadyInstance {\n readonly instance: HydrogenInstance\n readonly mounted: boolean\n readonly editable: boolean\n readonly capabilityReasons: readonly HydrogenEditorCapabilityReason[]\n}\n\nexport interface HydrogenEditorReadyDocument {\n readonly protocolVersion: typeof HYDROGEN_EDITOR_PROTOCOL_VERSION\n readonly document: HydrogenDocument\n readonly breakpoints: readonly HydrogenBreakpoint[]\n readonly route?: string\n readonly revision: number\n readonly selectedInstanceId: string | null\n readonly hoveredInstanceId: string | null\n readonly selectionStatus: HydrogenEditorPreviewSnapshot['selectionStatus']\n readonly components: readonly HydrogenComponentDefinition[]\n readonly instances: readonly HydrogenEditorReadyInstance[]\n readonly unsupportedFindings: readonly HydrogenUnsupportedFinding[]\n}\n\nexport interface HydrogenEditorReconciliation {\n readonly reason: HydrogenEditorReconciliationReason\n readonly documentId: string\n readonly route?: string\n readonly revision: number\n readonly selectedInstanceId: string | null\n readonly selectionStatus: HydrogenEditorPreviewSnapshot['selectionStatus']\n readonly mountedInstanceIds: readonly string[]\n}\n\nexport interface HydrogenEditorProtocolFailure {\n readonly code: HydrogenEditorProtocolFailureCode\n readonly message: string\n}\n\nexport interface HydrogenEditorPreviewStore {\n getSnapshot(): HydrogenEditorPreviewSnapshot\n getInstanceSnapshot(instanceId: string): HydrogenEditorInstanceSnapshot | null\n subscribe(listener: () => void): () => void\n subscribeInstance(instanceId: string, listener: () => void): () => void\n}\n\nexport interface HydrogenEditorPreviewRuntime {\n readonly manifest: HydrogenEditorManifest\n readonly store: HydrogenEditorPreviewStore\n ready(): void\n reconcile(documentId: string, reason: HydrogenEditorReconciliationReason, route?: string): void\n registerInstance(instanceId: string): () => void\n hoverInstance(instanceId: string | null): void\n selectInstance(instanceId: string | null): void\n dispatchCanvasIntent(intent: unknown): HydrogenEditorCanvasDispatchResult\n dispose(): void\n}\n\nexport interface CreateHydrogenEditorPreviewRuntimeArgs {\n readonly adminOrigin: string\n readonly security: HydrogenEditorSecurityContext\n readonly manifest: HydrogenEditorManifest\n readonly documentId: string\n readonly route?: string\n readonly transport: StorefrontEditorMessageSource\n readonly target: StorefrontEditorMessageTarget\n readonly now?: () => number\n readonly onProtocolFailure?: (failure: HydrogenEditorProtocolFailure) => void\n}\n\nexport interface CreateHydrogenEditorSourceProjectionArgs {\n readonly manifest: HydrogenEditorManifest\n readonly documentId: string\n readonly route?: string\n readonly revision?: number\n readonly selectedInstanceId?: string | null\n}\n\nexport interface HydrogenEditorHostBridge {\n requestReady(): void\n hoverInstance(instanceId: string | null): void\n selectInstance(instanceId: string | null): void\n applyOperation(operation: HydrogenEditorPreviewOperation): void\n dispose(): void\n}\n\nexport interface CreateHydrogenEditorHostBridgeArgs {\n readonly previewOrigin: string\n readonly security: HydrogenEditorSecurityContext\n readonly manifest: HydrogenEditorManifest\n readonly transport: StorefrontEditorMessageSource\n readonly target: StorefrontEditorMessageTarget\n readonly resolveTarget?: () => StorefrontEditorMessageTarget | null\n readonly now?: () => number\n readonly onReady?: (ready: HydrogenEditorReadyDocument) => void\n readonly onSelectInstance?: (instanceId: string | null) => void\n readonly onHoverInstance?: (instanceId: string | null) => void\n readonly onOperationResult?: (result: HydrogenEditorApplyResult) => void\n readonly onCanvasOperation?: (\n intent: Exclude<HydrogenEditorCanvasIntent, { readonly type: 'slot.insert.request' }>,\n operation: HydrogenEditorPreviewOperation,\n result: HydrogenEditorApplyResult,\n ) => void\n readonly onCanvasInsertRequest?: (\n request: Extract<HydrogenEditorCanvasIntent, { readonly type: 'slot.insert.request' }>,\n ) => void\n readonly onReconcile?: (reconciliation: HydrogenEditorReconciliation) => void\n readonly onProtocolFailure?: (failure: HydrogenEditorProtocolFailure) => void\n}\n\ninterface SecureEnvelope {\n readonly source: typeof HOST_SOURCE | typeof PREVIEW_SOURCE\n readonly protocolVersion: typeof HYDROGEN_EDITOR_PROTOCOL_VERSION\n readonly sessionId: string\n readonly baseSha: string\n readonly manifestHash: string\n readonly channelNonce: string\n readonly previewToken: string\n readonly messageId: string\n readonly sequence: number\n readonly type: string\n readonly payload?: unknown\n}\n\ninterface MutableEnvelopeState {\n sequence: number\n readonly messages: Map<string, string>\n}\n\ninterface StoreMutation {\n readonly changedInstanceIds: ReadonlySet<string>\n readonly result: HydrogenEditorApplyResult\n}\n\nexport class HydrogenEditorConfigurationError extends Error {\n constructor(message: string) {\n super(message)\n this.name = 'HydrogenEditorConfigurationError'\n }\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n\nfunction hasOnlyKeys(value: Record<string, unknown>, keys: readonly string[]): boolean {\n const allowed = new Set(keys)\n return Object.keys(value).every((key) => allowed.has(key))\n}\n\nfunction isOpaqueId(value: unknown): value is string {\n return typeof value === 'string' && OPAQUE_ID.test(value)\n}\n\nfunction isNonnegativeInteger(value: unknown): value is number {\n return typeof value === 'number' && Number.isSafeInteger(value) && value >= 0\n}\n\nfunction isPositiveInteger(value: unknown): value is number {\n return typeof value === 'number' && Number.isSafeInteger(value) && value > 0\n}\n\nfunction exactOrigin(value: string, label: string): string {\n try {\n const parsed = new URL(value)\n if (\n (parsed.protocol !== 'https:' && parsed.protocol !== 'http:') ||\n parsed.username !== '' ||\n parsed.password !== '' ||\n parsed.origin !== value ||\n parsed.pathname !== '/' ||\n parsed.search !== '' ||\n parsed.hash !== ''\n ) {\n throw new Error('not an exact origin')\n }\n return value\n } catch {\n throw new HydrogenEditorConfigurationError(`${label} must be an exact http(s) origin`)\n }\n}\n\nfunction validateSecurityContext(security: HydrogenEditorSecurityContext, now: number): void {\n if (!isOpaqueId(security.sessionId)) {\n throw new HydrogenEditorConfigurationError('sessionId must be a bounded opaque identifier')\n }\n if (!SHA_1.test(security.baseSha)) {\n throw new HydrogenEditorConfigurationError('baseSha must be a 40-character lowercase Git SHA')\n }\n if (!SHA_256.test(security.manifestHash)) {\n throw new HydrogenEditorConfigurationError('manifestHash must be a lowercase SHA-256 digest')\n }\n if (!CHANNEL_NONCE.test(security.channelNonce)) {\n throw new HydrogenEditorConfigurationError(\n 'channelNonce must be a 32..256 character base64url value',\n )\n }\n if (security.previewToken.length < 32 || security.previewToken.length > 4_096) {\n throw new HydrogenEditorConfigurationError('previewToken must contain 32..4096 characters')\n }\n if (!Number.isSafeInteger(security.expiresAt) || security.expiresAt <= now) {\n throw new HydrogenEditorConfigurationError('editor preview security context is expired')\n }\n}\n\nfunction jsonSignature(value: unknown): string | null {\n const ancestors = new Set<object>()\n const visit = (candidate: unknown, depth: number): boolean => {\n if (depth > HYDROGEN_EDITOR_BRIDGE_LIMITS.maxMessageDepth) return false\n if (\n candidate === null ||\n typeof candidate === 'string' ||\n typeof candidate === 'boolean' ||\n (typeof candidate === 'number' && Number.isFinite(candidate))\n ) {\n return true\n }\n if (typeof candidate !== 'object') return false\n if (ancestors.has(candidate)) return false\n ancestors.add(candidate)\n let valid: boolean\n if (Array.isArray(candidate)) {\n valid = candidate.every((item) => visit(item, depth + 1))\n } else {\n const record = candidate as Record<string, unknown>\n valid = Object.values(record).every((item) => visit(item, depth + 1))\n }\n ancestors.delete(candidate)\n return valid\n }\n\n if (!visit(value, 0)) return null\n try {\n return JSON.stringify(value)\n } catch {\n return null\n }\n}\n\nfunction protocolFailure(\n code: HydrogenEditorProtocolFailureCode,\n message: string,\n): HydrogenEditorProtocolFailure {\n return { code, message }\n}\n\nfunction parseProtocolFailure(value: unknown): HydrogenEditorProtocolFailure | null {\n return isRecord(value) &&\n typeof value.code === 'string' &&\n PROTOCOL_FAILURE_CODES.has(value.code as HydrogenEditorProtocolFailureCode) &&\n typeof value.message === 'string' &&\n value.message.length <= 2_048\n ? (value as unknown as HydrogenEditorProtocolFailure)\n : null\n}\n\nfunction operationFailure(\n code: HydrogenEditorOperationFailureCode,\n message: string,\n instance?: HydrogenInstance,\n capability?: HydrogenEditCapability,\n): HydrogenEditorOperationFailure {\n return {\n code,\n message,\n ...(instance !== undefined ? { instanceId: instance.instanceId, source: instance.source } : {}),\n ...(capability !== undefined ? { capability } : {}),\n }\n}\n\nfunction rejectOperation(\n operation: Pick<HydrogenEditorOperationBase, 'operationId'>,\n revision: number,\n failure: HydrogenEditorOperationFailure,\n): HydrogenEditorApplyResult {\n return {\n status: 'rejected',\n revision,\n operationId: operation.operationId,\n failure,\n }\n}\n\nfunction parseOperation(value: unknown): HydrogenEditorPreviewOperation | null {\n if (\n !isRecord(value) ||\n !isOpaqueId(value.operationId) ||\n !isPositiveInteger(value.revision) ||\n typeof value.type !== 'string'\n ) {\n return null\n }\n\n const base = {\n operationId: value.operationId,\n revision: value.revision,\n }\n\n switch (value.type) {\n case 'prop.patch': {\n if (\n !hasOnlyKeys(value, [\n 'type',\n 'operationId',\n 'revision',\n 'instanceId',\n 'propName',\n 'binding',\n ]) ||\n !isOpaqueId(value.instanceId) ||\n typeof value.propName !== 'string' ||\n value.propName.length === 0 ||\n value.propName.length > 128\n ) {\n return null\n }\n const binding = HydrogenContentBindingSchema.safeParse(value.binding)\n return binding.success\n ? {\n ...base,\n type: 'prop.patch',\n instanceId: value.instanceId,\n propName: value.propName,\n binding: binding.data,\n }\n : null\n }\n case 'styles.patch': {\n if (\n !hasOnlyKeys(value, ['type', 'operationId', 'revision', 'instanceId', 'styles']) ||\n !isOpaqueId(value.instanceId)\n ) {\n return null\n }\n const styles = HydrogenInstanceStylesSchema.safeParse(value.styles)\n return styles.success\n ? {\n ...base,\n type: 'styles.patch',\n instanceId: value.instanceId,\n styles: styles.data,\n }\n : null\n }\n case 'variant.set':\n return hasOnlyKeys(value, ['type', 'operationId', 'revision', 'instanceId', 'variantId']) &&\n isOpaqueId(value.instanceId) &&\n (value.variantId === null || isOpaqueId(value.variantId))\n ? {\n ...base,\n type: 'variant.set',\n instanceId: value.instanceId,\n variantId: value.variantId,\n }\n : null\n case 'slot.insert': {\n if (\n !hasOnlyKeys(value, [\n 'type',\n 'operationId',\n 'revision',\n 'parentInstanceId',\n 'slotId',\n 'index',\n 'instance',\n ]) ||\n !isOpaqueId(value.parentInstanceId) ||\n !isOpaqueId(value.slotId) ||\n !isNonnegativeInteger(value.index) ||\n !isRecord(value.instance)\n ) {\n return null\n }\n const parsed = HydrogenInstanceSchema.safeParse({ ...value.instance, parent: null })\n if (!parsed.success) return null\n const instance: Omit<HydrogenInstance, 'parent'> = {\n instanceId: parsed.data.instanceId,\n componentId: parsed.data.componentId,\n documentId: parsed.data.documentId,\n source: parsed.data.source,\n ...(parsed.data.variantId !== undefined ? { variantId: parsed.data.variantId } : {}),\n props: parsed.data.props,\n styles: parsed.data.styles,\n }\n return {\n ...base,\n type: 'slot.insert',\n parentInstanceId: value.parentInstanceId,\n slotId: value.slotId,\n index: value.index,\n instance,\n }\n }\n case 'instance.move':\n return hasOnlyKeys(value, [\n 'type',\n 'operationId',\n 'revision',\n 'instanceId',\n 'parentInstanceId',\n 'slotId',\n 'index',\n ]) &&\n isOpaqueId(value.instanceId) &&\n isOpaqueId(value.parentInstanceId) &&\n isOpaqueId(value.slotId) &&\n isNonnegativeInteger(value.index)\n ? {\n ...base,\n type: 'instance.move',\n instanceId: value.instanceId,\n parentInstanceId: value.parentInstanceId,\n slotId: value.slotId,\n index: value.index,\n }\n : null\n case 'instance.remove':\n return hasOnlyKeys(value, ['type', 'operationId', 'revision', 'instanceId']) &&\n isOpaqueId(value.instanceId)\n ? {\n ...base,\n type: 'instance.remove',\n instanceId: value.instanceId,\n }\n : null\n default:\n return null\n }\n}\n\nconst DIRECT_CANVAS_LAYOUT_CONTROLS = new Set(['gap', 'height', 'margin', 'padding', 'width'])\n\nexport function parseHydrogenEditorCanvasIntent(value: unknown): HydrogenEditorCanvasIntent | null {\n if (!isRecord(value) || typeof value.type !== 'string') return null\n switch (value.type) {\n case 'instance.move':\n return hasOnlyKeys(value, ['type', 'instanceId', 'parentInstanceId', 'slotId', 'index']) &&\n isOpaqueId(value.instanceId) &&\n isOpaqueId(value.parentInstanceId) &&\n isOpaqueId(value.slotId) &&\n isNonnegativeInteger(value.index)\n ? {\n type: 'instance.move',\n instanceId: value.instanceId,\n parentInstanceId: value.parentInstanceId,\n slotId: value.slotId,\n index: value.index,\n }\n : null\n case 'prop.inline':\n return hasOnlyKeys(value, ['type', 'instanceId', 'propName', 'value']) &&\n isOpaqueId(value.instanceId) &&\n typeof value.propName === 'string' &&\n value.propName.length > 0 &&\n value.propName.length <= 128 &&\n typeof value.value === 'string' &&\n value.value.length <= 10_000\n ? {\n type: 'prop.inline',\n instanceId: value.instanceId,\n propName: value.propName,\n value: value.value,\n }\n : null\n case 'styles.adjust':\n return hasOnlyKeys(value, ['type', 'instanceId', 'controlId', 'value', 'breakpointId']) &&\n isOpaqueId(value.instanceId) &&\n isOpaqueId(value.controlId) &&\n typeof value.value === 'number' &&\n Number.isFinite(value.value) &&\n value.value >= 0 &&\n value.value <= 4_096 &&\n (value.breakpointId === undefined || isOpaqueId(value.breakpointId))\n ? {\n type: 'styles.adjust',\n instanceId: value.instanceId,\n controlId: value.controlId,\n value: Math.round(value.value * 100) / 100,\n ...(value.breakpointId !== undefined ? { breakpointId: value.breakpointId } : {}),\n }\n : null\n case 'slot.insert.request':\n return hasOnlyKeys(value, ['type', 'parentInstanceId', 'slotId', 'index']) &&\n isOpaqueId(value.parentInstanceId) &&\n isOpaqueId(value.slotId) &&\n isNonnegativeInteger(value.index)\n ? {\n type: 'slot.insert.request',\n parentInstanceId: value.parentInstanceId,\n slotId: value.slotId,\n index: value.index,\n }\n : null\n default:\n return null\n }\n}\n\nfunction parseEnvelope(\n value: unknown,\n source: typeof HOST_SOURCE | typeof PREVIEW_SOURCE,\n security: HydrogenEditorSecurityContext,\n state: MutableEnvelopeState,\n now: number,\n):\n | { readonly envelope: SecureEnvelope; readonly duplicate: boolean }\n | HydrogenEditorProtocolFailure {\n const signature = jsonSignature(value)\n if (signature === null) {\n return protocolFailure('MESSAGE_TOO_DEEP', 'message is cyclic, non-JSON, or exceeds depth 32')\n }\n if (\n new TextEncoder().encode(signature).byteLength > HYDROGEN_EDITOR_BRIDGE_LIMITS.maxMessageBytes\n ) {\n return protocolFailure('MESSAGE_TOO_LARGE', 'message exceeds 128 KiB')\n }\n if (!isRecord(value)) {\n return protocolFailure('UNKNOWN_MESSAGE', 'message must be an object')\n }\n if (value.protocolVersion !== HYDROGEN_EDITOR_PROTOCOL_VERSION) {\n return protocolFailure('UNSUPPORTED_PROTOCOL', 'unsupported Hydrogen editor protocol version')\n }\n if (\n value.source !== source ||\n value.sessionId !== security.sessionId ||\n value.baseSha !== security.baseSha ||\n value.manifestHash !== security.manifestHash ||\n value.channelNonce !== security.channelNonce ||\n value.previewToken !== security.previewToken\n ) {\n return protocolFailure(\n 'AUTH_CONTEXT_MISMATCH',\n 'message does not match the active editor session',\n )\n }\n if (now >= security.expiresAt) {\n return protocolFailure('MESSAGE_EXPIRED', 'editor preview token has expired')\n }\n if (\n !isOpaqueId(value.messageId) ||\n !isPositiveInteger(value.sequence) ||\n typeof value.type !== 'string' ||\n value.type.length > 128\n ) {\n return protocolFailure('UNKNOWN_MESSAGE', 'message envelope is invalid')\n }\n\n const previous = state.messages.get(value.messageId)\n if (previous !== undefined) {\n return previous === signature\n ? { envelope: value as unknown as SecureEnvelope, duplicate: true }\n : protocolFailure(\n 'DUPLICATE_MESSAGE_CONFLICT',\n 'messageId was reused with a different payload',\n )\n }\n if (value.sequence <= state.sequence) {\n return protocolFailure('SEQUENCE_STALE', 'message sequence is not newer than the last message')\n }\n state.sequence = value.sequence\n state.messages.set(value.messageId, signature)\n if (state.messages.size > HYDROGEN_EDITOR_BRIDGE_LIMITS.maxProcessedMessages) {\n const oldest = state.messages.keys().next().value\n if (typeof oldest === 'string') state.messages.delete(oldest)\n }\n return { envelope: value as unknown as SecureEnvelope, duplicate: false }\n}\n\nfunction createEnvelope(\n source: typeof HOST_SOURCE | typeof PREVIEW_SOURCE,\n security: HydrogenEditorSecurityContext,\n sequence: number,\n type: string,\n payload?: unknown,\n): SecureEnvelope {\n return {\n source,\n protocolVersion: HYDROGEN_EDITOR_PROTOCOL_VERSION,\n sessionId: security.sessionId,\n baseSha: security.baseSha,\n manifestHash: security.manifestHash,\n channelNonce: security.channelNonce,\n previewToken: security.previewToken,\n messageId: `${source === HOST_SOURCE ? 'host' : 'preview'}:${sequence}`,\n sequence,\n type,\n ...(payload !== undefined ? { payload } : {}),\n }\n}\n\nfunction postEnvelope(\n target: StorefrontEditorMessageTarget,\n targetOrigin: string,\n envelope: SecureEnvelope,\n): void {\n const signature = jsonSignature(envelope)\n if (\n signature === null ||\n new TextEncoder().encode(signature).byteLength > HYDROGEN_EDITOR_BRIDGE_LIMITS.maxMessageBytes\n ) {\n throw new HydrogenEditorConfigurationError('outbound editor message exceeds protocol bounds')\n }\n target.postMessage(envelope, targetOrigin)\n}\n\nfunction findingsForInstance(\n manifest: HydrogenEditorManifest,\n instance: HydrogenInstance,\n component: HydrogenComponentDefinition,\n): HydrogenEditorCapabilityReason[] {\n const anchors = new Set([instance.source.anchorId, component.source.anchorId])\n return manifest.unsupportedFindings\n .filter((finding) => {\n switch (finding.target.kind) {\n case 'manifest':\n return true\n case 'component':\n return finding.target.componentId === component.componentId\n case 'instance':\n return finding.target.instanceId === instance.instanceId\n case 'source':\n return anchors.has(finding.target.anchorId)\n }\n })\n .map((finding) => ({\n code: finding.code,\n severity: finding.severity,\n message: finding.message,\n ...(finding.capability !== undefined ? { capability: finding.capability } : {}),\n ...(finding.source !== undefined ? { source: finding.source } : {}),\n }))\n}\n\nfunction instanceIdsForDocument(\n instances: ReadonlyMap<string, HydrogenInstance>,\n documentId: string,\n): string[] {\n return [...instances.values()]\n .filter((instance) => instance.documentId === documentId)\n .sort((left, right) => left.instanceId.localeCompare(right.instanceId))\n .map((instance) => instance.instanceId)\n}\n\nfunction childrenForSlot(\n instances: ReadonlyMap<string, HydrogenInstance>,\n parentInstanceId: string,\n slotId: string,\n): HydrogenInstance[] {\n return [...instances.values()]\n .filter(\n (instance) =>\n instance.parent?.instanceId === parentInstanceId && instance.parent.slotId === slotId,\n )\n .sort((left, right) => (left.parent?.index ?? 0) - (right.parent?.index ?? 0))\n}\n\nfunction resolvedProps(\n instance: HydrogenInstance,\n component: HydrogenComponentDefinition,\n): Readonly<Record<string, unknown>> {\n const variant = component.variants.find((candidate) => candidate.variantId === instance.variantId)\n const defaults = Object.fromEntries(\n component.props.flatMap((control) =>\n control.defaultBinding === undefined ? [] : [[control.propName, control.defaultBinding]],\n ),\n )\n return Object.fromEntries(\n Object.entries({ ...defaults, ...instance.props, ...variant?.props }).flatMap(\n ([propName, binding]) => (binding.kind === 'inline' ? [[propName, binding.value]] : []),\n ),\n )\n}\n\nfunction bindingMatchesControl(\n binding: HydrogenContentBinding,\n control: HydrogenComponentDefinition['props'][number],\n): boolean {\n if (!control.allowedBindings.includes(binding.kind)) return false\n if (binding.kind === 'external') return true\n const value = binding.value\n switch (control.control) {\n case 'number':\n return (\n typeof value === 'number' &&\n Number.isFinite(value) &&\n (control.min === undefined || value >= control.min) &&\n (control.max === undefined || value <= control.max)\n )\n case 'boolean':\n return typeof value === 'boolean'\n case 'select':\n return typeof value === 'string' && control.options.some((option) => option.value === value)\n case 'text':\n case 'textarea':\n case 'richtext':\n case 'color':\n case 'image':\n case 'url':\n case 'product':\n case 'collection':\n return typeof value === 'string'\n }\n}\n\nfunction styleValueAllowed(value: unknown, allowedValues?: readonly string[]): boolean {\n return (\n (typeof value === 'string' || (typeof value === 'number' && Number.isFinite(value))) &&\n (allowedValues === undefined || allowedValues.includes(String(value)))\n )\n}\n\nfunction instanceMatchesComponentContract(\n manifest: HydrogenEditorManifest,\n instance: HydrogenInstance,\n component: HydrogenComponentDefinition,\n): boolean {\n const controls = new Map(component.props.map((control) => [control.propName, control]))\n for (const [propName, binding] of Object.entries(instance.props)) {\n const control = controls.get(propName)\n if (control === undefined || !bindingMatchesControl(binding, control)) return false\n }\n if (\n component.props.some(\n (control) =>\n control.required &&\n instance.props[control.propName] === undefined &&\n control.defaultBinding === undefined,\n )\n ) {\n return false\n }\n if (\n instance.variantId !== undefined &&\n !component.variants.some((variant) => variant.variantId === instance.variantId)\n ) {\n return false\n }\n const tokenControls = new Map(component.styles.tokens.map((token) => [token.tokenId, token]))\n const layoutControls = new Map(\n component.styles.layout.map((control) => [control.controlId, control]),\n )\n const breakpoints = new Set(manifest.breakpoints.map((breakpoint) => breakpoint.breakpointId))\n const overrideIds = new Set<string>()\n for (const override of instance.styles.overrides) {\n if (\n !component.styles.responsive ||\n !breakpoints.has(override.breakpointId) ||\n overrideIds.has(override.breakpointId)\n ) {\n return false\n }\n overrideIds.add(override.breakpointId)\n }\n for (const values of [\n instance.styles.base,\n ...instance.styles.overrides.map((override) => override.values),\n ]) {\n for (const [tokenId, value] of Object.entries(values.tokens)) {\n const control = tokenControls.get(tokenId)\n if (control === undefined || !styleValueAllowed(value, control.allowedValues)) return false\n }\n for (const [controlId, value] of Object.entries(values.layout)) {\n const control = layoutControls.get(controlId)\n if (control === undefined || !styleValueAllowed(value, control.allowedValues)) return false\n }\n }\n return true\n}\n\nfunction cloneManifest(manifest: HydrogenEditorManifest): HydrogenEditorManifest {\n return HydrogenEditorManifestSchema.parse(manifest)\n}\n\nclass HydrogenEditorPreviewStoreImpl implements HydrogenEditorPreviewStore {\n readonly manifest: HydrogenEditorManifest\n readonly components: ReadonlyMap<string, HydrogenComponentDefinition>\n readonly documents: ReadonlyMap<string, HydrogenDocument>\n readonly instances = new Map<string, HydrogenInstance>()\n readonly mounted = new Set<string>()\n readonly operations = new Map<\n string,\n { readonly signature: string; readonly result: HydrogenEditorApplyResult }\n >()\n readonly listeners = new Set<() => void>()\n readonly instanceListeners = new Map<string, Set<() => void>>()\n private snapshotCache: HydrogenEditorPreviewSnapshot | null = null\n private readonly instanceSnapshotCache = new Map<string, HydrogenEditorInstanceSnapshot | null>()\n documentId: string\n route: string | undefined\n revision = 0\n selectedInstanceId: string | null = null\n hoveredInstanceId: string | null = null\n\n constructor(manifest: HydrogenEditorManifest, documentId: string, route?: string) {\n this.manifest = cloneManifest(manifest)\n this.components = new Map(\n this.manifest.components.map((component) => [component.componentId, component]),\n )\n this.documents = new Map(\n this.manifest.documents.map((document) => [document.documentId, document]),\n )\n for (const instance of this.manifest.instances)\n this.instances.set(instance.instanceId, instance)\n if (!this.documents.has(documentId)) {\n throw new HydrogenEditorConfigurationError(`unknown Hydrogen document \"${documentId}\"`)\n }\n this.documentId = documentId\n this.route = route\n }\n\n getSnapshot(): HydrogenEditorPreviewSnapshot {\n if (this.snapshotCache !== null) return this.snapshotCache\n const document = this.documents.get(this.documentId)\n if (document === undefined) {\n throw new HydrogenEditorConfigurationError(`unknown Hydrogen document \"${this.documentId}\"`)\n }\n const instanceIds = instanceIdsForDocument(this.instances, this.documentId)\n const selected = this.selectedInstanceId\n const selectedInstance = selected === null ? undefined : this.instances.get(selected)\n this.snapshotCache = {\n document,\n ...(this.route !== undefined ? { route: this.route } : {}),\n revision: this.revision,\n selectedInstanceId: selected,\n hoveredInstanceId: this.hoveredInstanceId,\n selectionStatus:\n selected === null\n ? 'none'\n : selectedInstance?.documentId === this.documentId\n ? 'active'\n : 'out-of-route',\n instanceIds,\n mountedInstanceIds: instanceIds.filter((instanceId) => this.mounted.has(instanceId)),\n }\n return this.snapshotCache\n }\n\n getInstanceSnapshot(instanceId: string): HydrogenEditorInstanceSnapshot | null {\n if (this.instanceSnapshotCache.has(instanceId)) {\n return this.instanceSnapshotCache.get(instanceId) ?? null\n }\n const instance = this.instances.get(instanceId)\n const component = instance === undefined ? undefined : this.components.get(instance.componentId)\n if (instance === undefined || component === undefined) {\n this.instanceSnapshotCache.set(instanceId, null)\n return null\n }\n const childInstanceIds = Object.fromEntries(\n component.slots.map((slot) => [\n slot.slotId,\n childrenForSlot(this.instances, instanceId, slot.slotId).map((child) => child.instanceId),\n ]),\n )\n const capabilityReasons = findingsForInstance(this.manifest, instance, component)\n const snapshot: HydrogenEditorInstanceSnapshot = {\n instance,\n component,\n childInstanceIds,\n resolvedProps: resolvedProps(instance, component),\n mounted: this.mounted.has(instanceId),\n editable:\n component.capabilities.length > 0 &&\n !capabilityReasons.some((reason) => reason.severity === 'blocking'),\n capabilityReasons,\n }\n this.instanceSnapshotCache.set(instanceId, snapshot)\n return snapshot\n }\n\n subscribe(listener: () => void): () => void {\n this.listeners.add(listener)\n return () => this.listeners.delete(listener)\n }\n\n subscribeInstance(instanceId: string, listener: () => void): () => void {\n const listeners = this.instanceListeners.get(instanceId) ?? new Set<() => void>()\n listeners.add(listener)\n this.instanceListeners.set(instanceId, listeners)\n return () => {\n listeners.delete(listener)\n if (listeners.size === 0) this.instanceListeners.delete(instanceId)\n }\n }\n\n setMounted(instanceId: string, mounted: boolean): void {\n if (!this.instances.has(instanceId)) return\n const changed = mounted ? !this.mounted.has(instanceId) : this.mounted.has(instanceId)\n if (!changed) return\n if (mounted) this.mounted.add(instanceId)\n else this.mounted.delete(instanceId)\n this.emit(new Set([instanceId]))\n }\n\n setSelection(instanceId: string | null): boolean {\n if (instanceId !== null && !this.instances.has(instanceId)) return false\n if (this.selectedInstanceId === instanceId) return true\n this.selectedInstanceId = instanceId\n this.emit(new Set())\n return true\n }\n\n setHover(instanceId: string | null): boolean {\n if (instanceId !== null && !this.instances.has(instanceId)) return false\n if (this.hoveredInstanceId === instanceId) return true\n this.hoveredInstanceId = instanceId\n this.emit(new Set())\n return true\n }\n\n reconcile(documentId: string, route?: string): void {\n if (!this.documents.has(documentId)) {\n throw new HydrogenEditorConfigurationError(`unknown Hydrogen document \"${documentId}\"`)\n }\n this.documentId = documentId\n this.route = route\n if (\n this.hoveredInstanceId !== null &&\n this.instances.get(this.hoveredInstanceId)?.documentId !== documentId\n ) {\n this.hoveredInstanceId = null\n }\n this.emit(new Set())\n }\n\n private emit(changedInstanceIds: ReadonlySet<string>): void {\n this.snapshotCache = null\n for (const instanceId of changedInstanceIds) {\n this.instanceSnapshotCache.delete(instanceId)\n for (const listener of this.instanceListeners.get(instanceId) ?? []) listener()\n }\n for (const listener of this.listeners) listener()\n }\n\n private componentFor(\n instance: HydrogenInstance,\n ): HydrogenComponentDefinition | HydrogenEditorOperationFailure {\n const component = this.components.get(instance.componentId)\n return (\n component ??\n operationFailure(\n 'COMPONENT_NOT_FOUND',\n `component \"${instance.componentId}\" is not declared`,\n instance,\n )\n )\n }\n\n private rejectUnsupported(\n instance: HydrogenInstance,\n capability: HydrogenEditCapability,\n ): HydrogenEditorOperationFailure | null {\n const component = this.components.get(instance.componentId)\n if (component === undefined) {\n return operationFailure(\n 'COMPONENT_NOT_FOUND',\n `component \"${instance.componentId}\" is not declared`,\n instance,\n )\n }\n const blocking = findingsForInstance(this.manifest, instance, component).find(\n (finding) =>\n finding.severity === 'blocking' &&\n (finding.capability === undefined || finding.capability === capability),\n )\n return blocking === undefined\n ? null\n : operationFailure(\n 'UNSUPPORTED_BOUNDARY',\n blocking.message,\n instance,\n blocking.capability ?? capability,\n )\n }\n\n private requireCapability(\n instance: HydrogenInstance,\n capability: HydrogenEditCapability,\n ): HydrogenEditorOperationFailure | null {\n const component = this.componentFor(instance)\n if ('code' in component) return component\n if (!component.capabilities.includes(capability)) {\n return operationFailure(\n 'CAPABILITY_DENIED',\n `component \"${component.componentId}\" does not allow \"${capability}\" edits`,\n instance,\n capability,\n )\n }\n return this.rejectUnsupported(instance, capability)\n }\n\n private validateStyles(\n instance: HydrogenInstance,\n component: HydrogenComponentDefinition,\n styles: HydrogenInstanceStyles,\n ): HydrogenEditorOperationFailure | null {\n const capabilityFailure =\n this.requireCapability(instance, 'styles') ??\n (styles.overrides.length > 0 ? this.requireCapability(instance, 'responsive') : null)\n if (capabilityFailure !== null) return capabilityFailure\n const tokenControls = new Map(component.styles.tokens.map((token) => [token.tokenId, token]))\n const layoutControls = new Map(\n component.styles.layout.map((control) => [control.controlId, control]),\n )\n const breakpoints = new Set(this.manifest.breakpoints.map((item) => item.breakpointId))\n const overrideIds = new Set<string>()\n for (const override of styles.overrides) {\n if (overrideIds.has(override.breakpointId) || !breakpoints.has(override.breakpointId)) {\n return operationFailure(\n 'CAPABILITY_DENIED',\n `responsive breakpoint \"${override.breakpointId}\" is unknown or duplicated`,\n instance,\n 'responsive',\n )\n }\n overrideIds.add(override.breakpointId)\n }\n const values = [styles.base, ...styles.overrides.map((override) => override.values)]\n for (const value of values) {\n for (const [tokenId, tokenValue] of Object.entries(value.tokens)) {\n const control = tokenControls.get(tokenId)\n if (control === undefined || !styleValueAllowed(tokenValue, control.allowedValues)) {\n return operationFailure(\n 'CAPABILITY_DENIED',\n `style token \"${tokenId}\" is undeclared or outside its allowed values`,\n instance,\n 'styles',\n )\n }\n }\n for (const [controlId, layoutValue] of Object.entries(value.layout)) {\n const control = layoutControls.get(controlId)\n if (control === undefined || !styleValueAllowed(layoutValue, control.allowedValues)) {\n return operationFailure(\n 'CAPABILITY_DENIED',\n `layout control \"${controlId}\" is undeclared or outside its allowed values`,\n instance,\n 'styles',\n )\n }\n }\n }\n return null\n }\n\n private validateInsertedInstance(\n instance: HydrogenInstance,\n component: HydrogenComponentDefinition,\n ): HydrogenEditorOperationFailure | null {\n const propControls = new Map(component.props.map((control) => [control.propName, control]))\n for (const [propName, binding] of Object.entries(instance.props)) {\n const control = propControls.get(propName)\n const contentCapability = binding.kind === 'external' ? 'external-content' : 'inline-content'\n const capabilityFailure =\n this.requireCapability(instance, 'props') ??\n this.requireCapability(instance, contentCapability)\n if (\n control === undefined ||\n !bindingMatchesControl(binding, control) ||\n capabilityFailure !== null\n ) {\n return (\n capabilityFailure ??\n operationFailure(\n 'CAPABILITY_DENIED',\n `inserted prop \"${propName}\" is not declared or violates its control`,\n instance,\n contentCapability,\n )\n )\n }\n }\n for (const control of component.props) {\n if (\n control.required &&\n instance.props[control.propName] === undefined &&\n control.defaultBinding === undefined\n ) {\n return operationFailure(\n 'CAPABILITY_DENIED',\n `inserted instance is missing required prop \"${control.propName}\"`,\n instance,\n 'props',\n )\n }\n }\n if (\n instance.variantId !== undefined &&\n !component.variants.some((variant) => variant.variantId === instance.variantId)\n ) {\n return operationFailure(\n 'CAPABILITY_DENIED',\n `variant \"${instance.variantId}\" is not declared`,\n instance,\n 'variants',\n )\n }\n const styleValuesPresent =\n Object.keys(instance.styles.base.tokens).length > 0 ||\n Object.keys(instance.styles.base.layout).length > 0 ||\n instance.styles.overrides.length > 0\n if (styleValuesPresent) {\n const styleFailure = this.validateStyles(instance, component, instance.styles)\n if (styleFailure !== null) return styleFailure\n }\n const sourceAnchorCollision =\n this.manifest.components.some(\n (candidate) => candidate.source.anchorId === instance.source.anchorId,\n ) ||\n [...this.instances.values()].some(\n (candidate) => candidate.source.anchorId === instance.source.anchorId,\n )\n if (sourceAnchorCollision) {\n return operationFailure(\n 'INVALID_OPERATION',\n `source anchor \"${instance.source.anchorId}\" is already in use`,\n instance,\n 'insert',\n )\n }\n return this.rejectUnsupported(instance, 'insert')\n }\n\n private normalizeSlot(parentInstanceId: string, slotId: string): Set<string> {\n const changed = new Set<string>([parentInstanceId])\n for (const [index, child] of childrenForSlot(\n this.instances,\n parentInstanceId,\n slotId,\n ).entries()) {\n if (child.parent?.index === index) continue\n this.instances.set(child.instanceId, {\n ...child,\n parent: { instanceId: parentInstanceId, slotId, index },\n })\n changed.add(child.instanceId)\n }\n return changed\n }\n\n private insertAt(\n instance: HydrogenInstance,\n parentInstanceId: string,\n slotId: string,\n index: number,\n ): Set<string> {\n const siblings = childrenForSlot(this.instances, parentInstanceId, slotId)\n const boundedIndex = Math.min(index, siblings.length)\n for (const sibling of siblings) {\n const siblingIndex = sibling.parent?.index ?? 0\n if (siblingIndex < boundedIndex) continue\n this.instances.set(sibling.instanceId, {\n ...sibling,\n parent: { instanceId: parentInstanceId, slotId, index: siblingIndex + 1 },\n })\n }\n this.instances.set(instance.instanceId, {\n ...instance,\n parent: { instanceId: parentInstanceId, slotId, index: boundedIndex },\n })\n return new Set([\n instance.instanceId,\n parentInstanceId,\n ...siblings.map((item) => item.instanceId),\n ])\n }\n\n private validateSlotTarget(\n parent: HydrogenInstance,\n slotId: string,\n childComponentId: string,\n mode: 'insert' | 'reorder',\n ): HydrogenEditorOperationFailure | null {\n const capability = mode === 'insert' ? 'insert' : 'reorder'\n const capabilityFailure = this.requireCapability(parent, capability)\n if (capabilityFailure !== null) return capabilityFailure\n const component = this.components.get(parent.componentId)\n const slot = component?.slots.find((candidate) => candidate.slotId === slotId)\n if (slot === undefined) {\n return operationFailure(\n 'SLOT_CONSTRAINT',\n `component \"${parent.componentId}\" has no slot \"${slotId}\"`,\n parent,\n capability,\n )\n }\n if (\n slot.insertion === 'fixed' ||\n (mode === 'reorder' && slot.insertion !== 'reorder') ||\n (slot.accepts.mode === 'include' && !slot.accepts.componentIds.includes(childComponentId))\n ) {\n return operationFailure(\n 'SLOT_CONSTRAINT',\n `slot \"${slotId}\" does not accept this ${mode} operation`,\n parent,\n capability,\n )\n }\n return null\n }\n\n private applyValidatedOperation(operation: HydrogenEditorPreviewOperation): StoreMutation {\n switch (operation.type) {\n case 'prop.patch': {\n const instance = this.instances.get(operation.instanceId)\n if (instance === undefined) {\n return {\n changedInstanceIds: new Set(),\n result: rejectOperation(\n operation,\n this.revision,\n operationFailure(\n 'INSTANCE_NOT_FOUND',\n `instance \"${operation.instanceId}\" is not declared`,\n ),\n ),\n }\n }\n const component = this.components.get(instance.componentId)\n const control = component?.props.find((prop) => prop.propName === operation.propName)\n const requiredCapability =\n operation.binding.kind === 'external' ? 'external-content' : 'inline-content'\n const capabilityFailure =\n this.requireCapability(instance, 'props') ??\n this.requireCapability(instance, requiredCapability)\n if (\n capabilityFailure !== null ||\n control === undefined ||\n !bindingMatchesControl(operation.binding, control)\n ) {\n return {\n changedInstanceIds: new Set(),\n result: rejectOperation(\n operation,\n this.revision,\n capabilityFailure ??\n operationFailure(\n 'CAPABILITY_DENIED',\n `prop \"${operation.propName}\" does not allow \"${operation.binding.kind}\" content`,\n instance,\n requiredCapability,\n ),\n ),\n }\n }\n this.instances.set(instance.instanceId, {\n ...instance,\n props: { ...instance.props, [operation.propName]: operation.binding },\n })\n return {\n changedInstanceIds: new Set([instance.instanceId]),\n result: {\n status: 'applied',\n revision: operation.revision,\n operationId: operation.operationId,\n },\n }\n }\n case 'styles.patch': {\n const instance = this.instances.get(operation.instanceId)\n if (instance === undefined) {\n return {\n changedInstanceIds: new Set(),\n result: rejectOperation(\n operation,\n this.revision,\n operationFailure(\n 'INSTANCE_NOT_FOUND',\n `instance \"${operation.instanceId}\" is not declared`,\n ),\n ),\n }\n }\n const component = this.components.get(instance.componentId)\n const capabilityFailure =\n component === undefined\n ? operationFailure(\n 'COMPONENT_NOT_FOUND',\n `component \"${instance.componentId}\" is not declared`,\n instance,\n )\n : this.validateStyles(instance, component, operation.styles)\n if (capabilityFailure !== null) {\n return {\n changedInstanceIds: new Set(),\n result: rejectOperation(operation, this.revision, capabilityFailure),\n }\n }\n this.instances.set(instance.instanceId, { ...instance, styles: operation.styles })\n return {\n changedInstanceIds: new Set([instance.instanceId]),\n result: {\n status: 'applied',\n revision: operation.revision,\n operationId: operation.operationId,\n },\n }\n }\n case 'variant.set': {\n const instance = this.instances.get(operation.instanceId)\n if (instance === undefined) {\n return {\n changedInstanceIds: new Set(),\n result: rejectOperation(\n operation,\n this.revision,\n operationFailure(\n 'INSTANCE_NOT_FOUND',\n `instance \"${operation.instanceId}\" is not declared`,\n ),\n ),\n }\n }\n const capabilityFailure = this.requireCapability(instance, 'variants')\n const component = this.components.get(instance.componentId)\n if (\n capabilityFailure !== null ||\n (operation.variantId !== null &&\n !component?.variants.some((variant) => variant.variantId === operation.variantId))\n ) {\n return {\n changedInstanceIds: new Set(),\n result: rejectOperation(\n operation,\n this.revision,\n capabilityFailure ??\n operationFailure(\n 'CAPABILITY_DENIED',\n `variant \"${operation.variantId}\" is not declared`,\n instance,\n 'variants',\n ),\n ),\n }\n }\n const next =\n operation.variantId === null\n ? (({ variantId: _variantId, ...rest }) => rest)(instance)\n : { ...instance, variantId: operation.variantId }\n this.instances.set(instance.instanceId, next)\n return {\n changedInstanceIds: new Set([instance.instanceId]),\n result: {\n status: 'applied',\n revision: operation.revision,\n operationId: operation.operationId,\n },\n }\n }\n case 'slot.insert': {\n const parent = this.instances.get(operation.parentInstanceId)\n const component = this.components.get(operation.instance.componentId)\n if (parent === undefined || component === undefined) {\n return {\n changedInstanceIds: new Set(),\n result: rejectOperation(\n operation,\n this.revision,\n parent === undefined\n ? operationFailure(\n 'INSTANCE_NOT_FOUND',\n `parent instance \"${operation.parentInstanceId}\" is not declared`,\n )\n : operationFailure(\n 'COMPONENT_NOT_FOUND',\n `component \"${operation.instance.componentId}\" is not declared`,\n ),\n ),\n }\n }\n const documentInstanceCount = [...this.instances.values()].filter(\n (instance) => instance.documentId === parent.documentId,\n ).length\n let parentDepth = 1\n let ancestor: HydrogenInstance | undefined = parent\n while (ancestor.parent !== null) {\n parentDepth += 1\n ancestor = this.instances.get(ancestor.parent.instanceId)\n if (ancestor === undefined) break\n }\n if (\n this.instances.has(operation.instance.instanceId) ||\n operation.instance.documentId !== parent.documentId ||\n this.instances.size >= HYDROGEN_EDITOR_MANIFEST_LIMITS.maxInstances ||\n documentInstanceCount >= HYDROGEN_EDITOR_MANIFEST_LIMITS.maxInstancesPerDocument ||\n parentDepth >= HYDROGEN_EDITOR_MANIFEST_LIMITS.maxDepth\n ) {\n return {\n changedInstanceIds: new Set(),\n result: rejectOperation(\n operation,\n this.revision,\n operationFailure(\n 'DOCUMENT_MISMATCH',\n 'inserted instance identity is duplicate, cross-document, or exceeds manifest limits',\n parent,\n 'insert',\n ),\n ),\n }\n }\n const targetFailure = this.validateSlotTarget(\n parent,\n operation.slotId,\n operation.instance.componentId,\n 'insert',\n )\n const slot = this.components\n .get(parent.componentId)\n ?.slots.find((candidate) => candidate.slotId === operation.slotId)\n if (\n targetFailure !== null ||\n slot === undefined ||\n childrenForSlot(this.instances, parent.instanceId, operation.slotId).length >=\n slot.maxInstances\n ) {\n return {\n changedInstanceIds: new Set(),\n result: rejectOperation(\n operation,\n this.revision,\n targetFailure ??\n operationFailure(\n 'SLOT_CONSTRAINT',\n `slot \"${operation.slotId}\" reached its instance limit`,\n parent,\n 'insert',\n ),\n ),\n }\n }\n const parsed = HydrogenInstanceSchema.safeParse({\n ...operation.instance,\n parent: {\n instanceId: parent.instanceId,\n slotId: operation.slotId,\n index: operation.index,\n },\n })\n if (!parsed.success) {\n return {\n changedInstanceIds: new Set(),\n result: rejectOperation(\n operation,\n this.revision,\n operationFailure(\n 'INVALID_OPERATION',\n 'inserted instance does not satisfy the Hydrogen instance contract',\n parent,\n 'insert',\n ),\n ),\n }\n }\n const insertedFailure = this.validateInsertedInstance(parsed.data, component)\n if (insertedFailure !== null) {\n return {\n changedInstanceIds: new Set(),\n result: rejectOperation(operation, this.revision, insertedFailure),\n }\n }\n return {\n changedInstanceIds: this.insertAt(\n parsed.data,\n parent.instanceId,\n operation.slotId,\n operation.index,\n ),\n result: {\n status: 'applied',\n revision: operation.revision,\n operationId: operation.operationId,\n },\n }\n }\n case 'instance.move': {\n const instance = this.instances.get(operation.instanceId)\n const parent = this.instances.get(operation.parentInstanceId)\n if (instance === undefined || parent === undefined || instance.parent === null) {\n return {\n changedInstanceIds: new Set(),\n result: rejectOperation(\n operation,\n this.revision,\n operationFailure(\n 'INSTANCE_NOT_FOUND',\n 'move requires an existing non-root instance and parent',\n instance,\n 'reorder',\n ),\n ),\n }\n }\n const targetFailure = this.validateSlotTarget(\n parent,\n operation.slotId,\n instance.componentId,\n 'reorder',\n )\n const oldParent = this.instances.get(instance.parent.instanceId)\n const oldSlot = this.components\n .get(oldParent?.componentId ?? '')\n ?.slots.find((slot) => slot.slotId === instance.parent?.slotId)\n const oldTargetFailure =\n oldParent === undefined || oldSlot === undefined\n ? null\n : this.validateSlotTarget(oldParent, oldSlot.slotId, instance.componentId, 'reorder')\n const targetSlot = this.components\n .get(parent.componentId)\n ?.slots.find((slot) => slot.slotId === operation.slotId)\n const movingWithinSlot =\n instance.parent.instanceId === parent.instanceId &&\n instance.parent.slotId === operation.slotId\n const targetCount = childrenForSlot(\n this.instances,\n parent.instanceId,\n operation.slotId,\n ).length\n let cursor: HydrogenInstance | undefined = parent\n let createsCycle = false\n while (cursor?.parent !== null && cursor?.parent !== undefined) {\n if (cursor.instanceId === instance.instanceId) {\n createsCycle = true\n break\n }\n cursor = this.instances.get(cursor.parent.instanceId)\n }\n if (\n targetFailure !== null ||\n oldTargetFailure !== null ||\n oldParent === undefined ||\n oldSlot === undefined ||\n targetSlot === undefined ||\n (!movingWithinSlot && targetCount >= targetSlot.maxInstances) ||\n (!movingWithinSlot &&\n childrenForSlot(this.instances, oldParent.instanceId, oldSlot.slotId).length <=\n oldSlot.minInstances) ||\n createsCycle ||\n parent.documentId !== instance.documentId\n ) {\n return {\n changedInstanceIds: new Set(),\n result: rejectOperation(\n operation,\n this.revision,\n targetFailure ??\n oldTargetFailure ??\n operationFailure(\n 'SLOT_CONSTRAINT',\n 'move violates slot cardinality, document, or tree constraints',\n instance,\n 'reorder',\n ),\n ),\n }\n }\n this.instances.delete(instance.instanceId)\n const changed = this.normalizeSlot(oldParent.instanceId, oldSlot.slotId)\n const inserted = this.insertAt(\n instance,\n parent.instanceId,\n operation.slotId,\n operation.index,\n )\n for (const id of inserted) changed.add(id)\n return {\n changedInstanceIds: changed,\n result: {\n status: 'applied',\n revision: operation.revision,\n operationId: operation.operationId,\n },\n }\n }\n case 'instance.remove': {\n const instance = this.instances.get(operation.instanceId)\n if (instance === undefined || instance.parent === null) {\n return {\n changedInstanceIds: new Set(),\n result: rejectOperation(\n operation,\n this.revision,\n operationFailure(\n 'INSTANCE_NOT_FOUND',\n 'remove requires an existing non-root instance',\n instance,\n 'remove',\n ),\n ),\n }\n }\n const capabilityFailure = this.requireCapability(instance, 'remove')\n const parent = this.instances.get(instance.parent.instanceId)\n const slot = this.components\n .get(parent?.componentId ?? '')\n ?.slots.find((candidate) => candidate.slotId === instance.parent?.slotId)\n const siblings =\n parent === undefined || slot === undefined\n ? []\n : childrenForSlot(this.instances, parent.instanceId, slot.slotId)\n if (\n capabilityFailure !== null ||\n parent === undefined ||\n slot === undefined ||\n !slot.removableChildren ||\n siblings.length <= slot.minInstances\n ) {\n return {\n changedInstanceIds: new Set(),\n result: rejectOperation(\n operation,\n this.revision,\n capabilityFailure ??\n operationFailure(\n 'SLOT_CONSTRAINT',\n 'instance cannot be removed from this slot',\n instance,\n 'remove',\n ),\n ),\n }\n }\n const removeIds = new Set<string>()\n const collect = (instanceId: string): void => {\n if (removeIds.has(instanceId)) return\n removeIds.add(instanceId)\n for (const candidate of this.instances.values()) {\n if (candidate.parent?.instanceId === instanceId) collect(candidate.instanceId)\n }\n }\n collect(instance.instanceId)\n for (const instanceId of removeIds) {\n this.instances.delete(instanceId)\n this.mounted.delete(instanceId)\n }\n const changed = this.normalizeSlot(parent.instanceId, slot.slotId)\n for (const instanceId of removeIds) changed.add(instanceId)\n if (removeIds.has(this.selectedInstanceId ?? '')) this.selectedInstanceId = null\n if (removeIds.has(this.hoveredInstanceId ?? '')) this.hoveredInstanceId = null\n return {\n changedInstanceIds: changed,\n result: {\n status: 'applied',\n revision: operation.revision,\n operationId: operation.operationId,\n },\n }\n }\n }\n }\n\n apply(operation: HydrogenEditorPreviewOperation): HydrogenEditorApplyResult {\n const signature = jsonSignature(operation)\n if (signature === null) {\n return rejectOperation(\n operation,\n this.revision,\n operationFailure('INVALID_OPERATION', 'operation is not bounded JSON'),\n )\n }\n const previous = this.operations.get(operation.operationId)\n if (previous !== undefined) {\n return previous.signature === signature\n ? previous.result\n : rejectOperation(\n operation,\n this.revision,\n operationFailure(\n 'DUPLICATE_OPERATION_CONFLICT',\n 'operationId was reused with a different operation',\n ),\n )\n }\n if (this.operations.size >= HYDROGEN_EDITOR_BRIDGE_LIMITS.maxDraftOperations) {\n return rejectOperation(\n operation,\n this.revision,\n operationFailure('OPERATION_LIMIT_EXCEEDED', 'draft operation limit reached'),\n )\n }\n if (operation.revision !== this.revision + 1) {\n const result = rejectOperation(\n operation,\n this.revision,\n operationFailure(\n 'REVISION_MISMATCH',\n `expected preview revision ${this.revision + 1}, received ${operation.revision}`,\n ),\n )\n this.operations.set(operation.operationId, { signature, result })\n return result\n }\n const mutation = this.applyValidatedOperation(operation)\n this.operations.set(operation.operationId, { signature, result: mutation.result })\n if (mutation.result.status === 'applied') {\n this.revision = operation.revision\n this.emit(mutation.changedInstanceIds)\n }\n return mutation.result\n }\n}\n\nfunction canvasOperationForIntent(\n store: HydrogenEditorPreviewStoreImpl,\n intent: Exclude<HydrogenEditorCanvasIntent, { readonly type: 'slot.insert.request' }>,\n operationId: string,\n): HydrogenEditorPreviewOperation | HydrogenEditorOperationFailure {\n const revision = store.revision + 1\n if (intent.type === 'instance.move') {\n return {\n type: 'instance.move',\n operationId,\n revision,\n instanceId: intent.instanceId,\n parentInstanceId: intent.parentInstanceId,\n slotId: intent.slotId,\n index: intent.index,\n }\n }\n const snapshot = store.getInstanceSnapshot(intent.instanceId)\n if (snapshot === null) {\n return operationFailure('INSTANCE_NOT_FOUND', `instance \"${intent.instanceId}\" is not declared`)\n }\n if (intent.type === 'prop.inline') {\n const control = snapshot.component.props.find(\n (candidate) => candidate.propName === intent.propName,\n )\n if (\n control === undefined ||\n !control.allowedBindings.includes('inline') ||\n (snapshot.instance.props[intent.propName] ?? control.defaultBinding)?.kind === 'external' ||\n !snapshot.component.capabilities.includes('props') ||\n !snapshot.component.capabilities.includes('inline-content')\n ) {\n return operationFailure(\n 'CAPABILITY_DENIED',\n `prop \"${intent.propName}\" is not an inline-editable canvas control`,\n snapshot.instance,\n 'inline-content',\n )\n }\n return {\n type: 'prop.patch',\n operationId,\n revision,\n instanceId: intent.instanceId,\n propName: intent.propName,\n binding: { kind: 'inline', value: intent.value },\n }\n }\n\n const control = snapshot.component.styles.layout.find(\n (candidate) => candidate.controlId === intent.controlId,\n )\n if (\n control === undefined ||\n !DIRECT_CANVAS_LAYOUT_CONTROLS.has(control.control) ||\n !snapshot.component.capabilities.includes('styles') ||\n (intent.breakpointId !== undefined &&\n (!snapshot.component.styles.responsive ||\n !snapshot.component.capabilities.includes('responsive')))\n ) {\n return operationFailure(\n 'CAPABILITY_DENIED',\n `layout control \"${intent.controlId}\" is not directly editable on the canvas`,\n snapshot.instance,\n intent.breakpointId === undefined ? 'styles' : 'responsive',\n )\n }\n const value = `${intent.value}px`\n if (control.allowedValues !== undefined && !control.allowedValues.includes(value)) {\n return operationFailure(\n 'CAPABILITY_DENIED',\n `layout value \"${value}\" is outside the declared allowed values`,\n snapshot.instance,\n 'styles',\n )\n }\n const styles = HydrogenInstanceStylesSchema.parse(snapshot.instance.styles)\n if (intent.breakpointId === undefined) {\n return {\n type: 'styles.patch',\n operationId,\n revision,\n instanceId: intent.instanceId,\n styles: {\n ...styles,\n base: {\n ...styles.base,\n layout: { ...styles.base.layout, [intent.controlId]: value },\n },\n },\n }\n }\n if (\n !store.manifest.breakpoints.some(\n (breakpoint) => breakpoint.breakpointId === intent.breakpointId,\n )\n ) {\n return operationFailure(\n 'CAPABILITY_DENIED',\n `responsive breakpoint \"${intent.breakpointId}\" is unknown`,\n snapshot.instance,\n 'responsive',\n )\n }\n const existing = styles.overrides.find(\n (override) => override.breakpointId === intent.breakpointId,\n )\n const override = {\n breakpointId: intent.breakpointId,\n values: {\n tokens: existing?.values.tokens ?? {},\n layout: { ...existing?.values.layout, [intent.controlId]: value },\n },\n }\n return {\n type: 'styles.patch',\n operationId,\n revision,\n instanceId: intent.instanceId,\n styles: {\n ...styles,\n overrides: [\n ...styles.overrides.filter((candidate) => candidate.breakpointId !== intent.breakpointId),\n override,\n ],\n },\n }\n}\n\nfunction validateCanvasInsertRequest(\n store: HydrogenEditorPreviewStoreImpl,\n request: Extract<HydrogenEditorCanvasIntent, { readonly type: 'slot.insert.request' }>,\n): HydrogenEditorOperationFailure | null {\n const parent = store.getInstanceSnapshot(request.parentInstanceId)\n if (parent === null) {\n return operationFailure(\n 'INSTANCE_NOT_FOUND',\n `parent instance \"${request.parentInstanceId}\" is not declared`,\n )\n }\n const slot = parent.component.slots.find((candidate) => candidate.slotId === request.slotId)\n const children = parent.childInstanceIds[request.slotId]\n if (\n slot === undefined ||\n slot.insertion === 'fixed' ||\n !parent.component.capabilities.includes('insert') ||\n children === undefined ||\n children.length >= slot.maxInstances ||\n request.index > children.length\n ) {\n return operationFailure(\n 'SLOT_CONSTRAINT',\n `slot \"${request.slotId}\" does not accept an insertion at index ${request.index}`,\n parent.instance,\n 'insert',\n )\n }\n const blocking = parent.capabilityReasons.find(\n (reason) =>\n reason.severity === 'blocking' &&\n (reason.capability === undefined || reason.capability === 'insert'),\n )\n return blocking === undefined\n ? null\n : operationFailure(\n 'UNSUPPORTED_BOUNDARY',\n blocking.message,\n parent.instance,\n blocking.capability ?? 'insert',\n )\n}\n\nfunction readyDocument(store: HydrogenEditorPreviewStoreImpl): HydrogenEditorReadyDocument {\n const snapshot = store.getSnapshot()\n const instances = snapshot.instanceIds.flatMap((instanceId) => {\n const instance = store.getInstanceSnapshot(instanceId)\n return instance === null\n ? []\n : [\n {\n instance: instance.instance,\n mounted: instance.mounted,\n editable: instance.editable,\n capabilityReasons: instance.capabilityReasons,\n },\n ]\n })\n const componentIds = new Set(instances.map(({ instance }) => instance.componentId))\n let discoveredComponent = true\n while (discoveredComponent) {\n discoveredComponent = false\n for (const componentId of [...componentIds]) {\n const component = store.components.get(componentId)\n for (const slot of component?.slots ?? []) {\n const candidates =\n slot.accepts.mode === 'any' ? [...store.components.keys()] : slot.accepts.componentIds\n for (const candidate of candidates) {\n if (componentIds.has(candidate)) continue\n componentIds.add(candidate)\n discoveredComponent = true\n }\n }\n }\n }\n const components = [...componentIds].flatMap((componentId) => {\n const component = store.components.get(componentId)\n return component === undefined ? [] : [component]\n })\n const instanceIds = new Set(instances.map(({ instance }) => instance.instanceId))\n const componentAnchorIds = new Set(components.map((component) => component.source.anchorId))\n const instanceAnchorIds = new Set(instances.map(({ instance }) => instance.source.anchorId))\n const unsupportedFindings = store.manifest.unsupportedFindings.filter((finding) => {\n switch (finding.target.kind) {\n case 'manifest':\n return true\n case 'component':\n return componentIds.has(finding.target.componentId)\n case 'instance':\n return instanceIds.has(finding.target.instanceId)\n case 'source':\n return (\n componentAnchorIds.has(finding.target.anchorId) ||\n instanceAnchorIds.has(finding.target.anchorId)\n )\n }\n })\n return {\n protocolVersion: HYDROGEN_EDITOR_PROTOCOL_VERSION,\n document: snapshot.document,\n breakpoints: store.manifest.breakpoints,\n ...(snapshot.route !== undefined ? { route: snapshot.route } : {}),\n revision: snapshot.revision,\n selectedInstanceId: snapshot.selectedInstanceId,\n hoveredInstanceId: snapshot.hoveredInstanceId,\n selectionStatus: snapshot.selectionStatus,\n components,\n instances,\n unsupportedFindings,\n }\n}\n\n/**\n * Produces the bounded editor document that can be shown before a secured preview runtime\n * connects. Source extraction establishes editability, but every instance remains unmounted until\n * the authenticated ADR-0047 bridge reports the live DOM boundary.\n */\nexport function createHydrogenEditorSourceProjection({\n manifest,\n documentId,\n route,\n revision = 0,\n selectedInstanceId,\n}: CreateHydrogenEditorSourceProjectionArgs): HydrogenEditorReadyDocument {\n if (!isNonnegativeInteger(revision)) {\n throw new HydrogenEditorConfigurationError('revision must be a nonnegative integer')\n }\n const parsedManifest = HydrogenEditorManifestSchema.parse(manifest)\n const document = parsedManifest.documents.find((candidate) => candidate.documentId === documentId)\n if (document === undefined) {\n throw new HydrogenEditorConfigurationError(`unknown Hydrogen document \"${documentId}\"`)\n }\n const store = new HydrogenEditorPreviewStoreImpl(\n parsedManifest,\n documentId,\n route ?? document.route,\n )\n store.revision = revision\n const selection =\n selectedInstanceId === undefined\n ? (document.rootInstanceIds[0] ??\n parsedManifest.instances.find((instance) => instance.documentId === documentId)\n ?.instanceId ??\n null)\n : selectedInstanceId\n if (!store.setSelection(selection)) {\n throw new HydrogenEditorConfigurationError(\n `unknown Hydrogen instance \"${selectedInstanceId ?? ''}\"`,\n )\n }\n return readyDocument(store)\n}\n\nfunction reconciliationDocument(\n store: HydrogenEditorPreviewStoreImpl,\n reason: HydrogenEditorReconciliationReason,\n): HydrogenEditorReconciliation {\n const snapshot = store.getSnapshot()\n return {\n reason,\n documentId: snapshot.document.documentId,\n ...(snapshot.route !== undefined ? { route: snapshot.route } : {}),\n revision: snapshot.revision,\n selectedInstanceId: snapshot.selectedInstanceId,\n selectionStatus: snapshot.selectionStatus,\n mountedInstanceIds: snapshot.mountedInstanceIds,\n }\n}\n\nfunction isNullableOpaqueId(value: unknown): value is string | null {\n return value === null || isOpaqueId(value)\n}\n\nfunction parseReadyDocument(\n value: unknown,\n expectedManifest: HydrogenEditorManifest,\n submittedInstances: ReadonlyMap<string, Omit<HydrogenInstance, 'parent'>>,\n): HydrogenEditorReadyDocument | null {\n if (\n !isRecord(value) ||\n value.protocolVersion !== HYDROGEN_EDITOR_PROTOCOL_VERSION ||\n !isNonnegativeInteger(value.revision) ||\n !isNullableOpaqueId(value.selectedInstanceId) ||\n !isNullableOpaqueId(value.hoveredInstanceId) ||\n (value.selectionStatus !== 'active' &&\n value.selectionStatus !== 'out-of-route' &&\n value.selectionStatus !== 'none') ||\n (value.route !== undefined && typeof value.route !== 'string') ||\n !Array.isArray(value.breakpoints) ||\n !Array.isArray(value.components) ||\n !Array.isArray(value.instances) ||\n !Array.isArray(value.unsupportedFindings)\n ) {\n return null\n }\n const document = HydrogenDocumentSchema.safeParse(value.document)\n const breakpoints = value.breakpoints.map((breakpoint) =>\n HydrogenBreakpointSchema.safeParse(breakpoint),\n )\n const components = value.components.map((component) =>\n HydrogenComponentDefinitionSchema.safeParse(component),\n )\n const instances = value.instances.map((candidate) => {\n if (\n !isRecord(candidate) ||\n typeof candidate.mounted !== 'boolean' ||\n typeof candidate.editable !== 'boolean' ||\n !Array.isArray(candidate.capabilityReasons)\n ) {\n return null\n }\n const instance = HydrogenInstanceSchema.safeParse(candidate.instance)\n if (!instance.success) return null\n const reasons = candidate.capabilityReasons.flatMap((reason) => {\n if (\n !isRecord(reason) ||\n typeof reason.code !== 'string' ||\n reason.code.length === 0 ||\n reason.code.length > 128 ||\n (reason.severity !== 'warning' && reason.severity !== 'blocking') ||\n typeof reason.message !== 'string' ||\n reason.message.length === 0 ||\n reason.message.length > 2_048\n ) {\n return []\n }\n const capability =\n reason.capability === undefined\n ? undefined\n : HydrogenEditCapabilitySchema.safeParse(reason.capability)\n const source =\n reason.source === undefined\n ? undefined\n : HydrogenSourceLocationSchema.safeParse(reason.source)\n if (capability !== undefined && !capability.success) return []\n if (source !== undefined && !source.success) return []\n return [\n {\n code: reason.code,\n severity: reason.severity,\n message: reason.message,\n ...(capability?.success ? { capability: capability.data } : {}),\n ...(source?.success ? { source: source.data } : {}),\n } satisfies HydrogenEditorCapabilityReason,\n ]\n })\n if (reasons.length !== candidate.capabilityReasons.length) return null\n return {\n instance: instance.data,\n mounted: candidate.mounted,\n editable: candidate.editable,\n capabilityReasons: reasons,\n } satisfies HydrogenEditorReadyInstance\n })\n if (\n !document.success ||\n breakpoints.some((breakpoint) => !breakpoint.success) ||\n components.some((component) => !component.success) ||\n value.breakpoints.length > HYDROGEN_EDITOR_MANIFEST_LIMITS.maxBreakpoints ||\n instances.some((instance) => instance === null) ||\n value.components.length > HYDROGEN_EDITOR_MANIFEST_LIMITS.maxComponents ||\n value.instances.length > HYDROGEN_EDITOR_MANIFEST_LIMITS.maxInstancesPerDocument\n ) {\n return null\n }\n const unsupportedFindings = value.unsupportedFindings.map((finding) =>\n HydrogenUnsupportedFindingSchema.safeParse(finding),\n )\n if (\n unsupportedFindings.some((finding) => !finding.success) ||\n unsupportedFindings.length > HYDROGEN_EDITOR_MANIFEST_LIMITS.maxFindings\n ) {\n return null\n }\n const parsedComponents = components.flatMap((component) =>\n component.success ? [component.data] : [],\n )\n const parsedBreakpoints = breakpoints.flatMap((breakpoint) =>\n breakpoint.success ? [breakpoint.data] : [],\n )\n const parsedInstances = instances.flatMap((instance) => (instance === null ? [] : [instance]))\n const parsedFindings = unsupportedFindings.flatMap((finding) =>\n finding.success ? [finding.data] : [],\n )\n const expectedDocument = expectedManifest.documents.find(\n (candidate) => candidate.documentId === document.data.documentId,\n )\n if (\n expectedDocument === undefined ||\n jsonSignature(expectedDocument) !== jsonSignature(document.data) ||\n jsonSignature(expectedManifest.breakpoints) !== jsonSignature(parsedBreakpoints)\n ) {\n return null\n }\n const expectedComponents = new Map(\n expectedManifest.components.map((component) => [component.componentId, component]),\n )\n const componentIds = new Set<string>()\n for (const component of parsedComponents) {\n const expected = expectedComponents.get(component.componentId)\n if (\n componentIds.has(component.componentId) ||\n expected === undefined ||\n jsonSignature(expected) !== jsonSignature(component)\n ) {\n return null\n }\n componentIds.add(component.componentId)\n }\n const expectedInstances = new Map(\n expectedManifest.instances.map((instance) => [instance.instanceId, instance]),\n )\n const instanceIds = new Set<string>()\n const sourceAnchors = new Set(parsedComponents.map((component) => component.source.anchorId))\n const normalizedInstances: HydrogenEditorReadyInstance[] = []\n for (const candidate of parsedInstances) {\n const instance = candidate.instance\n const component = expectedComponents.get(instance.componentId)\n const expected = expectedInstances.get(instance.instanceId)\n const submitted = submittedInstances.get(instance.instanceId)\n const trustedIdentity = expected ?? submitted\n if (\n instanceIds.has(instance.instanceId) ||\n sourceAnchors.has(instance.source.anchorId) ||\n component === undefined ||\n !componentIds.has(component.componentId) ||\n trustedIdentity === undefined ||\n trustedIdentity.componentId !== instance.componentId ||\n trustedIdentity.documentId !== instance.documentId ||\n jsonSignature(trustedIdentity.source) !== jsonSignature(instance.source) ||\n instance.documentId !== document.data.documentId ||\n !instanceMatchesComponentContract(expectedManifest, instance, component)\n ) {\n return null\n }\n instanceIds.add(instance.instanceId)\n sourceAnchors.add(instance.source.anchorId)\n const capabilityReasons = findingsForInstance(expectedManifest, instance, component)\n normalizedInstances.push({\n instance,\n mounted: candidate.mounted,\n editable:\n component.capabilities.length > 0 &&\n !capabilityReasons.some((reason) => reason.severity === 'blocking'),\n capabilityReasons,\n })\n }\n for (const candidate of normalizedInstances) {\n const parent = candidate.instance.parent\n if (parent === null) {\n if (!document.data.rootInstanceIds.includes(candidate.instance.instanceId)) return null\n continue\n }\n const parentInstance = normalizedInstances.find(\n (item) => item.instance.instanceId === parent.instanceId,\n )?.instance\n const parentComponent =\n parentInstance === undefined ? undefined : expectedComponents.get(parentInstance.componentId)\n const slot = parentComponent?.slots.find((item) => item.slotId === parent.slotId)\n if (\n parentInstance === undefined ||\n slot === undefined ||\n (slot.accepts.mode === 'include' &&\n !slot.accepts.componentIds.includes(candidate.instance.componentId))\n ) {\n return null\n }\n }\n if (\n document.data.rootInstanceIds.some((instanceId) => !instanceIds.has(instanceId)) ||\n (value.selectedInstanceId !== null &&\n !expectedInstances.has(value.selectedInstanceId) &&\n !submittedInstances.has(value.selectedInstanceId)) ||\n (value.hoveredInstanceId !== null && !instanceIds.has(value.hoveredInstanceId))\n ) {\n return null\n }\n const expectedFindingSignatures = new Set(\n expectedManifest.unsupportedFindings\n .filter((finding) => {\n switch (finding.target.kind) {\n case 'manifest':\n return true\n case 'component':\n return componentIds.has(finding.target.componentId)\n case 'instance':\n return instanceIds.has(finding.target.instanceId)\n case 'source':\n return sourceAnchors.has(finding.target.anchorId)\n }\n })\n .map((finding) => jsonSignature(finding)),\n )\n const receivedFindingSignatures = new Set(parsedFindings.map((finding) => jsonSignature(finding)))\n if (\n receivedFindingSignatures.size !== expectedFindingSignatures.size ||\n [...receivedFindingSignatures].some((signature) => !expectedFindingSignatures.has(signature))\n ) {\n return null\n }\n return {\n protocolVersion: HYDROGEN_EDITOR_PROTOCOL_VERSION,\n document: document.data,\n breakpoints: parsedBreakpoints,\n ...(value.route !== undefined ? { route: value.route } : {}),\n revision: value.revision,\n selectedInstanceId: value.selectedInstanceId,\n hoveredInstanceId: value.hoveredInstanceId,\n selectionStatus: value.selectionStatus,\n components: parsedComponents,\n instances: normalizedInstances,\n unsupportedFindings: parsedFindings,\n }\n}\n\nfunction parseApplyResult(value: unknown): HydrogenEditorApplyResult | null {\n if (\n !isRecord(value) ||\n (value.status !== 'applied' && value.status !== 'duplicate' && value.status !== 'rejected') ||\n !isNonnegativeInteger(value.revision) ||\n !isOpaqueId(value.operationId)\n ) {\n return null\n }\n if (value.status === 'rejected') {\n if (\n !isRecord(value.failure) ||\n typeof value.failure.code !== 'string' ||\n !OPERATION_FAILURE_CODES.has(value.failure.code as HydrogenEditorOperationFailureCode) ||\n typeof value.failure.message !== 'string' ||\n value.failure.message.length > 2_048 ||\n (value.failure.instanceId !== undefined && !isOpaqueId(value.failure.instanceId))\n ) {\n return null\n }\n const capability =\n value.failure.capability === undefined\n ? undefined\n : HydrogenEditCapabilitySchema.safeParse(value.failure.capability)\n const source =\n value.failure.source === undefined\n ? undefined\n : HydrogenSourceLocationSchema.safeParse(value.failure.source)\n if (capability !== undefined && !capability.success) return null\n if (source !== undefined && !source.success) return null\n return {\n status: 'rejected',\n revision: value.revision,\n operationId: value.operationId,\n failure: {\n code: value.failure.code as HydrogenEditorOperationFailureCode,\n message: value.failure.message,\n ...(value.failure.instanceId !== undefined ? { instanceId: value.failure.instanceId } : {}),\n ...(capability?.success ? { capability: capability.data } : {}),\n ...(source?.success ? { source: source.data } : {}),\n },\n }\n }\n return {\n status: value.status,\n revision: value.revision,\n operationId: value.operationId,\n }\n}\n\nfunction parseCanvasOperationEvent(value: unknown): {\n readonly intent: Exclude<HydrogenEditorCanvasIntent, { readonly type: 'slot.insert.request' }>\n readonly operation: HydrogenEditorPreviewOperation\n readonly result: HydrogenEditorApplyResult\n} | null {\n if (!isRecord(value) || !hasOnlyKeys(value, ['intent', 'operation', 'result'])) return null\n const intent = parseHydrogenEditorCanvasIntent(value.intent)\n const operation = parseOperation(value.operation)\n const result = parseApplyResult(value.result)\n if (\n intent === null ||\n intent.type === 'slot.insert.request' ||\n operation === null ||\n result === null ||\n operation.operationId !== result.operationId\n ) {\n return null\n }\n const matches =\n (intent.type === 'instance.move' &&\n operation.type === 'instance.move' &&\n operation.instanceId === intent.instanceId &&\n operation.parentInstanceId === intent.parentInstanceId &&\n operation.slotId === intent.slotId &&\n operation.index === intent.index) ||\n (intent.type === 'prop.inline' &&\n operation.type === 'prop.patch' &&\n operation.instanceId === intent.instanceId &&\n operation.propName === intent.propName &&\n operation.binding.kind === 'inline' &&\n operation.binding.value === intent.value) ||\n (intent.type === 'styles.adjust' &&\n operation.type === 'styles.patch' &&\n operation.instanceId === intent.instanceId)\n return matches ? { intent, operation, result } : null\n}\n\nfunction parseReconciliation(value: unknown): HydrogenEditorReconciliation | null {\n if (\n !isRecord(value) ||\n (value.reason !== 'route' &&\n value.reason !== 'loader' &&\n value.reason !== 'suspense' &&\n value.reason !== 'hmr') ||\n !isOpaqueId(value.documentId) ||\n (value.route !== undefined && typeof value.route !== 'string') ||\n !isNonnegativeInteger(value.revision) ||\n !isNullableOpaqueId(value.selectedInstanceId) ||\n (value.selectionStatus !== 'active' &&\n value.selectionStatus !== 'out-of-route' &&\n value.selectionStatus !== 'none') ||\n !Array.isArray(value.mountedInstanceIds) ||\n !value.mountedInstanceIds.every(isOpaqueId)\n ) {\n return null\n }\n return value as unknown as HydrogenEditorReconciliation\n}\n\nexport function createHydrogenEditorPreviewRuntime({\n adminOrigin,\n documentId,\n manifest,\n now = Date.now,\n onProtocolFailure,\n route,\n security,\n target,\n transport,\n}: CreateHydrogenEditorPreviewRuntimeArgs): HydrogenEditorPreviewRuntime {\n const trustedAdminOrigin = exactOrigin(adminOrigin, 'adminOrigin')\n validateSecurityContext(security, now())\n const parsedManifest = HydrogenEditorManifestSchema.parse(manifest)\n if (parsedManifest.source.baseSha !== security.baseSha) {\n throw new HydrogenEditorConfigurationError(\n 'manifest source baseSha does not match the editor session',\n )\n }\n const store = new HydrogenEditorPreviewStoreImpl(parsedManifest, documentId, route)\n const inbound: MutableEnvelopeState = { sequence: 0, messages: new Map() }\n const buffered: SecureEnvelope[] = []\n let outboundSequence = 0\n let canvasOperationSequence = 0\n let ready = false\n let disposed = false\n\n const reportProtocolFailure = (failure: HydrogenEditorProtocolFailure): void => {\n onProtocolFailure?.(failure)\n }\n const post = (type: string, payload?: unknown): void => {\n if (now() >= security.expiresAt) {\n reportProtocolFailure(protocolFailure('MESSAGE_EXPIRED', 'editor preview token has expired'))\n return\n }\n outboundSequence += 1\n postEnvelope(\n target,\n trustedAdminOrigin,\n createEnvelope(PREVIEW_SOURCE, security, outboundSequence, type, payload),\n )\n }\n const postReady = (): void => {\n try {\n post('editor.ready', readyDocument(store))\n } catch (error) {\n const failure = protocolFailure(\n 'MESSAGE_TOO_LARGE',\n error instanceof Error ? error.message : 'ready document exceeds bridge bounds',\n )\n reportProtocolFailure(failure)\n post('editor.protocol.failure', failure)\n }\n }\n const process = (envelope: SecureEnvelope): void => {\n if (now() >= security.expiresAt) {\n reportProtocolFailure(\n protocolFailure('MESSAGE_EXPIRED', 'buffered editor message expired before ready'),\n )\n return\n }\n switch (envelope.type) {\n case 'editor.protocol.failure': {\n const failure = parseProtocolFailure(envelope.payload)\n onProtocolFailure?.(\n failure ??\n protocolFailure('UNKNOWN_MESSAGE', 'preview protocol failure payload is invalid'),\n )\n return\n }\n case 'editor.ready.request':\n postReady()\n return\n case 'instance.hover': {\n const instanceId =\n isRecord(envelope.payload) && isNullableOpaqueId(envelope.payload.instanceId)\n ? envelope.payload.instanceId\n : undefined\n if (instanceId === undefined || !store.setHover(instanceId)) {\n reportProtocolFailure(\n protocolFailure('UNKNOWN_MESSAGE', 'hover targets an unknown instance'),\n )\n }\n return\n }\n case 'instance.select': {\n const instanceId =\n isRecord(envelope.payload) && isNullableOpaqueId(envelope.payload.instanceId)\n ? envelope.payload.instanceId\n : undefined\n if (instanceId === undefined || !store.setSelection(instanceId)) {\n reportProtocolFailure(\n protocolFailure('UNKNOWN_MESSAGE', 'selection targets an unknown instance'),\n )\n }\n return\n }\n case 'preview.operation.apply': {\n const operation = parseOperation(envelope.payload)\n const result =\n operation === null\n ? rejectOperation(\n { operationId: 'invalid' },\n store.revision,\n operationFailure('INVALID_OPERATION', 'operation payload is invalid'),\n )\n : store.apply(operation)\n post('preview.operation.result', result)\n return\n }\n default:\n reportProtocolFailure(\n protocolFailure('UNKNOWN_MESSAGE', `unknown host message \"${envelope.type}\"`),\n )\n }\n }\n const onMessage = (event: StorefrontEditorMessageEvent): void => {\n if (disposed || event.origin !== trustedAdminOrigin) return\n if (event.source !== target) return\n const parsed = parseEnvelope(event.data, HOST_SOURCE, security, inbound, now())\n if ('code' in parsed) {\n reportProtocolFailure(parsed)\n return\n }\n if (parsed.duplicate) return\n if (!ready) {\n if (buffered.length >= HYDROGEN_EDITOR_BRIDGE_LIMITS.maxBufferedMessages) {\n reportProtocolFailure(\n protocolFailure(\n 'BUFFER_LIMIT_EXCEEDED',\n 'pre-ready Hydrogen editor message buffer is full',\n ),\n )\n return\n }\n buffered.push(parsed.envelope)\n return\n }\n process(parsed.envelope)\n }\n\n transport.addEventListener('message', onMessage)\n\n return {\n manifest: parsedManifest,\n store,\n ready: () => {\n if (disposed) return\n ready = true\n postReady()\n while (buffered.length > 0) {\n const envelope = buffered.shift()\n if (envelope !== undefined) process(envelope)\n }\n },\n reconcile: (nextDocumentId, reason, nextRoute) => {\n if (disposed) return\n store.reconcile(nextDocumentId, nextRoute)\n if (ready) post('editor.reconciled', reconciliationDocument(store, reason))\n },\n registerInstance: (instanceId) => {\n if (disposed || store.getInstanceSnapshot(instanceId) === null) return () => undefined\n store.setMounted(instanceId, true)\n if (ready && store.selectedInstanceId === instanceId) {\n post('editor.reconciled', reconciliationDocument(store, 'suspense'))\n }\n return () => {\n store.setMounted(instanceId, false)\n if (ready && store.selectedInstanceId === instanceId) {\n post('editor.reconciled', reconciliationDocument(store, 'suspense'))\n }\n }\n },\n hoverInstance: (instanceId) => {\n if (disposed || !store.setHover(instanceId)) return\n if (ready) post('instance.hover', { instanceId })\n },\n selectInstance: (instanceId) => {\n if (disposed || !store.setSelection(instanceId)) return\n if (ready) post('instance.select', { instanceId })\n },\n dispatchCanvasIntent: (value) => {\n const intent = parseHydrogenEditorCanvasIntent(value)\n if (disposed || !ready || intent === null) {\n return {\n status: 'rejected',\n revision: store.revision,\n failure: operationFailure(\n 'INVALID_OPERATION',\n disposed\n ? 'editor preview runtime is disposed'\n : !ready\n ? 'editor preview runtime is not ready'\n : 'canvas intent is invalid',\n ),\n }\n }\n if (intent.type === 'slot.insert.request') {\n const failure = validateCanvasInsertRequest(store, intent)\n if (failure !== null) {\n return { status: 'rejected', revision: store.revision, failure }\n }\n post('canvas.insert.request', intent)\n return { status: 'insert-requested', intent, revision: store.revision }\n }\n canvasOperationSequence += 1\n const operation = canvasOperationForIntent(store, intent, `canvas:${canvasOperationSequence}`)\n if ('code' in operation) {\n return {\n status: 'rejected',\n revision: store.revision,\n failure: operation,\n }\n }\n const result = store.apply(operation)\n post('canvas.operation', { intent, operation, result })\n return { status: 'operation', intent, operation, result }\n },\n dispose: () => {\n if (disposed) return\n disposed = true\n buffered.length = 0\n transport.removeEventListener('message', onMessage)\n },\n }\n}\n\nexport function createHydrogenEditorHostBridge({\n manifest,\n now = Date.now,\n onCanvasInsertRequest,\n onCanvasOperation,\n onHoverInstance,\n onOperationResult,\n onProtocolFailure,\n onReady,\n onReconcile,\n onSelectInstance,\n previewOrigin,\n resolveTarget,\n security,\n target,\n transport,\n}: CreateHydrogenEditorHostBridgeArgs): HydrogenEditorHostBridge {\n const trustedPreviewOrigin = exactOrigin(previewOrigin, 'previewOrigin')\n validateSecurityContext(security, now())\n const expectedManifest = cloneManifest(manifest)\n if (expectedManifest.source.baseSha !== security.baseSha) {\n throw new HydrogenEditorConfigurationError(\n 'manifest source baseSha does not match the editor session',\n )\n }\n const inbound: MutableEnvelopeState = { sequence: 0, messages: new Map() }\n const buffered: SecureEnvelope[] = []\n const submittedInstances = new Map<string, Omit<HydrogenInstance, 'parent'>>()\n let outboundSequence = 0\n let ready = false\n let disposed = false\n const currentTarget = (): StorefrontEditorMessageTarget => resolveTarget?.() ?? target\n const post = (type: string, payload?: unknown): void => {\n if (now() >= security.expiresAt) {\n throw new HydrogenEditorConfigurationError('editor preview security context is expired')\n }\n outboundSequence += 1\n postEnvelope(\n currentTarget(),\n trustedPreviewOrigin,\n createEnvelope(HOST_SOURCE, security, outboundSequence, type, payload),\n )\n }\n const process = (envelope: SecureEnvelope): void => {\n switch (envelope.type) {\n case 'editor.protocol.failure': {\n const failure = parseProtocolFailure(envelope.payload)\n onProtocolFailure?.(\n failure ??\n protocolFailure('UNKNOWN_MESSAGE', 'preview protocol failure payload is invalid'),\n )\n return\n }\n case 'instance.hover':\n case 'instance.select': {\n const instanceId =\n isRecord(envelope.payload) && isNullableOpaqueId(envelope.payload.instanceId)\n ? envelope.payload.instanceId\n : undefined\n if (instanceId === undefined) {\n onProtocolFailure?.(\n protocolFailure('UNKNOWN_MESSAGE', `${envelope.type} payload is invalid`),\n )\n return\n }\n if (envelope.type === 'instance.hover') onHoverInstance?.(instanceId)\n else onSelectInstance?.(instanceId)\n return\n }\n case 'preview.operation.result': {\n const result = parseApplyResult(envelope.payload)\n if (result === null) {\n onProtocolFailure?.(\n protocolFailure('UNKNOWN_MESSAGE', 'operation result payload is invalid'),\n )\n return\n }\n onOperationResult?.(result)\n return\n }\n case 'canvas.operation': {\n const event = parseCanvasOperationEvent(envelope.payload)\n if (event === null) {\n onProtocolFailure?.(\n protocolFailure('UNKNOWN_MESSAGE', 'canvas operation payload is invalid'),\n )\n return\n }\n onOperationResult?.(event.result)\n onCanvasOperation?.(event.intent, event.operation, event.result)\n return\n }\n case 'canvas.insert.request': {\n const request = parseHydrogenEditorCanvasIntent(envelope.payload)\n if (request === null || request.type !== 'slot.insert.request') {\n onProtocolFailure?.(\n protocolFailure('UNKNOWN_MESSAGE', 'canvas insertion request payload is invalid'),\n )\n return\n }\n onCanvasInsertRequest?.(request)\n return\n }\n case 'editor.reconciled': {\n const reconciliation = parseReconciliation(envelope.payload)\n if (reconciliation === null) {\n onProtocolFailure?.(\n protocolFailure('UNKNOWN_MESSAGE', 'reconciliation payload is invalid'),\n )\n return\n }\n onReconcile?.(reconciliation)\n return\n }\n default:\n onProtocolFailure?.(\n protocolFailure('UNKNOWN_MESSAGE', `unknown preview message \"${envelope.type}\"`),\n )\n }\n }\n const onMessage = (event: StorefrontEditorMessageEvent): void => {\n if (disposed || event.origin !== trustedPreviewOrigin) return\n const expectedTarget = currentTarget()\n if (event.source !== expectedTarget) return\n const parsed = parseEnvelope(event.data, PREVIEW_SOURCE, security, inbound, now())\n if ('code' in parsed) {\n onProtocolFailure?.(parsed)\n return\n }\n if (parsed.duplicate) return\n if (parsed.envelope.type === 'editor.protocol.failure') {\n process(parsed.envelope)\n return\n }\n if (parsed.envelope.type === 'editor.ready') {\n const readyDocumentPayload = parseReadyDocument(\n parsed.envelope.payload,\n expectedManifest,\n submittedInstances,\n )\n if (readyDocumentPayload === null) {\n onProtocolFailure?.(protocolFailure('UNKNOWN_MESSAGE', 'ready payload is invalid'))\n return\n }\n ready = true\n onReady?.(readyDocumentPayload)\n while (buffered.length > 0) {\n const envelope = buffered.shift()\n if (envelope !== undefined) process(envelope)\n }\n return\n }\n if (!ready) {\n if (buffered.length >= HYDROGEN_EDITOR_BRIDGE_LIMITS.maxBufferedMessages) {\n onProtocolFailure?.(\n protocolFailure(\n 'BUFFER_LIMIT_EXCEEDED',\n 'pre-ready Hydrogen preview message buffer is full',\n ),\n )\n return\n }\n buffered.push(parsed.envelope)\n return\n }\n process(parsed.envelope)\n }\n\n transport.addEventListener('message', onMessage)\n\n return {\n requestReady: () => post('editor.ready.request'),\n hoverInstance: (instanceId) => {\n if (instanceId !== null && !isOpaqueId(instanceId)) return\n post('instance.hover', { instanceId })\n },\n selectInstance: (instanceId) => {\n if (instanceId !== null && !isOpaqueId(instanceId)) return\n post('instance.select', { instanceId })\n },\n applyOperation: (operation) => {\n const parsed = parseOperation(operation)\n if (parsed === null) {\n throw new HydrogenEditorConfigurationError('operation does not satisfy the bridge contract')\n }\n if (parsed.type === 'slot.insert') {\n submittedInstances.set(parsed.instance.instanceId, parsed.instance)\n }\n post('preview.operation.apply', parsed)\n },\n dispose: () => {\n if (disposed) return\n disposed = true\n buffered.length = 0\n transport.removeEventListener('message', onMessage)\n },\n }\n}\n\n/**\n * Resolves manifest-authorized style controls to CSS properties. The largest matching breakpoint\n * wins. Values that cannot be represented as a CSS string/number remain visible in editor state\n * but are not applied to the rendered element.\n */\nexport function resolveHydrogenEditorStyles(\n manifest: HydrogenEditorManifest,\n instance: HydrogenInstance,\n viewportWidth?: number,\n): Readonly<Record<string, string | number>> {\n const component = manifest.components.find(\n (candidate) => candidate.componentId === instance.componentId,\n )\n if (component === undefined) return {}\n const matchingBreakpoints =\n viewportWidth === undefined\n ? []\n : [...manifest.breakpoints]\n .filter((breakpoint) => breakpoint.minWidth <= viewportWidth)\n .sort(\n (left, right) =>\n left.minWidth - right.minWidth || left.breakpointId.localeCompare(right.breakpointId),\n )\n const variant = component.variants.find((candidate) => candidate.variantId === instance.variantId)\n const tokens: Record<string, unknown> = {\n ...variant?.styles.tokens,\n ...instance.styles.base.tokens,\n }\n const layout: Record<string, unknown> = {\n ...variant?.styles.layout,\n ...instance.styles.base.layout,\n }\n for (const breakpoint of matchingBreakpoints) {\n const override = instance.styles.overrides.find(\n (candidate) => candidate.breakpointId === breakpoint.breakpointId,\n )\n Object.assign(tokens, override?.values.tokens)\n Object.assign(layout, override?.values.layout)\n }\n const styles: Record<string, string | number> = {}\n for (const token of component.styles.tokens) {\n const value = tokens[token.tokenId]\n if (typeof value === 'string' || typeof value === 'number') {\n styles[token.cssVariable] = value\n }\n }\n for (const control of component.styles.layout) {\n const value = layout[control.controlId]\n if (typeof value === 'string' || typeof value === 'number') {\n styles[control.cssProperty] = value\n }\n }\n return styles\n}\n"]}
@@ -49,6 +49,15 @@ interface PublicEvent {
49
49
  readonly venue: PublicEventVenue;
50
50
  readonly occurrences: readonly PublicEventOccurrence[];
51
51
  }
52
+ interface PublicEventSummary {
53
+ readonly id: string;
54
+ readonly handle: string;
55
+ readonly title: string;
56
+ readonly description: string | null;
57
+ readonly registrationMode: EventRegistrationMode;
58
+ readonly venue: PublicEventVenue;
59
+ readonly nextOccurrenceAt: string;
60
+ }
52
61
  type EventFormAnswer = string | number | boolean | string[] | Record<string, string>;
53
62
  interface EventFormSubmissionInput {
54
63
  readonly versionId: string;
@@ -138,6 +147,7 @@ type EventRegistrationResult = {
138
147
  };
139
148
 
140
149
  interface EventsClient {
150
+ listEvents(): Promise<readonly PublicEventSummary[]>;
141
151
  getEvent(handle: string): Promise<PublicEvent>;
142
152
  createCheckoutSession(handle: string, input: CreateEventCheckoutSession, idempotencyKey: string): Promise<EventCheckoutSession>;
143
153
  submitApplication(handle: string, input: CreateEventApprovalRequest, idempotencyKey: string): Promise<EventApprovalRequestReceipt>;
@@ -156,4 +166,4 @@ declare function createEventsClient(input: {
156
166
  readonly defaultHeaders?: StorefrontHeadersInit;
157
167
  }): EventsClient;
158
168
 
159
- export { type ClaimEventApprovalOffer as C, type EventsClient as E, type PublicEvent as P, StorefrontEventsRequestError as S, type EventCheckoutSession as a, type EventApprovalOfferResolution as b, type EventRegistrationSubmission as c, type CreateEventApprovalRequest as d, type CreateEventCheckoutSession as e, type CreateEventWaitlistEntry as f, type EventApprovalRequestReceipt as g, type EventFormAnswer as h, type EventFormSubmissionInput as i, type EventRegistrationMode as j, type EventRegistrationResult as k, type EventWaitlistReceipt as l, type PublicEventForm as m, type PublicEventOccurrence as n, type PublicEventTicketType as o, type PublicEventVenue as p, createEventsClient as q };
169
+ export { type ClaimEventApprovalOffer as C, type EventsClient as E, type PublicEvent as P, StorefrontEventsRequestError as S, type EventCheckoutSession as a, type EventApprovalOfferResolution as b, type EventRegistrationSubmission as c, type CreateEventApprovalRequest as d, type CreateEventCheckoutSession as e, type CreateEventWaitlistEntry as f, type EventApprovalRequestReceipt as g, type EventFormAnswer as h, type EventFormSubmissionInput as i, type EventRegistrationMode as j, type EventRegistrationResult as k, type EventWaitlistReceipt as l, type PublicEventForm as m, type PublicEventOccurrence as n, type PublicEventSummary as o, type PublicEventTicketType as p, type PublicEventVenue as q, createEventsClient as r };
@@ -1,5 +1,5 @@
1
1
  import { S as StorefrontClient } from './client-D51WdvYR.js';
2
- import { C as Cart, a as CartLineInput, b as CartAttribute, c as CartBuyerIdentityInput, d as CartMutationResult, e as CartLineUpdateInput, f as CartMetafield, g as CartMetafieldIdentifier, h as CartDeliveryAddress, i as CartSelectedDeliveryOption, j as CartFormAction } from './types-bcbQzx87.js';
2
+ import { C as Cart, a as CartLineInput, b as CartAttribute, c as CartBuyerIdentityInput, d as CartMutationResult, e as CartLineUpdateInput, f as CartMetafield, g as CartMetafieldIdentifier, h as CartDeliveryAddress, i as CartSelectedDeliveryOption, j as CartFormAction } from './types-DZX8ScsJ.js';
3
3
 
4
4
  interface CartCreateInput {
5
5
  readonly lines?: readonly CartLineInput[];
@@ -0,0 +1,6 @@
1
+ /** Reserved section setting used to persist Shopify's per-instance custom CSS. */
2
+ declare const STOREFRONT_SECTION_CUSTOM_CSS_SETTING = "__kotaoCustomCss";
3
+ /** Scope merchant-authored CSS to one rendered section and prevent style-element breakout. */
4
+ declare function scopeStorefrontSectionCss(value: unknown, sectionId: string): string;
5
+
6
+ export { STOREFRONT_SECTION_CUSTOM_CSS_SETTING as S, scopeStorefrontSectionCss as s };