@devwareng/vanilla-ts 1.4.24 → 1.4.26
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.
- package/dist/index.cjs +6 -6
- package/dist/index.js +6 -6
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
"use strict";var xe=Object.create;var j=Object.defineProperty;var be=Object.getOwnPropertyDescriptor;var Ae=Object.getOwnPropertyNames;var Me=Object.getPrototypeOf,Oe=Object.prototype.hasOwnProperty;var rt=(s,t)=>()=>(s&&(t=s(s=0)),t);var $t=(s,t)=>{for(var e in t)j(s,e,{get:t[e],enumerable:!0})},jt=(s,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Ae(t))!Oe.call(s,r)&&r!==e&&j(s,r,{get:()=>t[r],enumerable:!(n=be(t,r))||n.enumerable});return s};var y=(s,t,e)=>(e=s!=null?xe(Me(s)):{},jt(t||!s||!s.__esModule?j(e,"default",{value:s,enumerable:!0}):e,s)),Ce=s=>jt(j({},"__esModule",{value:!0}),s);function ie(s,t={}){let e=t.entryType||t.type;if(e==="both"&&(e=T.FILE_DIR_TYPE),e&&(t.type=e),s){if(typeof s!="string")throw new TypeError("readdirp: root argument must be a string. Usage: readdirp(root, options)");if(e&&!te.includes(e))throw new Error(`readdirp: Invalid type passed. Use one of ${te.join(", ")}`)}else throw new Error("readdirp: root argument is required. Usage: readdirp(root, options)");return t.root=s,new Ct(t)}var v,ne,R,T,Ot,re,We,te,$e,je,Ue,qe,ee,se,Ct,oe=rt(()=>{"use strict";v=require("fs/promises"),ne=require("stream"),R=require("path"),T={FILE_TYPE:"files",DIR_TYPE:"directories",FILE_DIR_TYPE:"files_directories",EVERYTHING_TYPE:"all"},Ot={root:".",fileFilter:s=>!0,directoryFilter:s=>!0,type:T.FILE_TYPE,lstat:!1,depth:2147483648,alwaysStat:!1,highWaterMark:4096};Object.freeze(Ot);re="READDIRP_RECURSIVE_ERROR",We=new Set(["ENOENT","EPERM","EACCES","ELOOP",re]),te=[T.DIR_TYPE,T.EVERYTHING_TYPE,T.FILE_DIR_TYPE,T.FILE_TYPE],$e=new Set([T.DIR_TYPE,T.EVERYTHING_TYPE,T.FILE_DIR_TYPE]),je=new Set([T.EVERYTHING_TYPE,T.FILE_DIR_TYPE,T.FILE_TYPE]),Ue=s=>We.has(s.code),qe=process.platform==="win32",ee=s=>!0,se=s=>{if(s===void 0)return ee;if(typeof s=="function")return s;if(typeof s=="string"){let t=s.trim();return e=>e.basename===t}if(Array.isArray(s)){let t=s.map(e=>e.trim());return e=>t.some(n=>e.basename===n)}return ee},Ct=class extends ne.Readable{constructor(t={}){super({objectMode:!0,autoDestroy:!0,highWaterMark:t.highWaterMark});let e={...Ot,...t},{root:n,type:r}=e;this._fileFilter=se(e.fileFilter),this._directoryFilter=se(e.directoryFilter);let i=e.lstat?v.lstat:v.stat;qe?this._stat=a=>i(a,{bigint:!0}):this._stat=i,this._maxDepth=e.depth??Ot.depth,this._wantsDir=r?$e.has(r):!1,this._wantsFile=r?je.has(r):!1,this._wantsEverything=r===T.EVERYTHING_TYPE,this._root=(0,R.resolve)(n),this._isDirent=!e.alwaysStat,this._statsProp=this._isDirent?"dirent":"stats",this._rdOptions={encoding:"utf8",withFileTypes:this._isDirent},this.parents=[this._exploreDir(n,1)],this.reading=!1,this.parent=void 0}async _read(t){if(!this.reading){this.reading=!0;try{for(;!this.destroyed&&t>0;){let e=this.parent,n=e&&e.files;if(n&&n.length>0){let{path:r,depth:i}=e,a=n.splice(0,t).map(c=>this._formatEntry(c,r)),o=await Promise.all(a);for(let c of o){if(!c)continue;if(this.destroyed)return;let d=await this._getEntryType(c);d==="directory"&&this._directoryFilter(c)?(i<=this._maxDepth&&this.parents.push(this._exploreDir(c.fullPath,i+1)),this._wantsDir&&(this.push(c),t--)):(d==="file"||this._includeAsFile(c))&&this._fileFilter(c)&&this._wantsFile&&(this.push(c),t--)}}else{let r=this.parents.pop();if(!r){this.push(null);break}if(this.parent=await r,this.destroyed)return}}}catch(e){this.destroy(e)}finally{this.reading=!1}}}async _exploreDir(t,e){let n;try{n=await(0,v.readdir)(t,this._rdOptions)}catch(r){this._onError(r)}return{files:n,depth:e,path:t}}async _formatEntry(t,e){let n,r=this._isDirent?t.name:t;try{let i=(0,R.resolve)((0,R.join)(e,r));n={path:(0,R.relative)(this._root,i),fullPath:i,basename:r},n[this._statsProp]=this._isDirent?t:await this._stat(i)}catch(i){this._onError(i);return}return n}_onError(t){Ue(t)&&!this.destroyed?this.emit("warn",t):this.destroy(t)}async _getEntryType(t){if(!t&&this._statsProp in t)return"";let e=t[this._statsProp];if(e.isFile())return"file";if(e.isDirectory())return"directory";if(e&&e.isSymbolicLink()){let n=t.fullPath;try{let r=await(0,v.realpath)(n),i=await(0,v.lstat)(r);if(i.isFile())return"file";if(i.isDirectory()){let a=r.length;if(n.startsWith(r)&&n.substr(a,1)===R.sep){let o=new Error(`Circular symlink detected: "${n}" points to "${r}"`);return o.code=re,this._onError(o)}return"directory"}}catch(r){return this._onError(r),""}}}_includeAsFile(t){let e=t&&t[this._statsProp];return e&&this._wantsEverything&&!e.isDirectory()}}});function ae(s,t,e,n,r){let i=(a,o)=>{e(s),r(a,o,{watchedPath:s}),o&&s!==o&&K(w.resolve(s,o),b,w.join(s,o))};try{return(0,A.watch)(s,{persistent:t.persistent},i)}catch(a){n(a);return}}var A,S,w,ce,Ye,Ft,le,J,X,Nt,Ge,Be,Ve,de,E,_,Ke,Qe,b,B,M,Je,Xe,Ze,It,z,ts,W,ue,V,K,es,Ht,ss,Q,he=rt(()=>{"use strict";A=require("fs"),S=require("fs/promises"),w=y(require("path"),1),ce=require("os"),Ye="data",Ft="end",le="close",J=()=>{},X=process.platform,Nt=X==="win32",Ge=X==="darwin",Be=X==="linux",Ve=X==="freebsd",de=(0,ce.type)()==="OS400",E={ALL:"all",READY:"ready",ADD:"add",CHANGE:"change",ADD_DIR:"addDir",UNLINK:"unlink",UNLINK_DIR:"unlinkDir",RAW:"raw",ERROR:"error"},_=E,Ke="watch",Qe={lstat:S.lstat,stat:S.stat},b="listeners",B="errHandlers",M="rawEmitters",Je=[b,B,M],Xe=new Set(["3dm","3ds","3g2","3gp","7z","a","aac","adp","afdesign","afphoto","afpub","ai","aif","aiff","alz","ape","apk","appimage","ar","arj","asf","au","avi","bak","baml","bh","bin","bk","bmp","btif","bz2","bzip2","cab","caf","cgm","class","cmx","cpio","cr2","cur","dat","dcm","deb","dex","djvu","dll","dmg","dng","doc","docm","docx","dot","dotm","dra","DS_Store","dsk","dts","dtshd","dvb","dwg","dxf","ecelp4800","ecelp7470","ecelp9600","egg","eol","eot","epub","exe","f4v","fbs","fh","fla","flac","flatpak","fli","flv","fpx","fst","fvt","g3","gh","gif","graffle","gz","gzip","h261","h263","h264","icns","ico","ief","img","ipa","iso","jar","jpeg","jpg","jpgv","jpm","jxr","key","ktx","lha","lib","lvp","lz","lzh","lzma","lzo","m3u","m4a","m4v","mar","mdi","mht","mid","midi","mj2","mka","mkv","mmr","mng","mobi","mov","movie","mp3","mp4","mp4a","mpeg","mpg","mpga","mxu","nef","npx","numbers","nupkg","o","odp","ods","odt","oga","ogg","ogv","otf","ott","pages","pbm","pcx","pdb","pdf","pea","pgm","pic","png","pnm","pot","potm","potx","ppa","ppam","ppm","pps","ppsm","ppsx","ppt","pptm","pptx","psd","pya","pyc","pyo","pyv","qt","rar","ras","raw","resources","rgb","rip","rlc","rmf","rmvb","rpm","rtf","rz","s3m","s7z","scpt","sgi","shar","snap","sil","sketch","slk","smv","snk","so","stl","suo","sub","swf","tar","tbz","tbz2","tga","tgz","thmx","tif","tiff","tlz","ttc","ttf","txz","udf","uvh","uvi","uvm","uvp","uvs","uvu","viv","vob","war","wav","wax","wbmp","wdp","weba","webm","webp","whl","wim","wm","wma","wmv","wmx","woff","woff2","wrm","wvx","xbm","xif","xla","xlam","xls","xlsb","xlsm","xlsx","xlt","xltm","xltx","xm","xmind","xpi","xpm","xwd","xz","z","zip","zipx"]),Ze=s=>Xe.has(w.extname(s).slice(1).toLowerCase()),It=(s,t)=>{s instanceof Set?s.forEach(t):t(s)},z=(s,t,e)=>{let n=s[t];n instanceof Set||(s[t]=n=new Set([n])),n.add(e)},ts=s=>t=>{let e=s[t];e instanceof Set?e.clear():delete s[t]},W=(s,t,e)=>{let n=s[t];n instanceof Set?n.delete(e):n===e&&delete s[t]},ue=s=>s instanceof Set?s.size===0:!s,V=new Map;K=(s,t,e,n,r)=>{let i=V.get(s);i&&It(i[t],a=>{a(e,n,r)})},es=(s,t,e,n)=>{let{listener:r,errHandler:i,rawEmitter:a}=n,o=V.get(t),c;if(!e.persistent)return c=ae(s,e,r,i,a),c?c.close.bind(c):void 0;if(o)z(o,b,r),z(o,B,i),z(o,M,a);else{if(c=ae(s,e,K.bind(null,t,b),i,K.bind(null,t,M)),!c)return;c.on(_.ERROR,async d=>{let l=K.bind(null,t,B);if(o&&(o.watcherUnusable=!0),Nt&&d.code==="EPERM")try{await(await(0,S.open)(s,"r")).close(),l(d)}catch{}else l(d)}),o={listeners:r,errHandlers:i,rawEmitters:a,watcher:c},V.set(t,o)}return()=>{W(o,b,r),W(o,B,i),W(o,M,a),ue(o.listeners)&&(o.watcher.close(),V.delete(t),Je.forEach(ts(o)),o.watcher=void 0,Object.freeze(o))}},Ht=new Map,ss=(s,t,e,n)=>{let{listener:r,rawEmitter:i}=n,a=Ht.get(t),o=a&&a.options;return o&&(o.persistent<e.persistent||o.interval>e.interval)&&((0,A.unwatchFile)(t),a=void 0),a?(z(a,b,r),z(a,M,i)):(a={listeners:r,rawEmitters:i,options:e,watcher:(0,A.watchFile)(t,e,(c,d)=>{It(a.rawEmitters,u=>{u(_.CHANGE,t,{curr:c,prev:d})});let l=c.mtimeMs;(c.size!==d.size||l>d.mtimeMs||l===0)&&It(a.listeners,u=>u(s,c))})},Ht.set(t,a)),()=>{W(a,b,r),W(a,M,i),ue(a.listeners)&&(Ht.delete(t),(0,A.unwatchFile)(t),a.options=a.watcher=void 0,Object.freeze(a))}},Q=class{constructor(t){this.fsw=t,this._boundHandleError=e=>t._handleError(e)}_watchWithNodeFs(t,e){let n=this.fsw.options,r=w.dirname(t),i=w.basename(t);this.fsw._getWatchedDir(r).add(i);let o=w.resolve(t),c={persistent:n.persistent};e||(e=J);let d;if(n.usePolling){let l=n.interval!==n.binaryInterval;c.interval=l&&Ze(i)?n.binaryInterval:n.interval,d=ss(t,o,c,{listener:e,rawEmitter:this.fsw._emitRaw})}else d=es(t,o,c,{listener:e,errHandler:this._boundHandleError,rawEmitter:this.fsw._emitRaw});return d}_handleFile(t,e,n){if(this.fsw.closed)return;let r=w.dirname(t),i=w.basename(t),a=this.fsw._getWatchedDir(r),o=e;if(a.has(i))return;let c=async(l,u)=>{if(this.fsw._throttle(Ke,t,5)){if(!u||u.mtimeMs===0)try{let h=await(0,S.stat)(t);if(this.fsw.closed)return;let f=h.atimeMs,p=h.mtimeMs;if((!f||f<=p||p!==o.mtimeMs)&&this.fsw._emit(_.CHANGE,t,h),(Ge||Be||Ve)&&o.ino!==h.ino){this.fsw._closeFile(l),o=h;let g=this._watchWithNodeFs(t,c);g&&this.fsw._addPathCloser(l,g)}else o=h}catch{this.fsw._remove(r,i)}else if(a.has(i)){let h=u.atimeMs,f=u.mtimeMs;(!h||h<=f||f!==o.mtimeMs)&&this.fsw._emit(_.CHANGE,t,u),o=u}}},d=this._watchWithNodeFs(t,c);if(!(n&&this.fsw.options.ignoreInitial)&&this.fsw._isntIgnored(t)){if(!this.fsw._throttle(_.ADD,t,0))return;this.fsw._emit(_.ADD,t,e)}return d}async _handleSymlink(t,e,n,r){if(this.fsw.closed)return;let i=t.fullPath,a=this.fsw._getWatchedDir(e);if(!this.fsw.options.followSymlinks){this.fsw._incrReadyCount();let o;try{o=await(0,S.realpath)(n)}catch{return this.fsw._emitReady(),!0}return this.fsw.closed?void 0:(a.has(r)?this.fsw._symlinkPaths.get(i)!==o&&(this.fsw._symlinkPaths.set(i,o),this.fsw._emit(_.CHANGE,n,t.stats)):(a.add(r),this.fsw._symlinkPaths.set(i,o),this.fsw._emit(_.ADD,n,t.stats)),this.fsw._emitReady(),!0)}if(this.fsw._symlinkPaths.has(i))return!0;this.fsw._symlinkPaths.set(i,!0)}_handleRead(t,e,n,r,i,a,o){if(t=w.join(t,""),o=this.fsw._throttle("readdir",t,1e3),!o)return;let c=this.fsw._getWatchedDir(n.path),d=new Set,l=this.fsw._readdirp(t,{fileFilter:u=>n.filterPath(u),directoryFilter:u=>n.filterDir(u)});if(l)return l.on(Ye,async u=>{if(this.fsw.closed){l=void 0;return}let h=u.path,f=w.join(t,h);if(d.add(h),!(u.stats.isSymbolicLink()&&await this._handleSymlink(u,t,f,h))){if(this.fsw.closed){l=void 0;return}(h===r||!r&&!c.has(h))&&(this.fsw._incrReadyCount(),f=w.join(i,w.relative(i,f)),this._addToNodeFs(f,e,n,a+1))}}).on(_.ERROR,this._boundHandleError),new Promise((u,h)=>{if(!l)return h();l.once(Ft,()=>{if(this.fsw.closed){l=void 0;return}let f=o?o.clear():!1;u(void 0),c.getChildren().filter(p=>p!==t&&!d.has(p)).forEach(p=>{this.fsw._remove(t,p)}),l=void 0,f&&this._handleRead(t,!1,n,r,i,a,o)})})}async _handleDir(t,e,n,r,i,a,o){let c=this.fsw._getWatchedDir(w.dirname(t)),d=c.has(w.basename(t));!(n&&this.fsw.options.ignoreInitial)&&!i&&!d&&this.fsw._emit(_.ADD_DIR,t,e),c.add(w.basename(t)),this.fsw._getWatchedDir(t);let l,u,h=this.fsw.options.depth;if((h==null||r<=h)&&!this.fsw._symlinkPaths.has(o)){if(!i&&(await this._handleRead(t,n,a,i,t,r,l),this.fsw.closed))return;u=this._watchWithNodeFs(t,(f,p)=>{p&&p.mtimeMs===0||this._handleRead(f,!1,a,i,t,r,l)})}return u}async _addToNodeFs(t,e,n,r,i){let a=this.fsw._emitReady;if(this.fsw._isIgnored(t)||this.fsw.closed)return a(),!1;let o=this.fsw._getWatchHelpers(t);n&&(o.filterPath=c=>n.filterPath(c),o.filterDir=c=>n.filterDir(c));try{let c=await Qe[o.statMethod](o.watchPath);if(this.fsw.closed)return;if(this.fsw._isIgnored(o.watchPath,c))return a(),!1;let d=this.fsw.options.followSymlinks,l;if(c.isDirectory()){let u=w.resolve(t),h=d?await(0,S.realpath)(t):t;if(this.fsw.closed||(l=await this._handleDir(o.watchPath,c,e,r,i,o,h),this.fsw.closed))return;u!==h&&h!==void 0&&this.fsw._symlinkPaths.set(u,h)}else if(c.isSymbolicLink()){let u=d?await(0,S.realpath)(t):t;if(this.fsw.closed)return;let h=w.dirname(o.watchPath);if(this.fsw._getWatchedDir(h).add(o.watchPath),this.fsw._emit(_.ADD,o.watchPath,c),l=await this._handleDir(h,c,e,r,t,o,u),this.fsw.closed)return;u!==void 0&&this.fsw._symlinkPaths.set(w.resolve(t),u)}else l=this._handleFile(o.watchPath,c,e);return a(),l&&this.fsw._addPathCloser(t,l),!1}catch(c){if(this.fsw._handleError(c))return a(),t}}}});var Pe={};$t(Pe,{FSWatcher:()=>$,WatchHelper:()=>tt,default:()=>gs,watch:()=>Se});function Z(s){return Array.isArray(s)?s:[s]}function ls(s){return typeof s=="function"?s:typeof s=="string"?t=>s===t:s instanceof RegExp?t=>s.test(t):typeof s=="object"&&s!==null?t=>{if(s.path===t)return!0;if(s.recursive){let e=m.relative(s.path,t);return e?!e.startsWith("..")&&!m.isAbsolute(e):!1}return!1}:()=>!1}function ds(s){if(typeof s!="string")throw new Error("string expected");s=m.normalize(s),s=s.replace(/\\/g,"/");let t=!1;s.startsWith("//")&&(t=!0);let e=/\/\//;for(;s.match(e);)s=s.replace(e,"/");return t&&(s="/"+s),s}function me(s,t,e){let n=ds(t);for(let r=0;r<s.length;r++){let i=s[r];if(i(n,e))return!0}return!1}function us(s,t){if(s==null)throw new TypeError("anymatch: specify first argument");let n=Z(s).map(r=>ls(r));return t==null?(r,i)=>me(n,r,i):me(n,t)}function Se(s,t={}){let e=new $(t);return e.add(s),e}var Ee,et,ye,m,kt,ns,Te,rs,is,os,fe,as,cs,zt,pe,ge,_e,we,hs,fs,Wt,ms,ps,tt,$,gs,ve=rt(()=>{"use strict";Ee=require("fs"),et=require("fs/promises"),ye=require("events"),m=y(require("path"),1);oe();he();kt="/",ns="//",Te=".",rs="..",is="string",os=/\\/g,fe=/\/\//,as=/\..*\.(sw[px])$|~$|\.subl.*\.tmp/,cs=/^\.[/\\]/;zt=s=>typeof s=="object"&&s!==null&&!(s instanceof RegExp);pe=s=>{let t=Z(s).flat();if(!t.every(e=>typeof e===is))throw new TypeError(`Non-string provided as watch path: ${t}`);return t.map(_e)},ge=s=>{let t=s.replace(os,kt),e=!1;for(t.startsWith(ns)&&(e=!0);t.match(fe);)t=t.replace(fe,kt);return e&&(t=kt+t),t},_e=s=>ge(m.normalize(ge(s))),we=(s="")=>t=>typeof t=="string"?_e(m.isAbsolute(t)?t:m.join(s,t)):t,hs=(s,t)=>m.isAbsolute(s)?s:m.join(t,s),fs=Object.freeze(new Set),Wt=class{constructor(t,e){this.path=t,this._removeWatcher=e,this.items=new Set}add(t){let{items:e}=this;e&&t!==Te&&t!==rs&&e.add(t)}async remove(t){let{items:e}=this;if(!e||(e.delete(t),e.size>0))return;let n=this.path;try{await(0,et.readdir)(n)}catch{this._removeWatcher&&this._removeWatcher(m.dirname(n),m.basename(n))}}has(t){let{items:e}=this;if(e)return e.has(t)}getChildren(){let{items:t}=this;return t?[...t.values()]:[]}dispose(){this.items.clear(),this.path="",this._removeWatcher=J,this.items=fs,Object.freeze(this)}},ms="stat",ps="lstat",tt=class{constructor(t,e,n){this.fsw=n;let r=t;this.path=t=t.replace(cs,""),this.watchPath=r,this.fullWatchPath=m.resolve(r),this.dirParts=[],this.dirParts.forEach(i=>{i.length>1&&i.pop()}),this.followSymlinks=e,this.statMethod=e?ms:ps}entryPath(t){return m.join(this.watchPath,m.relative(this.watchPath,t.fullPath))}filterPath(t){let{stats:e}=t;if(e&&e.isSymbolicLink())return this.filterDir(t);let n=this.entryPath(t);return this.fsw._isntIgnored(n,e)&&this.fsw._hasReadPermissions(e)}filterDir(t){return this.fsw._isntIgnored(this.entryPath(t),t.stats)}},$=class extends ye.EventEmitter{constructor(t={}){super(),this.closed=!1,this._closers=new Map,this._ignoredPaths=new Set,this._throttled=new Map,this._streams=new Set,this._symlinkPaths=new Map,this._watched=new Map,this._pendingWrites=new Map,this._pendingUnlinks=new Map,this._readyCount=0,this._readyEmitted=!1;let e=t.awaitWriteFinish,n={stabilityThreshold:2e3,pollInterval:100},r={persistent:!0,ignoreInitial:!1,ignorePermissionErrors:!1,interval:100,binaryInterval:300,followSymlinks:!0,usePolling:!1,atomic:!0,...t,ignored:t.ignored?Z(t.ignored):Z([]),awaitWriteFinish:e===!0?n:typeof e=="object"?{...n,...e}:!1};de&&(r.usePolling=!0),r.atomic===void 0&&(r.atomic=!r.usePolling);let i=process.env.CHOKIDAR_USEPOLLING;if(i!==void 0){let c=i.toLowerCase();c==="false"||c==="0"?r.usePolling=!1:c==="true"||c==="1"?r.usePolling=!0:r.usePolling=!!c}let a=process.env.CHOKIDAR_INTERVAL;a&&(r.interval=Number.parseInt(a,10));let o=0;this._emitReady=()=>{o++,o>=this._readyCount&&(this._emitReady=J,this._readyEmitted=!0,process.nextTick(()=>this.emit(E.READY)))},this._emitRaw=(...c)=>this.emit(E.RAW,...c),this._boundRemove=this._remove.bind(this),this.options=r,this._nodeFsHandler=new Q(this),Object.freeze(r)}_addIgnoredPath(t){if(zt(t)){for(let e of this._ignoredPaths)if(zt(e)&&e.path===t.path&&e.recursive===t.recursive)return}this._ignoredPaths.add(t)}_removeIgnoredPath(t){if(this._ignoredPaths.delete(t),typeof t=="string")for(let e of this._ignoredPaths)zt(e)&&e.path===t&&this._ignoredPaths.delete(e)}add(t,e,n){let{cwd:r}=this.options;this.closed=!1,this._closePromise=void 0;let i=pe(t);return r&&(i=i.map(a=>hs(a,r))),i.forEach(a=>{this._removeIgnoredPath(a)}),this._userIgnored=void 0,this._readyCount||(this._readyCount=0),this._readyCount+=i.length,Promise.all(i.map(async a=>{let o=await this._nodeFsHandler._addToNodeFs(a,!n,void 0,0,e);return o&&this._emitReady(),o})).then(a=>{this.closed||a.forEach(o=>{o&&this.add(m.dirname(o),m.basename(e||o))})}),this}unwatch(t){if(this.closed)return this;let e=pe(t),{cwd:n}=this.options;return e.forEach(r=>{!m.isAbsolute(r)&&!this._closers.has(r)&&(n&&(r=m.join(n,r)),r=m.resolve(r)),this._closePath(r),this._addIgnoredPath(r),this._watched.has(r)&&this._addIgnoredPath({path:r,recursive:!0}),this._userIgnored=void 0}),this}close(){if(this._closePromise)return this._closePromise;this.closed=!0,this.removeAllListeners();let t=[];return this._closers.forEach(e=>e.forEach(n=>{let r=n();r instanceof Promise&&t.push(r)})),this._streams.forEach(e=>e.destroy()),this._userIgnored=void 0,this._readyCount=0,this._readyEmitted=!1,this._watched.forEach(e=>e.dispose()),this._closers.clear(),this._watched.clear(),this._streams.clear(),this._symlinkPaths.clear(),this._throttled.clear(),this._closePromise=t.length?Promise.all(t).then(()=>{}):Promise.resolve(),this._closePromise}getWatched(){let t={};return this._watched.forEach((e,n)=>{let i=(this.options.cwd?m.relative(this.options.cwd,n):n)||Te;t[i]=e.getChildren().sort()}),t}emitWithAll(t,e){this.emit(t,...e),t!==E.ERROR&&this.emit(E.ALL,t,...e)}async _emit(t,e,n){if(this.closed)return;let r=this.options;Nt&&(e=m.normalize(e)),r.cwd&&(e=m.relative(r.cwd,e));let i=[e];n!=null&&i.push(n);let a=r.awaitWriteFinish,o;if(a&&(o=this._pendingWrites.get(e)))return o.lastChange=new Date,this;if(r.atomic){if(t===E.UNLINK)return this._pendingUnlinks.set(e,[t,...i]),setTimeout(()=>{this._pendingUnlinks.forEach((c,d)=>{this.emit(...c),this.emit(E.ALL,...c),this._pendingUnlinks.delete(d)})},typeof r.atomic=="number"?r.atomic:100),this;t===E.ADD&&this._pendingUnlinks.has(e)&&(t=E.CHANGE,this._pendingUnlinks.delete(e))}if(a&&(t===E.ADD||t===E.CHANGE)&&this._readyEmitted){let c=(d,l)=>{d?(t=E.ERROR,i[0]=d,this.emitWithAll(t,i)):l&&(i.length>1?i[1]=l:i.push(l),this.emitWithAll(t,i))};return this._awaitWriteFinish(e,a.stabilityThreshold,t,c),this}if(t===E.CHANGE&&!this._throttle(E.CHANGE,e,50))return this;if(r.alwaysStat&&n===void 0&&(t===E.ADD||t===E.ADD_DIR||t===E.CHANGE)){let c=r.cwd?m.join(r.cwd,e):e,d;try{d=await(0,et.stat)(c)}catch{}if(!d||this.closed)return;i.push(d)}return this.emitWithAll(t,i),this}_handleError(t){let e=t&&t.code;return t&&e!=="ENOENT"&&e!=="ENOTDIR"&&(!this.options.ignorePermissionErrors||e!=="EPERM"&&e!=="EACCES")&&this.emit(E.ERROR,t),t||this.closed}_throttle(t,e,n){this._throttled.has(t)||this._throttled.set(t,new Map);let r=this._throttled.get(t);if(!r)throw new Error("invalid throttle");let i=r.get(e);if(i)return i.count++,!1;let a,o=()=>{let d=r.get(e),l=d?d.count:0;return r.delete(e),clearTimeout(a),d&&clearTimeout(d.timeoutObject),l};a=setTimeout(o,n);let c={timeoutObject:a,clear:o,count:0};return r.set(e,c),c}_incrReadyCount(){return this._readyCount++}_awaitWriteFinish(t,e,n,r){let i=this.options.awaitWriteFinish;if(typeof i!="object")return;let a=i.pollInterval,o,c=t;this.options.cwd&&!m.isAbsolute(t)&&(c=m.join(this.options.cwd,t));let d=new Date,l=this._pendingWrites;function u(h){(0,Ee.stat)(c,(f,p)=>{if(f||!l.has(t)){f&&f.code!=="ENOENT"&&r(f);return}let g=Number(new Date);h&&p.size!==h.size&&(l.get(t).lastChange=g);let nt=l.get(t);g-nt.lastChange>=e?(l.delete(t),r(void 0,p)):o=setTimeout(u,a,p)})}l.has(t)||(l.set(t,{lastChange:d,cancelWait:()=>(l.delete(t),clearTimeout(o),n)}),o=setTimeout(u,a))}_isIgnored(t,e){if(this.options.atomic&&as.test(t))return!0;if(!this._userIgnored){let{cwd:n}=this.options,i=(this.options.ignored||[]).map(we(n)),o=[...[...this._ignoredPaths].map(we(n)),...i];this._userIgnored=us(o,void 0)}return this._userIgnored(t,e)}_isntIgnored(t,e){return!this._isIgnored(t,e)}_getWatchHelpers(t){return new tt(t,this.options.followSymlinks,this)}_getWatchedDir(t){let e=m.resolve(t);return this._watched.has(e)||this._watched.set(e,new Wt(e,this._boundRemove)),this._watched.get(e)}_hasReadPermissions(t){return this.options.ignorePermissionErrors?!0:!!(Number(t.mode)&256)}_remove(t,e,n){let r=m.join(t,e),i=m.resolve(r);if(n=n??(this._watched.has(r)||this._watched.has(i)),!this._throttle("remove",r,100))return;!n&&this._watched.size===1&&this.add(t,e,!0),this._getWatchedDir(r).getChildren().forEach(h=>this._remove(r,h));let c=this._getWatchedDir(t),d=c.has(e);c.remove(e),this._symlinkPaths.has(i)&&this._symlinkPaths.delete(i);let l=r;if(this.options.cwd&&(l=m.relative(this.options.cwd,r)),this.options.awaitWriteFinish&&this._pendingWrites.has(l)&&this._pendingWrites.get(l).cancelWait()===E.ADD)return;this._watched.delete(r),this._watched.delete(i);let u=n?E.UNLINK_DIR:E.UNLINK;d&&!this._isIgnored(r)&&this._emit(u,r),this._closePath(r)}_closePath(t){this._closeFile(t);let e=m.dirname(t);this._getWatchedDir(e).remove(m.basename(t))}_closeFile(t){let e=this._closers.get(t);e&&(e.forEach(n=>n()),this._closers.delete(t))}_addPathCloser(t,e){if(!e)return;let n=this._closers.get(t);n||(n=[],this._closers.set(t,n)),n.push(e)}_readdirp(t,e){if(this.closed)return;let n={type:E.ALL,alwaysStat:!0,lstat:!0,...e,depth:0},r=ie(t,n);return this._streams.add(r),r.once(le,()=>{r=void 0}),r.once(Ft,()=>{r&&(this._streams.delete(r),r=void 0)}),r}};gs={watch:Se,FSWatcher:$}});var Es={};$t(Es,{TSRouter:()=>G,createEffect:()=>vt,createSignal:()=>Pt,html:()=>it,loadPyFiles:()=>xt,mapper:()=>Ut,renderChildRoutes:()=>St,useAnchor:()=>N,useAnchorSingle:()=>pt,useInitialDOM:()=>ft,useTSAnchorMount:()=>Lt,useTSAuth:()=>yt,useTSCollection:()=>wt,useTSComponent:()=>H,useTSElementEach:()=>I,useTSElements:()=>ht,useTSEvent:()=>ct,useTSEventAll:()=>ut,useTSExtractParams:()=>dt,useTSFilebasedRouter:()=>De,useTSHashAnchor:()=>F,useTSLazy:()=>bt,useTSMetaData:()=>gt,useTSNavigate:()=>Tt,useTSNoReload:()=>k,useTSOutlet:()=>_t,useTSParams:()=>C,useTSPurifier:()=>at,useTSSSRHydration:()=>At,useTSSelect:()=>Et,useTSloadBrython:()=>Dt});module.exports=Ce(Es);function He(s){return(s==null?"":String(s)).replace(/<\s*(script|iframe|object|embed|link|style)[^>]*>.*?<\s*\/\s*\1\s*>/gi,"").replace(/<\s*(script|iframe|object|embed|link|style)[^>]*>/gi,"").replace(/\son\w+\s*=\s*(['"]).*?\1/gi,"").replace(/\s(href|src)\s*=\s*(['"])\s*javascript:[^'"]*\2/gi,"")}function it(s,...t){return s.reduce((e,n,r)=>{let i=r<t.length?He(t[r]):"";return e+n+i},"")}function U(){let s=new Set;document.querySelectorAll("*").forEach(t=>{let e=t.tagName.toLowerCase();e.includes("-")&&s.add(e)}),s.forEach(t=>{customElements.get(t)||customElements.define(t,class extends HTMLElement{connectedCallback(){this.innerHTML=`<div style="padding:10px;background:#eee;">${t} (Auto)</div>`}})})}var Ie=s=>s.replace(/<\/?(script|iframe|object|embed|link|meta|style)[^>]*>/gi,"").replace(/\s+on[a-z]+\s*=\s*("[^"]*"|'[^']*'|[^\s>]+)/gi,"").replace(/\s+(href|src)\s*=\s*(['"]?)\s*javascript:[^'"\s>]*/gi,""),Ut=s=>s?.map(t=>Ie(t)).join("")??"";var ot=y(require("dompurify"),1),at=(s,t)=>{let n={...{ADD_TAGS:["my-custom-tag"]},...t};return typeof s=="string"?ot.default.sanitize(s,n):ot.default.sanitize(s.innerHTML,n)};var ct=(s,t,e)=>{if(typeof s=="string"){let n=document.getElementById(s);n?n.addEventListener(t,e):console.warn(`Element with id '${s}' not found.`)}else s===document?document.addEventListener(t,e):console.warn("Invalid id parameter provided.")};var qt=require("zustand/vanilla"),lt=y(require("dompurify"),1);function Fe(s,t){let e=[],n=s.replace(/:[^/]+/g,o=>(e.push(o.slice(1)),"([^/]+)")),r=new RegExp(`^${n}$`),i=t.match(r),a={};return i&&e.forEach((o,c)=>{a[o]=lt.default.sanitize(i[c+1]??"")}),a}function Ne(s){let t={},e=new URLSearchParams(s);for(let[n,r]of e.entries())t[n]=lt.default.sanitize(r);return t}var C=(0,qt.createStore)((s,t)=>({params:{},query:{},setFromPattern:e=>{let n=window.location.pathname,r=Fe(e,n),i=Ne(window.location.search);s({params:r,query:i})},getParam:e=>t().params[e],getQuery:e=>t().query[e]}));function dt(s){let t=C.getState();t.setFromPattern(s);let e=t.params,n=t.query;return{...e,...n}}var ut=(s,t,e)=>{let n=document.querySelectorAll(s);return n.forEach(r=>{r.addEventListener(t,e)}),()=>{n.forEach(r=>{r.removeEventListener(t,e)})}};var q=y(require("dompurify"),1),ht=(s,t,e,n={})=>{let r={USE_PROFILES:{svg:!0,html:!0},ALLOWED_TAGS:["svg","path","circle","rect","line","polyline","polygon","g","main","div","h1","h2","h3","h4","h5","h6","p","button","span","a","img","input","ul","li","i"],ALLOWED_ATTR:["class","id","href","src","alt","fill","stroke","stroke-width","viewBox","xmlns","d","x","y","cx","cy","r","width","height","data-onclick","data-onchange","data-onselect"],FORBID_TAGS:["script","iframe"],ALLOWED_URI_REGEXP:/^(?:(?:https?|mailto|tel|ftp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,...e};q.default.addHook("uponSanitizeElement",(a,o)=>{let c=o.tagName.toLowerCase();c.includes("-")&&(o.allowedTags[c]=!0)}),q.default.addHook("uponSanitizeAttribute",(a,o)=>{o.attrName&&o.attrName.toLowerCase().startsWith("on")&&(o.keepAttr=!1)});let i=q.default.sanitize(t,r);s.innerHTML=i,s.querySelectorAll("[data-onclick]").forEach(a=>{let o=a.dataset.onclick;n[o]&&a.addEventListener("click",n[o])}),s.querySelectorAll("[data-onchange]").forEach(a=>{let o=a.dataset.onchange;n[o]&&a.addEventListener("change",n[o])}),s.querySelectorAll("[data-onselect]").forEach(a=>{let o=a.dataset.onselect;n[o]&&a.addEventListener("select",n[o])})};var Yt=y(require("dompurify"),1),Y=null,ft=(s,t)=>{if(typeof document>"u")return;let e=document.getElementById(s);if(!e)return;let n=e.innerHTML,i=Yt.default.sanitize(n,{ALLOWED_TAGS:["div","span","p","h1","h2","h3","h4","h5","h6","ul","ol","li","strong","em","a","img","br"],ALLOWED_ATTR:["href","src","alt","title","class","id","data-onclick","data-onchange"],ALLOW_DATA_ATTR:!1,KEEP_CONTENT:!1}).replace(/\b(href|src)=["']?(?!https?:|mailto:|\/|#)/gi,'$1="#"');if(Y!==null&&i!==Y){let a=document.createElement("div");t(a),e.innerHTML=Y}else Y=i,e.innerHTML=i,t(e)};var mt=y(require("dompurify"),1);typeof window<"u"&&!window.__anchorSinglePopstateHandlerAttached&&(window.addEventListener("popstate",s=>{let t=s.state;t?.scrollPosition!==void 0&&window.scrollTo(0,t.scrollPosition)}),window.__anchorSinglePopstateHandlerAttached=!0);var pt=(s,t,e,n="",r=null)=>{if(!s)return;let i=mt.default.sanitize(t,{ALLOWED_URI_REGEXP:/^(https?:|\/)/}),a=mt.default.sanitize(e,{USE_PROFILES:{html:!1}});s.setAttribute("href",i),s.setAttribute("aria-label",a),n&&(s.className=n.trim()),r&&s.replaceChildren(r),typeof window<"u"&&s.addEventListener("click",o=>{o.preventDefault();let d=o.currentTarget.getAttribute("href");if(d){let l=window.scrollY;window.scrollTo(0,0),window.history.pushState({scrollPosition:l},"",d),dispatchEvent(new PopStateEvent("popstate"))}})};var x=y(require("dompurify"),1);var Gt=(s="'self' 'nonce-rAnd0m123' 'unsafe-inline' 'unsafe-eval'",t="'self' 'nonce-rAnd0m123'",e="'none'",n="'self' https://fonts.googleapis.com https://fonts.gstatic.com",r="'self' https://blogger.googleusercontent.com",i=["'self'","https://fonts.googleapis.com","https://fonts.gstatic.com","https://www.google.com/maps/"],a="'self' https://www.youtube.com",o="'self'",c="/csp-report",d=!1)=>{let l=()=>{try{let u=document.querySelector('meta[http-equiv="Content-Security-Policy"]');u||(u=document.createElement("meta"),u.setAttribute("http-equiv","Content-Security-Policy"),document.head.appendChild(u));let h=d?`report-uri ${c};`:"";u.setAttribute("content",`default-src 'self'; script-src ${s}; style-src ${t}; object-src ${e}; font-src ${n}; img-src ${r}; connect-src ${i.join(" ")}; frame-src ${a}; base-uri ${o}; ${h}`)}catch(u){console.error("Error adding CSP meta element:",u)}};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",l):l()};var gt=(s,t)=>{let e={name:x.default.sanitize(s.name||""),description:x.default.sanitize(s.description||"Default description"),author:x.default.sanitize(s.author||"")},n=f=>{e.name=x.default.sanitize(f),u("name",e.name)},r=f=>{e.description=x.default.sanitize(f),u("description",e.description)},i=f=>{e.author=x.default.sanitize(f),u("author",e.author)},a=()=>e.name,o=()=>e.description,c=()=>e.author,d=()=>e,l=(f,p)=>{let g=document.createElement("meta");g.setAttribute("name",f),g.setAttribute("content",p),document.head.appendChild(g)},u=(f,p)=>{let g=document.querySelector(`meta[name="${f}"]`);g?g.setAttribute("content",p):l(f,p)},h=()=>{u("name",e.name),u("description",e.description),u("author",e.author)};return t&&Gt(t.scriptSrc,t.styleSrc,t.objectSrc,Array.isArray(t.connectSrc)?t.connectSrc.join(" "):t.connectSrc,t.reportOnly!==void 0?String(t.reportOnly):void 0),h(),{setName:n,setDescription:r,setAuthor:i,getName:a,getDescription:o,getAuthor:c,getAllMetaData:d,appendMetaTagsToHead:h}};var Bt=y(require("dompurify"),1),H=(s,t,e,n,r)=>{let i=`#${s}`,a=t.querySelectorAll(i);if(a.length===0)throw new Error(`[useTSComponent] No element found with id '${s}' in the given parent.`);if(a.length>1)throw new Error(`[useTSComponent] Duplicate id '${s}' detected. Found ${a.length} elements.`);let o=a[0];o.innerHTML=Bt.default.sanitize(o.innerHTML,{USE_PROFILES:{html:!0}}),e(o,n,r)};var wt=(s,t,e,n=[])=>{let r=new Set;s.forEach((i,a)=>{if(r.has(i)){console.warn(`[useTSCollection] Duplicate ID in collection array: "${i}" \u2014 skipping.`);return}r.add(i);let o=t.querySelectorAll(`#${i}`);if(o.length>1){console.warn(`[useTSCollection] Duplicate ID in DOM: "${i}" (${o.length} elements found) \u2014 skipping component mount.`);return}let c=e[a],d=Array.isArray(n)?n[a]:void 0;typeof c=="function"?H(i,t,c,d):console.warn(`[useTSCollection] No valid component function found for ID: "${i}"`)})};var Et=(s,t)=>{let n=(t??document).querySelectorAll(s);if(n.length===0)return process.env.NODE_ENV!=="production"&&console.warn(`[useTSSelect] No element found for selector: '${s}'`),null;if(s.startsWith("#")&&n.length>1){if(process.env.NODE_ENV!=="production")throw new Error(`[useTSSelect] Duplicate ID detected: '${s}'. Found ${n.length} elements with this ID.`);return n[0]}return n.length>1&&process.env.NODE_ENV!=="production"&&console.warn(`[useTSSelect] Multiple elements found for selector: '${s}'. Returning the first one.`),n[0]};var Vt=require("jwt-decode"),yt=(s,t)=>{let e=localStorage.getItem("token");if(!e)return window.location.href=t,null;try{let n=(0,Vt.jwtDecode)(e),r=Date.now()/1e3;return n.exp&&n.exp<r&&(console.error("Token has expired"),window.localStorage.removeItem("token"),window.location.href=t),null}catch(n){return console.error("Invalid token:",n),window.location.href=t,null}};var I=(s,t,e)=>{s.forEach(n=>{t.forEach(r=>{n.addEventListener(r,i=>{e(n,i)})})})};var Tt=()=>({back:()=>window.history.back(),forward:()=>window.history.forward()});var _t=(s,t)=>{let e=document.querySelector(`#${s}`)||document.querySelector(`.${s}`);if(!e)return;let n=window.location.pathname.replace(/\/$/,"");for(let r of t){let i=r.path.replace(/\/$/,"");if(n===i||n.startsWith(`${i}/`)){r.component(e);break}}};function St(s,t){let e=window.location.pathname.replace(/\/$/,"");t.routes.forEach(n=>{n.children?.length&&n.children.forEach(r=>{let i=r.path.replace(/\/$/,"");if(e===i||e.startsWith(`${i}/`)){let a=s.querySelector(`#${r.outlet}`)||s.querySelector(`.${r.outlet}`);a instanceof HTMLElement&&r.element&&r.element(a)}})})}var Kt=require("zustand/vanilla");function Pt(s){let t=(0,Kt.createStore)(()=>({value:s})),e=new Set;return{get:()=>t.getState().value,set:n=>{t.setState({value:n}),e.forEach(r=>r(n))},subscribe:n=>(e.add(n),n(t.getState().value),()=>e.delete(n))}}function vt(s){let t=s();typeof t=="function"&&t()}var F=()=>{let s=document.querySelectorAll('a[href^="#"]');I(s,["click"],(t,e)=>{e.preventDefault();let n=t.getAttribute("href")?.substring(1),r=n?document.getElementById(n):null;r&&r.scrollIntoView({behavior:"smooth",block:"start"})})};var Qt=require("lodash-es"),Rt=s=>s;typeof window<"u"&&typeof document<"u"&&(Rt=s=>{let t=document.createElement("div");return t.innerText=s,t.innerHTML});var ke=s=>{(s?Array.isArray(s)?s:s instanceof HTMLAnchorElement?[s]:Array.from(s):Array.from(document.querySelectorAll("a"))).forEach(e=>{if(!e||e.dataset.anchorEnhanced==="true")return;e.dataset.anchorEnhanced="true";let n=e.getAttribute("class")||"";e.setAttribute("class",Rt(n));let r=e.getAttribute("aria-label");r&&e.setAttribute("aria-label",Rt(r));let i=e.querySelector(":scope > *");i&&(e.innerHTML="",e.appendChild(i));let a=e.getAttribute("href")||"";if(!a.startsWith("#")){try{if(new URL(a,window.location.href).origin!==window.location.origin)return}catch{return}e.addEventListener("click",o=>{o.preventDefault();let c=e.getAttribute("href")||"";try{let d=new URL(c,window.location.href);window.history.pushState({},"",d.pathname+d.search+d.hash),window.dispatchEvent(new PopStateEvent("popstate"))}catch(d){console.error("Invalid URL in anchor:",c,d)}})}})},ze=(0,Qt.debounce)(ke,50),N=s=>{ze(s)};var k=s=>{let t=s.querySelectorAll("a");N(t)};var Lt=s=>{F(),k(s)};var Dt=async()=>{let s="https://cdn.jsdelivr.net/npm/brython@3/brython.min.js",t="https://cdn.jsdelivr.net/npm/brython@3/brython_stdlib.js",e=n=>new Promise((r,i)=>{let a=document.createElement("script");a.src=n,a.onload=()=>r(),a.onerror=()=>i(new Error(`Failed to load ${n}`)),document.head.appendChild(a)});await e(s),await e(t),typeof window.brython=="function"?window.brython():console.error("Brython did not load correctly.")},xt=s=>new Promise((t,e)=>{let n=document.createElement("script");n.type="text/python",n.src=`/src/python/${s}`,n.onload=()=>t(),n.onerror=()=>e(new Error(`Failed to load ${s}`)),document.body.appendChild(n)});function bt(s){let t=null;return async(e,n)=>{try{if(!t){let r=await s();t=r.default||r}if(typeof t=="function")return t(e,n);if(t instanceof HTMLElement){e?.appendChild(t);return}if(t&&typeof t.render=="function")return t.render(e,n);console.warn("useTSLazy: Unsupported module type",t)}catch(r){console.error("useTSLazy failed:",r)}}}var At=s=>typeof window>"u"?{isDOM:null}:{isDOM:s||document.body};var Mt=y(require("dompurify"),1);var Xt=require("zustand/vanilla"),Zt=y(require("dompurify"),1),L=(0,Xt.createStore)(s=>({params:{},query:{},setParams:t=>s(()=>({params:Jt(t)})),setQuery:t=>s(()=>({query:Jt(t)}))}));function Jt(s){let t={};for(let e in s)t[e]=Zt.default.sanitize(s[e]);return t}var G=class{constructor(t,e){this.routes=[];this.routes=t,this.expectedParams=new Set(e),window.addEventListener("popstate",this.handlePopState.bind(this)),this.handlePopState()}handlePopState(){let t=window.location.pathname,e=window.location.search,n=this.parseQueryParams(e),r=this.findMatchingRoute(t,this.routes);if(r){if(r.routeto){this.navigate(r.routeto);return}let i=this.filterAndSanitizeParams(r.params);L.getState().setParams(i),L.getState().setQuery(n);let a=document.createElement("div");if(r.element?.(a,i,n),r.children){let o=t.slice(r.path.length),c=a.querySelector("#child");c&&this.renderChildren(r.children,o,c,i,n)}}else{let i=this.findMatchingRoute("*",this.routes);if(i){let a=this.filterAndSanitizeParams(i.params);L.getState().setParams(a),L.getState().setQuery(n);let o=document.createElement("div");i.element?.(o,a,n)}}}renderChildren(t,e,n,r,i){if(!t||t.length===0){let o=n.querySelector("#child");o&&o.remove();return}let a=this.findMatchingRoute(e,t);if(a){let o=document.createElement("div");o.id="child";let c={...r,...a.params},d=this.filterAndSanitizeParams(c);if(L.getState().setParams(d),L.getState().setQuery(i),a.element?.(o,d,i),n.appendChild(o),a.children){let l=e.slice(a.path.length);this.renderChildren(a.children,l,o,d,i)}}}parseQueryParams(t){let e={},n=new URLSearchParams(t);for(let[r,i]of n.entries())this.expectedParams.has(r)&&(e[r]=Mt.default.sanitize(i));return e}findMatchingRoute(t,e,n={}){for(let r of e){let i=r.path;if(i==="*")return r;{let o=[],c=i.replace(/:[^\s/]+/g,u=>(o.push(u.substring(1)),"([^\\s/]+)")),d=new RegExp(`^${c}(?:/|$)`),l=t.match(d);if(l){let u={...n};if(o.forEach((h,f)=>{u[h]=l[f+1]??""}),r.children){let h=t.slice(l[0].length),f=this.findMatchingRoute(h,r.children,u);if(f)return f}return{...r,params:u}}}}}filterAndSanitizeParams(t){if(!t)return{};let e={};for(let n in t)this.expectedParams.has(n)&&(e[n]=Mt.default.sanitize(t[n]??""));return e}navigate(t){history.pushState(null,"",t),this.handlePopState()}addRoute(t){this.routes.push(t)}};var D=y(require("fs/promises"),1),P=y(require("path"),1),O=P.default.resolve("src/pages"),Re=P.default.resolve("src/gen"),Le=P.default.resolve("src/routes"),ws=P.default.join(Re,"tsrouter.gen.ts"),st=P.default.join(Le,"__root.ts"),De=async()=>{if(typeof window>"u"){console.log("\u26A0\uFE0F Skipping TS file-based router generation in SSR/Node environment");return}async function s(c){try{await D.default.mkdir(c,{recursive:!0})}catch{}}await s(Re),await s(Le);function t(c,d){let l="/"+P.default.relative(d,c).replace(/\\/g,"/");return l=l.replace(/\.ts$/,""),l=l.replace(/\/index$/,"")||"/",l=l.replace(/\[(.+?)\]/g,":$1"),l}function e(c){return c.replace(/^\//,"").split("/").map(d=>d.startsWith(":")?d.slice(1):d).filter(Boolean).join("-")||"index"}function n(c,d){let u=P.default.relative(d,c).replace(/\\/g,"/").split("/").filter(Boolean),h=u[u.length-1].replace(".ts",""),f=u.length>1?u[u.length-2]:"";if(h.startsWith("[")&&h.endsWith("]")){let p=h.slice(1,-1);return f.charAt(0).toUpperCase()+f.slice(1)+p.charAt(0).toUpperCase()+p.slice(1)+"Param"}else return h.charAt(0).toUpperCase()+h.slice(1)}async function r(c){let d=await D.default.readdir(c,{withFileTypes:!0}),l=[];for(let u of d){let h=P.default.join(c,u.name);if(u.isDirectory())l=l.concat(await r(h));else if(u.isFile()&&u.name.endsWith(".ts")){let f=t(h,O),p=e(f),g=n(h,O);l.push({file:h,route:f,routeName:p,importName:g})}}return l}function i(c,d){return`import { html, useTSElements, useTSExtractParams, useTSMetaData } from '@devwareng/vanilla-ts'
|
|
1
|
+
"use strict";var xe=Object.create;var U=Object.defineProperty;var be=Object.getOwnPropertyDescriptor;var Ae=Object.getOwnPropertyNames;var Me=Object.getPrototypeOf,Oe=Object.prototype.hasOwnProperty;var rt=(s,t)=>()=>(s&&(t=s(s=0)),t);var $t=(s,t)=>{for(var e in t)U(s,e,{get:t[e],enumerable:!0})},jt=(s,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Ae(t))!Oe.call(s,r)&&r!==e&&U(s,r,{get:()=>t[r],enumerable:!(n=be(t,r))||n.enumerable});return s};var y=(s,t,e)=>(e=s!=null?xe(Me(s)):{},jt(t||!s||!s.__esModule?U(e,"default",{value:s,enumerable:!0}):e,s)),Ce=s=>jt(U({},"__esModule",{value:!0}),s);function Vt(s,t={}){let e=t.entryType||t.type;if(e==="both"&&(e=T.FILE_DIR_TYPE),e&&(t.type=e),s){if(typeof s!="string")throw new TypeError("readdirp: root argument must be a string. Usage: readdirp(root, options)");if(e&&!Ut.includes(e))throw new Error(`readdirp: Invalid type passed. Use one of ${Ut.join(", ")}`)}else throw new Error("readdirp: root argument is required. Usage: readdirp(root, options)");return t.root=s,new at(t)}var v,Gt,R,T,ot,Bt,Ie,Ut,Fe,ke,Ne,ze,qt,Yt,at,Kt=rt(()=>{"use strict";v=require("fs/promises"),Gt=require("stream"),R=require("path"),T={FILE_TYPE:"files",DIR_TYPE:"directories",FILE_DIR_TYPE:"files_directories",EVERYTHING_TYPE:"all"},ot={root:".",fileFilter:s=>!0,directoryFilter:s=>!0,type:T.FILE_TYPE,lstat:!1,depth:2147483648,alwaysStat:!1,highWaterMark:4096};Object.freeze(ot);Bt="READDIRP_RECURSIVE_ERROR",Ie=new Set(["ENOENT","EPERM","EACCES","ELOOP",Bt]),Ut=[T.DIR_TYPE,T.EVERYTHING_TYPE,T.FILE_DIR_TYPE,T.FILE_TYPE],Fe=new Set([T.DIR_TYPE,T.EVERYTHING_TYPE,T.FILE_DIR_TYPE]),ke=new Set([T.EVERYTHING_TYPE,T.FILE_DIR_TYPE,T.FILE_TYPE]),Ne=s=>Ie.has(s.code),ze=process.platform==="win32",qt=s=>!0,Yt=s=>{if(s===void 0)return qt;if(typeof s=="function")return s;if(typeof s=="string"){let t=s.trim();return e=>e.basename===t}if(Array.isArray(s)){let t=s.map(e=>e.trim());return e=>t.some(n=>e.basename===n)}return qt},at=class extends Gt.Readable{constructor(t={}){super({objectMode:!0,autoDestroy:!0,highWaterMark:t.highWaterMark});let e={...ot,...t},{root:n,type:r}=e;this._fileFilter=Yt(e.fileFilter),this._directoryFilter=Yt(e.directoryFilter);let i=e.lstat?v.lstat:v.stat;ze?this._stat=a=>i(a,{bigint:!0}):this._stat=i,this._maxDepth=e.depth??ot.depth,this._wantsDir=r?Fe.has(r):!1,this._wantsFile=r?ke.has(r):!1,this._wantsEverything=r===T.EVERYTHING_TYPE,this._root=(0,R.resolve)(n),this._isDirent=!e.alwaysStat,this._statsProp=this._isDirent?"dirent":"stats",this._rdOptions={encoding:"utf8",withFileTypes:this._isDirent},this.parents=[this._exploreDir(n,1)],this.reading=!1,this.parent=void 0}async _read(t){if(!this.reading){this.reading=!0;try{for(;!this.destroyed&&t>0;){let e=this.parent,n=e&&e.files;if(n&&n.length>0){let{path:r,depth:i}=e,a=n.splice(0,t).map(c=>this._formatEntry(c,r)),o=await Promise.all(a);for(let c of o){if(!c)continue;if(this.destroyed)return;let l=await this._getEntryType(c);l==="directory"&&this._directoryFilter(c)?(i<=this._maxDepth&&this.parents.push(this._exploreDir(c.fullPath,i+1)),this._wantsDir&&(this.push(c),t--)):(l==="file"||this._includeAsFile(c))&&this._fileFilter(c)&&this._wantsFile&&(this.push(c),t--)}}else{let r=this.parents.pop();if(!r){this.push(null);break}if(this.parent=await r,this.destroyed)return}}}catch(e){this.destroy(e)}finally{this.reading=!1}}}async _exploreDir(t,e){let n;try{n=await(0,v.readdir)(t,this._rdOptions)}catch(r){this._onError(r)}return{files:n,depth:e,path:t}}async _formatEntry(t,e){let n,r=this._isDirent?t.name:t;try{let i=(0,R.resolve)((0,R.join)(e,r));n={path:(0,R.relative)(this._root,i),fullPath:i,basename:r},n[this._statsProp]=this._isDirent?t:await this._stat(i)}catch(i){this._onError(i);return}return n}_onError(t){Ne(t)&&!this.destroyed?this.emit("warn",t):this.destroy(t)}async _getEntryType(t){if(!t&&this._statsProp in t)return"";let e=t[this._statsProp];if(e.isFile())return"file";if(e.isDirectory())return"directory";if(e&&e.isSymbolicLink()){let n=t.fullPath;try{let r=await(0,v.realpath)(n),i=await(0,v.lstat)(r);if(i.isFile())return"file";if(i.isDirectory()){let a=r.length;if(n.startsWith(r)&&n.substr(a,1)===R.sep){let o=new Error(`Circular symlink detected: "${n}" points to "${r}"`);return o.code=Bt,this._onError(o)}return"directory"}}catch(r){return this._onError(r),""}}}_includeAsFile(t){let e=t&&t[this._statsProp];return e&&this._wantsEverything&&!e.isDirectory()}}});function Qt(s,t,e,n,r){let i=(a,o)=>{e(s),r(a,o,{watchedPath:s}),o&&s!==o&&B(w.resolve(s,o),x,w.join(s,o))};try{return(0,b.watch)(s,{persistent:t.persistent},i)}catch(a){n(a);return}}var b,S,w,Jt,We,dt,Xt,K,Q,ut,$e,je,Ue,Zt,E,_,qe,Ye,x,Y,M,Ge,Be,Ve,lt,H,Ke,I,te,G,B,Qe,ct,Je,V,ee=rt(()=>{"use strict";b=require("fs"),S=require("fs/promises"),w=y(require("path"),1),Jt=require("os"),We="data",dt="end",Xt="close",K=()=>{},Q=process.platform,ut=Q==="win32",$e=Q==="darwin",je=Q==="linux",Ue=Q==="freebsd",Zt=(0,Jt.type)()==="OS400",E={ALL:"all",READY:"ready",ADD:"add",CHANGE:"change",ADD_DIR:"addDir",UNLINK:"unlink",UNLINK_DIR:"unlinkDir",RAW:"raw",ERROR:"error"},_=E,qe="watch",Ye={lstat:S.lstat,stat:S.stat},x="listeners",Y="errHandlers",M="rawEmitters",Ge=[x,Y,M],Be=new Set(["3dm","3ds","3g2","3gp","7z","a","aac","adp","afdesign","afphoto","afpub","ai","aif","aiff","alz","ape","apk","appimage","ar","arj","asf","au","avi","bak","baml","bh","bin","bk","bmp","btif","bz2","bzip2","cab","caf","cgm","class","cmx","cpio","cr2","cur","dat","dcm","deb","dex","djvu","dll","dmg","dng","doc","docm","docx","dot","dotm","dra","DS_Store","dsk","dts","dtshd","dvb","dwg","dxf","ecelp4800","ecelp7470","ecelp9600","egg","eol","eot","epub","exe","f4v","fbs","fh","fla","flac","flatpak","fli","flv","fpx","fst","fvt","g3","gh","gif","graffle","gz","gzip","h261","h263","h264","icns","ico","ief","img","ipa","iso","jar","jpeg","jpg","jpgv","jpm","jxr","key","ktx","lha","lib","lvp","lz","lzh","lzma","lzo","m3u","m4a","m4v","mar","mdi","mht","mid","midi","mj2","mka","mkv","mmr","mng","mobi","mov","movie","mp3","mp4","mp4a","mpeg","mpg","mpga","mxu","nef","npx","numbers","nupkg","o","odp","ods","odt","oga","ogg","ogv","otf","ott","pages","pbm","pcx","pdb","pdf","pea","pgm","pic","png","pnm","pot","potm","potx","ppa","ppam","ppm","pps","ppsm","ppsx","ppt","pptm","pptx","psd","pya","pyc","pyo","pyv","qt","rar","ras","raw","resources","rgb","rip","rlc","rmf","rmvb","rpm","rtf","rz","s3m","s7z","scpt","sgi","shar","snap","sil","sketch","slk","smv","snk","so","stl","suo","sub","swf","tar","tbz","tbz2","tga","tgz","thmx","tif","tiff","tlz","ttc","ttf","txz","udf","uvh","uvi","uvm","uvp","uvs","uvu","viv","vob","war","wav","wax","wbmp","wdp","weba","webm","webp","whl","wim","wm","wma","wmv","wmx","woff","woff2","wrm","wvx","xbm","xif","xla","xlam","xls","xlsb","xlsm","xlsx","xlt","xltm","xltx","xm","xmind","xpi","xpm","xwd","xz","z","zip","zipx"]),Ve=s=>Be.has(w.extname(s).slice(1).toLowerCase()),lt=(s,t)=>{s instanceof Set?s.forEach(t):t(s)},H=(s,t,e)=>{let n=s[t];n instanceof Set||(s[t]=n=new Set([n])),n.add(e)},Ke=s=>t=>{let e=s[t];e instanceof Set?e.clear():delete s[t]},I=(s,t,e)=>{let n=s[t];n instanceof Set?n.delete(e):n===e&&delete s[t]},te=s=>s instanceof Set?s.size===0:!s,G=new Map;B=(s,t,e,n,r)=>{let i=G.get(s);i&<(i[t],a=>{a(e,n,r)})},Qe=(s,t,e,n)=>{let{listener:r,errHandler:i,rawEmitter:a}=n,o=G.get(t),c;if(!e.persistent)return c=Qt(s,e,r,i,a),c?c.close.bind(c):void 0;if(o)H(o,x,r),H(o,Y,i),H(o,M,a);else{if(c=Qt(s,e,B.bind(null,t,x),i,B.bind(null,t,M)),!c)return;c.on(_.ERROR,async l=>{let d=B.bind(null,t,Y);if(o&&(o.watcherUnusable=!0),ut&&l.code==="EPERM")try{await(await(0,S.open)(s,"r")).close(),d(l)}catch{}else d(l)}),o={listeners:r,errHandlers:i,rawEmitters:a,watcher:c},G.set(t,o)}return()=>{I(o,x,r),I(o,Y,i),I(o,M,a),te(o.listeners)&&(o.watcher.close(),G.delete(t),Ge.forEach(Ke(o)),o.watcher=void 0,Object.freeze(o))}},ct=new Map,Je=(s,t,e,n)=>{let{listener:r,rawEmitter:i}=n,a=ct.get(t),o=a&&a.options;return o&&(o.persistent<e.persistent||o.interval>e.interval)&&((0,b.unwatchFile)(t),a=void 0),a?(H(a,x,r),H(a,M,i)):(a={listeners:r,rawEmitters:i,options:e,watcher:(0,b.watchFile)(t,e,(c,l)=>{lt(a.rawEmitters,u=>{u(_.CHANGE,t,{curr:c,prev:l})});let d=c.mtimeMs;(c.size!==l.size||d>l.mtimeMs||d===0)&<(a.listeners,u=>u(s,c))})},ct.set(t,a)),()=>{I(a,x,r),I(a,M,i),te(a.listeners)&&(ct.delete(t),(0,b.unwatchFile)(t),a.options=a.watcher=void 0,Object.freeze(a))}},V=class{constructor(t){this.fsw=t,this._boundHandleError=e=>t._handleError(e)}_watchWithNodeFs(t,e){let n=this.fsw.options,r=w.dirname(t),i=w.basename(t);this.fsw._getWatchedDir(r).add(i);let o=w.resolve(t),c={persistent:n.persistent};e||(e=K);let l;if(n.usePolling){let d=n.interval!==n.binaryInterval;c.interval=d&&Ve(i)?n.binaryInterval:n.interval,l=Je(t,o,c,{listener:e,rawEmitter:this.fsw._emitRaw})}else l=Qe(t,o,c,{listener:e,errHandler:this._boundHandleError,rawEmitter:this.fsw._emitRaw});return l}_handleFile(t,e,n){if(this.fsw.closed)return;let r=w.dirname(t),i=w.basename(t),a=this.fsw._getWatchedDir(r),o=e;if(a.has(i))return;let c=async(d,u)=>{if(this.fsw._throttle(qe,t,5)){if(!u||u.mtimeMs===0)try{let h=await(0,S.stat)(t);if(this.fsw.closed)return;let f=h.atimeMs,p=h.mtimeMs;if((!f||f<=p||p!==o.mtimeMs)&&this.fsw._emit(_.CHANGE,t,h),($e||je||Ue)&&o.ino!==h.ino){this.fsw._closeFile(d),o=h;let g=this._watchWithNodeFs(t,c);g&&this.fsw._addPathCloser(d,g)}else o=h}catch{this.fsw._remove(r,i)}else if(a.has(i)){let h=u.atimeMs,f=u.mtimeMs;(!h||h<=f||f!==o.mtimeMs)&&this.fsw._emit(_.CHANGE,t,u),o=u}}},l=this._watchWithNodeFs(t,c);if(!(n&&this.fsw.options.ignoreInitial)&&this.fsw._isntIgnored(t)){if(!this.fsw._throttle(_.ADD,t,0))return;this.fsw._emit(_.ADD,t,e)}return l}async _handleSymlink(t,e,n,r){if(this.fsw.closed)return;let i=t.fullPath,a=this.fsw._getWatchedDir(e);if(!this.fsw.options.followSymlinks){this.fsw._incrReadyCount();let o;try{o=await(0,S.realpath)(n)}catch{return this.fsw._emitReady(),!0}return this.fsw.closed?void 0:(a.has(r)?this.fsw._symlinkPaths.get(i)!==o&&(this.fsw._symlinkPaths.set(i,o),this.fsw._emit(_.CHANGE,n,t.stats)):(a.add(r),this.fsw._symlinkPaths.set(i,o),this.fsw._emit(_.ADD,n,t.stats)),this.fsw._emitReady(),!0)}if(this.fsw._symlinkPaths.has(i))return!0;this.fsw._symlinkPaths.set(i,!0)}_handleRead(t,e,n,r,i,a,o){if(t=w.join(t,""),o=this.fsw._throttle("readdir",t,1e3),!o)return;let c=this.fsw._getWatchedDir(n.path),l=new Set,d=this.fsw._readdirp(t,{fileFilter:u=>n.filterPath(u),directoryFilter:u=>n.filterDir(u)});if(d)return d.on(We,async u=>{if(this.fsw.closed){d=void 0;return}let h=u.path,f=w.join(t,h);if(l.add(h),!(u.stats.isSymbolicLink()&&await this._handleSymlink(u,t,f,h))){if(this.fsw.closed){d=void 0;return}(h===r||!r&&!c.has(h))&&(this.fsw._incrReadyCount(),f=w.join(i,w.relative(i,f)),this._addToNodeFs(f,e,n,a+1))}}).on(_.ERROR,this._boundHandleError),new Promise((u,h)=>{if(!d)return h();d.once(dt,()=>{if(this.fsw.closed){d=void 0;return}let f=o?o.clear():!1;u(void 0),c.getChildren().filter(p=>p!==t&&!l.has(p)).forEach(p=>{this.fsw._remove(t,p)}),d=void 0,f&&this._handleRead(t,!1,n,r,i,a,o)})})}async _handleDir(t,e,n,r,i,a,o){let c=this.fsw._getWatchedDir(w.dirname(t)),l=c.has(w.basename(t));!(n&&this.fsw.options.ignoreInitial)&&!i&&!l&&this.fsw._emit(_.ADD_DIR,t,e),c.add(w.basename(t)),this.fsw._getWatchedDir(t);let d,u,h=this.fsw.options.depth;if((h==null||r<=h)&&!this.fsw._symlinkPaths.has(o)){if(!i&&(await this._handleRead(t,n,a,i,t,r,d),this.fsw.closed))return;u=this._watchWithNodeFs(t,(f,p)=>{p&&p.mtimeMs===0||this._handleRead(f,!1,a,i,t,r,d)})}return u}async _addToNodeFs(t,e,n,r,i){let a=this.fsw._emitReady;if(this.fsw._isIgnored(t)||this.fsw.closed)return a(),!1;let o=this.fsw._getWatchHelpers(t);n&&(o.filterPath=c=>n.filterPath(c),o.filterDir=c=>n.filterDir(c));try{let c=await Ye[o.statMethod](o.watchPath);if(this.fsw.closed)return;if(this.fsw._isIgnored(o.watchPath,c))return a(),!1;let l=this.fsw.options.followSymlinks,d;if(c.isDirectory()){let u=w.resolve(t),h=l?await(0,S.realpath)(t):t;if(this.fsw.closed||(d=await this._handleDir(o.watchPath,c,e,r,i,o,h),this.fsw.closed))return;u!==h&&h!==void 0&&this.fsw._symlinkPaths.set(u,h)}else if(c.isSymbolicLink()){let u=l?await(0,S.realpath)(t):t;if(this.fsw.closed)return;let h=w.dirname(o.watchPath);if(this.fsw._getWatchedDir(h).add(o.watchPath),this.fsw._emit(_.ADD,o.watchPath,c),d=await this._handleDir(h,c,e,r,t,o,u),this.fsw.closed)return;u!==void 0&&this.fsw._symlinkPaths.set(w.resolve(t),u)}else d=this._handleFile(o.watchPath,c,e);return a(),d&&this.fsw._addPathCloser(t,d),!1}catch(c){if(this.fsw._handleError(c))return a(),t}}}});var he={};$t(he,{FSWatcher:()=>F,WatchHelper:()=>X,default:()=>us,watch:()=>ue});function J(s){return Array.isArray(s)?s:[s]}function rs(s){return typeof s=="function"?s:typeof s=="string"?t=>s===t:s instanceof RegExp?t=>s.test(t):typeof s=="object"&&s!==null?t=>{if(s.path===t)return!0;if(s.recursive){let e=m.relative(s.path,t);return e?!e.startsWith("..")&&!m.isAbsolute(e):!1}return!1}:()=>!1}function is(s){if(typeof s!="string")throw new Error("string expected");s=m.normalize(s),s=s.replace(/\\/g,"/");let t=!1;s.startsWith("//")&&(t=!0);let e=/\/\//;for(;s.match(e);)s=s.replace(e,"/");return t&&(s="/"+s),s}function ne(s,t,e){let n=is(t);for(let r=0;r<s.length;r++){let i=s[r];if(i(n,e))return!0}return!1}function os(s,t){if(s==null)throw new TypeError("anymatch: specify first argument");let n=J(s).map(r=>rs(r));return t==null?(r,i)=>ne(n,r,i):ne(n,t)}function ue(s,t={}){let e=new F(t);return e.add(s),e}var ae,Z,ce,m,ht,Xe,le,Ze,ts,es,se,ss,ns,ft,re,ie,de,oe,as,cs,mt,ls,ds,X,F,us,fe=rt(()=>{"use strict";ae=require("fs"),Z=require("fs/promises"),ce=require("events"),m=y(require("path"),1);Kt();ee();ht="/",Xe="//",le=".",Ze="..",ts="string",es=/\\/g,se=/\/\//,ss=/\..*\.(sw[px])$|~$|\.subl.*\.tmp/,ns=/^\.[/\\]/;ft=s=>typeof s=="object"&&s!==null&&!(s instanceof RegExp);re=s=>{let t=J(s).flat();if(!t.every(e=>typeof e===ts))throw new TypeError(`Non-string provided as watch path: ${t}`);return t.map(de)},ie=s=>{let t=s.replace(es,ht),e=!1;for(t.startsWith(Xe)&&(e=!0);t.match(se);)t=t.replace(se,ht);return e&&(t=ht+t),t},de=s=>ie(m.normalize(ie(s))),oe=(s="")=>t=>typeof t=="string"?de(m.isAbsolute(t)?t:m.join(s,t)):t,as=(s,t)=>m.isAbsolute(s)?s:m.join(t,s),cs=Object.freeze(new Set),mt=class{constructor(t,e){this.path=t,this._removeWatcher=e,this.items=new Set}add(t){let{items:e}=this;e&&t!==le&&t!==Ze&&e.add(t)}async remove(t){let{items:e}=this;if(!e||(e.delete(t),e.size>0))return;let n=this.path;try{await(0,Z.readdir)(n)}catch{this._removeWatcher&&this._removeWatcher(m.dirname(n),m.basename(n))}}has(t){let{items:e}=this;if(e)return e.has(t)}getChildren(){let{items:t}=this;return t?[...t.values()]:[]}dispose(){this.items.clear(),this.path="",this._removeWatcher=K,this.items=cs,Object.freeze(this)}},ls="stat",ds="lstat",X=class{constructor(t,e,n){this.fsw=n;let r=t;this.path=t=t.replace(ns,""),this.watchPath=r,this.fullWatchPath=m.resolve(r),this.dirParts=[],this.dirParts.forEach(i=>{i.length>1&&i.pop()}),this.followSymlinks=e,this.statMethod=e?ls:ds}entryPath(t){return m.join(this.watchPath,m.relative(this.watchPath,t.fullPath))}filterPath(t){let{stats:e}=t;if(e&&e.isSymbolicLink())return this.filterDir(t);let n=this.entryPath(t);return this.fsw._isntIgnored(n,e)&&this.fsw._hasReadPermissions(e)}filterDir(t){return this.fsw._isntIgnored(this.entryPath(t),t.stats)}},F=class extends ce.EventEmitter{constructor(t={}){super(),this.closed=!1,this._closers=new Map,this._ignoredPaths=new Set,this._throttled=new Map,this._streams=new Set,this._symlinkPaths=new Map,this._watched=new Map,this._pendingWrites=new Map,this._pendingUnlinks=new Map,this._readyCount=0,this._readyEmitted=!1;let e=t.awaitWriteFinish,n={stabilityThreshold:2e3,pollInterval:100},r={persistent:!0,ignoreInitial:!1,ignorePermissionErrors:!1,interval:100,binaryInterval:300,followSymlinks:!0,usePolling:!1,atomic:!0,...t,ignored:t.ignored?J(t.ignored):J([]),awaitWriteFinish:e===!0?n:typeof e=="object"?{...n,...e}:!1};Zt&&(r.usePolling=!0),r.atomic===void 0&&(r.atomic=!r.usePolling);let i=process.env.CHOKIDAR_USEPOLLING;if(i!==void 0){let c=i.toLowerCase();c==="false"||c==="0"?r.usePolling=!1:c==="true"||c==="1"?r.usePolling=!0:r.usePolling=!!c}let a=process.env.CHOKIDAR_INTERVAL;a&&(r.interval=Number.parseInt(a,10));let o=0;this._emitReady=()=>{o++,o>=this._readyCount&&(this._emitReady=K,this._readyEmitted=!0,process.nextTick(()=>this.emit(E.READY)))},this._emitRaw=(...c)=>this.emit(E.RAW,...c),this._boundRemove=this._remove.bind(this),this.options=r,this._nodeFsHandler=new V(this),Object.freeze(r)}_addIgnoredPath(t){if(ft(t)){for(let e of this._ignoredPaths)if(ft(e)&&e.path===t.path&&e.recursive===t.recursive)return}this._ignoredPaths.add(t)}_removeIgnoredPath(t){if(this._ignoredPaths.delete(t),typeof t=="string")for(let e of this._ignoredPaths)ft(e)&&e.path===t&&this._ignoredPaths.delete(e)}add(t,e,n){let{cwd:r}=this.options;this.closed=!1,this._closePromise=void 0;let i=re(t);return r&&(i=i.map(a=>as(a,r))),i.forEach(a=>{this._removeIgnoredPath(a)}),this._userIgnored=void 0,this._readyCount||(this._readyCount=0),this._readyCount+=i.length,Promise.all(i.map(async a=>{let o=await this._nodeFsHandler._addToNodeFs(a,!n,void 0,0,e);return o&&this._emitReady(),o})).then(a=>{this.closed||a.forEach(o=>{o&&this.add(m.dirname(o),m.basename(e||o))})}),this}unwatch(t){if(this.closed)return this;let e=re(t),{cwd:n}=this.options;return e.forEach(r=>{!m.isAbsolute(r)&&!this._closers.has(r)&&(n&&(r=m.join(n,r)),r=m.resolve(r)),this._closePath(r),this._addIgnoredPath(r),this._watched.has(r)&&this._addIgnoredPath({path:r,recursive:!0}),this._userIgnored=void 0}),this}close(){if(this._closePromise)return this._closePromise;this.closed=!0,this.removeAllListeners();let t=[];return this._closers.forEach(e=>e.forEach(n=>{let r=n();r instanceof Promise&&t.push(r)})),this._streams.forEach(e=>e.destroy()),this._userIgnored=void 0,this._readyCount=0,this._readyEmitted=!1,this._watched.forEach(e=>e.dispose()),this._closers.clear(),this._watched.clear(),this._streams.clear(),this._symlinkPaths.clear(),this._throttled.clear(),this._closePromise=t.length?Promise.all(t).then(()=>{}):Promise.resolve(),this._closePromise}getWatched(){let t={};return this._watched.forEach((e,n)=>{let i=(this.options.cwd?m.relative(this.options.cwd,n):n)||le;t[i]=e.getChildren().sort()}),t}emitWithAll(t,e){this.emit(t,...e),t!==E.ERROR&&this.emit(E.ALL,t,...e)}async _emit(t,e,n){if(this.closed)return;let r=this.options;ut&&(e=m.normalize(e)),r.cwd&&(e=m.relative(r.cwd,e));let i=[e];n!=null&&i.push(n);let a=r.awaitWriteFinish,o;if(a&&(o=this._pendingWrites.get(e)))return o.lastChange=new Date,this;if(r.atomic){if(t===E.UNLINK)return this._pendingUnlinks.set(e,[t,...i]),setTimeout(()=>{this._pendingUnlinks.forEach((c,l)=>{this.emit(...c),this.emit(E.ALL,...c),this._pendingUnlinks.delete(l)})},typeof r.atomic=="number"?r.atomic:100),this;t===E.ADD&&this._pendingUnlinks.has(e)&&(t=E.CHANGE,this._pendingUnlinks.delete(e))}if(a&&(t===E.ADD||t===E.CHANGE)&&this._readyEmitted){let c=(l,d)=>{l?(t=E.ERROR,i[0]=l,this.emitWithAll(t,i)):d&&(i.length>1?i[1]=d:i.push(d),this.emitWithAll(t,i))};return this._awaitWriteFinish(e,a.stabilityThreshold,t,c),this}if(t===E.CHANGE&&!this._throttle(E.CHANGE,e,50))return this;if(r.alwaysStat&&n===void 0&&(t===E.ADD||t===E.ADD_DIR||t===E.CHANGE)){let c=r.cwd?m.join(r.cwd,e):e,l;try{l=await(0,Z.stat)(c)}catch{}if(!l||this.closed)return;i.push(l)}return this.emitWithAll(t,i),this}_handleError(t){let e=t&&t.code;return t&&e!=="ENOENT"&&e!=="ENOTDIR"&&(!this.options.ignorePermissionErrors||e!=="EPERM"&&e!=="EACCES")&&this.emit(E.ERROR,t),t||this.closed}_throttle(t,e,n){this._throttled.has(t)||this._throttled.set(t,new Map);let r=this._throttled.get(t);if(!r)throw new Error("invalid throttle");let i=r.get(e);if(i)return i.count++,!1;let a,o=()=>{let l=r.get(e),d=l?l.count:0;return r.delete(e),clearTimeout(a),l&&clearTimeout(l.timeoutObject),d};a=setTimeout(o,n);let c={timeoutObject:a,clear:o,count:0};return r.set(e,c),c}_incrReadyCount(){return this._readyCount++}_awaitWriteFinish(t,e,n,r){let i=this.options.awaitWriteFinish;if(typeof i!="object")return;let a=i.pollInterval,o,c=t;this.options.cwd&&!m.isAbsolute(t)&&(c=m.join(this.options.cwd,t));let l=new Date,d=this._pendingWrites;function u(h){(0,ae.stat)(c,(f,p)=>{if(f||!d.has(t)){f&&f.code!=="ENOENT"&&r(f);return}let g=Number(new Date);h&&p.size!==h.size&&(d.get(t).lastChange=g);let C=d.get(t);g-C.lastChange>=e?(d.delete(t),r(void 0,p)):o=setTimeout(u,a,p)})}d.has(t)||(d.set(t,{lastChange:l,cancelWait:()=>(d.delete(t),clearTimeout(o),n)}),o=setTimeout(u,a))}_isIgnored(t,e){if(this.options.atomic&&ss.test(t))return!0;if(!this._userIgnored){let{cwd:n}=this.options,i=(this.options.ignored||[]).map(oe(n)),o=[...[...this._ignoredPaths].map(oe(n)),...i];this._userIgnored=os(o,void 0)}return this._userIgnored(t,e)}_isntIgnored(t,e){return!this._isIgnored(t,e)}_getWatchHelpers(t){return new X(t,this.options.followSymlinks,this)}_getWatchedDir(t){let e=m.resolve(t);return this._watched.has(e)||this._watched.set(e,new mt(e,this._boundRemove)),this._watched.get(e)}_hasReadPermissions(t){return this.options.ignorePermissionErrors?!0:!!(Number(t.mode)&256)}_remove(t,e,n){let r=m.join(t,e),i=m.resolve(r);if(n=n??(this._watched.has(r)||this._watched.has(i)),!this._throttle("remove",r,100))return;!n&&this._watched.size===1&&this.add(t,e,!0),this._getWatchedDir(r).getChildren().forEach(h=>this._remove(r,h));let c=this._getWatchedDir(t),l=c.has(e);c.remove(e),this._symlinkPaths.has(i)&&this._symlinkPaths.delete(i);let d=r;if(this.options.cwd&&(d=m.relative(this.options.cwd,r)),this.options.awaitWriteFinish&&this._pendingWrites.has(d)&&this._pendingWrites.get(d).cancelWait()===E.ADD)return;this._watched.delete(r),this._watched.delete(i);let u=n?E.UNLINK_DIR:E.UNLINK;l&&!this._isIgnored(r)&&this._emit(u,r),this._closePath(r)}_closePath(t){this._closeFile(t);let e=m.dirname(t);this._getWatchedDir(e).remove(m.basename(t))}_closeFile(t){let e=this._closers.get(t);e&&(e.forEach(n=>n()),this._closers.delete(t))}_addPathCloser(t,e){if(!e)return;let n=this._closers.get(t);n||(n=[],this._closers.set(t,n)),n.push(e)}_readdirp(t,e){if(this.closed)return;let n={type:E.ALL,alwaysStat:!0,lstat:!0,...e,depth:0},r=Vt(t,n);return this._streams.add(r),r.once(Xt,()=>{r=void 0}),r.once(dt,()=>{r&&(this._streams.delete(r),r=void 0)}),r}};us={watch:ue,FSWatcher:F}});var Es={};$t(Es,{TSRouter:()=>nt,createEffect:()=>Ct,createSignal:()=>Ot,html:()=>it,loadPyFiles:()=>kt,mapper:()=>we,renderChildRoutes:()=>Mt,useAnchor:()=>$,useAnchorSingle:()=>vt,useInitialDOM:()=>St,useTSAnchorMount:()=>It,useTSAuth:()=>xt,useTSCollection:()=>Lt,useTSComponent:()=>N,useTSElementEach:()=>z,useTSElements:()=>_t,useTSEvent:()=>wt,useTSEventAll:()=>Tt,useTSExtractParams:()=>yt,useTSHashAnchor:()=>W,useTSLazy:()=>Nt,useTSMetaData:()=>Rt,useTSNavigate:()=>bt,useTSNoReload:()=>j,useTSOutlet:()=>At,useTSParams:()=>k,useTSPurifier:()=>gt,useTSSSRHydration:()=>zt,useTSSelect:()=>Dt,useTSloadBrython:()=>Ft});module.exports=Ce(Es);function He(s){return(s==null?"":String(s)).replace(/<\s*(script|iframe|object|embed|link|style)[^>]*>.*?<\s*\/\s*\1\s*>/gi,"").replace(/<\s*(script|iframe|object|embed|link|style)[^>]*>/gi,"").replace(/\son\w+\s*=\s*(['"]).*?\1/gi,"").replace(/\s(href|src)\s*=\s*(['"])\s*javascript:[^'"]*\2/gi,"")}function it(s,...t){return s.reduce((e,n,r)=>{let i=r<t.length?He(t[r]):"";return e+n+i},"")}function q(){let s=new Set;document.querySelectorAll("*").forEach(t=>{let e=t.tagName.toLowerCase();e.includes("-")&&s.add(e)}),s.forEach(t=>{customElements.get(t)||customElements.define(t,class extends HTMLElement{connectedCallback(){this.innerHTML=`<div style="padding:10px;background:#eee;">${t} (Auto)</div>`}})})}var L=y(require("fs/promises"),1),P=y(require("path"),1),O=P.default.resolve("src/pages"),me=P.default.resolve("src/gen"),pe=P.default.resolve("src/routes"),hs=P.default.join(me,"tsrouter.gen.ts"),tt=P.default.join(pe,"__root.ts"),ge=async()=>{if(typeof window<"u"){console.log("\u26A0\uFE0F Skipping TS file-based router generation in browser environment");return}async function s(c){try{await L.default.mkdir(c,{recursive:!0})}catch{}}await s(me),await s(pe);function t(c,l){let d="/"+P.default.relative(l,c).replace(/\\/g,"/");return d=d.replace(/\.ts$/,""),d=d.replace(/\/index$/,"")||"/",d=d.replace(/\[(.+?)\]/g,":$1"),d}function e(c){return c.replace(/^\//,"").split("/").map(l=>l.startsWith(":")?l.slice(1):l).filter(Boolean).join("-")||"index"}function n(c,l){let u=P.default.relative(l,c).replace(/\\/g,"/").split("/").filter(Boolean),h=u[u.length-1].replace(".ts",""),f=u.length>1?u[u.length-2]:"";if(h.startsWith("[")&&h.endsWith("]")){let p=h.slice(1,-1);return f.charAt(0).toUpperCase()+f.slice(1)+p.charAt(0).toUpperCase()+p.slice(1)+"Param"}else return h.charAt(0).toUpperCase()+h.slice(1)}async function r(c){let l=await L.default.readdir(c,{withFileTypes:!0}),d=[];for(let u of l){let h=P.default.join(c,u.name);if(u.isDirectory())d=d.concat(await r(h));else if(u.isFile()&&u.name.endsWith(".ts")){let f=t(h,O),p=e(f),g=n(h,O);d.push({file:h,route:f,routeName:p,importName:g})}}return d}function i(c,l){return`import { html, useTSElements, useTSExtractParams, useTSMetaData } from '@devwareng/vanilla-ts'
|
|
2
2
|
|
|
3
3
|
export default function ${c}(DOM: HTMLElement) {
|
|
4
4
|
useTSMetaData({ name: '${c.toLowerCase()}', description: '', author: '' })
|
|
5
|
-
const params = useTSExtractParams("${
|
|
5
|
+
const params = useTSExtractParams("${l}")
|
|
6
6
|
return useTSElements(DOM, html\`
|
|
7
7
|
<div class="p-4">
|
|
8
8
|
<h1 class="font-semibold">${c}</h1>
|
|
@@ -17,9 +17,9 @@ export const Router = (DOM: HTMLElement) => {
|
|
|
17
17
|
const router = createRouter(DOM)
|
|
18
18
|
router.navigate(window.location.pathname)
|
|
19
19
|
window.addEventListener("popstate", () => router.navigate(window.location.pathname))
|
|
20
|
-
}`}async function o(){let c=await r(O),
|
|
21
|
-
`),h=
|
|
22
|
-
`),f=
|
|
20
|
+
}`}async function o(){let c=await r(O),l=c.find(g=>g.route==="/notfound"),d=c.filter(g=>g.route!=="/notfound"),u=c.map(g=>{let C="../pages/"+P.default.relative(O,g.file).replace(/\\/g,"/").replace(/\.ts$/,"");return`import ${g.importName} from "${C}";`}).join(`
|
|
21
|
+
`),h=d.map(g=>`{ path: "${g.route}", name: "${g.routeName}", component: (DOM: HTMLElement) => ${g.importName}(DOM) }`).join(`,
|
|
22
|
+
`),f=l?`export const NotFound = ${l.importName}`:"export function NotFound(DOM: HTMLElement) {\n return useTSElements(DOM, html`<div><h1>404 - Page Not Found</h1></div>`)\n}",p=`// AUTO-GENERATED FILE. DO NOT EDIT MANUALLY.
|
|
23
23
|
import { html, useTSElements } from "@devwareng/vanilla-ts"
|
|
24
24
|
|
|
25
25
|
${u}
|
|
@@ -65,7 +65,7 @@ export function createRouter(DOM: HTMLElement) {
|
|
|
65
65
|
|
|
66
66
|
navigate(window.location.pathname + window.location.search)
|
|
67
67
|
return { navigate, routes: routeTree }
|
|
68
|
-
}`;await D.default.writeFile(ws,p,"utf-8"),await D.default.writeFile(st,a(),"utf-8"),console.log("\u2705 Generated router and __root.ts")}if(typeof window>"u")try{let c=await Promise.resolve().then(()=>(ve(),Pe));console.log("\u{1F440} Watching for changes in /src/pages and /src/routes/__root.ts..."),c.watch(O).on("all",async(d,l)=>{if(d==="add"&&l.endsWith(".ts")){let u=P.default.basename(l,".ts"),h=u.replace(/\[|\]/g,"Param").replace(/(^\w|-\w)/g,g=>g.replace("-","").toUpperCase()),f=t(l,O);(await D.default.readFile(l,"utf-8")).trim()||(await D.default.writeFile(l,i(h,f),"utf-8"),console.log(`\u{1F4DD} Scaffolded page: ${u}.ts`))}await o()}),c.watch(st).on("unlink",async()=>{console.log("\u26A0\uFE0F __root.ts deleted. Recreating..."),await D.default.writeFile(st,a(),"utf-8"),console.log("\u{1F7E2} Recreated:",st)})}catch{console.warn("\u26A0\uFE0F Chokidar not available, skipping watch mode.")}console.log("\u{1F7E2} TS Filebased Router Mounted Successfully...")};typeof window<"u"&&(window.addEventListener("popstate",()=>{U()}),window.addEventListener("DOMContentLoaded",U));0&&(module.exports={TSRouter,createEffect,createSignal,html,loadPyFiles,mapper,renderChildRoutes,useAnchor,useAnchorSingle,useInitialDOM,useTSAnchorMount,useTSAuth,useTSCollection,useTSComponent,useTSElementEach,useTSElements,useTSEvent,useTSEventAll,useTSExtractParams,useTSFilebasedRouter,useTSHashAnchor,useTSLazy,useTSMetaData,useTSNavigate,useTSNoReload,useTSOutlet,useTSParams,useTSPurifier,useTSSSRHydration,useTSSelect,useTSloadBrython});
|
|
68
|
+
}`;await L.default.writeFile(hs,p,"utf-8"),await L.default.writeFile(tt,a(),"utf-8"),console.log("\u2705 Generated router and __root.ts")}try{let c=await Promise.resolve().then(()=>(fe(),he)),l=c.default??c;console.log("\u{1F440} Watching for changes in /src/pages and /src/routes/__root.ts..."),l.watch(O).on("all",async(d,u)=>{if(d==="add"&&u.endsWith(".ts")){let h=P.default.basename(u,".ts"),f=h.replace(/\[|\]/g,"Param").replace(/(^\w|-\w)/g,C=>C.replace("-","").toUpperCase()),p=t(u,O);(await L.default.readFile(u,"utf-8")).trim()||(await L.default.writeFile(u,i(f,p),"utf-8"),console.log(`\u{1F4DD} Scaffolded page: ${h}.ts`))}await o()}),l.watch(tt).on("unlink",async()=>{console.log("\u26A0\uFE0F __root.ts deleted. Recreating..."),await L.default.writeFile(tt,a(),"utf-8"),console.log("\u{1F7E2} Recreated:",tt)})}catch{console.warn("\u26A0\uFE0F Chokidar not available, skipping watch mode.")}console.log("\u{1F7E2} TS Filebased Router Mounted Successfully...")};var fs=s=>s.replace(/<\/?(script|iframe|object|embed|link|meta|style)[^>]*>/gi,"").replace(/\s+on[a-z]+\s*=\s*("[^"]*"|'[^']*'|[^\s>]+)/gi,"").replace(/\s+(href|src)\s*=\s*(['"]?)\s*javascript:[^'"\s>]*/gi,""),we=s=>s?.map(t=>fs(t)).join("")??"";var pt=y(require("dompurify"),1),gt=(s,t)=>{let n={...{ADD_TAGS:["my-custom-tag"]},...t};return typeof s=="string"?pt.default.sanitize(s,n):pt.default.sanitize(s.innerHTML,n)};var wt=(s,t,e)=>{if(typeof s=="string"){let n=document.getElementById(s);n?n.addEventListener(t,e):console.warn(`Element with id '${s}' not found.`)}else s===document?document.addEventListener(t,e):console.warn("Invalid id parameter provided.")};var Ee=require("zustand/vanilla"),Et=y(require("dompurify"),1);function ms(s,t){let e=[],n=s.replace(/:[^/]+/g,o=>(e.push(o.slice(1)),"([^/]+)")),r=new RegExp(`^${n}$`),i=t.match(r),a={};return i&&e.forEach((o,c)=>{a[o]=Et.default.sanitize(i[c+1]??"")}),a}function ps(s){let t={},e=new URLSearchParams(s);for(let[n,r]of e.entries())t[n]=Et.default.sanitize(r);return t}var k=(0,Ee.createStore)((s,t)=>({params:{},query:{},setFromPattern:e=>{let n=window.location.pathname,r=ms(e,n),i=ps(window.location.search);s({params:r,query:i})},getParam:e=>t().params[e],getQuery:e=>t().query[e]}));function yt(s){let t=k.getState();t.setFromPattern(s);let e=t.params,n=t.query;return{...e,...n}}var Tt=(s,t,e)=>{let n=document.querySelectorAll(s);return n.forEach(r=>{r.addEventListener(t,e)}),()=>{n.forEach(r=>{r.removeEventListener(t,e)})}};var et=y(require("dompurify"),1),_t=(s,t,e,n={})=>{let r={USE_PROFILES:{svg:!0,html:!0},ALLOWED_TAGS:["svg","path","circle","rect","line","polyline","polygon","g","main","div","h1","h2","h3","h4","h5","h6","p","button","span","a","img","input","ul","li","i"],ALLOWED_ATTR:["class","id","href","src","alt","fill","stroke","stroke-width","viewBox","xmlns","d","x","y","cx","cy","r","width","height","data-onclick","data-onchange","data-onselect"],FORBID_TAGS:["script","iframe"],ALLOWED_URI_REGEXP:/^(?:(?:https?|mailto|tel|ftp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,...e};et.default.addHook("uponSanitizeElement",(a,o)=>{let c=o.tagName.toLowerCase();c.includes("-")&&(o.allowedTags[c]=!0)}),et.default.addHook("uponSanitizeAttribute",(a,o)=>{o.attrName&&o.attrName.toLowerCase().startsWith("on")&&(o.keepAttr=!1)});let i=et.default.sanitize(t,r);s.innerHTML=i,s.querySelectorAll("[data-onclick]").forEach(a=>{let o=a.dataset.onclick;n[o]&&a.addEventListener("click",n[o])}),s.querySelectorAll("[data-onchange]").forEach(a=>{let o=a.dataset.onchange;n[o]&&a.addEventListener("change",n[o])}),s.querySelectorAll("[data-onselect]").forEach(a=>{let o=a.dataset.onselect;n[o]&&a.addEventListener("select",n[o])})};var ye=y(require("dompurify"),1),st=null,St=(s,t)=>{if(typeof document>"u")return;let e=document.getElementById(s);if(!e)return;let n=e.innerHTML,i=ye.default.sanitize(n,{ALLOWED_TAGS:["div","span","p","h1","h2","h3","h4","h5","h6","ul","ol","li","strong","em","a","img","br"],ALLOWED_ATTR:["href","src","alt","title","class","id","data-onclick","data-onchange"],ALLOW_DATA_ATTR:!1,KEEP_CONTENT:!1}).replace(/\b(href|src)=["']?(?!https?:|mailto:|\/|#)/gi,'$1="#"');if(st!==null&&i!==st){let a=document.createElement("div");t(a),e.innerHTML=st}else st=i,e.innerHTML=i,t(e)};var Pt=y(require("dompurify"),1);typeof window<"u"&&!window.__anchorSinglePopstateHandlerAttached&&(window.addEventListener("popstate",s=>{let t=s.state;t?.scrollPosition!==void 0&&window.scrollTo(0,t.scrollPosition)}),window.__anchorSinglePopstateHandlerAttached=!0);var vt=(s,t,e,n="",r=null)=>{if(!s)return;let i=Pt.default.sanitize(t,{ALLOWED_URI_REGEXP:/^(https?:|\/)/}),a=Pt.default.sanitize(e,{USE_PROFILES:{html:!1}});s.setAttribute("href",i),s.setAttribute("aria-label",a),n&&(s.className=n.trim()),r&&s.replaceChildren(r),typeof window<"u"&&s.addEventListener("click",o=>{o.preventDefault();let l=o.currentTarget.getAttribute("href");if(l){let d=window.scrollY;window.scrollTo(0,0),window.history.pushState({scrollPosition:d},"",l),dispatchEvent(new PopStateEvent("popstate"))}})};var A=y(require("dompurify"),1);var Te=(s="'self' 'nonce-rAnd0m123' 'unsafe-inline' 'unsafe-eval'",t="'self' 'nonce-rAnd0m123'",e="'none'",n="'self' https://fonts.googleapis.com https://fonts.gstatic.com",r="'self' https://blogger.googleusercontent.com",i=["'self'","https://fonts.googleapis.com","https://fonts.gstatic.com","https://www.google.com/maps/"],a="'self' https://www.youtube.com",o="'self'",c="/csp-report",l=!1)=>{let d=()=>{try{let u=document.querySelector('meta[http-equiv="Content-Security-Policy"]');u||(u=document.createElement("meta"),u.setAttribute("http-equiv","Content-Security-Policy"),document.head.appendChild(u));let h=l?`report-uri ${c};`:"";u.setAttribute("content",`default-src 'self'; script-src ${s}; style-src ${t}; object-src ${e}; font-src ${n}; img-src ${r}; connect-src ${i.join(" ")}; frame-src ${a}; base-uri ${o}; ${h}`)}catch(u){console.error("Error adding CSP meta element:",u)}};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",d):d()};var Rt=(s,t)=>{let e={name:A.default.sanitize(s.name||""),description:A.default.sanitize(s.description||"Default description"),author:A.default.sanitize(s.author||"")},n=f=>{e.name=A.default.sanitize(f),u("name",e.name)},r=f=>{e.description=A.default.sanitize(f),u("description",e.description)},i=f=>{e.author=A.default.sanitize(f),u("author",e.author)},a=()=>e.name,o=()=>e.description,c=()=>e.author,l=()=>e,d=(f,p)=>{let g=document.createElement("meta");g.setAttribute("name",f),g.setAttribute("content",p),document.head.appendChild(g)},u=(f,p)=>{let g=document.querySelector(`meta[name="${f}"]`);g?g.setAttribute("content",p):d(f,p)},h=()=>{u("name",e.name),u("description",e.description),u("author",e.author)};return t&&Te(t.scriptSrc,t.styleSrc,t.objectSrc,Array.isArray(t.connectSrc)?t.connectSrc.join(" "):t.connectSrc,t.reportOnly!==void 0?String(t.reportOnly):void 0),h(),{setName:n,setDescription:r,setAuthor:i,getName:a,getDescription:o,getAuthor:c,getAllMetaData:l,appendMetaTagsToHead:h}};var _e=y(require("dompurify"),1),N=(s,t,e,n,r)=>{let i=`#${s}`,a=t.querySelectorAll(i);if(a.length===0)throw new Error(`[useTSComponent] No element found with id '${s}' in the given parent.`);if(a.length>1)throw new Error(`[useTSComponent] Duplicate id '${s}' detected. Found ${a.length} elements.`);let o=a[0];o.innerHTML=_e.default.sanitize(o.innerHTML,{USE_PROFILES:{html:!0}}),e(o,n,r)};var Lt=(s,t,e,n=[])=>{let r=new Set;s.forEach((i,a)=>{if(r.has(i)){console.warn(`[useTSCollection] Duplicate ID in collection array: "${i}" \u2014 skipping.`);return}r.add(i);let o=t.querySelectorAll(`#${i}`);if(o.length>1){console.warn(`[useTSCollection] Duplicate ID in DOM: "${i}" (${o.length} elements found) \u2014 skipping component mount.`);return}let c=e[a],l=Array.isArray(n)?n[a]:void 0;typeof c=="function"?N(i,t,c,l):console.warn(`[useTSCollection] No valid component function found for ID: "${i}"`)})};var Dt=(s,t)=>{let n=(t??document).querySelectorAll(s);if(n.length===0)return process.env.NODE_ENV!=="production"&&console.warn(`[useTSSelect] No element found for selector: '${s}'`),null;if(s.startsWith("#")&&n.length>1){if(process.env.NODE_ENV!=="production")throw new Error(`[useTSSelect] Duplicate ID detected: '${s}'. Found ${n.length} elements with this ID.`);return n[0]}return n.length>1&&process.env.NODE_ENV!=="production"&&console.warn(`[useTSSelect] Multiple elements found for selector: '${s}'. Returning the first one.`),n[0]};var Se=require("jwt-decode"),xt=(s,t)=>{let e=localStorage.getItem("token");if(!e)return window.location.href=t,null;try{let n=(0,Se.jwtDecode)(e),r=Date.now()/1e3;return n.exp&&n.exp<r&&(console.error("Token has expired"),window.localStorage.removeItem("token"),window.location.href=t),null}catch(n){return console.error("Invalid token:",n),window.location.href=t,null}};var z=(s,t,e)=>{s.forEach(n=>{t.forEach(r=>{n.addEventListener(r,i=>{e(n,i)})})})};var bt=()=>({back:()=>window.history.back(),forward:()=>window.history.forward()});var At=(s,t)=>{let e=document.querySelector(`#${s}`)||document.querySelector(`.${s}`);if(!e)return;let n=window.location.pathname.replace(/\/$/,"");for(let r of t){let i=r.path.replace(/\/$/,"");if(n===i||n.startsWith(`${i}/`)){r.component(e);break}}};function Mt(s,t){let e=window.location.pathname.replace(/\/$/,"");t.routes.forEach(n=>{n.children?.length&&n.children.forEach(r=>{let i=r.path.replace(/\/$/,"");if(e===i||e.startsWith(`${i}/`)){let a=s.querySelector(`#${r.outlet}`)||s.querySelector(`.${r.outlet}`);a instanceof HTMLElement&&r.element&&r.element(a)}})})}var Pe=require("zustand/vanilla");function Ot(s){let t=(0,Pe.createStore)(()=>({value:s})),e=new Set;return{get:()=>t.getState().value,set:n=>{t.setState({value:n}),e.forEach(r=>r(n))},subscribe:n=>(e.add(n),n(t.getState().value),()=>e.delete(n))}}function Ct(s){let t=s();typeof t=="function"&&t()}var W=()=>{let s=document.querySelectorAll('a[href^="#"]');z(s,["click"],(t,e)=>{e.preventDefault();let n=t.getAttribute("href")?.substring(1),r=n?document.getElementById(n):null;r&&r.scrollIntoView({behavior:"smooth",block:"start"})})};var ve=require("lodash-es"),Ht=s=>s;typeof window<"u"&&typeof document<"u"&&(Ht=s=>{let t=document.createElement("div");return t.innerText=s,t.innerHTML});var gs=s=>{(s?Array.isArray(s)?s:s instanceof HTMLAnchorElement?[s]:Array.from(s):Array.from(document.querySelectorAll("a"))).forEach(e=>{if(!e||e.dataset.anchorEnhanced==="true")return;e.dataset.anchorEnhanced="true";let n=e.getAttribute("class")||"";e.setAttribute("class",Ht(n));let r=e.getAttribute("aria-label");r&&e.setAttribute("aria-label",Ht(r));let i=e.querySelector(":scope > *");i&&(e.innerHTML="",e.appendChild(i));let a=e.getAttribute("href")||"";if(!a.startsWith("#")){try{if(new URL(a,window.location.href).origin!==window.location.origin)return}catch{return}e.addEventListener("click",o=>{o.preventDefault();let c=e.getAttribute("href")||"";try{let l=new URL(c,window.location.href);window.history.pushState({},"",l.pathname+l.search+l.hash),window.dispatchEvent(new PopStateEvent("popstate"))}catch(l){console.error("Invalid URL in anchor:",c,l)}})}})},ws=(0,ve.debounce)(gs,50),$=s=>{ws(s)};var j=s=>{let t=s.querySelectorAll("a");$(t)};var It=s=>{W(),j(s)};var Ft=async()=>{let s="https://cdn.jsdelivr.net/npm/brython@3/brython.min.js",t="https://cdn.jsdelivr.net/npm/brython@3/brython_stdlib.js",e=n=>new Promise((r,i)=>{let a=document.createElement("script");a.src=n,a.onload=()=>r(),a.onerror=()=>i(new Error(`Failed to load ${n}`)),document.head.appendChild(a)});await e(s),await e(t),typeof window.brython=="function"?window.brython():console.error("Brython did not load correctly.")},kt=s=>new Promise((t,e)=>{let n=document.createElement("script");n.type="text/python",n.src=`/src/python/${s}`,n.onload=()=>t(),n.onerror=()=>e(new Error(`Failed to load ${s}`)),document.body.appendChild(n)});function Nt(s){let t=null;return async(e,n)=>{try{if(!t){let r=await s();t=r.default||r}if(typeof t=="function")return t(e,n);if(t instanceof HTMLElement){e?.appendChild(t);return}if(t&&typeof t.render=="function")return t.render(e,n);console.warn("useTSLazy: Unsupported module type",t)}catch(r){console.error("useTSLazy failed:",r)}}}var zt=s=>typeof window>"u"?{isDOM:null}:{isDOM:s||document.body};var Wt=y(require("dompurify"),1);var Le=require("zustand/vanilla"),De=y(require("dompurify"),1),D=(0,Le.createStore)(s=>({params:{},query:{},setParams:t=>s(()=>({params:Re(t)})),setQuery:t=>s(()=>({query:Re(t)}))}));function Re(s){let t={};for(let e in s)t[e]=De.default.sanitize(s[e]);return t}var nt=class{constructor(t,e){this.routes=[];this.routes=t,this.expectedParams=new Set(e),window.addEventListener("popstate",this.handlePopState.bind(this)),this.handlePopState()}handlePopState(){let t=window.location.pathname,e=window.location.search,n=this.parseQueryParams(e),r=this.findMatchingRoute(t,this.routes);if(r){if(r.routeto){this.navigate(r.routeto);return}let i=this.filterAndSanitizeParams(r.params);D.getState().setParams(i),D.getState().setQuery(n);let a=document.createElement("div");if(r.element?.(a,i,n),r.children){let o=t.slice(r.path.length),c=a.querySelector("#child");c&&this.renderChildren(r.children,o,c,i,n)}}else{let i=this.findMatchingRoute("*",this.routes);if(i){let a=this.filterAndSanitizeParams(i.params);D.getState().setParams(a),D.getState().setQuery(n);let o=document.createElement("div");i.element?.(o,a,n)}}}renderChildren(t,e,n,r,i){if(!t||t.length===0){let o=n.querySelector("#child");o&&o.remove();return}let a=this.findMatchingRoute(e,t);if(a){let o=document.createElement("div");o.id="child";let c={...r,...a.params},l=this.filterAndSanitizeParams(c);if(D.getState().setParams(l),D.getState().setQuery(i),a.element?.(o,l,i),n.appendChild(o),a.children){let d=e.slice(a.path.length);this.renderChildren(a.children,d,o,l,i)}}}parseQueryParams(t){let e={},n=new URLSearchParams(t);for(let[r,i]of n.entries())this.expectedParams.has(r)&&(e[r]=Wt.default.sanitize(i));return e}findMatchingRoute(t,e,n={}){for(let r of e){let i=r.path;if(i==="*")return r;{let o=[],c=i.replace(/:[^\s/]+/g,u=>(o.push(u.substring(1)),"([^\\s/]+)")),l=new RegExp(`^${c}(?:/|$)`),d=t.match(l);if(d){let u={...n};if(o.forEach((h,f)=>{u[h]=d[f+1]??""}),r.children){let h=t.slice(d[0].length),f=this.findMatchingRoute(h,r.children,u);if(f)return f}return{...r,params:u}}}}}filterAndSanitizeParams(t){if(!t)return{};let e={};for(let n in t)this.expectedParams.has(n)&&(e[n]=Wt.default.sanitize(t[n]??""));return e}navigate(t){history.pushState(null,"",t),this.handlePopState()}addRoute(t){this.routes.push(t)}};typeof window<"u"&&(window.addEventListener("popstate",()=>{q(),ge()}),window.addEventListener("DOMContentLoaded",q));0&&(module.exports={TSRouter,createEffect,createSignal,html,loadPyFiles,mapper,renderChildRoutes,useAnchor,useAnchorSingle,useInitialDOM,useTSAnchorMount,useTSAuth,useTSCollection,useTSComponent,useTSElementEach,useTSElements,useTSEvent,useTSEventAll,useTSExtractParams,useTSHashAnchor,useTSLazy,useTSMetaData,useTSNavigate,useTSNoReload,useTSOutlet,useTSParams,useTSPurifier,useTSSSRHydration,useTSSelect,useTSloadBrython});
|
|
69
69
|
/*! Bundled license information:
|
|
70
70
|
|
|
71
71
|
chokidar/esm/index.js:
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
function ue(t){return(t==null?"":String(t)).replace(/<\s*(script|iframe|object|embed|link|style)[^>]*>.*?<\s*\/\s*\1\s*>/gi,"").replace(/<\s*(script|iframe|object|embed|link|style)[^>]*>/gi,"").replace(/\son\w+\s*=\s*(['"]).*?\1/gi,"").replace(/\s(href|src)\s*=\s*(['"])\s*javascript:[^'"]*\2/gi,"")}function C(t,...e){return t.reduce((n,r,o)=>{let s=o<e.length?ue(e[o]):"";return n+r+s},"")}function v(){let t=new Set;document.querySelectorAll("*").forEach(e=>{let n=e.tagName.toLowerCase();n.includes("-")&&t.add(n)}),t.forEach(e=>{customElements.get(e)||customElements.define(e,class extends HTMLElement{connectedCallback(){this.innerHTML=`<div style="padding:10px;background:#eee;">${e} (Auto)</div>`}})})}var de=t=>t.replace(/<\/?(script|iframe|object|embed|link|meta|style)[^>]*>/gi,"").replace(/\s+on[a-z]+\s*=\s*("[^"]*"|'[^']*'|[^\s>]+)/gi,"").replace(/\s+(href|src)\s*=\s*(['"]?)\s*javascript:[^'"\s>]*/gi,""),me=t=>t?.map(e=>de(e)).join("")??"";import k from"dompurify";var $=(t,e)=>{let r={...{ADD_TAGS:["my-custom-tag"]},...e};return typeof t=="string"?k.sanitize(t,r):k.sanitize(t.innerHTML,r)};var N=(t,e,n)=>{if(typeof t=="string"){let r=document.getElementById(t);r?r.addEventListener(e,n):console.warn(`Element with id '${t}' not found.`)}else t===document?document.addEventListener(e,n):console.warn("Invalid id parameter provided.")};import{createStore as pe}from"zustand/vanilla";import F from"dompurify";function fe(t,e){let n=[],r=t.replace(/:[^/]+/g,a=>(n.push(a.slice(1)),"([^/]+)")),o=new RegExp(`^${r}$`),s=e.match(o),i={};return s&&n.forEach((a,c)=>{i[a]=F.sanitize(s[c+1]??"")}),i}function he(t){let e={},n=new URLSearchParams(t);for(let[r,o]of n.entries())e[r]=F.sanitize(o);return e}var w=pe((t,e)=>({params:{},query:{},setFromPattern:n=>{let r=window.location.pathname,o=fe(n,r),s=he(window.location.search);t({params:o,query:s})},getParam:n=>e().params[n],getQuery:n=>e().query[n]}));function _(t){let e=w.getState();e.setFromPattern(t);let n=e.params,r=e.query;return{...n,...r}}var z=(t,e,n)=>{let r=document.querySelectorAll(t);return r.forEach(o=>{o.addEventListener(e,n)}),()=>{r.forEach(o=>{o.removeEventListener(e,n)})}};import H from"dompurify";var I=(t,e,n,r={})=>{let o={USE_PROFILES:{svg:!0,html:!0},ALLOWED_TAGS:["svg","path","circle","rect","line","polyline","polygon","g","main","div","h1","h2","h3","h4","h5","h6","p","button","span","a","img","input","ul","li","i"],ALLOWED_ATTR:["class","id","href","src","alt","fill","stroke","stroke-width","viewBox","xmlns","d","x","y","cx","cy","r","width","height","data-onclick","data-onchange","data-onselect"],FORBID_TAGS:["script","iframe"],ALLOWED_URI_REGEXP:/^(?:(?:https?|mailto|tel|ftp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,...n};H.addHook("uponSanitizeElement",(i,a)=>{let c=a.tagName.toLowerCase();c.includes("-")&&(a.allowedTags[c]=!0)}),H.addHook("uponSanitizeAttribute",(i,a)=>{a.attrName&&a.attrName.toLowerCase().startsWith("on")&&(a.keepAttr=!1)});let s=H.sanitize(e,o);t.innerHTML=s,t.querySelectorAll("[data-onclick]").forEach(i=>{let a=i.dataset.onclick;r[a]&&i.addEventListener("click",r[a])}),t.querySelectorAll("[data-onchange]").forEach(i=>{let a=i.dataset.onchange;r[a]&&i.addEventListener("change",r[a])}),t.querySelectorAll("[data-onselect]").forEach(i=>{let a=i.dataset.onselect;r[a]&&i.addEventListener("select",r[a])})};import ge from"dompurify";var L=null,q=(t,e)=>{if(typeof document>"u")return;let n=document.getElementById(t);if(!n)return;let r=n.innerHTML,s=ge.sanitize(r,{ALLOWED_TAGS:["div","span","p","h1","h2","h3","h4","h5","h6","ul","ol","li","strong","em","a","img","br"],ALLOWED_ATTR:["href","src","alt","title","class","id","data-onclick","data-onchange"],ALLOW_DATA_ATTR:!1,KEEP_CONTENT:!1}).replace(/\b(href|src)=["']?(?!https?:|mailto:|\/|#)/gi,'$1="#"');if(L!==null&&s!==L){let i=document.createElement("div");e(i),n.innerHTML=L}else L=s,n.innerHTML=s,e(n)};import U from"dompurify";typeof window<"u"&&!window.__anchorSinglePopstateHandlerAttached&&(window.addEventListener("popstate",t=>{let e=t.state;e?.scrollPosition!==void 0&&window.scrollTo(0,e.scrollPosition)}),window.__anchorSinglePopstateHandlerAttached=!0);var j=(t,e,n,r="",o=null)=>{if(!t)return;let s=U.sanitize(e,{ALLOWED_URI_REGEXP:/^(https?:|\/)/}),i=U.sanitize(n,{USE_PROFILES:{html:!1}});t.setAttribute("href",s),t.setAttribute("aria-label",i),r&&(t.className=r.trim()),o&&t.replaceChildren(o),typeof window<"u"&&t.addEventListener("click",a=>{a.preventDefault();let l=a.currentTarget.getAttribute("href");if(l){let d=window.scrollY;window.scrollTo(0,0),window.history.pushState({scrollPosition:d},"",l),dispatchEvent(new PopStateEvent("popstate"))}})};import E from"dompurify";var W=(t="'self' 'nonce-rAnd0m123' 'unsafe-inline' 'unsafe-eval'",e="'self' 'nonce-rAnd0m123'",n="'none'",r="'self' https://fonts.googleapis.com https://fonts.gstatic.com",o="'self' https://blogger.googleusercontent.com",s=["'self'","https://fonts.googleapis.com","https://fonts.gstatic.com","https://www.google.com/maps/"],i="'self' https://www.youtube.com",a="'self'",c="/csp-report",l=!1)=>{let d=()=>{try{let u=document.querySelector('meta[http-equiv="Content-Security-Policy"]');u||(u=document.createElement("meta"),u.setAttribute("http-equiv","Content-Security-Policy"),document.head.appendChild(u));let p=l?`report-uri ${c};`:"";u.setAttribute("content",`default-src 'self'; script-src ${t}; style-src ${e}; object-src ${n}; font-src ${r}; img-src ${o}; connect-src ${s.join(" ")}; frame-src ${i}; base-uri ${a}; ${p}`)}catch(u){console.error("Error adding CSP meta element:",u)}};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",d):d()};var B=(t,e)=>{let n={name:E.sanitize(t.name||""),description:E.sanitize(t.description||"Default description"),author:E.sanitize(t.author||"")},r=m=>{n.name=E.sanitize(m),u("name",n.name)},o=m=>{n.description=E.sanitize(m),u("description",n.description)},s=m=>{n.author=E.sanitize(m),u("author",n.author)},i=()=>n.name,a=()=>n.description,c=()=>n.author,l=()=>n,d=(m,h)=>{let f=document.createElement("meta");f.setAttribute("name",m),f.setAttribute("content",h),document.head.appendChild(f)},u=(m,h)=>{let f=document.querySelector(`meta[name="${m}"]`);f?f.setAttribute("content",h):d(m,h)},p=()=>{u("name",n.name),u("description",n.description),u("author",n.author)};return e&&W(e.scriptSrc,e.styleSrc,e.objectSrc,Array.isArray(e.connectSrc)?e.connectSrc.join(" "):e.connectSrc,e.reportOnly!==void 0?String(e.reportOnly):void 0),p(),{setName:r,setDescription:o,setAuthor:s,getName:i,getDescription:a,getAuthor:c,getAllMetaData:l,appendMetaTagsToHead:p}};import Te from"dompurify";var M=(t,e,n,r,o)=>{let s=`#${t}`,i=e.querySelectorAll(s);if(i.length===0)throw new Error(`[useTSComponent] No element found with id '${t}' in the given parent.`);if(i.length>1)throw new Error(`[useTSComponent] Duplicate id '${t}' detected. Found ${i.length} elements.`);let a=i[0];a.innerHTML=Te.sanitize(a.innerHTML,{USE_PROFILES:{html:!0}}),n(a,r,o)};var G=(t,e,n,r=[])=>{let o=new Set;t.forEach((s,i)=>{if(o.has(s)){console.warn(`[useTSCollection] Duplicate ID in collection array: "${s}" \u2014 skipping.`);return}o.add(s);let a=e.querySelectorAll(`#${s}`);if(a.length>1){console.warn(`[useTSCollection] Duplicate ID in DOM: "${s}" (${a.length} elements found) \u2014 skipping component mount.`);return}let c=n[i],l=Array.isArray(r)?r[i]:void 0;typeof c=="function"?M(s,e,c,l):console.warn(`[useTSCollection] No valid component function found for ID: "${s}"`)})};var Q=(t,e)=>{let r=(e??document).querySelectorAll(t);if(r.length===0)return process.env.NODE_ENV!=="production"&&console.warn(`[useTSSelect] No element found for selector: '${t}'`),null;if(t.startsWith("#")&&r.length>1){if(process.env.NODE_ENV!=="production")throw new Error(`[useTSSelect] Duplicate ID detected: '${t}'. Found ${r.length} elements with this ID.`);return r[0]}return r.length>1&&process.env.NODE_ENV!=="production"&&console.warn(`[useTSSelect] Multiple elements found for selector: '${t}'. Returning the first one.`),r[0]};import{jwtDecode as Se}from"jwt-decode";var V=(t,e)=>{let n=localStorage.getItem("token");if(!n)return window.location.href=e,null;try{let r=Se(n),o=Date.now()/1e3;return r.exp&&r.exp<o&&(console.error("Token has expired"),window.localStorage.removeItem("token"),window.location.href=e),null}catch(r){return console.error("Invalid token:",r),window.location.href=e,null}};var R=(t,e,n)=>{t.forEach(r=>{e.forEach(o=>{r.addEventListener(o,s=>{n(r,s)})})})};var J=()=>({back:()=>window.history.back(),forward:()=>window.history.forward()});var X=(t,e)=>{let n=document.querySelector(`#${t}`)||document.querySelector(`.${t}`);if(!n)return;let r=window.location.pathname.replace(/\/$/,"");for(let o of e){let s=o.path.replace(/\/$/,"");if(r===s||r.startsWith(`${s}/`)){o.component(n);break}}};function Y(t,e){let n=window.location.pathname.replace(/\/$/,"");e.routes.forEach(r=>{r.children?.length&&r.children.forEach(o=>{let s=o.path.replace(/\/$/,"");if(n===s||n.startsWith(`${s}/`)){let i=t.querySelector(`#${o.outlet}`)||t.querySelector(`.${o.outlet}`);i instanceof HTMLElement&&o.element&&o.element(i)}})})}import{createStore as Ee}from"zustand/vanilla";function K(t){let e=Ee(()=>({value:t})),n=new Set;return{get:()=>e.getState().value,set:r=>{e.setState({value:r}),n.forEach(o=>o(r))},subscribe:r=>(n.add(r),r(e.getState().value),()=>n.delete(r))}}function Z(t){let e=t();typeof e=="function"&&e()}var A=()=>{let t=document.querySelectorAll('a[href^="#"]');R(t,["click"],(e,n)=>{n.preventDefault();let r=e.getAttribute("href")?.substring(1),o=r?document.getElementById(r):null;o&&o.scrollIntoView({behavior:"smooth",block:"start"})})};import{debounce as ye}from"lodash-es";var O=t=>t;typeof window<"u"&&typeof document<"u"&&(O=t=>{let e=document.createElement("div");return e.innerText=t,e.innerHTML});var ve=t=>{(t?Array.isArray(t)?t:t instanceof HTMLAnchorElement?[t]:Array.from(t):Array.from(document.querySelectorAll("a"))).forEach(n=>{if(!n||n.dataset.anchorEnhanced==="true")return;n.dataset.anchorEnhanced="true";let r=n.getAttribute("class")||"";n.setAttribute("class",O(r));let o=n.getAttribute("aria-label");o&&n.setAttribute("aria-label",O(o));let s=n.querySelector(":scope > *");s&&(n.innerHTML="",n.appendChild(s));let i=n.getAttribute("href")||"";if(!i.startsWith("#")){try{if(new URL(i,window.location.href).origin!==window.location.origin)return}catch{return}n.addEventListener("click",a=>{a.preventDefault();let c=n.getAttribute("href")||"";try{let l=new URL(c,window.location.href);window.history.pushState({},"",l.pathname+l.search+l.hash),window.dispatchEvent(new PopStateEvent("popstate"))}catch(l){console.error("Invalid URL in anchor:",c,l)}})}})},we=ye(ve,50),P=t=>{we(t)};var x=t=>{let e=t.querySelectorAll("a");P(e)};var ee=t=>{A(),x(t)};var te=async()=>{let t="https://cdn.jsdelivr.net/npm/brython@3/brython.min.js",e="https://cdn.jsdelivr.net/npm/brython@3/brython_stdlib.js",n=r=>new Promise((o,s)=>{let i=document.createElement("script");i.src=r,i.onload=()=>o(),i.onerror=()=>s(new Error(`Failed to load ${r}`)),document.head.appendChild(i)});await n(t),await n(e),typeof window.brython=="function"?window.brython():console.error("Brython did not load correctly.")},ne=t=>new Promise((e,n)=>{let r=document.createElement("script");r.type="text/python",r.src=`/src/python/${t}`,r.onload=()=>e(),r.onerror=()=>n(new Error(`Failed to load ${t}`)),document.body.appendChild(r)});function re(t){let e=null;return async(n,r)=>{try{if(!e){let o=await t();e=o.default||o}if(typeof e=="function")return e(n,r);if(e instanceof HTMLElement){n?.appendChild(e);return}if(e&&typeof e.render=="function")return e.render(n,r);console.warn("useTSLazy: Unsupported module type",e)}catch(o){console.error("useTSLazy failed:",o)}}}var oe=t=>typeof window>"u"?{isDOM:null}:{isDOM:t||document.body};import ie from"dompurify";import{createStore as Le}from"zustand/vanilla";import Me from"dompurify";var T=Le(t=>({params:{},query:{},setParams:e=>t(()=>({params:se(e)})),setQuery:e=>t(()=>({query:se(e)}))}));function se(t){let e={};for(let n in t)e[n]=Me.sanitize(t[n]);return e}var b=class{constructor(e,n){this.routes=[];this.routes=e,this.expectedParams=new Set(n),window.addEventListener("popstate",this.handlePopState.bind(this)),this.handlePopState()}handlePopState(){let e=window.location.pathname,n=window.location.search,r=this.parseQueryParams(n),o=this.findMatchingRoute(e,this.routes);if(o){if(o.routeto){this.navigate(o.routeto);return}let s=this.filterAndSanitizeParams(o.params);T.getState().setParams(s),T.getState().setQuery(r);let i=document.createElement("div");if(o.element?.(i,s,r),o.children){let a=e.slice(o.path.length),c=i.querySelector("#child");c&&this.renderChildren(o.children,a,c,s,r)}}else{let s=this.findMatchingRoute("*",this.routes);if(s){let i=this.filterAndSanitizeParams(s.params);T.getState().setParams(i),T.getState().setQuery(r);let a=document.createElement("div");s.element?.(a,i,r)}}}renderChildren(e,n,r,o,s){if(!e||e.length===0){let a=r.querySelector("#child");a&&a.remove();return}let i=this.findMatchingRoute(n,e);if(i){let a=document.createElement("div");a.id="child";let c={...o,...i.params},l=this.filterAndSanitizeParams(c);if(T.getState().setParams(l),T.getState().setQuery(s),i.element?.(a,l,s),r.appendChild(a),i.children){let d=n.slice(i.path.length);this.renderChildren(i.children,d,a,l,s)}}}parseQueryParams(e){let n={},r=new URLSearchParams(e);for(let[o,s]of r.entries())this.expectedParams.has(o)&&(n[o]=ie.sanitize(s));return n}findMatchingRoute(e,n,r={}){for(let o of n){let s=o.path;if(s==="*")return o;{let a=[],c=s.replace(/:[^\s/]+/g,u=>(a.push(u.substring(1)),"([^\\s/]+)")),l=new RegExp(`^${c}(?:/|$)`),d=e.match(l);if(d){let u={...r};if(a.forEach((p,m)=>{u[p]=d[m+1]??""}),o.children){let p=e.slice(d[0].length),m=this.findMatchingRoute(p,o.children,u);if(m)return m}return{...o,params:u}}}}}filterAndSanitizeParams(e){if(!e)return{};let n={};for(let r in e)this.expectedParams.has(r)&&(n[r]=ie.sanitize(e[r]??""));return n}navigate(e){history.pushState(null,"",e),this.handlePopState()}addRoute(e){this.routes.push(e)}};import S from"fs/promises";import g from"path";var y=g.resolve("src/pages"),ae=g.resolve("src/gen"),ce=g.resolve("src/routes"),Re=g.join(ae,"tsrouter.gen.ts"),D=g.join(ce,"__root.ts"),Ae=async()=>{if(typeof window>"u"){console.log("\u26A0\uFE0F Skipping TS file-based router generation in SSR/Node environment");return}async function t(c){try{await S.mkdir(c,{recursive:!0})}catch{}}await t(ae),await t(ce);function e(c,l){let d="/"+g.relative(l,c).replace(/\\/g,"/");return d=d.replace(/\.ts$/,""),d=d.replace(/\/index$/,"")||"/",d=d.replace(/\[(.+?)\]/g,":$1"),d}function n(c){return c.replace(/^\//,"").split("/").map(l=>l.startsWith(":")?l.slice(1):l).filter(Boolean).join("-")||"index"}function r(c,l){let u=g.relative(l,c).replace(/\\/g,"/").split("/").filter(Boolean),p=u[u.length-1].replace(".ts",""),m=u.length>1?u[u.length-2]:"";if(p.startsWith("[")&&p.endsWith("]")){let h=p.slice(1,-1);return m.charAt(0).toUpperCase()+m.slice(1)+h.charAt(0).toUpperCase()+h.slice(1)+"Param"}else return p.charAt(0).toUpperCase()+p.slice(1)}async function o(c){let l=await S.readdir(c,{withFileTypes:!0}),d=[];for(let u of l){let p=g.join(c,u.name);if(u.isDirectory())d=d.concat(await o(p));else if(u.isFile()&&u.name.endsWith(".ts")){let m=e(p,y),h=n(m),f=r(p,y);d.push({file:p,route:m,routeName:h,importName:f})}}return d}function s(c,l){return`import { html, useTSElements, useTSExtractParams, useTSMetaData } from '@devwareng/vanilla-ts'
|
|
1
|
+
function de(t){return(t==null?"":String(t)).replace(/<\s*(script|iframe|object|embed|link|style)[^>]*>.*?<\s*\/\s*\1\s*>/gi,"").replace(/<\s*(script|iframe|object|embed|link|style)[^>]*>/gi,"").replace(/\son\w+\s*=\s*(['"]).*?\1/gi,"").replace(/\s(href|src)\s*=\s*(['"])\s*javascript:[^'"]*\2/gi,"")}function k(t,...e){return t.reduce((n,r,o)=>{let s=o<e.length?de(e[o]):"";return n+r+s},"")}function v(){let t=new Set;document.querySelectorAll("*").forEach(e=>{let n=e.tagName.toLowerCase();n.includes("-")&&t.add(n)}),t.forEach(e=>{customElements.get(e)||customElements.define(e,class extends HTMLElement{connectedCallback(){this.innerHTML=`<div style="padding:10px;background:#eee;">${e} (Auto)</div>`}})})}import S from"fs/promises";import g from"path";var E=g.resolve("src/pages"),$=g.resolve("src/gen"),N=g.resolve("src/routes"),me=g.join($,"tsrouter.gen.ts"),w=g.join(N,"__root.ts"),F=async()=>{if(typeof window<"u"){console.log("\u26A0\uFE0F Skipping TS file-based router generation in browser environment");return}async function t(c){try{await S.mkdir(c,{recursive:!0})}catch{}}await t($),await t(N);function e(c,u){let d="/"+g.relative(u,c).replace(/\\/g,"/");return d=d.replace(/\.ts$/,""),d=d.replace(/\/index$/,"")||"/",d=d.replace(/\[(.+?)\]/g,":$1"),d}function n(c){return c.replace(/^\//,"").split("/").map(u=>u.startsWith(":")?u.slice(1):u).filter(Boolean).join("-")||"index"}function r(c,u){let l=g.relative(u,c).replace(/\\/g,"/").split("/").filter(Boolean),p=l[l.length-1].replace(".ts",""),m=l.length>1?l[l.length-2]:"";if(p.startsWith("[")&&p.endsWith("]")){let h=p.slice(1,-1);return m.charAt(0).toUpperCase()+m.slice(1)+h.charAt(0).toUpperCase()+h.slice(1)+"Param"}else return p.charAt(0).toUpperCase()+p.slice(1)}async function o(c){let u=await S.readdir(c,{withFileTypes:!0}),d=[];for(let l of u){let p=g.join(c,l.name);if(l.isDirectory())d=d.concat(await o(p));else if(l.isFile()&&l.name.endsWith(".ts")){let m=e(p,E),h=n(m),f=r(p,E);d.push({file:p,route:m,routeName:h,importName:f})}}return d}function s(c,u){return`import { html, useTSElements, useTSExtractParams, useTSMetaData } from '@devwareng/vanilla-ts'
|
|
2
2
|
|
|
3
3
|
export default function ${c}(DOM: HTMLElement) {
|
|
4
4
|
useTSMetaData({ name: '${c.toLowerCase()}', description: '', author: '' })
|
|
5
|
-
const params = useTSExtractParams("${
|
|
5
|
+
const params = useTSExtractParams("${u}")
|
|
6
6
|
return useTSElements(DOM, html\`
|
|
7
7
|
<div class="p-4">
|
|
8
8
|
<h1 class="font-semibold">${c}</h1>
|
|
@@ -17,12 +17,12 @@ export const Router = (DOM: HTMLElement) => {
|
|
|
17
17
|
const router = createRouter(DOM)
|
|
18
18
|
router.navigate(window.location.pathname)
|
|
19
19
|
window.addEventListener("popstate", () => router.navigate(window.location.pathname))
|
|
20
|
-
}`}async function a(){let c=await o(
|
|
20
|
+
}`}async function a(){let c=await o(E),u=c.find(f=>f.route==="/notfound"),d=c.filter(f=>f.route!=="/notfound"),l=c.map(f=>{let H="../pages/"+g.relative(E,f.file).replace(/\\/g,"/").replace(/\.ts$/,"");return`import ${f.importName} from "${H}";`}).join(`
|
|
21
21
|
`),p=d.map(f=>`{ path: "${f.route}", name: "${f.routeName}", component: (DOM: HTMLElement) => ${f.importName}(DOM) }`).join(`,
|
|
22
|
-
`),m=
|
|
22
|
+
`),m=u?`export const NotFound = ${u.importName}`:"export function NotFound(DOM: HTMLElement) {\n return useTSElements(DOM, html`<div><h1>404 - Page Not Found</h1></div>`)\n}",h=`// AUTO-GENERATED FILE. DO NOT EDIT MANUALLY.
|
|
23
23
|
import { html, useTSElements } from "@devwareng/vanilla-ts"
|
|
24
24
|
|
|
25
|
-
${
|
|
25
|
+
${l}
|
|
26
26
|
|
|
27
27
|
${m}
|
|
28
28
|
|
|
@@ -65,4 +65,4 @@ export function createRouter(DOM: HTMLElement) {
|
|
|
65
65
|
|
|
66
66
|
navigate(window.location.pathname + window.location.search)
|
|
67
67
|
return { navigate, routes: routeTree }
|
|
68
|
-
}`;await S.writeFile(Re,h,"utf-8"),await S.writeFile(D,i(),"utf-8"),console.log("\u2705 Generated router and __root.ts")}if(typeof window>"u")try{let c=await import("./esm-KRNKVVL7.js");console.log("\u{1F440} Watching for changes in /src/pages and /src/routes/__root.ts..."),c.watch(y).on("all",async(l,d)=>{if(l==="add"&&d.endsWith(".ts")){let u=g.basename(d,".ts"),p=u.replace(/\[|\]/g,"Param").replace(/(^\w|-\w)/g,f=>f.replace("-","").toUpperCase()),m=e(d,y);(await S.readFile(d,"utf-8")).trim()||(await S.writeFile(d,s(p,m),"utf-8"),console.log(`\u{1F4DD} Scaffolded page: ${u}.ts`))}await a()}),c.watch(D).on("unlink",async()=>{console.log("\u26A0\uFE0F __root.ts deleted. Recreating..."),await S.writeFile(D,i(),"utf-8"),console.log("\u{1F7E2} Recreated:",D)})}catch{console.warn("\u26A0\uFE0F Chokidar not available, skipping watch mode.")}console.log("\u{1F7E2} TS Filebased Router Mounted Successfully...")};typeof window<"u"&&(window.addEventListener("popstate",()=>{v()}),window.addEventListener("DOMContentLoaded",v));export{b as TSRouter,Z as createEffect,K as createSignal,C as html,ne as loadPyFiles,me as mapper,Y as renderChildRoutes,P as useAnchor,j as useAnchorSingle,q as useInitialDOM,ee as useTSAnchorMount,V as useTSAuth,G as useTSCollection,M as useTSComponent,R as useTSElementEach,I as useTSElements,N as useTSEvent,z as useTSEventAll,_ as useTSExtractParams,Ae as useTSFilebasedRouter,A as useTSHashAnchor,re as useTSLazy,B as useTSMetaData,J as useTSNavigate,x as useTSNoReload,X as useTSOutlet,w as useTSParams,$ as useTSPurifier,oe as useTSSSRHydration,Q as useTSSelect,te as useTSloadBrython};
|
|
68
|
+
}`;await S.writeFile(me,h,"utf-8"),await S.writeFile(w,i(),"utf-8"),console.log("\u2705 Generated router and __root.ts")}try{let c=await import("./esm-KRNKVVL7.js"),u=c.default??c;console.log("\u{1F440} Watching for changes in /src/pages and /src/routes/__root.ts..."),u.watch(E).on("all",async(d,l)=>{if(d==="add"&&l.endsWith(".ts")){let p=g.basename(l,".ts"),m=p.replace(/\[|\]/g,"Param").replace(/(^\w|-\w)/g,H=>H.replace("-","").toUpperCase()),h=e(l,E);(await S.readFile(l,"utf-8")).trim()||(await S.writeFile(l,s(m,h),"utf-8"),console.log(`\u{1F4DD} Scaffolded page: ${p}.ts`))}await a()}),u.watch(w).on("unlink",async()=>{console.log("\u26A0\uFE0F __root.ts deleted. Recreating..."),await S.writeFile(w,i(),"utf-8"),console.log("\u{1F7E2} Recreated:",w)})}catch{console.warn("\u26A0\uFE0F Chokidar not available, skipping watch mode.")}console.log("\u{1F7E2} TS Filebased Router Mounted Successfully...")};var pe=t=>t.replace(/<\/?(script|iframe|object|embed|link|meta|style)[^>]*>/gi,"").replace(/\s+on[a-z]+\s*=\s*("[^"]*"|'[^']*'|[^\s>]+)/gi,"").replace(/\s+(href|src)\s*=\s*(['"]?)\s*javascript:[^'"\s>]*/gi,""),fe=t=>t?.map(e=>pe(e)).join("")??"";import _ from"dompurify";var z=(t,e)=>{let r={...{ADD_TAGS:["my-custom-tag"]},...e};return typeof t=="string"?_.sanitize(t,r):_.sanitize(t.innerHTML,r)};var I=(t,e,n)=>{if(typeof t=="string"){let r=document.getElementById(t);r?r.addEventListener(e,n):console.warn(`Element with id '${t}' not found.`)}else t===document?document.addEventListener(e,n):console.warn("Invalid id parameter provided.")};import{createStore as he}from"zustand/vanilla";import q from"dompurify";function ge(t,e){let n=[],r=t.replace(/:[^/]+/g,a=>(n.push(a.slice(1)),"([^/]+)")),o=new RegExp(`^${r}$`),s=e.match(o),i={};return s&&n.forEach((a,c)=>{i[a]=q.sanitize(s[c+1]??"")}),i}function Te(t){let e={},n=new URLSearchParams(t);for(let[r,o]of n.entries())e[r]=q.sanitize(o);return e}var L=he((t,e)=>({params:{},query:{},setFromPattern:n=>{let r=window.location.pathname,o=ge(n,r),s=Te(window.location.search);t({params:o,query:s})},getParam:n=>e().params[n],getQuery:n=>e().query[n]}));function U(t){let e=L.getState();e.setFromPattern(t);let n=e.params,r=e.query;return{...n,...r}}var j=(t,e,n)=>{let r=document.querySelectorAll(t);return r.forEach(o=>{o.addEventListener(e,n)}),()=>{r.forEach(o=>{o.removeEventListener(e,n)})}};import O from"dompurify";var W=(t,e,n,r={})=>{let o={USE_PROFILES:{svg:!0,html:!0},ALLOWED_TAGS:["svg","path","circle","rect","line","polyline","polygon","g","main","div","h1","h2","h3","h4","h5","h6","p","button","span","a","img","input","ul","li","i"],ALLOWED_ATTR:["class","id","href","src","alt","fill","stroke","stroke-width","viewBox","xmlns","d","x","y","cx","cy","r","width","height","data-onclick","data-onchange","data-onselect"],FORBID_TAGS:["script","iframe"],ALLOWED_URI_REGEXP:/^(?:(?:https?|mailto|tel|ftp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,...n};O.addHook("uponSanitizeElement",(i,a)=>{let c=a.tagName.toLowerCase();c.includes("-")&&(a.allowedTags[c]=!0)}),O.addHook("uponSanitizeAttribute",(i,a)=>{a.attrName&&a.attrName.toLowerCase().startsWith("on")&&(a.keepAttr=!1)});let s=O.sanitize(e,o);t.innerHTML=s,t.querySelectorAll("[data-onclick]").forEach(i=>{let a=i.dataset.onclick;r[a]&&i.addEventListener("click",r[a])}),t.querySelectorAll("[data-onchange]").forEach(i=>{let a=i.dataset.onchange;r[a]&&i.addEventListener("change",r[a])}),t.querySelectorAll("[data-onselect]").forEach(i=>{let a=i.dataset.onselect;r[a]&&i.addEventListener("select",r[a])})};import Se from"dompurify";var M=null,B=(t,e)=>{if(typeof document>"u")return;let n=document.getElementById(t);if(!n)return;let r=n.innerHTML,s=Se.sanitize(r,{ALLOWED_TAGS:["div","span","p","h1","h2","h3","h4","h5","h6","ul","ol","li","strong","em","a","img","br"],ALLOWED_ATTR:["href","src","alt","title","class","id","data-onclick","data-onchange"],ALLOW_DATA_ATTR:!1,KEEP_CONTENT:!1}).replace(/\b(href|src)=["']?(?!https?:|mailto:|\/|#)/gi,'$1="#"');if(M!==null&&s!==M){let i=document.createElement("div");e(i),n.innerHTML=M}else M=s,n.innerHTML=s,e(n)};import G from"dompurify";typeof window<"u"&&!window.__anchorSinglePopstateHandlerAttached&&(window.addEventListener("popstate",t=>{let e=t.state;e?.scrollPosition!==void 0&&window.scrollTo(0,e.scrollPosition)}),window.__anchorSinglePopstateHandlerAttached=!0);var Q=(t,e,n,r="",o=null)=>{if(!t)return;let s=G.sanitize(e,{ALLOWED_URI_REGEXP:/^(https?:|\/)/}),i=G.sanitize(n,{USE_PROFILES:{html:!1}});t.setAttribute("href",s),t.setAttribute("aria-label",i),r&&(t.className=r.trim()),o&&t.replaceChildren(o),typeof window<"u"&&t.addEventListener("click",a=>{a.preventDefault();let u=a.currentTarget.getAttribute("href");if(u){let d=window.scrollY;window.scrollTo(0,0),window.history.pushState({scrollPosition:d},"",u),dispatchEvent(new PopStateEvent("popstate"))}})};import y from"dompurify";var V=(t="'self' 'nonce-rAnd0m123' 'unsafe-inline' 'unsafe-eval'",e="'self' 'nonce-rAnd0m123'",n="'none'",r="'self' https://fonts.googleapis.com https://fonts.gstatic.com",o="'self' https://blogger.googleusercontent.com",s=["'self'","https://fonts.googleapis.com","https://fonts.gstatic.com","https://www.google.com/maps/"],i="'self' https://www.youtube.com",a="'self'",c="/csp-report",u=!1)=>{let d=()=>{try{let l=document.querySelector('meta[http-equiv="Content-Security-Policy"]');l||(l=document.createElement("meta"),l.setAttribute("http-equiv","Content-Security-Policy"),document.head.appendChild(l));let p=u?`report-uri ${c};`:"";l.setAttribute("content",`default-src 'self'; script-src ${t}; style-src ${e}; object-src ${n}; font-src ${r}; img-src ${o}; connect-src ${s.join(" ")}; frame-src ${i}; base-uri ${a}; ${p}`)}catch(l){console.error("Error adding CSP meta element:",l)}};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",d):d()};var J=(t,e)=>{let n={name:y.sanitize(t.name||""),description:y.sanitize(t.description||"Default description"),author:y.sanitize(t.author||"")},r=m=>{n.name=y.sanitize(m),l("name",n.name)},o=m=>{n.description=y.sanitize(m),l("description",n.description)},s=m=>{n.author=y.sanitize(m),l("author",n.author)},i=()=>n.name,a=()=>n.description,c=()=>n.author,u=()=>n,d=(m,h)=>{let f=document.createElement("meta");f.setAttribute("name",m),f.setAttribute("content",h),document.head.appendChild(f)},l=(m,h)=>{let f=document.querySelector(`meta[name="${m}"]`);f?f.setAttribute("content",h):d(m,h)},p=()=>{l("name",n.name),l("description",n.description),l("author",n.author)};return e&&V(e.scriptSrc,e.styleSrc,e.objectSrc,Array.isArray(e.connectSrc)?e.connectSrc.join(" "):e.connectSrc,e.reportOnly!==void 0?String(e.reportOnly):void 0),p(),{setName:r,setDescription:o,setAuthor:s,getName:i,getDescription:a,getAuthor:c,getAllMetaData:u,appendMetaTagsToHead:p}};import Ee from"dompurify";var R=(t,e,n,r,o)=>{let s=`#${t}`,i=e.querySelectorAll(s);if(i.length===0)throw new Error(`[useTSComponent] No element found with id '${t}' in the given parent.`);if(i.length>1)throw new Error(`[useTSComponent] Duplicate id '${t}' detected. Found ${i.length} elements.`);let a=i[0];a.innerHTML=Ee.sanitize(a.innerHTML,{USE_PROFILES:{html:!0}}),n(a,r,o)};var X=(t,e,n,r=[])=>{let o=new Set;t.forEach((s,i)=>{if(o.has(s)){console.warn(`[useTSCollection] Duplicate ID in collection array: "${s}" \u2014 skipping.`);return}o.add(s);let a=e.querySelectorAll(`#${s}`);if(a.length>1){console.warn(`[useTSCollection] Duplicate ID in DOM: "${s}" (${a.length} elements found) \u2014 skipping component mount.`);return}let c=n[i],u=Array.isArray(r)?r[i]:void 0;typeof c=="function"?R(s,e,c,u):console.warn(`[useTSCollection] No valid component function found for ID: "${s}"`)})};var Y=(t,e)=>{let r=(e??document).querySelectorAll(t);if(r.length===0)return process.env.NODE_ENV!=="production"&&console.warn(`[useTSSelect] No element found for selector: '${t}'`),null;if(t.startsWith("#")&&r.length>1){if(process.env.NODE_ENV!=="production")throw new Error(`[useTSSelect] Duplicate ID detected: '${t}'. Found ${r.length} elements with this ID.`);return r[0]}return r.length>1&&process.env.NODE_ENV!=="production"&&console.warn(`[useTSSelect] Multiple elements found for selector: '${t}'. Returning the first one.`),r[0]};import{jwtDecode as ye}from"jwt-decode";var K=(t,e)=>{let n=localStorage.getItem("token");if(!n)return window.location.href=e,null;try{let r=ye(n),o=Date.now()/1e3;return r.exp&&r.exp<o&&(console.error("Token has expired"),window.localStorage.removeItem("token"),window.location.href=e),null}catch(r){return console.error("Invalid token:",r),window.location.href=e,null}};var A=(t,e,n)=>{t.forEach(r=>{e.forEach(o=>{r.addEventListener(o,s=>{n(r,s)})})})};var Z=()=>({back:()=>window.history.back(),forward:()=>window.history.forward()});var ee=(t,e)=>{let n=document.querySelector(`#${t}`)||document.querySelector(`.${t}`);if(!n)return;let r=window.location.pathname.replace(/\/$/,"");for(let o of e){let s=o.path.replace(/\/$/,"");if(r===s||r.startsWith(`${s}/`)){o.component(n);break}}};function te(t,e){let n=window.location.pathname.replace(/\/$/,"");e.routes.forEach(r=>{r.children?.length&&r.children.forEach(o=>{let s=o.path.replace(/\/$/,"");if(n===s||n.startsWith(`${s}/`)){let i=t.querySelector(`#${o.outlet}`)||t.querySelector(`.${o.outlet}`);i instanceof HTMLElement&&o.element&&o.element(i)}})})}import{createStore as ve}from"zustand/vanilla";function ne(t){let e=ve(()=>({value:t})),n=new Set;return{get:()=>e.getState().value,set:r=>{e.setState({value:r}),n.forEach(o=>o(r))},subscribe:r=>(n.add(r),r(e.getState().value),()=>n.delete(r))}}function re(t){let e=t();typeof e=="function"&&e()}var P=()=>{let t=document.querySelectorAll('a[href^="#"]');A(t,["click"],(e,n)=>{n.preventDefault();let r=e.getAttribute("href")?.substring(1),o=r?document.getElementById(r):null;o&&o.scrollIntoView({behavior:"smooth",block:"start"})})};import{debounce as we}from"lodash-es";var b=t=>t;typeof window<"u"&&typeof document<"u"&&(b=t=>{let e=document.createElement("div");return e.innerText=t,e.innerHTML});var Le=t=>{(t?Array.isArray(t)?t:t instanceof HTMLAnchorElement?[t]:Array.from(t):Array.from(document.querySelectorAll("a"))).forEach(n=>{if(!n||n.dataset.anchorEnhanced==="true")return;n.dataset.anchorEnhanced="true";let r=n.getAttribute("class")||"";n.setAttribute("class",b(r));let o=n.getAttribute("aria-label");o&&n.setAttribute("aria-label",b(o));let s=n.querySelector(":scope > *");s&&(n.innerHTML="",n.appendChild(s));let i=n.getAttribute("href")||"";if(!i.startsWith("#")){try{if(new URL(i,window.location.href).origin!==window.location.origin)return}catch{return}n.addEventListener("click",a=>{a.preventDefault();let c=n.getAttribute("href")||"";try{let u=new URL(c,window.location.href);window.history.pushState({},"",u.pathname+u.search+u.hash),window.dispatchEvent(new PopStateEvent("popstate"))}catch(u){console.error("Invalid URL in anchor:",c,u)}})}})},Me=we(Le,50),x=t=>{Me(t)};var D=t=>{let e=t.querySelectorAll("a");x(e)};var oe=t=>{P(),D(t)};var se=async()=>{let t="https://cdn.jsdelivr.net/npm/brython@3/brython.min.js",e="https://cdn.jsdelivr.net/npm/brython@3/brython_stdlib.js",n=r=>new Promise((o,s)=>{let i=document.createElement("script");i.src=r,i.onload=()=>o(),i.onerror=()=>s(new Error(`Failed to load ${r}`)),document.head.appendChild(i)});await n(t),await n(e),typeof window.brython=="function"?window.brython():console.error("Brython did not load correctly.")},ie=t=>new Promise((e,n)=>{let r=document.createElement("script");r.type="text/python",r.src=`/src/python/${t}`,r.onload=()=>e(),r.onerror=()=>n(new Error(`Failed to load ${t}`)),document.body.appendChild(r)});function ae(t){let e=null;return async(n,r)=>{try{if(!e){let o=await t();e=o.default||o}if(typeof e=="function")return e(n,r);if(e instanceof HTMLElement){n?.appendChild(e);return}if(e&&typeof e.render=="function")return e.render(n,r);console.warn("useTSLazy: Unsupported module type",e)}catch(o){console.error("useTSLazy failed:",o)}}}var ce=t=>typeof window>"u"?{isDOM:null}:{isDOM:t||document.body};import ue from"dompurify";import{createStore as Re}from"zustand/vanilla";import Ae from"dompurify";var T=Re(t=>({params:{},query:{},setParams:e=>t(()=>({params:le(e)})),setQuery:e=>t(()=>({query:le(e)}))}));function le(t){let e={};for(let n in t)e[n]=Ae.sanitize(t[n]);return e}var C=class{constructor(e,n){this.routes=[];this.routes=e,this.expectedParams=new Set(n),window.addEventListener("popstate",this.handlePopState.bind(this)),this.handlePopState()}handlePopState(){let e=window.location.pathname,n=window.location.search,r=this.parseQueryParams(n),o=this.findMatchingRoute(e,this.routes);if(o){if(o.routeto){this.navigate(o.routeto);return}let s=this.filterAndSanitizeParams(o.params);T.getState().setParams(s),T.getState().setQuery(r);let i=document.createElement("div");if(o.element?.(i,s,r),o.children){let a=e.slice(o.path.length),c=i.querySelector("#child");c&&this.renderChildren(o.children,a,c,s,r)}}else{let s=this.findMatchingRoute("*",this.routes);if(s){let i=this.filterAndSanitizeParams(s.params);T.getState().setParams(i),T.getState().setQuery(r);let a=document.createElement("div");s.element?.(a,i,r)}}}renderChildren(e,n,r,o,s){if(!e||e.length===0){let a=r.querySelector("#child");a&&a.remove();return}let i=this.findMatchingRoute(n,e);if(i){let a=document.createElement("div");a.id="child";let c={...o,...i.params},u=this.filterAndSanitizeParams(c);if(T.getState().setParams(u),T.getState().setQuery(s),i.element?.(a,u,s),r.appendChild(a),i.children){let d=n.slice(i.path.length);this.renderChildren(i.children,d,a,u,s)}}}parseQueryParams(e){let n={},r=new URLSearchParams(e);for(let[o,s]of r.entries())this.expectedParams.has(o)&&(n[o]=ue.sanitize(s));return n}findMatchingRoute(e,n,r={}){for(let o of n){let s=o.path;if(s==="*")return o;{let a=[],c=s.replace(/:[^\s/]+/g,l=>(a.push(l.substring(1)),"([^\\s/]+)")),u=new RegExp(`^${c}(?:/|$)`),d=e.match(u);if(d){let l={...r};if(a.forEach((p,m)=>{l[p]=d[m+1]??""}),o.children){let p=e.slice(d[0].length),m=this.findMatchingRoute(p,o.children,l);if(m)return m}return{...o,params:l}}}}}filterAndSanitizeParams(e){if(!e)return{};let n={};for(let r in e)this.expectedParams.has(r)&&(n[r]=ue.sanitize(e[r]??""));return n}navigate(e){history.pushState(null,"",e),this.handlePopState()}addRoute(e){this.routes.push(e)}};typeof window<"u"&&(window.addEventListener("popstate",()=>{v(),F()}),window.addEventListener("DOMContentLoaded",v));export{C as TSRouter,re as createEffect,ne as createSignal,k as html,ie as loadPyFiles,fe as mapper,te as renderChildRoutes,x as useAnchor,Q as useAnchorSingle,B as useInitialDOM,oe as useTSAnchorMount,K as useTSAuth,X as useTSCollection,R as useTSComponent,A as useTSElementEach,W as useTSElements,I as useTSEvent,j as useTSEventAll,U as useTSExtractParams,P as useTSHashAnchor,ae as useTSLazy,J as useTSMetaData,Z as useTSNavigate,D as useTSNoReload,ee as useTSOutlet,L as useTSParams,z as useTSPurifier,ce as useTSSSRHydration,Y as useTSSelect,se as useTSloadBrython};
|