@nuxtjs/prismic 4.0.0 → 4.1.0-pr.235.94cfeb5

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 (44) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +18 -32
  3. package/dist/module.d.mts +48 -75
  4. package/dist/module.json +3 -3
  5. package/dist/module.mjs +193 -242
  6. package/dist/runtime/PrismicPreview.d.vue.ts +3 -0
  7. package/dist/runtime/PrismicPreview.vue +8 -14
  8. package/dist/runtime/PrismicPreview.vue.d.ts +3 -0
  9. package/dist/runtime/plugin.client.js +13 -7
  10. package/dist/runtime/plugin.js +89 -72
  11. package/dist/runtime/usePrismicPreview.d.ts +1 -5
  12. package/dist/runtime/usePrismicPreview.js +3 -3
  13. package/dist/types.d.mts +3 -1
  14. package/package.json +38 -45
  15. package/src/module.ts +352 -185
  16. package/src/runtime/PrismicPreview.vue +12 -16
  17. package/src/runtime/plugin.client.ts +16 -12
  18. package/src/runtime/plugin.ts +114 -103
  19. package/src/runtime/usePrismicPreview.ts +7 -11
  20. package/dist/client/200.html +0 -1
  21. package/dist/client/404.html +0 -1
  22. package/dist/client/_nuxt/BMD6bpEv.js +0 -1
  23. package/dist/client/_nuxt/BQB6UGbx.js +0 -25
  24. package/dist/client/_nuxt/CkG7IjgS.js +0 -1
  25. package/dist/client/_nuxt/DlAUqK2U.js +0 -1
  26. package/dist/client/_nuxt/H1okkFcd.js +0 -1
  27. package/dist/client/_nuxt/RYS3n4u0.js +0 -1
  28. package/dist/client/_nuxt/V_weDLQm.js +0 -1
  29. package/dist/client/_nuxt/builds/latest.json +0 -1
  30. package/dist/client/_nuxt/builds/meta/ef21bbff-0463-480b-852c-adffad3f33b7.json +0 -1
  31. package/dist/client/_nuxt/entry.BC9BDAld.css +0 -1
  32. package/dist/client/_nuxt/error-404.smTsHvdw.css +0 -1
  33. package/dist/client/_nuxt/error-500.Bo-s0s94.css +0 -1
  34. package/dist/client/_nuxt/index.C4BggqQh.css +0 -1
  35. package/dist/client/index.html +0 -1
  36. package/dist/module.cjs +0 -5
  37. package/dist/module.d.ts +0 -136
  38. package/dist/types.d.ts +0 -1
  39. package/src/devtools/index.ts +0 -127
  40. package/src/devtools/types.ts +0 -22
  41. package/src/lib/fileExists.ts +0 -15
  42. package/src/lib/index.ts +0 -2
  43. package/src/lib/logger.ts +0 -3
  44. package/src/types.ts +0 -137
@@ -1,94 +1,111 @@
1
- import { createClient } from "@prismicio/client";
2
- import { createPrismic } from "@prismicio/vue";
3
1
  import { defineNuxtPlugin } from "#app";
4
2
  import NuxtLink from "#app/components/nuxt-link";
5
- import { useCookie, useRequestEvent, onNuxtReady, refreshNuxtData, useHead, useRuntimeConfig, useRouter } from "#imports";
6
3
  import _client from "#build/prismic/proxy/client";
4
+ import defaultComponents from "#build/prismic/proxy/defaultComponents";
7
5
  import linkResolver from "#build/prismic/proxy/linkResolver";
8
- import richTextSerializer from "#build/prismic/proxy/richTextSerializer";
9
- import linkRel from "#build/prismic/proxy/linkRel";
10
- import richTextComponents from "#build/prismic/proxy/richTextComponents";
11
- import sliceZoneDefaultComponent from "#build/prismic/proxy/sliceZoneDefaultComponent";
6
+ import {
7
+ onNuxtReady,
8
+ refreshNuxtData,
9
+ useCookie,
10
+ useHead,
11
+ useRequestEvent,
12
+ useRouter,
13
+ useRuntimeConfig
14
+ } from "#imports";
15
+ import { Client, createClient } from "@prismicio/client";
16
+ import { createPrismic } from "@prismicio/vue";
12
17
  export default defineNuxtPlugin({
13
18
  name: "prismic:setup",
14
19
  parallel: true,
15
20
  async setup(nuxtApp) {
16
21
  const options = useRuntimeConfig().public.prismic;
17
- let client;
18
- if (typeof _client === "function") {
19
- try {
20
- client = await nuxtApp.runWithContext(() => _client());
21
- } catch (error) {
22
- console.error("[@nuxtjs/prismic] An error happened while resolving your Prismic custom client, disabling Prismic module gracefully...", error);
23
- client = createClient(
24
- "error-resolving-custom-client",
25
- { ...options, documentAPIEndpoint: void 0 }
22
+ const client = await resolveClient();
23
+ handlePreview();
24
+ addToolbar();
25
+ async function resolveClient() {
26
+ if (_client instanceof Client) {
27
+ return _client;
28
+ } else if (typeof _client === "function") {
29
+ try {
30
+ return await nuxtApp.runWithContext(
31
+ () => _client()
32
+ );
33
+ } catch (error) {
34
+ console.error(
35
+ "[@nuxtjs/prismic] An error happened while resolving your Prismic custom client, disabling Prismic module gracefully...",
36
+ error
37
+ );
38
+ return createClient(
39
+ "error-resolving-custom-client",
40
+ options.clientConfig
41
+ );
42
+ }
43
+ } else {
44
+ return createClient(
45
+ options.environment || options.endpoint || "endpoint-not-provided",
46
+ options.clientConfig
26
47
  );
27
48
  }
28
- } else {
29
- client = _client;
30
49
  }
31
- const endpoint = options.environment || options.endpoint || client?.documentAPIEndpoint || "";
32
- const prismicPlugin = createPrismic({
33
- ...options,
34
- endpoint,
35
- // TypeScript expects either an endpoint of a client, not both
36
- client,
37
- linkResolver,
38
- richTextSerializer,
39
- injectComponents: false,
40
- // Handled at module level
41
- components: {
42
- linkInternalComponent: NuxtLink,
43
- linkExternalComponent: NuxtLink,
44
- ...options.components,
45
- linkRel,
46
- richTextComponents,
47
- sliceZoneDefaultComponent
48
- }
49
- });
50
- nuxtApp.vueApp.use(prismicPlugin);
51
- if (options.preview) {
52
- const previewCookie = useCookie("io.prismic.preview").value;
53
- if (import.meta.server) {
54
- const req = useRequestEvent()?.node.req;
55
- if (req) {
56
- prismicPlugin.client.enableAutoPreviewsFromReq(req);
50
+ function handlePreview() {
51
+ if (options.preview) {
52
+ const previewCookie = useCookie("io.prismic.preview").value;
53
+ if (import.meta.server) {
54
+ const req = useRequestEvent()?.node.req;
55
+ if (req) {
56
+ client.enableAutoPreviewsFromReq(req);
57
+ }
57
58
  }
58
- }
59
- if (previewCookie) {
60
- try {
61
- const session = typeof previewCookie === "string" ? JSON.parse(decodeURIComponent(previewCookie)) : previewCookie;
62
- if (Object.keys(session).some((key) => key in session && typeof session[key] === "object" && session[key] !== null && "preview" in session[key] && session[key].preview)) {
63
- let afterEachCalled = false;
64
- onNuxtReady(() => {
65
- if (!afterEachCalled) {
59
+ if (previewCookie) {
60
+ try {
61
+ const session = typeof previewCookie === "string" ? JSON.parse(decodeURIComponent(previewCookie)) : previewCookie;
62
+ if (Object.keys(session).some(
63
+ (key) => key in session && typeof session[key] === "object" && session[key] !== null && "preview" in session[key] && session[key].preview
64
+ )) {
65
+ let afterEachCalled = false;
66
+ onNuxtReady(() => {
67
+ if (!afterEachCalled) {
68
+ refreshNuxtData();
69
+ }
70
+ });
71
+ useRouter().afterEach(() => {
72
+ afterEachCalled = true;
66
73
  refreshNuxtData();
67
- }
68
- });
69
- useRouter().afterEach(() => {
70
- afterEachCalled = true;
71
- refreshNuxtData();
72
- });
74
+ });
75
+ }
76
+ } catch (error) {
77
+ console.warn("Failed to parse Prismic preview cookie", error);
73
78
  }
74
- } catch (error) {
75
- console.warn("Failed to parse Prismic preview cookie", error);
76
79
  }
77
80
  }
78
81
  }
79
- if (options.toolbar && prismicPlugin.client?.repositoryName) {
80
- useHead({
81
- script: [{
82
- key: "prismic-preview",
83
- src: `https://static.cdn.prismic.io/prismic.min.js?repo=${prismicPlugin.client.repositoryName}&new=true`,
84
- async: true,
85
- defer: true,
86
- crossorigin: "anonymous"
87
- }]
88
- });
89
- } else {
90
- useCookie("io.prismic.preview").value = null;
82
+ function addToolbar() {
83
+ if (options.toolbar) {
84
+ useHead({
85
+ script: [
86
+ {
87
+ key: "prismic-preview",
88
+ src: `https://static.cdn.prismic.io/prismic.min.js?repo=${client.repositoryName}&new=true`,
89
+ async: true,
90
+ defer: true,
91
+ crossorigin: "anonymous"
92
+ }
93
+ ]
94
+ });
95
+ } else {
96
+ useCookie("io.prismic.preview").value = null;
97
+ }
91
98
  }
99
+ const prismicPlugin = createPrismic({
100
+ client,
101
+ componentsConfig: {
102
+ linkResolver,
103
+ linkInternalComponent: NuxtLink,
104
+ linkExternalComponent: NuxtLink,
105
+ defaultComponents
106
+ }
107
+ });
108
+ nuxtApp.vueApp.use(prismicPlugin);
92
109
  return {
93
110
  provide: { prismic: prismicPlugin }
94
111
  };
@@ -1,6 +1,2 @@
1
- /**
2
- * Resolves Prismic previews on the preview entry page (`/preview`)
3
- *
4
- * @param defaultURL - The default URL to redirect to if the previewed document doesn't map to one.
5
- */
1
+ /** Resolves Prismic previews on the preview entry page (`/preview`) */
6
2
  export declare const usePrismicPreview: (defaultURL?: string) => void;
@@ -1,11 +1,11 @@
1
+ import { usePrismic, useRouter } from "#imports";
1
2
  import { onMounted } from "vue";
2
- import { useRouter, usePrismic } from "#imports";
3
3
  export const usePrismicPreview = (defaultURL = "/") => {
4
- const { client, options: { linkResolver } } = usePrismic();
4
+ const { client, componentsConfig } = usePrismic();
5
5
  const { push } = useRouter();
6
6
  onMounted(async () => {
7
7
  const redirectURL = await client.resolvePreviewURL({
8
- linkResolver,
8
+ linkResolver: componentsConfig.linkResolver,
9
9
  defaultURL
10
10
  });
11
11
  push(redirectURL);
package/dist/types.d.mts CHANGED
@@ -1 +1,3 @@
1
- export { type ModuleOptions, type PrismicModuleOptions, default } from './module.js'
1
+ export { default } from './module.mjs'
2
+
3
+ export { type ModuleOptions, type PrismicModuleOptions } from './module.mjs'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nuxtjs/prismic",
3
- "version": "4.0.0",
3
+ "version": "4.1.0-pr.235.94cfeb5",
4
4
  "description": "Easily connect your Nuxt application to your content hosted on Prismic",
5
5
  "keywords": [
6
6
  "nuxt",
@@ -19,71 +19,64 @@
19
19
  "type": "module",
20
20
  "exports": {
21
21
  ".": {
22
- "types": "./dist/types.d.ts",
23
- "import": "./dist/module.mjs",
24
- "require": "./dist/module.cjs"
22
+ "types": "./dist/types.d.mts",
23
+ "import": "./dist/module.mjs"
25
24
  },
26
25
  "./runtime/*": "./dist/runtime/*",
27
26
  "./package.json": "./package.json"
28
27
  },
29
- "main": "dist/module.cjs",
30
- "types": "dist/types.d.ts",
28
+ "main": "./dist/module.mjs",
29
+ "typesVersions": {
30
+ "*": {
31
+ ".": [
32
+ "./dist/types.d.mts"
33
+ ]
34
+ }
35
+ },
31
36
  "files": [
32
- "dist",
33
- "src"
37
+ "./dist",
38
+ "./src"
34
39
  ],
35
40
  "scripts": {
36
- "build": "npm run build:module && npm run build:client",
37
- "build:client": "nuxt generate client",
38
- "build:module": "nuxt-module-build build",
41
+ "build": "nuxt-module-build build",
39
42
  "dev": "nuxt dev playground",
40
43
  "dev:build": "nuxt build playground",
41
44
  "dev:preview": "nuxt preview playground",
42
45
  "dev:generate": "nuxt generate playground",
43
- "prepare": "nuxt prepare playground",
44
- "release": "npm run test && standard-version && git push --follow-tags && npm run build && npm publish",
45
- "release:dry": "standard-version --dry-run",
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
- "release:rc:dry": "standard-version --release-as major --prerelease rc --dry-run",
48
- "lint": "eslint .",
49
- "typecheck": "tsc --noEmit",
46
+ "format": "prettier --write .",
47
+ "prepare": "nuxt-module-build prepare && npm run build",
48
+ "lint": "oxlint --deny-warnings",
49
+ "types": "vue-tsc --noEmit",
50
50
  "unit": "vitest run --coverage",
51
51
  "unit:watch": "vitest watch",
52
- "test": "npm run typecheck && npm run lint && npm run unit && npm run build"
52
+ "test": "npm run lint && npm run types && npm run unit && npm run build"
53
53
  },
54
54
  "dependencies": {
55
- "@nuxt/devtools-kit": "^1.7.0",
56
- "@nuxt/kit": "^3.15.2",
57
- "@prismicio/client": "^7.15.1",
58
- "@prismicio/vue": "^5.0.0",
59
- "birpc": "2.0.19",
60
- "defu": "^6.1.4",
61
- "pathe": "^2.0.2",
62
- "sirv": "^3.0.0",
63
- "terminate": "^2.8.0"
55
+ "@nuxt/kit": "^4.2.2",
56
+ "@prismicio/client": "^7.21.1",
57
+ "@prismicio/vue": "pr-89",
58
+ "defu": "^6.1.4"
64
59
  },
65
60
  "devDependencies": {
66
- "@iconify-json/carbon": "^1.2.5",
67
- "@iconify-json/logos": "^1.2.4",
68
- "@iconify-json/simple-icons": "^1.2.21",
69
- "@nuxt/devtools-ui-kit": "^1.7.0",
70
- "@nuxt/eslint-config": "^0.7.5",
71
- "@nuxt/module-builder": "^0.8.4",
72
- "@nuxt/schema": "^3.15.2",
73
- "@unocss/preset-icons": "^65.4.2",
74
- "@vitest/coverage-v8": "^3.0.2",
75
- "eslint": "^9.18.0",
76
- "memfs": "^4.17.0",
77
- "nuxt": "^3.15.2",
78
- "standard-version": "^9.5.0",
79
- "typescript": "^5.7.3",
80
- "vitest": "^3.0.2"
61
+ "@nuxt/module-builder": "^1.0.2",
62
+ "@nuxt/schema": "^4.2.2",
63
+ "@nuxt/test-utils": "^3.21.0",
64
+ "@trivago/prettier-plugin-sort-imports": "^6.0.0",
65
+ "@types/node": "^25.0.3",
66
+ "@vitest/coverage-v8": "^4.0.16",
67
+ "nuxt": "^4.2.2",
68
+ "oxlint": "1.35.0",
69
+ "prettier": "^3.7.4",
70
+ "prettier-plugin-jsdoc": "^1.8.0",
71
+ "typescript": "^5.9.3",
72
+ "vitest": "^4.0.16",
73
+ "vue-tsc": "^3.2.1"
81
74
  },
82
75
  "engines": {
83
- "node": ">=16.10.0"
76
+ "node": ">=20.0.0"
84
77
  },
85
78
  "publishConfig": {
86
79
  "access": "public"
87
80
  },
88
- "packageManager": "pnpm@9.15.2"
81
+ "packageManager": "pnpm@10.26.2"
89
82
  }