@orthacms/content-server 0.0.0-reserve.0
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.
- package/LICENSE +21 -0
- package/README.md +7 -0
- package/dist/define.d.ts +17 -0
- package/dist/define.d.ts.map +1 -0
- package/dist/define.js +28 -0
- package/dist/index.d.ts +48 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +109 -0
- package/dist/lib/collection/define.d.ts +35 -0
- package/dist/lib/collection/define.d.ts.map +1 -0
- package/dist/lib/collection/define.js +217 -0
- package/dist/lib/collection/table-builder.d.ts +28 -0
- package/dist/lib/collection/table-builder.d.ts.map +1 -0
- package/dist/lib/collection/table-builder.js +306 -0
- package/dist/lib/content-types/controllers/get-content-schema.controller.d.ts +24 -0
- package/dist/lib/content-types/controllers/get-content-schema.controller.d.ts.map +1 -0
- package/dist/lib/content-types/controllers/get-content-schema.controller.js +58 -0
- package/dist/lib/content-types/controllers/get-filter-fields.controller.d.ts +35 -0
- package/dist/lib/content-types/controllers/get-filter-fields.controller.d.ts.map +1 -0
- package/dist/lib/content-types/controllers/get-filter-fields.controller.js +74 -0
- package/dist/lib/content-types/controllers/list-content-schema.controller.d.ts +15 -0
- package/dist/lib/content-types/controllers/list-content-schema.controller.d.ts.map +1 -0
- package/dist/lib/content-types/controllers/list-content-schema.controller.js +38 -0
- package/dist/lib/content-types/queries/workspace-grants.query.d.ts +25 -0
- package/dist/lib/content-types/queries/workspace-grants.query.d.ts.map +1 -0
- package/dist/lib/content-types/queries/workspace-grants.query.js +45 -0
- package/dist/lib/content.module.d.ts +21 -0
- package/dist/lib/content.module.d.ts.map +1 -0
- package/dist/lib/content.module.js +264 -0
- package/dist/lib/content.tokens.d.ts +5 -0
- package/dist/lib/content.tokens.d.ts.map +1 -0
- package/dist/lib/content.tokens.js +9 -0
- package/dist/lib/copilot/content-tool.provider.d.ts +64 -0
- package/dist/lib/copilot/content-tool.provider.d.ts.map +1 -0
- package/dist/lib/copilot/content-tool.provider.js +309 -0
- package/dist/lib/copilot/diff-snapshots.d.ts +42 -0
- package/dist/lib/copilot/diff-snapshots.d.ts.map +1 -0
- package/dist/lib/copilot/diff-snapshots.js +77 -0
- package/dist/lib/copilot/entry-proposal.applier.d.ts +89 -0
- package/dist/lib/copilot/entry-proposal.applier.d.ts.map +1 -0
- package/dist/lib/copilot/entry-proposal.applier.js +245 -0
- package/dist/lib/copilot/entry-proposal.provider.d.ts +157 -0
- package/dist/lib/copilot/entry-proposal.provider.d.ts.map +1 -0
- package/dist/lib/copilot/entry-proposal.provider.js +619 -0
- package/dist/lib/copilot/filter-schema.d.ts +61 -0
- package/dist/lib/copilot/filter-schema.d.ts.map +1 -0
- package/dist/lib/copilot/filter-schema.js +139 -0
- package/dist/lib/copilot/project-entry.d.ts +23 -0
- package/dist/lib/copilot/project-entry.d.ts.map +1 -0
- package/dist/lib/copilot/project-entry.js +36 -0
- package/dist/lib/copilot/proposal-kinds.d.ts +30 -0
- package/dist/lib/copilot/proposal-kinds.d.ts.map +1 -0
- package/dist/lib/copilot/proposal-kinds.js +32 -0
- package/dist/lib/copilot/revision-tool.provider.d.ts +56 -0
- package/dist/lib/copilot/revision-tool.provider.d.ts.map +1 -0
- package/dist/lib/copilot/revision-tool.provider.js +215 -0
- package/dist/lib/docs/content-schemas.d.ts +34 -0
- package/dist/lib/docs/content-schemas.d.ts.map +1 -0
- package/dist/lib/docs/content-schemas.js +617 -0
- package/dist/lib/docs/describe-content-api.d.ts +22 -0
- package/dist/lib/docs/describe-content-api.d.ts.map +1 -0
- package/dist/lib/docs/describe-content-api.js +173 -0
- package/dist/lib/docs/field-schema.d.ts +28 -0
- package/dist/lib/docs/field-schema.d.ts.map +1 -0
- package/dist/lib/docs/field-schema.js +214 -0
- package/dist/lib/entries/application/use-cases/bulk-publish-entries.use-case.d.ts +23 -0
- package/dist/lib/entries/application/use-cases/bulk-publish-entries.use-case.d.ts.map +1 -0
- package/dist/lib/entries/application/use-cases/bulk-publish-entries.use-case.js +77 -0
- package/dist/lib/entries/application/use-cases/bulk-unpublish-entries.use-case.d.ts +23 -0
- package/dist/lib/entries/application/use-cases/bulk-unpublish-entries.use-case.d.ts.map +1 -0
- package/dist/lib/entries/application/use-cases/bulk-unpublish-entries.use-case.js +66 -0
- package/dist/lib/entries/application/use-cases/publish-entry.use-case.d.ts +43 -0
- package/dist/lib/entries/application/use-cases/publish-entry.use-case.d.ts.map +1 -0
- package/dist/lib/entries/application/use-cases/publish-entry.use-case.js +106 -0
- package/dist/lib/entries/application/use-cases/unpublish-entry.use-case.d.ts +30 -0
- package/dist/lib/entries/application/use-cases/unpublish-entry.use-case.d.ts.map +1 -0
- package/dist/lib/entries/application/use-cases/unpublish-entry.use-case.js +70 -0
- package/dist/lib/entries/controllers/bulk-entries.controller.d.ts +26 -0
- package/dist/lib/entries/controllers/bulk-entries.controller.d.ts.map +1 -0
- package/dist/lib/entries/controllers/create-entry.controller.d.ts +20 -0
- package/dist/lib/entries/controllers/create-entry.controller.d.ts.map +1 -0
- package/dist/lib/entries/controllers/delete-entry.controller.d.ts +24 -0
- package/dist/lib/entries/controllers/delete-entry.controller.d.ts.map +1 -0
- package/dist/lib/entries/controllers/get-entry.controller.d.ts +34 -0
- package/dist/lib/entries/controllers/get-entry.controller.d.ts.map +1 -0
- package/dist/lib/entries/controllers/list-entries.controller.d.ts +20 -0
- package/dist/lib/entries/controllers/list-entries.controller.d.ts.map +1 -0
- package/dist/lib/entries/controllers/publish-entry.controller.d.ts +19 -0
- package/dist/lib/entries/controllers/publish-entry.controller.d.ts.map +1 -0
- package/dist/lib/entries/controllers/resolve-type.d.ts +9 -0
- package/dist/lib/entries/controllers/resolve-type.d.ts.map +1 -0
- package/dist/lib/entries/controllers/update-entry.controller.d.ts +18 -0
- package/dist/lib/entries/controllers/update-entry.controller.d.ts.map +1 -0
- package/dist/lib/entries/domain/entry-publish-blocked.error.d.ts +13 -0
- package/dist/lib/entries/domain/entry-publish-blocked.error.d.ts.map +1 -0
- package/dist/lib/entries/domain/entry-publish-blocked.error.js +19 -0
- package/dist/lib/entries/domain/entry.d.ts +71 -0
- package/dist/lib/entries/domain/entry.d.ts.map +1 -0
- package/dist/lib/entries/domain/entry.js +90 -0
- package/dist/lib/entries/domain/events/entry-events.d.ts +67 -0
- package/dist/lib/entries/domain/events/entry-events.d.ts.map +1 -0
- package/dist/lib/entries/domain/events/entry-events.js +100 -0
- package/dist/lib/entries/dto/bulk-ids.dto.d.ts +11 -0
- package/dist/lib/entries/dto/bulk-ids.dto.d.ts.map +1 -0
- package/dist/lib/entries/dto/list-entries-query.dto.d.ts +46 -0
- package/dist/lib/entries/dto/list-entries-query.dto.d.ts.map +1 -0
- package/dist/lib/entries/dto/relation-delta-map.validator.d.ts +19 -0
- package/dist/lib/entries/dto/relation-delta-map.validator.d.ts.map +1 -0
- package/dist/lib/entries/dto/save-entry.dto.d.ts +46 -0
- package/dist/lib/entries/dto/save-entry.dto.d.ts.map +1 -0
- package/dist/lib/entries/entries.constants.d.ts +19 -0
- package/dist/lib/entries/entries.constants.d.ts.map +1 -0
- package/dist/lib/entries/entries.constants.js +21 -0
- package/dist/lib/entries/http/controllers/bulk-entries.controller.d.ts +33 -0
- package/dist/lib/entries/http/controllers/bulk-entries.controller.d.ts.map +1 -0
- package/dist/lib/entries/http/controllers/bulk-entries.controller.js +143 -0
- package/dist/lib/entries/http/controllers/create-entry.controller.d.ts +21 -0
- package/dist/lib/entries/http/controllers/create-entry.controller.d.ts.map +1 -0
- package/dist/lib/entries/http/controllers/create-entry.controller.js +52 -0
- package/dist/lib/entries/http/controllers/delete-entry.controller.d.ts +25 -0
- package/dist/lib/entries/http/controllers/delete-entry.controller.d.ts.map +1 -0
- package/dist/lib/entries/http/controllers/delete-entry.controller.js +84 -0
- package/dist/lib/entries/http/controllers/get-entry.controller.d.ts +44 -0
- package/dist/lib/entries/http/controllers/get-entry.controller.d.ts.map +1 -0
- package/dist/lib/entries/http/controllers/get-entry.controller.js +124 -0
- package/dist/lib/entries/http/controllers/list-entries.controller.d.ts +20 -0
- package/dist/lib/entries/http/controllers/list-entries.controller.d.ts.map +1 -0
- package/dist/lib/entries/http/controllers/list-entries.controller.js +52 -0
- package/dist/lib/entries/http/controllers/publish-entry.controller.d.ts +22 -0
- package/dist/lib/entries/http/controllers/publish-entry.controller.d.ts.map +1 -0
- package/dist/lib/entries/http/controllers/publish-entry.controller.js +68 -0
- package/dist/lib/entries/http/controllers/resolve-type.d.ts +9 -0
- package/dist/lib/entries/http/controllers/resolve-type.d.ts.map +1 -0
- package/dist/lib/entries/http/controllers/resolve-type.js +16 -0
- package/dist/lib/entries/http/controllers/to-actor.d.ts +13 -0
- package/dist/lib/entries/http/controllers/to-actor.d.ts.map +1 -0
- package/dist/lib/entries/http/controllers/to-actor.js +15 -0
- package/dist/lib/entries/http/controllers/update-entry.controller.d.ts +19 -0
- package/dist/lib/entries/http/controllers/update-entry.controller.d.ts.map +1 -0
- package/dist/lib/entries/http/controllers/update-entry.controller.js +51 -0
- package/dist/lib/entries/http/dto/bulk-ids.dto.d.ts +11 -0
- package/dist/lib/entries/http/dto/bulk-ids.dto.d.ts.map +1 -0
- package/dist/lib/entries/http/dto/bulk-ids.dto.js +33 -0
- package/dist/lib/entries/http/dto/list-entries-query.dto.d.ts +66 -0
- package/dist/lib/entries/http/dto/list-entries-query.dto.d.ts.map +1 -0
- package/dist/lib/entries/http/dto/list-entries-query.dto.js +192 -0
- package/dist/lib/entries/http/dto/relation-delta-map.validator.d.ts +30 -0
- package/dist/lib/entries/http/dto/relation-delta-map.validator.d.ts.map +1 -0
- package/dist/lib/entries/http/dto/relation-delta-map.validator.js +102 -0
- package/dist/lib/entries/http/dto/save-entry.dto.d.ts +48 -0
- package/dist/lib/entries/http/dto/save-entry.dto.d.ts.map +1 -0
- package/dist/lib/entries/http/dto/save-entry.dto.js +120 -0
- package/dist/lib/entries/http/guards/content-grant.guard.d.ts +37 -0
- package/dist/lib/entries/http/guards/content-grant.guard.d.ts.map +1 -0
- package/dist/lib/entries/http/guards/content-grant.guard.js +67 -0
- package/dist/lib/entries/infrastructure/persistence/bulk-publish-verdicts.d.ts +22 -0
- package/dist/lib/entries/infrastructure/persistence/bulk-publish-verdicts.d.ts.map +1 -0
- package/dist/lib/entries/infrastructure/persistence/bulk-publish-verdicts.js +81 -0
- package/dist/lib/entries/infrastructure/persistence/entry-counter.service.d.ts +42 -0
- package/dist/lib/entries/infrastructure/persistence/entry-counter.service.d.ts.map +1 -0
- package/dist/lib/entries/infrastructure/persistence/entry-counter.service.js +73 -0
- package/dist/lib/entries/infrastructure/persistence/entry-row.d.ts +56 -0
- package/dist/lib/entries/infrastructure/persistence/entry-row.d.ts.map +1 -0
- package/dist/lib/entries/infrastructure/persistence/entry-row.js +185 -0
- package/dist/lib/entries/infrastructure/persistence/entry-writer.service.d.ts +392 -0
- package/dist/lib/entries/infrastructure/persistence/entry-writer.service.d.ts.map +1 -0
- package/dist/lib/entries/infrastructure/persistence/entry-writer.service.js +1223 -0
- package/dist/lib/entries/infrastructure/persistence/field-selection.d.ts +24 -0
- package/dist/lib/entries/infrastructure/persistence/field-selection.d.ts.map +1 -0
- package/dist/lib/entries/infrastructure/persistence/media-accept.d.ts +23 -0
- package/dist/lib/entries/infrastructure/persistence/media-accept.d.ts.map +1 -0
- package/dist/lib/entries/infrastructure/persistence/media-accept.js +55 -0
- package/dist/lib/entries/infrastructure/persistence/relation-link.service.d.ts +327 -0
- package/dist/lib/entries/infrastructure/persistence/relation-link.service.d.ts.map +1 -0
- package/dist/lib/entries/infrastructure/persistence/relation-link.service.js +1008 -0
- package/dist/lib/entries/infrastructure/queries/bulk-publish-preview.query.d.ts +19 -0
- package/dist/lib/entries/infrastructure/queries/bulk-publish-preview.query.d.ts.map +1 -0
- package/dist/lib/entries/infrastructure/queries/bulk-publish-preview.query.js +39 -0
- package/dist/lib/entries/infrastructure/queries/entries.service.d.ts +64 -0
- package/dist/lib/entries/infrastructure/queries/entries.service.d.ts.map +1 -0
- package/dist/lib/entries/infrastructure/queries/entries.service.js +202 -0
- package/dist/lib/entries/infrastructure/queries/entry-filter-schema.d.ts +40 -0
- package/dist/lib/entries/infrastructure/queries/entry-filter-schema.d.ts.map +1 -0
- package/dist/lib/entries/infrastructure/queries/entry-filter-surface.d.ts +38 -0
- package/dist/lib/entries/infrastructure/queries/entry-filter-surface.d.ts.map +1 -0
- package/dist/lib/entries/infrastructure/queries/entry-filter-surface.js +310 -0
- package/dist/lib/entries/infrastructure/queries/entry-scalar-fields.d.ts +25 -0
- package/dist/lib/entries/infrastructure/queries/entry-scalar-fields.d.ts.map +1 -0
- package/dist/lib/entries/infrastructure/queries/entry-scalar-fields.js +51 -0
- package/dist/lib/entries/infrastructure/queries/entry-search.d.ts +19 -0
- package/dist/lib/entries/infrastructure/queries/entry-search.d.ts.map +1 -0
- package/dist/lib/entries/infrastructure/queries/entry-search.js +52 -0
- package/dist/lib/entries/infrastructure/queries/media-refs.query.d.ts +21 -0
- package/dist/lib/entries/infrastructure/queries/media-refs.query.d.ts.map +1 -0
- package/dist/lib/entries/infrastructure/queries/media-refs.query.js +117 -0
- package/dist/lib/entries/services/entries.service.d.ts +59 -0
- package/dist/lib/entries/services/entries.service.d.ts.map +1 -0
- package/dist/lib/entries/services/entry-counter.service.d.ts +31 -0
- package/dist/lib/entries/services/entry-counter.service.d.ts.map +1 -0
- package/dist/lib/entries/services/entry-filter-schema.d.ts +32 -0
- package/dist/lib/entries/services/entry-filter-schema.d.ts.map +1 -0
- package/dist/lib/entries/services/entry-row.d.ts +56 -0
- package/dist/lib/entries/services/entry-row.d.ts.map +1 -0
- package/dist/lib/entries/services/entry-writer.service.d.ts +193 -0
- package/dist/lib/entries/services/entry-writer.service.d.ts.map +1 -0
- package/dist/lib/entries/services/relation-link.service.d.ts +115 -0
- package/dist/lib/entries/services/relation-link.service.d.ts.map +1 -0
- package/dist/lib/entries/types/bulk-publish.d.ts +75 -0
- package/dist/lib/entries/types/bulk-publish.d.ts.map +1 -0
- package/dist/lib/entries/types/bulk-publish.js +22 -0
- package/dist/lib/entries/types/entry-list-view.d.ts +205 -0
- package/dist/lib/entries/types/entry-list-view.d.ts.map +1 -0
- package/dist/lib/entries/types/entry-list-view.js +5 -0
- package/dist/lib/entries/types/filter-surface.d.ts +35 -0
- package/dist/lib/entries/types/filter-surface.d.ts.map +1 -0
- package/dist/lib/entries/types/filter-surface.js +2 -0
- package/dist/lib/extension/entry-extension-boot-check.d.ts +16 -0
- package/dist/lib/extension/entry-extension-boot-check.d.ts.map +1 -0
- package/dist/lib/extension/entry-extension-boot-check.js +42 -0
- package/dist/lib/extension/entry-extension.d.ts +225 -0
- package/dist/lib/extension/entry-extension.d.ts.map +1 -0
- package/dist/lib/extension/entry-extension.js +27 -0
- package/dist/lib/extension/media-asset-resolver.d.ts +85 -0
- package/dist/lib/extension/media-asset-resolver.d.ts.map +1 -0
- package/dist/lib/extension/media-asset-resolver.js +26 -0
- package/dist/lib/extension/per-locale-relation.d.ts +18 -0
- package/dist/lib/extension/per-locale-relation.d.ts.map +1 -0
- package/dist/lib/extension/relation-locale-sync.d.ts +62 -0
- package/dist/lib/extension/relation-locale-sync.d.ts.map +1 -0
- package/dist/lib/extension/relation-locale-sync.js +88 -0
- package/dist/lib/fields/index.d.ts +94 -0
- package/dist/lib/fields/index.d.ts.map +1 -0
- package/dist/lib/fields/index.js +203 -0
- package/dist/lib/insights/http/controllers/content-pipeline.controller.d.ts +16 -0
- package/dist/lib/insights/http/controllers/content-pipeline.controller.d.ts.map +1 -0
- package/dist/lib/insights/http/controllers/content-pipeline.controller.js +39 -0
- package/dist/lib/insights/http/controllers/content-punchcard.controller.d.ts +18 -0
- package/dist/lib/insights/http/controllers/content-punchcard.controller.d.ts.map +1 -0
- package/dist/lib/insights/http/controllers/content-punchcard.controller.js +42 -0
- package/dist/lib/insights/http/controllers/content-stale.controller.d.ts +17 -0
- package/dist/lib/insights/http/controllers/content-stale.controller.d.ts.map +1 -0
- package/dist/lib/insights/http/controllers/content-stale.controller.js +40 -0
- package/dist/lib/insights/http/controllers/content-totals.controller.d.ts +18 -0
- package/dist/lib/insights/http/controllers/content-totals.controller.d.ts.map +1 -0
- package/dist/lib/insights/http/controllers/content-totals.controller.js +42 -0
- package/dist/lib/insights/http/controllers/content-unshipped.controller.d.ts +17 -0
- package/dist/lib/insights/http/controllers/content-unshipped.controller.d.ts.map +1 -0
- package/dist/lib/insights/http/controllers/content-unshipped.controller.js +40 -0
- package/dist/lib/insights/http/controllers/content-velocity.controller.d.ts +17 -0
- package/dist/lib/insights/http/controllers/content-velocity.controller.d.ts.map +1 -0
- package/dist/lib/insights/http/controllers/content-velocity.controller.js +41 -0
- package/dist/lib/insights/http/dto/insights-range-query.dto.d.ts +15 -0
- package/dist/lib/insights/http/dto/insights-range-query.dto.d.ts.map +1 -0
- package/dist/lib/insights/http/dto/insights-range-query.dto.js +38 -0
- package/dist/lib/insights/infrastructure/queries/content-insights.query.d.ts +77 -0
- package/dist/lib/insights/infrastructure/queries/content-insights.query.d.ts.map +1 -0
- package/dist/lib/insights/infrastructure/queries/content-insights.query.js +380 -0
- package/dist/lib/insights/types/content-insights-view.d.ts +134 -0
- package/dist/lib/insights/types/content-insights-view.d.ts.map +1 -0
- package/dist/lib/insights/types/content-insights-view.js +10 -0
- package/dist/lib/mcp/content-tools.provider.d.ts +83 -0
- package/dist/lib/mcp/content-tools.provider.d.ts.map +1 -0
- package/dist/lib/mcp/content-tools.provider.js +441 -0
- package/dist/lib/mcp/tool-input.d.ts +43 -0
- package/dist/lib/mcp/tool-input.d.ts.map +1 -0
- package/dist/lib/mcp/tool-input.js +117 -0
- package/dist/lib/mcp/tool-schemas.d.ts +34 -0
- package/dist/lib/mcp/tool-schemas.d.ts.map +1 -0
- package/dist/lib/mcp/tool-schemas.js +282 -0
- package/dist/lib/public/controllers/get-public-entry.controller.d.ts +26 -0
- package/dist/lib/public/controllers/get-public-entry.controller.d.ts.map +1 -0
- package/dist/lib/public/controllers/list-public-entries.controller.d.ts +24 -0
- package/dist/lib/public/controllers/list-public-entries.controller.d.ts.map +1 -0
- package/dist/lib/public/controllers/public-schema.controller.d.ts +18 -0
- package/dist/lib/public/controllers/public-schema.controller.d.ts.map +1 -0
- package/dist/lib/public-api/http/api-token-request.d.ts +41 -0
- package/dist/lib/public-api/http/api-token-request.d.ts.map +1 -0
- package/dist/lib/public-api/http/api-token-request.js +2 -0
- package/dist/lib/public-api/http/controllers/public-content-types.controller.d.ts +31 -0
- package/dist/lib/public-api/http/controllers/public-content-types.controller.d.ts.map +1 -0
- package/dist/lib/public-api/http/controllers/public-content-types.controller.js +93 -0
- package/dist/lib/public-api/http/controllers/public-entries.controller.d.ts +101 -0
- package/dist/lib/public-api/http/controllers/public-entries.controller.d.ts.map +1 -0
- package/dist/lib/public-api/http/controllers/public-entries.controller.js +307 -0
- package/dist/lib/public-api/http/controllers/public-entry-writes.controller.d.ts +76 -0
- package/dist/lib/public-api/http/controllers/public-entry-writes.controller.d.ts.map +1 -0
- package/dist/lib/public-api/http/controllers/public-entry-writes.controller.js +353 -0
- package/dist/lib/public-api/http/controllers/resolve-granted-type.d.ts +42 -0
- package/dist/lib/public-api/http/controllers/resolve-granted-type.d.ts.map +1 -0
- package/dist/lib/public-api/http/controllers/resolve-granted-type.js +25 -0
- package/dist/lib/public-api/http/decorators/current-api-token.decorator.d.ts +8 -0
- package/dist/lib/public-api/http/decorators/current-api-token.decorator.d.ts.map +1 -0
- package/dist/lib/public-api/http/decorators/current-api-token.decorator.js +17 -0
- package/dist/lib/public-api/http/dto/public-bulk.dto.d.ts +58 -0
- package/dist/lib/public-api/http/dto/public-bulk.dto.d.ts.map +1 -0
- package/dist/lib/public-api/http/dto/public-bulk.dto.js +118 -0
- package/dist/lib/public-api/http/dto/public-list-entries-query.dto.d.ts +106 -0
- package/dist/lib/public-api/http/dto/public-list-entries-query.dto.d.ts.map +1 -0
- package/dist/lib/public-api/http/dto/public-list-entries-query.dto.js +297 -0
- package/dist/lib/public-api/http/dto/public-save-entry.dto.d.ts +39 -0
- package/dist/lib/public-api/http/dto/public-save-entry.dto.d.ts.map +1 -0
- package/dist/lib/public-api/http/dto/public-save-entry.dto.js +112 -0
- package/dist/lib/public-api/http/guards/api-token-workspace.guard.d.ts +25 -0
- package/dist/lib/public-api/http/guards/api-token-workspace.guard.d.ts.map +1 -0
- package/dist/lib/public-api/http/guards/api-token-workspace.guard.js +58 -0
- package/dist/lib/public-api/http/guards/api-token.guard.d.ts +32 -0
- package/dist/lib/public-api/http/guards/api-token.guard.d.ts.map +1 -0
- package/dist/lib/public-api/http/guards/api-token.guard.js +92 -0
- package/dist/lib/public-api/http/guards/draft-visibility.guard.d.ts +25 -0
- package/dist/lib/public-api/http/guards/draft-visibility.guard.d.ts.map +1 -0
- package/dist/lib/public-api/http/guards/draft-visibility.guard.js +56 -0
- package/dist/lib/public-api/infrastructure/bulk-save-op.d.ts +55 -0
- package/dist/lib/public-api/infrastructure/bulk-save-op.d.ts.map +1 -0
- package/dist/lib/public-api/infrastructure/bulk-save-op.js +61 -0
- package/dist/lib/public-api/infrastructure/field-selection.d.ts +21 -0
- package/dist/lib/public-api/infrastructure/field-selection.d.ts.map +1 -0
- package/dist/lib/public-api/infrastructure/field-selection.js +72 -0
- package/dist/lib/public-api/infrastructure/public-entries.query.d.ts +248 -0
- package/dist/lib/public-api/infrastructure/public-entries.query.d.ts.map +1 -0
- package/dist/lib/public-api/infrastructure/public-entries.query.js +557 -0
- package/dist/lib/public-api/infrastructure/public-entry-row.d.ts +31 -0
- package/dist/lib/public-api/infrastructure/public-entry-row.d.ts.map +1 -0
- package/dist/lib/public-api/infrastructure/public-entry-row.js +76 -0
- package/dist/lib/public-api/infrastructure/public-entry-writes.service.d.ts +188 -0
- package/dist/lib/public-api/infrastructure/public-entry-writes.service.d.ts.map +1 -0
- package/dist/lib/public-api/infrastructure/public-entry-writes.service.js +321 -0
- package/dist/lib/public-api/infrastructure/public-expansion.query.d.ts +98 -0
- package/dist/lib/public-api/infrastructure/public-expansion.query.d.ts.map +1 -0
- package/dist/lib/public-api/infrastructure/public-expansion.query.js +384 -0
- package/dist/lib/public-api/types/public-bulk.d.ts +77 -0
- package/dist/lib/public-api/types/public-bulk.d.ts.map +1 -0
- package/dist/lib/public-api/types/public-bulk.js +23 -0
- package/dist/lib/public-api/types/public-entry.d.ts +97 -0
- package/dist/lib/public-api/types/public-entry.d.ts.map +1 -0
- package/dist/lib/public-api/types/public-entry.js +8 -0
- package/dist/lib/public-api/types/public-expansion.d.ts +92 -0
- package/dist/lib/public-api/types/public-expansion.d.ts.map +1 -0
- package/dist/lib/public-api/types/public-expansion.js +2 -0
- package/dist/lib/registry/content-type-registry.d.ts +103 -0
- package/dist/lib/registry/content-type-registry.d.ts.map +1 -0
- package/dist/lib/registry/content-type-registry.js +155 -0
- package/dist/lib/revisions/application/ports/revision-store.d.ts +71 -0
- package/dist/lib/revisions/application/ports/revision-store.d.ts.map +1 -0
- package/dist/lib/revisions/application/ports/revision-store.js +9 -0
- package/dist/lib/revisions/application/use-cases/publish-revision.use-case.d.ts +40 -0
- package/dist/lib/revisions/application/use-cases/publish-revision.use-case.d.ts.map +1 -0
- package/dist/lib/revisions/application/use-cases/publish-revision.use-case.js +66 -0
- package/dist/lib/revisions/application/use-cases/restore-revision.use-case.d.ts +36 -0
- package/dist/lib/revisions/application/use-cases/restore-revision.use-case.d.ts.map +1 -0
- package/dist/lib/revisions/application/use-cases/restore-revision.use-case.js +57 -0
- package/dist/lib/revisions/domain/revision-status.d.ts +18 -0
- package/dist/lib/revisions/domain/revision-status.d.ts.map +1 -0
- package/dist/lib/revisions/domain/revision-status.js +18 -0
- package/dist/lib/revisions/domain/revision.d.ts +80 -0
- package/dist/lib/revisions/domain/revision.d.ts.map +1 -0
- package/dist/lib/revisions/domain/revision.js +84 -0
- package/dist/lib/revisions/http/controllers/publish-revision.controller.d.ts +19 -0
- package/dist/lib/revisions/http/controllers/publish-revision.controller.d.ts.map +1 -0
- package/dist/lib/revisions/http/controllers/publish-revision.controller.js +51 -0
- package/dist/lib/revisions/http/controllers/restore-revision.controller.d.ts +17 -0
- package/dist/lib/revisions/http/controllers/restore-revision.controller.d.ts.map +1 -0
- package/dist/lib/revisions/http/controllers/restore-revision.controller.js +49 -0
- package/dist/lib/revisions/http/controllers/revisions.controller.d.ts +20 -0
- package/dist/lib/revisions/http/controllers/revisions.controller.d.ts.map +1 -0
- package/dist/lib/revisions/http/controllers/revisions.controller.js +76 -0
- package/dist/lib/revisions/infrastructure/persistence/drizzle-revision.store.d.ts +33 -0
- package/dist/lib/revisions/infrastructure/persistence/drizzle-revision.store.d.ts.map +1 -0
- package/dist/lib/revisions/infrastructure/persistence/drizzle-revision.store.js +174 -0
- package/dist/lib/revisions/infrastructure/persistence/revision-snapshot.d.ts +17 -0
- package/dist/lib/revisions/infrastructure/persistence/revision-snapshot.d.ts.map +1 -0
- package/dist/lib/revisions/infrastructure/persistence/revision-snapshot.js +20 -0
- package/dist/lib/revisions/infrastructure/persistence/revision-table.d.ts +228 -0
- package/dist/lib/revisions/infrastructure/persistence/revision-table.d.ts.map +1 -0
- package/dist/lib/revisions/infrastructure/persistence/revision-table.js +57 -0
- package/dist/lib/revisions/infrastructure/queries/revision-refs.query.d.ts +22 -0
- package/dist/lib/revisions/infrastructure/queries/revision-refs.query.d.ts.map +1 -0
- package/dist/lib/revisions/infrastructure/queries/revision-refs.query.js +66 -0
- package/dist/lib/revisions/revisions.constants.d.ts +10 -0
- package/dist/lib/revisions/revisions.constants.d.ts.map +1 -0
- package/dist/lib/revisions/revisions.constants.js +12 -0
- package/dist/lib/revisions/types/revision-view.d.ts +74 -0
- package/dist/lib/revisions/types/revision-view.d.ts.map +1 -0
- package/dist/lib/revisions/types/revision-view.js +2 -0
- package/dist/lib/types/content-type.d.ts +131 -0
- package/dist/lib/types/content-type.d.ts.map +1 -0
- package/dist/lib/types/content-type.js +28 -0
- package/dist/lib/types/fields.d.ts +303 -0
- package/dist/lib/types/fields.d.ts.map +1 -0
- package/dist/lib/types/fields.js +52 -0
- package/dist/lib/utils/content-plugin.d.ts +35 -0
- package/dist/lib/utils/content-plugin.d.ts.map +1 -0
- package/dist/lib/utils/content-plugin.js +35 -0
- package/dist/lib/validation/services/entry-validation.service.d.ts +24 -0
- package/dist/lib/validation/services/entry-validation.service.d.ts.map +1 -0
- package/dist/lib/validation/services/entry-validation.service.js +35 -0
- package/package.json +54 -0
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ContentPipelineController = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const common_1 = require("@nestjs/common");
|
|
6
|
+
const identity_server_1 = require("@orthacms/identity-server");
|
|
7
|
+
const workspaces_server_1 = require("@orthacms/workspaces-server");
|
|
8
|
+
const content_insights_query_1 = require("../../infrastructure/queries/content-insights.query");
|
|
9
|
+
/**
|
|
10
|
+
* `GET /api/insights/content/pipeline` — the draft/published split for every
|
|
11
|
+
* content type that has at least one entry in the workspace.
|
|
12
|
+
*
|
|
13
|
+
* Takes no `?days=`: this is a snapshot of what exists now, not a flow over
|
|
14
|
+
* time. Filtering it by a window would answer a different and much less useful
|
|
15
|
+
* question ("what was created recently") under the same name.
|
|
16
|
+
*/
|
|
17
|
+
let ContentPipelineController = class ContentPipelineController {
|
|
18
|
+
insights;
|
|
19
|
+
constructor(insights) {
|
|
20
|
+
this.insights = insights;
|
|
21
|
+
}
|
|
22
|
+
pipeline(workspaceId) {
|
|
23
|
+
return this.insights.pipeline(workspaceId);
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
exports.ContentPipelineController = ContentPipelineController;
|
|
27
|
+
tslib_1.__decorate([
|
|
28
|
+
(0, common_1.Get)('pipeline'),
|
|
29
|
+
tslib_1.__param(0, (0, workspaces_server_1.CurrentWorkspace)()),
|
|
30
|
+
tslib_1.__metadata("design:type", Function),
|
|
31
|
+
tslib_1.__metadata("design:paramtypes", [String]),
|
|
32
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
33
|
+
], ContentPipelineController.prototype, "pipeline", null);
|
|
34
|
+
exports.ContentPipelineController = ContentPipelineController = tslib_1.__decorate([
|
|
35
|
+
(0, common_1.UseGuards)(identity_server_1.PermissionsGuard, workspaces_server_1.WorkspaceGuard),
|
|
36
|
+
(0, identity_server_1.RequirePermissions)(identity_server_1.PERMISSIONS.CONTENT_READ),
|
|
37
|
+
(0, common_1.Controller)('insights/content'),
|
|
38
|
+
tslib_1.__metadata("design:paramtypes", [content_insights_query_1.ContentInsightsQuery])
|
|
39
|
+
], ContentPipelineController);
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ContentInsightsQuery } from '../../infrastructure/queries/content-insights.query';
|
|
2
|
+
import type { ContentPunchcardView } from '../../types/content-insights-view';
|
|
3
|
+
import { InsightsRangeQueryDto } from '../dto/insights-range-query.dto';
|
|
4
|
+
/**
|
|
5
|
+
* `GET /api/insights/content/punchcard` — editing activity by weekday and hour.
|
|
6
|
+
*
|
|
7
|
+
* Reads `content_entry_revisions` rather than the activity log: a revision is
|
|
8
|
+
* written on every save and carries a `workspace_id`, whereas `activity_events`
|
|
9
|
+
* is a global table with no workspace column, so a workspace-scoped answer
|
|
10
|
+
* simply isn't available from it. Saves are also the better signal — they cover
|
|
11
|
+
* the editing work, not only the moments something went live.
|
|
12
|
+
*/
|
|
13
|
+
export declare class ContentPunchcardController {
|
|
14
|
+
private readonly insights;
|
|
15
|
+
constructor(insights: ContentInsightsQuery);
|
|
16
|
+
punchcard(query: InsightsRangeQueryDto, workspaceId: string): Promise<ContentPunchcardView>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=content-punchcard.controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-punchcard.controller.d.ts","sourceRoot":"","sources":["../../../../../src/lib/insights/http/controllers/content-punchcard.controller.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,oBAAoB,EAAE,MAAM,qDAAqD,CAAC;AAC3F,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAEH,qBAAqB,EACxB,MAAM,iCAAiC,CAAC;AAEzC;;;;;;;;GAQG;AACH,qBAGa,0BAA0B;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,oBAAoB;IAG3D,SAAS,CACI,KAAK,EAAE,qBAAqB,EACjB,WAAW,EAAE,MAAM,GACxC,OAAO,CAAC,oBAAoB,CAAC;CAMnC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ContentPunchcardController = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const common_1 = require("@nestjs/common");
|
|
6
|
+
const identity_server_1 = require("@orthacms/identity-server");
|
|
7
|
+
const workspaces_server_1 = require("@orthacms/workspaces-server");
|
|
8
|
+
const content_insights_query_1 = require("../../infrastructure/queries/content-insights.query");
|
|
9
|
+
const insights_range_query_dto_1 = require("../dto/insights-range-query.dto");
|
|
10
|
+
/**
|
|
11
|
+
* `GET /api/insights/content/punchcard` — editing activity by weekday and hour.
|
|
12
|
+
*
|
|
13
|
+
* Reads `content_entry_revisions` rather than the activity log: a revision is
|
|
14
|
+
* written on every save and carries a `workspace_id`, whereas `activity_events`
|
|
15
|
+
* is a global table with no workspace column, so a workspace-scoped answer
|
|
16
|
+
* simply isn't available from it. Saves are also the better signal — they cover
|
|
17
|
+
* the editing work, not only the moments something went live.
|
|
18
|
+
*/
|
|
19
|
+
let ContentPunchcardController = class ContentPunchcardController {
|
|
20
|
+
insights;
|
|
21
|
+
constructor(insights) {
|
|
22
|
+
this.insights = insights;
|
|
23
|
+
}
|
|
24
|
+
punchcard(query, workspaceId) {
|
|
25
|
+
return this.insights.punchcard(workspaceId, query.days ?? insights_range_query_dto_1.DEFAULT_INSIGHTS_DAYS);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
exports.ContentPunchcardController = ContentPunchcardController;
|
|
29
|
+
tslib_1.__decorate([
|
|
30
|
+
(0, common_1.Get)('punchcard'),
|
|
31
|
+
tslib_1.__param(0, (0, common_1.Query)()),
|
|
32
|
+
tslib_1.__param(1, (0, workspaces_server_1.CurrentWorkspace)()),
|
|
33
|
+
tslib_1.__metadata("design:type", Function),
|
|
34
|
+
tslib_1.__metadata("design:paramtypes", [insights_range_query_dto_1.InsightsRangeQueryDto, String]),
|
|
35
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
36
|
+
], ContentPunchcardController.prototype, "punchcard", null);
|
|
37
|
+
exports.ContentPunchcardController = ContentPunchcardController = tslib_1.__decorate([
|
|
38
|
+
(0, common_1.UseGuards)(identity_server_1.PermissionsGuard, workspaces_server_1.WorkspaceGuard),
|
|
39
|
+
(0, identity_server_1.RequirePermissions)(identity_server_1.PERMISSIONS.CONTENT_READ),
|
|
40
|
+
(0, common_1.Controller)('insights/content'),
|
|
41
|
+
tslib_1.__metadata("design:paramtypes", [content_insights_query_1.ContentInsightsQuery])
|
|
42
|
+
], ContentPunchcardController);
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ContentInsightsQuery } from '../../infrastructure/queries/content-insights.query';
|
|
2
|
+
import type { ContentStaleView } from '../../types/content-insights-view';
|
|
3
|
+
/**
|
|
4
|
+
* `GET /api/insights/content/stale` — published entries bucketed by how long
|
|
5
|
+
* ago they were last edited.
|
|
6
|
+
*
|
|
7
|
+
* Takes no `?days=`: the buckets *are* the time axis, and they are fixed
|
|
8
|
+
* (30/90/180/365/older) so the answer means the same thing whichever range the
|
|
9
|
+
* page is set to. "What has nobody touched in a year" is not a question about
|
|
10
|
+
* the last 7 days.
|
|
11
|
+
*/
|
|
12
|
+
export declare class ContentStaleController {
|
|
13
|
+
private readonly insights;
|
|
14
|
+
constructor(insights: ContentInsightsQuery);
|
|
15
|
+
stale(workspaceId: string): Promise<ContentStaleView>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=content-stale.controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-stale.controller.d.ts","sourceRoot":"","sources":["../../../../../src/lib/insights/http/controllers/content-stale.controller.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,oBAAoB,EAAE,MAAM,qDAAqD,CAAC;AAC3F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAE1E;;;;;;;;GAQG;AACH,qBAGa,sBAAsB;IACnB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,oBAAoB;IAG3D,KAAK,CAAqB,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAG5E"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ContentStaleController = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const common_1 = require("@nestjs/common");
|
|
6
|
+
const identity_server_1 = require("@orthacms/identity-server");
|
|
7
|
+
const workspaces_server_1 = require("@orthacms/workspaces-server");
|
|
8
|
+
const content_insights_query_1 = require("../../infrastructure/queries/content-insights.query");
|
|
9
|
+
/**
|
|
10
|
+
* `GET /api/insights/content/stale` — published entries bucketed by how long
|
|
11
|
+
* ago they were last edited.
|
|
12
|
+
*
|
|
13
|
+
* Takes no `?days=`: the buckets *are* the time axis, and they are fixed
|
|
14
|
+
* (30/90/180/365/older) so the answer means the same thing whichever range the
|
|
15
|
+
* page is set to. "What has nobody touched in a year" is not a question about
|
|
16
|
+
* the last 7 days.
|
|
17
|
+
*/
|
|
18
|
+
let ContentStaleController = class ContentStaleController {
|
|
19
|
+
insights;
|
|
20
|
+
constructor(insights) {
|
|
21
|
+
this.insights = insights;
|
|
22
|
+
}
|
|
23
|
+
stale(workspaceId) {
|
|
24
|
+
return this.insights.stale(workspaceId);
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
exports.ContentStaleController = ContentStaleController;
|
|
28
|
+
tslib_1.__decorate([
|
|
29
|
+
(0, common_1.Get)('stale'),
|
|
30
|
+
tslib_1.__param(0, (0, workspaces_server_1.CurrentWorkspace)()),
|
|
31
|
+
tslib_1.__metadata("design:type", Function),
|
|
32
|
+
tslib_1.__metadata("design:paramtypes", [String]),
|
|
33
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
34
|
+
], ContentStaleController.prototype, "stale", null);
|
|
35
|
+
exports.ContentStaleController = ContentStaleController = tslib_1.__decorate([
|
|
36
|
+
(0, common_1.UseGuards)(identity_server_1.PermissionsGuard, workspaces_server_1.WorkspaceGuard),
|
|
37
|
+
(0, identity_server_1.RequirePermissions)(identity_server_1.PERMISSIONS.CONTENT_READ),
|
|
38
|
+
(0, common_1.Controller)('insights/content'),
|
|
39
|
+
tslib_1.__metadata("design:paramtypes", [content_insights_query_1.ContentInsightsQuery])
|
|
40
|
+
], ContentStaleController);
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ContentInsightsQuery } from '../../infrastructure/queries/content-insights.query';
|
|
2
|
+
import type { ContentTotalsView } from '../../types/content-insights-view';
|
|
3
|
+
import { InsightsRangeQueryDto } from '../dto/insights-range-query.dto';
|
|
4
|
+
/**
|
|
5
|
+
* `GET /api/insights/content/totals` — entry, published and draft counts for
|
|
6
|
+
* the workspace, with the change over the window and a short history for the
|
|
7
|
+
* stat tiles' sparklines.
|
|
8
|
+
*
|
|
9
|
+
* Its own endpoint rather than a field on a combined Insights response: each
|
|
10
|
+
* widget on the page owns its own request, so a slow or failing aggregate
|
|
11
|
+
* degrades one card instead of blanking the dashboard.
|
|
12
|
+
*/
|
|
13
|
+
export declare class ContentTotalsController {
|
|
14
|
+
private readonly insights;
|
|
15
|
+
constructor(insights: ContentInsightsQuery);
|
|
16
|
+
totals(query: InsightsRangeQueryDto, workspaceId: string): Promise<ContentTotalsView>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=content-totals.controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-totals.controller.d.ts","sourceRoot":"","sources":["../../../../../src/lib/insights/http/controllers/content-totals.controller.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,oBAAoB,EAAE,MAAM,qDAAqD,CAAC;AAC3F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAEH,qBAAqB,EACxB,MAAM,iCAAiC,CAAC;AAEzC;;;;;;;;GAQG;AACH,qBAGa,uBAAuB;IACpB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,oBAAoB;IAG3D,MAAM,CACO,KAAK,EAAE,qBAAqB,EACjB,WAAW,EAAE,MAAM,GACxC,OAAO,CAAC,iBAAiB,CAAC;CAMhC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ContentTotalsController = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const common_1 = require("@nestjs/common");
|
|
6
|
+
const identity_server_1 = require("@orthacms/identity-server");
|
|
7
|
+
const workspaces_server_1 = require("@orthacms/workspaces-server");
|
|
8
|
+
const content_insights_query_1 = require("../../infrastructure/queries/content-insights.query");
|
|
9
|
+
const insights_range_query_dto_1 = require("../dto/insights-range-query.dto");
|
|
10
|
+
/**
|
|
11
|
+
* `GET /api/insights/content/totals` — entry, published and draft counts for
|
|
12
|
+
* the workspace, with the change over the window and a short history for the
|
|
13
|
+
* stat tiles' sparklines.
|
|
14
|
+
*
|
|
15
|
+
* Its own endpoint rather than a field on a combined Insights response: each
|
|
16
|
+
* widget on the page owns its own request, so a slow or failing aggregate
|
|
17
|
+
* degrades one card instead of blanking the dashboard.
|
|
18
|
+
*/
|
|
19
|
+
let ContentTotalsController = class ContentTotalsController {
|
|
20
|
+
insights;
|
|
21
|
+
constructor(insights) {
|
|
22
|
+
this.insights = insights;
|
|
23
|
+
}
|
|
24
|
+
totals(query, workspaceId) {
|
|
25
|
+
return this.insights.totals(workspaceId, query.days ?? insights_range_query_dto_1.DEFAULT_INSIGHTS_DAYS);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
exports.ContentTotalsController = ContentTotalsController;
|
|
29
|
+
tslib_1.__decorate([
|
|
30
|
+
(0, common_1.Get)('totals'),
|
|
31
|
+
tslib_1.__param(0, (0, common_1.Query)()),
|
|
32
|
+
tslib_1.__param(1, (0, workspaces_server_1.CurrentWorkspace)()),
|
|
33
|
+
tslib_1.__metadata("design:type", Function),
|
|
34
|
+
tslib_1.__metadata("design:paramtypes", [insights_range_query_dto_1.InsightsRangeQueryDto, String]),
|
|
35
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
36
|
+
], ContentTotalsController.prototype, "totals", null);
|
|
37
|
+
exports.ContentTotalsController = ContentTotalsController = tslib_1.__decorate([
|
|
38
|
+
(0, common_1.UseGuards)(identity_server_1.PermissionsGuard, workspaces_server_1.WorkspaceGuard),
|
|
39
|
+
(0, identity_server_1.RequirePermissions)(identity_server_1.PERMISSIONS.CONTENT_READ),
|
|
40
|
+
(0, common_1.Controller)('insights/content'),
|
|
41
|
+
tslib_1.__metadata("design:paramtypes", [content_insights_query_1.ContentInsightsQuery])
|
|
42
|
+
], ContentTotalsController);
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ContentInsightsQuery } from '../../infrastructure/queries/content-insights.query';
|
|
2
|
+
import type { ContentUnshippedView } from '../../types/content-insights-view';
|
|
3
|
+
/**
|
|
4
|
+
* `GET /api/insights/content/unshipped` — entries that are live but carry
|
|
5
|
+
* unpublished edits (the admin's **Modified** state), per type and in total.
|
|
6
|
+
*
|
|
7
|
+
* Takes no `?days=`, for the same reason `stale` doesn't: a pending edit is
|
|
8
|
+
* pending whether it was made this morning or last spring, and windowing it
|
|
9
|
+
* would quietly answer "changes made recently that are unpublished" under a name
|
|
10
|
+
* that promises the backlog.
|
|
11
|
+
*/
|
|
12
|
+
export declare class ContentUnshippedController {
|
|
13
|
+
private readonly insights;
|
|
14
|
+
constructor(insights: ContentInsightsQuery);
|
|
15
|
+
unshipped(workspaceId: string): Promise<ContentUnshippedView>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=content-unshipped.controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-unshipped.controller.d.ts","sourceRoot":"","sources":["../../../../../src/lib/insights/http/controllers/content-unshipped.controller.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,oBAAoB,EAAE,MAAM,qDAAqD,CAAC;AAC3F,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAE9E;;;;;;;;GAQG;AACH,qBAGa,0BAA0B;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,oBAAoB;IAG3D,SAAS,CACe,WAAW,EAAE,MAAM,GACxC,OAAO,CAAC,oBAAoB,CAAC;CAGnC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ContentUnshippedController = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const common_1 = require("@nestjs/common");
|
|
6
|
+
const identity_server_1 = require("@orthacms/identity-server");
|
|
7
|
+
const workspaces_server_1 = require("@orthacms/workspaces-server");
|
|
8
|
+
const content_insights_query_1 = require("../../infrastructure/queries/content-insights.query");
|
|
9
|
+
/**
|
|
10
|
+
* `GET /api/insights/content/unshipped` — entries that are live but carry
|
|
11
|
+
* unpublished edits (the admin's **Modified** state), per type and in total.
|
|
12
|
+
*
|
|
13
|
+
* Takes no `?days=`, for the same reason `stale` doesn't: a pending edit is
|
|
14
|
+
* pending whether it was made this morning or last spring, and windowing it
|
|
15
|
+
* would quietly answer "changes made recently that are unpublished" under a name
|
|
16
|
+
* that promises the backlog.
|
|
17
|
+
*/
|
|
18
|
+
let ContentUnshippedController = class ContentUnshippedController {
|
|
19
|
+
insights;
|
|
20
|
+
constructor(insights) {
|
|
21
|
+
this.insights = insights;
|
|
22
|
+
}
|
|
23
|
+
unshipped(workspaceId) {
|
|
24
|
+
return this.insights.unshipped(workspaceId);
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
exports.ContentUnshippedController = ContentUnshippedController;
|
|
28
|
+
tslib_1.__decorate([
|
|
29
|
+
(0, common_1.Get)('unshipped'),
|
|
30
|
+
tslib_1.__param(0, (0, workspaces_server_1.CurrentWorkspace)()),
|
|
31
|
+
tslib_1.__metadata("design:type", Function),
|
|
32
|
+
tslib_1.__metadata("design:paramtypes", [String]),
|
|
33
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
34
|
+
], ContentUnshippedController.prototype, "unshipped", null);
|
|
35
|
+
exports.ContentUnshippedController = ContentUnshippedController = tslib_1.__decorate([
|
|
36
|
+
(0, common_1.UseGuards)(identity_server_1.PermissionsGuard, workspaces_server_1.WorkspaceGuard),
|
|
37
|
+
(0, identity_server_1.RequirePermissions)(identity_server_1.PERMISSIONS.CONTENT_READ),
|
|
38
|
+
(0, common_1.Controller)('insights/content'),
|
|
39
|
+
tslib_1.__metadata("design:paramtypes", [content_insights_query_1.ContentInsightsQuery])
|
|
40
|
+
], ContentUnshippedController);
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ContentInsightsQuery } from '../../infrastructure/queries/content-insights.query';
|
|
2
|
+
import type { ContentVelocityView } from '../../types/content-insights-view';
|
|
3
|
+
import { InsightsRangeQueryDto } from '../dto/insights-range-query.dto';
|
|
4
|
+
/**
|
|
5
|
+
* `GET /api/insights/content/velocity` — entries published per time bucket
|
|
6
|
+
* across the selected window.
|
|
7
|
+
*
|
|
8
|
+
* Counts `published_at`, so an entry that was published, unpublished and
|
|
9
|
+
* published again contributes at its latest publish only. The column records a
|
|
10
|
+
* state, not a log, and the widget's caption is written to match.
|
|
11
|
+
*/
|
|
12
|
+
export declare class ContentVelocityController {
|
|
13
|
+
private readonly insights;
|
|
14
|
+
constructor(insights: ContentInsightsQuery);
|
|
15
|
+
velocity(query: InsightsRangeQueryDto, workspaceId: string): Promise<ContentVelocityView>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=content-velocity.controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-velocity.controller.d.ts","sourceRoot":"","sources":["../../../../../src/lib/insights/http/controllers/content-velocity.controller.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,oBAAoB,EAAE,MAAM,qDAAqD,CAAC;AAC3F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAEH,qBAAqB,EACxB,MAAM,iCAAiC,CAAC;AAEzC;;;;;;;GAOG;AACH,qBAGa,yBAAyB;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,oBAAoB;IAG3D,QAAQ,CACK,KAAK,EAAE,qBAAqB,EACjB,WAAW,EAAE,MAAM,GACxC,OAAO,CAAC,mBAAmB,CAAC;CAMlC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ContentVelocityController = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const common_1 = require("@nestjs/common");
|
|
6
|
+
const identity_server_1 = require("@orthacms/identity-server");
|
|
7
|
+
const workspaces_server_1 = require("@orthacms/workspaces-server");
|
|
8
|
+
const content_insights_query_1 = require("../../infrastructure/queries/content-insights.query");
|
|
9
|
+
const insights_range_query_dto_1 = require("../dto/insights-range-query.dto");
|
|
10
|
+
/**
|
|
11
|
+
* `GET /api/insights/content/velocity` — entries published per time bucket
|
|
12
|
+
* across the selected window.
|
|
13
|
+
*
|
|
14
|
+
* Counts `published_at`, so an entry that was published, unpublished and
|
|
15
|
+
* published again contributes at its latest publish only. The column records a
|
|
16
|
+
* state, not a log, and the widget's caption is written to match.
|
|
17
|
+
*/
|
|
18
|
+
let ContentVelocityController = class ContentVelocityController {
|
|
19
|
+
insights;
|
|
20
|
+
constructor(insights) {
|
|
21
|
+
this.insights = insights;
|
|
22
|
+
}
|
|
23
|
+
velocity(query, workspaceId) {
|
|
24
|
+
return this.insights.velocity(workspaceId, query.days ?? insights_range_query_dto_1.DEFAULT_INSIGHTS_DAYS);
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
exports.ContentVelocityController = ContentVelocityController;
|
|
28
|
+
tslib_1.__decorate([
|
|
29
|
+
(0, common_1.Get)('velocity'),
|
|
30
|
+
tslib_1.__param(0, (0, common_1.Query)()),
|
|
31
|
+
tslib_1.__param(1, (0, workspaces_server_1.CurrentWorkspace)()),
|
|
32
|
+
tslib_1.__metadata("design:type", Function),
|
|
33
|
+
tslib_1.__metadata("design:paramtypes", [insights_range_query_dto_1.InsightsRangeQueryDto, String]),
|
|
34
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
35
|
+
], ContentVelocityController.prototype, "velocity", null);
|
|
36
|
+
exports.ContentVelocityController = ContentVelocityController = tslib_1.__decorate([
|
|
37
|
+
(0, common_1.UseGuards)(identity_server_1.PermissionsGuard, workspaces_server_1.WorkspaceGuard),
|
|
38
|
+
(0, identity_server_1.RequirePermissions)(identity_server_1.PERMISSIONS.CONTENT_READ),
|
|
39
|
+
(0, common_1.Controller)('insights/content'),
|
|
40
|
+
tslib_1.__metadata("design:paramtypes", [content_insights_query_1.ContentInsightsQuery])
|
|
41
|
+
], ContentVelocityController);
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** Window used when a request names none — matches the page's default range. */
|
|
2
|
+
export declare const DEFAULT_INSIGHTS_DAYS = 30;
|
|
3
|
+
/**
|
|
4
|
+
* Longest window an Insights read may ask for.
|
|
5
|
+
*
|
|
6
|
+
* Bounded because every one of these endpoints fans out across each content
|
|
7
|
+
* type's table: an unbounded `?days=` would let a single request scan the whole
|
|
8
|
+
* history of every collection in the workspace.
|
|
9
|
+
*/
|
|
10
|
+
export declare const MAX_INSIGHTS_DAYS = 365;
|
|
11
|
+
/** `?days=` — the window an Insights read reports over. */
|
|
12
|
+
export declare class InsightsRangeQueryDto {
|
|
13
|
+
days?: number;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=insights-range-query.dto.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"insights-range-query.dto.d.ts","sourceRoot":"","sources":["../../../../../src/lib/insights/http/dto/insights-range-query.dto.ts"],"names":[],"mappings":"AAIA,gFAAgF;AAChF,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAExC;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAErC,2DAA2D;AAC3D,qBAAa,qBAAqB;IAe9B,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InsightsRangeQueryDto = exports.MAX_INSIGHTS_DAYS = exports.DEFAULT_INSIGHTS_DAYS = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
6
|
+
const class_transformer_1 = require("class-transformer");
|
|
7
|
+
const class_validator_1 = require("class-validator");
|
|
8
|
+
/** Window used when a request names none — matches the page's default range. */
|
|
9
|
+
exports.DEFAULT_INSIGHTS_DAYS = 30;
|
|
10
|
+
/**
|
|
11
|
+
* Longest window an Insights read may ask for.
|
|
12
|
+
*
|
|
13
|
+
* Bounded because every one of these endpoints fans out across each content
|
|
14
|
+
* type's table: an unbounded `?days=` would let a single request scan the whole
|
|
15
|
+
* history of every collection in the workspace.
|
|
16
|
+
*/
|
|
17
|
+
exports.MAX_INSIGHTS_DAYS = 365;
|
|
18
|
+
/** `?days=` — the window an Insights read reports over. */
|
|
19
|
+
class InsightsRangeQueryDto {
|
|
20
|
+
days;
|
|
21
|
+
}
|
|
22
|
+
exports.InsightsRangeQueryDto = InsightsRangeQueryDto;
|
|
23
|
+
tslib_1.__decorate([
|
|
24
|
+
(0, swagger_1.ApiPropertyOptional)({
|
|
25
|
+
type: 'integer',
|
|
26
|
+
minimum: 1,
|
|
27
|
+
maximum: exports.MAX_INSIGHTS_DAYS,
|
|
28
|
+
default: exports.DEFAULT_INSIGHTS_DAYS,
|
|
29
|
+
description: 'How many days back to report over. Bucket width is chosen from this: up to 31 days is grouped by day, up to 120 by week, beyond that by month.',
|
|
30
|
+
example: 30
|
|
31
|
+
}),
|
|
32
|
+
(0, class_validator_1.IsOptional)(),
|
|
33
|
+
(0, class_transformer_1.Type)(() => Number),
|
|
34
|
+
(0, class_validator_1.IsInt)(),
|
|
35
|
+
(0, class_validator_1.Min)(1),
|
|
36
|
+
(0, class_validator_1.Max)(exports.MAX_INSIGHTS_DAYS),
|
|
37
|
+
tslib_1.__metadata("design:type", Number)
|
|
38
|
+
], InsightsRangeQueryDto.prototype, "days", void 0);
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { type Database } from '@orthacms/database';
|
|
2
|
+
import type { ContentTypeRegistry } from '../../../registry/content-type-registry';
|
|
3
|
+
import type { ContentPipelineView, ContentPunchcardView, ContentStaleView, ContentTotalsView, ContentUnshippedView, ContentVelocityView } from '../../types/content-insights-view';
|
|
4
|
+
/**
|
|
5
|
+
* Live read-model for the content Insights widgets.
|
|
6
|
+
*
|
|
7
|
+
* Every figure is aggregated **on demand** from the collection tables rather
|
|
8
|
+
* than folded into a projection. That is a deliberate trade for this stage: the
|
|
9
|
+
* counts are workspace-scoped and hit the existing
|
|
10
|
+
* `(workspace_id, …)` list indexes, so they are cheap at the scale a single
|
|
11
|
+
* workspace's content reaches, and a projection would add a table, migrations
|
|
12
|
+
* and a rebuild path to maintain before anything proved it was needed. The seam
|
|
13
|
+
* to change later is this class alone — the HTTP contract and the widgets don't
|
|
14
|
+
* know where the numbers come from.
|
|
15
|
+
*
|
|
16
|
+
* Each method queries **per content type** and merges in memory. There is no
|
|
17
|
+
* single table to group over: a collection is its own generated
|
|
18
|
+
* `content_<name>` table, so "entries in this workspace" is inherently a fan-out.
|
|
19
|
+
*/
|
|
20
|
+
export declare class ContentInsightsQuery {
|
|
21
|
+
private readonly db;
|
|
22
|
+
private readonly registry;
|
|
23
|
+
constructor(db: Database, registry: ContentTypeRegistry);
|
|
24
|
+
/**
|
|
25
|
+
* Restricts a read to one workspace, and to rows that still exist.
|
|
26
|
+
*
|
|
27
|
+
* The soft-delete clause is why this is shared rather than inlined: a
|
|
28
|
+
* tombstoned entry is still a row, and a count that forgets `deleted_at`
|
|
29
|
+
* silently reports deleted content as live — the kind of wrong number a
|
|
30
|
+
* dashboard is believed on.
|
|
31
|
+
*/
|
|
32
|
+
private scope;
|
|
33
|
+
/** Counts rows of one type matching an extra predicate. */
|
|
34
|
+
private countOf;
|
|
35
|
+
/**
|
|
36
|
+
* Counts rows per time bucket over a window, for one type and one
|
|
37
|
+
* timestamp column. Returns raw buckets — the caller decides whether they
|
|
38
|
+
* are a series or the increments of a cumulative total.
|
|
39
|
+
*/
|
|
40
|
+
private bucketed;
|
|
41
|
+
/** Headline counts, deltas and sparkline history for the stat tiles. */
|
|
42
|
+
totals(workspaceId: string, days: number): Promise<ContentTotalsView>;
|
|
43
|
+
/** Published entries grouped by how long ago they were last edited. */
|
|
44
|
+
stale(workspaceId: string): Promise<ContentStaleView>;
|
|
45
|
+
/** Draft/published split per content type. */
|
|
46
|
+
pipeline(workspaceId: string): Promise<ContentPipelineView>;
|
|
47
|
+
/**
|
|
48
|
+
* Live content carrying unpublished edits, per type and in total.
|
|
49
|
+
*
|
|
50
|
+
* The three figures come out of **one** grouped query per type rather than
|
|
51
|
+
* three `countOf` calls, because they partition the same rows: a scan that
|
|
52
|
+
* has already found a row can decide which of the three it belongs to.
|
|
53
|
+
*
|
|
54
|
+
* A **non-publishable** type contributes nothing at all — not even to
|
|
55
|
+
* `live`. It has no draft stage, so every row is trivially current, and
|
|
56
|
+
* folding those rows into the denominator would make "3 of 900 live records
|
|
57
|
+
* have pending edits" a number about a workspace's always-live singletons
|
|
58
|
+
* rather than about anything an editor can ship.
|
|
59
|
+
*/
|
|
60
|
+
unshipped(workspaceId: string): Promise<ContentUnshippedView>;
|
|
61
|
+
/** Entries published per time bucket across the window. */
|
|
62
|
+
velocity(workspaceId: string, days: number): Promise<ContentVelocityView>;
|
|
63
|
+
/**
|
|
64
|
+
* Editing activity by weekday and hour, from the revision store.
|
|
65
|
+
*
|
|
66
|
+
* The one content figure that is a single grouped query rather than a
|
|
67
|
+
* fan-out: `content_entry_revisions` is generic across every type, so the
|
|
68
|
+
* whole workspace's editing history lives in one table.
|
|
69
|
+
*
|
|
70
|
+
* Hours come out in the database session's timezone (UTC in every
|
|
71
|
+
* deployment we run). Rendering them as local time would need each
|
|
72
|
+
* viewer's offset applied to the grouping, not to the labels — shifting
|
|
73
|
+
* the labels alone would silently mislabel the buckets.
|
|
74
|
+
*/
|
|
75
|
+
punchcard(workspaceId: string, days: number): Promise<ContentPunchcardView>;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=content-insights.query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-insights.query.d.ts","sourceRoot":"","sources":["../../../../../src/lib/insights/infrastructure/queries/content-insights.query.ts"],"names":[],"mappings":"AAGA,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAInF,OAAO,KAAK,EACR,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EAEtB,MAAM,mCAAmC,CAAC;AAoE3C;;;;;;;;;;;;;;;GAeG;AACH,qBACa,oBAAoB;IAEP,OAAO,CAAC,QAAQ,CAAC,EAAE;IACZ,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBADf,EAAE,EAAE,QAAQ,EACL,QAAQ,EAAE,mBAAmB;IAG3E;;;;;;;OAOG;IACH,OAAO,CAAC,KAAK;IAQb,2DAA2D;YAC7C,OAAO;IAYrB;;;;OAIG;YACW,QAAQ;IAyBtB,wEAAwE;IAClE,MAAM,CACR,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,GACb,OAAO,CAAC,iBAAiB,CAAC;IA2E7B,uEAAuE;IACjE,KAAK,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAoD3D,8CAA8C;IACxC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAqCjE;;;;;;;;;;;;OAYG;IACG,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAkDnE,2DAA2D;IACrD,QAAQ,CACV,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,GACb,OAAO,CAAC,mBAAmB,CAAC;IAqB/B;;;;;;;;;;;OAWG;IACG,SAAS,CACX,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,GACb,OAAO,CAAC,oBAAoB,CAAC;CAyBnC"}
|