elit 3.5.0 → 3.5.1

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 (58) hide show
  1. package/README.md +80 -2
  2. package/dist/build.d.mts +1 -1
  3. package/dist/cli.js +178 -54
  4. package/dist/config.d.mts +1 -1
  5. package/dist/coverage.d.mts +1 -1
  6. package/dist/http.d.ts.map +1 -1
  7. package/dist/http.js +5 -4
  8. package/dist/http.js.map +1 -1
  9. package/dist/http.mjs +5 -4
  10. package/dist/http.mjs.map +1 -1
  11. package/dist/https.js +5 -4
  12. package/dist/https.js.map +1 -1
  13. package/dist/https.mjs +5 -4
  14. package/dist/https.mjs.map +1 -1
  15. package/dist/index.d.mts +1 -1
  16. package/dist/index.js +20 -1
  17. package/dist/index.js.map +1 -1
  18. package/dist/index.mjs +20 -1
  19. package/dist/index.mjs.map +1 -1
  20. package/dist/native.js +20 -1
  21. package/dist/native.js.map +1 -1
  22. package/dist/native.mjs +20 -1
  23. package/dist/native.mjs.map +1 -1
  24. package/dist/{server-DpnTyF7I.d.mts → server--YFoC6ln.d.mts} +27 -0
  25. package/dist/{server-BU71N4fk.d.ts → server-DacsdjFJ.d.ts} +27 -0
  26. package/dist/server.d.mts +1 -1
  27. package/dist/server.d.ts.map +1 -1
  28. package/dist/server.js +141 -52
  29. package/dist/server.js.map +1 -1
  30. package/dist/server.mjs +141 -52
  31. package/dist/server.mjs.map +1 -1
  32. package/dist/state.d.ts.map +1 -1
  33. package/dist/state.js +20 -1
  34. package/dist/state.js.map +1 -1
  35. package/dist/state.mjs +20 -1
  36. package/dist/state.mjs.map +1 -1
  37. package/dist/types.d.mts +28 -1
  38. package/dist/types.d.ts +27 -0
  39. package/dist/types.d.ts.map +1 -1
  40. package/dist/types.js.map +1 -1
  41. package/dist/ws.d.mts +1 -1
  42. package/dist/ws.d.ts +1 -1
  43. package/dist/ws.d.ts.map +1 -1
  44. package/dist/ws.js +9 -4
  45. package/dist/ws.js.map +1 -1
  46. package/dist/ws.mjs +9 -4
  47. package/dist/ws.mjs.map +1 -1
  48. package/dist/wss.js +14 -8
  49. package/dist/wss.js.map +1 -1
  50. package/dist/wss.mjs +14 -8
  51. package/dist/wss.mjs.map +1 -1
  52. package/package.json +1 -1
  53. package/src/cli.ts +18 -0
  54. package/src/http.ts +5 -4
  55. package/src/server.ts +182 -56
  56. package/src/state.ts +25 -1
  57. package/src/types.ts +30 -0
  58. package/src/ws.ts +12 -5
package/dist/index.mjs CHANGED
@@ -742,6 +742,7 @@ var mount = render;
742
742
 
743
743
  // src/state.ts
744
744
  var ELIT_NATIVE_BINDING = /* @__PURE__ */ Symbol.for("elit.native.binding");
745
+ var ELIT_INTERNAL_WS_PATH = "/__elit_ws";
745
746
  var createState = (initial, options) => dom.createState(initial, options);
746
747
  var computed = (states, fn) => dom.computed(states, fn);
747
748
  var effect = (fn) => dom.effect(fn);
@@ -807,6 +808,24 @@ function bindChecked(state) {
807
808
  };
808
809
  return props;
809
810
  }
811
+ function resolveSharedStateWebSocketUrl(wsUrl) {
812
+ const protocol = typeof location !== "undefined" && location.protocol === "https:" ? "wss:" : "ws:";
813
+ const origin = typeof location !== "undefined" ? `${protocol}//${location.host}` : `${protocol}//localhost`;
814
+ if (!wsUrl) {
815
+ return `${origin}${ELIT_INTERNAL_WS_PATH}`;
816
+ }
817
+ if (/^wss?:\/\//i.test(wsUrl)) {
818
+ const parsedUrl = new URL(wsUrl);
819
+ if (!parsedUrl.pathname || parsedUrl.pathname === "/") {
820
+ parsedUrl.pathname = ELIT_INTERNAL_WS_PATH;
821
+ }
822
+ return parsedUrl.toString();
823
+ }
824
+ if (wsUrl.startsWith("/")) {
825
+ return `${origin}${wsUrl}`;
826
+ }
827
+ return wsUrl;
828
+ }
810
829
  var SharedState = class {
811
830
  constructor(key, defaultValue, wsUrl) {
812
831
  this.key = key;
@@ -858,7 +877,7 @@ var SharedState = class {
858
877
  */
859
878
  connect() {
860
879
  if (typeof window === "undefined") return;
861
- const url = this.wsUrl || `ws://${location.host}`;
880
+ const url = resolveSharedStateWebSocketUrl(this.wsUrl);
862
881
  this.ws = new WebSocket(url);
863
882
  this.ws.addEventListener("open", () => {
864
883
  this.subscribe();