@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.
Files changed (181) hide show
  1. package/README.md +260 -6
  2. package/package.json +31 -16
  3. package/src/Authoring.d.ts +13 -1
  4. package/src/Configuration-Br7tE9Qt.d.ts +68 -0
  5. package/src/{AuthoringSchema-BQ5kbhVB.js → Configuration-CA_jvQKG.js} +599 -492
  6. package/src/Configuration-CA_jvQKG.js.map +1 -0
  7. package/src/Configuration.d.ts +2 -44
  8. package/src/Configuration.js +0 -1
  9. package/src/Configuration.js.map +1 -1
  10. package/src/{DocumentEngine-Da0kWotL.js → DocumentEngine-CgiBQU4g.js} +110 -84
  11. package/src/DocumentEngine-CgiBQU4g.js.map +1 -0
  12. package/src/DocumentModel-BB9igGC7.d.ts +34 -0
  13. package/src/DocumentModel.d.ts +2 -30
  14. package/src/DocumentModel.js +13 -3
  15. package/src/DocumentModel.js.map +1 -1
  16. package/src/Forms-BsJMev5_.d.ts +74 -0
  17. package/src/Forms-CfcI3tPU.js +79 -0
  18. package/src/Forms-CfcI3tPU.js.map +1 -0
  19. package/src/Forms-DxbkU3_5.js +367 -0
  20. package/src/Forms-DxbkU3_5.js.map +1 -0
  21. package/src/Forms.d.ts +35 -0
  22. package/src/Forms.js +13 -0
  23. package/src/Forms.js.map +1 -0
  24. package/src/HttpPaths-c9nLZ9H2.js +21 -0
  25. package/src/HttpPaths-c9nLZ9H2.js.map +1 -0
  26. package/src/I18n-DZK4CkJF.d.ts +21 -0
  27. package/src/I18n.d.ts +2 -0
  28. package/src/I18n.js +1 -0
  29. package/src/Module.js +78 -81
  30. package/src/Module.js.map +1 -1
  31. package/src/S3MediaObjects-JKMAWyVB.js +2664 -0
  32. package/src/S3MediaObjects-JKMAWyVB.js.map +1 -0
  33. package/src/Seed.d.ts +6 -0
  34. package/src/Seed.js +34 -0
  35. package/src/Seed.js.map +1 -0
  36. package/src/Seo-402YumpT.d.ts +198 -0
  37. package/src/{connection-ZGtL54qY.js → connection-B-iz0Y9Y.js} +5 -7
  38. package/src/connection-B-iz0Y9Y.js.map +1 -0
  39. package/src/{installation-BNKaVjni.js → installation-DgF2M1gL.js} +1162 -2147
  40. package/src/installation-DgF2M1gL.js.map +1 -0
  41. package/src/internal/authoring-catalog.js +153 -0
  42. package/src/internal/authoring-catalog.js.map +1 -0
  43. package/src/internal/authoring-compiler.js +2 -2
  44. package/src/internal/authoring-compiler.js.map +1 -1
  45. package/src/internal/authoring-metadata.js +68 -49
  46. package/src/internal/authoring-metadata.js.map +1 -1
  47. package/src/internal/cms-config.js +0 -1
  48. package/src/internal/cms-config.js.map +1 -1
  49. package/src/internal/configuration.js +25 -13
  50. package/src/internal/configuration.js.map +1 -1
  51. package/src/internal/document-model.js +66 -20
  52. package/src/internal/document-model.js.map +1 -1
  53. package/src/internal/form-capabilities.js +12 -0
  54. package/src/internal/form-capabilities.js.map +1 -0
  55. package/src/internal/i18n.js +47 -0
  56. package/src/internal/i18n.js.map +1 -0
  57. package/src/internal/studio-app.js +66 -0
  58. package/src/internal/studio-app.js.map +1 -0
  59. package/src/location-CFKTeK1K.js +35 -0
  60. package/src/location-CFKTeK1K.js.map +1 -0
  61. package/src/{metadata-Czvi3E4K.js → metadata-BEZPWh-3.js} +3 -72
  62. package/src/metadata-BEZPWh-3.js.map +1 -0
  63. package/src/{models-DS5ClMsH.js → models-BWm1pTAf.js} +9 -31
  64. package/src/models-BWm1pTAf.js.map +1 -0
  65. package/src/models-DwYioyNV.js +726 -0
  66. package/src/models-DwYioyNV.js.map +1 -0
  67. package/src/runtime/blocks.js +30 -0
  68. package/src/runtime/blocks.js.map +1 -0
  69. package/src/runtime/collaboration.js +9 -4
  70. package/src/runtime/collaboration.js.map +1 -1
  71. package/src/runtime/delivery/DocumentRenderer.js +10 -4
  72. package/src/runtime/delivery/DocumentRenderer.js.map +1 -1
  73. package/src/runtime/delivery/blocks.js +8 -0
  74. package/src/runtime/delivery/blocks.js.map +1 -0
  75. package/src/runtime/delivery/context.js +12 -0
  76. package/src/runtime/delivery/context.js.map +1 -0
  77. package/src/runtime/delivery/document-page.js +14 -12
  78. package/src/runtime/delivery/document-page.js.map +1 -1
  79. package/src/runtime/delivery/document.js +21 -3
  80. package/src/runtime/delivery/document.js.map +1 -1
  81. package/src/runtime/delivery/error.js +11 -0
  82. package/src/runtime/delivery/error.js.map +1 -0
  83. package/src/runtime/delivery/plugin.js +41 -0
  84. package/src/runtime/delivery/plugin.js.map +1 -0
  85. package/src/runtime/delivery/types.d.ts +5 -0
  86. package/src/runtime/delivery/useCmsDocumentSeo.d.ts +56 -0
  87. package/src/runtime/delivery/useCmsDocumentSeo.js +99 -0
  88. package/src/runtime/delivery/useCmsDocumentSeo.js.map +1 -0
  89. package/src/runtime/delivery/useDocument.js +5 -2
  90. package/src/runtime/delivery/useDocument.js.map +1 -1
  91. package/src/runtime/delivery/useDocumentQuery.js +5 -2
  92. package/src/runtime/delivery/useDocumentQuery.js.map +1 -1
  93. package/src/runtime/forms/document.js +38 -0
  94. package/src/runtime/forms/document.js.map +1 -0
  95. package/src/runtime/forms/useCmsForm.js +149 -0
  96. package/src/runtime/forms/useCmsForm.js.map +1 -0
  97. package/src/runtime/i18n/translator.js +22 -0
  98. package/src/runtime/i18n/translator.js.map +1 -0
  99. package/src/runtime/i18n/useCmsI18n.d.ts +9 -0
  100. package/src/runtime/i18n/useCmsI18n.js +29 -0
  101. package/src/runtime/i18n/useCmsI18n.js.map +1 -0
  102. package/src/runtime/installation.js +1 -1
  103. package/src/runtime/plugin.js +3 -3
  104. package/src/runtime/plugin.js.map +1 -1
  105. package/src/runtime/preview/comark-document.js +0 -1
  106. package/src/runtime/preview/comark-document.js.map +1 -1
  107. package/src/runtime/preview/connection.js +1 -1
  108. package/src/runtime/preview/controller.js +37 -11
  109. package/src/runtime/preview/controller.js.map +1 -1
  110. package/src/runtime/preview/overlay.js +65 -0
  111. package/src/runtime/preview/overlay.js.map +1 -0
  112. package/src/runtime/preview/plugin.client.js +59 -61
  113. package/src/runtime/preview/plugin.client.js.map +1 -1
  114. package/src/runtime/preview/preview.css +72 -4
  115. package/src/runtime/preview/protocol.js.map +1 -1
  116. package/src/runtime/preview/store.js +1 -1
  117. package/src/runtime/preview/targets.js +0 -1
  118. package/src/runtime/preview/targets.js.map +1 -1
  119. package/src/runtime/sitemap-entries.js +17 -0
  120. package/src/runtime/sitemap-entries.js.map +1 -0
  121. package/src/runtime/sitemap.js +24 -0
  122. package/src/runtime/sitemap.js.map +1 -0
  123. package/src/runtime/studio-app.js +5 -1
  124. package/src/runtime/studio-app.js.map +1 -1
  125. package/src/runtime/studio-entry.js +36 -0
  126. package/src/runtime/studio-entry.js.map +1 -0
  127. package/src/runtime/studio-navigation.js +11 -0
  128. package/src/runtime/studio-navigation.js.map +1 -0
  129. package/src/scalars-B2lgGUnj.js +26 -0
  130. package/src/scalars-B2lgGUnj.js.map +1 -0
  131. package/src/{store-Nl4uxEXx.js → store-DjJs3I7k.js} +12 -7
  132. package/src/store-DjJs3I7k.js.map +1 -0
  133. package/studio/CreateDocumentDialog-CTeIFlPb.js +256 -0
  134. package/studio/collaboration-DcK2F6v9.js +4566 -0
  135. package/studio/documentPlanning-Bfv-d7OU.js +29820 -0
  136. package/studio/dom-to-image-more.min-D6jGGdrW.js +877 -0
  137. package/studio/editor-Bzlh3zXt.js +30827 -0
  138. package/studio/host.css +3 -0
  139. package/studio/host.js +46614 -0
  140. package/studio/rolldown-runtime-B0aSnxlc.js +20 -0
  141. package/dist/studio/assets/ActivityEntryRow-D--fRvWI.js +0 -1
  142. package/dist/studio/assets/ActivityView-D-XBBUHb.js +0 -1
  143. package/dist/studio/assets/CreateDocumentDialog-CH8UH1QM.js +0 -1
  144. package/dist/studio/assets/DocumentsView-CxRpmAxt.js +0 -34
  145. package/dist/studio/assets/DropdownMenu-BSb1l7fr.js +0 -1
  146. package/dist/studio/assets/Input-DVao38h7.js +0 -3
  147. package/dist/studio/assets/MediaView-BHrPIjxB.js +0 -1
  148. package/dist/studio/assets/Modal-VNrXGa5C.js +0 -1
  149. package/dist/studio/assets/OverviewView-DfP6-mLZ.js +0 -1
  150. package/dist/studio/assets/Select-BJZIs9sY.js +0 -1
  151. package/dist/studio/assets/SettingsView-CerHe-ua.js +0 -1
  152. package/dist/studio/assets/Skeleton-CWJNi3nS.js +0 -1
  153. package/dist/studio/assets/StudioPageHeader-DP9HDAF2.js +0 -1
  154. package/dist/studio/assets/UsersView-cP3REkH2.js +0 -1
  155. package/dist/studio/assets/collaboration-BLnCzfvV.js +0 -4
  156. package/dist/studio/assets/context-dY4fNbn3.js +0 -1
  157. package/dist/studio/assets/editor-CE07wW83.js +0 -137
  158. package/dist/studio/assets/gateway-BAyQgCse.js +0 -10
  159. package/dist/studio/assets/index-CjoaPLhZ.js +0 -28
  160. package/dist/studio/assets/index-s2rPqCmP.css +0 -2
  161. package/dist/studio/assets/render-BkxbK2St.js +0 -83
  162. package/dist/studio/assets/rolldown-runtime-DK3Fl9T5.js +0 -1
  163. package/dist/studio/assets/useMediaLibrary-D7qR7aBf.js +0 -1
  164. package/dist/studio/index.html +0 -76
  165. package/src/AuthoringSchema-BQ5kbhVB.js.map +0 -1
  166. package/src/Configuration-BGYFD2N1.js +0 -150
  167. package/src/Configuration-BGYFD2N1.js.map +0 -1
  168. package/src/DocumentEngine-Da0kWotL.js.map +0 -1
  169. package/src/HttpPaths-86qLGB90.js +0 -15
  170. package/src/HttpPaths-86qLGB90.js.map +0 -1
  171. package/src/StudioHttp-BTLLooh0.js +0 -916
  172. package/src/StudioHttp-BTLLooh0.js.map +0 -1
  173. package/src/connection-ZGtL54qY.js.map +0 -1
  174. package/src/installation-BNKaVjni.js.map +0 -1
  175. package/src/internal/component-metadata.js +0 -37
  176. package/src/internal/component-metadata.js.map +0 -1
  177. package/src/metadata-Czvi3E4K.js.map +0 -1
  178. package/src/models-Citx8jBi.js +0 -306
  179. package/src/models-Citx8jBi.js.map +0 -1
  180. package/src/models-DS5ClMsH.js.map +0 -1
  181. package/src/store-Nl4uxEXx.js.map +0 -1
package/src/Module.js CHANGED
@@ -1,24 +1,24 @@
1
- import { c as STUDIO_BASE_PATH, l as STUDIO_COLLABORATION_PATH, s as STUDIO_APP_PATH, t as CMS_AUTHENTICATION_PATH } from "./HttpPaths-86qLGB90.js";
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 { cmsAuthoringPlugin } from "./internal/authoring-compiler.js";
5
- import { resolveBlockAuthoring } from "./internal/authoring-metadata.js";
6
- import { createCheckerByJson } from "vue-component-meta";
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-component-meta": { overrides: {
19
- exclude: [/(?:^|[\\/])node_modules[\\/]/u],
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 runAuthoring = Effect.runPromiseWith(yield* Effect.context());
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
- "import components from '#nuxt-component-meta/nitro'",
72
- `export default createInstallationPlugin(cmsConfiguration, components, ${JSON.stringify(compiled.initialSources)}, ${JSON.stringify(authoring)})`
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
- const shellPath = resolver.resolve("../dist/studio/index.html");
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: `${STUDIO_BASE_PATH}/**:path`
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
- name: "useDocument",
114
- from: resolver.resolve("./runtime/delivery/useDocument")
115
- }, {
116
- name: "useDocumentQuery",
117
- from: resolver.resolve("./runtime/delivery/useDocumentQuery")
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
- const registerStudioApp = Effect.fn("CmsNuxtModule.registerStudioApp")(function* () {
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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"}