@phtngyn/cms 0.1.0-beta.0 → 0.1.0-beta.2
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/README.md +260 -6
- package/package.json +31 -16
- package/src/Authoring.d.ts +13 -1
- package/src/Configuration-Br7tE9Qt.d.ts +68 -0
- package/src/{AuthoringSchema-BQ5kbhVB.js → Configuration-CA_jvQKG.js} +599 -492
- package/src/Configuration-CA_jvQKG.js.map +1 -0
- package/src/Configuration.d.ts +2 -44
- package/src/Configuration.js +0 -1
- package/src/Configuration.js.map +1 -1
- package/src/{DocumentEngine-Da0kWotL.js → DocumentEngine-CgiBQU4g.js} +110 -84
- package/src/DocumentEngine-CgiBQU4g.js.map +1 -0
- package/src/DocumentModel-BB9igGC7.d.ts +34 -0
- package/src/DocumentModel.d.ts +2 -30
- package/src/DocumentModel.js +13 -3
- package/src/DocumentModel.js.map +1 -1
- package/src/Forms-BsJMev5_.d.ts +74 -0
- package/src/Forms-CfcI3tPU.js +79 -0
- package/src/Forms-CfcI3tPU.js.map +1 -0
- package/src/Forms-DxbkU3_5.js +367 -0
- package/src/Forms-DxbkU3_5.js.map +1 -0
- package/src/Forms.d.ts +35 -0
- package/src/Forms.js +13 -0
- package/src/Forms.js.map +1 -0
- package/src/HttpPaths-c9nLZ9H2.js +21 -0
- package/src/HttpPaths-c9nLZ9H2.js.map +1 -0
- package/src/I18n-DZK4CkJF.d.ts +21 -0
- package/src/I18n.d.ts +2 -0
- package/src/I18n.js +1 -0
- package/src/Module.js +78 -81
- package/src/Module.js.map +1 -1
- package/src/S3MediaObjects-JKMAWyVB.js +2664 -0
- package/src/S3MediaObjects-JKMAWyVB.js.map +1 -0
- package/src/Seed.d.ts +6 -0
- package/src/Seed.js +34 -0
- package/src/Seed.js.map +1 -0
- package/src/Seo-402YumpT.d.ts +198 -0
- package/src/{connection-ZGtL54qY.js → connection-B-iz0Y9Y.js} +5 -7
- package/src/connection-B-iz0Y9Y.js.map +1 -0
- package/src/{installation-BNKaVjni.js → installation-DgF2M1gL.js} +1162 -2147
- package/src/installation-DgF2M1gL.js.map +1 -0
- package/src/internal/authoring-catalog.js +153 -0
- package/src/internal/authoring-catalog.js.map +1 -0
- package/src/internal/authoring-compiler.js +2 -2
- package/src/internal/authoring-compiler.js.map +1 -1
- package/src/internal/authoring-metadata.js +68 -49
- package/src/internal/authoring-metadata.js.map +1 -1
- package/src/internal/cms-config.js +0 -1
- package/src/internal/cms-config.js.map +1 -1
- package/src/internal/configuration.js +25 -13
- package/src/internal/configuration.js.map +1 -1
- package/src/internal/document-model.js +66 -20
- package/src/internal/document-model.js.map +1 -1
- package/src/internal/form-capabilities.js +12 -0
- package/src/internal/form-capabilities.js.map +1 -0
- package/src/internal/i18n.js +47 -0
- package/src/internal/i18n.js.map +1 -0
- package/src/internal/studio-app.js +66 -0
- package/src/internal/studio-app.js.map +1 -0
- package/src/location-CFKTeK1K.js +35 -0
- package/src/location-CFKTeK1K.js.map +1 -0
- package/src/{metadata-Czvi3E4K.js → metadata-BEZPWh-3.js} +3 -72
- package/src/metadata-BEZPWh-3.js.map +1 -0
- package/src/{models-DS5ClMsH.js → models-BWm1pTAf.js} +9 -31
- package/src/models-BWm1pTAf.js.map +1 -0
- package/src/models-DwYioyNV.js +726 -0
- package/src/models-DwYioyNV.js.map +1 -0
- package/src/runtime/blocks.js +30 -0
- package/src/runtime/blocks.js.map +1 -0
- package/src/runtime/collaboration.js +9 -4
- package/src/runtime/collaboration.js.map +1 -1
- package/src/runtime/delivery/DocumentRenderer.js +10 -4
- package/src/runtime/delivery/DocumentRenderer.js.map +1 -1
- package/src/runtime/delivery/blocks.js +8 -0
- package/src/runtime/delivery/blocks.js.map +1 -0
- package/src/runtime/delivery/context.js +12 -0
- package/src/runtime/delivery/context.js.map +1 -0
- package/src/runtime/delivery/document-page.js +14 -12
- package/src/runtime/delivery/document-page.js.map +1 -1
- package/src/runtime/delivery/document.js +21 -3
- package/src/runtime/delivery/document.js.map +1 -1
- package/src/runtime/delivery/error.js +11 -0
- package/src/runtime/delivery/error.js.map +1 -0
- package/src/runtime/delivery/plugin.js +41 -0
- package/src/runtime/delivery/plugin.js.map +1 -0
- package/src/runtime/delivery/types.d.ts +5 -0
- package/src/runtime/delivery/useCmsDocumentSeo.d.ts +56 -0
- package/src/runtime/delivery/useCmsDocumentSeo.js +99 -0
- package/src/runtime/delivery/useCmsDocumentSeo.js.map +1 -0
- package/src/runtime/delivery/useDocument.js +5 -2
- package/src/runtime/delivery/useDocument.js.map +1 -1
- package/src/runtime/delivery/useDocumentQuery.js +5 -2
- package/src/runtime/delivery/useDocumentQuery.js.map +1 -1
- package/src/runtime/forms/document.js +38 -0
- package/src/runtime/forms/document.js.map +1 -0
- package/src/runtime/forms/useCmsForm.js +149 -0
- package/src/runtime/forms/useCmsForm.js.map +1 -0
- package/src/runtime/i18n/translator.js +22 -0
- package/src/runtime/i18n/translator.js.map +1 -0
- package/src/runtime/i18n/useCmsI18n.d.ts +9 -0
- package/src/runtime/i18n/useCmsI18n.js +29 -0
- package/src/runtime/i18n/useCmsI18n.js.map +1 -0
- package/src/runtime/installation.js +1 -1
- package/src/runtime/plugin.js +3 -3
- package/src/runtime/plugin.js.map +1 -1
- package/src/runtime/preview/comark-document.js +0 -1
- package/src/runtime/preview/comark-document.js.map +1 -1
- package/src/runtime/preview/connection.js +1 -1
- package/src/runtime/preview/controller.js +37 -11
- package/src/runtime/preview/controller.js.map +1 -1
- package/src/runtime/preview/overlay.js +65 -0
- package/src/runtime/preview/overlay.js.map +1 -0
- package/src/runtime/preview/plugin.client.js +59 -61
- package/src/runtime/preview/plugin.client.js.map +1 -1
- package/src/runtime/preview/preview.css +72 -4
- package/src/runtime/preview/protocol.js.map +1 -1
- package/src/runtime/preview/store.js +1 -1
- package/src/runtime/preview/targets.js +0 -1
- package/src/runtime/preview/targets.js.map +1 -1
- package/src/runtime/sitemap-entries.js +17 -0
- package/src/runtime/sitemap-entries.js.map +1 -0
- package/src/runtime/sitemap.js +24 -0
- package/src/runtime/sitemap.js.map +1 -0
- package/src/runtime/studio-app.js +5 -1
- package/src/runtime/studio-app.js.map +1 -1
- package/src/runtime/studio-entry.js +36 -0
- package/src/runtime/studio-entry.js.map +1 -0
- package/src/runtime/studio-navigation.js +11 -0
- package/src/runtime/studio-navigation.js.map +1 -0
- package/src/scalars-B2lgGUnj.js +26 -0
- package/src/scalars-B2lgGUnj.js.map +1 -0
- package/src/{store-Nl4uxEXx.js → store-DjJs3I7k.js} +12 -7
- package/src/store-DjJs3I7k.js.map +1 -0
- package/studio/CreateDocumentDialog-CTeIFlPb.js +256 -0
- package/studio/collaboration-DcK2F6v9.js +4566 -0
- package/studio/documentPlanning-Bfv-d7OU.js +29820 -0
- package/studio/dom-to-image-more.min-D6jGGdrW.js +877 -0
- package/studio/editor-Bzlh3zXt.js +30827 -0
- package/studio/host.css +3 -0
- package/studio/host.js +46614 -0
- package/studio/rolldown-runtime-B0aSnxlc.js +20 -0
- package/dist/studio/assets/ActivityEntryRow-D--fRvWI.js +0 -1
- package/dist/studio/assets/ActivityView-D-XBBUHb.js +0 -1
- package/dist/studio/assets/CreateDocumentDialog-CH8UH1QM.js +0 -1
- package/dist/studio/assets/DocumentsView-CxRpmAxt.js +0 -34
- package/dist/studio/assets/DropdownMenu-BSb1l7fr.js +0 -1
- package/dist/studio/assets/Input-DVao38h7.js +0 -3
- package/dist/studio/assets/MediaView-BHrPIjxB.js +0 -1
- package/dist/studio/assets/Modal-VNrXGa5C.js +0 -1
- package/dist/studio/assets/OverviewView-DfP6-mLZ.js +0 -1
- package/dist/studio/assets/Select-BJZIs9sY.js +0 -1
- package/dist/studio/assets/SettingsView-CerHe-ua.js +0 -1
- package/dist/studio/assets/Skeleton-CWJNi3nS.js +0 -1
- package/dist/studio/assets/StudioPageHeader-DP9HDAF2.js +0 -1
- package/dist/studio/assets/UsersView-cP3REkH2.js +0 -1
- package/dist/studio/assets/collaboration-BLnCzfvV.js +0 -4
- package/dist/studio/assets/context-dY4fNbn3.js +0 -1
- package/dist/studio/assets/editor-CE07wW83.js +0 -137
- package/dist/studio/assets/gateway-BAyQgCse.js +0 -10
- package/dist/studio/assets/index-CjoaPLhZ.js +0 -28
- package/dist/studio/assets/index-s2rPqCmP.css +0 -2
- package/dist/studio/assets/render-BkxbK2St.js +0 -83
- package/dist/studio/assets/rolldown-runtime-DK3Fl9T5.js +0 -1
- package/dist/studio/assets/useMediaLibrary-D7qR7aBf.js +0 -1
- package/dist/studio/index.html +0 -76
- package/src/AuthoringSchema-BQ5kbhVB.js.map +0 -1
- package/src/Configuration-BGYFD2N1.js +0 -150
- package/src/Configuration-BGYFD2N1.js.map +0 -1
- package/src/DocumentEngine-Da0kWotL.js.map +0 -1
- package/src/HttpPaths-86qLGB90.js +0 -15
- package/src/HttpPaths-86qLGB90.js.map +0 -1
- package/src/StudioHttp-BTLLooh0.js +0 -916
- package/src/StudioHttp-BTLLooh0.js.map +0 -1
- package/src/connection-ZGtL54qY.js.map +0 -1
- package/src/installation-BNKaVjni.js.map +0 -1
- package/src/internal/component-metadata.js +0 -37
- package/src/internal/component-metadata.js.map +0 -1
- package/src/metadata-Czvi3E4K.js.map +0 -1
- package/src/models-Citx8jBi.js +0 -306
- package/src/models-Citx8jBi.js.map +0 -1
- package/src/models-DS5ClMsH.js.map +0 -1
- package/src/store-Nl4uxEXx.js.map +0 -1
package/src/Module.js
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { d as STUDIO_APP_PATH, f as STUDIO_BASE_PATH, m as STUDIO_HEALTH_PATH, p as STUDIO_COLLABORATION_PATH, t as CMS_AUTHENTICATION_PATH, u as STUDIO_API_PATH } from "./HttpPaths-c9nLZ9H2.js";
|
|
2
|
+
import { registerStudioApp } from "./internal/studio-app.js";
|
|
3
|
+
import { cmsAuthoringPlugin } from "./internal/authoring-compiler.js";
|
|
4
|
+
import { registerAuthoringCatalog } from "./internal/authoring-catalog.js";
|
|
2
5
|
import { loadCmsConfiguration } from "./internal/cms-config.js";
|
|
3
6
|
import { compileCmsConfiguration } from "./internal/configuration.js";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { NodeFileSystem, NodePath } from "@effect/platform-node-shared";
|
|
8
|
-
import { addComponent, addImports, addPlugin, addServerHandler, addServerPlugin, addServerTemplate, addVitePlugin, createResolver, defineNuxtModule, extendPages } from "@nuxt/kit";
|
|
9
|
-
import { Effect, FileSystem, Layer, Path, Schema } from "effect";
|
|
7
|
+
import { Effect, Layer } from "effect";
|
|
8
|
+
import { addComponent, addImports, addPlugin, addServerHandler, addServerPlugin, addServerTemplate, addTemplate, addTypeTemplate, addVitePlugin, createResolver, defineNuxtModule, extendPages } from "@nuxt/kit";
|
|
9
|
+
import { NodeCrypto, NodeFileSystem, NodePath } from "@effect/platform-node-shared";
|
|
10
10
|
|
|
11
11
|
//#region src/Module.ts
|
|
12
|
+
const CMS_SITEMAP_SOURCE_PATH = `${STUDIO_BASE_PATH}/sitemap`;
|
|
12
13
|
const resolver = createResolver(import.meta.url);
|
|
13
|
-
const nodeLayer = Layer.merge(NodeFileSystem.layer, NodePath.layer);
|
|
14
|
-
var StudioApplicationMissing = class extends Schema.TaggedError()("StudioApplicationMissing", {}) {};
|
|
14
|
+
const nodeLayer = Layer.merge(NodeCrypto.layer, Layer.merge(NodeFileSystem.layer, NodePath.layer));
|
|
15
15
|
const cmsNuxtModule = defineNuxtModule({
|
|
16
16
|
moduleDependencies: {
|
|
17
|
+
"@nuxtjs/robots": {},
|
|
18
|
+
"@nuxtjs/sitemap": {},
|
|
17
19
|
"@comark/nuxt": {},
|
|
18
|
-
"nuxt-
|
|
19
|
-
|
|
20
|
-
globalsOnly: true
|
|
21
|
-
} }
|
|
20
|
+
"nuxt-schema-org": {},
|
|
21
|
+
"nuxt-seo-utils": {}
|
|
22
22
|
},
|
|
23
23
|
meta: {
|
|
24
24
|
compatibility: { nuxt: ">=4.5.0 <5.0.0" },
|
|
@@ -30,52 +30,45 @@ const cmsNuxtModule = defineNuxtModule({
|
|
|
30
30
|
});
|
|
31
31
|
const setupModule = Effect.fn("CmsNuxtModule.setup")(function* (nuxt) {
|
|
32
32
|
addVitePlugin(cmsAuthoringPlugin());
|
|
33
|
-
const path = yield* Path.Path;
|
|
34
33
|
const authored = yield* loadCmsConfiguration(nuxt.options.rootDir);
|
|
35
34
|
const initialSources = yield* Effect.promise(() => Promise.resolve(authored.configuration.initialSources?.() ?? []));
|
|
36
35
|
const compiled = compileCmsConfiguration(authored.configuration, initialSources);
|
|
36
|
+
const i18n = compiled.i18n;
|
|
37
|
+
configureSitemap(nuxt.options);
|
|
38
|
+
const i18nTemplate = addTemplate({
|
|
39
|
+
filename: "cms/i18n.mjs",
|
|
40
|
+
write: true,
|
|
41
|
+
getContents: () => `export default JSON.parse(${JSON.stringify(JSON.stringify(i18n))})`
|
|
42
|
+
});
|
|
43
|
+
nuxt.options.alias["#cms/i18n"] = i18nTemplate.dst;
|
|
44
|
+
const messageKeys = [...new Set(Object.values(i18n.locales).flatMap((locale) => Object.keys(locale.messages)))];
|
|
45
|
+
addTypeTemplate({
|
|
46
|
+
filename: "types/cms-i18n.d.ts",
|
|
47
|
+
getContents: () => `import '@phtngyn/cms/I18n'\ndeclare module '@phtngyn/cms/I18n' { interface CmsI18nRegistry { messageKey: ${messageKeys.map((key) => JSON.stringify(key)).join(" | ") || "string"} } }`
|
|
48
|
+
});
|
|
37
49
|
nuxt.options.watch.push(authored.path);
|
|
38
|
-
const
|
|
39
|
-
let authoring = [];
|
|
40
|
-
nuxt.hook("components:extend", (components) => runAuthoring(Effect.gen(function* () {
|
|
41
|
-
const fileSystem = yield* FileSystem.FileSystem;
|
|
42
|
-
const checker = createCheckerByJson(nuxt.options.rootDir, {
|
|
43
|
-
compilerOptions: {
|
|
44
|
-
strict: true,
|
|
45
|
-
target: "ESNext",
|
|
46
|
-
module: "ESNext",
|
|
47
|
-
moduleResolution: "Bundler",
|
|
48
|
-
baseUrl: nuxt.options.rootDir,
|
|
49
|
-
paths: Object.fromEntries(Object.entries(nuxt.options.alias).map(([key, value]) => [`${key}/*`, [`${value}/*`]]))
|
|
50
|
-
},
|
|
51
|
-
files: []
|
|
52
|
-
}, { schema: true });
|
|
53
|
-
const resolved = [];
|
|
54
|
-
for (const component of components) {
|
|
55
|
-
if (!component.filePath.endsWith(".vue") || component.filePath.includes("/node_modules/")) continue;
|
|
56
|
-
const source = yield* fileSystem.readFileString(component.filePath);
|
|
57
|
-
const definition = yield* resolveBlockAuthoring(checker, component.filePath, component.kebabName, source);
|
|
58
|
-
if (!definition) continue;
|
|
59
|
-
if (resolved.some((existing) => existing.name === definition.name)) throw new Error(`Duplicate authoring block ${definition.name}.`);
|
|
60
|
-
resolved.push(definition);
|
|
61
|
-
component.global = true;
|
|
62
|
-
}
|
|
63
|
-
authoring = resolved.sort((left, right) => left.name.localeCompare(right.name));
|
|
64
|
-
})));
|
|
50
|
+
const authoring = yield* registerAuthoringCatalog(nuxt, compiled.documents, Object.fromEntries(Object.entries(authored.configuration.forms ?? {}).map(([name, form]) => [name, form.definition])));
|
|
65
51
|
const installationPluginId = resolver.resolve("./runtime/plugin.virtual.mjs");
|
|
66
52
|
const installationPluginTemplate = addServerTemplate({
|
|
67
53
|
filename: installationPluginId,
|
|
68
54
|
getContents: () => [
|
|
69
55
|
`import { createInstallationPlugin } from ${JSON.stringify(resolver.resolve("./runtime/plugin"))}`,
|
|
70
56
|
`import cmsConfiguration from ${JSON.stringify(authored.path)}`,
|
|
71
|
-
|
|
72
|
-
`export default createInstallationPlugin(cmsConfiguration,
|
|
57
|
+
`import authoring from ${JSON.stringify(authoring.dst)}`,
|
|
58
|
+
`export default createInstallationPlugin(cmsConfiguration, authoring, ${JSON.stringify(compiled.initialSources)})`
|
|
73
59
|
].join("\n")
|
|
74
60
|
});
|
|
61
|
+
addServerHandler({
|
|
62
|
+
handler: resolver.resolve("./runtime/api"),
|
|
63
|
+
route: `${STUDIO_HEALTH_PATH}/**:path`
|
|
64
|
+
});
|
|
65
|
+
addServerHandler({
|
|
66
|
+
handler: resolver.resolve("./runtime/sitemap"),
|
|
67
|
+
route: CMS_SITEMAP_SOURCE_PATH
|
|
68
|
+
});
|
|
75
69
|
registerDeliveryUi(nuxt);
|
|
76
|
-
yield* registerStudioApp();
|
|
77
|
-
|
|
78
|
-
configureNitro(nuxt, path.resolve(path.dirname(shellPath), "assets"));
|
|
70
|
+
yield* registerStudioApp(nuxt, resolver);
|
|
71
|
+
configureNitro(nuxt);
|
|
79
72
|
addServerPlugin(installationPluginTemplate.filename);
|
|
80
73
|
addServerHandler({
|
|
81
74
|
handler: resolver.resolve("./runtime/api"),
|
|
@@ -87,10 +80,18 @@ const setupModule = Effect.fn("CmsNuxtModule.setup")(function* (nuxt) {
|
|
|
87
80
|
});
|
|
88
81
|
addServerHandler({
|
|
89
82
|
handler: resolver.resolve("./runtime/api"),
|
|
90
|
-
route: `${
|
|
83
|
+
route: `${STUDIO_API_PATH}/**:path`
|
|
91
84
|
});
|
|
92
85
|
});
|
|
86
|
+
function configureSitemap(options) {
|
|
87
|
+
if (options.sitemap === false) return;
|
|
88
|
+
const sitemap = options.sitemap ?? {};
|
|
89
|
+
const sources = sitemap.sources ?? [];
|
|
90
|
+
if (!sources.includes(CMS_SITEMAP_SOURCE_PATH)) sitemap.sources = [...sources, CMS_SITEMAP_SOURCE_PATH];
|
|
91
|
+
options.sitemap = sitemap;
|
|
92
|
+
}
|
|
93
93
|
function registerDeliveryUi(nuxt) {
|
|
94
|
+
addPlugin(resolver.resolve("./runtime/blocks"));
|
|
94
95
|
nuxt.options.css.push(resolver.resolve("./runtime/preview/preview.css"));
|
|
95
96
|
addComponent({
|
|
96
97
|
name: "DocumentField",
|
|
@@ -108,14 +109,30 @@ function registerDeliveryUi(nuxt) {
|
|
|
108
109
|
name: "CmsStudioPreviewMarker",
|
|
109
110
|
filePath: resolver.resolve("./runtime/preview/CmsStudioPreviewMarker")
|
|
110
111
|
});
|
|
112
|
+
addPlugin(resolver.resolve("./runtime/delivery/plugin"));
|
|
111
113
|
addPlugin(resolver.resolve("./runtime/preview/plugin.client"));
|
|
112
|
-
addImports([
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
114
|
+
addImports([
|
|
115
|
+
{
|
|
116
|
+
name: "useCmsI18n",
|
|
117
|
+
from: resolver.resolve("./runtime/i18n/useCmsI18n")
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
name: "useCmsForm",
|
|
121
|
+
from: resolver.resolve("./runtime/forms/useCmsForm")
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
name: "useCmsDocumentSeo",
|
|
125
|
+
from: resolver.resolve("./runtime/delivery/useCmsDocumentSeo")
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
name: "useDocument",
|
|
129
|
+
from: resolver.resolve("./runtime/delivery/useDocument")
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
name: "useDocumentQuery",
|
|
133
|
+
from: resolver.resolve("./runtime/delivery/useDocumentQuery")
|
|
134
|
+
}
|
|
135
|
+
]);
|
|
119
136
|
extendPages((pages) => {
|
|
120
137
|
pages.push({
|
|
121
138
|
file: resolver.resolve("./runtime/delivery/document"),
|
|
@@ -124,37 +141,17 @@ function registerDeliveryUi(nuxt) {
|
|
|
124
141
|
});
|
|
125
142
|
});
|
|
126
143
|
}
|
|
127
|
-
|
|
128
|
-
const fileSystem = yield* FileSystem.FileSystem;
|
|
129
|
-
const shellPath = resolver.resolve("../dist/studio/index.html");
|
|
130
|
-
if (!(yield* fileSystem.exists(shellPath))) return yield* new StudioApplicationMissing();
|
|
131
|
-
const shell = yield* fileSystem.readFileString(shellPath);
|
|
132
|
-
const handler = addServerTemplate({
|
|
133
|
-
filename: resolver.resolve("./runtime/studio-app.virtual.mjs"),
|
|
134
|
-
getContents: () => [`import { createStudioAppHandler } from ${JSON.stringify(resolver.resolve("./runtime/studio-app"))}`, `export default createStudioAppHandler(${JSON.stringify(shell)})`].join("\n")
|
|
135
|
-
});
|
|
136
|
-
addServerHandler({
|
|
137
|
-
handler: handler.filename,
|
|
138
|
-
method: "get",
|
|
139
|
-
route: STUDIO_APP_PATH
|
|
140
|
-
});
|
|
141
|
-
addServerHandler({
|
|
142
|
-
handler: handler.filename,
|
|
143
|
-
method: "get",
|
|
144
|
-
route: `${STUDIO_APP_PATH}/**:path`
|
|
145
|
-
});
|
|
146
|
-
});
|
|
147
|
-
function configureNitro(nuxt, assetsPath) {
|
|
144
|
+
function configureNitro(nuxt) {
|
|
148
145
|
nuxt.hook("nitro:config", (config) => {
|
|
149
146
|
config.experimental ||= {};
|
|
150
147
|
config.experimental.websocket = true;
|
|
151
|
-
config.publicAssets ||= [];
|
|
152
|
-
config.publicAssets.push({
|
|
153
|
-
baseURL: `${STUDIO_APP_PATH}/assets`,
|
|
154
|
-
dir: assetsPath,
|
|
155
|
-
maxAge: nuxt.options.dev ? 0 : 31536e3
|
|
156
|
-
});
|
|
157
148
|
config.routeRules ||= {};
|
|
149
|
+
const studioRules = {
|
|
150
|
+
ssr: false,
|
|
151
|
+
headers: { "cache-control": "no-store" }
|
|
152
|
+
};
|
|
153
|
+
config.routeRules[`${STUDIO_APP_PATH}/**`] = studioRules;
|
|
154
|
+
config.routeRules[STUDIO_APP_PATH] = studioRules;
|
|
158
155
|
config.routeRules[STUDIO_BASE_PATH] = { redirect: {
|
|
159
156
|
statusCode: 302,
|
|
160
157
|
to: STUDIO_APP_PATH
|
package/src/Module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Module.js","names":[],"sources":["../../../src/Module.ts"],"sourcesContent":["import type { HookResult, Nuxt } from '@nuxt/schema'\nimport type { NitroConfig } from 'nitropack/types'\nimport type { ComponentDefinition } from '@internal/protocol/Configuration'\nimport { createCheckerByJson } from 'vue-component-meta'\nimport { NodeFileSystem, NodePath } from '@effect/platform-node-shared'\nimport {\n CMS_AUTHENTICATION_PATH,\n STUDIO_APP_PATH,\n STUDIO_BASE_PATH,\n STUDIO_COLLABORATION_PATH,\n} from '@internal/protocol/HttpPaths'\nimport {\n addComponent,\n addImports,\n addPlugin,\n addServerHandler,\n addServerPlugin,\n addServerTemplate,\n addVitePlugin,\n createResolver,\n defineNuxtModule,\n extendPages,\n} from '@nuxt/kit'\nimport { Effect, FileSystem, Layer, Path, Schema } from 'effect'\nimport { loadCmsConfiguration } from './internal/cms-config'\nimport { compileCmsConfiguration } from './internal/configuration'\nimport { cmsAuthoringPlugin } from './internal/authoring-compiler'\nimport { resolveBlockAuthoring } from './internal/authoring-metadata'\n\ndeclare module '@nuxt/schema' {\n interface NuxtHooks {\n 'nitro:config': (nitroConfig: NitroConfig) => HookResult\n }\n}\n\nconst resolver = createResolver(import.meta.url)\nconst nodeLayer = Layer.merge(NodeFileSystem.layer, NodePath.layer)\n\nclass StudioApplicationMissing extends Schema.TaggedError<StudioApplicationMissing>()('StudioApplicationMissing', {}) {}\n\nconst cmsNuxtModule = defineNuxtModule({\n moduleDependencies: {\n '@comark/nuxt': {},\n 'nuxt-component-meta': {\n overrides: {\n exclude: [/(?:^|[\\\\/])node_modules[\\\\/]/u],\n globalsOnly: true,\n },\n },\n },\n meta: {\n compatibility: { nuxt: '>=4.5.0 <5.0.0' },\n name: '@phtngyn/cms',\n },\n setup(_options, nuxt) {\n return Effect.runPromise(setupModule(nuxt).pipe(Effect.provide(nodeLayer)))\n },\n})\n\nexport default cmsNuxtModule\n\nconst setupModule = Effect.fn('CmsNuxtModule.setup')(function* (nuxt: Nuxt) {\n addVitePlugin(cmsAuthoringPlugin())\n const path = yield* Path.Path\n const authored = yield* loadCmsConfiguration(nuxt.options.rootDir)\n const initialSources = yield* Effect.promise(() => Promise.resolve(authored.configuration.initialSources?.() ?? []))\n const compiled = compileCmsConfiguration(authored.configuration, initialSources)\n nuxt.options.watch.push(authored.path)\n const runAuthoring = Effect.runPromiseWith(yield* Effect.context<FileSystem.FileSystem>())\n let authoring: ReadonlyArray<ComponentDefinition> = []\n nuxt.hook('components:extend', (components) =>\n runAuthoring(\n Effect.gen(function* () {\n const fileSystem = yield* FileSystem.FileSystem\n const checker = createCheckerByJson(\n nuxt.options.rootDir,\n {\n compilerOptions: {\n strict: true,\n target: 'ESNext',\n module: 'ESNext',\n moduleResolution: 'Bundler',\n baseUrl: nuxt.options.rootDir,\n paths: Object.fromEntries(\n Object.entries(nuxt.options.alias).map(([key, value]) => [`${key}/*`, [`${value}/*`]]),\n ),\n },\n files: [],\n },\n { schema: true },\n )\n const resolved: ComponentDefinition[] = []\n for (const component of components) {\n if (!component.filePath.endsWith('.vue') || component.filePath.includes('/node_modules/')) continue\n const source = yield* fileSystem.readFileString(component.filePath)\n const definition = yield* resolveBlockAuthoring(checker, component.filePath, component.kebabName, source)\n if (!definition) continue\n if (resolved.some((existing) => existing.name === definition.name))\n throw new Error(`Duplicate authoring block ${definition.name}.`)\n resolved.push(definition)\n // Nuxt generates delivery and preview registration from this same discovered component.\n component.global = true\n }\n authoring = resolved.sort((left, right) => left.name.localeCompare(right.name))\n }),\n ),\n )\n\n const installationPluginId = resolver.resolve('./runtime/plugin.virtual.mjs')\n const installationPluginTemplate = addServerTemplate({\n filename: installationPluginId,\n getContents: () =>\n [\n `import { createInstallationPlugin } from ${JSON.stringify(resolver.resolve('./runtime/plugin'))}`,\n `import cmsConfiguration from ${JSON.stringify(authored.path)}`,\n \"import components from '#nuxt-component-meta/nitro'\",\n `export default createInstallationPlugin(cmsConfiguration, components, ${JSON.stringify(compiled.initialSources)}, ${JSON.stringify(authoring)})`,\n ].join('\\n'),\n })\n registerDeliveryUi(nuxt)\n yield* registerStudioApp()\n const shellPath = resolver.resolve('../dist/studio/index.html')\n configureNitro(nuxt, path.resolve(path.dirname(shellPath), 'assets'))\n addServerPlugin(installationPluginTemplate.filename)\n addServerHandler({\n handler: resolver.resolve('./runtime/api'),\n route: `${CMS_AUTHENTICATION_PATH}/**:path`,\n })\n addServerHandler({\n handler: resolver.resolve('./runtime/collaboration'),\n route: STUDIO_COLLABORATION_PATH,\n })\n addServerHandler({\n handler: resolver.resolve('./runtime/api'),\n route: `${STUDIO_BASE_PATH}/**:path`,\n })\n})\n\nfunction registerDeliveryUi(nuxt: Nuxt): void {\n nuxt.options.css.push(resolver.resolve('./runtime/preview/preview.css'))\n addComponent({ name: 'DocumentField', filePath: resolver.resolve('./runtime/delivery/DocumentField') })\n addComponent({ name: 'DocumentRenderer', filePath: resolver.resolve('./runtime/delivery/DocumentRenderer') })\n addComponent({ name: 'DocumentScope', filePath: resolver.resolve('./runtime/delivery/DocumentScope') })\n addComponent({\n name: 'CmsStudioPreviewMarker',\n filePath: resolver.resolve('./runtime/preview/CmsStudioPreviewMarker'),\n })\n addPlugin(resolver.resolve('./runtime/preview/plugin.client'))\n addImports([\n { name: 'useDocument', from: resolver.resolve('./runtime/delivery/useDocument') },\n { name: 'useDocumentQuery', from: resolver.resolve('./runtime/delivery/useDocumentQuery') },\n ])\n extendPages((pages) => {\n pages.push({\n file: resolver.resolve('./runtime/delivery/document'),\n name: 'cms-document-page',\n path: '/:contentPath(.*)*',\n })\n })\n}\n\nconst registerStudioApp = Effect.fn('CmsNuxtModule.registerStudioApp')(function* () {\n const fileSystem = yield* FileSystem.FileSystem\n const shellPath = resolver.resolve('../dist/studio/index.html')\n if (!(yield* fileSystem.exists(shellPath))) {\n return yield* new StudioApplicationMissing()\n }\n const shell = yield* fileSystem.readFileString(shellPath)\n const handler = addServerTemplate({\n filename: resolver.resolve('./runtime/studio-app.virtual.mjs'),\n getContents: () =>\n [\n `import { createStudioAppHandler } from ${JSON.stringify(resolver.resolve('./runtime/studio-app'))}`,\n `export default createStudioAppHandler(${JSON.stringify(shell)})`,\n ].join('\\n'),\n })\n addServerHandler({ handler: handler.filename, method: 'get', route: STUDIO_APP_PATH })\n addServerHandler({ handler: handler.filename, method: 'get', route: `${STUDIO_APP_PATH}/**:path` })\n})\n\nfunction configureNitro(nuxt: Nuxt, assetsPath: string): void {\n nuxt.hook('nitro:config', (config: NitroConfig) => {\n config.experimental ||= {}\n config.experimental.websocket = true\n config.publicAssets ||= []\n config.publicAssets.push({\n baseURL: `${STUDIO_APP_PATH}/assets`,\n dir: assetsPath,\n maxAge: nuxt.options.dev ? 0 : 60 * 60 * 24 * 365,\n })\n config.routeRules ||= {}\n config.routeRules[STUDIO_BASE_PATH] = { redirect: { statusCode: 302, to: STUDIO_APP_PATH } }\n })\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Module.js","names":[],"sources":["../../../src/Module.ts"],"sourcesContent":["import type { HookResult, Nuxt } from '@nuxt/schema'\nimport type { NitroConfig } from 'nitropack/types'\nimport { registerStudioApp } from './internal/studio-app'\nimport { registerAuthoringCatalog } from './internal/authoring-catalog'\nimport { NodeCrypto, NodeFileSystem, NodePath } from '@effect/platform-node-shared'\nimport {\n CMS_AUTHENTICATION_PATH,\n STUDIO_APP_PATH,\n STUDIO_BASE_PATH,\n STUDIO_API_PATH,\n STUDIO_HEALTH_PATH,\n STUDIO_COLLABORATION_PATH,\n} from '@internal/protocol/HttpPaths'\nimport {\n addTemplate,\n addTypeTemplate,\n addComponent,\n addImports,\n addPlugin,\n addServerHandler,\n addServerPlugin,\n addServerTemplate,\n addVitePlugin,\n createResolver,\n defineNuxtModule,\n extendPages,\n} from '@nuxt/kit'\nimport { Effect, Layer } from 'effect'\nimport { loadCmsConfiguration } from './internal/cms-config'\nimport { compileCmsConfiguration } from './internal/configuration'\nimport { cmsAuthoringPlugin } from './internal/authoring-compiler'\n\nconst CMS_SITEMAP_SOURCE_PATH = `${STUDIO_BASE_PATH}/sitemap`\n\ndeclare module '@nuxt/schema' {\n interface NuxtHooks {\n 'nitro:config': (nitroConfig: NitroConfig) => HookResult\n }\n}\n\nconst resolver = createResolver(import.meta.url)\n\nconst nodeLayer = Layer.merge(NodeCrypto.layer, Layer.merge(NodeFileSystem.layer, NodePath.layer))\n\nconst cmsNuxtModule = defineNuxtModule({\n moduleDependencies: {\n '@nuxtjs/robots': {},\n '@nuxtjs/sitemap': {},\n '@comark/nuxt': {},\n 'nuxt-schema-org': {},\n 'nuxt-seo-utils': {},\n },\n meta: {\n compatibility: { nuxt: '>=4.5.0 <5.0.0' },\n name: '@phtngyn/cms',\n },\n setup(_options, nuxt) {\n return Effect.runPromise(setupModule(nuxt).pipe(Effect.provide(nodeLayer)))\n },\n})\n\nexport default cmsNuxtModule\n\nconst setupModule = Effect.fn('CmsNuxtModule.setup')(function* (nuxt: Nuxt) {\n addVitePlugin(cmsAuthoringPlugin())\n const authored = yield* loadCmsConfiguration(nuxt.options.rootDir)\n const initialSources = yield* Effect.promise(() => Promise.resolve(authored.configuration.initialSources?.() ?? []))\n const compiled = compileCmsConfiguration(authored.configuration, initialSources)\n const i18n = compiled.i18n\n\n configureSitemap(nuxt.options)\n\n const i18nTemplate = addTemplate({\n filename: 'cms/i18n.mjs',\n write: true,\n getContents: () => `export default JSON.parse(${JSON.stringify(JSON.stringify(i18n))})`,\n })\n\n nuxt.options.alias['#cms/i18n'] = i18nTemplate.dst\n const messageKeys = [...new Set(Object.values(i18n.locales).flatMap((locale) => Object.keys(locale.messages)))]\n addTypeTemplate({\n filename: 'types/cms-i18n.d.ts',\n getContents: () =>\n `import '@phtngyn/cms/I18n'\\ndeclare module '@phtngyn/cms/I18n' { interface CmsI18nRegistry { messageKey: ${messageKeys.map((key) => JSON.stringify(key)).join(' | ') || 'string'} } }`,\n })\n nuxt.options.watch.push(authored.path)\n\n const authoring = yield* registerAuthoringCatalog(\n nuxt,\n compiled.documents,\n Object.fromEntries(\n Object.entries(authored.configuration.forms ?? {}).map(([name, form]) => [name, form.definition]),\n ),\n )\n\n const installationPluginId = resolver.resolve('./runtime/plugin.virtual.mjs')\n\n const installationPluginTemplate = addServerTemplate({\n filename: installationPluginId,\n getContents: () =>\n [\n `import { createInstallationPlugin } from ${JSON.stringify(resolver.resolve('./runtime/plugin'))}`,\n `import cmsConfiguration from ${JSON.stringify(authored.path)}`,\n `import authoring from ${JSON.stringify(authoring.dst)}`,\n `export default createInstallationPlugin(cmsConfiguration, authoring, ${JSON.stringify(compiled.initialSources)})`,\n ].join('\\n'),\n })\n\n addServerHandler({ handler: resolver.resolve('./runtime/api'), route: `${STUDIO_HEALTH_PATH}/**:path` })\n addServerHandler({ handler: resolver.resolve('./runtime/sitemap'), route: CMS_SITEMAP_SOURCE_PATH })\n registerDeliveryUi(nuxt)\n yield* registerStudioApp(nuxt, resolver)\n configureNitro(nuxt)\n addServerPlugin(installationPluginTemplate.filename)\n addServerHandler({\n handler: resolver.resolve('./runtime/api'),\n route: `${CMS_AUTHENTICATION_PATH}/**:path`,\n })\n addServerHandler({\n handler: resolver.resolve('./runtime/collaboration'),\n route: STUDIO_COLLABORATION_PATH,\n })\n addServerHandler({\n handler: resolver.resolve('./runtime/api'),\n route: `${STUDIO_API_PATH}/**:path`,\n })\n})\n\ninterface CmsSitemapConfiguration {\n sources?: Array<unknown>\n}\n\ninterface CmsNuxtSitemapOptions {\n readonly modules?: unknown\n sitemap?: false | CmsSitemapConfiguration\n}\n\nfunction configureSitemap(options: CmsNuxtSitemapOptions): void {\n if (options.sitemap === false) return\n\n const sitemap = options.sitemap ?? {}\n const sources = sitemap.sources ?? []\n\n if (!sources.includes(CMS_SITEMAP_SOURCE_PATH)) sitemap.sources = [...sources, CMS_SITEMAP_SOURCE_PATH]\n\n options.sitemap = sitemap\n}\n\nfunction registerDeliveryUi(nuxt: Nuxt): void {\n addPlugin(resolver.resolve('./runtime/blocks'))\n nuxt.options.css.push(resolver.resolve('./runtime/preview/preview.css'))\n addComponent({ name: 'DocumentField', filePath: resolver.resolve('./runtime/delivery/DocumentField') })\n addComponent({ name: 'DocumentRenderer', filePath: resolver.resolve('./runtime/delivery/DocumentRenderer') })\n addComponent({ name: 'DocumentScope', filePath: resolver.resolve('./runtime/delivery/DocumentScope') })\n addComponent({\n name: 'CmsStudioPreviewMarker',\n filePath: resolver.resolve('./runtime/preview/CmsStudioPreviewMarker'),\n })\n addPlugin(resolver.resolve('./runtime/delivery/plugin'))\n addPlugin(resolver.resolve('./runtime/preview/plugin.client'))\n addImports([\n { name: 'useCmsI18n', from: resolver.resolve('./runtime/i18n/useCmsI18n') },\n { name: 'useCmsForm', from: resolver.resolve('./runtime/forms/useCmsForm') },\n { name: 'useCmsDocumentSeo', from: resolver.resolve('./runtime/delivery/useCmsDocumentSeo') },\n { name: 'useDocument', from: resolver.resolve('./runtime/delivery/useDocument') },\n { name: 'useDocumentQuery', from: resolver.resolve('./runtime/delivery/useDocumentQuery') },\n ])\n extendPages((pages) => {\n pages.push({\n file: resolver.resolve('./runtime/delivery/document'),\n name: 'cms-document-page',\n path: '/:contentPath(.*)*',\n })\n })\n}\n\nfunction configureNitro(nuxt: Nuxt): void {\n nuxt.hook('nitro:config', (config: NitroConfig) => {\n config.experimental ||= {}\n config.experimental.websocket = true\n config.routeRules ||= {}\n const studioRules = { ssr: false, headers: { 'cache-control': 'no-store' } }\n config.routeRules[`${STUDIO_APP_PATH}/**`] = studioRules\n config.routeRules[STUDIO_APP_PATH] = studioRules\n\n config.routeRules[STUDIO_BASE_PATH] = { redirect: { statusCode: 302, to: STUDIO_APP_PATH } }\n })\n}\n"],"mappings":"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"}
|