@primate/svelte 0.15.1 → 0.15.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@primate/svelte",
3
- "version": "0.15.1",
3
+ "version": "0.15.2",
4
4
  "description": "Primate Svelte module",
5
5
  "homepage": "https://primatejs.com/modules/svelte",
6
6
  "bugs": "https://github.com/primatejs/primate/issues",
@@ -3,15 +3,11 @@ import liveview from "./liveview.js";
3
3
 
4
4
  export default ({names, data}, options) => `
5
5
  import * as components from "app";
6
- const getComponents = names =>
7
- Object.entries(components).filter(([name, component]) =>
8
- names.includes(name))
9
- .map(([, component]) => component);
10
6
  let root = new components.${rootname}({
11
7
  target: document.body,
12
8
  hydrate: true,
13
9
  props: {
14
- components: getComponents([${names.map(name => `"${name}"`)}]),
10
+ components: [${names.map(name => `components.${name}`).join(", ")}],
15
11
  data: JSON.parse(${JSON.stringify(JSON.stringify(data))}),
16
12
  },
17
13
  });
@@ -8,7 +8,7 @@ window.addEventListener("DOMContentLoaded", _ => liveview((props, update) => {
8
8
  target: document.body,
9
9
  hydrate: true,
10
10
  props: {
11
- components: getComponents(props.names),
11
+ components: props.names.map(name => components[name]),
12
12
  data: props.data,
13
13
  update,
14
14
  },
package/src/module.js CHANGED
@@ -11,6 +11,7 @@ const endings = {
11
11
  js: ".svelte.js",
12
12
  };
13
13
 
14
+ const encoder = new TextEncoder();
14
15
  const hash = async (string, algorithm = "sha-256") => {
15
16
  const base = 16;
16
17
  const target_pad_length = 2;
@@ -34,8 +35,6 @@ const load = async path =>
34
35
  const make_component = base => async (name, props) =>
35
36
  ({name, component: await load(base.join(name)), props});
36
37
 
37
- const encoder = new TextEncoder();
38
-
39
38
  const handler = (name, props = {}, {status = Status.OK, page} = {}) =>
40
39
  async (app, {layouts = [], as_layout} = {}, request) => {
41
40
  const options = {
@@ -56,7 +55,6 @@ const handler = (name, props = {}, {status = Status.OK, page} = {}) =>
56
55
  const data = components.map(component => component.props);
57
56
  const names = await Promise.all(components.map(component =>
58
57
  normalize(component.name)));
59
-
60
58
  if (options.liveview && headers.get(app.liveview.header) !== undefined) {
61
59
  return new Response(JSON.stringify({names, data}), {
62
60
  status,
@@ -64,6 +62,7 @@ const handler = (name, props = {}, {status = Status.OK, page} = {}) =>
64
62
  "Content-Type": MediaType.APPLICATION_JSON},
65
63
  });
66
64
  }
65
+
67
66
  const root = paths.server.join(filename);
68
67
  const imported = (await import(root)).default;
69
68
  const {html} = imported.render({
@@ -74,7 +73,7 @@ const handler = (name, props = {}, {status = Status.OK, page} = {}) =>
74
73
  const code = client({names, data}, options);
75
74
 
76
75
  await app.publish({code, type, inline: true});
77
-
76
+ // needs to be called before app.render
78
77
  const headers$ = await app.headers();
79
78
 
80
79
  return new Response(await app.render({body: html, page}), {