@slicemachine/adapter-sveltekit 0.3.78-beta.9 → 0.3.78

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.
Files changed (70) hide show
  1. package/dist/AlternateGrid/javascript.4.svelte +227 -0
  2. package/dist/AlternateGrid/javascript.svelte +6 -5
  3. package/dist/AlternateGrid/typescript.4.svelte +224 -0
  4. package/dist/AlternateGrid/typescript.svelte +9 -4
  5. package/dist/CallToAction/javascript.4.svelte +127 -0
  6. package/dist/CallToAction/javascript.svelte +6 -5
  7. package/dist/CallToAction/typescript.4.svelte +124 -0
  8. package/dist/CallToAction/typescript.svelte +4 -2
  9. package/dist/CustomerLogos/javascript.4.svelte +124 -0
  10. package/dist/CustomerLogos/javascript.svelte +6 -5
  11. package/dist/CustomerLogos/typescript.4.svelte +121 -0
  12. package/dist/CustomerLogos/typescript.svelte +4 -2
  13. package/dist/Hero/javascript.4.svelte +190 -0
  14. package/dist/Hero/javascript.svelte +5 -4
  15. package/dist/Hero/typescript.4.svelte +187 -0
  16. package/dist/Hero/typescript.svelte +4 -2
  17. package/dist/hooks/documentation-read.cjs +14 -51
  18. package/dist/hooks/documentation-read.cjs.map +1 -1
  19. package/dist/hooks/documentation-read.js +14 -51
  20. package/dist/hooks/documentation-read.js.map +1 -1
  21. package/dist/hooks/documentation-read.templates.cjs +114 -0
  22. package/dist/hooks/documentation-read.templates.cjs.map +1 -0
  23. package/dist/hooks/documentation-read.templates.d.ts +9 -0
  24. package/dist/hooks/documentation-read.templates.js +114 -0
  25. package/dist/hooks/documentation-read.templates.js.map +1 -0
  26. package/dist/hooks/project-init.cjs +44 -143
  27. package/dist/hooks/project-init.cjs.map +1 -1
  28. package/dist/hooks/project-init.js +44 -143
  29. package/dist/hooks/project-init.js.map +1 -1
  30. package/dist/hooks/project-init.templates.cjs +181 -0
  31. package/dist/hooks/project-init.templates.cjs.map +1 -0
  32. package/dist/hooks/project-init.templates.d.ts +12 -0
  33. package/dist/hooks/project-init.templates.js +181 -0
  34. package/dist/hooks/project-init.templates.js.map +1 -0
  35. package/dist/hooks/slice-create.cjs +5 -52
  36. package/dist/hooks/slice-create.cjs.map +1 -1
  37. package/dist/hooks/slice-create.js +5 -52
  38. package/dist/hooks/slice-create.js.map +1 -1
  39. package/dist/hooks/slice-create.templates.cjs +61 -0
  40. package/dist/hooks/slice-create.templates.cjs.map +1 -0
  41. package/dist/hooks/slice-create.templates.d.ts +6 -0
  42. package/dist/hooks/slice-create.templates.js +61 -0
  43. package/dist/hooks/slice-create.templates.js.map +1 -0
  44. package/dist/lib/getSvelteMajor.cjs +38 -0
  45. package/dist/lib/getSvelteMajor.cjs.map +1 -0
  46. package/dist/lib/getSvelteMajor.d.ts +1 -0
  47. package/dist/lib/getSvelteMajor.js +16 -0
  48. package/dist/lib/getSvelteMajor.js.map +1 -0
  49. package/dist/lib/requireResolve.cjs +16 -0
  50. package/dist/lib/requireResolve.cjs.map +1 -0
  51. package/dist/lib/requireResolve.d.ts +10 -0
  52. package/dist/lib/requireResolve.js +16 -0
  53. package/dist/lib/requireResolve.js.map +1 -0
  54. package/dist/plugin.cjs +4 -2
  55. package/dist/plugin.cjs.map +1 -1
  56. package/dist/plugin.js +4 -2
  57. package/dist/plugin.js.map +1 -1
  58. package/dist/simulator/SliceSimulator.svelte +3 -2
  59. package/dist/simulator/SliceSimulator.svelte.d.ts +7 -19
  60. package/package.json +8 -8
  61. package/src/hooks/documentation-read.templates.ts +170 -0
  62. package/src/hooks/documentation-read.ts +21 -59
  63. package/src/hooks/project-init.templates.ts +208 -0
  64. package/src/hooks/project-init.ts +57 -147
  65. package/src/hooks/slice-create.templates.ts +103 -0
  66. package/src/hooks/slice-create.ts +7 -66
  67. package/src/lib/getSvelteMajor.ts +23 -0
  68. package/src/lib/requireResolve.ts +30 -0
  69. package/src/plugin.ts +5 -2
  70. package/src/simulator/SliceSimulator.svelte +3 -2
@@ -8,14 +8,14 @@ import {
8
8
  writeSliceFile,
9
9
  writeSliceModel,
10
10
  } from "@slicemachine/plugin-kit/fs";
11
- import { source } from "common-tags";
12
11
 
13
12
  import { checkIsTypeScriptProject } from "../lib/checkIsTypeScriptProject";
14
- import { pascalCase } from "../lib/pascalCase";
13
+ import { getSvelteMajor } from "../lib/getSvelteMajor";
15
14
  import { rejectIfNecessary } from "../lib/rejectIfNecessary";
16
15
  import { upsertSliceLibraryIndexFile } from "../lib/upsertSliceLibraryIndexFile";
17
16
 
18
17
  import type { PluginOptions } from "../types";
18
+ import { sliceTemplate } from "./slice-create.templates";
19
19
 
20
20
  type Args = {
21
21
  data: SliceCreateHookData;
@@ -27,71 +27,12 @@ const createComponentFile = async ({
27
27
  actions,
28
28
  options,
29
29
  }: Args) => {
30
- const pascalName = pascalCase(data.model.name);
30
+ const { model, componentContents } = data;
31
31
 
32
- let contents: string;
33
-
34
- const isTypeScriptProject = await checkIsTypeScriptProject({
35
- helpers,
36
- options,
37
- });
38
-
39
- const placeholder = `
40
- Placeholder component for {slice.slice_type} (variation: {slice.variation}) slices.
41
- <br />
42
- <strong>You can edit this slice directly in your code editor.</strong>
43
- <!--
44
- 💡 Use Prismic MCP with your code editor
45
-
46
- Get AI-powered help to build your slice components — based on your actual model.
47
-
48
- ▶️ Setup:
49
- 1. Add a new MCP Server in your code editor:
50
-
51
- {
52
- "mcpServers": {
53
- "Prismic MCP": {
54
- "command": "npx",
55
- "args": ["-y", "@prismicio/mcp-server"]
56
- }
57
- }
58
- }
59
-
60
- 2. Select a model optimized for coding (e.g. Claude 3.7 Sonnet or similar)
61
-
62
- ✅ Then open your slice file and ask your code editor:
63
- "Code this slice"
64
-
65
- Your code editor reads your slice model and helps you code faster ⚡
66
- 📚 Give your feedback: https://community.prismic.io/t/help-us-shape-the-future-of-slice-creation/19505
67
- -->`;
68
-
69
- if (data.componentContents) {
70
- contents = data.componentContents;
71
- } else if (isTypeScriptProject) {
72
- contents = source`
73
- <script lang="ts">
74
- import type { Content } from '@prismicio/client';
75
-
76
- export let slice: Content.${pascalName}Slice;
77
- </script>
78
-
79
- <section data-slice-type={slice.slice_type} data-slice-variation={slice.variation}>
80
- ${placeholder}
81
- </section>
82
- `;
83
- } else {
84
- contents = source`
85
- <script>
86
- /** @type {import("@prismicio/client").Content.${pascalName}Slice} */
87
- export let slice;
88
- </script>
89
-
90
- <section data-slice-type={slice.slice_type} data-slice-variation={slice.variation}>
91
- ${placeholder}
92
- </section>
93
- `;
94
- }
32
+ const typescript = await checkIsTypeScriptProject({ helpers, options });
33
+ const contents =
34
+ componentContents ??
35
+ sliceTemplate({ model, typescript, version: await getSvelteMajor() });
95
36
 
96
37
  await writeSliceFile({
97
38
  libraryID: data.libraryID,
@@ -0,0 +1,23 @@
1
+ import { join } from "node:path";
2
+
3
+ import { requireResolve } from "./requireResolve";
4
+
5
+ export const getSvelteMajor = async (): Promise<number> => {
6
+ // A dynamic import lets us easily mock the module.
7
+ const { readFile } = await import("node:fs/promises");
8
+
9
+ const packageJSONPath = requireResolve(
10
+ "svelte/package.json",
11
+ join(process.cwd(), "package.json"),
12
+ );
13
+ const { version } = JSON.parse(await readFile(packageJSONPath, "utf8"));
14
+
15
+ const major = Number.parseInt(version.split(".")[0]);
16
+ if (major === Number.NaN) {
17
+ throw new Error(
18
+ `Unable to parse svelte's installed version number: "${version}"`,
19
+ );
20
+ }
21
+
22
+ return major;
23
+ };
@@ -0,0 +1,30 @@
1
+ import _module, { createRequire } from "node:module";
2
+
3
+ /**
4
+ * Resolves a module path with `createRequire().resolve()` with Yarn PnP
5
+ * support.
6
+ *
7
+ * @param id - Module to resolve.
8
+ * @param from - Location to resolve the module from.
9
+ *
10
+ * @returns - Resolved module path.
11
+ */
12
+ export const requireResolve = (id: string, from: string): string => {
13
+ let resolvedID = id;
14
+
15
+ // Support Yarn PnP
16
+ if (
17
+ process.versions.pnp &&
18
+ "findPnpApi" in _module &&
19
+ typeof _module.findPnpApi === "function"
20
+ ) {
21
+ const pnpApi = _module.findPnpApi(from);
22
+ if (pnpApi) {
23
+ resolvedID = pnpApi.resolveRequest(id, from);
24
+ }
25
+ }
26
+
27
+ const require = createRequire(from);
28
+
29
+ return require.resolve(resolvedID);
30
+ };
package/src/plugin.ts CHANGED
@@ -44,6 +44,7 @@ import * as Hero from "./sliceTemplates/Hero";
44
44
  import * as CallToAction from "./sliceTemplates/CallToAction";
45
45
  import * as AlternateGrid from "./sliceTemplates/AlternateGrid";
46
46
  import * as CustomerLogos from "./sliceTemplates/CustomerLogos";
47
+ import { getSvelteMajor } from "./lib/getSvelteMajor";
47
48
 
48
49
  export const plugin = defineSliceMachinePlugin<PluginOptions>({
49
50
  meta: {
@@ -200,14 +201,16 @@ export const plugin = defineSliceMachinePlugin<PluginOptions>({
200
201
  ////////////////////////////////////////////////////////////////
201
202
 
202
203
  hook("slice-template-library:read", async (data, context) => {
204
+ const version = await getSvelteMajor();
205
+
203
206
  return await readSliceTemplateLibrary({
204
207
  ...data,
205
208
  ...context,
206
209
  dirName: path.dirname(fileURLToPath(new URL(import.meta.url))),
207
210
  templates: [Hero, CustomerLogos, AlternateGrid, CallToAction],
208
211
  componentFileNames: {
209
- js: "javascript.svelte",
210
- ts: "typescript.svelte",
212
+ js: version <= 4 ? "javascript.4.svelte" : "javascript.svelte",
213
+ ts: version <= 4 ? "typescript.4.svelte" : "typescript.svelte",
211
214
  },
212
215
  });
213
216
  });
@@ -1,4 +1,4 @@
1
- <script>
1
+ <script lang="ts">
2
2
  import {
3
3
  SimulatorManager,
4
4
  StateEventType,
@@ -10,13 +10,14 @@
10
10
  simulatorClass,
11
11
  simulatorRootClass,
12
12
  } from "@prismicio/simulator/kit";
13
+ import { type SliceZone } from "@prismicio/client";
13
14
 
14
15
  const defaultProps = getDefaultProps();
15
16
 
16
17
  export let zIndex = defaultProps.zIndex;
17
18
  export let background = defaultProps.background;
18
19
 
19
- let slices = getDefaultSlices();
20
+ let slices: SliceZone = getDefaultSlices();
20
21
  let message = getDefaultMessage();
21
22
 
22
23
  if (typeof window !== "undefined") {