dphelper 4.6.0 → 4.6.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 (170) hide show
  1. package/COPYRIGHT.md +6 -6
  2. package/FUNDING.yml +12 -12
  3. package/LICENSE.md +21 -21
  4. package/README.md +417 -397
  5. package/SECURITY.md +26 -26
  6. package/SUMMARY.md +83 -83
  7. package/index.cjs +1 -1
  8. package/index.d.ts +1 -1
  9. package/index.js +1 -1
  10. package/llms.txt +73 -73
  11. package/modules/ai.cjs +1 -1
  12. package/modules/ai.d.ts +11 -11
  13. package/modules/ai.js +1 -1
  14. package/modules/anchor.cjs +1 -1
  15. package/modules/anchor.d.ts +6 -6
  16. package/modules/anchor.js +1 -1
  17. package/modules/array.cjs +1 -1
  18. package/modules/array.d.ts +21 -21
  19. package/modules/array.js +1 -1
  20. package/modules/audio.cjs +1 -1
  21. package/modules/audio.d.ts +10 -10
  22. package/modules/audio.js +1 -1
  23. package/modules/avoid.cjs +1 -1
  24. package/modules/avoid.d.ts +2 -2
  25. package/modules/avoid.js +1 -1
  26. package/modules/biometric.cjs +1 -1
  27. package/modules/biometric.d.ts +14 -14
  28. package/modules/biometric.js +1 -1
  29. package/modules/browser.cjs +1 -1
  30. package/modules/browser.d.ts +10 -10
  31. package/modules/browser.js +1 -1
  32. package/modules/check.cjs +1 -1
  33. package/modules/check.d.ts +4 -4
  34. package/modules/check.js +1 -1
  35. package/modules/color.cjs +1 -1
  36. package/modules/color.d.ts +6 -6
  37. package/modules/color.js +1 -1
  38. package/modules/compress.cjs +1 -1
  39. package/modules/compress.d.ts +13 -13
  40. package/modules/compress.js +1 -1
  41. package/modules/cookie.cjs +1 -1
  42. package/modules/cookie.d.ts +12 -12
  43. package/modules/cookie.js +1 -1
  44. package/modules/coords.cjs +1 -1
  45. package/modules/coords.d.ts +8 -8
  46. package/modules/coords.js +1 -1
  47. package/modules/credits.cjs +1 -1
  48. package/modules/credits.d.ts +11 -11
  49. package/modules/credits.js +1 -1
  50. package/modules/date.cjs +1 -1
  51. package/modules/date.d.ts +25 -25
  52. package/modules/date.js +1 -1
  53. package/modules/disable.cjs +1 -1
  54. package/modules/disable.d.ts +8 -8
  55. package/modules/disable.js +1 -1
  56. package/modules/dispatch.cjs +1 -1
  57. package/modules/dispatch.d.ts +4 -4
  58. package/modules/dispatch.js +1 -1
  59. package/modules/elements.cjs +1 -1
  60. package/modules/elements.d.ts +3 -3
  61. package/modules/elements.js +1 -1
  62. package/modules/events.cjs +1 -1
  63. package/modules/events.d.ts +6 -6
  64. package/modules/events.js +1 -1
  65. package/modules/fetch.cjs +1 -1
  66. package/modules/fetch.d.ts +15 -15
  67. package/modules/fetch.js +1 -1
  68. package/modules/form.cjs +1 -1
  69. package/modules/form.d.ts +13 -13
  70. package/modules/form.js +1 -1
  71. package/modules/format.cjs +1 -1
  72. package/modules/format.d.ts +3 -3
  73. package/modules/format.js +1 -1
  74. package/modules/i18n.cjs +1 -1
  75. package/modules/i18n.d.ts +11 -11
  76. package/modules/i18n.js +1 -1
  77. package/modules/image.cjs +1 -1
  78. package/modules/image.d.ts +13 -13
  79. package/modules/image.js +1 -1
  80. package/modules/json.cjs +1 -1
  81. package/modules/json.d.ts +8 -8
  82. package/modules/json.js +1 -1
  83. package/modules/load.cjs +1 -1
  84. package/modules/load.d.ts +8 -8
  85. package/modules/load.js +1 -1
  86. package/modules/logging.cjs +1 -1
  87. package/modules/logging.d.ts +8 -8
  88. package/modules/logging.js +1 -1
  89. package/modules/math.cjs +1 -1
  90. package/modules/math.d.ts +13 -13
  91. package/modules/math.js +1 -1
  92. package/modules/memory.cjs +1 -1
  93. package/modules/memory.d.ts +3 -3
  94. package/modules/memory.js +1 -1
  95. package/modules/navigation.cjs +1 -1
  96. package/modules/navigation.d.ts +4 -4
  97. package/modules/navigation.js +1 -1
  98. package/modules/net.cjs +1 -1
  99. package/modules/net.d.ts +10 -10
  100. package/modules/net.js +1 -1
  101. package/modules/objects.cjs +1 -1
  102. package/modules/objects.d.ts +15 -15
  103. package/modules/objects.js +1 -1
  104. package/modules/path.cjs +1 -1
  105. package/modules/path.d.ts +4 -4
  106. package/modules/path.js +1 -1
  107. package/modules/promise.cjs +1 -1
  108. package/modules/promise.d.ts +3 -3
  109. package/modules/promise.js +1 -1
  110. package/modules/sanitize.cjs +1 -1
  111. package/modules/sanitize.d.ts +2 -2
  112. package/modules/sanitize.js +1 -1
  113. package/modules/screen.cjs +1 -1
  114. package/modules/screen.d.ts +11 -11
  115. package/modules/screen.js +1 -1
  116. package/modules/scrollbar.cjs +1 -1
  117. package/modules/scrollbar.d.ts +9 -9
  118. package/modules/scrollbar.js +1 -1
  119. package/modules/security.cjs +1 -1
  120. package/modules/security.d.ts +15 -15
  121. package/modules/security.js +1 -1
  122. package/modules/shortcut.cjs +1 -1
  123. package/modules/shortcut.d.ts +2 -2
  124. package/modules/shortcut.js +1 -1
  125. package/modules/socket.cjs +1 -1
  126. package/modules/socket.d.ts +13 -13
  127. package/modules/socket.js +1 -1
  128. package/modules/sse.cjs +1 -1
  129. package/modules/sse.d.ts +8 -8
  130. package/modules/sse.js +1 -1
  131. package/modules/svg.cjs +1 -1
  132. package/modules/svg.d.ts +12 -12
  133. package/modules/svg.js +1 -1
  134. package/modules/sync.cjs +1 -1
  135. package/modules/sync.d.ts +13 -13
  136. package/modules/sync.js +1 -1
  137. package/modules/system.cjs +1 -1
  138. package/modules/system.d.ts +2 -2
  139. package/modules/system.js +1 -1
  140. package/modules/text.cjs +1 -1
  141. package/modules/text.d.ts +13 -13
  142. package/modules/text.js +1 -1
  143. package/modules/timer.cjs +1 -1
  144. package/modules/timer.d.ts +3 -3
  145. package/modules/timer.js +1 -1
  146. package/modules/tools.cjs +1 -1
  147. package/modules/tools.d.ts +5 -5
  148. package/modules/tools.js +1 -1
  149. package/modules/translators.cjs +1 -1
  150. package/modules/translators.d.ts +2 -2
  151. package/modules/translators.js +1 -1
  152. package/modules/triggers.cjs +1 -1
  153. package/modules/triggers.d.ts +43 -43
  154. package/modules/triggers.js +1 -1
  155. package/modules/types.cjs +1 -1
  156. package/modules/types.d.ts +5 -5
  157. package/modules/types.js +1 -1
  158. package/modules/ui.cjs +1 -1
  159. package/modules/ui.d.ts +3 -3
  160. package/modules/ui.js +1 -1
  161. package/modules/window.cjs +1 -1
  162. package/modules/window.d.ts +9 -9
  163. package/modules/window.js +1 -1
  164. package/modules/worker.cjs +1 -1
  165. package/modules/worker.d.ts +16 -16
  166. package/modules/worker.js +1 -1
  167. package/package.json +1 -1
  168. package/sbom.json +9 -14
  169. package/types/dphelper.d.ts +546 -546
  170. package/types/global.d.ts +8 -8
@@ -1 +1 @@
1
- 'use strict';var n={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var i={version:"4.6.0"};Object.defineProperty(globalThis,"dphelper",{value:new Proxy({},{}),writable:true,configurable:true,enumerable:false});Object.defineProperties(dphelper,{_list:{value:{scripts:[],sockets:[],...n},configurable:true,writable:true},version:{value:i.version,configurable:true,writable:true},isServer:{value:false,configurable:true,writable:true},isBrowser:{value:true,configurable:true,writable:true}});var a=dphelper;Object.defineProperty(a,"setProps",{value:(e,t,l)=>{Object.defineProperty(e,t.name,l||{writable:false,configurable:false,enumerable:false}),l?.lock&&Object.freeze(e[t.name]);},writable:false,configurable:false,enumerable:false});Object.defineProperty(a,"setDescription",{value:(e,t)=>{Object.defineProperties(a,{[e.name]:{value:t,writable:false,configurable:false,enumerable:false}}),Object.keys(t).map(l=>(Object.defineProperties(a[e.name],{[l]:{writable:false,configurable:false,enumerable:false}}),null)),a.setProps(a,e,{writable:false,configurable:false,enumerable:false}),a._list.scripts.push(e);}});var u={name:"shortcut",active:true,subCommand:[{name:"keys",version:"0.0.2",example:"dphelper.shortcut.keys([e, trigger])",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Handle keyboard shortcuts.",env:"client",subCommand:[]}]},p={keys:(e,t)=>{let l=e.which?e.which:e.keyCode;t||(t={data:[{key:"83",ctrl:true,active:true,description:"CTRL+S",function:""},{key:"27",ctrl:false,active:true,description:"ESC",element:"",function:""},{key:"80",ctrl:true,active:true,description:"CTRL+P",element:"",function:"function(){ Print }"}]}),t.data&&t.data.map(r=>(e.ctrlKey||e.metaKey&&r.ctrl===true)&&l===Number.parseInt(r.key)&&r.active===true?(r.element&&r.element.click(),r.function?JSON.stringify(r.function):(e.preventDefault(),null)):null);}};dphelper?.setDescription(u,p);var j=dphelper.shortcut;exports.shortcut=j;
1
+ 'use strict';var n={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var i={version:"4.6.1"};Object.defineProperty(globalThis,"dphelper",{value:new Proxy({},{}),writable:true,configurable:true,enumerable:false});Object.defineProperties(dphelper,{_list:{value:{scripts:[],sockets:[],...n},configurable:true,writable:true},version:{value:i.version,configurable:true,writable:true},isServer:{value:false,configurable:true,writable:true},isBrowser:{value:true,configurable:true,writable:true}});var a=dphelper;Object.defineProperty(a,"setProps",{value:(e,t,l)=>{Object.defineProperty(e,t.name,l||{writable:false,configurable:false,enumerable:false}),l?.lock&&Object.freeze(e[t.name]);},writable:false,configurable:false,enumerable:false});Object.defineProperty(a,"setDescription",{value:(e,t)=>{Object.defineProperties(a,{[e.name]:{value:t,writable:false,configurable:false,enumerable:false}}),Object.keys(t).map(l=>(Object.defineProperties(a[e.name],{[l]:{writable:false,configurable:false,enumerable:false}}),null)),a.setProps(a,e,{writable:false,configurable:false,enumerable:false}),a._list.scripts.push(e);}});var u={name:"shortcut",active:true,subCommand:[{name:"keys",version:"0.0.2",example:"dphelper.shortcut.keys([e, trigger])",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Handle keyboard shortcuts.",env:"client",subCommand:[]}]},p={keys:(e,t)=>{let l=e.which?e.which:e.keyCode;t||(t={data:[{key:"83",ctrl:true,active:true,description:"CTRL+S",function:""},{key:"27",ctrl:false,active:true,description:"ESC",element:"",function:""},{key:"80",ctrl:true,active:true,description:"CTRL+P",element:"",function:"function(){ Print }"}]}),t.data&&t.data.map(r=>(e.ctrlKey||e.metaKey&&r.ctrl===true)&&l===Number.parseInt(r.key)&&r.active===true?(r.element&&r.element.click(),r.function?JSON.stringify(r.function):(e.preventDefault(),null)):null);}};dphelper?.setDescription(u,p);var j=dphelper.shortcut;exports.shortcut=j;
@@ -1,6 +1,6 @@
1
1
  /// <reference path="../types/dphelper.d.ts" />
2
- export interface ShortcutTool {
3
- keys: (e: any, trigger: any) => void
2
+ export interface ShortcutTool {
3
+ keys: (e: any, trigger: any) => void
4
4
  }
5
5
 
6
6
  export const shortcut: ShortcutTool
@@ -1 +1 @@
1
- var i={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var s={version:"4.6.0"};Object.defineProperty(globalThis,"dphelper",{value:new Proxy({},{}),writable:true,configurable:true,enumerable:false});Object.defineProperties(dphelper,{_list:{value:{scripts:[],sockets:[],...i},configurable:true,writable:true},version:{value:s.version,configurable:true,writable:true},isServer:{value:false,configurable:true,writable:true},isBrowser:{value:true,configurable:true,writable:true}});var a=dphelper;Object.defineProperty(a,"setProps",{value:(e,t,l)=>{Object.defineProperty(e,t.name,l||{writable:false,configurable:false,enumerable:false}),l?.lock&&Object.freeze(e[t.name]);},writable:false,configurable:false,enumerable:false});Object.defineProperty(a,"setDescription",{value:(e,t)=>{Object.defineProperties(a,{[e.name]:{value:t,writable:false,configurable:false,enumerable:false}}),Object.keys(t).map(l=>(Object.defineProperties(a[e.name],{[l]:{writable:false,configurable:false,enumerable:false}}),null)),a.setProps(a,e,{writable:false,configurable:false,enumerable:false}),a._list.scripts.push(e);}});var p={name:"shortcut",active:true,subCommand:[{name:"keys",version:"0.0.2",example:"dphelper.shortcut.keys([e, trigger])",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Handle keyboard shortcuts.",env:"client",subCommand:[]}]},f={keys:(e,t)=>{let l=e.which?e.which:e.keyCode;t||(t={data:[{key:"83",ctrl:true,active:true,description:"CTRL+S",function:""},{key:"27",ctrl:false,active:true,description:"ESC",element:"",function:""},{key:"80",ctrl:true,active:true,description:"CTRL+P",element:"",function:"function(){ Print }"}]}),t.data&&t.data.map(r=>(e.ctrlKey||e.metaKey&&r.ctrl===true)&&l===Number.parseInt(r.key)&&r.active===true?(r.element&&r.element.click(),r.function?JSON.stringify(r.function):(e.preventDefault(),null)):null);}};dphelper?.setDescription(p,f);var P=dphelper.shortcut;export{P as shortcut};
1
+ var i={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var s={version:"4.6.1"};Object.defineProperty(globalThis,"dphelper",{value:new Proxy({},{}),writable:true,configurable:true,enumerable:false});Object.defineProperties(dphelper,{_list:{value:{scripts:[],sockets:[],...i},configurable:true,writable:true},version:{value:s.version,configurable:true,writable:true},isServer:{value:false,configurable:true,writable:true},isBrowser:{value:true,configurable:true,writable:true}});var a=dphelper;Object.defineProperty(a,"setProps",{value:(e,t,l)=>{Object.defineProperty(e,t.name,l||{writable:false,configurable:false,enumerable:false}),l?.lock&&Object.freeze(e[t.name]);},writable:false,configurable:false,enumerable:false});Object.defineProperty(a,"setDescription",{value:(e,t)=>{Object.defineProperties(a,{[e.name]:{value:t,writable:false,configurable:false,enumerable:false}}),Object.keys(t).map(l=>(Object.defineProperties(a[e.name],{[l]:{writable:false,configurable:false,enumerable:false}}),null)),a.setProps(a,e,{writable:false,configurable:false,enumerable:false}),a._list.scripts.push(e);}});var p={name:"shortcut",active:true,subCommand:[{name:"keys",version:"0.0.2",example:"dphelper.shortcut.keys([e, trigger])",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Handle keyboard shortcuts.",env:"client",subCommand:[]}]},f={keys:(e,t)=>{let l=e.which?e.which:e.keyCode;t||(t={data:[{key:"83",ctrl:true,active:true,description:"CTRL+S",function:""},{key:"27",ctrl:false,active:true,description:"ESC",element:"",function:""},{key:"80",ctrl:true,active:true,description:"CTRL+P",element:"",function:"function(){ Print }"}]}),t.data&&t.data.map(r=>(e.ctrlKey||e.metaKey&&r.ctrl===true)&&l===Number.parseInt(r.key)&&r.active===true?(r.element&&r.element.click(),r.function?JSON.stringify(r.function):(e.preventDefault(),null)):null);}};dphelper?.setDescription(p,f);var P=dphelper.shortcut;export{P as shortcut};
@@ -1,2 +1,2 @@
1
- 'use strict';var m={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var g={version:"4.6.0"};Object.defineProperty(globalThis,"dphelper",{value:new Proxy({},{}),writable:true,configurable:true,enumerable:false});Object.defineProperties(dphelper,{_list:{value:{scripts:[],sockets:[],...m},configurable:true,writable:true},version:{value:g.version,configurable:true,writable:true},isServer:{value:false,configurable:true,writable:true},isBrowser:{value:true,configurable:true,writable:true}});var l=dphelper;Object.defineProperty(l,"setProps",{value:(t,e,o)=>{Object.defineProperty(t,e.name,o||{writable:false,configurable:false,enumerable:false}),o?.lock&&Object.freeze(t[e.name]);},writable:false,configurable:false,enumerable:false});Object.defineProperty(l,"setDescription",{value:(t,e)=>{Object.defineProperties(l,{[t.name]:{value:e,writable:false,configurable:false,enumerable:false}}),Object.keys(e).map(o=>(Object.defineProperties(l[t.name],{[o]:{writable:false,configurable:false,enumerable:false}}),null)),l.setProps(l,t,{writable:false,configurable:false,enumerable:false}),l._list.scripts.push(t);}});var a={ws:{}},v={name:"socket",active:true,subCommand:[{name:"info",version:"0.0.2",example:"dphelper.socket.info(...)",author:"Dario Passariello",creationDate:"2021-01-01",lastMod:"2021-01-01",type:"function",active:true,description:"Retrieve socket information",env:"client",subCommand:[]},{name:"start",version:"0.0.2",example:"dphelper.socket.start(...)",author:"Dario Passariello",creationDate:"2021-01-01",lastMod:"2021-01-01",type:"function",active:true,description:"Start a socket connection",env:"client",subCommand:[]},{name:"conn",version:"0.0.2",example:"dphelper.socket.conn(...)",author:"Dario Passariello",creationDate:"2021-01-01",lastMod:"2021-01-01",type:"function",active:true,description:"Manage socket connections",env:"client",subCommand:[]},{name:"connect",version:"0.0.2",example:"dphelper.socket.connect(...)",author:"Dario Passariello",creationDate:"2021-01-01",lastMod:"2021-01-01",type:"function",active:true,description:"Connect to a socket",env:"client",subCommand:[]},{name:"open",version:"0.0.2",example:"dphelper.socket.open(...)",author:"Dario Passariello",creationDate:"2021-01-01",lastMod:"2021-01-01",type:"function",active:true,description:"Open a socket connection",env:"client",subCommand:[]},{name:"send",version:"0.0.2",example:"dphelper.socket.send(...)",author:"Dario Passariello",creationDate:"2021-01-01",lastMod:"2021-01-01",type:"function",active:true,description:"Send data through a socket",env:"client",subCommand:[]},{name:"receive",version:"0.0.2",example:"dphelper.socket.receive(...)",author:"Dario Passariello",creationDate:"2021-01-01",lastMod:"2021-01-01",type:"function",active:true,description:"Receive data from a socket",env:"client",subCommand:[]},{name:"keepAlive",version:"0.0.2",example:"dphelper.socket.keepAlive(...)",author:"Dario Passariello",creationDate:"2021-01-01",lastMod:"2021-01-01",type:"function",active:true,description:"Keep the socket connection alive",env:"client",subCommand:[]},{name:"check",version:"0.0.2",example:"dphelper.socket.check()",author:"Dario Passariello",creationDate:"2023-05-27",lastMod:"2023-05-27",type:"function",active:true,description:"Check how many websocket connections are open",env:"client",subCommand:[]},{name:"list",version:"0.0.2",example:"dphelper.socket.list()",author:"Dario Passariello",creationDate:"2023-05-27",lastMod:"2023-05-27",type:"function",active:true,description:"List all websocket connections in real-time",env:"client",subCommand:[]},{name:"close",version:"0.0.1",example:"dphelper.socket.close([name])",author:"Dario Passariello",creationDate:"2026-05-18",lastMod:"2025-05-18",type:"function",active:true,description:"Close websocket connections by name",env:"client",subCommand:[]}]},y={info:()=>"Created by Dario Passariello",start:(t,e="general")=>{a.ws={},dphelper.socket.connect(t,e);},conn:(t,e,o,r)=>{if(!(t&&e)){console.debug("please use connect!");return}try{let n;try{n=new URL(e);}catch{if(!e.startsWith("/")&&!e.startsWith("ws")&&!e.startsWith("wss"))n=new URL(e,window.location.origin);else {console.error("Invalid WebSocket URL");return}}if(n.protocol==="ws:"){console.error("Insecure WebSocket protocol 'ws://' - must use 'wss://'");return}r&&n.searchParams.set("token",r);let s=new WebSocket(n.toString());return s.binaryType="blob",s.onmessage=p=>{},[s,t,o]}catch(n){console.error(n);return}},connect:(t,e)=>{t&&dphelper.socket.open(dphelper.security.uuid.v5,t,e);},open:(t,e,o,r)=>{if(t)try{let n=dphelper.socket.conn(t,e,o,r);if(!n)return;a.ws[o]=n,dphelper._list.sockets.indexOf(n[0])===-1&&dphelper._list.sockets.push(n[0]);let s=0,p=5,h=1e3,b=()=>{if(s>=p){console.error(`[dphelper] Socket "${o}" max reconnect attempts (${p}) reached`);return}s++;let i=Math.min(h*Math.pow(2,s),3e4);console.debug(`[dphelper] Reconnecting socket "${o}" in ${i}ms (attempt ${s}/${p})`),setTimeout(()=>{dphelper.socket.open(t,e,o,r);},i);},u=()=>{dphelper.log.reg(`${t} connected`),s=0;},c=i=>{dphelper.log.debug(i.wasClean?"Disconnected":`Connection break: ${i.reason||i.code}`),i.wasClean||b();},d=i=>{dphelper.log?.error(i);};n[0].onopen=u,n[0].onclose=c,n[0].onerror=d,n[0].__dphelper_handlers={origOnOpen:u,origOnClose:c,origOnError:d};}catch(n){console.error(n);}},ping:t=>{if(a.ws[t]?.[1])try{a.ws[t]?.[0]?.send('{"debug":"__ping__"}');}catch(e){console.error(e);}},send:(t,e)=>{if(a.ws[e]?.[1]&&t)try{let o=a.ws[e];if(!o)return;o[0].send(String(t));}catch(o){console.error(o);}},receive:(t,e)=>{if(a.ws[e]?.[1])try{let o=a.ws[e],r=o[0];r.onmessage=n=>{t(n),dphelper.log.reg(n);};}catch(o){console.error(o);}},keepAlive:t=>{try{let e=a.ws[t];if(!e)return;let o=e[0],r=o.__dphelper_handlers;if(!r){console.warn("[dphelper] keepAlive: no stored handlers found for",t);return}let n,s=(c=5e3)=>{n=setTimeout(()=>{dphelper.socket.ping(t);},c);},p=()=>clearTimeout(n),h=()=>{r.origOnOpen?.(),setInterval(s,3e4);},b=c=>{try{Object.values(JSON.parse(c.data))[0]==="__ping__"&&p();}catch(d){console.error(d);}},u=r.origOnMessage;o.onopen=h,o.onmessage=c=>{typeof u=="function"&&u(c),b(c);};}catch(e){console.error(e);}},check:()=>{dphelper._list.sockets=dphelper._list.sockets.filter(t=>t.readyState!==WebSocket.CLOSED);},list:()=>dphelper._list.sockets,close:t=>{try{let e=a.ws[t];if(!e)return;e[0].close();}catch(e){console.error(e);}}};dphelper?.setDescription(v,y);typeof document<"u"&&dphelper?.socket?.check();var R=dphelper.socket;
1
+ 'use strict';var m={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var g={version:"4.6.1"};Object.defineProperty(globalThis,"dphelper",{value:new Proxy({},{}),writable:true,configurable:true,enumerable:false});Object.defineProperties(dphelper,{_list:{value:{scripts:[],sockets:[],...m},configurable:true,writable:true},version:{value:g.version,configurable:true,writable:true},isServer:{value:false,configurable:true,writable:true},isBrowser:{value:true,configurable:true,writable:true}});var l=dphelper;Object.defineProperty(l,"setProps",{value:(t,e,o)=>{Object.defineProperty(t,e.name,o||{writable:false,configurable:false,enumerable:false}),o?.lock&&Object.freeze(t[e.name]);},writable:false,configurable:false,enumerable:false});Object.defineProperty(l,"setDescription",{value:(t,e)=>{Object.defineProperties(l,{[t.name]:{value:e,writable:false,configurable:false,enumerable:false}}),Object.keys(e).map(o=>(Object.defineProperties(l[t.name],{[o]:{writable:false,configurable:false,enumerable:false}}),null)),l.setProps(l,t,{writable:false,configurable:false,enumerable:false}),l._list.scripts.push(t);}});var a={ws:{}},v={name:"socket",active:true,subCommand:[{name:"info",version:"0.0.2",example:"dphelper.socket.info(...)",author:"Dario Passariello",creationDate:"2021-01-01",lastMod:"2021-01-01",type:"function",active:true,description:"Retrieve socket information",env:"client",subCommand:[]},{name:"start",version:"0.0.2",example:"dphelper.socket.start(...)",author:"Dario Passariello",creationDate:"2021-01-01",lastMod:"2021-01-01",type:"function",active:true,description:"Start a socket connection",env:"client",subCommand:[]},{name:"conn",version:"0.0.2",example:"dphelper.socket.conn(...)",author:"Dario Passariello",creationDate:"2021-01-01",lastMod:"2021-01-01",type:"function",active:true,description:"Manage socket connections",env:"client",subCommand:[]},{name:"connect",version:"0.0.2",example:"dphelper.socket.connect(...)",author:"Dario Passariello",creationDate:"2021-01-01",lastMod:"2021-01-01",type:"function",active:true,description:"Connect to a socket",env:"client",subCommand:[]},{name:"open",version:"0.0.2",example:"dphelper.socket.open(...)",author:"Dario Passariello",creationDate:"2021-01-01",lastMod:"2021-01-01",type:"function",active:true,description:"Open a socket connection",env:"client",subCommand:[]},{name:"send",version:"0.0.2",example:"dphelper.socket.send(...)",author:"Dario Passariello",creationDate:"2021-01-01",lastMod:"2021-01-01",type:"function",active:true,description:"Send data through a socket",env:"client",subCommand:[]},{name:"receive",version:"0.0.2",example:"dphelper.socket.receive(...)",author:"Dario Passariello",creationDate:"2021-01-01",lastMod:"2021-01-01",type:"function",active:true,description:"Receive data from a socket",env:"client",subCommand:[]},{name:"keepAlive",version:"0.0.2",example:"dphelper.socket.keepAlive(...)",author:"Dario Passariello",creationDate:"2021-01-01",lastMod:"2021-01-01",type:"function",active:true,description:"Keep the socket connection alive",env:"client",subCommand:[]},{name:"check",version:"0.0.2",example:"dphelper.socket.check()",author:"Dario Passariello",creationDate:"2023-05-27",lastMod:"2023-05-27",type:"function",active:true,description:"Check how many websocket connections are open",env:"client",subCommand:[]},{name:"list",version:"0.0.2",example:"dphelper.socket.list()",author:"Dario Passariello",creationDate:"2023-05-27",lastMod:"2023-05-27",type:"function",active:true,description:"List all websocket connections in real-time",env:"client",subCommand:[]},{name:"close",version:"0.0.1",example:"dphelper.socket.close([name])",author:"Dario Passariello",creationDate:"2026-05-18",lastMod:"2025-05-18",type:"function",active:true,description:"Close websocket connections by name",env:"client",subCommand:[]}]},y={info:()=>"Created by Dario Passariello",start:(t,e="general")=>{a.ws={},dphelper.socket.connect(t,e);},conn:(t,e,o,r)=>{if(!(t&&e)){console.debug("please use connect!");return}try{let n;try{n=new URL(e);}catch{if(!e.startsWith("/")&&!e.startsWith("ws")&&!e.startsWith("wss"))n=new URL(e,window.location.origin);else {console.error("Invalid WebSocket URL");return}}if(n.protocol==="ws:"){console.error("Insecure WebSocket protocol 'ws://' - must use 'wss://'");return}r&&n.searchParams.set("token",r);let s=new WebSocket(n.toString());return s.binaryType="blob",s.onmessage=p=>{},[s,t,o]}catch(n){console.error(n);return}},connect:(t,e)=>{t&&dphelper.socket.open(dphelper.security.uuid.v5,t,e);},open:(t,e,o,r)=>{if(t)try{let n=dphelper.socket.conn(t,e,o,r);if(!n)return;a.ws[o]=n,dphelper._list.sockets.indexOf(n[0])===-1&&dphelper._list.sockets.push(n[0]);let s=0,p=5,h=1e3,b=()=>{if(s>=p){console.error(`[dphelper] Socket "${o}" max reconnect attempts (${p}) reached`);return}s++;let i=Math.min(h*Math.pow(2,s),3e4);console.debug(`[dphelper] Reconnecting socket "${o}" in ${i}ms (attempt ${s}/${p})`),setTimeout(()=>{dphelper.socket.open(t,e,o,r);},i);},u=()=>{dphelper.log.reg(`${t} connected`),s=0;},c=i=>{dphelper.log.debug(i.wasClean?"Disconnected":`Connection break: ${i.reason||i.code}`),i.wasClean||b();},d=i=>{dphelper.log?.error(i);};n[0].onopen=u,n[0].onclose=c,n[0].onerror=d,n[0].__dphelper_handlers={origOnOpen:u,origOnClose:c,origOnError:d};}catch(n){console.error(n);}},ping:t=>{if(a.ws[t]?.[1])try{a.ws[t]?.[0]?.send('{"debug":"__ping__"}');}catch(e){console.error(e);}},send:(t,e)=>{if(a.ws[e]?.[1]&&t)try{let o=a.ws[e];if(!o)return;o[0].send(String(t));}catch(o){console.error(o);}},receive:(t,e)=>{if(a.ws[e]?.[1])try{let o=a.ws[e],r=o[0];r.onmessage=n=>{t(n),dphelper.log.reg(n);};}catch(o){console.error(o);}},keepAlive:t=>{try{let e=a.ws[t];if(!e)return;let o=e[0],r=o.__dphelper_handlers;if(!r){console.warn("[dphelper] keepAlive: no stored handlers found for",t);return}let n,s=(c=5e3)=>{n=setTimeout(()=>{dphelper.socket.ping(t);},c);},p=()=>clearTimeout(n),h=()=>{r.origOnOpen?.(),setInterval(s,3e4);},b=c=>{try{Object.values(JSON.parse(c.data))[0]==="__ping__"&&p();}catch(d){console.error(d);}},u=r.origOnMessage;o.onopen=h,o.onmessage=c=>{typeof u=="function"&&u(c),b(c);};}catch(e){console.error(e);}},check:()=>{dphelper._list.sockets=dphelper._list.sockets.filter(t=>t.readyState!==WebSocket.CLOSED);},list:()=>dphelper._list.sockets,close:t=>{try{let e=a.ws[t];if(!e)return;e[0].close();}catch(e){console.error(e);}}};dphelper?.setDescription(v,y);typeof document<"u"&&dphelper?.socket?.check();var R=dphelper.socket;
2
2
  exports.socket=R;
@@ -1,17 +1,17 @@
1
1
  /// <reference path="../types/dphelper.d.ts" />
2
- export interface SocketTool {
3
- info: () => string
4
- start: (server: any, name: string) => void
5
- conn: (id: any, server: any, name: string) => void
6
- connect: (server: any, name: string) => void
7
- open: (id: any, server: any, name: string) => void
8
- ping: (name: string) => void
9
- send: (mex: any, name: string) => void
10
- receive: (func: Function, name: string) => void
11
- keepAlive: (name: string) => void
12
- check: () => void
13
- list: () => WebSocket[]
14
- close: (name: string) => void
2
+ export interface SocketTool {
3
+ info: () => string
4
+ start: (server: any, name: string) => void
5
+ conn: (id: any, server: any, name: string) => void
6
+ connect: (server: any, name: string) => void
7
+ open: (id: any, server: any, name: string) => void
8
+ ping: (name: string) => void
9
+ send: (mex: any, name: string) => void
10
+ receive: (func: Function, name: string) => void
11
+ keepAlive: (name: string) => void
12
+ check: () => void
13
+ list: () => WebSocket[]
14
+ close: (name: string) => void
15
15
  }
16
16
 
17
17
  export const socket: SocketTool
package/modules/socket.js CHANGED
@@ -1,2 +1,2 @@
1
- var g={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var k={version:"4.6.0"};Object.defineProperty(globalThis,"dphelper",{value:new Proxy({},{}),writable:true,configurable:true,enumerable:false});Object.defineProperties(dphelper,{_list:{value:{scripts:[],sockets:[],...g},configurable:true,writable:true},version:{value:k.version,configurable:true,writable:true},isServer:{value:false,configurable:true,writable:true},isBrowser:{value:true,configurable:true,writable:true}});var l=dphelper;Object.defineProperty(l,"setProps",{value:(t,e,o)=>{Object.defineProperty(t,e.name,o||{writable:false,configurable:false,enumerable:false}),o?.lock&&Object.freeze(t[e.name]);},writable:false,configurable:false,enumerable:false});Object.defineProperty(l,"setDescription",{value:(t,e)=>{Object.defineProperties(l,{[t.name]:{value:e,writable:false,configurable:false,enumerable:false}}),Object.keys(e).map(o=>(Object.defineProperties(l[t.name],{[o]:{writable:false,configurable:false,enumerable:false}}),null)),l.setProps(l,t,{writable:false,configurable:false,enumerable:false}),l._list.scripts.push(t);}});var a={ws:{}},y={name:"socket",active:true,subCommand:[{name:"info",version:"0.0.2",example:"dphelper.socket.info(...)",author:"Dario Passariello",creationDate:"2021-01-01",lastMod:"2021-01-01",type:"function",active:true,description:"Retrieve socket information",env:"client",subCommand:[]},{name:"start",version:"0.0.2",example:"dphelper.socket.start(...)",author:"Dario Passariello",creationDate:"2021-01-01",lastMod:"2021-01-01",type:"function",active:true,description:"Start a socket connection",env:"client",subCommand:[]},{name:"conn",version:"0.0.2",example:"dphelper.socket.conn(...)",author:"Dario Passariello",creationDate:"2021-01-01",lastMod:"2021-01-01",type:"function",active:true,description:"Manage socket connections",env:"client",subCommand:[]},{name:"connect",version:"0.0.2",example:"dphelper.socket.connect(...)",author:"Dario Passariello",creationDate:"2021-01-01",lastMod:"2021-01-01",type:"function",active:true,description:"Connect to a socket",env:"client",subCommand:[]},{name:"open",version:"0.0.2",example:"dphelper.socket.open(...)",author:"Dario Passariello",creationDate:"2021-01-01",lastMod:"2021-01-01",type:"function",active:true,description:"Open a socket connection",env:"client",subCommand:[]},{name:"send",version:"0.0.2",example:"dphelper.socket.send(...)",author:"Dario Passariello",creationDate:"2021-01-01",lastMod:"2021-01-01",type:"function",active:true,description:"Send data through a socket",env:"client",subCommand:[]},{name:"receive",version:"0.0.2",example:"dphelper.socket.receive(...)",author:"Dario Passariello",creationDate:"2021-01-01",lastMod:"2021-01-01",type:"function",active:true,description:"Receive data from a socket",env:"client",subCommand:[]},{name:"keepAlive",version:"0.0.2",example:"dphelper.socket.keepAlive(...)",author:"Dario Passariello",creationDate:"2021-01-01",lastMod:"2021-01-01",type:"function",active:true,description:"Keep the socket connection alive",env:"client",subCommand:[]},{name:"check",version:"0.0.2",example:"dphelper.socket.check()",author:"Dario Passariello",creationDate:"2023-05-27",lastMod:"2023-05-27",type:"function",active:true,description:"Check how many websocket connections are open",env:"client",subCommand:[]},{name:"list",version:"0.0.2",example:"dphelper.socket.list()",author:"Dario Passariello",creationDate:"2023-05-27",lastMod:"2023-05-27",type:"function",active:true,description:"List all websocket connections in real-time",env:"client",subCommand:[]},{name:"close",version:"0.0.1",example:"dphelper.socket.close([name])",author:"Dario Passariello",creationDate:"2026-05-18",lastMod:"2025-05-18",type:"function",active:true,description:"Close websocket connections by name",env:"client",subCommand:[]}]},D={info:()=>"Created by Dario Passariello",start:(t,e="general")=>{a.ws={},dphelper.socket.connect(t,e);},conn:(t,e,o,r)=>{if(!(t&&e)){console.debug("please use connect!");return}try{let n;try{n=new URL(e);}catch{if(!e.startsWith("/")&&!e.startsWith("ws")&&!e.startsWith("wss"))n=new URL(e,window.location.origin);else {console.error("Invalid WebSocket URL");return}}if(n.protocol==="ws:"){console.error("Insecure WebSocket protocol 'ws://' - must use 'wss://'");return}r&&n.searchParams.set("token",r);let s=new WebSocket(n.toString());return s.binaryType="blob",s.onmessage=p=>{},[s,t,o]}catch(n){console.error(n);return}},connect:(t,e)=>{t&&dphelper.socket.open(dphelper.security.uuid.v5,t,e);},open:(t,e,o,r)=>{if(t)try{let n=dphelper.socket.conn(t,e,o,r);if(!n)return;a.ws[o]=n,dphelper._list.sockets.indexOf(n[0])===-1&&dphelper._list.sockets.push(n[0]);let s=0,p=5,h=1e3,b=()=>{if(s>=p){console.error(`[dphelper] Socket "${o}" max reconnect attempts (${p}) reached`);return}s++;let i=Math.min(h*Math.pow(2,s),3e4);console.debug(`[dphelper] Reconnecting socket "${o}" in ${i}ms (attempt ${s}/${p})`),setTimeout(()=>{dphelper.socket.open(t,e,o,r);},i);},u=()=>{dphelper.log.reg(`${t} connected`),s=0;},c=i=>{dphelper.log.debug(i.wasClean?"Disconnected":`Connection break: ${i.reason||i.code}`),i.wasClean||b();},d=i=>{dphelper.log?.error(i);};n[0].onopen=u,n[0].onclose=c,n[0].onerror=d,n[0].__dphelper_handlers={origOnOpen:u,origOnClose:c,origOnError:d};}catch(n){console.error(n);}},ping:t=>{if(a.ws[t]?.[1])try{a.ws[t]?.[0]?.send('{"debug":"__ping__"}');}catch(e){console.error(e);}},send:(t,e)=>{if(a.ws[e]?.[1]&&t)try{let o=a.ws[e];if(!o)return;o[0].send(String(t));}catch(o){console.error(o);}},receive:(t,e)=>{if(a.ws[e]?.[1])try{let o=a.ws[e],r=o[0];r.onmessage=n=>{t(n),dphelper.log.reg(n);};}catch(o){console.error(o);}},keepAlive:t=>{try{let e=a.ws[t];if(!e)return;let o=e[0],r=o.__dphelper_handlers;if(!r){console.warn("[dphelper] keepAlive: no stored handlers found for",t);return}let n,s=(c=5e3)=>{n=setTimeout(()=>{dphelper.socket.ping(t);},c);},p=()=>clearTimeout(n),h=()=>{r.origOnOpen?.(),setInterval(s,3e4);},b=c=>{try{Object.values(JSON.parse(c.data))[0]==="__ping__"&&p();}catch(d){console.error(d);}},u=r.origOnMessage;o.onopen=h,o.onmessage=c=>{typeof u=="function"&&u(c),b(c);};}catch(e){console.error(e);}},check:()=>{dphelper._list.sockets=dphelper._list.sockets.filter(t=>t.readyState!==WebSocket.CLOSED);},list:()=>dphelper._list.sockets,close:t=>{try{let e=a.ws[t];if(!e)return;e[0].close();}catch(e){console.error(e);}}};dphelper?.setDescription(y,D);typeof document<"u"&&dphelper?.socket?.check();var A=dphelper.socket;
1
+ var g={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var k={version:"4.6.1"};Object.defineProperty(globalThis,"dphelper",{value:new Proxy({},{}),writable:true,configurable:true,enumerable:false});Object.defineProperties(dphelper,{_list:{value:{scripts:[],sockets:[],...g},configurable:true,writable:true},version:{value:k.version,configurable:true,writable:true},isServer:{value:false,configurable:true,writable:true},isBrowser:{value:true,configurable:true,writable:true}});var l=dphelper;Object.defineProperty(l,"setProps",{value:(t,e,o)=>{Object.defineProperty(t,e.name,o||{writable:false,configurable:false,enumerable:false}),o?.lock&&Object.freeze(t[e.name]);},writable:false,configurable:false,enumerable:false});Object.defineProperty(l,"setDescription",{value:(t,e)=>{Object.defineProperties(l,{[t.name]:{value:e,writable:false,configurable:false,enumerable:false}}),Object.keys(e).map(o=>(Object.defineProperties(l[t.name],{[o]:{writable:false,configurable:false,enumerable:false}}),null)),l.setProps(l,t,{writable:false,configurable:false,enumerable:false}),l._list.scripts.push(t);}});var a={ws:{}},y={name:"socket",active:true,subCommand:[{name:"info",version:"0.0.2",example:"dphelper.socket.info(...)",author:"Dario Passariello",creationDate:"2021-01-01",lastMod:"2021-01-01",type:"function",active:true,description:"Retrieve socket information",env:"client",subCommand:[]},{name:"start",version:"0.0.2",example:"dphelper.socket.start(...)",author:"Dario Passariello",creationDate:"2021-01-01",lastMod:"2021-01-01",type:"function",active:true,description:"Start a socket connection",env:"client",subCommand:[]},{name:"conn",version:"0.0.2",example:"dphelper.socket.conn(...)",author:"Dario Passariello",creationDate:"2021-01-01",lastMod:"2021-01-01",type:"function",active:true,description:"Manage socket connections",env:"client",subCommand:[]},{name:"connect",version:"0.0.2",example:"dphelper.socket.connect(...)",author:"Dario Passariello",creationDate:"2021-01-01",lastMod:"2021-01-01",type:"function",active:true,description:"Connect to a socket",env:"client",subCommand:[]},{name:"open",version:"0.0.2",example:"dphelper.socket.open(...)",author:"Dario Passariello",creationDate:"2021-01-01",lastMod:"2021-01-01",type:"function",active:true,description:"Open a socket connection",env:"client",subCommand:[]},{name:"send",version:"0.0.2",example:"dphelper.socket.send(...)",author:"Dario Passariello",creationDate:"2021-01-01",lastMod:"2021-01-01",type:"function",active:true,description:"Send data through a socket",env:"client",subCommand:[]},{name:"receive",version:"0.0.2",example:"dphelper.socket.receive(...)",author:"Dario Passariello",creationDate:"2021-01-01",lastMod:"2021-01-01",type:"function",active:true,description:"Receive data from a socket",env:"client",subCommand:[]},{name:"keepAlive",version:"0.0.2",example:"dphelper.socket.keepAlive(...)",author:"Dario Passariello",creationDate:"2021-01-01",lastMod:"2021-01-01",type:"function",active:true,description:"Keep the socket connection alive",env:"client",subCommand:[]},{name:"check",version:"0.0.2",example:"dphelper.socket.check()",author:"Dario Passariello",creationDate:"2023-05-27",lastMod:"2023-05-27",type:"function",active:true,description:"Check how many websocket connections are open",env:"client",subCommand:[]},{name:"list",version:"0.0.2",example:"dphelper.socket.list()",author:"Dario Passariello",creationDate:"2023-05-27",lastMod:"2023-05-27",type:"function",active:true,description:"List all websocket connections in real-time",env:"client",subCommand:[]},{name:"close",version:"0.0.1",example:"dphelper.socket.close([name])",author:"Dario Passariello",creationDate:"2026-05-18",lastMod:"2025-05-18",type:"function",active:true,description:"Close websocket connections by name",env:"client",subCommand:[]}]},D={info:()=>"Created by Dario Passariello",start:(t,e="general")=>{a.ws={},dphelper.socket.connect(t,e);},conn:(t,e,o,r)=>{if(!(t&&e)){console.debug("please use connect!");return}try{let n;try{n=new URL(e);}catch{if(!e.startsWith("/")&&!e.startsWith("ws")&&!e.startsWith("wss"))n=new URL(e,window.location.origin);else {console.error("Invalid WebSocket URL");return}}if(n.protocol==="ws:"){console.error("Insecure WebSocket protocol 'ws://' - must use 'wss://'");return}r&&n.searchParams.set("token",r);let s=new WebSocket(n.toString());return s.binaryType="blob",s.onmessage=p=>{},[s,t,o]}catch(n){console.error(n);return}},connect:(t,e)=>{t&&dphelper.socket.open(dphelper.security.uuid.v5,t,e);},open:(t,e,o,r)=>{if(t)try{let n=dphelper.socket.conn(t,e,o,r);if(!n)return;a.ws[o]=n,dphelper._list.sockets.indexOf(n[0])===-1&&dphelper._list.sockets.push(n[0]);let s=0,p=5,h=1e3,b=()=>{if(s>=p){console.error(`[dphelper] Socket "${o}" max reconnect attempts (${p}) reached`);return}s++;let i=Math.min(h*Math.pow(2,s),3e4);console.debug(`[dphelper] Reconnecting socket "${o}" in ${i}ms (attempt ${s}/${p})`),setTimeout(()=>{dphelper.socket.open(t,e,o,r);},i);},u=()=>{dphelper.log.reg(`${t} connected`),s=0;},c=i=>{dphelper.log.debug(i.wasClean?"Disconnected":`Connection break: ${i.reason||i.code}`),i.wasClean||b();},d=i=>{dphelper.log?.error(i);};n[0].onopen=u,n[0].onclose=c,n[0].onerror=d,n[0].__dphelper_handlers={origOnOpen:u,origOnClose:c,origOnError:d};}catch(n){console.error(n);}},ping:t=>{if(a.ws[t]?.[1])try{a.ws[t]?.[0]?.send('{"debug":"__ping__"}');}catch(e){console.error(e);}},send:(t,e)=>{if(a.ws[e]?.[1]&&t)try{let o=a.ws[e];if(!o)return;o[0].send(String(t));}catch(o){console.error(o);}},receive:(t,e)=>{if(a.ws[e]?.[1])try{let o=a.ws[e],r=o[0];r.onmessage=n=>{t(n),dphelper.log.reg(n);};}catch(o){console.error(o);}},keepAlive:t=>{try{let e=a.ws[t];if(!e)return;let o=e[0],r=o.__dphelper_handlers;if(!r){console.warn("[dphelper] keepAlive: no stored handlers found for",t);return}let n,s=(c=5e3)=>{n=setTimeout(()=>{dphelper.socket.ping(t);},c);},p=()=>clearTimeout(n),h=()=>{r.origOnOpen?.(),setInterval(s,3e4);},b=c=>{try{Object.values(JSON.parse(c.data))[0]==="__ping__"&&p();}catch(d){console.error(d);}},u=r.origOnMessage;o.onopen=h,o.onmessage=c=>{typeof u=="function"&&u(c),b(c);};}catch(e){console.error(e);}},check:()=>{dphelper._list.sockets=dphelper._list.sockets.filter(t=>t.readyState!==WebSocket.CLOSED);},list:()=>dphelper._list.sockets,close:t=>{try{let e=a.ws[t];if(!e)return;e[0].close();}catch(e){console.error(e);}}};dphelper?.setDescription(y,D);typeof document<"u"&&dphelper?.socket?.check();var A=dphelper.socket;
2
2
  export{A as socket};
package/modules/sse.cjs CHANGED
@@ -1,2 +1,2 @@
1
- 'use strict';var b={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var h={version:"4.6.0"};Object.defineProperty(globalThis,"dphelper",{value:new Proxy({},{}),writable:true,configurable:true,enumerable:false});Object.defineProperties(dphelper,{_list:{value:{scripts:[],sockets:[],...b},configurable:true,writable:true},version:{value:h.version,configurable:true,writable:true},isServer:{value:false,configurable:true,writable:true},isBrowser:{value:true,configurable:true,writable:true}});var s=dphelper;Object.defineProperty(s,"setProps",{value:(e,r,o)=>{Object.defineProperty(e,r.name,o||{writable:false,configurable:false,enumerable:false}),o?.lock&&Object.freeze(e[r.name]);},writable:false,configurable:false,enumerable:false});Object.defineProperty(s,"setDescription",{value:(e,r)=>{Object.defineProperties(s,{[e.name]:{value:r,writable:false,configurable:false,enumerable:false}}),Object.keys(r).map(o=>(Object.defineProperties(s[e.name],{[o]:{writable:false,configurable:false,enumerable:false}}),null)),s.setProps(s,e,{writable:false,configurable:false,enumerable:false}),s._list.scripts.push(e);}});var P={name:"sse",active:true,subCommand:[{name:"open",version:"0.0.2",example:"dphelper.sse.open('/api/stream', { method: 'POST', body: ... })",author:"Dario Passariello",creationDate:"20260221",lastMod:"20260513",type:"function",active:true,description:"Advanced Server-Sent Events client with POST and Custom Headers support. HTTPS required. Validates Content-Type before processing.",env:"client",subCommand:[]}]},S=e=>{try{let r=new URL(e);return r.protocol!=="https:"&&r.protocol!=="http:"?(console.error("[dphelper] Only HTTP/HTTPS protocols allowed for SSE"),!1):!0}catch{return true}},T=e=>e?e.includes("text/event-stream")||e.includes("text/plain"):false,j={open:(e,r={})=>{if(!S(e))return {on:()=>{},close:()=>{}};let o={message:[],error:[],open:[]},p=new AbortController,l=(t,a)=>{o[t]?.forEach(i=>i(a));};return (async()=>{try{let t=await fetch(e,{...r,signal:p.signal,headers:{Accept:"text/event-stream",...r.headers||{}}});if(!t.ok)throw new Error(`SSE failed: ${t.statusText}`);let a=t.headers.get("Content-Type");if(!T(a)){console.error(`[dphelper] SSE: Invalid Content-Type "${a}". Expected text/event-stream.`),p.abort(),l("error",new Error(`Invalid Content-Type: ${a}`));return}l("open",{status:t.status});let i=t.body?.getReader(),m=new TextDecoder;if(!i)return;let c="";for(;;){let{done:v,value:g}=await i.read();if(v)break;c+=m.decode(g,{stream:!0});let d=c.split(`
1
+ 'use strict';var b={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var h={version:"4.6.1"};Object.defineProperty(globalThis,"dphelper",{value:new Proxy({},{}),writable:true,configurable:true,enumerable:false});Object.defineProperties(dphelper,{_list:{value:{scripts:[],sockets:[],...b},configurable:true,writable:true},version:{value:h.version,configurable:true,writable:true},isServer:{value:false,configurable:true,writable:true},isBrowser:{value:true,configurable:true,writable:true}});var s=dphelper;Object.defineProperty(s,"setProps",{value:(e,r,o)=>{Object.defineProperty(e,r.name,o||{writable:false,configurable:false,enumerable:false}),o?.lock&&Object.freeze(e[r.name]);},writable:false,configurable:false,enumerable:false});Object.defineProperty(s,"setDescription",{value:(e,r)=>{Object.defineProperties(s,{[e.name]:{value:r,writable:false,configurable:false,enumerable:false}}),Object.keys(r).map(o=>(Object.defineProperties(s[e.name],{[o]:{writable:false,configurable:false,enumerable:false}}),null)),s.setProps(s,e,{writable:false,configurable:false,enumerable:false}),s._list.scripts.push(e);}});var P={name:"sse",active:true,subCommand:[{name:"open",version:"0.0.2",example:"dphelper.sse.open('/api/stream', { method: 'POST', body: ... })",author:"Dario Passariello",creationDate:"20260221",lastMod:"20260513",type:"function",active:true,description:"Advanced Server-Sent Events client with POST and Custom Headers support. HTTPS required. Validates Content-Type before processing.",env:"client",subCommand:[]}]},S=e=>{try{let r=new URL(e);return r.protocol!=="https:"&&r.protocol!=="http:"?(console.error("[dphelper] Only HTTP/HTTPS protocols allowed for SSE"),!1):!0}catch{return true}},T=e=>e?e.includes("text/event-stream")||e.includes("text/plain"):false,j={open:(e,r={})=>{if(!S(e))return {on:()=>{},close:()=>{}};let o={message:[],error:[],open:[]},p=new AbortController,l=(t,a)=>{o[t]?.forEach(i=>i(a));};return (async()=>{try{let t=await fetch(e,{...r,signal:p.signal,headers:{Accept:"text/event-stream",...r.headers||{}}});if(!t.ok)throw new Error(`SSE failed: ${t.statusText}`);let a=t.headers.get("Content-Type");if(!T(a)){console.error(`[dphelper] SSE: Invalid Content-Type "${a}". Expected text/event-stream.`),p.abort(),l("error",new Error(`Invalid Content-Type: ${a}`));return}l("open",{status:t.status});let i=t.body?.getReader(),m=new TextDecoder;if(!i)return;let c="";for(;;){let{done:v,value:g}=await i.read();if(v)break;c+=m.decode(g,{stream:!0});let d=c.split(`
2
2
  `);c=d.pop()||"";for(let f of d)if(f.startsWith("data:")){let n=f.replace("data:","").trim();try{(n.includes("[")||n.includes("{"))&&(n=JSON.parse(n));}catch{}l("message",n);}}}catch(t){t.name!=="AbortError"&&l("error",t);}})(),{on:(t,a)=>{o[t]&&o[t].push(a);},close:()=>p.abort()}}};dphelper?.setDescription(P,j);var L=dphelper.sse;exports.sse=L;
package/modules/sse.d.ts CHANGED
@@ -1,12 +1,12 @@
1
1
  /// <reference path="../types/dphelper.d.ts" />
2
- export interface SseTool {
3
- /**
4
- * Opens an SSE connection with support for custom fetch options (POST, Headers, etc).
5
- */
6
- open(url: string, options?: any): {
7
- on(event: "message" | "error" | "open", cb: (data: any) => void): void
8
- close(): void
9
- }
2
+ export interface SseTool {
3
+ /**
4
+ * Opens an SSE connection with support for custom fetch options (POST, Headers, etc).
5
+ */
6
+ open(url: string, options?: any): {
7
+ on(event: "message" | "error" | "open", cb: (data: any) => void): void
8
+ close(): void
9
+ }
10
10
  }
11
11
 
12
12
  export const sse: SseTool
package/modules/sse.js CHANGED
@@ -1,2 +1,2 @@
1
- var h={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var m={version:"4.6.0"};Object.defineProperty(globalThis,"dphelper",{value:new Proxy({},{}),writable:true,configurable:true,enumerable:false});Object.defineProperties(dphelper,{_list:{value:{scripts:[],sockets:[],...h},configurable:true,writable:true},version:{value:m.version,configurable:true,writable:true},isServer:{value:false,configurable:true,writable:true},isBrowser:{value:true,configurable:true,writable:true}});var s=dphelper;Object.defineProperty(s,"setProps",{value:(e,r,o)=>{Object.defineProperty(e,r.name,o||{writable:false,configurable:false,enumerable:false}),o?.lock&&Object.freeze(e[r.name]);},writable:false,configurable:false,enumerable:false});Object.defineProperty(s,"setDescription",{value:(e,r)=>{Object.defineProperties(s,{[e.name]:{value:r,writable:false,configurable:false,enumerable:false}}),Object.keys(r).map(o=>(Object.defineProperties(s[e.name],{[o]:{writable:false,configurable:false,enumerable:false}}),null)),s.setProps(s,e,{writable:false,configurable:false,enumerable:false}),s._list.scripts.push(e);}});var S={name:"sse",active:true,subCommand:[{name:"open",version:"0.0.2",example:"dphelper.sse.open('/api/stream', { method: 'POST', body: ... })",author:"Dario Passariello",creationDate:"20260221",lastMod:"20260513",type:"function",active:true,description:"Advanced Server-Sent Events client with POST and Custom Headers support. HTTPS required. Validates Content-Type before processing.",env:"client",subCommand:[]}]},T=e=>{try{let r=new URL(e);return r.protocol!=="https:"&&r.protocol!=="http:"?(console.error("[dphelper] Only HTTP/HTTPS protocols allowed for SSE"),!1):!0}catch{return true}},j=e=>e?e.includes("text/event-stream")||e.includes("text/plain"):false,O={open:(e,r={})=>{if(!T(e))return {on:()=>{},close:()=>{}};let o={message:[],error:[],open:[]},p=new AbortController,l=(t,a)=>{o[t]?.forEach(i=>i(a));};return (async()=>{try{let t=await fetch(e,{...r,signal:p.signal,headers:{Accept:"text/event-stream",...r.headers||{}}});if(!t.ok)throw new Error(`SSE failed: ${t.statusText}`);let a=t.headers.get("Content-Type");if(!j(a)){console.error(`[dphelper] SSE: Invalid Content-Type "${a}". Expected text/event-stream.`),p.abort(),l("error",new Error(`Invalid Content-Type: ${a}`));return}l("open",{status:t.status});let i=t.body?.getReader(),v=new TextDecoder;if(!i)return;let c="";for(;;){let{done:g,value:w}=await i.read();if(g)break;c+=v.decode(w,{stream:!0});let f=c.split(`
1
+ var h={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var m={version:"4.6.1"};Object.defineProperty(globalThis,"dphelper",{value:new Proxy({},{}),writable:true,configurable:true,enumerable:false});Object.defineProperties(dphelper,{_list:{value:{scripts:[],sockets:[],...h},configurable:true,writable:true},version:{value:m.version,configurable:true,writable:true},isServer:{value:false,configurable:true,writable:true},isBrowser:{value:true,configurable:true,writable:true}});var s=dphelper;Object.defineProperty(s,"setProps",{value:(e,r,o)=>{Object.defineProperty(e,r.name,o||{writable:false,configurable:false,enumerable:false}),o?.lock&&Object.freeze(e[r.name]);},writable:false,configurable:false,enumerable:false});Object.defineProperty(s,"setDescription",{value:(e,r)=>{Object.defineProperties(s,{[e.name]:{value:r,writable:false,configurable:false,enumerable:false}}),Object.keys(r).map(o=>(Object.defineProperties(s[e.name],{[o]:{writable:false,configurable:false,enumerable:false}}),null)),s.setProps(s,e,{writable:false,configurable:false,enumerable:false}),s._list.scripts.push(e);}});var S={name:"sse",active:true,subCommand:[{name:"open",version:"0.0.2",example:"dphelper.sse.open('/api/stream', { method: 'POST', body: ... })",author:"Dario Passariello",creationDate:"20260221",lastMod:"20260513",type:"function",active:true,description:"Advanced Server-Sent Events client with POST and Custom Headers support. HTTPS required. Validates Content-Type before processing.",env:"client",subCommand:[]}]},T=e=>{try{let r=new URL(e);return r.protocol!=="https:"&&r.protocol!=="http:"?(console.error("[dphelper] Only HTTP/HTTPS protocols allowed for SSE"),!1):!0}catch{return true}},j=e=>e?e.includes("text/event-stream")||e.includes("text/plain"):false,O={open:(e,r={})=>{if(!T(e))return {on:()=>{},close:()=>{}};let o={message:[],error:[],open:[]},p=new AbortController,l=(t,a)=>{o[t]?.forEach(i=>i(a));};return (async()=>{try{let t=await fetch(e,{...r,signal:p.signal,headers:{Accept:"text/event-stream",...r.headers||{}}});if(!t.ok)throw new Error(`SSE failed: ${t.statusText}`);let a=t.headers.get("Content-Type");if(!j(a)){console.error(`[dphelper] SSE: Invalid Content-Type "${a}". Expected text/event-stream.`),p.abort(),l("error",new Error(`Invalid Content-Type: ${a}`));return}l("open",{status:t.status});let i=t.body?.getReader(),v=new TextDecoder;if(!i)return;let c="";for(;;){let{done:g,value:w}=await i.read();if(g)break;c+=v.decode(w,{stream:!0});let f=c.split(`
2
2
  `);c=f.pop()||"";for(let b of f)if(b.startsWith("data:")){let n=b.replace("data:","").trim();try{(n.includes("[")||n.includes("{"))&&(n=JSON.parse(n));}catch{}l("message",n);}}}catch(t){t.name!=="AbortError"&&l("error",t);}})(),{on:(t,a)=>{o[t]&&o[t].push(a);},close:()=>p.abort()}}};dphelper?.setDescription(S,O);var N=dphelper.sse;export{N as sse};
package/modules/svg.cjs CHANGED
@@ -1,2 +1,2 @@
1
- 'use strict';var E={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var w={version:"4.6.0"};Object.defineProperty(globalThis,"dphelper",{value:new Proxy({},{}),writable:true,configurable:true,enumerable:false});Object.defineProperties(dphelper,{_list:{value:{scripts:[],sockets:[],...E},configurable:true,writable:true},version:{value:w.version,configurable:true,writable:true},isServer:{value:false,configurable:true,writable:true},isBrowser:{value:true,configurable:true,writable:true}});var h=dphelper;Object.defineProperty(h,"setProps",{value:(t,e,n)=>{Object.defineProperty(t,e.name,n||{writable:false,configurable:false,enumerable:false}),n?.lock&&Object.freeze(t[e.name]);},writable:false,configurable:false,enumerable:false});Object.defineProperty(h,"setDescription",{value:(t,e)=>{Object.defineProperties(h,{[t.name]:{value:e,writable:false,configurable:false,enumerable:false}}),Object.keys(e).map(n=>(Object.defineProperties(h[t.name],{[n]:{writable:false,configurable:false,enumerable:false}}),null)),h.setProps(h,t,{writable:false,configurable:false,enumerable:false}),h._list.scripts.push(t);}});var A={name:"svg",active:true,subCommand:[{name:"init",version:"0.0.2",example:"dphelper.svg.init(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Initializes an SVG connection between two elements.",env:"client",subCommand:[]},{name:"check",version:"0.0.2",example:"dphelper.svg.check(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Checks if SVG support is available.",env:"client",subCommand:[]},{name:"update",version:"0.0.2",example:"dphelper.svg.update(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Updates the SVG connection between two elements.",env:"client",subCommand:[]},{name:"getCurve",version:"0.0.2",example:"dphelper.svg.getCurve(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Calculates the curve of the connection between two points.",env:"client",subCommand:[]},{name:"getIntersection",version:"0.0.2",example:"dphelper.svg.getIntersection(...) ",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Calculates the intersection point between two elements.",env:"client",subCommand:[]},{name:"setConnector",version:"0.0.2",example:"dphelper.svg.setConnector(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Sets a connector on an element.",env:"client",subCommand:[]},{name:"removeConnection",version:"0.0.2",example:"dphelper.svg.removeConnection(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Removes an SVG connection from a container.",env:"client",subCommand:[]},{name:"makeScrollable",version:"0.0.2",example:"dphelper.svg.makeScrollable(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Makes an SVG container scrollable.",env:"client",subCommand:[]},{name:"makeDraggable",version:"0.0.2",example:"dphelper.svg.makeDraggable(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Makes an SVG element draggable.",env:"client",subCommand:[]},{name:"toggle",version:"0.0.2",example:"dphelper.svg.toggle(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Toggles an SVG connection on or off.",env:"client",subCommand:[]},{name:"convert",version:"0.0.2",example:"dphelper.svg.convert([Object])",author:"Dario Passariello",creationDate:"20190101",lastMod:"20240401",type:"function",active:true,description:"Converts an element to SVG.",env:"client",subCommand:[]}]},L={init:(t,e,n,r)=>{t.querySelector("svg")&&dphelper.svg.removeConnection(t),e=[dphelper.svg.setConnector(e[0],e[1]),e[1]],n=[dphelper.svg.setConnector(n[0],n[1]),n[1]];let l=t.getBoundingClientRect(),o="http://www.w3.org/2000/svg",m=t.offsetWidth*10,c=t.offsetHeight*10,s=document.createElementNS(o,"svg"),p=`conn_${Math.random().toString(36).substring(2,9)}`;s.setAttribute("xmlns",o),s.dataset.dphelper="svg-connection",s.setAttributeNS(null,"viewBox","0 0 "+m+" "+c),s.setAttributeNS(null,"width",String(m)),s.setAttributeNS(null,"height",String(c)),s.style.display="block";let a=document.createElementNS(o,"rect"),i=e[0].getBoundingClientRect();a.setAttributeNS(null,"x",String(i.left-l.left)),a.setAttributeNS(null,"y",String(i.top-l.top)),a.setAttributeNS(null,"width",String(i.width)),a.setAttributeNS(null,"height",String(i.height)),s.appendChild(a);let u=document.createElementNS(o,"rect");i=n[0].getBoundingClientRect(),u.setAttributeNS(null,"x",String(i.left-l.left)),u.setAttributeNS(null,"y",String(i.top-l.top)),u.setAttributeNS(null,"width",String(i.width)),u.setAttributeNS(null,"height",String(i.height)),s.appendChild(u);let d=document.createElementNS(o,"path");d.setAttributeNS(null,"id",p),d.setAttributeNS(null,"marker-end","url(#head)"),s.appendChild(d),t.appendChild(s),dphelper.svg.update(a,u,d),typeof r=="function"&&r(e,n);},check:()=>!!(document.createElementNS&&document.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect),update:(t,e,n)=>{let r=Number.parseFloat(t.getAttribute("x")||"0"),l=Number.parseFloat(t.getAttribute("y")||"0"),o=Number.parseFloat(e.getAttribute("x")||"0"),m=Number.parseFloat(e.getAttribute("y")||"0"),c=Number.parseFloat(t.getAttribute("width")||"0")/2,s=Number.parseFloat(t.getAttribute("height")||"0")/2,p=Number.parseFloat(e.getAttribute("width")||"0")/2,a=Number.parseFloat(e.getAttribute("height")||"0")/2,i=r+c,u=l+s,d=o+p,v=m+a,g=d-i,f=v-u,b=dphelper.svg.getIntersection(g,f,i,u,c,s),S=dphelper.svg.getIntersection(-g,-f,d,v,p,a),C=S[0]-b[0],M=dphelper.svg.getCurve(b,S,C);n.setAttributeNS(null,"d","M"+i+","+u+M+d+","+v);},getCurve:(t,e,n)=>{let r=n/2;return " C"+(r+t[0])+","+t[1]+" "+(e[0]-r)+","+e[1]+" "},getIntersection:(t,e,n,r,l,o)=>Math.abs(e/t)<o/l?[n+(t>0?l:-l),r+e*l/Math.abs(t)]:[n+t*o/Math.abs(e),r+(e>0?o:-o)],setConnector:(t,e)=>{let n,r=document.createElement("span");switch(t.style.position="relative",r.style.position="absolute",r.style.width="5px",r.style.height="5px",e){case "top":n={left:"50%",top:"2.5px",marginLeft:"2.5px"};break;case "right":n={top:"50%",right:"2.5px",marginTop:"-2.5px"};break;case "bottom":n={left:"50%",bottom:"-2.5px",marginLeft:"2.5px"};break;case "left":n={top:"50%",left:"-2.5px",marginTop:"-2.5px"};break;default:n={};}return Object.assign(r.style,n),t.appendChild(r),r},removeConnection:t=>{t.querySelectorAll("svg[data-dphelper='svg-connection']").forEach(n=>n.remove());},makeScrollable:(t,e,n,r,l,o)=>{let m=t.getBoundingClientRect(),c=[n,r],s=c.length,p=[l,o],a=[];for(let g=0;g<s;g++){let f=c[g],b=p[g];!f||!b||(a[g]=f.getBoundingClientRect(),b.setAttributeNS(null,"x",String(a[g].left-m.left)),b.setAttributeNS(null,"y",String(a[g].top-m.top)),b.setAttributeNS(null,"width",String(a[g].width)),b.setAttributeNS(null,"height",String(a[g].height)));}let i=t.querySelectorAll("rect"),u=i[0],d=i[1],v=document.getElementById("connection");u&&d&&v&&dphelper.svg.update(u,d,v);},makeDraggable:t=>{let e=t.target;function n(p){let a=e.getScreenCTM();return a?{x:(p.clientX-a.e)/a.a,y:(p.clientY-a.f)/a.d}:{x:0,y:0}}let r=null,l=null,o=p=>{if(r&&l){let a=n(p);r.setAttributeNS(null,"x",String(a.x-l.x)),r.setAttributeNS(null,"y",String(a.y-l.y));let i=document.getElementById("connection");i&&dphelper.svg.update(r,r,i);}},m=()=>{document.removeEventListener("mousemove",o),document.removeEventListener("mouseup",m),r=null,l=null;},c=p=>{p.target.classList.contains("draggable")&&(r=p.target,l=n(p),l.x-=Number.parseFloat(r.getAttributeNS(null,"x")||"0"),l.y-=Number.parseFloat(r.getAttributeNS(null,"y")||"0"),document.addEventListener("mousemove",o),document.addEventListener("mouseup",m));};e.addEventListener("mousedown",c),e.__dphelper_cleanup=()=>{e.removeEventListener("mousedown",c),document.removeEventListener("mousemove",o),document.removeEventListener("mouseup",m);};let s=new MutationObserver(()=>{document.contains(e)||(e.__dphelper_cleanup&&e.__dphelper_cleanup(),s.disconnect());});s.observe(document.body,{childList:true,subtree:true});},toggle:(t,e,n,r)=>{let l=t.target;if(l.checked&&n&&r){dphelper.cookie.set({name:`${l.id}`,value:1,time:365});let o=()=>{dphelper.svg.makeScrollable(e,document.getElementById("parts-left-body"),n,r,document.querySelector("#parts svg rect"),document.querySelectorAll("#parts svg rect")[1]);};dphelper.svg.init(e,[n,"right"],[r,"left"],(m,c)=>{let s=document.getElementById("parts-left-body");s&&(s.addEventListener("scroll",o),s.__dphelper_scrollHandler=o);});}else {dphelper.svg.removeConnection(e);let o=document.getElementById("parts-left-body");o&&o.__dphelper_scrollHandler&&(o.removeEventListener("scroll",o.__dphelper_scrollHandler),delete o.__dphelper_scrollHandler),o&&o.replaceWith(o.cloneNode(true)),dphelper.cookie.set({name:`${l.id}`,value:0,time:365});}},convert:({children:t,active:e=true,size:n=[1920,1080],fit:r=["100%","100%"],preserveAspectRatio:l="none",style:o=`width:${r[0]}; height:${r[1]}`,zoom:m=1})=>{if(!t)return "Please pass ID of element for SVG conversion";if(e){let c=d=>d.replace(/[<>"'&]/g,""),s=document.querySelector(t);if(!s)return "Element not found";let p=s.cloneNode(true),a="http://www.w3.org/2000/svg",i=document.createElementNS(a,"svg");i.setAttribute("viewBox",`0 0 ${c(String(n[0]))} ${c(String(n[1]))}`),i.setAttribute("preserveAspectRatio",c(l)),i.setAttribute("xmlns",a),i.setAttribute("style",c(o)+"; zoom:"+c(String(m)));let u=document.createElementNS(a,"foreignObject");u.setAttribute("x","0"),u.setAttribute("y","0"),u.setAttribute("width",c(String(r[0]))),u.setAttribute("height",c(String(r[1]))),u.setAttribute("style",c(o)+"; zoom:"+c(String(m))),u.appendChild(p),i.appendChild(u),s.innerHTML="",s.appendChild(i);}}};dphelper?.setDescription(A,L);typeof document<"u"&&dphelper?.svg?.check();var V=dphelper.svg;
1
+ 'use strict';var E={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var w={version:"4.6.1"};Object.defineProperty(globalThis,"dphelper",{value:new Proxy({},{}),writable:true,configurable:true,enumerable:false});Object.defineProperties(dphelper,{_list:{value:{scripts:[],sockets:[],...E},configurable:true,writable:true},version:{value:w.version,configurable:true,writable:true},isServer:{value:false,configurable:true,writable:true},isBrowser:{value:true,configurable:true,writable:true}});var h=dphelper;Object.defineProperty(h,"setProps",{value:(t,e,n)=>{Object.defineProperty(t,e.name,n||{writable:false,configurable:false,enumerable:false}),n?.lock&&Object.freeze(t[e.name]);},writable:false,configurable:false,enumerable:false});Object.defineProperty(h,"setDescription",{value:(t,e)=>{Object.defineProperties(h,{[t.name]:{value:e,writable:false,configurable:false,enumerable:false}}),Object.keys(e).map(n=>(Object.defineProperties(h[t.name],{[n]:{writable:false,configurable:false,enumerable:false}}),null)),h.setProps(h,t,{writable:false,configurable:false,enumerable:false}),h._list.scripts.push(t);}});var A={name:"svg",active:true,subCommand:[{name:"init",version:"0.0.2",example:"dphelper.svg.init(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Initializes an SVG connection between two elements.",env:"client",subCommand:[]},{name:"check",version:"0.0.2",example:"dphelper.svg.check(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Checks if SVG support is available.",env:"client",subCommand:[]},{name:"update",version:"0.0.2",example:"dphelper.svg.update(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Updates the SVG connection between two elements.",env:"client",subCommand:[]},{name:"getCurve",version:"0.0.2",example:"dphelper.svg.getCurve(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Calculates the curve of the connection between two points.",env:"client",subCommand:[]},{name:"getIntersection",version:"0.0.2",example:"dphelper.svg.getIntersection(...) ",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Calculates the intersection point between two elements.",env:"client",subCommand:[]},{name:"setConnector",version:"0.0.2",example:"dphelper.svg.setConnector(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Sets a connector on an element.",env:"client",subCommand:[]},{name:"removeConnection",version:"0.0.2",example:"dphelper.svg.removeConnection(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Removes an SVG connection from a container.",env:"client",subCommand:[]},{name:"makeScrollable",version:"0.0.2",example:"dphelper.svg.makeScrollable(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Makes an SVG container scrollable.",env:"client",subCommand:[]},{name:"makeDraggable",version:"0.0.2",example:"dphelper.svg.makeDraggable(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Makes an SVG element draggable.",env:"client",subCommand:[]},{name:"toggle",version:"0.0.2",example:"dphelper.svg.toggle(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Toggles an SVG connection on or off.",env:"client",subCommand:[]},{name:"convert",version:"0.0.2",example:"dphelper.svg.convert([Object])",author:"Dario Passariello",creationDate:"20190101",lastMod:"20240401",type:"function",active:true,description:"Converts an element to SVG.",env:"client",subCommand:[]}]},L={init:(t,e,n,r)=>{t.querySelector("svg")&&dphelper.svg.removeConnection(t),e=[dphelper.svg.setConnector(e[0],e[1]),e[1]],n=[dphelper.svg.setConnector(n[0],n[1]),n[1]];let l=t.getBoundingClientRect(),o="http://www.w3.org/2000/svg",m=t.offsetWidth*10,c=t.offsetHeight*10,s=document.createElementNS(o,"svg"),p=`conn_${Math.random().toString(36).substring(2,9)}`;s.setAttribute("xmlns",o),s.dataset.dphelper="svg-connection",s.setAttributeNS(null,"viewBox","0 0 "+m+" "+c),s.setAttributeNS(null,"width",String(m)),s.setAttributeNS(null,"height",String(c)),s.style.display="block";let a=document.createElementNS(o,"rect"),i=e[0].getBoundingClientRect();a.setAttributeNS(null,"x",String(i.left-l.left)),a.setAttributeNS(null,"y",String(i.top-l.top)),a.setAttributeNS(null,"width",String(i.width)),a.setAttributeNS(null,"height",String(i.height)),s.appendChild(a);let u=document.createElementNS(o,"rect");i=n[0].getBoundingClientRect(),u.setAttributeNS(null,"x",String(i.left-l.left)),u.setAttributeNS(null,"y",String(i.top-l.top)),u.setAttributeNS(null,"width",String(i.width)),u.setAttributeNS(null,"height",String(i.height)),s.appendChild(u);let d=document.createElementNS(o,"path");d.setAttributeNS(null,"id",p),d.setAttributeNS(null,"marker-end","url(#head)"),s.appendChild(d),t.appendChild(s),dphelper.svg.update(a,u,d),typeof r=="function"&&r(e,n);},check:()=>!!(document.createElementNS&&document.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect),update:(t,e,n)=>{let r=Number.parseFloat(t.getAttribute("x")||"0"),l=Number.parseFloat(t.getAttribute("y")||"0"),o=Number.parseFloat(e.getAttribute("x")||"0"),m=Number.parseFloat(e.getAttribute("y")||"0"),c=Number.parseFloat(t.getAttribute("width")||"0")/2,s=Number.parseFloat(t.getAttribute("height")||"0")/2,p=Number.parseFloat(e.getAttribute("width")||"0")/2,a=Number.parseFloat(e.getAttribute("height")||"0")/2,i=r+c,u=l+s,d=o+p,v=m+a,g=d-i,f=v-u,b=dphelper.svg.getIntersection(g,f,i,u,c,s),S=dphelper.svg.getIntersection(-g,-f,d,v,p,a),C=S[0]-b[0],M=dphelper.svg.getCurve(b,S,C);n.setAttributeNS(null,"d","M"+i+","+u+M+d+","+v);},getCurve:(t,e,n)=>{let r=n/2;return " C"+(r+t[0])+","+t[1]+" "+(e[0]-r)+","+e[1]+" "},getIntersection:(t,e,n,r,l,o)=>Math.abs(e/t)<o/l?[n+(t>0?l:-l),r+e*l/Math.abs(t)]:[n+t*o/Math.abs(e),r+(e>0?o:-o)],setConnector:(t,e)=>{let n,r=document.createElement("span");switch(t.style.position="relative",r.style.position="absolute",r.style.width="5px",r.style.height="5px",e){case "top":n={left:"50%",top:"2.5px",marginLeft:"2.5px"};break;case "right":n={top:"50%",right:"2.5px",marginTop:"-2.5px"};break;case "bottom":n={left:"50%",bottom:"-2.5px",marginLeft:"2.5px"};break;case "left":n={top:"50%",left:"-2.5px",marginTop:"-2.5px"};break;default:n={};}return Object.assign(r.style,n),t.appendChild(r),r},removeConnection:t=>{t.querySelectorAll("svg[data-dphelper='svg-connection']").forEach(n=>n.remove());},makeScrollable:(t,e,n,r,l,o)=>{let m=t.getBoundingClientRect(),c=[n,r],s=c.length,p=[l,o],a=[];for(let g=0;g<s;g++){let f=c[g],b=p[g];!f||!b||(a[g]=f.getBoundingClientRect(),b.setAttributeNS(null,"x",String(a[g].left-m.left)),b.setAttributeNS(null,"y",String(a[g].top-m.top)),b.setAttributeNS(null,"width",String(a[g].width)),b.setAttributeNS(null,"height",String(a[g].height)));}let i=t.querySelectorAll("rect"),u=i[0],d=i[1],v=document.getElementById("connection");u&&d&&v&&dphelper.svg.update(u,d,v);},makeDraggable:t=>{let e=t.target;function n(p){let a=e.getScreenCTM();return a?{x:(p.clientX-a.e)/a.a,y:(p.clientY-a.f)/a.d}:{x:0,y:0}}let r=null,l=null,o=p=>{if(r&&l){let a=n(p);r.setAttributeNS(null,"x",String(a.x-l.x)),r.setAttributeNS(null,"y",String(a.y-l.y));let i=document.getElementById("connection");i&&dphelper.svg.update(r,r,i);}},m=()=>{document.removeEventListener("mousemove",o),document.removeEventListener("mouseup",m),r=null,l=null;},c=p=>{p.target.classList.contains("draggable")&&(r=p.target,l=n(p),l.x-=Number.parseFloat(r.getAttributeNS(null,"x")||"0"),l.y-=Number.parseFloat(r.getAttributeNS(null,"y")||"0"),document.addEventListener("mousemove",o),document.addEventListener("mouseup",m));};e.addEventListener("mousedown",c),e.__dphelper_cleanup=()=>{e.removeEventListener("mousedown",c),document.removeEventListener("mousemove",o),document.removeEventListener("mouseup",m);};let s=new MutationObserver(()=>{document.contains(e)||(e.__dphelper_cleanup&&e.__dphelper_cleanup(),s.disconnect());});s.observe(document.body,{childList:true,subtree:true});},toggle:(t,e,n,r)=>{let l=t.target;if(l.checked&&n&&r){dphelper.cookie.set({name:`${l.id}`,value:1,time:365});let o=()=>{dphelper.svg.makeScrollable(e,document.getElementById("parts-left-body"),n,r,document.querySelector("#parts svg rect"),document.querySelectorAll("#parts svg rect")[1]);};dphelper.svg.init(e,[n,"right"],[r,"left"],(m,c)=>{let s=document.getElementById("parts-left-body");s&&(s.addEventListener("scroll",o),s.__dphelper_scrollHandler=o);});}else {dphelper.svg.removeConnection(e);let o=document.getElementById("parts-left-body");o&&o.__dphelper_scrollHandler&&(o.removeEventListener("scroll",o.__dphelper_scrollHandler),delete o.__dphelper_scrollHandler),o&&o.replaceWith(o.cloneNode(true)),dphelper.cookie.set({name:`${l.id}`,value:0,time:365});}},convert:({children:t,active:e=true,size:n=[1920,1080],fit:r=["100%","100%"],preserveAspectRatio:l="none",style:o=`width:${r[0]}; height:${r[1]}`,zoom:m=1})=>{if(!t)return "Please pass ID of element for SVG conversion";if(e){let c=d=>d.replace(/[<>"'&]/g,""),s=document.querySelector(t);if(!s)return "Element not found";let p=s.cloneNode(true),a="http://www.w3.org/2000/svg",i=document.createElementNS(a,"svg");i.setAttribute("viewBox",`0 0 ${c(String(n[0]))} ${c(String(n[1]))}`),i.setAttribute("preserveAspectRatio",c(l)),i.setAttribute("xmlns",a),i.setAttribute("style",c(o)+"; zoom:"+c(String(m)));let u=document.createElementNS(a,"foreignObject");u.setAttribute("x","0"),u.setAttribute("y","0"),u.setAttribute("width",c(String(r[0]))),u.setAttribute("height",c(String(r[1]))),u.setAttribute("style",c(o)+"; zoom:"+c(String(m))),u.appendChild(p),i.appendChild(u),s.innerHTML="",s.appendChild(i);}}};dphelper?.setDescription(A,L);typeof document<"u"&&dphelper?.svg?.check();var V=dphelper.svg;
2
2
  exports.svg=V;
package/modules/svg.d.ts CHANGED
@@ -1,16 +1,16 @@
1
1
  /// <reference path="../types/dphelper.d.ts" />
2
- export interface SvgTool {
3
- init: (container: HTMLElement, source1: [HTMLElement, string], source2: [HTMLElement, string], cb?: Function) => void
4
- check: () => boolean
5
- update: (rect1: HTMLElement, rect2: HTMLElement, cxn: HTMLElement) => void
6
- getCurve: (p1: [number, number], p2: [number, number], dx: number) => string
7
- getIntersection: (dx: number, dy: number, cx: number, cy: number, w: number, h: number) => [number, number]
8
- setConnector: (source: HTMLElement, side: string) => HTMLElement
9
- removeConnection: (container: HTMLElement) => void
10
- makeScrollable: (svgContainer: HTMLElement, scrollContainer: HTMLElement, elm1: HTMLElement, elm2: HTMLElement, rect1: HTMLElement, rect2: HTMLElement) => void
11
- makeDraggable: (evt: Event) => void
12
- toggle: (evt: Event, container: HTMLElement, source1: HTMLElement, source2: HTMLElement) => void
13
- convert: (options: any) => string | void
2
+ export interface SvgTool {
3
+ init: (container: HTMLElement, source1: [HTMLElement, string], source2: [HTMLElement, string], cb?: Function) => void
4
+ check: () => boolean
5
+ update: (rect1: HTMLElement, rect2: HTMLElement, cxn: HTMLElement) => void
6
+ getCurve: (p1: [number, number], p2: [number, number], dx: number) => string
7
+ getIntersection: (dx: number, dy: number, cx: number, cy: number, w: number, h: number) => [number, number]
8
+ setConnector: (source: HTMLElement, side: string) => HTMLElement
9
+ removeConnection: (container: HTMLElement) => void
10
+ makeScrollable: (svgContainer: HTMLElement, scrollContainer: HTMLElement, elm1: HTMLElement, elm2: HTMLElement, rect1: HTMLElement, rect2: HTMLElement) => void
11
+ makeDraggable: (evt: Event) => void
12
+ toggle: (evt: Event, container: HTMLElement, source1: HTMLElement, source2: HTMLElement) => void
13
+ convert: (options: any) => string | void
14
14
  }
15
15
 
16
16
  export const svg: SvgTool
package/modules/svg.js CHANGED
@@ -1,2 +1,2 @@
1
- var w={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var C={version:"4.6.0"};Object.defineProperty(globalThis,"dphelper",{value:new Proxy({},{}),writable:true,configurable:true,enumerable:false});Object.defineProperties(dphelper,{_list:{value:{scripts:[],sockets:[],...w},configurable:true,writable:true},version:{value:C.version,configurable:true,writable:true},isServer:{value:false,configurable:true,writable:true},isBrowser:{value:true,configurable:true,writable:true}});var h=dphelper;Object.defineProperty(h,"setProps",{value:(t,e,n)=>{Object.defineProperty(t,e.name,n||{writable:false,configurable:false,enumerable:false}),n?.lock&&Object.freeze(t[e.name]);},writable:false,configurable:false,enumerable:false});Object.defineProperty(h,"setDescription",{value:(t,e)=>{Object.defineProperties(h,{[t.name]:{value:e,writable:false,configurable:false,enumerable:false}}),Object.keys(e).map(n=>(Object.defineProperties(h[t.name],{[n]:{writable:false,configurable:false,enumerable:false}}),null)),h.setProps(h,t,{writable:false,configurable:false,enumerable:false}),h._list.scripts.push(t);}});var L={name:"svg",active:true,subCommand:[{name:"init",version:"0.0.2",example:"dphelper.svg.init(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Initializes an SVG connection between two elements.",env:"client",subCommand:[]},{name:"check",version:"0.0.2",example:"dphelper.svg.check(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Checks if SVG support is available.",env:"client",subCommand:[]},{name:"update",version:"0.0.2",example:"dphelper.svg.update(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Updates the SVG connection between two elements.",env:"client",subCommand:[]},{name:"getCurve",version:"0.0.2",example:"dphelper.svg.getCurve(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Calculates the curve of the connection between two points.",env:"client",subCommand:[]},{name:"getIntersection",version:"0.0.2",example:"dphelper.svg.getIntersection(...) ",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Calculates the intersection point between two elements.",env:"client",subCommand:[]},{name:"setConnector",version:"0.0.2",example:"dphelper.svg.setConnector(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Sets a connector on an element.",env:"client",subCommand:[]},{name:"removeConnection",version:"0.0.2",example:"dphelper.svg.removeConnection(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Removes an SVG connection from a container.",env:"client",subCommand:[]},{name:"makeScrollable",version:"0.0.2",example:"dphelper.svg.makeScrollable(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Makes an SVG container scrollable.",env:"client",subCommand:[]},{name:"makeDraggable",version:"0.0.2",example:"dphelper.svg.makeDraggable(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Makes an SVG element draggable.",env:"client",subCommand:[]},{name:"toggle",version:"0.0.2",example:"dphelper.svg.toggle(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Toggles an SVG connection on or off.",env:"client",subCommand:[]},{name:"convert",version:"0.0.2",example:"dphelper.svg.convert([Object])",author:"Dario Passariello",creationDate:"20190101",lastMod:"20240401",type:"function",active:true,description:"Converts an element to SVG.",env:"client",subCommand:[]}]},D={init:(t,e,n,r)=>{t.querySelector("svg")&&dphelper.svg.removeConnection(t),e=[dphelper.svg.setConnector(e[0],e[1]),e[1]],n=[dphelper.svg.setConnector(n[0],n[1]),n[1]];let l=t.getBoundingClientRect(),o="http://www.w3.org/2000/svg",m=t.offsetWidth*10,c=t.offsetHeight*10,s=document.createElementNS(o,"svg"),p=`conn_${Math.random().toString(36).substring(2,9)}`;s.setAttribute("xmlns",o),s.dataset.dphelper="svg-connection",s.setAttributeNS(null,"viewBox","0 0 "+m+" "+c),s.setAttributeNS(null,"width",String(m)),s.setAttributeNS(null,"height",String(c)),s.style.display="block";let a=document.createElementNS(o,"rect"),i=e[0].getBoundingClientRect();a.setAttributeNS(null,"x",String(i.left-l.left)),a.setAttributeNS(null,"y",String(i.top-l.top)),a.setAttributeNS(null,"width",String(i.width)),a.setAttributeNS(null,"height",String(i.height)),s.appendChild(a);let u=document.createElementNS(o,"rect");i=n[0].getBoundingClientRect(),u.setAttributeNS(null,"x",String(i.left-l.left)),u.setAttributeNS(null,"y",String(i.top-l.top)),u.setAttributeNS(null,"width",String(i.width)),u.setAttributeNS(null,"height",String(i.height)),s.appendChild(u);let d=document.createElementNS(o,"path");d.setAttributeNS(null,"id",p),d.setAttributeNS(null,"marker-end","url(#head)"),s.appendChild(d),t.appendChild(s),dphelper.svg.update(a,u,d),typeof r=="function"&&r(e,n);},check:()=>!!(document.createElementNS&&document.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect),update:(t,e,n)=>{let r=Number.parseFloat(t.getAttribute("x")||"0"),l=Number.parseFloat(t.getAttribute("y")||"0"),o=Number.parseFloat(e.getAttribute("x")||"0"),m=Number.parseFloat(e.getAttribute("y")||"0"),c=Number.parseFloat(t.getAttribute("width")||"0")/2,s=Number.parseFloat(t.getAttribute("height")||"0")/2,p=Number.parseFloat(e.getAttribute("width")||"0")/2,a=Number.parseFloat(e.getAttribute("height")||"0")/2,i=r+c,u=l+s,d=o+p,v=m+a,g=d-i,f=v-u,b=dphelper.svg.getIntersection(g,f,i,u,c,s),E=dphelper.svg.getIntersection(-g,-f,d,v,p,a),M=E[0]-b[0],x=dphelper.svg.getCurve(b,E,M);n.setAttributeNS(null,"d","M"+i+","+u+x+d+","+v);},getCurve:(t,e,n)=>{let r=n/2;return " C"+(r+t[0])+","+t[1]+" "+(e[0]-r)+","+e[1]+" "},getIntersection:(t,e,n,r,l,o)=>Math.abs(e/t)<o/l?[n+(t>0?l:-l),r+e*l/Math.abs(t)]:[n+t*o/Math.abs(e),r+(e>0?o:-o)],setConnector:(t,e)=>{let n,r=document.createElement("span");switch(t.style.position="relative",r.style.position="absolute",r.style.width="5px",r.style.height="5px",e){case "top":n={left:"50%",top:"2.5px",marginLeft:"2.5px"};break;case "right":n={top:"50%",right:"2.5px",marginTop:"-2.5px"};break;case "bottom":n={left:"50%",bottom:"-2.5px",marginLeft:"2.5px"};break;case "left":n={top:"50%",left:"-2.5px",marginTop:"-2.5px"};break;default:n={};}return Object.assign(r.style,n),t.appendChild(r),r},removeConnection:t=>{t.querySelectorAll("svg[data-dphelper='svg-connection']").forEach(n=>n.remove());},makeScrollable:(t,e,n,r,l,o)=>{let m=t.getBoundingClientRect(),c=[n,r],s=c.length,p=[l,o],a=[];for(let g=0;g<s;g++){let f=c[g],b=p[g];!f||!b||(a[g]=f.getBoundingClientRect(),b.setAttributeNS(null,"x",String(a[g].left-m.left)),b.setAttributeNS(null,"y",String(a[g].top-m.top)),b.setAttributeNS(null,"width",String(a[g].width)),b.setAttributeNS(null,"height",String(a[g].height)));}let i=t.querySelectorAll("rect"),u=i[0],d=i[1],v=document.getElementById("connection");u&&d&&v&&dphelper.svg.update(u,d,v);},makeDraggable:t=>{let e=t.target;function n(p){let a=e.getScreenCTM();return a?{x:(p.clientX-a.e)/a.a,y:(p.clientY-a.f)/a.d}:{x:0,y:0}}let r=null,l=null,o=p=>{if(r&&l){let a=n(p);r.setAttributeNS(null,"x",String(a.x-l.x)),r.setAttributeNS(null,"y",String(a.y-l.y));let i=document.getElementById("connection");i&&dphelper.svg.update(r,r,i);}},m=()=>{document.removeEventListener("mousemove",o),document.removeEventListener("mouseup",m),r=null,l=null;},c=p=>{p.target.classList.contains("draggable")&&(r=p.target,l=n(p),l.x-=Number.parseFloat(r.getAttributeNS(null,"x")||"0"),l.y-=Number.parseFloat(r.getAttributeNS(null,"y")||"0"),document.addEventListener("mousemove",o),document.addEventListener("mouseup",m));};e.addEventListener("mousedown",c),e.__dphelper_cleanup=()=>{e.removeEventListener("mousedown",c),document.removeEventListener("mousemove",o),document.removeEventListener("mouseup",m);};let s=new MutationObserver(()=>{document.contains(e)||(e.__dphelper_cleanup&&e.__dphelper_cleanup(),s.disconnect());});s.observe(document.body,{childList:true,subtree:true});},toggle:(t,e,n,r)=>{let l=t.target;if(l.checked&&n&&r){dphelper.cookie.set({name:`${l.id}`,value:1,time:365});let o=()=>{dphelper.svg.makeScrollable(e,document.getElementById("parts-left-body"),n,r,document.querySelector("#parts svg rect"),document.querySelectorAll("#parts svg rect")[1]);};dphelper.svg.init(e,[n,"right"],[r,"left"],(m,c)=>{let s=document.getElementById("parts-left-body");s&&(s.addEventListener("scroll",o),s.__dphelper_scrollHandler=o);});}else {dphelper.svg.removeConnection(e);let o=document.getElementById("parts-left-body");o&&o.__dphelper_scrollHandler&&(o.removeEventListener("scroll",o.__dphelper_scrollHandler),delete o.__dphelper_scrollHandler),o&&o.replaceWith(o.cloneNode(true)),dphelper.cookie.set({name:`${l.id}`,value:0,time:365});}},convert:({children:t,active:e=true,size:n=[1920,1080],fit:r=["100%","100%"],preserveAspectRatio:l="none",style:o=`width:${r[0]}; height:${r[1]}`,zoom:m=1})=>{if(!t)return "Please pass ID of element for SVG conversion";if(e){let c=d=>d.replace(/[<>"'&]/g,""),s=document.querySelector(t);if(!s)return "Element not found";let p=s.cloneNode(true),a="http://www.w3.org/2000/svg",i=document.createElementNS(a,"svg");i.setAttribute("viewBox",`0 0 ${c(String(n[0]))} ${c(String(n[1]))}`),i.setAttribute("preserveAspectRatio",c(l)),i.setAttribute("xmlns",a),i.setAttribute("style",c(o)+"; zoom:"+c(String(m)));let u=document.createElementNS(a,"foreignObject");u.setAttribute("x","0"),u.setAttribute("y","0"),u.setAttribute("width",c(String(r[0]))),u.setAttribute("height",c(String(r[1]))),u.setAttribute("style",c(o)+"; zoom:"+c(String(m))),u.appendChild(p),i.appendChild(u),s.innerHTML="",s.appendChild(i);}}};dphelper?.setDescription(L,D);typeof document<"u"&&dphelper?.svg?.check();var I=dphelper.svg;
1
+ var w={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var C={version:"4.6.1"};Object.defineProperty(globalThis,"dphelper",{value:new Proxy({},{}),writable:true,configurable:true,enumerable:false});Object.defineProperties(dphelper,{_list:{value:{scripts:[],sockets:[],...w},configurable:true,writable:true},version:{value:C.version,configurable:true,writable:true},isServer:{value:false,configurable:true,writable:true},isBrowser:{value:true,configurable:true,writable:true}});var h=dphelper;Object.defineProperty(h,"setProps",{value:(t,e,n)=>{Object.defineProperty(t,e.name,n||{writable:false,configurable:false,enumerable:false}),n?.lock&&Object.freeze(t[e.name]);},writable:false,configurable:false,enumerable:false});Object.defineProperty(h,"setDescription",{value:(t,e)=>{Object.defineProperties(h,{[t.name]:{value:e,writable:false,configurable:false,enumerable:false}}),Object.keys(e).map(n=>(Object.defineProperties(h[t.name],{[n]:{writable:false,configurable:false,enumerable:false}}),null)),h.setProps(h,t,{writable:false,configurable:false,enumerable:false}),h._list.scripts.push(t);}});var L={name:"svg",active:true,subCommand:[{name:"init",version:"0.0.2",example:"dphelper.svg.init(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Initializes an SVG connection between two elements.",env:"client",subCommand:[]},{name:"check",version:"0.0.2",example:"dphelper.svg.check(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Checks if SVG support is available.",env:"client",subCommand:[]},{name:"update",version:"0.0.2",example:"dphelper.svg.update(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Updates the SVG connection between two elements.",env:"client",subCommand:[]},{name:"getCurve",version:"0.0.2",example:"dphelper.svg.getCurve(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Calculates the curve of the connection between two points.",env:"client",subCommand:[]},{name:"getIntersection",version:"0.0.2",example:"dphelper.svg.getIntersection(...) ",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Calculates the intersection point between two elements.",env:"client",subCommand:[]},{name:"setConnector",version:"0.0.2",example:"dphelper.svg.setConnector(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Sets a connector on an element.",env:"client",subCommand:[]},{name:"removeConnection",version:"0.0.2",example:"dphelper.svg.removeConnection(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Removes an SVG connection from a container.",env:"client",subCommand:[]},{name:"makeScrollable",version:"0.0.2",example:"dphelper.svg.makeScrollable(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Makes an SVG container scrollable.",env:"client",subCommand:[]},{name:"makeDraggable",version:"0.0.2",example:"dphelper.svg.makeDraggable(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Makes an SVG element draggable.",env:"client",subCommand:[]},{name:"toggle",version:"0.0.2",example:"dphelper.svg.toggle(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Toggles an SVG connection on or off.",env:"client",subCommand:[]},{name:"convert",version:"0.0.2",example:"dphelper.svg.convert([Object])",author:"Dario Passariello",creationDate:"20190101",lastMod:"20240401",type:"function",active:true,description:"Converts an element to SVG.",env:"client",subCommand:[]}]},D={init:(t,e,n,r)=>{t.querySelector("svg")&&dphelper.svg.removeConnection(t),e=[dphelper.svg.setConnector(e[0],e[1]),e[1]],n=[dphelper.svg.setConnector(n[0],n[1]),n[1]];let l=t.getBoundingClientRect(),o="http://www.w3.org/2000/svg",m=t.offsetWidth*10,c=t.offsetHeight*10,s=document.createElementNS(o,"svg"),p=`conn_${Math.random().toString(36).substring(2,9)}`;s.setAttribute("xmlns",o),s.dataset.dphelper="svg-connection",s.setAttributeNS(null,"viewBox","0 0 "+m+" "+c),s.setAttributeNS(null,"width",String(m)),s.setAttributeNS(null,"height",String(c)),s.style.display="block";let a=document.createElementNS(o,"rect"),i=e[0].getBoundingClientRect();a.setAttributeNS(null,"x",String(i.left-l.left)),a.setAttributeNS(null,"y",String(i.top-l.top)),a.setAttributeNS(null,"width",String(i.width)),a.setAttributeNS(null,"height",String(i.height)),s.appendChild(a);let u=document.createElementNS(o,"rect");i=n[0].getBoundingClientRect(),u.setAttributeNS(null,"x",String(i.left-l.left)),u.setAttributeNS(null,"y",String(i.top-l.top)),u.setAttributeNS(null,"width",String(i.width)),u.setAttributeNS(null,"height",String(i.height)),s.appendChild(u);let d=document.createElementNS(o,"path");d.setAttributeNS(null,"id",p),d.setAttributeNS(null,"marker-end","url(#head)"),s.appendChild(d),t.appendChild(s),dphelper.svg.update(a,u,d),typeof r=="function"&&r(e,n);},check:()=>!!(document.createElementNS&&document.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect),update:(t,e,n)=>{let r=Number.parseFloat(t.getAttribute("x")||"0"),l=Number.parseFloat(t.getAttribute("y")||"0"),o=Number.parseFloat(e.getAttribute("x")||"0"),m=Number.parseFloat(e.getAttribute("y")||"0"),c=Number.parseFloat(t.getAttribute("width")||"0")/2,s=Number.parseFloat(t.getAttribute("height")||"0")/2,p=Number.parseFloat(e.getAttribute("width")||"0")/2,a=Number.parseFloat(e.getAttribute("height")||"0")/2,i=r+c,u=l+s,d=o+p,v=m+a,g=d-i,f=v-u,b=dphelper.svg.getIntersection(g,f,i,u,c,s),E=dphelper.svg.getIntersection(-g,-f,d,v,p,a),M=E[0]-b[0],x=dphelper.svg.getCurve(b,E,M);n.setAttributeNS(null,"d","M"+i+","+u+x+d+","+v);},getCurve:(t,e,n)=>{let r=n/2;return " C"+(r+t[0])+","+t[1]+" "+(e[0]-r)+","+e[1]+" "},getIntersection:(t,e,n,r,l,o)=>Math.abs(e/t)<o/l?[n+(t>0?l:-l),r+e*l/Math.abs(t)]:[n+t*o/Math.abs(e),r+(e>0?o:-o)],setConnector:(t,e)=>{let n,r=document.createElement("span");switch(t.style.position="relative",r.style.position="absolute",r.style.width="5px",r.style.height="5px",e){case "top":n={left:"50%",top:"2.5px",marginLeft:"2.5px"};break;case "right":n={top:"50%",right:"2.5px",marginTop:"-2.5px"};break;case "bottom":n={left:"50%",bottom:"-2.5px",marginLeft:"2.5px"};break;case "left":n={top:"50%",left:"-2.5px",marginTop:"-2.5px"};break;default:n={};}return Object.assign(r.style,n),t.appendChild(r),r},removeConnection:t=>{t.querySelectorAll("svg[data-dphelper='svg-connection']").forEach(n=>n.remove());},makeScrollable:(t,e,n,r,l,o)=>{let m=t.getBoundingClientRect(),c=[n,r],s=c.length,p=[l,o],a=[];for(let g=0;g<s;g++){let f=c[g],b=p[g];!f||!b||(a[g]=f.getBoundingClientRect(),b.setAttributeNS(null,"x",String(a[g].left-m.left)),b.setAttributeNS(null,"y",String(a[g].top-m.top)),b.setAttributeNS(null,"width",String(a[g].width)),b.setAttributeNS(null,"height",String(a[g].height)));}let i=t.querySelectorAll("rect"),u=i[0],d=i[1],v=document.getElementById("connection");u&&d&&v&&dphelper.svg.update(u,d,v);},makeDraggable:t=>{let e=t.target;function n(p){let a=e.getScreenCTM();return a?{x:(p.clientX-a.e)/a.a,y:(p.clientY-a.f)/a.d}:{x:0,y:0}}let r=null,l=null,o=p=>{if(r&&l){let a=n(p);r.setAttributeNS(null,"x",String(a.x-l.x)),r.setAttributeNS(null,"y",String(a.y-l.y));let i=document.getElementById("connection");i&&dphelper.svg.update(r,r,i);}},m=()=>{document.removeEventListener("mousemove",o),document.removeEventListener("mouseup",m),r=null,l=null;},c=p=>{p.target.classList.contains("draggable")&&(r=p.target,l=n(p),l.x-=Number.parseFloat(r.getAttributeNS(null,"x")||"0"),l.y-=Number.parseFloat(r.getAttributeNS(null,"y")||"0"),document.addEventListener("mousemove",o),document.addEventListener("mouseup",m));};e.addEventListener("mousedown",c),e.__dphelper_cleanup=()=>{e.removeEventListener("mousedown",c),document.removeEventListener("mousemove",o),document.removeEventListener("mouseup",m);};let s=new MutationObserver(()=>{document.contains(e)||(e.__dphelper_cleanup&&e.__dphelper_cleanup(),s.disconnect());});s.observe(document.body,{childList:true,subtree:true});},toggle:(t,e,n,r)=>{let l=t.target;if(l.checked&&n&&r){dphelper.cookie.set({name:`${l.id}`,value:1,time:365});let o=()=>{dphelper.svg.makeScrollable(e,document.getElementById("parts-left-body"),n,r,document.querySelector("#parts svg rect"),document.querySelectorAll("#parts svg rect")[1]);};dphelper.svg.init(e,[n,"right"],[r,"left"],(m,c)=>{let s=document.getElementById("parts-left-body");s&&(s.addEventListener("scroll",o),s.__dphelper_scrollHandler=o);});}else {dphelper.svg.removeConnection(e);let o=document.getElementById("parts-left-body");o&&o.__dphelper_scrollHandler&&(o.removeEventListener("scroll",o.__dphelper_scrollHandler),delete o.__dphelper_scrollHandler),o&&o.replaceWith(o.cloneNode(true)),dphelper.cookie.set({name:`${l.id}`,value:0,time:365});}},convert:({children:t,active:e=true,size:n=[1920,1080],fit:r=["100%","100%"],preserveAspectRatio:l="none",style:o=`width:${r[0]}; height:${r[1]}`,zoom:m=1})=>{if(!t)return "Please pass ID of element for SVG conversion";if(e){let c=d=>d.replace(/[<>"'&]/g,""),s=document.querySelector(t);if(!s)return "Element not found";let p=s.cloneNode(true),a="http://www.w3.org/2000/svg",i=document.createElementNS(a,"svg");i.setAttribute("viewBox",`0 0 ${c(String(n[0]))} ${c(String(n[1]))}`),i.setAttribute("preserveAspectRatio",c(l)),i.setAttribute("xmlns",a),i.setAttribute("style",c(o)+"; zoom:"+c(String(m)));let u=document.createElementNS(a,"foreignObject");u.setAttribute("x","0"),u.setAttribute("y","0"),u.setAttribute("width",c(String(r[0]))),u.setAttribute("height",c(String(r[1]))),u.setAttribute("style",c(o)+"; zoom:"+c(String(m))),u.appendChild(p),i.appendChild(u),s.innerHTML="",s.appendChild(i);}}};dphelper?.setDescription(L,D);typeof document<"u"&&dphelper?.svg?.check();var I=dphelper.svg;
2
2
  export{I as svg};
package/modules/sync.cjs CHANGED
@@ -1 +1 @@
1
- 'use strict';var c={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var p={version:"4.6.0"};Object.defineProperty(globalThis,"dphelper",{value:new Proxy({},{}),writable:true,configurable:true,enumerable:false});Object.defineProperties(dphelper,{_list:{value:{scripts:[],sockets:[],...c},configurable:true,writable:true},version:{value:p.version,configurable:true,writable:true},isServer:{value:false,configurable:true,writable:true},isBrowser:{value:true,configurable:true,writable:true}});var s=dphelper;Object.defineProperty(s,"setProps",{value:(a,r,t)=>{Object.defineProperty(a,r.name,t||{writable:false,configurable:false,enumerable:false}),t?.lock&&Object.freeze(a[r.name]);},writable:false,configurable:false,enumerable:false});Object.defineProperty(s,"setDescription",{value:(a,r)=>{Object.defineProperties(s,{[a.name]:{value:r,writable:false,configurable:false,enumerable:false}}),Object.keys(r).map(t=>(Object.defineProperties(s[a.name],{[t]:{writable:false,configurable:false,enumerable:false}}),null)),s.setProps(s,a,{writable:false,configurable:false,enumerable:false}),s._list.scripts.push(a);}});var m={name:"sync",active:true,subCommand:[{name:"tab",version:"0.0.2",example:"dphelper.sync.tab('my_channel', (data) => console.debug(data))",author:"Dario Passariello & Jo",creationDate:"20260220",lastMod:"20260220",type:"function",active:true,description:"Synchronize data between tabs using BroadcastChannel",env:"client",subCommand:[]},{name:"storageProxy",version:"0.0.2",example:"const proxy = dphelper.sync.storageProxy('user_pref', {theme: 'dark'})",author:"Dario Passariello & Jo",creationDate:"20260220",lastMod:"20260220",type:"function",active:true,description:"Create a Proxy object linked to localStorage for auto-sync",env:"client",subCommand:[]},{name:"pulse",version:"0.0.1",example:"dphelper.sync.pulse('chat', (msg) => ...)",author:"Dario Passariello",creationDate:"20260221",lastMod:"20260221",type:"function",active:true,description:"Low-latency cross-tab event bus with automatic registration.",env:"client",subCommand:[]}]},h={pulse:(a,r)=>{if(typeof BroadcastChannel>"u")return {emit:()=>{},stop:()=>{}};let t=new BroadcastChannel(`pulse_${a}`);return t.onmessage=o=>{if(o.origin===window.location.origin||!o.origin)try{let e=o.data;e&&typeof e=="object"&&!e.__proto__&&!e.constructor&&r(e);}catch(e){console.warn("[dphelper] Invalid message received in pulse:",e);}},{emit:o=>t.postMessage(o),stop:()=>t.close()}},tab:(a,r)=>{if(typeof BroadcastChannel>"u")return {post:()=>{},close:()=>{}};let t=new BroadcastChannel(a);return t.onmessage=o=>{if(o.origin===window.location.origin||!o.origin)try{let e=o.data;e&&typeof e=="object"&&!e.__proto__&&!e.constructor&&r(e);}catch(e){console.warn("[dphelper] Invalid message received in tab:",e);}},{post:o=>t.postMessage(o),close:()=>t.close()}},storageProxy:async(a,r,t)=>{if(typeof localStorage>"u")return r;let o,e=localStorage.getItem(a);if(e)if(t){let n=await dphelper.security.getEncrypted(a,t);o=n?JSON.parse(n):r;}else try{o=JSON.parse(e);}catch{o=r;}else o=r;return new Proxy(o,{set(n,u,d){n[u]=d;let l=JSON.stringify(n);return t?dphelper.security.saveEncrypted(a,l,t):localStorage.setItem(a,l),true}})}};dphelper?.setDescription(m,h);var S=dphelper.sync;exports.sync=S;
1
+ 'use strict';var c={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var p={version:"4.6.1"};Object.defineProperty(globalThis,"dphelper",{value:new Proxy({},{}),writable:true,configurable:true,enumerable:false});Object.defineProperties(dphelper,{_list:{value:{scripts:[],sockets:[],...c},configurable:true,writable:true},version:{value:p.version,configurable:true,writable:true},isServer:{value:false,configurable:true,writable:true},isBrowser:{value:true,configurable:true,writable:true}});var s=dphelper;Object.defineProperty(s,"setProps",{value:(a,r,t)=>{Object.defineProperty(a,r.name,t||{writable:false,configurable:false,enumerable:false}),t?.lock&&Object.freeze(a[r.name]);},writable:false,configurable:false,enumerable:false});Object.defineProperty(s,"setDescription",{value:(a,r)=>{Object.defineProperties(s,{[a.name]:{value:r,writable:false,configurable:false,enumerable:false}}),Object.keys(r).map(t=>(Object.defineProperties(s[a.name],{[t]:{writable:false,configurable:false,enumerable:false}}),null)),s.setProps(s,a,{writable:false,configurable:false,enumerable:false}),s._list.scripts.push(a);}});var m={name:"sync",active:true,subCommand:[{name:"tab",version:"0.0.2",example:"dphelper.sync.tab('my_channel', (data) => console.debug(data))",author:"Dario Passariello & Jo",creationDate:"20260220",lastMod:"20260220",type:"function",active:true,description:"Synchronize data between tabs using BroadcastChannel",env:"client",subCommand:[]},{name:"storageProxy",version:"0.0.2",example:"const proxy = dphelper.sync.storageProxy('user_pref', {theme: 'dark'})",author:"Dario Passariello & Jo",creationDate:"20260220",lastMod:"20260220",type:"function",active:true,description:"Create a Proxy object linked to localStorage for auto-sync",env:"client",subCommand:[]},{name:"pulse",version:"0.0.1",example:"dphelper.sync.pulse('chat', (msg) => ...)",author:"Dario Passariello",creationDate:"20260221",lastMod:"20260221",type:"function",active:true,description:"Low-latency cross-tab event bus with automatic registration.",env:"client",subCommand:[]}]},h={pulse:(a,r)=>{if(typeof BroadcastChannel>"u")return {emit:()=>{},stop:()=>{}};let t=new BroadcastChannel(`pulse_${a}`);return t.onmessage=o=>{if(o.origin===window.location.origin||!o.origin)try{let e=o.data;e&&typeof e=="object"&&!e.__proto__&&!e.constructor&&r(e);}catch(e){console.warn("[dphelper] Invalid message received in pulse:",e);}},{emit:o=>t.postMessage(o),stop:()=>t.close()}},tab:(a,r)=>{if(typeof BroadcastChannel>"u")return {post:()=>{},close:()=>{}};let t=new BroadcastChannel(a);return t.onmessage=o=>{if(o.origin===window.location.origin||!o.origin)try{let e=o.data;e&&typeof e=="object"&&!e.__proto__&&!e.constructor&&r(e);}catch(e){console.warn("[dphelper] Invalid message received in tab:",e);}},{post:o=>t.postMessage(o),close:()=>t.close()}},storageProxy:async(a,r,t)=>{if(typeof localStorage>"u")return r;let o,e=localStorage.getItem(a);if(e)if(t){let n=await dphelper.security.getEncrypted(a,t);o=n?JSON.parse(n):r;}else try{o=JSON.parse(e);}catch{o=r;}else o=r;return new Proxy(o,{set(n,u,d){n[u]=d;let l=JSON.stringify(n);return t?dphelper.security.saveEncrypted(a,l,t):localStorage.setItem(a,l),true}})}};dphelper?.setDescription(m,h);var S=dphelper.sync;exports.sync=S;
package/modules/sync.d.ts CHANGED
@@ -1,17 +1,17 @@
1
1
  /// <reference path="../types/dphelper.d.ts" />
2
- export interface SyncTool {
3
- /**
4
- * Synchronize data between tabs using BroadcastChannel.
5
- */
6
- tab: (channelName: string, callback: (data: any) => void) => { post: (data: any) => void, close: () => void }
7
- /**
8
- * Create a Proxy object linked to localStorage for auto-sync with optional encryption.
9
- */
10
- storageProxy: <T extends object>(key: string, initialValue: T, secret?: string) => Promise<T>
11
- /**
12
- * Low-latency cross-tab event bus.
13
- */
14
- pulse: (channelName: string, callback: (data: any) => void) => { emit: (data: any) => void, stop: () => void }
2
+ export interface SyncTool {
3
+ /**
4
+ * Synchronize data between tabs using BroadcastChannel.
5
+ */
6
+ tab: (channelName: string, callback: (data: any) => void) => { post: (data: any) => void, close: () => void }
7
+ /**
8
+ * Create a Proxy object linked to localStorage for auto-sync with optional encryption.
9
+ */
10
+ storageProxy: <T extends object>(key: string, initialValue: T, secret?: string) => Promise<T>
11
+ /**
12
+ * Low-latency cross-tab event bus.
13
+ */
14
+ pulse: (channelName: string, callback: (data: any) => void) => { emit: (data: any) => void, stop: () => void }
15
15
  }
16
16
 
17
17
  export const sync: SyncTool
package/modules/sync.js CHANGED
@@ -1 +1 @@
1
- var p={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var u={version:"4.6.0"};Object.defineProperty(globalThis,"dphelper",{value:new Proxy({},{}),writable:true,configurable:true,enumerable:false});Object.defineProperties(dphelper,{_list:{value:{scripts:[],sockets:[],...p},configurable:true,writable:true},version:{value:u.version,configurable:true,writable:true},isServer:{value:false,configurable:true,writable:true},isBrowser:{value:true,configurable:true,writable:true}});var s=dphelper;Object.defineProperty(s,"setProps",{value:(a,r,t)=>{Object.defineProperty(a,r.name,t||{writable:false,configurable:false,enumerable:false}),t?.lock&&Object.freeze(a[r.name]);},writable:false,configurable:false,enumerable:false});Object.defineProperty(s,"setDescription",{value:(a,r)=>{Object.defineProperties(s,{[a.name]:{value:r,writable:false,configurable:false,enumerable:false}}),Object.keys(r).map(t=>(Object.defineProperties(s[a.name],{[t]:{writable:false,configurable:false,enumerable:false}}),null)),s.setProps(s,a,{writable:false,configurable:false,enumerable:false}),s._list.scripts.push(a);}});var h={name:"sync",active:true,subCommand:[{name:"tab",version:"0.0.2",example:"dphelper.sync.tab('my_channel', (data) => console.debug(data))",author:"Dario Passariello & Jo",creationDate:"20260220",lastMod:"20260220",type:"function",active:true,description:"Synchronize data between tabs using BroadcastChannel",env:"client",subCommand:[]},{name:"storageProxy",version:"0.0.2",example:"const proxy = dphelper.sync.storageProxy('user_pref', {theme: 'dark'})",author:"Dario Passariello & Jo",creationDate:"20260220",lastMod:"20260220",type:"function",active:true,description:"Create a Proxy object linked to localStorage for auto-sync",env:"client",subCommand:[]},{name:"pulse",version:"0.0.1",example:"dphelper.sync.pulse('chat', (msg) => ...)",author:"Dario Passariello",creationDate:"20260221",lastMod:"20260221",type:"function",active:true,description:"Low-latency cross-tab event bus with automatic registration.",env:"client",subCommand:[]}]},y={pulse:(a,r)=>{if(typeof BroadcastChannel>"u")return {emit:()=>{},stop:()=>{}};let t=new BroadcastChannel(`pulse_${a}`);return t.onmessage=o=>{if(o.origin===window.location.origin||!o.origin)try{let e=o.data;e&&typeof e=="object"&&!e.__proto__&&!e.constructor&&r(e);}catch(e){console.warn("[dphelper] Invalid message received in pulse:",e);}},{emit:o=>t.postMessage(o),stop:()=>t.close()}},tab:(a,r)=>{if(typeof BroadcastChannel>"u")return {post:()=>{},close:()=>{}};let t=new BroadcastChannel(a);return t.onmessage=o=>{if(o.origin===window.location.origin||!o.origin)try{let e=o.data;e&&typeof e=="object"&&!e.__proto__&&!e.constructor&&r(e);}catch(e){console.warn("[dphelper] Invalid message received in tab:",e);}},{post:o=>t.postMessage(o),close:()=>t.close()}},storageProxy:async(a,r,t)=>{if(typeof localStorage>"u")return r;let o,e=localStorage.getItem(a);if(e)if(t){let n=await dphelper.security.getEncrypted(a,t);o=n?JSON.parse(n):r;}else try{o=JSON.parse(e);}catch{o=r;}else o=r;return new Proxy(o,{set(n,d,b){n[d]=b;let c=JSON.stringify(n);return t?dphelper.security.saveEncrypted(a,c,t):localStorage.setItem(a,c),true}})}};dphelper?.setDescription(h,y);var k=dphelper.sync;export{k as sync};
1
+ var p={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var u={version:"4.6.1"};Object.defineProperty(globalThis,"dphelper",{value:new Proxy({},{}),writable:true,configurable:true,enumerable:false});Object.defineProperties(dphelper,{_list:{value:{scripts:[],sockets:[],...p},configurable:true,writable:true},version:{value:u.version,configurable:true,writable:true},isServer:{value:false,configurable:true,writable:true},isBrowser:{value:true,configurable:true,writable:true}});var s=dphelper;Object.defineProperty(s,"setProps",{value:(a,r,t)=>{Object.defineProperty(a,r.name,t||{writable:false,configurable:false,enumerable:false}),t?.lock&&Object.freeze(a[r.name]);},writable:false,configurable:false,enumerable:false});Object.defineProperty(s,"setDescription",{value:(a,r)=>{Object.defineProperties(s,{[a.name]:{value:r,writable:false,configurable:false,enumerable:false}}),Object.keys(r).map(t=>(Object.defineProperties(s[a.name],{[t]:{writable:false,configurable:false,enumerable:false}}),null)),s.setProps(s,a,{writable:false,configurable:false,enumerable:false}),s._list.scripts.push(a);}});var h={name:"sync",active:true,subCommand:[{name:"tab",version:"0.0.2",example:"dphelper.sync.tab('my_channel', (data) => console.debug(data))",author:"Dario Passariello & Jo",creationDate:"20260220",lastMod:"20260220",type:"function",active:true,description:"Synchronize data between tabs using BroadcastChannel",env:"client",subCommand:[]},{name:"storageProxy",version:"0.0.2",example:"const proxy = dphelper.sync.storageProxy('user_pref', {theme: 'dark'})",author:"Dario Passariello & Jo",creationDate:"20260220",lastMod:"20260220",type:"function",active:true,description:"Create a Proxy object linked to localStorage for auto-sync",env:"client",subCommand:[]},{name:"pulse",version:"0.0.1",example:"dphelper.sync.pulse('chat', (msg) => ...)",author:"Dario Passariello",creationDate:"20260221",lastMod:"20260221",type:"function",active:true,description:"Low-latency cross-tab event bus with automatic registration.",env:"client",subCommand:[]}]},y={pulse:(a,r)=>{if(typeof BroadcastChannel>"u")return {emit:()=>{},stop:()=>{}};let t=new BroadcastChannel(`pulse_${a}`);return t.onmessage=o=>{if(o.origin===window.location.origin||!o.origin)try{let e=o.data;e&&typeof e=="object"&&!e.__proto__&&!e.constructor&&r(e);}catch(e){console.warn("[dphelper] Invalid message received in pulse:",e);}},{emit:o=>t.postMessage(o),stop:()=>t.close()}},tab:(a,r)=>{if(typeof BroadcastChannel>"u")return {post:()=>{},close:()=>{}};let t=new BroadcastChannel(a);return t.onmessage=o=>{if(o.origin===window.location.origin||!o.origin)try{let e=o.data;e&&typeof e=="object"&&!e.__proto__&&!e.constructor&&r(e);}catch(e){console.warn("[dphelper] Invalid message received in tab:",e);}},{post:o=>t.postMessage(o),close:()=>t.close()}},storageProxy:async(a,r,t)=>{if(typeof localStorage>"u")return r;let o,e=localStorage.getItem(a);if(e)if(t){let n=await dphelper.security.getEncrypted(a,t);o=n?JSON.parse(n):r;}else try{o=JSON.parse(e);}catch{o=r;}else o=r;return new Proxy(o,{set(n,d,b){n[d]=b;let c=JSON.stringify(n);return t?dphelper.security.saveEncrypted(a,c,t):localStorage.setItem(a,c),true}})}};dphelper?.setDescription(h,y);var k=dphelper.sync;export{k as sync};
@@ -1 +1 @@
1
- 'use strict';var i={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var n={version:"4.6.0"};Object.defineProperty(globalThis,"dphelper",{value:new Proxy({},{}),writable:true,configurable:true,enumerable:false});Object.defineProperties(dphelper,{_list:{value:{scripts:[],sockets:[],...i},configurable:true,writable:true},version:{value:n.version,configurable:true,writable:true},isServer:{value:false,configurable:true,writable:true},isBrowser:{value:true,configurable:true,writable:true}});var l=dphelper;Object.defineProperty(l,"setProps",{value:(e,t,r)=>{Object.defineProperty(e,t.name,r||{writable:false,configurable:false,enumerable:false}),r?.lock&&Object.freeze(e[t.name]);},writable:false,configurable:false,enumerable:false});Object.defineProperty(l,"setDescription",{value:(e,t)=>{Object.defineProperties(l,{[e.name]:{value:t,writable:false,configurable:false,enumerable:false}}),Object.keys(t).map(r=>(Object.defineProperties(l[e.name],{[r]:{writable:false,configurable:false,enumerable:false}}),null)),l.setProps(l,e,{writable:false,configurable:false,enumerable:false}),l._list.scripts.push(e);}});var c={name:"system",active:true,subCommand:[{name:"multiSplit",version:"0.0.2",example:"dphelper.system.multiSplit()",author:"Dario Passariello",creationDate:"20231121",lastMod:"20231121",type:"system",active:true,description:"Run only one time when you load your App ... extend the .split with array as argument (example.split([',', ':', ';', '?', '/'])[0])",env:"both",subCommand:[]}]},b={multiSplit:(e,t)=>{if(!e)return [];let r=t[0];if(!r)return [e];let a=e;for(let o=1;o<t.length;++o)a=a.split(t[o]).join(r);return a.split(r)}};dphelper?.setDescription(c,b);var O=dphelper.system;exports.system=O;
1
+ 'use strict';var i={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var n={version:"4.6.1"};Object.defineProperty(globalThis,"dphelper",{value:new Proxy({},{}),writable:true,configurable:true,enumerable:false});Object.defineProperties(dphelper,{_list:{value:{scripts:[],sockets:[],...i},configurable:true,writable:true},version:{value:n.version,configurable:true,writable:true},isServer:{value:false,configurable:true,writable:true},isBrowser:{value:true,configurable:true,writable:true}});var l=dphelper;Object.defineProperty(l,"setProps",{value:(e,t,r)=>{Object.defineProperty(e,t.name,r||{writable:false,configurable:false,enumerable:false}),r?.lock&&Object.freeze(e[t.name]);},writable:false,configurable:false,enumerable:false});Object.defineProperty(l,"setDescription",{value:(e,t)=>{Object.defineProperties(l,{[e.name]:{value:t,writable:false,configurable:false,enumerable:false}}),Object.keys(t).map(r=>(Object.defineProperties(l[e.name],{[r]:{writable:false,configurable:false,enumerable:false}}),null)),l.setProps(l,e,{writable:false,configurable:false,enumerable:false}),l._list.scripts.push(e);}});var c={name:"system",active:true,subCommand:[{name:"multiSplit",version:"0.0.2",example:"dphelper.system.multiSplit()",author:"Dario Passariello",creationDate:"20231121",lastMod:"20231121",type:"system",active:true,description:"Run only one time when you load your App ... extend the .split with array as argument (example.split([',', ':', ';', '?', '/'])[0])",env:"both",subCommand:[]}]},b={multiSplit:(e,t)=>{if(!e)return [];let r=t[0];if(!r)return [e];let a=e;for(let o=1;o<t.length;++o)a=a.split(t[o]).join(r);return a.split(r)}};dphelper?.setDescription(c,b);var O=dphelper.system;exports.system=O;
@@ -1,6 +1,6 @@
1
1
  /// <reference path="../types/dphelper.d.ts" />
2
- export interface SystemTool {
3
- multiSplit: () => any
2
+ export interface SystemTool {
3
+ multiSplit: () => any
4
4
  }
5
5
 
6
6
  export const system: SystemTool
package/modules/system.js CHANGED
@@ -1 +1 @@
1
- var n={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var p={version:"4.6.0"};Object.defineProperty(globalThis,"dphelper",{value:new Proxy({},{}),writable:true,configurable:true,enumerable:false});Object.defineProperties(dphelper,{_list:{value:{scripts:[],sockets:[],...n},configurable:true,writable:true},version:{value:p.version,configurable:true,writable:true},isServer:{value:false,configurable:true,writable:true},isBrowser:{value:true,configurable:true,writable:true}});var l=dphelper;Object.defineProperty(l,"setProps",{value:(e,t,r)=>{Object.defineProperty(e,t.name,r||{writable:false,configurable:false,enumerable:false}),r?.lock&&Object.freeze(e[t.name]);},writable:false,configurable:false,enumerable:false});Object.defineProperty(l,"setDescription",{value:(e,t)=>{Object.defineProperties(l,{[e.name]:{value:t,writable:false,configurable:false,enumerable:false}}),Object.keys(t).map(r=>(Object.defineProperties(l[e.name],{[r]:{writable:false,configurable:false,enumerable:false}}),null)),l.setProps(l,e,{writable:false,configurable:false,enumerable:false}),l._list.scripts.push(e);}});var b={name:"system",active:true,subCommand:[{name:"multiSplit",version:"0.0.2",example:"dphelper.system.multiSplit()",author:"Dario Passariello",creationDate:"20231121",lastMod:"20231121",type:"system",active:true,description:"Run only one time when you load your App ... extend the .split with array as argument (example.split([',', ':', ';', '?', '/'])[0])",env:"both",subCommand:[]}]},m={multiSplit:(e,t)=>{if(!e)return [];let r=t[0];if(!r)return [e];let a=e;for(let o=1;o<t.length;++o)a=a.split(t[o]).join(r);return a.split(r)}};dphelper?.setDescription(b,m);var x=dphelper.system;export{x as system};
1
+ var n={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var p={version:"4.6.1"};Object.defineProperty(globalThis,"dphelper",{value:new Proxy({},{}),writable:true,configurable:true,enumerable:false});Object.defineProperties(dphelper,{_list:{value:{scripts:[],sockets:[],...n},configurable:true,writable:true},version:{value:p.version,configurable:true,writable:true},isServer:{value:false,configurable:true,writable:true},isBrowser:{value:true,configurable:true,writable:true}});var l=dphelper;Object.defineProperty(l,"setProps",{value:(e,t,r)=>{Object.defineProperty(e,t.name,r||{writable:false,configurable:false,enumerable:false}),r?.lock&&Object.freeze(e[t.name]);},writable:false,configurable:false,enumerable:false});Object.defineProperty(l,"setDescription",{value:(e,t)=>{Object.defineProperties(l,{[e.name]:{value:t,writable:false,configurable:false,enumerable:false}}),Object.keys(t).map(r=>(Object.defineProperties(l[e.name],{[r]:{writable:false,configurable:false,enumerable:false}}),null)),l.setProps(l,e,{writable:false,configurable:false,enumerable:false}),l._list.scripts.push(e);}});var b={name:"system",active:true,subCommand:[{name:"multiSplit",version:"0.0.2",example:"dphelper.system.multiSplit()",author:"Dario Passariello",creationDate:"20231121",lastMod:"20231121",type:"system",active:true,description:"Run only one time when you load your App ... extend the .split with array as argument (example.split([',', ':', ';', '?', '/'])[0])",env:"both",subCommand:[]}]},m={multiSplit:(e,t)=>{if(!e)return [];let r=t[0];if(!r)return [e];let a=e;for(let o=1;o<t.length;++o)a=a.split(t[o]).join(r);return a.split(r)}};dphelper?.setDescription(b,m);var x=dphelper.system;export{x as system};
package/modules/text.cjs CHANGED
@@ -1,4 +1,4 @@
1
- 'use strict';var c={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var u={version:"4.6.0"};Object.defineProperty(globalThis,"dphelper",{value:new Proxy({},{}),writable:true,configurable:true,enumerable:false});Object.defineProperties(dphelper,{_list:{value:{scripts:[],sockets:[],...c},configurable:true,writable:true},version:{value:u.version,configurable:true,writable:true},isServer:{value:false,configurable:true,writable:true},isBrowser:{value:true,configurable:true,writable:true}});var i=dphelper;Object.defineProperty(i,"setProps",{value:(e,t,r)=>{Object.defineProperty(e,t.name,r||{writable:false,configurable:false,enumerable:false}),r?.lock&&Object.freeze(e[t.name]);},writable:false,configurable:false,enumerable:false});Object.defineProperty(i,"setDescription",{value:(e,t)=>{Object.defineProperties(i,{[e.name]:{value:t,writable:false,configurable:false,enumerable:false}}),Object.keys(t).map(r=>(Object.defineProperties(i[e.name],{[r]:{writable:false,configurable:false,enumerable:false}}),null)),i.setProps(i,e,{writable:false,configurable:false,enumerable:false}),i._list.scripts.push(e);}});var b={name:"text",active:true,subCommand:[{name:"trim",version:"0.0.2",example:"dphelper.text.trim(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Trims the specified characters from the start and end of a string.",env:"both",subCommand:[]},{name:"capitalize",version:"0.0.2",example:"dphelper.text.capitalize(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Capitalizes the first letter of each word in a string.",env:"both",subCommand:[]},{name:"lower",version:"0.0.2",example:"dphelper.text.lower(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Converts a string to lowercase.",env:"both",subCommand:[]},{name:"upper",version:"0.0.2",example:"dphelper.text.upper(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Converts a string to uppercase.",env:"both",subCommand:[]},{name:"nl2br",version:"0.0.2",example:"dphelper.text.nl2br(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Converts newlines in a string to HTML <br> tags.",env:"both",subCommand:[]},{name:"sanitize",version:"0.0.2",example:"dphelper.text.sanitize(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Sanitizes a string by removing HTML tags.",env:"both",subCommand:[]},{name:"camelCase",version:"0.0.2",example:"dphelper.text.camelCase(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Converts a string to camelCase.",subCommand:[{name:"toSpace",version:"0.0.2",example:"dphelper.text.camelCase.toSpace(...)",type:"function",active:true,description:"Converts camelCase to space-separated words.",env:"both",subCommand:[],author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220"},{name:"toUnderscore",version:"0.0.2",example:"dphelper.text.camelCase.toUnderscore(...)",type:"function",active:true,description:"Converts camelCase to underscore-separated words.",env:"both",subCommand:[],author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220"}]},{name:"fitContainer",version:"0.0.2",example:"dphelper.text.fitContainer([element])",type:"function",active:true,description:"Adjusts the font size of an element to fit its container.",env:"both",subCommand:[],author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220"},{name:"keywords",version:"0.0.2",example:"dphelper.text.keywords([sentence])",type:"function",active:true,description:"Extrapolate keywords from a sentence",env:"both",subCommand:[],author:"Dario Passariello",creationDate:"20250601",lastMod:"20250601"},{name:"replaceText",version:"0.0.2",example:"dphelper.text.replaceText([sentence, object])",type:"function",active:true,description:`
1
+ 'use strict';var c={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var u={version:"4.6.1"};Object.defineProperty(globalThis,"dphelper",{value:new Proxy({},{}),writable:true,configurable:true,enumerable:false});Object.defineProperties(dphelper,{_list:{value:{scripts:[],sockets:[],...c},configurable:true,writable:true},version:{value:u.version,configurable:true,writable:true},isServer:{value:false,configurable:true,writable:true},isBrowser:{value:true,configurable:true,writable:true}});var i=dphelper;Object.defineProperty(i,"setProps",{value:(e,t,r)=>{Object.defineProperty(e,t.name,r||{writable:false,configurable:false,enumerable:false}),r?.lock&&Object.freeze(e[t.name]);},writable:false,configurable:false,enumerable:false});Object.defineProperty(i,"setDescription",{value:(e,t)=>{Object.defineProperties(i,{[e.name]:{value:t,writable:false,configurable:false,enumerable:false}}),Object.keys(t).map(r=>(Object.defineProperties(i[e.name],{[r]:{writable:false,configurable:false,enumerable:false}}),null)),i.setProps(i,e,{writable:false,configurable:false,enumerable:false}),i._list.scripts.push(e);}});var b={name:"text",active:true,subCommand:[{name:"trim",version:"0.0.2",example:"dphelper.text.trim(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Trims the specified characters from the start and end of a string.",env:"both",subCommand:[]},{name:"capitalize",version:"0.0.2",example:"dphelper.text.capitalize(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Capitalizes the first letter of each word in a string.",env:"both",subCommand:[]},{name:"lower",version:"0.0.2",example:"dphelper.text.lower(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Converts a string to lowercase.",env:"both",subCommand:[]},{name:"upper",version:"0.0.2",example:"dphelper.text.upper(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Converts a string to uppercase.",env:"both",subCommand:[]},{name:"nl2br",version:"0.0.2",example:"dphelper.text.nl2br(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Converts newlines in a string to HTML <br> tags.",env:"both",subCommand:[]},{name:"sanitize",version:"0.0.2",example:"dphelper.text.sanitize(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Sanitizes a string by removing HTML tags.",env:"both",subCommand:[]},{name:"camelCase",version:"0.0.2",example:"dphelper.text.camelCase(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Converts a string to camelCase.",subCommand:[{name:"toSpace",version:"0.0.2",example:"dphelper.text.camelCase.toSpace(...)",type:"function",active:true,description:"Converts camelCase to space-separated words.",env:"both",subCommand:[],author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220"},{name:"toUnderscore",version:"0.0.2",example:"dphelper.text.camelCase.toUnderscore(...)",type:"function",active:true,description:"Converts camelCase to underscore-separated words.",env:"both",subCommand:[],author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220"}]},{name:"fitContainer",version:"0.0.2",example:"dphelper.text.fitContainer([element])",type:"function",active:true,description:"Adjusts the font size of an element to fit its container.",env:"both",subCommand:[],author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220"},{name:"keywords",version:"0.0.2",example:"dphelper.text.keywords([sentence])",type:"function",active:true,description:"Extrapolate keywords from a sentence",env:"both",subCommand:[],author:"Dario Passariello",creationDate:"20250601",lastMod:"20250601"},{name:"replaceText",version:"0.0.2",example:"dphelper.text.replaceText([sentence, object])",type:"function",active:true,description:`
2
2
  replace all occurrence from sentence using an object as list
3
3
 
4
4
  example:
package/modules/text.d.ts CHANGED
@@ -1,17 +1,17 @@
1
1
  /// <reference path="../types/dphelper.d.ts" />
2
- export interface TextTool {
3
- trim(s: string, c: string, b: number, e: number): string
4
- capitalize(txt: string): string
5
- lower(txt: string): string
6
- upper(txt: string): string
7
- nl2br(str: string): string
8
- sanitize(str: string): string
9
- camelCase: {
10
- toSpace(string: string): string
11
- toUnderscore(string: string): string
12
- }
13
- fitContainer(el: string): void
14
- subString(s: string): void
2
+ export interface TextTool {
3
+ trim(s: string, c: string, b: number, e: number): string
4
+ capitalize(txt: string): string
5
+ lower(txt: string): string
6
+ upper(txt: string): string
7
+ nl2br(str: string): string
8
+ sanitize(str: string): string
9
+ camelCase: {
10
+ toSpace(string: string): string
11
+ toUnderscore(string: string): string
12
+ }
13
+ fitContainer(el: string): void
14
+ subString(s: string): void
15
15
  }
16
16
 
17
17
  export const text: TextTool
package/modules/text.js CHANGED
@@ -1,4 +1,4 @@
1
- var u={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var m={version:"4.6.0"};Object.defineProperty(globalThis,"dphelper",{value:new Proxy({},{}),writable:true,configurable:true,enumerable:false});Object.defineProperties(dphelper,{_list:{value:{scripts:[],sockets:[],...u},configurable:true,writable:true},version:{value:m.version,configurable:true,writable:true},isServer:{value:false,configurable:true,writable:true},isBrowser:{value:true,configurable:true,writable:true}});var i=dphelper;Object.defineProperty(i,"setProps",{value:(e,t,r)=>{Object.defineProperty(e,t.name,r||{writable:false,configurable:false,enumerable:false}),r?.lock&&Object.freeze(e[t.name]);},writable:false,configurable:false,enumerable:false});Object.defineProperty(i,"setDescription",{value:(e,t)=>{Object.defineProperties(i,{[e.name]:{value:t,writable:false,configurable:false,enumerable:false}}),Object.keys(t).map(r=>(Object.defineProperties(i[e.name],{[r]:{writable:false,configurable:false,enumerable:false}}),null)),i.setProps(i,e,{writable:false,configurable:false,enumerable:false}),i._list.scripts.push(e);}});var h={name:"text",active:true,subCommand:[{name:"trim",version:"0.0.2",example:"dphelper.text.trim(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Trims the specified characters from the start and end of a string.",env:"both",subCommand:[]},{name:"capitalize",version:"0.0.2",example:"dphelper.text.capitalize(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Capitalizes the first letter of each word in a string.",env:"both",subCommand:[]},{name:"lower",version:"0.0.2",example:"dphelper.text.lower(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Converts a string to lowercase.",env:"both",subCommand:[]},{name:"upper",version:"0.0.2",example:"dphelper.text.upper(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Converts a string to uppercase.",env:"both",subCommand:[]},{name:"nl2br",version:"0.0.2",example:"dphelper.text.nl2br(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Converts newlines in a string to HTML <br> tags.",env:"both",subCommand:[]},{name:"sanitize",version:"0.0.2",example:"dphelper.text.sanitize(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Sanitizes a string by removing HTML tags.",env:"both",subCommand:[]},{name:"camelCase",version:"0.0.2",example:"dphelper.text.camelCase(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Converts a string to camelCase.",subCommand:[{name:"toSpace",version:"0.0.2",example:"dphelper.text.camelCase.toSpace(...)",type:"function",active:true,description:"Converts camelCase to space-separated words.",env:"both",subCommand:[],author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220"},{name:"toUnderscore",version:"0.0.2",example:"dphelper.text.camelCase.toUnderscore(...)",type:"function",active:true,description:"Converts camelCase to underscore-separated words.",env:"both",subCommand:[],author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220"}]},{name:"fitContainer",version:"0.0.2",example:"dphelper.text.fitContainer([element])",type:"function",active:true,description:"Adjusts the font size of an element to fit its container.",env:"both",subCommand:[],author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220"},{name:"keywords",version:"0.0.2",example:"dphelper.text.keywords([sentence])",type:"function",active:true,description:"Extrapolate keywords from a sentence",env:"both",subCommand:[],author:"Dario Passariello",creationDate:"20250601",lastMod:"20250601"},{name:"replaceText",version:"0.0.2",example:"dphelper.text.replaceText([sentence, object])",type:"function",active:true,description:`
1
+ var u={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var m={version:"4.6.1"};Object.defineProperty(globalThis,"dphelper",{value:new Proxy({},{}),writable:true,configurable:true,enumerable:false});Object.defineProperties(dphelper,{_list:{value:{scripts:[],sockets:[],...u},configurable:true,writable:true},version:{value:m.version,configurable:true,writable:true},isServer:{value:false,configurable:true,writable:true},isBrowser:{value:true,configurable:true,writable:true}});var i=dphelper;Object.defineProperty(i,"setProps",{value:(e,t,r)=>{Object.defineProperty(e,t.name,r||{writable:false,configurable:false,enumerable:false}),r?.lock&&Object.freeze(e[t.name]);},writable:false,configurable:false,enumerable:false});Object.defineProperty(i,"setDescription",{value:(e,t)=>{Object.defineProperties(i,{[e.name]:{value:t,writable:false,configurable:false,enumerable:false}}),Object.keys(t).map(r=>(Object.defineProperties(i[e.name],{[r]:{writable:false,configurable:false,enumerable:false}}),null)),i.setProps(i,e,{writable:false,configurable:false,enumerable:false}),i._list.scripts.push(e);}});var h={name:"text",active:true,subCommand:[{name:"trim",version:"0.0.2",example:"dphelper.text.trim(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Trims the specified characters from the start and end of a string.",env:"both",subCommand:[]},{name:"capitalize",version:"0.0.2",example:"dphelper.text.capitalize(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Capitalizes the first letter of each word in a string.",env:"both",subCommand:[]},{name:"lower",version:"0.0.2",example:"dphelper.text.lower(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Converts a string to lowercase.",env:"both",subCommand:[]},{name:"upper",version:"0.0.2",example:"dphelper.text.upper(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Converts a string to uppercase.",env:"both",subCommand:[]},{name:"nl2br",version:"0.0.2",example:"dphelper.text.nl2br(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Converts newlines in a string to HTML <br> tags.",env:"both",subCommand:[]},{name:"sanitize",version:"0.0.2",example:"dphelper.text.sanitize(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Sanitizes a string by removing HTML tags.",env:"both",subCommand:[]},{name:"camelCase",version:"0.0.2",example:"dphelper.text.camelCase(...)",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Converts a string to camelCase.",subCommand:[{name:"toSpace",version:"0.0.2",example:"dphelper.text.camelCase.toSpace(...)",type:"function",active:true,description:"Converts camelCase to space-separated words.",env:"both",subCommand:[],author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220"},{name:"toUnderscore",version:"0.0.2",example:"dphelper.text.camelCase.toUnderscore(...)",type:"function",active:true,description:"Converts camelCase to underscore-separated words.",env:"both",subCommand:[],author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220"}]},{name:"fitContainer",version:"0.0.2",example:"dphelper.text.fitContainer([element])",type:"function",active:true,description:"Adjusts the font size of an element to fit its container.",env:"both",subCommand:[],author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220"},{name:"keywords",version:"0.0.2",example:"dphelper.text.keywords([sentence])",type:"function",active:true,description:"Extrapolate keywords from a sentence",env:"both",subCommand:[],author:"Dario Passariello",creationDate:"20250601",lastMod:"20250601"},{name:"replaceText",version:"0.0.2",example:"dphelper.text.replaceText([sentence, object])",type:"function",active:true,description:`
2
2
  replace all occurrence from sentence using an object as list
3
3
 
4
4
  example:
package/modules/timer.cjs CHANGED
@@ -1 +1 @@
1
- 'use strict';var l={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var i={version:"4.6.0"};Object.defineProperty(globalThis,"dphelper",{value:new Proxy({},{}),writable:true,configurable:true,enumerable:false});Object.defineProperties(dphelper,{_list:{value:{scripts:[],sockets:[],...l},configurable:true,writable:true},version:{value:i.version,configurable:true,writable:true},isServer:{value:false,configurable:true,writable:true},isBrowser:{value:true,configurable:true,writable:true}});var a=dphelper;Object.defineProperty(a,"setProps",{value:(e,t,r)=>{Object.defineProperty(e,t.name,r||{writable:false,configurable:false,enumerable:false}),r?.lock&&Object.freeze(e[t.name]);},writable:false,configurable:false,enumerable:false});Object.defineProperty(a,"setDescription",{value:(e,t)=>{Object.defineProperties(a,{[e.name]:{value:t,writable:false,configurable:false,enumerable:false}}),Object.keys(t).map(r=>(Object.defineProperties(a[e.name],{[r]:{writable:false,configurable:false,enumerable:false}}),null)),a.setProps(a,e,{writable:false,configurable:false,enumerable:false}),a._list.scripts.push(e);}});var u={name:"timer",active:true,subCommand:[{name:"sleep",version:"0.0.2",example:"dphelper.timer.sleep([ms]) ",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Pauses execution for a specified number of milliseconds.",env:"both",subCommand:[]},{name:"percentage",version:"0.0.2",example:"dphelper.timer.percentage([start], [end])",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Calculates the percentage of time elapsed between two time strings.",env:"both",subCommand:[]}]},b={sleep:e=>new Promise(t=>setTimeout(t,e)),percentage:(e,t)=>{function r(n){let o=n.split(":");return Number.parseInt(o[0]||"",10)*3600+Number.parseInt(o[1]||"",10)*60+Number.parseInt(o[2]||"",10)}return (100*r(e)/r(t)).toFixed(2)}};dphelper?.setDescription(u,b);var O=dphelper.timer;exports.timer=O;
1
+ 'use strict';var l={info:{title:"List",description:"Complete list of tools"},categories:["3party","system","financial","memory","numbers","time","path","file","forms","ui","other","development"]};var i={version:"4.6.1"};Object.defineProperty(globalThis,"dphelper",{value:new Proxy({},{}),writable:true,configurable:true,enumerable:false});Object.defineProperties(dphelper,{_list:{value:{scripts:[],sockets:[],...l},configurable:true,writable:true},version:{value:i.version,configurable:true,writable:true},isServer:{value:false,configurable:true,writable:true},isBrowser:{value:true,configurable:true,writable:true}});var a=dphelper;Object.defineProperty(a,"setProps",{value:(e,t,r)=>{Object.defineProperty(e,t.name,r||{writable:false,configurable:false,enumerable:false}),r?.lock&&Object.freeze(e[t.name]);},writable:false,configurable:false,enumerable:false});Object.defineProperty(a,"setDescription",{value:(e,t)=>{Object.defineProperties(a,{[e.name]:{value:t,writable:false,configurable:false,enumerable:false}}),Object.keys(t).map(r=>(Object.defineProperties(a[e.name],{[r]:{writable:false,configurable:false,enumerable:false}}),null)),a.setProps(a,e,{writable:false,configurable:false,enumerable:false}),a._list.scripts.push(e);}});var u={name:"timer",active:true,subCommand:[{name:"sleep",version:"0.0.2",example:"dphelper.timer.sleep([ms]) ",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Pauses execution for a specified number of milliseconds.",env:"both",subCommand:[]},{name:"percentage",version:"0.0.2",example:"dphelper.timer.percentage([start], [end])",author:"Dario Passariello",creationDate:"20210101",lastMod:"20260220",type:"function",active:true,description:"Calculates the percentage of time elapsed between two time strings.",env:"both",subCommand:[]}]},b={sleep:e=>new Promise(t=>setTimeout(t,e)),percentage:(e,t)=>{function r(n){let o=n.split(":");return Number.parseInt(o[0]||"",10)*3600+Number.parseInt(o[1]||"",10)*60+Number.parseInt(o[2]||"",10)}return (100*r(e)/r(t)).toFixed(2)}};dphelper?.setDescription(u,b);var O=dphelper.timer;exports.timer=O;