mono-jsx 0.10.0-beta.6 → 0.10.0-beta.7

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/jsx-runtime.mjs CHANGED
@@ -16,7 +16,7 @@ var $setup = /* @__PURE__ */ Symbol.for("mono.setup");
16
16
  var $rpc = /* @__PURE__ */ Symbol.for("mono.rpc");
17
17
 
18
18
  // version.ts
19
- var VERSION = "0.10.0-beta.6";
19
+ var VERSION = "0.10.0-beta.7";
20
20
 
21
21
  // runtime/index.ts
22
22
  var EVENT = 1;
@@ -223,6 +223,7 @@ var IdGen = class extends Map {
223
223
  var cdn = "https://raw.esm.sh";
224
224
  var encoder = new TextEncoder();
225
225
  var voidTags = new Set("area,base,br,col,embed,hr,img,input,keygen,link,meta,param,source,track,wbr".split(","));
226
+ var defaultMetadata = { viewport: "width=device-width, initial-scale=1.0" };
226
227
  var cache = /* @__PURE__ */ new Map();
227
228
  var componentsMap = new IdGen();
228
229
  var subtle = crypto.subtle;
@@ -843,12 +844,12 @@ async function renderNode(rc, node, stripSlotProp) {
843
844
  }
844
845
  metadata = await getMetadata.call(createInvokeScope(request, context, session));
845
846
  }
846
- let buf = "";
847
- for (const [key, value] of Object.entries(Object.assign({}, rc.metadata, metadata))) {
847
+ let buf = '<meta charset="utf-8">';
848
+ for (const [key, value] of Object.entries(Object.assign(defaultMetadata, rc.metadata, metadata))) {
848
849
  if (key === "title") {
849
- buf += "<title>" + value + "</title>";
850
+ buf += "<title>" + escapeHTML(value) + "</title>";
850
851
  } else {
851
- buf += "<meta name=" + toAttrStringLit(key) + " content=" + toAttrStringLit(value) + ">";
852
+ buf += "<meta " + (key.startsWith("og:") ? "property" : "name") + "=" + toAttrStringLit(key) + " content=" + toAttrStringLit(value) + ">";
852
853
  }
853
854
  }
854
855
  write(buf);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mono-jsx",
3
- "version": "0.10.0-beta.6",
3
+ "version": "0.10.0-beta.7",
4
4
  "description": "`<html>` as a `Response` (Yet another JSX runtime for server-side rendering).",
5
5
  "type": "module",
6
6
  "module": "./index.mjs",
@@ -19,4 +19,5 @@ declare global {
19
19
  }
20
20
  type ComponentElement = Mono.ComponentElement;
21
21
  type RouterElement = Mono.RouterElement;
22
+ type Metadata = import("./jsx.d.ts").Metadata;
22
23
  }
package/types/jsx.d.ts CHANGED
@@ -56,10 +56,38 @@ export type VNode = readonly [
56
56
  $vnode: symbol,
57
57
  ];
58
58
 
59
+ export type Metadata = {
60
+ title?: string;
61
+ description?: string;
62
+ keywords?: string;
63
+ robots?: string;
64
+ canonical?: string;
65
+ author?: string;
66
+ "og:title"?: string;
67
+ "og:description"?: string;
68
+ "og:image"?: string;
69
+ "og:image:type"?: string;
70
+ "og:image:width"?: string;
71
+ "og:image:height"?: string;
72
+ "og:image:alt"?: string;
73
+ "og:url"?: string;
74
+ "og:type"?: string;
75
+ "og:locale"?: string;
76
+ "og:site_name"?: string;
77
+ "twitter:card"?: "summary_large_image" | "summary" | "app" | "player";
78
+ "twitter:title"?: string;
79
+ "twitter:description"?: string;
80
+ "twitter:image"?: string;
81
+ "twitter:imagewidth"?: string;
82
+ "twitter:imageheight"?: string;
83
+ "twitter:site"?: `@${string}`;
84
+ [key: string]: string | undefined;
85
+ };
86
+
59
87
  export interface ComponentConfig {
60
88
  FormHandler?: ComponentType<FormData>;
61
- getMetadata?: () => MaybePromise<Record<string, string>>;
62
- metadata?: Record<string, string>;
89
+ getMetadata?: () => MaybePromise<Metadata>;
90
+ metadata?: Metadata;
63
91
  dynamic?: boolean;
64
92
  rendering?: string;
65
93
  }