@nuxtjs/prismic 1.4.2 → 3.0.0-alpha.10

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 CHANGED
@@ -1,59 +1,84 @@
1
+ <!--
2
+
3
+ Replace all on all files (README.md, CONTRIBUTING.md, bug_report.md, package.json):
4
+ - @nuxtjs/prismic
5
+ - Easily connect your Nuxt 3 application to your content hosted on Prismic
6
+ - nuxt-community/prismic-module
7
+ - prismic-module
8
+
9
+ -->
10
+
1
11
  # @nuxtjs/prismic
2
12
 
3
13
  [![npm version][npm-version-src]][npm-version-href]
4
14
  [![npm downloads][npm-downloads-src]][npm-downloads-href]
5
15
  [![Github Actions CI][github-actions-ci-src]][github-actions-ci-href]
6
16
  [![Codecov][codecov-src]][codecov-href]
17
+ [![Conventional Commits][conventional-commits-src]][conventional-commits-href]
7
18
  [![License][license-src]][license-href]
8
19
 
9
- > @nuxtjs/prismic helps you connect your [Nuxt.js](https://nuxtjs.org) application to your content hosted on [Prismic](https://prismic.io)
20
+ Easily connect your Nuxt.js application to your content hosted on [Prismic][prismic].
10
21
 
11
- - [✨ &nbsp;Release Notes](/CHANGELOG.md)
12
- - [📖 &nbsp;Read the documentation](https://prismic.nuxtjs.org)
22
+ - 🚀 &nbsp;Add Prismic to your Nuxt app in seconds;
23
+ - 🎣 &nbsp;Access Prismic SDK through composition and options API;
24
+ - 🖼 &nbsp;Prismic previews supported.
13
25
 
14
- ## Features
26
+ ## Install
15
27
 
16
- - Add Prismic to your Nuxt app in seconds
17
- - Access Prismic SDK with `$prismic`
18
- - Prismic previews supported, [check out the demo!](https://prismic.nuxtjs.org/#videos)
19
- - Compact configuration
20
-
21
- [📖 &nbsp;Read the documentation](https://prismic.nuxtjs.org)
28
+ ```bash
29
+ npm install --save-dev @nuxtjs/prismic@alpha # or yarn add --dev @nuxtjs/prismic@alpha
30
+ ```
22
31
 
23
- ## Setup
32
+ Then, add `@nuxtjs/prismic` to the `modules` section of your Nuxt config and configure your Prismic API endpoint:
24
33
 
25
- 1. Add `@nuxtjs/prismic` dependency to your project:
34
+ ```javascript
35
+ import { defineNuxtConfig } from 'nuxt'
26
36
 
27
- ```bash
28
- yarn add @nuxtjs/prismic # or npm install @nuxtjs/prismic
37
+ export default defineNuxtConfig({
38
+ modules: ['@nuxtjs/prismic'],
39
+ prismic: {
40
+ endpoint: 'my-repository'
41
+ },
42
+ });
29
43
  ```
30
44
 
31
- 2. Then, add `@nuxtjs/prismic` to the `buildModules` section of `nuxt.config.js` and configure your Prismic API endpoint:
32
-
33
- ```js
34
- {
35
- buildModules: [
36
- '@nuxtjs/prismic',
37
- ],
38
- prismic: {
39
- endpoint: 'https://<REPOSITORY>.cdn.prismic.io/api/v2',
40
- modern: true
41
- // see documentation for more!
42
- }
43
- }
44
- ```
45
+ ## Documentation
46
+
47
+ To discover what's new on this package check out [the changelog][changelog]. For full documentation, visit the [module documentation][nuxt-docs] and [Prismic official documentation][prismic-docs].
45
48
 
46
- ## Development
49
+ ## Contributing
47
50
 
48
- 1. Clone this repository
49
- 2. Install dependencies using `yarn install`
50
- 3. Start development server using `yarn dev`
51
+ Whether you're helping us fix bugs, improve the docs, or spread the word, we'd love to have you as part of the Prismic developer community!
52
+
53
+ **Asking a question**: [Open a new topic][forum-question] on our community forum explaining what you want to achieve / your question. Our support team will get back to you shortly.
54
+
55
+ **Reporting a bug**: [Open an issue][repo-bug-report] explaining your application's setup and the bug you're encountering.
56
+
57
+ **Suggesting an improvement**: [Open an issue][repo-feature-request] explaining your improvement or feature so we can discuss and learn more.
58
+
59
+ **Submitting code changes**: For small fixes, feel free to [open a pull request][repo-pull-requests] with a description of your changes. For large changes, please first [open an issue][repo-feature-request] so we can discuss if and how the changes should be implemented.
51
60
 
52
61
  ## License
53
62
 
54
63
  [MIT License](./LICENSE)
55
64
 
56
- Thanks to [James Pegg](https://github.com/jamespeggsh) for the initial implementation of the module!
65
+ <!-- Links -->
66
+
67
+ [prismic]: https://prismic.io
68
+
69
+ <!-- TODO: Replace link with a more useful one if available -->
70
+
71
+ [nuxt-docs]: https://v3.prismic.nuxtjs.org
72
+ [prismic-docs]: https://prismic.io/docs/technical-reference/prismicio-vue?version=v3
73
+ [changelog]: ./CHANGELOG.md
74
+ [contributing]: ./CONTRIBUTING.md
75
+
76
+ <!-- TODO: Replace link with a more useful one if available -->
77
+
78
+ [forum-question]: https://community.prismic.io
79
+ [repo-bug-report]: https://github.com/nuxt-community/prismic-module/issues/new?assignees=&labels=bug&template=bug_report.md&title=
80
+ [repo-feature-request]: https://github.com/nuxt-community/prismic-module/issues/new?assignees=&labels=enhancement&template=feature_request.md&title=
81
+ [repo-pull-requests]: https://github.com/nuxt-community/prismic-module/pulls
57
82
 
58
83
  <!-- Badges -->
59
84
 
@@ -65,5 +90,7 @@ Thanks to [James Pegg](https://github.com/jamespeggsh) for the initial implement
65
90
  [github-actions-ci-href]: https://github.com/nuxt-community/prismic-module/actions?query=workflow%3Aci
66
91
  [codecov-src]: https://img.shields.io/codecov/c/github/nuxt-community/prismic-module.svg
67
92
  [codecov-href]: https://codecov.io/gh/nuxt-community/prismic-module
93
+ [conventional-commits-src]: https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg
94
+ [conventional-commits-href]: https://conventionalcommits.org
68
95
  [license-src]: https://img.shields.io/npm/l/@nuxtjs/prismic.svg
69
96
  [license-href]: https://npmjs.com/package/@nuxtjs/prismic
@@ -0,0 +1,5 @@
1
+ module.exports = function(...args) {
2
+ return import('./module.mjs').then(m => m.default.call(this, ...args))
3
+ }
4
+ const _meta = module.exports.meta = require('./module.json')
5
+ module.exports.getMeta = () => Promise.resolve(_meta)
@@ -0,0 +1,14 @@
1
+ import * as _nuxt_schema from '@nuxt/schema';
2
+ import { PrismicPluginOptions } from '@prismicio/vue';
3
+
4
+ declare type PrismicModuleOptions = Omit<PrismicPluginOptions, 'endpoint' | 'client' | 'linkResolver' | 'htmlSerializer'> & {
5
+ endpoint: string;
6
+ client?: string;
7
+ linkResolver?: string;
8
+ htmlSerializer?: string;
9
+ preview?: string | false;
10
+ };
11
+
12
+ declare const _default: _nuxt_schema.NuxtModule<PrismicModuleOptions>;
13
+
14
+ export { PrismicModuleOptions as ModuleOptions, PrismicModuleOptions, _default as default };
@@ -0,0 +1,8 @@
1
+ {
2
+ "name": "@nuxtjs/prismic",
3
+ "version": "3.0.0-alpha.10",
4
+ "configKey": "prismic",
5
+ "compatibility": {
6
+ "nuxt": "^3.0.0"
7
+ }
8
+ }
@@ -0,0 +1,127 @@
1
+ import { join } from 'path';
2
+ import { defineNuxtModule, createResolver, addPlugin, addComponent, addAutoImport, extendPages, addTemplate } from '@nuxt/kit';
3
+ import { cleanDoubleSlashes } from 'ufo';
4
+ import { isRepositoryEndpoint, getRepositoryName } from '@prismicio/client';
5
+ import * as prismicVue from '@prismicio/vue';
6
+ import { existsSync } from 'fs';
7
+ import consola from 'consola';
8
+
9
+ const name = "@nuxtjs/prismic";
10
+ const version = "3.0.0-alpha.10";
11
+
12
+ const fileExists = (path, extensions = ["js", "ts"]) => {
13
+ if (!path) {
14
+ return null;
15
+ } else if (existsSync(path)) {
16
+ return path;
17
+ }
18
+ const extension = extensions.find((extension2) => existsSync(`${path}.${extension2}`));
19
+ return extension ? `${path}.${extension}` : null;
20
+ };
21
+
22
+ const logger = consola.withScope("nuxt:prismic");
23
+
24
+ const module = defineNuxtModule({
25
+ meta: {
26
+ name: name,
27
+ version: version,
28
+ configKey: "prismic",
29
+ compatibility: { nuxt: "^3.0.0" }
30
+ },
31
+ defaults: (nuxt) => ({
32
+ endpoint: "",
33
+ clientConfig: {},
34
+ client: cleanDoubleSlashes(`~/${nuxt.options.dir.app}/prismic/client`),
35
+ linkResolver: cleanDoubleSlashes(`~/${nuxt.options.dir.app}/prismic/linkResolver`),
36
+ htmlSerializer: cleanDoubleSlashes(`~/${nuxt.options.dir.app}/prismic/htmlSerializer`),
37
+ injectComponents: true,
38
+ components: {},
39
+ preview: "/preview"
40
+ }),
41
+ hooks: {},
42
+ setup(mergedOptions, nuxt) {
43
+ var _a, _b, _c;
44
+ if (!mergedOptions.endpoint) {
45
+ logger.warn("Options `endpoint` is required, disabling module...");
46
+ return;
47
+ }
48
+ const resolver = createResolver(import.meta.url);
49
+ nuxt.options.build.transpile.push(resolver.resolve("runtime"), "@nuxtjs/prismic", "@prismicio/vue");
50
+ const proxyUserFileWithUndefinedFallback = (filename, path, extensions = ["js", "mjs", "ts"]) => {
51
+ const resolvedFilename = `prismic/proxy/${filename}.ts`;
52
+ const resolvedPath = path ? path.replace(/^(~~|@@)/, nuxt.options.rootDir).replace(/^(~|@)/, nuxt.options.srcDir) : void 0;
53
+ const maybeUserFile = fileExists(resolvedPath, extensions);
54
+ if (maybeUserFile) {
55
+ logger.info(`Using user-defined \`${filename}\` at \`${maybeUserFile.replace(nuxt.options.srcDir, "~").replace(nuxt.options.rootDir, "~~").replace(/\\/g, "/")}\``);
56
+ addTemplate({
57
+ filename: resolvedFilename,
58
+ getContents: () => `export { default } from '${path}'`
59
+ });
60
+ } else {
61
+ addTemplate({
62
+ filename: resolvedFilename,
63
+ getContents: () => "export default undefined"
64
+ });
65
+ }
66
+ };
67
+ proxyUserFileWithUndefinedFallback("client", mergedOptions.client);
68
+ proxyUserFileWithUndefinedFallback("linkResolver", mergedOptions.linkResolver);
69
+ proxyUserFileWithUndefinedFallback("htmlSerializer", mergedOptions.htmlSerializer);
70
+ (_a = nuxt.options.runtimeConfig).public || (_a.public = {});
71
+ nuxt.options.runtimeConfig.public[name] = mergedOptions;
72
+ addPlugin(resolver.resolve("runtime/plugin"));
73
+ addPlugin(resolver.resolve("runtime/plugin.client"));
74
+ if (mergedOptions.injectComponents) {
75
+ [
76
+ "PrismicEmbed",
77
+ "PrismicImage",
78
+ "PrismicLink",
79
+ "PrismicText",
80
+ "PrismicRichText",
81
+ "SliceZone"
82
+ ].forEach((component) => {
83
+ addComponent({
84
+ name: component,
85
+ export: component,
86
+ filePath: "@prismicio/vue"
87
+ });
88
+ });
89
+ }
90
+ const composableAutoImports = Object.keys(prismicVue).filter((key) => key.startsWith("use")).map((key) => {
91
+ return {
92
+ name: key,
93
+ as: key,
94
+ from: "@prismicio/vue"
95
+ };
96
+ });
97
+ addAutoImport(composableAutoImports);
98
+ addAutoImport({
99
+ name: "usePrismicPreview",
100
+ as: "usePrismicPreview",
101
+ from: resolver.resolve("runtime/usePrismicPreview")
102
+ });
103
+ if (mergedOptions.preview) {
104
+ const maybeUserPreviewPage = fileExists(join(nuxt.options.srcDir, nuxt.options.dir.pages, mergedOptions.preview), ["js", "ts", "vue"]);
105
+ if (maybeUserPreviewPage) {
106
+ logger.info(`Using user-defined preview page at \`${maybeUserPreviewPage.replace(join(nuxt.options.srcDir), "~").replace(nuxt.options.rootDir, "~~").replace(/\\/g, "/")}\`, available at \`${mergedOptions.preview}\``);
107
+ } else {
108
+ logger.info(`Using default preview page, available at \`${mergedOptions.preview}\``);
109
+ extendPages((pages) => {
110
+ pages.unshift({
111
+ name: "prismic-preview",
112
+ path: mergedOptions.preview,
113
+ file: resolver.resolve("runtime/preview.vue")
114
+ });
115
+ });
116
+ }
117
+ const repositoryName = isRepositoryEndpoint(mergedOptions.endpoint) ? getRepositoryName(mergedOptions.endpoint) : mergedOptions.endpoint;
118
+ (_b = nuxt.options.app).head || (_b.head = {});
119
+ (_c = nuxt.options.app.head).script || (_c.script = []);
120
+ nuxt.options.app.head.script.push({
121
+ src: `https://static.cdn.prismic.io/prismic.min.js?repo=${repositoryName}&new=true`
122
+ });
123
+ }
124
+ }
125
+ });
126
+
127
+ export { module as default };
@@ -0,0 +1,2 @@
1
+ declare const _default: any;
2
+ export default _default;
@@ -0,0 +1,11 @@
1
+ import { defineNuxtPlugin, refreshNuxtData } from "#app";
2
+ const pkgName = "@nuxtjs/prismic";
3
+ export default defineNuxtPlugin((nuxtApp) => {
4
+ const mergedOptions = nuxtApp.payload.config[pkgName] ?? nuxtApp.payload.config.public[pkgName] ?? {};
5
+ if (mergedOptions.preview) {
6
+ window.addEventListener("prismicPreviewUpdate", (event) => {
7
+ event.preventDefault();
8
+ refreshNuxtData();
9
+ });
10
+ }
11
+ });
@@ -0,0 +1,2 @@
1
+ declare const _default: any;
2
+ export default _default;
@@ -0,0 +1,38 @@
1
+ import { defineNuxtPlugin, useCookie, useRequestEvent, refreshNuxtData } from "#app";
2
+ import NuxtLink from "#app/components/nuxt-link";
3
+ import { createPrismic } from "@prismicio/vue";
4
+ import client from "#build/prismic/proxy/client";
5
+ import linkResolver from "#build/prismic/proxy/linkResolver";
6
+ import htmlSerializer from "#build/prismic/proxy/htmlSerializer";
7
+ const pkgName = "@nuxtjs/prismic";
8
+ export default defineNuxtPlugin((nuxtApp) => {
9
+ const mergedOptions = nuxtApp.payload.config[pkgName] ?? nuxtApp.payload.config.public[pkgName] ?? {};
10
+ const prismicPlugin = createPrismic({
11
+ ...mergedOptions,
12
+ client,
13
+ linkResolver,
14
+ htmlSerializer,
15
+ injectComponents: false,
16
+ components: {
17
+ linkInternalComponent: NuxtLink,
18
+ linkExternalComponent: NuxtLink,
19
+ ...mergedOptions.components
20
+ }
21
+ });
22
+ nuxtApp.vueApp.use(prismicPlugin);
23
+ if (mergedOptions.preview) {
24
+ const previewCookie = useCookie("io.prismic.preview").value;
25
+ if (process.server) {
26
+ prismicPlugin.client.enableAutoPreviewsFromReq(useRequestEvent()?.req);
27
+ }
28
+ if (previewCookie) {
29
+ try {
30
+ const session = typeof previewCookie === "string" ? JSON.parse(decodeURIComponent(previewCookie)) : previewCookie;
31
+ if (Object.keys(session).some((key) => key in session && typeof session[key] === "object" && session[key] !== null && "preview" in session[key] && session[key].preview)) {
32
+ refreshNuxtData();
33
+ }
34
+ } catch (error) {
35
+ }
36
+ }
37
+ }
38
+ });
@@ -0,0 +1,45 @@
1
+ <template>
2
+ <section class="prismic-preview">
3
+ <figure>
4
+ <img
5
+ src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNDAiIGhlaWdodD0iMzYiPgogIDxwYXRoIGZpbGw9IiMyMTI3MzUiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTM1LjUzOCAxOC43NGwtMi42NTUtMi42NmExLjEyNiAxLjEyNiAwIDAgMS0uMzI5LS43OTZ2LTMuMjU2YzAtMy4wMDktLjMxMy00LjEtLjktNS4yYTYuMTI3IDYuMTI3IDAgMCAwLTIuNTQ2LTIuNTUxYy0xLjA5Ny0uNTg5LTIuMTg2LS45MDItNS4xODgtLjkwMmgtNC4yOTVhLjIyNS4yMjUgMCAwIDEtLjE1OC0uMzg0TDIyLjEyMi4zM2MuMjEtLjIxMS40OTYtLjMzLjc5NC0uMzNoMS40OTNjNC4wMDMgMCA1LjQ1NS40MTggNi45MTkgMS4yMDJhOC4xNjkgOC4xNjkgMCAwIDEgMy4zOTQgMy40MDJjLjc4MyAxLjQ2NyAxLjIgMi45MjIgMS4yIDYuOTMzdjcuMDQ1YS4yMjUuMjI1IDAgMCAxLS4zODQuMTU5ek0xNy4yMjIgMzUuNjE3bDIuNjU1LTIuNjYxYy4yMS0uMjExLjQ5Ni0uMzMuNzk0LS4zM2gzLjI0OWMzLjAwMiAwIDQuMDktLjMxMyA1LjE4OC0uOTAyYTYuMTI3IDYuMTI3IDAgMCAwIDIuNTQ2LTIuNTUxYy41ODctMS4xLjktMi4xOTEuOS01LjJ2LTQuMzA0YS4yMjUuMjI1IDAgMCAxIC4zODMtLjE1OWwyLjY1NiAyLjY2MWMuMjEuMjExLjMyOS40OTguMzI5Ljc5NnYxLjQ5N2MwIDQuMDExLS40MTcgNS40NjYtMS4yIDYuOTMzYTguMTY5IDguMTY5IDAgMCAxLTMuMzk0IDMuNDAyQzI5Ljg2NCAzNS41ODIgMjguNDEyIDM2IDI0LjQwOSAzNkgxNy4zOGEuMjI1LjIyNSAwIDAgMS0uMTU4LS4zODR6TS4zODMgMTcuMjU5TDMuMDQgMTkuOTJjLjIxLjIxMS4zMjkuNDk4LjMyOS43OTZ2My4yNTZjMCAzLjAwOS4zMTIgNC4xLjkgNS4yYTYuMTI3IDYuMTI3IDAgMCAwIDIuNTQ1IDIuNTUxYzEuMDk4LjU4OSAyLjE4Ny45MDIgNS4xODkuOTAyaDQuMjk0YS4yMjUuMjI1IDAgMCAxIC4xNi4zODRsLTIuNjU3IDIuNjYxYy0uMjEuMjExLS40OTYuMzMtLjc5My4zM2gtMS40OTRjLTQuMDAzIDAtNS40NTQtLjQxOC02LjkxOC0xLjIwMkE4LjE2OSA4LjE2OSAwIDAgMSAxLjIgMzEuMzk2Qy40MTcgMjkuOTI5IDAgMjguNDc0IDAgMjQuNDYzdi03LjA0NWEuMjI1LjIyNSAwIDAgMSAuMzgzLS4xNTl6TTE2LjA0NSAzLjA0NWMtLjIxMS4yMTEtLjQ5Ni4zMy0uNzk0LjMzaC0zLjI0OWMtMy4wMDIgMC00LjA5MS4zMTMtNS4xODkuOTAyYTYuMTI3IDYuMTI3IDAgMCAwLTIuNTQ2IDIuNTUxYy0uNTg3IDEuMS0uOSAyLjE5MS0uOSA1LjJ2NC4zMDRhLjIyNS4yMjUgMCAwIDEtLjM4My4xNTlMLjMzIDEzLjgzQTEuMTI2IDEuMTI2IDAgMCAxIDAgMTMuMDM0di0xLjQ5N2MwLTQuMDExLjQxNy01LjQ2NiAxLjItNi45MzNhOC4xNjkgOC4xNjkgMCAwIDEgMy4zOTQtMy40MDJDNi4wNTguNDE4IDcuNTEgMCAxMS41MTIgMGg3LjAzYS4yMjUuMjI1IDAgMCAxIC4xNTguMzg0bC0yLjY1NSAyLjY2MXptMTMuODg0IDEwLjA5MWwtMy42Mi0zLjQ2OGMtLjI0LS4yNC0uNTItLjQxNC0uODE5LS41MjNBMi4yMzYgMi4yMzYgMCAwIDAgMjQuNjk2IDlIMTQuMDFhLjIyNS4yMjUgMCAwIDEtLjE1OS0uMzg0bDIuNjU5LTIuNjYyYy4yMS0uMjEuNDk1LS4zMjkuNzkzLS4zMjloOC41MTZjMi40OCAwIDQuNDkgMi4wMTUgNC40OSA0LjV2Mi44NDlhLjIyNS4yMjUgMCAwIDEtLjM4LjE2MnptLTcuMTE1IDE2Ljg2MWwzLjQ2LTMuNjI5Yy4yNC0uMjQuNDE0LS41Mi41MjMtLjgyYTIuMjUgMi4yNSAwIDAgMCAuMTQ0LS43OTV2LTEwLjcxYS4yMjUuMjI1IDAgMCAxIC4zODQtLjE1OWwyLjY1NiAyLjY2NGMuMjEuMjExLjMyOC40OTcuMzI4Ljc5NnY4LjUzNGMwIDIuNDg1LTIuMDEgNC41LTQuNDkgNC41aC0yLjg0M2EuMjI1LjIyNSAwIDAgMS0uMTYyLS4zOHpNNS45OTIgMjIuODY0bDMuNjIyIDMuNDY4Yy4yMzkuMjQuNTIuNDE0LjgxOC41MjMuMjQ2LjA5NC41MTQuMTQ1Ljc5NC4xNDVoMTAuNjg2YS4yMjUuMjI1IDAgMCAxIC4xNTguMzg0bC0yLjY1OCAyLjY2MmMtLjIxLjIxLS40OTYuMzI5LS43OTMuMzI5aC04LjUxNmE0LjQ5NSA0LjQ5NSAwIDAgMS00LjQ5LTQuNXYtMi44NDlhLjIyNS4yMjUgMCAwIDEgLjM4LS4xNjJ6bTcuMTE2LTE2Ljg1OWwtMy40NjEgMy42M2MtLjI0LjI0LS40MTMuNTItLjUyMi44MmEyLjI1IDIuMjUgMCAwIDAtLjE0NS43OTV2MTAuNzFhLjIyNS4yMjUgMCAwIDEtLjM4My4xNThsLTIuNjU2LTIuNjY0YTEuMTI2IDEuMTI2IDAgMCAxLS4zMjgtLjc5NXYtOC41MzRjMC0yLjQ4NSAyLjAxLTQuNSA0LjQ5LTQuNWgyLjg0M2EuMjI1LjIyNSAwIDAgMSAuMTYyLjM4em0zMy4xMDUgNC4zNzloLjg2OGMuNTkzIDAgMS4wNzQuNDggMS4wNzQgMS4wNzR2MS4wMTZjMCAuMDMyLjAyNi4wNTcuMDU3LjA1Ny40OTUtLjg3NSAxLjE2LTEuNTEgMS45OTgtMS45MDlhNi4yMzYgNi4yMzYgMCAwIDEgMi43MS0uNTk2YzEuMDQ3IDAgMS45ODkuMTk0IDIuODI2LjU4Mi44MzcuMzg3IDEuNTUuOTIgMi4xNCAxLjU5NWE2Ljg5NiA2Ljg5NiAwIDAgMSAxLjM0IDIuMzg2Yy4zMDUuOTE1LjQ1NyAxLjkuNDU3IDIuOTUzYTguNzk1IDguNzk1IDAgMCAxLS40ODUgMi45NTMgNy40MTggNy40MTggMCAwIDEtMS4zNTUgMi4zODYgNi4yNjkgNi4yNjkgMCAwIDEtMi4wOTcgMS41OTUgNi4xODIgNi4xODIgMCAwIDEtMi42ODMuNTgyYy0uNjQ3IDAtMS4yMTctLjA3LTEuNzEyLS4yMDlhNS43NTEgNS43NTEgMCAwIDEtMS4zMTItLjUzNyA1LjI1MiA1LjI1MiAwIDAgMS0uOTctLjcgNS4wMTIgNS4wMTIgMCAwIDEtLjY1Ny0uNzMxLjA4Ni4wODYgMCAwIDAtLjA4Ni4wODV2Ny4yMjRhMS4zMSAxLjMxIDAgMCAxLTEuMzEgMS4zMWgtLjgwM2ExLjMxIDEuMzEgMCAwIDEtMS4zMS0xLjMxVjExLjY5NGMwLS43MjMuNTg2LTEuMzEgMS4zMS0xLjMxem0xMC4wNDYgNy4xNThjMC0uNTU3LS4wOS0xLjA5NC0uMjctMS42MWE0LjA3OCA0LjA3OCAwIDAgMC0uOC0xLjM3MyAzLjk5IDMuOTkgMCAwIDAtMS4yNy0uOTU0Yy0uNDk0LS4yMzktMS4wNTUtLjM1OC0xLjY4My0uMzU4LS42MjggMC0xLjE5LjEyLTEuNjg0LjM1OGEzLjk5IDMuOTkgMCAwIDAtMS4yNy45NTQgNC4wNzggNC4wNzggMCAwIDAtLjc5OSAxLjM3MiA0Ljg0NSA0Ljg0NSAwIDAgMC0uMjcgMS42MWMwIC41NTguMDkgMS4wOTQuMjcgMS42MTEuMTgxLjUxNy40NDcuOTc1LjggMS4zNzJhMy45OSAzLjk5IDAgMCAwIDEuMjcuOTU1Yy40OTQuMjM4IDEuMDU1LjM1OCAxLjY4My4zNTguNjI4IDAgMS4xODktLjEyIDEuNjgzLS4zNThhMy45OSAzLjk5IDAgMCAwIDEuMjctLjk1NWMuMzUyLS4zOTcuNjE4LS44NTUuOC0xLjM3Mi4xOC0uNTE3LjI3LTEuMDUzLjI3LTEuNjF6bTguMzU5LTcuMTU4aC45OGMuNjI2IDAgMS4xMzQuNTA3IDEuMTM0IDEuMTMzdjEuMDc3YzAgLjAzMS4wMjUuMDU3LjA1Ny4wNTcuMzgtLjgzNi45MjItMS40ODIgMS42MjYtMS45MzkuNzA0LS40NTcgMS41MTMtLjY4NiAyLjQyNi0uNjg2LjIwOSAwIC40MTQuMDIuNjEzLjA2YS43NjIuNzYyIDAgMCAxIC42MTQuNzQ3djEuOTY0YS43MTUuNzE1IDAgMCAxLS44NDIuNzA0IDQuNTggNC41OCAwIDAgMC0uODEzLS4wNzVjLS44IDAtMS40NDEuMTU0LTEuOTI2LjQ2Mi0uNDg1LjMwOS0uODU2LjY2MS0xLjExMyAxLjA2YTMuNiAzLjYgMCAwIDAtLjUxNCAxLjE5MmMtLjA4Ni4zOTgtLjEyOC42OTYtLjEyOC44OTV2Ni4zNTVhMS4zMSAxLjMxIDAgMCAxLTEuMzEgMS4zMWgtLjgwNGExLjMxIDEuMzEgMCAwIDEtMS4zMS0xLjMxVjExLjY5NGMwLS43MjMuNTg2LTEuMzEgMS4zMS0xLjMxem0xMS41ODUgMGguODA0Yy43MjMgMCAxLjMxLjU4NyAxLjMxIDEuMzFWMjMuMzlhMS4zMSAxLjMxIDAgMCAxLTEuMzEgMS4zMWgtLjgwNGExLjMxIDEuMzEgMCAwIDEtMS4zMS0xLjMxVjExLjY5NGMwLS43MjMuNTg2LTEuMzEgMS4zMS0xLjMxem0tMS43OTUtNC44NjJjMC0uNTc2LjIwNC0xLjA3OC42MTMtMS41MDYuNDEtLjQyNy45MjgtLjY0MSAxLjU1NS0uNjQxLjYyOCAwIDEuMTU2LjIwNCAxLjU4NC42MTEuNDI4LjQwOC42NDIuOTIuNjQyIDEuNTM2IDAgLjYxNy0uMjE0IDEuMTI5LS42NDIgMS41MzYtLjQyOC40MDgtLjk1Ni42MTItMS41ODQuNjEyLS42MjcgMC0xLjE0Ni0uMjE0LTEuNTU1LS42NDFhMi4xMDggMi4xMDggMCAwIDEtLjYxMy0xLjUwN3ptMTQuNzUzIDguMTMzYy0uNjk1LS41MS0xLjMxNC0uNzY2LTEuODU1LS43NjYtLjQ1NyAwLS45MDQuMTItMS4zNDIuMzU4LS40MzcuMjM5LS42NTYuNjI2LS42NTYgMS4xNjMgMCAuNDM4LjE4Ljc1Ni41NDIuOTU1LjM2Mi4xOTguODE4LjM2OCAxLjM3LjUwNy41NTIuMTM5IDEuMTQ2LjI4MyAxLjc4My40MzIuNjM4LjE1IDEuMjMyLjM3OCAxLjc4NC42ODYuNTUyLjMwOCAxLjAwOC43MyAxLjM3IDEuMjY4LjM2MS41MzcuNTQyIDEuMjcyLjU0MiAyLjIwNyAwIC44NTUtLjE3NiAxLjU3NS0uNTI4IDIuMTYyYTQuMjQxIDQuMjQxIDAgMCAxLTEuMzcgMS40MTcgNS45MjcgNS45MjcgMCAwIDEtMS44OTcuNzc1IDkuNTUzIDkuNTUzIDAgMCAxLTIuMTEyLjIzOWMtMS4wNjUgMC0yLjA0NS0uMTYtMi45NC0uNDc3LS4zNS0uMTI1LS43Ny0uMzc1LTEuMjYtLjc1MWExLjMxIDEuMzEgMCAwIDEtLjExOS0xLjk3NmwuMzU1LS4zNDhhMS4zMSAxLjMxIDAgMCAxIDEuNzgzLS4wNDhjLjIwOC4xODMuMzg4LjMyNC41NC40MjMuNTA0LjMyOSAxLjExOC40OTMgMS44NC40OTMuMjQ4IDAgLjUwNS0uMDMuNzcxLS4wOS4yNjctLjA2LjUxNC0uMTU5Ljc0Mi0uMjk4LjIyOC0uMTQuNDE0LS4zMTMuNTU3LS41MjIuMTQyLS4yMDkuMjE0LS40NTIuMjE0LS43MyAwLS40OTgtLjE4MS0uODY2LS41NDMtMS4xMDQtLjM2MS0uMjM5LS44MTgtLjQzMy0xLjM3LS41ODJhMjguNzQ2IDI4Ljc0NiAwIDAgMC0xLjc4My0uNDE3IDYuNzA3IDYuNzA3IDAgMCAxLTEuNzgzLS42MjcgMy43OTUgMy43OTUgMCAwIDEtMS4zNy0xLjIwOGMtLjM2MS0uNTE3LS41NDItMS4yMzMtLjU0Mi0yLjE0NyAwLS43OTUuMTU3LTEuNDg2LjQ3LTIuMDczYTQuMjY1IDQuMjY1IDAgMCAxIDEuMjQyLTEuNDQ2IDUuMjU2IDUuMjU2IDAgMCAxIDEuNzctLjgzNiA3Ljc3MyA3Ljc3MyAwIDAgMSAyLjAyNS0uMjY4Yy45MTMgMCAxLjgxNy4xNjQgMi43MTEuNDkyLjMyNC4xMTkuNjg1LjMzOSAxLjA4NC42NmExLjMxIDEuMzEgMCAwIDEgLjA3NSAxLjk3NWwtLjQyNi40MDFhMS4zMSAxLjMxIDAgMCAxLTEuNjc0LjEwMXptNy43ODctMy4yNzFoLjYzM2MuNzIzIDAgMS4zMS41ODcgMS4zMSAxLjMxdi45MjdhNS42MDIgNS42MDIgMCAwIDEgMS41MjctMS44MDVjLjY3NS0uNTI3IDEuNTgzLS43OSAyLjcyNS0uNzkgMi4xNSAwIDMuNTc2Ljg4NSA0LjI4IDIuNjU0LjQ5NS0uOTE0IDEuMTEzLTEuNTg1IDEuODU1LTIuMDEzLjc0Mi0uNDI3IDEuNjI2LS42NDEgMi42NTQtLjY0MS45MTMgMCAxLjY4My4xNTkgMi4zMTEuNDc3YTQuMDg0IDQuMDg0IDAgMCAxIDEuNTI3IDEuMzEyYy4zOS41NTcuNjcgMS4yMDguODQxIDEuOTU0LjE3Mi43NDYuMjU3IDEuNTQ2LjI1NyAyLjR2Ny4yMmExLjMxIDEuMzEgMCAwIDEtMS4zMSAxLjMxaC0uODA0YTEuMzEgMS4zMSAwIDAgMS0xLjMxLTEuMzF2LTYuODAyYzAtLjQzNy0uMDM4LS44Ni0uMTE0LTEuMjY3YTMuMTExIDMuMTExIDAgMCAwLS40LTEuMDc0IDIuMDYyIDIuMDYyIDAgMCAwLS43Ny0uNzNjLS4zMjQtLjE4LS43NDItLjI2OS0xLjI1Ni0uMjY5LS41MzIgMC0uOTg0LjEwNC0xLjM1NS4zMTNhMi42ODYgMi42ODYgMCAwIDAtLjkxMy44MzUgMy41MDggMy41MDggMCAwIDAtLjUxNCAxLjE5MyA1Ljk0IDUuOTQgMCAwIDAtLjE1NyAxLjM1N3Y2LjQ0NWExLjMxIDEuMzEgMCAwIDEtMS4zMSAxLjMxaC0uODA0YTEuMzEgMS4zMSAwIDAgMS0xLjMxLTEuMzF2LTcuMjJjMC0uODk1LS4xOC0xLjYwNi0uNTQyLTIuMTMzLS4zNjItLjUyNi0uOTYtLjc5LTEuNzk4LS43OS0uNTcgMC0xLjA1MS4xLTEuNDQxLjI5OC0uMzkuMi0uNzEzLjQ2OC0uOTcuODA2YTMuMjYgMy4yNiAwIDAgMC0uNTU3IDEuMTYzIDUuNDEzIDUuNDEzIDAgMCAwLS4xNyAxLjM3MnY2LjUwNGExLjMxIDEuMzEgMCAwIDEtMS4zMTEgMS4zMWgtLjgwNGExLjMxIDEuMzEgMCAwIDEtMS4zMS0xLjMxVjExLjY5NGMwLS43MjMuNTg3LTEuMzEgMS4zMS0xLjMxem0yNS40NTQgMGguODAzYy43MjQgMCAxLjMxLjU4NyAxLjMxIDEuMzFWMjMuMzlhMS4zMSAxLjMxIDAgMCAxLTEuMzEgMS4zMWgtLjgwM2ExLjMxIDEuMzEgMCAwIDEtMS4zMS0xLjMxVjExLjY5NGMwLS43MjMuNTg2LTEuMzEgMS4zMS0xLjMxem0tMS43OTYtNC44NjJjMC0uNTc2LjIwNS0xLjA3OC42MTQtMS41MDYuNDA5LS40MjcuOTI3LS42NDEgMS41NTUtLjY0MS42MjggMCAxLjE1Ni4yMDQgMS41ODQuNjExLjQyOC40MDguNjQyLjkyLjY0MiAxLjUzNiAwIC42MTctLjIxNCAxLjEyOS0uNjQyIDEuNTM2LS40MjguNDA4LS45NTYuNjEyLTEuNTg0LjYxMi0uNjI4IDAtMS4xNDYtLjIxNC0xLjU1NS0uNjQxYTIuMTA4IDIuMTA4IDAgMCAxLS42MTQtMS41MDd6bTE2Ljc1MSA4LjM3M2EzLjU2NCAzLjU2NCAwIDAgMC0uMzcxLS4yNiAyLjYwNyAyLjYwNyAwIDAgMC0xLjM0Mi0uMzg4Yy0uNjI3IDAtMS4xODkuMTItMS42ODMuMzU4YTMuOTkgMy45OSAwIDAgMC0xLjI3Ljk1NCA0LjA3OCA0LjA3OCAwIDAgMC0uNzk5IDEuMzcyIDQuODQ1IDQuODQ1IDAgMCAwLS4yNzEgMS42MWMwIC41NTguMDkgMS4wOTQuMjcxIDEuNjExLjE4LjUxNy40NDcuOTc1LjggMS4zNzJhMy45OSAzLjk5IDAgMCAwIDEuMjY5Ljk1NWMuNDk0LjIzOCAxLjA1Ni4zNTggMS42ODMuMzU4LjUzMyAwIDEuMDI4LS4xMTUgMS40ODQtLjM0My4wOTMtLjA0Ny4xOTMtLjExLjMtLjE4OWExLjMxIDEuMzEgMCAwIDEgMS43NTYuMTg1bC41Mi41ODRhMS4yNDggMS4yNDggMCAwIDEtLjMwNyAxLjkxIDcuOTggNy45OCAwIDAgMS0yLjY2OC45N2MtLjQxOS4wNjktLjc4LjEwNC0xLjA4NS4xMDRhNy45MDQgNy45MDQgMCAwIDEtMi45MS0uNTM3QTYuOTM4IDYuOTM4IDAgMCAxIDEzMC4zNjUgMjNhNy4yMyA3LjIzIDAgMCAxLTEuNTgzLTIuMzcxYy0uMzktLjkyNS0uNTg1LTEuOTU0LS41ODUtMy4wODcgMC0xLjEzMy4xOTUtMi4xNjIuNTg1LTMuMDg3YTcuMjMgNy4yMyAwIDAgMSAxLjU4My0yLjM3MSA2LjkzOCA2LjkzOCAwIDAgMSAyLjM2OS0xLjUyMSA3LjkwNCA3LjkwNCAwIDAgMSAyLjkxLS41MzdjLjg3NiAwIDEuNzU1LjE3NCAyLjY0LjUyMi4zMzcuMTMzLjczNS4zNyAxLjE5My43MTFhMS4zMSAxLjMxIDAgMCAxIC4xNjQgMS45NTdsLS41My41NTNhMS4zMSAxLjMxIDAgMCAxLTEuNzU0LjEyNnoiLz4KPC9zdmc+"
6
+ alt="Prismic">
7
+ <figcaption>
8
+ Loading preview...
9
+ </figcaption>
10
+ </figure>
11
+ </section>
12
+ </template>
13
+
14
+ <script setup>
15
+ import { useHead, usePrismicPreview } from '#imports'
16
+
17
+ useHead({
18
+ title: 'Prismic Preview - Loading'
19
+ })
20
+
21
+ usePrismicPreview()
22
+ </script>
23
+
24
+ <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
+ }
45
+ </style>
@@ -0,0 +1,6 @@
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
+ */
6
+ export declare const usePrismicPreview: (defaultURL?: string) => void;
@@ -0,0 +1,13 @@
1
+ import { onMounted } from "vue";
2
+ import { useRouter, usePrismic } from "#imports";
3
+ export const usePrismicPreview = (defaultURL = "/") => {
4
+ const { client, options: { linkResolver } } = usePrismic();
5
+ const { push } = useRouter();
6
+ onMounted(async () => {
7
+ const redirectURL = await client.resolvePreviewURL({
8
+ linkResolver,
9
+ defaultURL
10
+ });
11
+ push(redirectURL);
12
+ });
13
+ };
@@ -0,0 +1,10 @@
1
+
2
+ import { ModuleOptions } from './module'
3
+
4
+ declare module '@nuxt/schema' {
5
+ interface NuxtConfig { ['prismic']?: Partial<ModuleOptions> }
6
+ interface NuxtOptions { ['prismic']?: ModuleOptions }
7
+ }
8
+
9
+
10
+ export { default } from './module'
package/package.json CHANGED
@@ -1,47 +1,69 @@
1
1
  {
2
- "name": "@nuxtjs/prismic",
3
- "version": "1.4.2",
4
- "description": "Easily connect your Nuxt.js application to your content hosted on Prismic",
5
- "keywords": [
6
- "nuxt",
7
- "module",
8
- "nuxt-module",
9
- "prismic",
10
- "cms"
11
- ],
12
- "repository": "nuxt-community/prismic-module",
13
- "license": "MIT",
14
- "main": "src/module.js",
15
- "files": [
16
- "src",
17
- "templates"
18
- ],
19
- "scripts": {
20
- "dev": "nuxt example",
21
- "release": "yarn test && standard-version && git push --follow-tags && npm publish",
22
- "release:dry": "standard-version --dry-run",
23
- "release:alpha": "yarn test && standard-version --release-as minor --prerelease alpha && git push --follow-tags && npm publish --tag alpha",
24
- "release:alpha:dry": "standard-version --release-as minor --prerelease alpha --dry-run",
25
- "unit": "jest",
26
- "lint": "eslint --ext .js,.ts,.vue .",
27
- "test": "npm run lint && npm run unit"
28
- },
29
- "dependencies": {
30
- "@prismicio/client": "^4.0.0 || ^5.1.0",
31
- "@prismicio/vue": "^2.1.0",
32
- "consola": "^2.15.3",
33
- "prismic-dom": "^2.2.6"
34
- },
35
- "devDependencies": {
36
- "@nuxtjs/eslint-config": "latest",
37
- "@types/jest": "latest",
38
- "babel-eslint": "latest",
39
- "eslint": "latest",
40
- "jest": "latest",
41
- "nuxt-edge": "latest",
42
- "standard-version": "latest"
43
- },
44
- "engines": {
45
- "node": ">= v12.0.0"
46
- }
2
+ "name": "@nuxtjs/prismic",
3
+ "version": "3.0.0-alpha.10",
4
+ "description": "Easily connect your Nuxt 3 application to your content hosted on Prismic",
5
+ "keywords": [
6
+ "nuxt",
7
+ "module",
8
+ "nuxt-module",
9
+ "typescript",
10
+ "prismic",
11
+ "cms"
12
+ ],
13
+ "repository": {
14
+ "type": "git",
15
+ "url": "ssh://git@github.com/nuxt-community/prismic-module.git"
16
+ },
17
+ "license": "MIT",
18
+ "author": "Nuxt.js Community",
19
+ "type": "module",
20
+ "exports": {
21
+ ".": {
22
+ "require": "./dist/module.cjs",
23
+ "import": "./dist/module.mjs"
24
+ },
25
+ "./runtime/*": "./dist/runtime/*",
26
+ "./package.json": "./package.json"
27
+ },
28
+ "main": "dist/module.cjs",
29
+ "module": "dist/module.mjs",
30
+ "types": "dist/types.d.ts",
31
+ "files": [
32
+ "dist",
33
+ "src"
34
+ ],
35
+ "scripts": {
36
+ "build": "nuxt-module-build",
37
+ "dev": "nuxi dev playground",
38
+ "dev:build": "nuxi build playground",
39
+ "lint": "eslint --ext .js,.ts .",
40
+ "prepare": "nuxi prepare playground && npm run build",
41
+ "release": "npm run build && npm run test && standard-version && git push --follow-tags && npm run build && npm publish",
42
+ "release:alpha": "npm run build && npm run test && standard-version --release-as major --prerelease alpha && git push --follow-tags && npm run build && npm publish --tag alpha",
43
+ "release:alpha:dry": "standard-version --release-as major --prerelease alpha --dry-run",
44
+ "release:dry": "standard-version --dry-run",
45
+ "test": "npm run lint && npm run unit",
46
+ "unit": "echo \"TODO: vitest & nuxt-test-utils\""
47
+ },
48
+ "dependencies": {
49
+ "@nuxt/kit": "^3.0.0-rc",
50
+ "@prismicio/client": "^6.6.1",
51
+ "@prismicio/vue": "^3.0.0-beta",
52
+ "consola": "^2.15.3",
53
+ "ufo": "^0.8.4"
54
+ },
55
+ "devDependencies": {
56
+ "@nuxt/module-builder": "latest",
57
+ "@nuxtjs/eslint-config-typescript": "latest",
58
+ "eslint": "^8.18.0",
59
+ "nuxt": "^3.0.0-rc",
60
+ "standard-version": "^9.5.0",
61
+ "typescript": "^4.7.4"
62
+ },
63
+ "engines": {
64
+ "node": ">=14.15.0"
65
+ },
66
+ "publishConfig": {
67
+ "access": "public"
68
+ }
47
69
  }
package/src/logger.ts ADDED
@@ -0,0 +1,3 @@
1
+ import consola from 'consola'
2
+
3
+ export const logger = consola.withScope('nuxt:prismic')