@voltro/cms 0.86.0 → 0.87.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/CHANGELOG.md +5321 -0
- package/README.md +138 -0
- package/THIRD-PARTY-NOTICES.md +860 -221
- package/dist/RichDocumentView.js +81 -36
- package/dist/aiCandidates.js +3 -3
- package/dist/applicationBuildSnapshotService.js +101 -0
- package/dist/assetRenditions.js +102 -0
- package/dist/assetRevision.js +46 -0
- package/dist/assetUseRights.js +72 -0
- package/dist/availability.js +19 -16
- package/dist/blueprint.js +75 -75
- package/dist/build.d.ts +3063 -0
- package/dist/build.js +37 -0
- package/dist/buildApplicationAdmission.js +16 -0
- package/dist/buildApplicationCatalog.js +136 -0
- package/dist/buildApplicationCatalogTable.js +24 -0
- package/dist/buildApplicationRest.js +99 -0
- package/dist/buildApplicationUpload.js +111 -0
- package/dist/buildSnapshot.js +401 -0
- package/dist/buildSnapshotApplicationPin.js +32 -0
- package/dist/buildSnapshotRest.js +210 -0
- package/dist/buildSnapshotService.js +265 -0
- package/dist/buildSnapshotTables.js +25 -0
- package/dist/bulk.js +71 -70
- package/dist/changes.js +279 -62
- package/dist/consent.js +5 -5
- package/dist/contentLocations.js +53 -0
- package/dist/contentProjection.js +83 -0
- package/dist/contentRouteIdentity.js +13 -0
- package/dist/contentRouteMaterializer.js +97 -0
- package/dist/contentRouteTypes.js +39 -0
- package/dist/contentSeo.js +189 -0
- package/dist/contentTreePath.js +60 -0
- package/dist/contentType.js +117 -100
- package/dist/contentValues.js +18 -0
- package/dist/copies.js +3 -3
- package/dist/domainHost.js +7 -0
- package/dist/domains.js +81 -87
- package/dist/draftTexts.js +37 -37
- package/dist/duplicates.js +23 -23
- package/dist/environmentAliases.js +138 -0
- package/dist/environments.js +107 -69
- package/dist/errors.js +54 -14
- package/dist/experiments.js +7 -7
- package/dist/frontendBindings.js +99 -0
- package/dist/frontendMedia.js +18 -0
- package/dist/index.d.ts +760 -47
- package/dist/index.js +89 -73
- package/dist/initializePublicRoutes.js +28 -0
- package/dist/liveContentRouteView.js +76 -0
- package/dist/nativeOutputDeploymentService.js +205 -0
- package/dist/outputActivation.js +234 -0
- package/dist/outputActivationOrigin.js +51 -0
- package/dist/outputActivationStore.js +411 -0
- package/dist/outputActivationTables.js +11 -0
- package/dist/outputActivationTarget.js +81 -0
- package/dist/outputActivationTargetTable.js +25 -0
- package/dist/outputDeployment.js +174 -0
- package/dist/outputDeploymentRest.js +168 -0
- package/dist/outputDeploymentService.js +241 -0
- package/dist/outputRouteGraph.js +177 -0
- package/dist/outputSafetyArtifact.js +147 -0
- package/dist/outputTargetRest.js +62 -0
- package/dist/pathSegmentEncoding.js +4 -0
- package/dist/privateCmsTransport.js +76 -0
- package/dist/privateNativeRouteReservation.js +10 -0
- package/dist/promotion.js +68 -59
- package/dist/publicBuild.js +90 -0
- package/dist/publicBuildRest.js +98 -0
- package/dist/publicBuildService.js +63 -0
- package/dist/publicOutputHttp.js +129 -0
- package/dist/publicOutputService.js +287 -0
- package/dist/publicPresentation.js +17 -0
- package/dist/publicRouteDispositionAdmission.js +38 -0
- package/dist/publicRouteHistoryStore.js +12 -0
- package/dist/publicRouteHistoryView.js +34 -0
- package/dist/publicRouteIntegrity.js +5 -0
- package/dist/publicRouteMutation.js +6 -0
- package/dist/publicRouteNamespace.js +134 -0
- package/dist/publicRoutePublication.js +36 -0
- package/dist/publicRouteRegistry.js +17 -0
- package/dist/publicRouteRegistryBinding.js +194 -0
- package/dist/publicRouteRegistryDefinition.js +76 -0
- package/dist/publicRouteSitePublication.js +40 -0
- package/dist/publicRouteTables.js +13 -0
- package/dist/publicRouteUrl.js +18 -0
- package/dist/publicationSeo.js +52 -0
- package/dist/publicationState.js +296 -0
- package/dist/quality.js +8 -8
- package/dist/reconfigurePublicRoutes.js +41 -0
- package/dist/redirects.js +104 -73
- package/dist/referenceGraph.js +15 -14
- package/dist/references.js +2 -2
- package/dist/release.js +177 -141
- package/dist/renderReadAuthority.js +43 -0
- package/dist/renderReadGrant.js +137 -0
- package/dist/review.js +28 -28
- package/dist/richDocument.js +54 -24
- package/dist/routeDispositionGraph.js +44 -0
- package/dist/routeDispositionRest.js +51 -0
- package/dist/routeDispositionService.js +73 -0
- package/dist/routeDispositionStore.js +289 -0
- package/dist/routeDispositionTables.js +5 -0
- package/dist/routeDispositions.js +91 -0
- package/dist/routeHistoryStorage.js +320 -0
- package/dist/routeHistoryStore.js +12 -0
- package/dist/schedule.js +36 -36
- package/dist/seo.js +1 -1
- package/dist/series.js +11 -11
- package/dist/share.js +13 -13
- package/dist/siteBindings.js +159 -0
- package/dist/siteBuildCandidate.js +104 -0
- package/dist/siteDelivery.js +115 -0
- package/dist/siteState.js +47 -0
- package/dist/snapshotAddressGraph.js +55 -0
- package/dist/snapshotAddressRead.js +73 -0
- package/dist/snapshotAppConsumer.js +71 -0
- package/dist/snapshotAppExecution.js +102 -0
- package/dist/snapshotApplication.js +75 -0
- package/dist/snapshotApprovedRouteDispositions.js +44 -0
- package/dist/snapshotAssetAssembly.js +70 -0
- package/dist/snapshotAssetAssemblyRest.js +50 -0
- package/dist/snapshotBindingRead.js +61 -0
- package/dist/snapshotCodeSeo.js +29 -0
- package/dist/snapshotComponent.js +34 -0
- package/dist/snapshotComponentSource.js +24 -0
- package/dist/snapshotConsumer.js +87 -0
- package/dist/snapshotContentIdentity.js +10 -0
- package/dist/snapshotDefinitions.js +264 -0
- package/dist/snapshotDocumentAssembly.js +193 -0
- package/dist/snapshotDocumentAssemblyRest.js +84 -0
- package/dist/snapshotDocumentProjection.js +202 -0
- package/dist/snapshotDocumentTransfer.js +35 -0
- package/dist/snapshotDocumentTransferRest.js +80 -0
- package/dist/snapshotDomains.js +56 -0
- package/dist/snapshotEnvironment.js +31 -0
- package/dist/snapshotFieldPlan.js +85 -0
- package/dist/snapshotFrontend.js +103 -0
- package/dist/snapshotLink.js +8 -0
- package/dist/snapshotMedia.js +111 -0
- package/dist/snapshotMediaCapture.js +246 -0
- package/dist/snapshotMediaFields.js +225 -0
- package/dist/snapshotMediaRead.js +185 -0
- package/dist/snapshotMediaReader.js +13 -0
- package/dist/snapshotObservation.js +16 -0
- package/dist/snapshotObservedRouteHistory.js +34 -0
- package/dist/snapshotOutputTransfer.js +78 -0
- package/dist/snapshotPageLoader.js +7 -0
- package/dist/snapshotPageSeo.js +59 -0
- package/dist/snapshotPathLocale.js +15 -0
- package/dist/snapshotPresentation.js +86 -0
- package/dist/snapshotPresentationPolicy.js +12 -0
- package/dist/snapshotProjection.js +119 -0
- package/dist/snapshotPublicAccess.js +161 -0
- package/dist/snapshotPublicRouteHistory.js +40 -0
- package/dist/snapshotReadAdmission.js +38 -0
- package/dist/snapshotRedirectOutput.js +151 -0
- package/dist/snapshotRedirectTargets.js +24 -0
- package/dist/snapshotRedirects.js +132 -0
- package/dist/snapshotReference.js +8 -0
- package/dist/snapshotReferenceAddress.js +10 -0
- package/dist/snapshotReferenceGraph.js +79 -0
- package/dist/snapshotReferenceRead.js +65 -0
- package/dist/snapshotRelease.js +99 -0
- package/dist/snapshotRender.js +361 -0
- package/dist/snapshotRenderDependencies.js +178 -0
- package/dist/snapshotRenditions.js +88 -0
- package/dist/snapshotRichDocument.js +62 -0
- package/dist/snapshotRoleTransfer.js +106 -0
- package/dist/snapshotRoleTransferRest.js +99 -0
- package/dist/snapshotRouteAdmission.js +71 -0
- package/dist/snapshotRouteDispatch.js +111 -0
- package/dist/snapshotRouteDispositionPlan.js +73 -0
- package/dist/snapshotRouteRead.js +43 -0
- package/dist/snapshotRoutes.js +79 -0
- package/dist/snapshotRouting.js +113 -0
- package/dist/snapshotSeo.js +179 -0
- package/dist/snapshotSeoControls.js +101 -0
- package/dist/snapshotSeoDocumentInventory.js +115 -0
- package/dist/snapshotSeoDocuments.js +129 -0
- package/dist/snapshotSeoMerge.js +85 -0
- package/dist/snapshotSeoMetadata.js +137 -0
- package/dist/snapshotSeoOutput.js +173 -0
- package/dist/snapshotSeoPathSets.js +105 -0
- package/dist/snapshotSeoRead.js +88 -0
- package/dist/snapshotSite.js +128 -0
- package/dist/snapshotSitemapFiles.js +36 -0
- package/dist/snapshotTreeDependencies.js +58 -0
- package/dist/snapshotTreeLoader.js +10 -0
- package/dist/snapshotTreeRead.js +158 -0
- package/dist/staticPathSet.js +177 -0
- package/dist/staticPathSetRest.js +129 -0
- package/dist/staticPathSetService.js +249 -0
- package/dist/staticPathSetStore.js +338 -0
- package/dist/tree.js +9 -9
- package/dist/validation.js +53 -53
- package/dist/web.d.ts +709 -7
- package/dist/web.js +50 -33
- package/dist/workflow.js +8 -8
- package/dist/write.js +250 -225
- package/package.json +20 -6
package/README.md
CHANGED
|
@@ -20,7 +20,145 @@ Installation, guides, the full API reference, and examples all live in the
|
|
|
20
20
|
**[Voltro documentation](https://docs.voltro.dev/docs/intro/getting-started)** — the single source of truth. This README is
|
|
21
21
|
deliberately short so there is nothing here to drift out of date.
|
|
22
22
|
|
|
23
|
+
Private build consumers use the server entry `@voltro/cms/build`.
|
|
24
|
+
`copyStaticPathManifest`, `staticPathHash` and `verifyStaticPathPage` reuse the
|
|
25
|
+
framework's captured path-set integrity checks, including the empty first page
|
|
26
|
+
of a zero-route set. The consumer still binds the authenticated response to its
|
|
27
|
+
authorized snapshot/application; these helpers grant no publication authority.
|
|
28
|
+
|
|
23
29
|
## License
|
|
24
30
|
|
|
25
31
|
Proprietary. © 2026 Voltro UG. Your use is governed by the
|
|
26
32
|
[Terms of Service](https://voltro.cloud/legal/terms). See the bundled `LICENSE`.
|
|
33
|
+
|
|
34
|
+
### Publication stream consistency
|
|
35
|
+
|
|
36
|
+
Register `cmsChangesTable` and `cmsChangeHeadsTable` for every publication,
|
|
37
|
+
including types without `changeFeed: true`. The flag controls event emission;
|
|
38
|
+
all publication transitions share the scoped lock and advance an independent
|
|
39
|
+
generation. Named releases also activate a generation when they have no items.
|
|
40
|
+
Content writes allocate commit-ordered positions in the caller's transaction;
|
|
41
|
+
`readChanges` requires an explicit tenant/site/environment scope. Event IDs
|
|
42
|
+
remain opaque cursors. Unknown cursors and incomplete upgrades fail with
|
|
43
|
+
`ChangeFeedUnavailable` instead of silently returning no changes.
|
|
44
|
+
|
|
45
|
+
Archiving a visible published copy appends one take-down; repeating the archive
|
|
46
|
+
or archiving only a draft adds none. With writers stopped, apply schema and
|
|
47
|
+
initialize positions, then run `reconcileArchivedPublications(tx, types, scope)`
|
|
48
|
+
as an Effect in a maintenance transaction to repair older missing take-downs.
|
|
49
|
+
It uses bounded batches and appends at the current tail, without rewriting old
|
|
50
|
+
cursors or fabricating archival dates. The repair is scoped and repeatable.
|
|
51
|
+
Publication, release, scheduler, environment-copy, promotion, blueprint and duplicate-retirement
|
|
52
|
+
Effects preserve `ChangeFeedUnavailable` as typed; procedure descriptors must
|
|
53
|
+
declare it so a refusal rolls back rather than becoming an undeclared error.
|
|
54
|
+
|
|
55
|
+
For existing history, stop writers, apply schema, then call the Effect
|
|
56
|
+
`initializeChangeFeed(tx, scope)` inside a maintenance transaction for each
|
|
57
|
+
stream. It preserves event IDs and uses bounded batches. Do not reset the
|
|
58
|
+
internal sequence head. See the CMS guide and the shipped 0.86.0 upgrade note.
|
|
59
|
+
|
|
60
|
+
`readChangeCheckpoint` captures the latest committed event ID. Pass it as
|
|
61
|
+
`readChanges(..., { through, settleMs: 0 })` to bound a paginated catch-up scan
|
|
62
|
+
despite later publishes or skewed writer clocks. The event range is pinned,
|
|
63
|
+
not subsequent content reads. `readRecentChanges` supplies bounded history in
|
|
64
|
+
descending commit order within the same explicit scope.
|
|
65
|
+
|
|
66
|
+
### Atomic environment aliases
|
|
67
|
+
|
|
68
|
+
Register `cmsEnvironmentAliasesTable` and `cmsEnvironmentAliasRevisionsTable`
|
|
69
|
+
to route a stable tenant/site alias to a configured physical environment.
|
|
70
|
+
`swapEnvironmentAlias` compares the observed revision under the caller's
|
|
71
|
+
transaction; `rollbackEnvironmentAlias` appends a new revision targeting a
|
|
72
|
+
previous one. Resolve once per request and retain the physical target. Unknown
|
|
73
|
+
aliases never fall back. Procedure descriptors declare `EnvironmentAliasUnavailable`
|
|
74
|
+
from `@voltro/cms/web`; authorization and the trusted environment registry belong
|
|
75
|
+
to the application. See the CMS guide for the complete transaction contract.
|
|
76
|
+
|
|
77
|
+
### Shared site delivery definition
|
|
78
|
+
|
|
79
|
+
`defineSiteDelivery` and `compileSiteDelivery` are browser-safe exports from
|
|
80
|
+
`@voltro/cms/web` (also available from the main entry). One frozen, versioned
|
|
81
|
+
plain-data graph separates stable locale IDs, approved language tags and stored
|
|
82
|
+
variant keys. API and frontend derive enabled locales, independent source/default
|
|
83
|
+
locales, fallback chains and URL prefixes from it. Invalid graphs refuse with
|
|
84
|
+
`SiteDeliveryUnavailable`; no tag inference, registry lookup or database write
|
|
85
|
+
occurs. See the CMS guide for the contract and paired-template upgrade. Route
|
|
86
|
+
creation, source migration and editorial locale lifecycle remain application work.
|
|
87
|
+
|
|
88
|
+
### Explicit site content bindings
|
|
89
|
+
|
|
90
|
+
Register `cmsSiteBindingsTable` and `cmsSiteBindingRevisionsTable` alongside the
|
|
91
|
+
change-stream tables. `siteContentBinding` reads a named document identity in an
|
|
92
|
+
explicit tenant/site/physical-environment scope. `bindSiteContent` compares an
|
|
93
|
+
observed revision and requires a published target; it never chooses by timestamp.
|
|
94
|
+
`siteContentBindingRevision` reads scoped history; `rollbackSiteContentBinding`
|
|
95
|
+
appends a new revision. Changed bindings share the caller's publication transaction,
|
|
96
|
+
advance its generation and clear the active release. Bind before release activation.
|
|
97
|
+
The application owns authorization and delivery cache invalidation; no synthetic
|
|
98
|
+
content event is emitted. Declare `SiteBindingUnavailable` and `ChangeFeedUnavailable`
|
|
99
|
+
from `@voltro/cms/web` in mutation descriptors. Existing API CMS installations must
|
|
100
|
+
explicitly select their published site document for the `chrome` binding before
|
|
101
|
+
switching readers; the starter only binds a site it newly creates.
|
|
102
|
+
|
|
103
|
+
### Scoped domain changes
|
|
104
|
+
|
|
105
|
+
Register `cmsSiteDomainsTable` and `cmsSiteStateHeadsTable`. All domain functions
|
|
106
|
+
receive `CmsSiteScope` (`tenantId`, `site`); ID-based operations take it before
|
|
107
|
+
the domain ID. Domain writers use the caller transaction and the same site
|
|
108
|
+
barrier, including first-host creation. Concurrent primary changes serialize;
|
|
109
|
+
rollback restores the complete mapping. Unique host claims return `taken` to
|
|
110
|
+
the losing site without exposing its owner's record. Preserve
|
|
111
|
+
`SiteStateUnavailable` in the procedure error schema (`@voltro/cms/web`). Stop
|
|
112
|
+
writers, apply the coordination table and update scoped calls before upgrading.
|
|
113
|
+
|
|
114
|
+
### Redirect publication boundary
|
|
115
|
+
|
|
116
|
+
`addRedirect` and `removeRedirect` require the trusted tenant as their final
|
|
117
|
+
argument. Register `cmsChangeHeadsTable` with path/redirect tables and use one
|
|
118
|
+
caller transaction. Changed manual redirects and standalone `recordPaths`
|
|
119
|
+
advance publication generation and clear the active release without inventing
|
|
120
|
+
a content-feed event. Same-target adds and absent removals are no-ops. Declare
|
|
121
|
+
`ChangeFeedUnavailable` in caller/import descriptors. Review duplicate stored
|
|
122
|
+
history before upgrade; see the CMS guide and manual 0.87.0/11 checklist.
|
|
123
|
+
Read APIs still require their scoped store or explicit tenant filter. Application
|
|
124
|
+
cache/rebuild coordination and the full Route Registry remain separate work.
|
|
125
|
+
|
|
126
|
+
### Shared content locations
|
|
127
|
+
|
|
128
|
+
Declare `locations` on a content type with stable mapping IDs and `segments`:
|
|
129
|
+
literal text, `{ field: 'slug' }`, or `{ tree: true }`. Share the detached/frozen
|
|
130
|
+
`defineContentLocations` definition with `resolveContentLocation` in API and
|
|
131
|
+
frontend code; both are browser-safe `/web` exports. Descriptor validation checks
|
|
132
|
+
string fields and tree availability. The resolver takes decoded values, an
|
|
133
|
+
explicit locale prefix and optional tree path, produces bounded encoded paths,
|
|
134
|
+
and refuses invalid inputs with `ContentLocationUnavailable`. It performs no
|
|
135
|
+
route reservation, release-graph validation, authorization or frontend codegen.
|
|
136
|
+
Handle incomplete draft addresses before using public delivery links.
|
|
137
|
+
|
|
138
|
+
Server coordinators can use `createSnapshotDocumentAssembly` from
|
|
139
|
+
`@voltro/cms/build` to retain bounded immutable document-pin batches in their
|
|
140
|
+
private output provider. Each operation freshly admits the signed path sets and
|
|
141
|
+
same build identity. `cmsBuildOutput(directory).composeDocuments` verifies actual
|
|
142
|
+
renderer receipts and bytes; final assembly requires complete routes and public
|
|
143
|
+
consent classes, current media rights and fresh grant admission. Only the two
|
|
144
|
+
journal IDs are durable state; credentials remain private. This grants no
|
|
145
|
+
activation or serving authority. See the build-snapshot documentation for bounds
|
|
146
|
+
and explicit grant coordination.
|
|
147
|
+
|
|
148
|
+
Trusted output providers may implement `readAssets` to verify an existing assets
|
|
149
|
+
role against the original retained app and complete renderer inventory. The CLI
|
|
150
|
+
provider uses its configured archive, checks physical bytes through EOF and
|
|
151
|
+
reconstructs the expected manifest without a stage or build. This filesystem
|
|
152
|
+
port mounts no transport; the CMS caller still owns fresh grant, signed-path
|
|
153
|
+
and current-media-rights admission around each read.
|
|
154
|
+
|
|
155
|
+
`createSnapshotRoleTransfer` and `cmsSnapshotRoleTransferRest` expose private
|
|
156
|
+
manifest/file/chunk/batch reads for `assets`, `deny`, `redirects`, `sitemap` and `robots`.
|
|
157
|
+
Each read reconstructs the exact selected role against the original admitted
|
|
158
|
+
app/documents and current safety, route history or SEO state. The server fixes
|
|
159
|
+
custody, byte bounds and the redirect declaration; fresh authorization brackets
|
|
160
|
+
all physical operations. Chunks and batches are at most 64 KiB. A batch contains
|
|
161
|
+
at most 200 complete files, each independently verified through EOF and SHA-256;
|
|
162
|
+
the complete result is withheld until the final semantic admission succeeds.
|
|
163
|
+
These operations create no
|
|
164
|
+
stage, renew no credential and grant no activation or serving authority.
|