@slicemachine/adapter-next 0.3.10 → 0.3.11-dev-next-release.1
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/hooks/documentation-read.cjs +7 -6
- package/dist/hooks/documentation-read.cjs.map +1 -1
- package/dist/hooks/documentation-read.js +7 -6
- package/dist/hooks/documentation-read.js.map +1 -1
- package/dist/hooks/project-init.cjs +51 -58
- package/dist/hooks/project-init.cjs.map +1 -1
- package/dist/hooks/project-init.js +51 -57
- package/dist/hooks/project-init.js.map +1 -1
- package/dist/hooks/slice-create.cjs +29 -44
- package/dist/hooks/slice-create.cjs.map +1 -1
- package/dist/hooks/slice-create.js +29 -26
- package/dist/hooks/slice-create.js.map +1 -1
- package/dist/lib/checkHasAppRouter.cjs +23 -2
- package/dist/lib/checkHasAppRouter.cjs.map +1 -1
- package/dist/lib/checkHasAppRouter.js +6 -2
- package/dist/lib/checkHasAppRouter.js.map +1 -1
- package/dist/lib/checkHasSrcDirectory.cjs +5 -2
- package/dist/lib/checkHasSrcDirectory.cjs.map +1 -1
- package/dist/lib/checkHasSrcDirectory.js +5 -2
- package/dist/lib/checkHasSrcDirectory.js.map +1 -1
- package/dist/lib/checkIsTypeScriptProject.cjs +2 -3
- package/dist/lib/checkIsTypeScriptProject.cjs.map +1 -1
- package/dist/lib/checkIsTypeScriptProject.js +2 -3
- package/dist/lib/checkIsTypeScriptProject.js.map +1 -1
- package/dist/lib/upsertSliceLibraryIndexFile.cjs +29 -21
- package/dist/lib/upsertSliceLibraryIndexFile.cjs.map +1 -1
- package/dist/lib/upsertSliceLibraryIndexFile.js +29 -20
- package/dist/lib/upsertSliceLibraryIndexFile.js.map +1 -1
- package/dist/plugin.cjs +178 -36
- package/dist/plugin.cjs.map +1 -1
- package/dist/plugin.js +178 -36
- package/dist/plugin.js.map +1 -1
- package/package.json +5 -7
- package/src/hooks/documentation-read.ts +9 -7
- package/src/hooks/project-init.ts +58 -69
- package/src/hooks/slice-create.ts +39 -31
- package/src/lib/checkHasAppRouter.ts +6 -6
- package/src/lib/checkHasSrcDirectory.ts +5 -2
- package/src/lib/checkIsTypeScriptProject.ts +5 -4
- package/src/lib/upsertSliceLibraryIndexFile.ts +53 -33
- package/src/plugin.ts +245 -37
- package/dist/hooks/customType-asset-delete.cjs +0 -31
- package/dist/hooks/customType-asset-delete.cjs.map +0 -1
- package/dist/hooks/customType-asset-delete.d.ts +0 -3
- package/dist/hooks/customType-asset-delete.js +0 -14
- package/dist/hooks/customType-asset-delete.js.map +0 -1
- package/dist/hooks/customType-asset-read.cjs +0 -34
- package/dist/hooks/customType-asset-read.cjs.map +0 -1
- package/dist/hooks/customType-asset-read.d.ts +0 -3
- package/dist/hooks/customType-asset-read.js +0 -17
- package/dist/hooks/customType-asset-read.js.map +0 -1
- package/dist/hooks/customType-asset-update.cjs +0 -34
- package/dist/hooks/customType-asset-update.cjs.map +0 -1
- package/dist/hooks/customType-asset-update.d.ts +0 -3
- package/dist/hooks/customType-asset-update.js +0 -16
- package/dist/hooks/customType-asset-update.js.map +0 -1
- package/dist/hooks/customType-create.cjs +0 -43
- package/dist/hooks/customType-create.cjs.map +0 -1
- package/dist/hooks/customType-create.d.ts +0 -3
- package/dist/hooks/customType-create.js +0 -25
- package/dist/hooks/customType-create.js.map +0 -1
- package/dist/hooks/customType-delete.cjs +0 -32
- package/dist/hooks/customType-delete.cjs.map +0 -1
- package/dist/hooks/customType-delete.d.ts +0 -3
- package/dist/hooks/customType-delete.js +0 -15
- package/dist/hooks/customType-delete.js.map +0 -1
- package/dist/hooks/customType-read.cjs +0 -31
- package/dist/hooks/customType-read.cjs.map +0 -1
- package/dist/hooks/customType-read.d.ts +0 -3
- package/dist/hooks/customType-read.js +0 -14
- package/dist/hooks/customType-read.js.map +0 -1
- package/dist/hooks/customType-rename.cjs +0 -6
- package/dist/hooks/customType-rename.cjs.map +0 -1
- package/dist/hooks/customType-rename.d.ts +0 -1
- package/dist/hooks/customType-rename.js +0 -6
- package/dist/hooks/customType-rename.js.map +0 -1
- package/dist/hooks/customType-update.cjs +0 -6
- package/dist/hooks/customType-update.cjs.map +0 -1
- package/dist/hooks/customType-update.d.ts +0 -1
- package/dist/hooks/customType-update.js +0 -6
- package/dist/hooks/customType-update.js.map +0 -1
- package/dist/hooks/customTypeLibrary-read.cjs +0 -55
- package/dist/hooks/customTypeLibrary-read.cjs.map +0 -1
- package/dist/hooks/customTypeLibrary-read.d.ts +0 -3
- package/dist/hooks/customTypeLibrary-read.js +0 -37
- package/dist/hooks/customTypeLibrary-read.js.map +0 -1
- package/dist/hooks/slice-asset-delete.cjs +0 -33
- package/dist/hooks/slice-asset-delete.cjs.map +0 -1
- package/dist/hooks/slice-asset-delete.d.ts +0 -3
- package/dist/hooks/slice-asset-delete.js +0 -16
- package/dist/hooks/slice-asset-delete.js.map +0 -1
- package/dist/hooks/slice-asset-read.cjs +0 -36
- package/dist/hooks/slice-asset-read.cjs.map +0 -1
- package/dist/hooks/slice-asset-read.d.ts +0 -3
- package/dist/hooks/slice-asset-read.js +0 -19
- package/dist/hooks/slice-asset-read.js.map +0 -1
- package/dist/hooks/slice-asset-update.cjs +0 -36
- package/dist/hooks/slice-asset-update.cjs.map +0 -1
- package/dist/hooks/slice-asset-update.d.ts +0 -3
- package/dist/hooks/slice-asset-update.js +0 -18
- package/dist/hooks/slice-asset-update.js.map +0 -1
- package/dist/hooks/slice-delete.cjs +0 -41
- package/dist/hooks/slice-delete.cjs.map +0 -1
- package/dist/hooks/slice-delete.d.ts +0 -3
- package/dist/hooks/slice-delete.js +0 -24
- package/dist/hooks/slice-delete.js.map +0 -1
- package/dist/hooks/slice-read.cjs +0 -62
- package/dist/hooks/slice-read.cjs.map +0 -1
- package/dist/hooks/slice-read.d.ts +0 -3
- package/dist/hooks/slice-read.js +0 -44
- package/dist/hooks/slice-read.js.map +0 -1
- package/dist/hooks/slice-rename.cjs +0 -51
- package/dist/hooks/slice-rename.cjs.map +0 -1
- package/dist/hooks/slice-rename.d.ts +0 -3
- package/dist/hooks/slice-rename.js +0 -34
- package/dist/hooks/slice-rename.js.map +0 -1
- package/dist/hooks/slice-update.cjs +0 -14
- package/dist/hooks/slice-update.cjs.map +0 -1
- package/dist/hooks/slice-update.d.ts +0 -3
- package/dist/hooks/slice-update.js +0 -14
- package/dist/hooks/slice-update.js.map +0 -1
- package/dist/hooks/sliceLibrary-read.cjs +0 -52
- package/dist/hooks/sliceLibrary-read.cjs.map +0 -1
- package/dist/hooks/sliceLibrary-read.d.ts +0 -3
- package/dist/hooks/sliceLibrary-read.js +0 -34
- package/dist/hooks/sliceLibrary-read.js.map +0 -1
- package/dist/lib/buildCustomTypeAssetPath.cjs +0 -29
- package/dist/lib/buildCustomTypeAssetPath.cjs.map +0 -1
- package/dist/lib/buildCustomTypeAssetPath.d.ts +0 -9
- package/dist/lib/buildCustomTypeAssetPath.js +0 -12
- package/dist/lib/buildCustomTypeAssetPath.js.map +0 -1
- package/dist/lib/buildCustomTypeDirectoryPath.cjs +0 -26
- package/dist/lib/buildCustomTypeDirectoryPath.cjs.map +0 -1
- package/dist/lib/buildCustomTypeDirectoryPath.d.ts +0 -8
- package/dist/lib/buildCustomTypeDirectoryPath.js +0 -9
- package/dist/lib/buildCustomTypeDirectoryPath.js.map +0 -1
- package/dist/lib/buildCustomTypeLibraryDirectoryPath.cjs +0 -7
- package/dist/lib/buildCustomTypeLibraryDirectoryPath.cjs.map +0 -1
- package/dist/lib/buildCustomTypeLibraryDirectoryPath.d.ts +0 -7
- package/dist/lib/buildCustomTypeLibraryDirectoryPath.js +0 -7
- package/dist/lib/buildCustomTypeLibraryDirectoryPath.js.map +0 -1
- package/dist/lib/buildSliceAssetPath.cjs +0 -34
- package/dist/lib/buildSliceAssetPath.cjs.map +0 -1
- package/dist/lib/buildSliceAssetPath.d.ts +0 -11
- package/dist/lib/buildSliceAssetPath.js +0 -17
- package/dist/lib/buildSliceAssetPath.js.map +0 -1
- package/dist/lib/buildSliceDirectoryPath.cjs +0 -30
- package/dist/lib/buildSliceDirectoryPath.cjs.map +0 -1
- package/dist/lib/buildSliceDirectoryPath.d.ts +0 -10
- package/dist/lib/buildSliceDirectoryPath.js +0 -13
- package/dist/lib/buildSliceDirectoryPath.js.map +0 -1
- package/dist/lib/buildSliceLibraryDirectoryPath.cjs +0 -7
- package/dist/lib/buildSliceLibraryDirectoryPath.cjs.map +0 -1
- package/dist/lib/buildSliceLibraryDirectoryPath.d.ts +0 -8
- package/dist/lib/buildSliceLibraryDirectoryPath.js +0 -7
- package/dist/lib/buildSliceLibraryDirectoryPath.js.map +0 -1
- package/dist/lib/checkPathExists.cjs +0 -30
- package/dist/lib/checkPathExists.cjs.map +0 -1
- package/dist/lib/checkPathExists.d.ts +0 -2
- package/dist/lib/checkPathExists.js +0 -13
- package/dist/lib/checkPathExists.js.map +0 -1
- package/dist/lib/isSharedSliceModel.cjs +0 -7
- package/dist/lib/isSharedSliceModel.cjs.map +0 -1
- package/dist/lib/isSharedSliceModel.d.ts +0 -335
- package/dist/lib/isSharedSliceModel.js +0 -7
- package/dist/lib/isSharedSliceModel.js.map +0 -1
- package/dist/lib/readJSONFile.cjs +0 -26
- package/dist/lib/readJSONFile.cjs.map +0 -1
- package/dist/lib/readJSONFile.d.ts +0 -1
- package/dist/lib/readJSONFile.js +0 -9
- package/dist/lib/readJSONFile.js.map +0 -1
- package/dist/lib/updateSliceModelFile.cjs +0 -33
- package/dist/lib/updateSliceModelFile.cjs.map +0 -1
- package/dist/lib/updateSliceModelFile.d.ts +0 -9
- package/dist/lib/updateSliceModelFile.js +0 -15
- package/dist/lib/updateSliceModelFile.js.map +0 -1
- package/dist/lib/upsertGlobalContentTypes.cjs +0 -56
- package/dist/lib/upsertGlobalContentTypes.cjs.map +0 -1
- package/dist/lib/upsertGlobalContentTypes.d.ts +0 -12
- package/dist/lib/upsertGlobalContentTypes.js +0 -38
- package/dist/lib/upsertGlobalContentTypes.js.map +0 -1
- package/src/hooks/customType-asset-delete.ts +0 -18
- package/src/hooks/customType-asset-read.ts +0 -22
- package/src/hooks/customType-asset-update.ts +0 -20
- package/src/hooks/customType-create.ts +0 -45
- package/src/hooks/customType-delete.ts +0 -21
- package/src/hooks/customType-read.ts +0 -24
- package/src/hooks/customType-rename.ts +0 -3
- package/src/hooks/customType-update.ts +0 -3
- package/src/hooks/customTypeLibrary-read.ts +0 -58
- package/src/hooks/slice-asset-delete.ts +0 -21
- package/src/hooks/slice-asset-read.ts +0 -25
- package/src/hooks/slice-asset-update.ts +0 -23
- package/src/hooks/slice-delete.ts +0 -41
- package/src/hooks/slice-read.ts +0 -69
- package/src/hooks/slice-rename.ts +0 -46
- package/src/hooks/slice-update.ts +0 -19
- package/src/hooks/sliceLibrary-read.ts +0 -48
- package/src/lib/buildCustomTypeAssetPath.ts +0 -24
- package/src/lib/buildCustomTypeDirectoryPath.ts +0 -20
- package/src/lib/buildCustomTypeLibraryDirectoryPath.ts +0 -13
- package/src/lib/buildSliceAssetPath.ts +0 -32
- package/src/lib/buildSliceDirectoryPath.ts +0 -26
- package/src/lib/buildSliceLibraryDirectoryPath.ts +0 -14
- package/src/lib/checkPathExists.ts +0 -12
- package/src/lib/isSharedSliceModel.ts +0 -14
- package/src/lib/readJSONFile.ts +0 -7
- package/src/lib/updateSliceModelFile.ts +0 -33
- package/src/lib/upsertGlobalContentTypes.ts +0 -63
|
@@ -27,8 +27,6 @@ const documentationRead = async (data, { options, helpers }) => {
|
|
|
27
27
|
|
|
28
28
|
type Params = { uid: string };
|
|
29
29
|
|
|
30
|
-
export const dynamicParams = false;
|
|
31
|
-
|
|
32
30
|
export default async function Page({ params }: { params: Params }) {
|
|
33
31
|
const client = createClient();
|
|
34
32
|
const page = await client
|
|
@@ -44,7 +42,9 @@ const documentationRead = async (data, { options, helpers }) => {
|
|
|
44
42
|
params: Params;
|
|
45
43
|
}): Promise<Metadata> {
|
|
46
44
|
const client = createClient();
|
|
47
|
-
const page = await client
|
|
45
|
+
const page = await client
|
|
46
|
+
.getByUID("${model.id}", params.uid)
|
|
47
|
+
.catch(() => notFound());
|
|
48
48
|
|
|
49
49
|
return {
|
|
50
50
|
title: page.data.meta_title,
|
|
@@ -189,7 +189,6 @@ const documentationRead = async (data, { options, helpers }) => {
|
|
|
189
189
|
import { createClient } from "@/prismicio";
|
|
190
190
|
import { components } from "@/slices";
|
|
191
191
|
|
|
192
|
-
export const dynamicParams = false;
|
|
193
192
|
|
|
194
193
|
export default async function Page({ params }) {
|
|
195
194
|
const client = createClient();
|
|
@@ -202,7 +201,9 @@ const documentationRead = async (data, { options, helpers }) => {
|
|
|
202
201
|
|
|
203
202
|
export async function generateMetadata({ params }) {
|
|
204
203
|
const client = createClient();
|
|
205
|
-
const page = await client
|
|
204
|
+
const page = await client
|
|
205
|
+
.getByUID("${model.id}", params.uid)
|
|
206
|
+
.catch(() => notFound());
|
|
206
207
|
|
|
207
208
|
return {
|
|
208
209
|
title: page.data.meta_title,
|
|
@@ -356,7 +357,7 @@ ${appFileContent}
|
|
|
356
357
|
`
|
|
357
358
|
},
|
|
358
359
|
{
|
|
359
|
-
label: "
|
|
360
|
+
label: "Pages Router",
|
|
360
361
|
content: commonTags.source`
|
|
361
362
|
## Create your ${model.label}'s page component
|
|
362
363
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"documentation-read.cjs","sources":["../../../src/hooks/documentation-read.ts"],"sourcesContent":["import { stripIndent, source } from \"common-tags\";\n\nimport type { DocumentationReadHook } from \"@slicemachine/plugin-kit\";\n\nimport type { PluginOptions } from \"../types\";\nimport { checkIsTypeScriptProject } from \"../lib/checkIsTypeScriptProject\";\nimport { getJSFileExtension } from \"../lib/getJSFileExtension\";\n\nexport const documentationRead: DocumentationReadHook<PluginOptions> = async (\n\tdata,\n\t{ options, helpers },\n) => {\n\tconst isTypeScriptProject = await checkIsTypeScriptProject({\n\t\thelpers,\n\t\toptions,\n\t});\n\n\tif (data.kind === \"PageSnippet\") {\n\t\tconst { model } = data.data;\n\t\tconst extension = await getJSFileExtension({ helpers, options, jsx: true });\n\n\t\tconst appFilePath = `${\n\t\t\tmodel.repeatable ? \"[uid]\" : model.id\n\t\t}/page.${extension}`;\n\t\tconst pagesFilePath = `${\n\t\t\tmodel.repeatable ? \"[uid]\" : model.id\n\t\t}.${extension}`;\n\n\t\tlet appFileContent: string;\n\t\tlet pagesFileContent: string;\n\t\tif (isTypeScriptProject) {\n\t\t\tif (model.repeatable) {\n\t\t\t\tappFileContent = stripIndent`\n\t\t\t\t\timport { Metadata } from \"next\";\n\t\t\t\t\timport { notFound } from \"next/navigation\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\t\t\t\t\timport { components } from \"@/slices\";\n\n\t\t\t\t\ttype Params = { uid: string };\n\n\t\t\t\t\texport const dynamicParams = false;\n\n\t\t\t\t\texport default async function Page({ params }: { params: Params }) {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client\n\t\t\t\t\t\t\t.getByUID(\"${model.id}\", params.uid)\n\t\t\t\t\t\t\t.catch(() => notFound());\n\n\t\t\t\t\t\treturn <SliceZone slices={page.data.slices} components={components} />;\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function generateMetadata({\n\t\t\t\t\t\tparams,\n\t\t\t\t\t}: {\n\t\t\t\t\t\tparams: Params;\n\t\t\t\t\t}): Promise<Metadata> {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client.getByUID(\"${model.id}\", params.uid);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttitle: page.data.meta_title,\n\t\t\t\t\t\t\tdescription: page.data.meta_description,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function generateStaticParams() {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst pages = await client.getAllByType(\"${model.id}\");\n\n\t\t\t\t\t\treturn pages.map((page) => {\n\t\t\t\t\t\t\treturn { uid: page.uid };\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t\tpagesFileContent = stripIndent`\n\t\t\t\t\timport { GetStaticPropsContext, InferGetStaticPropsType } from \"next\";\n\t\t\t\t\timport Head from \"next/head\";\n\t\t\t\t\timport { isFilled, asLink } from \"@prismicio/client\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { components } from \"@/slices\";\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\n\t\t\t\t\ttype Params = { uid: string };\n\n\t\t\t\t\texport default function Page({\n\t\t\t\t\t\tpage,\n\t\t\t\t\t}: InferGetStaticPropsType<typeof getStaticProps>) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<Head>\n\t\t\t\t\t\t\t\t\t<title>{page.data.meta_title}</title>\n\t\t\t\t\t\t\t\t\t{isFilled.keyText(page.data.meta_description) ? (\n\t\t\t\t\t\t\t\t\t\t<meta name=\"description\" content={page.data.meta_description} />\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t</Head>\n\t\t\t\t\t\t\t\t<SliceZone slices={page.data.slices} components={components} />\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function getStaticProps({\n\t\t\t\t\t\tparams,\n\t\t\t\t\t\tpreviewData,\n\t\t\t\t\t}: GetStaticPropsContext<Params>) {\n\t\t\t\t\t\t// The \\`previewData\\` parameter allows your app to preview\n\t\t\t\t\t\t// drafts from the Page Builder.\n\t\t\t\t\t\tconst client = createClient({ previewData });\n\n\t\t\t\t\t\tconst page = await client.getByUID(\"${model.id}\", params!.uid);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tprops: { page },\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function getStaticPaths() {\n\t\t\t\t\t\tconst client = createClient();\n\n\t\t\t\t\t\tconst pages = await client.getAllByType(\"${model.id}\");\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tpaths: pages.map((page) => {\n\t\t\t\t\t\t\t\treturn asLink(page);\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tfallback: false,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t} else {\n\t\t\t\tappFileContent = stripIndent`\n\t\t\t\t\timport { Metadata } from \"next\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\t\t\t\t\timport { components } from \"@/slices\";\n\n\t\t\t\t\texport default async function Page() {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client.getSingle(\"${model.id}\");\n\n\t\t\t\t\t\treturn <SliceZone slices={page.data.slices} components={components} />;\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function generateMetadata(): Promise<Metadata> {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client.getSingle(\"${model.id}\");\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttitle: page.data.meta_title,\n\t\t\t\t\t\t\tdescription: page.data.meta_description,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t\tpagesFileContent = stripIndent`\n\t\t\t\t\timport { GetStaticPropsContext, InferGetStaticPropsType } from \"next\";\n\t\t\t\t\timport Head from \"next/head\";\n\t\t\t\t\timport { isFilled } from \"@prismicio/client\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { components } from \"@/slices\";\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\n\t\t\t\t\texport default function Page({\n\t\t\t\t\t\tpage,\n\t\t\t\t\t}: InferGetStaticPropsType<typeof getStaticProps>) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<Head>\n\t\t\t\t\t\t\t\t\t<title>{page.data.meta_title}</title>\n\t\t\t\t\t\t\t\t\t{isFilled.keyText(page.data.meta_description) ? (\n\t\t\t\t\t\t\t\t\t\t<meta name=\"description\" content={page.data.meta_description} />\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t</Head>\n\t\t\t\t\t\t\t\t<SliceZone slices={page.data.slices} components={components} />\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function getStaticProps({ previewData }: GetStaticPropsContext) {\n\t\t\t\t\t\t// The \\`previewData\\` parameter allows your app to preview\n\t\t\t\t\t\t// drafts from the Page Builder.\n\t\t\t\t\t\tconst client = createClient({ previewData });\n\n\t\t\t\t\t\t// The query fetches the page's data based on the current URL.\n\t\t\t\t\t\tconst page = await client.getSingle(\"${model.id}\");\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tprops: { page },\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t}\n\t\t} else {\n\t\t\tif (model.repeatable) {\n\t\t\t\tappFileContent = stripIndent`\n\t\t\t\t\timport { notFound } from \"next/navigation\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\t\t\t\t\timport { components } from \"@/slices\";\n\n\t\t\t\t\texport const dynamicParams = false;\n\n\t\t\t\t\texport default async function Page({ params }) {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client\n\t\t\t\t\t\t\t.getByUID(\"${model.id}\", params.uid)\n\t\t\t\t\t\t\t.catch(() => notFound());\n\n\t\t\t\t\t\treturn <SliceZone slices={page.data.slices} components={components} />;\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function generateMetadata({ params }) {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client.getByUID(\"${model.id}\", params.uid);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttitle: page.data.meta_title,\n\t\t\t\t\t\t\tdescription: page.data.meta_description,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function generateStaticParams() {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst pages = await client.getAllByType(\"${model.id}\");\n\n\t\t\t\t\t\treturn pages.map((page) => {\n\t\t\t\t\t\t\treturn { uid: page.uid };\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t\tpagesFileContent = stripIndent`\n\t\t\t\t\timport Head from \"next/head\";\n\t\t\t\t\timport { isFilled, asLink } from \"@prismicio/client\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { components } from \"@/slices\";\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\n\t\t\t\t\texport default function Page({ page }) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<Head>\n\t\t\t\t\t\t\t\t\t<title>{page.data.meta_title}</title>\n\t\t\t\t\t\t\t\t\t{isFilled.keyText(page.data.meta_description) ? (\n\t\t\t\t\t\t\t\t\t\t<meta name=\"description\" content={page.data.meta_description} />\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t</Head>\n\t\t\t\t\t\t\t\t<SliceZone slices={page.data.slices} components={components} />\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function getStaticProps({\n\t\t\t\t\t\tparams,\n\t\t\t\t\t\tpreviewData,\n\t\t\t\t\t}) {\n\t\t\t\t\t\t// The \\`previewData\\` parameter allows your app to preview\n\t\t\t\t\t\t// drafts from the Page Builder.\n\t\t\t\t\t\tconst client = createClient({ previewData });\n\n\t\t\t\t\t\tconst page = await client.getByUID(\"${model.id}\", params.uid);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tprops: { page },\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function getStaticPaths() {\n\t\t\t\t\t\tconst client = createClient();\n\n\t\t\t\t\t\tconst pages = await client.getAllByType(\"${model.id}\");\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tpaths: pages.map((page) => {\n\t\t\t\t\t\t\t\treturn asLink(page);\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tfallback: false,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t} else {\n\t\t\t\tappFileContent = stripIndent`\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\t\t\t\t\timport { components } from \"@/slices\";\n\n\t\t\t\t\texport default async function Page() {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client.getSingle(\"${model.id}\");\n\n\t\t\t\t\t\treturn <SliceZone slices={page.data.slices} components={components} />;\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function generateMetadata() {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client.getSingle(\"${model.id}\");\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttitle: page.data.meta_title,\n\t\t\t\t\t\t\tdescription: page.data.meta_description,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t\tpagesFileContent = stripIndent`\n\t\t\t\t\timport Head from \"next/head\";\n\t\t\t\t\timport { isFilled } from \"@prismicio/client\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { components } from \"@/slices\";\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\n\t\t\t\t\texport default function Page({ page }) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<Head>\n\t\t\t\t\t\t\t\t\t<title>{page.data.meta_title}</title>\n\t\t\t\t\t\t\t\t\t{isFilled.keyText(page.data.meta_description) ? (\n\t\t\t\t\t\t\t\t\t\t<meta name=\"description\" content={page.data.meta_description} />\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t</Head>\n\t\t\t\t\t\t\t\t<SliceZone slices={page.data.slices} components={components} />\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function getStaticProps({ previewData }) {\n\t\t\t\t\t\t// The \\`previewData\\` parameter allows your app to preview\n\t\t\t\t\t\t// drafts from the Page Builder.\n\t\t\t\t\t\tconst client = createClient({ previewData });\n\n\t\t\t\t\t\t// The query fetches the page's data based on the current URL.\n\t\t\t\t\t\tconst page = await client.getSingle(\"${model.id}\");\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tprops: { page },\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t}\n\t\t}\n\n\t\tif (options.format) {\n\t\t\tappFileContent = await helpers.format(\n\t\t\t\tappFileContent,\n\t\t\t\thelpers.joinPathFromRoot(`index.${extension}`),\n\t\t\t\t{\n\t\t\t\t\tincludeNewlineAtEnd: false,\n\t\t\t\t},\n\t\t\t);\n\t\t\tpagesFileContent = await helpers.format(\n\t\t\t\tpagesFileContent,\n\t\t\t\thelpers.joinPathFromRoot(`index.${extension}`),\n\t\t\t\t{\n\t\t\t\t\tincludeNewlineAtEnd: false,\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\n\t\treturn [\n\t\t\t{\n\t\t\t\tlabel: \"App Router\",\n\t\t\t\tcontent: source`\n\t\t\t\t\t## Create your ${model.label}'s page component\n\n\t\t\t\t\tAdd a new route by creating an \\`app/${appFilePath}\\` file. (If the route should be nested in a child directory, you can create the file in a directory, like \\`app/marketing/${appFilePath}\\`.)\n\n\t\t\t\t\tPaste in this code:\n\n\t\t\t\t\t${`~~~${extension} [app/${appFilePath}]\\n${appFileContent}\\n~~~`}\n\n\t\t\t\t\tMake sure all of your import paths are correct. See the [install guide](https://prismic.io/docs/setup-nextjs) for more information.\n\t\t\t\t`,\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: \"Page Router\",\n\t\t\t\tcontent: source`\n\t\t\t\t\t## Create your ${model.label}'s page component\n\n\t\t\t\t\tAdd a new route by creating a \\`pages/${pagesFilePath}\\` file. (If the route should be nested in a child directory, you can create the file in a directory, like \\`pages/marketing/${pagesFilePath}\\`.)\n\n\t\t\t\t\t${`~~~${extension} [pages/${pagesFilePath}]\\n${pagesFileContent}\\n~~~`}\n\n\t\t\t\t\tMake sure all of your import paths are correct. See the [install guide](https://prismic.io/docs/setup-nextjs) for more information.\n\t\t\t\t`,\n\t\t\t},\n\t\t];\n\t}\n\n\treturn [];\n};\n"],"names":["checkIsTypeScriptProject","getJSFileExtension","stripIndent","source"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"documentation-read.cjs","sources":["../../../src/hooks/documentation-read.ts"],"sourcesContent":["import { stripIndent, source } from \"common-tags\";\n\nimport type { DocumentationReadHook } from \"@slicemachine/plugin-kit\";\n\nimport { checkIsTypeScriptProject } from \"../lib/checkIsTypeScriptProject\";\nimport { getJSFileExtension } from \"../lib/getJSFileExtension\";\n\nimport type { PluginOptions } from \"../types\";\n\nexport const documentationRead: DocumentationReadHook<PluginOptions> = async (\n\tdata,\n\t{ options, helpers },\n) => {\n\tconst isTypeScriptProject = await checkIsTypeScriptProject({\n\t\thelpers,\n\t\toptions,\n\t});\n\n\tif (data.kind === \"PageSnippet\") {\n\t\tconst { model } = data.data;\n\t\tconst extension = await getJSFileExtension({ helpers, options, jsx: true });\n\n\t\tconst appFilePath = `${\n\t\t\tmodel.repeatable ? \"[uid]\" : model.id\n\t\t}/page.${extension}`;\n\t\tconst pagesFilePath = `${\n\t\t\tmodel.repeatable ? \"[uid]\" : model.id\n\t\t}.${extension}`;\n\n\t\tlet appFileContent: string;\n\t\tlet pagesFileContent: string;\n\t\tif (isTypeScriptProject) {\n\t\t\tif (model.repeatable) {\n\t\t\t\tappFileContent = stripIndent`\n\t\t\t\t\timport { Metadata } from \"next\";\n\t\t\t\t\timport { notFound } from \"next/navigation\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\t\t\t\t\timport { components } from \"@/slices\";\n\n\t\t\t\t\ttype Params = { uid: string };\n\n\t\t\t\t\texport default async function Page({ params }: { params: Params }) {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client\n\t\t\t\t\t\t\t.getByUID(\"${model.id}\", params.uid)\n\t\t\t\t\t\t\t.catch(() => notFound());\n\n\t\t\t\t\t\treturn <SliceZone slices={page.data.slices} components={components} />;\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function generateMetadata({\n\t\t\t\t\t\tparams,\n\t\t\t\t\t}: {\n\t\t\t\t\t\tparams: Params;\n\t\t\t\t\t}): Promise<Metadata> {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client\n\t\t\t\t\t\t\t.getByUID(\"${model.id}\", params.uid)\n\t\t\t\t\t\t\t.catch(() => notFound());\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttitle: page.data.meta_title,\n\t\t\t\t\t\t\tdescription: page.data.meta_description,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function generateStaticParams() {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst pages = await client.getAllByType(\"${model.id}\");\n\n\t\t\t\t\t\treturn pages.map((page) => {\n\t\t\t\t\t\t\treturn { uid: page.uid };\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t\tpagesFileContent = stripIndent`\n\t\t\t\t\timport { GetStaticPropsContext, InferGetStaticPropsType } from \"next\";\n\t\t\t\t\timport Head from \"next/head\";\n\t\t\t\t\timport { isFilled, asLink } from \"@prismicio/client\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { components } from \"@/slices\";\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\n\t\t\t\t\ttype Params = { uid: string };\n\n\t\t\t\t\texport default function Page({\n\t\t\t\t\t\tpage,\n\t\t\t\t\t}: InferGetStaticPropsType<typeof getStaticProps>) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<Head>\n\t\t\t\t\t\t\t\t\t<title>{page.data.meta_title}</title>\n\t\t\t\t\t\t\t\t\t{isFilled.keyText(page.data.meta_description) ? (\n\t\t\t\t\t\t\t\t\t\t<meta name=\"description\" content={page.data.meta_description} />\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t</Head>\n\t\t\t\t\t\t\t\t<SliceZone slices={page.data.slices} components={components} />\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function getStaticProps({\n\t\t\t\t\t\tparams,\n\t\t\t\t\t\tpreviewData,\n\t\t\t\t\t}: GetStaticPropsContext<Params>) {\n\t\t\t\t\t\t// The \\`previewData\\` parameter allows your app to preview\n\t\t\t\t\t\t// drafts from the Page Builder.\n\t\t\t\t\t\tconst client = createClient({ previewData });\n\n\t\t\t\t\t\tconst page = await client.getByUID(\"${model.id}\", params!.uid);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tprops: { page },\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function getStaticPaths() {\n\t\t\t\t\t\tconst client = createClient();\n\n\t\t\t\t\t\tconst pages = await client.getAllByType(\"${model.id}\");\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tpaths: pages.map((page) => {\n\t\t\t\t\t\t\t\treturn asLink(page);\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tfallback: false,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t} else {\n\t\t\t\tappFileContent = stripIndent`\n\t\t\t\t\timport { Metadata } from \"next\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\t\t\t\t\timport { components } from \"@/slices\";\n\n\t\t\t\t\texport default async function Page() {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client.getSingle(\"${model.id}\");\n\n\t\t\t\t\t\treturn <SliceZone slices={page.data.slices} components={components} />;\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function generateMetadata(): Promise<Metadata> {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client.getSingle(\"${model.id}\");\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttitle: page.data.meta_title,\n\t\t\t\t\t\t\tdescription: page.data.meta_description,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t\tpagesFileContent = stripIndent`\n\t\t\t\t\timport { GetStaticPropsContext, InferGetStaticPropsType } from \"next\";\n\t\t\t\t\timport Head from \"next/head\";\n\t\t\t\t\timport { isFilled } from \"@prismicio/client\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { components } from \"@/slices\";\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\n\t\t\t\t\texport default function Page({\n\t\t\t\t\t\tpage,\n\t\t\t\t\t}: InferGetStaticPropsType<typeof getStaticProps>) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<Head>\n\t\t\t\t\t\t\t\t\t<title>{page.data.meta_title}</title>\n\t\t\t\t\t\t\t\t\t{isFilled.keyText(page.data.meta_description) ? (\n\t\t\t\t\t\t\t\t\t\t<meta name=\"description\" content={page.data.meta_description} />\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t</Head>\n\t\t\t\t\t\t\t\t<SliceZone slices={page.data.slices} components={components} />\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function getStaticProps({ previewData }: GetStaticPropsContext) {\n\t\t\t\t\t\t// The \\`previewData\\` parameter allows your app to preview\n\t\t\t\t\t\t// drafts from the Page Builder.\n\t\t\t\t\t\tconst client = createClient({ previewData });\n\n\t\t\t\t\t\t// The query fetches the page's data based on the current URL.\n\t\t\t\t\t\tconst page = await client.getSingle(\"${model.id}\");\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tprops: { page },\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t}\n\t\t} else {\n\t\t\tif (model.repeatable) {\n\t\t\t\tappFileContent = stripIndent`\n\t\t\t\t\timport { notFound } from \"next/navigation\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\t\t\t\t\timport { components } from \"@/slices\";\n\n\n\t\t\t\t\texport default async function Page({ params }) {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client\n\t\t\t\t\t\t\t.getByUID(\"${model.id}\", params.uid)\n\t\t\t\t\t\t\t.catch(() => notFound());\n\n\t\t\t\t\t\treturn <SliceZone slices={page.data.slices} components={components} />;\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function generateMetadata({ params }) {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client\n\t\t\t\t\t\t\t.getByUID(\"${model.id}\", params.uid)\n\t\t\t\t\t\t\t.catch(() => notFound());\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttitle: page.data.meta_title,\n\t\t\t\t\t\t\tdescription: page.data.meta_description,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function generateStaticParams() {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst pages = await client.getAllByType(\"${model.id}\");\n\n\t\t\t\t\t\treturn pages.map((page) => {\n\t\t\t\t\t\t\treturn { uid: page.uid };\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t\tpagesFileContent = stripIndent`\n\t\t\t\t\timport Head from \"next/head\";\n\t\t\t\t\timport { isFilled, asLink } from \"@prismicio/client\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { components } from \"@/slices\";\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\n\t\t\t\t\texport default function Page({ page }) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<Head>\n\t\t\t\t\t\t\t\t\t<title>{page.data.meta_title}</title>\n\t\t\t\t\t\t\t\t\t{isFilled.keyText(page.data.meta_description) ? (\n\t\t\t\t\t\t\t\t\t\t<meta name=\"description\" content={page.data.meta_description} />\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t</Head>\n\t\t\t\t\t\t\t\t<SliceZone slices={page.data.slices} components={components} />\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function getStaticProps({\n\t\t\t\t\t\tparams,\n\t\t\t\t\t\tpreviewData,\n\t\t\t\t\t}) {\n\t\t\t\t\t\t// The \\`previewData\\` parameter allows your app to preview\n\t\t\t\t\t\t// drafts from the Page Builder.\n\t\t\t\t\t\tconst client = createClient({ previewData });\n\n\t\t\t\t\t\tconst page = await client.getByUID(\"${model.id}\", params.uid);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tprops: { page },\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function getStaticPaths() {\n\t\t\t\t\t\tconst client = createClient();\n\n\t\t\t\t\t\tconst pages = await client.getAllByType(\"${model.id}\");\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tpaths: pages.map((page) => {\n\t\t\t\t\t\t\t\treturn asLink(page);\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tfallback: false,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t} else {\n\t\t\t\tappFileContent = stripIndent`\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\t\t\t\t\timport { components } from \"@/slices\";\n\n\t\t\t\t\texport default async function Page() {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client.getSingle(\"${model.id}\");\n\n\t\t\t\t\t\treturn <SliceZone slices={page.data.slices} components={components} />;\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function generateMetadata() {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client.getSingle(\"${model.id}\");\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttitle: page.data.meta_title,\n\t\t\t\t\t\t\tdescription: page.data.meta_description,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t\tpagesFileContent = stripIndent`\n\t\t\t\t\timport Head from \"next/head\";\n\t\t\t\t\timport { isFilled } from \"@prismicio/client\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { components } from \"@/slices\";\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\n\t\t\t\t\texport default function Page({ page }) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<Head>\n\t\t\t\t\t\t\t\t\t<title>{page.data.meta_title}</title>\n\t\t\t\t\t\t\t\t\t{isFilled.keyText(page.data.meta_description) ? (\n\t\t\t\t\t\t\t\t\t\t<meta name=\"description\" content={page.data.meta_description} />\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t</Head>\n\t\t\t\t\t\t\t\t<SliceZone slices={page.data.slices} components={components} />\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function getStaticProps({ previewData }) {\n\t\t\t\t\t\t// The \\`previewData\\` parameter allows your app to preview\n\t\t\t\t\t\t// drafts from the Page Builder.\n\t\t\t\t\t\tconst client = createClient({ previewData });\n\n\t\t\t\t\t\t// The query fetches the page's data based on the current URL.\n\t\t\t\t\t\tconst page = await client.getSingle(\"${model.id}\");\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tprops: { page },\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t}\n\t\t}\n\n\t\tif (options.format) {\n\t\t\tappFileContent = await helpers.format(\n\t\t\t\tappFileContent,\n\t\t\t\thelpers.joinPathFromRoot(`index.${extension}`),\n\t\t\t\t{\n\t\t\t\t\tincludeNewlineAtEnd: false,\n\t\t\t\t},\n\t\t\t);\n\t\t\tpagesFileContent = await helpers.format(\n\t\t\t\tpagesFileContent,\n\t\t\t\thelpers.joinPathFromRoot(`index.${extension}`),\n\t\t\t\t{\n\t\t\t\t\tincludeNewlineAtEnd: false,\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\n\t\treturn [\n\t\t\t{\n\t\t\t\tlabel: \"App Router\",\n\t\t\t\tcontent: source`\n\t\t\t\t\t## Create your ${model.label}'s page component\n\n\t\t\t\t\tAdd a new route by creating an \\`app/${appFilePath}\\` file. (If the route should be nested in a child directory, you can create the file in a directory, like \\`app/marketing/${appFilePath}\\`.)\n\n\t\t\t\t\tPaste in this code:\n\n\t\t\t\t\t${`~~~${extension} [app/${appFilePath}]\\n${appFileContent}\\n~~~`}\n\n\t\t\t\t\tMake sure all of your import paths are correct. See the [install guide](https://prismic.io/docs/setup-nextjs) for more information.\n\t\t\t\t`,\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: \"Pages Router\",\n\t\t\t\tcontent: source`\n\t\t\t\t\t## Create your ${model.label}'s page component\n\n\t\t\t\t\tAdd a new route by creating a \\`pages/${pagesFilePath}\\` file. (If the route should be nested in a child directory, you can create the file in a directory, like \\`pages/marketing/${pagesFilePath}\\`.)\n\n\t\t\t\t\t${`~~~${extension} [pages/${pagesFilePath}]\\n${pagesFileContent}\\n~~~`}\n\n\t\t\t\t\tMake sure all of your import paths are correct. See the [install guide](https://prismic.io/docs/setup-nextjs) for more information.\n\t\t\t\t`,\n\t\t\t},\n\t\t];\n\t}\n\n\treturn [];\n};\n"],"names":["checkIsTypeScriptProject","getJSFileExtension","stripIndent","source"],"mappings":"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"}
|
|
@@ -25,8 +25,6 @@ const documentationRead = async (data, { options, helpers }) => {
|
|
|
25
25
|
|
|
26
26
|
type Params = { uid: string };
|
|
27
27
|
|
|
28
|
-
export const dynamicParams = false;
|
|
29
|
-
|
|
30
28
|
export default async function Page({ params }: { params: Params }) {
|
|
31
29
|
const client = createClient();
|
|
32
30
|
const page = await client
|
|
@@ -42,7 +40,9 @@ const documentationRead = async (data, { options, helpers }) => {
|
|
|
42
40
|
params: Params;
|
|
43
41
|
}): Promise<Metadata> {
|
|
44
42
|
const client = createClient();
|
|
45
|
-
const page = await client
|
|
43
|
+
const page = await client
|
|
44
|
+
.getByUID("${model.id}", params.uid)
|
|
45
|
+
.catch(() => notFound());
|
|
46
46
|
|
|
47
47
|
return {
|
|
48
48
|
title: page.data.meta_title,
|
|
@@ -187,7 +187,6 @@ const documentationRead = async (data, { options, helpers }) => {
|
|
|
187
187
|
import { createClient } from "@/prismicio";
|
|
188
188
|
import { components } from "@/slices";
|
|
189
189
|
|
|
190
|
-
export const dynamicParams = false;
|
|
191
190
|
|
|
192
191
|
export default async function Page({ params }) {
|
|
193
192
|
const client = createClient();
|
|
@@ -200,7 +199,9 @@ const documentationRead = async (data, { options, helpers }) => {
|
|
|
200
199
|
|
|
201
200
|
export async function generateMetadata({ params }) {
|
|
202
201
|
const client = createClient();
|
|
203
|
-
const page = await client
|
|
202
|
+
const page = await client
|
|
203
|
+
.getByUID("${model.id}", params.uid)
|
|
204
|
+
.catch(() => notFound());
|
|
204
205
|
|
|
205
206
|
return {
|
|
206
207
|
title: page.data.meta_title,
|
|
@@ -354,7 +355,7 @@ ${appFileContent}
|
|
|
354
355
|
`
|
|
355
356
|
},
|
|
356
357
|
{
|
|
357
|
-
label: "
|
|
358
|
+
label: "Pages Router",
|
|
358
359
|
content: source`
|
|
359
360
|
## Create your ${model.label}'s page component
|
|
360
361
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"documentation-read.js","sources":["../../../src/hooks/documentation-read.ts"],"sourcesContent":["import { stripIndent, source } from \"common-tags\";\n\nimport type { DocumentationReadHook } from \"@slicemachine/plugin-kit\";\n\nimport type { PluginOptions } from \"../types\";\nimport { checkIsTypeScriptProject } from \"../lib/checkIsTypeScriptProject\";\nimport { getJSFileExtension } from \"../lib/getJSFileExtension\";\n\nexport const documentationRead: DocumentationReadHook<PluginOptions> = async (\n\tdata,\n\t{ options, helpers },\n) => {\n\tconst isTypeScriptProject = await checkIsTypeScriptProject({\n\t\thelpers,\n\t\toptions,\n\t});\n\n\tif (data.kind === \"PageSnippet\") {\n\t\tconst { model } = data.data;\n\t\tconst extension = await getJSFileExtension({ helpers, options, jsx: true });\n\n\t\tconst appFilePath = `${\n\t\t\tmodel.repeatable ? \"[uid]\" : model.id\n\t\t}/page.${extension}`;\n\t\tconst pagesFilePath = `${\n\t\t\tmodel.repeatable ? \"[uid]\" : model.id\n\t\t}.${extension}`;\n\n\t\tlet appFileContent: string;\n\t\tlet pagesFileContent: string;\n\t\tif (isTypeScriptProject) {\n\t\t\tif (model.repeatable) {\n\t\t\t\tappFileContent = stripIndent`\n\t\t\t\t\timport { Metadata } from \"next\";\n\t\t\t\t\timport { notFound } from \"next/navigation\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\t\t\t\t\timport { components } from \"@/slices\";\n\n\t\t\t\t\ttype Params = { uid: string };\n\n\t\t\t\t\texport const dynamicParams = false;\n\n\t\t\t\t\texport default async function Page({ params }: { params: Params }) {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client\n\t\t\t\t\t\t\t.getByUID(\"${model.id}\", params.uid)\n\t\t\t\t\t\t\t.catch(() => notFound());\n\n\t\t\t\t\t\treturn <SliceZone slices={page.data.slices} components={components} />;\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function generateMetadata({\n\t\t\t\t\t\tparams,\n\t\t\t\t\t}: {\n\t\t\t\t\t\tparams: Params;\n\t\t\t\t\t}): Promise<Metadata> {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client.getByUID(\"${model.id}\", params.uid);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttitle: page.data.meta_title,\n\t\t\t\t\t\t\tdescription: page.data.meta_description,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function generateStaticParams() {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst pages = await client.getAllByType(\"${model.id}\");\n\n\t\t\t\t\t\treturn pages.map((page) => {\n\t\t\t\t\t\t\treturn { uid: page.uid };\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t\tpagesFileContent = stripIndent`\n\t\t\t\t\timport { GetStaticPropsContext, InferGetStaticPropsType } from \"next\";\n\t\t\t\t\timport Head from \"next/head\";\n\t\t\t\t\timport { isFilled, asLink } from \"@prismicio/client\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { components } from \"@/slices\";\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\n\t\t\t\t\ttype Params = { uid: string };\n\n\t\t\t\t\texport default function Page({\n\t\t\t\t\t\tpage,\n\t\t\t\t\t}: InferGetStaticPropsType<typeof getStaticProps>) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<Head>\n\t\t\t\t\t\t\t\t\t<title>{page.data.meta_title}</title>\n\t\t\t\t\t\t\t\t\t{isFilled.keyText(page.data.meta_description) ? (\n\t\t\t\t\t\t\t\t\t\t<meta name=\"description\" content={page.data.meta_description} />\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t</Head>\n\t\t\t\t\t\t\t\t<SliceZone slices={page.data.slices} components={components} />\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function getStaticProps({\n\t\t\t\t\t\tparams,\n\t\t\t\t\t\tpreviewData,\n\t\t\t\t\t}: GetStaticPropsContext<Params>) {\n\t\t\t\t\t\t// The \\`previewData\\` parameter allows your app to preview\n\t\t\t\t\t\t// drafts from the Page Builder.\n\t\t\t\t\t\tconst client = createClient({ previewData });\n\n\t\t\t\t\t\tconst page = await client.getByUID(\"${model.id}\", params!.uid);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tprops: { page },\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function getStaticPaths() {\n\t\t\t\t\t\tconst client = createClient();\n\n\t\t\t\t\t\tconst pages = await client.getAllByType(\"${model.id}\");\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tpaths: pages.map((page) => {\n\t\t\t\t\t\t\t\treturn asLink(page);\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tfallback: false,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t} else {\n\t\t\t\tappFileContent = stripIndent`\n\t\t\t\t\timport { Metadata } from \"next\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\t\t\t\t\timport { components } from \"@/slices\";\n\n\t\t\t\t\texport default async function Page() {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client.getSingle(\"${model.id}\");\n\n\t\t\t\t\t\treturn <SliceZone slices={page.data.slices} components={components} />;\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function generateMetadata(): Promise<Metadata> {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client.getSingle(\"${model.id}\");\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttitle: page.data.meta_title,\n\t\t\t\t\t\t\tdescription: page.data.meta_description,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t\tpagesFileContent = stripIndent`\n\t\t\t\t\timport { GetStaticPropsContext, InferGetStaticPropsType } from \"next\";\n\t\t\t\t\timport Head from \"next/head\";\n\t\t\t\t\timport { isFilled } from \"@prismicio/client\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { components } from \"@/slices\";\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\n\t\t\t\t\texport default function Page({\n\t\t\t\t\t\tpage,\n\t\t\t\t\t}: InferGetStaticPropsType<typeof getStaticProps>) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<Head>\n\t\t\t\t\t\t\t\t\t<title>{page.data.meta_title}</title>\n\t\t\t\t\t\t\t\t\t{isFilled.keyText(page.data.meta_description) ? (\n\t\t\t\t\t\t\t\t\t\t<meta name=\"description\" content={page.data.meta_description} />\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t</Head>\n\t\t\t\t\t\t\t\t<SliceZone slices={page.data.slices} components={components} />\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function getStaticProps({ previewData }: GetStaticPropsContext) {\n\t\t\t\t\t\t// The \\`previewData\\` parameter allows your app to preview\n\t\t\t\t\t\t// drafts from the Page Builder.\n\t\t\t\t\t\tconst client = createClient({ previewData });\n\n\t\t\t\t\t\t// The query fetches the page's data based on the current URL.\n\t\t\t\t\t\tconst page = await client.getSingle(\"${model.id}\");\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tprops: { page },\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t}\n\t\t} else {\n\t\t\tif (model.repeatable) {\n\t\t\t\tappFileContent = stripIndent`\n\t\t\t\t\timport { notFound } from \"next/navigation\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\t\t\t\t\timport { components } from \"@/slices\";\n\n\t\t\t\t\texport const dynamicParams = false;\n\n\t\t\t\t\texport default async function Page({ params }) {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client\n\t\t\t\t\t\t\t.getByUID(\"${model.id}\", params.uid)\n\t\t\t\t\t\t\t.catch(() => notFound());\n\n\t\t\t\t\t\treturn <SliceZone slices={page.data.slices} components={components} />;\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function generateMetadata({ params }) {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client.getByUID(\"${model.id}\", params.uid);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttitle: page.data.meta_title,\n\t\t\t\t\t\t\tdescription: page.data.meta_description,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function generateStaticParams() {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst pages = await client.getAllByType(\"${model.id}\");\n\n\t\t\t\t\t\treturn pages.map((page) => {\n\t\t\t\t\t\t\treturn { uid: page.uid };\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t\tpagesFileContent = stripIndent`\n\t\t\t\t\timport Head from \"next/head\";\n\t\t\t\t\timport { isFilled, asLink } from \"@prismicio/client\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { components } from \"@/slices\";\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\n\t\t\t\t\texport default function Page({ page }) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<Head>\n\t\t\t\t\t\t\t\t\t<title>{page.data.meta_title}</title>\n\t\t\t\t\t\t\t\t\t{isFilled.keyText(page.data.meta_description) ? (\n\t\t\t\t\t\t\t\t\t\t<meta name=\"description\" content={page.data.meta_description} />\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t</Head>\n\t\t\t\t\t\t\t\t<SliceZone slices={page.data.slices} components={components} />\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function getStaticProps({\n\t\t\t\t\t\tparams,\n\t\t\t\t\t\tpreviewData,\n\t\t\t\t\t}) {\n\t\t\t\t\t\t// The \\`previewData\\` parameter allows your app to preview\n\t\t\t\t\t\t// drafts from the Page Builder.\n\t\t\t\t\t\tconst client = createClient({ previewData });\n\n\t\t\t\t\t\tconst page = await client.getByUID(\"${model.id}\", params.uid);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tprops: { page },\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function getStaticPaths() {\n\t\t\t\t\t\tconst client = createClient();\n\n\t\t\t\t\t\tconst pages = await client.getAllByType(\"${model.id}\");\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tpaths: pages.map((page) => {\n\t\t\t\t\t\t\t\treturn asLink(page);\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tfallback: false,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t} else {\n\t\t\t\tappFileContent = stripIndent`\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\t\t\t\t\timport { components } from \"@/slices\";\n\n\t\t\t\t\texport default async function Page() {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client.getSingle(\"${model.id}\");\n\n\t\t\t\t\t\treturn <SliceZone slices={page.data.slices} components={components} />;\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function generateMetadata() {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client.getSingle(\"${model.id}\");\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttitle: page.data.meta_title,\n\t\t\t\t\t\t\tdescription: page.data.meta_description,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t\tpagesFileContent = stripIndent`\n\t\t\t\t\timport Head from \"next/head\";\n\t\t\t\t\timport { isFilled } from \"@prismicio/client\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { components } from \"@/slices\";\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\n\t\t\t\t\texport default function Page({ page }) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<Head>\n\t\t\t\t\t\t\t\t\t<title>{page.data.meta_title}</title>\n\t\t\t\t\t\t\t\t\t{isFilled.keyText(page.data.meta_description) ? (\n\t\t\t\t\t\t\t\t\t\t<meta name=\"description\" content={page.data.meta_description} />\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t</Head>\n\t\t\t\t\t\t\t\t<SliceZone slices={page.data.slices} components={components} />\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function getStaticProps({ previewData }) {\n\t\t\t\t\t\t// The \\`previewData\\` parameter allows your app to preview\n\t\t\t\t\t\t// drafts from the Page Builder.\n\t\t\t\t\t\tconst client = createClient({ previewData });\n\n\t\t\t\t\t\t// The query fetches the page's data based on the current URL.\n\t\t\t\t\t\tconst page = await client.getSingle(\"${model.id}\");\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tprops: { page },\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t}\n\t\t}\n\n\t\tif (options.format) {\n\t\t\tappFileContent = await helpers.format(\n\t\t\t\tappFileContent,\n\t\t\t\thelpers.joinPathFromRoot(`index.${extension}`),\n\t\t\t\t{\n\t\t\t\t\tincludeNewlineAtEnd: false,\n\t\t\t\t},\n\t\t\t);\n\t\t\tpagesFileContent = await helpers.format(\n\t\t\t\tpagesFileContent,\n\t\t\t\thelpers.joinPathFromRoot(`index.${extension}`),\n\t\t\t\t{\n\t\t\t\t\tincludeNewlineAtEnd: false,\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\n\t\treturn [\n\t\t\t{\n\t\t\t\tlabel: \"App Router\",\n\t\t\t\tcontent: source`\n\t\t\t\t\t## Create your ${model.label}'s page component\n\n\t\t\t\t\tAdd a new route by creating an \\`app/${appFilePath}\\` file. (If the route should be nested in a child directory, you can create the file in a directory, like \\`app/marketing/${appFilePath}\\`.)\n\n\t\t\t\t\tPaste in this code:\n\n\t\t\t\t\t${`~~~${extension} [app/${appFilePath}]\\n${appFileContent}\\n~~~`}\n\n\t\t\t\t\tMake sure all of your import paths are correct. See the [install guide](https://prismic.io/docs/setup-nextjs) for more information.\n\t\t\t\t`,\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: \"Page Router\",\n\t\t\t\tcontent: source`\n\t\t\t\t\t## Create your ${model.label}'s page component\n\n\t\t\t\t\tAdd a new route by creating a \\`pages/${pagesFilePath}\\` file. (If the route should be nested in a child directory, you can create the file in a directory, like \\`pages/marketing/${pagesFilePath}\\`.)\n\n\t\t\t\t\t${`~~~${extension} [pages/${pagesFilePath}]\\n${pagesFileContent}\\n~~~`}\n\n\t\t\t\t\tMake sure all of your import paths are correct. See the [install guide](https://prismic.io/docs/setup-nextjs) for more information.\n\t\t\t\t`,\n\t\t\t},\n\t\t];\n\t}\n\n\treturn [];\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"documentation-read.js","sources":["../../../src/hooks/documentation-read.ts"],"sourcesContent":["import { stripIndent, source } from \"common-tags\";\n\nimport type { DocumentationReadHook } from \"@slicemachine/plugin-kit\";\n\nimport { checkIsTypeScriptProject } from \"../lib/checkIsTypeScriptProject\";\nimport { getJSFileExtension } from \"../lib/getJSFileExtension\";\n\nimport type { PluginOptions } from \"../types\";\n\nexport const documentationRead: DocumentationReadHook<PluginOptions> = async (\n\tdata,\n\t{ options, helpers },\n) => {\n\tconst isTypeScriptProject = await checkIsTypeScriptProject({\n\t\thelpers,\n\t\toptions,\n\t});\n\n\tif (data.kind === \"PageSnippet\") {\n\t\tconst { model } = data.data;\n\t\tconst extension = await getJSFileExtension({ helpers, options, jsx: true });\n\n\t\tconst appFilePath = `${\n\t\t\tmodel.repeatable ? \"[uid]\" : model.id\n\t\t}/page.${extension}`;\n\t\tconst pagesFilePath = `${\n\t\t\tmodel.repeatable ? \"[uid]\" : model.id\n\t\t}.${extension}`;\n\n\t\tlet appFileContent: string;\n\t\tlet pagesFileContent: string;\n\t\tif (isTypeScriptProject) {\n\t\t\tif (model.repeatable) {\n\t\t\t\tappFileContent = stripIndent`\n\t\t\t\t\timport { Metadata } from \"next\";\n\t\t\t\t\timport { notFound } from \"next/navigation\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\t\t\t\t\timport { components } from \"@/slices\";\n\n\t\t\t\t\ttype Params = { uid: string };\n\n\t\t\t\t\texport default async function Page({ params }: { params: Params }) {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client\n\t\t\t\t\t\t\t.getByUID(\"${model.id}\", params.uid)\n\t\t\t\t\t\t\t.catch(() => notFound());\n\n\t\t\t\t\t\treturn <SliceZone slices={page.data.slices} components={components} />;\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function generateMetadata({\n\t\t\t\t\t\tparams,\n\t\t\t\t\t}: {\n\t\t\t\t\t\tparams: Params;\n\t\t\t\t\t}): Promise<Metadata> {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client\n\t\t\t\t\t\t\t.getByUID(\"${model.id}\", params.uid)\n\t\t\t\t\t\t\t.catch(() => notFound());\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttitle: page.data.meta_title,\n\t\t\t\t\t\t\tdescription: page.data.meta_description,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function generateStaticParams() {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst pages = await client.getAllByType(\"${model.id}\");\n\n\t\t\t\t\t\treturn pages.map((page) => {\n\t\t\t\t\t\t\treturn { uid: page.uid };\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t\tpagesFileContent = stripIndent`\n\t\t\t\t\timport { GetStaticPropsContext, InferGetStaticPropsType } from \"next\";\n\t\t\t\t\timport Head from \"next/head\";\n\t\t\t\t\timport { isFilled, asLink } from \"@prismicio/client\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { components } from \"@/slices\";\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\n\t\t\t\t\ttype Params = { uid: string };\n\n\t\t\t\t\texport default function Page({\n\t\t\t\t\t\tpage,\n\t\t\t\t\t}: InferGetStaticPropsType<typeof getStaticProps>) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<Head>\n\t\t\t\t\t\t\t\t\t<title>{page.data.meta_title}</title>\n\t\t\t\t\t\t\t\t\t{isFilled.keyText(page.data.meta_description) ? (\n\t\t\t\t\t\t\t\t\t\t<meta name=\"description\" content={page.data.meta_description} />\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t</Head>\n\t\t\t\t\t\t\t\t<SliceZone slices={page.data.slices} components={components} />\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function getStaticProps({\n\t\t\t\t\t\tparams,\n\t\t\t\t\t\tpreviewData,\n\t\t\t\t\t}: GetStaticPropsContext<Params>) {\n\t\t\t\t\t\t// The \\`previewData\\` parameter allows your app to preview\n\t\t\t\t\t\t// drafts from the Page Builder.\n\t\t\t\t\t\tconst client = createClient({ previewData });\n\n\t\t\t\t\t\tconst page = await client.getByUID(\"${model.id}\", params!.uid);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tprops: { page },\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function getStaticPaths() {\n\t\t\t\t\t\tconst client = createClient();\n\n\t\t\t\t\t\tconst pages = await client.getAllByType(\"${model.id}\");\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tpaths: pages.map((page) => {\n\t\t\t\t\t\t\t\treturn asLink(page);\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tfallback: false,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t} else {\n\t\t\t\tappFileContent = stripIndent`\n\t\t\t\t\timport { Metadata } from \"next\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\t\t\t\t\timport { components } from \"@/slices\";\n\n\t\t\t\t\texport default async function Page() {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client.getSingle(\"${model.id}\");\n\n\t\t\t\t\t\treturn <SliceZone slices={page.data.slices} components={components} />;\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function generateMetadata(): Promise<Metadata> {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client.getSingle(\"${model.id}\");\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttitle: page.data.meta_title,\n\t\t\t\t\t\t\tdescription: page.data.meta_description,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t\tpagesFileContent = stripIndent`\n\t\t\t\t\timport { GetStaticPropsContext, InferGetStaticPropsType } from \"next\";\n\t\t\t\t\timport Head from \"next/head\";\n\t\t\t\t\timport { isFilled } from \"@prismicio/client\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { components } from \"@/slices\";\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\n\t\t\t\t\texport default function Page({\n\t\t\t\t\t\tpage,\n\t\t\t\t\t}: InferGetStaticPropsType<typeof getStaticProps>) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<Head>\n\t\t\t\t\t\t\t\t\t<title>{page.data.meta_title}</title>\n\t\t\t\t\t\t\t\t\t{isFilled.keyText(page.data.meta_description) ? (\n\t\t\t\t\t\t\t\t\t\t<meta name=\"description\" content={page.data.meta_description} />\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t</Head>\n\t\t\t\t\t\t\t\t<SliceZone slices={page.data.slices} components={components} />\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function getStaticProps({ previewData }: GetStaticPropsContext) {\n\t\t\t\t\t\t// The \\`previewData\\` parameter allows your app to preview\n\t\t\t\t\t\t// drafts from the Page Builder.\n\t\t\t\t\t\tconst client = createClient({ previewData });\n\n\t\t\t\t\t\t// The query fetches the page's data based on the current URL.\n\t\t\t\t\t\tconst page = await client.getSingle(\"${model.id}\");\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tprops: { page },\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t}\n\t\t} else {\n\t\t\tif (model.repeatable) {\n\t\t\t\tappFileContent = stripIndent`\n\t\t\t\t\timport { notFound } from \"next/navigation\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\t\t\t\t\timport { components } from \"@/slices\";\n\n\n\t\t\t\t\texport default async function Page({ params }) {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client\n\t\t\t\t\t\t\t.getByUID(\"${model.id}\", params.uid)\n\t\t\t\t\t\t\t.catch(() => notFound());\n\n\t\t\t\t\t\treturn <SliceZone slices={page.data.slices} components={components} />;\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function generateMetadata({ params }) {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client\n\t\t\t\t\t\t\t.getByUID(\"${model.id}\", params.uid)\n\t\t\t\t\t\t\t.catch(() => notFound());\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttitle: page.data.meta_title,\n\t\t\t\t\t\t\tdescription: page.data.meta_description,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function generateStaticParams() {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst pages = await client.getAllByType(\"${model.id}\");\n\n\t\t\t\t\t\treturn pages.map((page) => {\n\t\t\t\t\t\t\treturn { uid: page.uid };\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t\tpagesFileContent = stripIndent`\n\t\t\t\t\timport Head from \"next/head\";\n\t\t\t\t\timport { isFilled, asLink } from \"@prismicio/client\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { components } from \"@/slices\";\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\n\t\t\t\t\texport default function Page({ page }) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<Head>\n\t\t\t\t\t\t\t\t\t<title>{page.data.meta_title}</title>\n\t\t\t\t\t\t\t\t\t{isFilled.keyText(page.data.meta_description) ? (\n\t\t\t\t\t\t\t\t\t\t<meta name=\"description\" content={page.data.meta_description} />\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t</Head>\n\t\t\t\t\t\t\t\t<SliceZone slices={page.data.slices} components={components} />\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function getStaticProps({\n\t\t\t\t\t\tparams,\n\t\t\t\t\t\tpreviewData,\n\t\t\t\t\t}) {\n\t\t\t\t\t\t// The \\`previewData\\` parameter allows your app to preview\n\t\t\t\t\t\t// drafts from the Page Builder.\n\t\t\t\t\t\tconst client = createClient({ previewData });\n\n\t\t\t\t\t\tconst page = await client.getByUID(\"${model.id}\", params.uid);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tprops: { page },\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function getStaticPaths() {\n\t\t\t\t\t\tconst client = createClient();\n\n\t\t\t\t\t\tconst pages = await client.getAllByType(\"${model.id}\");\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tpaths: pages.map((page) => {\n\t\t\t\t\t\t\t\treturn asLink(page);\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tfallback: false,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t} else {\n\t\t\t\tappFileContent = stripIndent`\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\t\t\t\t\timport { components } from \"@/slices\";\n\n\t\t\t\t\texport default async function Page() {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client.getSingle(\"${model.id}\");\n\n\t\t\t\t\t\treturn <SliceZone slices={page.data.slices} components={components} />;\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function generateMetadata() {\n\t\t\t\t\t\tconst client = createClient();\n\t\t\t\t\t\tconst page = await client.getSingle(\"${model.id}\");\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttitle: page.data.meta_title,\n\t\t\t\t\t\t\tdescription: page.data.meta_description,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t\tpagesFileContent = stripIndent`\n\t\t\t\t\timport Head from \"next/head\";\n\t\t\t\t\timport { isFilled } from \"@prismicio/client\";\n\t\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\t\timport { components } from \"@/slices\";\n\t\t\t\t\timport { createClient } from \"@/prismicio\";\n\n\t\t\t\t\texport default function Page({ page }) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<Head>\n\t\t\t\t\t\t\t\t\t<title>{page.data.meta_title}</title>\n\t\t\t\t\t\t\t\t\t{isFilled.keyText(page.data.meta_description) ? (\n\t\t\t\t\t\t\t\t\t\t<meta name=\"description\" content={page.data.meta_description} />\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t</Head>\n\t\t\t\t\t\t\t\t<SliceZone slices={page.data.slices} components={components} />\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\texport async function getStaticProps({ previewData }) {\n\t\t\t\t\t\t// The \\`previewData\\` parameter allows your app to preview\n\t\t\t\t\t\t// drafts from the Page Builder.\n\t\t\t\t\t\tconst client = createClient({ previewData });\n\n\t\t\t\t\t\t// The query fetches the page's data based on the current URL.\n\t\t\t\t\t\tconst page = await client.getSingle(\"${model.id}\");\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tprops: { page },\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t}\n\t\t}\n\n\t\tif (options.format) {\n\t\t\tappFileContent = await helpers.format(\n\t\t\t\tappFileContent,\n\t\t\t\thelpers.joinPathFromRoot(`index.${extension}`),\n\t\t\t\t{\n\t\t\t\t\tincludeNewlineAtEnd: false,\n\t\t\t\t},\n\t\t\t);\n\t\t\tpagesFileContent = await helpers.format(\n\t\t\t\tpagesFileContent,\n\t\t\t\thelpers.joinPathFromRoot(`index.${extension}`),\n\t\t\t\t{\n\t\t\t\t\tincludeNewlineAtEnd: false,\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\n\t\treturn [\n\t\t\t{\n\t\t\t\tlabel: \"App Router\",\n\t\t\t\tcontent: source`\n\t\t\t\t\t## Create your ${model.label}'s page component\n\n\t\t\t\t\tAdd a new route by creating an \\`app/${appFilePath}\\` file. (If the route should be nested in a child directory, you can create the file in a directory, like \\`app/marketing/${appFilePath}\\`.)\n\n\t\t\t\t\tPaste in this code:\n\n\t\t\t\t\t${`~~~${extension} [app/${appFilePath}]\\n${appFileContent}\\n~~~`}\n\n\t\t\t\t\tMake sure all of your import paths are correct. See the [install guide](https://prismic.io/docs/setup-nextjs) for more information.\n\t\t\t\t`,\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: \"Pages Router\",\n\t\t\t\tcontent: source`\n\t\t\t\t\t## Create your ${model.label}'s page component\n\n\t\t\t\t\tAdd a new route by creating a \\`pages/${pagesFilePath}\\` file. (If the route should be nested in a child directory, you can create the file in a directory, like \\`pages/marketing/${pagesFilePath}\\`.)\n\n\t\t\t\t\t${`~~~${extension} [pages/${pagesFilePath}]\\n${pagesFileContent}\\n~~~`}\n\n\t\t\t\t\tMake sure all of your import paths are correct. See the [install guide](https://prismic.io/docs/setup-nextjs) for more information.\n\t\t\t\t`,\n\t\t\t},\n\t\t];\n\t}\n\n\treturn [];\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const fs = require("node:fs/promises");
|
|
4
3
|
const path = require("node:path");
|
|
4
|
+
const fs = require("@slicemachine/plugin-kit/fs");
|
|
5
5
|
const commonTags = require("common-tags");
|
|
6
6
|
const checkHasAppRouter = require("../lib/checkHasAppRouter.cjs");
|
|
7
7
|
const checkHasSrcDirectory = require("../lib/checkHasSrcDirectory.cjs");
|
|
8
8
|
const checkIsTypeScriptProject = require("../lib/checkIsTypeScriptProject.cjs");
|
|
9
|
-
const checkPathExists = require("../lib/checkPathExists.cjs");
|
|
10
9
|
const getJSFileExtension = require("../lib/getJSFileExtension.cjs");
|
|
11
10
|
const rejectIfNecessary = require("../lib/rejectIfNecessary.cjs");
|
|
12
11
|
function _interopNamespaceDefault(e) {
|
|
@@ -25,7 +24,6 @@ function _interopNamespaceDefault(e) {
|
|
|
25
24
|
n.default = e;
|
|
26
25
|
return Object.freeze(n);
|
|
27
26
|
}
|
|
28
|
-
const fs__namespace = /* @__PURE__ */ _interopNamespaceDefault(fs);
|
|
29
27
|
const path__namespace = /* @__PURE__ */ _interopNamespaceDefault(path);
|
|
30
28
|
const installDependencies = async ({ installDependencies: installDependencies2 }) => {
|
|
31
29
|
await installDependencies2({
|
|
@@ -44,9 +42,8 @@ const createPrismicIOFile = async ({ helpers, options }) => {
|
|
|
44
42
|
const hasSrcDirectory = await checkHasSrcDirectory.checkHasSrcDirectory({ helpers });
|
|
45
43
|
const hasAppRouter = await checkHasAppRouter.checkHasAppRouter({ helpers });
|
|
46
44
|
const extension = await getJSFileExtension.getJSFileExtension({ helpers, options });
|
|
47
|
-
const filename = `prismicio.${extension}
|
|
48
|
-
|
|
49
|
-
if (await checkPathExists.checkPathExists(filePath)) {
|
|
45
|
+
const filename = path__namespace.join(...[hasSrcDirectory ? "src" : void 0, `prismicio.${extension}`].filter((segment) => Boolean(segment)));
|
|
46
|
+
if (await fs.checkHasProjectFile({ filename, helpers })) {
|
|
50
47
|
return;
|
|
51
48
|
}
|
|
52
49
|
let createClientContents;
|
|
@@ -219,24 +216,25 @@ const createPrismicIOFile = async ({ helpers, options }) => {
|
|
|
219
216
|
${createClientContents}
|
|
220
217
|
`;
|
|
221
218
|
}
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
219
|
+
await fs.writeProjectFile({
|
|
220
|
+
filename,
|
|
221
|
+
contents,
|
|
222
|
+
format: options.format,
|
|
223
|
+
helpers
|
|
224
|
+
});
|
|
226
225
|
};
|
|
227
226
|
const createSliceSimulatorPage = async ({ helpers, options }) => {
|
|
228
227
|
const hasSrcDirectory = await checkHasSrcDirectory.checkHasSrcDirectory({ helpers });
|
|
229
228
|
const hasAppRouter = await checkHasAppRouter.checkHasAppRouter({ helpers });
|
|
230
229
|
const extension = await getJSFileExtension.getJSFileExtension({ helpers, options, jsx: true });
|
|
231
|
-
const
|
|
230
|
+
const filename = path__namespace.join(...[
|
|
232
231
|
hasSrcDirectory ? "src" : void 0,
|
|
233
232
|
hasAppRouter ? `app/slice-simulator/page.${extension}` : `pages/slice-simulator.${extension}`
|
|
234
233
|
].filter((segment) => Boolean(segment)));
|
|
235
|
-
if (await
|
|
234
|
+
if (await fs.checkHasProjectFile({ filename, helpers })) {
|
|
236
235
|
return;
|
|
237
236
|
}
|
|
238
|
-
|
|
239
|
-
let contents = commonTags.source`
|
|
237
|
+
const contents = commonTags.source`
|
|
240
238
|
"use client"
|
|
241
239
|
|
|
242
240
|
import { SliceSimulator } from "@slicemachine/adapter-next/simulator";
|
|
@@ -252,10 +250,12 @@ const createSliceSimulatorPage = async ({ helpers, options }) => {
|
|
|
252
250
|
);
|
|
253
251
|
}
|
|
254
252
|
`;
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
253
|
+
await fs.writeProjectFile({
|
|
254
|
+
filename,
|
|
255
|
+
contents,
|
|
256
|
+
format: options.format,
|
|
257
|
+
helpers
|
|
258
|
+
});
|
|
259
259
|
};
|
|
260
260
|
const createPreviewRoute = async ({ helpers, options }) => {
|
|
261
261
|
const hasSrcDirectory = await checkHasSrcDirectory.checkHasSrcDirectory({ helpers });
|
|
@@ -265,11 +265,11 @@ const createPreviewRoute = async ({ helpers, options }) => {
|
|
|
265
265
|
options
|
|
266
266
|
});
|
|
267
267
|
const extension = await getJSFileExtension.getJSFileExtension({ helpers, options });
|
|
268
|
-
const
|
|
268
|
+
const filename = path__namespace.join(...[
|
|
269
269
|
hasSrcDirectory ? "src" : void 0,
|
|
270
270
|
hasAppRouter ? `app/api/preview/route.${extension}` : `pages/api/preview.${extension}`
|
|
271
271
|
].filter((segment) => Boolean(segment)));
|
|
272
|
-
if (await
|
|
272
|
+
if (await fs.checkHasProjectFile({ filename, helpers })) {
|
|
273
273
|
return;
|
|
274
274
|
}
|
|
275
275
|
let contents;
|
|
@@ -277,7 +277,6 @@ const createPreviewRoute = async ({ helpers, options }) => {
|
|
|
277
277
|
if (isTypeScriptProject) {
|
|
278
278
|
contents = commonTags.source`
|
|
279
279
|
import { NextRequest } from "next/server";
|
|
280
|
-
import { draftMode } from "next/headers";
|
|
281
280
|
import { redirectToPreviewURL } from "@prismicio/next";
|
|
282
281
|
|
|
283
282
|
import { createClient } from "../../../prismicio";
|
|
@@ -285,14 +284,11 @@ const createPreviewRoute = async ({ helpers, options }) => {
|
|
|
285
284
|
export async function GET(request: NextRequest) {
|
|
286
285
|
const client = createClient();
|
|
287
286
|
|
|
288
|
-
draftMode().enable();
|
|
289
|
-
|
|
290
287
|
await redirectToPreviewURL({ client, request });
|
|
291
288
|
}
|
|
292
289
|
`;
|
|
293
290
|
} else {
|
|
294
291
|
contents = commonTags.source`
|
|
295
|
-
import { draftMode } from "next/headers";
|
|
296
292
|
import { redirectToPreviewURL } from "@prismicio/next";
|
|
297
293
|
|
|
298
294
|
import { createClient } from "../../../prismicio";
|
|
@@ -300,8 +296,6 @@ const createPreviewRoute = async ({ helpers, options }) => {
|
|
|
300
296
|
export async function GET(request) {
|
|
301
297
|
const client = createClient();
|
|
302
298
|
|
|
303
|
-
draftMode().enable();
|
|
304
|
-
|
|
305
299
|
await redirectToPreviewURL({ client, request });
|
|
306
300
|
}
|
|
307
301
|
`;
|
|
@@ -338,11 +332,12 @@ const createPreviewRoute = async ({ helpers, options }) => {
|
|
|
338
332
|
`;
|
|
339
333
|
}
|
|
340
334
|
}
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
335
|
+
await fs.writeProjectFile({
|
|
336
|
+
filename,
|
|
337
|
+
contents,
|
|
338
|
+
format: options.format,
|
|
339
|
+
helpers
|
|
340
|
+
});
|
|
346
341
|
};
|
|
347
342
|
const createExitPreviewRoute = async ({ helpers, options }) => {
|
|
348
343
|
const hasSrcDirectory = await checkHasSrcDirectory.checkHasSrcDirectory({ helpers });
|
|
@@ -352,16 +347,16 @@ const createExitPreviewRoute = async ({ helpers, options }) => {
|
|
|
352
347
|
options
|
|
353
348
|
});
|
|
354
349
|
const extension = await getJSFileExtension.getJSFileExtension({ helpers, options });
|
|
355
|
-
const
|
|
350
|
+
const filename = path__namespace.join(...[
|
|
356
351
|
hasSrcDirectory ? "src" : void 0,
|
|
357
352
|
hasAppRouter ? `app/api/exit-preview/route.${extension}` : `pages/api/exit-preview.${extension}`
|
|
358
353
|
].filter((segment) => Boolean(segment)));
|
|
359
|
-
if (await
|
|
354
|
+
if (await fs.checkHasProjectFile({ filename, helpers })) {
|
|
360
355
|
return;
|
|
361
356
|
}
|
|
362
357
|
let contents;
|
|
363
358
|
if (hasAppRouter) {
|
|
364
|
-
contents = `
|
|
359
|
+
contents = commonTags.source`
|
|
365
360
|
import { exitPreview } from "@prismicio/next";
|
|
366
361
|
|
|
367
362
|
export async function GET() {
|
|
@@ -388,27 +383,24 @@ const createExitPreviewRoute = async ({ helpers, options }) => {
|
|
|
388
383
|
`;
|
|
389
384
|
}
|
|
390
385
|
}
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
386
|
+
await fs.writeProjectFile({
|
|
387
|
+
filename,
|
|
388
|
+
contents,
|
|
389
|
+
format: options.format,
|
|
390
|
+
helpers
|
|
391
|
+
});
|
|
396
392
|
};
|
|
397
|
-
const modifySliceMachineConfig = async ({ helpers, options }) => {
|
|
393
|
+
const modifySliceMachineConfig = async ({ helpers, options, actions }) => {
|
|
398
394
|
var _a;
|
|
399
395
|
const hasSrcDirectory = await checkHasSrcDirectory.checkHasSrcDirectory({ helpers });
|
|
400
396
|
const project = await helpers.getProject();
|
|
401
397
|
(_a = project.config).localSliceSimulatorURL || (_a.localSliceSimulatorURL = "http://localhost:3000/slice-simulator");
|
|
402
|
-
if (hasSrcDirectory && JSON.stringify(project.config.libraries) === JSON.stringify(["./slices"])) {
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
} catch (error) {
|
|
409
|
-
if (error instanceof Error && "code" in error && error.code === "ENOENT") {
|
|
410
|
-
project.config.libraries = ["./src/slices"];
|
|
411
|
-
}
|
|
398
|
+
if (hasSrcDirectory && project.config.libraries && JSON.stringify(project.config.libraries) === JSON.stringify(["./slices"])) {
|
|
399
|
+
const sliceLibrary = await actions.readSliceLibrary({
|
|
400
|
+
libraryID: project.config.libraries[0]
|
|
401
|
+
});
|
|
402
|
+
if (sliceLibrary.sliceIDs.length < 1) {
|
|
403
|
+
project.config.libraries = ["./src/slices"];
|
|
412
404
|
}
|
|
413
405
|
}
|
|
414
406
|
await helpers.updateSliceMachineConfig(project.config, {
|
|
@@ -422,14 +414,14 @@ const createRevalidateRoute = async ({ helpers, options }) => {
|
|
|
422
414
|
}
|
|
423
415
|
const hasSrcDirectory = await checkHasSrcDirectory.checkHasSrcDirectory({ helpers });
|
|
424
416
|
const extension = await getJSFileExtension.getJSFileExtension({ helpers, options });
|
|
425
|
-
const
|
|
417
|
+
const filename = path__namespace.join(...[
|
|
426
418
|
hasSrcDirectory ? "src" : void 0,
|
|
427
419
|
`app/api/revalidate/route.${extension}`
|
|
428
420
|
].filter((segment) => Boolean(segment)));
|
|
429
|
-
if (await
|
|
421
|
+
if (await fs.checkHasProjectFile({ filename, helpers })) {
|
|
430
422
|
return;
|
|
431
423
|
}
|
|
432
|
-
|
|
424
|
+
const contents = commonTags.source`
|
|
433
425
|
import { NextResponse } from "next/server";
|
|
434
426
|
import { revalidateTag } from "next/cache";
|
|
435
427
|
|
|
@@ -439,11 +431,12 @@ const createRevalidateRoute = async ({ helpers, options }) => {
|
|
|
439
431
|
return NextResponse.json({ revalidated: true, now: Date.now() });
|
|
440
432
|
}
|
|
441
433
|
`;
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
434
|
+
await fs.writeProjectFile({
|
|
435
|
+
filename,
|
|
436
|
+
contents,
|
|
437
|
+
format: options.format,
|
|
438
|
+
helpers
|
|
439
|
+
});
|
|
447
440
|
};
|
|
448
441
|
const projectInit = async ({ installDependencies: _installDependencies }, context) => {
|
|
449
442
|
rejectIfNecessary.rejectIfNecessary(await Promise.allSettled([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-init.cjs","sources":["../../../src/hooks/project-init.ts"],"sourcesContent":["import * as fs from \"node:fs/promises\";\nimport * as path from \"node:path\";\nimport type {\n\tProjectInitHook,\n\tProjectInitHookData,\n\tSliceMachineContext,\n} from \"@slicemachine/plugin-kit\";\nimport { source } from \"common-tags\";\n\nimport { checkHasAppRouter } from \"../lib/checkHasAppRouter\";\nimport { checkHasSrcDirectory } from \"../lib/checkHasSrcDirectory\";\nimport { checkIsTypeScriptProject } from \"../lib/checkIsTypeScriptProject\";\nimport { checkPathExists } from \"../lib/checkPathExists\";\nimport { getJSFileExtension } from \"../lib/getJSFileExtension\";\nimport { rejectIfNecessary } from \"../lib/rejectIfNecessary\";\n\nimport type { PluginOptions } from \"../types\";\n\ntype InstallDependenciesArgs = {\n\tinstallDependencies: ProjectInitHookData[\"installDependencies\"];\n};\n\nconst installDependencies = async ({\n\tinstallDependencies,\n}: InstallDependenciesArgs) => {\n\tawait installDependencies({\n\t\tdependencies: {\n\t\t\t\"@prismicio/client\": \"latest\",\n\t\t\t\"@prismicio/react\": \"latest\",\n\t\t\t\"@prismicio/next\": \"latest\",\n\t\t},\n\t});\n};\n\ntype CreatePrismicIOFileArgs = SliceMachineContext<PluginOptions>;\n\nconst createPrismicIOFile = async ({\n\thelpers,\n\toptions,\n}: CreatePrismicIOFileArgs) => {\n\tconst isTypeScriptProject = await checkIsTypeScriptProject({\n\t\thelpers,\n\t\toptions,\n\t});\n\tconst hasSrcDirectory = await checkHasSrcDirectory({ helpers });\n\tconst hasAppRouter = await checkHasAppRouter({ helpers });\n\n\tconst extension = await getJSFileExtension({ helpers, options });\n\tconst filename = `prismicio.${extension}`;\n\tconst filePath = hasSrcDirectory\n\t\t? helpers.joinPathFromRoot(\"src\", filename)\n\t\t: helpers.joinPathFromRoot(filename);\n\n\tif (await checkPathExists(filePath)) {\n\t\treturn;\n\t}\n\n\tlet createClientContents: string;\n\n\tif (hasAppRouter) {\n\t\tif (isTypeScriptProject) {\n\t\t\tcreateClientContents = source`\n\t\t\t\t/**\n\t\t\t\t * Creates a Prismic client for the project's repository. The client is used to\n\t\t\t\t * query content from the Prismic API.\n\t\t\t\t *\n\t\t\t\t * @param config - Configuration for the Prismic client.\n\t\t\t\t */\n\t\t\t\texport const createClient = (config: prismicNext.CreateClientConfig = {}) => {\n\t\t\t\t\tconst client = prismic.createClient(repositoryName, {\n\t\t\t\t\t\troutes,\n\t\t\t\t\t\tfetchOptions:\n\t\t\t\t\t\t\tprocess.env.NODE_ENV === 'production'\n\t\t\t\t\t\t\t\t? { next: { tags: ['prismic'] }, cache: 'force-cache' }\n\t\t\t\t\t\t\t\t: { next: { revalidate: 5 } },\n\t\t\t\t\t\t...config,\n\t\t\t\t\t});\n\n\t\t\t\t\tprismicNext.enableAutoPreviews({\n\t\t\t\t\t\tclient,\n\t\t\t\t\t\tpreviewData: config.previewData,\n\t\t\t\t\t\treq: config.req,\n\t\t\t\t\t});\n\n\t\t\t\t\treturn client;\n\t\t\t\t};\n\t\t\t`;\n\t\t} else {\n\t\t\tcreateClientContents = source`\n\t\t\t\t/**\n\t\t\t\t * Creates a Prismic client for the project's repository. The client is used to\n\t\t\t\t * query content from the Prismic API.\n\t\t\t\t *\n\t\t\t\t * @param {prismicNext.CreateClientConfig} config - Configuration for the Prismic client.\n\t\t\t\t */\n\t\t\t\texport const createClient = (config = {}) => {\n\t\t\t\t\tconst client = prismic.createClient(repositoryName, {\n\t\t\t\t\t\troutes,\n\t\t\t\t\t\tfetchOptions:\n\t\t\t\t\t\t\tprocess.env.NODE_ENV === 'production'\n\t\t\t\t\t\t\t\t? { next: { tags: ['prismic'] }, cache: 'force-cache' }\n\t\t\t\t\t\t\t\t: { next: { revalidate: 5 } },\n\t\t\t\t\t\t...config,\n\t\t\t\t\t});\n\n\t\t\t\t\tprismicNext.enableAutoPreviews({\n\t\t\t\t\t\tclient,\n\t\t\t\t\t\tpreviewData: config.previewData,\n\t\t\t\t\t\treq: config.req,\n\t\t\t\t\t});\n\n\t\t\t\t\treturn client;\n\t\t\t\t};\n\t\t\t`;\n\t\t}\n\t} else {\n\t\tif (isTypeScriptProject) {\n\t\t\tcreateClientContents = source`\n\t\t\t\t/**\n\t\t\t\t * Creates a Prismic client for the project's repository. The client is used to\n\t\t\t\t * query content from the Prismic API.\n\t\t\t\t *\n\t\t\t\t * @param config - Configuration for the Prismic client.\n\t\t\t\t */\n\t\t\t\texport const createClient = (config: prismicNext.CreateClientConfig = {}) => {\n\t\t\t\t\tconst client = prismic.createClient(repositoryName, {\n\t\t\t\t\t\troutes,\n\t\t\t\t\t\t...config,\n\t\t\t\t\t});\n\n\t\t\t\t\tprismicNext.enableAutoPreviews({\n\t\t\t\t\t\tclient,\n\t\t\t\t\t\tpreviewData: config.previewData,\n\t\t\t\t\t\treq: config.req,\n\t\t\t\t\t});\n\n\t\t\t\t\treturn client;\n\t\t\t\t};\n\t\t\t`;\n\t\t} else {\n\t\t\tcreateClientContents = source`\n\t\t\t\t/**\n\t\t\t\t * Creates a Prismic client for the project's repository. The client is used to\n\t\t\t\t * query content from the Prismic API.\n\t\t\t\t *\n\t\t\t\t * @param {prismicNext.CreateClientConfig} config - Configuration for the Prismic client.\n\t\t\t\t */\n\t\t\t\texport const createClient = (config = {}) => {\n\t\t\t\t\tconst client = prismic.createClient(repositoryName, {\n\t\t\t\t\t\troutes,\n\t\t\t\t\t\t...config,\n\t\t\t\t\t});\n\n\t\t\t\t\tprismicNext.enableAutoPreviews({\n\t\t\t\t\t\tclient,\n\t\t\t\t\t\tpreviewData: config.previewData,\n\t\t\t\t\t\treq: config.req,\n\t\t\t\t\t});\n\n\t\t\t\t\treturn client;\n\t\t\t\t};\n\t\t\t`;\n\t\t}\n\t}\n\n\tlet contents: string;\n\n\tif (isTypeScriptProject) {\n\t\tcontents = source`\n\t\t\timport * as prismic from \"@prismicio/client\";\n\t\t\timport * as prismicNext from \"@prismicio/next\";\n\t\t\timport config from \"${hasSrcDirectory ? \"..\" : \".\"}/slicemachine.config.json\";\n\n\t\t\t/**\n\t\t\t * The project's Prismic repository name.\n\t\t\t */\n\t\t\texport const repositoryName = config.repositoryName;\n\n\t\t\t/**\n\t\t\t * A list of Route Resolver objects that define how a document's \\`url\\` field is resolved.\n\t\t\t *\n\t\t\t * {@link https://prismic.io/docs/route-resolver#route-resolver}\n\t\t\t */\n\t\t\t// TODO: Update the routes array to match your project's route structure.\n\t\t\tconst routes: prismic.ClientConfig[\"routes\"] = [\n\t\t\t\t{\n\t\t\t\t\ttype: \"homepage\",\n\t\t\t\t\tpath: \"/\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttype: \"page\",\n\t\t\t\t\tpath: \"/:uid\",\n\t\t\t\t},\n\t\t\t];\n\n\t\t\t${createClientContents}\n\t\t`;\n\t} else {\n\t\tcontents = source`\n\t\t\timport * as prismic from \"@prismicio/client\";\n\t\t\timport * as prismicNext from \"@prismicio/next\";\n\t\t\timport config from \"${hasSrcDirectory ? \"..\" : \".\"}/slicemachine.config.json\";\n\n\t\t\t/**\n\t\t\t * The project's Prismic repository name.\n\t\t\t */\n\t\t\texport const repositoryName = config.repositoryName;\n\n\t\t\t/**\n\t\t\t * A list of Route Resolver objects that define how a document's \\`url\\` field is resolved.\n\t\t\t *\n\t\t\t * {@link https://prismic.io/docs/route-resolver#route-resolver}\n\t\t\t *\n\t\t\t * @type {prismic.ClientConfig[\"routes\"]}\n\t\t\t */\n\t\t\t// TODO: Update the routes array to match your project's route structure.\n\t\t\tconst routes = [\n\t\t\t\t{\n\t\t\t\t\ttype: \"homepage\",\n\t\t\t\t\tpath: \"/\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttype: \"page\",\n\t\t\t\t\tpath: \"/:uid\",\n\t\t\t\t},\n\t\t\t];\n\n\t\t\t${createClientContents}\n\t\t`;\n\t}\n\n\tif (options.format) {\n\t\tcontents = await helpers.format(contents, filePath);\n\t}\n\n\tawait fs.writeFile(filePath, contents);\n};\n\ntype CreateSliceSimulatorPageArgs = SliceMachineContext<PluginOptions>;\n\nconst createSliceSimulatorPage = async ({\n\thelpers,\n\toptions,\n}: CreateSliceSimulatorPageArgs) => {\n\tconst hasSrcDirectory = await checkHasSrcDirectory({ helpers });\n\tconst hasAppRouter = await checkHasAppRouter({ helpers });\n\n\tconst extension = await getJSFileExtension({ helpers, options, jsx: true });\n\tconst filePath = helpers.joinPathFromRoot(\n\t\t...[\n\t\t\thasSrcDirectory ? \"src\" : undefined,\n\t\t\thasAppRouter\n\t\t\t\t? `app/slice-simulator/page.${extension}`\n\t\t\t\t: `pages/slice-simulator.${extension}`,\n\t\t].filter((segment): segment is NonNullable<typeof segment> =>\n\t\t\tBoolean(segment),\n\t\t),\n\t);\n\n\tif (await checkPathExists(filePath)) {\n\t\treturn;\n\t}\n\n\tawait fs.mkdir(path.dirname(filePath), { recursive: true });\n\n\tlet contents = source`\n\t\t\"use client\"\n\n\t\timport { SliceSimulator } from \"@slicemachine/adapter-next/simulator\";\n\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\timport { components } from \"${hasAppRouter ? \"../..\" : \"..\"}/slices\";\n\n\t\texport default function SliceSimulatorPage() {\n\t\t\treturn (\n\t\t\t\t<SliceSimulator\n\t\t\t\t\tsliceZone={(props) => <SliceZone {...props} components={components} />}\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\t`;\n\n\tif (options.format) {\n\t\tcontents = await helpers.format(contents, filePath);\n\t}\n\n\tawait fs.writeFile(filePath, contents);\n};\n\nconst createPreviewRoute = async ({\n\thelpers,\n\toptions,\n}: SliceMachineContext<PluginOptions>) => {\n\tconst hasSrcDirectory = await checkHasSrcDirectory({ helpers });\n\tconst hasAppRouter = await checkHasAppRouter({ helpers });\n\tconst isTypeScriptProject = await checkIsTypeScriptProject({\n\t\thelpers,\n\t\toptions,\n\t});\n\n\tconst extension = await getJSFileExtension({ helpers, options });\n\tconst filePath = helpers.joinPathFromRoot(\n\t\t...[\n\t\t\thasSrcDirectory ? \"src\" : undefined,\n\t\t\thasAppRouter\n\t\t\t\t? `app/api/preview/route.${extension}`\n\t\t\t\t: `pages/api/preview.${extension}`,\n\t\t].filter((segment): segment is NonNullable<typeof segment> =>\n\t\t\tBoolean(segment),\n\t\t),\n\t);\n\n\tif (await checkPathExists(filePath)) {\n\t\treturn;\n\t}\n\n\tlet contents: string;\n\n\tif (hasAppRouter) {\n\t\tif (isTypeScriptProject) {\n\t\t\tcontents = source`\n\t\t\t\timport { NextRequest } from \"next/server\";\n\t\t\t\timport { draftMode } from \"next/headers\";\n\t\t\t\timport { redirectToPreviewURL } from \"@prismicio/next\";\n\n\t\t\t\timport { createClient } from \"../../../prismicio\";\n\n\t\t\t\texport async function GET(request: NextRequest) {\n\t\t\t\t\tconst client = createClient();\n\n\t\t\t\t\tdraftMode().enable();\n\n\t\t\t\t\tawait redirectToPreviewURL({ client, request });\n\t\t\t\t}\n\t\t\t`;\n\t\t} else {\n\t\t\tcontents = source`\n\t\t\t\timport { draftMode } from \"next/headers\";\n\t\t\t\timport { redirectToPreviewURL } from \"@prismicio/next\";\n\n\t\t\t\timport { createClient } from \"../../../prismicio\";\n\n\t\t\t\texport async function GET(request) {\n\t\t\t\t\tconst client = createClient();\n\n\t\t\t\t\tdraftMode().enable();\n\n\t\t\t\t\tawait redirectToPreviewURL({ client, request });\n\t\t\t\t}\n\t\t\t`;\n\t\t}\n\t} else {\n\t\tif (isTypeScriptProject) {\n\t\t\tcontents = source`\n\t\t\t\timport { NextApiRequest, NextApiResponse } from \"next\";\n\t\t\t\timport { setPreviewData, redirectToPreviewURL } from \"@prismicio/next\";\n\n\t\t\t\timport { createClient } from \"../../prismicio\";\n\n\t\t\t\texport default async (req: NextApiRequest, res: NextApiResponse) => {\n\t\t\t\t\tconst client = createClient({ req });\n\n\t\t\t\t\tawait setPreviewData({ req, res });\n\n\t\t\t\t\tawait redirectToPreviewURL({ req, res, client });\n\t\t\t\t};\n\t\t\t`;\n\t\t} else {\n\t\t\tcontents = source`\n\t\t\t\timport { setPreviewData, redirectToPreviewURL } from \"@prismicio/next\";\n\n\t\t\t\timport { createClient } from \"../../prismicio\";\n\n\t\t\t\texport default async (req, res) => {\n\t\t\t\t\tconst client = createClient({ req });\n\n\t\t\t\t\tawait setPreviewData({ req, res });\n\n\t\t\t\t\tawait redirectToPreviewURL({ req, res, client });\n\t\t\t\t};\n\t\t\t`;\n\t\t}\n\t}\n\n\tif (options.format) {\n\t\tcontents = await helpers.format(contents, filePath);\n\t}\n\n\tawait fs.mkdir(path.dirname(filePath), { recursive: true });\n\tawait fs.writeFile(filePath, contents);\n};\n\nconst createExitPreviewRoute = async ({\n\thelpers,\n\toptions,\n}: SliceMachineContext<PluginOptions>) => {\n\tconst hasSrcDirectory = await checkHasSrcDirectory({ helpers });\n\tconst hasAppRouter = await checkHasAppRouter({ helpers });\n\tconst isTypeScriptProject = await checkIsTypeScriptProject({\n\t\thelpers,\n\t\toptions,\n\t});\n\n\tconst extension = await getJSFileExtension({ helpers, options });\n\tconst filePath = helpers.joinPathFromRoot(\n\t\t...[\n\t\t\thasSrcDirectory ? \"src\" : undefined,\n\t\t\thasAppRouter\n\t\t\t\t? `app/api/exit-preview/route.${extension}`\n\t\t\t\t: `pages/api/exit-preview.${extension}`,\n\t\t].filter((segment): segment is NonNullable<typeof segment> =>\n\t\t\tBoolean(segment),\n\t\t),\n\t);\n\n\tif (await checkPathExists(filePath)) {\n\t\treturn;\n\t}\n\n\tlet contents: string;\n\n\tif (hasAppRouter) {\n\t\tcontents = `\n\t\t\timport { exitPreview } from \"@prismicio/next\";\n\n\t\t\texport async function GET() {\n\t\t\t\treturn await exitPreview();\n\t\t\t}\n\t\t`;\n\t} else {\n\t\tif (isTypeScriptProject) {\n\t\t\tcontents = source`\n\t\t\t\timport { NextApiRequest, NextApiResponse } from \"next\";\n\t\t\t\timport { exitPreview } from \"@prismicio/next\";\n\n\t\t\t\texport async function handler(req: NextApiRequest, res: NextApiResponse) {\n\t\t\t\t\treturn await exitPreview({ req, res });\n\t\t\t\t}\n\t\t\t`;\n\t\t} else {\n\t\t\tcontents = source`\n\t\t\t\timport { exitPreview } from \"@prismicio/next\";\n\n\t\t\t\texport async function handler(req, res) {\n\t\t\t\t\treturn await exitPreview({ req, res });\n\t\t\t\t}\n\t\t\t`;\n\t\t}\n\t}\n\n\tif (options.format) {\n\t\tcontents = await helpers.format(contents, filePath);\n\t}\n\n\tawait fs.mkdir(path.dirname(filePath), { recursive: true });\n\tawait fs.writeFile(filePath, contents);\n};\n\nconst modifySliceMachineConfig = async ({\n\thelpers,\n\toptions,\n}: SliceMachineContext<PluginOptions>) => {\n\tconst hasSrcDirectory = await checkHasSrcDirectory({ helpers });\n\tconst project = await helpers.getProject();\n\n\t// Add Slice Simulator URL.\n\tproject.config.localSliceSimulatorURL ||=\n\t\t\"http://localhost:3000/slice-simulator\";\n\n\t// Nest the default Slice Library in the src directory if it exists and\n\t// is empty.\n\tif (\n\t\thasSrcDirectory &&\n\t\tJSON.stringify(project.config.libraries) === JSON.stringify([\"./slices\"])\n\t) {\n\t\ttry {\n\t\t\tconst entries = await fs.readdir(helpers.joinPathFromRoot(\"slices\"));\n\n\t\t\tif (!entries.map((entry) => path.parse(entry).name).includes(\"index\")) {\n\t\t\t\tproject.config.libraries = [\"./src/slices\"];\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tif (\n\t\t\t\terror instanceof Error &&\n\t\t\t\t\"code\" in error &&\n\t\t\t\terror.code === \"ENOENT\"\n\t\t\t) {\n\t\t\t\t// The directory does not exist, which means we\n\t\t\t\t// can safely nest the library.\n\t\t\t\tproject.config.libraries = [\"./src/slices\"];\n\t\t\t}\n\t\t}\n\t}\n\n\tawait helpers.updateSliceMachineConfig(project.config, {\n\t\tformat: options.format,\n\t});\n};\n\nconst createRevalidateRoute = async ({\n\thelpers,\n\toptions,\n}: SliceMachineContext<PluginOptions>) => {\n\tconst hasAppRouter = await checkHasAppRouter({ helpers });\n\n\tif (!hasAppRouter) {\n\t\treturn;\n\t}\n\n\tconst hasSrcDirectory = await checkHasSrcDirectory({ helpers });\n\n\tconst extension = await getJSFileExtension({ helpers, options });\n\tconst filePath = helpers.joinPathFromRoot(\n\t\t...[\n\t\t\thasSrcDirectory ? \"src\" : undefined,\n\t\t\t`app/api/revalidate/route.${extension}`,\n\t\t].filter((segment): segment is NonNullable<typeof segment> =>\n\t\t\tBoolean(segment),\n\t\t),\n\t);\n\n\tif (await checkPathExists(filePath)) {\n\t\treturn;\n\t}\n\n\tlet contents = source`\n\t\timport { NextResponse } from \"next/server\";\n\t\timport { revalidateTag } from \"next/cache\";\n\n\t\texport async function POST() {\n\t\t\trevalidateTag(\"prismic\");\n\n\t\t\treturn NextResponse.json({ revalidated: true, now: Date.now() });\n\t\t}\n\t`;\n\n\tif (options.format) {\n\t\tcontents = await helpers.format(contents, filePath);\n\t}\n\n\tawait fs.mkdir(path.dirname(filePath), { recursive: true });\n\tawait fs.writeFile(filePath, contents);\n};\n\nexport const projectInit: ProjectInitHook<PluginOptions> = async (\n\t{ installDependencies: _installDependencies },\n\tcontext,\n) => {\n\trejectIfNecessary(\n\t\tawait Promise.allSettled([\n\t\t\tinstallDependencies({ installDependencies: _installDependencies }),\n\t\t\tmodifySliceMachineConfig(context),\n\t\t\tcreatePrismicIOFile(context),\n\t\t\tcreateSliceSimulatorPage(context),\n\t\t\tcreatePreviewRoute(context),\n\t\t\tcreateExitPreviewRoute(context),\n\t\t\tcreateRevalidateRoute(context),\n\t\t]),\n\t);\n};\n"],"names":["installDependencies","checkIsTypeScriptProject","checkHasSrcDirectory","checkHasAppRouter","getJSFileExtension","checkPathExists","source","fs","path","rejectIfNecessary"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"project-init.cjs","sources":["../../../src/hooks/project-init.ts"],"sourcesContent":["import * as path from \"node:path\";\nimport type {\n\tProjectInitHook,\n\tProjectInitHookData,\n\tSliceMachineContext,\n} from \"@slicemachine/plugin-kit\";\nimport {\n\tcheckHasProjectFile,\n\twriteProjectFile,\n} from \"@slicemachine/plugin-kit/fs\";\nimport { source } from \"common-tags\";\n\nimport { checkHasAppRouter } from \"../lib/checkHasAppRouter\";\nimport { checkHasSrcDirectory } from \"../lib/checkHasSrcDirectory\";\nimport { checkIsTypeScriptProject } from \"../lib/checkIsTypeScriptProject\";\nimport { getJSFileExtension } from \"../lib/getJSFileExtension\";\nimport { rejectIfNecessary } from \"../lib/rejectIfNecessary\";\n\nimport type { PluginOptions } from \"../types\";\n\ntype InstallDependenciesArgs = {\n\tinstallDependencies: ProjectInitHookData[\"installDependencies\"];\n};\n\nconst installDependencies = async ({\n\tinstallDependencies,\n}: InstallDependenciesArgs) => {\n\tawait installDependencies({\n\t\tdependencies: {\n\t\t\t\"@prismicio/client\": \"latest\",\n\t\t\t\"@prismicio/react\": \"latest\",\n\t\t\t\"@prismicio/next\": \"latest\",\n\t\t},\n\t});\n};\n\ntype CreatePrismicIOFileArgs = SliceMachineContext<PluginOptions>;\n\nconst createPrismicIOFile = async ({\n\thelpers,\n\toptions,\n}: CreatePrismicIOFileArgs) => {\n\tconst isTypeScriptProject = await checkIsTypeScriptProject({\n\t\thelpers,\n\t\toptions,\n\t});\n\tconst hasSrcDirectory = await checkHasSrcDirectory({ helpers });\n\tconst hasAppRouter = await checkHasAppRouter({ helpers });\n\n\tconst extension = await getJSFileExtension({ helpers, options });\n\tconst filename = path.join(\n\t\t...[hasSrcDirectory ? \"src\" : undefined, `prismicio.${extension}`].filter(\n\t\t\t(segment): segment is NonNullable<typeof segment> => Boolean(segment),\n\t\t),\n\t);\n\n\tif (await checkHasProjectFile({ filename, helpers })) {\n\t\treturn;\n\t}\n\n\tlet createClientContents: string;\n\n\tif (hasAppRouter) {\n\t\tif (isTypeScriptProject) {\n\t\t\tcreateClientContents = source`\n\t\t\t\t/**\n\t\t\t\t * Creates a Prismic client for the project's repository. The client is used to\n\t\t\t\t * query content from the Prismic API.\n\t\t\t\t *\n\t\t\t\t * @param config - Configuration for the Prismic client.\n\t\t\t\t */\n\t\t\t\texport const createClient = (config: prismicNext.CreateClientConfig = {}) => {\n\t\t\t\t\tconst client = prismic.createClient(repositoryName, {\n\t\t\t\t\t\troutes,\n\t\t\t\t\t\tfetchOptions:\n\t\t\t\t\t\t\tprocess.env.NODE_ENV === 'production'\n\t\t\t\t\t\t\t\t? { next: { tags: ['prismic'] }, cache: 'force-cache' }\n\t\t\t\t\t\t\t\t: { next: { revalidate: 5 } },\n\t\t\t\t\t\t...config,\n\t\t\t\t\t});\n\n\t\t\t\t\tprismicNext.enableAutoPreviews({\n\t\t\t\t\t\tclient,\n\t\t\t\t\t\tpreviewData: config.previewData,\n\t\t\t\t\t\treq: config.req,\n\t\t\t\t\t});\n\n\t\t\t\t\treturn client;\n\t\t\t\t};\n\t\t\t`;\n\t\t} else {\n\t\t\tcreateClientContents = source`\n\t\t\t\t/**\n\t\t\t\t * Creates a Prismic client for the project's repository. The client is used to\n\t\t\t\t * query content from the Prismic API.\n\t\t\t\t *\n\t\t\t\t * @param {prismicNext.CreateClientConfig} config - Configuration for the Prismic client.\n\t\t\t\t */\n\t\t\t\texport const createClient = (config = {}) => {\n\t\t\t\t\tconst client = prismic.createClient(repositoryName, {\n\t\t\t\t\t\troutes,\n\t\t\t\t\t\tfetchOptions:\n\t\t\t\t\t\t\tprocess.env.NODE_ENV === 'production'\n\t\t\t\t\t\t\t\t? { next: { tags: ['prismic'] }, cache: 'force-cache' }\n\t\t\t\t\t\t\t\t: { next: { revalidate: 5 } },\n\t\t\t\t\t\t...config,\n\t\t\t\t\t});\n\n\t\t\t\t\tprismicNext.enableAutoPreviews({\n\t\t\t\t\t\tclient,\n\t\t\t\t\t\tpreviewData: config.previewData,\n\t\t\t\t\t\treq: config.req,\n\t\t\t\t\t});\n\n\t\t\t\t\treturn client;\n\t\t\t\t};\n\t\t\t`;\n\t\t}\n\t} else {\n\t\tif (isTypeScriptProject) {\n\t\t\tcreateClientContents = source`\n\t\t\t\t/**\n\t\t\t\t * Creates a Prismic client for the project's repository. The client is used to\n\t\t\t\t * query content from the Prismic API.\n\t\t\t\t *\n\t\t\t\t * @param config - Configuration for the Prismic client.\n\t\t\t\t */\n\t\t\t\texport const createClient = (config: prismicNext.CreateClientConfig = {}) => {\n\t\t\t\t\tconst client = prismic.createClient(repositoryName, {\n\t\t\t\t\t\troutes,\n\t\t\t\t\t\t...config,\n\t\t\t\t\t});\n\n\t\t\t\t\tprismicNext.enableAutoPreviews({\n\t\t\t\t\t\tclient,\n\t\t\t\t\t\tpreviewData: config.previewData,\n\t\t\t\t\t\treq: config.req,\n\t\t\t\t\t});\n\n\t\t\t\t\treturn client;\n\t\t\t\t};\n\t\t\t`;\n\t\t} else {\n\t\t\tcreateClientContents = source`\n\t\t\t\t/**\n\t\t\t\t * Creates a Prismic client for the project's repository. The client is used to\n\t\t\t\t * query content from the Prismic API.\n\t\t\t\t *\n\t\t\t\t * @param {prismicNext.CreateClientConfig} config - Configuration for the Prismic client.\n\t\t\t\t */\n\t\t\t\texport const createClient = (config = {}) => {\n\t\t\t\t\tconst client = prismic.createClient(repositoryName, {\n\t\t\t\t\t\troutes,\n\t\t\t\t\t\t...config,\n\t\t\t\t\t});\n\n\t\t\t\t\tprismicNext.enableAutoPreviews({\n\t\t\t\t\t\tclient,\n\t\t\t\t\t\tpreviewData: config.previewData,\n\t\t\t\t\t\treq: config.req,\n\t\t\t\t\t});\n\n\t\t\t\t\treturn client;\n\t\t\t\t};\n\t\t\t`;\n\t\t}\n\t}\n\n\tlet contents: string;\n\n\tif (isTypeScriptProject) {\n\t\tcontents = source`\n\t\t\timport * as prismic from \"@prismicio/client\";\n\t\t\timport * as prismicNext from \"@prismicio/next\";\n\t\t\timport config from \"${hasSrcDirectory ? \"..\" : \".\"}/slicemachine.config.json\";\n\n\t\t\t/**\n\t\t\t * The project's Prismic repository name.\n\t\t\t */\n\t\t\texport const repositoryName = config.repositoryName;\n\n\t\t\t/**\n\t\t\t * A list of Route Resolver objects that define how a document's \\`url\\` field is resolved.\n\t\t\t *\n\t\t\t * {@link https://prismic.io/docs/route-resolver#route-resolver}\n\t\t\t */\n\t\t\t// TODO: Update the routes array to match your project's route structure.\n\t\t\tconst routes: prismic.ClientConfig[\"routes\"] = [\n\t\t\t\t{\n\t\t\t\t\ttype: \"homepage\",\n\t\t\t\t\tpath: \"/\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttype: \"page\",\n\t\t\t\t\tpath: \"/:uid\",\n\t\t\t\t},\n\t\t\t];\n\n\t\t\t${createClientContents}\n\t\t`;\n\t} else {\n\t\tcontents = source`\n\t\t\timport * as prismic from \"@prismicio/client\";\n\t\t\timport * as prismicNext from \"@prismicio/next\";\n\t\t\timport config from \"${hasSrcDirectory ? \"..\" : \".\"}/slicemachine.config.json\";\n\n\t\t\t/**\n\t\t\t * The project's Prismic repository name.\n\t\t\t */\n\t\t\texport const repositoryName = config.repositoryName;\n\n\t\t\t/**\n\t\t\t * A list of Route Resolver objects that define how a document's \\`url\\` field is resolved.\n\t\t\t *\n\t\t\t * {@link https://prismic.io/docs/route-resolver#route-resolver}\n\t\t\t *\n\t\t\t * @type {prismic.ClientConfig[\"routes\"]}\n\t\t\t */\n\t\t\t// TODO: Update the routes array to match your project's route structure.\n\t\t\tconst routes = [\n\t\t\t\t{\n\t\t\t\t\ttype: \"homepage\",\n\t\t\t\t\tpath: \"/\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttype: \"page\",\n\t\t\t\t\tpath: \"/:uid\",\n\t\t\t\t},\n\t\t\t];\n\n\t\t\t${createClientContents}\n\t\t`;\n\t}\n\n\tawait writeProjectFile({\n\t\tfilename,\n\t\tcontents,\n\t\tformat: options.format,\n\t\thelpers,\n\t});\n};\n\ntype CreateSliceSimulatorPageArgs = SliceMachineContext<PluginOptions>;\n\nconst createSliceSimulatorPage = async ({\n\thelpers,\n\toptions,\n}: CreateSliceSimulatorPageArgs) => {\n\tconst hasSrcDirectory = await checkHasSrcDirectory({ helpers });\n\tconst hasAppRouter = await checkHasAppRouter({ helpers });\n\n\tconst extension = await getJSFileExtension({ helpers, options, jsx: true });\n\tconst filename = path.join(\n\t\t...[\n\t\t\thasSrcDirectory ? \"src\" : undefined,\n\t\t\thasAppRouter\n\t\t\t\t? `app/slice-simulator/page.${extension}`\n\t\t\t\t: `pages/slice-simulator.${extension}`,\n\t\t].filter((segment): segment is NonNullable<typeof segment> =>\n\t\t\tBoolean(segment),\n\t\t),\n\t);\n\n\tif (await checkHasProjectFile({ filename, helpers })) {\n\t\treturn;\n\t}\n\n\tconst contents = source`\n\t\t\"use client\"\n\n\t\timport { SliceSimulator } from \"@slicemachine/adapter-next/simulator\";\n\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\timport { components } from \"${hasAppRouter ? \"../..\" : \"..\"}/slices\";\n\n\t\texport default function SliceSimulatorPage() {\n\t\t\treturn (\n\t\t\t\t<SliceSimulator\n\t\t\t\t\tsliceZone={(props) => <SliceZone {...props} components={components} />}\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\t`;\n\n\tawait writeProjectFile({\n\t\tfilename,\n\t\tcontents,\n\t\tformat: options.format,\n\t\thelpers,\n\t});\n};\n\nconst createPreviewRoute = async ({\n\thelpers,\n\toptions,\n}: SliceMachineContext<PluginOptions>) => {\n\tconst hasSrcDirectory = await checkHasSrcDirectory({ helpers });\n\tconst hasAppRouter = await checkHasAppRouter({ helpers });\n\tconst isTypeScriptProject = await checkIsTypeScriptProject({\n\t\thelpers,\n\t\toptions,\n\t});\n\n\tconst extension = await getJSFileExtension({ helpers, options });\n\tconst filename = path.join(\n\t\t...[\n\t\t\thasSrcDirectory ? \"src\" : undefined,\n\t\t\thasAppRouter\n\t\t\t\t? `app/api/preview/route.${extension}`\n\t\t\t\t: `pages/api/preview.${extension}`,\n\t\t].filter((segment): segment is NonNullable<typeof segment> =>\n\t\t\tBoolean(segment),\n\t\t),\n\t);\n\n\tif (await checkHasProjectFile({ filename, helpers })) {\n\t\treturn;\n\t}\n\n\tlet contents: string;\n\n\tif (hasAppRouter) {\n\t\tif (isTypeScriptProject) {\n\t\t\tcontents = source`\n\t\t\t\timport { NextRequest } from \"next/server\";\n\t\t\t\timport { redirectToPreviewURL } from \"@prismicio/next\";\n\n\t\t\t\timport { createClient } from \"../../../prismicio\";\n\n\t\t\t\texport async function GET(request: NextRequest) {\n\t\t\t\t\tconst client = createClient();\n\n\t\t\t\t\tawait redirectToPreviewURL({ client, request });\n\t\t\t\t}\n\t\t\t`;\n\t\t} else {\n\t\t\tcontents = source`\n\t\t\t\timport { redirectToPreviewURL } from \"@prismicio/next\";\n\n\t\t\t\timport { createClient } from \"../../../prismicio\";\n\n\t\t\t\texport async function GET(request) {\n\t\t\t\t\tconst client = createClient();\n\n\t\t\t\t\tawait redirectToPreviewURL({ client, request });\n\t\t\t\t}\n\t\t\t`;\n\t\t}\n\t} else {\n\t\tif (isTypeScriptProject) {\n\t\t\tcontents = source`\n\t\t\t\timport { NextApiRequest, NextApiResponse } from \"next\";\n\t\t\t\timport { setPreviewData, redirectToPreviewURL } from \"@prismicio/next\";\n\n\t\t\t\timport { createClient } from \"../../prismicio\";\n\n\t\t\t\texport default async (req: NextApiRequest, res: NextApiResponse) => {\n\t\t\t\t\tconst client = createClient({ req });\n\n\t\t\t\t\tawait setPreviewData({ req, res });\n\n\t\t\t\t\tawait redirectToPreviewURL({ req, res, client });\n\t\t\t\t};\n\t\t\t`;\n\t\t} else {\n\t\t\tcontents = source`\n\t\t\t\timport { setPreviewData, redirectToPreviewURL } from \"@prismicio/next\";\n\n\t\t\t\timport { createClient } from \"../../prismicio\";\n\n\t\t\t\texport default async (req, res) => {\n\t\t\t\t\tconst client = createClient({ req });\n\n\t\t\t\t\tawait setPreviewData({ req, res });\n\n\t\t\t\t\tawait redirectToPreviewURL({ req, res, client });\n\t\t\t\t};\n\t\t\t`;\n\t\t}\n\t}\n\n\tawait writeProjectFile({\n\t\tfilename,\n\t\tcontents,\n\t\tformat: options.format,\n\t\thelpers,\n\t});\n};\n\nconst createExitPreviewRoute = async ({\n\thelpers,\n\toptions,\n}: SliceMachineContext<PluginOptions>) => {\n\tconst hasSrcDirectory = await checkHasSrcDirectory({ helpers });\n\tconst hasAppRouter = await checkHasAppRouter({ helpers });\n\tconst isTypeScriptProject = await checkIsTypeScriptProject({\n\t\thelpers,\n\t\toptions,\n\t});\n\n\tconst extension = await getJSFileExtension({ helpers, options });\n\tconst filename = path.join(\n\t\t...[\n\t\t\thasSrcDirectory ? \"src\" : undefined,\n\t\t\thasAppRouter\n\t\t\t\t? `app/api/exit-preview/route.${extension}`\n\t\t\t\t: `pages/api/exit-preview.${extension}`,\n\t\t].filter((segment): segment is NonNullable<typeof segment> =>\n\t\t\tBoolean(segment),\n\t\t),\n\t);\n\n\tif (await checkHasProjectFile({ filename, helpers })) {\n\t\treturn;\n\t}\n\n\tlet contents: string;\n\n\tif (hasAppRouter) {\n\t\tcontents = source`\n\t\t\timport { exitPreview } from \"@prismicio/next\";\n\n\t\t\texport async function GET() {\n\t\t\t\treturn await exitPreview();\n\t\t\t}\n\t\t`;\n\t} else {\n\t\tif (isTypeScriptProject) {\n\t\t\tcontents = source`\n\t\t\t\timport { NextApiRequest, NextApiResponse } from \"next\";\n\t\t\t\timport { exitPreview } from \"@prismicio/next\";\n\n\t\t\t\texport async function handler(req: NextApiRequest, res: NextApiResponse) {\n\t\t\t\t\treturn await exitPreview({ req, res });\n\t\t\t\t}\n\t\t\t`;\n\t\t} else {\n\t\t\tcontents = source`\n\t\t\t\timport { exitPreview } from \"@prismicio/next\";\n\n\t\t\t\texport async function handler(req, res) {\n\t\t\t\t\treturn await exitPreview({ req, res });\n\t\t\t\t}\n\t\t\t`;\n\t\t}\n\t}\n\n\tawait writeProjectFile({\n\t\tfilename,\n\t\tcontents,\n\t\tformat: options.format,\n\t\thelpers,\n\t});\n};\n\nconst modifySliceMachineConfig = async ({\n\thelpers,\n\toptions,\n\tactions,\n}: SliceMachineContext<PluginOptions>) => {\n\tconst hasSrcDirectory = await checkHasSrcDirectory({ helpers });\n\tconst project = await helpers.getProject();\n\n\t// Add Slice Simulator URL.\n\tproject.config.localSliceSimulatorURL ||=\n\t\t\"http://localhost:3000/slice-simulator\";\n\n\t// Nest the default Slice Library in the src directory if it exists and\n\t// is empty.\n\tif (\n\t\thasSrcDirectory &&\n\t\tproject.config.libraries &&\n\t\tJSON.stringify(project.config.libraries) === JSON.stringify([\"./slices\"])\n\t) {\n\t\tconst sliceLibrary = await actions.readSliceLibrary({\n\t\t\tlibraryID: project.config.libraries[0],\n\t\t});\n\n\t\tif (sliceLibrary.sliceIDs.length < 1) {\n\t\t\tproject.config.libraries = [\"./src/slices\"];\n\t\t}\n\t}\n\n\tawait helpers.updateSliceMachineConfig(project.config, {\n\t\tformat: options.format,\n\t});\n};\n\nconst createRevalidateRoute = async ({\n\thelpers,\n\toptions,\n}: SliceMachineContext<PluginOptions>) => {\n\tconst hasAppRouter = await checkHasAppRouter({ helpers });\n\n\tif (!hasAppRouter) {\n\t\treturn;\n\t}\n\n\tconst hasSrcDirectory = await checkHasSrcDirectory({ helpers });\n\n\tconst extension = await getJSFileExtension({ helpers, options });\n\tconst filename = path.join(\n\t\t...[\n\t\t\thasSrcDirectory ? \"src\" : undefined,\n\t\t\t`app/api/revalidate/route.${extension}`,\n\t\t].filter((segment): segment is NonNullable<typeof segment> =>\n\t\t\tBoolean(segment),\n\t\t),\n\t);\n\n\tif (await checkHasProjectFile({ filename, helpers })) {\n\t\treturn;\n\t}\n\n\tconst contents = source`\n\t\timport { NextResponse } from \"next/server\";\n\t\timport { revalidateTag } from \"next/cache\";\n\n\t\texport async function POST() {\n\t\t\trevalidateTag(\"prismic\");\n\n\t\t\treturn NextResponse.json({ revalidated: true, now: Date.now() });\n\t\t}\n\t`;\n\n\tawait writeProjectFile({\n\t\tfilename,\n\t\tcontents,\n\t\tformat: options.format,\n\t\thelpers,\n\t});\n};\n\nexport const projectInit: ProjectInitHook<PluginOptions> = async (\n\t{ installDependencies: _installDependencies },\n\tcontext,\n) => {\n\trejectIfNecessary(\n\t\tawait Promise.allSettled([\n\t\t\tinstallDependencies({ installDependencies: _installDependencies }),\n\t\t\tmodifySliceMachineConfig(context),\n\t\t\tcreatePrismicIOFile(context),\n\t\t\tcreateSliceSimulatorPage(context),\n\t\t\tcreatePreviewRoute(context),\n\t\t\tcreateExitPreviewRoute(context),\n\t\t\tcreateRevalidateRoute(context),\n\t\t]),\n\t);\n};\n"],"names":["installDependencies","checkIsTypeScriptProject","checkHasSrcDirectory","checkHasAppRouter","getJSFileExtension","path","checkHasProjectFile","source","writeProjectFile","rejectIfNecessary"],"mappings":"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"}
|