@velora-cms/server 0.11.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 +202 -0
- package/README.md +65 -0
- package/dist/admin-bundle/assets/__virtual_mf___mfe_internal__velora_admin__mf_owner__1__loadShare__react__loadShare__.js_commonjs-proxy-Ng0fOpdU.js +1 -0
- package/dist/admin-bundle/assets/__virtual_mf___mfe_internal__velora_admin__mf_owner__1__loadShare__react_mf_2_dom__loadShare__.js_commonjs-proxy-oc1i_iBU.js +9 -0
- package/dist/admin-bundle/assets/_virtual_mf-localSharedImportMap___mfe_internal__velora_admin__mf_owner__1-DOKdWYyj.js +1 -0
- package/dist/admin-bundle/assets/_virtual_mf___mfe_internal__velora_admin__mf_owner__1__loadShare___mf_0_velora_mf_2_cms_mf_1_plugin_mf_2_sdk__loadShare__.js-C1-ZAxwO.js +2 -0
- package/dist/admin-bundle/assets/_virtual_mf___mfe_internal__velora_admin__mf_owner__1__loadShare__react__loadShare__.js-BuUBskgj.js +9 -0
- package/dist/admin-bundle/assets/_virtual_mf___mfe_internal__velora_admin__mf_owner__1__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-DMaku-HC.js +9 -0
- package/dist/admin-bundle/assets/_virtual_mf___mfe_internal__velora_admin__mf_owner__1__loadShare__react_mf_2_dom__loadShare__.js-DYfqn12F.js +1 -0
- package/dist/admin-bundle/assets/_virtual_mf___mfe_internal__velora_admin__mf_owner__1__loadShare__react_mf_2_dom_mf_1_client__loadShare__.js-BPoj3DC9.js +25 -0
- package/dist/admin-bundle/assets/content-trash.schema-DfXHkC-w.js +72 -0
- package/dist/admin-bundle/assets/hostInit--C4xK6nj.js +1 -0
- package/dist/admin-bundle/assets/ibm-plex-mono-cyrillic-400-normal-BSMlKf0J.woff2 +0 -0
- package/dist/admin-bundle/assets/ibm-plex-mono-cyrillic-400-normal-CEL4l2ZJ.woff +0 -0
- package/dist/admin-bundle/assets/ibm-plex-mono-cyrillic-500-normal-Ael50iVv.woff +0 -0
- package/dist/admin-bundle/assets/ibm-plex-mono-cyrillic-500-normal-Bq9vWWag.woff2 +0 -0
- package/dist/admin-bundle/assets/ibm-plex-mono-cyrillic-ext-400-normal-DMdlQ8Kv.woff +0 -0
- package/dist/admin-bundle/assets/ibm-plex-mono-cyrillic-ext-400-normal-xuaO2J-f.woff2 +0 -0
- package/dist/admin-bundle/assets/ibm-plex-mono-cyrillic-ext-500-normal-BIfNGwUT.woff +0 -0
- package/dist/admin-bundle/assets/ibm-plex-mono-cyrillic-ext-500-normal-BqneJy0T.woff2 +0 -0
- package/dist/admin-bundle/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff +0 -0
- package/dist/admin-bundle/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2 +0 -0
- package/dist/admin-bundle/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff +0 -0
- package/dist/admin-bundle/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2 +0 -0
- package/dist/admin-bundle/assets/ibm-plex-mono-latin-ext-400-normal-BmRBH3aV.woff2 +0 -0
- package/dist/admin-bundle/assets/ibm-plex-mono-latin-ext-400-normal-D3D2R8hC.woff +0 -0
- package/dist/admin-bundle/assets/ibm-plex-mono-latin-ext-500-normal-CAhNIIs5.woff2 +0 -0
- package/dist/admin-bundle/assets/ibm-plex-mono-latin-ext-500-normal-CZ70TYgx.woff +0 -0
- package/dist/admin-bundle/assets/ibm-plex-mono-vietnamese-400-normal-BulugwFq.woff2 +0 -0
- package/dist/admin-bundle/assets/ibm-plex-mono-vietnamese-400-normal-DDuiU_S-.woff +0 -0
- package/dist/admin-bundle/assets/ibm-plex-mono-vietnamese-500-normal-C8zxqsMH.woff +0 -0
- package/dist/admin-bundle/assets/ibm-plex-mono-vietnamese-500-normal-DZ4AoWbu.woff2 +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-arabic-arabic-400-normal-CyU-ddYS.woff2 +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-arabic-arabic-400-normal-EA1o-u_Q.woff +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-arabic-arabic-500-normal-C4MQITzh.woff2 +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-arabic-arabic-500-normal-DPXcppbm.woff +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-arabic-arabic-600-normal-0pRdybE_.woff2 +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-arabic-arabic-600-normal-MJZ0liF5.woff +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-arabic-latin-400-normal-Bo5KPYvw.woff2 +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-arabic-latin-400-normal-CFZh1unN.woff +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-arabic-latin-500-normal-BletK1Hp.woff +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-arabic-latin-500-normal-Cd6jVIg7.woff2 +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-arabic-latin-600-normal-Dk5eISD_.woff +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-arabic-latin-600-normal-KrqB56Mw.woff2 +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-arabic-latin-ext-400-normal-BeVLg08x.woff +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-arabic-latin-ext-400-normal-BpLfq-63.woff2 +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-arabic-latin-ext-500-normal-Ck_W4G78.woff2 +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-arabic-latin-ext-500-normal-eJxPnL1P.woff +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-arabic-latin-ext-600-normal-DT29Q8HW.woff +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-arabic-latin-ext-600-normal-DjDAeNQD.woff2 +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-cyrillic-400-normal-BTotfTJu.woff +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-cyrillic-400-normal-DZqxrq2p.woff2 +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-cyrillic-500-normal-ByOcLdNv.woff +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-cyrillic-500-normal-CocWQlwt.woff2 +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-cyrillic-600-normal-71GNu3SW.woff2 +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-cyrillic-600-normal-BGq0mW3O.woff +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-cyrillic-ext-400-normal-Dsrv2Tcn.woff +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-cyrillic-ext-400-normal-g30qAdWV.woff2 +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-cyrillic-ext-500-normal-Cs5J6C77.woff2 +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-cyrillic-ext-500-normal-DB5PtV2g.woff +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-cyrillic-ext-600-normal-Bz0x94Yp.woff +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-cyrillic-ext-600-normal-DUMzJB7m.woff2 +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-greek-400-normal-D9ESIMu3.woff +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-greek-400-normal-_efipK4i.woff2 +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-greek-500-normal-CuWXN6rf.woff +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-greek-500-normal-JMMifIXV.woff2 +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-greek-600-normal-D-CqTdkO.woff +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-greek-600-normal-DzTrcv_p.woff2 +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2 +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.woff +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-latin-500-normal-6ng42L7E.woff2 +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-latin-500-normal-BgVn5rGT.woff +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2 +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-latin-ext-400-normal-C5H60-Va.woff2 +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-latin-ext-400-normal-RBey6euL.woff +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-latin-ext-500-normal-D0aIdm-b.woff +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-latin-ext-500-normal-DakdToA3.woff2 +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-latin-ext-600-normal-DIrixKbi.woff +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-latin-ext-600-normal-DOrvGEcy.woff2 +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-vietnamese-400-normal-DG4YqDda.woff2 +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-vietnamese-400-normal-fK1oJ5dG.woff +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-vietnamese-500-normal-BEb3_waV.woff +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-vietnamese-500-normal-e4dixQRQ.woff2 +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-vietnamese-600-normal-DgdngZtN.woff +0 -0
- package/dist/admin-bundle/assets/ibm-plex-sans-vietnamese-600-normal-DpPYBSTl.woff2 +0 -0
- package/dist/admin-bundle/assets/index-BIAF0ShP.js +542 -0
- package/dist/admin-bundle/assets/index-DhMY-0sC.js +148 -0
- package/dist/admin-bundle/assets/index-DnZV_gsg.css +1 -0
- package/dist/admin-bundle/assets/index-Do71v6NZ.js +7 -0
- package/dist/admin-bundle/assets/literata-cyrillic-ext-opsz-italic-5yUt4G_9.woff2 +0 -0
- package/dist/admin-bundle/assets/literata-cyrillic-ext-opsz-normal-C5tfwALZ.woff2 +0 -0
- package/dist/admin-bundle/assets/literata-cyrillic-opsz-italic-Bj0ndbyp.woff2 +0 -0
- package/dist/admin-bundle/assets/literata-cyrillic-opsz-normal-DgmypKXX.woff2 +0 -0
- package/dist/admin-bundle/assets/literata-greek-ext-opsz-italic-DFpO5j-Z.woff2 +0 -0
- package/dist/admin-bundle/assets/literata-greek-ext-opsz-normal-DGm64vGR.woff2 +0 -0
- package/dist/admin-bundle/assets/literata-greek-opsz-italic-CHERNRFq.woff2 +0 -0
- package/dist/admin-bundle/assets/literata-greek-opsz-normal-DFglUmAd.woff2 +0 -0
- package/dist/admin-bundle/assets/literata-latin-ext-opsz-italic-4y8iAqqs.woff2 +0 -0
- package/dist/admin-bundle/assets/literata-latin-ext-opsz-normal-STiTPs0F.woff2 +0 -0
- package/dist/admin-bundle/assets/literata-latin-opsz-italic-CJ93D38p.woff2 +0 -0
- package/dist/admin-bundle/assets/literata-latin-opsz-normal-BHZsWIlc.woff2 +0 -0
- package/dist/admin-bundle/assets/literata-vietnamese-opsz-italic-BdcrZMcO.woff2 +0 -0
- package/dist/admin-bundle/assets/literata-vietnamese-opsz-normal-Gqw5JQlq.woff2 +0 -0
- package/dist/admin-bundle/assets/mf-entry-bootstrap-0-aef015cd.js +41 -0
- package/dist/admin-bundle/assets/remoteEntry-CNyN68bc.js +14 -0
- package/dist/admin-bundle/assets/virtualExposes-BDCSo5OS.js +1 -0
- package/dist/admin-bundle/assets/vite-preload-helper-Cgledu0r.js +1 -0
- package/dist/admin-bundle/index.html +16 -0
- package/dist/app.d.ts +8 -0
- package/dist/app.js +252 -0
- package/dist/auth/api-content-author.d.ts +2 -0
- package/dist/auth/api-content-author.js +27 -0
- package/dist/auth/api-keys.d.ts +7 -0
- package/dist/auth/api-keys.js +85 -0
- package/dist/auth/jwt-payload.d.ts +16 -0
- package/dist/auth/jwt-payload.js +1 -0
- package/dist/auth/preview-tokens.d.ts +7 -0
- package/dist/auth/preview-tokens.js +76 -0
- package/dist/auth/rate-limit.d.ts +16 -0
- package/dist/auth/rate-limit.js +283 -0
- package/dist/auth/require-auth.d.ts +4 -0
- package/dist/auth/require-auth.js +28 -0
- package/dist/auth/route-rate-limits.d.ts +31 -0
- package/dist/auth/route-rate-limits.js +155 -0
- package/dist/auth/tokens.d.ts +15 -0
- package/dist/auth/tokens.js +38 -0
- package/dist/bin.d.ts +2 -0
- package/dist/bin.js +6 -0
- package/dist/boot/core-migration-gate.d.ts +12 -0
- package/dist/boot/core-migration-gate.js +52 -0
- package/dist/boot/resolve-boot-mode.d.ts +6 -0
- package/dist/boot/resolve-boot-mode.js +206 -0
- package/dist/bundled-templates/com.velora.blog/manifest.json +39 -0
- package/dist/bundled-templates/com.velora.blog/package.tar.gz +0 -0
- package/dist/bundled-templates/com.velora.blog/sample-content.json +14 -0
- package/dist/config/admin-ui.d.ts +1 -0
- package/dist/config/admin-ui.js +10 -0
- package/dist/config/cors.d.ts +7 -0
- package/dist/config/cors.js +53 -0
- package/dist/config/env-file-path.d.ts +2 -0
- package/dist/config/env-file-path.js +22 -0
- package/dist/config/graphql-limits.d.ts +2 -0
- package/dist/config/graphql-limits.js +26 -0
- package/dist/config/headless.d.ts +1 -0
- package/dist/config/headless.js +8 -0
- package/dist/config/license-revalidation.d.ts +2 -0
- package/dist/config/license-revalidation.js +16 -0
- package/dist/config/load-env.d.ts +1 -0
- package/dist/config/load-env.js +53 -0
- package/dist/config/marketplace.d.ts +11 -0
- package/dist/config/marketplace.js +19 -0
- package/dist/config/preview.d.ts +3 -0
- package/dist/config/preview.js +39 -0
- package/dist/config/public-docs.d.ts +1 -0
- package/dist/config/public-docs.js +9 -0
- package/dist/config/site.d.ts +7 -0
- package/dist/config/site.js +12 -0
- package/dist/config/trust-proxy.d.ts +2 -0
- package/dist/config/trust-proxy.js +42 -0
- package/dist/data-types/validate-data-type-settings.d.ts +1 -0
- package/dist/data-types/validate-data-type-settings.js +33 -0
- package/dist/db/content-db.d.ts +16 -0
- package/dist/db/content-db.js +109 -0
- package/dist/db/core-migrations/index.d.ts +14 -0
- package/dist/db/core-migrations/index.js +184 -0
- package/dist/db/core-migrations/steps.d.ts +4 -0
- package/dist/db/core-migrations/steps.js +66 -0
- package/dist/db/load-prisma-client.d.ts +2 -0
- package/dist/db/load-prisma-client.js +44 -0
- package/dist/db/prisma.d.ts +3 -0
- package/dist/db/prisma.js +67 -0
- package/dist/db/resolve-client-dir.d.ts +2 -0
- package/dist/db/resolve-client-dir.js +83 -0
- package/dist/docs/filter-public-api-spec.d.ts +2 -0
- package/dist/docs/filter-public-api-spec.js +52 -0
- package/dist/docs-bundle/404.html +41 -0
- package/dist/docs-bundle/_astro/MobileTableOfContents.astro_astro_type_script_index_0_lang.BcSo_yiZ.js +1 -0
- package/dist/docs-bundle/_astro/Search.astro_astro_type_script_index_0_lang.CavldbAs.js +1 -0
- package/dist/docs-bundle/_astro/TableOfContents.astro_astro_type_script_index_0_lang.Csloo1VZ.js +1 -0
- package/dist/docs-bundle/_astro/common.DTXA7sXM.css +3 -0
- package/dist/docs-bundle/_astro/ec.0vx5m.js +3 -0
- package/dist/docs-bundle/_astro/ec.w36nc.css +1 -0
- package/dist/docs-bundle/_astro/page.Dwipeu-R.js +1 -0
- package/dist/docs-bundle/_astro/print.ehPL0gv-.css +1 -0
- package/dist/docs-bundle/_astro/starlight-toc.CTCQXEge.js +1 -0
- package/dist/docs-bundle/_astro/ui-core.D-7Scnhs.js +2 -0
- package/dist/docs-bundle/favicon.svg +1 -0
- package/dist/docs-bundle/index.html +1 -0
- package/dist/docs-bundle/pagefind/fragment/en_18a36d7.pf_fragment +0 -0
- package/dist/docs-bundle/pagefind/fragment/en_1d9eb24.pf_fragment +0 -0
- package/dist/docs-bundle/pagefind/fragment/en_1ef320c.pf_fragment +0 -0
- package/dist/docs-bundle/pagefind/fragment/en_3099406.pf_fragment +0 -0
- package/dist/docs-bundle/pagefind/fragment/en_4a5b6fe.pf_fragment +0 -0
- package/dist/docs-bundle/pagefind/fragment/en_9aa652e.pf_fragment +0 -0
- package/dist/docs-bundle/pagefind/fragment/en_baccdf6.pf_fragment +0 -0
- package/dist/docs-bundle/pagefind/fragment/en_d81f3fe.pf_fragment +0 -0
- package/dist/docs-bundle/pagefind/fragment/en_d855550.pf_fragment +0 -0
- package/dist/docs-bundle/pagefind/fragment/en_e6d88d8.pf_fragment +0 -0
- package/dist/docs-bundle/pagefind/fragment/en_e9d3189.pf_fragment +0 -0
- package/dist/docs-bundle/pagefind/index/en_5feeed7.pf_index +0 -0
- package/dist/docs-bundle/pagefind/index/en_c6981f9.pf_index +0 -0
- package/dist/docs-bundle/pagefind/index/en_ce4f6bf.pf_index +0 -0
- package/dist/docs-bundle/pagefind/pagefind-component-ui.css +1509 -0
- package/dist/docs-bundle/pagefind/pagefind-component-ui.js +56 -0
- package/dist/docs-bundle/pagefind/pagefind-entry.json +1 -0
- package/dist/docs-bundle/pagefind/pagefind-highlight.js +1070 -0
- package/dist/docs-bundle/pagefind/pagefind-modular-ui.css +214 -0
- package/dist/docs-bundle/pagefind/pagefind-modular-ui.js +8 -0
- package/dist/docs-bundle/pagefind/pagefind-ui.css +1 -0
- package/dist/docs-bundle/pagefind/pagefind-ui.js +2 -0
- package/dist/docs-bundle/pagefind/pagefind-worker.js +6 -0
- package/dist/docs-bundle/pagefind/pagefind.en_1e94abd852.pf_meta +0 -0
- package/dist/docs-bundle/pagefind/pagefind.js +6 -0
- package/dist/docs-bundle/pagefind/wasm.en.pagefind +0 -0
- package/dist/docs-bundle/pagefind/wasm.unknown.pagefind +0 -0
- package/dist/docs-bundle/v1/index.html +86 -0
- package/dist/docs-bundle/v1/using-velora/build-a-headless-frontend/index.html +413 -0
- package/dist/docs-bundle/v1/using-velora/content-model/index.html +858 -0
- package/dist/docs-bundle/v1/using-velora/editing/index.html +748 -0
- package/dist/docs-bundle/v1/using-velora/getting-started/index.html +588 -0
- package/dist/docs-bundle/v1/using-velora/headless-api/index.html +1620 -0
- package/dist/docs-bundle/v1/using-velora/index.html +215 -0
- package/dist/docs-bundle/v1/using-velora/installation/index.html +886 -0
- package/dist/docs-bundle/v1/using-velora/installing-plugins/index.html +836 -0
- package/dist/docs-bundle/v1/using-velora/media/index.html +468 -0
- package/dist/docs-bundle/v1/using-velora/users-and-roles/index.html +561 -0
- package/dist/graphql/field-count-rule.d.ts +5 -0
- package/dist/graphql/field-count-rule.js +59 -0
- package/dist/graphql/schema.d.ts +12 -0
- package/dist/graphql/schema.js +330 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +180 -0
- package/dist/lib.d.ts +2 -0
- package/dist/lib.js +39 -0
- package/dist/marketplace/install-bundle-members.d.ts +33 -0
- package/dist/marketplace/install-bundle-members.js +137 -0
- package/dist/marketplace/install-from-marketplace.d.ts +60 -0
- package/dist/marketplace/install-from-marketplace.js +581 -0
- package/dist/marketplace/license-revalidation-job.d.ts +38 -0
- package/dist/marketplace/license-revalidation-job.js +139 -0
- package/dist/marketplace/marketplace-client.d.ts +43 -0
- package/dist/marketplace/marketplace-client.js +228 -0
- package/dist/marketplace/revalidate-license.d.ts +39 -0
- package/dist/marketplace/revalidate-license.js +103 -0
- package/dist/media/media-service.d.ts +36 -0
- package/dist/media/media-service.js +162 -0
- package/dist/plugins/boot-plugin-loader.d.ts +32 -0
- package/dist/plugins/boot-plugin-loader.js +57 -0
- package/dist/plugins/hook-dispatcher.d.ts +13 -0
- package/dist/plugins/hook-dispatcher.js +68 -0
- package/dist/plugins/install-built-package.d.ts +36 -0
- package/dist/plugins/install-built-package.js +199 -0
- package/dist/plugins/install-package-tarball.d.ts +25 -0
- package/dist/plugins/install-package-tarball.js +73 -0
- package/dist/plugins/plugin-context.d.ts +5 -0
- package/dist/plugins/plugin-context.js +26 -0
- package/dist/plugins/plugin-package-store.d.ts +31 -0
- package/dist/plugins/plugin-package-store.js +64 -0
- package/dist/plugins/plugin-registry-service.d.ts +227 -0
- package/dist/plugins/plugin-registry-service.js +636 -0
- package/dist/plugins/seed-template-content.d.ts +23 -0
- package/dist/plugins/seed-template-content.js +198 -0
- package/dist/plugins/server-serializers.d.ts +3 -0
- package/dist/plugins/server-serializers.js +16 -0
- package/dist/plugins/simple-storage-api.d.ts +9 -0
- package/dist/plugins/simple-storage-api.js +26 -0
- package/dist/plugins/snapshot-groups.d.ts +16 -0
- package/dist/plugins/snapshot-groups.js +81 -0
- package/dist/plugins/structured-query-builder.d.ts +21 -0
- package/dist/plugins/structured-query-builder.js +60 -0
- package/dist/plugins/structured-snapshot-service.d.ts +16 -0
- package/dist/plugins/structured-snapshot-service.js +286 -0
- package/dist/plugins/structured-storage-api.d.ts +22 -0
- package/dist/plugins/structured-storage-api.js +91 -0
- package/dist/plugins/structured-storage-transaction.d.ts +22 -0
- package/dist/plugins/structured-storage-transaction.js +63 -0
- package/dist/plugins/structured-table-naming.d.ts +1 -0
- package/dist/plugins/structured-table-naming.js +18 -0
- package/dist/plugins/trusted-keys.d.ts +11 -0
- package/dist/plugins/trusted-keys.js +67 -0
- package/dist/plugins/trusted-signing-keys.d.ts +27 -0
- package/dist/plugins/trusted-signing-keys.js +40 -0
- package/dist/plugins/uninstall-bundle.d.ts +29 -0
- package/dist/plugins/uninstall-bundle.js +150 -0
- package/dist/plugins/verify-package.d.ts +36 -0
- package/dist/plugins/verify-package.js +121 -0
- package/dist/routes/admin-static.d.ts +8 -0
- package/dist/routes/admin-static.js +196 -0
- package/dist/routes/api-keys.d.ts +2 -0
- package/dist/routes/api-keys.js +95 -0
- package/dist/routes/api-playground.d.ts +2 -0
- package/dist/routes/api-playground.js +21 -0
- package/dist/routes/auth.d.ts +2 -0
- package/dist/routes/auth.js +102 -0
- package/dist/routes/content.d.ts +3 -0
- package/dist/routes/content.js +471 -0
- package/dist/routes/data-types.d.ts +3 -0
- package/dist/routes/data-types.js +100 -0
- package/dist/routes/docs-static.d.ts +8 -0
- package/dist/routes/docs-static.js +137 -0
- package/dist/routes/document-types.d.ts +3 -0
- package/dist/routes/document-types.js +149 -0
- package/dist/routes/headless-bridge.d.ts +10 -0
- package/dist/routes/headless-bridge.js +207 -0
- package/dist/routes/health.d.ts +2 -0
- package/dist/routes/health.js +15 -0
- package/dist/routes/marketplace-proxy.d.ts +8 -0
- package/dist/routes/marketplace-proxy.js +135 -0
- package/dist/routes/media.d.ts +6 -0
- package/dist/routes/media.js +93 -0
- package/dist/routes/plugin-api-routes.d.ts +12 -0
- package/dist/routes/plugin-api-routes.js +224 -0
- package/dist/routes/plugin-assets.d.ts +8 -0
- package/dist/routes/plugin-assets.js +51 -0
- package/dist/routes/plugin-management.d.ts +7 -0
- package/dist/routes/plugin-management.js +525 -0
- package/dist/routes/plugin-storage.d.ts +8 -0
- package/dist/routes/plugin-storage.js +104 -0
- package/dist/routes/plugins.d.ts +2 -0
- package/dist/routes/plugins.js +36 -0
- package/dist/routes/public-api.d.ts +9 -0
- package/dist/routes/public-api.js +545 -0
- package/dist/routes/published-item.d.ts +57 -0
- package/dist/routes/published-item.js +236 -0
- package/dist/routes/setup.d.ts +9 -0
- package/dist/routes/setup.js +477 -0
- package/dist/routes/snapshots.d.ts +3 -0
- package/dist/routes/snapshots.js +65 -0
- package/dist/routes/templates.d.ts +3 -0
- package/dist/routes/templates.js +37 -0
- package/dist/routes/themes.d.ts +2 -0
- package/dist/routes/themes.js +30 -0
- package/dist/routes/users.d.ts +2 -0
- package/dist/routes/users.js +113 -0
- package/dist/sandbox/register-local-plugin.d.ts +36 -0
- package/dist/sandbox/register-local-plugin.js +108 -0
- package/dist/sandbox/seed-sandbox.d.ts +20 -0
- package/dist/sandbox/seed-sandbox.js +122 -0
- package/dist/scripts/copy-admin-bundle.d.ts +1 -0
- package/dist/scripts/copy-admin-bundle.js +24 -0
- package/dist/scripts/copy-docs-bundle.d.ts +1 -0
- package/dist/scripts/copy-docs-bundle.js +22 -0
- package/dist/scripts/create-api-key.d.ts +5 -0
- package/dist/scripts/create-api-key.js +56 -0
- package/dist/scripts/generate-prisma-clients.d.ts +6 -0
- package/dist/scripts/generate-prisma-clients.js +125 -0
- package/dist/scripts/pack-bundled-templates.d.ts +1 -0
- package/dist/scripts/pack-bundled-templates.js +87 -0
- package/dist/setup/build-connection-string.d.ts +19 -0
- package/dist/setup/build-connection-string.js +14 -0
- package/dist/setup/bundled-templates.d.ts +19 -0
- package/dist/setup/bundled-templates.js +121 -0
- package/dist/setup/ensure-prisma-client.d.ts +3 -0
- package/dist/setup/ensure-prisma-client.js +23 -0
- package/dist/setup/install-starter.d.ts +14 -0
- package/dist/setup/install-starter.js +76 -0
- package/dist/setup/normalize-database-url.d.ts +2 -0
- package/dist/setup/normalize-database-url.js +35 -0
- package/dist/setup/persist-env-config.d.ts +2 -0
- package/dist/setup/persist-env-config.js +63 -0
- package/dist/setup/provision-database.d.ts +2 -0
- package/dist/setup/provision-database.js +89 -0
- package/dist/setup-app.d.ts +4 -0
- package/dist/setup-app.js +43 -0
- package/package.json +96 -0
- package/prisma/schema.prisma +303 -0
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
import { serializeContentData } from "@velora-cms/content-service";
|
|
2
|
+
import { getServerSerializer } from "../plugins/server-serializers.js";
|
|
3
|
+
// Shared by the REST public-content routes (public-api.ts's sendPublishedItem)
|
|
4
|
+
// and the GraphQL resolver (Session 113, Task 2): everything past locale
|
|
5
|
+
// resolution — fetching the pointer version, datatype-serializing the data
|
|
6
|
+
// (Session 111), and preparing the per-contribution serializer context used
|
|
7
|
+
// by both ?format= and extendContentResponse (Session 112's mutation fix).
|
|
8
|
+
// Locale resolution and format dispatch are surface-specific and stay in
|
|
9
|
+
// each caller.
|
|
10
|
+
//
|
|
11
|
+
// Session 114, Task 1 additionally moves in the by-id/by-path locale
|
|
12
|
+
// resolution block (resolveItemNode), the S105 document-type public
|
|
13
|
+
// projection (toPublicDocumentType), the media presign+projection
|
|
14
|
+
// (toPublicMediaFile), and the content-summary projection (toSummaries) —
|
|
15
|
+
// all pure/near-pure REST projections GraphQL (Task 2) reuses verbatim.
|
|
16
|
+
// Same throw-message contract ContentService uses everywhere (e.g.
|
|
17
|
+
// ContentService.getByLocale's not-found Error, and the backoffice content
|
|
18
|
+
// routes' identical check in content.ts).
|
|
19
|
+
export function isNotFoundError(error) {
|
|
20
|
+
return error instanceof Error && /no (content|version \d+) found/i.test(error.message);
|
|
21
|
+
}
|
|
22
|
+
// Shared by the by-id and by-path routes: apply locale resolution (same
|
|
23
|
+
// contract as the backoffice — fallback is a locale string) and enforce the
|
|
24
|
+
// published-only rule on both the anchor and the resolved node. Returns
|
|
25
|
+
// null on every miss this surface treats as a uniform 404 — unknown/draft
|
|
26
|
+
// anchor, unknown locale/fallback, or an unpublished resolved translation.
|
|
27
|
+
// A non-not-found error from locale resolution is NOT one of those misses
|
|
28
|
+
// (REST doesn't 404 it — the route lets it propagate to a 500), so it
|
|
29
|
+
// still rejects the returned promise rather than resolving to null.
|
|
30
|
+
//
|
|
31
|
+
// Session 116: `options.previewContentId` (a caller-verified preview
|
|
32
|
+
// token's contentId, or null/absent) bypasses the published-only gate,
|
|
33
|
+
// but ONLY for the node whose id exactly equals it — the anchor-level
|
|
34
|
+
// check bypasses when the ANCHOR matches (so a draft anchor with no
|
|
35
|
+
// `locale` query can resolve at all), and the post-locale-walk check
|
|
36
|
+
// bypasses independently when the RESOLVED node matches (so a token
|
|
37
|
+
// minted for one translation can never leak visibility to a sibling
|
|
38
|
+
// translation the locale walk happens to land on instead). A
|
|
39
|
+
// null/absent previewContentId makes both comparisons `x !== undefined`,
|
|
40
|
+
// i.e. always true, so the gate is bit-for-bit today's behavior.
|
|
41
|
+
export async function resolveItemNode(deps, anchor, query, options) {
|
|
42
|
+
const isPreviewAnchor = anchor !== null && anchor.id === options?.previewContentId;
|
|
43
|
+
if (!anchor || (anchor.publishedAt === null && !isPreviewAnchor)) {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
if (!query.locale) {
|
|
47
|
+
return anchor;
|
|
48
|
+
}
|
|
49
|
+
let node;
|
|
50
|
+
try {
|
|
51
|
+
node = await deps.contentService.getByLocale(anchor.translationGroupId, query.locale, {
|
|
52
|
+
fallback: query.fallback ?? false,
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
if (isNotFoundError(error)) {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
throw error;
|
|
60
|
+
}
|
|
61
|
+
if (node.publishedAt === null && node.id !== options?.previewContentId) {
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
return node;
|
|
65
|
+
}
|
|
66
|
+
// Shared by REST's GET /api/v1/content search route and the GraphQL
|
|
67
|
+
// `contents` resolver (Session 115, Task 1): resolves a search's `under`
|
|
68
|
+
// anchor id to the materialized-path prefix its subtree filter needs,
|
|
69
|
+
// enforcing the published-only rule on the anchor itself (same rule
|
|
70
|
+
// resolveItemNode applies to its own anchor). Returns null for every miss
|
|
71
|
+
// — unknown id, draft, or an id that simply doesn't match any row (a
|
|
72
|
+
// malformed/non-UUID string never throws here: `getContentNode` is a
|
|
73
|
+
// plain equality lookup, not a typed-column comparison, so it just finds
|
|
74
|
+
// nothing). Each caller maps that null to its own surface's contract —
|
|
75
|
+
// REST 404s it, GraphQL resolves its connection to null.
|
|
76
|
+
export async function resolveSubtreeFilter(adapter, underId) {
|
|
77
|
+
const anchor = await adapter.getContentNode(underId);
|
|
78
|
+
if (!anchor || anchor.publishedAt === null) {
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
return { pathPrefix: anchor.path };
|
|
82
|
+
}
|
|
83
|
+
function toSummary(node) {
|
|
84
|
+
return {
|
|
85
|
+
id: node.id,
|
|
86
|
+
parentId: node.parentId,
|
|
87
|
+
path: node.path,
|
|
88
|
+
depth: node.depth,
|
|
89
|
+
sortOrder: node.sortOrder,
|
|
90
|
+
documentTypeId: node.documentTypeId,
|
|
91
|
+
locale: node.locale,
|
|
92
|
+
publishedAt: node.publishedAt,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
// publishedOnly guarantees non-null publishedAt; the type-guard filter is
|
|
96
|
+
// belt-and-braces so a future adapter bug can't leak a draft or a null
|
|
97
|
+
// into the response schema.
|
|
98
|
+
export function toSummaries(nodes) {
|
|
99
|
+
return nodes
|
|
100
|
+
.filter((node) => node.publishedAt !== null)
|
|
101
|
+
.map(toSummary);
|
|
102
|
+
}
|
|
103
|
+
// The S105 public document-type projection: tabs/treeRules/defaultTemplateId
|
|
104
|
+
// stripped — introspection for a headless consumer, not the backoffice
|
|
105
|
+
// authoring shape.
|
|
106
|
+
export function toPublicDocumentType(doc) {
|
|
107
|
+
return {
|
|
108
|
+
id: doc.id,
|
|
109
|
+
name: doc.name,
|
|
110
|
+
icon: doc.icon,
|
|
111
|
+
kind: doc.kind,
|
|
112
|
+
fields: doc.fields.map((field) => ({
|
|
113
|
+
id: field.id,
|
|
114
|
+
name: field.name,
|
|
115
|
+
datatypeId: field.datatypeId,
|
|
116
|
+
...(field.validation ? { validation: field.validation } : {}),
|
|
117
|
+
})),
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
// The S105 public media projection, with a FRESH presigned download URL
|
|
121
|
+
// (never cached/stored — same convention as the REST media routes).
|
|
122
|
+
export async function toPublicMediaFile(mediaService, media) {
|
|
123
|
+
const downloadUrl = await mediaService.getDownloadUrl(media.id);
|
|
124
|
+
return {
|
|
125
|
+
id: media.id,
|
|
126
|
+
filename: media.filename,
|
|
127
|
+
mimeType: media.mimeType,
|
|
128
|
+
size: media.size,
|
|
129
|
+
downloadUrl,
|
|
130
|
+
uploadedAt: media.uploadedAt,
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
// `node` must already be locale-resolved by the caller (that part is
|
|
134
|
+
// surface-specific — REST does locale fallback, GraphQL may not). A
|
|
135
|
+
// null anchor, or an anchor whose publishedAt is null AND doesn't match
|
|
136
|
+
// `options.previewContentId`, maps to "notFound" here too, so a caller
|
|
137
|
+
// can pass its resolved node straight through without a duplicate guard.
|
|
138
|
+
export async function preparePublishedItem(deps, anchor, options) {
|
|
139
|
+
const isPreview = anchor !== null && anchor.id === options?.previewContentId;
|
|
140
|
+
if (!anchor || (anchor.publishedAt === null && !isPreview)) {
|
|
141
|
+
return { status: "notFound" };
|
|
142
|
+
}
|
|
143
|
+
// Reassigning to a fresh const (rather than using the narrowed parameter
|
|
144
|
+
// directly) keeps `node` non-null-typed inside the buildSerializerContext
|
|
145
|
+
// closure below, matching the original inline code where `node` was
|
|
146
|
+
// never `| null` in scope.
|
|
147
|
+
const node = anchor;
|
|
148
|
+
const { adapter } = deps;
|
|
149
|
+
// Preview bypass: serve the newest saved version (the draft an editor
|
|
150
|
+
// is working on), not the current_version pointer — same read
|
|
151
|
+
// `GET /api/content/:id/versions/latest` uses on the backoffice
|
|
152
|
+
// surface. A genuinely missing latest keeps the existing
|
|
153
|
+
// broken-invariant semantics (falls through to the same 500 below via
|
|
154
|
+
// the shared `!version` check).
|
|
155
|
+
const version = isPreview
|
|
156
|
+
? await adapter.getLatestContentVersion(node.id)
|
|
157
|
+
: await adapter.getContentVersion(node.id, node.currentVersion);
|
|
158
|
+
if (!version) {
|
|
159
|
+
// Broken invariant, not a caller mistake — same 500 treatment as the
|
|
160
|
+
// backoffice GET /api/content/:id.
|
|
161
|
+
return {
|
|
162
|
+
status: "brokenVersion",
|
|
163
|
+
message: `current_version (${node.currentVersion}) for ${node.id} has no matching content version`,
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
// Session 111: public reads emit datatype-SERIALIZED values through
|
|
167
|
+
// content-service's shared pipeline. Write responses and backoffice
|
|
168
|
+
// reads deliberately stay raw — a writer round-trips stored values;
|
|
169
|
+
// serialization is a read-surface projection. A missing document
|
|
170
|
+
// type (broken reference) degrades to raw data, matching the
|
|
171
|
+
// pipeline's own passthrough philosophy.
|
|
172
|
+
let data = version.data;
|
|
173
|
+
const documentType = await adapter.getDocumentType(node.documentTypeId);
|
|
174
|
+
if (documentType) {
|
|
175
|
+
const configIds = [...new Set(documentType.fields.map((field) => field.datatypeId))];
|
|
176
|
+
const configs = await Promise.all(configIds.map((id) => adapter.getDataTypeConfig(id)));
|
|
177
|
+
const byId = new Map(configIds.map((id, i) => [id, configs[i]]));
|
|
178
|
+
const resolveDataType = (id) => {
|
|
179
|
+
const config = byId.get(id);
|
|
180
|
+
return config ? { editorId: config.editorId, settings: config.settings } : null;
|
|
181
|
+
};
|
|
182
|
+
data = serializeContentData(version.data, documentType, resolveDataType, getServerSerializer, (report) => deps.warn({ fieldId: report.fieldId, editorId: report.editorId, err: report.error }, "datatype serializer threw; field degraded to stored value"));
|
|
183
|
+
}
|
|
184
|
+
const core = {
|
|
185
|
+
id: node.id,
|
|
186
|
+
documentTypeId: node.documentTypeId,
|
|
187
|
+
locale: node.locale,
|
|
188
|
+
// Passes through as-is — non-null on every existing (non-preview)
|
|
189
|
+
// call site, since those already guarded `anchor.publishedAt !==
|
|
190
|
+
// null` above; possibly null when a preview bypass served a
|
|
191
|
+
// genuinely-draft node's latest version.
|
|
192
|
+
publishedAt: node.publishedAt,
|
|
193
|
+
// The version actually served, not the node's current_version
|
|
194
|
+
// pointer — identical to it on every existing (pointer-version) call
|
|
195
|
+
// path, but the preview bypass serves `getLatestContentVersion`,
|
|
196
|
+
// which can be a newer, unpublished version number.
|
|
197
|
+
version: version.version,
|
|
198
|
+
};
|
|
199
|
+
const contributions = deps.listSerializerContributions();
|
|
200
|
+
// Every contribution gets its OWN context: a structuredClone of `data`
|
|
201
|
+
// and a fresh `item`/`documentType` object. Contributions run
|
|
202
|
+
// untrusted, plugin-authored code — if one mutates its context in
|
|
203
|
+
// place, that must not corrupt the core response (which always sends
|
|
204
|
+
// the original, un-cloned `data`) and must not poison the input seen
|
|
205
|
+
// by any other contribution.
|
|
206
|
+
function buildSerializerContext() {
|
|
207
|
+
return {
|
|
208
|
+
item: { ...core },
|
|
209
|
+
data: structuredClone(data),
|
|
210
|
+
documentType: documentType
|
|
211
|
+
? { id: documentType.id, name: documentType.name }
|
|
212
|
+
: { id: node.documentTypeId, name: "" },
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
return { status: "ok", core, data, contributions, buildSerializerContext };
|
|
216
|
+
}
|
|
217
|
+
// extendContentResponse — additive only, one plugin never affects another
|
|
218
|
+
// or the core response.
|
|
219
|
+
export async function computeExtensions(prepared, warn) {
|
|
220
|
+
const extensions = {};
|
|
221
|
+
for (const { pluginId, serializers } of prepared.contributions) {
|
|
222
|
+
if (!serializers.extendContentResponse)
|
|
223
|
+
continue;
|
|
224
|
+
try {
|
|
225
|
+
const extra = await serializers.extendContentResponse(prepared.buildSerializerContext());
|
|
226
|
+
if (!extra || typeof extra !== "object" || Array.isArray(extra))
|
|
227
|
+
continue;
|
|
228
|
+
JSON.stringify(extra); // S111-handoff guard
|
|
229
|
+
extensions[pluginId] = extra;
|
|
230
|
+
}
|
|
231
|
+
catch (error) {
|
|
232
|
+
warn({ pluginId, err: error }, "extendContentResponse failed; extension skipped");
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
return Object.keys(extensions).length > 0 ? extensions : undefined;
|
|
236
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { FastifyPluginAsyncZod } from "fastify-type-provider-zod";
|
|
2
|
+
export declare const SETUP_ALREADY_COMPLETED_MESSAGE = "Setup has already been completed.";
|
|
3
|
+
export declare const SETUP_PROBE_FAILED_MESSAGE = "Could not verify whether setup has already been completed. Try again.";
|
|
4
|
+
export declare const SETUP_MISCONFIGURED_DATABASE_URL_MESSAGE = "Setup is misconfigured: the database is reported as configured, but no database URL is set.";
|
|
5
|
+
export declare const SETUP_LOCK_WEDGED_MESSAGE: string;
|
|
6
|
+
export declare const setupRoutes: FastifyPluginAsyncZod<{
|
|
7
|
+
setupRequired: boolean;
|
|
8
|
+
databaseConfigured: boolean;
|
|
9
|
+
}>;
|