@slicemachine/adapter-nuxt2 0.3.39-beta.5 → 0.3.39-beta.6
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.
|
@@ -36,7 +36,7 @@ const installDependencies = async ({ installDependencies: installDependencies2 }
|
|
|
36
36
|
dev: true
|
|
37
37
|
});
|
|
38
38
|
};
|
|
39
|
-
const configurePrismicModule = async ({ helpers, project }) => {
|
|
39
|
+
const configurePrismicModule = async ({ helpers, options, project }) => {
|
|
40
40
|
let nuxtConfigFilename = "nuxt.config.js";
|
|
41
41
|
if (!await fs.checkHasProjectFile({ filename: nuxtConfigFilename, helpers })) {
|
|
42
42
|
nuxtConfigFilename = "nuxt.config.ts";
|
|
@@ -82,17 +82,35 @@ const configurePrismicModule = async ({ helpers, project }) => {
|
|
|
82
82
|
config.buildModules || (config.buildModules = []);
|
|
83
83
|
config.buildModules.push(NUXT_PRISMIC);
|
|
84
84
|
}
|
|
85
|
+
const ENDPOINT_REPLACE_KEY = "___prismicEndpoint___";
|
|
86
|
+
const ENDPOINT_REPLACE_VALUE = "apiEndpoint || repositoryName";
|
|
85
87
|
if (!hasInlinedConfiguration) {
|
|
88
|
+
mod.imports.$add({
|
|
89
|
+
from: "./slicemachine.config.json",
|
|
90
|
+
imported: "apiEndpoint"
|
|
91
|
+
});
|
|
92
|
+
mod.imports.$add({
|
|
93
|
+
from: "./slicemachine.config.json",
|
|
94
|
+
imported: "repositoryName"
|
|
95
|
+
});
|
|
86
96
|
if (config.prismic) {
|
|
87
|
-
config.prismic.endpoint =
|
|
97
|
+
config.prismic.endpoint = magicast.builders.raw(ENDPOINT_REPLACE_KEY);
|
|
88
98
|
} else {
|
|
89
99
|
config.prismic = {
|
|
90
|
-
endpoint,
|
|
100
|
+
endpoint: magicast.builders.raw(ENDPOINT_REPLACE_KEY),
|
|
91
101
|
modern: true
|
|
92
102
|
};
|
|
93
103
|
}
|
|
94
104
|
}
|
|
95
|
-
|
|
105
|
+
const ast = "$ast" in mod ? mod.$ast : mod;
|
|
106
|
+
let { code } = magicast.generateCode(ast);
|
|
107
|
+
code = code.replace(ENDPOINT_REPLACE_KEY, ENDPOINT_REPLACE_VALUE);
|
|
108
|
+
await fs.writeProjectFile({
|
|
109
|
+
filename: nuxtConfigFilename,
|
|
110
|
+
contents: code,
|
|
111
|
+
format: options.format,
|
|
112
|
+
helpers
|
|
113
|
+
});
|
|
96
114
|
};
|
|
97
115
|
const createSliceSimulatorPage = async ({ helpers, options }) => {
|
|
98
116
|
const srcPagesDirectoryExists = await fs.checkHasProjectFile({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-init.cjs","sources":["../../../src/hooks/project-init.ts"],"sourcesContent":["import * as path from \"node:path\";\nimport type {\n\tProjectInitHook,\n\tProjectInitHookData,\n\tSliceMachineContext,\n} from \"@slicemachine/plugin-kit\";\nimport {\n\tcheckHasProjectFile,\n\twriteProjectFile,\n} from \"@slicemachine/plugin-kit/fs\";\nimport { stripIndent } from \"common-tags\";\nimport {
|
|
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 { stripIndent } from \"common-tags\";\nimport { builders, generateCode, loadFile } from \"magicast\";\n\nimport { rejectIfNecessary } from \"../lib/rejectIfNecessary\";\nimport { checkHasSrcDirectory } from \"../lib/checkHasSrcDirectory\";\n\nimport type { PluginOptions } from \"../types\";\n\nconst NUXT_PRISMIC = \"@nuxtjs/prismic\";\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[NUXT_PRISMIC]: \"^1.4.2\",\n\t\t},\n\t\tdev: true,\n\t});\n};\n\ntype ConfigurePrismicModuleArgs = SliceMachineContext<PluginOptions>;\n\nconst configurePrismicModule = async ({\n\thelpers,\n\toptions,\n\tproject,\n}: ConfigurePrismicModuleArgs) => {\n\tlet nuxtConfigFilename = \"nuxt.config.js\";\n\n\tif (!(await checkHasProjectFile({ filename: nuxtConfigFilename, helpers }))) {\n\t\tnuxtConfigFilename = \"nuxt.config.ts\";\n\n\t\t// nuxt.config.* not found\n\t\tif (\n\t\t\t!(await checkHasProjectFile({ filename: nuxtConfigFilename, helpers }))\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\tconst nuxtConfigPath = helpers.joinPathFromRoot(nuxtConfigFilename);\n\n\tconst mod = await loadFile(nuxtConfigPath);\n\n\tconst endpoint =\n\t\tproject.config.apiEndpoint ||\n\t\t`https://${project.config.repositoryName}.cdn.prismic.io/api/v2`;\n\n\tlet config;\n\ttry {\n\t\tconfig =\n\t\t\tmod.exports.default.$type === \"function-call\"\n\t\t\t\t? mod.exports.default.$args[0]\n\t\t\t\t: mod.exports.default;\n\t} catch {\n\t\tconst errorMessage = `Failed to update ${path.basename(nuxtConfigPath)}`;\n\t\tconsole.error(errorMessage);\n\t\tconsole.warn(\n\t\t\t`Ensure that the following has been added to ${path.basename(\n\t\t\t\tnuxtConfigPath,\n\t\t\t)}.`,\n\t\t);\n\t\tconsole.warn(stripIndent`\n\t\t\t{\n\t\t\t\tbuildModules: [\"@nuxtjs/prismic\"],\n\t\t\t\tprismic: {\n\t\t\t\t\tendpoint: \"${endpoint}\",\n\t\t\t\t\tmodern: true\n\t\t\t\t}\n\t\t\t}\n\t\t`);\n\n\t\tthrow errorMessage;\n\t}\n\n\t// Register Prismic module\n\tlet hasInlinedConfiguration = false;\n\tconst hasPrismicModuleRegistered = !![\n\t\t...(config.modules || []),\n\t\t...(config.buildModules || []),\n\t].find((registration: string | [string, unknown]) => {\n\t\tif (typeof registration === \"string\") {\n\t\t\treturn registration === NUXT_PRISMIC;\n\t\t} else if (Array.isArray(registration)) {\n\t\t\thasInlinedConfiguration = !!registration[1];\n\n\t\t\treturn registration[0] === NUXT_PRISMIC;\n\t\t}\n\n\t\treturn false;\n\t});\n\n\tif (!hasPrismicModuleRegistered) {\n\t\tconfig.buildModules ||= [];\n\t\tconfig.buildModules.push(NUXT_PRISMIC);\n\t}\n\n\t// Append Prismic module configuration\n\tconst ENDPOINT_REPLACE_KEY = \"___prismicEndpoint___\";\n\tconst ENDPOINT_REPLACE_VALUE = \"apiEndpoint || repositoryName\";\n\tif (!hasInlinedConfiguration) {\n\t\t// Import Slice Machine configuration\n\t\tmod.imports.$add({\n\t\t\tfrom: \"./slicemachine.config.json\",\n\t\t\timported: \"apiEndpoint\",\n\t\t});\n\t\tmod.imports.$add({\n\t\t\tfrom: \"./slicemachine.config.json\",\n\t\t\timported: \"repositoryName\",\n\t\t});\n\n\t\t// Add inline configuration\n\t\tif (config.prismic) {\n\t\t\tconfig.prismic.endpoint = builders.raw(ENDPOINT_REPLACE_KEY);\n\t\t} else {\n\t\t\tconfig.prismic = {\n\t\t\t\tendpoint: builders.raw(ENDPOINT_REPLACE_KEY),\n\t\t\t\tmodern: true,\n\t\t\t};\n\t\t}\n\t}\n\n\tconst ast = \"$ast\" in mod ? mod.$ast : mod;\n\tlet { code } = generateCode(ast);\n\t// This is a workaround to magicast not supporting \"LogicalExpression\" node type\n\tcode = code.replace(ENDPOINT_REPLACE_KEY, ENDPOINT_REPLACE_VALUE);\n\tawait writeProjectFile({\n\t\tfilename: nuxtConfigFilename,\n\t\tcontents: code,\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 srcPagesDirectoryExists = await checkHasProjectFile({\n\t\tfilename: \"src/pages\",\n\t\thelpers,\n\t});\n\n\tconst filename = path.join(\n\t\tsrcPagesDirectoryExists ? \"src/pages\" : \"pages\",\n\t\t\"slice-simulator.vue\",\n\t);\n\n\tif (await checkHasProjectFile({ filename, helpers })) {\n\t\treturn;\n\t}\n\n\tconst contents = stripIndent`\n\t\t<template>\n\t\t\t<SliceSimulator v-slot=\"{ slices }\">\n\t\t\t\t<SliceZone :slices=\"slices\" :components=\"components\" />\n\t\t\t</SliceSimulator>\n\t\t</template>\n\n\t\t<script>\n\t\timport { SliceSimulator } from \"@slicemachine/adapter-nuxt2/dist/simulator.cjs\";\n\t\timport { components } from \"~/slices\";\n\n\t\texport default {\n\t\t\tcomponents: {\n\t\t\t\tSliceSimulator,\n\t\t\t},\n\t\t\tdata () {\n\t\t\t\treturn { components };\n\t\t\t},\n\t\t};\n\t\t</script>\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\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\tconfigurePrismicModule(context),\n\t\t\tcreateSliceSimulatorPage(context),\n\t\t\tmodifySliceMachineConfig(context),\n\t\t]),\n\t);\n};\n"],"names":["installDependencies","checkHasProjectFile","loadFile","path","stripIndent","builders","generateCode","writeProjectFile","checkHasSrcDirectory","_a","rejectIfNecessary"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAA;AAkBA,MAAM,eAAe;AAMrB,MAAM,sBAAsB,OAAO,EAClC,qBAAAA,2BAC6B;AAC7B,QAAMA,qBAAoB;AAAA,IACzB,cAAc;AAAA,MACb,CAAC,YAAY,GAAG;AAAA,IAChB;AAAA,IACD,KAAK;AAAA,EAAA,CACL;AACF;AAIA,MAAM,yBAAyB,OAAO,EACrC,SACA,SACA,cACgC;AAChC,MAAI,qBAAqB;AAErB,MAAA,CAAE,MAAMC,GAAAA,oBAAoB,EAAE,UAAU,oBAAoB,QAAA,CAAS,GAAI;AACvD,yBAAA;AAIpB,QAAA,CAAE,MAAMA,GAAAA,oBAAoB,EAAE,UAAU,oBAAoB,QAAA,CAAS,GACpE;AACD;AAAA,IACA;AAAA,EACD;AAEK,QAAA,iBAAiB,QAAQ,iBAAiB,kBAAkB;AAE5D,QAAA,MAAM,MAAMC,kBAAS,cAAc;AAEzC,QAAM,WACL,QAAQ,OAAO,eACf,WAAW,QAAQ,OAAO;AAEvB,MAAA;AACA,MAAA;AACH,aACC,IAAI,QAAQ,QAAQ,UAAU,kBAC3B,IAAI,QAAQ,QAAQ,MAAM,CAAC,IAC3B,IAAI,QAAQ;AAAA,EAAA,QACf;AACD,UAAM,eAAe,oBAAoBC,gBAAK,SAAS,cAAc;AACrE,YAAQ,MAAM,YAAY;AAC1B,YAAQ,KACP,+CAA+CA,gBAAK,SACnD,cAAc,IACX;AAEL,YAAQ,KAAKC;;;;kBAIG;AAAA;AAAA;AAAA;AAAA,GAIf;AAEK,UAAA;AAAA,EACN;AAGD,MAAI,0BAA0B;AACxB,QAAA,6BAA6B,CAAC,CAAC;AAAA,IACpC,GAAI,OAAO,WAAW;IACtB,GAAI,OAAO,gBAAgB;IAC1B,KAAK,CAAC,iBAA4C;AAC/C,QAAA,OAAO,iBAAiB,UAAU;AACrC,aAAO,iBAAiB;AAAA,IACd,WAAA,MAAM,QAAQ,YAAY,GAAG;AACb,gCAAA,CAAC,CAAC,aAAa,CAAC;AAEnC,aAAA,aAAa,CAAC,MAAM;AAAA,IAC3B;AAEM,WAAA;AAAA,EAAA,CACP;AAED,MAAI,CAAC,4BAA4B;AAChC,WAAO,iBAAP,OAAO,eAAiB;AACjB,WAAA,aAAa,KAAK,YAAY;AAAA,EACrC;AAGD,QAAM,uBAAuB;AAC7B,QAAM,yBAAyB;AAC/B,MAAI,CAAC,yBAAyB;AAE7B,QAAI,QAAQ,KAAK;AAAA,MAChB,MAAM;AAAA,MACN,UAAU;AAAA,IAAA,CACV;AACD,QAAI,QAAQ,KAAK;AAAA,MAChB,MAAM;AAAA,MACN,UAAU;AAAA,IAAA,CACV;AAGD,QAAI,OAAO,SAAS;AACnB,aAAO,QAAQ,WAAWC,SAAS,SAAA,IAAI,oBAAoB;AAAA,IAAA,OACrD;AACN,aAAO,UAAU;AAAA,QAChB,UAAUA,SAAAA,SAAS,IAAI,oBAAoB;AAAA,QAC3C,QAAQ;AAAA,MAAA;AAAA,IAET;AAAA,EACD;AAED,QAAM,MAAM,UAAU,MAAM,IAAI,OAAO;AACvC,MAAI,EAAE,KAAA,IAASC,SAAA,aAAa,GAAG;AAExB,SAAA,KAAK,QAAQ,sBAAsB,sBAAsB;AAChE,QAAMC,oBAAiB;AAAA,IACtB,UAAU;AAAA,IACV,UAAU;AAAA,IACV,QAAQ,QAAQ;AAAA,IAChB;AAAA,EAAA,CACA;AACF;AAIA,MAAM,2BAA2B,OAAO,EACvC,SACA,cACkC;AAC5B,QAAA,0BAA0B,MAAMN,uBAAoB;AAAA,IACzD,UAAU;AAAA,IACV;AAAA,EAAA,CACA;AAED,QAAM,WAAWE,gBAAK,KACrB,0BAA0B,cAAc,SACxC,qBAAqB;AAGtB,MAAI,MAAMF,GAAAA,oBAAoB,EAAE,UAAU,QAAS,CAAA,GAAG;AACrD;AAAA,EACA;AAED,QAAM,WAAWG,WAAW,YAAA,OAAA,KAAA,WAAA,CAAA,mbAAA,CAAA,EAAA;AAsB5B,QAAMG,oBAAiB;AAAA,IACtB;AAAA,IACA;AAAA,IACA,QAAQ,QAAQ;AAAA,IAChB;AAAA,EAAA,CACA;AACF;AAEA,MAAM,2BAA2B,OAAO,EACvC,SACA,SACA,cACwC;;AACxC,QAAM,kBAAkB,MAAMC,qBAAAA,qBAAqB,EAAE,QAAS,CAAA;AACxD,QAAA,UAAU,MAAM,QAAQ;AAG9B,GAAAC,MAAA,QAAQ,QAAO,2BAAfA,IAAe,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;AAEO,MAAM,cAA8C,OAC1D,EAAE,qBAAqB,qBAAA,GACvB,YACG;AAEFC,sCAAA,MAAM,QAAQ,WAAW;AAAA,IACxB,oBAAoB,EAAE,qBAAqB,sBAAsB;AAAA,IACjE,uBAAuB,OAAO;AAAA,IAC9B,yBAAyB,OAAO;AAAA,IAChC,yBAAyB,OAAO;AAAA,EAChC,CAAA,CAAC;AAEJ;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as path from "node:path";
|
|
2
2
|
import { checkHasProjectFile, writeProjectFile } from "@slicemachine/plugin-kit/fs";
|
|
3
3
|
import { stripIndent } from "common-tags";
|
|
4
|
-
import { loadFile,
|
|
4
|
+
import { loadFile, builders, generateCode } from "magicast";
|
|
5
5
|
import { rejectIfNecessary } from "../lib/rejectIfNecessary.js";
|
|
6
6
|
import { checkHasSrcDirectory } from "../lib/checkHasSrcDirectory.js";
|
|
7
7
|
var __freeze = Object.freeze;
|
|
@@ -17,7 +17,7 @@ const installDependencies = async ({ installDependencies: installDependencies2 }
|
|
|
17
17
|
dev: true
|
|
18
18
|
});
|
|
19
19
|
};
|
|
20
|
-
const configurePrismicModule = async ({ helpers, project }) => {
|
|
20
|
+
const configurePrismicModule = async ({ helpers, options, project }) => {
|
|
21
21
|
let nuxtConfigFilename = "nuxt.config.js";
|
|
22
22
|
if (!await checkHasProjectFile({ filename: nuxtConfigFilename, helpers })) {
|
|
23
23
|
nuxtConfigFilename = "nuxt.config.ts";
|
|
@@ -63,17 +63,35 @@ const configurePrismicModule = async ({ helpers, project }) => {
|
|
|
63
63
|
config.buildModules || (config.buildModules = []);
|
|
64
64
|
config.buildModules.push(NUXT_PRISMIC);
|
|
65
65
|
}
|
|
66
|
+
const ENDPOINT_REPLACE_KEY = "___prismicEndpoint___";
|
|
67
|
+
const ENDPOINT_REPLACE_VALUE = "apiEndpoint || repositoryName";
|
|
66
68
|
if (!hasInlinedConfiguration) {
|
|
69
|
+
mod.imports.$add({
|
|
70
|
+
from: "./slicemachine.config.json",
|
|
71
|
+
imported: "apiEndpoint"
|
|
72
|
+
});
|
|
73
|
+
mod.imports.$add({
|
|
74
|
+
from: "./slicemachine.config.json",
|
|
75
|
+
imported: "repositoryName"
|
|
76
|
+
});
|
|
67
77
|
if (config.prismic) {
|
|
68
|
-
config.prismic.endpoint =
|
|
78
|
+
config.prismic.endpoint = builders.raw(ENDPOINT_REPLACE_KEY);
|
|
69
79
|
} else {
|
|
70
80
|
config.prismic = {
|
|
71
|
-
endpoint,
|
|
81
|
+
endpoint: builders.raw(ENDPOINT_REPLACE_KEY),
|
|
72
82
|
modern: true
|
|
73
83
|
};
|
|
74
84
|
}
|
|
75
85
|
}
|
|
76
|
-
|
|
86
|
+
const ast = "$ast" in mod ? mod.$ast : mod;
|
|
87
|
+
let { code } = generateCode(ast);
|
|
88
|
+
code = code.replace(ENDPOINT_REPLACE_KEY, ENDPOINT_REPLACE_VALUE);
|
|
89
|
+
await writeProjectFile({
|
|
90
|
+
filename: nuxtConfigFilename,
|
|
91
|
+
contents: code,
|
|
92
|
+
format: options.format,
|
|
93
|
+
helpers
|
|
94
|
+
});
|
|
77
95
|
};
|
|
78
96
|
const createSliceSimulatorPage = async ({ helpers, options }) => {
|
|
79
97
|
const srcPagesDirectoryExists = await checkHasProjectFile({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-init.js","sources":["../../../src/hooks/project-init.ts"],"sourcesContent":["import * as path from \"node:path\";\nimport type {\n\tProjectInitHook,\n\tProjectInitHookData,\n\tSliceMachineContext,\n} from \"@slicemachine/plugin-kit\";\nimport {\n\tcheckHasProjectFile,\n\twriteProjectFile,\n} from \"@slicemachine/plugin-kit/fs\";\nimport { stripIndent } from \"common-tags\";\nimport {
|
|
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 { stripIndent } from \"common-tags\";\nimport { builders, generateCode, loadFile } from \"magicast\";\n\nimport { rejectIfNecessary } from \"../lib/rejectIfNecessary\";\nimport { checkHasSrcDirectory } from \"../lib/checkHasSrcDirectory\";\n\nimport type { PluginOptions } from \"../types\";\n\nconst NUXT_PRISMIC = \"@nuxtjs/prismic\";\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[NUXT_PRISMIC]: \"^1.4.2\",\n\t\t},\n\t\tdev: true,\n\t});\n};\n\ntype ConfigurePrismicModuleArgs = SliceMachineContext<PluginOptions>;\n\nconst configurePrismicModule = async ({\n\thelpers,\n\toptions,\n\tproject,\n}: ConfigurePrismicModuleArgs) => {\n\tlet nuxtConfigFilename = \"nuxt.config.js\";\n\n\tif (!(await checkHasProjectFile({ filename: nuxtConfigFilename, helpers }))) {\n\t\tnuxtConfigFilename = \"nuxt.config.ts\";\n\n\t\t// nuxt.config.* not found\n\t\tif (\n\t\t\t!(await checkHasProjectFile({ filename: nuxtConfigFilename, helpers }))\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\tconst nuxtConfigPath = helpers.joinPathFromRoot(nuxtConfigFilename);\n\n\tconst mod = await loadFile(nuxtConfigPath);\n\n\tconst endpoint =\n\t\tproject.config.apiEndpoint ||\n\t\t`https://${project.config.repositoryName}.cdn.prismic.io/api/v2`;\n\n\tlet config;\n\ttry {\n\t\tconfig =\n\t\t\tmod.exports.default.$type === \"function-call\"\n\t\t\t\t? mod.exports.default.$args[0]\n\t\t\t\t: mod.exports.default;\n\t} catch {\n\t\tconst errorMessage = `Failed to update ${path.basename(nuxtConfigPath)}`;\n\t\tconsole.error(errorMessage);\n\t\tconsole.warn(\n\t\t\t`Ensure that the following has been added to ${path.basename(\n\t\t\t\tnuxtConfigPath,\n\t\t\t)}.`,\n\t\t);\n\t\tconsole.warn(stripIndent`\n\t\t\t{\n\t\t\t\tbuildModules: [\"@nuxtjs/prismic\"],\n\t\t\t\tprismic: {\n\t\t\t\t\tendpoint: \"${endpoint}\",\n\t\t\t\t\tmodern: true\n\t\t\t\t}\n\t\t\t}\n\t\t`);\n\n\t\tthrow errorMessage;\n\t}\n\n\t// Register Prismic module\n\tlet hasInlinedConfiguration = false;\n\tconst hasPrismicModuleRegistered = !![\n\t\t...(config.modules || []),\n\t\t...(config.buildModules || []),\n\t].find((registration: string | [string, unknown]) => {\n\t\tif (typeof registration === \"string\") {\n\t\t\treturn registration === NUXT_PRISMIC;\n\t\t} else if (Array.isArray(registration)) {\n\t\t\thasInlinedConfiguration = !!registration[1];\n\n\t\t\treturn registration[0] === NUXT_PRISMIC;\n\t\t}\n\n\t\treturn false;\n\t});\n\n\tif (!hasPrismicModuleRegistered) {\n\t\tconfig.buildModules ||= [];\n\t\tconfig.buildModules.push(NUXT_PRISMIC);\n\t}\n\n\t// Append Prismic module configuration\n\tconst ENDPOINT_REPLACE_KEY = \"___prismicEndpoint___\";\n\tconst ENDPOINT_REPLACE_VALUE = \"apiEndpoint || repositoryName\";\n\tif (!hasInlinedConfiguration) {\n\t\t// Import Slice Machine configuration\n\t\tmod.imports.$add({\n\t\t\tfrom: \"./slicemachine.config.json\",\n\t\t\timported: \"apiEndpoint\",\n\t\t});\n\t\tmod.imports.$add({\n\t\t\tfrom: \"./slicemachine.config.json\",\n\t\t\timported: \"repositoryName\",\n\t\t});\n\n\t\t// Add inline configuration\n\t\tif (config.prismic) {\n\t\t\tconfig.prismic.endpoint = builders.raw(ENDPOINT_REPLACE_KEY);\n\t\t} else {\n\t\t\tconfig.prismic = {\n\t\t\t\tendpoint: builders.raw(ENDPOINT_REPLACE_KEY),\n\t\t\t\tmodern: true,\n\t\t\t};\n\t\t}\n\t}\n\n\tconst ast = \"$ast\" in mod ? mod.$ast : mod;\n\tlet { code } = generateCode(ast);\n\t// This is a workaround to magicast not supporting \"LogicalExpression\" node type\n\tcode = code.replace(ENDPOINT_REPLACE_KEY, ENDPOINT_REPLACE_VALUE);\n\tawait writeProjectFile({\n\t\tfilename: nuxtConfigFilename,\n\t\tcontents: code,\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 srcPagesDirectoryExists = await checkHasProjectFile({\n\t\tfilename: \"src/pages\",\n\t\thelpers,\n\t});\n\n\tconst filename = path.join(\n\t\tsrcPagesDirectoryExists ? \"src/pages\" : \"pages\",\n\t\t\"slice-simulator.vue\",\n\t);\n\n\tif (await checkHasProjectFile({ filename, helpers })) {\n\t\treturn;\n\t}\n\n\tconst contents = stripIndent`\n\t\t<template>\n\t\t\t<SliceSimulator v-slot=\"{ slices }\">\n\t\t\t\t<SliceZone :slices=\"slices\" :components=\"components\" />\n\t\t\t</SliceSimulator>\n\t\t</template>\n\n\t\t<script>\n\t\timport { SliceSimulator } from \"@slicemachine/adapter-nuxt2/dist/simulator.cjs\";\n\t\timport { components } from \"~/slices\";\n\n\t\texport default {\n\t\t\tcomponents: {\n\t\t\t\tSliceSimulator,\n\t\t\t},\n\t\t\tdata () {\n\t\t\t\treturn { components };\n\t\t\t},\n\t\t};\n\t\t</script>\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\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\tconfigurePrismicModule(context),\n\t\t\tcreateSliceSimulatorPage(context),\n\t\t\tmodifySliceMachineConfig(context),\n\t\t]),\n\t);\n};\n"],"names":["installDependencies","_a"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@slicemachine/adapter-nuxt2",
|
|
3
|
-
"version": "0.3.39-beta.
|
|
3
|
+
"version": "0.3.39-beta.6",
|
|
4
4
|
"description": "Slice Machine adapter for Nuxt 2.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"typescript",
|
|
@@ -61,12 +61,12 @@
|
|
|
61
61
|
"dependencies": {
|
|
62
62
|
"@prismicio/simulator": "^0.1.4",
|
|
63
63
|
"@prismicio/types-internal": "^2.2.0",
|
|
64
|
-
"@slicemachine/plugin-kit": "0.4.39-beta.
|
|
64
|
+
"@slicemachine/plugin-kit": "0.4.39-beta.6",
|
|
65
65
|
"common-tags": "^1.8.2",
|
|
66
66
|
"fp-ts": "^2.13.1",
|
|
67
67
|
"io-ts": "^2.2.20",
|
|
68
68
|
"io-ts-types": "^0.5.19",
|
|
69
|
-
"magicast": "^0.
|
|
69
|
+
"magicast": "^0.3.3",
|
|
70
70
|
"monocle-ts": "^2.3.13",
|
|
71
71
|
"newtype-ts": "^0.3.5",
|
|
72
72
|
"pascal-case": "^3.1.2",
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
writeProjectFile,
|
|
10
10
|
} from "@slicemachine/plugin-kit/fs";
|
|
11
11
|
import { stripIndent } from "common-tags";
|
|
12
|
-
import {
|
|
12
|
+
import { builders, generateCode, loadFile } from "magicast";
|
|
13
13
|
|
|
14
14
|
import { rejectIfNecessary } from "../lib/rejectIfNecessary";
|
|
15
15
|
import { checkHasSrcDirectory } from "../lib/checkHasSrcDirectory";
|
|
@@ -37,6 +37,7 @@ type ConfigurePrismicModuleArgs = SliceMachineContext<PluginOptions>;
|
|
|
37
37
|
|
|
38
38
|
const configurePrismicModule = async ({
|
|
39
39
|
helpers,
|
|
40
|
+
options,
|
|
40
41
|
project,
|
|
41
42
|
}: ConfigurePrismicModuleArgs) => {
|
|
42
43
|
let nuxtConfigFilename = "nuxt.config.js";
|
|
@@ -109,18 +110,41 @@ const configurePrismicModule = async ({
|
|
|
109
110
|
config.buildModules.push(NUXT_PRISMIC);
|
|
110
111
|
}
|
|
111
112
|
|
|
113
|
+
// Append Prismic module configuration
|
|
114
|
+
const ENDPOINT_REPLACE_KEY = "___prismicEndpoint___";
|
|
115
|
+
const ENDPOINT_REPLACE_VALUE = "apiEndpoint || repositoryName";
|
|
112
116
|
if (!hasInlinedConfiguration) {
|
|
117
|
+
// Import Slice Machine configuration
|
|
118
|
+
mod.imports.$add({
|
|
119
|
+
from: "./slicemachine.config.json",
|
|
120
|
+
imported: "apiEndpoint",
|
|
121
|
+
});
|
|
122
|
+
mod.imports.$add({
|
|
123
|
+
from: "./slicemachine.config.json",
|
|
124
|
+
imported: "repositoryName",
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
// Add inline configuration
|
|
113
128
|
if (config.prismic) {
|
|
114
|
-
config.prismic.endpoint =
|
|
129
|
+
config.prismic.endpoint = builders.raw(ENDPOINT_REPLACE_KEY);
|
|
115
130
|
} else {
|
|
116
131
|
config.prismic = {
|
|
117
|
-
endpoint,
|
|
132
|
+
endpoint: builders.raw(ENDPOINT_REPLACE_KEY),
|
|
118
133
|
modern: true,
|
|
119
134
|
};
|
|
120
135
|
}
|
|
121
136
|
}
|
|
122
137
|
|
|
123
|
-
|
|
138
|
+
const ast = "$ast" in mod ? mod.$ast : mod;
|
|
139
|
+
let { code } = generateCode(ast);
|
|
140
|
+
// This is a workaround to magicast not supporting "LogicalExpression" node type
|
|
141
|
+
code = code.replace(ENDPOINT_REPLACE_KEY, ENDPOINT_REPLACE_VALUE);
|
|
142
|
+
await writeProjectFile({
|
|
143
|
+
filename: nuxtConfigFilename,
|
|
144
|
+
contents: code,
|
|
145
|
+
format: options.format,
|
|
146
|
+
helpers,
|
|
147
|
+
});
|
|
124
148
|
};
|
|
125
149
|
|
|
126
150
|
type CreateSliceSimulatorPageArgs = SliceMachineContext<PluginOptions>;
|