@nuxtjs/prismic 3.0.0-alpha.1 → 3.0.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/module.d.ts +5 -2
- package/dist/module.json +1 -1
- package/dist/module.mjs +45 -24
- package/dist/runtime/plugin.mjs +11 -1
- package/dist/types.d.ts +5 -1
- package/package.json +7 -10
- package/src/module.ts +58 -28
- package/src/runtime/plugin.ts +13 -1
- package/src/types.ts +5 -2
- package/src/utils.ts +14 -0
package/dist/module.d.ts
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import * as _nuxt_schema from '@nuxt/schema';
|
|
2
2
|
import { PrismicPluginOptions } from '@prismicio/vue';
|
|
3
3
|
|
|
4
|
-
declare type PrismicModuleOptions = PrismicPluginOptions & {
|
|
4
|
+
declare type PrismicModuleOptions = Omit<PrismicPluginOptions, 'endpoint' | 'client' | 'linkResolver'> & {
|
|
5
|
+
endpoint: string;
|
|
6
|
+
client?: string;
|
|
7
|
+
linkResolver?: string;
|
|
5
8
|
preview?: string | false;
|
|
6
9
|
};
|
|
7
10
|
|
|
8
11
|
declare const _default: _nuxt_schema.NuxtModule<PrismicModuleOptions>;
|
|
9
12
|
|
|
10
|
-
export { _default as default };
|
|
13
|
+
export { PrismicModuleOptions as ModuleOptions, PrismicModuleOptions, _default as default };
|
package/dist/module.json
CHANGED
package/dist/module.mjs
CHANGED
|
@@ -1,11 +1,23 @@
|
|
|
1
1
|
import { join } from 'path';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { defineNuxtModule, createResolver, addPlugin, addComponent, addAutoImport, extendPages, addTemplate } from '@nuxt/kit';
|
|
3
|
+
import { cleanDoubleSlashes } from 'ufo';
|
|
4
|
+
import { isRepositoryEndpoint, getRepositoryName } from '@prismicio/client';
|
|
4
5
|
import * as prismicVue from '@prismicio/vue';
|
|
6
|
+
import { existsSync } from 'fs';
|
|
5
7
|
import consola from 'consola';
|
|
6
8
|
|
|
7
9
|
const name = "@nuxtjs/prismic";
|
|
8
|
-
const version = "3.0.0-alpha.
|
|
10
|
+
const version = "3.0.0-alpha.2";
|
|
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
|
+
};
|
|
9
21
|
|
|
10
22
|
const logger = consola.withScope("nuxt:prismic");
|
|
11
23
|
|
|
@@ -16,26 +28,44 @@ const module = defineNuxtModule({
|
|
|
16
28
|
configKey: "prismic",
|
|
17
29
|
compatibility: { nuxt: "^3.0.0" }
|
|
18
30
|
},
|
|
19
|
-
defaults: {
|
|
31
|
+
defaults: (nuxt) => ({
|
|
20
32
|
endpoint: "",
|
|
21
33
|
clientConfig: {},
|
|
22
|
-
|
|
34
|
+
client: cleanDoubleSlashes(`~/${nuxt.options.dir.app}/prismic/client`),
|
|
35
|
+
linkResolver: cleanDoubleSlashes(`~/${nuxt.options.dir.app}/prismic/linkResolver`),
|
|
23
36
|
htmlSerializer: void 0,
|
|
24
37
|
injectComponents: true,
|
|
25
|
-
components: {
|
|
26
|
-
linkInternalComponent: "nuxt-link"
|
|
27
|
-
},
|
|
38
|
+
components: {},
|
|
28
39
|
preview: "/preview"
|
|
29
|
-
},
|
|
40
|
+
}),
|
|
30
41
|
hooks: {},
|
|
31
42
|
setup(mergedOptions, nuxt) {
|
|
32
43
|
var _a, _b, _c;
|
|
33
|
-
if (!mergedOptions.
|
|
34
|
-
logger.warn("Options `endpoint`
|
|
44
|
+
if (!mergedOptions.endpoint) {
|
|
45
|
+
logger.warn("Options `endpoint` is required, disabling module...");
|
|
35
46
|
return;
|
|
36
47
|
}
|
|
37
48
|
const resolver = createResolver(import.meta.url);
|
|
38
49
|
nuxt.options.build.transpile.push(resolver.resolve("runtime"));
|
|
50
|
+
const addUserFileWithUndefinedFallback = (filename, path, extensions = ["js", "ts"]) => {
|
|
51
|
+
const resolvedFilename = `prismic/${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(/\\/g, "/")}\``);
|
|
56
|
+
addTemplate({
|
|
57
|
+
filename: resolvedFilename,
|
|
58
|
+
src: maybeUserFile
|
|
59
|
+
});
|
|
60
|
+
} else {
|
|
61
|
+
addTemplate({
|
|
62
|
+
filename: resolvedFilename,
|
|
63
|
+
getContents: () => "export default undefined"
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
addUserFileWithUndefinedFallback("client", mergedOptions.client);
|
|
68
|
+
addUserFileWithUndefinedFallback("linkResolver", mergedOptions.linkResolver);
|
|
39
69
|
(_a = nuxt.options).publicRuntimeConfig || (_a.publicRuntimeConfig = {});
|
|
40
70
|
nuxt.options.publicRuntimeConfig[name] = mergedOptions;
|
|
41
71
|
addPlugin(resolver.resolve("runtime/plugin"));
|
|
@@ -64,9 +94,9 @@ const module = defineNuxtModule({
|
|
|
64
94
|
});
|
|
65
95
|
addAutoImport(composableAutoImports);
|
|
66
96
|
if (mergedOptions.preview) {
|
|
67
|
-
const
|
|
68
|
-
if (
|
|
69
|
-
logger.info(`Using user-defined preview page at \`${
|
|
97
|
+
const maybeUserPreviewPage = fileExists(join(nuxt.options.srcDir, nuxt.options.dir.pages, mergedOptions.preview), ["js", "ts", "vue"]);
|
|
98
|
+
if (maybeUserPreviewPage) {
|
|
99
|
+
logger.info(`Using user-defined preview page at \`${maybeUserPreviewPage.replace(join(nuxt.options.srcDir), "~").replace(/\\/g, "/")}\`, available at \`${mergedOptions.preview}\``);
|
|
70
100
|
} else {
|
|
71
101
|
logger.info(`Using default preview page, available at \`${mergedOptions.preview}\``);
|
|
72
102
|
extendPages((pages) => {
|
|
@@ -77,16 +107,7 @@ const module = defineNuxtModule({
|
|
|
77
107
|
});
|
|
78
108
|
});
|
|
79
109
|
}
|
|
80
|
-
|
|
81
|
-
if (mergedOptions.client) {
|
|
82
|
-
repositoryName = new URL(mergedOptions.client.endpoint).host.split(".")[0];
|
|
83
|
-
} else {
|
|
84
|
-
try {
|
|
85
|
-
repositoryName = new URL(mergedOptions.endpoint).host.split(".")[0];
|
|
86
|
-
} catch (error) {
|
|
87
|
-
repositoryName = mergedOptions.endpoint;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
110
|
+
const repositoryName = isRepositoryEndpoint(mergedOptions.endpoint) ? getRepositoryName(mergedOptions.endpoint) : mergedOptions.endpoint;
|
|
90
111
|
(_b = nuxt.options).meta || (_b.meta = {});
|
|
91
112
|
(_c = nuxt.options.meta).script || (_c.script = []);
|
|
92
113
|
nuxt.options.meta.script.push({
|
package/dist/runtime/plugin.mjs
CHANGED
|
@@ -1,10 +1,20 @@
|
|
|
1
1
|
import { defineNuxtPlugin } from "#app";
|
|
2
|
+
import NuxtLink from "#app/components/nuxt-link";
|
|
2
3
|
import { createPrismic } from "@prismicio/vue";
|
|
3
4
|
import { name as pkgName } from "../../package.json";
|
|
5
|
+
import linkResolver from "#build/prismic/linkResolver";
|
|
6
|
+
import client from "#build/prismic/client";
|
|
4
7
|
export default defineNuxtPlugin((nuxtApp) => {
|
|
5
8
|
const mergedOptions = nuxtApp.payload.config[pkgName];
|
|
6
9
|
nuxtApp.vueApp.use(createPrismic({
|
|
7
10
|
...mergedOptions,
|
|
8
|
-
|
|
11
|
+
client,
|
|
12
|
+
linkResolver,
|
|
13
|
+
injectComponents: false,
|
|
14
|
+
components: {
|
|
15
|
+
linkInternalComponent: NuxtLink,
|
|
16
|
+
linkExternalComponent: NuxtLink,
|
|
17
|
+
...mergedOptions.components
|
|
18
|
+
}
|
|
9
19
|
}));
|
|
10
20
|
});
|
package/dist/types.d.ts
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
|
|
2
|
-
import {
|
|
2
|
+
import { ModuleOptions } from './module'
|
|
3
3
|
|
|
4
|
+
declare module '@nuxt/schema' {
|
|
5
|
+
interface NuxtConfig { ['prismic']?: Partial<ModuleOptions> }
|
|
6
|
+
interface NuxtOptions { ['prismic']?: ModuleOptions }
|
|
7
|
+
}
|
|
4
8
|
|
|
5
9
|
|
|
6
10
|
export { default } from './module'
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nuxtjs/prismic",
|
|
3
|
-
"version": "3.0.0-alpha.
|
|
3
|
+
"version": "3.0.0-alpha.2",
|
|
4
4
|
"description": "Easily connect your Nuxt 3 application to your content hosted on Prismic",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"nuxt",
|
|
@@ -36,31 +36,28 @@
|
|
|
36
36
|
"dev": "nuxi dev playground",
|
|
37
37
|
"dev:build": "nuxi build playground",
|
|
38
38
|
"lint": "eslint --ext .js,.ts .",
|
|
39
|
-
"playground:build": "nuxi build playground",
|
|
40
|
-
"playground:dev": "nuxi dev playground",
|
|
41
39
|
"prepare": "nuxi prepare playground && npm run build",
|
|
42
40
|
"release": "npm run build && npm run test && standard-version && git push --follow-tags && npm run build && npm publish",
|
|
43
41
|
"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",
|
|
44
42
|
"release:alpha:dry": "standard-version --release-as major --prerelease alpha --dry-run",
|
|
45
43
|
"release:dry": "standard-version --dry-run",
|
|
46
44
|
"test": "npm run lint && npm run unit",
|
|
47
|
-
"unit": "
|
|
45
|
+
"unit": "echo \"TODO: vitest & nuxt-test-utils\""
|
|
48
46
|
},
|
|
49
47
|
"dependencies": {
|
|
50
48
|
"@nuxt/kit": "npm:@nuxt/kit-edge@latest",
|
|
49
|
+
"@prismicio/client": "^6.4.2",
|
|
51
50
|
"@prismicio/vue": "^3.0.0-beta",
|
|
52
|
-
"consola": "^2.15.3"
|
|
51
|
+
"consola": "^2.15.3",
|
|
52
|
+
"ufo": "^0.8.1"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
55
|
"@nuxt/module-builder": "latest",
|
|
56
56
|
"@nuxtjs/eslint-config-typescript": "latest",
|
|
57
|
-
"
|
|
58
|
-
"eslint": "^8.9.0",
|
|
57
|
+
"eslint": "^8.11.0",
|
|
59
58
|
"nuxt3": "latest",
|
|
60
|
-
"nyc": "^15.1.0",
|
|
61
59
|
"standard-version": "^9.3.2",
|
|
62
|
-
"
|
|
63
|
-
"typescript": "^4.5.5"
|
|
60
|
+
"typescript": "^4.6.2"
|
|
64
61
|
},
|
|
65
62
|
"engines": {
|
|
66
63
|
"node": ">=12.7.0"
|
package/src/module.ts
CHANGED
|
@@ -1,13 +1,29 @@
|
|
|
1
1
|
import { join } from 'path'
|
|
2
|
-
import { existsSync } from 'fs'
|
|
3
|
-
import { defineNuxtModule, createResolver, addPlugin, addAutoImport, addComponent, extendPages } from '@nuxt/kit'
|
|
4
2
|
|
|
3
|
+
import {
|
|
4
|
+
defineNuxtModule,
|
|
5
|
+
createResolver,
|
|
6
|
+
addTemplate,
|
|
7
|
+
addPlugin,
|
|
8
|
+
addAutoImport,
|
|
9
|
+
addComponent,
|
|
10
|
+
extendPages
|
|
11
|
+
} from '@nuxt/kit'
|
|
12
|
+
import { cleanDoubleSlashes } from 'ufo'
|
|
13
|
+
|
|
14
|
+
import { isRepositoryEndpoint, getRepositoryName } from '@prismicio/client'
|
|
5
15
|
import * as prismicVue from '@prismicio/vue'
|
|
6
16
|
|
|
7
17
|
import { name as pkgName, version as pkgVersion } from '../package.json'
|
|
8
|
-
import { PrismicModuleOptions } from './types'
|
|
18
|
+
import type { PrismicModuleOptions } from './types'
|
|
19
|
+
import { fileExists } from './utils'
|
|
9
20
|
import { logger } from './logger'
|
|
10
21
|
|
|
22
|
+
// Options export
|
|
23
|
+
export type { PrismicModuleOptions } from './types'
|
|
24
|
+
export type { PrismicModuleOptions as ModuleOptions } from './types'
|
|
25
|
+
|
|
26
|
+
// Module export
|
|
11
27
|
export default defineNuxtModule<PrismicModuleOptions>({
|
|
12
28
|
meta: {
|
|
13
29
|
name: pkgName,
|
|
@@ -15,21 +31,20 @@ export default defineNuxtModule<PrismicModuleOptions>({
|
|
|
15
31
|
configKey: 'prismic',
|
|
16
32
|
compatibility: { nuxt: '^3.0.0' }
|
|
17
33
|
},
|
|
18
|
-
defaults: {
|
|
34
|
+
defaults: nuxt => ({
|
|
19
35
|
endpoint: '',
|
|
20
36
|
clientConfig: {},
|
|
21
|
-
|
|
37
|
+
client: cleanDoubleSlashes(`~/${nuxt.options.dir.app}/prismic/client`),
|
|
38
|
+
linkResolver: cleanDoubleSlashes(`~/${nuxt.options.dir.app}/prismic/linkResolver`),
|
|
22
39
|
htmlSerializer: undefined,
|
|
23
40
|
injectComponents: true,
|
|
24
|
-
components: {
|
|
25
|
-
linkInternalComponent: 'nuxt-link'
|
|
26
|
-
},
|
|
41
|
+
components: {},
|
|
27
42
|
preview: '/preview'
|
|
28
|
-
},
|
|
43
|
+
}),
|
|
29
44
|
hooks: {},
|
|
30
45
|
setup (mergedOptions, nuxt) {
|
|
31
|
-
if (!mergedOptions.
|
|
32
|
-
logger.warn('Options `endpoint`
|
|
46
|
+
if (!mergedOptions.endpoint) {
|
|
47
|
+
logger.warn('Options `endpoint` is required, disabling module...')
|
|
33
48
|
return
|
|
34
49
|
}
|
|
35
50
|
|
|
@@ -37,8 +52,33 @@ export default defineNuxtModule<PrismicModuleOptions>({
|
|
|
37
52
|
const resolver = createResolver(import.meta.url)
|
|
38
53
|
nuxt.options.build.transpile.push(resolver.resolve('runtime'))
|
|
39
54
|
|
|
55
|
+
// Add runtime user code
|
|
56
|
+
const addUserFileWithUndefinedFallback = (filename: string, path?: string, extensions = ['js', 'ts']) => {
|
|
57
|
+
const resolvedFilename = `prismic/${filename}.ts`
|
|
58
|
+
const resolvedPath = path
|
|
59
|
+
? path.replace(/^(~~|@@)/, nuxt.options.rootDir).replace(/^(~|@)/, nuxt.options.srcDir)
|
|
60
|
+
: undefined
|
|
61
|
+
const maybeUserFile = fileExists(resolvedPath, extensions)
|
|
62
|
+
|
|
63
|
+
if (maybeUserFile) {
|
|
64
|
+
logger.info(`Using user-defined \`${filename}\` at \`${maybeUserFile.replace(nuxt.options.srcDir, '~').replace(/\\/g, '/')}\``)
|
|
65
|
+
|
|
66
|
+
addTemplate({
|
|
67
|
+
filename: resolvedFilename,
|
|
68
|
+
src: maybeUserFile
|
|
69
|
+
})
|
|
70
|
+
} else {
|
|
71
|
+
addTemplate({
|
|
72
|
+
filename: resolvedFilename,
|
|
73
|
+
getContents: () => 'export default undefined'
|
|
74
|
+
})
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
addUserFileWithUndefinedFallback('client', mergedOptions.client)
|
|
78
|
+
addUserFileWithUndefinedFallback('linkResolver', mergedOptions.linkResolver)
|
|
79
|
+
|
|
40
80
|
// Expose options through public runtime config
|
|
41
|
-
nuxt.options.publicRuntimeConfig ||= {}
|
|
81
|
+
nuxt.options.publicRuntimeConfig ||= {} as typeof nuxt.options.publicRuntimeConfig
|
|
42
82
|
nuxt.options.publicRuntimeConfig[pkgName] = mergedOptions
|
|
43
83
|
|
|
44
84
|
// Add plugin
|
|
@@ -77,11 +117,10 @@ export default defineNuxtModule<PrismicModuleOptions>({
|
|
|
77
117
|
|
|
78
118
|
// Add preview route
|
|
79
119
|
if (mergedOptions.preview) {
|
|
80
|
-
const
|
|
120
|
+
const maybeUserPreviewPage = fileExists(join(nuxt.options.srcDir, nuxt.options.dir.pages, mergedOptions.preview), ['js', 'ts', 'vue'])
|
|
81
121
|
|
|
82
|
-
if (
|
|
83
|
-
logger.info(`Using user-defined preview page at \`${
|
|
84
|
-
userPreviewPagePath.replace(join(nuxt.options.rootDir), '~~').replace(/\\/g, '/')
|
|
122
|
+
if (maybeUserPreviewPage) {
|
|
123
|
+
logger.info(`Using user-defined preview page at \`${maybeUserPreviewPage.replace(join(nuxt.options.srcDir), '~').replace(/\\/g, '/')
|
|
85
124
|
}\`, available at \`${mergedOptions.preview}\``)
|
|
86
125
|
} else {
|
|
87
126
|
logger.info(`Using default preview page, available at \`${mergedOptions.preview}\``)
|
|
@@ -95,19 +134,10 @@ export default defineNuxtModule<PrismicModuleOptions>({
|
|
|
95
134
|
})
|
|
96
135
|
}
|
|
97
136
|
|
|
98
|
-
// TODO: Refactor with new client helpers
|
|
99
|
-
let repositoryName = ''
|
|
100
|
-
if (mergedOptions.client) {
|
|
101
|
-
repositoryName = new URL(mergedOptions.client.endpoint).host.split('.')[0]
|
|
102
|
-
} else {
|
|
103
|
-
try {
|
|
104
|
-
repositoryName = new URL(mergedOptions.endpoint).host.split('.')[0]
|
|
105
|
-
} catch (error) {
|
|
106
|
-
repositoryName = mergedOptions.endpoint
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
|
|
110
137
|
// Add toolbar
|
|
138
|
+
const repositoryName = isRepositoryEndpoint(mergedOptions.endpoint)
|
|
139
|
+
? getRepositoryName(mergedOptions.endpoint)
|
|
140
|
+
: mergedOptions.endpoint
|
|
111
141
|
nuxt.options.meta ||= {}
|
|
112
142
|
nuxt.options.meta.script ||= []
|
|
113
143
|
nuxt.options.meta.script.push({
|
package/src/runtime/plugin.ts
CHANGED
|
@@ -1,14 +1,26 @@
|
|
|
1
1
|
import { defineNuxtPlugin } from '#app'
|
|
2
|
+
import NuxtLink from '#app/components/nuxt-link'
|
|
3
|
+
|
|
2
4
|
import { createPrismic } from '@prismicio/vue'
|
|
3
5
|
|
|
4
6
|
import { name as pkgName } from '../../package.json'
|
|
5
7
|
import { PrismicModuleOptions } from '../types'
|
|
6
8
|
|
|
9
|
+
import linkResolver from '#build/prismic/linkResolver'
|
|
10
|
+
import client from '#build/prismic/client'
|
|
11
|
+
|
|
7
12
|
export default defineNuxtPlugin((nuxtApp) => {
|
|
8
13
|
const mergedOptions: PrismicModuleOptions = nuxtApp.payload.config[pkgName]
|
|
9
14
|
|
|
10
15
|
nuxtApp.vueApp.use(createPrismic({
|
|
11
16
|
...mergedOptions,
|
|
12
|
-
|
|
17
|
+
client,
|
|
18
|
+
linkResolver,
|
|
19
|
+
injectComponents: false, // Handled at module level
|
|
20
|
+
components: {
|
|
21
|
+
linkInternalComponent: NuxtLink,
|
|
22
|
+
linkExternalComponent: NuxtLink,
|
|
23
|
+
...mergedOptions.components
|
|
24
|
+
}
|
|
13
25
|
}))
|
|
14
26
|
})
|
package/src/types.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { PrismicPluginOptions } from '@prismicio/vue'
|
|
2
2
|
|
|
3
|
-
export type PrismicModuleOptions = PrismicPluginOptions & {
|
|
4
|
-
|
|
3
|
+
export type PrismicModuleOptions = Omit<PrismicPluginOptions, 'endpoint' | 'client' | 'linkResolver'> & {
|
|
4
|
+
endpoint: string,
|
|
5
|
+
client?: string,
|
|
6
|
+
linkResolver?: string,
|
|
7
|
+
preview?: string | false,
|
|
5
8
|
};
|
package/src/utils.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { existsSync } from 'fs'
|
|
2
|
+
|
|
3
|
+
export const fileExists = (path?: string, extensions = ['js', 'ts']): string | null => {
|
|
4
|
+
if (!path) {
|
|
5
|
+
return null
|
|
6
|
+
} else if (existsSync(path)) {
|
|
7
|
+
// If path already contains/forces the extension
|
|
8
|
+
return path
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
const extension = extensions.find(extension => existsSync(`${path}.${extension}`))
|
|
12
|
+
|
|
13
|
+
return extension ? `${path}.${extension}` : null
|
|
14
|
+
}
|