one 1.2.51 → 1.2.52

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 (50) hide show
  1. package/dist/cjs/constants.cjs +3 -2
  2. package/dist/cjs/constants.js +3 -2
  3. package/dist/cjs/constants.js.map +1 -1
  4. package/dist/cjs/constants.native.js +4 -3
  5. package/dist/cjs/constants.native.js.map +1 -1
  6. package/dist/cjs/createApp.cjs +2 -1
  7. package/dist/cjs/createApp.js +3 -3
  8. package/dist/cjs/createApp.js.map +1 -1
  9. package/dist/cjs/server/ServerContextScript.cjs +3 -2
  10. package/dist/cjs/server/ServerContextScript.js +3 -3
  11. package/dist/cjs/server/ServerContextScript.js.map +1 -1
  12. package/dist/cjs/server/ServerContextScript.native.js +3 -2
  13. package/dist/cjs/server/ServerContextScript.native.js.map +1 -1
  14. package/dist/cjs/utils/htmlEscape.cjs +45 -0
  15. package/dist/cjs/utils/htmlEscape.js +39 -0
  16. package/dist/cjs/utils/htmlEscape.js.map +6 -0
  17. package/dist/cjs/utils/htmlEscape.native.js +49 -0
  18. package/dist/cjs/utils/htmlEscape.native.js.map +1 -0
  19. package/dist/esm/constants.js +3 -2
  20. package/dist/esm/constants.js.map +1 -1
  21. package/dist/esm/constants.mjs +3 -2
  22. package/dist/esm/constants.mjs.map +1 -1
  23. package/dist/esm/constants.native.js +3 -2
  24. package/dist/esm/constants.native.js.map +1 -1
  25. package/dist/esm/createApp.js +3 -2
  26. package/dist/esm/createApp.js.map +1 -1
  27. package/dist/esm/createApp.mjs +2 -1
  28. package/dist/esm/createApp.mjs.map +1 -1
  29. package/dist/esm/server/ServerContextScript.js +3 -2
  30. package/dist/esm/server/ServerContextScript.js.map +1 -1
  31. package/dist/esm/server/ServerContextScript.mjs +3 -2
  32. package/dist/esm/server/ServerContextScript.mjs.map +1 -1
  33. package/dist/esm/server/ServerContextScript.native.js +3 -2
  34. package/dist/esm/server/ServerContextScript.native.js.map +1 -1
  35. package/dist/esm/utils/htmlEscape.js +23 -0
  36. package/dist/esm/utils/htmlEscape.js.map +6 -0
  37. package/dist/esm/utils/htmlEscape.mjs +21 -0
  38. package/dist/esm/utils/htmlEscape.mjs.map +1 -0
  39. package/dist/esm/utils/htmlEscape.native.js +22 -0
  40. package/dist/esm/utils/htmlEscape.native.js.map +1 -0
  41. package/package.json +9 -9
  42. package/src/constants.ts +3 -2
  43. package/src/createApp.tsx +3 -2
  44. package/src/server/ServerContextScript.tsx +3 -2
  45. package/src/utils/htmlEscape.ts +35 -0
  46. package/types/constants.d.ts.map +1 -1
  47. package/types/createApp.d.ts.map +1 -1
  48. package/types/server/ServerContextScript.d.ts.map +1 -1
  49. package/types/utils/htmlEscape.d.ts +17 -0
  50. package/types/utils/htmlEscape.d.ts.map +1 -0
@@ -36,6 +36,7 @@ __export(constants_exports, {
36
36
  isWebServer: () => isWebServer
37
37
  });
38
38
  module.exports = __toCommonJS(constants_exports);
39
+ var import_htmlEscape = require("./utils/htmlEscape.cjs");
39
40
  const isWebClient = typeof window < "u",
40
41
  isWebServer = typeof window > "u",
41
42
  isNative = !1,
@@ -54,6 +55,6 @@ const isWebClient = typeof window < "u",
54
55
  } = {}) => `
55
56
  <script>globalThis['global'] = globalThis</script>
56
57
  <script>globalThis['__vxrnIsSPA'] = true</script>
57
- <script>globalThis["${SERVER_CONTEXT_KEY}"] = ${JSON.stringify(serverContext)}</script>
58
- <script>globalThis.__oneLoadedCSS = new Set(${JSON.stringify(serverContext.css || [])})</script>
58
+ <script>globalThis["${SERVER_CONTEXT_KEY}"] = ${(0, import_htmlEscape.safeJsonStringify)(serverContext)}</script>
59
+ <script>globalThis.__oneLoadedCSS = new Set(${(0, import_htmlEscape.safeJsonStringify)(serverContext.css || [])})</script>
59
60
  `;
@@ -30,12 +30,13 @@ __export(constants_exports, {
30
30
  isWebServer: () => isWebServer
31
31
  });
32
32
  module.exports = __toCommonJS(constants_exports);
33
+ var import_htmlEscape = require("./utils/htmlEscape");
33
34
  const isWebClient = typeof window < "u", isWebServer = typeof window > "u", isNative = !1, CACHE_KEY = `${process.env.ONE_CACHE_KEY ?? Math.round(Math.random() * 1e8)}`, LOADER_JS_POSTFIX_UNCACHED = "_vxrn_loader.js", LOADER_JS_POSTFIX_REGEX_STRING = `_\\d+${LOADER_JS_POSTFIX_UNCACHED}$`, LOADER_JS_POSTFIX_REGEX = new RegExp(LOADER_JS_POSTFIX_REGEX_STRING), LOADER_JS_POSTFIX = `_${CACHE_KEY}${LOADER_JS_POSTFIX_UNCACHED}`, PRELOAD_JS_POSTFIX = `_${CACHE_KEY}_preload.js`, CSS_PRELOAD_JS_POSTFIX = `_${CACHE_KEY}_preload_css.js`, VIRTUAL_SSR_CSS_ENTRY = "virtual:ssr-css.css", VIRTUAL_SSR_CSS_HREF = `/@id/__x00__${VIRTUAL_SSR_CSS_ENTRY}`, SERVER_CONTEXT_KEY = "__one_server_context__", getSpaHeaderElements = ({
34
35
  serverContext = {}
35
36
  } = {}) => `
36
37
  <script>globalThis['global'] = globalThis</script>
37
38
  <script>globalThis['__vxrnIsSPA'] = true</script>
38
- <script>globalThis["${SERVER_CONTEXT_KEY}"] = ${JSON.stringify(serverContext)}</script>
39
- <script>globalThis.__oneLoadedCSS = new Set(${JSON.stringify(serverContext.css || [])})</script>
39
+ <script>globalThis["${SERVER_CONTEXT_KEY}"] = ${(0, import_htmlEscape.safeJsonStringify)(serverContext)}</script>
40
+ <script>globalThis.__oneLoadedCSS = new Set(${(0, import_htmlEscape.safeJsonStringify)(serverContext.css || [])})</script>
40
41
  `;
41
42
  //# sourceMappingURL=constants.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/constants.ts"],
4
- "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEO,MAAM,cACgC,OAAO,SAAW,KAClD,cACgC,OAAO,SAAW,KAClD,WAAW,IAEX,YAAY,GAAG,QAAQ,IAAI,iBAAiB,KAAK,MAAM,KAAK,OAAO,IAAI,GAAW,CAAC,IAEnF,6BAA6B,mBAC7B,iCAAiC,QAAQ,0BAA0B,KACnE,0BAA0B,IAAI,OAAO,8BAA8B,GACnE,oBAAoB,IAAI,SAAS,GAAG,0BAA0B,IAE9D,qBAAqB,IAAI,SAAS,eAClC,yBAAyB,IAAI,SAAS,mBAGtC,wBAAwB,uBACxB,uBAAuB,eAAe,qBAAqB,IAE3D,qBAAqB,0BAErB,uBAAuB,CAAC;AAAA,EACnC,gBAAgB,CAAC;AACnB,IAEI,CAAC,MAAM;AAAA;AAAA;AAAA,wBAGa,kBAAkB,QAAQ,KAAK,UAAU,aAAa,CAAC;AAAA,gDAC/B,KAAK,UAAU,cAAc,OAAO,CAAC,CAAC,CAAC;AAAA;",
4
+ "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAkC;AAG3B,MAAM,cACgC,OAAO,SAAW,KAClD,cACgC,OAAO,SAAW,KAClD,WAAW,IAEX,YAAY,GAAG,QAAQ,IAAI,iBAAiB,KAAK,MAAM,KAAK,OAAO,IAAI,GAAW,CAAC,IAEnF,6BAA6B,mBAC7B,iCAAiC,QAAQ,0BAA0B,KACnE,0BAA0B,IAAI,OAAO,8BAA8B,GACnE,oBAAoB,IAAI,SAAS,GAAG,0BAA0B,IAE9D,qBAAqB,IAAI,SAAS,eAClC,yBAAyB,IAAI,SAAS,mBAGtC,wBAAwB,uBACxB,uBAAuB,eAAe,qBAAqB,IAE3D,qBAAqB,0BAErB,uBAAuB,CAAC;AAAA,EACnC,gBAAgB,CAAC;AACnB,IAEI,CAAC,MAAM;AAAA;AAAA;AAAA,wBAGa,kBAAkB,YAAQ,qCAAkB,aAAa,CAAC;AAAA,oDAClC,qCAAkB,cAAc,OAAO,CAAC,CAAC,CAAC;AAAA;",
5
5
  "names": []
6
6
  }
@@ -38,7 +38,8 @@ __export(constants_exports, {
38
38
  isWebServer: () => isWebServer
39
39
  });
40
40
  module.exports = __toCommonJS(constants_exports);
41
- var isWebClient = !1,
41
+ var import_htmlEscape = require("./utils/htmlEscape.native.js"),
42
+ isWebClient = !1,
42
43
  isWebServer = !1,
43
44
  isNative = !0,
44
45
  _process_env_ONE_CACHE_KEY,
@@ -59,8 +60,8 @@ var isWebClient = !1,
59
60
  return `
60
61
  <script>globalThis['global'] = globalThis</script>
61
62
  <script>globalThis['__vxrnIsSPA'] = true</script>
62
- <script>globalThis["${SERVER_CONTEXT_KEY}"] = ${JSON.stringify(serverContext)}</script>
63
- <script>globalThis.__oneLoadedCSS = new Set(${JSON.stringify(serverContext.css || [])})</script>
63
+ <script>globalThis["${SERVER_CONTEXT_KEY}"] = ${(0, import_htmlEscape.safeJsonStringify)(serverContext)}</script>
64
+ <script>globalThis.__oneLoadedCSS = new Set(${(0, import_htmlEscape.safeJsonStringify)(serverContext.css || [])})</script>
64
65
  `;
65
66
  };
66
67
  //# sourceMappingURL=constants.native.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","constants_exports","__export","CACHE_KEY","CSS_PRELOAD_JS_POSTFIX","LOADER_JS_POSTFIX","LOADER_JS_POSTFIX_REGEX","LOADER_JS_POSTFIX_REGEX_STRING","LOADER_JS_POSTFIX_UNCACHED","PRELOAD_JS_POSTFIX","SERVER_CONTEXT_KEY","VIRTUAL_SSR_CSS_ENTRY","VIRTUAL_SSR_CSS_HREF","getSpaHeaderElements","isNative","isWebClient","isWebServer","module","exports","_process_env_ONE_CACHE_KEY","process","env","ONE_CACHE_KEY","Math","round","random","RegExp","serverContext","arguments","length","JSON","stringify","css"],"sources":["../../src/constants.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,iBAAA;AAAAC,QAAA,CAAAD,iBAAA;EAAAE,SAAA,EAAAA,CAAA,KAAAA,SAAA;EAAAC,sBAAA,EAAAA,CAAA,KAAAA,sBAAA;EAAAC,iBAAA,EAAAA,CAAA,KAAAA,iBAAA;EAAAC,uBAAA,EAAAA,CAAA,KAAAA,uBAAA;EAAAC,8BAAA,EAAAA,CAAA,KAAAA,8BAAA;EAAAC,0BAAA,EAAAA,CAAA,KAAAA,0BAAA;EAAAC,kBAAA,EAAAA,CAAA,KAAAA,kBAAA;EAAAC,kBAAA,EAAAA,CAAA,KAAAA,kBAAA;EAAAC,qBAAA,EAAAA,CAAA,KAAAA,qBAAA;EAAAC,oBAAA,EAAAA,CAAA,KAAAA,oBAAA;EAAAC,oBAAA,EAAAA,CAAA,KAAAA,oBAAA;EAAAC,QAAA,EAAAA,CAAA,KAAAA,QAAA;EAAAC,WAAA,EAAAA,CAAA,KAAAA,WAAA;EAAAC,WAAA,EAAAA,CAAA,KAAAA;AAAA;AAEOC,MAAM,CAAAC,OAAA,GAAAtB,YACuC,CAAAK,iBACvC;AAoBwB,IACnCc,WAAA,GAAgB,CAAC;EAAAC,WAAA;EAAAF,QAAA;EAAAK,0BAAA;EAAAhB,SAAA,OAAAgB,0BAAA,GAAAC,OAAA,CAAAC,GAAA,CAAAC,aAAA,cAAAH,0BAAA,cAAAA,0BAAA,GAAAI,IAAA,CAAAC,KAAA,CAAAD,IAAA,CAAAE,MAAA;EAAAjB,0BAAA;EAAAD,8BAAA,WAAAC,0BAAA;EAAAF,uBAAA,OAAAoB,MAAA,CAAAnB,8BAAA;EAAAF,iBAAA,OAAAF,SAAA,GAAAK,0BAAA;EAAAC,kBAAA,OAAAN,SAAA;EAAAC,sBAAA,OAAAD,SAAA;EAAAQ,qBAAA;EAAAC,oBAAA,kBAAAD,qBAAA;EAAAD,kBAAA;EAAAG,oBAAA,YAAAA,CAAA;IACnB,IAEK;MAAAc,aAAM;IAAA,IAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,iBAAAA,SAAA;IAAA;AAAA;AAAA;AAGoE,wBAAAlB,kBAAA,QAC/BoB,IAAK,CAAAC,SAAU,CAAAJ,aAAc;AAAU,gDAAAG,IAAA,CAAAC,SAAA,CAAAJ,aAAA,CAAAK,GAAA","ignoreList":[]}
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","constants_exports","__export","CACHE_KEY","CSS_PRELOAD_JS_POSTFIX","LOADER_JS_POSTFIX","LOADER_JS_POSTFIX_REGEX","LOADER_JS_POSTFIX_REGEX_STRING","LOADER_JS_POSTFIX_UNCACHED","PRELOAD_JS_POSTFIX","SERVER_CONTEXT_KEY","VIRTUAL_SSR_CSS_ENTRY","VIRTUAL_SSR_CSS_HREF","getSpaHeaderElements","isNative","isWebClient","isWebServer","module","exports","import_htmlEscape","require","_process_env_ONE_CACHE_KEY","process","env","ONE_CACHE_KEY","Math","round","random","RegExp","serverContext","arguments","length","safeJsonStringify","css"],"sources":["../../src/constants.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,iBAAA;AAAAC,QAAA,CAAAD,iBAAA;EAAAE,SAAA,EAAAA,CAAA,KAAAA,SAAA;EAAAC,sBAAA,EAAAA,CAAA,KAAAA,sBAAA;EAAAC,iBAAA,EAAAA,CAAA,KAAAA,iBAAA;EAAAC,uBAAA,EAAAA,CAAA,KAAAA,uBAAA;EAAAC,8BAAA,EAAAA,CAAA,KAAAA,8BAAA;EAAAC,0BAAA,EAAAA,CAAA,KAAAA,0BAAA;EAAAC,kBAAA,EAAAA,CAAA,KAAAA,kBAAA;EAAAC,kBAAA,EAAAA,CAAA,KAAAA,kBAAA;EAAAC,qBAAA,EAAAA,CAAA,KAAAA,qBAAA;EAAAC,oBAAA,EAAAA,CAAA,KAAAA,oBAAA;EAAAC,oBAAA,EAAAA,CAAA,KAAAA,oBAAA;EAAAC,QAAA,EAAAA,CAAA,KAAAA,QAAA;EAAAC,WAAA,EAAAA,CAAA,KAAAA,WAAA;EAAAC,WAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAtB,YAAkC,CAAAK,iBAAA;AAG3B,IAAAkB,iBACsC,GAAAC,OAAO,+BACvC;EACgCL,WAAO,KAAW;EAAAC,WAClD,GAAW;EAEXF,QAAA,IAAY;EAAGO,0BAAY;EAAAlB,SAAsB,GAAM,IAAAkB,0BAEvD,GAAAC,OAAA,CAAAC,GAAA,CAAAC,aAA6B,cAC7BH,0BAAA,UAAiC,IAAAA,0BAAQ,GAA0BI,IACnE,CAAAC,KAAA,CAAAD,IAAA,CAAAE,MAAA,QAA0B,GAAI;EAAAnB,0BAAO,oBACrC;EAAAD,8BAAoC,WAAAC,0BAEpC;EAAAF,uBAAkC,OAAAsB,MAClC,CAAArB,8BAA6B;EAAAF,iBAAS,GAGtC,IAAAF,SAAA,GAAAK,0BAAwB;EAAAC,kBACxB,OAAuBN,SAAA,aAAe;EAAAC,sBAEtC,OAAAD,SAAqB;EAAAQ,qBAErB,wBAAwB;EAAAC,oBAAA,kBAAAD,qBAAA;EAAAD,kBAAA;EAAAG,oBAAA,YAAAA,CAAA;IACnC;MAAAgB,aAAiB;IAAA,IAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,iBAAAA,SAAA;IACnB,OAEK;AAAM;AAAA;AAAA,wBAGapB,kBAAkB,YAAQS,iBAAA,CAAAa,iBAAA,EAAkBH,aAAa,CAAC;AAAA,oDAClCV,iBAAA,CAAAa,iBAAA,EAAkBH,aAAA,CAAcI,GAAA,IAAO,EAAE,CAAC;AAAA","ignoreList":[]}
@@ -43,6 +43,7 @@ var import_setup = require("./setup.cjs"),
43
43
  import_useViteRoutes = require("./router/useViteRoutes.cjs"),
44
44
  import_useServerHeadInsertion = require("./useServerHeadInsertion.cjs"),
45
45
  import_ensureExists = require("./utils/ensureExists.cjs"),
46
+ import_htmlEscape = require("./utils/htmlEscape.cjs"),
46
47
  import_constants = require("./vite/constants.cjs"),
47
48
  import_one_server_only = require("./vite/one-server-only.cjs"),
48
49
  import_jsx_runtime = require("react/jsx-runtime");
@@ -112,7 +113,7 @@ function createApp(options) {
112
113
  if (!`${err}`.includes("sheet is not defined")) throw err;
113
114
  }
114
115
  const postRenderData = (0, import_one_server_only.getServerContext)()?.postRenderData;
115
- return postRenderData && (html = html.replace(JSON.stringify(import_constants.SERVER_CONTEXT_POST_RENDER_STRING), JSON.stringify(postRenderData))), html;
116
+ return postRenderData && (html = html.replace((0, import_htmlEscape.safeJsonStringify)(import_constants.SERVER_CONTEXT_POST_RENDER_STRING), (0, import_htmlEscape.safeJsonStringify)(postRenderData))), html;
116
117
  }
117
118
  };
118
119
  const serverContext = (0, import_one_server_only.getServerContext)() || {},
@@ -25,7 +25,7 @@ __export(createApp_exports, {
25
25
  createApp: () => createApp
26
26
  });
27
27
  module.exports = __toCommonJS(createApp_exports);
28
- var import_setup = require("./setup"), import_react = require("react"), import_react_native = require("react-native-web"), import_clientLoaderResolver = require("./clientLoaderResolver"), import_render = require("./render"), import_Root = require("./Root"), import_useViteRoutes = require("./router/useViteRoutes"), import_useServerHeadInsertion = require("./useServerHeadInsertion"), import_ensureExists = require("./utils/ensureExists"), import_constants = require("./vite/constants"), import_one_server_only = require("./vite/one-server-only"), import_jsx_runtime = require("react/jsx-runtime");
28
+ var import_setup = require("./setup"), import_react = require("react"), import_react_native = require("react-native-web"), import_clientLoaderResolver = require("./clientLoaderResolver"), import_render = require("./render"), import_Root = require("./Root"), import_useViteRoutes = require("./router/useViteRoutes"), import_useServerHeadInsertion = require("./useServerHeadInsertion"), import_ensureExists = require("./utils/ensureExists"), import_htmlEscape = require("./utils/htmlEscape"), import_constants = require("./vite/constants"), import_one_server_only = require("./vite/one-server-only"), import_jsx_runtime = require("react/jsx-runtime");
29
29
  const import_meta = {};
30
30
  function createApp(options) {
31
31
  if (import_meta.env.SSR)
@@ -94,8 +94,8 @@ function createApp(options) {
94
94
  }
95
95
  const postRenderData = (0, import_one_server_only.getServerContext)()?.postRenderData;
96
96
  return postRenderData && (html = html.replace(
97
- JSON.stringify(import_constants.SERVER_CONTEXT_POST_RENDER_STRING),
98
- JSON.stringify(postRenderData)
97
+ (0, import_htmlEscape.safeJsonStringify)(import_constants.SERVER_CONTEXT_POST_RENDER_STRING),
98
+ (0, import_htmlEscape.safeJsonStringify)(postRenderData)
99
99
  )), html;
100
100
  }
101
101
  };
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/createApp.tsx"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": ["routePreloads"]
6
6
  }
@@ -24,6 +24,7 @@ __export(ServerContextScript_exports, {
24
24
  });
25
25
  module.exports = __toCommonJS(ServerContextScript_exports);
26
26
  var import_constants = require("../constants.cjs"),
27
+ import_htmlEscape = require("../utils/htmlEscape.cjs"),
27
28
  import_constants2 = require("../vite/constants.cjs"),
28
29
  import_one_server_only = require("../vite/one-server-only.cjs"),
29
30
  import_jsx_runtime = require("react/jsx-runtime");
@@ -53,11 +54,11 @@ function ServerContextScript() {
53
54
  suppressHydrationWarning: !0,
54
55
  dangerouslySetInnerHTML: {
55
56
  __html: `
56
- globalThis["${import_constants.SERVER_CONTEXT_KEY}"] = ${JSON.stringify({
57
+ globalThis["${import_constants.SERVER_CONTEXT_KEY}"] = ${(0, import_htmlEscape.safeJsonStringify)({
57
58
  ...clientContext,
58
59
  postRenderData: import_constants2.SERVER_CONTEXT_POST_RENDER_STRING
59
60
  })};
60
- globalThis.__oneLoadedCSS = new Set(${JSON.stringify(cssUrls)});
61
+ globalThis.__oneLoadedCSS = new Set(${(0, import_htmlEscape.safeJsonStringify)(cssUrls)});
61
62
  `
62
63
  }
63
64
  });
@@ -17,7 +17,7 @@ __export(ServerContextScript_exports, {
17
17
  ServerContextScript: () => ServerContextScript
18
18
  });
19
19
  module.exports = __toCommonJS(ServerContextScript_exports);
20
- var import_constants = require("../constants"), import_constants2 = require("../vite/constants"), import_one_server_only = require("../vite/one-server-only"), import_jsx_runtime = require("react/jsx-runtime");
20
+ var import_constants = require("../constants"), import_htmlEscape = require("../utils/htmlEscape"), import_constants2 = require("../vite/constants"), import_one_server_only = require("../vite/one-server-only"), import_jsx_runtime = require("react/jsx-runtime");
21
21
  function ServerContextScript() {
22
22
  if (process.env.VITE_ENVIRONMENT === "client")
23
23
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
@@ -44,11 +44,11 @@ function ServerContextScript() {
44
44
  suppressHydrationWarning: !0,
45
45
  dangerouslySetInnerHTML: {
46
46
  __html: `
47
- globalThis["${import_constants.SERVER_CONTEXT_KEY}"] = ${JSON.stringify({
47
+ globalThis["${import_constants.SERVER_CONTEXT_KEY}"] = ${(0, import_htmlEscape.safeJsonStringify)({
48
48
  ...clientContext,
49
49
  postRenderData: import_constants2.SERVER_CONTEXT_POST_RENDER_STRING
50
50
  })};
51
- globalThis.__oneLoadedCSS = new Set(${JSON.stringify(cssUrls)});
51
+ globalThis.__oneLoadedCSS = new Set(${(0, import_htmlEscape.safeJsonStringify)(cssUrls)});
52
52
  `
53
53
  }
54
54
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/server/ServerContextScript.tsx"],
4
- "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAmC,yBACnCA,oBAAkD,8BAClD,yBAAiC,oCAK3B;AAHC,SAAS,sBAAsB;AACpC,MAAI,QAAQ,IAAI,qBAAqB;AACnC,WACE;AAAA,MAAC;AAAA;AAAA,QACC,OAAK;AAAA,QAEL,MAAM;AAAA,QACN,0BAAwB;AAAA,QACxB,yBAAyB;AAAA,UACvB,QAAQ;AAAA,QACV;AAAA;AAAA,IACF;AAIJ,MAAI,QAAQ,IAAI,qBAAqB,OAAO;AAC1C,UAAM,cAAU,yCAAiB,GAC3B,UAAU,SAAS,OAAO,CAAC,GAM3B,EAAE,aAAa,GAAG,YAAY,IAAI,WAAW,CAAC,GAC9C,gBAAgB;AAAA,MACpB,GAAG;AAAA,MACH,gBAAgB,aAAa,UAAU;AAAA,IACzC;AAEA,WACE;AAAA,MAAC;AAAA;AAAA,QACC,OAAK;AAAA,QAEL,MAAM;AAAA,QACN,0BAAwB;AAAA,QACxB,yBAAyB;AAAA,UACvB,QAAQ;AAAA,4BACU,mCAAkB,QAAQ,KAAK,UAAU;AAAA,YACrD,GAAG;AAAA,YACH,gBAAgB;AAAA,UAClB,CAAC,CAAC;AAAA,oDACoC,KAAK,UAAU,OAAO,CAAC;AAAA;AAAA,QAEnE;AAAA;AAAA,IACF;AAAA,EAEJ;AAEA,SAAO;AACT;",
4
+ "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAmC,yBACnC,oBAAkC,gCAClCA,oBAAkD,8BAClD,yBAAiC,oCAK3B;AAHC,SAAS,sBAAsB;AACpC,MAAI,QAAQ,IAAI,qBAAqB;AACnC,WACE;AAAA,MAAC;AAAA;AAAA,QACC,OAAK;AAAA,QAEL,MAAM;AAAA,QACN,0BAAwB;AAAA,QACxB,yBAAyB;AAAA,UACvB,QAAQ;AAAA,QACV;AAAA;AAAA,IACF;AAIJ,MAAI,QAAQ,IAAI,qBAAqB,OAAO;AAC1C,UAAM,cAAU,yCAAiB,GAC3B,UAAU,SAAS,OAAO,CAAC,GAM3B,EAAE,aAAa,GAAG,YAAY,IAAI,WAAW,CAAC,GAC9C,gBAAgB;AAAA,MACpB,GAAG;AAAA,MACH,gBAAgB,aAAa,UAAU;AAAA,IACzC;AAEA,WACE;AAAA,MAAC;AAAA;AAAA,QACC,OAAK;AAAA,QAEL,MAAM;AAAA,QACN,0BAAwB;AAAA,QACxB,yBAAyB;AAAA,UACvB,QAAQ;AAAA,4BACU,mCAAkB,YAAQ,qCAAkB;AAAA,YACxD,GAAG;AAAA,YACH,gBAAgB;AAAA,UAClB,CAAC,CAAC;AAAA,wDACoC,qCAAkB,OAAO,CAAC;AAAA;AAAA,QAEtE;AAAA;AAAA,IACF;AAAA,EAEJ;AAEA,SAAO;AACT;",
5
5
  "names": ["import_constants"]
6
6
  }
@@ -27,6 +27,7 @@ __export(ServerContextScript_exports, {
27
27
  module.exports = __toCommonJS(ServerContextScript_exports);
28
28
  var import_jsx_runtime = require("react/jsx-runtime"),
29
29
  import_constants = require("../constants.native.js"),
30
+ import_htmlEscape = require("../utils/htmlEscape.native.js"),
30
31
  import_constants2 = require("../vite/constants.native.js"),
31
32
  import_one_server_only = require("../vite/one-server-only.native.js");
32
33
  function ServerContextScript() {
@@ -57,11 +58,11 @@ function ServerContextScript() {
57
58
  suppressHydrationWarning: !0,
58
59
  dangerouslySetInnerHTML: {
59
60
  __html: `
60
- globalThis["${import_constants.SERVER_CONTEXT_KEY}"] = ${JSON.stringify({
61
+ globalThis["${import_constants.SERVER_CONTEXT_KEY}"] = ${(0, import_htmlEscape.safeJsonStringify)({
61
62
  ...clientContext,
62
63
  postRenderData: import_constants2.SERVER_CONTEXT_POST_RENDER_STRING
63
64
  })};
64
- globalThis.__oneLoadedCSS = new Set(${JSON.stringify(cssUrls)});
65
+ globalThis.__oneLoadedCSS = new Set(${(0, import_htmlEscape.safeJsonStringify)(cssUrls)});
65
66
  `
66
67
  }
67
68
  });
@@ -1 +1 @@
1
- {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","ServerContextScript_exports","__export","ServerContextScript","module","exports","import_jsx_runtime","require","import_constants","import_constants2","import_one_server_only","process","env","VITE_ENVIRONMENT","jsx","async","href","SERVER_CONTEXT_KEY","suppressHydrationWarning","dangerouslySetInnerHTML","__html","context","useServerContext","cssUrls","css","cssContents","restContext","clientContext","cssInlineCount","length","JSON","stringify","postRenderData","SERVER_CONTEXT_POST_RENDER_STRING"],"sources":["../../../src/server/ServerContextScript.tsx"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,2BAAA;AAAAC,QAAA,CAAAD,2BAAA;EAAAE,mBAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAT,YAAmC,CAAAK,2BACnC;AAGO,IAAAK,kBAAS,GAAAC,OAAsB;EAAAC,gBAAA,GAAAD,OAAA;EAAAE,iBAAA,GAAAF,OAAA;EAAAG,sBAAA,GAAAH,OAAA;AACpC,SAAIJ,mBAAYA,CAAA;EACd,IAAAQ,OACE,CAAAC,GAAA,CAAAC,gBAAA,sBAAC,mBAAAP,kBAAA,CAAAQ,GAAA;IAAAC,KAAA;IAAA;IACMC,IAEL,EAAAR,gBAAM,CAAAS,kBAAA;IAAAC,wBACN,IAAwB;IAAAC,uBACxB;MAAyBC,MACvB;IAAQ;EACV;EAAA,IACFT,OAAA,CAAAC,GAAA,CAAAC,gBAAA;IAIJ,IAAIQ,OAAQ,GAAI,IAAAX,sBAAqB,CAAAY,gBAAO;MAAAC,OAAA,GAAAF,OAAA,EAAAG,GAAA;MAAA;QAAAC,WAAA;QAAA,GAAAC;MAAA,IAAAL,OAAA;MAAAM,aAAA;QAC1C,GAAAD,WAAM;QASJE,cAAG,EAAAH,WAAA,EAAAI,MAAA;MAAA;IAEL,0BAAAvB,kBAAA,CAAAQ,GAAA;MAEAC,KACE;MAAC;MAAAC,IAAA,EAAAR,gBAAA,CAAAS,kBAAA;MAAAC,wBACM;MAAAC,uBAEC;QACNC,MAAA;AAAwB,4BACxBZ,gBAAyB,CAAAS,kBAAA,QAAAa,IAAA,CAAAC,SAAA;UACvB,GAAAJ,aAAQ;UAAAK,cAAA,EAAAvB,iBACU,CAAAwB;QAAyC;AAClD,oDACaH,IAAA,CAAAC,SAAA,CAAAR,OAAA;AAAA;MAChB;IAC2D;EAAA;EAEnE;AAAA","ignoreList":[]}
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","ServerContextScript_exports","__export","ServerContextScript","module","exports","import_jsx_runtime","require","import_constants","import_htmlEscape","import_constants2","import_one_server_only","process","env","VITE_ENVIRONMENT","jsx","async","href","SERVER_CONTEXT_KEY","suppressHydrationWarning","dangerouslySetInnerHTML","__html","context","useServerContext","cssUrls","css","cssContents","restContext","clientContext","cssInlineCount","length","safeJsonStringify","postRenderData","SERVER_CONTEXT_POST_RENDER_STRING"],"sources":["../../../src/server/ServerContextScript.tsx"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,2BAAA;AAAAC,QAAA,CAAAD,2BAAA;EAAAE,mBAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAT,YAAmC,CAAAK,2BACnC;AAIO,IAAAK,kBAAS,GAAAC,OAAsB;EAAAC,gBAAA,GAAAD,OAAA;EAAAE,iBAAA,GAAAF,OAAA;EAAAG,iBAAA,GAAAH,OAAA;EAAAI,sBAAA,GAAAJ,OAAA;AACpC,SAAIJ,mBAAYA,CAAA;EACd,IAAAS,OACE,CAAAC,GAAA,CAAAC,gBAAA,sBAAC,mBAAAR,kBAAA,CAAAS,GAAA;IAAAC,KAAA;IAAA;IACMC,IAEL,EAAAT,gBAAM,CAAAU,kBAAA;IAAAC,wBACN,IAAwB;IAAAC,uBACxB;MAAyBC,MACvB;IAAQ;EACV;EAAA,IACFT,OAAA,CAAAC,GAAA,CAAAC,gBAAA;IAIJ,IAAIQ,OAAQ,GAAI,IAAAX,sBAAqB,CAAAY,gBAAO;MAAAC,OAAA,GAAAF,OAAA,EAAAG,GAAA;MAAA;QAAAC,WAAA;QAAA,GAAAC;MAAA,IAAAL,OAAA;MAAAM,aAAA;QAC1C,GAAAD,WAAM;QASJE,cAAG,EAAAH,WAAA,EAAAI,MAAA;MAAA;IAEL,0BAAAxB,kBAAA,CAAAS,GAAA;MAEAC,KACE;MAAC;MAAAC,IAAA,EAAAT,gBAAA,CAAAU,kBAAA;MAAAC,wBACM;MAAAC,uBAEC;QACNC,MAAA;AAAwB,4BACxBb,gBAAyB,CAAAU,kBAAA,YAAAT,iBAAA,CAAAsB,iBAAA;UACvB,GAAAH,aAAQ;UAAAI,cAAA,EAAAtB,iBACU,CAAAuB;QAA4C;AACrD,oDACa,IAAAxB,iBAAA,CAAAsB,iBAAA,EAAAP,OAAA;AAAA;MAChB;IAC8D;EAAA;EAEtE;AAAA","ignoreList":[]}
@@ -0,0 +1,45 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all) __defProp(target, name, {
7
+ get: all[name],
8
+ enumerable: !0
9
+ });
10
+ },
11
+ __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
13
+ get: () => from[key],
14
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
15
+ });
16
+ return to;
17
+ };
18
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
19
+ value: !0
20
+ }), mod);
21
+ var htmlEscape_exports = {};
22
+ __export(htmlEscape_exports, {
23
+ htmlEscapeJsonString: () => htmlEscapeJsonString,
24
+ safeJsonStringify: () => safeJsonStringify
25
+ });
26
+ module.exports = __toCommonJS(htmlEscape_exports);
27
+ const ESCAPE_LOOKUP = {
28
+ "&": "\\u0026",
29
+ // &
30
+ "<": "\\u003c",
31
+ // <
32
+ ">": "\\u003e",
33
+ // >
34
+ "\u2028": "\\u2028",
35
+ // Line separator
36
+ "\u2029": "\\u2029"
37
+ // Paragraph separator
38
+ },
39
+ ESCAPE_REGEX = /[\u0026\u003c\u003e\u2028\u2029]/g;
40
+ function htmlEscapeJsonString(str) {
41
+ return str.replace(ESCAPE_REGEX, match => ESCAPE_LOOKUP[match]);
42
+ }
43
+ function safeJsonStringify(value) {
44
+ return htmlEscapeJsonString(JSON.stringify(value));
45
+ }
@@ -0,0 +1,39 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: !0 });
8
+ }, __copyProps = (to, from, except, desc) => {
9
+ if (from && typeof from == "object" || typeof from == "function")
10
+ for (let key of __getOwnPropNames(from))
11
+ !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
12
+ return to;
13
+ };
14
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
15
+ var htmlEscape_exports = {};
16
+ __export(htmlEscape_exports, {
17
+ htmlEscapeJsonString: () => htmlEscapeJsonString,
18
+ safeJsonStringify: () => safeJsonStringify
19
+ });
20
+ module.exports = __toCommonJS(htmlEscape_exports);
21
+ const ESCAPE_LOOKUP = {
22
+ "&": "\\u0026",
23
+ // &
24
+ "<": "\\u003c",
25
+ // <
26
+ ">": "\\u003e",
27
+ // >
28
+ "\u2028": "\\u2028",
29
+ // Line separator
30
+ "\u2029": "\\u2029"
31
+ // Paragraph separator
32
+ }, ESCAPE_REGEX = /[\u0026\u003c\u003e\u2028\u2029]/g;
33
+ function htmlEscapeJsonString(str) {
34
+ return str.replace(ESCAPE_REGEX, (match) => ESCAPE_LOOKUP[match]);
35
+ }
36
+ function safeJsonStringify(value) {
37
+ return htmlEscapeJsonString(JSON.stringify(value));
38
+ }
39
+ //# sourceMappingURL=htmlEscape.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/utils/htmlEscape.ts"],
4
+ "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,MAAM,gBAAwC;AAAA,EAC5C,KAAU;AAAA;AAAA,EACV,KAAU;AAAA;AAAA,EACV,KAAU;AAAA;AAAA,EACV,UAAU;AAAA;AAAA,EACV,UAAU;AAAA;AACZ,GAEM,eAAe;AAad,SAAS,qBAAqB,KAAqB;AACxD,SAAO,IAAI,QAAQ,cAAc,CAAC,UAAU,cAAc,KAAK,CAAC;AAClE;AAKO,SAAS,kBAAkB,OAAwB;AACxD,SAAO,qBAAqB,KAAK,UAAU,KAAK,CAAC;AACnD;",
5
+ "names": []
6
+ }
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: !0
11
+ });
12
+ },
13
+ __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
15
+ get: () => from[key],
16
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
17
+ });
18
+ return to;
19
+ };
20
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
21
+ value: !0
22
+ }), mod);
23
+ var htmlEscape_exports = {};
24
+ __export(htmlEscape_exports, {
25
+ htmlEscapeJsonString: () => htmlEscapeJsonString,
26
+ safeJsonStringify: () => safeJsonStringify
27
+ });
28
+ module.exports = __toCommonJS(htmlEscape_exports);
29
+ var ESCAPE_LOOKUP = {
30
+ "&": "\\u0026",
31
+ // &
32
+ "<": "\\u003c",
33
+ // <
34
+ ">": "\\u003e",
35
+ // >
36
+ "\u2028": "\\u2028",
37
+ // Line separator
38
+ "\u2029": "\\u2029"
39
+ },
40
+ ESCAPE_REGEX = /[\u0026\u003c\u003e\u2028\u2029]/g;
41
+ function htmlEscapeJsonString(str) {
42
+ return str.replace(ESCAPE_REGEX, function (match) {
43
+ return ESCAPE_LOOKUP[match];
44
+ });
45
+ }
46
+ function safeJsonStringify(value) {
47
+ return htmlEscapeJsonString(JSON.stringify(value));
48
+ }
49
+ //# sourceMappingURL=htmlEscape.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","htmlEscape_exports","__export","htmlEscapeJsonString","safeJsonStringify","module","exports","ESCAPE_LOOKUP","ESCAPE_REGEX","str","replace","match"],"sources":["../../../src/utils/htmlEscape.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,kBAAA;AAAAC,QAAA,CAAAD,kBAAA;EAAAE,oBAAA,EAAAA,CAAA,KAAAA,oBAAA;EAAAC,iBAAA,EAAAA,CAAA,KAAAA;AAAA;AAIAC,MAAM,CAAAC,OAAA,GAAAV,YAAwC,CAAAK,kBAAA;AAAA,IAC5CM,aAAU;IAAA;IACV;IAAU;IACV;IAAU;IACV;IAAU;IACV;IAAU;EACZ;EAEMC,YAAA,GAAe;AAad,SAASL,qBAAqBM,GAAA,EAAqB;EACxD,OAAOA,GAAA,CAAIC,OAAA,CAAQF,YAAA,EAAc,UAACG,KAAU;IAC9C,OAAAJ,aAAA,CAAAI,KAAA;EAKO;AACL;AACF,SAAAP,kBAAAJ,KAAA","ignoreList":[]}
@@ -1,10 +1,11 @@
1
+ import { safeJsonStringify } from "./utils/htmlEscape";
1
2
  const isWebClient = typeof window < "u", isWebServer = typeof window > "u", isNative = !1, CACHE_KEY = `${process.env.ONE_CACHE_KEY ?? Math.round(Math.random() * 1e8)}`, LOADER_JS_POSTFIX_UNCACHED = "_vxrn_loader.js", LOADER_JS_POSTFIX_REGEX_STRING = `_\\d+${LOADER_JS_POSTFIX_UNCACHED}$`, LOADER_JS_POSTFIX_REGEX = new RegExp(LOADER_JS_POSTFIX_REGEX_STRING), LOADER_JS_POSTFIX = `_${CACHE_KEY}${LOADER_JS_POSTFIX_UNCACHED}`, PRELOAD_JS_POSTFIX = `_${CACHE_KEY}_preload.js`, CSS_PRELOAD_JS_POSTFIX = `_${CACHE_KEY}_preload_css.js`, VIRTUAL_SSR_CSS_ENTRY = "virtual:ssr-css.css", VIRTUAL_SSR_CSS_HREF = `/@id/__x00__${VIRTUAL_SSR_CSS_ENTRY}`, SERVER_CONTEXT_KEY = "__one_server_context__", getSpaHeaderElements = ({
2
3
  serverContext = {}
3
4
  } = {}) => `
4
5
  <script>globalThis['global'] = globalThis</script>
5
6
  <script>globalThis['__vxrnIsSPA'] = true</script>
6
- <script>globalThis["${SERVER_CONTEXT_KEY}"] = ${JSON.stringify(serverContext)}</script>
7
- <script>globalThis.__oneLoadedCSS = new Set(${JSON.stringify(serverContext.css || [])})</script>
7
+ <script>globalThis["${SERVER_CONTEXT_KEY}"] = ${safeJsonStringify(serverContext)}</script>
8
+ <script>globalThis.__oneLoadedCSS = new Set(${safeJsonStringify(serverContext.css || [])})</script>
8
9
  `;
9
10
  export {
10
11
  CACHE_KEY,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/constants.ts"],
4
- "mappings": "AAEO,MAAM,cACgC,OAAO,SAAW,KAClD,cACgC,OAAO,SAAW,KAClD,WAAW,IAEX,YAAY,GAAG,QAAQ,IAAI,iBAAiB,KAAK,MAAM,KAAK,OAAO,IAAI,GAAW,CAAC,IAEnF,6BAA6B,mBAC7B,iCAAiC,QAAQ,0BAA0B,KACnE,0BAA0B,IAAI,OAAO,8BAA8B,GACnE,oBAAoB,IAAI,SAAS,GAAG,0BAA0B,IAE9D,qBAAqB,IAAI,SAAS,eAClC,yBAAyB,IAAI,SAAS,mBAGtC,wBAAwB,uBACxB,uBAAuB,eAAe,qBAAqB,IAE3D,qBAAqB,0BAErB,uBAAuB,CAAC;AAAA,EACnC,gBAAgB,CAAC;AACnB,IAEI,CAAC,MAAM;AAAA;AAAA;AAAA,wBAGa,kBAAkB,QAAQ,KAAK,UAAU,aAAa,CAAC;AAAA,gDAC/B,KAAK,UAAU,cAAc,OAAO,CAAC,CAAC,CAAC;AAAA;",
4
+ "mappings": "AAAA,SAAS,yBAAyB;AAG3B,MAAM,cACgC,OAAO,SAAW,KAClD,cACgC,OAAO,SAAW,KAClD,WAAW,IAEX,YAAY,GAAG,QAAQ,IAAI,iBAAiB,KAAK,MAAM,KAAK,OAAO,IAAI,GAAW,CAAC,IAEnF,6BAA6B,mBAC7B,iCAAiC,QAAQ,0BAA0B,KACnE,0BAA0B,IAAI,OAAO,8BAA8B,GACnE,oBAAoB,IAAI,SAAS,GAAG,0BAA0B,IAE9D,qBAAqB,IAAI,SAAS,eAClC,yBAAyB,IAAI,SAAS,mBAGtC,wBAAwB,uBACxB,uBAAuB,eAAe,qBAAqB,IAE3D,qBAAqB,0BAErB,uBAAuB,CAAC;AAAA,EACnC,gBAAgB,CAAC;AACnB,IAEI,CAAC,MAAM;AAAA;AAAA;AAAA,wBAGa,kBAAkB,QAAQ,kBAAkB,aAAa,CAAC;AAAA,gDAClC,kBAAkB,cAAc,OAAO,CAAC,CAAC,CAAC;AAAA;",
5
5
  "names": []
6
6
  }
@@ -1,3 +1,4 @@
1
+ import { safeJsonStringify } from "./utils/htmlEscape.mjs";
1
2
  const isWebClient = typeof window < "u",
2
3
  isWebServer = typeof window > "u",
3
4
  isNative = !1,
@@ -16,8 +17,8 @@ const isWebClient = typeof window < "u",
16
17
  } = {}) => `
17
18
  <script>globalThis['global'] = globalThis</script>
18
19
  <script>globalThis['__vxrnIsSPA'] = true</script>
19
- <script>globalThis["${SERVER_CONTEXT_KEY}"] = ${JSON.stringify(serverContext)}</script>
20
- <script>globalThis.__oneLoadedCSS = new Set(${JSON.stringify(serverContext.css || [])})</script>
20
+ <script>globalThis["${SERVER_CONTEXT_KEY}"] = ${safeJsonStringify(serverContext)}</script>
21
+ <script>globalThis.__oneLoadedCSS = new Set(${safeJsonStringify(serverContext.css || [])})</script>
21
22
  `;
22
23
  export { CACHE_KEY, CSS_PRELOAD_JS_POSTFIX, LOADER_JS_POSTFIX, LOADER_JS_POSTFIX_REGEX, LOADER_JS_POSTFIX_REGEX_STRING, LOADER_JS_POSTFIX_UNCACHED, PRELOAD_JS_POSTFIX, SERVER_CONTEXT_KEY, VIRTUAL_SSR_CSS_ENTRY, VIRTUAL_SSR_CSS_HREF, getSpaHeaderElements, isNative, isWebClient, isWebServer };
23
24
  //# sourceMappingURL=constants.mjs.map
@@ -1 +1 @@
1
- {"version":3,"names":["isWebClient","window","isWebServer","isNative","CACHE_KEY","process","env","ONE_CACHE_KEY","Math","round","random","LOADER_JS_POSTFIX_UNCACHED","LOADER_JS_POSTFIX_REGEX_STRING","LOADER_JS_POSTFIX_REGEX","RegExp","LOADER_JS_POSTFIX","PRELOAD_JS_POSTFIX","CSS_PRELOAD_JS_POSTFIX","VIRTUAL_SSR_CSS_ENTRY","VIRTUAL_SSR_CSS_HREF","SERVER_CONTEXT_KEY","getSpaHeaderElements","serverContext","JSON","stringify","css"],"sources":["../../src/constants.ts"],"sourcesContent":[null],"mappings":"AAEO,MAAMA,WAAA,GACgC,OAAOC,MAAA,GAAW;EAClDC,WAAA,GACgC,OAAOD,MAAA,GAAW;EAClDE,QAAA,GAAW;EAEXC,SAAA,GAAY,GAAGC,OAAA,CAAQC,GAAA,CAAIC,aAAA,IAAiBC,IAAA,CAAKC,KAAA,CAAMD,IAAA,CAAKE,MAAA,CAAO,IAAI,GAAW,CAAC;EAEnFC,0BAAA,GAA6B;EAC7BC,8BAAA,GAAiC,QAAQD,0BAA0B;EACnEE,uBAAA,GAA0B,IAAIC,MAAA,CAAOF,8BAA8B;EACnEG,iBAAA,GAAoB,IAAIX,SAAS,GAAGO,0BAA0B;EAE9DK,kBAAA,GAAqB,IAAIZ,SAAS;EAClCa,sBAAA,GAAyB,IAAIb,SAAS;EAGtCc,qBAAA,GAAwB;EACxBC,oBAAA,GAAuB,eAAeD,qBAAqB;EAE3DE,kBAAA,GAAqB;EAErBC,oBAAA,GAAuBA,CAAC;IACnCC,aAAA,GAAgB,CAAC;EACnB,IAEI,CAAC,MAAM;AAAA;AAAA;AAAA,wBAGaF,kBAAkB,QAAQG,IAAA,CAAKC,SAAA,CAAUF,aAAa,CAAC;AAAA,gDAC/BC,IAAA,CAAKC,SAAA,CAAUF,aAAA,CAAcG,GAAA,IAAO,EAAE,CAAC;AAAA","ignoreList":[]}
1
+ {"version":3,"names":["safeJsonStringify","isWebClient","window","isWebServer","isNative","CACHE_KEY","process","env","ONE_CACHE_KEY","Math","round","random","LOADER_JS_POSTFIX_UNCACHED","LOADER_JS_POSTFIX_REGEX_STRING","LOADER_JS_POSTFIX_REGEX","RegExp","LOADER_JS_POSTFIX","PRELOAD_JS_POSTFIX","CSS_PRELOAD_JS_POSTFIX","VIRTUAL_SSR_CSS_ENTRY","VIRTUAL_SSR_CSS_HREF","SERVER_CONTEXT_KEY","getSpaHeaderElements","serverContext","css"],"sources":["../../src/constants.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,iBAAA,QAAyB;AAG3B,MAAMC,WAAA,GACgC,OAAOC,MAAA,GAAW;EAClDC,WAAA,GACgC,OAAOD,MAAA,GAAW;EAClDE,QAAA,GAAW;EAEXC,SAAA,GAAY,GAAGC,OAAA,CAAQC,GAAA,CAAIC,aAAA,IAAiBC,IAAA,CAAKC,KAAA,CAAMD,IAAA,CAAKE,MAAA,CAAO,IAAI,GAAW,CAAC;EAEnFC,0BAAA,GAA6B;EAC7BC,8BAAA,GAAiC,QAAQD,0BAA0B;EACnEE,uBAAA,GAA0B,IAAIC,MAAA,CAAOF,8BAA8B;EACnEG,iBAAA,GAAoB,IAAIX,SAAS,GAAGO,0BAA0B;EAE9DK,kBAAA,GAAqB,IAAIZ,SAAS;EAClCa,sBAAA,GAAyB,IAAIb,SAAS;EAGtCc,qBAAA,GAAwB;EACxBC,oBAAA,GAAuB,eAAeD,qBAAqB;EAE3DE,kBAAA,GAAqB;EAErBC,oBAAA,GAAuBA,CAAC;IACnCC,aAAA,GAAgB,CAAC;EACnB,IAEI,CAAC,MAAM;AAAA;AAAA;AAAA,wBAGaF,kBAAkB,QAAQrB,iBAAA,CAAkBuB,aAAa,CAAC;AAAA,gDAClCvB,iBAAA,CAAkBuB,aAAA,CAAcC,GAAA,IAAO,EAAE,CAAC;AAAA","ignoreList":[]}
@@ -1,3 +1,4 @@
1
+ import { safeJsonStringify } from "./utils/htmlEscape.native.js";
1
2
  var isWebClient = !1,
2
3
  isWebServer = !1,
3
4
  isNative = !0,
@@ -19,8 +20,8 @@ var isWebClient = !1,
19
20
  return `
20
21
  <script>globalThis['global'] = globalThis</script>
21
22
  <script>globalThis['__vxrnIsSPA'] = true</script>
22
- <script>globalThis["${SERVER_CONTEXT_KEY}"] = ${JSON.stringify(serverContext)}</script>
23
- <script>globalThis.__oneLoadedCSS = new Set(${JSON.stringify(serverContext.css || [])})</script>
23
+ <script>globalThis["${SERVER_CONTEXT_KEY}"] = ${safeJsonStringify(serverContext)}</script>
24
+ <script>globalThis.__oneLoadedCSS = new Set(${safeJsonStringify(serverContext.css || [])})</script>
24
25
  `;
25
26
  };
26
27
  export { CACHE_KEY, CSS_PRELOAD_JS_POSTFIX, LOADER_JS_POSTFIX, LOADER_JS_POSTFIX_REGEX, LOADER_JS_POSTFIX_REGEX_STRING, LOADER_JS_POSTFIX_UNCACHED, PRELOAD_JS_POSTFIX, SERVER_CONTEXT_KEY, VIRTUAL_SSR_CSS_ENTRY, VIRTUAL_SSR_CSS_HREF, getSpaHeaderElements, isNative, isWebClient, isWebServer };
@@ -1 +1 @@
1
- {"version":3,"names":["isWebClient","isWebServer","isNative","_process_env_ONE_CACHE_KEY","CACHE_KEY","process","env","ONE_CACHE_KEY","Math","round","random","LOADER_JS_POSTFIX_UNCACHED","LOADER_JS_POSTFIX_REGEX_STRING","LOADER_JS_POSTFIX_REGEX","RegExp","LOADER_JS_POSTFIX","PRELOAD_JS_POSTFIX","CSS_PRELOAD_JS_POSTFIX","VIRTUAL_SSR_CSS_ENTRY","VIRTUAL_SSR_CSS_HREF","SERVER_CONTEXT_KEY","getSpaHeaderElements","serverContext","arguments","length","JSON","stringify","css"],"sources":["../../src/constants.ts"],"sourcesContent":[null],"mappings":"AAEO,IAAAA,WAAM,KACgC;EAAAC,WAAO,GAAW;EAAAC,QAClD;EACgCC,0BAChC;EAAAC,SAEA,OAAAD,0BAA2B,GAAAE,OAAiB,CAAAC,GAAA,CAAKC,aAAW,MAAO,IAAI,IAAYJ,0BAEnF,UAA6B,IAAAA,0BAC7B,GAAAK,IAAA,CAAAC,KAAA,CAAAD,IAAiC,CAAAE,MAAA,CAAQ;EAAAC,0BACzC,oBAA0B;EAAAC,8BAAW,WACrCD,0BAAwB;EAAAE,uBAAY,OAAAC,MAEpC,CAAAF,8BAAyB;EAASG,iBAClC,OAAAX,SAAA,GAAAO,0BAAsC;EAAAK,kBAGtC,OAAAZ,SAAwB;EAAAa,sBACxB,OAAuBb,SAAA,iBAAe;EAAAc,qBAEtC,wBAAqB;EAAAC,oBAErB,kBAAwBD,qBAAA;EAAAE,kBAAA;EAAAC,oBAAA,YAAAA,CAAA;IACnC;MAAAC,aAAiB;IAAA,IAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,iBAAAA,SAAA;IACnB,OAEK;AAAM;AAAA;AAAA,wBAGaH,kBAAkB,QAAQK,IAAA,CAAKC,SAAA,CAAUJ,aAAa,CAAC;AAAA,gDAC/BG,IAAA,CAAKC,SAAA,CAAUJ,aAAA,CAAcK,GAAA,IAAO,EAAE,CAAC;AAAA","ignoreList":[]}
1
+ {"version":3,"names":["safeJsonStringify","isWebClient","isWebServer","isNative","_process_env_ONE_CACHE_KEY","CACHE_KEY","process","env","ONE_CACHE_KEY","Math","round","random","LOADER_JS_POSTFIX_UNCACHED","LOADER_JS_POSTFIX_REGEX_STRING","LOADER_JS_POSTFIX_REGEX","RegExp","LOADER_JS_POSTFIX","PRELOAD_JS_POSTFIX","CSS_PRELOAD_JS_POSTFIX","VIRTUAL_SSR_CSS_ENTRY","VIRTUAL_SSR_CSS_HREF","SERVER_CONTEXT_KEY","getSpaHeaderElements","serverContext","arguments","length","css"],"sources":["../../src/constants.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,iBAAA,QAAyB;AAG3B,IAAAC,WAAM,KACgC;EAAAC,WAAO,GAAW;EAAAC,QAClD;EACgCC,0BAChC;EAAAC,SAEA,OAAAD,0BAA2B,GAAAE,OAAiB,CAAAC,GAAA,CAAKC,aAAW,MAAO,IAAI,IAAYJ,0BAEnF,UAA6B,IAAAA,0BAC7B,GAAAK,IAAA,CAAAC,KAAA,CAAAD,IAAiC,CAAAE,MAAA,CAAQ;EAAAC,0BACzC,oBAA0B;EAAAC,8BAAW,WACrCD,0BAAwB;EAAAE,uBAAY,OAAAC,MAEpC,CAAAF,8BAAyB;EAASG,iBAClC,OAAAX,SAAA,GAAAO,0BAAsC;EAAAK,kBAGtC,OAAAZ,SAAwB;EAAAa,sBACxB,OAAuBb,SAAA,iBAAe;EAAAc,qBAEtC,wBAAqB;EAAAC,oBAErB,kBAAwBD,qBAAA;EAAAE,kBAAA;EAAAC,oBAAA,YAAAA,CAAA;IACnC;MAAAC,aAAiB;IAAA,IAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,iBAAAA,SAAA;IACnB,OAEK;AAAM;AAAA;AAAA,wBAGaH,kBAAkB,QAAQrB,iBAAA,CAAkBuB,aAAa,CAAC;AAAA,gDAClCvB,iBAAA,CAAkBuB,aAAA,CAAcG,GAAA,IAAO,EAAE,CAAC;AAAA","ignoreList":[]}
@@ -7,6 +7,7 @@ import { Root } from "./Root";
7
7
  import { registerPreloadedRoute } from "./router/useViteRoutes";
8
8
  import { getServerHeadInsertions } from "./useServerHeadInsertion";
9
9
  import { ensureExists } from "./utils/ensureExists";
10
+ import { safeJsonStringify } from "./utils/htmlEscape";
10
11
  import { SERVER_CONTEXT_POST_RENDER_STRING } from "./vite/constants";
11
12
  import { getServerContext, setServerContext } from "./vite/one-server-only";
12
13
  import { Fragment, jsx } from "react/jsx-runtime";
@@ -77,8 +78,8 @@ function createApp(options) {
77
78
  }
78
79
  const postRenderData = getServerContext()?.postRenderData;
79
80
  return postRenderData && (html = html.replace(
80
- JSON.stringify(SERVER_CONTEXT_POST_RENDER_STRING),
81
- JSON.stringify(postRenderData)
81
+ safeJsonStringify(SERVER_CONTEXT_POST_RENDER_STRING),
82
+ safeJsonStringify(postRenderData)
82
83
  )), html;
83
84
  }
84
85
  };
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/createApp.tsx"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": ["routePreloads"]
6
6
  }
@@ -7,6 +7,7 @@ import { Root } from "./Root.mjs";
7
7
  import { registerPreloadedRoute } from "./router/useViteRoutes.mjs";
8
8
  import { getServerHeadInsertions } from "./useServerHeadInsertion.mjs";
9
9
  import { ensureExists } from "./utils/ensureExists.mjs";
10
+ import { safeJsonStringify } from "./utils/htmlEscape.mjs";
10
11
  import { SERVER_CONTEXT_POST_RENDER_STRING } from "./vite/constants.mjs";
11
12
  import { getServerContext, setServerContext } from "./vite/one-server-only.mjs";
12
13
  import { Fragment, jsx } from "react/jsx-runtime";
@@ -75,7 +76,7 @@ function createApp(options) {
75
76
  if (!`${err}`.includes("sheet is not defined")) throw err;
76
77
  }
77
78
  const postRenderData = getServerContext()?.postRenderData;
78
- return postRenderData && (html = html.replace(JSON.stringify(SERVER_CONTEXT_POST_RENDER_STRING), JSON.stringify(postRenderData))), html;
79
+ return postRenderData && (html = html.replace(safeJsonStringify(SERVER_CONTEXT_POST_RENDER_STRING), safeJsonStringify(postRenderData))), html;
79
80
  }
80
81
  };
81
82
  const serverContext = getServerContext() || {},
@@ -1 +1 @@
1
- {"version":3,"names":["cloneElement","AppRegistry","resolveClientLoader","render","Root","registerPreloadedRoute","getServerHeadInsertions","ensureExists","SERVER_CONTEXT_POST_RENDER_STRING","getServerContext","setServerContext","Fragment","jsx","createApp","options","import","meta","env","SSR","props","ReactDOMServer","serverRender","Promise","all","renderToStaticMarkup","default","renderToString","loaderData","loaderProps","css","cssContents","mode","loaderServerData","routePreloads","routePreloads2","postRenderData","renderId","App","flags","onRenderId","id","routes","routerRoot","registerComponent","Application","getApplication","rootElement","element","children","html","preloads","deferredPreloads","extraHeadElements","styleTag","getStyleElement","nonce","process","ONE_NONCE","push","insertions","insertion","out","length","extraHeadHTML","map","x","i","key","replace","err","includes","JSON","stringify","serverContext","preloadPromises","Object","entries","routeKey","bundlePath","mod","then","isClient","path","window","location","href","catch","console","error"],"sources":["../../src/createApp.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["cloneElement","AppRegistry","resolveClientLoader","render","Root","registerPreloadedRoute","getServerHeadInsertions","ensureExists","safeJsonStringify","SERVER_CONTEXT_POST_RENDER_STRING","getServerContext","setServerContext","Fragment","jsx","createApp","options","import","meta","env","SSR","props","ReactDOMServer","serverRender","Promise","all","renderToStaticMarkup","default","renderToString","loaderData","loaderProps","css","cssContents","mode","loaderServerData","routePreloads","routePreloads2","postRenderData","renderId","App","flags","onRenderId","id","routes","routerRoot","registerComponent","Application","getApplication","rootElement","element","children","html","preloads","deferredPreloads","extraHeadElements","styleTag","getStyleElement","nonce","process","ONE_NONCE","push","insertions","insertion","out","length","extraHeadHTML","map","x","i","key","replace","err","includes","serverContext","preloadPromises","Object","entries","routeKey","bundlePath","mod","then","isClient","path","window","location","href","catch","console","error"],"sources":["../../src/createApp.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,5 @@
1
1
  import { SERVER_CONTEXT_KEY } from "../constants";
2
+ import { safeJsonStringify } from "../utils/htmlEscape";
2
3
  import { SERVER_CONTEXT_POST_RENDER_STRING } from "../vite/constants";
3
4
  import { useServerContext } from "../vite/one-server-only";
4
5
  import { jsx } from "react/jsx-runtime";
@@ -28,11 +29,11 @@ function ServerContextScript() {
28
29
  suppressHydrationWarning: !0,
29
30
  dangerouslySetInnerHTML: {
30
31
  __html: `
31
- globalThis["${SERVER_CONTEXT_KEY}"] = ${JSON.stringify({
32
+ globalThis["${SERVER_CONTEXT_KEY}"] = ${safeJsonStringify({
32
33
  ...clientContext,
33
34
  postRenderData: SERVER_CONTEXT_POST_RENDER_STRING
34
35
  })};
35
- globalThis.__oneLoadedCSS = new Set(${JSON.stringify(cssUrls)});
36
+ globalThis.__oneLoadedCSS = new Set(${safeJsonStringify(cssUrls)});
36
37
  `
37
38
  }
38
39
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/server/ServerContextScript.tsx"],
4
- "mappings": "AAAA,SAAS,0BAA0B;AACnC,SAAS,yCAAyC;AAClD,SAAS,wBAAwB;AAK3B;AAHC,SAAS,sBAAsB;AACpC,MAAI,QAAQ,IAAI,qBAAqB;AACnC,WACE;AAAA,MAAC;AAAA;AAAA,QACC,OAAK;AAAA,QAEL,MAAM;AAAA,QACN,0BAAwB;AAAA,QACxB,yBAAyB;AAAA,UACvB,QAAQ;AAAA,QACV;AAAA;AAAA,IACF;AAIJ,MAAI,QAAQ,IAAI,qBAAqB,OAAO;AAC1C,UAAM,UAAU,iBAAiB,GAC3B,UAAU,SAAS,OAAO,CAAC,GAM3B,EAAE,aAAa,GAAG,YAAY,IAAI,WAAW,CAAC,GAC9C,gBAAgB;AAAA,MACpB,GAAG;AAAA,MACH,gBAAgB,aAAa,UAAU;AAAA,IACzC;AAEA,WACE;AAAA,MAAC;AAAA;AAAA,QACC,OAAK;AAAA,QAEL,MAAM;AAAA,QACN,0BAAwB;AAAA,QACxB,yBAAyB;AAAA,UACvB,QAAQ;AAAA,4BACU,kBAAkB,QAAQ,KAAK,UAAU;AAAA,YACrD,GAAG;AAAA,YACH,gBAAgB;AAAA,UAClB,CAAC,CAAC;AAAA,oDACoC,KAAK,UAAU,OAAO,CAAC;AAAA;AAAA,QAEnE;AAAA;AAAA,IACF;AAAA,EAEJ;AAEA,SAAO;AACT;",
4
+ "mappings": "AAAA,SAAS,0BAA0B;AACnC,SAAS,yBAAyB;AAClC,SAAS,yCAAyC;AAClD,SAAS,wBAAwB;AAK3B;AAHC,SAAS,sBAAsB;AACpC,MAAI,QAAQ,IAAI,qBAAqB;AACnC,WACE;AAAA,MAAC;AAAA;AAAA,QACC,OAAK;AAAA,QAEL,MAAM;AAAA,QACN,0BAAwB;AAAA,QACxB,yBAAyB;AAAA,UACvB,QAAQ;AAAA,QACV;AAAA;AAAA,IACF;AAIJ,MAAI,QAAQ,IAAI,qBAAqB,OAAO;AAC1C,UAAM,UAAU,iBAAiB,GAC3B,UAAU,SAAS,OAAO,CAAC,GAM3B,EAAE,aAAa,GAAG,YAAY,IAAI,WAAW,CAAC,GAC9C,gBAAgB;AAAA,MACpB,GAAG;AAAA,MACH,gBAAgB,aAAa,UAAU;AAAA,IACzC;AAEA,WACE;AAAA,MAAC;AAAA;AAAA,QACC,OAAK;AAAA,QAEL,MAAM;AAAA,QACN,0BAAwB;AAAA,QACxB,yBAAyB;AAAA,UACvB,QAAQ;AAAA,4BACU,kBAAkB,QAAQ,kBAAkB;AAAA,YACxD,GAAG;AAAA,YACH,gBAAgB;AAAA,UAClB,CAAC,CAAC;AAAA,oDACoC,kBAAkB,OAAO,CAAC;AAAA;AAAA,QAEtE;AAAA;AAAA,IACF;AAAA,EAEJ;AAEA,SAAO;AACT;",
5
5
  "names": []
6
6
  }
@@ -1,4 +1,5 @@
1
1
  import { SERVER_CONTEXT_KEY } from "../constants.mjs";
2
+ import { safeJsonStringify } from "../utils/htmlEscape.mjs";
2
3
  import { SERVER_CONTEXT_POST_RENDER_STRING } from "../vite/constants.mjs";
3
4
  import { useServerContext } from "../vite/one-server-only.mjs";
4
5
  import { jsx } from "react/jsx-runtime";
@@ -28,11 +29,11 @@ function ServerContextScript() {
28
29
  suppressHydrationWarning: !0,
29
30
  dangerouslySetInnerHTML: {
30
31
  __html: `
31
- globalThis["${SERVER_CONTEXT_KEY}"] = ${JSON.stringify({
32
+ globalThis["${SERVER_CONTEXT_KEY}"] = ${safeJsonStringify({
32
33
  ...clientContext,
33
34
  postRenderData: SERVER_CONTEXT_POST_RENDER_STRING
34
35
  })};
35
- globalThis.__oneLoadedCSS = new Set(${JSON.stringify(cssUrls)});
36
+ globalThis.__oneLoadedCSS = new Set(${safeJsonStringify(cssUrls)});
36
37
  `
37
38
  }
38
39
  });
@@ -1 +1 @@
1
- {"version":3,"names":["SERVER_CONTEXT_KEY","SERVER_CONTEXT_POST_RENDER_STRING","useServerContext","jsx","ServerContextScript","process","env","VITE_ENVIRONMENT","async","href","suppressHydrationWarning","dangerouslySetInnerHTML","__html","context","cssUrls","css","cssContents","restContext","clientContext","cssInlineCount","length","JSON","stringify","postRenderData"],"sources":["../../../src/server/ServerContextScript.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,kBAAA,QAA0B;AACnC,SAASC,iCAAA,QAAyC;AAClD,SAASC,gBAAA,QAAwB;AAK3B,SAAAC,GAAA;AAHC,SAASC,oBAAA,EAAsB;EACpC,IAAIC,OAAA,CAAQC,GAAA,CAAIC,gBAAA,KAAqB,UACnC,OACE,eAAAJ,GAAA,CAAC;IACCK,KAAA,EAAK;IAELC,IAAA,EAAMT,kBAAA;IACNU,wBAAA,EAAwB;IACxBC,uBAAA,EAAyB;MACvBC,MAAA,EAAQ;IACV;EAAA,CACF;EAIJ,IAAIP,OAAA,CAAQC,GAAA,CAAIC,gBAAA,KAAqB,OAAO;IAC1C,MAAMM,OAAA,GAAUX,gBAAA,CAAiB;MAC3BY,OAAA,GAAUD,OAAA,EAASE,GAAA,IAAO,EAAC;MAM3B;QAAEC,WAAA;QAAa,GAAGC;MAAY,IAAIJ,OAAA,IAAW,CAAC;MAC9CK,aAAA,GAAgB;QACpB,GAAGD,WAAA;QACHE,cAAA,EAAgBH,WAAA,EAAaI,MAAA,IAAU;MACzC;IAEA,OACE,eAAAjB,GAAA,CAAC;MACCK,KAAA,EAAK;MAELC,IAAA,EAAMT,kBAAA;MACNU,wBAAA,EAAwB;MACxBC,uBAAA,EAAyB;QACvBC,MAAA,EAAQ;AAAA,4BACUZ,kBAAkB,QAAQqB,IAAA,CAAKC,SAAA,CAAU;UACrD,GAAGJ,aAAA;UACHK,cAAA,EAAgBtB;QAClB,CAAC,CAAC;AAAA,oDACoCoB,IAAA,CAAKC,SAAA,CAAUR,OAAO,CAAC;AAAA;MAEnE;IAAA,CACF;EAEJ;EAEA,OAAO;AACT","ignoreList":[]}
1
+ {"version":3,"names":["SERVER_CONTEXT_KEY","safeJsonStringify","SERVER_CONTEXT_POST_RENDER_STRING","useServerContext","jsx","ServerContextScript","process","env","VITE_ENVIRONMENT","async","href","suppressHydrationWarning","dangerouslySetInnerHTML","__html","context","cssUrls","css","cssContents","restContext","clientContext","cssInlineCount","length","postRenderData"],"sources":["../../../src/server/ServerContextScript.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,kBAAA,QAA0B;AACnC,SAASC,iBAAA,QAAyB;AAClC,SAASC,iCAAA,QAAyC;AAClD,SAASC,gBAAA,QAAwB;AAK3B,SAAAC,GAAA;AAHC,SAASC,oBAAA,EAAsB;EACpC,IAAIC,OAAA,CAAQC,GAAA,CAAIC,gBAAA,KAAqB,UACnC,OACE,eAAAJ,GAAA,CAAC;IACCK,KAAA,EAAK;IAELC,IAAA,EAAMV,kBAAA;IACNW,wBAAA,EAAwB;IACxBC,uBAAA,EAAyB;MACvBC,MAAA,EAAQ;IACV;EAAA,CACF;EAIJ,IAAIP,OAAA,CAAQC,GAAA,CAAIC,gBAAA,KAAqB,OAAO;IAC1C,MAAMM,OAAA,GAAUX,gBAAA,CAAiB;MAC3BY,OAAA,GAAUD,OAAA,EAASE,GAAA,IAAO,EAAC;MAM3B;QAAEC,WAAA;QAAa,GAAGC;MAAY,IAAIJ,OAAA,IAAW,CAAC;MAC9CK,aAAA,GAAgB;QACpB,GAAGD,WAAA;QACHE,cAAA,EAAgBH,WAAA,EAAaI,MAAA,IAAU;MACzC;IAEA,OACE,eAAAjB,GAAA,CAAC;MACCK,KAAA,EAAK;MAELC,IAAA,EAAMV,kBAAA;MACNW,wBAAA,EAAwB;MACxBC,uBAAA,EAAyB;QACvBC,MAAA,EAAQ;AAAA,4BACUb,kBAAkB,QAAQC,iBAAA,CAAkB;UACxD,GAAGkB,aAAA;UACHG,cAAA,EAAgBpB;QAClB,CAAC,CAAC;AAAA,oDACoCD,iBAAA,CAAkBc,OAAO,CAAC;AAAA;MAEtE;IAAA,CACF;EAEJ;EAEA,OAAO;AACT","ignoreList":[]}
@@ -1,5 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { SERVER_CONTEXT_KEY } from "../constants.native.js";
3
+ import { safeJsonStringify } from "../utils/htmlEscape.native.js";
3
4
  import { SERVER_CONTEXT_POST_RENDER_STRING } from "../vite/constants.native.js";
4
5
  import { useServerContext } from "../vite/one-server-only.native.js";
5
6
  function ServerContextScript() {
@@ -30,11 +31,11 @@ function ServerContextScript() {
30
31
  suppressHydrationWarning: !0,
31
32
  dangerouslySetInnerHTML: {
32
33
  __html: `
33
- globalThis["${SERVER_CONTEXT_KEY}"] = ${JSON.stringify({
34
+ globalThis["${SERVER_CONTEXT_KEY}"] = ${safeJsonStringify({
34
35
  ...clientContext,
35
36
  postRenderData: SERVER_CONTEXT_POST_RENDER_STRING
36
37
  })};
37
- globalThis.__oneLoadedCSS = new Set(${JSON.stringify(cssUrls)});
38
+ globalThis.__oneLoadedCSS = new Set(${safeJsonStringify(cssUrls)});
38
39
  `
39
40
  }
40
41
  });
@@ -1 +1 @@
1
- {"version":3,"names":["jsx","_jsx","SERVER_CONTEXT_KEY","SERVER_CONTEXT_POST_RENDER_STRING","useServerContext","ServerContextScript","process","env","VITE_ENVIRONMENT","async","href","suppressHydrationWarning","dangerouslySetInnerHTML","__html","context","cssUrls","css","cssContents","restContext","clientContext","cssInlineCount","length","JSON","stringify","postRenderData"],"sources":["../../../src/server/ServerContextScript.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,GAAA,IAAAC,IAAA,2BAA0B;AACnC,SAASC,kBAAA;AACT,SAASC,iCAAwB;AAK3B,SAAAC,gBAAA;AAHC,SAASC,oBAAA,EAAsB;EACpC,IAAIC,OAAA,CAAQC,GAAA,CAAIC,gBAAA,KAAqB,UACnC,OACE,eAAAP,IAAA;IAACQ,KAAA;IAAA;IAAAC,IACC,EAAAR,kBAAK;IAAAS,wBAEC;IAAAC,uBACN;MACAC,MAAA;IAAyB;EACf;EACV,IAAAP,OAAA,CAAAC,GAAA,CAAAC,gBAAA;IACF,IAAAM,OAAA,GAAAV,gBAAA;MAAAW,OAAA,GAAAD,OAAA,EAAAE,GAAA;MAAA;QAAAC,WAAA;QAAA,GAAAC;MAAA,IAAAJ,OAAA;MAAAK,aAAA;QAIA,GAAAD,WAAY;QACdE,cAAgB,EAAAH,WAAA,EAAAI,MACV;MAOgB;IACjB,OACH,eAAgBpB,IAAA,SAAa;MAC/BQ,KAAA;MAEA;MACGC,IAAA,EAAAR,kBAAA;MAAAS,wBAAA;MAAAC,uBACM;QAELC,MAAM;AAAA,4BACNX,kBAAwB,QAAAoB,IAAA,CAAAC,SAAA;UACxB,GAAAJ,aAAA;UACEK,cAAQ,EAAArB;QAAA;AACmD,oDAClDmB,IAAA,CAAAC,SAAA,CAAAR,OAAA;AAAA;MACa;IAChB;EAC2D;EAAA,OAEnE;AAAA;AAAA,SAGNV,mBAAA","ignoreList":[]}
1
+ {"version":3,"names":["jsx","_jsx","SERVER_CONTEXT_KEY","safeJsonStringify","SERVER_CONTEXT_POST_RENDER_STRING","useServerContext","ServerContextScript","process","env","VITE_ENVIRONMENT","async","href","suppressHydrationWarning","dangerouslySetInnerHTML","__html","context","cssUrls","css","cssContents","restContext","clientContext","cssInlineCount","length","postRenderData"],"sources":["../../../src/server/ServerContextScript.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,GAAA,IAAAC,IAAA,2BAA0B;AACnC,SAASC,kBAAA,QAAyB;AAClC,SAASC,iBAAA,uCAAyC;AAClD,SAASC,iCAAwB;AAK3B,SAAAC,gBAAA;AAHC,SAASC,oBAAA,EAAsB;EACpC,IAAIC,OAAA,CAAQC,GAAA,CAAIC,gBAAA,KAAqB,UACnC,OACE,eAAAR,IAAA;IAACS,KAAA;IAAA;IAAAC,IACC,EAAAT,kBAAK;IAAAU,wBAEC;IAAAC,uBACN;MACAC,MAAA;IAAyB;EACf;EACV,IAAAP,OAAA,CAAAC,GAAA,CAAAC,gBAAA;IACF,IAAAM,OAAA,GAAAV,gBAAA;MAAAW,OAAA,GAAAD,OAAA,EAAAE,GAAA;MAAA;QAAAC,WAAA;QAAA,GAAAC;MAAA,IAAAJ,OAAA;MAAAK,aAAA;QAIA,GAAAD,WAAY;QACdE,cAAgB,EAAAH,WAAA,EAAAI,MACV;MAOgB;IACjB,OACH,eAAgBrB,IAAA,SAAa;MAC/BS,KAAA;MAEA;MACGC,IAAA,EAAAT,kBAAA;MAAAU,wBAAA;MAAAC,uBACM;QAELC,MAAM;AAAA,4BACNZ,kBAAwB,QAAAC,iBAAA;UACxB,GAAAiB,aAAA;UACEG,cAAQ,EAAAnB;QAAA;AACsD,oDACrDD,iBAAA,CAAAa,OAAA;AAAA;MACa;IAChB;EAC8D;EAAA,OAEtE;AAAA;AAAA,SAGNV,mBAAA","ignoreList":[]}
@@ -0,0 +1,23 @@
1
+ const ESCAPE_LOOKUP = {
2
+ "&": "\\u0026",
3
+ // &
4
+ "<": "\\u003c",
5
+ // <
6
+ ">": "\\u003e",
7
+ // >
8
+ "\u2028": "\\u2028",
9
+ // Line separator
10
+ "\u2029": "\\u2029"
11
+ // Paragraph separator
12
+ }, ESCAPE_REGEX = /[\u0026\u003c\u003e\u2028\u2029]/g;
13
+ function htmlEscapeJsonString(str) {
14
+ return str.replace(ESCAPE_REGEX, (match) => ESCAPE_LOOKUP[match]);
15
+ }
16
+ function safeJsonStringify(value) {
17
+ return htmlEscapeJsonString(JSON.stringify(value));
18
+ }
19
+ export {
20
+ htmlEscapeJsonString,
21
+ safeJsonStringify
22
+ };
23
+ //# sourceMappingURL=htmlEscape.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/utils/htmlEscape.ts"],
4
+ "mappings": "AAIA,MAAM,gBAAwC;AAAA,EAC5C,KAAU;AAAA;AAAA,EACV,KAAU;AAAA;AAAA,EACV,KAAU;AAAA;AAAA,EACV,UAAU;AAAA;AAAA,EACV,UAAU;AAAA;AACZ,GAEM,eAAe;AAad,SAAS,qBAAqB,KAAqB;AACxD,SAAO,IAAI,QAAQ,cAAc,CAAC,UAAU,cAAc,KAAK,CAAC;AAClE;AAKO,SAAS,kBAAkB,OAAwB;AACxD,SAAO,qBAAqB,KAAK,UAAU,KAAK,CAAC;AACnD;",
5
+ "names": []
6
+ }
@@ -0,0 +1,21 @@
1
+ const ESCAPE_LOOKUP = {
2
+ "&": "\\u0026",
3
+ // &
4
+ "<": "\\u003c",
5
+ // <
6
+ ">": "\\u003e",
7
+ // >
8
+ "\u2028": "\\u2028",
9
+ // Line separator
10
+ "\u2029": "\\u2029"
11
+ // Paragraph separator
12
+ },
13
+ ESCAPE_REGEX = /[\u0026\u003c\u003e\u2028\u2029]/g;
14
+ function htmlEscapeJsonString(str) {
15
+ return str.replace(ESCAPE_REGEX, match => ESCAPE_LOOKUP[match]);
16
+ }
17
+ function safeJsonStringify(value) {
18
+ return htmlEscapeJsonString(JSON.stringify(value));
19
+ }
20
+ export { htmlEscapeJsonString, safeJsonStringify };
21
+ //# sourceMappingURL=htmlEscape.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ESCAPE_LOOKUP","ESCAPE_REGEX","htmlEscapeJsonString","str","replace","match","safeJsonStringify","value","JSON","stringify"],"sources":["../../../src/utils/htmlEscape.ts"],"sourcesContent":[null],"mappings":"AAIA,MAAMA,aAAA,GAAwC;IAC5C,KAAU;IAAA;IACV,KAAU;IAAA;IACV,KAAU;IAAA;IACV,UAAU;IAAA;IACV,UAAU;IAAA;EACZ;EAEMC,YAAA,GAAe;AAad,SAASC,qBAAqBC,GAAA,EAAqB;EACxD,OAAOA,GAAA,CAAIC,OAAA,CAAQH,YAAA,EAAeI,KAAA,IAAUL,aAAA,CAAcK,KAAK,CAAC;AAClE;AAKO,SAASC,kBAAkBC,KAAA,EAAwB;EACxD,OAAOL,oBAAA,CAAqBM,IAAA,CAAKC,SAAA,CAAUF,KAAK,CAAC;AACnD","ignoreList":[]}
@@ -0,0 +1,22 @@
1
+ var ESCAPE_LOOKUP = {
2
+ "&": "\\u0026",
3
+ // &
4
+ "<": "\\u003c",
5
+ // <
6
+ ">": "\\u003e",
7
+ // >
8
+ "\u2028": "\\u2028",
9
+ // Line separator
10
+ "\u2029": "\\u2029"
11
+ },
12
+ ESCAPE_REGEX = /[\u0026\u003c\u003e\u2028\u2029]/g;
13
+ function htmlEscapeJsonString(str) {
14
+ return str.replace(ESCAPE_REGEX, function (match) {
15
+ return ESCAPE_LOOKUP[match];
16
+ });
17
+ }
18
+ function safeJsonStringify(value) {
19
+ return htmlEscapeJsonString(JSON.stringify(value));
20
+ }
21
+ export { htmlEscapeJsonString, safeJsonStringify };
22
+ //# sourceMappingURL=htmlEscape.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ESCAPE_LOOKUP","ESCAPE_REGEX","htmlEscapeJsonString","str","replace","match","safeJsonStringify","value","JSON","stringify"],"sources":["../../../src/utils/htmlEscape.ts"],"sourcesContent":[null],"mappings":"AAIA,IAAAA,aAAM;IACJ,KAAU;IAAA;IACV,KAAU;IAAA;IACV,KAAU;IAAA;IACV,UAAU;IAAA;IACV,UAAU;EAAA;EAAAC,YAAA;AACZ,SAEMC,oBAAeA,CAAAC,GAAA;EAad,OAASA,GAAA,CAAAC,OAAA,CAAAH,YAAqB,EAAqB,UAAAI,KAAA;IACxD,OAAOL,aAAY,CAAAK,KAAA;EACrB;AAKO;AACL,SAAOC,kBAAAC,KAAqB;EAC9B,OAAAL,oBAAA,CAAAM,IAAA,CAAAC,SAAA,CAAAF,KAAA","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "one",
3
- "version": "1.2.51",
3
+ "version": "1.2.52",
4
4
  "license": "BSD-3-Clause",
5
5
  "sideEffects": [
6
6
  "setup.mjs",
@@ -130,17 +130,17 @@
130
130
  "@react-navigation/routers": "~7.5.1",
131
131
  "@swc/core": "^1.14.0",
132
132
  "@ungap/structured-clone": "^1.2.0",
133
- "@vxrn/color-scheme": "1.2.51",
134
- "@vxrn/compiler": "1.2.51",
135
- "@vxrn/resolve": "1.2.51",
136
- "@vxrn/tslib-lite": "1.2.51",
137
- "@vxrn/use-isomorphic-layout-effect": "1.2.51",
138
- "@vxrn/vite-plugin-metro": "1.2.51",
133
+ "@vxrn/color-scheme": "1.2.52",
134
+ "@vxrn/compiler": "1.2.52",
135
+ "@vxrn/resolve": "1.2.52",
136
+ "@vxrn/tslib-lite": "1.2.52",
137
+ "@vxrn/use-isomorphic-layout-effect": "1.2.52",
138
+ "@vxrn/vite-plugin-metro": "1.2.52",
139
139
  "babel-dead-code-elimination": "^1.0.10",
140
140
  "babel-plugin-module-resolver": "^5.0.2",
141
141
  "citty": "^0.1.6",
142
142
  "core-js": "^3.38.1",
143
- "create-vxrn": "1.2.51",
143
+ "create-vxrn": "1.2.52",
144
144
  "escape-string-regexp": "^5.0.0",
145
145
  "expo-linking": "~8.0.8",
146
146
  "expo-modules-core": "~3.0.24",
@@ -166,7 +166,7 @@
166
166
  "vite": "^7.1.12",
167
167
  "vite-plugin-barrel": "^0.4.1",
168
168
  "vite-tsconfig-paths": "^5.1.4",
169
- "vxrn": "1.2.51",
169
+ "vxrn": "1.2.52",
170
170
  "ws": "^8.18.0",
171
171
  "xxhashjs": "^0.2.2"
172
172
  },
package/src/constants.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { safeJsonStringify } from './utils/htmlEscape'
1
2
  import type { One } from './vite/types'
2
3
 
3
4
  export const isWebClient =
@@ -29,6 +30,6 @@ export const getSpaHeaderElements = ({
29
30
  } = {}) => `
30
31
  <script>globalThis['global'] = globalThis</script>
31
32
  <script>globalThis['__vxrnIsSPA'] = true</script>
32
- <script>globalThis["${SERVER_CONTEXT_KEY}"] = ${JSON.stringify(serverContext)}</script>
33
- <script>globalThis.__oneLoadedCSS = new Set(${JSON.stringify(serverContext.css || [])})</script>
33
+ <script>globalThis["${SERVER_CONTEXT_KEY}"] = ${safeJsonStringify(serverContext)}</script>
34
+ <script>globalThis.__oneLoadedCSS = new Set(${safeJsonStringify(serverContext.css || [])})</script>
34
35
  `
package/src/createApp.tsx CHANGED
@@ -9,6 +9,7 @@ import { registerPreloadedRoute } from './router/useViteRoutes'
9
9
  import type { RenderAppProps } from './types'
10
10
  import { getServerHeadInsertions } from './useServerHeadInsertion'
11
11
  import { ensureExists } from './utils/ensureExists'
12
+ import { safeJsonStringify } from './utils/htmlEscape'
12
13
  import { SERVER_CONTEXT_POST_RENDER_STRING } from './vite/constants'
13
14
  import { getServerContext, setServerContext } from './vite/one-server-only'
14
15
  import type { One } from './vite/types'
@@ -127,8 +128,8 @@ export function createApp(options: CreateAppProps) {
127
128
 
128
129
  if (postRenderData) {
129
130
  html = html.replace(
130
- JSON.stringify(SERVER_CONTEXT_POST_RENDER_STRING),
131
- JSON.stringify(postRenderData)
131
+ safeJsonStringify(SERVER_CONTEXT_POST_RENDER_STRING),
132
+ safeJsonStringify(postRenderData)
132
133
  )
133
134
  }
134
135
 
@@ -1,4 +1,5 @@
1
1
  import { SERVER_CONTEXT_KEY } from '../constants'
2
+ import { safeJsonStringify } from '../utils/htmlEscape'
2
3
  import { SERVER_CONTEXT_POST_RENDER_STRING } from '../vite/constants'
3
4
  import { useServerContext } from '../vite/one-server-only'
4
5
 
@@ -39,11 +40,11 @@ export function ServerContextScript() {
39
40
  suppressHydrationWarning
40
41
  dangerouslySetInnerHTML={{
41
42
  __html: `
42
- globalThis["${SERVER_CONTEXT_KEY}"] = ${JSON.stringify({
43
+ globalThis["${SERVER_CONTEXT_KEY}"] = ${safeJsonStringify({
43
44
  ...clientContext,
44
45
  postRenderData: SERVER_CONTEXT_POST_RENDER_STRING,
45
46
  })};
46
- globalThis.__oneLoadedCSS = new Set(${JSON.stringify(cssUrls)});
47
+ globalThis.__oneLoadedCSS = new Set(${safeJsonStringify(cssUrls)});
47
48
  `,
48
49
  }}
49
50
  />
@@ -0,0 +1,35 @@
1
+ // Based on https://github.com/zertosh/htmlescape
2
+ // Prevents XSS when embedding JSON in <script> tags
3
+ // See: https://pragmaticwebsecurity.com/articles/spasecurity/json-stringify-xss.html
4
+
5
+ const ESCAPE_LOOKUP: Record<string, string> = {
6
+ '\u0026': '\\u0026', // &
7
+ '\u003c': '\\u003c', // <
8
+ '\u003e': '\\u003e', // >
9
+ '\u2028': '\\u2028', // Line separator
10
+ '\u2029': '\\u2029', // Paragraph separator
11
+ }
12
+
13
+ const ESCAPE_REGEX = /[\u0026\u003c\u003e\u2028\u2029]/g
14
+
15
+ /**
16
+ * Escapes a JSON string for safe embedding in HTML <script> tags.
17
+ *
18
+ * JSON.stringify doesn't escape characters like < and >, which means
19
+ * a string containing "</script>" can break out of a script tag and
20
+ * allow arbitrary code execution.
21
+ *
22
+ * This function escapes those characters as unicode escape sequences
23
+ * (e.g., < becomes \u003c) which are valid JSON but won't be parsed
24
+ * as HTML.
25
+ */
26
+ export function htmlEscapeJsonString(str: string): string {
27
+ return str.replace(ESCAPE_REGEX, (match) => ESCAPE_LOOKUP[match])
28
+ }
29
+
30
+ /**
31
+ * Safely serializes a value to JSON for embedding in HTML <script> tags.
32
+ */
33
+ export function safeJsonStringify(value: unknown): string {
34
+ return htmlEscapeJsonString(JSON.stringify(value))
35
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AAEvC,eAAO,MAAM,WAAW,SACkD,CAAA;AAC1E,eAAO,MAAM,WAAW,SACkD,CAAA;AAC1E,eAAO,MAAM,QAAQ,SAA0C,CAAA;AAE/D,eAAO,MAAM,SAAS,QAA4E,CAAA;AAElG,eAAO,MAAM,0BAA0B,oBAAoB,CAAA;AAC3D,eAAO,MAAM,8BAA8B,0BAAwC,CAAA;AACnF,eAAO,MAAM,uBAAuB,QAA6C,CAAA;AACjF,eAAO,MAAM,iBAAiB,QAA+C,CAAA;AAE7E,eAAO,MAAM,kBAAkB,QAA6B,CAAA;AAC5D,eAAO,MAAM,sBAAsB,QAAiC,CAAA;AAGpE,eAAO,MAAM,qBAAqB,wBAAwB,CAAA;AAC1D,eAAO,MAAM,oBAAoB,oCAAyC,CAAA;AAE1E,eAAO,MAAM,kBAAkB,2BAA2B,CAAA;AAE1D,eAAO,MAAM,oBAAoB,GAAI,qBAElC;IACD,aAAa,CAAC,EAAE,GAAG,CAAC,aAAa,CAAA;CAC7B,WAKL,CAAA"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AAEvC,eAAO,MAAM,WAAW,SACkD,CAAA;AAC1E,eAAO,MAAM,WAAW,SACkD,CAAA;AAC1E,eAAO,MAAM,QAAQ,SAA0C,CAAA;AAE/D,eAAO,MAAM,SAAS,QAA4E,CAAA;AAElG,eAAO,MAAM,0BAA0B,oBAAoB,CAAA;AAC3D,eAAO,MAAM,8BAA8B,0BAAwC,CAAA;AACnF,eAAO,MAAM,uBAAuB,QAA6C,CAAA;AACjF,eAAO,MAAM,iBAAiB,QAA+C,CAAA;AAE7E,eAAO,MAAM,kBAAkB,QAA6B,CAAA;AAC5D,eAAO,MAAM,sBAAsB,QAAiC,CAAA;AAGpE,eAAO,MAAM,qBAAqB,wBAAwB,CAAA;AAC1D,eAAO,MAAM,oBAAoB,oCAAyC,CAAA;AAE1E,eAAO,MAAM,kBAAkB,2BAA2B,CAAA;AAE1D,eAAO,MAAM,oBAAoB,GAAI,qBAElC;IACD,aAAa,CAAC,EAAE,GAAG,CAAC,aAAa,CAAA;CAC7B,WAKL,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"createApp.d.ts","sourceRoot":"","sources":["../src/createApp.tsx"],"names":[],"mappings":"AAAA,OAAO,SAAS,CAAA;AAQhB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAK7C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AAEvC,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC,CAAA;IAC9C,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,GAAG,CAAC,KAAK,CAAA;CAClB,CAAA;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,cAAc;;oBAIrB,cAAc;EAiJzC"}
1
+ {"version":3,"file":"createApp.d.ts","sourceRoot":"","sources":["../src/createApp.tsx"],"names":[],"mappings":"AAAA,OAAO,SAAS,CAAA;AAQhB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAM7C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AAEvC,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC,CAAA;IAC9C,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,GAAG,CAAC,KAAK,CAAA;CAClB,CAAA;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,cAAc;;oBAIrB,cAAc;EAiJzC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ServerContextScript.d.ts","sourceRoot":"","sources":["../../src/server/ServerContextScript.tsx"],"names":[],"mappings":"AAIA,wBAAgB,mBAAmB,mDAiDlC"}
1
+ {"version":3,"file":"ServerContextScript.d.ts","sourceRoot":"","sources":["../../src/server/ServerContextScript.tsx"],"names":[],"mappings":"AAKA,wBAAgB,mBAAmB,mDAiDlC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Escapes a JSON string for safe embedding in HTML <script> tags.
3
+ *
4
+ * JSON.stringify doesn't escape characters like < and >, which means
5
+ * a string containing "</script>" can break out of a script tag and
6
+ * allow arbitrary code execution.
7
+ *
8
+ * This function escapes those characters as unicode escape sequences
9
+ * (e.g., < becomes \u003c) which are valid JSON but won't be parsed
10
+ * as HTML.
11
+ */
12
+ export declare function htmlEscapeJsonString(str: string): string;
13
+ /**
14
+ * Safely serializes a value to JSON for embedding in HTML <script> tags.
15
+ */
16
+ export declare function safeJsonStringify(value: unknown): string;
17
+ //# sourceMappingURL=htmlEscape.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"htmlEscape.d.ts","sourceRoot":"","sources":["../../src/utils/htmlEscape.ts"],"names":[],"mappings":"AAcA;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAExD"}