@phtngyn/cms 0.1.0-beta.0 → 0.1.0-beta.1

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 (123) hide show
  1. package/README.md +72 -1
  2. package/package.json +5 -5
  3. package/src/Authoring.d.ts +13 -1
  4. package/src/{AuthoringSchema-BQ5kbhVB.js → Configuration-DyKo0sLS.js} +595 -367
  5. package/src/Configuration-DyKo0sLS.js.map +1 -0
  6. package/src/{DocumentEngine-Da0kWotL.js → DocumentEngine-DYObwMDY.js} +44 -66
  7. package/src/DocumentEngine-DYObwMDY.js.map +1 -0
  8. package/src/DocumentModel.d.ts +4 -0
  9. package/src/DocumentModel.js.map +1 -1
  10. package/src/{HttpPaths-86qLGB90.js → HttpPaths-BbS21Jy8.js} +4 -2
  11. package/src/{HttpPaths-86qLGB90.js.map → HttpPaths-BbS21Jy8.js.map} +1 -1
  12. package/src/Module.js +27 -76
  13. package/src/Module.js.map +1 -1
  14. package/src/{StudioHttp-BTLLooh0.js → StudioHttp-jR2-bc01.js} +44 -242
  15. package/src/StudioHttp-jR2-bc01.js.map +1 -0
  16. package/src/{connection-ZGtL54qY.js → connection-CBTY-TzB.js} +3 -3
  17. package/src/{connection-ZGtL54qY.js.map → connection-CBTY-TzB.js.map} +1 -1
  18. package/src/{installation-BNKaVjni.js → installation-DeuBiFRE.js} +488 -236
  19. package/src/installation-DeuBiFRE.js.map +1 -0
  20. package/src/internal/authoring-catalog.js +147 -0
  21. package/src/internal/authoring-catalog.js.map +1 -0
  22. package/src/internal/authoring-compiler.js +2 -1
  23. package/src/internal/authoring-compiler.js.map +1 -1
  24. package/src/internal/authoring-metadata.js +67 -48
  25. package/src/internal/authoring-metadata.js.map +1 -1
  26. package/src/internal/configuration.js +5 -6
  27. package/src/internal/configuration.js.map +1 -1
  28. package/src/internal/document-model.js +3 -2
  29. package/src/internal/document-model.js.map +1 -1
  30. package/src/internal/studio-app.js +66 -0
  31. package/src/internal/studio-app.js.map +1 -0
  32. package/src/location-DtYv2aes.js +36 -0
  33. package/src/location-DtYv2aes.js.map +1 -0
  34. package/src/{metadata-Czvi3E4K.js → metadata-DE1Mc2td.js} +2 -2
  35. package/src/{metadata-Czvi3E4K.js.map → metadata-DE1Mc2td.js.map} +1 -1
  36. package/src/{models-Citx8jBi.js → models-BkMgeaOL.js} +252 -3
  37. package/src/models-BkMgeaOL.js.map +1 -0
  38. package/src/{models-DS5ClMsH.js → models-C3witQBK.js} +8 -31
  39. package/src/models-C3witQBK.js.map +1 -0
  40. package/src/runtime/blocks.js +17 -0
  41. package/src/runtime/blocks.js.map +1 -0
  42. package/src/runtime/collaboration.js +9 -4
  43. package/src/runtime/collaboration.js.map +1 -1
  44. package/src/runtime/delivery/DocumentRenderer.js +6 -3
  45. package/src/runtime/delivery/DocumentRenderer.js.map +1 -1
  46. package/src/runtime/delivery/blocks.js +6 -0
  47. package/src/runtime/delivery/blocks.js.map +1 -0
  48. package/src/runtime/delivery/context.js +12 -0
  49. package/src/runtime/delivery/context.js.map +1 -0
  50. package/src/runtime/delivery/document-page.js +5 -3
  51. package/src/runtime/delivery/document-page.js.map +1 -1
  52. package/src/runtime/delivery/document.js +18 -2
  53. package/src/runtime/delivery/document.js.map +1 -1
  54. package/src/runtime/delivery/error.js +11 -0
  55. package/src/runtime/delivery/error.js.map +1 -0
  56. package/src/runtime/delivery/plugin.js +21 -0
  57. package/src/runtime/delivery/plugin.js.map +1 -0
  58. package/src/runtime/delivery/useDocument.js +6 -3
  59. package/src/runtime/delivery/useDocument.js.map +1 -1
  60. package/src/runtime/delivery/useDocumentQuery.js +6 -3
  61. package/src/runtime/delivery/useDocumentQuery.js.map +1 -1
  62. package/src/runtime/installation.js +1 -1
  63. package/src/runtime/plugin.js +3 -3
  64. package/src/runtime/plugin.js.map +1 -1
  65. package/src/runtime/preview/connection.js +1 -1
  66. package/src/runtime/preview/controller.js +29 -10
  67. package/src/runtime/preview/controller.js.map +1 -1
  68. package/src/runtime/preview/overlay.js +65 -0
  69. package/src/runtime/preview/overlay.js.map +1 -0
  70. package/src/runtime/preview/plugin.client.js +21 -34
  71. package/src/runtime/preview/plugin.client.js.map +1 -1
  72. package/src/runtime/preview/preview.css +72 -4
  73. package/src/runtime/preview/store.js +1 -1
  74. package/src/runtime/studio-app.js +5 -1
  75. package/src/runtime/studio-app.js.map +1 -1
  76. package/src/runtime/studio-entry.js +36 -0
  77. package/src/runtime/studio-entry.js.map +1 -0
  78. package/src/runtime/studio-navigation.js +11 -0
  79. package/src/runtime/studio-navigation.js.map +1 -0
  80. package/src/{store-Nl4uxEXx.js → store-CfFFx9Ua.js} +3 -3
  81. package/src/{store-Nl4uxEXx.js.map → store-CfFFx9Ua.js.map} +1 -1
  82. package/studio/CreateDocumentDialog--L9lTfx6.js +256 -0
  83. package/studio/collaboration-DUuu678R.js +4565 -0
  84. package/studio/documentPlanning-BXX04Woe.js +28989 -0
  85. package/studio/dom-to-image-more.min-D6jGGdrW.js +877 -0
  86. package/studio/editor-PexnXkJY.js +30817 -0
  87. package/studio/host.css +3 -0
  88. package/studio/host.js +44179 -0
  89. package/studio/rolldown-runtime-B0aSnxlc.js +20 -0
  90. package/dist/studio/assets/ActivityEntryRow-D--fRvWI.js +0 -1
  91. package/dist/studio/assets/ActivityView-D-XBBUHb.js +0 -1
  92. package/dist/studio/assets/CreateDocumentDialog-CH8UH1QM.js +0 -1
  93. package/dist/studio/assets/DocumentsView-CxRpmAxt.js +0 -34
  94. package/dist/studio/assets/DropdownMenu-BSb1l7fr.js +0 -1
  95. package/dist/studio/assets/Input-DVao38h7.js +0 -3
  96. package/dist/studio/assets/MediaView-BHrPIjxB.js +0 -1
  97. package/dist/studio/assets/Modal-VNrXGa5C.js +0 -1
  98. package/dist/studio/assets/OverviewView-DfP6-mLZ.js +0 -1
  99. package/dist/studio/assets/Select-BJZIs9sY.js +0 -1
  100. package/dist/studio/assets/SettingsView-CerHe-ua.js +0 -1
  101. package/dist/studio/assets/Skeleton-CWJNi3nS.js +0 -1
  102. package/dist/studio/assets/StudioPageHeader-DP9HDAF2.js +0 -1
  103. package/dist/studio/assets/UsersView-cP3REkH2.js +0 -1
  104. package/dist/studio/assets/collaboration-BLnCzfvV.js +0 -4
  105. package/dist/studio/assets/context-dY4fNbn3.js +0 -1
  106. package/dist/studio/assets/editor-CE07wW83.js +0 -137
  107. package/dist/studio/assets/gateway-BAyQgCse.js +0 -10
  108. package/dist/studio/assets/index-CjoaPLhZ.js +0 -28
  109. package/dist/studio/assets/index-s2rPqCmP.css +0 -2
  110. package/dist/studio/assets/render-BkxbK2St.js +0 -83
  111. package/dist/studio/assets/rolldown-runtime-DK3Fl9T5.js +0 -1
  112. package/dist/studio/assets/useMediaLibrary-D7qR7aBf.js +0 -1
  113. package/dist/studio/index.html +0 -76
  114. package/src/AuthoringSchema-BQ5kbhVB.js.map +0 -1
  115. package/src/Configuration-BGYFD2N1.js +0 -150
  116. package/src/Configuration-BGYFD2N1.js.map +0 -1
  117. package/src/DocumentEngine-Da0kWotL.js.map +0 -1
  118. package/src/StudioHttp-BTLLooh0.js.map +0 -1
  119. package/src/installation-BNKaVjni.js.map +0 -1
  120. package/src/internal/component-metadata.js +0 -37
  121. package/src/internal/component-metadata.js.map +0 -1
  122. package/src/models-Citx8jBi.js.map +0 -1
  123. package/src/models-DS5ClMsH.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models-BkMgeaOL.js","names":[],"sources":["../../../../protocol/src/internal/scalars.ts","../../../../protocol/src/internal/documents/scalars.ts","../../../../protocol/src/Identity.ts","../../../../protocol/src/internal/configuration/scalars.ts","../../../../protocol/src/Media.ts","../../../../protocol/src/AccessControl.ts","../../../../protocol/src/internal/documents/models.ts"],"sourcesContent":["import { Schema } from 'effect'\n\nexport const nonNegativeInt = Schema.Int.check(Schema.isGreaterThanOrEqualTo(0))\n\nexport const publicPathPattern = /^\\/(?!(?:[^/]+\\/)*\\.\\.?(?:\\/|$))(?:[^/?#\\\\]+(?:\\/[^/?#\\\\]+)*)?$/u\n","import { Schema } from 'effect'\nimport { nonNegativeInt, publicPathPattern } from '../scalars'\n\nconst relativeDocumentPathPattern = /^(?!(?:[^/]+\\/)*\\.\\.?(?:\\/|$))[^/?#\\\\]+(?:\\/[^/?#\\\\]+)*$/u\nconst slugPattern = /^[\\p{Letter}\\p{Number}][\\p{Letter}\\p{Number}_-]*$/u\nconst sourcePathPattern = /^(?!\\.)[^/?#\\\\]+(?:\\/(?!\\.)[^/?#\\\\]+)*\\.(?:md|mdc)$/u\n\nexport const DocumentGeneration = Schema.String.check(Schema.isPattern(/^(?:0|[1-9]\\d*)$/u)).pipe(\n Schema.brand('DocumentGeneration'),\n)\nexport type DocumentGeneration = typeof DocumentGeneration.Type\n\nexport const DocumentVersion = Schema.NonEmptyString.pipe(Schema.brand('DocumentVersion'))\nexport type DocumentVersion = typeof DocumentVersion.Type\n\nexport const DocumentHistoryCursor = Schema.NonEmptyString.pipe(Schema.brand('DocumentHistoryCursor'))\nexport type DocumentHistoryCursor = typeof DocumentHistoryCursor.Type\n\nexport const DocumentId = Schema.String.check(Schema.isUUID()).pipe(Schema.brand('DocumentId'))\nexport type DocumentId = typeof DocumentId.Type\n\nexport const EditorNodeId = Schema.String.check(Schema.isUUID()).pipe(Schema.brand('EditorNodeId'))\nexport type EditorNodeId = typeof EditorNodeId.Type\n\nexport const PublicPath = Schema.String.check(Schema.isPattern(publicPathPattern)).pipe(Schema.brand('PublicPath'))\nexport type PublicPath = typeof PublicPath.Type\n\nexport const RelativeDocumentPath = Schema.String.check(Schema.isPattern(relativeDocumentPathPattern)).pipe(\n Schema.brand('RelativeDocumentPath'),\n)\nexport type RelativeDocumentPath = typeof RelativeDocumentPath.Type\n\nexport const RevisionId = Schema.String.check(Schema.isUUID()).pipe(Schema.brand('RevisionId'))\nexport type RevisionId = typeof RevisionId.Type\n\nexport const RevisionNumber = nonNegativeInt.pipe(Schema.brand('RevisionNumber'))\nexport type RevisionNumber = typeof RevisionNumber.Type\n\nexport const Slug = Schema.String.check(Schema.isPattern(slugPattern)).pipe(Schema.brand('Slug'))\nexport type Slug = typeof Slug.Type\n\nexport const SourcePath = Schema.String.check(Schema.isPattern(sourcePathPattern)).pipe(Schema.brand('SourcePath'))\nexport type SourcePath = typeof SourcePath.Type\n","/** Cross-domain request correlation; decode unknown strings before crossing a seam. */\nimport { Schema } from 'effect'\n\nexport const RequestId = Schema.String.check(Schema.isUUID()).pipe(Schema.brand('RequestId'))\nexport type RequestId = typeof RequestId.Type\n","import { Schema } from 'effect'\nimport { publicPathPattern } from '../scalars'\n\nconst collectionNamePattern = /^[a-z][a-z0-9]*(?:[-_][a-z0-9]+)*$/u\nconst localePattern = /^[A-Za-z]{2,3}(?:-[A-Za-z0-9]{2,8})*$/u\nconst sourceDirectoryPattern = /^(?:\\.|(?!\\.)[^/?#\\\\]+(?:\\/(?!\\.)[^/?#\\\\]+)*)$/u\n\nexport const AddressPattern = Schema.String.check(Schema.isPattern(publicPathPattern)).pipe(\n Schema.brand('AddressPattern'),\n)\nexport type AddressPattern = typeof AddressPattern.Type\n\nexport const CollectionName = Schema.String.check(Schema.isPattern(collectionNamePattern)).pipe(\n Schema.brand('CollectionName'),\n)\nexport type CollectionName = typeof CollectionName.Type\n\nexport const Locale = Schema.String.check(Schema.isPattern(localePattern)).pipe(Schema.brand('Locale'))\nexport type Locale = typeof Locale.Type\n\nexport const SourceDirectory = Schema.String.check(Schema.isPattern(sourceDirectoryPattern)).pipe(\n Schema.brand('SourceDirectory'),\n)\nexport type SourceDirectory = typeof SourceDirectory.Type\n","/**\n * Media wire models. Search pages are newest-first with opaque continuation cursors; only ready\n * assets are public results, and names, folders, and object keys are validated path-safe values.\n */\nimport { Schema } from 'effect'\nimport { DocumentId, PublicPath, SourcePath } from './internal/documents/scalars'\nimport { nonNegativeInt } from './internal/scalars'\n\nconst hasUnsafeMediaCharacter = (value: string): boolean => {\n for (const character of value) {\n const codePoint = character.codePointAt(0)\n if (character === '\\\\' || (codePoint !== undefined && (codePoint <= 31 || codePoint === 127))) return true\n }\n return false\n}\n\nconst isSafeMediaPath = (value: string, allowEmpty: boolean): boolean => {\n if (value.length === 0) return allowEmpty\n if (value !== value.trim() || value.startsWith('/') || value.endsWith('/') || hasUnsafeMediaCharacter(value)) {\n return false\n }\n return value.split('/').every((segment) => segment.length > 0 && segment !== '.' && segment !== '..')\n}\n\nconst safeMediaFolder = Schema.makeFilter<string>((value) => isSafeMediaPath(value, true), {\n expected: 'a provider-relative media folder without traversal segments',\n})\n\nconst safeMediaObjectKey = Schema.makeFilter<string>((value) => isSafeMediaPath(value, false), {\n expected: 'a non-empty provider-relative media object key without traversal segments',\n})\n\nconst safeMediaName = Schema.makeFilter<string>(\n (value) =>\n value.length > 0 &&\n value.length <= 255 &&\n value === value.trim() &&\n value !== '.' &&\n value !== '..' &&\n !value.includes('/') &&\n !hasUnsafeMediaCharacter(value),\n { expected: 'a safe media file name of at most 255 characters' },\n)\n\nexport const MediaId = Schema.String.check(Schema.isUUID()).pipe(Schema.brand('MediaId'))\nexport type MediaId = typeof MediaId.Type\n\nexport const MediaFolder = Schema.String.check(Schema.isMaxLength(512), safeMediaFolder).pipe(\n Schema.brand('MediaFolder'),\n)\nexport type MediaFolder = typeof MediaFolder.Type\n\nexport const MediaObjectKey = Schema.String.check(Schema.isMaxLength(1024), safeMediaObjectKey).pipe(\n Schema.brand('MediaObjectKey'),\n)\nexport type MediaObjectKey = typeof MediaObjectKey.Type\n\nexport const MediaName = Schema.String.check(safeMediaName).pipe(Schema.brand('MediaName'))\nexport type MediaName = typeof MediaName.Type\n\nexport const MediaCursor = Schema.NonEmptyString.pipe(Schema.brand('MediaCursor'))\nexport type MediaCursor = typeof MediaCursor.Type\n\nexport const ImageMimeType = Schema.Literals(['image/avif', 'image/gif', 'image/jpeg', 'image/png', 'image/webp'])\nexport type ImageMimeType = typeof ImageMimeType.Type\n\nexport const MediaStatus = Schema.Literals(['uploading', 'ready', 'deleting'])\nexport type MediaStatus = typeof MediaStatus.Type\n\nexport const MediaByteSize = Schema.Int.check(Schema.isGreaterThan(0))\nexport type MediaByteSize = typeof MediaByteSize.Type\n\nexport const MediaAsset = Schema.Struct({\n kind: Schema.tag('image'),\n id: MediaId,\n objectKey: MediaObjectKey,\n url: Schema.NonEmptyString,\n name: MediaName,\n folder: MediaFolder,\n mimeType: ImageMimeType,\n byteSize: MediaByteSize,\n createdAt: Schema.DateTimeUtcFromString,\n updatedAt: Schema.DateTimeUtcFromString,\n status: MediaStatus,\n}).annotate({ identifier: 'MediaAsset' })\nexport interface MediaAsset extends Schema.Schema.Type<typeof MediaAsset> {}\n\nexport const MediaUpload = Schema.Struct({\n name: MediaName,\n folder: Schema.optionalKey(MediaFolder),\n declaredMimeType: Schema.optionalKey(Schema.NonEmptyString),\n declaredByteSize: MediaByteSize,\n}).annotate({ identifier: 'MediaUpload' })\nexport interface MediaUpload extends Schema.Schema.Type<typeof MediaUpload> {}\n\nexport const MediaQuery = Schema.Struct({\n cursor: Schema.optionalKey(MediaCursor),\n folder: Schema.optionalKey(MediaFolder),\n search: Schema.optionalKey(Schema.NonEmptyString.check(Schema.isMaxLength(200))),\n limit: Schema.optionalKey(Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: 100 }))),\n}).annotate({ identifier: 'MediaQuery' })\nexport interface MediaQuery extends Schema.Schema.Type<typeof MediaQuery> {}\n\nconst ReadyMediaAssets = Schema.Array(MediaAsset).check(\n Schema.makeFilter((assets) => assets.every((asset) => asset.status === 'ready'), {\n expected: 'media assets whose lifecycle status is ready',\n }),\n)\n\nexport const MediaPage = Schema.Struct({\n assets: ReadyMediaAssets,\n folders: Schema.Array(MediaFolder),\n nextCursor: Schema.optionalKey(MediaCursor),\n total: nonNegativeInt,\n}).annotate({ identifier: 'MediaPage' })\nexport interface MediaPage extends Schema.Schema.Type<typeof MediaPage> {}\n\nexport const MediaReference = Schema.Struct({\n documentId: DocumentId,\n path: PublicPath,\n sourcePath: SourcePath,\n objectKey: MediaObjectKey,\n nodePath: Schema.Array(nonNegativeInt),\n}).annotate({ identifier: 'MediaReference' })\nexport interface MediaReference extends Schema.Schema.Type<typeof MediaReference> {}\n\nconst MediaObjectMismatch = Schema.Struct({\n asset: MediaAsset,\n storedByteSize: MediaByteSize,\n storedMimeType: Schema.optionalKey(ImageMimeType),\n}).annotate({ identifier: 'MediaObjectMismatch' })\n\nexport const MediaIntegrityReport = Schema.Struct({\n missingAssets: Schema.Array(MediaReference),\n missingObjects: Schema.Array(MediaAsset),\n mismatchedObjects: Schema.Array(MediaObjectMismatch),\n orphanedObjectKeys: Schema.Array(MediaObjectKey),\n unusedAssets: Schema.Array(MediaAsset),\n}).annotate({ identifier: 'MediaIntegrityReport' })\nexport interface MediaIntegrityReport extends Schema.Schema.Type<typeof MediaIntegrityReport> {}\n\nexport const MediaCleanupReport = Schema.Struct({\n removedObjectKeys: Schema.Array(MediaObjectKey),\n}).annotate({ identifier: 'MediaCleanupReport' })\nexport interface MediaCleanupReport extends Schema.Schema.Type<typeof MediaCleanupReport> {}\n\nexport class MediaNotFound extends Schema.TaggedError<MediaNotFound>()('Media.NotFound', {\n mediaId: MediaId,\n}) {}\n\nexport class MediaReferenced extends Schema.TaggedError<MediaReferenced>()('Media.Referenced', {\n mediaId: MediaId,\n references: Schema.Array(MediaReference),\n}) {}\n\nexport class MediaConflict extends Schema.TaggedError<MediaConflict>()('Media.Conflict', {\n mediaId: MediaId,\n}) {}\n\nexport class MediaInvalid extends Schema.TaggedError<MediaInvalid>()('Media.Invalid', {\n message: Schema.NonEmptyString,\n}) {}\n\nexport class MediaTooLarge extends Schema.TaggedError<MediaTooLarge>()('Media.TooLarge', {\n declaredByteSize: MediaByteSize,\n maxUploadBytes: MediaByteSize,\n}) {}\n","/** Wire-visible Studio actors, request identity, roles, access decisions, and denials. */\nimport { Schema } from 'effect'\nimport { RequestId } from './Identity'\nimport { CollectionName, Locale } from './internal/configuration/scalars'\nimport { DocumentId } from './internal/documents/scalars'\nimport { MediaFolder, MediaId } from './Media'\n\nexport const ROLES = ['administrator', 'editor', 'viewer'] as const\n\nexport const Role = Schema.Literals(ROLES)\nexport type Role = typeof Role.Type\n\nexport const StudioActor = Schema.Struct({\n id: Schema.NonEmptyString,\n email: Schema.NonEmptyString,\n name: Schema.NonEmptyString,\n // Provider roles remain visible, while access control recognizes only Role values.\n roles: Schema.Array(Schema.NonEmptyString),\n}).annotate({ identifier: 'StudioActor' })\nexport interface StudioActor extends Schema.Schema.Type<typeof StudioActor> {}\n\nexport const StudioRequestContext = Schema.Struct({\n actor: StudioActor,\n requestId: RequestId,\n}).annotate({ identifier: 'StudioRequestContext' })\nexport interface StudioRequestContext extends Schema.Schema.Type<typeof StudioRequestContext> {}\n\nexport const DOCUMENT_ACTIONS = [\n 'document.browse',\n 'document.read',\n 'document.trash',\n 'document.validate',\n 'document.create',\n 'document.update',\n 'document.move',\n 'document.remove',\n 'document.restore',\n 'document.undelete',\n 'document.publish',\n 'document.unpublish',\n 'document.duplicate',\n 'document.history',\n] as const\n\nconst DocumentAction = Schema.Literals(DOCUMENT_ACTIONS)\n\nconst DocumentCatalogResource = Schema.Struct({\n kind: Schema.tag('catalog'),\n})\n\nconst CollectionResource = Schema.Struct({\n kind: Schema.tag('collection'),\n collection: CollectionName,\n locale: Schema.optionalKey(Locale),\n})\n\nconst DocumentResource = Schema.Struct({\n kind: Schema.tag('document'),\n documentId: DocumentId,\n})\n\nconst DocumentAccessResource = Schema.Union([DocumentCatalogResource, CollectionResource, DocumentResource]).pipe(\n Schema.toTaggedUnion('kind'),\n)\n\nexport const DocumentAccessDecision = Schema.Struct({\n action: DocumentAction,\n resource: DocumentAccessResource,\n}).annotate({ identifier: 'DocumentAccessDecision' })\nexport interface DocumentAccessDecision extends Schema.Schema.Type<typeof DocumentAccessDecision> {}\n\nexport const MEDIA_ACTIONS = [\n 'media.read',\n 'media.search',\n 'media.integrity',\n 'media.upload',\n 'media.replace',\n 'media.remove',\n 'media.cleanup',\n] as const\n\nconst MediaAction = Schema.Literals(MEDIA_ACTIONS)\n\nconst MediaCatalogResource = Schema.Struct({\n kind: Schema.tag('media-catalog'),\n})\n\nconst MediaAssetResource = Schema.Struct({\n kind: Schema.tag('media-asset'),\n mediaId: MediaId,\n})\n\nconst MediaFolderResource = Schema.Struct({\n kind: Schema.tag('media-folder'),\n folder: MediaFolder,\n})\n\nconst MediaResource = Schema.Union([MediaCatalogResource, MediaAssetResource, MediaFolderResource]).pipe(\n Schema.toTaggedUnion('kind'),\n)\n\nexport const MediaAccessDecision = Schema.Struct({\n action: MediaAction,\n resource: MediaResource,\n}).annotate({ identifier: 'MediaAccessDecision' })\nexport interface MediaAccessDecision extends Schema.Schema.Type<typeof MediaAccessDecision> {}\n\nconst ActivityResource = Schema.Struct({\n kind: Schema.tag('activity'),\n})\n\nconst ActivityAccessDecision = Schema.Struct({\n action: Schema.Literal('activity.read'),\n resource: ActivityResource,\n}).annotate({ identifier: 'ActivityAccessDecision' })\n\nconst STUDIO_ACTIONS = [...DOCUMENT_ACTIONS, ...MEDIA_ACTIONS, 'activity.read'] as const\n\nexport const StudioAction = Schema.Literals(STUDIO_ACTIONS)\nexport type StudioAction = typeof StudioAction.Type\n\nconst StudioResource = Schema.Union([DocumentAccessResource, MediaResource, ActivityResource])\n\nexport const StudioAccessDecision = Schema.Union([DocumentAccessDecision, MediaAccessDecision, ActivityAccessDecision])\nexport type StudioAccessDecision = typeof StudioAccessDecision.Type\n\nexport class AuthenticationRequired extends Schema.TaggedError<AuthenticationRequired>()(\n 'Studio.AuthenticationRequired',\n {},\n) {}\n\nexport class StudioEntryDenied extends Schema.TaggedError<StudioEntryDenied>()('Studio.EntryDenied', {}) {}\n\nexport class AccessDenied extends Schema.TaggedError<AccessDenied>()('Studio.AccessDenied', {\n action: StudioAction,\n actorId: StudioActor.fields.id,\n resource: StudioResource,\n}) {}\n","import { Schema } from 'effect'\nimport { StudioActor } from '../../AccessControl'\nimport { CollectionName, Locale } from '../configuration/scalars'\nimport { nonNegativeInt } from '../scalars'\nimport {\n DocumentGeneration,\n DocumentVersion,\n DocumentId,\n PublicPath,\n RelativeDocumentPath,\n RevisionId,\n Slug,\n SourcePath,\n} from './scalars'\n\nexport const DocumentIssueCode = Schema.Literals([\n 'document.collision',\n 'document.id',\n 'document.invalid',\n 'i18n.missing-translation',\n 'markdown.parse',\n 'reference.document',\n 'reference.component',\n 'schema.option',\n 'schema.constraint',\n 'schema.required',\n 'schema.type',\n 'schema.unknown',\n])\nexport type DocumentIssueCode = typeof DocumentIssueCode.Type\n\nexport const DocumentIssue = Schema.Struct({\n code: DocumentIssueCode,\n severity: Schema.Literals(['error', 'warning']),\n message: Schema.NonEmptyString,\n sourcePath: Schema.optionalKey(SourcePath),\n collection: Schema.optionalKey(CollectionName),\n field: Schema.optionalKey(Schema.NonEmptyString),\n key: Schema.optionalKey(PublicPath),\n locale: Schema.optionalKey(Locale),\n}).annotate({ identifier: 'DocumentIssue' })\nexport interface DocumentIssue extends Schema.Schema.Type<typeof DocumentIssue> {}\n\nexport const DocumentSourcePoint = Schema.Struct({\n offset: nonNegativeInt,\n line: nonNegativeInt,\n column: nonNegativeInt,\n})\nexport interface DocumentSourcePoint extends Schema.Schema.Type<typeof DocumentSourcePoint> {}\n\nexport const DocumentSourceRange = Schema.Struct({\n start: DocumentSourcePoint,\n end: DocumentSourcePoint,\n})\nexport interface DocumentSourceRange extends Schema.Schema.Type<typeof DocumentSourceRange> {}\n\nexport const DocumentSourceMapping = Schema.Struct({\n nodePath: Schema.Array(nonNegativeInt),\n range: DocumentSourceRange,\n})\nexport interface DocumentSourceMapping extends Schema.Schema.Type<typeof DocumentSourceMapping> {}\n\nexport type MarkdownNode =\n | string\n | readonly [null, Schema.JsonObject, string]\n | readonly [string, Schema.JsonObject, ...MarkdownNode[]]\n\nexport const MarkdownNode: Schema.Codec<MarkdownNode> = Schema.suspend(() =>\n Schema.Union([\n Schema.String,\n Schema.Tuple([Schema.Null, Schema.JsonObject, Schema.String]),\n Schema.TupleWithRest(Schema.Tuple([Schema.NonEmptyString, Schema.JsonObject]), [MarkdownNode]),\n ]),\n)\n\nexport const CmsMarkdownDocument = Schema.Struct({\n nodes: Schema.Array(MarkdownNode),\n frontmatter: Schema.JsonObject,\n meta: Schema.JsonObject,\n}).annotate({ identifier: 'CmsMarkdownDocument' })\nexport interface CmsMarkdownDocument extends Schema.Schema.Type<typeof CmsMarkdownDocument> {}\n\nexport const CmsDocumentHeading = Schema.Struct({\n depth: Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: 6 })),\n id: Schema.String,\n text: Schema.String,\n})\nexport interface CmsDocumentHeading extends Schema.Schema.Type<typeof CmsDocumentHeading> {}\n\n/** Stable, JSON-safe analysis derived from the same document used for delivery. */\nexport const CmsDocumentAnalysis = Schema.Struct({\n components: Schema.Array(Schema.NonEmptyString),\n headings: Schema.Array(CmsDocumentHeading),\n searchText: Schema.String,\n summary: Schema.String,\n})\nexport interface CmsDocumentAnalysis extends Schema.Schema.Type<typeof CmsDocumentAnalysis> {}\n\nexport const CompiledDocumentSource = Schema.Struct({\n path: SourcePath,\n mappings: Schema.Array(DocumentSourceMapping),\n})\nexport interface CompiledDocumentSource extends Schema.Schema.Type<typeof CompiledDocumentSource> {}\n\nexport const CompiledDocument = Schema.Struct({\n id: DocumentId,\n key: PublicPath,\n path: PublicPath,\n locale: Schema.optionalKey(Locale),\n collection: CollectionName,\n draft: Schema.Boolean,\n title: Schema.NonEmptyString,\n description: Schema.optionalKey(Schema.String),\n data: Schema.JsonObject,\n issues: Schema.Array(DocumentIssue),\n analysis: CmsDocumentAnalysis,\n body: CmsMarkdownDocument,\n engineFingerprint: Schema.NonEmptyString,\n source: CompiledDocumentSource,\n}).annotate({ identifier: 'CompiledDocument' })\nexport interface CompiledDocument extends Schema.Schema.Type<typeof CompiledDocument> {}\n\nconst documentAttribution = {\n createdBy: Schema.optionalKey(StudioActor),\n editedBy: Schema.optionalKey(StudioActor),\n editedAt: Schema.optionalKey(Schema.DateTimeUtcFromString),\n}\n\nexport const DocumentSource = Schema.Struct({\n ...documentAttribution,\n documentId: DocumentId,\n sourcePath: SourcePath,\n markdown: Schema.String,\n revisionId: RevisionId,\n version: DocumentVersion,\n publishedVersion: Schema.optionalKey(DocumentVersion),\n}).annotate({ identifier: 'DocumentSource' })\nexport interface DocumentSource extends Schema.Schema.Type<typeof DocumentSource> {}\n\nexport const DocumentImportSource = Schema.Struct({\n sourcePath: SourcePath,\n markdown: Schema.String,\n published: Schema.Boolean,\n}).annotate({ identifier: 'DocumentImportSource' })\nexport interface DocumentImportSource extends Schema.Schema.Type<typeof DocumentImportSource> {}\n\nexport const DocumentImportMode = Schema.Literals(['preserve', 'overwrite'])\nexport type DocumentImportMode = typeof DocumentImportMode.Type\n\nexport const DocumentImportInput = Schema.Struct({\n sources: Schema.Array(DocumentImportSource),\n mode: DocumentImportMode,\n reason: Schema.optionalKey(Schema.NonEmptyString.check(Schema.isMaxLength(1_000))),\n}).annotate({ identifier: 'DocumentImportInput' })\nexport interface DocumentImportInput extends Schema.Schema.Type<typeof DocumentImportInput> {}\n\nexport const DocumentImportReport = Schema.Struct({\n created: nonNegativeInt,\n preserved: nonNegativeInt,\n published: nonNegativeInt,\n unchanged: nonNegativeInt,\n updated: nonNegativeInt,\n}).annotate({ identifier: 'DocumentImportReport' })\nexport interface DocumentImportReport extends Schema.Schema.Type<typeof DocumentImportReport> {}\n\nexport const DocumentSummary = Schema.Struct({\n ...documentAttribution,\n publishedVersion: Schema.optionalKey(DocumentVersion),\n publishedPath: Schema.optionalKey(PublicPath),\n sourcePath: SourcePath,\n version: DocumentVersion,\n document: CompiledDocument,\n}).annotate({ identifier: 'DocumentSummary' })\nexport interface DocumentSummary extends Schema.Schema.Type<typeof DocumentSummary> {}\n\nexport const DeletedDocument = Schema.Struct({\n title: Schema.optionalKey(Schema.String),\n path: Schema.optionalKey(PublicPath),\n trashBatchId: Schema.optionalKey(DocumentVersion),\n documentId: DocumentId,\n deletedAt: Schema.DateTimeUtcFromString,\n sourcePath: SourcePath,\n version: DocumentVersion,\n}).annotate({ identifier: 'DeletedDocument' })\nexport interface DeletedDocument extends Schema.Schema.Type<typeof DeletedDocument> {}\n\nexport const DocumentBrowseQuery = Schema.Struct({\n collection: Schema.optionalKey(CollectionName),\n locale: Schema.optionalKey(Locale),\n}).annotate({ identifier: 'DocumentBrowseQuery' })\nexport interface DocumentBrowseQuery extends Schema.Schema.Type<typeof DocumentBrowseQuery> {}\n\nexport const PublishedDocumentLookup = Schema.Union([\n Schema.Struct({\n kind: Schema.tag('id'),\n documentId: DocumentId,\n }),\n Schema.Struct({\n kind: Schema.tag('path'),\n path: PublicPath,\n }),\n Schema.Struct({\n kind: Schema.tag('key'),\n key: PublicPath,\n collection: Schema.optionalKey(CollectionName),\n locale: Schema.optionalKey(Locale),\n }),\n]).pipe(Schema.toTaggedUnion('kind'))\nexport type PublishedDocumentLookup = typeof PublishedDocumentLookup.Type\n\nexport const DocumentQueryScalar = Schema.Union([Schema.String, Schema.Finite, Schema.Boolean, Schema.Null])\nexport type DocumentQueryScalar = typeof DocumentQueryScalar.Type\n\nconst validDocumentQueryField = Schema.makeFilter<string>(\n (field) => {\n const segments = field.split('.')\n return field.length <= 200 && segments.length <= 8 && segments.every((segment) => segment.length > 0)\n },\n { expected: 'a non-empty field path of at most 200 characters and eight non-empty segments' },\n)\n\nexport const DocumentQueryField = Schema.NonEmptyString.check(validDocumentQueryField)\nexport type DocumentQueryField = typeof DocumentQueryField.Type\n\nexport const DocumentQueryValue = Schema.Union([\n DocumentQueryScalar,\n Schema.Array(DocumentQueryScalar).check(Schema.isMaxLength(20)),\n])\nexport type DocumentQueryValue = typeof DocumentQueryValue.Type\n\nexport const DocumentQuerySort = Schema.Struct({\n field: DocumentQueryField,\n direction: Schema.optionalKey(Schema.Literals(['asc', 'desc'])),\n})\nexport interface DocumentQuerySort extends Schema.Schema.Type<typeof DocumentQuerySort> {}\n\nconst DocumentQueryWhere = Schema.Record(Schema.String, DocumentQueryValue).check(\n Schema.makeFilter((where) => Object.keys(where).every((field) => Schema.is(DocumentQueryField)(field)), {\n expected: 'document query keys with valid bounded field paths',\n }),\n Schema.makeFilter((where) => Object.keys(where).length <= 12, {\n expected: 'at most 12 document query filters',\n }),\n)\n\nexport const PublishedDocumentSelection = Schema.Struct({\n collection: Schema.optionalKey(CollectionName),\n locale: Schema.optionalKey(Locale),\n where: Schema.optionalKey(DocumentQueryWhere),\n sort: Schema.optionalKey(Schema.Array(DocumentQuerySort).check(Schema.isMaxLength(4))),\n}).annotate({ identifier: 'PublishedDocumentSelection' })\nexport interface PublishedDocumentSelection extends Schema.Schema.Type<typeof PublishedDocumentSelection> {}\n\nexport const PublishedDocumentQuery = Schema.Struct({\n ...PublishedDocumentSelection.fields,\n offset: Schema.optionalKey(nonNegativeInt),\n limit: Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: 100 })),\n}).annotate({ identifier: 'PublishedDocumentQuery' })\nexport interface PublishedDocumentQuery extends Schema.Schema.Type<typeof PublishedDocumentQuery> {}\n\nexport const PublishedDocumentSurroundQuery = Schema.Struct({\n ...PublishedDocumentSelection.fields,\n}).annotate({ identifier: 'PublishedDocumentSurroundQuery' })\nexport interface PublishedDocumentSurroundQuery extends Schema.Schema.Type<typeof PublishedDocumentSurroundQuery> {}\n\nexport const PublishedDocumentPage = Schema.Struct({\n items: Schema.Array(CompiledDocument),\n total: nonNegativeInt,\n}).annotate({ identifier: 'PublishedDocumentPage' })\nexport interface PublishedDocumentPage extends Schema.Schema.Type<typeof PublishedDocumentPage> {}\n\nexport const DocumentNavigationQuery = Schema.Struct({\n collection: Schema.optionalKey(CollectionName),\n locale: Schema.optionalKey(Locale),\n}).annotate({ identifier: 'DocumentNavigationQuery' })\nexport interface DocumentNavigationQuery extends Schema.Schema.Type<typeof DocumentNavigationQuery> {}\n\nconst documentMutationMetadata = {\n reason: Schema.optionalKey(Schema.NonEmptyString.check(Schema.isMaxLength(1_000))),\n}\n\nexport interface DocumentNavigationItem {\n readonly key: PublicPath\n readonly title: string\n readonly path?: PublicPath\n readonly locale?: Locale\n readonly documentId?: DocumentId\n readonly children: ReadonlyArray<DocumentNavigationItem>\n}\n\ninterface DocumentNavigationItemEncoded {\n readonly key: string\n readonly title: string\n readonly path?: string\n readonly locale?: string\n readonly documentId?: string\n readonly children: ReadonlyArray<DocumentNavigationItemEncoded>\n}\n\nexport const DocumentNavigationItem: Schema.Codec<DocumentNavigationItem, DocumentNavigationItemEncoded> =\n Schema.suspend(() =>\n Schema.Struct({\n key: PublicPath,\n title: Schema.NonEmptyString,\n path: Schema.optionalKey(PublicPath),\n locale: Schema.optionalKey(Locale),\n documentId: Schema.optionalKey(DocumentId),\n children: Schema.Array(DocumentNavigationItem),\n }),\n )\n\nexport const DocumentSurround = Schema.Struct({\n previous: Schema.NullOr(CompiledDocument),\n next: Schema.NullOr(CompiledDocument),\n}).annotate({ identifier: 'DocumentSurround' })\nexport interface DocumentSurround extends Schema.Schema.Type<typeof DocumentSurround> {}\n\nexport const HomeDocumentLocation = Schema.Struct({\n kind: Schema.tag('home'),\n})\nexport interface HomeDocumentLocation extends Schema.Schema.Type<typeof HomeDocumentLocation> {}\n\nexport const NestedDocumentLocation = Schema.Struct({\n kind: Schema.tag('entry'),\n parent: Schema.optionalKey(RelativeDocumentPath),\n slug: Slug,\n})\nexport interface NestedDocumentLocation extends Schema.Schema.Type<typeof NestedDocumentLocation> {}\n\nexport const DocumentLocation = Schema.Union([HomeDocumentLocation, NestedDocumentLocation]).pipe(\n Schema.toTaggedUnion('kind'),\n)\nexport type DocumentLocation = typeof DocumentLocation.Type\n\nexport const CreateDocumentInput = Schema.Struct({\n collection: CollectionName,\n locale: Schema.optionalKey(Locale),\n location: DocumentLocation,\n title: Schema.NonEmptyString,\n ...documentMutationMetadata,\n}).annotate({ identifier: 'CreateDocumentInput' })\nexport interface CreateDocumentInput extends Schema.Schema.Type<typeof CreateDocumentInput> {}\n\nexport const UpdateDocumentInput = Schema.Struct({\n documentId: DocumentId,\n expectedVersion: DocumentVersion,\n markdown: Schema.String,\n ...documentMutationMetadata,\n}).annotate({ identifier: 'UpdateDocumentInput' })\nexport interface UpdateDocumentInput extends Schema.Schema.Type<typeof UpdateDocumentInput> {}\n\nexport const MoveDocumentInput = Schema.Struct({\n documentId: DocumentId,\n expectedVersion: DocumentVersion,\n location: DocumentLocation,\n ...documentMutationMetadata,\n}).annotate({ identifier: 'MoveDocumentInput' })\nexport interface MoveDocumentInput extends Schema.Schema.Type<typeof MoveDocumentInput> {}\n\nexport const DuplicateDocumentInput = Schema.Struct({\n ...MoveDocumentInput.fields,\n includeChildren: Schema.Boolean,\n}).annotate({ identifier: 'DuplicateDocumentInput' })\nexport interface DuplicateDocumentInput extends Schema.Schema.Type<typeof DuplicateDocumentInput> {}\n\nexport const UnpublishDocumentInput = Schema.Struct({\n documentId: DocumentId,\n expectedVersion: DocumentVersion,\n ...documentMutationMetadata,\n}).annotate({ identifier: 'UnpublishDocumentInput' })\nexport interface UnpublishDocumentInput extends Schema.Schema.Type<typeof UnpublishDocumentInput> {}\n\nexport const RemoveDocumentInput = Schema.Struct({\n documentId: DocumentId,\n expectedVersion: DocumentVersion,\n ...documentMutationMetadata,\n}).annotate({ identifier: 'RemoveDocumentInput' })\nexport interface RemoveDocumentInput extends Schema.Schema.Type<typeof RemoveDocumentInput> {}\n\nexport const PublishDocumentInput = Schema.Struct({\n documentId: DocumentId,\n expectedVersion: DocumentVersion,\n ...documentMutationMetadata,\n}).annotate({ identifier: 'PublishDocumentInput' })\nexport interface PublishDocumentInput extends Schema.Schema.Type<typeof PublishDocumentInput> {}\n\nexport const RestoreDocumentInput = Schema.Struct({\n documentId: DocumentId,\n revisionId: RevisionId,\n expectedVersion: DocumentVersion,\n ...documentMutationMetadata,\n}).annotate({ identifier: 'RestoreDocumentInput' })\nexport interface RestoreDocumentInput extends Schema.Schema.Type<typeof RestoreDocumentInput> {}\n\nexport const UndeleteDocumentInput = Schema.Struct({\n documentId: DocumentId,\n expectedVersion: DocumentVersion,\n ...documentMutationMetadata,\n}).annotate({ identifier: 'UndeleteDocumentInput' })\nexport interface UndeleteDocumentInput extends Schema.Schema.Type<typeof UndeleteDocumentInput> {}\n\nexport const DOCUMENT_REVISION_ACTIONS = [\n 'document.create',\n 'document.move',\n 'document.remove',\n 'document.restore',\n 'document.undelete',\n 'document.update',\n] as const\n\nexport const DocumentRevisionAction = Schema.Literals(DOCUMENT_REVISION_ACTIONS)\nexport type DocumentRevisionAction = typeof DocumentRevisionAction.Type\n\nexport const DocumentMutationAction = Schema.Literals([\n ...DOCUMENT_REVISION_ACTIONS,\n 'document.publish',\n 'document.unpublish',\n])\nexport type DocumentMutationAction = typeof DocumentMutationAction.Type\n\nexport const DocumentMutationResult = Schema.Struct({\n action: DocumentMutationAction,\n affectedDocumentIds: Schema.optionalKey(Schema.Array(DocumentId)),\n documentId: DocumentId,\n generation: DocumentGeneration,\n revisionId: RevisionId,\n sourcePath: SourcePath,\n version: DocumentVersion,\n entry: Schema.optionalKey(DocumentSummary),\n}).annotate({ identifier: 'DocumentMutationResult' })\nexport interface DocumentMutationResult extends Schema.Schema.Type<typeof DocumentMutationResult> {}\n\nexport const DocumentValidationResult = Schema.Struct({\n valid: Schema.Boolean,\n document: Schema.optionalKey(CompiledDocument),\n issues: Schema.Array(DocumentIssue),\n}).annotate({ identifier: 'DocumentValidationResult' })\nexport interface DocumentValidationResult extends Schema.Schema.Type<typeof DocumentValidationResult> {}\n"],"mappings":"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"}
@@ -1,11 +1,6 @@
1
- import { H as PublicPath, L as DocumentGeneration, P as CollectionName, T as PublishedDocumentLookup, V as EditorNodeId, W as RevisionNumber, r as CompiledDocument, z as DocumentId } from "./models-Citx8jBi.js";
1
+ import { St as RevisionNumber, gt as DocumentId, pt as RequestId, r as CompiledDocument, ut as CollectionName, vt as EditorNodeId, yt as PublicPath } from "./models-BkMgeaOL.js";
2
2
  import { Schema } from "effect";
3
3
 
4
- //#region ../protocol/src/Identity.ts
5
- /** Cross-domain request correlation; decode unknown strings before crossing a seam. */
6
- const RequestId = Schema.String.check(Schema.isUUID()).pipe(Schema.brand("RequestId"));
7
-
8
- //#endregion
9
4
  //#region ../protocol/src/internal/preview/models.ts
10
5
  const DOCUMENT_PREVIEW_CHANNEL = "cms:document-preview";
11
6
  const PreviewSessionId = Schema.String.check(Schema.isUUID()).pipe(Schema.brand("PreviewSessionId"));
@@ -19,29 +14,6 @@ const exactOrigin = Schema.makeFilter((value) => {
19
14
  }
20
15
  }, { expected: "an exact HTTP or HTTPS origin without a path" });
21
16
  const PreviewOrigin = Schema.NonEmptyString.check(exactOrigin).pipe(Schema.brand("PreviewOrigin"));
22
- const PreviewSessionRequest = Schema.Struct({ previewOrigin: PreviewOrigin }).annotate({ identifier: "PreviewSessionRequest" });
23
- const PreviewSession = Schema.Struct({
24
- editorOrigin: PreviewOrigin,
25
- expiresAt: Schema.DateTimeUtcFromString,
26
- previewOrigin: PreviewOrigin,
27
- sessionId: PreviewSessionId,
28
- token: Schema.NonEmptyString
29
- }).annotate({ identifier: "PreviewSession" });
30
- const PreviewSessionAccess = Schema.Struct({ token: PreviewSession.fields.token }).annotate({ identifier: "PreviewSessionAccess" });
31
- const PreviewDraftRequest = Schema.Struct({
32
- lookup: PublishedDocumentLookup,
33
- token: PreviewSession.fields.token
34
- }).annotate({ identifier: "PreviewDraftRequest" });
35
- const PreviewInvalidation = Schema.Struct({
36
- generation: DocumentGeneration,
37
- type: Schema.tag("document-invalidated")
38
- }).annotate({ identifier: "PreviewInvalidation" });
39
- var PreviewSessionInvalid = class extends Schema.TaggedError()("Preview.SessionInvalid", { reason: Schema.Literals([
40
- "expired",
41
- "invalid",
42
- "origin"
43
- ]) }) {};
44
- var PreviewDraftNotFound = class extends Schema.TaggedError()("Preview.DraftNotFound", { lookup: PublishedDocumentLookup }) {};
45
17
  const DocumentPreviewFocusIntent = Schema.Struct({
46
18
  id: PreviewIntentId,
47
19
  documentId: DocumentId,
@@ -141,6 +113,11 @@ const DocumentPreviewMessage = Schema.Union([
141
113
  StudioPatchMessage,
142
114
  StudioFocusMessage,
143
115
  PreviewReadyMessage,
116
+ Schema.Struct({
117
+ ...previewEnvelope,
118
+ type: Schema.tag("preview:error"),
119
+ message: Schema.NullOr(Schema.String)
120
+ }),
144
121
  PreviewManifestMessage,
145
122
  PreviewActivateMessage,
146
123
  PreviewAppliedMessage,
@@ -149,5 +126,5 @@ const DocumentPreviewMessage = Schema.Union([
149
126
  const isDocumentPreviewMessage = Schema.is(DocumentPreviewMessage);
150
127
 
151
128
  //#endregion
152
- export { PreviewIntentId as a, PreviewSession as c, PreviewSessionInvalid as d, PreviewSessionRequest as f, PreviewDraftRequest as i, PreviewSessionAccess as l, RequestId as m, DocumentPreviewMessage as n, PreviewInvalidation as o, isDocumentPreviewMessage as p, PreviewDraftNotFound as r, PreviewOrigin as s, DOCUMENT_PREVIEW_CHANNEL as t, PreviewSessionId as u };
153
- //# sourceMappingURL=models-DS5ClMsH.js.map
129
+ export { PreviewSessionId as a, PreviewOrigin as i, DocumentPreviewMessage as n, isDocumentPreviewMessage as o, PreviewIntentId as r, DOCUMENT_PREVIEW_CHANNEL as t };
130
+ //# sourceMappingURL=models-C3witQBK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models-C3witQBK.js","names":[],"sources":["../../../../protocol/src/internal/preview/models.ts"],"sourcesContent":["import { CompiledDocument } from '../../Documents'\nimport { RequestId } from '../../Identity'\nimport { CollectionName } from '../configuration/scalars'\nimport { DocumentId, EditorNodeId, PublicPath, RevisionNumber } from '../documents/scalars'\nimport { Schema } from 'effect'\n\nexport const DOCUMENT_PREVIEW_CHANNEL = 'cms:document-preview'\n\nexport const PreviewSessionId = Schema.String.check(Schema.isUUID()).pipe(Schema.brand('PreviewSessionId'))\nexport type PreviewSessionId = typeof PreviewSessionId.Type\n\nexport const PreviewIntentId = Schema.String.check(Schema.isUUID()).pipe(Schema.brand('PreviewIntentId'))\nexport type PreviewIntentId = typeof PreviewIntentId.Type\n\nconst exactOrigin = Schema.makeFilter<string>(\n (value) => {\n try {\n const url = new URL(value)\n return (url.protocol === 'http:' || url.protocol === 'https:') && url.origin === value\n } catch {\n return false\n }\n },\n { expected: 'an exact HTTP or HTTPS origin without a path' },\n)\n\nexport const PreviewOrigin = Schema.NonEmptyString.check(exactOrigin).pipe(Schema.brand('PreviewOrigin'))\nexport type PreviewOrigin = typeof PreviewOrigin.Type\n\nexport const DocumentPreviewFocusIntent = Schema.Struct({\n id: PreviewIntentId,\n documentId: DocumentId,\n nodeId: Schema.optionalKey(EditorNodeId),\n origin: Schema.Literals(['editor', 'preview']),\n reveal: Schema.Boolean,\n revision: RevisionNumber,\n})\nexport interface DocumentPreviewFocusIntent extends Schema.Schema.Type<typeof DocumentPreviewFocusIntent> {}\n\nexport const RenderedCompiledDocument = Schema.Struct({\n collection: CollectionName,\n documentId: DocumentId,\n path: PublicPath,\n role: Schema.Literals(['embedded', 'primary', 'related', 'summary']),\n title: Schema.NonEmptyString,\n})\nexport interface RenderedCompiledDocument extends Schema.Schema.Type<typeof RenderedCompiledDocument> {}\n\nexport const RenderedDocumentManifest = Schema.Struct({\n documents: Schema.Array(RenderedCompiledDocument),\n route: PublicPath,\n})\nexport interface RenderedDocumentManifest extends Schema.Schema.Type<typeof RenderedDocumentManifest> {}\n\nconst previewEnvelope = {\n channel: Schema.Literal(DOCUMENT_PREVIEW_CHANNEL),\n sessionId: PreviewSessionId,\n}\n\nconst StudioConnectMessage = Schema.Struct({\n ...previewEnvelope,\n type: Schema.tag('studio:connect'),\n})\n\nconst StudioModeMessage = Schema.Struct({\n ...previewEnvelope,\n type: Schema.tag('studio:mode'),\n mode: Schema.Literals(['browse', 'edit']),\n})\n\nconst StudioNavigateMessage = Schema.Struct({\n ...previewEnvelope,\n type: Schema.tag('studio:navigate'),\n path: PublicPath,\n})\n\nconst StudioPatchMessage = Schema.Struct({\n ...previewEnvelope,\n type: Schema.tag('studio:patch'),\n document: CompiledDocument,\n fallbacks: Schema.Record(Schema.String, Schema.String),\n focus: Schema.optionalKey(DocumentPreviewFocusIntent),\n revision: RevisionNumber,\n})\n\nconst StudioFocusMessage = Schema.Struct({\n ...previewEnvelope,\n type: Schema.tag('studio:focus'),\n focus: DocumentPreviewFocusIntent,\n})\n\nconst PreviewReadyMessage = Schema.Struct({\n ...previewEnvelope,\n type: Schema.tag('preview:ready'),\n path: PublicPath,\n})\n\nconst PreviewManifestMessage = Schema.Struct({\n ...previewEnvelope,\n type: Schema.tag('preview:manifest'),\n manifest: RenderedDocumentManifest,\n revision: RevisionNumber,\n})\n\nconst PreviewActivateMessage = Schema.Struct({\n ...previewEnvelope,\n type: Schema.tag('preview:activate'),\n documentId: DocumentId,\n field: Schema.optionalKey(Schema.NonEmptyString),\n nodeId: Schema.optionalKey(EditorNodeId),\n requestId: RequestId,\n revision: RevisionNumber,\n})\n\nconst PreviewAppliedMessage = Schema.Struct({\n ...previewEnvelope,\n type: Schema.tag('preview:applied'),\n intentId: PreviewIntentId,\n nodeId: Schema.optionalKey(EditorNodeId),\n result: Schema.Literals(['exact', 'fallback', 'missing']),\n revision: RevisionNumber,\n})\n\nconst PreviewRenderedMessage = Schema.Struct({\n ...previewEnvelope,\n type: Schema.tag('preview:rendered'),\n revision: RevisionNumber,\n})\n\nexport const DocumentPreviewMessage = Schema.Union([\n StudioConnectMessage,\n StudioModeMessage,\n StudioNavigateMessage,\n StudioPatchMessage,\n StudioFocusMessage,\n PreviewReadyMessage,\n Schema.Struct({ ...previewEnvelope, type: Schema.tag('preview:error'), message: Schema.NullOr(Schema.String) }),\n PreviewManifestMessage,\n PreviewActivateMessage,\n PreviewAppliedMessage,\n PreviewRenderedMessage,\n]).pipe(Schema.toTaggedUnion('type'))\nexport type DocumentPreviewMessage = typeof DocumentPreviewMessage.Type\n\nexport const isDocumentPreviewMessage = Schema.is(DocumentPreviewMessage)\n\ntype PreviewPayload<Message extends DocumentPreviewMessage> = Message extends DocumentPreviewMessage\n ? Omit<Message, 'channel' | 'sessionId'>\n : never\n\nexport type StudioPreviewPayload = PreviewPayload<\n Extract<DocumentPreviewMessage, { readonly type: `studio:${string}` }>\n>\n\nexport type PreviewSitePayload = PreviewPayload<Extract<DocumentPreviewMessage, { readonly type: `preview:${string}` }>>\n"],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { blockComponentsKey } from "./delivery/blocks.js";
2
+ import blocks from "#cms/blocks";
3
+ import { defineNuxtPlugin } from "nuxt/app";
4
+ import { shallowRef } from "vue";
5
+
6
+ //#region src/runtime/blocks.ts
7
+ var blocks_default = defineNuxtPlugin((nuxtApp) => {
8
+ const components = shallowRef(blocks);
9
+ nuxtApp.vueApp.provide(blockComponentsKey, components);
10
+ if (import.meta.hot) import.meta.hot.accept("#cms/blocks", (module) => {
11
+ if (module) components.value = module.default;
12
+ });
13
+ });
14
+
15
+ //#endregion
16
+ export { blocks_default as default };
17
+ //# sourceMappingURL=blocks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blocks.js","names":[],"sources":["../../../../src/runtime/blocks.ts"],"sourcesContent":["import blocks from '#cms/blocks'\nimport { defineNuxtPlugin } from 'nuxt/app'\nimport { shallowRef } from 'vue'\nimport { blockComponentsKey } from './delivery/blocks'\n\nexport default defineNuxtPlugin((nuxtApp) => {\n const components = shallowRef(blocks)\n nuxtApp.vueApp.provide(blockComponentsKey, components)\n if (import.meta.hot) {\n import.meta.hot.accept('#cms/blocks', (module) => {\n if (module) components.value = module.default\n })\n }\n})\n"],"mappings":";;;;;;AAKA,qBAAe,kBAAkB,YAAY;CAC3C,MAAM,aAAa,WAAW,MAAM;CACpC,QAAQ,OAAO,QAAQ,oBAAoB,UAAU;CACrD,IAAI,YAAY,KACd,YAAY,IAAI,OAAO,gBAAgB,WAAW;EAChD,IAAI,QAAQ,WAAW,QAAQ,OAAO;CACxC,CAAC;AAEL,CAAC"}
@@ -2,9 +2,12 @@ import { useCmsInstallation } from "./plugin.js";
2
2
  import { defineWebSocketHandler } from "h3";
3
3
 
4
4
  //#region src/runtime/collaboration.ts
5
+ const installations = /* @__PURE__ */ new WeakMap();
5
6
  var collaboration_default = defineWebSocketHandler({
6
7
  open(peer) {
7
- return useCmsInstallation().then((installation) => {
8
+ const installation = useCmsInstallation();
9
+ installations.set(peer.websocket, installation);
10
+ return installation.then((installation) => {
8
11
  const request = new Request(peer.request.url, { headers: peer.request.headers });
9
12
  installation.webSocket.open({
10
13
  request,
@@ -13,12 +16,14 @@ var collaboration_default = defineWebSocketHandler({
13
16
  });
14
17
  },
15
18
  message(peer, message) {
16
- return useCmsInstallation().then((installation) => {
19
+ return installations.get(peer.websocket)?.then((installation) => {
17
20
  installation.webSocket.message(collaborationSocket(peer.websocket), message.uint8Array());
18
21
  });
19
22
  },
20
23
  close(peer, details) {
21
- return useCmsInstallation().then((installation) => {
24
+ const installation = installations.get(peer.websocket);
25
+ installations.delete(peer.websocket);
26
+ return installation?.then((installation) => {
22
27
  installation.webSocket.close(collaborationSocket(peer.websocket), {
23
28
  code: details.code,
24
29
  reason: details.reason
@@ -26,7 +31,7 @@ var collaboration_default = defineWebSocketHandler({
26
31
  });
27
32
  },
28
33
  error(peer) {
29
- return useCmsInstallation().then((installation) => {
34
+ return installations.get(peer.websocket)?.then((installation) => {
30
35
  installation.webSocket.error(collaborationSocket(peer.websocket));
31
36
  });
32
37
  }
@@ -1 +1 @@
1
- {"version":3,"file":"collaboration.js","names":[],"sources":["../../../../src/runtime/collaboration.ts"],"sourcesContent":["import type { CmsInstallation } from '@internal/platform-node/Installation'\nimport { defineWebSocketHandler } from 'h3'\nimport { useCmsInstallation } from './plugin'\n\ntype CollaborationSocket = Parameters<CmsInstallation['webSocket']['open']>[0]['socket']\ntype H3WebSocketHooks = Parameters<typeof defineWebSocketHandler>[0]\ntype H3Socket = Parameters<NonNullable<H3WebSocketHooks['open']>>[0]['websocket']\n\nexport default defineWebSocketHandler({\n open(peer) {\n return useCmsInstallation().then((installation) => {\n const request = new Request(peer.request.url, { headers: peer.request.headers })\n installation.webSocket.open({ request, socket: collaborationSocket(peer.websocket) })\n })\n },\n message(peer, message) {\n return useCmsInstallation().then((installation) => {\n installation.webSocket.message(collaborationSocket(peer.websocket), message.uint8Array())\n })\n },\n close(peer, details) {\n return useCmsInstallation().then((installation) => {\n installation.webSocket.close(collaborationSocket(peer.websocket), {\n code: details.code,\n reason: details.reason,\n })\n })\n },\n error(peer) {\n return useCmsInstallation().then((installation) => {\n installation.webSocket.error(collaborationSocket(peer.websocket))\n })\n },\n})\n\nfunction collaborationSocket(socket: H3Socket): CollaborationSocket {\n // SAFETY: crossws exposes the standard send/close/event WebSocket surface consumed by Hocuspocus.\n return socket as CollaborationSocket\n}\n"],"mappings":";;;;AAQA,4BAAe,uBAAuB;CACpC,KAAK,MAAM;EACT,OAAO,mBAAmB,CAAC,CAAC,MAAM,iBAAiB;GACjD,MAAM,UAAU,IAAI,QAAQ,KAAK,QAAQ,KAAK,EAAE,SAAS,KAAK,QAAQ,QAAQ,CAAC;GAC/E,aAAa,UAAU,KAAK;IAAE;IAAS,QAAQ,oBAAoB,KAAK,SAAS;GAAE,CAAC;EACtF,CAAC;CACH;CACA,QAAQ,MAAM,SAAS;EACrB,OAAO,mBAAmB,CAAC,CAAC,MAAM,iBAAiB;GACjD,aAAa,UAAU,QAAQ,oBAAoB,KAAK,SAAS,GAAG,QAAQ,WAAW,CAAC;EAC1F,CAAC;CACH;CACA,MAAM,MAAM,SAAS;EACnB,OAAO,mBAAmB,CAAC,CAAC,MAAM,iBAAiB;GACjD,aAAa,UAAU,MAAM,oBAAoB,KAAK,SAAS,GAAG;IAChE,MAAM,QAAQ;IACd,QAAQ,QAAQ;GAClB,CAAC;EACH,CAAC;CACH;CACA,MAAM,MAAM;EACV,OAAO,mBAAmB,CAAC,CAAC,MAAM,iBAAiB;GACjD,aAAa,UAAU,MAAM,oBAAoB,KAAK,SAAS,CAAC;EAClE,CAAC;CACH;AACF,CAAC;AAED,SAAS,oBAAoB,QAAuC;CAElE,OAAO;AACT"}
1
+ {"version":3,"file":"collaboration.js","names":[],"sources":["../../../../src/runtime/collaboration.ts"],"sourcesContent":["import type { CmsInstallation } from '@internal/platform-node/Installation'\nimport { defineWebSocketHandler } from 'h3'\nimport { useCmsInstallation } from './plugin'\n\ntype CollaborationSocket = Parameters<CmsInstallation['webSocket']['open']>[0]['socket']\ntype H3WebSocketHooks = Parameters<typeof defineWebSocketHandler>[0]\ntype H3Socket = Parameters<NonNullable<H3WebSocketHooks['open']>>[0]['websocket']\n\n// A socket belongs to the worker installation that accepted it, including during Nitro shutdown.\nconst installations = new WeakMap<H3Socket, Promise<CmsInstallation>>()\n\nexport default defineWebSocketHandler({\n open(peer) {\n const installation = useCmsInstallation()\n installations.set(peer.websocket, installation)\n return installation.then((installation) => {\n const request = new Request(peer.request.url, { headers: peer.request.headers })\n installation.webSocket.open({ request, socket: collaborationSocket(peer.websocket) })\n })\n },\n message(peer, message) {\n return installations.get(peer.websocket)?.then((installation) => {\n installation.webSocket.message(collaborationSocket(peer.websocket), message.uint8Array())\n })\n },\n close(peer, details) {\n const installation = installations.get(peer.websocket)\n installations.delete(peer.websocket)\n return installation?.then((installation) => {\n installation.webSocket.close(collaborationSocket(peer.websocket), {\n code: details.code,\n reason: details.reason,\n })\n })\n },\n error(peer) {\n return installations.get(peer.websocket)?.then((installation) => {\n installation.webSocket.error(collaborationSocket(peer.websocket))\n })\n },\n})\n\nfunction collaborationSocket(socket: H3Socket): CollaborationSocket {\n // SAFETY: crossws exposes the standard send/close/event WebSocket surface consumed by Hocuspocus.\n return socket as CollaborationSocket\n}\n"],"mappings":";;;;AASA,MAAM,gCAAgB,IAAI,QAA4C;AAEtE,4BAAe,uBAAuB;CACpC,KAAK,MAAM;EACT,MAAM,eAAe,mBAAmB;EACxC,cAAc,IAAI,KAAK,WAAW,YAAY;EAC9C,OAAO,aAAa,MAAM,iBAAiB;GACzC,MAAM,UAAU,IAAI,QAAQ,KAAK,QAAQ,KAAK,EAAE,SAAS,KAAK,QAAQ,QAAQ,CAAC;GAC/E,aAAa,UAAU,KAAK;IAAE;IAAS,QAAQ,oBAAoB,KAAK,SAAS;GAAE,CAAC;EACtF,CAAC;CACH;CACA,QAAQ,MAAM,SAAS;EACrB,OAAO,cAAc,IAAI,KAAK,SAAS,CAAC,EAAE,MAAM,iBAAiB;GAC/D,aAAa,UAAU,QAAQ,oBAAoB,KAAK,SAAS,GAAG,QAAQ,WAAW,CAAC;EAC1F,CAAC;CACH;CACA,MAAM,MAAM,SAAS;EACnB,MAAM,eAAe,cAAc,IAAI,KAAK,SAAS;EACrD,cAAc,OAAO,KAAK,SAAS;EACnC,OAAO,cAAc,MAAM,iBAAiB;GAC1C,aAAa,UAAU,MAAM,oBAAoB,KAAK,SAAS,GAAG;IAChE,MAAM,QAAQ;IACd,QAAQ,QAAQ;GAClB,CAAC;EACH,CAAC;CACH;CACA,MAAM,MAAM;EACV,OAAO,cAAc,IAAI,KAAK,SAAS,CAAC,EAAE,MAAM,iBAAiB;GAC/D,aAAa,UAAU,MAAM,oBAAoB,KAAK,SAAS,CAAC;EAClE,CAAC;CACH;AACF,CAAC;AAED,SAAS,oBAAoB,QAAuC;CAElE,OAAO;AACT"}
@@ -1,6 +1,7 @@
1
+ import { blockComponentsKey } from "./blocks.js";
1
2
  import DocumentScope_default from "./DocumentScope.js";
2
3
  import { Predicate } from "effect";
3
- import { defineComponent, h } from "vue";
4
+ import { defineComponent, h, inject, shallowRef } from "vue";
4
5
  import { MarkdownDocument } from "@comark/vue";
5
6
 
6
7
  //#region src/runtime/delivery/DocumentRenderer.ts
@@ -11,15 +12,17 @@ var DocumentRenderer_default = defineComponent({
11
12
  type: Object
12
13
  } },
13
14
  setup(props) {
15
+ const components = inject(blockComponentsKey, shallowRef({}));
14
16
  return () => h(DocumentScope_default, {
15
17
  as: "article",
16
18
  role: "primary",
17
19
  value: props.value
18
- }, { default: ({ value }) => renderDocument(value) });
20
+ }, { default: ({ value }) => renderDocument(value, components.value) });
19
21
  }
20
22
  });
21
- function renderDocument(value) {
23
+ function renderDocument(value, components = {}) {
22
24
  return h(MarkdownDocument, {
25
+ components,
23
26
  documentKey: value.id,
24
27
  value: toComarkDocument(value.body)
25
28
  });
@@ -1 +1 @@
1
- {"version":3,"file":"DocumentRenderer.js","names":["DocumentScope"],"sources":["../../../../../src/runtime/delivery/DocumentRenderer.ts"],"sourcesContent":["import type { PropType } from 'vue'\nimport type { MarkdownDocument as ComarkDocument, Node as ComarkNode } from 'comark'\nimport type { DeliveryDocument, DeliveryMarkdownDocument, DeliveryMarkdownNode } from './types'\nimport { MarkdownDocument } from '@comark/vue'\nimport { Predicate } from 'effect'\nimport { defineComponent, h } from 'vue'\nimport DocumentScope from './DocumentScope'\n\nexport default defineComponent({\n name: 'DocumentRenderer',\n props: {\n // SAFETY: DeliveryDocument is an object contract, so Object is its matching Vue runtime constructor.\n value: { required: true, type: Object as PropType<DeliveryDocument> },\n },\n setup(props) {\n return () =>\n h(\n DocumentScope,\n { as: 'article', role: 'primary', value: props.value },\n {\n default: ({ value }: { value: DeliveryDocument }) => renderDocument(value),\n },\n )\n },\n})\n\nexport function renderDocument(value: DeliveryDocument) {\n return h(MarkdownDocument, { documentKey: value.id, value: toComarkDocument(value.body) })\n}\n\nfunction toComarkDocument(document: DeliveryMarkdownDocument): ComarkDocument {\n return {\n frontmatter: { ...document.frontmatter },\n meta: { ...document.meta },\n nodes: document.nodes.map(toComarkNode),\n }\n}\n\nfunction toComarkNode(node: DeliveryMarkdownNode): ComarkNode {\n if (Predicate.isString(node)) return node\n if (node[0] === null) return [null, { ...node[1] }, node[2]]\n const [tag, attributes, ...children] = node\n return [tag, { ...attributes }, ...children.map(toComarkNode)]\n}\n"],"mappings":";;;;;;AAQA,+BAAe,gBAAgB;CAC7B,MAAM;CACN,OAAO,EAEL,OAAO;EAAE,UAAU;EAAM,MAAM;CAAqC,EACtE;CACA,MAAM,OAAO;EACX,aACE,EACEA,uBACA;GAAE,IAAI;GAAW,MAAM;GAAW,OAAO,MAAM;EAAM,GACrD,EACE,UAAU,EAAE,YAAyC,eAAe,KAAK,EAC3E,CACF;CACJ;AACF,CAAC;AAED,SAAgB,eAAe,OAAyB;CACtD,OAAO,EAAE,kBAAkB;EAAE,aAAa,MAAM;EAAI,OAAO,iBAAiB,MAAM,IAAI;CAAE,CAAC;AAC3F;AAEA,SAAS,iBAAiB,UAAoD;CAC5E,OAAO;EACL,aAAa,EAAE,GAAG,SAAS,YAAY;EACvC,MAAM,EAAE,GAAG,SAAS,KAAK;EACzB,OAAO,SAAS,MAAM,IAAI,YAAY;CACxC;AACF;AAEA,SAAS,aAAa,MAAwC;CAC5D,IAAI,UAAU,SAAS,IAAI,GAAG,OAAO;CACrC,IAAI,KAAK,OAAO,MAAM,OAAO;EAAC;EAAM,EAAE,GAAG,KAAK,GAAG;EAAG,KAAK;CAAE;CAC3D,MAAM,CAAC,KAAK,YAAY,GAAG,YAAY;CACvC,OAAO;EAAC;EAAK,EAAE,GAAG,WAAW;EAAG,GAAG,SAAS,IAAI,YAAY;CAAC;AAC/D"}
1
+ {"version":3,"file":"DocumentRenderer.js","names":["DocumentScope"],"sources":["../../../../../src/runtime/delivery/DocumentRenderer.ts"],"sourcesContent":["import type { Component, PropType } from 'vue'\nimport type { MarkdownDocument as ComarkDocument, Node as ComarkNode } from 'comark'\nimport type { DeliveryDocument, DeliveryMarkdownDocument, DeliveryMarkdownNode } from './types'\nimport { MarkdownDocument } from '@comark/vue'\nimport { Predicate } from 'effect'\nimport { defineComponent, h, inject, shallowRef } from 'vue'\nimport DocumentScope from './DocumentScope'\nimport { blockComponentsKey } from './blocks'\n\nexport default defineComponent({\n name: 'DocumentRenderer',\n props: {\n // SAFETY: DeliveryDocument is an object contract, so Object is its matching Vue runtime constructor.\n value: { required: true, type: Object as PropType<DeliveryDocument> },\n },\n setup(props) {\n const components = inject(blockComponentsKey, shallowRef({}))\n return () =>\n h(\n DocumentScope,\n { as: 'article', role: 'primary', value: props.value },\n {\n default: ({ value }: { value: DeliveryDocument }) => renderDocument(value, components.value),\n },\n )\n },\n})\n\nexport function renderDocument(value: DeliveryDocument, components: Record<string, Component> = {}) {\n return h(MarkdownDocument, { components, documentKey: value.id, value: toComarkDocument(value.body) })\n}\n\nfunction toComarkDocument(document: DeliveryMarkdownDocument): ComarkDocument {\n return {\n frontmatter: { ...document.frontmatter },\n meta: { ...document.meta },\n nodes: document.nodes.map(toComarkNode),\n }\n}\n\nfunction toComarkNode(node: DeliveryMarkdownNode): ComarkNode {\n if (Predicate.isString(node)) return node\n if (node[0] === null) return [null, { ...node[1] }, node[2]]\n const [tag, attributes, ...children] = node\n return [tag, { ...attributes }, ...children.map(toComarkNode)]\n}\n"],"mappings":";;;;;;;AASA,+BAAe,gBAAgB;CAC7B,MAAM;CACN,OAAO,EAEL,OAAO;EAAE,UAAU;EAAM,MAAM;CAAqC,EACtE;CACA,MAAM,OAAO;EACX,MAAM,aAAa,OAAO,oBAAoB,WAAW,CAAC,CAAC,CAAC;EAC5D,aACE,EACEA,uBACA;GAAE,IAAI;GAAW,MAAM;GAAW,OAAO,MAAM;EAAM,GACrD,EACE,UAAU,EAAE,YAAyC,eAAe,OAAO,WAAW,KAAK,EAC7F,CACF;CACJ;AACF,CAAC;AAED,SAAgB,eAAe,OAAyB,aAAwC,CAAC,GAAG;CAClG,OAAO,EAAE,kBAAkB;EAAE;EAAY,aAAa,MAAM;EAAI,OAAO,iBAAiB,MAAM,IAAI;CAAE,CAAC;AACvG;AAEA,SAAS,iBAAiB,UAAoD;CAC5E,OAAO;EACL,aAAa,EAAE,GAAG,SAAS,YAAY;EACvC,MAAM,EAAE,GAAG,SAAS,KAAK;EACzB,OAAO,SAAS,MAAM,IAAI,YAAY;CACxC;AACF;AAEA,SAAS,aAAa,MAAwC;CAC5D,IAAI,UAAU,SAAS,IAAI,GAAG,OAAO;CACrC,IAAI,KAAK,OAAO,MAAM,OAAO;EAAC;EAAM,EAAE,GAAG,KAAK,GAAG;EAAG,KAAK;CAAE;CAC3D,MAAM,CAAC,KAAK,YAAY,GAAG,YAAY;CACvC,OAAO;EAAC;EAAK,EAAE,GAAG,WAAW;EAAG,GAAG,SAAS,IAAI,YAAY;CAAC;AAC/D"}
@@ -0,0 +1,6 @@
1
+ //#region src/runtime/delivery/blocks.ts
2
+ const blockComponentsKey = Symbol("cms-block-components");
3
+
4
+ //#endregion
5
+ export { blockComponentsKey };
6
+ //# sourceMappingURL=blocks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blocks.js","names":[],"sources":["../../../../../src/runtime/delivery/blocks.ts"],"sourcesContent":["import type { Component, InjectionKey, ShallowRef } from 'vue'\n\nexport const blockComponentsKey: InjectionKey<ShallowRef<Record<string, Component>>> = Symbol('cms-block-components')\n"],"mappings":";AAEA,MAAa,qBAA0E,OAAO,sBAAsB"}
@@ -0,0 +1,12 @@
1
+ import { n as readPreviewLocation } from "../../location-DtYv2aes.js";
2
+ import { useRequestURL, useState } from "nuxt/app";
3
+
4
+ //#region src/runtime/delivery/context.ts
5
+ /** Per Nuxt app/request, serialized through hydration and retained during navigation. Access is checked by the preview API. */
6
+ function usePreviewDelivery() {
7
+ return useState("cms:preview-delivery", () => Boolean(readPreviewLocation(useRequestURL())));
8
+ }
9
+
10
+ //#endregion
11
+ export { usePreviewDelivery };
12
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","names":[],"sources":["../../../../../src/runtime/delivery/context.ts"],"sourcesContent":["import { useRequestURL, useState } from 'nuxt/app'\nimport { readPreviewLocation } from '@internal/protocol/Preview'\n\n/** Per Nuxt app/request, serialized through hydration and retained during navigation. Access is checked by the preview API. */\nexport function usePreviewDelivery() {\n return useState('cms:preview-delivery', () => Boolean(readPreviewLocation(useRequestURL())))\n}\n"],"mappings":";;;;;AAIA,SAAgB,qBAAqB;CACnC,OAAO,SAAS,8BAA8B,QAAQ,oBAAoB,cAAc,CAAC,CAAC,CAAC;AAC7F"}
@@ -8,9 +8,11 @@ function resolveDocumentPage(request, registerMetadata) {
8
8
  title: () => request.page()?.title
9
9
  });
10
10
  return request.ready.then(() => {
11
- const error = request.error();
12
- if (error) throw error;
13
- if (!request.page()) throw request.notFound();
11
+ const failure = request.error() ?? (!request.page() ? request.notFound() : void 0);
12
+ if (failure) {
13
+ if (request.renderError) return request.renderError(failure);
14
+ throw failure;
15
+ }
14
16
  return () => {
15
17
  const page = request.page();
16
18
  return page ? h(DocumentRenderer_default, { value: page }) : void 0;
@@ -1 +1 @@
1
- {"version":3,"file":"document-page.js","names":["DocumentRenderer"],"sources":["../../../../../src/runtime/delivery/document-page.ts"],"sourcesContent":["import type { VNode } from 'vue'\nimport type { DeliveryDocument } from './types'\nimport { h } from 'vue'\nimport DocumentRenderer from './DocumentRenderer'\n\nexport interface DocumentPageMetadata {\n readonly description: () => string | undefined\n readonly title: () => string | undefined\n}\n\nexport interface DocumentPageRequest {\n readonly error: () => Error | undefined\n readonly notFound: () => Error\n readonly page: () => DeliveryDocument | null\n readonly ready: Promise<unknown>\n}\n\nexport function resolveDocumentPage(\n request: DocumentPageRequest,\n registerMetadata: (metadata: DocumentPageMetadata) => void,\n): Promise<() => VNode | undefined> {\n registerMetadata({\n description: () => request.page()?.description,\n title: () => request.page()?.title,\n })\n\n return request.ready.then(() => {\n const error = request.error()\n if (error) throw error\n if (!request.page()) throw request.notFound()\n\n return () => {\n const page = request.page()\n return page ? h(DocumentRenderer, { value: page }) : undefined\n }\n })\n}\n"],"mappings":";;;;AAiBA,SAAgB,oBACd,SACA,kBACkC;CAClC,iBAAiB;EACf,mBAAmB,QAAQ,KAAK,CAAC,EAAE;EACnC,aAAa,QAAQ,KAAK,CAAC,EAAE;CAC/B,CAAC;CAED,OAAO,QAAQ,MAAM,WAAW;EAC9B,MAAM,QAAQ,QAAQ,MAAM;EAC5B,IAAI,OAAO,MAAM;EACjB,IAAI,CAAC,QAAQ,KAAK,GAAG,MAAM,QAAQ,SAAS;EAE5C,aAAa;GACX,MAAM,OAAO,QAAQ,KAAK;GAC1B,OAAO,OAAO,EAAEA,0BAAkB,EAAE,OAAO,KAAK,CAAC,IAAI;EACvD;CACF,CAAC;AACH"}
1
+ {"version":3,"file":"document-page.js","names":["DocumentRenderer"],"sources":["../../../../../src/runtime/delivery/document-page.ts"],"sourcesContent":["import type { VNode } from 'vue'\nimport type { DeliveryDocument } from './types'\nimport { h } from 'vue'\nimport DocumentRenderer from './DocumentRenderer'\n\nexport interface DocumentPageMetadata {\n readonly description: () => string | undefined\n readonly title: () => string | undefined\n}\n\nexport interface DocumentPageRequest {\n readonly error: () => Error | undefined\n readonly notFound: () => Error\n readonly page: () => DeliveryDocument | null\n readonly renderError?: ((error: Error) => () => VNode) | undefined\n readonly ready: Promise<unknown>\n}\n\nexport function resolveDocumentPage(\n request: DocumentPageRequest,\n registerMetadata: (metadata: DocumentPageMetadata) => void,\n): Promise<() => VNode | undefined> {\n registerMetadata({\n description: () => request.page()?.description,\n title: () => request.page()?.title,\n })\n\n return request.ready.then(() => {\n const error = request.error()\n const failure = error ?? (!request.page() ? request.notFound() : undefined)\n if (failure) {\n if (request.renderError) return request.renderError(failure)\n throw failure\n }\n\n return () => {\n const page = request.page()\n return page ? h(DocumentRenderer, { value: page }) : undefined\n }\n })\n}\n"],"mappings":";;;;AAkBA,SAAgB,oBACd,SACA,kBACkC;CAClC,iBAAiB;EACf,mBAAmB,QAAQ,KAAK,CAAC,EAAE;EACnC,aAAa,QAAQ,KAAK,CAAC,EAAE;CAC/B,CAAC;CAED,OAAO,QAAQ,MAAM,WAAW;EAE9B,MAAM,UADQ,QAAQ,MACF,MAAM,CAAC,QAAQ,KAAK,IAAI,QAAQ,SAAS,IAAI;EACjE,IAAI,SAAS;GACX,IAAI,QAAQ,aAAa,OAAO,QAAQ,YAAY,OAAO;GAC3D,MAAM;EACR;EAEA,aAAa;GACX,MAAM,OAAO,QAAQ,KAAK;GAC1B,OAAO,OAAO,EAAEA,0BAAkB,EAAE,OAAO,KAAK,CAAC,IAAI;EACvD;CACF,CAAC;AACH"}
@@ -1,20 +1,36 @@
1
+ import { usePreviewDelivery } from "./context.js";
1
2
  import { resolveDocumentPage } from "./document-page.js";
3
+ import { previewErrorMessage } from "./error.js";
2
4
  import { useDocument } from "./useDocument.js";
3
- import { createError, defineNuxtComponent, useRoute, useSeoMeta } from "nuxt/app";
5
+ import { createError, defineNuxtComponent, useRoute, useSeoMeta, useState } from "nuxt/app";
6
+ import { h } from "vue";
4
7
 
5
8
  //#region src/runtime/delivery/document.ts
6
9
  var document_default = defineNuxtComponent({
7
10
  name: "CmsDocumentPage",
8
11
  setup() {
9
12
  const route = useRoute();
13
+ const preview = usePreviewDelivery();
14
+ const previewError = useState("cms:preview-error", () => null);
10
15
  const request = useDocument(() => route.path);
11
16
  return resolveDocumentPage({
12
17
  error: () => request.error.value,
18
+ renderError: preview.value ? (error) => {
19
+ const status = createError(error).statusCode ?? 500;
20
+ previewError.value = previewErrorMessage(status);
21
+ return () => h("p", {
22
+ role: "alert",
23
+ class: "p-6"
24
+ }, previewError.value ?? "");
25
+ } : void 0,
13
26
  notFound: () => createError({
14
27
  statusCode: 404,
15
28
  statusMessage: "Document not found"
16
29
  }),
17
- page: () => request.data.value,
30
+ page: () => {
31
+ if (request.data.value) previewError.value = null;
32
+ return request.data.value;
33
+ },
18
34
  ready: request
19
35
  }, useSeoMeta);
20
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"document.js","names":[],"sources":["../../../../../src/runtime/delivery/document.ts"],"sourcesContent":["import { createError, defineNuxtComponent, useRoute, useSeoMeta } from 'nuxt/app'\nimport { resolveDocumentPage } from './document-page'\nimport { useDocument } from './useDocument'\n\nexport default defineNuxtComponent({\n name: 'CmsDocumentPage',\n setup() {\n const route = useRoute()\n const request = useDocument(() => route.path)\n return resolveDocumentPage(\n {\n error: () => request.error.value,\n notFound: () =>\n createError({\n statusCode: 404,\n statusMessage: 'Document not found',\n }),\n page: () => request.data.value,\n ready: request,\n },\n useSeoMeta,\n )\n },\n})\n"],"mappings":";;;;;AAIA,uBAAe,oBAAoB;CACjC,MAAM;CACN,QAAQ;EACN,MAAM,QAAQ,SAAS;EACvB,MAAM,UAAU,kBAAkB,MAAM,IAAI;EAC5C,OAAO,oBACL;GACE,aAAa,QAAQ,MAAM;GAC3B,gBACE,YAAY;IACV,YAAY;IACZ,eAAe;GACjB,CAAC;GACH,YAAY,QAAQ,KAAK;GACzB,OAAO;EACT,GACA,UACF;CACF;AACF,CAAC"}
1
+ {"version":3,"file":"document.js","names":[],"sources":["../../../../../src/runtime/delivery/document.ts"],"sourcesContent":["import { createError, defineNuxtComponent, useRoute, useSeoMeta, useState } from 'nuxt/app'\nimport { h } from 'vue'\nimport { usePreviewDelivery } from './context'\nimport { previewErrorMessage } from './error'\nimport { resolveDocumentPage } from './document-page'\nimport { useDocument } from './useDocument'\n\nexport default defineNuxtComponent({\n name: 'CmsDocumentPage',\n setup() {\n const route = useRoute()\n const preview = usePreviewDelivery()\n const previewError = useState<string | null>('cms:preview-error', () => null)\n const request = useDocument(() => route.path)\n return resolveDocumentPage(\n {\n error: () => request.error.value,\n renderError: preview.value\n ? (error) => {\n const status = createError(error).statusCode ?? 500\n previewError.value = previewErrorMessage(status)\n return () => h('p', { role: 'alert', class: 'p-6' }, previewError.value ?? '')\n }\n : undefined,\n notFound: () =>\n createError({\n statusCode: 404,\n statusMessage: 'Document not found',\n }),\n page: () => {\n if (request.data.value) previewError.value = null\n return request.data.value\n },\n ready: request,\n },\n useSeoMeta,\n )\n },\n})\n"],"mappings":";;;;;;;;AAOA,uBAAe,oBAAoB;CACjC,MAAM;CACN,QAAQ;EACN,MAAM,QAAQ,SAAS;EACvB,MAAM,UAAU,mBAAmB;EACnC,MAAM,eAAe,SAAwB,2BAA2B,IAAI;EAC5E,MAAM,UAAU,kBAAkB,MAAM,IAAI;EAC5C,OAAO,oBACL;GACE,aAAa,QAAQ,MAAM;GAC3B,aAAa,QAAQ,SAChB,UAAU;IACT,MAAM,SAAS,YAAY,KAAK,CAAC,CAAC,cAAc;IAChD,aAAa,QAAQ,oBAAoB,MAAM;IAC/C,aAAa,EAAE,KAAK;KAAE,MAAM;KAAS,OAAO;IAAM,GAAG,aAAa,SAAS,EAAE;GAC/E,IACA;GACJ,gBACE,YAAY;IACV,YAAY;IACZ,eAAe;GACjB,CAAC;GACH,YAAY;IACV,IAAI,QAAQ,KAAK,OAAO,aAAa,QAAQ;IAC7C,OAAO,QAAQ,KAAK;GACtB;GACA,OAAO;EACT,GACA,UACF;CACF;AACF,CAAC"}
@@ -0,0 +1,11 @@
1
+ //#region src/runtime/delivery/error.ts
2
+ function previewErrorMessage(status) {
3
+ if (status === 401) return "Your session has expired. Sign in to Studio and reload the preview.";
4
+ if (status === 403) return "You do not have permission to preview this page.";
5
+ if (status === 404) return "This page could not be found. It may have moved or been deleted.";
6
+ return "The preview could not load. Try reloading the page.";
7
+ }
8
+
9
+ //#endregion
10
+ export { previewErrorMessage };
11
+ //# sourceMappingURL=error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.js","names":[],"sources":["../../../../../src/runtime/delivery/error.ts"],"sourcesContent":["export function previewErrorMessage(status: number): string {\n if (status === 401) return 'Your session has expired. Sign in to Studio and reload the preview.'\n if (status === 403) return 'You do not have permission to preview this page.'\n if (status === 404) return 'This page could not be found. It may have moved or been deleted.'\n return 'The preview could not load. Try reloading the page.'\n}\n"],"mappings":";AAAA,SAAgB,oBAAoB,QAAwB;CAC1D,IAAI,WAAW,KAAK,OAAO;CAC3B,IAAI,WAAW,KAAK,OAAO;CAC3B,IAAI,WAAW,KAAK,OAAO;CAC3B,OAAO;AACT"}
@@ -0,0 +1,21 @@
1
+ import { n as readPreviewLocation, t as previewRedirect } from "../../location-DtYv2aes.js";
2
+ import { usePreviewDelivery } from "./context.js";
3
+ import { addRouteMiddleware, defineNuxtPlugin, useRequestURL, useResponseHeader } from "nuxt/app";
4
+
5
+ //#region src/runtime/delivery/plugin.ts
6
+ var plugin_default = defineNuxtPlugin(() => {
7
+ const url = useRequestURL();
8
+ const parameters = readPreviewLocation(url);
9
+ if (!usePreviewDelivery().value || !parameters) return;
10
+ if (import.meta.server) {
11
+ useResponseHeader("cache-control").value = "private, no-store";
12
+ useResponseHeader("x-frame-options").value = "SAMEORIGIN";
13
+ }
14
+ addRouteMiddleware("cms-preview", (to) => {
15
+ return previewRedirect(new URL(to.fullPath, url.origin), parameters);
16
+ }, { global: true });
17
+ });
18
+
19
+ //#endregion
20
+ export { plugin_default as default };
21
+ //# sourceMappingURL=plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.js","names":[],"sources":["../../../../../src/runtime/delivery/plugin.ts"],"sourcesContent":["import { addRouteMiddleware, defineNuxtPlugin, useRequestURL, useResponseHeader } from 'nuxt/app'\nimport { previewRedirect, readPreviewLocation } from '@internal/protocol/Preview'\nimport { usePreviewDelivery } from './context'\n\nexport default defineNuxtPlugin(() => {\n const url = useRequestURL()\n const parameters = readPreviewLocation(url)\n const preview = usePreviewDelivery()\n if (!preview.value || !parameters) return\n if (import.meta.server) {\n useResponseHeader('cache-control').value = 'private, no-store'\n useResponseHeader('x-frame-options').value = 'SAMEORIGIN'\n }\n addRouteMiddleware(\n 'cms-preview',\n (to) => {\n return previewRedirect(new URL(to.fullPath, url.origin), parameters)\n },\n { global: true },\n )\n})\n"],"mappings":";;;;;AAIA,qBAAe,uBAAuB;CACpC,MAAM,MAAM,cAAc;CAC1B,MAAM,aAAa,oBAAoB,GAAG;CAE1C,IAAI,CADY,mBACL,CAAC,CAAC,SAAS,CAAC,YAAY;CACnC,IAAI,YAAY,QAAQ;EACtB,kBAAkB,eAAe,CAAC,CAAC,QAAQ;EAC3C,kBAAkB,iBAAiB,CAAC,CAAC,QAAQ;CAC/C;CACA,mBACE,gBACC,OAAO;EACN,OAAO,gBAAgB,IAAI,IAAI,GAAG,UAAU,IAAI,MAAM,GAAG,UAAU;CACrE,GACA,EAAE,QAAQ,KAAK,CACjB;AACF,CAAC"}
@@ -1,14 +1,17 @@
1
- import { r as CMS_DELIVERY_READ_PATH } from "../../HttpPaths-86qLGB90.js";
2
- import { computed, toValue } from "vue";
1
+ import { o as CMS_PREVIEW_READ_PATH, r as CMS_DELIVERY_READ_PATH } from "../../HttpPaths-BbS21Jy8.js";
2
+ import { usePreviewDelivery } from "./context.js";
3
3
  import { useFetch } from "nuxt/app";
4
+ import { computed, toValue } from "vue";
4
5
 
5
6
  //#region src/runtime/delivery/useDocument.ts
6
7
  function useDocument(path) {
8
+ const preview = usePreviewDelivery();
9
+ const endpoint = computed(() => preview.value ? CMS_PREVIEW_READ_PATH : CMS_DELIVERY_READ_PATH);
7
10
  const body = computed(() => ({
8
11
  kind: "path",
9
12
  path: toValue(path)
10
13
  }));
11
- return useFetch(CMS_DELIVERY_READ_PATH, {
14
+ return useFetch(endpoint, {
12
15
  body,
13
16
  default: () => null,
14
17
  method: "POST"
@@ -1 +1 @@
1
- {"version":3,"file":"useDocument.js","names":[],"sources":["../../../../../src/runtime/delivery/useDocument.ts"],"sourcesContent":["import { useFetch } from 'nuxt/app'\nimport type { MaybeRefOrGetter } from 'vue'\nimport { computed, toValue } from 'vue'\nimport { CMS_DELIVERY_READ_PATH } from '@internal/protocol/HttpPaths'\nimport type { DeliveryDocument } from './types'\n\nexport function useDocument(path: MaybeRefOrGetter<string>) {\n const body = computed(() => ({ kind: 'path' as const, path: toValue(path) }))\n return useFetch<DeliveryDocument | null>(CMS_DELIVERY_READ_PATH, {\n body,\n default: () => null,\n method: 'POST',\n })\n}\n"],"mappings":";;;;;AAMA,SAAgB,YAAY,MAAgC;CAC1D,MAAM,OAAO,gBAAgB;EAAE,MAAM;EAAiB,MAAM,QAAQ,IAAI;CAAE,EAAE;CAC5E,OAAO,SAAkC,wBAAwB;EAC/D;EACA,eAAe;EACf,QAAQ;CACV,CAAC;AACH"}
1
+ {"version":3,"file":"useDocument.js","names":[],"sources":["../../../../../src/runtime/delivery/useDocument.ts"],"sourcesContent":["import { useFetch } from 'nuxt/app'\nimport { usePreviewDelivery } from './context'\nimport type { MaybeRefOrGetter } from 'vue'\nimport { computed, toValue } from 'vue'\nimport { CMS_DELIVERY_READ_PATH, CMS_PREVIEW_READ_PATH } from '@internal/protocol/HttpPaths'\nimport type { DeliveryDocument } from './types'\n\nexport function useDocument(path: MaybeRefOrGetter<string>) {\n const preview = usePreviewDelivery()\n const endpoint = computed(() => (preview.value ? CMS_PREVIEW_READ_PATH : CMS_DELIVERY_READ_PATH))\n const body = computed(() => ({ kind: 'path' as const, path: toValue(path) }))\n return useFetch<DeliveryDocument | null>(endpoint, {\n body,\n default: () => null,\n method: 'POST',\n })\n}\n"],"mappings":";;;;;;AAOA,SAAgB,YAAY,MAAgC;CAC1D,MAAM,UAAU,mBAAmB;CACnC,MAAM,WAAW,eAAgB,QAAQ,QAAQ,wBAAwB,sBAAuB;CAChG,MAAM,OAAO,gBAAgB;EAAE,MAAM;EAAiB,MAAM,QAAQ,IAAI;CAAE,EAAE;CAC5E,OAAO,SAAkC,UAAU;EACjD;EACA,eAAe;EACf,QAAQ;CACV,CAAC;AACH"}
@@ -1,9 +1,12 @@
1
- import { n as CMS_DELIVERY_QUERY_PATH } from "../../HttpPaths-86qLGB90.js";
2
- import { computed, toValue } from "vue";
1
+ import { a as CMS_PREVIEW_QUERY_PATH, n as CMS_DELIVERY_QUERY_PATH } from "../../HttpPaths-BbS21Jy8.js";
2
+ import { usePreviewDelivery } from "./context.js";
3
3
  import { useFetch } from "nuxt/app";
4
+ import { computed, toValue } from "vue";
4
5
 
5
6
  //#region src/runtime/delivery/useDocumentQuery.ts
6
7
  function useDocumentQuery(query) {
8
+ const preview = usePreviewDelivery();
9
+ const endpoint = computed(() => preview.value ? CMS_PREVIEW_QUERY_PATH : CMS_DELIVERY_QUERY_PATH);
7
10
  const body = computed(() => {
8
11
  const value = toValue(query);
9
12
  return {
@@ -11,7 +14,7 @@ function useDocumentQuery(query) {
11
14
  sort: value.sort === void 0 ? void 0 : Array.isArray(value.sort) ? value.sort : [value.sort]
12
15
  };
13
16
  });
14
- return useFetch(CMS_DELIVERY_QUERY_PATH, {
17
+ return useFetch(endpoint, {
15
18
  body,
16
19
  default: () => ({
17
20
  items: [],
@@ -1 +1 @@
1
- {"version":3,"file":"useDocumentQuery.js","names":[],"sources":["../../../../../src/runtime/delivery/useDocumentQuery.ts"],"sourcesContent":["import { useFetch } from 'nuxt/app'\nimport type { MaybeRefOrGetter } from 'vue'\nimport { computed, toValue } from 'vue'\nimport { CMS_DELIVERY_QUERY_PATH } from '@internal/protocol/HttpPaths'\nimport type { DeliveryDocumentPage, DeliveryDocumentQuery } from './types'\n\nexport type { DeliveryDocumentQuery, DeliveryDocumentQuerySort } from './types'\n\nexport function useDocumentQuery(query: MaybeRefOrGetter<DeliveryDocumentQuery>) {\n const body = computed(() => {\n const value = toValue(query)\n return {\n ...value,\n sort: value.sort === undefined ? undefined : Array.isArray(value.sort) ? value.sort : [value.sort],\n }\n })\n return useFetch<DeliveryDocumentPage>(CMS_DELIVERY_QUERY_PATH, {\n body,\n default: () => ({ items: [], total: 0 }),\n method: 'POST',\n })\n}\n"],"mappings":";;;;;AAQA,SAAgB,iBAAiB,OAAgD;CAC/E,MAAM,OAAO,eAAe;EAC1B,MAAM,QAAQ,QAAQ,KAAK;EAC3B,OAAO;GACL,GAAG;GACH,MAAM,MAAM,SAAS,SAAY,SAAY,MAAM,QAAQ,MAAM,IAAI,IAAI,MAAM,OAAO,CAAC,MAAM,IAAI;EACnG;CACF,CAAC;CACD,OAAO,SAA+B,yBAAyB;EAC7D;EACA,gBAAgB;GAAE,OAAO,CAAC;GAAG,OAAO;EAAE;EACtC,QAAQ;CACV,CAAC;AACH"}
1
+ {"version":3,"file":"useDocumentQuery.js","names":[],"sources":["../../../../../src/runtime/delivery/useDocumentQuery.ts"],"sourcesContent":["import { useFetch } from 'nuxt/app'\nimport { usePreviewDelivery } from './context'\nimport type { MaybeRefOrGetter } from 'vue'\nimport { computed, toValue } from 'vue'\nimport { CMS_DELIVERY_QUERY_PATH, CMS_PREVIEW_QUERY_PATH } from '@internal/protocol/HttpPaths'\nimport type { DeliveryDocumentPage, DeliveryDocumentQuery } from './types'\n\nexport type { DeliveryDocumentQuery, DeliveryDocumentQuerySort } from './types'\n\nexport function useDocumentQuery(query: MaybeRefOrGetter<DeliveryDocumentQuery>) {\n const preview = usePreviewDelivery()\n const endpoint = computed(() => (preview.value ? CMS_PREVIEW_QUERY_PATH : CMS_DELIVERY_QUERY_PATH))\n const body = computed(() => {\n const value = toValue(query)\n return {\n ...value,\n sort: value.sort === undefined ? undefined : Array.isArray(value.sort) ? value.sort : [value.sort],\n }\n })\n return useFetch<DeliveryDocumentPage>(endpoint, {\n body,\n default: () => ({ items: [], total: 0 }),\n method: 'POST',\n })\n}\n"],"mappings":";;;;;;AASA,SAAgB,iBAAiB,OAAgD;CAC/E,MAAM,UAAU,mBAAmB;CACnC,MAAM,WAAW,eAAgB,QAAQ,QAAQ,yBAAyB,uBAAwB;CAClG,MAAM,OAAO,eAAe;EAC1B,MAAM,QAAQ,QAAQ,KAAK;EAC3B,OAAO;GACL,GAAG;GACH,MAAM,MAAM,SAAS,SAAY,SAAY,MAAM,QAAQ,MAAM,IAAI,IAAI,MAAM,OAAO,CAAC,MAAM,IAAI;EACnG;CACF,CAAC;CACD,OAAO,SAA+B,UAAU;EAC9C;EACA,gBAAgB;GAAE,OAAO,CAAC;GAAG,OAAO;EAAE;EACtC,QAAQ;CACV,CAAC;AACH"}
@@ -1,3 +1,3 @@
1
- import { n as toS3MediaObjectStoreOptions, t as installCms } from "../installation-BNKaVjni.js";
1
+ import { n as toS3MediaObjectStoreOptions, t as installCms } from "../installation-DeuBiFRE.js";
2
2
 
3
3
  export { installCms, toS3MediaObjectStoreOptions };
@@ -1,13 +1,13 @@
1
1
  import { resolveCmsInstallation } from "../internal/configuration.js";
2
- import { t as installCms } from "../installation-BNKaVjni.js";
2
+ import { t as installCms } from "../installation-DeuBiFRE.js";
3
3
  import { Effect } from "effect";
4
4
  import { defineNitroPlugin, useNitroApp } from "nitropack/runtime";
5
5
 
6
6
  //#region src/runtime/plugin.ts
7
- function createInstallationPlugin(authored, componentMetadata, initialSources, authoring = []) {
7
+ function createInstallationPlugin(authored, authoring, initialSources) {
8
8
  return defineNitroPlugin((nitro) => {
9
9
  if (nitro.cmsInstallation) throw new Error("The CMS installation is already registered with Nitro.");
10
- const configuration = resolveCmsInstallation(authored, componentMetadata, initialSources, authoring);
10
+ const configuration = resolveCmsInstallation(authored, authoring, initialSources);
11
11
  const installation = Effect.runPromise(installCms(configuration));
12
12
  nitro.cmsInstallation = installation;
13
13
  installation.catch((cause) => {
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","names":[],"sources":["../../../../src/runtime/plugin.ts"],"sourcesContent":["import type { CmsInstallation } from '@internal/platform-node/Installation'\nimport type { DocumentImportSource } from '@internal/protocol/Documents'\nimport type { ComponentDefinition } from '@internal/protocol/Configuration'\nimport type { CmsConfiguration } from '../Configuration'\nimport type { cmsComponentDefinitions } from '../internal/component-metadata'\nimport { Effect } from 'effect'\nimport { defineNitroPlugin, useNitroApp } from 'nitropack/runtime'\nimport { resolveCmsInstallation } from '../internal/configuration'\nimport { installCms } from './installation'\n\ndeclare module 'nitropack/types' {\n interface NitroApp {\n cmsInstallation?: Promise<CmsInstallation>\n }\n}\n\nexport function createInstallationPlugin(\n authored: CmsConfiguration,\n componentMetadata: Parameters<typeof cmsComponentDefinitions>[0],\n initialSources: ReadonlyArray<DocumentImportSource>,\n authoring: ReadonlyArray<ComponentDefinition> = [],\n) {\n return defineNitroPlugin((nitro) => {\n if (nitro.cmsInstallation) throw new Error('The CMS installation is already registered with Nitro.')\n const configuration = resolveCmsInstallation(authored, componentMetadata, initialSources, authoring)\n const installation = Effect.runPromise(installCms(configuration))\n nitro.cmsInstallation = installation\n\n void installation.catch((cause: unknown) => {\n nitro.captureError(cause instanceof Error ? cause : new Error(String(cause)), {\n fatal: true,\n tags: ['cms'],\n })\n })\n nitro.hooks.hook('close', () =>\n installation\n .then(\n (current) => current.close(),\n () => undefined,\n )\n .finally(() => {\n if (nitro.cmsInstallation === installation) nitro.cmsInstallation = undefined\n }),\n )\n })\n}\n\nexport function useCmsInstallation(): Promise<CmsInstallation> {\n const installation = useNitroApp().cmsInstallation\n if (!installation) throw new Error('The CMS installation has not been registered with Nitro.')\n return installation\n}\n"],"mappings":";;;;;;AAgBA,SAAgB,yBACd,UACA,mBACA,gBACA,YAAgD,CAAC,GACjD;CACA,OAAO,mBAAmB,UAAU;EAClC,IAAI,MAAM,iBAAiB,MAAM,IAAI,MAAM,wDAAwD;EACnG,MAAM,gBAAgB,uBAAuB,UAAU,mBAAmB,gBAAgB,SAAS;EACnG,MAAM,eAAe,OAAO,WAAW,WAAW,aAAa,CAAC;EAChE,MAAM,kBAAkB;EAExB,AAAK,aAAa,OAAO,UAAmB;GAC1C,MAAM,aAAa,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,KAAK,CAAC,GAAG;IAC5E,OAAO;IACP,MAAM,CAAC,KAAK;GACd,CAAC;EACH,CAAC;EACD,MAAM,MAAM,KAAK,eACf,aACG,MACE,YAAY,QAAQ,MAAM,SACrB,MACR,CAAC,CACA,cAAc;GACb,IAAI,MAAM,oBAAoB,cAAc,MAAM,kBAAkB;EACtE,CAAC,CACL;CACF,CAAC;AACH;AAEA,SAAgB,qBAA+C;CAC7D,MAAM,eAAe,YAAY,CAAC,CAAC;CACnC,IAAI,CAAC,cAAc,MAAM,IAAI,MAAM,0DAA0D;CAC7F,OAAO;AACT"}
1
+ {"version":3,"file":"plugin.js","names":[],"sources":["../../../../src/runtime/plugin.ts"],"sourcesContent":["import type { CmsInstallation } from '@internal/platform-node/Installation'\nimport type { DocumentImportSource } from '@internal/protocol/Documents'\nimport type { AuthoringCatalog } from '@internal/protocol/Configuration'\nimport type { CmsConfiguration } from '../Configuration'\nimport { Effect } from 'effect'\nimport { defineNitroPlugin, useNitroApp } from 'nitropack/runtime'\nimport { resolveCmsInstallation } from '../internal/configuration'\nimport { installCms } from './installation'\n\ndeclare module 'nitropack/types' {\n interface NitroApp {\n cmsInstallation?: Promise<CmsInstallation>\n }\n}\n\nexport function createInstallationPlugin(\n authored: CmsConfiguration,\n authoring: AuthoringCatalog,\n initialSources: ReadonlyArray<DocumentImportSource>,\n) {\n return defineNitroPlugin((nitro) => {\n if (nitro.cmsInstallation) throw new Error('The CMS installation is already registered with Nitro.')\n const configuration = resolveCmsInstallation(authored, authoring, initialSources)\n const installation = Effect.runPromise(installCms(configuration))\n nitro.cmsInstallation = installation\n\n void installation.catch((cause: unknown) => {\n nitro.captureError(cause instanceof Error ? cause : new Error(String(cause)), {\n fatal: true,\n tags: ['cms'],\n })\n })\n nitro.hooks.hook('close', () =>\n installation\n .then(\n (current) => current.close(),\n () => undefined,\n )\n .finally(() => {\n if (nitro.cmsInstallation === installation) nitro.cmsInstallation = undefined\n }),\n )\n })\n}\n\nexport function useCmsInstallation(): Promise<CmsInstallation> {\n const installation = useNitroApp().cmsInstallation\n if (!installation) throw new Error('The CMS installation has not been registered with Nitro.')\n return installation\n}\n"],"mappings":";;;;;;AAeA,SAAgB,yBACd,UACA,WACA,gBACA;CACA,OAAO,mBAAmB,UAAU;EAClC,IAAI,MAAM,iBAAiB,MAAM,IAAI,MAAM,wDAAwD;EACnG,MAAM,gBAAgB,uBAAuB,UAAU,WAAW,cAAc;EAChF,MAAM,eAAe,OAAO,WAAW,WAAW,aAAa,CAAC;EAChE,MAAM,kBAAkB;EAExB,AAAK,aAAa,OAAO,UAAmB;GAC1C,MAAM,aAAa,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,KAAK,CAAC,GAAG;IAC5E,OAAO;IACP,MAAM,CAAC,KAAK;GACd,CAAC;EACH,CAAC;EACD,MAAM,MAAM,KAAK,eACf,aACG,MACE,YAAY,QAAQ,MAAM,SACrB,MACR,CAAC,CACA,cAAc;GACb,IAAI,MAAM,oBAAoB,cAAc,MAAM,kBAAkB;EACtE,CAAC,CACL;CACF,CAAC;AACH;AAEA,SAAgB,qBAA+C;CAC7D,MAAM,eAAe,YAAY,CAAC,CAAC;CACnC,IAAI,CAAC,cAAc,MAAM,IAAI,MAAM,0DAA0D;CAC7F,OAAO;AACT"}
@@ -1,3 +1,3 @@
1
- import { t as openSitePreviewConnection } from "../../connection-ZGtL54qY.js";
1
+ import { t as openSitePreviewConnection } from "../../connection-CBTY-TzB.js";
2
2
 
3
3
  export { openSitePreviewConnection };