@slicemachine/adapter-next 0.3.18-dev-next-release.0 → 0.3.18-dev-next-release.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -171,14 +171,15 @@ const createPrismicIOFile = async ({ helpers, options }) => {
|
|
|
171
171
|
*/
|
|
172
172
|
// TODO: Update the routes array to match your project's route structure.
|
|
173
173
|
const routes: prismic.ClientConfig["routes"] = [
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
174
|
+
// Examples:
|
|
175
|
+
// {
|
|
176
|
+
// type: "homepage",
|
|
177
|
+
// path: "/",
|
|
178
|
+
// },
|
|
179
|
+
// {
|
|
180
|
+
// type: "page",
|
|
181
|
+
// path: "/:uid",
|
|
182
|
+
// },
|
|
182
183
|
];
|
|
183
184
|
|
|
184
185
|
${createClientContents}
|
|
@@ -203,14 +204,15 @@ const createPrismicIOFile = async ({ helpers, options }) => {
|
|
|
203
204
|
*/
|
|
204
205
|
// TODO: Update the routes array to match your project's route structure.
|
|
205
206
|
const routes = [
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
207
|
+
// Examples:
|
|
208
|
+
// {
|
|
209
|
+
// type: "homepage",
|
|
210
|
+
// path: "/",
|
|
211
|
+
// },
|
|
212
|
+
// {
|
|
213
|
+
// type: "page",
|
|
214
|
+
// path: "/:uid",
|
|
215
|
+
// },
|
|
214
216
|
];
|
|
215
217
|
|
|
216
218
|
${createClientContents}
|
|
@@ -284,7 +286,7 @@ const createPreviewRoute = async ({ helpers, options }) => {
|
|
|
284
286
|
export async function GET(request: NextRequest) {
|
|
285
287
|
const client = createClient();
|
|
286
288
|
|
|
287
|
-
await redirectToPreviewURL({ client, request });
|
|
289
|
+
return await redirectToPreviewURL({ client, request });
|
|
288
290
|
}
|
|
289
291
|
`;
|
|
290
292
|
} else {
|
|
@@ -296,7 +298,7 @@ const createPreviewRoute = async ({ helpers, options }) => {
|
|
|
296
298
|
export async function GET(request) {
|
|
297
299
|
const client = createClient();
|
|
298
300
|
|
|
299
|
-
await redirectToPreviewURL({ client, request });
|
|
301
|
+
return await redirectToPreviewURL({ client, request });
|
|
300
302
|
}
|
|
301
303
|
`;
|
|
302
304
|
}
|
|
@@ -308,12 +310,12 @@ const createPreviewRoute = async ({ helpers, options }) => {
|
|
|
308
310
|
|
|
309
311
|
import { createClient } from "../../prismicio";
|
|
310
312
|
|
|
311
|
-
export default async (req: NextApiRequest, res: NextApiResponse)
|
|
313
|
+
export default async function handler(req: NextApiRequest, res: NextApiResponse) {
|
|
312
314
|
const client = createClient({ req });
|
|
313
315
|
|
|
314
316
|
await setPreviewData({ req, res });
|
|
315
317
|
|
|
316
|
-
await redirectToPreviewURL({ req, res, client });
|
|
318
|
+
return await redirectToPreviewURL({ req, res, client });
|
|
317
319
|
};
|
|
318
320
|
`;
|
|
319
321
|
} else {
|
|
@@ -322,12 +324,12 @@ const createPreviewRoute = async ({ helpers, options }) => {
|
|
|
322
324
|
|
|
323
325
|
import { createClient } from "../../prismicio";
|
|
324
326
|
|
|
325
|
-
export default async (req, res)
|
|
327
|
+
export default async function handler(req, res) {
|
|
326
328
|
const client = createClient({ req });
|
|
327
329
|
|
|
328
330
|
await setPreviewData({ req, res });
|
|
329
331
|
|
|
330
|
-
await redirectToPreviewURL({ req, res, client });
|
|
332
|
+
return await redirectToPreviewURL({ req, res, client });
|
|
331
333
|
};
|
|
332
334
|
`;
|
|
333
335
|
}
|
|
@@ -359,8 +361,8 @@ const createExitPreviewRoute = async ({ helpers, options }) => {
|
|
|
359
361
|
contents = commonTags.source`
|
|
360
362
|
import { exitPreview } from "@prismicio/next";
|
|
361
363
|
|
|
362
|
-
export
|
|
363
|
-
return
|
|
364
|
+
export function GET() {
|
|
365
|
+
return exitPreview();
|
|
364
366
|
}
|
|
365
367
|
`;
|
|
366
368
|
} else {
|
|
@@ -369,16 +371,16 @@ const createExitPreviewRoute = async ({ helpers, options }) => {
|
|
|
369
371
|
import { NextApiRequest, NextApiResponse } from "next";
|
|
370
372
|
import { exitPreview } from "@prismicio/next";
|
|
371
373
|
|
|
372
|
-
export
|
|
373
|
-
return
|
|
374
|
+
export default function handler(req: NextApiRequest, res: NextApiResponse) {
|
|
375
|
+
return exitPreview({ req, res });
|
|
374
376
|
}
|
|
375
377
|
`;
|
|
376
378
|
} else {
|
|
377
379
|
contents = commonTags.source`
|
|
378
380
|
import { exitPreview } from "@prismicio/next";
|
|
379
381
|
|
|
380
|
-
export
|
|
381
|
-
return
|
|
382
|
+
export default function handler(req, res) {
|
|
383
|
+
return exitPreview({ req, res });
|
|
382
384
|
}
|
|
383
385
|
`;
|
|
384
386
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-init.cjs","sources":["../../../src/hooks/project-init.ts"],"sourcesContent":["import * as path from \"node:path\";\nimport type {\n\tProjectInitHook,\n\tProjectInitHookData,\n\tSliceMachineContext,\n} from \"@slicemachine/plugin-kit\";\nimport {\n\tcheckHasProjectFile,\n\twriteProjectFile,\n} from \"@slicemachine/plugin-kit/fs\";\nimport { source } from \"common-tags\";\n\nimport { checkHasAppRouter } from \"../lib/checkHasAppRouter\";\nimport { checkHasSrcDirectory } from \"../lib/checkHasSrcDirectory\";\nimport { checkIsTypeScriptProject } from \"../lib/checkIsTypeScriptProject\";\nimport { getJSFileExtension } from \"../lib/getJSFileExtension\";\nimport { rejectIfNecessary } from \"../lib/rejectIfNecessary\";\n\nimport type { PluginOptions } from \"../types\";\n\ntype InstallDependenciesArgs = {\n\tinstallDependencies: ProjectInitHookData[\"installDependencies\"];\n};\n\nconst installDependencies = async ({\n\tinstallDependencies,\n}: InstallDependenciesArgs) => {\n\tawait installDependencies({\n\t\tdependencies: {\n\t\t\t\"@prismicio/client\": \"latest\",\n\t\t\t\"@prismicio/react\": \"latest\",\n\t\t\t\"@prismicio/next\": \"latest\",\n\t\t},\n\t});\n};\n\ntype CreatePrismicIOFileArgs = SliceMachineContext<PluginOptions>;\n\nconst createPrismicIOFile = async ({\n\thelpers,\n\toptions,\n}: CreatePrismicIOFileArgs) => {\n\tconst isTypeScriptProject = await checkIsTypeScriptProject({\n\t\thelpers,\n\t\toptions,\n\t});\n\tconst hasSrcDirectory = await checkHasSrcDirectory({ helpers });\n\tconst hasAppRouter = await checkHasAppRouter({ helpers });\n\n\tconst extension = await getJSFileExtension({ helpers, options });\n\tconst filename = path.join(\n\t\t...[hasSrcDirectory ? \"src\" : undefined, `prismicio.${extension}`].filter(\n\t\t\t(segment): segment is NonNullable<typeof segment> => Boolean(segment),\n\t\t),\n\t);\n\n\tif (await checkHasProjectFile({ filename, helpers })) {\n\t\treturn;\n\t}\n\n\tlet createClientContents: string;\n\n\tif (hasAppRouter) {\n\t\tif (isTypeScriptProject) {\n\t\t\tcreateClientContents = source`\n\t\t\t\t/**\n\t\t\t\t * Creates a Prismic client for the project's repository. The client is used to\n\t\t\t\t * query content from the Prismic API.\n\t\t\t\t *\n\t\t\t\t * @param config - Configuration for the Prismic client.\n\t\t\t\t */\n\t\t\t\texport const createClient = (config: prismicNext.CreateClientConfig = {}) => {\n\t\t\t\t\tconst client = prismic.createClient(repositoryName, {\n\t\t\t\t\t\troutes,\n\t\t\t\t\t\tfetchOptions:\n\t\t\t\t\t\t\tprocess.env.NODE_ENV === 'production'\n\t\t\t\t\t\t\t\t? { next: { tags: ['prismic'] }, cache: 'force-cache' }\n\t\t\t\t\t\t\t\t: { next: { revalidate: 5 } },\n\t\t\t\t\t\t...config,\n\t\t\t\t\t});\n\n\t\t\t\t\tprismicNext.enableAutoPreviews({\n\t\t\t\t\t\tclient,\n\t\t\t\t\t\tpreviewData: config.previewData,\n\t\t\t\t\t\treq: config.req,\n\t\t\t\t\t});\n\n\t\t\t\t\treturn client;\n\t\t\t\t};\n\t\t\t`;\n\t\t} else {\n\t\t\tcreateClientContents = source`\n\t\t\t\t/**\n\t\t\t\t * Creates a Prismic client for the project's repository. The client is used to\n\t\t\t\t * query content from the Prismic API.\n\t\t\t\t *\n\t\t\t\t * @param {prismicNext.CreateClientConfig} config - Configuration for the Prismic client.\n\t\t\t\t */\n\t\t\t\texport const createClient = (config = {}) => {\n\t\t\t\t\tconst client = prismic.createClient(repositoryName, {\n\t\t\t\t\t\troutes,\n\t\t\t\t\t\tfetchOptions:\n\t\t\t\t\t\t\tprocess.env.NODE_ENV === 'production'\n\t\t\t\t\t\t\t\t? { next: { tags: ['prismic'] }, cache: 'force-cache' }\n\t\t\t\t\t\t\t\t: { next: { revalidate: 5 } },\n\t\t\t\t\t\t...config,\n\t\t\t\t\t});\n\n\t\t\t\t\tprismicNext.enableAutoPreviews({\n\t\t\t\t\t\tclient,\n\t\t\t\t\t\tpreviewData: config.previewData,\n\t\t\t\t\t\treq: config.req,\n\t\t\t\t\t});\n\n\t\t\t\t\treturn client;\n\t\t\t\t};\n\t\t\t`;\n\t\t}\n\t} else {\n\t\tif (isTypeScriptProject) {\n\t\t\tcreateClientContents = source`\n\t\t\t\t/**\n\t\t\t\t * Creates a Prismic client for the project's repository. The client is used to\n\t\t\t\t * query content from the Prismic API.\n\t\t\t\t *\n\t\t\t\t * @param config - Configuration for the Prismic client.\n\t\t\t\t */\n\t\t\t\texport const createClient = (config: prismicNext.CreateClientConfig = {}) => {\n\t\t\t\t\tconst client = prismic.createClient(repositoryName, {\n\t\t\t\t\t\troutes,\n\t\t\t\t\t\t...config,\n\t\t\t\t\t});\n\n\t\t\t\t\tprismicNext.enableAutoPreviews({\n\t\t\t\t\t\tclient,\n\t\t\t\t\t\tpreviewData: config.previewData,\n\t\t\t\t\t\treq: config.req,\n\t\t\t\t\t});\n\n\t\t\t\t\treturn client;\n\t\t\t\t};\n\t\t\t`;\n\t\t} else {\n\t\t\tcreateClientContents = source`\n\t\t\t\t/**\n\t\t\t\t * Creates a Prismic client for the project's repository. The client is used to\n\t\t\t\t * query content from the Prismic API.\n\t\t\t\t *\n\t\t\t\t * @param {prismicNext.CreateClientConfig} config - Configuration for the Prismic client.\n\t\t\t\t */\n\t\t\t\texport const createClient = (config = {}) => {\n\t\t\t\t\tconst client = prismic.createClient(repositoryName, {\n\t\t\t\t\t\troutes,\n\t\t\t\t\t\t...config,\n\t\t\t\t\t});\n\n\t\t\t\t\tprismicNext.enableAutoPreviews({\n\t\t\t\t\t\tclient,\n\t\t\t\t\t\tpreviewData: config.previewData,\n\t\t\t\t\t\treq: config.req,\n\t\t\t\t\t});\n\n\t\t\t\t\treturn client;\n\t\t\t\t};\n\t\t\t`;\n\t\t}\n\t}\n\n\tlet contents: string;\n\n\tif (isTypeScriptProject) {\n\t\tcontents = source`\n\t\t\timport * as prismic from \"@prismicio/client\";\n\t\t\timport * as prismicNext from \"@prismicio/next\";\n\t\t\timport config from \"${hasSrcDirectory ? \"..\" : \".\"}/slicemachine.config.json\";\n\n\t\t\t/**\n\t\t\t * The project's Prismic repository name.\n\t\t\t */\n\t\t\texport const repositoryName = config.repositoryName;\n\n\t\t\t/**\n\t\t\t * A list of Route Resolver objects that define how a document's \\`url\\` field is resolved.\n\t\t\t *\n\t\t\t * {@link https://prismic.io/docs/route-resolver#route-resolver}\n\t\t\t */\n\t\t\t// TODO: Update the routes array to match your project's route structure.\n\t\t\tconst routes: prismic.ClientConfig[\"routes\"] = [\n\t\t\t\t{\n\t\t\t\t\ttype: \"homepage\",\n\t\t\t\t\tpath: \"/\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttype: \"page\",\n\t\t\t\t\tpath: \"/:uid\",\n\t\t\t\t},\n\t\t\t];\n\n\t\t\t${createClientContents}\n\t\t`;\n\t} else {\n\t\tcontents = source`\n\t\t\timport * as prismic from \"@prismicio/client\";\n\t\t\timport * as prismicNext from \"@prismicio/next\";\n\t\t\timport config from \"${hasSrcDirectory ? \"..\" : \".\"}/slicemachine.config.json\";\n\n\t\t\t/**\n\t\t\t * The project's Prismic repository name.\n\t\t\t */\n\t\t\texport const repositoryName = config.repositoryName;\n\n\t\t\t/**\n\t\t\t * A list of Route Resolver objects that define how a document's \\`url\\` field is resolved.\n\t\t\t *\n\t\t\t * {@link https://prismic.io/docs/route-resolver#route-resolver}\n\t\t\t *\n\t\t\t * @type {prismic.ClientConfig[\"routes\"]}\n\t\t\t */\n\t\t\t// TODO: Update the routes array to match your project's route structure.\n\t\t\tconst routes = [\n\t\t\t\t{\n\t\t\t\t\ttype: \"homepage\",\n\t\t\t\t\tpath: \"/\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttype: \"page\",\n\t\t\t\t\tpath: \"/:uid\",\n\t\t\t\t},\n\t\t\t];\n\n\t\t\t${createClientContents}\n\t\t`;\n\t}\n\n\tawait writeProjectFile({\n\t\tfilename,\n\t\tcontents,\n\t\tformat: options.format,\n\t\thelpers,\n\t});\n};\n\ntype CreateSliceSimulatorPageArgs = SliceMachineContext<PluginOptions>;\n\nconst createSliceSimulatorPage = async ({\n\thelpers,\n\toptions,\n}: CreateSliceSimulatorPageArgs) => {\n\tconst hasSrcDirectory = await checkHasSrcDirectory({ helpers });\n\tconst hasAppRouter = await checkHasAppRouter({ helpers });\n\n\tconst extension = await getJSFileExtension({ helpers, options, jsx: true });\n\tconst filename = path.join(\n\t\t...[\n\t\t\thasSrcDirectory ? \"src\" : undefined,\n\t\t\thasAppRouter\n\t\t\t\t? `app/slice-simulator/page.${extension}`\n\t\t\t\t: `pages/slice-simulator.${extension}`,\n\t\t].filter((segment): segment is NonNullable<typeof segment> =>\n\t\t\tBoolean(segment),\n\t\t),\n\t);\n\n\tif (await checkHasProjectFile({ filename, helpers })) {\n\t\treturn;\n\t}\n\n\tconst contents = source`\n\t\t\"use client\"\n\n\t\timport { SliceSimulator } from \"@slicemachine/adapter-next/simulator\";\n\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\timport { components } from \"${hasAppRouter ? \"../..\" : \"..\"}/slices\";\n\n\t\texport default function SliceSimulatorPage() {\n\t\t\treturn (\n\t\t\t\t<SliceSimulator\n\t\t\t\t\tsliceZone={(props) => <SliceZone {...props} components={components} />}\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\t`;\n\n\tawait writeProjectFile({\n\t\tfilename,\n\t\tcontents,\n\t\tformat: options.format,\n\t\thelpers,\n\t});\n};\n\nconst createPreviewRoute = async ({\n\thelpers,\n\toptions,\n}: SliceMachineContext<PluginOptions>) => {\n\tconst hasSrcDirectory = await checkHasSrcDirectory({ helpers });\n\tconst hasAppRouter = await checkHasAppRouter({ helpers });\n\tconst isTypeScriptProject = await checkIsTypeScriptProject({\n\t\thelpers,\n\t\toptions,\n\t});\n\n\tconst extension = await getJSFileExtension({ helpers, options });\n\tconst filename = path.join(\n\t\t...[\n\t\t\thasSrcDirectory ? \"src\" : undefined,\n\t\t\thasAppRouter\n\t\t\t\t? `app/api/preview/route.${extension}`\n\t\t\t\t: `pages/api/preview.${extension}`,\n\t\t].filter((segment): segment is NonNullable<typeof segment> =>\n\t\t\tBoolean(segment),\n\t\t),\n\t);\n\n\tif (await checkHasProjectFile({ filename, helpers })) {\n\t\treturn;\n\t}\n\n\tlet contents: string;\n\n\tif (hasAppRouter) {\n\t\tif (isTypeScriptProject) {\n\t\t\tcontents = source`\n\t\t\t\timport { NextRequest } from \"next/server\";\n\t\t\t\timport { redirectToPreviewURL } from \"@prismicio/next\";\n\n\t\t\t\timport { createClient } from \"../../../prismicio\";\n\n\t\t\t\texport async function GET(request: NextRequest) {\n\t\t\t\t\tconst client = createClient();\n\n\t\t\t\t\tawait redirectToPreviewURL({ client, request });\n\t\t\t\t}\n\t\t\t`;\n\t\t} else {\n\t\t\tcontents = source`\n\t\t\t\timport { redirectToPreviewURL } from \"@prismicio/next\";\n\n\t\t\t\timport { createClient } from \"../../../prismicio\";\n\n\t\t\t\texport async function GET(request) {\n\t\t\t\t\tconst client = createClient();\n\n\t\t\t\t\tawait redirectToPreviewURL({ client, request });\n\t\t\t\t}\n\t\t\t`;\n\t\t}\n\t} else {\n\t\tif (isTypeScriptProject) {\n\t\t\tcontents = source`\n\t\t\t\timport { NextApiRequest, NextApiResponse } from \"next\";\n\t\t\t\timport { setPreviewData, redirectToPreviewURL } from \"@prismicio/next\";\n\n\t\t\t\timport { createClient } from \"../../prismicio\";\n\n\t\t\t\texport default async (req: NextApiRequest, res: NextApiResponse) => {\n\t\t\t\t\tconst client = createClient({ req });\n\n\t\t\t\t\tawait setPreviewData({ req, res });\n\n\t\t\t\t\tawait redirectToPreviewURL({ req, res, client });\n\t\t\t\t};\n\t\t\t`;\n\t\t} else {\n\t\t\tcontents = source`\n\t\t\t\timport { setPreviewData, redirectToPreviewURL } from \"@prismicio/next\";\n\n\t\t\t\timport { createClient } from \"../../prismicio\";\n\n\t\t\t\texport default async (req, res) => {\n\t\t\t\t\tconst client = createClient({ req });\n\n\t\t\t\t\tawait setPreviewData({ req, res });\n\n\t\t\t\t\tawait redirectToPreviewURL({ req, res, client });\n\t\t\t\t};\n\t\t\t`;\n\t\t}\n\t}\n\n\tawait writeProjectFile({\n\t\tfilename,\n\t\tcontents,\n\t\tformat: options.format,\n\t\thelpers,\n\t});\n};\n\nconst createExitPreviewRoute = async ({\n\thelpers,\n\toptions,\n}: SliceMachineContext<PluginOptions>) => {\n\tconst hasSrcDirectory = await checkHasSrcDirectory({ helpers });\n\tconst hasAppRouter = await checkHasAppRouter({ helpers });\n\tconst isTypeScriptProject = await checkIsTypeScriptProject({\n\t\thelpers,\n\t\toptions,\n\t});\n\n\tconst extension = await getJSFileExtension({ helpers, options });\n\tconst filename = path.join(\n\t\t...[\n\t\t\thasSrcDirectory ? \"src\" : undefined,\n\t\t\thasAppRouter\n\t\t\t\t? `app/api/exit-preview/route.${extension}`\n\t\t\t\t: `pages/api/exit-preview.${extension}`,\n\t\t].filter((segment): segment is NonNullable<typeof segment> =>\n\t\t\tBoolean(segment),\n\t\t),\n\t);\n\n\tif (await checkHasProjectFile({ filename, helpers })) {\n\t\treturn;\n\t}\n\n\tlet contents: string;\n\n\tif (hasAppRouter) {\n\t\tcontents = source`\n\t\t\timport { exitPreview } from \"@prismicio/next\";\n\n\t\t\texport async function GET() {\n\t\t\t\treturn await exitPreview();\n\t\t\t}\n\t\t`;\n\t} else {\n\t\tif (isTypeScriptProject) {\n\t\t\tcontents = source`\n\t\t\t\timport { NextApiRequest, NextApiResponse } from \"next\";\n\t\t\t\timport { exitPreview } from \"@prismicio/next\";\n\n\t\t\t\texport async function handler(req: NextApiRequest, res: NextApiResponse) {\n\t\t\t\t\treturn await exitPreview({ req, res });\n\t\t\t\t}\n\t\t\t`;\n\t\t} else {\n\t\t\tcontents = source`\n\t\t\t\timport { exitPreview } from \"@prismicio/next\";\n\n\t\t\t\texport async function handler(req, res) {\n\t\t\t\t\treturn await exitPreview({ req, res });\n\t\t\t\t}\n\t\t\t`;\n\t\t}\n\t}\n\n\tawait writeProjectFile({\n\t\tfilename,\n\t\tcontents,\n\t\tformat: options.format,\n\t\thelpers,\n\t});\n};\n\nconst modifySliceMachineConfig = async ({\n\thelpers,\n\toptions,\n\tactions,\n}: SliceMachineContext<PluginOptions>) => {\n\tconst hasSrcDirectory = await checkHasSrcDirectory({ helpers });\n\tconst project = await helpers.getProject();\n\n\t// Add Slice Simulator URL.\n\tproject.config.localSliceSimulatorURL ||=\n\t\t\"http://localhost:3000/slice-simulator\";\n\n\t// Nest the default Slice Library in the src directory if it exists and\n\t// is empty.\n\tif (\n\t\thasSrcDirectory &&\n\t\tproject.config.libraries &&\n\t\tJSON.stringify(project.config.libraries) === JSON.stringify([\"./slices\"])\n\t) {\n\t\tconst sliceLibrary = await actions.readSliceLibrary({\n\t\t\tlibraryID: project.config.libraries[0],\n\t\t});\n\n\t\tif (sliceLibrary.sliceIDs.length < 1) {\n\t\t\tproject.config.libraries = [\"./src/slices\"];\n\t\t}\n\t}\n\n\tawait helpers.updateSliceMachineConfig(project.config, {\n\t\tformat: options.format,\n\t});\n};\n\nconst createRevalidateRoute = async ({\n\thelpers,\n\toptions,\n}: SliceMachineContext<PluginOptions>) => {\n\tconst hasAppRouter = await checkHasAppRouter({ helpers });\n\n\tif (!hasAppRouter) {\n\t\treturn;\n\t}\n\n\tconst hasSrcDirectory = await checkHasSrcDirectory({ helpers });\n\n\tconst extension = await getJSFileExtension({ helpers, options });\n\tconst filename = path.join(\n\t\t...[\n\t\t\thasSrcDirectory ? \"src\" : undefined,\n\t\t\t`app/api/revalidate/route.${extension}`,\n\t\t].filter((segment): segment is NonNullable<typeof segment> =>\n\t\t\tBoolean(segment),\n\t\t),\n\t);\n\n\tif (await checkHasProjectFile({ filename, helpers })) {\n\t\treturn;\n\t}\n\n\tconst contents = source`\n\t\timport { NextResponse } from \"next/server\";\n\t\timport { revalidateTag } from \"next/cache\";\n\n\t\texport async function POST() {\n\t\t\trevalidateTag(\"prismic\");\n\n\t\t\treturn NextResponse.json({ revalidated: true, now: Date.now() });\n\t\t}\n\t`;\n\n\tawait writeProjectFile({\n\t\tfilename,\n\t\tcontents,\n\t\tformat: options.format,\n\t\thelpers,\n\t});\n};\n\nexport const projectInit: ProjectInitHook<PluginOptions> = async (\n\t{ installDependencies: _installDependencies },\n\tcontext,\n) => {\n\trejectIfNecessary(\n\t\tawait Promise.allSettled([\n\t\t\tinstallDependencies({ installDependencies: _installDependencies }),\n\t\t\tmodifySliceMachineConfig(context),\n\t\t\tcreatePrismicIOFile(context),\n\t\t\tcreateSliceSimulatorPage(context),\n\t\t\tcreatePreviewRoute(context),\n\t\t\tcreateExitPreviewRoute(context),\n\t\t\tcreateRevalidateRoute(context),\n\t\t]),\n\t);\n};\n"],"names":["installDependencies","checkIsTypeScriptProject","checkHasSrcDirectory","checkHasAppRouter","getJSFileExtension","path","checkHasProjectFile","source","writeProjectFile","rejectIfNecessary"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"project-init.cjs","sources":["../../../src/hooks/project-init.ts"],"sourcesContent":["import * as path from \"node:path\";\nimport type {\n\tProjectInitHook,\n\tProjectInitHookData,\n\tSliceMachineContext,\n} from \"@slicemachine/plugin-kit\";\nimport {\n\tcheckHasProjectFile,\n\twriteProjectFile,\n} from \"@slicemachine/plugin-kit/fs\";\nimport { source } from \"common-tags\";\n\nimport { checkHasAppRouter } from \"../lib/checkHasAppRouter\";\nimport { checkHasSrcDirectory } from \"../lib/checkHasSrcDirectory\";\nimport { checkIsTypeScriptProject } from \"../lib/checkIsTypeScriptProject\";\nimport { getJSFileExtension } from \"../lib/getJSFileExtension\";\nimport { rejectIfNecessary } from \"../lib/rejectIfNecessary\";\n\nimport type { PluginOptions } from \"../types\";\n\ntype InstallDependenciesArgs = {\n\tinstallDependencies: ProjectInitHookData[\"installDependencies\"];\n};\n\nconst installDependencies = async ({\n\tinstallDependencies,\n}: InstallDependenciesArgs) => {\n\tawait installDependencies({\n\t\tdependencies: {\n\t\t\t\"@prismicio/client\": \"latest\",\n\t\t\t\"@prismicio/react\": \"latest\",\n\t\t\t\"@prismicio/next\": \"latest\",\n\t\t},\n\t});\n};\n\ntype CreatePrismicIOFileArgs = SliceMachineContext<PluginOptions>;\n\nconst createPrismicIOFile = async ({\n\thelpers,\n\toptions,\n}: CreatePrismicIOFileArgs) => {\n\tconst isTypeScriptProject = await checkIsTypeScriptProject({\n\t\thelpers,\n\t\toptions,\n\t});\n\tconst hasSrcDirectory = await checkHasSrcDirectory({ helpers });\n\tconst hasAppRouter = await checkHasAppRouter({ helpers });\n\n\tconst extension = await getJSFileExtension({ helpers, options });\n\tconst filename = path.join(\n\t\t...[hasSrcDirectory ? \"src\" : undefined, `prismicio.${extension}`].filter(\n\t\t\t(segment): segment is NonNullable<typeof segment> => Boolean(segment),\n\t\t),\n\t);\n\n\tif (await checkHasProjectFile({ filename, helpers })) {\n\t\treturn;\n\t}\n\n\tlet createClientContents: string;\n\n\tif (hasAppRouter) {\n\t\tif (isTypeScriptProject) {\n\t\t\tcreateClientContents = source`\n\t\t\t\t/**\n\t\t\t\t * Creates a Prismic client for the project's repository. The client is used to\n\t\t\t\t * query content from the Prismic API.\n\t\t\t\t *\n\t\t\t\t * @param config - Configuration for the Prismic client.\n\t\t\t\t */\n\t\t\t\texport const createClient = (config: prismicNext.CreateClientConfig = {}) => {\n\t\t\t\t\tconst client = prismic.createClient(repositoryName, {\n\t\t\t\t\t\troutes,\n\t\t\t\t\t\tfetchOptions:\n\t\t\t\t\t\t\tprocess.env.NODE_ENV === 'production'\n\t\t\t\t\t\t\t\t? { next: { tags: ['prismic'] }, cache: 'force-cache' }\n\t\t\t\t\t\t\t\t: { next: { revalidate: 5 } },\n\t\t\t\t\t\t...config,\n\t\t\t\t\t});\n\n\t\t\t\t\tprismicNext.enableAutoPreviews({\n\t\t\t\t\t\tclient,\n\t\t\t\t\t\tpreviewData: config.previewData,\n\t\t\t\t\t\treq: config.req,\n\t\t\t\t\t});\n\n\t\t\t\t\treturn client;\n\t\t\t\t};\n\t\t\t`;\n\t\t} else {\n\t\t\tcreateClientContents = source`\n\t\t\t\t/**\n\t\t\t\t * Creates a Prismic client for the project's repository. The client is used to\n\t\t\t\t * query content from the Prismic API.\n\t\t\t\t *\n\t\t\t\t * @param {prismicNext.CreateClientConfig} config - Configuration for the Prismic client.\n\t\t\t\t */\n\t\t\t\texport const createClient = (config = {}) => {\n\t\t\t\t\tconst client = prismic.createClient(repositoryName, {\n\t\t\t\t\t\troutes,\n\t\t\t\t\t\tfetchOptions:\n\t\t\t\t\t\t\tprocess.env.NODE_ENV === 'production'\n\t\t\t\t\t\t\t\t? { next: { tags: ['prismic'] }, cache: 'force-cache' }\n\t\t\t\t\t\t\t\t: { next: { revalidate: 5 } },\n\t\t\t\t\t\t...config,\n\t\t\t\t\t});\n\n\t\t\t\t\tprismicNext.enableAutoPreviews({\n\t\t\t\t\t\tclient,\n\t\t\t\t\t\tpreviewData: config.previewData,\n\t\t\t\t\t\treq: config.req,\n\t\t\t\t\t});\n\n\t\t\t\t\treturn client;\n\t\t\t\t};\n\t\t\t`;\n\t\t}\n\t} else {\n\t\tif (isTypeScriptProject) {\n\t\t\tcreateClientContents = source`\n\t\t\t\t/**\n\t\t\t\t * Creates a Prismic client for the project's repository. The client is used to\n\t\t\t\t * query content from the Prismic API.\n\t\t\t\t *\n\t\t\t\t * @param config - Configuration for the Prismic client.\n\t\t\t\t */\n\t\t\t\texport const createClient = (config: prismicNext.CreateClientConfig = {}) => {\n\t\t\t\t\tconst client = prismic.createClient(repositoryName, {\n\t\t\t\t\t\troutes,\n\t\t\t\t\t\t...config,\n\t\t\t\t\t});\n\n\t\t\t\t\tprismicNext.enableAutoPreviews({\n\t\t\t\t\t\tclient,\n\t\t\t\t\t\tpreviewData: config.previewData,\n\t\t\t\t\t\treq: config.req,\n\t\t\t\t\t});\n\n\t\t\t\t\treturn client;\n\t\t\t\t};\n\t\t\t`;\n\t\t} else {\n\t\t\tcreateClientContents = source`\n\t\t\t\t/**\n\t\t\t\t * Creates a Prismic client for the project's repository. The client is used to\n\t\t\t\t * query content from the Prismic API.\n\t\t\t\t *\n\t\t\t\t * @param {prismicNext.CreateClientConfig} config - Configuration for the Prismic client.\n\t\t\t\t */\n\t\t\t\texport const createClient = (config = {}) => {\n\t\t\t\t\tconst client = prismic.createClient(repositoryName, {\n\t\t\t\t\t\troutes,\n\t\t\t\t\t\t...config,\n\t\t\t\t\t});\n\n\t\t\t\t\tprismicNext.enableAutoPreviews({\n\t\t\t\t\t\tclient,\n\t\t\t\t\t\tpreviewData: config.previewData,\n\t\t\t\t\t\treq: config.req,\n\t\t\t\t\t});\n\n\t\t\t\t\treturn client;\n\t\t\t\t};\n\t\t\t`;\n\t\t}\n\t}\n\n\tlet contents: string;\n\n\tif (isTypeScriptProject) {\n\t\tcontents = source`\n\t\t\timport * as prismic from \"@prismicio/client\";\n\t\t\timport * as prismicNext from \"@prismicio/next\";\n\t\t\timport config from \"${hasSrcDirectory ? \"..\" : \".\"}/slicemachine.config.json\";\n\n\t\t\t/**\n\t\t\t * The project's Prismic repository name.\n\t\t\t */\n\t\t\texport const repositoryName = config.repositoryName;\n\n\t\t\t/**\n\t\t\t * A list of Route Resolver objects that define how a document's \\`url\\` field is resolved.\n\t\t\t *\n\t\t\t * {@link https://prismic.io/docs/route-resolver#route-resolver}\n\t\t\t */\n\t\t\t// TODO: Update the routes array to match your project's route structure.\n\t\t\tconst routes: prismic.ClientConfig[\"routes\"] = [\n\t\t\t\t// 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 = 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 hasSrcDirectory = await checkHasSrcDirectory({ helpers });\n\tconst hasAppRouter = await checkHasAppRouter({ helpers });\n\n\tconst extension = await getJSFileExtension({ helpers, options, jsx: true });\n\tconst filename = path.join(\n\t\t...[\n\t\t\thasSrcDirectory ? \"src\" : undefined,\n\t\t\thasAppRouter\n\t\t\t\t? `app/slice-simulator/page.${extension}`\n\t\t\t\t: `pages/slice-simulator.${extension}`,\n\t\t].filter((segment): segment is NonNullable<typeof segment> =>\n\t\t\tBoolean(segment),\n\t\t),\n\t);\n\n\tif (await checkHasProjectFile({ filename, helpers })) {\n\t\treturn;\n\t}\n\n\tconst contents = source`\n\t\t\"use client\"\n\n\t\timport { SliceSimulator } from \"@slicemachine/adapter-next/simulator\";\n\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\timport { components } from \"${hasAppRouter ? \"../..\" : \"..\"}/slices\";\n\n\t\texport default function SliceSimulatorPage() {\n\t\t\treturn (\n\t\t\t\t<SliceSimulator\n\t\t\t\t\tsliceZone={(props) => <SliceZone {...props} components={components} />}\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\t`;\n\n\tawait writeProjectFile({\n\t\tfilename,\n\t\tcontents,\n\t\tformat: options.format,\n\t\thelpers,\n\t});\n};\n\nconst createPreviewRoute = async ({\n\thelpers,\n\toptions,\n}: SliceMachineContext<PluginOptions>) => {\n\tconst hasSrcDirectory = await checkHasSrcDirectory({ helpers });\n\tconst hasAppRouter = await checkHasAppRouter({ helpers });\n\tconst isTypeScriptProject = await checkIsTypeScriptProject({\n\t\thelpers,\n\t\toptions,\n\t});\n\n\tconst extension = await getJSFileExtension({ helpers, options });\n\tconst filename = path.join(\n\t\t...[\n\t\t\thasSrcDirectory ? \"src\" : undefined,\n\t\t\thasAppRouter\n\t\t\t\t? `app/api/preview/route.${extension}`\n\t\t\t\t: `pages/api/preview.${extension}`,\n\t\t].filter((segment): segment is NonNullable<typeof segment> =>\n\t\t\tBoolean(segment),\n\t\t),\n\t);\n\n\tif (await checkHasProjectFile({ filename, helpers })) {\n\t\treturn;\n\t}\n\n\tlet contents: string;\n\n\tif (hasAppRouter) {\n\t\tif (isTypeScriptProject) {\n\t\t\tcontents = source`\n\t\t\t\timport { NextRequest } from \"next/server\";\n\t\t\t\timport { redirectToPreviewURL } from \"@prismicio/next\";\n\n\t\t\t\timport { createClient } from \"../../../prismicio\";\n\n\t\t\t\texport async function GET(request: NextRequest) {\n\t\t\t\t\tconst client = createClient();\n\n\t\t\t\t\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 hasSrcDirectory = await checkHasSrcDirectory({ helpers });\n\tconst hasAppRouter = await checkHasAppRouter({ helpers });\n\tconst isTypeScriptProject = await checkIsTypeScriptProject({\n\t\thelpers,\n\t\toptions,\n\t});\n\n\tconst extension = await getJSFileExtension({ helpers, options });\n\tconst filename = path.join(\n\t\t...[\n\t\t\thasSrcDirectory ? \"src\" : undefined,\n\t\t\thasAppRouter\n\t\t\t\t? `app/api/exit-preview/route.${extension}`\n\t\t\t\t: `pages/api/exit-preview.${extension}`,\n\t\t].filter((segment): segment is NonNullable<typeof segment> =>\n\t\t\tBoolean(segment),\n\t\t),\n\t);\n\n\tif (await checkHasProjectFile({ filename, helpers })) {\n\t\treturn;\n\t}\n\n\tlet contents: string;\n\n\tif (hasAppRouter) {\n\t\tcontents = source`\n\t\t\timport { exitPreview } from \"@prismicio/next\";\n\n\t\t\texport 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 checkHasSrcDirectory({ helpers });\n\tconst project = await helpers.getProject();\n\n\t// Add Slice Simulator URL.\n\tproject.config.localSliceSimulatorURL ||=\n\t\t\"http://localhost:3000/slice-simulator\";\n\n\t// Nest the default Slice Library in the src directory if it exists and\n\t// is empty.\n\tif (\n\t\thasSrcDirectory &&\n\t\tproject.config.libraries &&\n\t\tJSON.stringify(project.config.libraries) === JSON.stringify([\"./slices\"])\n\t) {\n\t\tconst sliceLibrary = await actions.readSliceLibrary({\n\t\t\tlibraryID: project.config.libraries[0],\n\t\t});\n\n\t\tif (sliceLibrary.sliceIDs.length < 1) {\n\t\t\tproject.config.libraries = [\"./src/slices\"];\n\t\t}\n\t}\n\n\tawait helpers.updateSliceMachineConfig(project.config, {\n\t\tformat: options.format,\n\t});\n};\n\nconst createRevalidateRoute = async ({\n\thelpers,\n\toptions,\n}: SliceMachineContext<PluginOptions>) => {\n\tconst hasAppRouter = await checkHasAppRouter({ helpers });\n\n\tif (!hasAppRouter) {\n\t\treturn;\n\t}\n\n\tconst hasSrcDirectory = await checkHasSrcDirectory({ helpers });\n\n\tconst extension = await getJSFileExtension({ helpers, options });\n\tconst filename = path.join(\n\t\t...[\n\t\t\thasSrcDirectory ? \"src\" : undefined,\n\t\t\t`app/api/revalidate/route.${extension}`,\n\t\t].filter((segment): segment is NonNullable<typeof segment> =>\n\t\t\tBoolean(segment),\n\t\t),\n\t);\n\n\tif (await checkHasProjectFile({ filename, helpers })) {\n\t\treturn;\n\t}\n\n\tconst contents = source`\n\t\timport { NextResponse } from \"next/server\";\n\t\timport { revalidateTag } from \"next/cache\";\n\n\t\texport async function POST() {\n\t\t\trevalidateTag(\"prismic\");\n\n\t\t\treturn NextResponse.json({ revalidated: true, now: Date.now() });\n\t\t}\n\t`;\n\n\tawait writeProjectFile({\n\t\tfilename,\n\t\tcontents,\n\t\tformat: options.format,\n\t\thelpers,\n\t});\n};\n\nexport const projectInit: ProjectInitHook<PluginOptions> = async (\n\t{ installDependencies: _installDependencies },\n\tcontext,\n) => {\n\trejectIfNecessary(\n\t\tawait Promise.allSettled([\n\t\t\tinstallDependencies({ installDependencies: _installDependencies }),\n\t\t\tmodifySliceMachineConfig(context),\n\t\t\tcreatePrismicIOFile(context),\n\t\t\tcreateSliceSimulatorPage(context),\n\t\t\tcreatePreviewRoute(context),\n\t\t\tcreateExitPreviewRoute(context),\n\t\t\tcreateRevalidateRoute(context),\n\t\t]),\n\t);\n};\n"],"names":["installDependencies","checkIsTypeScriptProject","checkHasSrcDirectory","checkHasAppRouter","getJSFileExtension","path","checkHasProjectFile","source","writeProjectFile","rejectIfNecessary"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;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,MAAMC,kDAAyB;AAAA,IAC1D;AAAA,IACA;AAAA,EAAA,CACA;AACD,QAAM,kBAAkB,MAAMC,qBAAAA,qBAAqB,EAAE,QAAS,CAAA;AAC9D,QAAM,eAAe,MAAMC,kBAAAA,kBAAkB,EAAE,QAAS,CAAA;AAExD,QAAM,YAAY,MAAMC,mBAAA,mBAAmB,EAAE,SAAS,QAAS,CAAA;AAC/D,QAAM,WAAWC,gBAAK,KACrB,GAAG,CAAC,kBAAkB,QAAQ,QAAW,aAAa,WAAW,EAAE,OAClE,CAAC,YAAoD,QAAQ,OAAO,CAAC,CACrE;AAGF,MAAI,MAAMC,GAAAA,oBAAoB,EAAE,UAAU,QAAS,CAAA,GAAG;AACrD;AAAA,EACA;AAEG,MAAA;AAEJ,MAAI,cAAc;AACjB,QAAI,qBAAqB;AACD,6BAAAC,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,IAAA,OA0BjB;AACiB,6BAAAA,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,IA0BvB;AAAA,EAAA,OACK;AACN,QAAI,qBAAqB;AACD,6BAAAA,WAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,IAAA,OAsBjB;AACiB,6BAAAA,WAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,IAsBvB;AAAA,EACD;AAEG,MAAA;AAEJ,MAAI,qBAAqB;AACb,eAAAA,WAAAA;AAAAA;AAAAA;AAAAA,yBAGY,kBAAkB,OAAO;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,KAyB7C;AAAA;AAAA,EAAA,OAEG;AACK,eAAAA,WAAAA;AAAAA;AAAAA;AAAAA,yBAGY,kBAAkB,OAAO;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;AAAA,KA2B7C;AAAA;AAAA,EAEH;AAED,QAAMC,oBAAiB;AAAA,IACtB;AAAA,IACA;AAAA,IACA,QAAQ,QAAQ;AAAA,IAChB;AAAA,EAAA,CACA;AACF;AAIA,MAAM,2BAA2B,OAAO,EACvC,SACA,cACkC;AAClC,QAAM,kBAAkB,MAAMN,qBAAAA,qBAAqB,EAAE,QAAS,CAAA;AAC9D,QAAM,eAAe,MAAMC,kBAAAA,kBAAkB,EAAE,QAAS,CAAA;AAElD,QAAA,YAAY,MAAMC,mBAAAA,mBAAmB,EAAE,SAAS,SAAS,KAAK,MAAM;AACpE,QAAA,WAAWC,gBAAK,KACrB,GAAG;AAAA,IACF,kBAAkB,QAAQ;AAAA,IAC1B,eACG,4BAA4B,cAC5B,yBAAyB;AAAA,EAAA,EAC3B,OAAO,CAAC,YACT,QAAQ,OAAO,CAAC,CAChB;AAGF,MAAI,MAAMC,GAAAA,oBAAoB,EAAE,UAAU,QAAS,CAAA,GAAG;AACrD;AAAA,EACA;AAED,QAAM,WAAWC,WAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,gCAMc,eAAe,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWxD,QAAMC,oBAAiB;AAAA,IACtB;AAAA,IACA;AAAA,IACA,QAAQ,QAAQ;AAAA,IAChB;AAAA,EAAA,CACA;AACF;AAEA,MAAM,qBAAqB,OAAO,EACjC,SACA,cACwC;AACxC,QAAM,kBAAkB,MAAMN,qBAAAA,qBAAqB,EAAE,QAAS,CAAA;AAC9D,QAAM,eAAe,MAAMC,kBAAAA,kBAAkB,EAAE,QAAS,CAAA;AAClD,QAAA,sBAAsB,MAAMF,kDAAyB;AAAA,IAC1D;AAAA,IACA;AAAA,EAAA,CACA;AAED,QAAM,YAAY,MAAMG,mBAAA,mBAAmB,EAAE,SAAS,QAAS,CAAA;AACzD,QAAA,WAAWC,gBAAK,KACrB,GAAG;AAAA,IACF,kBAAkB,QAAQ;AAAA,IAC1B,eACG,yBAAyB,cACzB,qBAAqB;AAAA,EAAA,EACvB,OAAO,CAAC,YACT,QAAQ,OAAO,CAAC,CAChB;AAGF,MAAI,MAAMC,GAAAA,oBAAoB,EAAE,UAAU,QAAS,CAAA,GAAG;AACrD;AAAA,EACA;AAEG,MAAA;AAEJ,MAAI,cAAc;AACjB,QAAI,qBAAqB;AACb,iBAAAC,WAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,IAAA,OAYL;AACK,iBAAAA,WAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,IAWX;AAAA,EAAA,OACK;AACN,QAAI,qBAAqB;AACb,iBAAAA,WAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,IAAA,OAcL;AACK,iBAAAA,WAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,IAaX;AAAA,EACD;AAED,QAAMC,oBAAiB;AAAA,IACtB;AAAA,IACA;AAAA,IACA,QAAQ,QAAQ;AAAA,IAChB;AAAA,EAAA,CACA;AACF;AAEA,MAAM,yBAAyB,OAAO,EACrC,SACA,cACwC;AACxC,QAAM,kBAAkB,MAAMN,qBAAAA,qBAAqB,EAAE,QAAS,CAAA;AAC9D,QAAM,eAAe,MAAMC,kBAAAA,kBAAkB,EAAE,QAAS,CAAA;AAClD,QAAA,sBAAsB,MAAMF,kDAAyB;AAAA,IAC1D;AAAA,IACA;AAAA,EAAA,CACA;AAED,QAAM,YAAY,MAAMG,mBAAA,mBAAmB,EAAE,SAAS,QAAS,CAAA;AACzD,QAAA,WAAWC,gBAAK,KACrB,GAAG;AAAA,IACF,kBAAkB,QAAQ;AAAA,IAC1B,eACG,8BAA8B,cAC9B,0BAA0B;AAAA,EAAA,EAC5B,OAAO,CAAC,YACT,QAAQ,OAAO,CAAC,CAChB;AAGF,MAAI,MAAMC,GAAAA,oBAAoB,EAAE,UAAU,QAAS,CAAA,GAAG;AACrD;AAAA,EACA;AAEG,MAAA;AAEJ,MAAI,cAAc;AACN,eAAAC,WAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,EAAA,OAOL;AACN,QAAI,qBAAqB;AACb,iBAAAA,WAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,IAAA,OAQL;AACK,iBAAAA,WAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,IAOX;AAAA,EACD;AAED,QAAMC,oBAAiB;AAAA,IACtB;AAAA,IACA;AAAA,IACA,QAAQ,QAAQ;AAAA,IAChB;AAAA,EAAA,CACA;AACF;AAEA,MAAM,2BAA2B,OAAO,EACvC,SACA,SACA,cACwC;;AACxC,QAAM,kBAAkB,MAAMN,qBAAAA,qBAAqB,EAAE,QAAS,CAAA;AACxD,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,IAC1C;AAAA,EACD;AAEK,QAAA,QAAQ,yBAAyB,QAAQ,QAAQ;AAAA,IACtD,QAAQ,QAAQ;AAAA,EAAA,CAChB;AACF;AAEA,MAAM,wBAAwB,OAAO,EACpC,SACA,cACwC;AACxC,QAAM,eAAe,MAAMC,kBAAAA,kBAAkB,EAAE,QAAS,CAAA;AAExD,MAAI,CAAC,cAAc;AAClB;AAAA,EACA;AAED,QAAM,kBAAkB,MAAMD,qBAAAA,qBAAqB,EAAE,QAAS,CAAA;AAE9D,QAAM,YAAY,MAAME,mBAAA,mBAAmB,EAAE,SAAS,QAAS,CAAA;AACzD,QAAA,WAAWC,gBAAK,KACrB,GAAG;AAAA,IACF,kBAAkB,QAAQ;AAAA,IAC1B,4BAA4B;AAAA,EAAA,EAC3B,OAAO,CAAC,YACT,QAAQ,OAAO,CAAC,CAChB;AAGF,MAAI,MAAMC,GAAAA,oBAAoB,EAAE,UAAU,QAAS,CAAA,GAAG;AACrD;AAAA,EACA;AAED,QAAM,WAAWC,WAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAWjB,QAAMC,oBAAiB;AAAA,IACtB;AAAA,IACA;AAAA,IACA,QAAQ,QAAQ;AAAA,IAChB;AAAA,EAAA,CACA;AACF;AAEO,MAAM,cAA8C,OAC1D,EAAE,qBAAqB,qBAAA,GACvB,YACG;AAEFC,sCAAA,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;;"}
|
|
@@ -152,14 +152,15 @@ const createPrismicIOFile = async ({ helpers, options }) => {
|
|
|
152
152
|
*/
|
|
153
153
|
// TODO: Update the routes array to match your project's route structure.
|
|
154
154
|
const routes: prismic.ClientConfig["routes"] = [
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
155
|
+
// Examples:
|
|
156
|
+
// {
|
|
157
|
+
// type: "homepage",
|
|
158
|
+
// path: "/",
|
|
159
|
+
// },
|
|
160
|
+
// {
|
|
161
|
+
// type: "page",
|
|
162
|
+
// path: "/:uid",
|
|
163
|
+
// },
|
|
163
164
|
];
|
|
164
165
|
|
|
165
166
|
${createClientContents}
|
|
@@ -184,14 +185,15 @@ const createPrismicIOFile = async ({ helpers, options }) => {
|
|
|
184
185
|
*/
|
|
185
186
|
// TODO: Update the routes array to match your project's route structure.
|
|
186
187
|
const routes = [
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
188
|
+
// Examples:
|
|
189
|
+
// {
|
|
190
|
+
// type: "homepage",
|
|
191
|
+
// path: "/",
|
|
192
|
+
// },
|
|
193
|
+
// {
|
|
194
|
+
// type: "page",
|
|
195
|
+
// path: "/:uid",
|
|
196
|
+
// },
|
|
195
197
|
];
|
|
196
198
|
|
|
197
199
|
${createClientContents}
|
|
@@ -265,7 +267,7 @@ const createPreviewRoute = async ({ helpers, options }) => {
|
|
|
265
267
|
export async function GET(request: NextRequest) {
|
|
266
268
|
const client = createClient();
|
|
267
269
|
|
|
268
|
-
await redirectToPreviewURL({ client, request });
|
|
270
|
+
return await redirectToPreviewURL({ client, request });
|
|
269
271
|
}
|
|
270
272
|
`;
|
|
271
273
|
} else {
|
|
@@ -277,7 +279,7 @@ const createPreviewRoute = async ({ helpers, options }) => {
|
|
|
277
279
|
export async function GET(request) {
|
|
278
280
|
const client = createClient();
|
|
279
281
|
|
|
280
|
-
await redirectToPreviewURL({ client, request });
|
|
282
|
+
return await redirectToPreviewURL({ client, request });
|
|
281
283
|
}
|
|
282
284
|
`;
|
|
283
285
|
}
|
|
@@ -289,12 +291,12 @@ const createPreviewRoute = async ({ helpers, options }) => {
|
|
|
289
291
|
|
|
290
292
|
import { createClient } from "../../prismicio";
|
|
291
293
|
|
|
292
|
-
export default async (req: NextApiRequest, res: NextApiResponse)
|
|
294
|
+
export default async function handler(req: NextApiRequest, res: NextApiResponse) {
|
|
293
295
|
const client = createClient({ req });
|
|
294
296
|
|
|
295
297
|
await setPreviewData({ req, res });
|
|
296
298
|
|
|
297
|
-
await redirectToPreviewURL({ req, res, client });
|
|
299
|
+
return await redirectToPreviewURL({ req, res, client });
|
|
298
300
|
};
|
|
299
301
|
`;
|
|
300
302
|
} else {
|
|
@@ -303,12 +305,12 @@ const createPreviewRoute = async ({ helpers, options }) => {
|
|
|
303
305
|
|
|
304
306
|
import { createClient } from "../../prismicio";
|
|
305
307
|
|
|
306
|
-
export default async (req, res)
|
|
308
|
+
export default async function handler(req, res) {
|
|
307
309
|
const client = createClient({ req });
|
|
308
310
|
|
|
309
311
|
await setPreviewData({ req, res });
|
|
310
312
|
|
|
311
|
-
await redirectToPreviewURL({ req, res, client });
|
|
313
|
+
return await redirectToPreviewURL({ req, res, client });
|
|
312
314
|
};
|
|
313
315
|
`;
|
|
314
316
|
}
|
|
@@ -340,8 +342,8 @@ const createExitPreviewRoute = async ({ helpers, options }) => {
|
|
|
340
342
|
contents = source`
|
|
341
343
|
import { exitPreview } from "@prismicio/next";
|
|
342
344
|
|
|
343
|
-
export
|
|
344
|
-
return
|
|
345
|
+
export function GET() {
|
|
346
|
+
return exitPreview();
|
|
345
347
|
}
|
|
346
348
|
`;
|
|
347
349
|
} else {
|
|
@@ -350,16 +352,16 @@ const createExitPreviewRoute = async ({ helpers, options }) => {
|
|
|
350
352
|
import { NextApiRequest, NextApiResponse } from "next";
|
|
351
353
|
import { exitPreview } from "@prismicio/next";
|
|
352
354
|
|
|
353
|
-
export
|
|
354
|
-
return
|
|
355
|
+
export default function handler(req: NextApiRequest, res: NextApiResponse) {
|
|
356
|
+
return exitPreview({ req, res });
|
|
355
357
|
}
|
|
356
358
|
`;
|
|
357
359
|
} else {
|
|
358
360
|
contents = source`
|
|
359
361
|
import { exitPreview } from "@prismicio/next";
|
|
360
362
|
|
|
361
|
-
export
|
|
362
|
-
return
|
|
363
|
+
export default function handler(req, res) {
|
|
364
|
+
return exitPreview({ req, res });
|
|
363
365
|
}
|
|
364
366
|
`;
|
|
365
367
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-init.js","sources":["../../../src/hooks/project-init.ts"],"sourcesContent":["import * as path from \"node:path\";\nimport type {\n\tProjectInitHook,\n\tProjectInitHookData,\n\tSliceMachineContext,\n} from \"@slicemachine/plugin-kit\";\nimport {\n\tcheckHasProjectFile,\n\twriteProjectFile,\n} from \"@slicemachine/plugin-kit/fs\";\nimport { source } from \"common-tags\";\n\nimport { checkHasAppRouter } from \"../lib/checkHasAppRouter\";\nimport { checkHasSrcDirectory } from \"../lib/checkHasSrcDirectory\";\nimport { checkIsTypeScriptProject } from \"../lib/checkIsTypeScriptProject\";\nimport { getJSFileExtension } from \"../lib/getJSFileExtension\";\nimport { rejectIfNecessary } from \"../lib/rejectIfNecessary\";\n\nimport type { PluginOptions } from \"../types\";\n\ntype InstallDependenciesArgs = {\n\tinstallDependencies: ProjectInitHookData[\"installDependencies\"];\n};\n\nconst installDependencies = async ({\n\tinstallDependencies,\n}: InstallDependenciesArgs) => {\n\tawait installDependencies({\n\t\tdependencies: {\n\t\t\t\"@prismicio/client\": \"latest\",\n\t\t\t\"@prismicio/react\": \"latest\",\n\t\t\t\"@prismicio/next\": \"latest\",\n\t\t},\n\t});\n};\n\ntype CreatePrismicIOFileArgs = SliceMachineContext<PluginOptions>;\n\nconst createPrismicIOFile = async ({\n\thelpers,\n\toptions,\n}: CreatePrismicIOFileArgs) => {\n\tconst isTypeScriptProject = await checkIsTypeScriptProject({\n\t\thelpers,\n\t\toptions,\n\t});\n\tconst hasSrcDirectory = await checkHasSrcDirectory({ helpers });\n\tconst hasAppRouter = await checkHasAppRouter({ helpers });\n\n\tconst extension = await getJSFileExtension({ helpers, options });\n\tconst filename = path.join(\n\t\t...[hasSrcDirectory ? \"src\" : undefined, `prismicio.${extension}`].filter(\n\t\t\t(segment): segment is NonNullable<typeof segment> => Boolean(segment),\n\t\t),\n\t);\n\n\tif (await checkHasProjectFile({ filename, helpers })) {\n\t\treturn;\n\t}\n\n\tlet createClientContents: string;\n\n\tif (hasAppRouter) {\n\t\tif (isTypeScriptProject) {\n\t\t\tcreateClientContents = source`\n\t\t\t\t/**\n\t\t\t\t * Creates a Prismic client for the project's repository. The client is used to\n\t\t\t\t * query content from the Prismic API.\n\t\t\t\t *\n\t\t\t\t * @param config - Configuration for the Prismic client.\n\t\t\t\t */\n\t\t\t\texport const createClient = (config: prismicNext.CreateClientConfig = {}) => {\n\t\t\t\t\tconst client = prismic.createClient(repositoryName, {\n\t\t\t\t\t\troutes,\n\t\t\t\t\t\tfetchOptions:\n\t\t\t\t\t\t\tprocess.env.NODE_ENV === 'production'\n\t\t\t\t\t\t\t\t? { next: { tags: ['prismic'] }, cache: 'force-cache' }\n\t\t\t\t\t\t\t\t: { next: { revalidate: 5 } },\n\t\t\t\t\t\t...config,\n\t\t\t\t\t});\n\n\t\t\t\t\tprismicNext.enableAutoPreviews({\n\t\t\t\t\t\tclient,\n\t\t\t\t\t\tpreviewData: config.previewData,\n\t\t\t\t\t\treq: config.req,\n\t\t\t\t\t});\n\n\t\t\t\t\treturn client;\n\t\t\t\t};\n\t\t\t`;\n\t\t} else {\n\t\t\tcreateClientContents = source`\n\t\t\t\t/**\n\t\t\t\t * Creates a Prismic client for the project's repository. The client is used to\n\t\t\t\t * query content from the Prismic API.\n\t\t\t\t *\n\t\t\t\t * @param {prismicNext.CreateClientConfig} config - Configuration for the Prismic client.\n\t\t\t\t */\n\t\t\t\texport const createClient = (config = {}) => {\n\t\t\t\t\tconst client = prismic.createClient(repositoryName, {\n\t\t\t\t\t\troutes,\n\t\t\t\t\t\tfetchOptions:\n\t\t\t\t\t\t\tprocess.env.NODE_ENV === 'production'\n\t\t\t\t\t\t\t\t? { next: { tags: ['prismic'] }, cache: 'force-cache' }\n\t\t\t\t\t\t\t\t: { next: { revalidate: 5 } },\n\t\t\t\t\t\t...config,\n\t\t\t\t\t});\n\n\t\t\t\t\tprismicNext.enableAutoPreviews({\n\t\t\t\t\t\tclient,\n\t\t\t\t\t\tpreviewData: config.previewData,\n\t\t\t\t\t\treq: config.req,\n\t\t\t\t\t});\n\n\t\t\t\t\treturn client;\n\t\t\t\t};\n\t\t\t`;\n\t\t}\n\t} else {\n\t\tif (isTypeScriptProject) {\n\t\t\tcreateClientContents = source`\n\t\t\t\t/**\n\t\t\t\t * Creates a Prismic client for the project's repository. The client is used to\n\t\t\t\t * query content from the Prismic API.\n\t\t\t\t *\n\t\t\t\t * @param config - Configuration for the Prismic client.\n\t\t\t\t */\n\t\t\t\texport const createClient = (config: prismicNext.CreateClientConfig = {}) => {\n\t\t\t\t\tconst client = prismic.createClient(repositoryName, {\n\t\t\t\t\t\troutes,\n\t\t\t\t\t\t...config,\n\t\t\t\t\t});\n\n\t\t\t\t\tprismicNext.enableAutoPreviews({\n\t\t\t\t\t\tclient,\n\t\t\t\t\t\tpreviewData: config.previewData,\n\t\t\t\t\t\treq: config.req,\n\t\t\t\t\t});\n\n\t\t\t\t\treturn client;\n\t\t\t\t};\n\t\t\t`;\n\t\t} else {\n\t\t\tcreateClientContents = source`\n\t\t\t\t/**\n\t\t\t\t * Creates a Prismic client for the project's repository. The client is used to\n\t\t\t\t * query content from the Prismic API.\n\t\t\t\t *\n\t\t\t\t * @param {prismicNext.CreateClientConfig} config - Configuration for the Prismic client.\n\t\t\t\t */\n\t\t\t\texport const createClient = (config = {}) => {\n\t\t\t\t\tconst client = prismic.createClient(repositoryName, {\n\t\t\t\t\t\troutes,\n\t\t\t\t\t\t...config,\n\t\t\t\t\t});\n\n\t\t\t\t\tprismicNext.enableAutoPreviews({\n\t\t\t\t\t\tclient,\n\t\t\t\t\t\tpreviewData: config.previewData,\n\t\t\t\t\t\treq: config.req,\n\t\t\t\t\t});\n\n\t\t\t\t\treturn client;\n\t\t\t\t};\n\t\t\t`;\n\t\t}\n\t}\n\n\tlet contents: string;\n\n\tif (isTypeScriptProject) {\n\t\tcontents = source`\n\t\t\timport * as prismic from \"@prismicio/client\";\n\t\t\timport * as prismicNext from \"@prismicio/next\";\n\t\t\timport config from \"${hasSrcDirectory ? \"..\" : \".\"}/slicemachine.config.json\";\n\n\t\t\t/**\n\t\t\t * The project's Prismic repository name.\n\t\t\t */\n\t\t\texport const repositoryName = config.repositoryName;\n\n\t\t\t/**\n\t\t\t * A list of Route Resolver objects that define how a document's \\`url\\` field is resolved.\n\t\t\t *\n\t\t\t * {@link https://prismic.io/docs/route-resolver#route-resolver}\n\t\t\t */\n\t\t\t// TODO: Update the routes array to match your project's route structure.\n\t\t\tconst routes: prismic.ClientConfig[\"routes\"] = [\n\t\t\t\t{\n\t\t\t\t\ttype: \"homepage\",\n\t\t\t\t\tpath: \"/\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttype: \"page\",\n\t\t\t\t\tpath: \"/:uid\",\n\t\t\t\t},\n\t\t\t];\n\n\t\t\t${createClientContents}\n\t\t`;\n\t} else {\n\t\tcontents = source`\n\t\t\timport * as prismic from \"@prismicio/client\";\n\t\t\timport * as prismicNext from \"@prismicio/next\";\n\t\t\timport config from \"${hasSrcDirectory ? \"..\" : \".\"}/slicemachine.config.json\";\n\n\t\t\t/**\n\t\t\t * The project's Prismic repository name.\n\t\t\t */\n\t\t\texport const repositoryName = config.repositoryName;\n\n\t\t\t/**\n\t\t\t * A list of Route Resolver objects that define how a document's \\`url\\` field is resolved.\n\t\t\t *\n\t\t\t * {@link https://prismic.io/docs/route-resolver#route-resolver}\n\t\t\t *\n\t\t\t * @type {prismic.ClientConfig[\"routes\"]}\n\t\t\t */\n\t\t\t// TODO: Update the routes array to match your project's route structure.\n\t\t\tconst routes = [\n\t\t\t\t{\n\t\t\t\t\ttype: \"homepage\",\n\t\t\t\t\tpath: \"/\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttype: \"page\",\n\t\t\t\t\tpath: \"/:uid\",\n\t\t\t\t},\n\t\t\t];\n\n\t\t\t${createClientContents}\n\t\t`;\n\t}\n\n\tawait writeProjectFile({\n\t\tfilename,\n\t\tcontents,\n\t\tformat: options.format,\n\t\thelpers,\n\t});\n};\n\ntype CreateSliceSimulatorPageArgs = SliceMachineContext<PluginOptions>;\n\nconst createSliceSimulatorPage = async ({\n\thelpers,\n\toptions,\n}: CreateSliceSimulatorPageArgs) => {\n\tconst hasSrcDirectory = await checkHasSrcDirectory({ helpers });\n\tconst hasAppRouter = await checkHasAppRouter({ helpers });\n\n\tconst extension = await getJSFileExtension({ helpers, options, jsx: true });\n\tconst filename = path.join(\n\t\t...[\n\t\t\thasSrcDirectory ? \"src\" : undefined,\n\t\t\thasAppRouter\n\t\t\t\t? `app/slice-simulator/page.${extension}`\n\t\t\t\t: `pages/slice-simulator.${extension}`,\n\t\t].filter((segment): segment is NonNullable<typeof segment> =>\n\t\t\tBoolean(segment),\n\t\t),\n\t);\n\n\tif (await checkHasProjectFile({ filename, helpers })) {\n\t\treturn;\n\t}\n\n\tconst contents = source`\n\t\t\"use client\"\n\n\t\timport { SliceSimulator } from \"@slicemachine/adapter-next/simulator\";\n\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\timport { components } from \"${hasAppRouter ? \"../..\" : \"..\"}/slices\";\n\n\t\texport default function SliceSimulatorPage() {\n\t\t\treturn (\n\t\t\t\t<SliceSimulator\n\t\t\t\t\tsliceZone={(props) => <SliceZone {...props} components={components} />}\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\t`;\n\n\tawait writeProjectFile({\n\t\tfilename,\n\t\tcontents,\n\t\tformat: options.format,\n\t\thelpers,\n\t});\n};\n\nconst createPreviewRoute = async ({\n\thelpers,\n\toptions,\n}: SliceMachineContext<PluginOptions>) => {\n\tconst hasSrcDirectory = await checkHasSrcDirectory({ helpers });\n\tconst hasAppRouter = await checkHasAppRouter({ helpers });\n\tconst isTypeScriptProject = await checkIsTypeScriptProject({\n\t\thelpers,\n\t\toptions,\n\t});\n\n\tconst extension = await getJSFileExtension({ helpers, options });\n\tconst filename = path.join(\n\t\t...[\n\t\t\thasSrcDirectory ? \"src\" : undefined,\n\t\t\thasAppRouter\n\t\t\t\t? `app/api/preview/route.${extension}`\n\t\t\t\t: `pages/api/preview.${extension}`,\n\t\t].filter((segment): segment is NonNullable<typeof segment> =>\n\t\t\tBoolean(segment),\n\t\t),\n\t);\n\n\tif (await checkHasProjectFile({ filename, helpers })) {\n\t\treturn;\n\t}\n\n\tlet contents: string;\n\n\tif (hasAppRouter) {\n\t\tif (isTypeScriptProject) {\n\t\t\tcontents = source`\n\t\t\t\timport { NextRequest } from \"next/server\";\n\t\t\t\timport { redirectToPreviewURL } from \"@prismicio/next\";\n\n\t\t\t\timport { createClient } from \"../../../prismicio\";\n\n\t\t\t\texport async function GET(request: NextRequest) {\n\t\t\t\t\tconst client = createClient();\n\n\t\t\t\t\tawait redirectToPreviewURL({ client, request });\n\t\t\t\t}\n\t\t\t`;\n\t\t} else {\n\t\t\tcontents = source`\n\t\t\t\timport { redirectToPreviewURL } from \"@prismicio/next\";\n\n\t\t\t\timport { createClient } from \"../../../prismicio\";\n\n\t\t\t\texport async function GET(request) {\n\t\t\t\t\tconst client = createClient();\n\n\t\t\t\t\tawait redirectToPreviewURL({ client, request });\n\t\t\t\t}\n\t\t\t`;\n\t\t}\n\t} else {\n\t\tif (isTypeScriptProject) {\n\t\t\tcontents = source`\n\t\t\t\timport { NextApiRequest, NextApiResponse } from \"next\";\n\t\t\t\timport { setPreviewData, redirectToPreviewURL } from \"@prismicio/next\";\n\n\t\t\t\timport { createClient } from \"../../prismicio\";\n\n\t\t\t\texport default async (req: NextApiRequest, res: NextApiResponse) => {\n\t\t\t\t\tconst client = createClient({ req });\n\n\t\t\t\t\tawait setPreviewData({ req, res });\n\n\t\t\t\t\tawait redirectToPreviewURL({ req, res, client });\n\t\t\t\t};\n\t\t\t`;\n\t\t} else {\n\t\t\tcontents = source`\n\t\t\t\timport { setPreviewData, redirectToPreviewURL } from \"@prismicio/next\";\n\n\t\t\t\timport { createClient } from \"../../prismicio\";\n\n\t\t\t\texport default async (req, res) => {\n\t\t\t\t\tconst client = createClient({ req });\n\n\t\t\t\t\tawait setPreviewData({ req, res });\n\n\t\t\t\t\tawait redirectToPreviewURL({ req, res, client });\n\t\t\t\t};\n\t\t\t`;\n\t\t}\n\t}\n\n\tawait writeProjectFile({\n\t\tfilename,\n\t\tcontents,\n\t\tformat: options.format,\n\t\thelpers,\n\t});\n};\n\nconst createExitPreviewRoute = async ({\n\thelpers,\n\toptions,\n}: SliceMachineContext<PluginOptions>) => {\n\tconst hasSrcDirectory = await checkHasSrcDirectory({ helpers });\n\tconst hasAppRouter = await checkHasAppRouter({ helpers });\n\tconst isTypeScriptProject = await checkIsTypeScriptProject({\n\t\thelpers,\n\t\toptions,\n\t});\n\n\tconst extension = await getJSFileExtension({ helpers, options });\n\tconst filename = path.join(\n\t\t...[\n\t\t\thasSrcDirectory ? \"src\" : undefined,\n\t\t\thasAppRouter\n\t\t\t\t? `app/api/exit-preview/route.${extension}`\n\t\t\t\t: `pages/api/exit-preview.${extension}`,\n\t\t].filter((segment): segment is NonNullable<typeof segment> =>\n\t\t\tBoolean(segment),\n\t\t),\n\t);\n\n\tif (await checkHasProjectFile({ filename, helpers })) {\n\t\treturn;\n\t}\n\n\tlet contents: string;\n\n\tif (hasAppRouter) {\n\t\tcontents = source`\n\t\t\timport { exitPreview } from \"@prismicio/next\";\n\n\t\t\texport async function GET() {\n\t\t\t\treturn await exitPreview();\n\t\t\t}\n\t\t`;\n\t} else {\n\t\tif (isTypeScriptProject) {\n\t\t\tcontents = source`\n\t\t\t\timport { NextApiRequest, NextApiResponse } from \"next\";\n\t\t\t\timport { exitPreview } from \"@prismicio/next\";\n\n\t\t\t\texport async function handler(req: NextApiRequest, res: NextApiResponse) {\n\t\t\t\t\treturn await exitPreview({ req, res });\n\t\t\t\t}\n\t\t\t`;\n\t\t} else {\n\t\t\tcontents = source`\n\t\t\t\timport { exitPreview } from \"@prismicio/next\";\n\n\t\t\t\texport async function handler(req, res) {\n\t\t\t\t\treturn await exitPreview({ req, res });\n\t\t\t\t}\n\t\t\t`;\n\t\t}\n\t}\n\n\tawait writeProjectFile({\n\t\tfilename,\n\t\tcontents,\n\t\tformat: options.format,\n\t\thelpers,\n\t});\n};\n\nconst modifySliceMachineConfig = async ({\n\thelpers,\n\toptions,\n\tactions,\n}: SliceMachineContext<PluginOptions>) => {\n\tconst hasSrcDirectory = await checkHasSrcDirectory({ helpers });\n\tconst project = await helpers.getProject();\n\n\t// Add Slice Simulator URL.\n\tproject.config.localSliceSimulatorURL ||=\n\t\t\"http://localhost:3000/slice-simulator\";\n\n\t// Nest the default Slice Library in the src directory if it exists and\n\t// is empty.\n\tif (\n\t\thasSrcDirectory &&\n\t\tproject.config.libraries &&\n\t\tJSON.stringify(project.config.libraries) === JSON.stringify([\"./slices\"])\n\t) {\n\t\tconst sliceLibrary = await actions.readSliceLibrary({\n\t\t\tlibraryID: project.config.libraries[0],\n\t\t});\n\n\t\tif (sliceLibrary.sliceIDs.length < 1) {\n\t\t\tproject.config.libraries = [\"./src/slices\"];\n\t\t}\n\t}\n\n\tawait helpers.updateSliceMachineConfig(project.config, {\n\t\tformat: options.format,\n\t});\n};\n\nconst createRevalidateRoute = async ({\n\thelpers,\n\toptions,\n}: SliceMachineContext<PluginOptions>) => {\n\tconst hasAppRouter = await checkHasAppRouter({ helpers });\n\n\tif (!hasAppRouter) {\n\t\treturn;\n\t}\n\n\tconst hasSrcDirectory = await checkHasSrcDirectory({ helpers });\n\n\tconst extension = await getJSFileExtension({ helpers, options });\n\tconst filename = path.join(\n\t\t...[\n\t\t\thasSrcDirectory ? \"src\" : undefined,\n\t\t\t`app/api/revalidate/route.${extension}`,\n\t\t].filter((segment): segment is NonNullable<typeof segment> =>\n\t\t\tBoolean(segment),\n\t\t),\n\t);\n\n\tif (await checkHasProjectFile({ filename, helpers })) {\n\t\treturn;\n\t}\n\n\tconst contents = source`\n\t\timport { NextResponse } from \"next/server\";\n\t\timport { revalidateTag } from \"next/cache\";\n\n\t\texport async function POST() {\n\t\t\trevalidateTag(\"prismic\");\n\n\t\t\treturn NextResponse.json({ revalidated: true, now: Date.now() });\n\t\t}\n\t`;\n\n\tawait writeProjectFile({\n\t\tfilename,\n\t\tcontents,\n\t\tformat: options.format,\n\t\thelpers,\n\t});\n};\n\nexport const projectInit: ProjectInitHook<PluginOptions> = async (\n\t{ installDependencies: _installDependencies },\n\tcontext,\n) => {\n\trejectIfNecessary(\n\t\tawait Promise.allSettled([\n\t\t\tinstallDependencies({ installDependencies: _installDependencies }),\n\t\t\tmodifySliceMachineConfig(context),\n\t\t\tcreatePrismicIOFile(context),\n\t\t\tcreateSliceSimulatorPage(context),\n\t\t\tcreatePreviewRoute(context),\n\t\t\tcreateExitPreviewRoute(context),\n\t\t\tcreateRevalidateRoute(context),\n\t\t]),\n\t);\n};\n"],"names":["installDependencies"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"project-init.js","sources":["../../../src/hooks/project-init.ts"],"sourcesContent":["import * as path from \"node:path\";\nimport type {\n\tProjectInitHook,\n\tProjectInitHookData,\n\tSliceMachineContext,\n} from \"@slicemachine/plugin-kit\";\nimport {\n\tcheckHasProjectFile,\n\twriteProjectFile,\n} from \"@slicemachine/plugin-kit/fs\";\nimport { source } from \"common-tags\";\n\nimport { checkHasAppRouter } from \"../lib/checkHasAppRouter\";\nimport { checkHasSrcDirectory } from \"../lib/checkHasSrcDirectory\";\nimport { checkIsTypeScriptProject } from \"../lib/checkIsTypeScriptProject\";\nimport { getJSFileExtension } from \"../lib/getJSFileExtension\";\nimport { rejectIfNecessary } from \"../lib/rejectIfNecessary\";\n\nimport type { PluginOptions } from \"../types\";\n\ntype InstallDependenciesArgs = {\n\tinstallDependencies: ProjectInitHookData[\"installDependencies\"];\n};\n\nconst installDependencies = async ({\n\tinstallDependencies,\n}: InstallDependenciesArgs) => {\n\tawait installDependencies({\n\t\tdependencies: {\n\t\t\t\"@prismicio/client\": \"latest\",\n\t\t\t\"@prismicio/react\": \"latest\",\n\t\t\t\"@prismicio/next\": \"latest\",\n\t\t},\n\t});\n};\n\ntype CreatePrismicIOFileArgs = SliceMachineContext<PluginOptions>;\n\nconst createPrismicIOFile = async ({\n\thelpers,\n\toptions,\n}: CreatePrismicIOFileArgs) => {\n\tconst isTypeScriptProject = await checkIsTypeScriptProject({\n\t\thelpers,\n\t\toptions,\n\t});\n\tconst hasSrcDirectory = await checkHasSrcDirectory({ helpers });\n\tconst hasAppRouter = await checkHasAppRouter({ helpers });\n\n\tconst extension = await getJSFileExtension({ helpers, options });\n\tconst filename = path.join(\n\t\t...[hasSrcDirectory ? \"src\" : undefined, `prismicio.${extension}`].filter(\n\t\t\t(segment): segment is NonNullable<typeof segment> => Boolean(segment),\n\t\t),\n\t);\n\n\tif (await checkHasProjectFile({ filename, helpers })) {\n\t\treturn;\n\t}\n\n\tlet createClientContents: string;\n\n\tif (hasAppRouter) {\n\t\tif (isTypeScriptProject) {\n\t\t\tcreateClientContents = source`\n\t\t\t\t/**\n\t\t\t\t * Creates a Prismic client for the project's repository. The client is used to\n\t\t\t\t * query content from the Prismic API.\n\t\t\t\t *\n\t\t\t\t * @param config - Configuration for the Prismic client.\n\t\t\t\t */\n\t\t\t\texport const createClient = (config: prismicNext.CreateClientConfig = {}) => {\n\t\t\t\t\tconst client = prismic.createClient(repositoryName, {\n\t\t\t\t\t\troutes,\n\t\t\t\t\t\tfetchOptions:\n\t\t\t\t\t\t\tprocess.env.NODE_ENV === 'production'\n\t\t\t\t\t\t\t\t? { next: { tags: ['prismic'] }, cache: 'force-cache' }\n\t\t\t\t\t\t\t\t: { next: { revalidate: 5 } },\n\t\t\t\t\t\t...config,\n\t\t\t\t\t});\n\n\t\t\t\t\tprismicNext.enableAutoPreviews({\n\t\t\t\t\t\tclient,\n\t\t\t\t\t\tpreviewData: config.previewData,\n\t\t\t\t\t\treq: config.req,\n\t\t\t\t\t});\n\n\t\t\t\t\treturn client;\n\t\t\t\t};\n\t\t\t`;\n\t\t} else {\n\t\t\tcreateClientContents = source`\n\t\t\t\t/**\n\t\t\t\t * Creates a Prismic client for the project's repository. The client is used to\n\t\t\t\t * query content from the Prismic API.\n\t\t\t\t *\n\t\t\t\t * @param {prismicNext.CreateClientConfig} config - Configuration for the Prismic client.\n\t\t\t\t */\n\t\t\t\texport const createClient = (config = {}) => {\n\t\t\t\t\tconst client = prismic.createClient(repositoryName, {\n\t\t\t\t\t\troutes,\n\t\t\t\t\t\tfetchOptions:\n\t\t\t\t\t\t\tprocess.env.NODE_ENV === 'production'\n\t\t\t\t\t\t\t\t? { next: { tags: ['prismic'] }, cache: 'force-cache' }\n\t\t\t\t\t\t\t\t: { next: { revalidate: 5 } },\n\t\t\t\t\t\t...config,\n\t\t\t\t\t});\n\n\t\t\t\t\tprismicNext.enableAutoPreviews({\n\t\t\t\t\t\tclient,\n\t\t\t\t\t\tpreviewData: config.previewData,\n\t\t\t\t\t\treq: config.req,\n\t\t\t\t\t});\n\n\t\t\t\t\treturn client;\n\t\t\t\t};\n\t\t\t`;\n\t\t}\n\t} else {\n\t\tif (isTypeScriptProject) {\n\t\t\tcreateClientContents = source`\n\t\t\t\t/**\n\t\t\t\t * Creates a Prismic client for the project's repository. The client is used to\n\t\t\t\t * query content from the Prismic API.\n\t\t\t\t *\n\t\t\t\t * @param config - Configuration for the Prismic client.\n\t\t\t\t */\n\t\t\t\texport const createClient = (config: prismicNext.CreateClientConfig = {}) => {\n\t\t\t\t\tconst client = prismic.createClient(repositoryName, {\n\t\t\t\t\t\troutes,\n\t\t\t\t\t\t...config,\n\t\t\t\t\t});\n\n\t\t\t\t\tprismicNext.enableAutoPreviews({\n\t\t\t\t\t\tclient,\n\t\t\t\t\t\tpreviewData: config.previewData,\n\t\t\t\t\t\treq: config.req,\n\t\t\t\t\t});\n\n\t\t\t\t\treturn client;\n\t\t\t\t};\n\t\t\t`;\n\t\t} else {\n\t\t\tcreateClientContents = source`\n\t\t\t\t/**\n\t\t\t\t * Creates a Prismic client for the project's repository. The client is used to\n\t\t\t\t * query content from the Prismic API.\n\t\t\t\t *\n\t\t\t\t * @param {prismicNext.CreateClientConfig} config - Configuration for the Prismic client.\n\t\t\t\t */\n\t\t\t\texport const createClient = (config = {}) => {\n\t\t\t\t\tconst client = prismic.createClient(repositoryName, {\n\t\t\t\t\t\troutes,\n\t\t\t\t\t\t...config,\n\t\t\t\t\t});\n\n\t\t\t\t\tprismicNext.enableAutoPreviews({\n\t\t\t\t\t\tclient,\n\t\t\t\t\t\tpreviewData: config.previewData,\n\t\t\t\t\t\treq: config.req,\n\t\t\t\t\t});\n\n\t\t\t\t\treturn client;\n\t\t\t\t};\n\t\t\t`;\n\t\t}\n\t}\n\n\tlet contents: string;\n\n\tif (isTypeScriptProject) {\n\t\tcontents = source`\n\t\t\timport * as prismic from \"@prismicio/client\";\n\t\t\timport * as prismicNext from \"@prismicio/next\";\n\t\t\timport config from \"${hasSrcDirectory ? \"..\" : \".\"}/slicemachine.config.json\";\n\n\t\t\t/**\n\t\t\t * The project's Prismic repository name.\n\t\t\t */\n\t\t\texport const repositoryName = config.repositoryName;\n\n\t\t\t/**\n\t\t\t * A list of Route Resolver objects that define how a document's \\`url\\` field is resolved.\n\t\t\t *\n\t\t\t * {@link https://prismic.io/docs/route-resolver#route-resolver}\n\t\t\t */\n\t\t\t// TODO: Update the routes array to match your project's route structure.\n\t\t\tconst routes: prismic.ClientConfig[\"routes\"] = [\n\t\t\t\t// 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 = 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 hasSrcDirectory = await checkHasSrcDirectory({ helpers });\n\tconst hasAppRouter = await checkHasAppRouter({ helpers });\n\n\tconst extension = await getJSFileExtension({ helpers, options, jsx: true });\n\tconst filename = path.join(\n\t\t...[\n\t\t\thasSrcDirectory ? \"src\" : undefined,\n\t\t\thasAppRouter\n\t\t\t\t? `app/slice-simulator/page.${extension}`\n\t\t\t\t: `pages/slice-simulator.${extension}`,\n\t\t].filter((segment): segment is NonNullable<typeof segment> =>\n\t\t\tBoolean(segment),\n\t\t),\n\t);\n\n\tif (await checkHasProjectFile({ filename, helpers })) {\n\t\treturn;\n\t}\n\n\tconst contents = source`\n\t\t\"use client\"\n\n\t\timport { SliceSimulator } from \"@slicemachine/adapter-next/simulator\";\n\t\timport { SliceZone } from \"@prismicio/react\";\n\n\t\timport { components } from \"${hasAppRouter ? \"../..\" : \"..\"}/slices\";\n\n\t\texport default function SliceSimulatorPage() {\n\t\t\treturn (\n\t\t\t\t<SliceSimulator\n\t\t\t\t\tsliceZone={(props) => <SliceZone {...props} components={components} />}\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\t`;\n\n\tawait writeProjectFile({\n\t\tfilename,\n\t\tcontents,\n\t\tformat: options.format,\n\t\thelpers,\n\t});\n};\n\nconst createPreviewRoute = async ({\n\thelpers,\n\toptions,\n}: SliceMachineContext<PluginOptions>) => {\n\tconst hasSrcDirectory = await checkHasSrcDirectory({ helpers });\n\tconst hasAppRouter = await checkHasAppRouter({ helpers });\n\tconst isTypeScriptProject = await checkIsTypeScriptProject({\n\t\thelpers,\n\t\toptions,\n\t});\n\n\tconst extension = await getJSFileExtension({ helpers, options });\n\tconst filename = path.join(\n\t\t...[\n\t\t\thasSrcDirectory ? \"src\" : undefined,\n\t\t\thasAppRouter\n\t\t\t\t? `app/api/preview/route.${extension}`\n\t\t\t\t: `pages/api/preview.${extension}`,\n\t\t].filter((segment): segment is NonNullable<typeof segment> =>\n\t\t\tBoolean(segment),\n\t\t),\n\t);\n\n\tif (await checkHasProjectFile({ filename, helpers })) {\n\t\treturn;\n\t}\n\n\tlet contents: string;\n\n\tif (hasAppRouter) {\n\t\tif (isTypeScriptProject) {\n\t\t\tcontents = source`\n\t\t\t\timport { NextRequest } from \"next/server\";\n\t\t\t\timport { redirectToPreviewURL } from \"@prismicio/next\";\n\n\t\t\t\timport { createClient } from \"../../../prismicio\";\n\n\t\t\t\texport async function GET(request: NextRequest) {\n\t\t\t\t\tconst client = createClient();\n\n\t\t\t\t\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 hasSrcDirectory = await checkHasSrcDirectory({ helpers });\n\tconst hasAppRouter = await checkHasAppRouter({ helpers });\n\tconst isTypeScriptProject = await checkIsTypeScriptProject({\n\t\thelpers,\n\t\toptions,\n\t});\n\n\tconst extension = await getJSFileExtension({ helpers, options });\n\tconst filename = path.join(\n\t\t...[\n\t\t\thasSrcDirectory ? \"src\" : undefined,\n\t\t\thasAppRouter\n\t\t\t\t? `app/api/exit-preview/route.${extension}`\n\t\t\t\t: `pages/api/exit-preview.${extension}`,\n\t\t].filter((segment): segment is NonNullable<typeof segment> =>\n\t\t\tBoolean(segment),\n\t\t),\n\t);\n\n\tif (await checkHasProjectFile({ filename, helpers })) {\n\t\treturn;\n\t}\n\n\tlet contents: string;\n\n\tif (hasAppRouter) {\n\t\tcontents = source`\n\t\t\timport { exitPreview } from \"@prismicio/next\";\n\n\t\t\texport 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 checkHasSrcDirectory({ helpers });\n\tconst project = await helpers.getProject();\n\n\t// Add Slice Simulator URL.\n\tproject.config.localSliceSimulatorURL ||=\n\t\t\"http://localhost:3000/slice-simulator\";\n\n\t// Nest the default Slice Library in the src directory if it exists and\n\t// is empty.\n\tif (\n\t\thasSrcDirectory &&\n\t\tproject.config.libraries &&\n\t\tJSON.stringify(project.config.libraries) === JSON.stringify([\"./slices\"])\n\t) {\n\t\tconst sliceLibrary = await actions.readSliceLibrary({\n\t\t\tlibraryID: project.config.libraries[0],\n\t\t});\n\n\t\tif (sliceLibrary.sliceIDs.length < 1) {\n\t\t\tproject.config.libraries = [\"./src/slices\"];\n\t\t}\n\t}\n\n\tawait helpers.updateSliceMachineConfig(project.config, {\n\t\tformat: options.format,\n\t});\n};\n\nconst createRevalidateRoute = async ({\n\thelpers,\n\toptions,\n}: SliceMachineContext<PluginOptions>) => {\n\tconst hasAppRouter = await checkHasAppRouter({ helpers });\n\n\tif (!hasAppRouter) {\n\t\treturn;\n\t}\n\n\tconst hasSrcDirectory = await checkHasSrcDirectory({ helpers });\n\n\tconst extension = await getJSFileExtension({ helpers, options });\n\tconst filename = path.join(\n\t\t...[\n\t\t\thasSrcDirectory ? \"src\" : undefined,\n\t\t\t`app/api/revalidate/route.${extension}`,\n\t\t].filter((segment): segment is NonNullable<typeof segment> =>\n\t\t\tBoolean(segment),\n\t\t),\n\t);\n\n\tif (await checkHasProjectFile({ filename, helpers })) {\n\t\treturn;\n\t}\n\n\tconst contents = source`\n\t\timport { NextResponse } from \"next/server\";\n\t\timport { revalidateTag } from \"next/cache\";\n\n\t\texport async function POST() {\n\t\t\trevalidateTag(\"prismic\");\n\n\t\t\treturn NextResponse.json({ revalidated: true, now: Date.now() });\n\t\t}\n\t`;\n\n\tawait writeProjectFile({\n\t\tfilename,\n\t\tcontents,\n\t\tformat: options.format,\n\t\thelpers,\n\t});\n};\n\nexport const projectInit: ProjectInitHook<PluginOptions> = async (\n\t{ installDependencies: _installDependencies },\n\tcontext,\n) => {\n\trejectIfNecessary(\n\t\tawait Promise.allSettled([\n\t\t\tinstallDependencies({ installDependencies: _installDependencies }),\n\t\t\tmodifySliceMachineConfig(context),\n\t\t\tcreatePrismicIOFile(context),\n\t\t\tcreateSliceSimulatorPage(context),\n\t\t\tcreatePreviewRoute(context),\n\t\t\tcreateExitPreviewRoute(context),\n\t\t\tcreateRevalidateRoute(context),\n\t\t]),\n\t);\n};\n"],"names":["installDependencies"],"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.18-dev-next-release.
|
|
3
|
+
"version": "0.3.18-dev-next-release.2",
|
|
4
4
|
"description": "Slice Machine adapter for Next.js.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"typescript",
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
"dependencies": {
|
|
62
62
|
"@prismicio/simulator": "^0.1.4",
|
|
63
63
|
"@prismicio/types-internal": "^2.0.0",
|
|
64
|
-
"@slicemachine/plugin-kit": "^0.4.18-dev-next-release.
|
|
64
|
+
"@slicemachine/plugin-kit": "^0.4.18-dev-next-release.2",
|
|
65
65
|
"common-tags": "^1.8.2",
|
|
66
66
|
"fp-ts": "^2.13.1",
|
|
67
67
|
"io-ts": "^2.2.20",
|
|
@@ -104,5 +104,5 @@
|
|
|
104
104
|
"engines": {
|
|
105
105
|
"node": ">=14.15.0"
|
|
106
106
|
},
|
|
107
|
-
"gitHead": "
|
|
107
|
+
"gitHead": "c6be820dae935dd1472219d352533c36701a6e0d"
|
|
108
108
|
}
|
|
@@ -186,14 +186,15 @@ const createPrismicIOFile = async ({
|
|
|
186
186
|
*/
|
|
187
187
|
// TODO: Update the routes array to match your project's route structure.
|
|
188
188
|
const routes: prismic.ClientConfig["routes"] = [
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
189
|
+
// Examples:
|
|
190
|
+
// {
|
|
191
|
+
// type: "homepage",
|
|
192
|
+
// path: "/",
|
|
193
|
+
// },
|
|
194
|
+
// {
|
|
195
|
+
// type: "page",
|
|
196
|
+
// path: "/:uid",
|
|
197
|
+
// },
|
|
197
198
|
];
|
|
198
199
|
|
|
199
200
|
${createClientContents}
|
|
@@ -218,14 +219,15 @@ const createPrismicIOFile = async ({
|
|
|
218
219
|
*/
|
|
219
220
|
// TODO: Update the routes array to match your project's route structure.
|
|
220
221
|
const routes = [
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
222
|
+
// Examples:
|
|
223
|
+
// {
|
|
224
|
+
// type: "homepage",
|
|
225
|
+
// path: "/",
|
|
226
|
+
// },
|
|
227
|
+
// {
|
|
228
|
+
// type: "page",
|
|
229
|
+
// path: "/:uid",
|
|
230
|
+
// },
|
|
229
231
|
];
|
|
230
232
|
|
|
231
233
|
${createClientContents}
|
|
@@ -330,7 +332,7 @@ const createPreviewRoute = async ({
|
|
|
330
332
|
export async function GET(request: NextRequest) {
|
|
331
333
|
const client = createClient();
|
|
332
334
|
|
|
333
|
-
await redirectToPreviewURL({ client, request });
|
|
335
|
+
return await redirectToPreviewURL({ client, request });
|
|
334
336
|
}
|
|
335
337
|
`;
|
|
336
338
|
} else {
|
|
@@ -342,7 +344,7 @@ const createPreviewRoute = async ({
|
|
|
342
344
|
export async function GET(request) {
|
|
343
345
|
const client = createClient();
|
|
344
346
|
|
|
345
|
-
await redirectToPreviewURL({ client, request });
|
|
347
|
+
return await redirectToPreviewURL({ client, request });
|
|
346
348
|
}
|
|
347
349
|
`;
|
|
348
350
|
}
|
|
@@ -354,12 +356,12 @@ const createPreviewRoute = async ({
|
|
|
354
356
|
|
|
355
357
|
import { createClient } from "../../prismicio";
|
|
356
358
|
|
|
357
|
-
export default async (req: NextApiRequest, res: NextApiResponse)
|
|
359
|
+
export default async function handler(req: NextApiRequest, res: NextApiResponse) {
|
|
358
360
|
const client = createClient({ req });
|
|
359
361
|
|
|
360
362
|
await setPreviewData({ req, res });
|
|
361
363
|
|
|
362
|
-
await redirectToPreviewURL({ req, res, client });
|
|
364
|
+
return await redirectToPreviewURL({ req, res, client });
|
|
363
365
|
};
|
|
364
366
|
`;
|
|
365
367
|
} else {
|
|
@@ -368,12 +370,12 @@ const createPreviewRoute = async ({
|
|
|
368
370
|
|
|
369
371
|
import { createClient } from "../../prismicio";
|
|
370
372
|
|
|
371
|
-
export default async (req, res)
|
|
373
|
+
export default async function handler(req, res) {
|
|
372
374
|
const client = createClient({ req });
|
|
373
375
|
|
|
374
376
|
await setPreviewData({ req, res });
|
|
375
377
|
|
|
376
|
-
await redirectToPreviewURL({ req, res, client });
|
|
378
|
+
return await redirectToPreviewURL({ req, res, client });
|
|
377
379
|
};
|
|
378
380
|
`;
|
|
379
381
|
}
|
|
@@ -420,8 +422,8 @@ const createExitPreviewRoute = async ({
|
|
|
420
422
|
contents = source`
|
|
421
423
|
import { exitPreview } from "@prismicio/next";
|
|
422
424
|
|
|
423
|
-
export
|
|
424
|
-
return
|
|
425
|
+
export function GET() {
|
|
426
|
+
return exitPreview();
|
|
425
427
|
}
|
|
426
428
|
`;
|
|
427
429
|
} else {
|
|
@@ -430,16 +432,16 @@ const createExitPreviewRoute = async ({
|
|
|
430
432
|
import { NextApiRequest, NextApiResponse } from "next";
|
|
431
433
|
import { exitPreview } from "@prismicio/next";
|
|
432
434
|
|
|
433
|
-
export
|
|
434
|
-
return
|
|
435
|
+
export default function handler(req: NextApiRequest, res: NextApiResponse) {
|
|
436
|
+
return exitPreview({ req, res });
|
|
435
437
|
}
|
|
436
438
|
`;
|
|
437
439
|
} else {
|
|
438
440
|
contents = source`
|
|
439
441
|
import { exitPreview } from "@prismicio/next";
|
|
440
442
|
|
|
441
|
-
export
|
|
442
|
-
return
|
|
443
|
+
export default function handler(req, res) {
|
|
444
|
+
return exitPreview({ req, res });
|
|
443
445
|
}
|
|
444
446
|
`;
|
|
445
447
|
}
|