valyrian.js 8.0.9 → 8.0.11

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 (37) hide show
  1. package/dist/lib/node/index.d.ts +2 -1
  2. package/dist/lib/node/index.d.ts.map +1 -1
  3. package/dist/lib/node/utils/session-storage.d.ts.map +1 -1
  4. package/dist/lib/{pulse-store → pulses}/index.d.ts +1 -0
  5. package/dist/lib/pulses/index.d.ts.map +1 -0
  6. package/dist/node/index.js +28 -25
  7. package/dist/node/index.js.map +2 -2
  8. package/dist/node/index.mjs +28 -25
  9. package/dist/node/index.mjs.map +2 -2
  10. package/dist/node/node.sw.js +2 -2
  11. package/dist/node/utils/node.sw.js +2 -2
  12. package/dist/{pulse-store → pulses}/index.js +58 -29
  13. package/dist/pulses/index.js.map +7 -0
  14. package/dist/pulses/index.min.js +1 -0
  15. package/dist/pulses/index.min.js.map +1 -0
  16. package/dist/{pulse-store → pulses}/index.mjs +55 -26
  17. package/dist/pulses/index.mjs.map +7 -0
  18. package/lib/node/index.ts +1 -1
  19. package/lib/node/utils/node.sw.js +2 -2
  20. package/lib/node/utils/session-storage.ts +28 -25
  21. package/lib/node/utils/sw.ts +2 -2
  22. package/lib/{pulse-store → pulses}/index.ts +67 -46
  23. package/package.json +1 -1
  24. package/dist/lib/pulse-store/index.d.ts.map +0 -1
  25. package/dist/lib/signals/index.d.ts +0 -6
  26. package/dist/lib/signals/index.d.ts.map +0 -1
  27. package/dist/pulse-store/index.js.map +0 -7
  28. package/dist/pulse-store/index.min.js +0 -1
  29. package/dist/pulse-store/index.min.js.map +0 -1
  30. package/dist/pulse-store/index.mjs.map +0 -7
  31. package/dist/signals/index.js +0 -104
  32. package/dist/signals/index.js.map +0 -7
  33. package/dist/signals/index.min.js +0 -1
  34. package/dist/signals/index.min.js.map +0 -1
  35. package/dist/signals/index.mjs +0 -83
  36. package/dist/signals/index.mjs.map +0 -7
  37. package/lib/signals/index.ts +0 -112
@@ -2,6 +2,7 @@ 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
+ import { SessionStorage } from "./utils/session-storage";
5
6
  declare function render(...args: any[]): string;
6
- export { domToHtml, domToHyperscript, htmlToDom, htmlToHyperscript, inline, sw, icons, render };
7
+ export { domToHtml, domToHyperscript, htmlToDom, htmlToHyperscript, inline, sw, icons, render, SessionStorage };
7
8
  //# 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;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"}
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;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAOzD,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,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"session-storage.d.ts","sourceRoot":"","sources":["../../../../lib/node/utils/session-storage.ts"],"names":[],"mappings":"AAGA,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAA8B;gBAEnC,EAAE,OAAe,EAAE,QAA+B,EAAE,GAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAO;IAiB/G,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI;IAmB/E,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI;IAQtD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI;IAWhD,KAAK,IAAI,IAAI;IAQb,IAAI,MAAM,IAAI,MAAM,CAEnB;IAGD,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAMjC,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,YAAY;CAUrB"}
1
+ {"version":3,"file":"session-storage.d.ts","sourceRoot":"","sources":["../../../../lib/node/utils/session-storage.ts"],"names":[],"mappings":"AAGA,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAA8B;gBAEnC,EAAE,OAAe,EAAE,QAA+B,EAAE,GAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAO;IAiB/G,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI;IAkB/E,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI;IAUtD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI;IAUhD,KAAK,IAAI,IAAI;IAMb,IAAI,MAAM,IAAI,MAAM,CAEnB;IAGD,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAOjC,OAAO,CAAC,UAAU;IAWlB,OAAO,CAAC,YAAY;CAYrB"}
@@ -14,5 +14,6 @@ export declare function createMutableStore<StateType extends State, PulsesType e
14
14
  state: ProxyState<StateType>;
15
15
  };
16
16
  export declare function createEffect(effect: Function): void;
17
+ export declare function createPulse<T>(initialValue: T): [() => T, (newValue: T | ((current: T) => T)) => void, () => void];
17
18
  export {};
18
19
  //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/pulses/index.ts"],"names":[],"mappings":"AAIA,KAAK,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAEjC,MAAM,MAAM,KAAK,CAAC,SAAS,EAAE,OAAO,GAAG,OAAO,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAEnH,MAAM,MAAM,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;AAEtE,KAAK,UAAU,CAAC,SAAS,IAAI,SAAS,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,CAAC;AAIhE,KAAK,WAAW,CAAC,UAAU,SAAS,MAAM,CAAC,GAAG,CAAC,IAAI;KAChD,CAAC,IAAI,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,MAAM,IAAI,KAAK,MAAM,CAAC,GACvF,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,CAAC,GACpB,KAAK;CACV,CAAC;AA6KF,wBAAgB,gBAAgB,CAAC,SAAS,SAAS,KAAK,EAAE,UAAU,SAAS,MAAM,CAAC,SAAS,CAAC,EAC5F,YAAY,EAAE,SAAS,EACvB,MAAM,EAAE,UAAU,GACjB,WAAW,CAAC,UAAU,CAAC,GAAG;IAAE,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,CAAA;CAAE,CAE5D;AAED,wBAAgB,kBAAkB,CAAC,SAAS,SAAS,KAAK,EAAE,UAAU,SAAS,MAAM,CAAC,SAAS,CAAC,EAC9F,YAAY,EAAE,SAAS,EACvB,MAAM,EAAE,UAAU,GACjB,WAAW,CAAC,UAAU,CAAC,GAAG;IAAE,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,CAAA;CAAE,CAK5D;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,QAAQ,QAU5C;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,EAAE,MAAM,IAAI,CAAC,CA4BlH"}
@@ -30,6 +30,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
30
30
  // lib/node/index.ts
31
31
  var node_exports = {};
32
32
  __export(node_exports, {
33
+ SessionStorage: () => SessionStorage,
33
34
  domToHtml: () => domToHtml,
34
35
  domToHyperscript: () => domToHyperscript,
35
36
  htmlToDom: () => htmlToDom,
@@ -958,13 +959,13 @@ function sw(file, options = {}) {
958
959
  const swfiletemplate = import_path.default.resolve(__dirname, "./node.sw.js");
959
960
  const swTpl = import_fs3.default.readFileSync(swfiletemplate, "utf8");
960
961
  const opt = {
961
- version: "v1::",
962
+ version: "1",
962
963
  name: "Valyrian.js",
963
964
  urls: ["/"],
964
965
  debug: false,
965
966
  ...options
966
967
  };
967
- let contents = swTpl.replace("v1::", "v" + opt.version + "::").replace("Valyrian.js", opt.name).replace('["/"]', '["' + opt.urls.join('","') + '"]');
968
+ let contents = swTpl.replace("v1", `v${opt.version}`).replace("Valyrian.js", opt.name).replace('["/"]', '["' + opt.urls.join('","') + '"]');
968
969
  if (!opt.debug) {
969
970
  contents = contents.replace("console.log", "() => {}");
970
971
  }
@@ -985,10 +986,10 @@ var SessionStorage = class {
985
986
  this.limit = 5 * 1024 * 1024;
986
987
  this.persist = persist;
987
988
  this.filePath = import_path2.default.resolve(this.directory, filePath);
988
- if (!import_fs4.default.existsSync(this.directory)) {
989
- import_fs4.default.mkdirSync(this.directory, { recursive: true });
990
- }
991
989
  if (this.persist) {
990
+ if (!import_fs4.default.existsSync(this.directory)) {
991
+ import_fs4.default.mkdirSync(this.directory, { recursive: true });
992
+ }
992
993
  this.loadFromFile();
993
994
  }
994
995
  }
@@ -1013,17 +1014,17 @@ var SessionStorage = class {
1013
1014
  } else if (value === void 0) {
1014
1015
  value = "undefined";
1015
1016
  }
1017
+ this.loadFromFile();
1016
1018
  this.storage[key] = String(value);
1017
1019
  this.checkSizeLimit();
1018
- if (this.persist) {
1019
- this.saveToFile();
1020
- }
1020
+ this.saveToFile();
1021
1021
  }
1022
1022
  // Retrieve value stored under the specified key
1023
1023
  getItem(key) {
1024
1024
  if (key === null || key === void 0) {
1025
1025
  throw new TypeError("Failed to execute 'getItem' on 'Storage': 1 argument required, but only 0 present.");
1026
1026
  }
1027
+ this.loadFromFile();
1027
1028
  return this.storage[key] || null;
1028
1029
  }
1029
1030
  // Remove the value under the specified key
@@ -1031,17 +1032,14 @@ var SessionStorage = class {
1031
1032
  if (key === null || key === void 0) {
1032
1033
  throw new TypeError("Failed to execute 'removeItem' on 'Storage': 1 argument required, but only 0 present.");
1033
1034
  }
1034
- delete this.storage[key];
1035
- if (this.persist) {
1036
- this.saveToFile();
1037
- }
1035
+ this.loadFromFile();
1036
+ Reflect.deleteProperty(this.storage, key);
1037
+ this.saveToFile();
1038
1038
  }
1039
1039
  // Clear all stored values
1040
1040
  clear() {
1041
1041
  this.storage = {};
1042
- if (this.persist) {
1043
- this.saveToFile();
1044
- }
1042
+ this.saveToFile();
1045
1043
  }
1046
1044
  // Return the number of stored items
1047
1045
  get length() {
@@ -1049,26 +1047,31 @@ var SessionStorage = class {
1049
1047
  }
1050
1048
  // Return the key at the specified index
1051
1049
  key(index) {
1050
+ this.loadFromFile();
1052
1051
  const keys = Object.keys(this.storage);
1053
1052
  return keys[index] || null;
1054
1053
  }
1055
1054
  // Save data to a file (only if persistence is enabled)
1056
1055
  saveToFile() {
1057
- try {
1058
- import_fs4.default.writeFileSync(this.filePath, JSON.stringify(this.storage), "utf-8");
1059
- } catch (error) {
1060
- throw new Error(`Error saving data to file: ${error.message}`);
1056
+ if (this.persist) {
1057
+ try {
1058
+ import_fs4.default.writeFileSync(this.filePath, JSON.stringify(this.storage), "utf-8");
1059
+ } catch (error) {
1060
+ throw new Error(`Error saving data to file: ${error.message}`);
1061
+ }
1061
1062
  }
1062
1063
  }
1063
1064
  // Load data from a file (only if persistence is enabled)
1064
1065
  loadFromFile() {
1065
- try {
1066
- if (import_fs4.default.existsSync(this.filePath)) {
1067
- const data = import_fs4.default.readFileSync(this.filePath, "utf-8");
1068
- this.storage = JSON.parse(data || "{}");
1066
+ if (this.persist) {
1067
+ try {
1068
+ if (import_fs4.default.existsSync(this.filePath)) {
1069
+ const data = import_fs4.default.readFileSync(this.filePath, "utf-8");
1070
+ this.storage = JSON.parse(data || "{}");
1071
+ }
1072
+ } catch (error) {
1073
+ throw new Error(`Error loading data from file: ${error.message}`);
1069
1074
  }
1070
- } catch (error) {
1071
- throw new Error(`Error loading data from file: ${error.message}`);
1072
1075
  }
1073
1076
  }
1074
1077
  };
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../lib/node/index.ts", "../../lib/node/utils/tree-adapter.ts", "../../lib/node/utils/icons.ts", "../../lib/node/utils/inline.ts", "../../lib/node/utils/sw.ts", "../../lib/node/utils/session-storage.ts"],
4
- "sourcesContent": ["import { document, domToHtml, domToHyperscript, htmlToDom, htmlToHyperscript } from \"./utils/tree-adapter\";\nimport { mount, unmount } from \"valyrian.js\";\n\nimport FormData from \"form-data\";\nimport { icons } from \"./utils/icons\";\nimport { inline } from \"./utils/inline\";\nimport { sw } from \"./utils/sw\";\nimport { SessionStorage } from \"./utils/session-storage\";\n\nglobal.FormData = FormData as any;\nglobal.document = document as any;\nglobal.sessionStorage = new SessionStorage();\nglobal.localStorage = new SessionStorage();\n\nfunction render(...args: any[]) {\n const Component = () => args;\n const result = mount(\"div\", Component);\n unmount();\n return result;\n}\n\nexport { domToHtml, domToHyperscript, htmlToDom, htmlToHyperscript, inline, sw, icons, render };\n", "/* eslint-disable no-use-before-define */\n/* eslint-disable complexity */\ninterface ChildNodes extends Array<Node | Element | Text | DocumentFragment> {}\n\nexport class Node implements Node {\n // eslint-disable-next-line no-use-before-define\n childNodes: ChildNodes = [];\n baseURI: string = \"\";\n\n tag_name!: string;\n get nodeName(): string {\n return this.tag_name.toLowerCase();\n }\n set nodeName(name: string) {\n this.tag_name = name;\n }\n get tagName(): string {\n return this.tag_name;\n }\n set tagName(name: string) {\n this.tag_name = name;\n }\n\n node_type!: number;\n get nodeType(): number {\n return this.node_type;\n }\n set nodeType(type: number) {\n this.node_type = type;\n }\n\n node_value = \"\";\n attributes: Attr[] = [];\n set textContent(text) {\n this.node_value = String(text);\n }\n get textContent() {\n return this.node_value;\n }\n set nodeValue(text) {\n this.node_value = String(text);\n }\n get nodeValue() {\n return this.node_value;\n }\n\n // eslint-disable-next-line no-use-before-define\n parent_node: Node | null = null;\n get parentNode() {\n return this.parent_node;\n }\n set parentNode(node) {\n this.parent_node = node;\n }\n\n get parentElement(): Element | null {\n return this.parentNode instanceof Element ? this.parentNode : null;\n }\n\n set parentElement(node) {\n this.parentNode = node;\n }\n\n #dataset: Record<string | number, any> = {};\n\n get dataset() {\n return this.#dataset;\n }\n\n set dataset(value) {\n this.#dataset = value;\n }\n\n constructor() {}\n\n appendChild<T extends Node>(node: T): T {\n if (node) {\n node.parentNode && node.parentNode.removeChild(node as Node);\n this.childNodes.push(node);\n node.parentNode = this;\n node.parentElement = this instanceof Element ? this : null;\n }\n return node;\n }\n\n insertBefore<T extends Node>(node: T, child: Node | null): T {\n if (node) {\n node.parentNode && node.parentNode.removeChild(node as Node);\n node.parentNode = this;\n node.parentElement = this instanceof Element ? this : null;\n if (child) {\n const idx = this.childNodes.indexOf(child);\n this.childNodes.splice(idx, 0, node);\n } else {\n this.childNodes.push(node);\n }\n }\n return node;\n }\n\n replaceChild<T extends Node>(node: Node, child: T): T {\n if (node && child && child.parentNode === this) {\n this.insertBefore(node, child);\n child.parentNode && child.parentNode.removeChild(child);\n }\n return child;\n }\n removeChild<T extends Node>(child: T): T {\n if (child && child.parentNode === this) {\n const idx = (this.childNodes as unknown as Node[]).indexOf(child);\n (this.childNodes as unknown as Node[]).splice(idx, 1);\n child.parentNode = null;\n child.parentElement = null;\n }\n return child;\n }\n\n remove(): Node {\n return this.parentNode ? this.parentNode.removeChild(this) : this;\n }\n\n cloneNode(deep?: boolean | undefined): Node {\n if (this.nodeType === 3) {\n return new Text(this.nodeValue);\n }\n\n if (this.nodeType === 1) {\n const node = new Element();\n node.nodeType = this.nodeType;\n this.nodeName = this.nodeName;\n if (this.attributes) {\n for (let i = 0, l = this.attributes.length; i < l; i++) {\n node.setAttribute(this.attributes[i].nodeName, this.attributes[i].nodeValue);\n }\n }\n\n for (const key in this.dataset) {\n node.dataset[key] = this.dataset[key];\n }\n\n if (deep) {\n for (let i = 0, l = this.childNodes.length; i < l; i++) {\n node.appendChild(this.childNodes[i].cloneNode(deep));\n }\n }\n return node;\n }\n\n const node = new Node();\n node.nodeType = this.nodeType;\n node.nodeName = this.nodeName;\n return node;\n }\n\n setAttribute(name: string, value: any) {\n const attr = {\n nodeName: name,\n nodeValue: value\n };\n let idx = -1;\n for (let i = 0, l = this.attributes.length; i < l; i++) {\n if (this.attributes[i].nodeName === name) {\n idx = i;\n break;\n }\n }\n idx === -1 ? this.attributes.push(attr as Attr) : this.attributes.splice(idx, 1, attr as Attr);\n }\n\n getAttribute(name: string) {\n for (let i = 0, l = this.attributes.length; i < l; i++) {\n if (this.attributes[i].nodeName === name) {\n return this.attributes[i].nodeValue;\n }\n }\n }\n\n removeAttribute(name: string) {\n let idx = -1;\n for (let i = 0, l = this.attributes.length; i < l; i++) {\n if (this.attributes[i].nodeName === name) {\n idx = i;\n break;\n }\n }\n if (idx > -1) {\n this.attributes.splice(idx, 1);\n }\n }\n\n getElementById(id: string): Node | null {\n let elementFound;\n for (let i = 0, l = this.childNodes.length; i < l; i++) {\n if (this.childNodes[i].nodeType === 1) {\n if (this.childNodes[i].getAttribute(\"id\") === id) {\n elementFound = this.childNodes[i];\n break;\n }\n elementFound = this.childNodes[i].getElementById(id);\n if (elementFound) {\n break;\n }\n }\n }\n return elementFound || null;\n }\n\n // Not implemented\n // firstChild!: ChildNode | null;\n // isConnected!: boolean;\n // lastChild!: ChildNode | null;\n // nextSibling!: ChildNode | null;\n // ownerDocument!: Document | null;\n // parentElement!: HTMLElement | null;\n // previousSibling!: ChildNode | null;\n // compareDocumentPosition(other: Node): number {\n // throw new Error(\"Method not implemented.\");\n // }\n // contains(other: Node | null): boolean {\n // throw new Error(\"Method not implemented.\");\n // }\n // getRootNode(options?: GetRootNodeOptions | undefined): Node {\n // throw new Error(\"Method not implemented.\");\n // }\n // hasChildNodes(): boolean {\n // throw new Error(\"Method not implemented.\");\n // }\n // isDefaultNamespace(namespace: string | null): boolean {\n // throw new Error(\"Method not implemented.\");\n // }\n // isEqualNode(otherNode: Node | null): boolean {\n // throw new Error(\"Method not implemented.\");\n // }\n // isSameNode(otherNode: Node | null): boolean {\n // throw new Error(\"Method not implemented.\");\n // }\n // lookupNamespaceURI(prefix: string | null): string | null {\n // throw new Error(\"Method not implemented.\");\n // }\n // lookupPrefix(namespace: string | null): string | null {\n // throw new Error(\"Method not implemented.\");\n // }\n // normalize(): void {\n // throw new Error(\"Method not implemented.\");\n // }\n // ATTRIBUTE_NODE!: number;\n // CDATA_SECTION_NODE!: number;\n // COMMENT_NODE!: number;\n // DOCUMENT_FRAGMENT_NODE!: number;\n // DOCUMENT_NODE!: number;\n // DOCUMENT_POSITION_CONTAINED_BY!: number;\n // DOCUMENT_POSITION_CONTAINS!: number;\n // DOCUMENT_POSITION_DISCONNECTED!: number;\n // DOCUMENT_POSITION_FOLLOWING!: number;\n // DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC!: number;\n // DOCUMENT_POSITION_PRECEDING!: number;\n // DOCUMENT_TYPE_NODE!: number;\n // ELEMENT_NODE!: number;\n // ENTITY_NODE!: number;\n // ENTITY_REFERENCE_NODE!: number;\n // NOTATION_NODE!: number;\n // PROCESSING_INSTRUCTION_NODE!: number;\n // TEXT_NODE!: number;\n addEventListener(\n // eslint-disable-next-line no-unused-vars\n type: string,\n // eslint-disable-next-line no-unused-vars\n callback: EventListenerOrEventListenerObject | null,\n // eslint-disable-next-line no-unused-vars\n options?: boolean | AddEventListenerOptions | undefined\n ): void {\n // throw new Error(\"Method not implemented.\");\n }\n // dispatchEvent(event: Event): boolean {\n // throw new Error(\"Method not implemented.\");\n // }\n removeEventListener(\n // eslint-disable-next-line no-unused-vars\n type: string,\n // eslint-disable-next-line no-unused-vars\n callback: EventListenerOrEventListenerObject | null,\n // eslint-disable-next-line no-unused-vars\n options?: boolean | EventListenerOptions | undefined\n ): void {\n // throw new Error(\"Method not implemented.\");\n }\n}\n\nexport class Text extends Node {\n constructor(text: any) {\n super();\n this.nodeType = 3;\n this.nodeName = \"#text\";\n this.node_value = String(text);\n }\n}\n\nfunction updateElementStyles(element: Element, state: Record<string, any>) {\n let str = \"\";\n for (const key in state) {\n const value = state[key];\n if (typeof value !== \"undefined\" && value !== null && String(value).length > 0) {\n str += `${key}: ${state[key]};`;\n }\n }\n if (str.length === 0) {\n element.removeAttribute(\"style\");\n } else {\n element.setAttribute(\"style\", str);\n }\n}\n\nexport class Element extends Node {\n constructor() {\n super();\n this.nodeType = 1;\n this.attributes = [];\n this.childNodes = [];\n }\n\n _style = new Proxy(\n {},\n {\n get: (state: Record<string, any>, prop: string) => state[prop],\n set: (state: Record<string, any>, prop: string, value: any) => {\n state[prop] = value;\n updateElementStyles(this, state);\n return true;\n },\n deleteProperty: (state: Record<string, any>, prop: string) => {\n Reflect.deleteProperty(state, prop);\n updateElementStyles(this, state);\n return true;\n }\n }\n );\n\n get style() {\n return this._style as any;\n }\n\n set style(value: string) {\n if (typeof value === \"string\") {\n // should match pairs like \"color: red; font-size: 12px; background: url(http://example.com/image.png?s=1024x1024&amp;w=is&amp;k=20&amp;c=ASa_AG8uP5Di7azXgJraSA6ME7fbLB0GX4YT_OzCARI=);\"\n const regex = /([^:\\s]+):\\s*((url\\([^)]+\\))|[^;]+(?=(;|$)))/g;\n let match;\n\n while ((match = regex.exec(value)) !== null) {\n this._style[match[1]] = match[2].trim();\n }\n\n return;\n }\n\n throw new Error(\"Cannot set style\");\n }\n\n get className(): string {\n return this.getAttribute(\"class\") || \"\";\n }\n\n set className(value: string | boolean) {\n if (value == null || value === false) {\n this.removeAttribute(\"class\");\n } else {\n this.setAttribute(\"class\", String(value));\n }\n }\n\n classList = {\n toggle: (item: any, force: any) => {\n if (item) {\n const classes = (this.className || \"\").split(\" \");\n const itemIndex = classes.indexOf(item);\n if (force && itemIndex === -1) {\n classes.push(item);\n }\n\n if (!force && itemIndex !== -1) {\n classes.splice(itemIndex, 1);\n }\n\n const final = classes.join(\" \").trim();\n if (final.length) {\n this.className = classes.join(\" \").trim();\n } else {\n this.className = false;\n }\n }\n }\n };\n\n get id(): string {\n return this.getAttribute(\"id\") || \"\";\n }\n\n set id(value: string | boolean) {\n if (value == null || value === false) {\n this.removeAttribute(\"id\");\n } else {\n this.setAttribute(\"id\", String(value));\n }\n }\n\n set textContent(text) {\n this.nodeValue = String(text);\n this.childNodes = this.nodeValue ? [new Text(this.nodeValue)] : [];\n }\n get textContent() {\n return this.nodeValue;\n }\n\n set innerText(text) {\n this.nodeValue = String(text);\n }\n\n get innerText() {\n return this.nodeValue;\n }\n\n get innerHTML() {\n let str = \"\";\n for (let i = 0, l = this.childNodes.length; i < l; i++) {\n // console.log(\"domToHtml\", this.childNodes[i], domToHtml(this.childNodes[i] as Element));\n str += domToHtml(this.childNodes[i] as Element);\n }\n return str;\n }\n\n set innerHTML(html) {\n this.textContent = \"\";\n const result = htmlToDom(html);\n if (result instanceof DocumentFragment) {\n for (let i = 0, l = result.childNodes.length; i < l; i++) {\n this.appendChild(result.childNodes[i]);\n }\n } else {\n this.appendChild(result);\n }\n }\n\n get outerHTML(): string {\n return domToHtml(this);\n }\n}\n\nexport class DocumentFragment extends Element {\n constructor() {\n super();\n this.nodeType = 11;\n this.nodeName = \"#document-fragment\";\n }\n}\n\nexport class Document extends Element {\n constructor() {\n super();\n this.nodeType = 9;\n this.nodeName = \"#document\";\n this.body = this.createElement(\"body\");\n }\n\n body: Element;\n\n createDocumentFragment(): DocumentFragment {\n return new DocumentFragment();\n }\n\n createElement(type: string) {\n const element = new Element();\n element.nodeName = type.toUpperCase();\n return element;\n }\n\n createElementNS(ns: string, type: string) {\n const element = this.createElement(type);\n element.baseURI = ns;\n return element;\n }\n\n createTextNode(text: any) {\n return new Text(text);\n }\n}\n\nconst selfClosingTags = [\n \"area\",\n \"base\",\n \"br\",\n \"col\",\n \"embed\",\n \"hr\",\n \"img\",\n \"input\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\",\n \"!doctype\"\n];\n\nexport function domToHtml(dom: Element | Text | DocumentFragment): string {\n if (dom.nodeType === 3) {\n return dom.textContent;\n }\n\n if (dom.nodeType === 1) {\n const name = dom.nodeName.toLowerCase();\n let str = \"<\" + name;\n for (let i = 0, l = dom.attributes.length; i < l; i++) {\n str += \" \" + dom.attributes[i].nodeName + '=\"' + dom.attributes[i].nodeValue + '\"';\n }\n\n if (selfClosingTags.indexOf(name) === -1) {\n str += \">\";\n if (dom.childNodes && dom.childNodes.length > 0) {\n for (let i = 0, l = dom.childNodes.length; i < l; i++) {\n const child = domToHtml(dom.childNodes[i] as Element);\n if (child) {\n str += child;\n }\n }\n }\n str += \"</\" + name + \">\";\n } else {\n str += \"/>\";\n }\n\n return str;\n }\n\n return \"\";\n}\n\nexport function domToHyperscript(childNodes: ChildNodes, depth = 1) {\n let spaces = \"\";\n for (let i = 0; i < depth; i++) {\n spaces += \" \";\n }\n\n return childNodes\n .map((item) => {\n if (item.nodeType === 10) {\n return `\\n${spaces}\"<!DOCTYPE html>\"`;\n } else if (item.nodeType === 3) {\n return `\\n${spaces}\"${item.nodeValue}\"`;\n } else {\n let str = `\\n${spaces}v(\"${item.nodeName}\", `;\n\n if (item.attributes) {\n const attrs: Record<string, any> = {};\n for (let i = 0, l = item.attributes.length; i < l; i++) {\n const attr = item.attributes[i];\n attrs[attr.nodeName] = attr.nodeValue;\n }\n str += JSON.stringify(attrs);\n } else {\n str += \"{}\";\n }\n\n str += \", [\";\n if (item.childNodes && item.childNodes.length > 0) {\n str += `${domToHyperscript(item.childNodes as unknown as Element[], depth + 1)}\\n${spaces}`;\n }\n\n str += `])`;\n return str;\n }\n })\n .join(\",\");\n}\n\ninterface ObjectIndexItem {\n tagName: string;\n startsAt: number;\n endsAt: number | null;\n contentStartsAt: number;\n contentEndsAt: number | null;\n attributes: { [key: string]: any };\n children: ObjectIndexItem[];\n nodeValue: string | null;\n}\n\ninterface ObjectIndexItemWithContent extends ObjectIndexItem {\n endsAt: number;\n contentEndsAt: number;\n children: ObjectIndexItemWithContent[];\n}\n\ninterface ObjectIndexList extends Array<ObjectIndexItem> {}\n\nfunction findTexts(item: ObjectIndexItemWithContent, html: string) {\n const newChildren: ObjectIndexItemWithContent[] = [];\n\n // If the item has children\n if (item.children.length) {\n // Search for texts in the children.\n for (let i = 0; i < item.children.length; i++) {\n const child = item.children[i];\n const nextChild = item.children[i + 1];\n\n // If is the first child and the child startsAt is greater than the item contentStartsAt then\n // the content between the item contentStartsAt and the child startsAt is a text child of the item.\n if (i === 0 && child.startsAt > item.contentStartsAt) {\n const childContent = html.substring(item.contentStartsAt, child.startsAt);\n\n const childText: ObjectIndexItemWithContent = {\n tagName: \"#text\",\n startsAt: item.contentStartsAt,\n endsAt: item.contentStartsAt + childContent.length,\n contentStartsAt: item.contentStartsAt,\n contentEndsAt: item.contentStartsAt + childContent.length,\n attributes: {},\n children: [],\n nodeValue: childContent\n };\n\n newChildren.push(childText);\n }\n\n // Add the child to the newChildren array.\n newChildren.push(child);\n\n // If there is a next child and the child endsAt is less than the next child startsAt then\n // the content between the child endsAt and the next child startsAt is a text child of the item.\n if (nextChild && child.endsAt < nextChild.startsAt) {\n const childContent = html.substring(child.endsAt, nextChild.startsAt);\n\n const childText: ObjectIndexItemWithContent = {\n tagName: \"#text\",\n startsAt: child.endsAt,\n endsAt: child.endsAt + childContent.length,\n contentStartsAt: child.endsAt,\n contentEndsAt: child.endsAt + childContent.length,\n attributes: {},\n children: [],\n nodeValue: childContent\n };\n\n newChildren.push(childText);\n }\n\n // If there are no next child and the child endsAt is less than the item contentEndsAt then\n // the content between the child endsAt and the item contentEndsAt is a text child of the item.\n if (!nextChild && child.endsAt < item.contentEndsAt) {\n const childContent = html.substring(child.endsAt, item.contentEndsAt);\n\n const childText: ObjectIndexItemWithContent = {\n tagName: \"#text\",\n startsAt: child.endsAt,\n endsAt: child.endsAt + childContent.length,\n contentStartsAt: child.endsAt,\n contentEndsAt: item.contentEndsAt,\n attributes: {},\n children: [],\n nodeValue: childContent\n };\n\n newChildren.push(childText);\n }\n\n // Find texts in the child.\n findTexts(child, html);\n }\n }\n\n // If the item has no children then set the contents between the item contentStartsAt and the item contentEndsAt\n // as a text child of the item.\n if (!item.children.length) {\n const childContent = html.substring(item.contentStartsAt, item.contentEndsAt);\n\n if (childContent.length) {\n const childText: ObjectIndexItemWithContent = {\n tagName: \"#text\",\n startsAt: item.contentStartsAt,\n endsAt: item.contentEndsAt,\n contentStartsAt: item.contentStartsAt,\n contentEndsAt: item.contentEndsAt,\n attributes: {},\n children: [],\n nodeValue: childContent\n };\n\n newChildren.push(childText);\n }\n }\n\n item.children = newChildren;\n}\n\nfunction convertToDom<T extends Node>(item: ObjectIndexItemWithContent): T {\n let node: T;\n\n if (item.tagName === \"#text\") {\n node = document.createTextNode(item.nodeValue as string) as unknown as T;\n } else {\n node = (item.tagName === \"#document-fragment\"\n ? document.createDocumentFragment()\n : document.createElement(item.tagName)) as unknown as T;\n\n for (const key in item.attributes) {\n node.setAttribute(key, item.attributes[key]);\n }\n\n for (let i = 0; i < item.children.length; i++) {\n const child = convertToDom(item.children[i]);\n node.appendChild(child);\n }\n }\n\n return node;\n}\n\n// eslint-disable-next-line sonarjs/cognitive-complexity\nfunction getObjectIndexTree(html: string): DocumentFragment {\n let item;\n const regex = RegExp(\"<([^>|^!]+)>\", \"g\");\n const items: ObjectIndexList = [];\n\n // Make the initial list of items.\n while ((item = regex.exec(html))) {\n // If is a closing tag\n if (item[0].startsWith(\"</\")) {\n const lastOpenedItem = [...items].reverse().find((item) => item.endsAt === null);\n if (lastOpenedItem) {\n lastOpenedItem.endsAt = item.index + item[0].length;\n lastOpenedItem.contentEndsAt = item.index;\n\n // Find the last opened item again, this will be the parent of the current item.\n const parent = [...items].reverse().find((item) => item.endsAt === null);\n if (parent) {\n // Find the index of the current item in the items array.\n const index = items.indexOf(lastOpenedItem);\n // Remove the last opened item from the items array.\n items.splice(index, 1);\n\n // Add the last opened item as a child of the parent.\n parent.children.push(lastOpenedItem);\n }\n }\n\n continue;\n }\n\n // If is an opening tag\n const element: ObjectIndexItem = {\n tagName: item[1].split(\" \")[0],\n startsAt: item.index,\n endsAt: null,\n contentStartsAt: item.index + item[0].length,\n contentEndsAt: null,\n attributes: {},\n children: [],\n nodeValue: null\n };\n\n // Find the attributes of the tag.\n let string = (item[1] || \"\").substring(element.tagName.length + 1).replace(/\\/$/g, \"\");\n const attributesWithValues = string.match(/\\S+=\"[^\"]+\"/g);\n\n if (attributesWithValues) {\n for (const attribute of attributesWithValues) {\n const [name, ...value] = attribute.trim().split(\"=\");\n string = string.replace(attribute, \"\");\n if (value) {\n element.attributes[name] = value.join(\"=\").replace(/(^\"|\"$)/g, \"\");\n }\n }\n }\n\n const attributesWithBooleanValues = string.match(/\\s\\S+=[^\"]+/g);\n if (attributesWithBooleanValues) {\n for (const attribute of attributesWithBooleanValues) {\n const [name, ...value] = attribute.trim().split(\"=\");\n string = string.replace(attribute, \"\");\n if (value) {\n element.attributes[name] = value.join(\"=\").replace(/(^\"|\"$)/g, \"\");\n }\n }\n }\n\n const attributesWithEmptyValues = string.match(/\\s?\\S+/g);\n if (attributesWithEmptyValues) {\n for (const attribute of attributesWithEmptyValues) {\n const name = attribute.trim();\n element.attributes[name] = true;\n }\n }\n\n // If the tag is self closing\n if (item[0].endsWith(\"/>\")) {\n element.endsAt = element.startsAt + item[0].length;\n element.contentStartsAt = element.contentEndsAt = element.endsAt;\n\n // Find the last opened item, this will be the parent of the current item.\n const parent = [...items].reverse().find((item) => item.endsAt === null);\n if (parent) {\n // Add the last opened item as a child of the parent.\n parent.children.push(element);\n continue;\n }\n }\n\n items.push(element);\n }\n\n const fragmentItem: ObjectIndexItemWithContent = {\n tagName: \"#document-fragment\",\n startsAt: 0,\n endsAt: html.length,\n contentStartsAt: 0,\n contentEndsAt: html.length,\n attributes: {},\n children: items as ObjectIndexItemWithContent[],\n nodeValue: null\n };\n\n findTexts(fragmentItem, html);\n\n return convertToDom<DocumentFragment>(fragmentItem);\n}\n\n// First we create a tree of object indexes from the HTML string.\n// The resulting array is then reordered to match the order of the html string.\n// And to move the children to the correct position in its parents.\n// This resulting array is populated with a object node version of the object index.\n// If the final result have more than 1 node, then return a document fragment node.\n// If the final result have 1 node, then return the node.\n// eslint-disable-next-line complexity\nexport function htmlToDom(html: string): Element | Text | DocumentFragment {\n // Search for the opening and closing tags of the root element.\n // The opening tag could be in the middle of the string, so we need to\n // search for the first opening tag.\n const openingTag = html.match(/<[^>]+>/g);\n\n const document = new Document();\n\n // If the opening tag is not found, return a document fragment node with the html string as text content.\n if (!openingTag) {\n const documentFragment = document.createDocumentFragment();\n documentFragment.appendChild(document.createTextNode(html));\n return documentFragment;\n }\n\n const fragment = getObjectIndexTree(html);\n\n if (fragment.childNodes.length > 1) {\n return fragment;\n }\n\n return fragment.childNodes[0];\n}\n\nexport function htmlToHyperscript(html: string) {\n const domTree = htmlToDom(html);\n const hyperscript = domToHyperscript(domTree instanceof DocumentFragment ? domTree.childNodes : [domTree]);\n return `[${hyperscript}\\n]`;\n}\n\nexport const document = new Document();\n\nconst html = document.createElement(\"html\");\nhtml.appendChild(document.createElement(\"head\"));\nhtml.appendChild(document.body);\n", "import fs from \"fs\";\nimport { htmlToHyperscript } from \"./tree-adapter\";\n\nexport interface IconsOptions {\n iconsPath: string | null;\n linksViewPath: string | null;\n logging: boolean;\n\n // favicons options\n path: string;\n appName?: string;\n appDescription?: string;\n developerName?: string;\n developerURL?: string;\n dir?: \"auto\" | \"ltr\" | \"rtl\" | string;\n lang?: string;\n background?: string;\n theme_color?: string;\n display?: \"browser\" | \"standalone\" | string;\n orientation?: \"any\" | \"portrait\" | \"landscape\" | string;\n start_url?: string;\n version?: string;\n icons: {\n android: boolean;\n appleIcon: boolean;\n appleStartup: boolean;\n coast: boolean;\n favicons: boolean;\n firefox: boolean;\n windows: boolean;\n yandex: boolean;\n };\n}\n\nexport async function icons(source: string, configuration?: IconsOptions) {\n const options = {\n ...icons.options,\n ...(configuration || {})\n };\n\n if (options.iconsPath) {\n options.iconsPath = options.iconsPath.replace(/\\/$/gi, \"\") + \"/\";\n }\n\n if (options.linksViewPath) {\n options.linksViewPath = options.linksViewPath.replace(/\\/$/gi, \"\") + \"/\";\n }\n\n const { favicons } = await import(\"favicons\");\n\n try {\n const response = await favicons(source, options);\n\n if (options.iconsPath) {\n for (const i in response.images) {\n fs.writeFileSync(options.iconsPath + response.images[i].name, response.images[i].contents);\n }\n\n for (const i in response.files) {\n fs.writeFileSync(options.iconsPath + response.files[i].name, response.files[i].contents);\n }\n }\n\n if (options.linksViewPath) {\n const html = `\n function Links(){\n return ${htmlToHyperscript(response.html.join(\"\"))};\n }\n \n Links.default = Links;\n module.exports = Links;\n `;\n\n fs.writeFileSync(`${options.linksViewPath}/links.js`, html);\n }\n } catch (err) {\n process.stdout.write((err as any).status + \"\\n\"); // HTTP error code (e.g. `200`) or `null`\n process.stdout.write((err as any).name + \"\\n\"); // Error name e.g. \"API Error\"\n process.stdout.write((err as any).message + \"\\n\"); // Error description e.g. \"An unknown error has occurred\"\n }\n}\n\nicons.options = {\n iconsPath: null,\n linksViewPath: null,\n\n // favicons options\n path: \"\",\n appName: null,\n appDescription: null,\n developerName: null,\n developerURL: null,\n dir: \"auto\",\n lang: \"en-US\",\n background: \"#fff\",\n theme_color: \"#fff\",\n display: \"standalone\",\n orientation: \"any\",\n start_url: \"/\",\n version: \"1.0\",\n logging: false,\n icons: {\n android: true,\n appleIcon: true,\n appleStartup: true,\n coast: false,\n favicons: true,\n firefox: false,\n windows: true,\n yandex: false // Create Yandex browser icon. `boolean`\n }\n} as unknown as IconsOptions;\n", "import * as tsc from \"tsc-prog\";\n\nimport CleanCSS from \"clean-css\";\nimport { PurgeCSS } from \"purgecss\";\nimport esbuild from \"esbuild\";\n/* eslint-disable sonarjs/cognitive-complexity */\nimport fs from \"fs\";\n\n// eslint-disable-next-line complexity\nexport async function inline(\n file: string | { raw: string; map?: string | null; file: string },\n options: Record<string, any> = {}\n) {\n if (typeof file === \"string\") {\n const ext = file.split(\".\").pop();\n if (ext && /(js|cjs|jsx|mjs|ts|tsx)/.test(ext)) {\n if (/(ts|tsx)/.test(ext) && !options.noValidate) {\n const declarationDir = options.declarationDir;\n const emitDeclaration = !!declarationDir;\n\n const tscProgOptions = {\n basePath: process.cwd(), // always required, used for relative paths\n configFilePath: \"tsconfig.json\", // config to inherit from (optional)\n files: [file],\n include: [\"**/*.ts\", \"**/*.js\", \"**/*.tsx\", \"**/*.jsx\", \"**/*.mjs\"],\n exclude: [\"test*/**/*\", \"**/*.test.ts\", \"**/*.spec.ts\", \"dist/**\"],\n pretty: true,\n copyOtherToOutDir: false,\n clean: emitDeclaration ? [declarationDir] : [],\n ...(options.tsc || {}),\n compilerOptions: {\n rootDir: \"./\",\n outDir: \"dist\",\n noEmitOnError: true,\n noEmit: !emitDeclaration,\n declaration: emitDeclaration,\n declarationDir,\n emitDeclarationOnly: emitDeclaration,\n allowJs: true,\n esModuleInterop: true,\n inlineSourceMap: true,\n resolveJsonModule: true,\n removeComments: true,\n ...(options.tsc || {}).compilerOptions\n },\n jsxFactory: \"v\",\n jsxFragment: \"v.fragment\"\n };\n\n // eslint-disable-next-line no-console\n console.log(\"tsc\", tscProgOptions);\n\n tsc.build(tscProgOptions);\n }\n\n const esbuildOptions = {\n entryPoints: [file],\n bundle: \"bundle\" in options ? options.bundle : true,\n sourcemap: \"external\",\n write: false,\n minify: options.compact,\n outdir: \"out\",\n target: \"esnext\",\n jsxFactory: \"v\",\n jsxFragment: \"v.fragment\",\n loader: {\n \".js\": \"jsx\",\n \".cjs\": \"jsx\",\n \".mjs\": \"jsx\",\n \".ts\": \"tsx\"\n },\n ...(options.esbuild || {})\n };\n\n const result = await esbuild.build(esbuildOptions);\n if (result.outputFiles?.length !== 2) {\n throw new Error(result.errors.join(\"\\n\"));\n }\n\n if (options.compact) {\n const terser = await import(\"terser\");\n const result2 = await terser.minify(result.outputFiles[1].text, {\n sourceMap: {\n content: result.outputFiles[0].text.toString()\n },\n compress: {\n booleans_as_integers: false\n },\n output: {\n wrap_func_args: false\n },\n ecma: 2022,\n ...(options.terser || {})\n });\n\n if (!result2.code || !result2.map) {\n throw new Error(\"Unknown error\");\n }\n\n const mapBase64 = Buffer.from(result2.map.toString()).toString(\"base64\");\n const suffix = `//# sourceMappingURL=data:application/json;charset=utf-8;base64,${mapBase64}`;\n return { raw: result2.code, map: suffix, file };\n } else {\n const mapBase64 = Buffer.from(result.outputFiles[0].text.toString()).toString(\"base64\");\n const suffix = `//# sourceMappingURL=data:application/json;charset=utf-8;base64,${mapBase64}`;\n return { raw: result.outputFiles[1].text, map: suffix, file };\n }\n } else if (ext && /(css|scss|styl)/.test(ext)) {\n const result = await new CleanCSS({\n sourceMap: true,\n level: {\n 1: {\n roundingPrecision: \"all=3\"\n },\n 2: {\n restructureRules: true // controls rule restructuring; defaults to false\n }\n },\n ...(options.cleanCss || {})\n }).minify([file]);\n\n return { raw: result.styles, map: null, file };\n } else {\n return { raw: fs.readFileSync(file, \"utf8\"), map: null, file };\n }\n } else if (typeof file === \"object\" && \"raw\" in file) {\n return { map: null, ...file };\n }\n\n throw new Error(`Unknown file type: ${file}`);\n}\n\ninline.uncss = async function (\n renderedHtml: (string | Promise<string>)[],\n css: string,\n options: Record<string, any> = {}\n) {\n const html = await Promise.all(renderedHtml);\n\n const contents = html.map((item) => {\n return {\n raw: item,\n extension: \"html\"\n };\n });\n\n const purgecss = new PurgeCSS();\n\n const output = await purgecss.purge({\n fontFace: true,\n keyframes: true,\n variables: true,\n defaultExtractor: (content) => content.match(/[A-Za-z0-9-_/:@]*[A-Za-z0-9-_/:@/]+/g) || [],\n ...options,\n content: contents,\n css: [{ raw: css }]\n });\n\n const cleanCss = await new CleanCSS({\n sourceMap: false,\n level: {\n 1: {\n roundingPrecision: \"all=3\"\n },\n 2: {\n restructureRules: true // controls rule restructuring; defaults to false\n }\n },\n ...(options.cleanCss || {})\n }).minify(output[0].css);\n\n return cleanCss.styles;\n};\n", "import fs from \"fs\";\nimport path from \"path\";\n\nexport function sw(file: string, options = {}) {\n const swfiletemplate = path.resolve(__dirname, \"./node.sw.js\");\n const swTpl = fs.readFileSync(swfiletemplate, \"utf8\");\n const opt = {\n version: \"v1::\",\n name: \"Valyrian.js\",\n urls: [\"/\"],\n debug: false,\n ...options\n };\n let contents = swTpl\n .replace(\"v1::\", \"v\" + opt.version + \"::\")\n .replace(\"Valyrian.js\", opt.name)\n .replace('[\"/\"]', '[\"' + opt.urls.join('\",\"') + '\"]');\n\n if (!opt.debug) {\n contents = contents.replace(\"console.log\", \"() => {}\");\n }\n\n fs.writeFileSync(file, contents, \"utf8\");\n}\n\n/*\n sw(\"sw.js\", {\n version: \"1\",\n name: \"Valyrian.js\",\n urls: [\"/\", \"/index.html\"],\n debug: false\n });\n\n\n // On the client side\n if (\"serviceWorker\" in navigator) {\n navigator.serviceWorker.register(\"/service-worker.js\");\n\n navigator.serviceWorker.addEventListener(\"message\", (event) => {\n if (event.data && event.data.type === \"NEW_VERSION\") {\n // Notify the user about the new version and ask if they want to update\n if (confirm(\"Hay una nueva versi\u00F3n disponible. \u00BFDeseas actualizar?\")) {\n // Send a message to the service worker to skip the waiting\n navigator.serviceWorker.controller.postMessage({ type: \"SKIP_WAITING\" });\n window.location.reload();\n }\n }\n });\n }\n*/\n", "import fs from \"fs\";\nimport path from \"path\";\n\nexport class SessionStorage {\n private storage: { [key: string]: string };\n private limit: number;\n private persist: boolean;\n private filePath: string;\n private directory: string = \".session-storage\";\n\n constructor({ persist = false, filePath = \"./sessionData.json\" }: { persist?: boolean; filePath?: string } = {}) {\n this.storage = {};\n this.limit = 5 * 1024 * 1024; // 5MB storage limit\n this.persist = persist;\n this.filePath = path.resolve(this.directory, filePath);\n\n if (!fs.existsSync(this.directory)) {\n fs.mkdirSync(this.directory, { recursive: true });\n }\n\n // Load data from file if persistence is enabled\n if (this.persist) {\n this.loadFromFile();\n }\n }\n\n // Calculate total size in bytes of stored data\n private getStorageSize(): number {\n return new TextEncoder().encode(JSON.stringify(this.storage)).length;\n }\n\n // Check if storage limit is exceeded\n private checkSizeLimit(): void {\n const size = this.getStorageSize();\n if (size > this.limit) {\n throw new DOMException(\"Storage limit exceeded\", \"QuotaExceededError\");\n }\n }\n\n // Store value under the specified key\n setItem(key: string | null | undefined, value: string | null | undefined): void {\n if (key === null || key === undefined) {\n throw new TypeError(\"Failed to execute 'setItem' on 'Storage': 1 argument required, but only 0 present.\");\n }\n\n if (value === null) {\n value = \"null\"; // Convert null to \"null\"\n } else if (value === undefined) {\n value = \"undefined\"; // Convert undefined to \"undefined\"\n }\n\n this.storage[key] = String(value); // Store as string\n this.checkSizeLimit(); // Check storage limit\n if (this.persist) {\n this.saveToFile(); // Save to file if persistence is enabled\n }\n }\n\n // Retrieve value stored under the specified key\n getItem(key: string | null | undefined): string | null {\n if (key === null || key === undefined) {\n throw new TypeError(\"Failed to execute 'getItem' on 'Storage': 1 argument required, but only 0 present.\");\n }\n return this.storage[key] || null; // Return null if key doesn't exist\n }\n\n // Remove the value under the specified key\n removeItem(key: string | null | undefined): void {\n if (key === null || key === undefined) {\n throw new TypeError(\"Failed to execute 'removeItem' on 'Storage': 1 argument required, but only 0 present.\");\n }\n delete this.storage[key];\n if (this.persist) {\n this.saveToFile(); // Save to file if persistence is enabled\n }\n }\n\n // Clear all stored values\n clear(): void {\n this.storage = {};\n if (this.persist) {\n this.saveToFile(); // Save to file if persistence is enabled\n }\n }\n\n // Return the number of stored items\n get length(): number {\n return Object.keys(this.storage).length;\n }\n\n // Return the key at the specified index\n key(index: number): string | null {\n const keys = Object.keys(this.storage);\n return keys[index] || null;\n }\n\n // Save data to a file (only if persistence is enabled)\n private saveToFile(): void {\n try {\n fs.writeFileSync(this.filePath, JSON.stringify(this.storage), \"utf-8\");\n } catch (error) {\n throw new Error(`Error saving data to file: ${(error as any).message}`);\n }\n }\n\n // Load data from a file (only if persistence is enabled)\n private loadFromFile(): void {\n try {\n if (fs.existsSync(this.filePath)) {\n const data = fs.readFileSync(this.filePath, \"utf-8\");\n this.storage = JSON.parse(data || \"{}\");\n }\n } catch (error) {\n throw new Error(`Error loading data from file: ${(error as any).message}`);\n }\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { document, domToHtml, domToHyperscript, htmlToDom, htmlToHyperscript } from \"./utils/tree-adapter\";\nimport { mount, unmount } from \"valyrian.js\";\n\nimport FormData from \"form-data\";\nimport { icons } from \"./utils/icons\";\nimport { inline } from \"./utils/inline\";\nimport { sw } from \"./utils/sw\";\nimport { SessionStorage } from \"./utils/session-storage\";\n\nglobal.FormData = FormData as any;\nglobal.document = document as any;\nglobal.sessionStorage = new SessionStorage();\nglobal.localStorage = new SessionStorage();\n\nfunction render(...args: any[]) {\n const Component = () => args;\n const result = mount(\"div\", Component);\n unmount();\n return result;\n}\n\nexport { domToHtml, domToHyperscript, htmlToDom, htmlToHyperscript, inline, sw, icons, render, SessionStorage };\n", "/* eslint-disable no-use-before-define */\n/* eslint-disable complexity */\ninterface ChildNodes extends Array<Node | Element | Text | DocumentFragment> {}\n\nexport class Node implements Node {\n // eslint-disable-next-line no-use-before-define\n childNodes: ChildNodes = [];\n baseURI: string = \"\";\n\n tag_name!: string;\n get nodeName(): string {\n return this.tag_name.toLowerCase();\n }\n set nodeName(name: string) {\n this.tag_name = name;\n }\n get tagName(): string {\n return this.tag_name;\n }\n set tagName(name: string) {\n this.tag_name = name;\n }\n\n node_type!: number;\n get nodeType(): number {\n return this.node_type;\n }\n set nodeType(type: number) {\n this.node_type = type;\n }\n\n node_value = \"\";\n attributes: Attr[] = [];\n set textContent(text) {\n this.node_value = String(text);\n }\n get textContent() {\n return this.node_value;\n }\n set nodeValue(text) {\n this.node_value = String(text);\n }\n get nodeValue() {\n return this.node_value;\n }\n\n // eslint-disable-next-line no-use-before-define\n parent_node: Node | null = null;\n get parentNode() {\n return this.parent_node;\n }\n set parentNode(node) {\n this.parent_node = node;\n }\n\n get parentElement(): Element | null {\n return this.parentNode instanceof Element ? this.parentNode : null;\n }\n\n set parentElement(node) {\n this.parentNode = node;\n }\n\n #dataset: Record<string | number, any> = {};\n\n get dataset() {\n return this.#dataset;\n }\n\n set dataset(value) {\n this.#dataset = value;\n }\n\n constructor() {}\n\n appendChild<T extends Node>(node: T): T {\n if (node) {\n node.parentNode && node.parentNode.removeChild(node as Node);\n this.childNodes.push(node);\n node.parentNode = this;\n node.parentElement = this instanceof Element ? this : null;\n }\n return node;\n }\n\n insertBefore<T extends Node>(node: T, child: Node | null): T {\n if (node) {\n node.parentNode && node.parentNode.removeChild(node as Node);\n node.parentNode = this;\n node.parentElement = this instanceof Element ? this : null;\n if (child) {\n const idx = this.childNodes.indexOf(child);\n this.childNodes.splice(idx, 0, node);\n } else {\n this.childNodes.push(node);\n }\n }\n return node;\n }\n\n replaceChild<T extends Node>(node: Node, child: T): T {\n if (node && child && child.parentNode === this) {\n this.insertBefore(node, child);\n child.parentNode && child.parentNode.removeChild(child);\n }\n return child;\n }\n removeChild<T extends Node>(child: T): T {\n if (child && child.parentNode === this) {\n const idx = (this.childNodes as unknown as Node[]).indexOf(child);\n (this.childNodes as unknown as Node[]).splice(idx, 1);\n child.parentNode = null;\n child.parentElement = null;\n }\n return child;\n }\n\n remove(): Node {\n return this.parentNode ? this.parentNode.removeChild(this) : this;\n }\n\n cloneNode(deep?: boolean | undefined): Node {\n if (this.nodeType === 3) {\n return new Text(this.nodeValue);\n }\n\n if (this.nodeType === 1) {\n const node = new Element();\n node.nodeType = this.nodeType;\n this.nodeName = this.nodeName;\n if (this.attributes) {\n for (let i = 0, l = this.attributes.length; i < l; i++) {\n node.setAttribute(this.attributes[i].nodeName, this.attributes[i].nodeValue);\n }\n }\n\n for (const key in this.dataset) {\n node.dataset[key] = this.dataset[key];\n }\n\n if (deep) {\n for (let i = 0, l = this.childNodes.length; i < l; i++) {\n node.appendChild(this.childNodes[i].cloneNode(deep));\n }\n }\n return node;\n }\n\n const node = new Node();\n node.nodeType = this.nodeType;\n node.nodeName = this.nodeName;\n return node;\n }\n\n setAttribute(name: string, value: any) {\n const attr = {\n nodeName: name,\n nodeValue: value\n };\n let idx = -1;\n for (let i = 0, l = this.attributes.length; i < l; i++) {\n if (this.attributes[i].nodeName === name) {\n idx = i;\n break;\n }\n }\n idx === -1 ? this.attributes.push(attr as Attr) : this.attributes.splice(idx, 1, attr as Attr);\n }\n\n getAttribute(name: string) {\n for (let i = 0, l = this.attributes.length; i < l; i++) {\n if (this.attributes[i].nodeName === name) {\n return this.attributes[i].nodeValue;\n }\n }\n }\n\n removeAttribute(name: string) {\n let idx = -1;\n for (let i = 0, l = this.attributes.length; i < l; i++) {\n if (this.attributes[i].nodeName === name) {\n idx = i;\n break;\n }\n }\n if (idx > -1) {\n this.attributes.splice(idx, 1);\n }\n }\n\n getElementById(id: string): Node | null {\n let elementFound;\n for (let i = 0, l = this.childNodes.length; i < l; i++) {\n if (this.childNodes[i].nodeType === 1) {\n if (this.childNodes[i].getAttribute(\"id\") === id) {\n elementFound = this.childNodes[i];\n break;\n }\n elementFound = this.childNodes[i].getElementById(id);\n if (elementFound) {\n break;\n }\n }\n }\n return elementFound || null;\n }\n\n // Not implemented\n // firstChild!: ChildNode | null;\n // isConnected!: boolean;\n // lastChild!: ChildNode | null;\n // nextSibling!: ChildNode | null;\n // ownerDocument!: Document | null;\n // parentElement!: HTMLElement | null;\n // previousSibling!: ChildNode | null;\n // compareDocumentPosition(other: Node): number {\n // throw new Error(\"Method not implemented.\");\n // }\n // contains(other: Node | null): boolean {\n // throw new Error(\"Method not implemented.\");\n // }\n // getRootNode(options?: GetRootNodeOptions | undefined): Node {\n // throw new Error(\"Method not implemented.\");\n // }\n // hasChildNodes(): boolean {\n // throw new Error(\"Method not implemented.\");\n // }\n // isDefaultNamespace(namespace: string | null): boolean {\n // throw new Error(\"Method not implemented.\");\n // }\n // isEqualNode(otherNode: Node | null): boolean {\n // throw new Error(\"Method not implemented.\");\n // }\n // isSameNode(otherNode: Node | null): boolean {\n // throw new Error(\"Method not implemented.\");\n // }\n // lookupNamespaceURI(prefix: string | null): string | null {\n // throw new Error(\"Method not implemented.\");\n // }\n // lookupPrefix(namespace: string | null): string | null {\n // throw new Error(\"Method not implemented.\");\n // }\n // normalize(): void {\n // throw new Error(\"Method not implemented.\");\n // }\n // ATTRIBUTE_NODE!: number;\n // CDATA_SECTION_NODE!: number;\n // COMMENT_NODE!: number;\n // DOCUMENT_FRAGMENT_NODE!: number;\n // DOCUMENT_NODE!: number;\n // DOCUMENT_POSITION_CONTAINED_BY!: number;\n // DOCUMENT_POSITION_CONTAINS!: number;\n // DOCUMENT_POSITION_DISCONNECTED!: number;\n // DOCUMENT_POSITION_FOLLOWING!: number;\n // DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC!: number;\n // DOCUMENT_POSITION_PRECEDING!: number;\n // DOCUMENT_TYPE_NODE!: number;\n // ELEMENT_NODE!: number;\n // ENTITY_NODE!: number;\n // ENTITY_REFERENCE_NODE!: number;\n // NOTATION_NODE!: number;\n // PROCESSING_INSTRUCTION_NODE!: number;\n // TEXT_NODE!: number;\n addEventListener(\n // eslint-disable-next-line no-unused-vars\n type: string,\n // eslint-disable-next-line no-unused-vars\n callback: EventListenerOrEventListenerObject | null,\n // eslint-disable-next-line no-unused-vars\n options?: boolean | AddEventListenerOptions | undefined\n ): void {\n // throw new Error(\"Method not implemented.\");\n }\n // dispatchEvent(event: Event): boolean {\n // throw new Error(\"Method not implemented.\");\n // }\n removeEventListener(\n // eslint-disable-next-line no-unused-vars\n type: string,\n // eslint-disable-next-line no-unused-vars\n callback: EventListenerOrEventListenerObject | null,\n // eslint-disable-next-line no-unused-vars\n options?: boolean | EventListenerOptions | undefined\n ): void {\n // throw new Error(\"Method not implemented.\");\n }\n}\n\nexport class Text extends Node {\n constructor(text: any) {\n super();\n this.nodeType = 3;\n this.nodeName = \"#text\";\n this.node_value = String(text);\n }\n}\n\nfunction updateElementStyles(element: Element, state: Record<string, any>) {\n let str = \"\";\n for (const key in state) {\n const value = state[key];\n if (typeof value !== \"undefined\" && value !== null && String(value).length > 0) {\n str += `${key}: ${state[key]};`;\n }\n }\n if (str.length === 0) {\n element.removeAttribute(\"style\");\n } else {\n element.setAttribute(\"style\", str);\n }\n}\n\nexport class Element extends Node {\n constructor() {\n super();\n this.nodeType = 1;\n this.attributes = [];\n this.childNodes = [];\n }\n\n _style = new Proxy(\n {},\n {\n get: (state: Record<string, any>, prop: string) => state[prop],\n set: (state: Record<string, any>, prop: string, value: any) => {\n state[prop] = value;\n updateElementStyles(this, state);\n return true;\n },\n deleteProperty: (state: Record<string, any>, prop: string) => {\n Reflect.deleteProperty(state, prop);\n updateElementStyles(this, state);\n return true;\n }\n }\n );\n\n get style() {\n return this._style as any;\n }\n\n set style(value: string) {\n if (typeof value === \"string\") {\n // should match pairs like \"color: red; font-size: 12px; background: url(http://example.com/image.png?s=1024x1024&amp;w=is&amp;k=20&amp;c=ASa_AG8uP5Di7azXgJraSA6ME7fbLB0GX4YT_OzCARI=);\"\n const regex = /([^:\\s]+):\\s*((url\\([^)]+\\))|[^;]+(?=(;|$)))/g;\n let match;\n\n while ((match = regex.exec(value)) !== null) {\n this._style[match[1]] = match[2].trim();\n }\n\n return;\n }\n\n throw new Error(\"Cannot set style\");\n }\n\n get className(): string {\n return this.getAttribute(\"class\") || \"\";\n }\n\n set className(value: string | boolean) {\n if (value == null || value === false) {\n this.removeAttribute(\"class\");\n } else {\n this.setAttribute(\"class\", String(value));\n }\n }\n\n classList = {\n toggle: (item: any, force: any) => {\n if (item) {\n const classes = (this.className || \"\").split(\" \");\n const itemIndex = classes.indexOf(item);\n if (force && itemIndex === -1) {\n classes.push(item);\n }\n\n if (!force && itemIndex !== -1) {\n classes.splice(itemIndex, 1);\n }\n\n const final = classes.join(\" \").trim();\n if (final.length) {\n this.className = classes.join(\" \").trim();\n } else {\n this.className = false;\n }\n }\n }\n };\n\n get id(): string {\n return this.getAttribute(\"id\") || \"\";\n }\n\n set id(value: string | boolean) {\n if (value == null || value === false) {\n this.removeAttribute(\"id\");\n } else {\n this.setAttribute(\"id\", String(value));\n }\n }\n\n set textContent(text) {\n this.nodeValue = String(text);\n this.childNodes = this.nodeValue ? [new Text(this.nodeValue)] : [];\n }\n get textContent() {\n return this.nodeValue;\n }\n\n set innerText(text) {\n this.nodeValue = String(text);\n }\n\n get innerText() {\n return this.nodeValue;\n }\n\n get innerHTML() {\n let str = \"\";\n for (let i = 0, l = this.childNodes.length; i < l; i++) {\n // console.log(\"domToHtml\", this.childNodes[i], domToHtml(this.childNodes[i] as Element));\n str += domToHtml(this.childNodes[i] as Element);\n }\n return str;\n }\n\n set innerHTML(html) {\n this.textContent = \"\";\n const result = htmlToDom(html);\n if (result instanceof DocumentFragment) {\n for (let i = 0, l = result.childNodes.length; i < l; i++) {\n this.appendChild(result.childNodes[i]);\n }\n } else {\n this.appendChild(result);\n }\n }\n\n get outerHTML(): string {\n return domToHtml(this);\n }\n}\n\nexport class DocumentFragment extends Element {\n constructor() {\n super();\n this.nodeType = 11;\n this.nodeName = \"#document-fragment\";\n }\n}\n\nexport class Document extends Element {\n constructor() {\n super();\n this.nodeType = 9;\n this.nodeName = \"#document\";\n this.body = this.createElement(\"body\");\n }\n\n body: Element;\n\n createDocumentFragment(): DocumentFragment {\n return new DocumentFragment();\n }\n\n createElement(type: string) {\n const element = new Element();\n element.nodeName = type.toUpperCase();\n return element;\n }\n\n createElementNS(ns: string, type: string) {\n const element = this.createElement(type);\n element.baseURI = ns;\n return element;\n }\n\n createTextNode(text: any) {\n return new Text(text);\n }\n}\n\nconst selfClosingTags = [\n \"area\",\n \"base\",\n \"br\",\n \"col\",\n \"embed\",\n \"hr\",\n \"img\",\n \"input\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\",\n \"!doctype\"\n];\n\nexport function domToHtml(dom: Element | Text | DocumentFragment): string {\n if (dom.nodeType === 3) {\n return dom.textContent;\n }\n\n if (dom.nodeType === 1) {\n const name = dom.nodeName.toLowerCase();\n let str = \"<\" + name;\n for (let i = 0, l = dom.attributes.length; i < l; i++) {\n str += \" \" + dom.attributes[i].nodeName + '=\"' + dom.attributes[i].nodeValue + '\"';\n }\n\n if (selfClosingTags.indexOf(name) === -1) {\n str += \">\";\n if (dom.childNodes && dom.childNodes.length > 0) {\n for (let i = 0, l = dom.childNodes.length; i < l; i++) {\n const child = domToHtml(dom.childNodes[i] as Element);\n if (child) {\n str += child;\n }\n }\n }\n str += \"</\" + name + \">\";\n } else {\n str += \"/>\";\n }\n\n return str;\n }\n\n return \"\";\n}\n\nexport function domToHyperscript(childNodes: ChildNodes, depth = 1) {\n let spaces = \"\";\n for (let i = 0; i < depth; i++) {\n spaces += \" \";\n }\n\n return childNodes\n .map((item) => {\n if (item.nodeType === 10) {\n return `\\n${spaces}\"<!DOCTYPE html>\"`;\n } else if (item.nodeType === 3) {\n return `\\n${spaces}\"${item.nodeValue}\"`;\n } else {\n let str = `\\n${spaces}v(\"${item.nodeName}\", `;\n\n if (item.attributes) {\n const attrs: Record<string, any> = {};\n for (let i = 0, l = item.attributes.length; i < l; i++) {\n const attr = item.attributes[i];\n attrs[attr.nodeName] = attr.nodeValue;\n }\n str += JSON.stringify(attrs);\n } else {\n str += \"{}\";\n }\n\n str += \", [\";\n if (item.childNodes && item.childNodes.length > 0) {\n str += `${domToHyperscript(item.childNodes as unknown as Element[], depth + 1)}\\n${spaces}`;\n }\n\n str += `])`;\n return str;\n }\n })\n .join(\",\");\n}\n\ninterface ObjectIndexItem {\n tagName: string;\n startsAt: number;\n endsAt: number | null;\n contentStartsAt: number;\n contentEndsAt: number | null;\n attributes: { [key: string]: any };\n children: ObjectIndexItem[];\n nodeValue: string | null;\n}\n\ninterface ObjectIndexItemWithContent extends ObjectIndexItem {\n endsAt: number;\n contentEndsAt: number;\n children: ObjectIndexItemWithContent[];\n}\n\ninterface ObjectIndexList extends Array<ObjectIndexItem> {}\n\nfunction findTexts(item: ObjectIndexItemWithContent, html: string) {\n const newChildren: ObjectIndexItemWithContent[] = [];\n\n // If the item has children\n if (item.children.length) {\n // Search for texts in the children.\n for (let i = 0; i < item.children.length; i++) {\n const child = item.children[i];\n const nextChild = item.children[i + 1];\n\n // If is the first child and the child startsAt is greater than the item contentStartsAt then\n // the content between the item contentStartsAt and the child startsAt is a text child of the item.\n if (i === 0 && child.startsAt > item.contentStartsAt) {\n const childContent = html.substring(item.contentStartsAt, child.startsAt);\n\n const childText: ObjectIndexItemWithContent = {\n tagName: \"#text\",\n startsAt: item.contentStartsAt,\n endsAt: item.contentStartsAt + childContent.length,\n contentStartsAt: item.contentStartsAt,\n contentEndsAt: item.contentStartsAt + childContent.length,\n attributes: {},\n children: [],\n nodeValue: childContent\n };\n\n newChildren.push(childText);\n }\n\n // Add the child to the newChildren array.\n newChildren.push(child);\n\n // If there is a next child and the child endsAt is less than the next child startsAt then\n // the content between the child endsAt and the next child startsAt is a text child of the item.\n if (nextChild && child.endsAt < nextChild.startsAt) {\n const childContent = html.substring(child.endsAt, nextChild.startsAt);\n\n const childText: ObjectIndexItemWithContent = {\n tagName: \"#text\",\n startsAt: child.endsAt,\n endsAt: child.endsAt + childContent.length,\n contentStartsAt: child.endsAt,\n contentEndsAt: child.endsAt + childContent.length,\n attributes: {},\n children: [],\n nodeValue: childContent\n };\n\n newChildren.push(childText);\n }\n\n // If there are no next child and the child endsAt is less than the item contentEndsAt then\n // the content between the child endsAt and the item contentEndsAt is a text child of the item.\n if (!nextChild && child.endsAt < item.contentEndsAt) {\n const childContent = html.substring(child.endsAt, item.contentEndsAt);\n\n const childText: ObjectIndexItemWithContent = {\n tagName: \"#text\",\n startsAt: child.endsAt,\n endsAt: child.endsAt + childContent.length,\n contentStartsAt: child.endsAt,\n contentEndsAt: item.contentEndsAt,\n attributes: {},\n children: [],\n nodeValue: childContent\n };\n\n newChildren.push(childText);\n }\n\n // Find texts in the child.\n findTexts(child, html);\n }\n }\n\n // If the item has no children then set the contents between the item contentStartsAt and the item contentEndsAt\n // as a text child of the item.\n if (!item.children.length) {\n const childContent = html.substring(item.contentStartsAt, item.contentEndsAt);\n\n if (childContent.length) {\n const childText: ObjectIndexItemWithContent = {\n tagName: \"#text\",\n startsAt: item.contentStartsAt,\n endsAt: item.contentEndsAt,\n contentStartsAt: item.contentStartsAt,\n contentEndsAt: item.contentEndsAt,\n attributes: {},\n children: [],\n nodeValue: childContent\n };\n\n newChildren.push(childText);\n }\n }\n\n item.children = newChildren;\n}\n\nfunction convertToDom<T extends Node>(item: ObjectIndexItemWithContent): T {\n let node: T;\n\n if (item.tagName === \"#text\") {\n node = document.createTextNode(item.nodeValue as string) as unknown as T;\n } else {\n node = (item.tagName === \"#document-fragment\"\n ? document.createDocumentFragment()\n : document.createElement(item.tagName)) as unknown as T;\n\n for (const key in item.attributes) {\n node.setAttribute(key, item.attributes[key]);\n }\n\n for (let i = 0; i < item.children.length; i++) {\n const child = convertToDom(item.children[i]);\n node.appendChild(child);\n }\n }\n\n return node;\n}\n\n// eslint-disable-next-line sonarjs/cognitive-complexity\nfunction getObjectIndexTree(html: string): DocumentFragment {\n let item;\n const regex = RegExp(\"<([^>|^!]+)>\", \"g\");\n const items: ObjectIndexList = [];\n\n // Make the initial list of items.\n while ((item = regex.exec(html))) {\n // If is a closing tag\n if (item[0].startsWith(\"</\")) {\n const lastOpenedItem = [...items].reverse().find((item) => item.endsAt === null);\n if (lastOpenedItem) {\n lastOpenedItem.endsAt = item.index + item[0].length;\n lastOpenedItem.contentEndsAt = item.index;\n\n // Find the last opened item again, this will be the parent of the current item.\n const parent = [...items].reverse().find((item) => item.endsAt === null);\n if (parent) {\n // Find the index of the current item in the items array.\n const index = items.indexOf(lastOpenedItem);\n // Remove the last opened item from the items array.\n items.splice(index, 1);\n\n // Add the last opened item as a child of the parent.\n parent.children.push(lastOpenedItem);\n }\n }\n\n continue;\n }\n\n // If is an opening tag\n const element: ObjectIndexItem = {\n tagName: item[1].split(\" \")[0],\n startsAt: item.index,\n endsAt: null,\n contentStartsAt: item.index + item[0].length,\n contentEndsAt: null,\n attributes: {},\n children: [],\n nodeValue: null\n };\n\n // Find the attributes of the tag.\n let string = (item[1] || \"\").substring(element.tagName.length + 1).replace(/\\/$/g, \"\");\n const attributesWithValues = string.match(/\\S+=\"[^\"]+\"/g);\n\n if (attributesWithValues) {\n for (const attribute of attributesWithValues) {\n const [name, ...value] = attribute.trim().split(\"=\");\n string = string.replace(attribute, \"\");\n if (value) {\n element.attributes[name] = value.join(\"=\").replace(/(^\"|\"$)/g, \"\");\n }\n }\n }\n\n const attributesWithBooleanValues = string.match(/\\s\\S+=[^\"]+/g);\n if (attributesWithBooleanValues) {\n for (const attribute of attributesWithBooleanValues) {\n const [name, ...value] = attribute.trim().split(\"=\");\n string = string.replace(attribute, \"\");\n if (value) {\n element.attributes[name] = value.join(\"=\").replace(/(^\"|\"$)/g, \"\");\n }\n }\n }\n\n const attributesWithEmptyValues = string.match(/\\s?\\S+/g);\n if (attributesWithEmptyValues) {\n for (const attribute of attributesWithEmptyValues) {\n const name = attribute.trim();\n element.attributes[name] = true;\n }\n }\n\n // If the tag is self closing\n if (item[0].endsWith(\"/>\")) {\n element.endsAt = element.startsAt + item[0].length;\n element.contentStartsAt = element.contentEndsAt = element.endsAt;\n\n // Find the last opened item, this will be the parent of the current item.\n const parent = [...items].reverse().find((item) => item.endsAt === null);\n if (parent) {\n // Add the last opened item as a child of the parent.\n parent.children.push(element);\n continue;\n }\n }\n\n items.push(element);\n }\n\n const fragmentItem: ObjectIndexItemWithContent = {\n tagName: \"#document-fragment\",\n startsAt: 0,\n endsAt: html.length,\n contentStartsAt: 0,\n contentEndsAt: html.length,\n attributes: {},\n children: items as ObjectIndexItemWithContent[],\n nodeValue: null\n };\n\n findTexts(fragmentItem, html);\n\n return convertToDom<DocumentFragment>(fragmentItem);\n}\n\n// First we create a tree of object indexes from the HTML string.\n// The resulting array is then reordered to match the order of the html string.\n// And to move the children to the correct position in its parents.\n// This resulting array is populated with a object node version of the object index.\n// If the final result have more than 1 node, then return a document fragment node.\n// If the final result have 1 node, then return the node.\n// eslint-disable-next-line complexity\nexport function htmlToDom(html: string): Element | Text | DocumentFragment {\n // Search for the opening and closing tags of the root element.\n // The opening tag could be in the middle of the string, so we need to\n // search for the first opening tag.\n const openingTag = html.match(/<[^>]+>/g);\n\n const document = new Document();\n\n // If the opening tag is not found, return a document fragment node with the html string as text content.\n if (!openingTag) {\n const documentFragment = document.createDocumentFragment();\n documentFragment.appendChild(document.createTextNode(html));\n return documentFragment;\n }\n\n const fragment = getObjectIndexTree(html);\n\n if (fragment.childNodes.length > 1) {\n return fragment;\n }\n\n return fragment.childNodes[0];\n}\n\nexport function htmlToHyperscript(html: string) {\n const domTree = htmlToDom(html);\n const hyperscript = domToHyperscript(domTree instanceof DocumentFragment ? domTree.childNodes : [domTree]);\n return `[${hyperscript}\\n]`;\n}\n\nexport const document = new Document();\n\nconst html = document.createElement(\"html\");\nhtml.appendChild(document.createElement(\"head\"));\nhtml.appendChild(document.body);\n", "import fs from \"fs\";\nimport { htmlToHyperscript } from \"./tree-adapter\";\n\nexport interface IconsOptions {\n iconsPath: string | null;\n linksViewPath: string | null;\n logging: boolean;\n\n // favicons options\n path: string;\n appName?: string;\n appDescription?: string;\n developerName?: string;\n developerURL?: string;\n dir?: \"auto\" | \"ltr\" | \"rtl\" | string;\n lang?: string;\n background?: string;\n theme_color?: string;\n display?: \"browser\" | \"standalone\" | string;\n orientation?: \"any\" | \"portrait\" | \"landscape\" | string;\n start_url?: string;\n version?: string;\n icons: {\n android: boolean;\n appleIcon: boolean;\n appleStartup: boolean;\n coast: boolean;\n favicons: boolean;\n firefox: boolean;\n windows: boolean;\n yandex: boolean;\n };\n}\n\nexport async function icons(source: string, configuration?: IconsOptions) {\n const options = {\n ...icons.options,\n ...(configuration || {})\n };\n\n if (options.iconsPath) {\n options.iconsPath = options.iconsPath.replace(/\\/$/gi, \"\") + \"/\";\n }\n\n if (options.linksViewPath) {\n options.linksViewPath = options.linksViewPath.replace(/\\/$/gi, \"\") + \"/\";\n }\n\n const { favicons } = await import(\"favicons\");\n\n try {\n const response = await favicons(source, options);\n\n if (options.iconsPath) {\n for (const i in response.images) {\n fs.writeFileSync(options.iconsPath + response.images[i].name, response.images[i].contents);\n }\n\n for (const i in response.files) {\n fs.writeFileSync(options.iconsPath + response.files[i].name, response.files[i].contents);\n }\n }\n\n if (options.linksViewPath) {\n const html = `\n function Links(){\n return ${htmlToHyperscript(response.html.join(\"\"))};\n }\n \n Links.default = Links;\n module.exports = Links;\n `;\n\n fs.writeFileSync(`${options.linksViewPath}/links.js`, html);\n }\n } catch (err) {\n process.stdout.write((err as any).status + \"\\n\"); // HTTP error code (e.g. `200`) or `null`\n process.stdout.write((err as any).name + \"\\n\"); // Error name e.g. \"API Error\"\n process.stdout.write((err as any).message + \"\\n\"); // Error description e.g. \"An unknown error has occurred\"\n }\n}\n\nicons.options = {\n iconsPath: null,\n linksViewPath: null,\n\n // favicons options\n path: \"\",\n appName: null,\n appDescription: null,\n developerName: null,\n developerURL: null,\n dir: \"auto\",\n lang: \"en-US\",\n background: \"#fff\",\n theme_color: \"#fff\",\n display: \"standalone\",\n orientation: \"any\",\n start_url: \"/\",\n version: \"1.0\",\n logging: false,\n icons: {\n android: true,\n appleIcon: true,\n appleStartup: true,\n coast: false,\n favicons: true,\n firefox: false,\n windows: true,\n yandex: false // Create Yandex browser icon. `boolean`\n }\n} as unknown as IconsOptions;\n", "import * as tsc from \"tsc-prog\";\n\nimport CleanCSS from \"clean-css\";\nimport { PurgeCSS } from \"purgecss\";\nimport esbuild from \"esbuild\";\n/* eslint-disable sonarjs/cognitive-complexity */\nimport fs from \"fs\";\n\n// eslint-disable-next-line complexity\nexport async function inline(\n file: string | { raw: string; map?: string | null; file: string },\n options: Record<string, any> = {}\n) {\n if (typeof file === \"string\") {\n const ext = file.split(\".\").pop();\n if (ext && /(js|cjs|jsx|mjs|ts|tsx)/.test(ext)) {\n if (/(ts|tsx)/.test(ext) && !options.noValidate) {\n const declarationDir = options.declarationDir;\n const emitDeclaration = !!declarationDir;\n\n const tscProgOptions = {\n basePath: process.cwd(), // always required, used for relative paths\n configFilePath: \"tsconfig.json\", // config to inherit from (optional)\n files: [file],\n include: [\"**/*.ts\", \"**/*.js\", \"**/*.tsx\", \"**/*.jsx\", \"**/*.mjs\"],\n exclude: [\"test*/**/*\", \"**/*.test.ts\", \"**/*.spec.ts\", \"dist/**\"],\n pretty: true,\n copyOtherToOutDir: false,\n clean: emitDeclaration ? [declarationDir] : [],\n ...(options.tsc || {}),\n compilerOptions: {\n rootDir: \"./\",\n outDir: \"dist\",\n noEmitOnError: true,\n noEmit: !emitDeclaration,\n declaration: emitDeclaration,\n declarationDir,\n emitDeclarationOnly: emitDeclaration,\n allowJs: true,\n esModuleInterop: true,\n inlineSourceMap: true,\n resolveJsonModule: true,\n removeComments: true,\n ...(options.tsc || {}).compilerOptions\n },\n jsxFactory: \"v\",\n jsxFragment: \"v.fragment\"\n };\n\n // eslint-disable-next-line no-console\n console.log(\"tsc\", tscProgOptions);\n\n tsc.build(tscProgOptions);\n }\n\n const esbuildOptions = {\n entryPoints: [file],\n bundle: \"bundle\" in options ? options.bundle : true,\n sourcemap: \"external\",\n write: false,\n minify: options.compact,\n outdir: \"out\",\n target: \"esnext\",\n jsxFactory: \"v\",\n jsxFragment: \"v.fragment\",\n loader: {\n \".js\": \"jsx\",\n \".cjs\": \"jsx\",\n \".mjs\": \"jsx\",\n \".ts\": \"tsx\"\n },\n ...(options.esbuild || {})\n };\n\n const result = await esbuild.build(esbuildOptions);\n if (result.outputFiles?.length !== 2) {\n throw new Error(result.errors.join(\"\\n\"));\n }\n\n if (options.compact) {\n const terser = await import(\"terser\");\n const result2 = await terser.minify(result.outputFiles[1].text, {\n sourceMap: {\n content: result.outputFiles[0].text.toString()\n },\n compress: {\n booleans_as_integers: false\n },\n output: {\n wrap_func_args: false\n },\n ecma: 2022,\n ...(options.terser || {})\n });\n\n if (!result2.code || !result2.map) {\n throw new Error(\"Unknown error\");\n }\n\n const mapBase64 = Buffer.from(result2.map.toString()).toString(\"base64\");\n const suffix = `//# sourceMappingURL=data:application/json;charset=utf-8;base64,${mapBase64}`;\n return { raw: result2.code, map: suffix, file };\n } else {\n const mapBase64 = Buffer.from(result.outputFiles[0].text.toString()).toString(\"base64\");\n const suffix = `//# sourceMappingURL=data:application/json;charset=utf-8;base64,${mapBase64}`;\n return { raw: result.outputFiles[1].text, map: suffix, file };\n }\n } else if (ext && /(css|scss|styl)/.test(ext)) {\n const result = await new CleanCSS({\n sourceMap: true,\n level: {\n 1: {\n roundingPrecision: \"all=3\"\n },\n 2: {\n restructureRules: true // controls rule restructuring; defaults to false\n }\n },\n ...(options.cleanCss || {})\n }).minify([file]);\n\n return { raw: result.styles, map: null, file };\n } else {\n return { raw: fs.readFileSync(file, \"utf8\"), map: null, file };\n }\n } else if (typeof file === \"object\" && \"raw\" in file) {\n return { map: null, ...file };\n }\n\n throw new Error(`Unknown file type: ${file}`);\n}\n\ninline.uncss = async function (\n renderedHtml: (string | Promise<string>)[],\n css: string,\n options: Record<string, any> = {}\n) {\n const html = await Promise.all(renderedHtml);\n\n const contents = html.map((item) => {\n return {\n raw: item,\n extension: \"html\"\n };\n });\n\n const purgecss = new PurgeCSS();\n\n const output = await purgecss.purge({\n fontFace: true,\n keyframes: true,\n variables: true,\n defaultExtractor: (content) => content.match(/[A-Za-z0-9-_/:@]*[A-Za-z0-9-_/:@/]+/g) || [],\n ...options,\n content: contents,\n css: [{ raw: css }]\n });\n\n const cleanCss = await new CleanCSS({\n sourceMap: false,\n level: {\n 1: {\n roundingPrecision: \"all=3\"\n },\n 2: {\n restructureRules: true // controls rule restructuring; defaults to false\n }\n },\n ...(options.cleanCss || {})\n }).minify(output[0].css);\n\n return cleanCss.styles;\n};\n", "import fs from \"fs\";\nimport path from \"path\";\n\nexport function sw(file: string, options = {}) {\n const swfiletemplate = path.resolve(__dirname, \"./node.sw.js\");\n const swTpl = fs.readFileSync(swfiletemplate, \"utf8\");\n const opt = {\n version: \"1\",\n name: \"Valyrian.js\",\n urls: [\"/\"],\n debug: false,\n ...options\n };\n let contents = swTpl\n .replace(\"v1\", `v${opt.version}`)\n .replace(\"Valyrian.js\", opt.name)\n .replace('[\"/\"]', '[\"' + opt.urls.join('\",\"') + '\"]');\n\n if (!opt.debug) {\n contents = contents.replace(\"console.log\", \"() => {}\");\n }\n\n fs.writeFileSync(file, contents, \"utf8\");\n}\n\n/*\n sw(\"sw.js\", {\n version: \"1\",\n name: \"Valyrian.js\",\n urls: [\"/\", \"/index.html\"],\n debug: false\n });\n\n\n // On the client side\n if (\"serviceWorker\" in navigator) {\n navigator.serviceWorker.register(\"/service-worker.js\");\n\n navigator.serviceWorker.addEventListener(\"message\", (event) => {\n if (event.data && event.data.type === \"NEW_VERSION\") {\n // Notify the user about the new version and ask if they want to update\n if (confirm(\"Hay una nueva versi\u00F3n disponible. \u00BFDeseas actualizar?\")) {\n // Send a message to the service worker to skip the waiting\n navigator.serviceWorker.controller.postMessage({ type: \"SKIP_WAITING\" });\n window.location.reload();\n }\n }\n });\n }\n*/\n", "import fs from \"fs\";\nimport path from \"path\";\n\nexport class SessionStorage {\n private storage: { [key: string]: string };\n private limit: number;\n private persist: boolean;\n private filePath: string;\n private directory: string = \".session-storage\";\n\n constructor({ persist = false, filePath = \"./sessionData.json\" }: { persist?: boolean; filePath?: string } = {}) {\n this.storage = {};\n this.limit = 5 * 1024 * 1024; // 5MB storage limit\n this.persist = persist;\n this.filePath = path.resolve(this.directory, filePath);\n\n if (this.persist) {\n if (!fs.existsSync(this.directory)) {\n fs.mkdirSync(this.directory, { recursive: true });\n }\n\n // Load data from file if persistence is enabled\n this.loadFromFile();\n }\n }\n\n // Calculate total size in bytes of stored data\n private getStorageSize(): number {\n return new TextEncoder().encode(JSON.stringify(this.storage)).length;\n }\n\n // Check if storage limit is exceeded\n private checkSizeLimit(): void {\n const size = this.getStorageSize();\n if (size > this.limit) {\n throw new DOMException(\"Storage limit exceeded\", \"QuotaExceededError\");\n }\n }\n\n // Store value under the specified key\n setItem(key: string | null | undefined, value: string | null | undefined): void {\n if (key === null || key === undefined) {\n throw new TypeError(\"Failed to execute 'setItem' on 'Storage': 1 argument required, but only 0 present.\");\n }\n\n if (value === null) {\n value = \"null\"; // Convert null to \"null\"\n } else if (value === undefined) {\n value = \"undefined\"; // Convert undefined to \"undefined\"\n }\n\n this.loadFromFile();\n this.storage[key] = String(value); // Store as string\n this.checkSizeLimit(); // Check storage limit\n this.saveToFile(); // Save to file if persistence is enabled\n }\n\n // Retrieve value stored under the specified key\n getItem(key: string | null | undefined): string | null {\n if (key === null || key === undefined) {\n throw new TypeError(\"Failed to execute 'getItem' on 'Storage': 1 argument required, but only 0 present.\");\n }\n\n this.loadFromFile();\n return this.storage[key] || null; // Return null if key doesn't exist\n }\n\n // Remove the value under the specified key\n removeItem(key: string | null | undefined): void {\n if (key === null || key === undefined) {\n throw new TypeError(\"Failed to execute 'removeItem' on 'Storage': 1 argument required, but only 0 present.\");\n }\n this.loadFromFile();\n Reflect.deleteProperty(this.storage, key); // Remove key from storage\n this.saveToFile(); // Save to file if persistence is enabled\n }\n\n // Clear all stored values\n clear(): void {\n this.storage = {};\n this.saveToFile(); // Save to file if persistence is enabled\n }\n\n // Return the number of stored items\n get length(): number {\n return Object.keys(this.storage).length;\n }\n\n // Return the key at the specified index\n key(index: number): string | null {\n this.loadFromFile();\n const keys = Object.keys(this.storage);\n return keys[index] || null;\n }\n\n // Save data to a file (only if persistence is enabled)\n private saveToFile(): void {\n if (this.persist) {\n try {\n fs.writeFileSync(this.filePath, JSON.stringify(this.storage), \"utf-8\");\n } catch (error) {\n throw new Error(`Error saving data to file: ${(error as any).message}`);\n }\n }\n }\n\n // Load data from a file (only if persistence is enabled)\n private loadFromFile(): void {\n if (this.persist) {\n try {\n if (fs.existsSync(this.filePath)) {\n const data = fs.readFileSync(this.filePath, \"utf-8\");\n this.storage = JSON.parse(data || \"{}\");\n }\n } catch (error) {\n throw new Error(`Error loading data from file: ${(error as any).message}`);\n }\n }\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["node", "html", "item", "document", "fs", "html", "import_fs", "esbuild", "CleanCSS", "fs", "html", "import_fs", "path", "fs", "import_fs", "import_path", "path", "fs", "FormData"]
7
7
  }
@@ -915,13 +915,13 @@ function sw(file, options = {}) {
915
915
  const swfiletemplate = path.resolve(__dirname, "./node.sw.js");
916
916
  const swTpl = fs3.readFileSync(swfiletemplate, "utf8");
917
917
  const opt = {
918
- version: "v1::",
918
+ version: "1",
919
919
  name: "Valyrian.js",
920
920
  urls: ["/"],
921
921
  debug: false,
922
922
  ...options
923
923
  };
924
- let contents = swTpl.replace("v1::", "v" + opt.version + "::").replace("Valyrian.js", opt.name).replace('["/"]', '["' + opt.urls.join('","') + '"]');
924
+ let contents = swTpl.replace("v1", `v${opt.version}`).replace("Valyrian.js", opt.name).replace('["/"]', '["' + opt.urls.join('","') + '"]');
925
925
  if (!opt.debug) {
926
926
  contents = contents.replace("console.log", "() => {}");
927
927
  }
@@ -942,10 +942,10 @@ var SessionStorage = class {
942
942
  this.limit = 5 * 1024 * 1024;
943
943
  this.persist = persist;
944
944
  this.filePath = path2.resolve(this.directory, filePath);
945
- if (!fs4.existsSync(this.directory)) {
946
- fs4.mkdirSync(this.directory, { recursive: true });
947
- }
948
945
  if (this.persist) {
946
+ if (!fs4.existsSync(this.directory)) {
947
+ fs4.mkdirSync(this.directory, { recursive: true });
948
+ }
949
949
  this.loadFromFile();
950
950
  }
951
951
  }
@@ -970,17 +970,17 @@ var SessionStorage = class {
970
970
  } else if (value === void 0) {
971
971
  value = "undefined";
972
972
  }
973
+ this.loadFromFile();
973
974
  this.storage[key] = String(value);
974
975
  this.checkSizeLimit();
975
- if (this.persist) {
976
- this.saveToFile();
977
- }
976
+ this.saveToFile();
978
977
  }
979
978
  // Retrieve value stored under the specified key
980
979
  getItem(key) {
981
980
  if (key === null || key === void 0) {
982
981
  throw new TypeError("Failed to execute 'getItem' on 'Storage': 1 argument required, but only 0 present.");
983
982
  }
983
+ this.loadFromFile();
984
984
  return this.storage[key] || null;
985
985
  }
986
986
  // Remove the value under the specified key
@@ -988,17 +988,14 @@ var SessionStorage = class {
988
988
  if (key === null || key === void 0) {
989
989
  throw new TypeError("Failed to execute 'removeItem' on 'Storage': 1 argument required, but only 0 present.");
990
990
  }
991
- delete this.storage[key];
992
- if (this.persist) {
993
- this.saveToFile();
994
- }
991
+ this.loadFromFile();
992
+ Reflect.deleteProperty(this.storage, key);
993
+ this.saveToFile();
995
994
  }
996
995
  // Clear all stored values
997
996
  clear() {
998
997
  this.storage = {};
999
- if (this.persist) {
1000
- this.saveToFile();
1001
- }
998
+ this.saveToFile();
1002
999
  }
1003
1000
  // Return the number of stored items
1004
1001
  get length() {
@@ -1006,26 +1003,31 @@ var SessionStorage = class {
1006
1003
  }
1007
1004
  // Return the key at the specified index
1008
1005
  key(index) {
1006
+ this.loadFromFile();
1009
1007
  const keys = Object.keys(this.storage);
1010
1008
  return keys[index] || null;
1011
1009
  }
1012
1010
  // Save data to a file (only if persistence is enabled)
1013
1011
  saveToFile() {
1014
- try {
1015
- fs4.writeFileSync(this.filePath, JSON.stringify(this.storage), "utf-8");
1016
- } catch (error) {
1017
- throw new Error(`Error saving data to file: ${error.message}`);
1012
+ if (this.persist) {
1013
+ try {
1014
+ fs4.writeFileSync(this.filePath, JSON.stringify(this.storage), "utf-8");
1015
+ } catch (error) {
1016
+ throw new Error(`Error saving data to file: ${error.message}`);
1017
+ }
1018
1018
  }
1019
1019
  }
1020
1020
  // Load data from a file (only if persistence is enabled)
1021
1021
  loadFromFile() {
1022
- try {
1023
- if (fs4.existsSync(this.filePath)) {
1024
- const data = fs4.readFileSync(this.filePath, "utf-8");
1025
- this.storage = JSON.parse(data || "{}");
1022
+ if (this.persist) {
1023
+ try {
1024
+ if (fs4.existsSync(this.filePath)) {
1025
+ const data = fs4.readFileSync(this.filePath, "utf-8");
1026
+ this.storage = JSON.parse(data || "{}");
1027
+ }
1028
+ } catch (error) {
1029
+ throw new Error(`Error loading data from file: ${error.message}`);
1026
1030
  }
1027
- } catch (error) {
1028
- throw new Error(`Error loading data from file: ${error.message}`);
1029
1031
  }
1030
1032
  }
1031
1033
  };
@@ -1042,6 +1044,7 @@ function render(...args) {
1042
1044
  return result;
1043
1045
  }
1044
1046
  export {
1047
+ SessionStorage,
1045
1048
  domToHtml,
1046
1049
  domToHyperscript,
1047
1050
  htmlToDom,