@slicemachine/adapter-next 0.3.55-beta.1 → 0.3.55
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 +10 -6
- package/dist/hooks/documentation-read.cjs.map +1 -1
- package/dist/hooks/documentation-read.js +10 -6
- package/dist/hooks/documentation-read.js.map +1 -1
- package/dist/hooks/project-init.cjs +6 -4
- package/dist/hooks/project-init.cjs.map +1 -1
- package/dist/hooks/project-init.js +6 -4
- package/dist/hooks/project-init.js.map +1 -1
- package/dist/simulator/types.d.ts +2 -2
- package/package.json +3 -4
- package/src/hooks/documentation-read.ts +10 -6
- package/src/hooks/project-init.ts +6 -4
- package/src/simulator/types.ts +2 -2
|
@@ -27,10 +27,11 @@ const documentationRead = async (data, { options, helpers }) => {
|
|
|
27
27
|
|
|
28
28
|
type Params = { uid: string };
|
|
29
29
|
|
|
30
|
-
export default async function Page({ params }: { params: Params }) {
|
|
30
|
+
export default async function Page({ params }: { params: Promise<Params> }) {
|
|
31
|
+
const { uid } = await params
|
|
31
32
|
const client = createClient();
|
|
32
33
|
const page = await client
|
|
33
|
-
.getByUID("${model.id}",
|
|
34
|
+
.getByUID("${model.id}", uid)
|
|
34
35
|
.catch(() => notFound());
|
|
35
36
|
|
|
36
37
|
return <SliceZone slices={page.data.slices} components={components} />;
|
|
@@ -39,11 +40,12 @@ const documentationRead = async (data, { options, helpers }) => {
|
|
|
39
40
|
export async function generateMetadata({
|
|
40
41
|
params,
|
|
41
42
|
}: {
|
|
42
|
-
params: Params
|
|
43
|
+
params: Promise<Params>;
|
|
43
44
|
}): Promise<Metadata> {
|
|
45
|
+
const { uid } = await params
|
|
44
46
|
const client = createClient();
|
|
45
47
|
const page = await client
|
|
46
|
-
.getByUID("${model.id}",
|
|
48
|
+
.getByUID("${model.id}", uid)
|
|
47
49
|
.catch(() => notFound());
|
|
48
50
|
|
|
49
51
|
return {
|
|
@@ -191,18 +193,20 @@ const documentationRead = async (data, { options, helpers }) => {
|
|
|
191
193
|
|
|
192
194
|
|
|
193
195
|
export default async function Page({ params }) {
|
|
196
|
+
const { uid } = await params
|
|
194
197
|
const client = createClient();
|
|
195
198
|
const page = await client
|
|
196
|
-
.getByUID("${model.id}",
|
|
199
|
+
.getByUID("${model.id}", uid)
|
|
197
200
|
.catch(() => notFound());
|
|
198
201
|
|
|
199
202
|
return <SliceZone slices={page.data.slices} components={components} />;
|
|
200
203
|
}
|
|
201
204
|
|
|
202
205
|
export async function generateMetadata({ params }) {
|
|
206
|
+
const { uid } = await params
|
|
203
207
|
const client = createClient();
|
|
204
208
|
const page = await client
|
|
205
|
-
.getByUID("${model.id}",
|
|
209
|
+
.getByUID("${model.id}", uid)
|
|
206
210
|
.catch(() => notFound());
|
|
207
211
|
|
|
208
212
|
return {
|
|
@@ -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 { 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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"}
|
|
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: Promise<Params> }) {\n\t\t\t\t\t\tconst { uid } = await 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}\", 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: Promise<Params>;\n\t\t\t\t\t}): Promise<Metadata> {\n\t\t\t\t\t\tconst { uid } = await 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}\", 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 { uid } = await 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}\", 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 { uid } = await 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}\", 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":";;;;;AASO,MAAM,oBAA0D,OACtE,MACA,EAAE,SAAS,cACR;AACG,QAAA,sBAAsB,MAAMA,kDAAyB;AAAA,IAC1D;AAAA,IACA;AAAA,EAAA,CACA;AAEG,MAAA,KAAK,SAAS,eAAe;AAC1B,UAAA,EAAE,MAAK,IAAK,KAAK;AACjB,UAAA,YAAY,MAAMC,mBAAAA,mBAAmB,EAAE,SAAS,SAAS,KAAK,MAAM;AAE1E,UAAM,cAAc,GACnB,MAAM,aAAa,UAAU,MAAM,WAC3B;AACT,UAAM,gBAAgB,GACrB,MAAM,aAAa,UAAU,MAAM,MAChC;AAEA,QAAA;AACA,QAAA;AACJ,QAAI,qBAAqB;AACxB,UAAI,MAAM,YAAY;AACJ,yBAAAC,WAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,oBAcD,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAcN,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iDAWuB,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOhC,2BAAAA,WAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,4CAmCqB,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iDAUD,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAA,OAU7C;AACW,yBAAAA,WAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,6CASwB,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,6CAON,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQ5B,2BAAAA,WAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,6CA+BsB,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOhD;AAAA,IAAA,OACM;AACN,UAAI,MAAM,YAAY;AACJ,yBAAAA,WAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,oBAYD,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAUN,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iDAWuB,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOhC,2BAAAA,WAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,4CA8BqB,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iDAUD,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAA,OAU7C;AACW,yBAAAA,WAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,6CAQwB,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,6CAON,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQ5B,2BAAAA,WAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,6CA4BsB,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOhD;AAAA,IACD;AAEA,QAAI,QAAQ,QAAQ;AACF,uBAAA,MAAM,QAAQ,OAC9B,gBACA,QAAQ,iBAAiB,SAAS,WAAW,GAC7C;AAAA,QACC,qBAAqB;AAAA,MAAA,CACrB;AAEiB,yBAAA,MAAM,QAAQ,OAChC,kBACA,QAAQ,iBAAiB,SAAS,WAAW,GAC7C;AAAA,QACC,qBAAqB;AAAA,MAAA,CACrB;AAAA,IAEH;AAEO,WAAA;AAAA,MACN;AAAA,QACC,OAAO;AAAA,QACP,SAASC,WAAAA;AAAAA,sBACS,MAAM;AAAA;AAAA,4CAEgB,yIAAyI;AAAA;AAAA;AAAA;AAAA,OAI9K,MAAM,kBAAkB;AAAA,EAAiB;AAAA;AAAA;AAAA;AAAA;AAAA,MAI5C;AAAA,MACD;AAAA,QACC,OAAO;AAAA,QACP,SAASA,WAAAA;AAAAA,sBACS,MAAM;AAAA;AAAA,6CAEiB,6IAA6I;AAAA;AAAA,OAEnL,MAAM,oBAAoB;AAAA,EAAmB;AAAA;AAAA;AAAA;AAAA;AAAA,MAIhD;AAAA,IAAA;AAAA,EAEH;AAEA,SAAO;AACR;;"}
|
|
@@ -25,10 +25,11 @@ const documentationRead = async (data, { options, helpers }) => {
|
|
|
25
25
|
|
|
26
26
|
type Params = { uid: string };
|
|
27
27
|
|
|
28
|
-
export default async function Page({ params }: { params: Params }) {
|
|
28
|
+
export default async function Page({ params }: { params: Promise<Params> }) {
|
|
29
|
+
const { uid } = await params
|
|
29
30
|
const client = createClient();
|
|
30
31
|
const page = await client
|
|
31
|
-
.getByUID("${model.id}",
|
|
32
|
+
.getByUID("${model.id}", uid)
|
|
32
33
|
.catch(() => notFound());
|
|
33
34
|
|
|
34
35
|
return <SliceZone slices={page.data.slices} components={components} />;
|
|
@@ -37,11 +38,12 @@ const documentationRead = async (data, { options, helpers }) => {
|
|
|
37
38
|
export async function generateMetadata({
|
|
38
39
|
params,
|
|
39
40
|
}: {
|
|
40
|
-
params: Params
|
|
41
|
+
params: Promise<Params>;
|
|
41
42
|
}): Promise<Metadata> {
|
|
43
|
+
const { uid } = await params
|
|
42
44
|
const client = createClient();
|
|
43
45
|
const page = await client
|
|
44
|
-
.getByUID("${model.id}",
|
|
46
|
+
.getByUID("${model.id}", uid)
|
|
45
47
|
.catch(() => notFound());
|
|
46
48
|
|
|
47
49
|
return {
|
|
@@ -189,18 +191,20 @@ const documentationRead = async (data, { options, helpers }) => {
|
|
|
189
191
|
|
|
190
192
|
|
|
191
193
|
export default async function Page({ params }) {
|
|
194
|
+
const { uid } = await params
|
|
192
195
|
const client = createClient();
|
|
193
196
|
const page = await client
|
|
194
|
-
.getByUID("${model.id}",
|
|
197
|
+
.getByUID("${model.id}", uid)
|
|
195
198
|
.catch(() => notFound());
|
|
196
199
|
|
|
197
200
|
return <SliceZone slices={page.data.slices} components={components} />;
|
|
198
201
|
}
|
|
199
202
|
|
|
200
203
|
export async function generateMetadata({ params }) {
|
|
204
|
+
const { uid } = await params
|
|
201
205
|
const client = createClient();
|
|
202
206
|
const page = await client
|
|
203
|
-
.getByUID("${model.id}",
|
|
207
|
+
.getByUID("${model.id}", uid)
|
|
204
208
|
.catch(() => notFound());
|
|
205
209
|
|
|
206
210
|
return {
|
|
@@ -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 { 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
|
+
{"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: Promise<Params> }) {\n\t\t\t\t\t\tconst { uid } = await 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}\", 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: Promise<Params>;\n\t\t\t\t\t}): Promise<Metadata> {\n\t\t\t\t\t\tconst { uid } = await 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}\", 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 { uid } = await 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}\", 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 { uid } = await 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}\", 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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"}
|
|
@@ -243,10 +243,11 @@ const createSliceSimulatorPage = async ({ helpers, options }) => {
|
|
|
243
243
|
|
|
244
244
|
import { components } from "../../slices";
|
|
245
245
|
|
|
246
|
-
export default function SliceSimulatorPage({
|
|
246
|
+
export default async function SliceSimulatorPage({
|
|
247
247
|
searchParams,
|
|
248
248
|
}: SliceSimulatorParams) {
|
|
249
|
-
const
|
|
249
|
+
const { state } = await searchParams
|
|
250
|
+
const slices = getSlices(state);
|
|
250
251
|
|
|
251
252
|
return (
|
|
252
253
|
<SliceSimulator>
|
|
@@ -265,8 +266,9 @@ const createSliceSimulatorPage = async ({ helpers, options }) => {
|
|
|
265
266
|
|
|
266
267
|
import { components } from "../../slices";
|
|
267
268
|
|
|
268
|
-
export default function SliceSimulatorPage({ searchParams }) {
|
|
269
|
-
const
|
|
269
|
+
export default async function SliceSimulatorPage({ searchParams }) {
|
|
270
|
+
const { state } = await searchParams
|
|
271
|
+
const slices = getSlices(state);
|
|
270
272
|
|
|
271
273
|
return (
|
|
272
274
|
<SliceSimulator>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-init.cjs","sources":["../../../src/hooks/project-init.ts"],"sourcesContent":["import 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 { buildSrcPath } from \"../lib/buildSrcPath\";\nimport { checkHasAppRouter } from \"../lib/checkHasAppRouter\";\nimport { checkIsTypeScriptProject } from \"../lib/checkIsTypeScriptProject\";\nimport { getJSFileExtension } from \"../lib/getJSFileExtension\";\nimport { rejectIfNecessary } from \"../lib/rejectIfNecessary\";\n\nimport type { PluginOptions } from \"../types\";\nimport { PRISMIC_ENVIRONMENT_ENVIRONMENT_VARIABLE_NAME } from \"../constants\";\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 checkHasProjectFile({\n\t\tfilename: \"src\",\n\t\thelpers,\n\t});\n\tconst hasAppRouter = await checkHasAppRouter({ helpers });\n\n\tconst extension = await getJSFileExtension({ helpers, options });\n\tconst filename = await buildSrcPath({\n\t\tfilename: `prismicio.${extension}`,\n\t\thelpers,\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 =\n\t\t\t\tprocess.env.${PRISMIC_ENVIRONMENT_ENVIRONMENT_VARIABLE_NAME} || 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// Examples:\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 =\n\t\t\t\tprocess.env.${PRISMIC_ENVIRONMENT_ENVIRONMENT_VARIABLE_NAME} || 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// Examples:\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 isTypeScriptProject = await checkIsTypeScriptProject({\n\t\thelpers,\n\t\toptions,\n\t});\n\tconst hasAppRouter = await checkHasAppRouter({ helpers });\n\n\tconst extension = await getJSFileExtension({ helpers, options, jsx: true });\n\tconst filename = await buildSrcPath({\n\t\tfilename: hasAppRouter\n\t\t\t? `app/slice-simulator/page.${extension}`\n\t\t\t: `pages/slice-simulator.${extension}`,\n\t\thelpers,\n\t});\n\n\tif (await checkHasProjectFile({ filename, helpers })) {\n\t\treturn;\n\t}\n\n\tlet contents;\n\n\tif (hasAppRouter) {\n\t\tif (isTypeScriptProject) {\n\t\t\tcontents = source`\n\t\t\t\timport {\n\t\t\t\t\tSliceSimulator,\n\t\t\t\t\tSliceSimulatorParams,\n\t\t\t\t\tgetSlices,\n\t\t\t\t} from \"@slicemachine/adapter-next/simulator\";\n\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\timport { components } from \"../../slices\";\n\n\t\t\t\texport default function SliceSimulatorPage({\n\t\t\t\t\tsearchParams,\n\t\t\t\t}: SliceSimulatorParams) {\n\t\t\t\t\tconst slices = getSlices(searchParams.state);\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<SliceSimulator>\n\t\t\t\t\t\t\t<SliceZone slices={slices} components={components} />\n\t\t\t\t\t\t</SliceSimulator>\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t`;\n\t\t} else {\n\t\t\tcontents = source`\n\t\t\t\timport {\n\t\t\t\t\tSliceSimulator,\n\t\t\t\t\tgetSlices,\n\t\t\t\t} from \"@slicemachine/adapter-next/simulator\";\n\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\timport { components } from \"../../slices\";\n\n\t\t\t\texport default function SliceSimulatorPage({ searchParams }) {\n\t\t\t\t\tconst slices = getSlices(searchParams.state);\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<SliceSimulator>\n\t\t\t\t\t\t\t<SliceZone slices={slices} components={components} />\n\t\t\t\t\t\t</SliceSimulator>\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t`;\n\t\t}\n\t} else {\n\t\tcontents = source`\n\t\t\timport { SliceSimulator } from \"@slicemachine/adapter-next/simulator\";\n\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\timport { components } from \"../slices\";\n\n\t\t\texport default function SliceSimulatorPage() {\n\t\t\t\treturn (\n\t\t\t\t\t<SliceSimulator\n\t\t\t\t\t\tsliceZone={(props) => <SliceZone {...props} components={components} />}\n\t\t\t\t\t/>\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 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 = await buildSrcPath({\n\t\tfilename: hasAppRouter\n\t\t\t? `app/api/preview/route.${extension}`\n\t\t\t: `pages/api/preview.${extension}`,\n\t\thelpers,\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\treturn await 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\treturn await 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 function handler(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\treturn await 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 function handler(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\treturn await 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 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 = await buildSrcPath({\n\t\tfilename: hasAppRouter\n\t\t\t? `app/api/exit-preview/route.${extension}`\n\t\t\t: `pages/api/exit-preview.${extension}`,\n\t\thelpers,\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 function GET() {\n\t\t\t\treturn 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 default function handler(req: NextApiRequest, res: NextApiResponse) {\n\t\t\t\t\treturn 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 default function handler(req, res) {\n\t\t\t\t\treturn 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 checkHasProjectFile({\n\t\tfilename: \"src\",\n\t\thelpers,\n\t});\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 extension = await getJSFileExtension({ helpers, options });\n\tconst filename = await buildSrcPath({\n\t\tfilename: `app/api/revalidate/route.${extension}`,\n\t\thelpers,\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","checkHasProjectFile","checkHasAppRouter","getJSFileExtension","buildSrcPath","source","PRISMIC_ENVIRONMENT_ENVIRONMENT_VARIABLE_NAME","writeProjectFile","rejectIfNecessary"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"project-init.cjs","sources":["../../../src/hooks/project-init.ts"],"sourcesContent":["import 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 { buildSrcPath } from \"../lib/buildSrcPath\";\nimport { checkHasAppRouter } from \"../lib/checkHasAppRouter\";\nimport { checkIsTypeScriptProject } from \"../lib/checkIsTypeScriptProject\";\nimport { getJSFileExtension } from \"../lib/getJSFileExtension\";\nimport { rejectIfNecessary } from \"../lib/rejectIfNecessary\";\n\nimport type { PluginOptions } from \"../types\";\nimport { PRISMIC_ENVIRONMENT_ENVIRONMENT_VARIABLE_NAME } from \"../constants\";\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 checkHasProjectFile({\n\t\tfilename: \"src\",\n\t\thelpers,\n\t});\n\tconst hasAppRouter = await checkHasAppRouter({ helpers });\n\n\tconst extension = await getJSFileExtension({ helpers, options });\n\tconst filename = await buildSrcPath({\n\t\tfilename: `prismicio.${extension}`,\n\t\thelpers,\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 =\n\t\t\t\tprocess.env.${PRISMIC_ENVIRONMENT_ENVIRONMENT_VARIABLE_NAME} || 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// Examples:\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 =\n\t\t\t\tprocess.env.${PRISMIC_ENVIRONMENT_ENVIRONMENT_VARIABLE_NAME} || 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// Examples:\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 isTypeScriptProject = await checkIsTypeScriptProject({\n\t\thelpers,\n\t\toptions,\n\t});\n\tconst hasAppRouter = await checkHasAppRouter({ helpers });\n\n\tconst extension = await getJSFileExtension({ helpers, options, jsx: true });\n\tconst filename = await buildSrcPath({\n\t\tfilename: hasAppRouter\n\t\t\t? `app/slice-simulator/page.${extension}`\n\t\t\t: `pages/slice-simulator.${extension}`,\n\t\thelpers,\n\t});\n\n\tif (await checkHasProjectFile({ filename, helpers })) {\n\t\treturn;\n\t}\n\n\tlet contents;\n\n\tif (hasAppRouter) {\n\t\tif (isTypeScriptProject) {\n\t\t\tcontents = source`\n\t\t\t\timport {\n\t\t\t\t\tSliceSimulator,\n\t\t\t\t\tSliceSimulatorParams,\n\t\t\t\t\tgetSlices,\n\t\t\t\t} from \"@slicemachine/adapter-next/simulator\";\n\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\timport { components } from \"../../slices\";\n\n\t\t\t\texport default async function SliceSimulatorPage({\n\t\t\t\t\tsearchParams,\n\t\t\t\t}: SliceSimulatorParams) {\n\t\t\t\t\tconst { state } = await searchParams\n\t\t\t\t\tconst slices = getSlices(state);\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<SliceSimulator>\n\t\t\t\t\t\t\t<SliceZone slices={slices} components={components} />\n\t\t\t\t\t\t</SliceSimulator>\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t`;\n\t\t} else {\n\t\t\tcontents = source`\n\t\t\t\timport {\n\t\t\t\t\tSliceSimulator,\n\t\t\t\t\tgetSlices,\n\t\t\t\t} from \"@slicemachine/adapter-next/simulator\";\n\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\timport { components } from \"../../slices\";\n\n\t\t\t\texport default async function SliceSimulatorPage({ searchParams }) {\n\t\t\t\t\tconst { state } = await searchParams\n\t\t\t\t\tconst slices = getSlices(state);\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<SliceSimulator>\n\t\t\t\t\t\t\t<SliceZone slices={slices} components={components} />\n\t\t\t\t\t\t</SliceSimulator>\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t`;\n\t\t}\n\t} else {\n\t\tcontents = source`\n\t\t\timport { SliceSimulator } from \"@slicemachine/adapter-next/simulator\";\n\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\timport { components } from \"../slices\";\n\n\t\t\texport default function SliceSimulatorPage() {\n\t\t\t\treturn (\n\t\t\t\t\t<SliceSimulator\n\t\t\t\t\t\tsliceZone={(props) => <SliceZone {...props} components={components} />}\n\t\t\t\t\t/>\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 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 = await buildSrcPath({\n\t\tfilename: hasAppRouter\n\t\t\t? `app/api/preview/route.${extension}`\n\t\t\t: `pages/api/preview.${extension}`,\n\t\thelpers,\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\treturn await 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\treturn await 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 function handler(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\treturn await 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 function handler(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\treturn await 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 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 = await buildSrcPath({\n\t\tfilename: hasAppRouter\n\t\t\t? `app/api/exit-preview/route.${extension}`\n\t\t\t: `pages/api/exit-preview.${extension}`,\n\t\thelpers,\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 function GET() {\n\t\t\t\treturn 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 default function handler(req: NextApiRequest, res: NextApiResponse) {\n\t\t\t\t\treturn 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 default function handler(req, res) {\n\t\t\t\t\treturn 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 checkHasProjectFile({\n\t\tfilename: \"src\",\n\t\thelpers,\n\t});\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 extension = await getJSFileExtension({ helpers, options });\n\tconst filename = await buildSrcPath({\n\t\tfilename: `app/api/revalidate/route.${extension}`,\n\t\thelpers,\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","checkHasProjectFile","checkHasAppRouter","getJSFileExtension","buildSrcPath","source","PRISMIC_ENVIRONMENT_ENVIRONMENT_VARIABLE_NAME","writeProjectFile","rejectIfNecessary"],"mappings":"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"}
|
|
@@ -241,10 +241,11 @@ const createSliceSimulatorPage = async ({ helpers, options }) => {
|
|
|
241
241
|
|
|
242
242
|
import { components } from "../../slices";
|
|
243
243
|
|
|
244
|
-
export default function SliceSimulatorPage({
|
|
244
|
+
export default async function SliceSimulatorPage({
|
|
245
245
|
searchParams,
|
|
246
246
|
}: SliceSimulatorParams) {
|
|
247
|
-
const
|
|
247
|
+
const { state } = await searchParams
|
|
248
|
+
const slices = getSlices(state);
|
|
248
249
|
|
|
249
250
|
return (
|
|
250
251
|
<SliceSimulator>
|
|
@@ -263,8 +264,9 @@ const createSliceSimulatorPage = async ({ helpers, options }) => {
|
|
|
263
264
|
|
|
264
265
|
import { components } from "../../slices";
|
|
265
266
|
|
|
266
|
-
export default function SliceSimulatorPage({ searchParams }) {
|
|
267
|
-
const
|
|
267
|
+
export default async function SliceSimulatorPage({ searchParams }) {
|
|
268
|
+
const { state } = await searchParams
|
|
269
|
+
const slices = getSlices(state);
|
|
268
270
|
|
|
269
271
|
return (
|
|
270
272
|
<SliceSimulator>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-init.js","sources":["../../../src/hooks/project-init.ts"],"sourcesContent":["import 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 { buildSrcPath } from \"../lib/buildSrcPath\";\nimport { checkHasAppRouter } from \"../lib/checkHasAppRouter\";\nimport { checkIsTypeScriptProject } from \"../lib/checkIsTypeScriptProject\";\nimport { getJSFileExtension } from \"../lib/getJSFileExtension\";\nimport { rejectIfNecessary } from \"../lib/rejectIfNecessary\";\n\nimport type { PluginOptions } from \"../types\";\nimport { PRISMIC_ENVIRONMENT_ENVIRONMENT_VARIABLE_NAME } from \"../constants\";\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 checkHasProjectFile({\n\t\tfilename: \"src\",\n\t\thelpers,\n\t});\n\tconst hasAppRouter = await checkHasAppRouter({ helpers });\n\n\tconst extension = await getJSFileExtension({ helpers, options });\n\tconst filename = await buildSrcPath({\n\t\tfilename: `prismicio.${extension}`,\n\t\thelpers,\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 =\n\t\t\t\tprocess.env.${PRISMIC_ENVIRONMENT_ENVIRONMENT_VARIABLE_NAME} || 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// Examples:\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 =\n\t\t\t\tprocess.env.${PRISMIC_ENVIRONMENT_ENVIRONMENT_VARIABLE_NAME} || 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// Examples:\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 isTypeScriptProject = await checkIsTypeScriptProject({\n\t\thelpers,\n\t\toptions,\n\t});\n\tconst hasAppRouter = await checkHasAppRouter({ helpers });\n\n\tconst extension = await getJSFileExtension({ helpers, options, jsx: true });\n\tconst filename = await buildSrcPath({\n\t\tfilename: hasAppRouter\n\t\t\t? `app/slice-simulator/page.${extension}`\n\t\t\t: `pages/slice-simulator.${extension}`,\n\t\thelpers,\n\t});\n\n\tif (await checkHasProjectFile({ filename, helpers })) {\n\t\treturn;\n\t}\n\n\tlet contents;\n\n\tif (hasAppRouter) {\n\t\tif (isTypeScriptProject) {\n\t\t\tcontents = source`\n\t\t\t\timport {\n\t\t\t\t\tSliceSimulator,\n\t\t\t\t\tSliceSimulatorParams,\n\t\t\t\t\tgetSlices,\n\t\t\t\t} from \"@slicemachine/adapter-next/simulator\";\n\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\timport { components } from \"../../slices\";\n\n\t\t\t\texport default function SliceSimulatorPage({\n\t\t\t\t\tsearchParams,\n\t\t\t\t}: SliceSimulatorParams) {\n\t\t\t\t\tconst slices = getSlices(searchParams.state);\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<SliceSimulator>\n\t\t\t\t\t\t\t<SliceZone slices={slices} components={components} />\n\t\t\t\t\t\t</SliceSimulator>\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t`;\n\t\t} else {\n\t\t\tcontents = source`\n\t\t\t\timport {\n\t\t\t\t\tSliceSimulator,\n\t\t\t\t\tgetSlices,\n\t\t\t\t} from \"@slicemachine/adapter-next/simulator\";\n\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\timport { components } from \"../../slices\";\n\n\t\t\t\texport default function SliceSimulatorPage({ searchParams }) {\n\t\t\t\t\tconst slices = getSlices(searchParams.state);\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<SliceSimulator>\n\t\t\t\t\t\t\t<SliceZone slices={slices} components={components} />\n\t\t\t\t\t\t</SliceSimulator>\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t`;\n\t\t}\n\t} else {\n\t\tcontents = source`\n\t\t\timport { SliceSimulator } from \"@slicemachine/adapter-next/simulator\";\n\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\timport { components } from \"../slices\";\n\n\t\t\texport default function SliceSimulatorPage() {\n\t\t\t\treturn (\n\t\t\t\t\t<SliceSimulator\n\t\t\t\t\t\tsliceZone={(props) => <SliceZone {...props} components={components} />}\n\t\t\t\t\t/>\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 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 = await buildSrcPath({\n\t\tfilename: hasAppRouter\n\t\t\t? `app/api/preview/route.${extension}`\n\t\t\t: `pages/api/preview.${extension}`,\n\t\thelpers,\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\treturn await 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\treturn await 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 function handler(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\treturn await 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 function handler(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\treturn await 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 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 = await buildSrcPath({\n\t\tfilename: hasAppRouter\n\t\t\t? `app/api/exit-preview/route.${extension}`\n\t\t\t: `pages/api/exit-preview.${extension}`,\n\t\thelpers,\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 function GET() {\n\t\t\t\treturn 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 default function handler(req: NextApiRequest, res: NextApiResponse) {\n\t\t\t\t\treturn 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 default function handler(req, res) {\n\t\t\t\t\treturn 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 checkHasProjectFile({\n\t\tfilename: \"src\",\n\t\thelpers,\n\t});\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 extension = await getJSFileExtension({ helpers, options });\n\tconst filename = await buildSrcPath({\n\t\tfilename: `app/api/revalidate/route.${extension}`,\n\t\thelpers,\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"],"mappings":";;;;;;;;AAwBA,MAAM,sBAAsB,OAAO,EAClC,qBAAAA,2BAC6B;AAC7B,QAAMA,qBAAoB;AAAA,IACzB,cAAc;AAAA,MACb,qBAAqB;AAAA,MACrB,oBAAoB;AAAA,MACpB,mBAAmB;AAAA,IACnB;AAAA,EAAA,CACD;AACF;AAIA,MAAM,sBAAsB,OAAO,EAClC,SACA,cAC6B;AACvB,QAAA,sBAAsB,MAAM,yBAAyB;AAAA,IAC1D;AAAA,IACA;AAAA,EAAA,CACA;AACK,QAAA,kBAAkB,MAAM,oBAAoB;AAAA,IACjD,UAAU;AAAA,IACV;AAAA,EAAA,CACA;AACD,QAAM,eAAe,MAAM,kBAAkB,EAAE,QAAS,CAAA;AAExD,QAAM,YAAY,MAAM,mBAAmB,EAAE,SAAS,QAAS,CAAA;AACzD,QAAA,WAAW,MAAM,aAAa;AAAA,IACnC,UAAU,aAAa;AAAA,IACvB;AAAA,EAAA,CACA;AAED,MAAI,MAAM,oBAAoB,EAAE,UAAU,QAAS,CAAA,GAAG;AACrD;AAAA,EACD;AAEI,MAAA;AAEJ,MAAI,cAAc;AACjB,QAAI,qBAAqB;AACD,6BAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAA,OA0BjB;AACiB,6BAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IA0BxB;AAAA,EAAA,OACM;AACN,QAAI,qBAAqB;AACD,6BAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAA,OAsBjB;AACiB,6BAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAsBxB;AAAA,EACD;AAEI,MAAA;AAEJ,MAAI,qBAAqB;AACb,eAAA;AAAA;AAAA;AAAA,yBAGY,kBAAkB,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAMhC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAoBb;AAAA;AAAA,EAAA,OAEG;AACK,eAAA;AAAA;AAAA;AAAA,yBAGY,kBAAkB,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAMhC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAsBb;AAAA;AAAA,EAEJ;AAEA,QAAM,iBAAiB;AAAA,IACtB;AAAA,IACA;AAAA,IACA,QAAQ,QAAQ;AAAA,IAChB;AAAA,EAAA,CACA;AACF;AAIA,MAAM,2BAA2B,OAAO,EACvC,SACA,cACkC;AAC5B,QAAA,sBAAsB,MAAM,yBAAyB;AAAA,IAC1D;AAAA,IACA;AAAA,EAAA,CACA;AACD,QAAM,eAAe,MAAM,kBAAkB,EAAE,QAAS,CAAA;AAElD,QAAA,YAAY,MAAM,mBAAmB,EAAE,SAAS,SAAS,KAAK,MAAM;AACpE,QAAA,WAAW,MAAM,aAAa;AAAA,IACnC,UAAU,eACP,4BAA4B,cAC5B,yBAAyB;AAAA,IAC5B;AAAA,EAAA,CACA;AAED,MAAI,MAAM,oBAAoB,EAAE,UAAU,QAAS,CAAA,GAAG;AACrD;AAAA,EACD;AAEI,MAAA;AAEJ,MAAI,cAAc;AACjB,QAAI,qBAAqB;AACb,iBAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAA,OAsBL;AACK,iBAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAmBZ;AAAA,EAAA,OACM;AACK,eAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcZ;AAEA,QAAM,iBAAiB;AAAA,IACtB;AAAA,IACA;AAAA,IACA,QAAQ,QAAQ;AAAA,IAChB;AAAA,EAAA,CACA;AACF;AAEA,MAAM,qBAAqB,OAAO,EACjC,SACA,cACwC;AACxC,QAAM,eAAe,MAAM,kBAAkB,EAAE,QAAS,CAAA;AAClD,QAAA,sBAAsB,MAAM,yBAAyB;AAAA,IAC1D;AAAA,IACA;AAAA,EAAA,CACA;AAED,QAAM,YAAY,MAAM,mBAAmB,EAAE,SAAS,QAAS,CAAA;AACzD,QAAA,WAAW,MAAM,aAAa;AAAA,IACnC,UAAU,eACP,yBAAyB,cACzB,qBAAqB;AAAA,IACxB;AAAA,EAAA,CACA;AAED,MAAI,MAAM,oBAAoB,EAAE,UAAU,QAAS,CAAA,GAAG;AACrD;AAAA,EACD;AAEI,MAAA;AAEJ,MAAI,cAAc;AACjB,QAAI,qBAAqB;AACb,iBAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAA,OAYL;AACK,iBAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAWZ;AAAA,EAAA,OACM;AACN,QAAI,qBAAqB;AACb,iBAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAA,OAcL;AACK,iBAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAaZ;AAAA,EACD;AAEA,QAAM,iBAAiB;AAAA,IACtB;AAAA,IACA;AAAA,IACA,QAAQ,QAAQ;AAAA,IAChB;AAAA,EAAA,CACA;AACF;AAEA,MAAM,yBAAyB,OAAO,EACrC,SACA,cACwC;AACxC,QAAM,eAAe,MAAM,kBAAkB,EAAE,QAAS,CAAA;AAClD,QAAA,sBAAsB,MAAM,yBAAyB;AAAA,IAC1D;AAAA,IACA;AAAA,EAAA,CACA;AAED,QAAM,YAAY,MAAM,mBAAmB,EAAE,SAAS,QAAS,CAAA;AACzD,QAAA,WAAW,MAAM,aAAa;AAAA,IACnC,UAAU,eACP,8BAA8B,cAC9B,0BAA0B;AAAA,IAC7B;AAAA,EAAA,CACA;AAED,MAAI,MAAM,oBAAoB,EAAE,UAAU,QAAS,CAAA,GAAG;AACrD;AAAA,EACD;AAEI,MAAA;AAEJ,MAAI,cAAc;AACN,eAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAA,OAOL;AACN,QAAI,qBAAqB;AACb,iBAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAA,OAQL;AACK,iBAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOZ;AAAA,EACD;AAEA,QAAM,iBAAiB;AAAA,IACtB;AAAA,IACA;AAAA,IACA,QAAQ,QAAQ;AAAA,IAChB;AAAA,EAAA,CACA;AACF;AAEA,MAAM,2BAA2B,OAAO,EACvC,SACA,SACA,cACwC;;AAClC,QAAA,kBAAkB,MAAM,oBAAoB;AAAA,IACjD,UAAU;AAAA,IACV;AAAA,EAAA,CACA;AACK,QAAA,UAAU,MAAM,QAAQ;AAG9B,gBAAQ,QAAO,2BAAf,GAAe,yBACd;AAID,MACC,mBACA,QAAQ,OAAO,aACf,KAAK,UAAU,QAAQ,OAAO,SAAS,MAAM,KAAK,UAAU,CAAC,UAAU,CAAC,GACvE;AACK,UAAA,eAAe,MAAM,QAAQ,iBAAiB;AAAA,MACnD,WAAW,QAAQ,OAAO,UAAU,CAAC;AAAA,IAAA,CACrC;AAEG,QAAA,aAAa,SAAS,SAAS,GAAG;AAC7B,cAAA,OAAO,YAAY,CAAC,cAAc;AAAA,IAC3C;AAAA,EACD;AAEM,QAAA,QAAQ,yBAAyB,QAAQ,QAAQ;AAAA,IACtD,QAAQ,QAAQ;AAAA,EAAA,CAChB;AACF;AAEA,MAAM,wBAAwB,OAAO,EACpC,SACA,cACwC;AACxC,QAAM,eAAe,MAAM,kBAAkB,EAAE,QAAS,CAAA;AAExD,MAAI,CAAC,cAAc;AAClB;AAAA,EACD;AAEA,QAAM,YAAY,MAAM,mBAAmB,EAAE,SAAS,QAAS,CAAA;AACzD,QAAA,WAAW,MAAM,aAAa;AAAA,IACnC,UAAU,4BAA4B;AAAA,IACtC;AAAA,EAAA,CACA;AAED,MAAI,MAAM,oBAAoB,EAAE,UAAU,QAAS,CAAA,GAAG;AACrD;AAAA,EACD;AAEA,QAAM,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWjB,QAAM,iBAAiB;AAAA,IACtB;AAAA,IACA;AAAA,IACA,QAAQ,QAAQ;AAAA,IAChB;AAAA,EAAA,CACA;AACF;AAEO,MAAM,cAA8C,OAC1D,EAAE,qBAAqB,qBAAA,GACvB,YACG;AAEF,oBAAA,MAAM,QAAQ,WAAW;AAAA,IACxB,oBAAoB,EAAE,qBAAqB,sBAAsB;AAAA,IACjE,yBAAyB,OAAO;AAAA,IAChC,oBAAoB,OAAO;AAAA,IAC3B,yBAAyB,OAAO;AAAA,IAChC,mBAAmB,OAAO;AAAA,IAC1B,uBAAuB,OAAO;AAAA,IAC9B,sBAAsB,OAAO;AAAA,EAC7B,CAAA,CAAC;AAEJ;"}
|
|
1
|
+
{"version":3,"file":"project-init.js","sources":["../../../src/hooks/project-init.ts"],"sourcesContent":["import 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 { buildSrcPath } from \"../lib/buildSrcPath\";\nimport { checkHasAppRouter } from \"../lib/checkHasAppRouter\";\nimport { checkIsTypeScriptProject } from \"../lib/checkIsTypeScriptProject\";\nimport { getJSFileExtension } from \"../lib/getJSFileExtension\";\nimport { rejectIfNecessary } from \"../lib/rejectIfNecessary\";\n\nimport type { PluginOptions } from \"../types\";\nimport { PRISMIC_ENVIRONMENT_ENVIRONMENT_VARIABLE_NAME } from \"../constants\";\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 checkHasProjectFile({\n\t\tfilename: \"src\",\n\t\thelpers,\n\t});\n\tconst hasAppRouter = await checkHasAppRouter({ helpers });\n\n\tconst extension = await getJSFileExtension({ helpers, options });\n\tconst filename = await buildSrcPath({\n\t\tfilename: `prismicio.${extension}`,\n\t\thelpers,\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 =\n\t\t\t\tprocess.env.${PRISMIC_ENVIRONMENT_ENVIRONMENT_VARIABLE_NAME} || 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// Examples:\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 =\n\t\t\t\tprocess.env.${PRISMIC_ENVIRONMENT_ENVIRONMENT_VARIABLE_NAME} || 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// Examples:\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 isTypeScriptProject = await checkIsTypeScriptProject({\n\t\thelpers,\n\t\toptions,\n\t});\n\tconst hasAppRouter = await checkHasAppRouter({ helpers });\n\n\tconst extension = await getJSFileExtension({ helpers, options, jsx: true });\n\tconst filename = await buildSrcPath({\n\t\tfilename: hasAppRouter\n\t\t\t? `app/slice-simulator/page.${extension}`\n\t\t\t: `pages/slice-simulator.${extension}`,\n\t\thelpers,\n\t});\n\n\tif (await checkHasProjectFile({ filename, helpers })) {\n\t\treturn;\n\t}\n\n\tlet contents;\n\n\tif (hasAppRouter) {\n\t\tif (isTypeScriptProject) {\n\t\t\tcontents = source`\n\t\t\t\timport {\n\t\t\t\t\tSliceSimulator,\n\t\t\t\t\tSliceSimulatorParams,\n\t\t\t\t\tgetSlices,\n\t\t\t\t} from \"@slicemachine/adapter-next/simulator\";\n\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\timport { components } from \"../../slices\";\n\n\t\t\t\texport default async function SliceSimulatorPage({\n\t\t\t\t\tsearchParams,\n\t\t\t\t}: SliceSimulatorParams) {\n\t\t\t\t\tconst { state } = await searchParams\n\t\t\t\t\tconst slices = getSlices(state);\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<SliceSimulator>\n\t\t\t\t\t\t\t<SliceZone slices={slices} components={components} />\n\t\t\t\t\t\t</SliceSimulator>\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t`;\n\t\t} else {\n\t\t\tcontents = source`\n\t\t\t\timport {\n\t\t\t\t\tSliceSimulator,\n\t\t\t\t\tgetSlices,\n\t\t\t\t} from \"@slicemachine/adapter-next/simulator\";\n\t\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\t\timport { components } from \"../../slices\";\n\n\t\t\t\texport default async function SliceSimulatorPage({ searchParams }) {\n\t\t\t\t\tconst { state } = await searchParams\n\t\t\t\t\tconst slices = getSlices(state);\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<SliceSimulator>\n\t\t\t\t\t\t\t<SliceZone slices={slices} components={components} />\n\t\t\t\t\t\t</SliceSimulator>\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t`;\n\t\t}\n\t} else {\n\t\tcontents = source`\n\t\t\timport { SliceSimulator } from \"@slicemachine/adapter-next/simulator\";\n\t\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\t\timport { components } from \"../slices\";\n\n\t\t\texport default function SliceSimulatorPage() {\n\t\t\t\treturn (\n\t\t\t\t\t<SliceSimulator\n\t\t\t\t\t\tsliceZone={(props) => <SliceZone {...props} components={components} />}\n\t\t\t\t\t/>\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 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 = await buildSrcPath({\n\t\tfilename: hasAppRouter\n\t\t\t? `app/api/preview/route.${extension}`\n\t\t\t: `pages/api/preview.${extension}`,\n\t\thelpers,\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\treturn await 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\treturn await 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 function handler(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\treturn await 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 function handler(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\treturn await 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 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 = await buildSrcPath({\n\t\tfilename: hasAppRouter\n\t\t\t? `app/api/exit-preview/route.${extension}`\n\t\t\t: `pages/api/exit-preview.${extension}`,\n\t\thelpers,\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 function GET() {\n\t\t\t\treturn 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 default function handler(req: NextApiRequest, res: NextApiResponse) {\n\t\t\t\t\treturn 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 default function handler(req, res) {\n\t\t\t\t\treturn 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 checkHasProjectFile({\n\t\tfilename: \"src\",\n\t\thelpers,\n\t});\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 extension = await getJSFileExtension({ helpers, options });\n\tconst filename = await buildSrcPath({\n\t\tfilename: `app/api/revalidate/route.${extension}`,\n\t\thelpers,\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"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@slicemachine/adapter-next",
|
|
3
|
-
"version": "0.3.55
|
|
3
|
+
"version": "0.3.55",
|
|
4
4
|
"description": "Slice Machine adapter for Next.js.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"typescript",
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
"dependencies": {
|
|
69
69
|
"@prismicio/simulator": "^0.1.4",
|
|
70
70
|
"@prismicio/types-internal": "^2.8.0",
|
|
71
|
-
"@slicemachine/plugin-kit": "0.4.55
|
|
71
|
+
"@slicemachine/plugin-kit": "0.4.55",
|
|
72
72
|
"common-tags": "^1.8.2",
|
|
73
73
|
"fp-ts": "^2.13.1",
|
|
74
74
|
"io-ts": "^2.2.20",
|
|
@@ -113,6 +113,5 @@
|
|
|
113
113
|
},
|
|
114
114
|
"publishConfig": {
|
|
115
115
|
"access": "public"
|
|
116
|
-
}
|
|
117
|
-
"stableVersion": "0.3.54"
|
|
116
|
+
}
|
|
118
117
|
}
|
|
@@ -41,10 +41,11 @@ export const documentationRead: DocumentationReadHook<PluginOptions> = async (
|
|
|
41
41
|
|
|
42
42
|
type Params = { uid: string };
|
|
43
43
|
|
|
44
|
-
export default async function Page({ params }: { params: Params }) {
|
|
44
|
+
export default async function Page({ params }: { params: Promise<Params> }) {
|
|
45
|
+
const { uid } = await params
|
|
45
46
|
const client = createClient();
|
|
46
47
|
const page = await client
|
|
47
|
-
.getByUID("${model.id}",
|
|
48
|
+
.getByUID("${model.id}", uid)
|
|
48
49
|
.catch(() => notFound());
|
|
49
50
|
|
|
50
51
|
return <SliceZone slices={page.data.slices} components={components} />;
|
|
@@ -53,11 +54,12 @@ export const documentationRead: DocumentationReadHook<PluginOptions> = async (
|
|
|
53
54
|
export async function generateMetadata({
|
|
54
55
|
params,
|
|
55
56
|
}: {
|
|
56
|
-
params: Params
|
|
57
|
+
params: Promise<Params>;
|
|
57
58
|
}): Promise<Metadata> {
|
|
59
|
+
const { uid } = await params
|
|
58
60
|
const client = createClient();
|
|
59
61
|
const page = await client
|
|
60
|
-
.getByUID("${model.id}",
|
|
62
|
+
.getByUID("${model.id}", uid)
|
|
61
63
|
.catch(() => notFound());
|
|
62
64
|
|
|
63
65
|
return {
|
|
@@ -205,18 +207,20 @@ export const documentationRead: DocumentationReadHook<PluginOptions> = async (
|
|
|
205
207
|
|
|
206
208
|
|
|
207
209
|
export default async function Page({ params }) {
|
|
210
|
+
const { uid } = await params
|
|
208
211
|
const client = createClient();
|
|
209
212
|
const page = await client
|
|
210
|
-
.getByUID("${model.id}",
|
|
213
|
+
.getByUID("${model.id}", uid)
|
|
211
214
|
.catch(() => notFound());
|
|
212
215
|
|
|
213
216
|
return <SliceZone slices={page.data.slices} components={components} />;
|
|
214
217
|
}
|
|
215
218
|
|
|
216
219
|
export async function generateMetadata({ params }) {
|
|
220
|
+
const { uid } = await params
|
|
217
221
|
const client = createClient();
|
|
218
222
|
const page = await client
|
|
219
|
-
.getByUID("${model.id}",
|
|
223
|
+
.getByUID("${model.id}", uid)
|
|
220
224
|
.catch(() => notFound());
|
|
221
225
|
|
|
222
226
|
return {
|
|
@@ -284,10 +284,11 @@ const createSliceSimulatorPage = async ({
|
|
|
284
284
|
|
|
285
285
|
import { components } from "../../slices";
|
|
286
286
|
|
|
287
|
-
export default function SliceSimulatorPage({
|
|
287
|
+
export default async function SliceSimulatorPage({
|
|
288
288
|
searchParams,
|
|
289
289
|
}: SliceSimulatorParams) {
|
|
290
|
-
const
|
|
290
|
+
const { state } = await searchParams
|
|
291
|
+
const slices = getSlices(state);
|
|
291
292
|
|
|
292
293
|
return (
|
|
293
294
|
<SliceSimulator>
|
|
@@ -306,8 +307,9 @@ const createSliceSimulatorPage = async ({
|
|
|
306
307
|
|
|
307
308
|
import { components } from "../../slices";
|
|
308
309
|
|
|
309
|
-
export default function SliceSimulatorPage({ searchParams }) {
|
|
310
|
-
const
|
|
310
|
+
export default async function SliceSimulatorPage({ searchParams }) {
|
|
311
|
+
const { state } = await searchParams
|
|
312
|
+
const slices = getSlices(state);
|
|
311
313
|
|
|
312
314
|
return (
|
|
313
315
|
<SliceSimulator>
|