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

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 (143) hide show
  1. package/README.md +212 -12
  2. package/bin/cms.mjs +2 -0
  3. package/package.json +30 -15
  4. package/src/{Configuration-DyKo0sLS.js → Configuration-CDMYfTre.js} +26 -147
  5. package/src/Configuration-CDMYfTre.js.map +1 -0
  6. package/src/Configuration.d.ts +24 -8
  7. package/src/Configuration.js +0 -1
  8. package/src/Configuration.js.map +1 -1
  9. package/src/ContentTransfer-C3Av9sWz.js +53 -0
  10. package/src/ContentTransfer-C3Av9sWz.js.map +1 -0
  11. package/src/{DocumentEngine-DYObwMDY.js → DocumentEngine-J7g-emdf.js} +75 -27
  12. package/src/DocumentEngine-J7g-emdf.js.map +1 -0
  13. package/src/DocumentModel.d.ts +8 -9
  14. package/src/DocumentModel.js +13 -3
  15. package/src/DocumentModel.js.map +1 -1
  16. package/src/Forms-BsJMev5_.d.ts +74 -0
  17. package/src/Forms-CfcI3tPU.js +79 -0
  18. package/src/Forms-CfcI3tPU.js.map +1 -0
  19. package/src/Forms-Dj6NuW66.js +367 -0
  20. package/src/Forms-Dj6NuW66.js.map +1 -0
  21. package/src/Forms.d.ts +51 -0
  22. package/src/Forms.js +13 -0
  23. package/src/Forms.js.map +1 -0
  24. package/src/{HttpPaths-BbS21Jy8.js → HttpPaths-c9nLZ9H2.js} +6 -2
  25. package/src/HttpPaths-c9nLZ9H2.js.map +1 -0
  26. package/src/I18n.d.ts +20 -0
  27. package/src/I18n.js +1 -0
  28. package/src/Module.js +59 -14
  29. package/src/Module.js.map +1 -1
  30. package/src/S3MediaObjects-CpPSzJto.js +2777 -0
  31. package/src/S3MediaObjects-CpPSzJto.js.map +1 -0
  32. package/src/Seo-402YumpT.d.ts +198 -0
  33. package/src/cli/content.js +258 -0
  34. package/src/cli/content.js.map +1 -0
  35. package/src/cli.js +71 -0
  36. package/src/cli.js.map +1 -0
  37. package/src/{connection-CBTY-TzB.js → connection-CBAy2qGy.js} +5 -7
  38. package/src/connection-CBAy2qGy.js.map +1 -0
  39. package/src/{installation-DeuBiFRE.js → installation-CNfIriVm.js} +1007 -2246
  40. package/src/installation-CNfIriVm.js.map +1 -0
  41. package/src/internal/authoring-catalog.js +10 -4
  42. package/src/internal/authoring-catalog.js.map +1 -1
  43. package/src/internal/authoring-compiler.js +0 -1
  44. package/src/internal/authoring-compiler.js.map +1 -1
  45. package/src/internal/authoring-metadata.js +4 -4
  46. package/src/internal/authoring-metadata.js.map +1 -1
  47. package/src/internal/cms-config.js +0 -1
  48. package/src/internal/cms-config.js.map +1 -1
  49. package/src/internal/configuration.js +26 -17
  50. package/src/internal/configuration.js.map +1 -1
  51. package/src/internal/document-model.js +69 -21
  52. package/src/internal/document-model.js.map +1 -1
  53. package/src/internal/form-capabilities.js +12 -0
  54. package/src/internal/form-capabilities.js.map +1 -0
  55. package/src/internal/i18n.js +47 -0
  56. package/src/internal/i18n.js.map +1 -0
  57. package/src/internal/studio-app.js +2 -2
  58. package/src/internal/studio-app.js.map +1 -1
  59. package/src/{location-DtYv2aes.js → location-BTqdfIzX.js} +2 -3
  60. package/src/location-BTqdfIzX.js.map +1 -0
  61. package/src/{metadata-DE1Mc2td.js → metadata-BEZPWh-3.js} +3 -72
  62. package/src/metadata-BEZPWh-3.js.map +1 -0
  63. package/src/{models-C3witQBK.js → models-B4IoTmp7.js} +3 -2
  64. package/src/models-B4IoTmp7.js.map +1 -0
  65. package/src/{models-BkMgeaOL.js → models-Bah5B3bT.js} +205 -51
  66. package/src/models-Bah5B3bT.js.map +1 -0
  67. package/src/runtime/blocks.js +22 -9
  68. package/src/runtime/blocks.js.map +1 -1
  69. package/src/runtime/collaboration.js.map +1 -1
  70. package/src/runtime/delivery/DocumentRenderer.js +7 -4
  71. package/src/runtime/delivery/DocumentRenderer.js.map +1 -1
  72. package/src/runtime/delivery/blocks.js +3 -1
  73. package/src/runtime/delivery/blocks.js.map +1 -1
  74. package/src/runtime/delivery/context.js +1 -1
  75. package/src/runtime/delivery/document-page.js +12 -12
  76. package/src/runtime/delivery/document-page.js.map +1 -1
  77. package/src/runtime/delivery/document.js +4 -2
  78. package/src/runtime/delivery/document.js.map +1 -1
  79. package/src/runtime/delivery/error.js.map +1 -1
  80. package/src/runtime/delivery/plugin.js +28 -2
  81. package/src/runtime/delivery/plugin.js.map +1 -1
  82. package/src/runtime/delivery/types.d.ts +5 -0
  83. package/src/runtime/delivery/useCmsDocumentSeo.d.ts +59 -0
  84. package/src/runtime/delivery/useCmsDocumentSeo.js +101 -0
  85. package/src/runtime/delivery/useCmsDocumentSeo.js.map +1 -0
  86. package/src/runtime/delivery/useDocument.js +2 -2
  87. package/src/runtime/delivery/useDocument.js.map +1 -1
  88. package/src/runtime/delivery/useDocumentQuery.js +2 -2
  89. package/src/runtime/delivery/useDocumentQuery.js.map +1 -1
  90. package/src/runtime/forms/document.js +38 -0
  91. package/src/runtime/forms/document.js.map +1 -0
  92. package/src/runtime/forms/useCmsForm.js +190 -0
  93. package/src/runtime/forms/useCmsForm.js.map +1 -0
  94. package/src/runtime/i18n/translator.js +51 -0
  95. package/src/runtime/i18n/translator.js.map +1 -0
  96. package/src/runtime/i18n/useCmsI18n.d.ts +11 -0
  97. package/src/runtime/i18n/useCmsI18n.js +37 -0
  98. package/src/runtime/i18n/useCmsI18n.js.map +1 -0
  99. package/src/runtime/installation.js +1 -1
  100. package/src/runtime/plugin.js +3 -3
  101. package/src/runtime/plugin.js.map +1 -1
  102. package/src/runtime/preview/comark-document.js +0 -1
  103. package/src/runtime/preview/comark-document.js.map +1 -1
  104. package/src/runtime/preview/connection.js +1 -1
  105. package/src/runtime/preview/controller.js +10 -3
  106. package/src/runtime/preview/controller.js.map +1 -1
  107. package/src/runtime/preview/overlay.js.map +1 -1
  108. package/src/runtime/preview/plugin.client.js +59 -48
  109. package/src/runtime/preview/plugin.client.js.map +1 -1
  110. package/src/runtime/preview/protocol.js.map +1 -1
  111. package/src/runtime/preview/store.js +1 -1
  112. package/src/runtime/preview/targets.js +0 -1
  113. package/src/runtime/preview/targets.js.map +1 -1
  114. package/src/runtime/sitemap-entries.js +17 -0
  115. package/src/runtime/sitemap-entries.js.map +1 -0
  116. package/src/runtime/sitemap.js +24 -0
  117. package/src/runtime/sitemap.js.map +1 -0
  118. package/src/runtime/studio-app.js.map +1 -1
  119. package/src/runtime/studio-entry.js +2 -2
  120. package/src/runtime/studio-entry.js.map +1 -1
  121. package/src/runtime/studio-navigation.js +1 -1
  122. package/src/scalars-B2lgGUnj.js +26 -0
  123. package/src/scalars-B2lgGUnj.js.map +1 -0
  124. package/src/{store-CfFFx9Ua.js → store-b2CSXgMt.js} +12 -7
  125. package/src/store-b2CSXgMt.js.map +1 -0
  126. package/studio/{CreateDocumentDialog--L9lTfx6.js → CreateDocumentDialog-GGey1uBc.js} +44 -44
  127. package/studio/{collaboration-DUuu678R.js → collaboration-DcK2F6v9.js} +7 -6
  128. package/studio/{documentPlanning-BXX04Woe.js → documentPlanning-DRErYmBU.js} +7340 -6469
  129. package/studio/{editor-PexnXkJY.js → editor-Bzlh3zXt.js} +7965 -7955
  130. package/studio/host.css +1 -1
  131. package/studio/host.js +10416 -7981
  132. package/src/Configuration-DyKo0sLS.js.map +0 -1
  133. package/src/DocumentEngine-DYObwMDY.js.map +0 -1
  134. package/src/HttpPaths-BbS21Jy8.js.map +0 -1
  135. package/src/StudioHttp-jR2-bc01.js +0 -718
  136. package/src/StudioHttp-jR2-bc01.js.map +0 -1
  137. package/src/connection-CBTY-TzB.js.map +0 -1
  138. package/src/installation-DeuBiFRE.js.map +0 -1
  139. package/src/location-DtYv2aes.js.map +0 -1
  140. package/src/metadata-DE1Mc2td.js.map +0 -1
  141. package/src/models-BkMgeaOL.js.map +0 -1
  142. package/src/models-C3witQBK.js.map +0 -1
  143. package/src/store-CfFFx9Ua.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"StudioHttp-jR2-bc01.js","names":["InternalError","Forbidden"],"sources":["../../../../protocol/src/internal/documents/errors.ts","../../../../protocol/src/Activity.ts","../../../../protocol/src/internal/documents/history.ts","../../../../protocol/src/Collaboration.ts","../../../../protocol/src/Users.ts","../../../../protocol/src/Initialization.ts","../../../../protocol/src/internal/http/failures.ts","../../../../protocol/src/internal/http/delivery.ts","../../../../protocol/src/StudioHttp.ts"],"sourcesContent":["import { Schema } from 'effect'\nimport { DocumentIssue, PublishedDocumentLookup } from './models'\nimport { DocumentId, DocumentVersion, RevisionId, SourcePath } from './scalars'\nimport { MediaObjectKey } from '../../Media'\n\nexport class DocumentNotFound extends Schema.TaggedError<DocumentNotFound>()('Document.NotFound', {\n documentId: DocumentId,\n revisionId: Schema.optionalKey(RevisionId),\n}) {}\n\nexport class DocumentPathConflict extends Schema.TaggedError<DocumentPathConflict>()('Document.PathConflict', {\n sourcePath: SourcePath,\n}) {}\n\nexport class DocumentVersionConflict extends Schema.TaggedError<DocumentVersionConflict>()('Document.VersionConflict', {\n documentId: DocumentId,\n expectedVersion: DocumentVersion,\n actualVersion: DocumentVersion,\n}) {}\n\nexport class DocumentMediaUnavailable extends Schema.TaggedError<DocumentMediaUnavailable>()(\n 'Document.MediaUnavailable',\n {\n documentId: DocumentId,\n mediaKeys: Schema.Array(MediaObjectKey).check(Schema.isMinLength(1)),\n },\n) {}\n\nexport class DocumentValidationFailed extends Schema.TaggedError<DocumentValidationFailed>()(\n 'Document.ValidationFailed',\n {\n issues: Schema.Array(DocumentIssue),\n },\n) {}\n\nexport class PublishedDocumentNotFound extends Schema.TaggedError<PublishedDocumentNotFound>()(\n 'PublishedDocument.NotFound',\n { lookup: PublishedDocumentLookup },\n) {}\n","/**\n * Immutable completed Activity facts. Pages are ordered newest-first; cursors are opaque,\n * stable continuation tokens and an invalid cursor is a caller-visible failure.\n */\nimport { Schema } from 'effect'\nimport { StudioActor } from './AccessControl'\nimport { DocumentId } from './internal/documents/scalars'\nimport { nonNegativeInt } from './internal/scalars'\nimport { RequestId } from './Identity'\nimport { MediaId } from './Media'\n\nexport const ActivityId = Schema.String.check(Schema.isUUID()).pipe(Schema.brand('ActivityId'))\nexport type ActivityId = typeof ActivityId.Type\n\nexport const ActivityCursor = Schema.NonEmptyString.pipe(Schema.brand('ActivityCursor'))\nexport type ActivityCursor = typeof ActivityCursor.Type\n\nexport const ACTIVITY_ACTIONS = [\n 'document.created',\n 'document.updated',\n 'document.moved',\n 'document.trashed',\n 'document.revision.restored',\n 'document.untrashed',\n 'document.published',\n 'document.unpublished',\n 'media.uploaded',\n 'media.replaced',\n 'media.removed',\n 'media.cleaned',\n 'user.created',\n 'user.removed',\n 'user.role.changed',\n 'user.sessions.revoked',\n 'authentication.signed-in',\n 'authentication.signed-out',\n 'authentication.password.changed',\n 'authentication.password.reset',\n] as const\n\nexport const ActivityAction = Schema.Literals(ACTIVITY_ACTIONS)\nexport type ActivityAction = typeof ActivityAction.Type\n\nconst DocumentActivityTarget = Schema.Struct({\n kind: Schema.tag('document'),\n documentId: DocumentId,\n})\n\nconst MediaActivityTarget = Schema.Struct({\n kind: Schema.tag('media'),\n mediaId: MediaId,\n})\n\nconst MediaLibraryActivityTarget = Schema.Struct({ kind: Schema.tag('media-library') })\n\nexport const ActivityTarget = Schema.Union([\n DocumentActivityTarget,\n MediaActivityTarget,\n MediaLibraryActivityTarget,\n Schema.Struct({ kind: Schema.tag('user'), userId: Schema.NonEmptyString }),\n]).pipe(Schema.toTaggedUnion('kind'))\nexport type ActivityTarget = typeof ActivityTarget.Type\n\nexport const ActivityTargetKind = Schema.Literals(['document', 'media', 'media-library', 'user'])\nexport type ActivityTargetKind = typeof ActivityTargetKind.Type\n\nexport const ActivityContext = Schema.Struct({\n actor: StudioActor,\n requestId: RequestId,\n reason: Schema.optionalKey(Schema.NonEmptyString.check(Schema.isMaxLength(1_000))),\n}).annotate({ identifier: 'ActivityContext' })\nexport interface ActivityContext extends Schema.Schema.Type<typeof ActivityContext> {}\n\nexport const ActivityEntry = Schema.Struct({\n id: ActivityId,\n action: ActivityAction,\n actor: StudioActor,\n requestId: RequestId,\n reason: ActivityContext.fields.reason,\n target: ActivityTarget,\n details: Schema.JsonObject,\n occurredAt: Schema.DateTimeUtcFromString,\n}).annotate({ identifier: 'ActivityEntry' })\nexport interface ActivityEntry extends Schema.Schema.Type<typeof ActivityEntry> {}\n\nexport const ActivityEntryDraft = Schema.Struct({\n action: ActivityAction,\n context: ActivityContext,\n target: ActivityTarget,\n details: Schema.JsonObject,\n}).annotate({ identifier: 'ActivityEntryDraft' })\nexport interface ActivityEntryDraft extends Schema.Schema.Type<typeof ActivityEntryDraft> {}\n\nexport const ActivityQuery = Schema.Struct({\n action: Schema.optionalKey(ActivityAction),\n actorId: Schema.optionalKey(StudioActor.fields.id),\n cursor: Schema.optionalKey(ActivityCursor),\n limit: Schema.optionalKey(Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: 100 }))),\n requestId: Schema.optionalKey(RequestId),\n targetId: Schema.optionalKey(Schema.NonEmptyString),\n targetKind: Schema.optionalKey(ActivityTargetKind),\n}).annotate({ identifier: 'ActivityQuery' })\nexport interface ActivityQuery extends Schema.Schema.Type<typeof ActivityQuery> {}\n\nexport const ActivityPage = Schema.Struct({\n entries: Schema.Array(ActivityEntry),\n nextCursor: Schema.optionalKey(ActivityCursor),\n total: nonNegativeInt,\n}).annotate({ identifier: 'ActivityPage' })\nexport interface ActivityPage extends Schema.Schema.Type<typeof ActivityPage> {}\n\nexport class ActivityCursorInvalid extends Schema.TaggedError<ActivityCursorInvalid>()('Activity.CursorInvalid', {}) {}\n","import { Schema } from 'effect'\nimport { ActivityEntry } from '../../Activity'\nimport { nonNegativeInt } from '../scalars'\nimport { DocumentRevisionAction } from './models'\nimport { DocumentHistoryCursor, DocumentVersion, DocumentId, RevisionId, SourcePath } from './scalars'\n\nexport const DocumentRevisionSummary = Schema.Struct({\n action: DocumentRevisionAction,\n activity: ActivityEntry,\n createdAt: Schema.DateTimeUtcFromString,\n documentId: DocumentId,\n revisionId: RevisionId,\n sourcePath: SourcePath,\n version: DocumentVersion,\n}).annotate({\n identifier: 'DocumentRevisionSummary',\n})\nexport interface DocumentRevisionSummary extends Schema.Schema.Type<typeof DocumentRevisionSummary> {}\n\nexport const DocumentRevision = Schema.Struct({\n ...DocumentRevisionSummary.fields,\n markdown: Schema.String,\n}).annotate({ identifier: 'DocumentRevision' })\nexport interface DocumentRevision extends Schema.Schema.Type<typeof DocumentRevision> {}\n\nexport const DocumentHistoryQuery = Schema.Struct({\n documentId: DocumentId,\n cursor: Schema.optionalKey(DocumentHistoryCursor),\n limit: Schema.optionalKey(Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: 100 }))),\n}).annotate({ identifier: 'DocumentHistoryQuery' })\nexport interface DocumentHistoryQuery extends Schema.Schema.Type<typeof DocumentHistoryQuery> {}\n\nexport const DocumentRevisionPage = Schema.Struct({\n revisions: Schema.Array(DocumentRevisionSummary),\n nextCursor: Schema.optionalKey(DocumentHistoryCursor),\n total: nonNegativeInt,\n}).annotate({ identifier: 'DocumentRevisionPage' })\nexport interface DocumentRevisionPage extends Schema.Schema.Type<typeof DocumentRevisionPage> {}\n\nconst LineNumber = Schema.Int.check(Schema.isGreaterThan(0))\n\nexport const DocumentRevisionChange = Schema.Union([\n Schema.Struct({ kind: Schema.tag('equal'), beforeLine: LineNumber, afterLine: LineNumber, line: Schema.String }),\n Schema.Struct({ kind: Schema.tag('added'), afterLine: LineNumber, line: Schema.String }),\n Schema.Struct({ kind: Schema.tag('removed'), beforeLine: LineNumber, line: Schema.String }),\n]).pipe(Schema.toTaggedUnion('kind'))\nexport type DocumentRevisionChange = typeof DocumentRevisionChange.Type\n\nexport const CompareDocumentRevisionsInput = Schema.Struct({\n documentId: DocumentId,\n fromRevisionId: RevisionId,\n toRevisionId: RevisionId,\n}).annotate({ identifier: 'CompareDocumentRevisionsInput' })\nexport interface CompareDocumentRevisionsInput extends Schema.Schema.Type<typeof CompareDocumentRevisionsInput> {}\n\nexport const DocumentRevisionComparison = Schema.Struct({\n from: DocumentRevision,\n to: DocumentRevision,\n changes: Schema.Array(DocumentRevisionChange),\n}).annotate({ identifier: 'DocumentRevisionComparison' })\nexport interface DocumentRevisionComparison extends Schema.Schema.Type<typeof DocumentRevisionComparison> {}\n\nexport class DocumentHistoryInvalidCursor extends Schema.TaggedError<DocumentHistoryInvalidCursor>()(\n 'DocumentHistory.InvalidCursor',\n {},\n) {}\n\nexport class DocumentHistoryComparisonTooLarge extends Schema.TaggedError<DocumentHistoryComparisonTooLarge>()(\n 'DocumentHistory.ComparisonTooLarge',\n {\n maximumEditLength: Schema.Int.check(Schema.isGreaterThan(0)),\n maximumLines: Schema.Int.check(Schema.isGreaterThan(0)),\n },\n) {}\n","/**\n * Collaboration handshake and WebSocket envelopes. Command results correlate by RequestId;\n * checkpoints carry the durable state vector needed for retry and recovery.\n */\nimport { DocumentMutationResult, DocumentSource, DocumentValidationResult, CmsMarkdownDocument } from './Documents'\nimport { RequestId } from './Identity'\nimport { Schema } from 'effect'\n\nexport const StateVector = Schema.String.check(Schema.isBase64()).pipe(Schema.brand('StateVector'))\nexport type StateVector = typeof StateVector.Type\n\nconst HttpErrorStatus = Schema.Int.check(Schema.isBetween({ minimum: 400, maximum: 599 }))\n\nexport const CollaborationUser = Schema.Struct({\n color: Schema.NonEmptyString,\n id: Schema.NonEmptyString,\n name: Schema.NonEmptyString,\n})\nexport interface CollaborationUser extends Schema.Schema.Type<typeof CollaborationUser> {}\n\nexport const CollaborationTicket = Schema.Struct({\n authoringRevision: Schema.NonEmptyString,\n authoredStateVector: StateVector,\n documentName: Schema.NonEmptyString,\n source: DocumentSource,\n token: Schema.NonEmptyString,\n url: Schema.NonEmptyString,\n user: CollaborationUser,\n workingStateVector: StateVector,\n}).annotate({ identifier: 'CollaborationTicket' })\nexport interface CollaborationTicket extends Schema.Schema.Type<typeof CollaborationTicket> {}\n\nexport const CollaborationPreview = DocumentValidationResult.pipe(\n Schema.fieldsAssign({\n markdown: Schema.String,\n preview: Schema.Struct({\n body: CmsMarkdownDocument,\n fallbacks: Schema.Record(Schema.String, Schema.String),\n }),\n }),\n).annotate({ identifier: 'CollaborationPreview' })\nexport interface CollaborationPreview extends Schema.Schema.Type<typeof CollaborationPreview> {}\n\nconst CheckpointMessage = Schema.Struct({\n type: Schema.tag('checkpoint'),\n})\n\nconst PreviewMessage = Schema.Struct({\n type: Schema.tag('preview'),\n requestId: RequestId,\n})\n\nconst PublishMessage = Schema.Struct({\n type: Schema.tag('publish'),\n requestId: RequestId,\n})\n\nexport const CollaborationClientMessage = Schema.Union([CheckpointMessage, PreviewMessage, PublishMessage]).pipe(\n Schema.toTaggedUnion('type'),\n)\nexport type CollaborationClientMessage = typeof CollaborationClientMessage.Type\n\nconst requestFailure = {\n error: Schema.NonEmptyString,\n statusCode: HttpErrorStatus,\n}\n\nconst RequestFailure = Schema.Struct({\n status: Schema.tag('failure'),\n ...requestFailure,\n})\n\nconst PreviewOutcome = Schema.Union([\n Schema.Struct({\n status: Schema.tag('success'),\n result: CollaborationPreview,\n }),\n RequestFailure,\n]).pipe(Schema.toTaggedUnion('status'))\n\nconst PublishCheckpoint = Schema.Struct({\n authoredStateVector: StateVector,\n result: Schema.optionalKey(DocumentMutationResult),\n})\n\nconst PublishOutcome = Schema.Union([\n Schema.Struct({\n status: Schema.tag('success'),\n authoredStateVector: StateVector,\n result: DocumentMutationResult,\n }),\n Schema.Struct({\n status: Schema.tag('failure'),\n ...requestFailure,\n checkpoint: Schema.optionalKey(PublishCheckpoint),\n }),\n]).pipe(Schema.toTaggedUnion('status'))\n\nconst WorkingSavedMessage = Schema.Struct({\n type: Schema.tag('working-saved'),\n workingStateVector: StateVector,\n})\n\nconst WorkingSaveErrorMessage = Schema.Struct({\n type: Schema.tag('working-save-error'),\n error: Schema.NonEmptyString,\n})\n\nconst PreviewResultMessage = Schema.Struct({\n type: Schema.tag('preview-result'),\n requestId: RequestId,\n outcome: PreviewOutcome,\n})\n\nconst PublishResultMessage = Schema.Struct({\n type: Schema.tag('publish-result'),\n requestId: RequestId,\n outcome: PublishOutcome,\n})\n\nexport const CollaborationServerMessage = Schema.Union([\n WorkingSavedMessage,\n WorkingSaveErrorMessage,\n PreviewResultMessage,\n PublishResultMessage,\n]).pipe(Schema.toTaggedUnion('type'))\nexport type CollaborationServerMessage = typeof CollaborationServerMessage.Type\n","/**\n * User administration inputs, offset-paginated directory results, and caller-visible command\n * failures. Commands carry no idempotency key; clients resolve ambiguous outcomes by listing again.\n */\nimport { Schema } from 'effect'\nimport { Role } from './AccessControl'\nimport { nonNegativeInt } from './internal/scalars'\n\nexport const UserEmail = Schema.NonEmptyString.check(\n Schema.isMaxLength(320),\n Schema.isPattern(/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/u),\n).annotate({ identifier: 'UserEmail' })\nexport type UserEmail = typeof UserEmail.Type\n\nexport const UserName = Schema.NonEmptyString.check(Schema.isMaxLength(200)).annotate({\n identifier: 'UserName',\n})\nexport type UserName = typeof UserName.Type\n\nexport const UserPassword = Schema.NonEmptyString.check(Schema.isMinLength(8), Schema.isMaxLength(200)).annotate({\n identifier: 'UserPassword',\n})\nexport type UserPassword = typeof UserPassword.Type\n\nexport const User = Schema.Struct({\n id: Schema.NonEmptyString,\n email: UserEmail,\n name: UserName,\n role: Role,\n emailVerified: Schema.Boolean,\n banned: Schema.Boolean,\n createdAt: Schema.DateTimeUtcFromString,\n updatedAt: Schema.DateTimeUtcFromString,\n}).annotate({ identifier: 'User' })\nexport interface User extends Schema.Schema.Type<typeof User> {}\n\nexport const UserPage = Schema.Struct({\n users: Schema.Array(User),\n total: nonNegativeInt,\n}).annotate({ identifier: 'UserPage' })\nexport interface UserPage extends Schema.Schema.Type<typeof UserPage> {}\n\nexport const UserQuery = Schema.Struct({\n limit: Schema.optionalKey(Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: 100 }))),\n offset: Schema.optionalKey(nonNegativeInt),\n search: Schema.optionalKey(Schema.NonEmptyString.check(Schema.isMaxLength(200))),\n}).annotate({ identifier: 'UserQuery' })\nexport interface UserQuery extends Schema.Schema.Type<typeof UserQuery> {}\n\nexport const CreateUserInput = Schema.Struct({\n email: UserEmail,\n name: UserName,\n password: UserPassword,\n role: Role,\n}).annotate({ identifier: 'CreateUserInput' })\nexport interface CreateUserInput extends Schema.Schema.Type<typeof CreateUserInput> {}\n\nexport class UserAlreadyExists extends Schema.TaggedError<UserAlreadyExists>()('User.AlreadyExists', {\n email: UserEmail,\n}) {}\n\nexport class UserNotFound extends Schema.TaggedError<UserNotFound>()('User.NotFound', {\n userId: User.fields.id,\n}) {}\n\nexport class UserSelfRemovalDenied extends Schema.TaggedError<UserSelfRemovalDenied>()('User.SelfRemovalDenied', {\n userId: User.fields.id,\n}) {}\n\nexport class UserSelfRoleChangeDenied extends Schema.TaggedError<UserSelfRoleChangeDenied>()(\n 'User.SelfRoleChangeDenied',\n { userId: User.fields.id },\n) {}\n\nexport class UserAdministrationDenied extends Schema.TaggedError<UserAdministrationDenied>()(\n 'UserAdministration.Denied',\n {},\n) {}\n","/** Exclusive first-installation claim input, state, and caller-visible rejection failures. */\nimport { Schema } from 'effect'\nimport { UserEmail, UserName, UserPassword } from './Users'\n\nexport const InitializationInput = Schema.Struct({\n email: UserEmail,\n initializationToken: Schema.NonEmptyString.check(Schema.isMaxLength(512)),\n name: UserName,\n password: UserPassword,\n}).annotate({ identifier: 'InitializationInput' })\nexport interface InitializationInput extends Schema.Schema.Type<typeof InitializationInput> {}\n\nexport const InitializationState = Schema.Struct({\n needsAdministrator: Schema.Boolean,\n}).annotate({ identifier: 'InitializationState' })\nexport interface InitializationState extends Schema.Schema.Type<typeof InitializationState> {}\n\nexport class InitializationAlreadyCompleted extends Schema.TaggedError<InitializationAlreadyCompleted>()(\n 'Initialization.AlreadyCompleted',\n {},\n) {}\n\nexport class InitializationProofInvalid extends Schema.TaggedError<InitializationProofInvalid>()(\n 'Initialization.ProofInvalid',\n {},\n) {}\n","import { Schema } from 'effect'\n\nexport class StudioInternalError extends Schema.TaggedError<StudioInternalError>()('Studio.InternalError', {\n message: Schema.Literal('The request could not be completed.'),\n}) {}\n\nexport function studioInternalError(): StudioInternalError {\n return new StudioInternalError({ message: 'The request could not be completed.' })\n}\n","import {\n CompiledDocument,\n DocumentNavigationItem,\n DocumentNavigationQuery,\n DocumentSurround,\n PublishedDocumentLookup,\n PublishedDocumentNotFound,\n PublishedDocumentPage,\n PublishedDocumentQuery,\n PublishedDocumentSurroundQuery,\n} from '../../Documents'\nimport { AccessDenied } from '../../AccessControl'\nimport { Schema } from 'effect'\nimport { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from 'effect/unstable/httpapi'\nimport { StudioInternalError } from './failures'\n\nconst DeliverySurroundPayload = Schema.Struct({\n lookup: PublishedDocumentLookup,\n query: PublishedDocumentSurroundQuery,\n}).annotate({ identifier: 'DeliverySurroundPayload' })\n\nconst InternalError = StudioInternalError.pipe(HttpApiSchema.status(500))\nconst PublishedNotFound = PublishedDocumentNotFound.pipe(HttpApiSchema.status(404))\nconst Forbidden = AccessDenied.pipe(HttpApiSchema.status(403))\n\nexport const PublishedDeliveryApi = HttpApiGroup.make('delivery')\n .add(\n HttpApiEndpoint.post('read', '/read', {\n payload: PublishedDocumentLookup,\n success: CompiledDocument,\n error: [PublishedNotFound, InternalError],\n }),\n HttpApiEndpoint.post('query', '/query', {\n payload: PublishedDocumentQuery,\n success: PublishedDocumentPage,\n error: InternalError,\n }),\n HttpApiEndpoint.post('navigation', '/navigation', {\n payload: DocumentNavigationQuery,\n success: Schema.Array(DocumentNavigationItem),\n error: InternalError,\n }),\n HttpApiEndpoint.post('surround', '/surround', {\n payload: DeliverySurroundPayload,\n success: DocumentSurround,\n error: [PublishedNotFound, InternalError],\n }),\n )\n .prefix('/delivery')\n\nexport const PreviewDeliveryApi = HttpApiGroup.make('previewDelivery')\n .add(\n HttpApiEndpoint.post('read', '/read', {\n payload: PublishedDocumentLookup,\n success: CompiledDocument,\n error: [PublishedNotFound, InternalError, Forbidden],\n }),\n HttpApiEndpoint.post('query', '/query', {\n payload: PublishedDocumentQuery,\n success: PublishedDocumentPage,\n error: [InternalError, Forbidden],\n }),\n HttpApiEndpoint.post('navigation', '/navigation', {\n payload: DocumentNavigationQuery,\n success: Schema.Array(DocumentNavigationItem),\n error: [InternalError, Forbidden],\n }),\n HttpApiEndpoint.post('surround', '/surround', {\n payload: DeliverySurroundPayload,\n success: DocumentSurround,\n error: [PublishedNotFound, InternalError, Forbidden],\n }),\n )\n .prefix('/preview')\n","/**\n * Studio HTTP paths, middleware contracts, payloads, and the composed CMS API. Every expected\n * caller failure is a tagged schema with an explicit status; unclassified failures become the\n * deliberately opaque `StudioInternalError`.\n */\nimport {\n AccessDenied,\n AuthenticationRequired,\n Role,\n StudioActor,\n StudioEntryDenied,\n StudioRequestContext,\n} from './AccessControl'\nimport { ActivityCursorInvalid, ActivityPage, ActivityQuery } from './Activity'\nimport { CollaborationTicket } from './Collaboration'\nimport { DocumentConfiguration, MediaConfiguration } from './Configuration'\nimport {\n CompareDocumentRevisionsInput,\n CreateDocumentInput,\n DeletedDocument,\n DocumentBrowseQuery,\n DocumentHistoryComparisonTooLarge,\n DocumentHistoryInvalidCursor,\n DocumentHistoryQuery,\n DocumentId,\n DocumentIssue,\n DocumentMediaUnavailable,\n DocumentMutationResult,\n DocumentNotFound,\n DocumentPathConflict,\n DocumentRevision,\n DocumentRevisionComparison,\n DocumentRevisionPage,\n DocumentSource,\n DocumentSummary,\n DocumentValidationFailed,\n DocumentValidationResult,\n DocumentVersionConflict,\n MoveDocumentInput,\n DuplicateDocumentInput,\n PublishDocumentInput,\n RemoveDocumentInput,\n RestoreDocumentInput,\n PublicPath,\n UndeleteDocumentInput,\n UpdateDocumentInput,\n} from './Documents'\nimport {\n InitializationAlreadyCompleted,\n InitializationInput,\n InitializationProofInvalid,\n InitializationState,\n} from './Initialization'\nimport {\n MediaAsset,\n MediaCleanupReport,\n MediaConflict,\n MediaFolder,\n MediaId,\n MediaIntegrityReport,\n MediaInvalid,\n MediaNotFound,\n MediaPage,\n MediaQuery,\n MediaReferenced,\n MediaTooLarge,\n MediaUpload,\n} from './Media'\nimport {\n CreateUserInput,\n User,\n UserAdministrationDenied,\n UserAlreadyExists,\n UserNotFound,\n UserPage,\n UserQuery,\n UserSelfRemovalDenied,\n UserSelfRoleChangeDenied,\n} from './Users'\nimport { Context, Schema } from 'effect'\nimport { Multipart } from 'effect/unstable/http'\nimport { HttpApi, HttpApiEndpoint, HttpApiGroup, HttpApiMiddleware, HttpApiSchema } from 'effect/unstable/httpapi'\nimport { PreviewDeliveryApi, PublishedDeliveryApi } from './internal/http/delivery'\nimport { StudioInternalError } from './internal/http/failures'\nimport { STUDIO_API_PATH } from './HttpPaths'\n\nexport { StudioInternalError, studioInternalError } from './internal/http/failures'\nexport {\n CMS_AUTHENTICATION_PATH,\n CMS_LIVENESS_PATH,\n CMS_READINESS_PATH,\n STUDIO_API_PATH,\n STUDIO_APP_PATH,\n STUDIO_BASE_PATH,\n STUDIO_COLLABORATION_PATH,\n} from './HttpPaths'\n\nconst ApiVersion = Schema.NonEmptyString.pipe(Schema.brand('ApiVersion'))\n\nexport const StudioBootstrap = Schema.Struct({\n basePath: PublicPath,\n documents: DocumentConfiguration,\n media: MediaConfiguration,\n version: ApiVersion,\n}).annotate({ identifier: 'StudioBootstrap' })\nexport interface StudioBootstrap extends Schema.Schema.Type<typeof StudioBootstrap> {}\n\nexport class StudioBadRequest extends Schema.TaggedError<StudioBadRequest>()('Studio.BadRequest', {\n kind: Schema.Literals(['Headers', 'Params', 'Payload', 'Query']),\n}) {}\n\nexport class StudioRequestConflict extends Schema.TaggedError<StudioRequestConflict>()('Studio.RequestConflict', {\n retryable: Schema.Literal(true),\n}) {}\n\nexport class StudioSchemaError extends HttpApiMiddleware.Service<StudioSchemaError>()(\n '@internal/protocol/StudioSchemaError',\n {\n error: [StudioBadRequest.pipe(HttpApiSchema.status(400)), StudioInternalError.pipe(HttpApiSchema.status(500))],\n },\n) {}\n\nexport class CurrentStudioRequest extends Context.Service<CurrentStudioRequest, StudioRequestContext>()(\n '@internal/protocol/CurrentStudioRequest',\n) {}\n\nexport class StudioAuthentication extends HttpApiMiddleware.Service<\n StudioAuthentication,\n { provides: CurrentStudioRequest }\n>()('@internal/protocol/StudioAuthentication', {\n error: [\n AuthenticationRequired.pipe(HttpApiSchema.status(401)),\n StudioEntryDenied.pipe(HttpApiSchema.status(403)),\n StudioInternalError.pipe(HttpApiSchema.status(500)),\n ],\n}) {}\n\nconst UpdateDocumentPayload = Schema.Struct({\n expectedVersion: UpdateDocumentInput.fields.expectedVersion,\n markdown: UpdateDocumentInput.fields.markdown,\n})\n\nconst MoveDocumentPayload = Schema.Struct({\n expectedVersion: MoveDocumentInput.fields.expectedVersion,\n location: MoveDocumentInput.fields.location,\n})\n\nconst PublishDocumentPayload = Schema.Struct({\n expectedVersion: PublishDocumentInput.fields.expectedVersion,\n})\n\nconst RemoveDocumentPayload = Schema.Struct({\n expectedVersion: RemoveDocumentInput.fields.expectedVersion,\n})\n\nconst RestoreDocumentPayload = Schema.Struct({\n expectedVersion: RestoreDocumentInput.fields.expectedVersion,\n revisionId: RestoreDocumentInput.fields.revisionId,\n})\n\nconst UndeleteDocumentPayload = Schema.Struct({\n expectedVersion: UndeleteDocumentInput.fields.expectedVersion,\n})\n\nconst ChangeRolePayload = Schema.Struct({ role: Role }).annotate({\n identifier: 'ChangeRolePayload',\n})\n\nexport const MediaUploadQuery = Schema.Struct({\n declaredByteSize: MediaUpload.fields.declaredByteSize,\n folder: Schema.optionalKey(MediaFolder),\n}).annotate({ identifier: 'MediaUploadQuery' })\nexport interface MediaUploadQuery extends Schema.Schema.Type<typeof MediaUploadQuery> {}\n\nconst MediaUploadPayload = Schema.Struct({\n file: Multipart.SingleFileSchema,\n}).pipe(HttpApiSchema.asMultipartStream({ maxParts: 1 }))\n\nconst NotFound = DocumentNotFound.pipe(HttpApiSchema.status(404))\nconst VersionConflict = DocumentVersionConflict.pipe(HttpApiSchema.status(409))\nconst Conflict = Schema.Union([DocumentMediaUnavailable, DocumentPathConflict, DocumentVersionConflict]).pipe(\n HttpApiSchema.status(409),\n)\nconst ValidationFailed = DocumentValidationFailed.pipe(HttpApiSchema.status(422))\nconst RequestConflict = StudioRequestConflict.pipe(HttpApiSchema.status(409))\nconst InternalError = StudioInternalError.pipe(HttpApiSchema.status(500))\nconst Forbidden = AccessDenied.pipe(HttpApiSchema.status(403))\nconst MutationErrors = [NotFound, Conflict, ValidationFailed, RequestConflict, Forbidden, InternalError] as const\n\nconst MediaNotFoundResponse = MediaNotFound.pipe(HttpApiSchema.status(404))\nconst MediaInvalidQuery = MediaInvalid.pipe(HttpApiSchema.status(400))\nconst MediaInvalidUpload = MediaInvalid.pipe(HttpApiSchema.status(422))\nconst MediaTooLargeResponse = MediaTooLarge.pipe(HttpApiSchema.status(413))\nconst MediaReferencedResponse = MediaReferenced.pipe(HttpApiSchema.status(409))\nconst MediaConflictResponse = MediaConflict.pipe(HttpApiSchema.status(409))\nconst InvalidActivityCursor = ActivityCursorInvalid.pipe(HttpApiSchema.status(400))\nconst InvalidHistoryCursor = DocumentHistoryInvalidCursor.pipe(HttpApiSchema.status(400))\nconst HistoryComparisonTooLarge = DocumentHistoryComparisonTooLarge.pipe(HttpApiSchema.status(422))\nconst AlreadyInitialized = InitializationAlreadyCompleted.pipe(HttpApiSchema.status(409))\nconst InitializationProofRejected = InitializationProofInvalid.pipe(HttpApiSchema.status(403))\nconst UserAdministrationForbidden = UserAdministrationDenied.pipe(HttpApiSchema.status(403))\nconst UserDuplicate = UserAlreadyExists.pipe(HttpApiSchema.status(409))\nconst MissingUser = UserNotFound.pipe(HttpApiSchema.status(404))\nconst UserSelfRemoval = UserSelfRemovalDenied.pipe(HttpApiSchema.status(409))\nconst UserSelfRoleChange = UserSelfRoleChangeDenied.pipe(HttpApiSchema.status(409))\n\nconst StudioDocumentsApi = HttpApiGroup.make('documents')\n .add(\n HttpApiEndpoint.get('browse', '/', {\n query: DocumentBrowseQuery,\n success: Schema.Array(DocumentSummary),\n error: [Forbidden, InternalError],\n }),\n HttpApiEndpoint.get('trash', '/trash', {\n success: Schema.Array(DeletedDocument),\n error: [Forbidden, InternalError],\n }),\n HttpApiEndpoint.get('read', '/:documentId', {\n params: { documentId: DocumentId },\n success: DocumentSource,\n error: [NotFound, Forbidden, InternalError],\n }),\n HttpApiEndpoint.post('create', '/', {\n payload: CreateDocumentInput,\n success: DocumentMutationResult.pipe(HttpApiSchema.status(201)),\n error: MutationErrors,\n }),\n HttpApiEndpoint.put('update', '/:documentId', {\n params: { documentId: DocumentId },\n payload: UpdateDocumentPayload,\n success: DocumentMutationResult,\n error: MutationErrors,\n }),\n HttpApiEndpoint.post('validate', '/:documentId/validate', {\n params: { documentId: DocumentId },\n payload: UpdateDocumentPayload,\n success: DocumentValidationResult,\n error: [NotFound, VersionConflict, Forbidden, InternalError],\n }),\n HttpApiEndpoint.post('move', '/:documentId/move', {\n params: { documentId: DocumentId },\n payload: MoveDocumentPayload,\n success: DocumentMutationResult,\n error: MutationErrors,\n }),\n HttpApiEndpoint.post('duplicate', '/:documentId/duplicate', {\n params: { documentId: DocumentId },\n payload: Schema.Struct({\n ...MoveDocumentPayload.fields,\n includeChildren: DuplicateDocumentInput.fields.includeChildren,\n }),\n success: DocumentMutationResult,\n error: MutationErrors,\n }),\n HttpApiEndpoint.post('unpublish', '/:documentId/unpublish', {\n params: { documentId: DocumentId },\n payload: PublishDocumentPayload,\n success: DocumentMutationResult,\n error: MutationErrors,\n }),\n HttpApiEndpoint.post('publish', '/:documentId/publish', {\n params: { documentId: DocumentId },\n payload: PublishDocumentPayload,\n success: DocumentMutationResult,\n error: MutationErrors,\n }),\n HttpApiEndpoint.post('remove', '/:documentId/remove', {\n params: { documentId: DocumentId },\n payload: RemoveDocumentPayload,\n success: DocumentMutationResult,\n error: MutationErrors,\n }),\n HttpApiEndpoint.post('restore', '/:documentId/restore', {\n params: { documentId: DocumentId },\n payload: RestoreDocumentPayload,\n success: DocumentMutationResult,\n error: MutationErrors,\n }),\n HttpApiEndpoint.post('undelete', '/:documentId/undelete', {\n params: { documentId: DocumentId },\n payload: UndeleteDocumentPayload,\n success: DocumentMutationResult,\n error: MutationErrors,\n }),\n )\n .middleware(StudioAuthentication)\n .prefix('/documents')\n\nconst StudioMediaApi = HttpApiGroup.make('media')\n .add(\n HttpApiEndpoint.get('search', '/', {\n query: MediaQuery,\n success: MediaPage,\n error: [MediaInvalidQuery, Forbidden, InternalError],\n }),\n HttpApiEndpoint.post('upload', '/', {\n query: MediaUploadQuery,\n payload: MediaUploadPayload,\n success: MediaAsset.pipe(HttpApiSchema.status(201)),\n error: [MediaInvalidUpload, MediaTooLargeResponse, Forbidden, InternalError],\n }),\n HttpApiEndpoint.put('replace', '/:mediaId', {\n params: { mediaId: MediaId },\n query: MediaUploadQuery,\n payload: MediaUploadPayload,\n success: MediaAsset,\n error: [\n MediaNotFoundResponse,\n MediaConflictResponse,\n MediaInvalidUpload,\n MediaTooLargeResponse,\n Forbidden,\n InternalError,\n ],\n }),\n HttpApiEndpoint.post('cleanup', '/cleanup', {\n success: MediaCleanupReport,\n error: [Forbidden, InternalError],\n }),\n HttpApiEndpoint.get('integrity', '/integrity', {\n success: MediaIntegrityReport,\n error: [Forbidden, InternalError],\n }),\n HttpApiEndpoint.get('get', '/:mediaId', {\n params: { mediaId: MediaId },\n success: MediaAsset,\n error: [MediaNotFoundResponse, Forbidden, InternalError],\n }),\n HttpApiEndpoint.delete('remove', '/:mediaId', {\n params: { mediaId: MediaId },\n success: HttpApiSchema.NoContent,\n error: [MediaNotFoundResponse, MediaConflictResponse, MediaReferencedResponse, Forbidden, InternalError],\n }),\n )\n .middleware(StudioAuthentication)\n .prefix('/media')\n\nconst StudioConfigurationApi = HttpApiGroup.make('configuration')\n .add(\n HttpApiEndpoint.get('bootstrap', '/bootstrap', {\n success: StudioBootstrap,\n }),\n )\n .middleware(StudioAuthentication)\n\nconst StudioSessionApi = HttpApiGroup.make('session')\n .add(HttpApiEndpoint.get('current', '/session', { success: StudioActor }))\n .middleware(StudioAuthentication)\n\nconst InitializationApi = HttpApiGroup.make('initialization').add(\n HttpApiEndpoint.get('status', '/initialization', {\n success: InitializationState,\n error: InternalError,\n }),\n HttpApiEndpoint.post('claim', '/initialization', {\n payload: InitializationInput,\n success: User.pipe(HttpApiSchema.status(201)),\n error: [AlreadyInitialized, InitializationProofRejected, InternalError],\n }),\n)\n\nconst StudioDiagnosticsApi = HttpApiGroup.make('diagnostics')\n .add(\n HttpApiEndpoint.get('documents', '/diagnostics/documents', {\n success: Schema.Array(DocumentIssue),\n error: [Forbidden, InternalError],\n }),\n )\n .middleware(StudioAuthentication)\n\nconst StudioHistoryApi = HttpApiGroup.make('history')\n .add(\n HttpApiEndpoint.get('list', '/', {\n query: DocumentHistoryQuery,\n success: DocumentRevisionPage,\n error: [InvalidHistoryCursor, Forbidden, InternalError],\n }),\n HttpApiEndpoint.get('read', '/:documentId/:revisionId', {\n params: { documentId: DocumentId, revisionId: DocumentRevision.fields.revisionId },\n success: DocumentRevision,\n error: [NotFound, Forbidden, InternalError],\n }),\n HttpApiEndpoint.post('compare', '/compare', {\n payload: CompareDocumentRevisionsInput,\n success: DocumentRevisionComparison,\n error: [NotFound, HistoryComparisonTooLarge, Forbidden, InternalError],\n }),\n )\n .middleware(StudioAuthentication)\n .prefix('/history')\n\nconst StudioActivityApi = HttpApiGroup.make('activity')\n .add(\n HttpApiEndpoint.get('list', '/', {\n query: ActivityQuery,\n success: ActivityPage,\n error: [InvalidActivityCursor, Forbidden, InternalError],\n }),\n )\n .middleware(StudioAuthentication)\n .prefix('/activity')\n\nconst StudioUserAdministrationApi = HttpApiGroup.make('users')\n .add(\n HttpApiEndpoint.get('list', '/', {\n query: UserQuery,\n success: UserPage,\n error: [UserAdministrationForbidden, InternalError],\n }),\n HttpApiEndpoint.post('create', '/', {\n payload: CreateUserInput,\n success: User.pipe(HttpApiSchema.status(201)),\n error: [UserDuplicate, UserAdministrationForbidden, InternalError],\n }),\n HttpApiEndpoint.post('changeRole', '/:userId/role', {\n params: { userId: User.fields.id },\n payload: ChangeRolePayload,\n success: User,\n error: [MissingUser, UserSelfRoleChange, UserAdministrationForbidden, InternalError],\n }),\n HttpApiEndpoint.post('revokeSessions', '/:userId/sessions/revoke', {\n params: { userId: User.fields.id },\n success: User,\n error: [MissingUser, UserAdministrationForbidden, InternalError],\n }),\n HttpApiEndpoint.delete('remove', '/:userId', {\n params: { userId: User.fields.id },\n success: User,\n error: [MissingUser, UserSelfRemoval, UserAdministrationForbidden, InternalError],\n }),\n )\n .middleware(StudioAuthentication)\n .prefix('/users')\n\nconst StudioCollaborationApi = HttpApiGroup.make('collaboration')\n .add(\n HttpApiEndpoint.post('ticket', '/:documentId/ticket', {\n params: { documentId: DocumentId },\n success: CollaborationTicket,\n error: [NotFound, Forbidden, InternalError],\n }),\n )\n .middleware(StudioAuthentication)\n .prefix('/collaboration')\n\nexport class StudioApi extends HttpApi.make('StudioApi')\n .add(\n InitializationApi,\n PublishedDeliveryApi,\n StudioConfigurationApi,\n StudioSessionApi,\n StudioDiagnosticsApi,\n PreviewDeliveryApi.middleware(StudioAuthentication),\n StudioDocumentsApi,\n StudioHistoryApi,\n StudioActivityApi,\n StudioUserAdministrationApi,\n StudioMediaApi,\n StudioCollaborationApi,\n )\n .middleware(StudioSchemaError)\n .prefix(STUDIO_API_PATH) {}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"connection-CBTY-TzB.js","names":["DocumentPreviewMessageSchema"],"sources":["../../../../protocol/src/internal/preview/bridge.ts","../../../src/runtime/preview/connection.ts"],"sourcesContent":["import type {\n DocumentPreviewMessage,\n PreviewOrigin,\n PreviewSessionId,\n PreviewSitePayload,\n StudioPreviewPayload,\n} from './models'\nimport type { Scope } from 'effect'\nimport { Effect, Schedule, Schema } from 'effect'\nimport {\n DOCUMENT_PREVIEW_CHANNEL,\n DocumentPreviewMessage as DocumentPreviewMessageSchema,\n isDocumentPreviewMessage,\n} from './models'\n\nexport interface PreviewMessageEvent {\n readonly data: unknown\n readonly origin: string\n readonly source: object | null\n}\n\nexport interface PreviewMessageSource {\n readonly addEventListener: (type: 'message', listener: (event: PreviewMessageEvent) => void) => void\n readonly removeEventListener: (type: 'message', listener: (event: PreviewMessageEvent) => void) => void\n}\n\nexport interface PreviewMessageTarget {\n readonly postMessage: (message: DocumentPreviewMessage, targetOrigin: string) => void\n}\n\nexport type PreviewBridgeState = 'closed' | 'connecting' | 'ready'\n\nexport interface PreviewHostBridge {\n readonly reconnect: () => void\n readonly send: (payload: Exclude<StudioPreviewPayload, { readonly type: 'studio:connect' }>) => boolean\n readonly state: () => PreviewBridgeState\n readonly subscribe: (listener: (message: PreviewSitePayload) => void) => () => void\n}\n\nexport interface PreviewSiteBridge {\n readonly send: (payload: Exclude<PreviewSitePayload, { readonly type: 'preview:ready' }>) => boolean\n readonly subscribe: (listener: (message: StudioPreviewPayload) => void) => () => void\n}\n\nexport interface PreviewHostBridgeOptions {\n readonly handshakeIntervalMs?: number\n readonly sessionId: PreviewSessionId\n readonly target: () => PreviewMessageTarget | undefined\n readonly targetOrigin: PreviewOrigin\n readonly view: PreviewMessageSource\n}\n\nexport interface PreviewSiteBridgeOptions {\n readonly parent: PreviewMessageTarget\n readonly parentOrigin: PreviewOrigin\n readonly route: PreviewSitePayload & { readonly type: 'preview:ready' }\n readonly sessionId: PreviewSessionId\n readonly view: PreviewMessageSource\n}\n\n/** Owns the editor-side postMessage handshake and strict origin/source filtering. */\nexport function makePreviewHostBridge(\n options: PreviewHostBridgeOptions,\n): Effect.Effect<PreviewHostBridge, never, Scope.Scope> {\n return Effect.acquireRelease(\n Effect.context<never>().pipe(\n Effect.map((context) => createPreviewHostBridge(options, Effect.runForkWith(context))),\n ),\n (bridge) => Effect.sync(() => bridge.close()),\n ).pipe(Effect.map(({ close: _close, ...bridge }) => bridge))\n}\n\n/** Owns the preview-site side of the authenticated session handshake. */\nexport function makePreviewSiteBridge(\n options: PreviewSiteBridgeOptions,\n): Effect.Effect<PreviewSiteBridge, never, Scope.Scope> {\n return Effect.acquireRelease(\n Effect.sync(() => createPreviewSiteBridge(options)),\n (bridge) => Effect.sync(() => bridge.close()),\n ).pipe(Effect.map(({ close: _close, ...bridge }) => bridge))\n}\n\nfunction createPreviewHostBridge(options: PreviewHostBridgeOptions, runFork: typeof Effect.runFork) {\n const listeners = new Set<(message: PreviewSitePayload) => void>()\n let retry: ReturnType<typeof Effect.runFork> | undefined\n let state: PreviewBridgeState = 'connecting'\n\n const stopRetry = (): void => {\n if (retry === undefined) return\n retry.interruptUnsafe()\n retry = undefined\n }\n const post = (payload: StudioPreviewPayload): boolean => {\n const target = options.target()\n if (!target) return false\n target.postMessage(envelope(options.sessionId, payload), options.targetOrigin)\n return true\n }\n const connect = (): void => {\n post({ type: 'studio:connect' })\n }\n const reconnect = (): void => {\n if (state === 'closed') return\n state = 'connecting'\n stopRetry()\n const interval = options.handshakeIntervalMs ?? 250\n retry = runFork(Effect.sync(connect).pipe(Effect.repeat(Schedule.spaced(interval)), Effect.delay(interval)))\n connect()\n }\n const receive = (event: PreviewMessageEvent): void => {\n const target = options.target()\n if (!target) return\n const message = receivePreviewMessage(event, target, options.targetOrigin, options.sessionId)\n if (!message || !isPreviewSiteMessage(message)) return\n if (message.type === 'preview:ready') {\n state = 'ready'\n stopRetry()\n }\n for (const listener of listeners) listener(message)\n }\n const close = (): void => {\n if (state === 'closed') return\n state = 'closed'\n stopRetry()\n options.view.removeEventListener('message', receive)\n listeners.clear()\n }\n\n options.view.addEventListener('message', receive)\n reconnect()\n return {\n close,\n reconnect,\n send: (payload: Exclude<StudioPreviewPayload, { readonly type: 'studio:connect' }>) =>\n state === 'ready' && post(payload),\n state: () => state,\n subscribe: (listener: (message: PreviewSitePayload) => void) => {\n listeners.add(listener)\n return () => listeners.delete(listener)\n },\n }\n}\n\nfunction createPreviewSiteBridge(options: PreviewSiteBridgeOptions) {\n const listeners = new Set<(message: StudioPreviewPayload) => void>()\n let active = false\n let closed = false\n\n const post = (payload: PreviewSitePayload): boolean => {\n if (!active || closed) return false\n options.parent.postMessage(envelope(options.sessionId, payload), options.parentOrigin)\n return true\n }\n const receive = (event: PreviewMessageEvent): void => {\n if (closed) return\n const message = receivePreviewMessage(event, options.parent, options.parentOrigin, options.sessionId)\n if (!message || !isStudioPreviewMessage(message)) return\n if (message.type === 'studio:connect') {\n active = true\n post(options.route)\n }\n for (const listener of listeners) listener(message)\n }\n const close = (): void => {\n if (closed) return\n closed = true\n active = false\n options.view.removeEventListener('message', receive)\n listeners.clear()\n }\n\n options.view.addEventListener('message', receive)\n return {\n close,\n send: post,\n subscribe: (listener: (message: StudioPreviewPayload) => void) => {\n listeners.add(listener)\n return () => listeners.delete(listener)\n },\n }\n}\n\nfunction envelope(\n sessionId: PreviewSessionId,\n payload: PreviewSitePayload | StudioPreviewPayload,\n): DocumentPreviewMessage {\n return Schema.decodeSync(DocumentPreviewMessageSchema)({\n channel: DOCUMENT_PREVIEW_CHANNEL,\n sessionId,\n ...payload,\n })\n}\n\nfunction receivePreviewMessage(\n event: PreviewMessageEvent,\n source: PreviewMessageTarget,\n origin: PreviewOrigin,\n sessionId: PreviewSessionId,\n): DocumentPreviewMessage | undefined {\n if (event.origin !== origin || event.source !== source || !isDocumentPreviewMessage(event.data)) return undefined\n return event.data.sessionId === sessionId ? event.data : undefined\n}\n\nfunction isPreviewSiteMessage(\n message: DocumentPreviewMessage,\n): message is Extract<DocumentPreviewMessage, { readonly type: `preview:${string}` }> {\n return message.type.startsWith('preview:')\n}\n\nfunction isStudioPreviewMessage(\n message: DocumentPreviewMessage,\n): message is Extract<DocumentPreviewMessage, { readonly type: `studio:${string}` }> {\n return message.type.startsWith('studio:')\n}\n","import type { PublicPath } from '@internal/protocol/Documents'\nimport type { PreviewOrigin, PreviewSessionId, PreviewSiteBridge } from '@internal/protocol/Preview'\nimport { makePreviewSiteBridge } from '@internal/protocol/Preview'\nimport { Effect, Exit, Scope } from 'effect'\n\nexport interface SitePreviewConnection extends PreviewSiteBridge {\n readonly close: () => Promise<void>\n}\n\n/** Owns the site-side Effect scope and origin-checked parent-window bridge. */\nexport async function openSitePreviewConnection(options: {\n readonly editorOrigin: PreviewOrigin\n readonly route: PublicPath\n readonly sessionId: PreviewSessionId\n}): Promise<SitePreviewConnection> {\n const scope = await Effect.runPromise(Scope.make())\n try {\n const bridge = await Effect.runPromise(\n makePreviewSiteBridge({\n parent: window.parent,\n parentOrigin: options.editorOrigin,\n route: { path: options.route, type: 'preview:ready' },\n sessionId: options.sessionId,\n view: window,\n }).pipe(Effect.provideService(Scope.Scope, scope)),\n )\n let closed = false\n return {\n async close() {\n if (closed) return\n closed = true\n await Effect.runPromise(Scope.close(scope, Exit.void))\n },\n send: bridge.send,\n subscribe: bridge.subscribe,\n }\n } catch (cause) {\n await Effect.runPromise(Scope.close(scope, Exit.fail(cause)))\n throw cause\n }\n}\n"],"mappings":";;;;;AAyEA,SAAgB,sBACd,SACsD;CACtD,OAAO,OAAO,eACZ,OAAO,WAAW,wBAAwB,OAAO,CAAC,IACjD,WAAW,OAAO,WAAW,OAAO,MAAM,CAAC,CAC9C,CAAC,CAAC,KAAK,OAAO,KAAK,EAAE,OAAO,QAAQ,GAAG,aAAa,MAAM,CAAC;AAC7D;AA+DA,SAAS,wBAAwB,SAAmC;CAClE,MAAM,4BAAY,IAAI,IAA6C;CACnE,IAAI,SAAS;CACb,IAAI,SAAS;CAEb,MAAM,QAAQ,YAAyC;EACrD,IAAI,CAAC,UAAU,QAAQ,OAAO;EAC9B,QAAQ,OAAO,YAAY,SAAS,QAAQ,WAAW,OAAO,GAAG,QAAQ,YAAY;EACrF,OAAO;CACT;CACA,MAAM,WAAW,UAAqC;EACpD,IAAI,QAAQ;EACZ,MAAM,UAAU,sBAAsB,OAAO,QAAQ,QAAQ,QAAQ,cAAc,QAAQ,SAAS;EACpG,IAAI,CAAC,WAAW,CAAC,uBAAuB,OAAO,GAAG;EAClD,IAAI,QAAQ,SAAS,kBAAkB;GACrC,SAAS;GACT,KAAK,QAAQ,KAAK;EACpB;EACA,KAAK,MAAM,YAAY,WAAW,SAAS,OAAO;CACpD;CACA,MAAM,cAAoB;EACxB,IAAI,QAAQ;EACZ,SAAS;EACT,SAAS;EACT,QAAQ,KAAK,oBAAoB,WAAW,OAAO;EACnD,UAAU,MAAM;CAClB;CAEA,QAAQ,KAAK,iBAAiB,WAAW,OAAO;CAChD,OAAO;EACL;EACA,MAAM;EACN,YAAY,aAAsD;GAChE,UAAU,IAAI,QAAQ;GACtB,aAAa,UAAU,OAAO,QAAQ;EACxC;CACF;AACF;AAEA,SAAS,SACP,WACA,SACwB;CACxB,OAAO,OAAO,WAAWA,sBAA4B,CAAC,CAAC;EACrD,SAAS;EACT;EACA,GAAG;CACL,CAAC;AACH;AAEA,SAAS,sBACP,OACA,QACA,QACA,WACoC;CACpC,IAAI,MAAM,WAAW,UAAU,MAAM,WAAW,UAAU,CAAC,yBAAyB,MAAM,IAAI,GAAG,OAAO;CACxG,OAAO,MAAM,KAAK,cAAc,YAAY,MAAM,OAAO;AAC3D;AAQA,SAAS,uBACP,SACmF;CACnF,OAAO,QAAQ,KAAK,WAAW,SAAS;AAC1C;;;;;AC3MA,eAAsB,0BAA0B,SAIb;CACjC,MAAM,QAAQ,MAAM,OAAO,WAAW,MAAM,KAAK,CAAC;CAClD,IAAI;EACF,MAAM,SAAS,MAAM,OAAO,WAC1B,sBAAsB;GACpB,QAAQ,OAAO;GACf,cAAc,QAAQ;GACtB,OAAO;IAAE,MAAM,QAAQ;IAAO,MAAM;GAAgB;GACpD,WAAW,QAAQ;GACnB,MAAM;EACR,CAAC,CAAC,CAAC,KAAK,OAAO,eAAe,MAAM,OAAO,KAAK,CAAC,CACnD;EACA,IAAI,SAAS;EACb,OAAO;GACL,MAAM,QAAQ;IACZ,IAAI,QAAQ;IACZ,SAAS;IACT,MAAM,OAAO,WAAW,MAAM,MAAM,OAAO,KAAK,IAAI,CAAC;GACvD;GACA,MAAM,OAAO;GACb,WAAW,OAAO;EACpB;CACF,SAAS,OAAO;EACd,MAAM,OAAO,WAAW,MAAM,MAAM,OAAO,KAAK,KAAK,KAAK,CAAC,CAAC;EAC5D,MAAM;CACR;AACF"}