@slicemachine/adapter-next 0.3.42-alpha.aa-support-nuxt-4.2 → 0.3.42-alpha.aa-contributing.4
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/project-init.cjs +42 -29
- package/dist/hooks/project-init.cjs.map +1 -1
- package/dist/hooks/project-init.js +25 -29
- package/dist/hooks/project-init.js.map +1 -1
- package/dist/lib/checkHasAppRouter.cjs +21 -6
- package/dist/lib/checkHasAppRouter.cjs.map +1 -1
- package/dist/lib/checkHasAppRouter.js +4 -6
- package/dist/lib/checkHasAppRouter.js.map +1 -1
- package/dist/lib/checkHasSrcDirectory.cjs +11 -0
- package/dist/lib/checkHasSrcDirectory.cjs.map +1 -0
- package/dist/lib/checkHasSrcDirectory.d.ts +5 -0
- package/dist/lib/checkHasSrcDirectory.js +11 -0
- package/dist/lib/checkHasSrcDirectory.js.map +1 -0
- package/package.json +2 -2
- package/src/hooks/project-init.ts +52 -35
- package/src/lib/checkHasAppRouter.ts +4 -7
- package/src/lib/checkHasSrcDirectory.ts +18 -0
- package/dist/lib/buildSrcPath.cjs +0 -30
- package/dist/lib/buildSrcPath.cjs.map +0 -1
- package/dist/lib/buildSrcPath.d.ts +0 -5
- package/dist/lib/buildSrcPath.js +0 -13
- package/dist/lib/buildSrcPath.js.map +0 -1
- package/src/lib/buildSrcPath.ts +0 -16
|
@@ -1,13 +1,31 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const path = require("node:path");
|
|
3
4
|
const fs = require("@slicemachine/plugin-kit/fs");
|
|
4
5
|
const commonTags = require("common-tags");
|
|
5
|
-
const buildSrcPath = require("../lib/buildSrcPath.cjs");
|
|
6
6
|
const checkHasAppRouter = require("../lib/checkHasAppRouter.cjs");
|
|
7
|
+
const checkHasSrcDirectory = require("../lib/checkHasSrcDirectory.cjs");
|
|
7
8
|
const checkIsTypeScriptProject = require("../lib/checkIsTypeScriptProject.cjs");
|
|
8
9
|
const getJSFileExtension = require("../lib/getJSFileExtension.cjs");
|
|
9
10
|
const rejectIfNecessary = require("../lib/rejectIfNecessary.cjs");
|
|
10
11
|
const constants = require("../constants.cjs");
|
|
12
|
+
function _interopNamespaceDefault(e) {
|
|
13
|
+
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
|
14
|
+
if (e) {
|
|
15
|
+
for (const k in e) {
|
|
16
|
+
if (k !== "default") {
|
|
17
|
+
const d = Object.getOwnPropertyDescriptor(e, k);
|
|
18
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: () => e[k]
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
n.default = e;
|
|
26
|
+
return Object.freeze(n);
|
|
27
|
+
}
|
|
28
|
+
const path__namespace = /* @__PURE__ */ _interopNamespaceDefault(path);
|
|
11
29
|
const installDependencies = async ({ installDependencies: installDependencies2 }) => {
|
|
12
30
|
await installDependencies2({
|
|
13
31
|
dependencies: {
|
|
@@ -22,16 +40,10 @@ const createPrismicIOFile = async ({ helpers, options }) => {
|
|
|
22
40
|
helpers,
|
|
23
41
|
options
|
|
24
42
|
});
|
|
25
|
-
const hasSrcDirectory = await
|
|
26
|
-
filename: "src",
|
|
27
|
-
helpers
|
|
28
|
-
});
|
|
43
|
+
const hasSrcDirectory = await checkHasSrcDirectory.checkHasSrcDirectory({ helpers });
|
|
29
44
|
const hasAppRouter = await checkHasAppRouter.checkHasAppRouter({ helpers });
|
|
30
45
|
const extension = await getJSFileExtension.getJSFileExtension({ helpers, options });
|
|
31
|
-
const filename =
|
|
32
|
-
filename: `prismicio.${extension}`,
|
|
33
|
-
helpers
|
|
34
|
-
});
|
|
46
|
+
const filename = path__namespace.join(...[hasSrcDirectory ? "src" : void 0, `prismicio.${extension}`].filter((segment) => Boolean(segment)));
|
|
35
47
|
if (await fs.checkHasProjectFile({ filename, helpers })) {
|
|
36
48
|
return;
|
|
37
49
|
}
|
|
@@ -221,12 +233,13 @@ const createSliceSimulatorPage = async ({ helpers, options }) => {
|
|
|
221
233
|
helpers,
|
|
222
234
|
options
|
|
223
235
|
});
|
|
236
|
+
const hasSrcDirectory = await checkHasSrcDirectory.checkHasSrcDirectory({ helpers });
|
|
224
237
|
const hasAppRouter = await checkHasAppRouter.checkHasAppRouter({ helpers });
|
|
225
238
|
const extension = await getJSFileExtension.getJSFileExtension({ helpers, options, jsx: true });
|
|
226
|
-
const filename =
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
239
|
+
const filename = path__namespace.join(...[
|
|
240
|
+
hasSrcDirectory ? "src" : void 0,
|
|
241
|
+
hasAppRouter ? `app/slice-simulator/page.${extension}` : `pages/slice-simulator.${extension}`
|
|
242
|
+
].filter((segment) => Boolean(segment)));
|
|
230
243
|
if (await fs.checkHasProjectFile({ filename, helpers })) {
|
|
231
244
|
return;
|
|
232
245
|
}
|
|
@@ -300,16 +313,17 @@ const createSliceSimulatorPage = async ({ helpers, options }) => {
|
|
|
300
313
|
});
|
|
301
314
|
};
|
|
302
315
|
const createPreviewRoute = async ({ helpers, options }) => {
|
|
316
|
+
const hasSrcDirectory = await checkHasSrcDirectory.checkHasSrcDirectory({ helpers });
|
|
303
317
|
const hasAppRouter = await checkHasAppRouter.checkHasAppRouter({ helpers });
|
|
304
318
|
const isTypeScriptProject = await checkIsTypeScriptProject.checkIsTypeScriptProject({
|
|
305
319
|
helpers,
|
|
306
320
|
options
|
|
307
321
|
});
|
|
308
322
|
const extension = await getJSFileExtension.getJSFileExtension({ helpers, options });
|
|
309
|
-
const filename =
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
323
|
+
const filename = path__namespace.join(...[
|
|
324
|
+
hasSrcDirectory ? "src" : void 0,
|
|
325
|
+
hasAppRouter ? `app/api/preview/route.${extension}` : `pages/api/preview.${extension}`
|
|
326
|
+
].filter((segment) => Boolean(segment)));
|
|
313
327
|
if (await fs.checkHasProjectFile({ filename, helpers })) {
|
|
314
328
|
return;
|
|
315
329
|
}
|
|
@@ -381,16 +395,17 @@ const createPreviewRoute = async ({ helpers, options }) => {
|
|
|
381
395
|
});
|
|
382
396
|
};
|
|
383
397
|
const createExitPreviewRoute = async ({ helpers, options }) => {
|
|
398
|
+
const hasSrcDirectory = await checkHasSrcDirectory.checkHasSrcDirectory({ helpers });
|
|
384
399
|
const hasAppRouter = await checkHasAppRouter.checkHasAppRouter({ helpers });
|
|
385
400
|
const isTypeScriptProject = await checkIsTypeScriptProject.checkIsTypeScriptProject({
|
|
386
401
|
helpers,
|
|
387
402
|
options
|
|
388
403
|
});
|
|
389
404
|
const extension = await getJSFileExtension.getJSFileExtension({ helpers, options });
|
|
390
|
-
const filename =
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
405
|
+
const filename = path__namespace.join(...[
|
|
406
|
+
hasSrcDirectory ? "src" : void 0,
|
|
407
|
+
hasAppRouter ? `app/api/exit-preview/route.${extension}` : `pages/api/exit-preview.${extension}`
|
|
408
|
+
].filter((segment) => Boolean(segment)));
|
|
394
409
|
if (await fs.checkHasProjectFile({ filename, helpers })) {
|
|
395
410
|
return;
|
|
396
411
|
}
|
|
@@ -432,10 +447,7 @@ const createExitPreviewRoute = async ({ helpers, options }) => {
|
|
|
432
447
|
};
|
|
433
448
|
const modifySliceMachineConfig = async ({ helpers, options, actions }) => {
|
|
434
449
|
var _a;
|
|
435
|
-
const hasSrcDirectory = await
|
|
436
|
-
filename: "src",
|
|
437
|
-
helpers
|
|
438
|
-
});
|
|
450
|
+
const hasSrcDirectory = await checkHasSrcDirectory.checkHasSrcDirectory({ helpers });
|
|
439
451
|
const project = await helpers.getProject();
|
|
440
452
|
(_a = project.config).localSliceSimulatorURL || (_a.localSliceSimulatorURL = "http://localhost:3000/slice-simulator");
|
|
441
453
|
if (hasSrcDirectory && project.config.libraries && JSON.stringify(project.config.libraries) === JSON.stringify(["./slices"])) {
|
|
@@ -455,11 +467,12 @@ const createRevalidateRoute = async ({ helpers, options }) => {
|
|
|
455
467
|
if (!hasAppRouter) {
|
|
456
468
|
return;
|
|
457
469
|
}
|
|
470
|
+
const hasSrcDirectory = await checkHasSrcDirectory.checkHasSrcDirectory({ helpers });
|
|
458
471
|
const extension = await getJSFileExtension.getJSFileExtension({ helpers, options });
|
|
459
|
-
const filename =
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
472
|
+
const filename = path__namespace.join(...[
|
|
473
|
+
hasSrcDirectory ? "src" : void 0,
|
|
474
|
+
`app/api/revalidate/route.${extension}`
|
|
475
|
+
].filter((segment) => Boolean(segment)));
|
|
463
476
|
if (await fs.checkHasProjectFile({ filename, helpers })) {
|
|
464
477
|
return;
|
|
465
478
|
}
|
|
@@ -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 * 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\";\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 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 =\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 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\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 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","PRISMIC_ENVIRONMENT_ENVIRONMENT_VARIABLE_NAME","writeProjectFile","rejectIfNecessary"],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import * as path from "node:path";
|
|
1
2
|
import { checkHasProjectFile, writeProjectFile } from "@slicemachine/plugin-kit/fs";
|
|
2
3
|
import { source } from "common-tags";
|
|
3
|
-
import { buildSrcPath } from "../lib/buildSrcPath.js";
|
|
4
4
|
import { checkHasAppRouter } from "../lib/checkHasAppRouter.js";
|
|
5
|
+
import { checkHasSrcDirectory } from "../lib/checkHasSrcDirectory.js";
|
|
5
6
|
import { checkIsTypeScriptProject } from "../lib/checkIsTypeScriptProject.js";
|
|
6
7
|
import { getJSFileExtension } from "../lib/getJSFileExtension.js";
|
|
7
8
|
import { rejectIfNecessary } from "../lib/rejectIfNecessary.js";
|
|
@@ -20,16 +21,10 @@ const createPrismicIOFile = async ({ helpers, options }) => {
|
|
|
20
21
|
helpers,
|
|
21
22
|
options
|
|
22
23
|
});
|
|
23
|
-
const hasSrcDirectory = await
|
|
24
|
-
filename: "src",
|
|
25
|
-
helpers
|
|
26
|
-
});
|
|
24
|
+
const hasSrcDirectory = await checkHasSrcDirectory({ helpers });
|
|
27
25
|
const hasAppRouter = await checkHasAppRouter({ helpers });
|
|
28
26
|
const extension = await getJSFileExtension({ helpers, options });
|
|
29
|
-
const filename =
|
|
30
|
-
filename: `prismicio.${extension}`,
|
|
31
|
-
helpers
|
|
32
|
-
});
|
|
27
|
+
const filename = path.join(...[hasSrcDirectory ? "src" : void 0, `prismicio.${extension}`].filter((segment) => Boolean(segment)));
|
|
33
28
|
if (await checkHasProjectFile({ filename, helpers })) {
|
|
34
29
|
return;
|
|
35
30
|
}
|
|
@@ -219,12 +214,13 @@ const createSliceSimulatorPage = async ({ helpers, options }) => {
|
|
|
219
214
|
helpers,
|
|
220
215
|
options
|
|
221
216
|
});
|
|
217
|
+
const hasSrcDirectory = await checkHasSrcDirectory({ helpers });
|
|
222
218
|
const hasAppRouter = await checkHasAppRouter({ helpers });
|
|
223
219
|
const extension = await getJSFileExtension({ helpers, options, jsx: true });
|
|
224
|
-
const filename =
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
220
|
+
const filename = path.join(...[
|
|
221
|
+
hasSrcDirectory ? "src" : void 0,
|
|
222
|
+
hasAppRouter ? `app/slice-simulator/page.${extension}` : `pages/slice-simulator.${extension}`
|
|
223
|
+
].filter((segment) => Boolean(segment)));
|
|
228
224
|
if (await checkHasProjectFile({ filename, helpers })) {
|
|
229
225
|
return;
|
|
230
226
|
}
|
|
@@ -298,16 +294,17 @@ const createSliceSimulatorPage = async ({ helpers, options }) => {
|
|
|
298
294
|
});
|
|
299
295
|
};
|
|
300
296
|
const createPreviewRoute = async ({ helpers, options }) => {
|
|
297
|
+
const hasSrcDirectory = await checkHasSrcDirectory({ helpers });
|
|
301
298
|
const hasAppRouter = await checkHasAppRouter({ helpers });
|
|
302
299
|
const isTypeScriptProject = await checkIsTypeScriptProject({
|
|
303
300
|
helpers,
|
|
304
301
|
options
|
|
305
302
|
});
|
|
306
303
|
const extension = await getJSFileExtension({ helpers, options });
|
|
307
|
-
const filename =
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
304
|
+
const filename = path.join(...[
|
|
305
|
+
hasSrcDirectory ? "src" : void 0,
|
|
306
|
+
hasAppRouter ? `app/api/preview/route.${extension}` : `pages/api/preview.${extension}`
|
|
307
|
+
].filter((segment) => Boolean(segment)));
|
|
311
308
|
if (await checkHasProjectFile({ filename, helpers })) {
|
|
312
309
|
return;
|
|
313
310
|
}
|
|
@@ -379,16 +376,17 @@ const createPreviewRoute = async ({ helpers, options }) => {
|
|
|
379
376
|
});
|
|
380
377
|
};
|
|
381
378
|
const createExitPreviewRoute = async ({ helpers, options }) => {
|
|
379
|
+
const hasSrcDirectory = await checkHasSrcDirectory({ helpers });
|
|
382
380
|
const hasAppRouter = await checkHasAppRouter({ helpers });
|
|
383
381
|
const isTypeScriptProject = await checkIsTypeScriptProject({
|
|
384
382
|
helpers,
|
|
385
383
|
options
|
|
386
384
|
});
|
|
387
385
|
const extension = await getJSFileExtension({ helpers, options });
|
|
388
|
-
const filename =
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
386
|
+
const filename = path.join(...[
|
|
387
|
+
hasSrcDirectory ? "src" : void 0,
|
|
388
|
+
hasAppRouter ? `app/api/exit-preview/route.${extension}` : `pages/api/exit-preview.${extension}`
|
|
389
|
+
].filter((segment) => Boolean(segment)));
|
|
392
390
|
if (await checkHasProjectFile({ filename, helpers })) {
|
|
393
391
|
return;
|
|
394
392
|
}
|
|
@@ -430,10 +428,7 @@ const createExitPreviewRoute = async ({ helpers, options }) => {
|
|
|
430
428
|
};
|
|
431
429
|
const modifySliceMachineConfig = async ({ helpers, options, actions }) => {
|
|
432
430
|
var _a;
|
|
433
|
-
const hasSrcDirectory = await
|
|
434
|
-
filename: "src",
|
|
435
|
-
helpers
|
|
436
|
-
});
|
|
431
|
+
const hasSrcDirectory = await checkHasSrcDirectory({ helpers });
|
|
437
432
|
const project = await helpers.getProject();
|
|
438
433
|
(_a = project.config).localSliceSimulatorURL || (_a.localSliceSimulatorURL = "http://localhost:3000/slice-simulator");
|
|
439
434
|
if (hasSrcDirectory && project.config.libraries && JSON.stringify(project.config.libraries) === JSON.stringify(["./slices"])) {
|
|
@@ -453,11 +448,12 @@ const createRevalidateRoute = async ({ helpers, options }) => {
|
|
|
453
448
|
if (!hasAppRouter) {
|
|
454
449
|
return;
|
|
455
450
|
}
|
|
451
|
+
const hasSrcDirectory = await checkHasSrcDirectory({ helpers });
|
|
456
452
|
const extension = await getJSFileExtension({ helpers, options });
|
|
457
|
-
const filename =
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
453
|
+
const filename = path.join(...[
|
|
454
|
+
hasSrcDirectory ? "src" : void 0,
|
|
455
|
+
`app/api/revalidate/route.${extension}`
|
|
456
|
+
].filter((segment) => Boolean(segment)));
|
|
461
457
|
if (await checkHasProjectFile({ filename, helpers })) {
|
|
462
458
|
return;
|
|
463
459
|
}
|
|
@@ -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":"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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\";\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 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 =\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 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\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 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":";;;;;;;;;AAyBA,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;AACD,QAAM,kBAAkB,MAAM,qBAAqB,EAAE,QAAS,CAAA;AAC9D,QAAM,eAAe,MAAM,kBAAkB,EAAE,QAAS,CAAA;AAExD,QAAM,YAAY,MAAM,mBAAmB,EAAE,SAAS,QAAS,CAAA;AAC/D,QAAM,WAAW,KAAK,KACrB,GAAG,CAAC,kBAAkB,QAAQ,QAAW,aAAa,WAAW,EAAE,OAClE,CAAC,YAAoD,QAAQ,OAAO,CAAC,CACrE;AAGF,MAAI,MAAM,oBAAoB,EAAE,UAAU,QAAS,CAAA,GAAG;AACrD;AAAA,EACA;AAEG,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,IA0BvB;AAAA,EAAA,OACK;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,IAsBvB;AAAA,EACD;AAEG,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,EAEH;AAED,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,kBAAkB,MAAM,qBAAqB,EAAE,QAAS,CAAA;AAC9D,QAAM,eAAe,MAAM,kBAAkB,EAAE,QAAS,CAAA;AAElD,QAAA,YAAY,MAAM,mBAAmB,EAAE,SAAS,SAAS,KAAK,MAAM;AACpE,QAAA,WAAW,KAAK,KACrB,GAAG;AAAA,IACF,kBAAkB,QAAQ;AAAA,IAC1B,eACG,4BAA4B,cAC5B,yBAAyB;AAAA,EAAA,EAC3B,OAAO,CAAC,YACT,QAAQ,OAAO,CAAC,CAChB;AAGF,MAAI,MAAM,oBAAoB,EAAE,UAAU,QAAS,CAAA,GAAG;AACrD;AAAA,EACA;AAEG,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,IAmBX;AAAA,EAAA,OACK;AACK,eAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcX;AAED,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,kBAAkB,MAAM,qBAAqB,EAAE,QAAS,CAAA;AAC9D,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,KAAK,KACrB,GAAG;AAAA,IACF,kBAAkB,QAAQ;AAAA,IAC1B,eACG,yBAAyB,cACzB,qBAAqB;AAAA,EAAA,EACvB,OAAO,CAAC,YACT,QAAQ,OAAO,CAAC,CAChB;AAGF,MAAI,MAAM,oBAAoB,EAAE,UAAU,QAAS,CAAA,GAAG;AACrD;AAAA,EACA;AAEG,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,IAWX;AAAA,EAAA,OACK;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,IAaX;AAAA,EACD;AAED,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,kBAAkB,MAAM,qBAAqB,EAAE,QAAS,CAAA;AAC9D,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,KAAK,KACrB,GAAG;AAAA,IACF,kBAAkB,QAAQ;AAAA,IAC1B,eACG,8BAA8B,cAC9B,0BAA0B;AAAA,EAAA,EAC5B,OAAO,CAAC,YACT,QAAQ,OAAO,CAAC,CAChB;AAGF,MAAI,MAAM,oBAAoB,EAAE,UAAU,QAAS,CAAA,GAAG;AACrD;AAAA,EACA;AAEG,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,IAOX;AAAA,EACD;AAED,QAAM,iBAAiB;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,MAAM,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,MAAM,kBAAkB,EAAE,QAAS,CAAA;AAExD,MAAI,CAAC,cAAc;AAClB;AAAA,EACA;AAED,QAAM,kBAAkB,MAAM,qBAAqB,EAAE,QAAS,CAAA;AAE9D,QAAM,YAAY,MAAM,mBAAmB,EAAE,SAAS,QAAS,CAAA;AACzD,QAAA,WAAW,KAAK,KACrB,GAAG;AAAA,IACF,kBAAkB,QAAQ;AAAA,IAC1B,4BAA4B;AAAA,EAAA,EAC3B,OAAO,CAAC,YACT,QAAQ,OAAO,CAAC,CAChB;AAGF,MAAI,MAAM,oBAAoB,EAAE,UAAU,QAAS,CAAA,GAAG;AACrD;AAAA,EACA;AAED,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,14 +1,29 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const fs = require("@slicemachine/plugin-kit/fs");
|
|
4
|
-
const
|
|
4
|
+
const path = require("node:path");
|
|
5
|
+
const checkHasSrcDirectory = require("./checkHasSrcDirectory.cjs");
|
|
6
|
+
function _interopNamespaceDefault(e) {
|
|
7
|
+
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
|
8
|
+
if (e) {
|
|
9
|
+
for (const k in e) {
|
|
10
|
+
if (k !== "default") {
|
|
11
|
+
const d = Object.getOwnPropertyDescriptor(e, k);
|
|
12
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: () => e[k]
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
n.default = e;
|
|
20
|
+
return Object.freeze(n);
|
|
21
|
+
}
|
|
22
|
+
const path__namespace = /* @__PURE__ */ _interopNamespaceDefault(path);
|
|
5
23
|
async function checkHasAppRouter(args) {
|
|
6
|
-
const
|
|
7
|
-
filename: "app",
|
|
8
|
-
helpers: args.helpers
|
|
9
|
-
});
|
|
24
|
+
const hasSrcDirectory = await checkHasSrcDirectory.checkHasSrcDirectory({ helpers: args.helpers });
|
|
10
25
|
return await fs.checkHasProjectFile({
|
|
11
|
-
filename:
|
|
26
|
+
filename: hasSrcDirectory ? path__namespace.join("src", "app") : "app",
|
|
12
27
|
helpers: args.helpers
|
|
13
28
|
});
|
|
14
29
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkHasAppRouter.cjs","sources":["../../../src/lib/checkHasAppRouter.ts"],"sourcesContent":["import { SliceMachineContext } from \"@slicemachine/plugin-kit\";\nimport { checkHasProjectFile } from \"@slicemachine/plugin-kit/fs\";\n\nimport { PluginOptions } from \"../types\";\
|
|
1
|
+
{"version":3,"file":"checkHasAppRouter.cjs","sources":["../../../src/lib/checkHasAppRouter.ts"],"sourcesContent":["import { SliceMachineContext } from \"@slicemachine/plugin-kit\";\nimport { checkHasProjectFile } from \"@slicemachine/plugin-kit/fs\";\nimport * as path from \"node:path\";\n\nimport { PluginOptions } from \"../types\";\nimport { checkHasSrcDirectory } from \"./checkHasSrcDirectory\";\n\ntype CheckHasAppRouterArgs = Pick<\n\tSliceMachineContext<PluginOptions>,\n\t\"helpers\"\n>;\n\nexport async function checkHasAppRouter(\n\targs: CheckHasAppRouterArgs,\n): Promise<boolean> {\n\tconst hasSrcDirectory = await checkHasSrcDirectory({ helpers: args.helpers });\n\n\treturn await checkHasProjectFile({\n\t\tfilename: hasSrcDirectory ? path.join(\"src\", \"app\") : \"app\",\n\t\thelpers: args.helpers,\n\t});\n}\n"],"names":["checkHasSrcDirectory","checkHasProjectFile","path"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAYA,eAAsB,kBACrB,MAA2B;AAE3B,QAAM,kBAAkB,MAAMA,0CAAqB,EAAE,SAAS,KAAK,SAAS;AAE5E,SAAO,MAAMC,GAAAA,oBAAoB;AAAA,IAChC,UAAU,kBAAkBC,gBAAK,KAAK,OAAO,KAAK,IAAI;AAAA,IACtD,SAAS,KAAK;AAAA,EAAA,CACd;AACF;;"}
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import { checkHasProjectFile } from "@slicemachine/plugin-kit/fs";
|
|
2
|
-
import
|
|
2
|
+
import * as path from "node:path";
|
|
3
|
+
import { checkHasSrcDirectory } from "./checkHasSrcDirectory.js";
|
|
3
4
|
async function checkHasAppRouter(args) {
|
|
4
|
-
const
|
|
5
|
-
filename: "app",
|
|
6
|
-
helpers: args.helpers
|
|
7
|
-
});
|
|
5
|
+
const hasSrcDirectory = await checkHasSrcDirectory({ helpers: args.helpers });
|
|
8
6
|
return await checkHasProjectFile({
|
|
9
|
-
filename:
|
|
7
|
+
filename: hasSrcDirectory ? path.join("src", "app") : "app",
|
|
10
8
|
helpers: args.helpers
|
|
11
9
|
});
|
|
12
10
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkHasAppRouter.js","sources":["../../../src/lib/checkHasAppRouter.ts"],"sourcesContent":["import { SliceMachineContext } from \"@slicemachine/plugin-kit\";\nimport { checkHasProjectFile } from \"@slicemachine/plugin-kit/fs\";\n\nimport { PluginOptions } from \"../types\";\
|
|
1
|
+
{"version":3,"file":"checkHasAppRouter.js","sources":["../../../src/lib/checkHasAppRouter.ts"],"sourcesContent":["import { SliceMachineContext } from \"@slicemachine/plugin-kit\";\nimport { checkHasProjectFile } from \"@slicemachine/plugin-kit/fs\";\nimport * as path from \"node:path\";\n\nimport { PluginOptions } from \"../types\";\nimport { checkHasSrcDirectory } from \"./checkHasSrcDirectory\";\n\ntype CheckHasAppRouterArgs = Pick<\n\tSliceMachineContext<PluginOptions>,\n\t\"helpers\"\n>;\n\nexport async function checkHasAppRouter(\n\targs: CheckHasAppRouterArgs,\n): Promise<boolean> {\n\tconst hasSrcDirectory = await checkHasSrcDirectory({ helpers: args.helpers });\n\n\treturn await checkHasProjectFile({\n\t\tfilename: hasSrcDirectory ? path.join(\"src\", \"app\") : \"app\",\n\t\thelpers: args.helpers,\n\t});\n}\n"],"names":[],"mappings":";;;AAYA,eAAsB,kBACrB,MAA2B;AAE3B,QAAM,kBAAkB,MAAM,qBAAqB,EAAE,SAAS,KAAK,SAAS;AAE5E,SAAO,MAAM,oBAAoB;AAAA,IAChC,UAAU,kBAAkB,KAAK,KAAK,OAAO,KAAK,IAAI;AAAA,IACtD,SAAS,KAAK;AAAA,EAAA,CACd;AACF;"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const fs = require("@slicemachine/plugin-kit/fs");
|
|
4
|
+
async function checkHasSrcDirectory(args) {
|
|
5
|
+
return await fs.checkHasProjectFile({
|
|
6
|
+
filename: "src",
|
|
7
|
+
helpers: args.helpers
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
exports.checkHasSrcDirectory = checkHasSrcDirectory;
|
|
11
|
+
//# sourceMappingURL=checkHasSrcDirectory.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkHasSrcDirectory.cjs","sources":["../../../src/lib/checkHasSrcDirectory.ts"],"sourcesContent":["import { SliceMachineContext } from \"@slicemachine/plugin-kit\";\nimport { checkHasProjectFile } from \"@slicemachine/plugin-kit/fs\";\n\nimport { PluginOptions } from \"../types\";\n\ntype CheckHasSrcDirectoryArgs = Pick<\n\tSliceMachineContext<PluginOptions>,\n\t\"helpers\"\n>;\n\nexport async function checkHasSrcDirectory(\n\targs: CheckHasSrcDirectoryArgs,\n): Promise<boolean> {\n\treturn await checkHasProjectFile({\n\t\tfilename: \"src\",\n\t\thelpers: args.helpers,\n\t});\n}\n"],"names":["checkHasProjectFile"],"mappings":";;;AAUA,eAAsB,qBACrB,MAA8B;AAE9B,SAAO,MAAMA,GAAAA,oBAAoB;AAAA,IAChC,UAAU;AAAA,IACV,SAAS,KAAK;AAAA,EAAA,CACd;AACF;;"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { SliceMachineContext } from "@slicemachine/plugin-kit";
|
|
2
|
+
import { PluginOptions } from "../types";
|
|
3
|
+
type CheckHasSrcDirectoryArgs = Pick<SliceMachineContext<PluginOptions>, "helpers">;
|
|
4
|
+
export declare function checkHasSrcDirectory(args: CheckHasSrcDirectoryArgs): Promise<boolean>;
|
|
5
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { checkHasProjectFile } from "@slicemachine/plugin-kit/fs";
|
|
2
|
+
async function checkHasSrcDirectory(args) {
|
|
3
|
+
return await checkHasProjectFile({
|
|
4
|
+
filename: "src",
|
|
5
|
+
helpers: args.helpers
|
|
6
|
+
});
|
|
7
|
+
}
|
|
8
|
+
export {
|
|
9
|
+
checkHasSrcDirectory
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=checkHasSrcDirectory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkHasSrcDirectory.js","sources":["../../../src/lib/checkHasSrcDirectory.ts"],"sourcesContent":["import { SliceMachineContext } from \"@slicemachine/plugin-kit\";\nimport { checkHasProjectFile } from \"@slicemachine/plugin-kit/fs\";\n\nimport { PluginOptions } from \"../types\";\n\ntype CheckHasSrcDirectoryArgs = Pick<\n\tSliceMachineContext<PluginOptions>,\n\t\"helpers\"\n>;\n\nexport async function checkHasSrcDirectory(\n\targs: CheckHasSrcDirectoryArgs,\n): Promise<boolean> {\n\treturn await checkHasProjectFile({\n\t\tfilename: \"src\",\n\t\thelpers: args.helpers,\n\t});\n}\n"],"names":[],"mappings":";AAUA,eAAsB,qBACrB,MAA8B;AAE9B,SAAO,MAAM,oBAAoB;AAAA,IAChC,UAAU;AAAA,IACV,SAAS,KAAK;AAAA,EAAA,CACd;AACF;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@slicemachine/adapter-next",
|
|
3
|
-
"version": "0.3.42-alpha.aa-
|
|
3
|
+
"version": "0.3.42-alpha.aa-contributing.4",
|
|
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.4.1",
|
|
71
|
-
"@slicemachine/plugin-kit": "0.4.42-alpha.aa-
|
|
71
|
+
"@slicemachine/plugin-kit": "0.4.42-alpha.aa-contributing.4",
|
|
72
72
|
"common-tags": "^1.8.2",
|
|
73
73
|
"fp-ts": "^2.13.1",
|
|
74
74
|
"io-ts": "^2.2.20",
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import * as path from "node:path";
|
|
1
2
|
import type {
|
|
2
3
|
ProjectInitHook,
|
|
3
4
|
ProjectInitHookData,
|
|
@@ -9,8 +10,8 @@ import {
|
|
|
9
10
|
} from "@slicemachine/plugin-kit/fs";
|
|
10
11
|
import { source } from "common-tags";
|
|
11
12
|
|
|
12
|
-
import { buildSrcPath } from "../lib/buildSrcPath";
|
|
13
13
|
import { checkHasAppRouter } from "../lib/checkHasAppRouter";
|
|
14
|
+
import { checkHasSrcDirectory } from "../lib/checkHasSrcDirectory";
|
|
14
15
|
import { checkIsTypeScriptProject } from "../lib/checkIsTypeScriptProject";
|
|
15
16
|
import { getJSFileExtension } from "../lib/getJSFileExtension";
|
|
16
17
|
import { rejectIfNecessary } from "../lib/rejectIfNecessary";
|
|
@@ -44,17 +45,15 @@ const createPrismicIOFile = async ({
|
|
|
44
45
|
helpers,
|
|
45
46
|
options,
|
|
46
47
|
});
|
|
47
|
-
const hasSrcDirectory = await
|
|
48
|
-
filename: "src",
|
|
49
|
-
helpers,
|
|
50
|
-
});
|
|
48
|
+
const hasSrcDirectory = await checkHasSrcDirectory({ helpers });
|
|
51
49
|
const hasAppRouter = await checkHasAppRouter({ helpers });
|
|
52
50
|
|
|
53
51
|
const extension = await getJSFileExtension({ helpers, options });
|
|
54
|
-
const filename =
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
52
|
+
const filename = path.join(
|
|
53
|
+
...[hasSrcDirectory ? "src" : undefined, `prismicio.${extension}`].filter(
|
|
54
|
+
(segment): segment is NonNullable<typeof segment> => Boolean(segment),
|
|
55
|
+
),
|
|
56
|
+
);
|
|
58
57
|
|
|
59
58
|
if (await checkHasProjectFile({ filename, helpers })) {
|
|
60
59
|
return;
|
|
@@ -256,15 +255,20 @@ const createSliceSimulatorPage = async ({
|
|
|
256
255
|
helpers,
|
|
257
256
|
options,
|
|
258
257
|
});
|
|
258
|
+
const hasSrcDirectory = await checkHasSrcDirectory({ helpers });
|
|
259
259
|
const hasAppRouter = await checkHasAppRouter({ helpers });
|
|
260
260
|
|
|
261
261
|
const extension = await getJSFileExtension({ helpers, options, jsx: true });
|
|
262
|
-
const filename =
|
|
263
|
-
|
|
264
|
-
?
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
262
|
+
const filename = path.join(
|
|
263
|
+
...[
|
|
264
|
+
hasSrcDirectory ? "src" : undefined,
|
|
265
|
+
hasAppRouter
|
|
266
|
+
? `app/slice-simulator/page.${extension}`
|
|
267
|
+
: `pages/slice-simulator.${extension}`,
|
|
268
|
+
].filter((segment): segment is NonNullable<typeof segment> =>
|
|
269
|
+
Boolean(segment),
|
|
270
|
+
),
|
|
271
|
+
);
|
|
268
272
|
|
|
269
273
|
if (await checkHasProjectFile({ filename, helpers })) {
|
|
270
274
|
return;
|
|
@@ -346,6 +350,7 @@ const createPreviewRoute = async ({
|
|
|
346
350
|
helpers,
|
|
347
351
|
options,
|
|
348
352
|
}: SliceMachineContext<PluginOptions>) => {
|
|
353
|
+
const hasSrcDirectory = await checkHasSrcDirectory({ helpers });
|
|
349
354
|
const hasAppRouter = await checkHasAppRouter({ helpers });
|
|
350
355
|
const isTypeScriptProject = await checkIsTypeScriptProject({
|
|
351
356
|
helpers,
|
|
@@ -353,12 +358,16 @@ const createPreviewRoute = async ({
|
|
|
353
358
|
});
|
|
354
359
|
|
|
355
360
|
const extension = await getJSFileExtension({ helpers, options });
|
|
356
|
-
const filename =
|
|
357
|
-
|
|
358
|
-
?
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
361
|
+
const filename = path.join(
|
|
362
|
+
...[
|
|
363
|
+
hasSrcDirectory ? "src" : undefined,
|
|
364
|
+
hasAppRouter
|
|
365
|
+
? `app/api/preview/route.${extension}`
|
|
366
|
+
: `pages/api/preview.${extension}`,
|
|
367
|
+
].filter((segment): segment is NonNullable<typeof segment> =>
|
|
368
|
+
Boolean(segment),
|
|
369
|
+
),
|
|
370
|
+
);
|
|
362
371
|
|
|
363
372
|
if (await checkHasProjectFile({ filename, helpers })) {
|
|
364
373
|
return;
|
|
@@ -438,6 +447,7 @@ const createExitPreviewRoute = async ({
|
|
|
438
447
|
helpers,
|
|
439
448
|
options,
|
|
440
449
|
}: SliceMachineContext<PluginOptions>) => {
|
|
450
|
+
const hasSrcDirectory = await checkHasSrcDirectory({ helpers });
|
|
441
451
|
const hasAppRouter = await checkHasAppRouter({ helpers });
|
|
442
452
|
const isTypeScriptProject = await checkIsTypeScriptProject({
|
|
443
453
|
helpers,
|
|
@@ -445,12 +455,16 @@ const createExitPreviewRoute = async ({
|
|
|
445
455
|
});
|
|
446
456
|
|
|
447
457
|
const extension = await getJSFileExtension({ helpers, options });
|
|
448
|
-
const filename =
|
|
449
|
-
|
|
450
|
-
?
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
458
|
+
const filename = path.join(
|
|
459
|
+
...[
|
|
460
|
+
hasSrcDirectory ? "src" : undefined,
|
|
461
|
+
hasAppRouter
|
|
462
|
+
? `app/api/exit-preview/route.${extension}`
|
|
463
|
+
: `pages/api/exit-preview.${extension}`,
|
|
464
|
+
].filter((segment): segment is NonNullable<typeof segment> =>
|
|
465
|
+
Boolean(segment),
|
|
466
|
+
),
|
|
467
|
+
);
|
|
454
468
|
|
|
455
469
|
if (await checkHasProjectFile({ filename, helpers })) {
|
|
456
470
|
return;
|
|
@@ -500,10 +514,7 @@ const modifySliceMachineConfig = async ({
|
|
|
500
514
|
options,
|
|
501
515
|
actions,
|
|
502
516
|
}: SliceMachineContext<PluginOptions>) => {
|
|
503
|
-
const hasSrcDirectory = await
|
|
504
|
-
filename: "src",
|
|
505
|
-
helpers,
|
|
506
|
-
});
|
|
517
|
+
const hasSrcDirectory = await checkHasSrcDirectory({ helpers });
|
|
507
518
|
const project = await helpers.getProject();
|
|
508
519
|
|
|
509
520
|
// Add Slice Simulator URL.
|
|
@@ -541,11 +552,17 @@ const createRevalidateRoute = async ({
|
|
|
541
552
|
return;
|
|
542
553
|
}
|
|
543
554
|
|
|
555
|
+
const hasSrcDirectory = await checkHasSrcDirectory({ helpers });
|
|
556
|
+
|
|
544
557
|
const extension = await getJSFileExtension({ helpers, options });
|
|
545
|
-
const filename =
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
558
|
+
const filename = path.join(
|
|
559
|
+
...[
|
|
560
|
+
hasSrcDirectory ? "src" : undefined,
|
|
561
|
+
`app/api/revalidate/route.${extension}`,
|
|
562
|
+
].filter((segment): segment is NonNullable<typeof segment> =>
|
|
563
|
+
Boolean(segment),
|
|
564
|
+
),
|
|
565
|
+
);
|
|
549
566
|
|
|
550
567
|
if (await checkHasProjectFile({ filename, helpers })) {
|
|
551
568
|
return;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { SliceMachineContext } from "@slicemachine/plugin-kit";
|
|
2
2
|
import { checkHasProjectFile } from "@slicemachine/plugin-kit/fs";
|
|
3
|
+
import * as path from "node:path";
|
|
3
4
|
|
|
4
5
|
import { PluginOptions } from "../types";
|
|
5
|
-
|
|
6
|
-
import { buildSrcPath } from "./buildSrcPath";
|
|
6
|
+
import { checkHasSrcDirectory } from "./checkHasSrcDirectory";
|
|
7
7
|
|
|
8
8
|
type CheckHasAppRouterArgs = Pick<
|
|
9
9
|
SliceMachineContext<PluginOptions>,
|
|
@@ -13,13 +13,10 @@ type CheckHasAppRouterArgs = Pick<
|
|
|
13
13
|
export async function checkHasAppRouter(
|
|
14
14
|
args: CheckHasAppRouterArgs,
|
|
15
15
|
): Promise<boolean> {
|
|
16
|
-
const
|
|
17
|
-
filename: "app",
|
|
18
|
-
helpers: args.helpers,
|
|
19
|
-
});
|
|
16
|
+
const hasSrcDirectory = await checkHasSrcDirectory({ helpers: args.helpers });
|
|
20
17
|
|
|
21
18
|
return await checkHasProjectFile({
|
|
22
|
-
filename:
|
|
19
|
+
filename: hasSrcDirectory ? path.join("src", "app") : "app",
|
|
23
20
|
helpers: args.helpers,
|
|
24
21
|
});
|
|
25
22
|
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { SliceMachineContext } from "@slicemachine/plugin-kit";
|
|
2
|
+
import { checkHasProjectFile } from "@slicemachine/plugin-kit/fs";
|
|
3
|
+
|
|
4
|
+
import { PluginOptions } from "../types";
|
|
5
|
+
|
|
6
|
+
type CheckHasSrcDirectoryArgs = Pick<
|
|
7
|
+
SliceMachineContext<PluginOptions>,
|
|
8
|
+
"helpers"
|
|
9
|
+
>;
|
|
10
|
+
|
|
11
|
+
export async function checkHasSrcDirectory(
|
|
12
|
+
args: CheckHasSrcDirectoryArgs,
|
|
13
|
+
): Promise<boolean> {
|
|
14
|
+
return await checkHasProjectFile({
|
|
15
|
+
filename: "src",
|
|
16
|
+
helpers: args.helpers,
|
|
17
|
+
});
|
|
18
|
+
}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const path = require("node:path");
|
|
4
|
-
const fs = require("@slicemachine/plugin-kit/fs");
|
|
5
|
-
function _interopNamespaceDefault(e) {
|
|
6
|
-
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
|
7
|
-
if (e) {
|
|
8
|
-
for (const k in e) {
|
|
9
|
-
if (k !== "default") {
|
|
10
|
-
const d = Object.getOwnPropertyDescriptor(e, k);
|
|
11
|
-
Object.defineProperty(n, k, d.get ? d : {
|
|
12
|
-
enumerable: true,
|
|
13
|
-
get: () => e[k]
|
|
14
|
-
});
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
n.default = e;
|
|
19
|
-
return Object.freeze(n);
|
|
20
|
-
}
|
|
21
|
-
const path__namespace = /* @__PURE__ */ _interopNamespaceDefault(path);
|
|
22
|
-
async function buildSrcPath(args) {
|
|
23
|
-
const hasSrcDirectory = await fs.checkHasProjectFile({
|
|
24
|
-
filename: "src",
|
|
25
|
-
helpers: args.helpers
|
|
26
|
-
});
|
|
27
|
-
return hasSrcDirectory ? path__namespace.join("src", args.filename) : args.filename;
|
|
28
|
-
}
|
|
29
|
-
exports.buildSrcPath = buildSrcPath;
|
|
30
|
-
//# sourceMappingURL=buildSrcPath.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"buildSrcPath.cjs","sources":["../../../src/lib/buildSrcPath.ts"],"sourcesContent":["import * as path from \"node:path\";\n\nimport type { SliceMachineHelpers } from \"@slicemachine/plugin-kit\";\nimport { checkHasProjectFile } from \"@slicemachine/plugin-kit/fs\";\n\nexport async function buildSrcPath(args: {\n\tfilename: string;\n\thelpers: SliceMachineHelpers;\n}): Promise<string> {\n\tconst hasSrcDirectory = await checkHasProjectFile({\n\t\tfilename: \"src\",\n\t\thelpers: args.helpers,\n\t});\n\n\treturn hasSrcDirectory ? path.join(\"src\", args.filename) : args.filename;\n}\n"],"names":["checkHasProjectFile","path"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAKA,eAAsB,aAAa,MAGlC;AACM,QAAA,kBAAkB,MAAMA,uBAAoB;AAAA,IACjD,UAAU;AAAA,IACV,SAAS,KAAK;AAAA,EAAA,CACd;AAED,SAAO,kBAAkBC,gBAAK,KAAK,OAAO,KAAK,QAAQ,IAAI,KAAK;AACjE;;"}
|
package/dist/lib/buildSrcPath.js
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import * as path from "node:path";
|
|
2
|
-
import { checkHasProjectFile } from "@slicemachine/plugin-kit/fs";
|
|
3
|
-
async function buildSrcPath(args) {
|
|
4
|
-
const hasSrcDirectory = await checkHasProjectFile({
|
|
5
|
-
filename: "src",
|
|
6
|
-
helpers: args.helpers
|
|
7
|
-
});
|
|
8
|
-
return hasSrcDirectory ? path.join("src", args.filename) : args.filename;
|
|
9
|
-
}
|
|
10
|
-
export {
|
|
11
|
-
buildSrcPath
|
|
12
|
-
};
|
|
13
|
-
//# sourceMappingURL=buildSrcPath.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"buildSrcPath.js","sources":["../../../src/lib/buildSrcPath.ts"],"sourcesContent":["import * as path from \"node:path\";\n\nimport type { SliceMachineHelpers } from \"@slicemachine/plugin-kit\";\nimport { checkHasProjectFile } from \"@slicemachine/plugin-kit/fs\";\n\nexport async function buildSrcPath(args: {\n\tfilename: string;\n\thelpers: SliceMachineHelpers;\n}): Promise<string> {\n\tconst hasSrcDirectory = await checkHasProjectFile({\n\t\tfilename: \"src\",\n\t\thelpers: args.helpers,\n\t});\n\n\treturn hasSrcDirectory ? path.join(\"src\", args.filename) : args.filename;\n}\n"],"names":[],"mappings":";;AAKA,eAAsB,aAAa,MAGlC;AACM,QAAA,kBAAkB,MAAM,oBAAoB;AAAA,IACjD,UAAU;AAAA,IACV,SAAS,KAAK;AAAA,EAAA,CACd;AAED,SAAO,kBAAkB,KAAK,KAAK,OAAO,KAAK,QAAQ,IAAI,KAAK;AACjE;"}
|
package/src/lib/buildSrcPath.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import * as path from "node:path";
|
|
2
|
-
|
|
3
|
-
import type { SliceMachineHelpers } from "@slicemachine/plugin-kit";
|
|
4
|
-
import { checkHasProjectFile } from "@slicemachine/plugin-kit/fs";
|
|
5
|
-
|
|
6
|
-
export async function buildSrcPath(args: {
|
|
7
|
-
filename: string;
|
|
8
|
-
helpers: SliceMachineHelpers;
|
|
9
|
-
}): Promise<string> {
|
|
10
|
-
const hasSrcDirectory = await checkHasProjectFile({
|
|
11
|
-
filename: "src",
|
|
12
|
-
helpers: args.helpers,
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
return hasSrcDirectory ? path.join("src", args.filename) : args.filename;
|
|
16
|
-
}
|