valyrian.js 7.2.12 → 8.0.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 (168) hide show
  1. package/README.md +6 -6
  2. package/dist/flux-store/index.d.ts +32 -0
  3. package/dist/flux-store/index.d.ts.map +1 -0
  4. package/dist/flux-store/index.js +267 -0
  5. package/dist/flux-store/index.js.map +7 -0
  6. package/dist/flux-store/index.min.js +1 -0
  7. package/dist/flux-store/index.min.js.map +1 -0
  8. package/dist/flux-store/index.mjs +246 -0
  9. package/dist/flux-store/index.mjs.map +7 -0
  10. package/dist/hooks/index.d.ts.map +1 -1
  11. package/dist/hooks/index.js +35 -51
  12. package/dist/hooks/index.js.map +3 -3
  13. package/dist/hooks/index.min.js +1 -0
  14. package/dist/hooks/index.min.js.map +1 -0
  15. package/dist/hooks/index.mjs +36 -52
  16. package/dist/hooks/index.mjs.map +3 -3
  17. package/dist/index.d.ts +18 -14
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +107 -88
  20. package/dist/index.js.map +3 -3
  21. package/dist/index.min.js +1 -1
  22. package/dist/index.min.js.map +1 -1
  23. package/dist/index.mjs +107 -88
  24. package/dist/index.mjs.map +3 -3
  25. package/dist/native-store/index.d.ts +14 -0
  26. package/dist/native-store/index.d.ts.map +1 -0
  27. package/dist/native-store/index.js +103 -0
  28. package/dist/native-store/index.js.map +7 -0
  29. package/dist/native-store/index.min.js +1 -0
  30. package/dist/native-store/index.min.js.map +1 -0
  31. package/dist/native-store/index.mjs +82 -0
  32. package/dist/native-store/index.mjs.map +7 -0
  33. package/dist/node/index.d.ts +1 -1
  34. package/dist/node/index.d.ts.map +1 -1
  35. package/dist/node/index.js +125 -10
  36. package/dist/node/index.js.map +4 -4
  37. package/dist/node/index.mjs +125 -10
  38. package/dist/node/index.mjs.map +4 -4
  39. package/dist/node/node.sw.js +152 -0
  40. package/dist/node/utils/icons.d.ts +4 -5
  41. package/dist/node/utils/icons.d.ts.map +1 -1
  42. package/dist/node/utils/inline.d.ts +1 -1
  43. package/dist/node/utils/inline.d.ts.map +1 -1
  44. package/dist/node/utils/node.sw.js +152 -0
  45. package/dist/node/utils/session-storage.d.ts +22 -0
  46. package/dist/node/utils/session-storage.d.ts.map +1 -0
  47. package/dist/node/utils/sw.d.ts.map +1 -1
  48. package/dist/node/utils/tree-adapter.d.ts +5 -1
  49. package/dist/node/utils/tree-adapter.d.ts.map +1 -1
  50. package/dist/pulse-store/index.d.ts +16 -0
  51. package/dist/pulse-store/index.d.ts.map +1 -0
  52. package/dist/pulse-store/index.js +143 -0
  53. package/dist/pulse-store/index.js.map +7 -0
  54. package/dist/pulse-store/index.min.js +1 -0
  55. package/dist/pulse-store/index.min.js.map +1 -0
  56. package/dist/pulse-store/index.mjs +122 -0
  57. package/dist/pulse-store/index.mjs.map +7 -0
  58. package/dist/request/index.d.ts +11 -11
  59. package/dist/request/index.d.ts.map +1 -1
  60. package/dist/request/index.js +63 -84
  61. package/dist/request/index.js.map +2 -2
  62. package/dist/request/index.min.js +1 -0
  63. package/dist/request/index.min.js.map +1 -0
  64. package/dist/request/index.mjs +63 -84
  65. package/dist/request/index.mjs.map +2 -2
  66. package/dist/router/index.d.ts +36 -33
  67. package/dist/router/index.d.ts.map +1 -1
  68. package/dist/router/index.js +247 -96
  69. package/dist/router/index.js.map +3 -3
  70. package/dist/router/index.min.js +1 -0
  71. package/dist/router/index.min.js.map +1 -0
  72. package/dist/router/index.mjs +247 -96
  73. package/dist/router/index.mjs.map +3 -3
  74. package/dist/signals/index.d.ts +6 -0
  75. package/dist/signals/index.d.ts.map +1 -0
  76. package/dist/signals/index.js +92 -0
  77. package/dist/signals/index.js.map +7 -0
  78. package/dist/signals/index.min.js +1 -0
  79. package/dist/signals/index.min.js.map +1 -0
  80. package/dist/signals/index.mjs +71 -0
  81. package/dist/signals/index.mjs.map +7 -0
  82. package/dist/suspense/index.d.ts +6 -0
  83. package/dist/suspense/index.d.ts.map +1 -0
  84. package/dist/suspense/index.js +67 -0
  85. package/dist/suspense/index.js.map +7 -0
  86. package/dist/suspense/index.min.js +1 -0
  87. package/dist/suspense/index.min.js.map +1 -0
  88. package/dist/suspense/index.mjs +46 -0
  89. package/dist/suspense/index.mjs.map +7 -0
  90. package/dist/sw/index.min.js +1 -0
  91. package/dist/sw/index.min.js.map +1 -0
  92. package/dist/translate/index.d.ts +19 -0
  93. package/dist/translate/index.d.ts.map +1 -0
  94. package/dist/translate/index.js +150 -0
  95. package/dist/translate/index.js.map +7 -0
  96. package/dist/translate/index.min.js +1 -0
  97. package/dist/translate/index.min.js.map +1 -0
  98. package/dist/translate/index.mjs +129 -0
  99. package/dist/translate/index.mjs.map +7 -0
  100. package/dist/tsconfig.tsbuildinfo +1 -1
  101. package/dist/utils/deep-freeze.d.ts +3 -0
  102. package/dist/utils/deep-freeze.d.ts.map +1 -0
  103. package/dist/utils/getter-setter.d.ts +3 -0
  104. package/dist/utils/getter-setter.d.ts.map +1 -0
  105. package/dist/utils/has-changed.d.ts +2 -0
  106. package/dist/utils/has-changed.d.ts.map +1 -0
  107. package/dist/utils/index.d.ts +4 -0
  108. package/dist/utils/index.d.ts.map +1 -0
  109. package/dist/utils/index.js +138 -0
  110. package/dist/utils/index.js.map +7 -0
  111. package/dist/utils/index.min.js +1 -0
  112. package/dist/utils/index.min.js.map +1 -0
  113. package/dist/utils/index.mjs +115 -0
  114. package/dist/utils/index.mjs.map +7 -0
  115. package/lib/flux-store/index.ts +312 -0
  116. package/lib/hooks/index.ts +39 -57
  117. package/lib/index.ts +135 -118
  118. package/lib/native-store/index.ts +106 -0
  119. package/lib/node/index.ts +3 -1
  120. package/lib/node/utils/icons.ts +4 -4
  121. package/lib/node/utils/inline.ts +2 -0
  122. package/lib/node/utils/node.sw.js +152 -0
  123. package/lib/node/utils/session-storage.ts +117 -0
  124. package/lib/node/utils/sw.ts +34 -10
  125. package/lib/node/utils/tree-adapter.ts +19 -1
  126. package/lib/pulse-store/index.ts +188 -0
  127. package/lib/request/index.ts +92 -122
  128. package/lib/router/index.ts +353 -164
  129. package/lib/signals/index.ts +98 -0
  130. package/lib/suspense/index.ts +57 -0
  131. package/lib/translate/index.ts +156 -0
  132. package/lib/utils/deep-freeze.ts +54 -0
  133. package/lib/utils/getter-setter.ts +40 -0
  134. package/lib/utils/has-changed.ts +43 -0
  135. package/lib/utils/index.ts +3 -0
  136. package/package.json +40 -57
  137. package/tsconfig.json +5 -4
  138. package/dist/dataset/index.d.ts +0 -24
  139. package/dist/dataset/index.d.ts.map +0 -1
  140. package/dist/dataset/index.js +0 -178
  141. package/dist/dataset/index.js.map +0 -7
  142. package/dist/dataset/index.mjs +0 -157
  143. package/dist/dataset/index.mjs.map +0 -7
  144. package/dist/node/node.sw.tpl +0 -133
  145. package/dist/node/utils/node.sw.tpl +0 -133
  146. package/dist/proxy-signal/index.d.ts +0 -23
  147. package/dist/proxy-signal/index.d.ts.map +0 -1
  148. package/dist/proxy-signal/index.js +0 -138
  149. package/dist/proxy-signal/index.js.map +0 -7
  150. package/dist/proxy-signal/index.mjs +0 -117
  151. package/dist/proxy-signal/index.mjs.map +0 -7
  152. package/dist/signal/index.d.ts +0 -9
  153. package/dist/signal/index.d.ts.map +0 -1
  154. package/dist/signal/index.js +0 -76
  155. package/dist/signal/index.js.map +0 -7
  156. package/dist/signal/index.mjs +0 -55
  157. package/dist/signal/index.mjs.map +0 -7
  158. package/dist/store/index.d.ts +0 -16
  159. package/dist/store/index.d.ts.map +0 -1
  160. package/dist/store/index.js +0 -93
  161. package/dist/store/index.js.map +0 -7
  162. package/dist/store/index.mjs +0 -72
  163. package/dist/store/index.mjs.map +0 -7
  164. package/lib/dataset/index.ts +0 -193
  165. package/lib/node/utils/node.sw.tpl +0 -133
  166. package/lib/proxy-signal/index.ts +0 -187
  167. package/lib/signal/index.ts +0 -86
  168. package/lib/store/index.ts +0 -101
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // lib/native-store/index.ts
21
+ var native_store_exports = {};
22
+ __export(native_store_exports, {
23
+ StorageType: () => StorageType,
24
+ createNativeStore: () => createNativeStore
25
+ });
26
+ module.exports = __toCommonJS(native_store_exports);
27
+ var import_valyrian = require("valyrian.js");
28
+ var StorageType = /* @__PURE__ */ ((StorageType2) => {
29
+ StorageType2["Session"] = "session";
30
+ StorageType2["Local"] = "local";
31
+ return StorageType2;
32
+ })(StorageType || {});
33
+ var ids = /* @__PURE__ */ new Set();
34
+ function getStorage(storageType) {
35
+ if (import_valyrian.isNodeJs && typeof localStorage === "undefined") {
36
+ throw new Error(
37
+ `localStorage and sessionStorage are not available in Node.js, to use it in your project, you need to "import "valyrian.js/node"`
38
+ );
39
+ }
40
+ return storageType === "session" /* Session */ ? sessionStorage : localStorage;
41
+ }
42
+ function createNativeStore(key, definition = {}, storageType = "local" /* Local */, reuseIfExist = false) {
43
+ const nativeStore = getStorage(storageType);
44
+ if (ids.has(key)) {
45
+ if (reuseIfExist) {
46
+ console.warn(`Store with key ${key} already exists and will be reused`);
47
+ } else {
48
+ throw new Error(`Store with key ${key} already exists`);
49
+ }
50
+ }
51
+ ids.add(key);
52
+ const id = key;
53
+ const Store = {
54
+ state: {},
55
+ set(key2, value) {
56
+ try {
57
+ this.state[key2] = value;
58
+ nativeStore.setItem(id, JSON.stringify(this.state));
59
+ } catch (e) {
60
+ console.error("Error setting item in storage:", e);
61
+ }
62
+ },
63
+ get(key2) {
64
+ if (Object.keys(this.state).length === 0) {
65
+ this.load();
66
+ }
67
+ return this.state[key2];
68
+ },
69
+ delete(key2) {
70
+ try {
71
+ Reflect.deleteProperty(this.state, key2);
72
+ nativeStore.setItem(id, JSON.stringify(this.state));
73
+ } catch (e) {
74
+ console.error("Error deleting item in storage:", e);
75
+ }
76
+ },
77
+ load() {
78
+ try {
79
+ const state = nativeStore.getItem(id);
80
+ if (!state) {
81
+ this.state = {};
82
+ nativeStore.setItem(id, JSON.stringify(this.state));
83
+ return;
84
+ }
85
+ this.state = JSON.parse(state);
86
+ } catch (e) {
87
+ console.error("Error loading state from storage:", e);
88
+ this.state = {};
89
+ }
90
+ },
91
+ clear() {
92
+ try {
93
+ this.state = {};
94
+ nativeStore.removeItem(id);
95
+ } catch (e) {
96
+ console.error("Error clearing storage:", e);
97
+ }
98
+ },
99
+ ...definition
100
+ };
101
+ Store.load();
102
+ return Store;
103
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../lib/native-store/index.ts"],
4
+ "sourcesContent": ["import { isNodeJs } from \"valyrian.js\";\n\n/* eslint-disable no-console */\nexport enum StorageType {\n // eslint-disable-next-line no-unused-vars\n Session = \"session\",\n // eslint-disable-next-line no-unused-vars\n Local = \"local\"\n}\n\nexport interface NativeStorageInterface {\n state: Record<string, any>;\n // eslint-disable-next-line no-unused-vars\n set(key: string, value: any): void;\n // eslint-disable-next-line no-unused-vars\n get(key: string): any;\n // eslint-disable-next-line no-unused-vars\n delete(key: string): void;\n load(): void;\n clear(): void;\n}\n\nconst ids = new Set<string>();\n\nfunction getStorage(storageType: StorageType) {\n if (isNodeJs && typeof localStorage === \"undefined\") {\n throw new Error(\n `localStorage and sessionStorage are not available in Node.js, to use it in your project, you need to \"import \"valyrian.js/node\"`\n );\n }\n return storageType === StorageType.Session ? sessionStorage : localStorage;\n}\n\nexport function createNativeStore<T>(\n key: string,\n definition: Record<string, any> = {},\n storageType: StorageType = StorageType.Local,\n reuseIfExist = false\n): NativeStorageInterface & T {\n const nativeStore = getStorage(storageType);\n\n if (ids.has(key)) {\n if (reuseIfExist) {\n // eslint-disable-next-line no-console\n console.warn(`Store with key ${key} already exists and will be reused`);\n } else {\n throw new Error(`Store with key ${key} already exists`);\n }\n }\n ids.add(key);\n\n const id = key;\n\n const Store: NativeStorageInterface = {\n state: {},\n set(key, value) {\n try {\n this.state[key] = value;\n nativeStore.setItem(id, JSON.stringify(this.state));\n } catch (e) {\n console.error(\"Error setting item in storage:\", e);\n }\n },\n get(key) {\n if (Object.keys(this.state).length === 0) {\n this.load();\n }\n return this.state[key];\n },\n delete(key) {\n try {\n Reflect.deleteProperty(this.state, key);\n nativeStore.setItem(id, JSON.stringify(this.state));\n } catch (e) {\n console.error(\"Error deleting item in storage:\", e);\n }\n },\n load() {\n try {\n const state = nativeStore.getItem(id);\n if (!state) {\n this.state = {};\n nativeStore.setItem(id, JSON.stringify(this.state));\n return;\n }\n this.state = JSON.parse(state);\n } catch (e) {\n console.error(\"Error loading state from storage:\", e);\n this.state = {};\n }\n },\n clear() {\n try {\n this.state = {};\n nativeStore.removeItem(id);\n } catch (e) {\n console.error(\"Error clearing storage:\", e);\n }\n },\n ...definition\n };\n\n Store.load();\n\n return Store as NativeStorageInterface & T;\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAyB;AAGlB,IAAK,cAAL,kBAAKA,iBAAL;AAEL,EAAAA,aAAA,aAAU;AAEV,EAAAA,aAAA,WAAQ;AAJE,SAAAA;AAAA,GAAA;AAmBZ,IAAM,MAAM,oBAAI,IAAY;AAE5B,SAAS,WAAW,aAA0B;AAC5C,MAAI,4BAAY,OAAO,iBAAiB,aAAa;AACnD,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,SAAO,gBAAgB,0BAAsB,iBAAiB;AAChE;AAEO,SAAS,kBACd,KACA,aAAkC,CAAC,GACnC,cAA2B,qBAC3B,eAAe,OACa;AAC5B,QAAM,cAAc,WAAW,WAAW;AAE1C,MAAI,IAAI,IAAI,GAAG,GAAG;AAChB,QAAI,cAAc;AAEhB,cAAQ,KAAK,kBAAkB,GAAG,oCAAoC;AAAA,IACxE,OAAO;AACL,YAAM,IAAI,MAAM,kBAAkB,GAAG,iBAAiB;AAAA,IACxD;AAAA,EACF;AACA,MAAI,IAAI,GAAG;AAEX,QAAM,KAAK;AAEX,QAAM,QAAgC;AAAA,IACpC,OAAO,CAAC;AAAA,IACR,IAAIC,MAAK,OAAO;AACd,UAAI;AACF,aAAK,MAAMA,IAAG,IAAI;AAClB,oBAAY,QAAQ,IAAI,KAAK,UAAU,KAAK,KAAK,CAAC;AAAA,MACpD,SAAS,GAAG;AACV,gBAAQ,MAAM,kCAAkC,CAAC;AAAA,MACnD;AAAA,IACF;AAAA,IACA,IAAIA,MAAK;AACP,UAAI,OAAO,KAAK,KAAK,KAAK,EAAE,WAAW,GAAG;AACxC,aAAK,KAAK;AAAA,MACZ;AACA,aAAO,KAAK,MAAMA,IAAG;AAAA,IACvB;AAAA,IACA,OAAOA,MAAK;AACV,UAAI;AACF,gBAAQ,eAAe,KAAK,OAAOA,IAAG;AACtC,oBAAY,QAAQ,IAAI,KAAK,UAAU,KAAK,KAAK,CAAC;AAAA,MACpD,SAAS,GAAG;AACV,gBAAQ,MAAM,mCAAmC,CAAC;AAAA,MACpD;AAAA,IACF;AAAA,IACA,OAAO;AACL,UAAI;AACF,cAAM,QAAQ,YAAY,QAAQ,EAAE;AACpC,YAAI,CAAC,OAAO;AACV,eAAK,QAAQ,CAAC;AACd,sBAAY,QAAQ,IAAI,KAAK,UAAU,KAAK,KAAK,CAAC;AAClD;AAAA,QACF;AACA,aAAK,QAAQ,KAAK,MAAM,KAAK;AAAA,MAC/B,SAAS,GAAG;AACV,gBAAQ,MAAM,qCAAqC,CAAC;AACpD,aAAK,QAAQ,CAAC;AAAA,MAChB;AAAA,IACF;AAAA,IACA,QAAQ;AACN,UAAI;AACF,aAAK,QAAQ,CAAC;AACd,oBAAY,WAAW,EAAE;AAAA,MAC3B,SAAS,GAAG;AACV,gBAAQ,MAAM,2BAA2B,CAAC;AAAA,MAC5C;AAAA,IACF;AAAA,IACA,GAAG;AAAA,EACL;AAEA,QAAM,KAAK;AAEX,SAAO;AACT;",
6
+ "names": ["StorageType", "key"]
7
+ }
@@ -0,0 +1 @@
1
+ (()=>{"use strict";var e=Object.defineProperty,t=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,s={};((t,r)=>{for(var o in r)e(t,o,{get:r[o],enumerable:!0})})(s,{StorageType:()=>l,createNativeStore:()=>y});var a,i=(a=s,((s,a,i,n)=>{if(a&&"object"==typeof a||"function"==typeof a)for(let l of r(a))o.call(s,l)||l===i||e(s,l,{get:()=>a[l],enumerable:!(n=t(a,l))||n.enumerable});return s})(e({},"__esModule",{value:!0}),a)),n=require("valyrian.js"),l=(e=>(e.Session="session",e.Local="local",e))(l||{}),c=new Set;function y(e,t={},r="local",o=!1){const s=function(e){if(n.isNodeJs&&"undefined"==typeof localStorage)throw new Error('localStorage and sessionStorage are not available in Node.js, to use it in your project, you need to "import "valyrian.js/node"');return"session"===e?sessionStorage:localStorage}(r);if(c.has(e)){if(!o)throw new Error(`Store with key ${e} already exists`);console.warn(`Store with key ${e} already exists and will be reused`)}c.add(e);const a=e,i={state:{},set(e,t){try{this.state[e]=t,s.setItem(a,JSON.stringify(this.state))}catch(e){console.error("Error setting item in storage:",e)}},get(e){return 0===Object.keys(this.state).length&&this.load(),this.state[e]},delete(e){try{Reflect.deleteProperty(this.state,e),s.setItem(a,JSON.stringify(this.state))}catch(e){console.error("Error deleting item in storage:",e)}},load(){try{const e=s.getItem(a);if(!e)return this.state={},void s.setItem(a,JSON.stringify(this.state));this.state=JSON.parse(e)}catch(e){console.error("Error loading state from storage:",e),this.state={}}},clear(){try{this.state={},s.removeItem(a)}catch(e){console.error("Error clearing storage:",e)}},...t};return i.load(),i}"undefined"!=typeof module?module.exports=i:self.ValyrianNativeStore=i})();//# sourceMappingURL=index.min.js.map
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJuYXRpdmVfc3RvcmVfZXhwb3J0cyIsIl9fZXhwb3J0IiwiU3RvcmFnZVR5cGUiLCJjcmVhdGVOYXRpdmVTdG9yZSIsIl9fRVhQT1JUU19fIiwiaW1wb3J0X3ZhbHlyaWFuIiwicmVxdWlyZSIsImlkcyIsIlNldCIsImtleSIsImRlZmluaXRpb24iLCJzdG9yYWdlVHlwZSIsInJldXNlSWZFeGlzdCIsIm5hdGl2ZVN0b3JlIiwiaXNOb2RlSnMiLCJsb2NhbFN0b3JhZ2UiLCJFcnJvciIsInNlc3Npb25TdG9yYWdlIiwiZ2V0U3RvcmFnZSIsImhhcyIsImNvbnNvbGUiLCJ3YXJuIiwiYWRkIiwiaWQiLCJTdG9yZSIsInN0YXRlIiwic2V0IiwidmFsdWUiLCJ0aGlzIiwic2V0SXRlbSIsIkpTT04iLCJzdHJpbmdpZnkiLCJlIiwiZXJyb3IiLCJnZXQiLCJPYmplY3QiLCJrZXlzIiwibGVuZ3RoIiwibG9hZCIsIlJlZmxlY3QiLCJkZWxldGVQcm9wZXJ0eSIsImdldEl0ZW0iLCJwYXJzZSIsImNsZWFyIiwicmVtb3ZlSXRlbSJdLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9uYXRpdmUtc3RvcmUvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNOb2RlSnMgfSBmcm9tIFwidmFseXJpYW4uanNcIjtcblxuLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuZXhwb3J0IGVudW0gU3RvcmFnZVR5cGUge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgU2Vzc2lvbiA9IFwic2Vzc2lvblwiLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgTG9jYWwgPSBcImxvY2FsXCJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOYXRpdmVTdG9yYWdlSW50ZXJmYWNlIHtcbiAgc3RhdGU6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuICBzZXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB2b2lkO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgZ2V0KGtleTogc3RyaW5nKTogYW55O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgZGVsZXRlKGtleTogc3RyaW5nKTogdm9pZDtcbiAgbG9hZCgpOiB2b2lkO1xuICBjbGVhcigpOiB2b2lkO1xufVxuXG5jb25zdCBpZHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuZnVuY3Rpb24gZ2V0U3RvcmFnZShzdG9yYWdlVHlwZTogU3RvcmFnZVR5cGUpIHtcbiAgaWYgKGlzTm9kZUpzICYmIHR5cGVvZiBsb2NhbFN0b3JhZ2UgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgbG9jYWxTdG9yYWdlIGFuZCBzZXNzaW9uU3RvcmFnZSBhcmUgbm90IGF2YWlsYWJsZSBpbiBOb2RlLmpzLCB0byB1c2UgaXQgaW4geW91ciBwcm9qZWN0LCB5b3UgbmVlZCB0byBcImltcG9ydCBcInZhbHlyaWFuLmpzL25vZGVcImBcbiAgICApO1xuICB9XG4gIHJldHVybiBzdG9yYWdlVHlwZSA9PT0gU3RvcmFnZVR5cGUuU2Vzc2lvbiA/IHNlc3Npb25TdG9yYWdlIDogbG9jYWxTdG9yYWdlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTmF0aXZlU3RvcmU8VD4oXG4gIGtleTogc3RyaW5nLFxuICBkZWZpbml0aW9uOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge30sXG4gIHN0b3JhZ2VUeXBlOiBTdG9yYWdlVHlwZSA9IFN0b3JhZ2VUeXBlLkxvY2FsLFxuICByZXVzZUlmRXhpc3QgPSBmYWxzZVxuKTogTmF0aXZlU3RvcmFnZUludGVyZmFjZSAmIFQge1xuICBjb25zdCBuYXRpdmVTdG9yZSA9IGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUpO1xuXG4gIGlmIChpZHMuaGFzKGtleSkpIHtcbiAgICBpZiAocmV1c2VJZkV4aXN0KSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgY29uc29sZS53YXJuKGBTdG9yZSB3aXRoIGtleSAke2tleX0gYWxyZWFkeSBleGlzdHMgYW5kIHdpbGwgYmUgcmV1c2VkYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgU3RvcmUgd2l0aCBrZXkgJHtrZXl9IGFscmVhZHkgZXhpc3RzYCk7XG4gICAgfVxuICB9XG4gIGlkcy5hZGQoa2V5KTtcblxuICBjb25zdCBpZCA9IGtleTtcblxuICBjb25zdCBTdG9yZTogTmF0aXZlU3RvcmFnZUludGVyZmFjZSA9IHtcbiAgICBzdGF0ZToge30sXG4gICAgc2V0KGtleSwgdmFsdWUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMuc3RhdGVba2V5XSA9IHZhbHVlO1xuICAgICAgICBuYXRpdmVTdG9yZS5zZXRJdGVtKGlkLCBKU09OLnN0cmluZ2lmeSh0aGlzLnN0YXRlKSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBzZXR0aW5nIGl0ZW0gaW4gc3RvcmFnZTpcIiwgZSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBnZXQoa2V5KSB7XG4gICAgICBpZiAoT2JqZWN0LmtleXModGhpcy5zdGF0ZSkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMubG9hZCgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuc3RhdGVba2V5XTtcbiAgICB9LFxuICAgIGRlbGV0ZShrZXkpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIFJlZmxlY3QuZGVsZXRlUHJvcGVydHkodGhpcy5zdGF0ZSwga2V5KTtcbiAgICAgICAgbmF0aXZlU3RvcmUuc2V0SXRlbShpZCwgSlNPTi5zdHJpbmdpZnkodGhpcy5zdGF0ZSkpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3IgZGVsZXRpbmcgaXRlbSBpbiBzdG9yYWdlOlwiLCBlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGxvYWQoKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBzdGF0ZSA9IG5hdGl2ZVN0b3JlLmdldEl0ZW0oaWQpO1xuICAgICAgICBpZiAoIXN0YXRlKSB7XG4gICAgICAgICAgdGhpcy5zdGF0ZSA9IHt9O1xuICAgICAgICAgIG5hdGl2ZVN0b3JlLnNldEl0ZW0oaWQsIEpTT04uc3RyaW5naWZ5KHRoaXMuc3RhdGUpKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdGF0ZSA9IEpTT04ucGFyc2Uoc3RhdGUpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3IgbG9hZGluZyBzdGF0ZSBmcm9tIHN0b3JhZ2U6XCIsIGUpO1xuICAgICAgICB0aGlzLnN0YXRlID0ge307XG4gICAgICB9XG4gICAgfSxcbiAgICBjbGVhcigpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSB7fTtcbiAgICAgICAgbmF0aXZlU3RvcmUucmVtb3ZlSXRlbShpZCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBjbGVhcmluZyBzdG9yYWdlOlwiLCBlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIC4uLmRlZmluaXRpb25cbiAgfTtcblxuICBTdG9yZS5sb2FkKCk7XG5cbiAgcmV0dXJuIFN0b3JlIGFzIE5hdGl2ZVN0b3JhZ2VJbnRlcmZhY2UgJiBUO1xufVxuIl0sIm1hcHBpbmdzIjoiZ0pBQUFBLEVBQUEsRyx5REFBQUMsQ0FBQUQsRUFBQSxDQUFBRSxZQUFBLElBQUFBLEVBQUFDLGtCQUFBLElBQUFBLElBQUEsSSxFQUFBQyxHLEVBQUFKLEUsME1BQUFLLEVBQXlCQyxRQUFBLGVBR2JKLEVBQUwsQ0FBS0EsSUFFVkEsRUFBQSxRQUFVLFVBRVZBLEVBQUEsTUFBUSxRQUpFQSxHQUFMLENBQUtBLEdBQUEsSUFtQk5LLEVBQU0sSUFBSUMsSUFXVCxTQUFTTCxFQUNkTSxFQUNBQyxFQUFrQyxDQUFDLEVBQ25DQyxFQUEyQixRQUMzQkMsR0FBZSxHQUVmLE1BQU1DLEVBZlIsU0FBb0JGLEdBQ2xCLEdBQUlOLEVBQUFTLFVBQW9DLG9CQUFqQkMsYUFDckIsTUFBTSxJQUFJQyxNQUNSLG1JQUdKLE1BQXVCLFlBQWhCTCxFQUFzQ00sZUFBaUJGLFlBQ2hFLENBUXNCRyxDQUFXUCxHQUUvQixHQUFJSixFQUFJWSxJQUFJVixHQUFNLENBQ2hCLElBQUlHLEVBSUYsTUFBTSxJQUFJSSxNQUFNLGtCQUFrQlAsb0JBRmxDVyxRQUFRQyxLQUFLLGtCQUFrQlosc0NBSW5DLENBQ0FGLEVBQUllLElBQUliLEdBRVIsTUFBTWMsRUFBS2QsRUFFTGUsRUFBZ0MsQ0FDcENDLE1BQU8sQ0FBQyxFQUNSLEdBQUFDLENBQUlqQixFQUFLa0IsR0FDUCxJQUNFQyxLQUFLSCxNQUFNaEIsR0FBT2tCLEVBQ2xCZCxFQUFZZ0IsUUFBUU4sRUFBSU8sS0FBS0MsVUFBVUgsS0FBS0gsT0FDOUMsT0FBU08sR0FDUFosUUFBUWEsTUFBTSxpQ0FBa0NELEVBQ2xELENBQ0YsRUFDQSxHQUFBRSxDQUFJekIsR0FJRixPQUh1QyxJQUFuQzBCLE9BQU9DLEtBQUtSLEtBQUtILE9BQU9ZLFFBQzFCVCxLQUFLVSxPQUVBVixLQUFLSCxNQUFNaEIsRUFDcEIsRUFDQSxPQUFPQSxHQUNMLElBQ0U4QixRQUFRQyxlQUFlWixLQUFLSCxNQUFPaEIsR0FDbkNJLEVBQVlnQixRQUFRTixFQUFJTyxLQUFLQyxVQUFVSCxLQUFLSCxPQUM5QyxPQUFTTyxHQUNQWixRQUFRYSxNQUFNLGtDQUFtQ0QsRUFDbkQsQ0FDRixFQUNBLElBQUFNLEdBQ0UsSUFDRSxNQUFNYixFQUFRWixFQUFZNEIsUUFBUWxCLEdBQ2xDLElBQUtFLEVBR0gsT0FGQUcsS0FBS0gsTUFBUSxDQUFDLE9BQ2RaLEVBQVlnQixRQUFRTixFQUFJTyxLQUFLQyxVQUFVSCxLQUFLSCxRQUc5Q0csS0FBS0gsTUFBUUssS0FBS1ksTUFBTWpCLEVBQzFCLE9BQVNPLEdBQ1BaLFFBQVFhLE1BQU0sb0NBQXFDRCxHQUNuREosS0FBS0gsTUFBUSxDQUFDLENBQ2hCLENBQ0YsRUFDQSxLQUFBa0IsR0FDRSxJQUNFZixLQUFLSCxNQUFRLENBQUMsRUFDZFosRUFBWStCLFdBQVdyQixFQUN6QixPQUFTUyxHQUNQWixRQUFRYSxNQUFNLDBCQUEyQkQsRUFDM0MsQ0FDRixLQUNHdEIsR0FLTCxPQUZBYyxFQUFNYyxPQUVDZCxDQUNULEMifQ==
@@ -0,0 +1,82 @@
1
+ // lib/native-store/index.ts
2
+ import { isNodeJs } from "valyrian.js";
3
+ var StorageType = /* @__PURE__ */ ((StorageType2) => {
4
+ StorageType2["Session"] = "session";
5
+ StorageType2["Local"] = "local";
6
+ return StorageType2;
7
+ })(StorageType || {});
8
+ var ids = /* @__PURE__ */ new Set();
9
+ function getStorage(storageType) {
10
+ if (isNodeJs && typeof localStorage === "undefined") {
11
+ throw new Error(
12
+ `localStorage and sessionStorage are not available in Node.js, to use it in your project, you need to "import "valyrian.js/node"`
13
+ );
14
+ }
15
+ return storageType === "session" /* Session */ ? sessionStorage : localStorage;
16
+ }
17
+ function createNativeStore(key, definition = {}, storageType = "local" /* Local */, reuseIfExist = false) {
18
+ const nativeStore = getStorage(storageType);
19
+ if (ids.has(key)) {
20
+ if (reuseIfExist) {
21
+ console.warn(`Store with key ${key} already exists and will be reused`);
22
+ } else {
23
+ throw new Error(`Store with key ${key} already exists`);
24
+ }
25
+ }
26
+ ids.add(key);
27
+ const id = key;
28
+ const Store = {
29
+ state: {},
30
+ set(key2, value) {
31
+ try {
32
+ this.state[key2] = value;
33
+ nativeStore.setItem(id, JSON.stringify(this.state));
34
+ } catch (e) {
35
+ console.error("Error setting item in storage:", e);
36
+ }
37
+ },
38
+ get(key2) {
39
+ if (Object.keys(this.state).length === 0) {
40
+ this.load();
41
+ }
42
+ return this.state[key2];
43
+ },
44
+ delete(key2) {
45
+ try {
46
+ Reflect.deleteProperty(this.state, key2);
47
+ nativeStore.setItem(id, JSON.stringify(this.state));
48
+ } catch (e) {
49
+ console.error("Error deleting item in storage:", e);
50
+ }
51
+ },
52
+ load() {
53
+ try {
54
+ const state = nativeStore.getItem(id);
55
+ if (!state) {
56
+ this.state = {};
57
+ nativeStore.setItem(id, JSON.stringify(this.state));
58
+ return;
59
+ }
60
+ this.state = JSON.parse(state);
61
+ } catch (e) {
62
+ console.error("Error loading state from storage:", e);
63
+ this.state = {};
64
+ }
65
+ },
66
+ clear() {
67
+ try {
68
+ this.state = {};
69
+ nativeStore.removeItem(id);
70
+ } catch (e) {
71
+ console.error("Error clearing storage:", e);
72
+ }
73
+ },
74
+ ...definition
75
+ };
76
+ Store.load();
77
+ return Store;
78
+ }
79
+ export {
80
+ StorageType,
81
+ createNativeStore
82
+ };
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../lib/native-store/index.ts"],
4
+ "sourcesContent": ["import { isNodeJs } from \"valyrian.js\";\n\n/* eslint-disable no-console */\nexport enum StorageType {\n // eslint-disable-next-line no-unused-vars\n Session = \"session\",\n // eslint-disable-next-line no-unused-vars\n Local = \"local\"\n}\n\nexport interface NativeStorageInterface {\n state: Record<string, any>;\n // eslint-disable-next-line no-unused-vars\n set(key: string, value: any): void;\n // eslint-disable-next-line no-unused-vars\n get(key: string): any;\n // eslint-disable-next-line no-unused-vars\n delete(key: string): void;\n load(): void;\n clear(): void;\n}\n\nconst ids = new Set<string>();\n\nfunction getStorage(storageType: StorageType) {\n if (isNodeJs && typeof localStorage === \"undefined\") {\n throw new Error(\n `localStorage and sessionStorage are not available in Node.js, to use it in your project, you need to \"import \"valyrian.js/node\"`\n );\n }\n return storageType === StorageType.Session ? sessionStorage : localStorage;\n}\n\nexport function createNativeStore<T>(\n key: string,\n definition: Record<string, any> = {},\n storageType: StorageType = StorageType.Local,\n reuseIfExist = false\n): NativeStorageInterface & T {\n const nativeStore = getStorage(storageType);\n\n if (ids.has(key)) {\n if (reuseIfExist) {\n // eslint-disable-next-line no-console\n console.warn(`Store with key ${key} already exists and will be reused`);\n } else {\n throw new Error(`Store with key ${key} already exists`);\n }\n }\n ids.add(key);\n\n const id = key;\n\n const Store: NativeStorageInterface = {\n state: {},\n set(key, value) {\n try {\n this.state[key] = value;\n nativeStore.setItem(id, JSON.stringify(this.state));\n } catch (e) {\n console.error(\"Error setting item in storage:\", e);\n }\n },\n get(key) {\n if (Object.keys(this.state).length === 0) {\n this.load();\n }\n return this.state[key];\n },\n delete(key) {\n try {\n Reflect.deleteProperty(this.state, key);\n nativeStore.setItem(id, JSON.stringify(this.state));\n } catch (e) {\n console.error(\"Error deleting item in storage:\", e);\n }\n },\n load() {\n try {\n const state = nativeStore.getItem(id);\n if (!state) {\n this.state = {};\n nativeStore.setItem(id, JSON.stringify(this.state));\n return;\n }\n this.state = JSON.parse(state);\n } catch (e) {\n console.error(\"Error loading state from storage:\", e);\n this.state = {};\n }\n },\n clear() {\n try {\n this.state = {};\n nativeStore.removeItem(id);\n } catch (e) {\n console.error(\"Error clearing storage:\", e);\n }\n },\n ...definition\n };\n\n Store.load();\n\n return Store as NativeStorageInterface & T;\n}\n"],
5
+ "mappings": ";AAAA,SAAS,gBAAgB;AAGlB,IAAK,cAAL,kBAAKA,iBAAL;AAEL,EAAAA,aAAA,aAAU;AAEV,EAAAA,aAAA,WAAQ;AAJE,SAAAA;AAAA,GAAA;AAmBZ,IAAM,MAAM,oBAAI,IAAY;AAE5B,SAAS,WAAW,aAA0B;AAC5C,MAAI,YAAY,OAAO,iBAAiB,aAAa;AACnD,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,SAAO,gBAAgB,0BAAsB,iBAAiB;AAChE;AAEO,SAAS,kBACd,KACA,aAAkC,CAAC,GACnC,cAA2B,qBAC3B,eAAe,OACa;AAC5B,QAAM,cAAc,WAAW,WAAW;AAE1C,MAAI,IAAI,IAAI,GAAG,GAAG;AAChB,QAAI,cAAc;AAEhB,cAAQ,KAAK,kBAAkB,GAAG,oCAAoC;AAAA,IACxE,OAAO;AACL,YAAM,IAAI,MAAM,kBAAkB,GAAG,iBAAiB;AAAA,IACxD;AAAA,EACF;AACA,MAAI,IAAI,GAAG;AAEX,QAAM,KAAK;AAEX,QAAM,QAAgC;AAAA,IACpC,OAAO,CAAC;AAAA,IACR,IAAIC,MAAK,OAAO;AACd,UAAI;AACF,aAAK,MAAMA,IAAG,IAAI;AAClB,oBAAY,QAAQ,IAAI,KAAK,UAAU,KAAK,KAAK,CAAC;AAAA,MACpD,SAAS,GAAG;AACV,gBAAQ,MAAM,kCAAkC,CAAC;AAAA,MACnD;AAAA,IACF;AAAA,IACA,IAAIA,MAAK;AACP,UAAI,OAAO,KAAK,KAAK,KAAK,EAAE,WAAW,GAAG;AACxC,aAAK,KAAK;AAAA,MACZ;AACA,aAAO,KAAK,MAAMA,IAAG;AAAA,IACvB;AAAA,IACA,OAAOA,MAAK;AACV,UAAI;AACF,gBAAQ,eAAe,KAAK,OAAOA,IAAG;AACtC,oBAAY,QAAQ,IAAI,KAAK,UAAU,KAAK,KAAK,CAAC;AAAA,MACpD,SAAS,GAAG;AACV,gBAAQ,MAAM,mCAAmC,CAAC;AAAA,MACpD;AAAA,IACF;AAAA,IACA,OAAO;AACL,UAAI;AACF,cAAM,QAAQ,YAAY,QAAQ,EAAE;AACpC,YAAI,CAAC,OAAO;AACV,eAAK,QAAQ,CAAC;AACd,sBAAY,QAAQ,IAAI,KAAK,UAAU,KAAK,KAAK,CAAC;AAClD;AAAA,QACF;AACA,aAAK,QAAQ,KAAK,MAAM,KAAK;AAAA,MAC/B,SAAS,GAAG;AACV,gBAAQ,MAAM,qCAAqC,CAAC;AACpD,aAAK,QAAQ,CAAC;AAAA,MAChB;AAAA,IACF;AAAA,IACA,QAAQ;AACN,UAAI;AACF,aAAK,QAAQ,CAAC;AACd,oBAAY,WAAW,EAAE;AAAA,MAC3B,SAAS,GAAG;AACV,gBAAQ,MAAM,2BAA2B,CAAC;AAAA,MAC5C;AAAA,IACF;AAAA,IACA,GAAG;AAAA,EACL;AAEA,QAAM,KAAK;AAEX,SAAO;AACT;",
6
+ "names": ["StorageType", "key"]
7
+ }
@@ -2,6 +2,6 @@ import { domToHtml, domToHyperscript, htmlToDom, htmlToHyperscript } from "./uti
2
2
  import { icons } from "./utils/icons";
3
3
  import { inline } from "./utils/inline";
4
4
  import { sw } from "./utils/sw";
5
- declare function render(...args: any[]): string | void;
5
+ declare function render(...args: any[]): string;
6
6
  export { domToHtml, domToHyperscript, htmlToDom, htmlToHyperscript, inline, sw, icons, render };
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/node/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,SAAS,EAAE,gBAAgB,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAK3G,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,EAAE,EAAE,MAAM,YAAY,CAAC;AAKhC,iBAAS,MAAM,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,iBAK7B;AAED,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/node/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,SAAS,EAAE,gBAAgB,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAI3G,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,EAAE,EAAE,MAAM,YAAY,CAAC;AAQhC,iBAAS,MAAM,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,UAK7B;AAED,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC"}
@@ -88,6 +88,13 @@ var Node = class _Node {
88
88
  set parentNode(node) {
89
89
  this.parent_node = node;
90
90
  }
91
+ #dataset = {};
92
+ get dataset() {
93
+ return this.#dataset;
94
+ }
95
+ set dataset(value) {
96
+ this.#dataset = value;
97
+ }
91
98
  constructor() {
92
99
  }
93
100
  appendChild(node) {
@@ -142,6 +149,9 @@ var Node = class _Node {
142
149
  node2.setAttribute(this.attributes[i].nodeName, this.attributes[i].nodeValue);
143
150
  }
144
151
  }
152
+ for (const key in this.dataset) {
153
+ node2.dataset[key] = this.dataset[key];
154
+ }
145
155
  if (deep) {
146
156
  for (let i = 0, l = this.childNodes.length; i < l; i++) {
147
157
  node2.appendChild(this.childNodes[i].cloneNode(deep));
@@ -413,7 +423,9 @@ var Document = class extends Element {
413
423
  super();
414
424
  this.nodeType = 9;
415
425
  this.nodeName = "#document";
426
+ this.body = this.createElement("body");
416
427
  }
428
+ body;
417
429
  createDocumentFragment() {
418
430
  return new DocumentFragment();
419
431
  }
@@ -891,6 +903,7 @@ async function inline(file, options = {}) {
891
903
  } else if (typeof file === "object" && "raw" in file) {
892
904
  return { map: null, ...file };
893
905
  }
906
+ throw new Error(`Unknown file type: ${file}`);
894
907
  }
895
908
  inline.uncss = async function(renderedHtml, css, options = {}) {
896
909
  const html = await Promise.all(renderedHtml);
@@ -930,17 +943,15 @@ inline.uncss = async function(renderedHtml, css, options = {}) {
930
943
  var import_fs3 = __toESM(require("fs"));
931
944
  var import_path = __toESM(require("path"));
932
945
  function sw(file, options = {}) {
933
- const swfiletemplate = import_path.default.resolve(__dirname, "./node.sw.tpl");
946
+ const swfiletemplate = import_path.default.resolve(__dirname, "./node.sw.js");
934
947
  const swTpl = import_fs3.default.readFileSync(swfiletemplate, "utf8");
935
- const opt = Object.assign(
936
- {
937
- version: "v1::",
938
- name: "Valyrian.js",
939
- urls: ["/"],
940
- debug: false
941
- },
942
- options
943
- );
948
+ const opt = {
949
+ version: "v1::",
950
+ name: "Valyrian.js",
951
+ urls: ["/"],
952
+ debug: false,
953
+ ...options
954
+ };
944
955
  let contents = swTpl.replace("v1::", "v" + opt.version + "::").replace("Valyrian.js", opt.name).replace("['/']", '["' + opt.urls.join('","') + '"]');
945
956
  if (!opt.debug) {
946
957
  contents = contents.replace("console.log", "() => {}");
@@ -948,9 +959,113 @@ function sw(file, options = {}) {
948
959
  import_fs3.default.writeFileSync(file, contents, "utf8");
949
960
  }
950
961
 
962
+ // lib/node/utils/session-storage.ts
963
+ var import_fs4 = __toESM(require("fs"));
964
+ var import_path2 = __toESM(require("path"));
965
+ var SessionStorage = class {
966
+ storage;
967
+ limit;
968
+ persist;
969
+ filePath;
970
+ directory = ".session-storage";
971
+ constructor({ persist = false, filePath = "./sessionData.json" } = {}) {
972
+ this.storage = {};
973
+ this.limit = 5 * 1024 * 1024;
974
+ this.persist = persist;
975
+ this.filePath = import_path2.default.resolve(this.directory, filePath);
976
+ if (!import_fs4.default.existsSync(this.directory)) {
977
+ import_fs4.default.mkdirSync(this.directory, { recursive: true });
978
+ }
979
+ if (this.persist) {
980
+ this.loadFromFile();
981
+ }
982
+ }
983
+ // Calculate total size in bytes of stored data
984
+ getStorageSize() {
985
+ return new TextEncoder().encode(JSON.stringify(this.storage)).length;
986
+ }
987
+ // Check if storage limit is exceeded
988
+ checkSizeLimit() {
989
+ const size = this.getStorageSize();
990
+ if (size > this.limit) {
991
+ throw new DOMException("Storage limit exceeded", "QuotaExceededError");
992
+ }
993
+ }
994
+ // Store value under the specified key
995
+ setItem(key, value) {
996
+ if (key === null || key === void 0) {
997
+ throw new TypeError("Failed to execute 'setItem' on 'Storage': 1 argument required, but only 0 present.");
998
+ }
999
+ if (value === null) {
1000
+ value = "null";
1001
+ } else if (value === void 0) {
1002
+ value = "undefined";
1003
+ }
1004
+ this.storage[key] = String(value);
1005
+ this.checkSizeLimit();
1006
+ if (this.persist) {
1007
+ this.saveToFile();
1008
+ }
1009
+ }
1010
+ // Retrieve value stored under the specified key
1011
+ getItem(key) {
1012
+ if (key === null || key === void 0) {
1013
+ throw new TypeError("Failed to execute 'getItem' on 'Storage': 1 argument required, but only 0 present.");
1014
+ }
1015
+ return this.storage[key] || null;
1016
+ }
1017
+ // Remove the value under the specified key
1018
+ removeItem(key) {
1019
+ if (key === null || key === void 0) {
1020
+ throw new TypeError("Failed to execute 'removeItem' on 'Storage': 1 argument required, but only 0 present.");
1021
+ }
1022
+ delete this.storage[key];
1023
+ if (this.persist) {
1024
+ this.saveToFile();
1025
+ }
1026
+ }
1027
+ // Clear all stored values
1028
+ clear() {
1029
+ this.storage = {};
1030
+ if (this.persist) {
1031
+ this.saveToFile();
1032
+ }
1033
+ }
1034
+ // Return the number of stored items
1035
+ get length() {
1036
+ return Object.keys(this.storage).length;
1037
+ }
1038
+ // Return the key at the specified index
1039
+ key(index) {
1040
+ const keys = Object.keys(this.storage);
1041
+ return keys[index] || null;
1042
+ }
1043
+ // Save data to a file (only if persistence is enabled)
1044
+ saveToFile() {
1045
+ try {
1046
+ import_fs4.default.writeFileSync(this.filePath, JSON.stringify(this.storage), "utf-8");
1047
+ } catch (error) {
1048
+ throw new Error(`Error saving data to file: ${error.message}`);
1049
+ }
1050
+ }
1051
+ // Load data from a file (only if persistence is enabled)
1052
+ loadFromFile() {
1053
+ try {
1054
+ if (import_fs4.default.existsSync(this.filePath)) {
1055
+ const data = import_fs4.default.readFileSync(this.filePath, "utf-8");
1056
+ this.storage = JSON.parse(data || "{}");
1057
+ }
1058
+ } catch (error) {
1059
+ throw new Error(`Error loading data from file: ${error.message}`);
1060
+ }
1061
+ }
1062
+ };
1063
+
951
1064
  // lib/node/index.ts
952
1065
  global.FormData = import_form_data.default;
953
1066
  global.document = document;
1067
+ global.sessionStorage = new SessionStorage();
1068
+ global.localStorage = new SessionStorage();
954
1069
  function render(...args) {
955
1070
  const Component = () => args;
956
1071
  const result = (0, import_valyrian.mount)("div", Component);