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

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.8";
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,14 @@ 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))) {
848
- if (key === "title") {
849
- buf += "<title>" + value + "</title>";
850
- } else {
851
- buf += "<meta name=" + toAttrStringLit(key) + " content=" + toAttrStringLit(value) + ">";
847
+ let buf = '<meta charset="utf-8">';
848
+ for (const [key, value] of Object.entries(Object.assign(defaultMetadata, rc.metadata, metadata))) {
849
+ if (value) {
850
+ if (key === "title") {
851
+ buf += "<title>" + escapeHTML(value) + "</title>";
852
+ } else {
853
+ buf += "<meta " + (key.startsWith("og:") ? "property" : "name") + "=" + toAttrStringLit(key) + " content=" + toAttrStringLit(value) + ">";
854
+ }
852
855
  }
853
856
  }
854
857
  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.8",
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,39 @@ export type VNode = readonly [
56
56
  $vnode: symbol,
57
57
  ];
58
58
 
59
+ export type Metadata = {
60
+ viewport?: "width=device-width, initial-scale=1.0" | (string & {});
61
+ title?: string;
62
+ description?: string;
63
+ keywords?: string;
64
+ robots?: string;
65
+ canonical?: string;
66
+ author?: string;
67
+ "og:title"?: string;
68
+ "og:description"?: string;
69
+ "og:image"?: string;
70
+ "og:image:type"?: string;
71
+ "og:image:width"?: string;
72
+ "og:image:height"?: string;
73
+ "og:image:alt"?: string;
74
+ "og:url"?: string;
75
+ "og:type"?: string;
76
+ "og:locale"?: string;
77
+ "og:site_name"?: string;
78
+ "twitter:card"?: "summary_large_image" | "summary" | "app" | "player";
79
+ "twitter:title"?: string;
80
+ "twitter:description"?: string;
81
+ "twitter:image"?: string;
82
+ "twitter:imagewidth"?: string;
83
+ "twitter:imageheight"?: string;
84
+ "twitter:site"?: `@${string}`;
85
+ [key: string]: string | undefined;
86
+ };
87
+
59
88
  export interface ComponentConfig {
60
89
  FormHandler?: ComponentType<FormData>;
61
- getMetadata?: () => MaybePromise<Record<string, string>>;
62
- metadata?: Record<string, string>;
90
+ getMetadata?: () => MaybePromise<Metadata>;
91
+ metadata?: Metadata;
63
92
  dynamic?: boolean;
64
93
  rendering?: string;
65
94
  }
package/types/render.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  /// <reference path="./htmx.d.ts" />
2
2
 
3
- import type { ComponentType, MaybeModule } from "./jsx.d.ts";
3
+ import type { ComponentType, MaybeModule, Metadata } from "./jsx.d.ts";
4
4
 
5
5
  /**
6
6
  * Htmx extensions.
@@ -89,7 +89,7 @@ export interface RenderOptions extends Partial<HtmxExts> {
89
89
  /**
90
90
  * Global metadata.
91
91
  */
92
- metadata?: Record<string, string>;
92
+ metadata?: Metadata;
93
93
  /**
94
94
  * Current `Request` object to be passed to components.
95
95
  */