@nuxtjs/prismic 3.2.0 → 3.3.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.
Files changed (48) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +7 -7
  3. package/dist/client/200.html +11 -11
  4. package/dist/client/404.html +11 -11
  5. package/dist/client/_nuxt/{BFN9l5Uh.js → B4G-IZst.js} +1 -1
  6. package/dist/client/_nuxt/BXaKOz4R.js +2 -0
  7. package/dist/client/_nuxt/Bn9u41Uw.js +1 -0
  8. package/dist/client/_nuxt/CpxYXSTt.js +1 -0
  9. package/dist/client/_nuxt/D2P5wF0N.js +1 -0
  10. package/dist/client/_nuxt/DCUMl-h9.js +24 -0
  11. package/dist/client/_nuxt/builds/latest.json +1 -1
  12. package/dist/client/_nuxt/builds/meta/b4ff1650-3078-42bf-9480-8e22df1ac51e.json +1 -0
  13. package/dist/client/_nuxt/entry.CtO0E-QA.css +1 -0
  14. package/dist/client/_nuxt/error-404.luvduoeL.css +1 -0
  15. package/dist/client/_nuxt/error-500.C5gpBh_R.css +1 -0
  16. package/dist/client/_nuxt/index.14_QEbrK.css +1 -0
  17. package/dist/client/index.html +11 -11
  18. package/dist/module.json +6 -2
  19. package/dist/module.mjs +55 -18
  20. package/{src/runtime/preview.vue → dist/runtime/PrismicPreview.vue} +4 -22
  21. package/dist/runtime/plugin.client.d.ts +0 -2
  22. package/dist/runtime/{plugin.client.mjs → plugin.client.js} +1 -1
  23. package/dist/runtime/plugin.d.ts +0 -2
  24. package/dist/types.d.mts +40 -0
  25. package/dist/types.d.ts +40 -0
  26. package/package.json +34 -37
  27. package/src/devtools/index.ts +16 -14
  28. package/src/devtools/types.ts +6 -6
  29. package/src/lib/fileExists.ts +2 -1
  30. package/src/module.ts +87 -28
  31. package/{dist/runtime/preview.vue → src/runtime/PrismicPreview.vue} +3 -2
  32. package/src/runtime/plugin.client.ts +1 -1
  33. package/src/runtime/plugin.ts +15 -14
  34. package/src/runtime/usePrismicPreview.ts +1 -1
  35. package/src/types.ts +9 -9
  36. package/dist/client/_nuxt/C28ItRAc.js +0 -1
  37. package/dist/client/_nuxt/C2Zksehh.js +0 -1
  38. package/dist/client/_nuxt/Cc-k9tLd.js +0 -1
  39. package/dist/client/_nuxt/DWOr2Aml.js +0 -29
  40. package/dist/client/_nuxt/DiRqOYkY.js +0 -2
  41. package/dist/client/_nuxt/builds/meta/ad9d6ff8-05cb-4470-a389-47d551f276c8.json +0 -1
  42. package/dist/client/_nuxt/builds/meta/dev.json +0 -1
  43. package/dist/client/_nuxt/entry.CDGvsxww.css +0 -1
  44. package/dist/client/_nuxt/error-404.CA6XZ6nY.css +0 -1
  45. package/dist/client/_nuxt/error-500.DPwYA3kH.css +0 -1
  46. package/dist/client/_nuxt/index.ofkS6DTB.css +0 -1
  47. /package/dist/runtime/{plugin.mjs → plugin.js} +0 -0
  48. /package/dist/runtime/{usePrismicPreview.mjs → usePrismicPreview.js} +0 -0
package/dist/module.mjs CHANGED
@@ -1,8 +1,9 @@
1
1
  import { join } from 'node:path';
2
+ import { readFile } from 'node:fs/promises';
3
+ import { existsSync } from 'node:fs';
2
4
  import { defu } from 'defu';
3
- import { defineNuxtModule, createResolver, addPlugin, addComponent, addImports, extendPages, addTemplate } from '@nuxt/kit';
5
+ import { defineNuxtModule, getNuxtVersion, createResolver, addPlugin, addComponent, addImports, extendPages, addTemplate } from '@nuxt/kit';
4
6
  import * as prismicVue from '@prismicio/vue';
5
- import { existsSync } from 'node:fs';
6
7
  import { onDevToolsInitialized, extendServerRpc, startSubprocess } from '@nuxt/devtools-kit';
7
8
  import { resolve } from 'pathe';
8
9
  import terminate from 'terminate';
@@ -64,7 +65,7 @@ const setupDevToolsUI = (nuxt, resolver) => {
64
65
  async getSlicemachineConfig() {
65
66
  const configPath = resolve(nuxt.options.rootDir, "slicemachine.config.json");
66
67
  if (existsSync(configPath)) {
67
- return await import(configPath);
68
+ return JSON.parse(await readFile(configPath, "utf-8"));
68
69
  }
69
70
  return null;
70
71
  },
@@ -126,21 +127,33 @@ const module = defineNuxtModule({
126
127
  meta: {
127
128
  name: "@nuxtjs/prismic",
128
129
  configKey: "prismic",
129
- compatibility: { nuxt: "^3.7.0" }
130
+ compatibility: { nuxt: ">=3.7.0" }
131
+ },
132
+ defaults: (nuxt) => {
133
+ let prismicFiles = {
134
+ client: "~/app/prismic/client",
135
+ linkResolver: "~/app/prismic/linkResolver",
136
+ richTextSerializer: "~/app/prismic/richTextSerializer"
137
+ };
138
+ if (nuxt.options?.future?.compatibilityVersion === 4 || getNuxtVersion(nuxt).startsWith("4")) {
139
+ prismicFiles = {
140
+ client: "~/prismic/client",
141
+ linkResolver: "~/prismic/linkResolver",
142
+ richTextSerializer: "~/prismic/richTextSerializer"
143
+ };
144
+ }
145
+ return {
146
+ endpoint: "",
147
+ environment: "",
148
+ clientConfig: {},
149
+ ...prismicFiles,
150
+ injectComponents: true,
151
+ components: {},
152
+ preview: "/preview",
153
+ toolbar: true,
154
+ devtools: true
155
+ };
130
156
  },
131
- defaults: (_nuxt) => ({
132
- endpoint: "",
133
- environment: "",
134
- clientConfig: {},
135
- client: "~/app/prismic/client",
136
- linkResolver: "~/app/prismic/linkResolver",
137
- richTextSerializer: "~/app/prismic/richTextSerializer",
138
- injectComponents: true,
139
- components: {},
140
- preview: "/preview",
141
- toolbar: true,
142
- devtools: true
143
- }),
144
157
  hooks: {},
145
158
  setup(options, nuxt) {
146
159
  nuxt.options.runtimeConfig.public ||= {};
@@ -222,7 +235,7 @@ const module = defineNuxtModule({
222
235
  name: "prismic-preview",
223
236
  path: moduleOptions.preview,
224
237
  // Checked before
225
- file: resolver.resolve("runtime/preview.vue")
238
+ file: resolver.resolve("runtime/PrismicPreview.vue")
226
239
  });
227
240
  });
228
241
  }
@@ -230,6 +243,30 @@ const module = defineNuxtModule({
230
243
  logger.warn("`toolbar` option is disabled but `preview` is enabled. Previews won't work unless you manually load the toolbar.");
231
244
  }
232
245
  }
246
+ nuxt.hook("eslint:config:addons", (addons) => {
247
+ addons.push({
248
+ name: "@nuxtjs/prismic",
249
+ async getConfigs() {
250
+ const configPath = resolver.resolve(nuxt.options.rootDir, "slicemachine.config.json");
251
+ const configs = [];
252
+ try {
253
+ if (existsSync(configPath)) {
254
+ const config = JSON.parse(await readFile(configPath, "utf-8"));
255
+ if (config && "slices" in config && Array.isArray(config.slices)) {
256
+ configs.push(JSON.stringify({
257
+ files: config.slices.map((slice) => `${slice.replace("./", "")}/**/index.vue`),
258
+ rules: {
259
+ "vue/multi-word-component-names": "off"
260
+ }
261
+ }));
262
+ }
263
+ }
264
+ } catch (error) {
265
+ }
266
+ return { configs };
267
+ }
268
+ });
269
+ });
233
270
  }
234
271
  });
235
272
 
@@ -3,7 +3,8 @@
3
3
  <figure>
4
4
  <img
5
5
  src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNDAiIGhlaWdodD0iMzYiPgogIDxwYXRoIGZpbGw9IiMyMTI3MzUiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTM1LjUzOCAxOC43NGwtMi42NTUtMi42NmExLjEyNiAxLjEyNiAwIDAgMS0uMzI5LS43OTZ2LTMuMjU2YzAtMy4wMDktLjMxMy00LjEtLjktNS4yYTYuMTI3IDYuMTI3IDAgMCAwLTIuNTQ2LTIuNTUxYy0xLjA5Ny0uNTg5LTIuMTg2LS45MDItNS4xODgtLjkwMmgtNC4yOTVhLjIyNS4yMjUgMCAwIDEtLjE1OC0uMzg0TDIyLjEyMi4zM2MuMjEtLjIxMS40OTYtLjMzLjc5NC0uMzNoMS40OTNjNC4wMDMgMCA1LjQ1NS40MTggNi45MTkgMS4yMDJhOC4xNjkgOC4xNjkgMCAwIDEgMy4zOTQgMy40MDJjLjc4MyAxLjQ2NyAxLjIgMi45MjIgMS4yIDYuOTMzdjcuMDQ1YS4yMjUuMjI1IDAgMCAxLS4zODQuMTU5ek0xNy4yMjIgMzUuNjE3bDIuNjU1LTIuNjYxYy4yMS0uMjExLjQ5Ni0uMzMuNzk0LS4zM2gzLjI0OWMzLjAwMiAwIDQuMDktLjMxMyA1LjE4OC0uOTAyYTYuMTI3IDYuMTI3IDAgMCAwIDIuNTQ2LTIuNTUxYy41ODctMS4xLjktMi4xOTEuOS01LjJ2LTQuMzA0YS4yMjUuMjI1IDAgMCAxIC4zODMtLjE1OWwyLjY1NiAyLjY2MWMuMjEuMjExLjMyOS40OTguMzI5Ljc5NnYxLjQ5N2MwIDQuMDExLS40MTcgNS40NjYtMS4yIDYuOTMzYTguMTY5IDguMTY5IDAgMCAxLTMuMzk0IDMuNDAyQzI5Ljg2NCAzNS41ODIgMjguNDEyIDM2IDI0LjQwOSAzNkgxNy4zOGEuMjI1LjIyNSAwIDAgMS0uMTU4LS4zODR6TS4zODMgMTcuMjU5TDMuMDQgMTkuOTJjLjIxLjIxMS4zMjkuNDk4LjMyOS43OTZ2My4yNTZjMCAzLjAwOS4zMTIgNC4xLjkgNS4yYTYuMTI3IDYuMTI3IDAgMCAwIDIuNTQ1IDIuNTUxYzEuMDk4LjU4OSAyLjE4Ny45MDIgNS4xODkuOTAyaDQuMjk0YS4yMjUuMjI1IDAgMCAxIC4xNi4zODRsLTIuNjU3IDIuNjYxYy0uMjEuMjExLS40OTYuMzMtLjc5My4zM2gtMS40OTRjLTQuMDAzIDAtNS40NTQtLjQxOC02LjkxOC0xLjIwMkE4LjE2OSA4LjE2OSAwIDAgMSAxLjIgMzEuMzk2Qy40MTcgMjkuOTI5IDAgMjguNDc0IDAgMjQuNDYzdi03LjA0NWEuMjI1LjIyNSAwIDAgMSAuMzgzLS4xNTl6TTE2LjA0NSAzLjA0NWMtLjIxMS4yMTEtLjQ5Ni4zMy0uNzk0LjMzaC0zLjI0OWMtMy4wMDIgMC00LjA5MS4zMTMtNS4xODkuOTAyYTYuMTI3IDYuMTI3IDAgMCAwLTIuNTQ2IDIuNTUxYy0uNTg3IDEuMS0uOSAyLjE5MS0uOSA1LjJ2NC4zMDRhLjIyNS4yMjUgMCAwIDEtLjM4My4xNTlMLjMzIDEzLjgzQTEuMTI2IDEuMTI2IDAgMCAxIDAgMTMuMDM0di0xLjQ5N2MwLTQuMDExLjQxNy01LjQ2NiAxLjItNi45MzNhOC4xNjkgOC4xNjkgMCAwIDEgMy4zOTQtMy40MDJDNi4wNTguNDE4IDcuNTEgMCAxMS41MTIgMGg3LjAzYS4yMjUuMjI1IDAgMCAxIC4xNTguMzg0bC0yLjY1NSAyLjY2MXptMTMuODg0IDEwLjA5MWwtMy42Mi0zLjQ2OGMtLjI0LS4yNC0uNTItLjQxNC0uODE5LS41MjNBMi4yMzYgMi4yMzYgMCAwIDAgMjQuNjk2IDlIMTQuMDFhLjIyNS4yMjUgMCAwIDEtLjE1OS0uMzg0bDIuNjU5LTIuNjYyYy4yMS0uMjEuNDk1LS4zMjkuNzkzLS4zMjloOC41MTZjMi40OCAwIDQuNDkgMi4wMTUgNC40OSA0LjV2Mi44NDlhLjIyNS4yMjUgMCAwIDEtLjM4LjE2MnptLTcuMTE1IDE2Ljg2MWwzLjQ2LTMuNjI5Yy4yNC0uMjQuNDE0LS41Mi41MjMtLjgyYTIuMjUgMi4yNSAwIDAgMCAuMTQ0LS43OTV2LTEwLjcxYS4yMjUuMjI1IDAgMCAxIC4zODQtLjE1OWwyLjY1NiAyLjY2NGMuMjEuMjExLjMyOC40OTcuMzI4Ljc5NnY4LjUzNGMwIDIuNDg1LTIuMDEgNC41LTQuNDkgNC41aC0yLjg0M2EuMjI1LjIyNSAwIDAgMS0uMTYyLS4zOHpNNS45OTIgMjIuODY0bDMuNjIyIDMuNDY4Yy4yMzkuMjQuNTIuNDE0LjgxOC41MjMuMjQ2LjA5NC41MTQuMTQ1Ljc5NC4xNDVoMTAuNjg2YS4yMjUuMjI1IDAgMCAxIC4xNTguMzg0bC0yLjY1OCAyLjY2MmMtLjIxLjIxLS40OTYuMzI5LS43OTMuMzI5aC04LjUxNmE0LjQ5NSA0LjQ5NSAwIDAgMS00LjQ5LTQuNXYtMi44NDlhLjIyNS4yMjUgMCAwIDEgLjM4LS4xNjJ6bTcuMTE2LTE2Ljg1OWwtMy40NjEgMy42M2MtLjI0LjI0LS40MTMuNTItLjUyMi44MmEyLjI1IDIuMjUgMCAwIDAtLjE0NS43OTV2MTAuNzFhLjIyNS4yMjUgMCAwIDEtLjM4My4xNThsLTIuNjU2LTIuNjY0YTEuMTI2IDEuMTI2IDAgMCAxLS4zMjgtLjc5NXYtOC41MzRjMC0yLjQ4NSAyLjAxLTQuNSA0LjQ5LTQuNWgyLjg0M2EuMjI1LjIyNSAwIDAgMSAuMTYyLjM4em0zMy4xMDUgNC4zNzloLjg2OGMuNTkzIDAgMS4wNzQuNDggMS4wNzQgMS4wNzR2MS4wMTZjMCAuMDMyLjAyNi4wNTcuMDU3LjA1Ny40OTUtLjg3NSAxLjE2LTEuNTEgMS45OTgtMS45MDlhNi4yMzYgNi4yMzYgMCAwIDEgMi43MS0uNTk2YzEuMDQ3IDAgMS45ODkuMTk0IDIuODI2LjU4Mi44MzcuMzg3IDEuNTUuOTIgMi4xNCAxLjU5NWE2Ljg5NiA2Ljg5NiAwIDAgMSAxLjM0IDIuMzg2Yy4zMDUuOTE1LjQ1NyAxLjkuNDU3IDIuOTUzYTguNzk1IDguNzk1IDAgMCAxLS40ODUgMi45NTMgNy40MTggNy40MTggMCAwIDEtMS4zNTUgMi4zODYgNi4yNjkgNi4yNjkgMCAwIDEtMi4wOTcgMS41OTUgNi4xODIgNi4xODIgMCAwIDEtMi42ODMuNTgyYy0uNjQ3IDAtMS4yMTctLjA3LTEuNzEyLS4yMDlhNS43NTEgNS43NTEgMCAwIDEtMS4zMTItLjUzNyA1LjI1MiA1LjI1MiAwIDAgMS0uOTctLjcgNS4wMTIgNS4wMTIgMCAwIDEtLjY1Ny0uNzMxLjA4Ni4wODYgMCAwIDAtLjA4Ni4wODV2Ny4yMjRhMS4zMSAxLjMxIDAgMCAxLTEuMzEgMS4zMWgtLjgwM2ExLjMxIDEuMzEgMCAwIDEtMS4zMS0xLjMxVjExLjY5NGMwLS43MjMuNTg2LTEuMzEgMS4zMS0xLjMxem0xMC4wNDYgNy4xNThjMC0uNTU3LS4wOS0xLjA5NC0uMjctMS42MWE0LjA3OCA0LjA3OCAwIDAgMC0uOC0xLjM3MyAzLjk5IDMuOTkgMCAwIDAtMS4yNy0uOTU0Yy0uNDk0LS4yMzktMS4wNTUtLjM1OC0xLjY4My0uMzU4LS42MjggMC0xLjE5LjEyLTEuNjg0LjM1OGEzLjk5IDMuOTkgMCAwIDAtMS4yNy45NTQgNC4wNzggNC4wNzggMCAwIDAtLjc5OSAxLjM3MiA0Ljg0NSA0Ljg0NSAwIDAgMC0uMjcgMS42MWMwIC41NTguMDkgMS4wOTQuMjcgMS42MTEuMTgxLjUxNy40NDcuOTc1LjggMS4zNzJhMy45OSAzLjk5IDAgMCAwIDEuMjcuOTU1Yy40OTQuMjM4IDEuMDU1LjM1OCAxLjY4My4zNTguNjI4IDAgMS4xODktLjEyIDEuNjgzLS4zNThhMy45OSAzLjk5IDAgMCAwIDEuMjctLjk1NWMuMzUyLS4zOTcuNjE4LS44NTUuOC0xLjM3Mi4xOC0uNTE3LjI3LTEuMDUzLjI3LTEuNjF6bTguMzU5LTcuMTU4aC45OGMuNjI2IDAgMS4xMzQuNTA3IDEuMTM0IDEuMTMzdjEuMDc3YzAgLjAzMS4wMjUuMDU3LjA1Ny4wNTcuMzgtLjgzNi45MjItMS40ODIgMS42MjYtMS45MzkuNzA0LS40NTcgMS41MTMtLjY4NiAyLjQyNi0uNjg2LjIwOSAwIC40MTQuMDIuNjEzLjA2YS43NjIuNzYyIDAgMCAxIC42MTQuNzQ3djEuOTY0YS43MTUuNzE1IDAgMCAxLS44NDIuNzA0IDQuNTggNC41OCAwIDAgMC0uODEzLS4wNzVjLS44IDAtMS40NDEuMTU0LTEuOTI2LjQ2Mi0uNDg1LjMwOS0uODU2LjY2MS0xLjExMyAxLjA2YTMuNiAzLjYgMCAwIDAtLjUxNCAxLjE5MmMtLjA4Ni4zOTgtLjEyOC42OTYtLjEyOC44OTV2Ni4zNTVhMS4zMSAxLjMxIDAgMCAxLTEuMzEgMS4zMWgtLjgwNGExLjMxIDEuMzEgMCAwIDEtMS4zMS0xLjMxVjExLjY5NGMwLS43MjMuNTg2LTEuMzEgMS4zMS0xLjMxem0xMS41ODUgMGguODA0Yy43MjMgMCAxLjMxLjU4NyAxLjMxIDEuMzFWMjMuMzlhMS4zMSAxLjMxIDAgMCAxLTEuMzEgMS4zMWgtLjgwNGExLjMxIDEuMzEgMCAwIDEtMS4zMS0xLjMxVjExLjY5NGMwLS43MjMuNTg2LTEuMzEgMS4zMS0xLjMxem0tMS43OTUtNC44NjJjMC0uNTc2LjIwNC0xLjA3OC42MTMtMS41MDYuNDEtLjQyNy45MjgtLjY0MSAxLjU1NS0uNjQxLjYyOCAwIDEuMTU2LjIwNCAxLjU4NC42MTEuNDI4LjQwOC42NDIuOTIuNjQyIDEuNTM2IDAgLjYxNy0uMjE0IDEuMTI5LS42NDIgMS41MzYtLjQyOC40MDgtLjk1Ni42MTItMS41ODQuNjEyLS42MjcgMC0xLjE0Ni0uMjE0LTEuNTU1LS42NDFhMi4xMDggMi4xMDggMCAwIDEtLjYxMy0xLjUwN3ptMTQuNzUzIDguMTMzYy0uNjk1LS41MS0xLjMxNC0uNzY2LTEuODU1LS43NjYtLjQ1NyAwLS45MDQuMTItMS4zNDIuMzU4LS40MzcuMjM5LS42NTYuNjI2LS42NTYgMS4xNjMgMCAuNDM4LjE4Ljc1Ni41NDIuOTU1LjM2Mi4xOTguODE4LjM2OCAxLjM3LjUwNy41NTIuMTM5IDEuMTQ2LjI4MyAxLjc4My40MzIuNjM4LjE1IDEuMjMyLjM3OCAxLjc4NC42ODYuNTUyLjMwOCAxLjAwOC43MyAxLjM3IDEuMjY4LjM2MS41MzcuNTQyIDEuMjcyLjU0MiAyLjIwNyAwIC44NTUtLjE3NiAxLjU3NS0uNTI4IDIuMTYyYTQuMjQxIDQuMjQxIDAgMCAxLTEuMzcgMS40MTcgNS45MjcgNS45MjcgMCAwIDEtMS44OTcuNzc1IDkuNTUzIDkuNTUzIDAgMCAxLTIuMTEyLjIzOWMtMS4wNjUgMC0yLjA0NS0uMTYtMi45NC0uNDc3LS4zNS0uMTI1LS43Ny0uMzc1LTEuMjYtLjc1MWExLjMxIDEuMzEgMCAwIDEtLjExOS0xLjk3NmwuMzU1LS4zNDhhMS4zMSAxLjMxIDAgMCAxIDEuNzgzLS4wNDhjLjIwOC4xODMuMzg4LjMyNC41NC40MjMuNTA0LjMyOSAxLjExOC40OTMgMS44NC40OTMuMjQ4IDAgLjUwNS0uMDMuNzcxLS4wOS4yNjctLjA2LjUxNC0uMTU5Ljc0Mi0uMjk4LjIyOC0uMTQuNDE0LS4zMTMuNTU3LS41MjIuMTQyLS4yMDkuMjE0LS40NTIuMjE0LS43MyAwLS40OTgtLjE4MS0uODY2LS41NDMtMS4xMDQtLjM2MS0uMjM5LS44MTgtLjQzMy0xLjM3LS41ODJhMjguNzQ2IDI4Ljc0NiAwIDAgMC0xLjc4My0uNDE3IDYuNzA3IDYuNzA3IDAgMCAxLTEuNzgzLS42MjcgMy43OTUgMy43OTUgMCAwIDEtMS4zNy0xLjIwOGMtLjM2MS0uNTE3LS41NDItMS4yMzMtLjU0Mi0yLjE0NyAwLS43OTUuMTU3LTEuNDg2LjQ3LTIuMDczYTQuMjY1IDQuMjY1IDAgMCAxIDEuMjQyLTEuNDQ2IDUuMjU2IDUuMjU2IDAgMCAxIDEuNzctLjgzNiA3Ljc3MyA3Ljc3MyAwIDAgMSAyLjAyNS0uMjY4Yy45MTMgMCAxLjgxNy4xNjQgMi43MTEuNDkyLjMyNC4xMTkuNjg1LjMzOSAxLjA4NC42NmExLjMxIDEuMzEgMCAwIDEgLjA3NSAxLjk3NWwtLjQyNi40MDFhMS4zMSAxLjMxIDAgMCAxLTEuNjc0LjEwMXptNy43ODctMy4yNzFoLjYzM2MuNzIzIDAgMS4zMS41ODcgMS4zMSAxLjMxdi45MjdhNS42MDIgNS42MDIgMCAwIDEgMS41MjctMS44MDVjLjY3NS0uNTI3IDEuNTgzLS43OSAyLjcyNS0uNzkgMi4xNSAwIDMuNTc2Ljg4NSA0LjI4IDIuNjU0LjQ5NS0uOTE0IDEuMTEzLTEuNTg1IDEuODU1LTIuMDEzLjc0Mi0uNDI3IDEuNjI2LS42NDEgMi42NTQtLjY0MS45MTMgMCAxLjY4My4xNTkgMi4zMTEuNDc3YTQuMDg0IDQuMDg0IDAgMCAxIDEuNTI3IDEuMzEyYy4zOS41NTcuNjcgMS4yMDguODQxIDEuOTU0LjE3Mi43NDYuMjU3IDEuNTQ2LjI1NyAyLjR2Ny4yMmExLjMxIDEuMzEgMCAwIDEtMS4zMSAxLjMxaC0uODA0YTEuMzEgMS4zMSAwIDAgMS0xLjMxLTEuMzF2LTYuODAyYzAtLjQzNy0uMDM4LS44Ni0uMTE0LTEuMjY3YTMuMTExIDMuMTExIDAgMCAwLS40LTEuMDc0IDIuMDYyIDIuMDYyIDAgMCAwLS43Ny0uNzNjLS4zMjQtLjE4LS43NDItLjI2OS0xLjI1Ni0uMjY5LS41MzIgMC0uOTg0LjEwNC0xLjM1NS4zMTNhMi42ODYgMi42ODYgMCAwIDAtLjkxMy44MzUgMy41MDggMy41MDggMCAwIDAtLjUxNCAxLjE5MyA1Ljk0IDUuOTQgMCAwIDAtLjE1NyAxLjM1N3Y2LjQ0NWExLjMxIDEuMzEgMCAwIDEtMS4zMSAxLjMxaC0uODA0YTEuMzEgMS4zMSAwIDAgMS0xLjMxLTEuMzF2LTcuMjJjMC0uODk1LS4xOC0xLjYwNi0uNTQyLTIuMTMzLS4zNjItLjUyNi0uOTYtLjc5LTEuNzk4LS43OS0uNTcgMC0xLjA1MS4xLTEuNDQxLjI5OC0uMzkuMi0uNzEzLjQ2OC0uOTcuODA2YTMuMjYgMy4yNiAwIDAgMC0uNTU3IDEuMTYzIDUuNDEzIDUuNDEzIDAgMCAwLS4xNyAxLjM3MnY2LjUwNGExLjMxIDEuMzEgMCAwIDEtMS4zMTEgMS4zMWgtLjgwNGExLjMxIDEuMzEgMCAwIDEtMS4zMS0xLjMxVjExLjY5NGMwLS43MjMuNTg3LTEuMzEgMS4zMS0xLjMxem0yNS40NTQgMGguODAzYy43MjQgMCAxLjMxLjU4NyAxLjMxIDEuMzFWMjMuMzlhMS4zMSAxLjMxIDAgMCAxLTEuMzEgMS4zMWgtLjgwM2ExLjMxIDEuMzEgMCAwIDEtMS4zMS0xLjMxVjExLjY5NGMwLS43MjMuNTg2LTEuMzEgMS4zMS0xLjMxem0tMS43OTYtNC44NjJjMC0uNTc2LjIwNS0xLjA3OC42MTQtMS41MDYuNDA5LS40MjcuOTI3LS42NDEgMS41NTUtLjY0MS42MjggMCAxLjE1Ni4yMDQgMS41ODQuNjExLjQyOC40MDguNjQyLjkyLjY0MiAxLjUzNiAwIC42MTctLjIxNCAxLjEyOS0uNjQyIDEuNTM2LS40MjguNDA4LS45NTYuNjEyLTEuNTg0LjYxMi0uNjI4IDAtMS4xNDYtLjIxNC0xLjU1NS0uNjQxYTIuMTA4IDIuMTA4IDAgMCAxLS42MTQtMS41MDd6bTE2Ljc1MSA4LjM3M2EzLjU2NCAzLjU2NCAwIDAgMC0uMzcxLS4yNiAyLjYwNyAyLjYwNyAwIDAgMC0xLjM0Mi0uMzg4Yy0uNjI3IDAtMS4xODkuMTItMS42ODMuMzU4YTMuOTkgMy45OSAwIDAgMC0xLjI3Ljk1NCA0LjA3OCA0LjA3OCAwIDAgMC0uNzk5IDEuMzcyIDQuODQ1IDQuODQ1IDAgMCAwLS4yNzEgMS42MWMwIC41NTguMDkgMS4wOTQuMjcxIDEuNjExLjE4LjUxNy40NDcuOTc1LjggMS4zNzJhMy45OSAzLjk5IDAgMCAwIDEuMjY5Ljk1NWMuNDk0LjIzOCAxLjA1Ni4zNTggMS42ODMuMzU4LjUzMyAwIDEuMDI4LS4xMTUgMS40ODQtLjM0My4wOTMtLjA0Ny4xOTMtLjExLjMtLjE4OWExLjMxIDEuMzEgMCAwIDEgMS43NTYuMTg1bC41Mi41ODRhMS4yNDggMS4yNDggMCAwIDEtLjMwNyAxLjkxIDcuOTggNy45OCAwIDAgMS0yLjY2OC45N2MtLjQxOS4wNjktLjc4LjEwNC0xLjA4NS4xMDRhNy45MDQgNy45MDQgMCAwIDEtMi45MS0uNTM3QTYuOTM4IDYuOTM4IDAgMCAxIDEzMC4zNjUgMjNhNy4yMyA3LjIzIDAgMCAxLTEuNTgzLTIuMzcxYy0uMzktLjkyNS0uNTg1LTEuOTU0LS41ODUtMy4wODcgMC0xLjEzMy4xOTUtMi4xNjIuNTg1LTMuMDg3YTcuMjMgNy4yMyAwIDAgMSAxLjU4My0yLjM3MSA2LjkzOCA2LjkzOCAwIDAgMSAyLjM2OS0xLjUyMSA3LjkwNCA3LjkwNCAwIDAgMSAyLjkxLS41MzdjLjg3NiAwIDEuNzU1LjE3NCAyLjY0LjUyMi4zMzcuMTMzLjczNS4zNyAxLjE5My43MTFhMS4zMSAxLjMxIDAgMCAxIC4xNjQgMS45NTdsLS41My41NTNhMS4zMSAxLjMxIDAgMCAxLTEuNzU0LjEyNnoiLz4KPC9zdmc+"
6
- alt="Prismic">
6
+ alt="Prismic"
7
+ >
7
8
  <figcaption>
8
9
  Loading preview...
9
10
  </figcaption>
@@ -15,31 +16,12 @@
15
16
  import { useHead, usePrismicPreview } from '#imports'
16
17
 
17
18
  useHead({
18
- title: 'Prismic Preview - Loading'
19
+ title: 'Prismic Preview - Loading',
19
20
  })
20
21
 
21
22
  usePrismicPreview()
22
23
  </script>
23
24
 
24
25
  <style scoped>
25
- .prismic-preview {
26
- width: 100%;
27
- height: 100vh;
28
- position: fixed;
29
- top: 0;
30
- left: 0;
31
- display: flex;
32
- justify-content: center;
33
- align-items: center;
34
- background: #ffffff;
35
- color: #666666;
36
- font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen,
37
- Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;
38
- font-size: 1rem;
39
- text-align: center;
40
- }
41
-
42
- img {
43
- margin-bottom: 1.25rem;
44
- }
26
+ .prismic-preview{align-items:center;background:#fff;color:#666;display:flex;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;font-size:1rem;height:100vh;justify-content:center;left:0;position:fixed;text-align:center;top:0;width:100%}img{margin-bottom:1.25rem}
45
27
  </style>
@@ -1,2 +0,0 @@
1
- declare const _default: any;
2
- export default _default;
@@ -1,5 +1,5 @@
1
1
  import { defineNuxtPlugin, refreshNuxtData, useRuntimeConfig } from "#imports";
2
- export default defineNuxtPlugin((nuxtApp) => {
2
+ export default defineNuxtPlugin((_nuxtApp) => {
3
3
  const options = useRuntimeConfig().public.prismic;
4
4
  if (options.preview) {
5
5
  window.addEventListener("prismicPreviewUpdate", (event) => {
@@ -1,2 +0,0 @@
1
- declare const _default: any;
2
- export default _default;
package/dist/types.d.mts CHANGED
@@ -1,8 +1,48 @@
1
1
 
2
2
  import type { } from './module.js'
3
3
 
4
+ export interface ModuleOptions {
5
+ /** @default "" */
6
+ endpoint: string,
4
7
 
8
+ /** @default "" */
9
+ environment: string,
5
10
 
11
+ clientConfig: any,
12
+
13
+ /** @default "~/app/prismic/client" */
14
+ client: string,
15
+
16
+ /** @default "~/app/prismic/linkResolver" */
17
+ linkResolver: string,
18
+
19
+ /** @default "~/app/prismic/richTextSerializer" */
20
+ richTextSerializer: string,
21
+
22
+ /** @default true */
23
+ injectComponents: boolean,
24
+
25
+ components: any,
26
+
27
+ /** @default "/preview" */
28
+ preview: string,
29
+
30
+ /** @default true */
31
+ toolbar: boolean,
32
+
33
+ /** @default true */
34
+ devtools: boolean,
35
+ }
36
+
37
+ declare module '@nuxt/schema' {
38
+ interface NuxtConfig { ['prismic']?: Partial<ModuleOptions> }
39
+ interface NuxtOptions { ['prismic']?: ModuleOptions }
40
+ }
41
+
42
+ declare module 'nuxt/schema' {
43
+ interface NuxtConfig { ['prismic']?: Partial<ModuleOptions> }
44
+ interface NuxtOptions { ['prismic']?: ModuleOptions }
45
+ }
6
46
 
7
47
 
8
48
  export type { PrismicModuleOptions, default } from './module.js'
package/dist/types.d.ts CHANGED
@@ -1,8 +1,48 @@
1
1
 
2
2
  import type { } from './module'
3
3
 
4
+ export interface ModuleOptions {
5
+ /** @default "" */
6
+ endpoint: string,
4
7
 
8
+ /** @default "" */
9
+ environment: string,
5
10
 
11
+ clientConfig: any,
12
+
13
+ /** @default "~/app/prismic/client" */
14
+ client: string,
15
+
16
+ /** @default "~/app/prismic/linkResolver" */
17
+ linkResolver: string,
18
+
19
+ /** @default "~/app/prismic/richTextSerializer" */
20
+ richTextSerializer: string,
21
+
22
+ /** @default true */
23
+ injectComponents: boolean,
24
+
25
+ components: any,
26
+
27
+ /** @default "/preview" */
28
+ preview: string,
29
+
30
+ /** @default true */
31
+ toolbar: boolean,
32
+
33
+ /** @default true */
34
+ devtools: boolean,
35
+ }
36
+
37
+ declare module '@nuxt/schema' {
38
+ interface NuxtConfig { ['prismic']?: Partial<ModuleOptions> }
39
+ interface NuxtOptions { ['prismic']?: ModuleOptions }
40
+ }
41
+
42
+ declare module 'nuxt/schema' {
43
+ interface NuxtConfig { ['prismic']?: Partial<ModuleOptions> }
44
+ interface NuxtOptions { ['prismic']?: ModuleOptions }
45
+ }
6
46
 
7
47
 
8
48
  export type { PrismicModuleOptions, default } from './module'
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@nuxtjs/prismic",
3
- "version": "3.2.0",
4
- "description": "Easily connect your Nuxt 3 application to your content hosted on Prismic",
3
+ "version": "3.3.0",
4
+ "description": "Easily connect your Nuxt application to your content hosted on Prismic",
5
5
  "keywords": [
6
6
  "nuxt",
7
7
  "module",
@@ -19,14 +19,14 @@
19
19
  "type": "module",
20
20
  "exports": {
21
21
  ".": {
22
- "require": "./dist/module.cjs",
23
- "import": "./dist/module.mjs"
22
+ "types": "./dist/types.d.ts",
23
+ "import": "./dist/module.mjs",
24
+ "require": "./dist/module.cjs"
24
25
  },
25
26
  "./runtime/*": "./dist/runtime/*",
26
27
  "./package.json": "./package.json"
27
28
  },
28
29
  "main": "dist/module.cjs",
29
- "module": "dist/module.mjs",
30
30
  "types": "dist/types.d.ts",
31
31
  "files": [
32
32
  "dist",
@@ -34,28 +34,28 @@
34
34
  ],
35
35
  "scripts": {
36
36
  "build": "npm run build:module && npm run build:client",
37
- "dev": "nuxi dev playground",
38
- "dev:build": "nuxi build playground",
39
- "dev:preview": "nuxi preview playground",
40
- "dev:generate": "nuxi generate playground",
41
- "build:client": "nuxi generate client",
37
+ "build:client": "nuxt generate client",
42
38
  "build:module": "nuxt-module-build build",
43
- "lint": "eslint --ext .js,.ts .",
44
- "prepare": "nuxi prepare playground && npm run build",
39
+ "dev": "nuxt dev playground",
40
+ "dev:build": "nuxt build playground",
41
+ "dev:preview": "nuxt preview playground",
42
+ "dev:generate": "nuxt generate playground",
43
+ "prepare": "nuxt prepare playground && npm run build",
45
44
  "release": "npm run test && standard-version && git push --follow-tags && npm run build && npm publish",
45
+ "release:dry": "standard-version --dry-run",
46
46
  "release:rc": "npm run test && standard-version --release-as major --prerelease rc && git push --follow-tags && npm run build && npm publish --tag rc",
47
47
  "release:rc:dry": "standard-version --release-as major --prerelease rc --dry-run",
48
- "release:dry": "standard-version --dry-run",
49
- "test": "npm run types && npm run lint && npm run unit && npm run build",
50
- "types": "tsc --noEmit",
48
+ "lint": "eslint .",
49
+ "typecheck": "tsc --noEmit",
51
50
  "unit": "vitest run --coverage",
52
- "unit:watch": "vitest watch"
51
+ "unit:watch": "vitest watch",
52
+ "test": "npm run typecheck && npm run lint && npm run unit && npm run build"
53
53
  },
54
54
  "dependencies": {
55
- "@nuxt/devtools-kit": "^1.1.5",
56
- "@nuxt/kit": "^3.11.1",
57
- "@prismicio/client": "^7.4.0",
58
- "@prismicio/vue": "^4.2.1",
55
+ "@nuxt/devtools-kit": "^1.3.3",
56
+ "@nuxt/kit": "^3.12.1",
57
+ "@prismicio/client": "^7.5.0",
58
+ "@prismicio/vue": "^4.2.2",
59
59
  "birpc": "0.2.17",
60
60
  "consola": "^3.2.3",
61
61
  "defu": "^6.1.4",
@@ -64,20 +64,20 @@
64
64
  "terminate": "^2.6.1"
65
65
  },
66
66
  "devDependencies": {
67
- "@iconify-json/carbon": "^1.1.31",
68
- "@iconify-json/logos": "^1.1.42",
69
- "@nuxt/devtools-ui-kit": "^1.1.5",
70
- "@nuxt/module-builder": "^0.5.5",
71
- "@nuxt/schema": "^3.11.1",
72
- "@nuxtjs/eslint-config-typescript": "^12.1.0",
73
- "@unocss/preset-icons": "^0.58.9",
74
- "@vitest/coverage-v8": "^1.4.0",
75
- "eslint": "^8.57.0",
76
- "mock-fs": "^5.2.0",
77
- "nuxt": "^3.11.1",
67
+ "@iconify-json/carbon": "^1.1.35",
68
+ "@iconify-json/logos": "^1.1.43",
69
+ "@nuxt/devtools-ui-kit": "^1.3.3",
70
+ "@nuxt/eslint-config": "^0.3.13",
71
+ "@nuxt/module-builder": "^0.7.1",
72
+ "@nuxt/schema": "^3.12.1",
73
+ "@unocss/preset-icons": "^0.61.0",
74
+ "@vitest/coverage-v8": "^1.6.0",
75
+ "eslint": "^9.4.0",
76
+ "memfs": "^4.9.2",
77
+ "nuxt": "^3.12.1",
78
78
  "standard-version": "^9.5.0",
79
- "typescript": "^5.4.3",
80
- "vitest": "^1.4.0"
79
+ "typescript": "^5.4.5",
80
+ "vitest": "^1.6.0"
81
81
  },
82
82
  "engines": {
83
83
  "node": ">=16.10.0"
@@ -85,8 +85,5 @@
85
85
  "publishConfig": {
86
86
  "access": "public"
87
87
  },
88
- "workspaces": [
89
- "./",
90
- "./client"
91
- ]
88
+ "packageManager": "pnpm@9.3.0"
92
89
  }
@@ -1,4 +1,5 @@
1
1
  import { existsSync } from 'node:fs'
2
+ import { readFile } from 'node:fs/promises'
2
3
 
3
4
  import { extendServerRpc, onDevToolsInitialized, startSubprocess } from '@nuxt/devtools-kit'
4
5
  import type { Resolver } from '@nuxt/kit'
@@ -10,7 +11,7 @@ import {
10
11
  RPC_NAMESPACE,
11
12
  SliceMachineStatus,
12
13
  type ISlicemachineServerFunctions,
13
- type ISlicemachineClientFunctions
14
+ type ISlicemachineClientFunctions,
14
15
  } from './types'
15
16
 
16
17
  const DEVTOOLS_UI_ROUTE = '/__prismic-client'
@@ -39,10 +40,11 @@ export const setupDevToolsUI = (nuxt: Nuxt, resolver: Resolver) => {
39
40
  const sirv = await import('sirv').then(r => r.default || r)
40
41
  server.middlewares.use(
41
42
  DEVTOOLS_UI_ROUTE,
42
- sirv(clientPath, { dev: true, single: true })
43
+ sirv(clientPath, { dev: true, single: true }),
43
44
  )
44
45
  })
45
- } else {
46
+ }
47
+ else {
46
48
  // In local development, start a separate Nuxt Server and proxy to serve the client
47
49
  nuxt.hook('vite:extendConfig', (config) => {
48
50
  config.server = config.server || {}
@@ -51,7 +53,7 @@ export const setupDevToolsUI = (nuxt: Nuxt, resolver: Resolver) => {
51
53
  target: `http://localhost:${DEVTOOLS_UI_LOCAL_PORT}${DEVTOOLS_UI_ROUTE}`,
52
54
  changeOrigin: true,
53
55
  followRedirects: true,
54
- rewrite: path => path.replace(DEVTOOLS_UI_ROUTE, '')
56
+ rewrite: path => path.replace(DEVTOOLS_UI_ROUTE, ''),
55
57
  }
56
58
  })
57
59
  }
@@ -67,42 +69,42 @@ export const setupDevToolsUI = (nuxt: Nuxt, resolver: Resolver) => {
67
69
  const rpc = extendServerRpc<ISlicemachineClientFunctions, ISlicemachineServerFunctions>(
68
70
  RPC_NAMESPACE,
69
71
  {
70
- async getSlicemachineConfig () {
72
+ async getSlicemachineConfig() {
71
73
  const configPath = resolve(nuxt.options.rootDir, 'slicemachine.config.json')
72
74
 
73
75
  if (existsSync(configPath)) {
74
- return await import(configPath)
76
+ return JSON.parse(await readFile(configPath, 'utf-8'))
75
77
  }
76
78
 
77
79
  return null
78
80
  },
79
81
 
80
- isSliceMachineStarted () {
82
+ isSliceMachineStarted() {
81
83
  return subProcess !== null
82
84
  },
83
85
 
84
- startSliceMachine () {
86
+ startSliceMachine() {
85
87
  stopSubprocess()
86
88
 
87
89
  subProcess = startSubprocess({
88
90
  command: 'npx',
89
91
  args: ['start-slicemachine'],
90
- cwd: nuxt.options.rootDir
92
+ cwd: nuxt.options.rootDir,
91
93
  }, {
92
94
  id: 'slicemachine',
93
95
  name: 'SliceMachine',
94
- icon: 'cib:prismic'
96
+ icon: 'cib:prismic',
95
97
  }, nuxt)
96
98
 
97
99
  rpc.broadcast.updateStatus(SliceMachineStatus.STARTED)
98
100
  return SliceMachineStatus.STARTED
99
101
  },
100
- stopSliceMachine () {
102
+ stopSliceMachine() {
101
103
  stopSubprocess()
102
104
 
103
105
  rpc.broadcast.updateStatus(SliceMachineStatus.STOPPED)
104
106
  return SliceMachineStatus.STOPPED
105
- }
107
+ },
106
108
  })
107
109
  })
108
110
 
@@ -117,8 +119,8 @@ export const setupDevToolsUI = (nuxt: Nuxt, resolver: Resolver) => {
117
119
  // iframe view
118
120
  view: {
119
121
  type: 'iframe',
120
- src: DEVTOOLS_UI_ROUTE
121
- }
122
+ src: DEVTOOLS_UI_ROUTE,
123
+ },
122
124
  })
123
125
  })
124
126
  }
@@ -4,18 +4,18 @@ export const RPC_NAMESPACE = 'prismic-slicemachine-rpc'
4
4
 
5
5
  export enum SliceMachineStatus {
6
6
  STARTED,
7
- STOPPED
7
+ STOPPED,
8
8
  }
9
9
 
10
10
  export interface ISlicemachineClientFunctions {
11
- updateStatus(status: SliceMachineStatus) : void
11
+ updateStatus(status: SliceMachineStatus): void
12
12
  }
13
13
 
14
14
  export interface ISlicemachineServerFunctions {
15
- getSlicemachineConfig() : Promise<Object | null>
16
- isSliceMachineStarted() : boolean
17
- startSliceMachine() : SliceMachineStatus
18
- stopSliceMachine() : SliceMachineStatus
15
+ getSlicemachineConfig(): Promise<object | null>
16
+ isSliceMachineStarted(): boolean
17
+ startSliceMachine(): SliceMachineStatus
18
+ stopSliceMachine(): SliceMachineStatus
19
19
  }
20
20
 
21
21
  export type RPCServerType = BirpcReturn<ISlicemachineClientFunctions, ISlicemachineServerFunctions>
@@ -3,7 +3,8 @@ import { existsSync } from 'node:fs'
3
3
  export const fileExists = (path?: string, extensions = ['js', 'ts']): string | null => {
4
4
  if (!path) {
5
5
  return null
6
- } else if (existsSync(path)) {
6
+ }
7
+ else if (existsSync(path)) {
7
8
  // If path already contains/forces the extension
8
9
  return path
9
10
  }