@devwareng/vanilla-ts 1.8.36 → 1.8.37
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.d.cts +9 -12
- package/dist/index.d.ts +9 -12
- package/dist/index.js +6 -6
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var Ie=Object.create;var V=Object.defineProperty;var Ne=Object.getOwnPropertyDescriptor;var Fe=Object.getOwnPropertyNames;var Oe=Object.getPrototypeOf,He=Object.prototype.hasOwnProperty;var ct=(s,t)=>()=>(s&&(t=s(s=0)),t);var Bt=(s,t)=>{for(var e in t)V(s,e,{get:t[e],enumerable:!0})},Vt=(s,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Fe(t))!He.call(s,r)&&r!==e&&V(s,r,{get:()=>t[r],enumerable:!(n=Ne(t,r))||n.enumerable});return s};var P=(s,t,e)=>(e=s!=null?Ie(Oe(s)):{},Vt(t||!s||!s.__esModule?V(e,"default",{value:s,enumerable:!0}):e,s)),ke=s=>Vt(V({},"__esModule",{value:!0}),s);function de(s,t={}){let e=t.entryType||t.type;if(e==="both"&&(e=v.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&&!oe.includes(e))throw new Error(`readdirp: Invalid type passed. Use one of ${oe.join(", ")}`)}else throw new Error("readdirp: root argument is required. Usage: readdirp(root, options)");return t.root=s,new kt(t)}var M,le,A,v,Ht,ue,Ye,oe,Ge,Be,Ve,Ke,ae,ce,kt,he=ct(()=>{"use strict";M=require("fs/promises"),le=require("stream"),A=require("path"),v={FILE_TYPE:"files",DIR_TYPE:"directories",FILE_DIR_TYPE:"files_directories",EVERYTHING_TYPE:"all"},Ht={root:".",fileFilter:s=>!0,directoryFilter:s=>!0,type:v.FILE_TYPE,lstat:!1,depth:2147483648,alwaysStat:!1,highWaterMark:4096};Object.freeze(Ht);ue="READDIRP_RECURSIVE_ERROR",Ye=new Set(["ENOENT","EPERM","EACCES","ELOOP",ue]),oe=[v.DIR_TYPE,v.EVERYTHING_TYPE,v.FILE_DIR_TYPE,v.FILE_TYPE],Ge=new Set([v.DIR_TYPE,v.EVERYTHING_TYPE,v.FILE_DIR_TYPE]),Be=new Set([v.EVERYTHING_TYPE,v.FILE_DIR_TYPE,v.FILE_TYPE]),Ve=s=>Ye.has(s.code),Ke=process.platform==="win32",ae=s=>!0,ce=s=>{if(s===void 0)return ae;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 ae},kt=class extends le.Readable{constructor(t={}){super({objectMode:!0,autoDestroy:!0,highWaterMark:t.highWaterMark});let e={...Ht,...t},{root:n,type:r}=e;this._fileFilter=ce(e.fileFilter),this._directoryFilter=ce(e.directoryFilter);let o=e.lstat?M.lstat:M.stat;Ke?this._stat=a=>o(a,{bigint:!0}):this._stat=o,this._maxDepth=e.depth??Ht.depth,this._wantsDir=r?Ge.has(r):!1,this._wantsFile=r?Be.has(r):!1,this._wantsEverything=r===v.EVERYTHING_TYPE,this._root=(0,A.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:o}=e,a=n.splice(0,t).map(c=>this._formatEntry(c,r)),i=await Promise.all(a);for(let c of i){if(!c)continue;if(this.destroyed)return;let l=await this._getEntryType(c);l==="directory"&&this._directoryFilter(c)?(o<=this._maxDepth&&this.parents.push(this._exploreDir(c.fullPath,o+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,M.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 o=(0,A.resolve)((0,A.join)(e,r));n={path:(0,A.relative)(this._root,o),fullPath:o,basename:r},n[this._statsProp]=this._isDirent?t:await this._stat(o)}catch(o){this._onError(o);return}return n}_onError(t){Ve(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,M.realpath)(n),o=await(0,M.lstat)(r);if(o.isFile())return"file";if(o.isDirectory()){let a=r.length;if(n.startsWith(r)&&n.substr(a,1)===A.sep){let i=new Error(`Circular symlink detected: "${n}" points to "${r}"`);return i.code=ue,this._onError(i)}return"directory"}}catch(r){return this._onError(r),""}}}_includeAsFile(t){let e=t&&t[this._statsProp];return e&&this._wantsEverything&&!e.isDirectory()}}});function fe(s,t,e,n,r){let o=(a,i)=>{e(s),r(a,i,{watchedPath:s}),i&&s!==i&&tt(E.resolve(s,i),N,E.join(s,i))};try{return(0,F.watch)(s,{persistent:t.persistent},o)}catch(a){n(a);return}}var F,b,E,me,Qe,Wt,pe,st,rt,jt,Je,Xe,Ze,ge,y,L,ts,es,N,X,k,ss,rs,ns,zt,U,is,q,Ee,Z,tt,os,$t,as,et,ye=ct(()=>{"use strict";F=require("fs"),b=require("fs/promises"),E=P(require("path"),1),me=require("os"),Qe="data",Wt="end",pe="close",st=()=>{},rt=process.platform,jt=rt==="win32",Je=rt==="darwin",Xe=rt==="linux",Ze=rt==="freebsd",ge=(0,me.type)()==="OS400",y={ALL:"all",READY:"ready",ADD:"add",CHANGE:"change",ADD_DIR:"addDir",UNLINK:"unlink",UNLINK_DIR:"unlinkDir",RAW:"raw",ERROR:"error"},L=y,ts="watch",es={lstat:b.lstat,stat:b.stat},N="listeners",X="errHandlers",k="rawEmitters",ss=[N,X,k],rs=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"]),ns=s=>rs.has(E.extname(s).slice(1).toLowerCase()),zt=(s,t)=>{s instanceof Set?s.forEach(t):t(s)},U=(s,t,e)=>{let n=s[t];n instanceof Set||(s[t]=n=new Set([n])),n.add(e)},is=s=>t=>{let e=s[t];e instanceof Set?e.clear():delete s[t]},q=(s,t,e)=>{let n=s[t];n instanceof Set?n.delete(e):n===e&&delete s[t]},Ee=s=>s instanceof Set?s.size===0:!s,Z=new Map;tt=(s,t,e,n,r)=>{let o=Z.get(s);o&&zt(o[t],a=>{a(e,n,r)})},os=(s,t,e,n)=>{let{listener:r,errHandler:o,rawEmitter:a}=n,i=Z.get(t),c;if(!e.persistent)return c=fe(s,e,r,o,a),c?c.close.bind(c):void 0;if(i)U(i,N,r),U(i,X,o),U(i,k,a);else{if(c=fe(s,e,tt.bind(null,t,N),o,tt.bind(null,t,k)),!c)return;c.on(L.ERROR,async l=>{let u=tt.bind(null,t,X);if(i&&(i.watcherUnusable=!0),jt&&l.code==="EPERM")try{await(await(0,b.open)(s,"r")).close(),u(l)}catch{}else u(l)}),i={listeners:r,errHandlers:o,rawEmitters:a,watcher:c},Z.set(t,i)}return()=>{q(i,N,r),q(i,X,o),q(i,k,a),Ee(i.listeners)&&(i.watcher.close(),Z.delete(t),ss.forEach(is(i)),i.watcher=void 0,Object.freeze(i))}},$t=new Map,as=(s,t,e,n)=>{let{listener:r,rawEmitter:o}=n,a=$t.get(t),i=a&&a.options;return i&&(i.persistent<e.persistent||i.interval>e.interval)&&((0,F.unwatchFile)(t),a=void 0),a?(U(a,N,r),U(a,k,o)):(a={listeners:r,rawEmitters:o,options:e,watcher:(0,F.watchFile)(t,e,(c,l)=>{zt(a.rawEmitters,d=>{d(L.CHANGE,t,{curr:c,prev:l})});let u=c.mtimeMs;(c.size!==l.size||u>l.mtimeMs||u===0)&&zt(a.listeners,d=>d(s,c))})},$t.set(t,a)),()=>{q(a,N,r),q(a,k,o),Ee(a.listeners)&&($t.delete(t),(0,F.unwatchFile)(t),a.options=a.watcher=void 0,Object.freeze(a))}},et=class{constructor(t){this.fsw=t,this._boundHandleError=e=>t._handleError(e)}_watchWithNodeFs(t,e){let n=this.fsw.options,r=E.dirname(t),o=E.basename(t);this.fsw._getWatchedDir(r).add(o);let i=E.resolve(t),c={persistent:n.persistent};e||(e=st);let l;if(n.usePolling){let u=n.interval!==n.binaryInterval;c.interval=u&&ns(o)?n.binaryInterval:n.interval,l=as(t,i,c,{listener:e,rawEmitter:this.fsw._emitRaw})}else l=os(t,i,c,{listener:e,errHandler:this._boundHandleError,rawEmitter:this.fsw._emitRaw});return l}_handleFile(t,e,n){if(this.fsw.closed)return;let r=E.dirname(t),o=E.basename(t),a=this.fsw._getWatchedDir(r),i=e;if(a.has(o))return;let c=async(u,d)=>{if(this.fsw._throttle(ts,t,5)){if(!d||d.mtimeMs===0)try{let h=await(0,b.stat)(t);if(this.fsw.closed)return;let f=h.atimeMs,T=h.mtimeMs;if((!f||f<=T||T!==i.mtimeMs)&&this.fsw._emit(L.CHANGE,t,h),(Je||Xe||Ze)&&i.ino!==h.ino){this.fsw._closeFile(u),i=h;let _=this._watchWithNodeFs(t,c);_&&this.fsw._addPathCloser(u,_)}else i=h}catch{this.fsw._remove(r,o)}else if(a.has(o)){let h=d.atimeMs,f=d.mtimeMs;(!h||h<=f||f!==i.mtimeMs)&&this.fsw._emit(L.CHANGE,t,d),i=d}}},l=this._watchWithNodeFs(t,c);if(!(n&&this.fsw.options.ignoreInitial)&&this.fsw._isntIgnored(t)){if(!this.fsw._throttle(L.ADD,t,0))return;this.fsw._emit(L.ADD,t,e)}return l}async _handleSymlink(t,e,n,r){if(this.fsw.closed)return;let o=t.fullPath,a=this.fsw._getWatchedDir(e);if(!this.fsw.options.followSymlinks){this.fsw._incrReadyCount();let i;try{i=await(0,b.realpath)(n)}catch{return this.fsw._emitReady(),!0}return this.fsw.closed?void 0:(a.has(r)?this.fsw._symlinkPaths.get(o)!==i&&(this.fsw._symlinkPaths.set(o,i),this.fsw._emit(L.CHANGE,n,t.stats)):(a.add(r),this.fsw._symlinkPaths.set(o,i),this.fsw._emit(L.ADD,n,t.stats)),this.fsw._emitReady(),!0)}if(this.fsw._symlinkPaths.has(o))return!0;this.fsw._symlinkPaths.set(o,!0)}_handleRead(t,e,n,r,o,a,i){if(t=E.join(t,""),i=this.fsw._throttle("readdir",t,1e3),!i)return;let c=this.fsw._getWatchedDir(n.path),l=new Set,u=this.fsw._readdirp(t,{fileFilter:d=>n.filterPath(d),directoryFilter:d=>n.filterDir(d)});if(u)return u.on(Qe,async d=>{if(this.fsw.closed){u=void 0;return}let h=d.path,f=E.join(t,h);if(l.add(h),!(d.stats.isSymbolicLink()&&await this._handleSymlink(d,t,f,h))){if(this.fsw.closed){u=void 0;return}(h===r||!r&&!c.has(h))&&(this.fsw._incrReadyCount(),f=E.join(o,E.relative(o,f)),this._addToNodeFs(f,e,n,a+1))}}).on(L.ERROR,this._boundHandleError),new Promise((d,h)=>{if(!u)return h();u.once(Wt,()=>{if(this.fsw.closed){u=void 0;return}let f=i?i.clear():!1;d(void 0),c.getChildren().filter(T=>T!==t&&!l.has(T)).forEach(T=>{this.fsw._remove(t,T)}),u=void 0,f&&this._handleRead(t,!1,n,r,o,a,i)})})}async _handleDir(t,e,n,r,o,a,i){let c=this.fsw._getWatchedDir(E.dirname(t)),l=c.has(E.basename(t));!(n&&this.fsw.options.ignoreInitial)&&!o&&!l&&this.fsw._emit(L.ADD_DIR,t,e),c.add(E.basename(t)),this.fsw._getWatchedDir(t);let u,d,h=this.fsw.options.depth;if((h==null||r<=h)&&!this.fsw._symlinkPaths.has(i)){if(!o&&(await this._handleRead(t,n,a,o,t,r,u),this.fsw.closed))return;d=this._watchWithNodeFs(t,(f,T)=>{T&&T.mtimeMs===0||this._handleRead(f,!1,a,o,t,r,u)})}return d}async _addToNodeFs(t,e,n,r,o){let a=this.fsw._emitReady;if(this.fsw._isIgnored(t)||this.fsw.closed)return a(),!1;let i=this.fsw._getWatchHelpers(t);n&&(i.filterPath=c=>n.filterPath(c),i.filterDir=c=>n.filterDir(c));try{let c=await es[i.statMethod](i.watchPath);if(this.fsw.closed)return;if(this.fsw._isIgnored(i.watchPath,c))return a(),!1;let l=this.fsw.options.followSymlinks,u;if(c.isDirectory()){let d=E.resolve(t),h=l?await(0,b.realpath)(t):t;if(this.fsw.closed||(u=await this._handleDir(i.watchPath,c,e,r,o,i,h),this.fsw.closed))return;d!==h&&h!==void 0&&this.fsw._symlinkPaths.set(d,h)}else if(c.isSymbolicLink()){let d=l?await(0,b.realpath)(t):t;if(this.fsw.closed)return;let h=E.dirname(i.watchPath);if(this.fsw._getWatchedDir(h).add(i.watchPath),this.fsw._emit(L.ADD,i.watchPath,c),u=await this._handleDir(h,c,e,r,t,i,d),this.fsw.closed)return;d!==void 0&&this.fsw._symlinkPaths.set(E.resolve(t),d)}else u=this._handleFile(i.watchPath,c,e);return a(),u&&this.fsw._addPathCloser(t,u),!1}catch(c){if(this.fsw._handleError(c))return a(),t}}}});var De={};Bt(De,{FSWatcher:()=>Y,WatchHelper:()=>it,default:()=>_s,watch:()=>xe});function nt(s){return Array.isArray(s)?s:[s]}function ms(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 ps(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 Te(s,t,e){let n=ps(t);for(let r=0;r<s.length;r++){let o=s[r];if(o(n,e))return!0}return!1}function gs(s,t){if(s==null)throw new TypeError("anymatch: specify first argument");let n=nt(s).map(r=>ms(r));return t==null?(r,o)=>Te(n,r,o):Te(n,t)}function xe(s,t={}){let e=new Y(t);return e.add(s),e}var ve,ot,Re,m,Ut,cs,Le,ls,us,ds,we,hs,fs,qt,_e,Se,be,Pe,Es,ys,Yt,ws,Ts,it,Y,_s,Me=ct(()=>{"use strict";ve=require("fs"),ot=require("fs/promises"),Re=require("events"),m=P(require("path"),1);he();ye();Ut="/",cs="//",Le=".",ls="..",us="string",ds=/\\/g,we=/\/\//,hs=/\..*\.(sw[px])$|~$|\.subl.*\.tmp/,fs=/^\.[/\\]/;qt=s=>typeof s=="object"&&s!==null&&!(s instanceof RegExp);_e=s=>{let t=nt(s).flat();if(!t.every(e=>typeof e===us))throw new TypeError(`Non-string provided as watch path: ${t}`);return t.map(be)},Se=s=>{let t=s.replace(ds,Ut),e=!1;for(t.startsWith(cs)&&(e=!0);t.match(we);)t=t.replace(we,Ut);return e&&(t=Ut+t),t},be=s=>Se(m.normalize(Se(s))),Pe=(s="")=>t=>typeof t=="string"?be(m.isAbsolute(t)?t:m.join(s,t)):t,Es=(s,t)=>m.isAbsolute(s)?s:m.join(t,s),ys=Object.freeze(new Set),Yt=class{constructor(t,e){this.path=t,this._removeWatcher=e,this.items=new Set}add(t){let{items:e}=this;e&&t!==Le&&t!==ls&&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,ot.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=st,this.items=ys,Object.freeze(this)}},ws="stat",Ts="lstat",it=class{constructor(t,e,n){this.fsw=n;let r=t;this.path=t=t.replace(fs,""),this.watchPath=r,this.fullWatchPath=m.resolve(r),this.dirParts=[],this.dirParts.forEach(o=>{o.length>1&&o.pop()}),this.followSymlinks=e,this.statMethod=e?ws:Ts}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)}},Y=class extends Re.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?nt(t.ignored):nt([]),awaitWriteFinish:e===!0?n:typeof e=="object"?{...n,...e}:!1};ge&&(r.usePolling=!0),r.atomic===void 0&&(r.atomic=!r.usePolling);let o=process.env.CHOKIDAR_USEPOLLING;if(o!==void 0){let c=o.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 i=0;this._emitReady=()=>{i++,i>=this._readyCount&&(this._emitReady=st,this._readyEmitted=!0,process.nextTick(()=>this.emit(y.READY)))},this._emitRaw=(...c)=>this.emit(y.RAW,...c),this._boundRemove=this._remove.bind(this),this.options=r,this._nodeFsHandler=new et(this),Object.freeze(r)}_addIgnoredPath(t){if(qt(t)){for(let e of this._ignoredPaths)if(qt(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)qt(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 o=_e(t);return r&&(o=o.map(a=>Es(a,r))),o.forEach(a=>{this._removeIgnoredPath(a)}),this._userIgnored=void 0,this._readyCount||(this._readyCount=0),this._readyCount+=o.length,Promise.all(o.map(async a=>{let i=await this._nodeFsHandler._addToNodeFs(a,!n,void 0,0,e);return i&&this._emitReady(),i})).then(a=>{this.closed||a.forEach(i=>{i&&this.add(m.dirname(i),m.basename(e||i))})}),this}unwatch(t){if(this.closed)return this;let e=_e(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 o=(this.options.cwd?m.relative(this.options.cwd,n):n)||Le;t[o]=e.getChildren().sort()}),t}emitWithAll(t,e){this.emit(t,...e),t!==y.ERROR&&this.emit(y.ALL,t,...e)}async _emit(t,e,n){if(this.closed)return;let r=this.options;jt&&(e=m.normalize(e)),r.cwd&&(e=m.relative(r.cwd,e));let o=[e];n!=null&&o.push(n);let a=r.awaitWriteFinish,i;if(a&&(i=this._pendingWrites.get(e)))return i.lastChange=new Date,this;if(r.atomic){if(t===y.UNLINK)return this._pendingUnlinks.set(e,[t,...o]),setTimeout(()=>{this._pendingUnlinks.forEach((c,l)=>{this.emit(...c),this.emit(y.ALL,...c),this._pendingUnlinks.delete(l)})},typeof r.atomic=="number"?r.atomic:100),this;t===y.ADD&&this._pendingUnlinks.has(e)&&(t=y.CHANGE,this._pendingUnlinks.delete(e))}if(a&&(t===y.ADD||t===y.CHANGE)&&this._readyEmitted){let c=(l,u)=>{l?(t=y.ERROR,o[0]=l,this.emitWithAll(t,o)):u&&(o.length>1?o[1]=u:o.push(u),this.emitWithAll(t,o))};return this._awaitWriteFinish(e,a.stabilityThreshold,t,c),this}if(t===y.CHANGE&&!this._throttle(y.CHANGE,e,50))return this;if(r.alwaysStat&&n===void 0&&(t===y.ADD||t===y.ADD_DIR||t===y.CHANGE)){let c=r.cwd?m.join(r.cwd,e):e,l;try{l=await(0,ot.stat)(c)}catch{}if(!l||this.closed)return;o.push(l)}return this.emitWithAll(t,o),this}_handleError(t){let e=t&&t.code;return t&&e!=="ENOENT"&&e!=="ENOTDIR"&&(!this.options.ignorePermissionErrors||e!=="EPERM"&&e!=="EACCES")&&this.emit(y.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 o=r.get(e);if(o)return o.count++,!1;let a,i=()=>{let l=r.get(e),u=l?l.count:0;return r.delete(e),clearTimeout(a),l&&clearTimeout(l.timeoutObject),u};a=setTimeout(i,n);let c={timeoutObject:a,clear:i,count:0};return r.set(e,c),c}_incrReadyCount(){return this._readyCount++}_awaitWriteFinish(t,e,n,r){let o=this.options.awaitWriteFinish;if(typeof o!="object")return;let a=o.pollInterval,i,c=t;this.options.cwd&&!m.isAbsolute(t)&&(c=m.join(this.options.cwd,t));let l=new Date,u=this._pendingWrites;function d(h){(0,ve.stat)(c,(f,T)=>{if(f||!u.has(t)){f&&f.code!=="ENOENT"&&r(f);return}let _=Number(new Date);h&&T.size!==h.size&&(u.get(t).lastChange=_);let I=u.get(t);_-I.lastChange>=e?(u.delete(t),r(void 0,T)):i=setTimeout(d,a,T)})}u.has(t)||(u.set(t,{lastChange:l,cancelWait:()=>(u.delete(t),clearTimeout(i),n)}),i=setTimeout(d,a))}_isIgnored(t,e){if(this.options.atomic&&hs.test(t))return!0;if(!this._userIgnored){let{cwd:n}=this.options,o=(this.options.ignored||[]).map(Pe(n)),i=[...[...this._ignoredPaths].map(Pe(n)),...o];this._userIgnored=gs(i,void 0)}return this._userIgnored(t,e)}_isntIgnored(t,e){return!this._isIgnored(t,e)}_getWatchHelpers(t){return new it(t,this.options.followSymlinks,this)}_getWatchedDir(t){let e=m.resolve(t);return this._watched.has(e)||this._watched.set(e,new Yt(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),o=m.resolve(r);if(n=n??(this._watched.has(r)||this._watched.has(o)),!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(o)&&this._symlinkPaths.delete(o);let u=r;if(this.options.cwd&&(u=m.relative(this.options.cwd,r)),this.options.awaitWriteFinish&&this._pendingWrites.has(u)&&this._pendingWrites.get(u).cancelWait()===y.ADD)return;this._watched.delete(r),this._watched.delete(o);let d=n?y.UNLINK_DIR:y.UNLINK;l&&!this._isIgnored(r)&&this._emit(d,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:y.ALL,alwaysStat:!0,lstat:!0,...e,depth:0},r=de(t,n);return this._streams.add(r),r.once(pe,()=>{r=void 0}),r.once(Wt,()=>{r&&(this._streams.delete(r),r=void 0)}),r}};_s={watch:xe,FSWatcher:Y}});var Ss={};Bt(Ss,{TSFilebasedRouter:()=>Ae,TSRouter:()=>J,createEffect:()=>Dt,createSignal:()=>xt,html:()=>lt,loadPyFiles:()=>At,mapper:()=>Kt,renderChildRoutes:()=>bt,useAnchor:()=>j,useAnchorSingle:()=>_t,useInitialDOM:()=>wt,useTSAuth:()=>vt,useTSCollection:()=>Pt,useTSComponent:()=>W,useTSElementEach:()=>Q,useTSElements:()=>Et,useTSEvent:()=>ht,useTSEventAll:()=>pt,useTSExtractParams:()=>mt,useTSLazy:()=>Ct,useTSMetaData:()=>St,useTSNavigate:()=>Rt,useTSNoReload:()=>Ft,useTSOutlet:()=>Lt,useTSParams:()=>$,useTSPurifier:()=>dt,useTSSSRHydration:()=>It,useTSSelect:()=>H,useTSloadBrython:()=>Mt});module.exports=ke(Ss);function $e(s){let t=s==null?"":String(s),e=t.toLowerCase();return e.includes("<script")||e.includes("javascript:")?"":(t=t.replace(/url\(\s*(['"])?\s*\1?\s*\)/gi,""),t.replace(/<\s*(script|iframe|object|embed|link|style|meta|body)[^>]*>.*?<\s*\/\s*\1\s*>/gi,"").replace(/<\s*(script|iframe|object|embed|link|style|meta)[^>]*>/gi,"").replace(/\s+on\w+\s*=\s*(['"]).*?\1/gi,"").replace(/\s+on\w+\s*=\s*[^\s>]+/gi,"").replace(/\s(href|src)\s*=\s*(['"]?)\s*(javascript:|vbscript:|data:|file:)[^'">\s]*\2/gi,'$1="#"'))}function lt(s,...t){return s.reduce((e,n,r)=>{let o=r<t.length?$e(t[r]):"";return e+n+o},"")}var ze=s=>s.replace(/<\/?(script|iframe|object|embed|link|meta|style|form|textarea|svg|math|body)[^>]*>/gi,"").replace(/<(?!\/?(b|i|em|strong|p|br|ul|ol|li|a|div|span|h1|h2|h3|h4|h5|h6|section|article|input|button)\b)[^>]*>/gi,"").replace(/\s+on[a-z]+\s*=\s*("[^"]*"|'[^']*'|[^\s>]+)/gi,"").replace(/\s*style\s*=\s*("[^"]*"|'[^']*')/gi,"").replace(/<a\b([^>]*)href\s*=\s*(['"]?)(?!https?:|#)[^'"\s>]+(['"]?)([^>]*)>/gi,"<a$1$4>").replace(/\s+(href|src)\s*=\s*(['"]?)\s*(javascript:|data:)[^'"\s>]*/gi,"").replace(/<a\b([^>]*)\bhref\s*=\s*(['"])(\/blog|#blog)\2([^>]*)>/gi,'<a$1 href=$2$3$2 href-line="true"$4>').trim(),Kt=s=>s?.map(t=>ze(t)).join("")??"";var ut=P(require("dompurify"),1),dt=(s,t)=>{let n={...{ADD_TAGS:["my-custom-tag"]},...t};return typeof s=="string"?ut.default.sanitize(s,n):ut.default.sanitize(s.innerHTML,n)};var ht=(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 instanceof HTMLElement?s.addEventListener(t,e):s===document?document.addEventListener(t,e):console.warn("Invalid target parameter provided.")};var Qt=require("zustand/vanilla"),ft=P(require("dompurify"),1);function We(s,t){let e=[],n=s.replace(/:[^/]+/g,i=>(e.push(i.slice(1)),"([^/]+)")),r=new RegExp(`^${n}$`),o=t.match(r),a={};return o&&e.forEach((i,c)=>{a[i]=ft.default.sanitize(o[c+1]??"")}),a}function je(s){let t={},e=new URLSearchParams(s);for(let[n,r]of e.entries())t[n]=ft.default.sanitize(r);return t}var $=(0,Qt.createStore)((s,t)=>({params:{},query:{},setFromPattern:e=>{let n=window.location.pathname,r=We(e,n),o=je(window.location.search);s({params:r,query:o})},getParam:e=>t().params[e],getQuery:e=>t().query[e]}));function mt(s){let t=$.getState();t.setFromPattern(s);let e=t.params,n=t.query;return{...e,...n}}var pt=(s,t,e)=>{let n=document.querySelectorAll(s);return n.forEach(r=>{r.addEventListener(t,e)}),()=>{n.forEach(r=>{r.removeEventListener(t,e)})}};var Jt=P(require("dompurify"),1),z=require("motion");function gt(s){let t={},e=400,n="ease-in-out",r=0,o=0;return s.split(/\s+/).forEach(i=>{i==="infinite"?o=1/0:i.startsWith("duration-")?e=Number(i.replace("duration-","")):i.startsWith("delay-")?r=Number(i.replace("delay-","")):/^ease(-in|-out|-in-out)?|linear$/.test(i)?n=i:i.startsWith("opacity-")?t.opacity=Number(i.replace("opacity-",""))/100:/^-?x-\d+$/.test(i)?t.translateX=Number(i.replace("-x-","").replace("x-",""))*(i.startsWith("-x-")?-1:1):/^-?y-\d+$/.test(i)?t.translateY=Number(i.replace("-y-","").replace("y-",""))*(i.startsWith("-y-")?-1:1):/^-?rotate-\d+$/.test(i)?t.rotate=Number(i.replace("-rotate-","").replace("rotate-",""))*(i.startsWith("-rotate-")?-1:1):/^-?scale-\d+$/.test(i)&&(t.scale=Number(i.replace("-scale-","").replace("scale-",""))/100)}),{props:t,duration:e,easing:n,delay:r,repeat:o}}var Et=(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","label","form"],ALLOWED_ATTR:["class","id","href","src","alt","title","data-click","data-change","data-select","data-effect","data-classlist","data-hover","data-submit","data-key","data-event","data-component"],...n},o=Jt.default.sanitize(t,{...r,RETURN_DOM_FRAGMENT:!0});for(;s.firstChild;)s.removeChild(s.firstChild);s.appendChild(o),Object.entries(e).forEach(([a,i])=>{s.querySelectorAll(`[data-click="${a}"]`).forEach(c=>{c.addEventListener("click",l=>i(c,l))})}),s.querySelectorAll("[data-component]").forEach(a=>{let i=a.dataset.component;i&&e[i]&&e[i](a)}),s.querySelectorAll("[data-effect]").forEach(a=>{let c=(a.dataset.effect?.split(/\s+/)||[]).join(" "),{props:l,duration:u,easing:d,delay:h,repeat:f}=gt(c);setTimeout(()=>{(0,z.animate)(a,l,{duration:u/1e3,easing:d,repeat:f})},h)}),s.querySelectorAll("[data-hover]").forEach(a=>{let i=a.dataset.hover||"",[c,...l]=i.split(" hover:"),u=gt(c),d=gt(l.join(" "));(0,z.animate)(a,u.props,{duration:u.duration/1e3,easing:u.easing}),a.addEventListener("mouseenter",()=>{(0,z.animate)(a,d.props,{duration:d.duration/1e3,easing:d.easing})}),a.addEventListener("mouseleave",()=>{(0,z.animate)(a,u.props,{duration:u.duration/1e3,easing:u.easing})})})};var yt=P(require("dompurify"),1),K=null,wt=(s,t)=>{if(typeof document>"u")return;let e=document.getElementById(s);if(!e)return;yt.default.addHook("uponSanitizeAttribute",(a,i)=>{let c=(i.attrName||"").toLowerCase(),l=(i.attrValue??"").toString().trim();if(c.startsWith("on")){i.keepAttr=!1;return}if((c==="href"||c==="src")&&/^(javascript:|vbscript:|data:|file:|about:)/i.test(l)){i.keepAttr=!1;return}if(c==="class"){let d=l.split(/\s+/).filter(Boolean).filter(h=>{if(/^[a-zA-Z0-9\-\:\/_\[\]\(\)]+$/.test(h)){if(/^bg-\[url\(.*\)\]$/.test(h)){let f=h.replace(/^bg-\[url\(/,"").replace(/\)\]$/,"").replace(/^['"]|['"]$/g,"");return f===""||/^https?:\/\//i.test(f)||/^\/(?!\/)/.test(f)||/^\.{0,2}\//.test(f)}return!0}return!1});i.attrValue=d.join(" ");return}if(c==="style"){i.keepAttr=!1;return}});let n=e.cloneNode(!0),r=yt.default.sanitize(n.innerHTML,{USE_PROFILES:{html:!0},ALLOWED_TAGS:["div","span","p","h1","h2","h3","h4","h5","h6","ul","ol","li","strong","em","a","img","br","form","button","input","label"],ALLOWED_ATTR:["href","src","alt","title","class","id","type","name","value","placeholder","data-click","data-change","data-submit","data-select","data-hover","data-classlist"],FORBID_TAGS:["script","iframe","object","embed","body","html","svg","math","link","meta"],ALLOW_DATA_ATTR:!0,KEEP_CONTENT:!1,RETURN_DOM_FRAGMENT:!0}),o=Array.from(r.childNodes).map(a=>a.outerHTML||a.textContent||"").join("");if(K!==null&&o!==K){let a=document.createElement("div");t(a);let c=new DOMParser().parseFromString(K,"text/html");for(;e.firstChild;)e.removeChild(e.firstChild);c.body.childNodes.forEach(l=>e.appendChild(l.cloneNode(!0)))}else{for(K=o;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(r),t(e)}};var Tt=P(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 _t=(s,t,e,n="",r=null)=>{if(!s)return;let o=Tt.default.sanitize(t,{ALLOWED_URI_REGEXP:/^(https?:|\/)/}),a=Tt.default.sanitize(e,{USE_PROFILES:{html:!1}});s.setAttribute("href",o),s.setAttribute("aria-label",a),n&&(s.className=n.trim()),r&&s.replaceChildren(r),typeof window<"u"&&s.addEventListener("click",i=>{i.preventDefault();let l=i.currentTarget.getAttribute("href");if(l){let u=window.scrollY;window.scrollTo(0,0),window.history.pushState({scrollPosition:u},"",l),dispatchEvent(new PopStateEvent("popstate"))}})};var D=P(require("dompurify"),1);var Xt=(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",o=["'self'","https://fonts.googleapis.com","https://fonts.gstatic.com","https://www.google.com/maps/"],a="'self' https://www.youtube.com",i="'self'",c="/csp-report",l=!1)=>{let u=()=>{try{let d=document.querySelector('meta[http-equiv="Content-Security-Policy"]');d||(d=document.createElement("meta"),d.setAttribute("http-equiv","Content-Security-Policy"),document.head.appendChild(d));let h=l?`report-uri ${c};`:"";d.setAttribute("content",`default-src 'self'; script-src ${s}; style-src ${t}; object-src ${e}; font-src ${n}; img-src ${r}; connect-src ${o.join(" ")}; frame-src ${a}; base-uri ${i}; ${h}`)}catch(d){console.error("Error adding CSP meta element:",d)}};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",u):u()};var St=(s,t)=>{let e={name:D.default.sanitize(s.name||""),title:D.default.sanitize(s.title||""),description:D.default.sanitize(s.description||"Default description"),author:D.default.sanitize(s.author||""),favicon:s.favicon},n=p=>{e.name=D.default.sanitize(p),_("name",e.name)},r=p=>{e.title=D.default.sanitize(p),document.title=e.title},o=p=>{e.description=D.default.sanitize(p),_("description",e.description)},a=p=>{e.author=D.default.sanitize(p),_("author",e.author)},i=p=>{e.favicon=D.default.sanitize(p);let g=document.querySelector('link[rel="icon"]');g||(g=document.createElement("link"),g.rel="icon",document.head.appendChild(g)),g.href=e.favicon},c=()=>e.name,l=()=>e.title,u=()=>e.description,d=()=>e.author,h=()=>e.favicon,f=()=>e,T=(p,g)=>{let w=document.createElement("meta");w.setAttribute("name",p),w.setAttribute("content",g),document.head.appendChild(w)},_=(p,g)=>{let w=document.querySelector(`meta[name="${p}"]`);w?w.setAttribute("content",g):T(p,g)},I=()=>{e.title&&(document.title=e.title),e.name&&_("name",e.name),e.description&&_("description",e.description),e.author&&_("author",e.author),e.favicon&&i(e.favicon)};return t&&Xt(t.scriptSrc,t.styleSrc,t.objectSrc,Array.isArray(t.connectSrc)?t.connectSrc.join(" "):t.connectSrc,t.reportOnly!==void 0?String(t.reportOnly):void 0),I(),{setName:n,setTitle:r,setDescription:o,setAuthor:a,setFavicon:i,getName:c,getTitle:l,getDescription:u,getAuthor:d,getFavicon:h,getAllMetaData:f,appendMetaTagsToHead:I}};var Zt=P(require("dompurify"),1),W=(s,t,e,n,r)=>{let o=`#${s}`,a=t.querySelectorAll(o);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 i=a[0];i.innerHTML=Zt.default.sanitize(i.innerHTML,{USE_PROFILES:{html:!0}}),e(i,n,r)};var Pt=(s,t,e,n=[])=>{let r=new Set;s.forEach((o,a)=>{if(r.has(o)){console.warn(`[useTSCollection] Duplicate ID in collection array: "${o}" \u2014 skipping.`);return}r.add(o);let i=t.querySelectorAll(`#${o}`);if(i.length>1){console.warn(`[useTSCollection] Duplicate ID in DOM: "${o}" (${i.length} elements found) \u2014 skipping component mount.`);return}let c=e[a],l=Array.isArray(n)?n[a]:void 0;typeof c=="function"?W(o,t,c,l):console.warn(`[useTSCollection] No valid component function found for ID: "${o}"`)})};var H=(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 te=require("jwt-decode"),vt=(s,t)=>{let e=localStorage.getItem("token");if(!e)return window.location.href=t,null;try{let n=(0,te.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 Q=(s,t,e)=>{s.forEach(n=>{t.forEach(r=>{n.addEventListener(r,o=>{e(n,o)})})})};var Rt=()=>({back:()=>window.history.back(),forward:()=>window.history.forward()});var Lt=(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 o=r.path.replace(/\/$/,"");if(n===o||n.startsWith(`${o}/`)){r.component(e);break}}};function bt(s,t){let e=window.location.pathname.replace(/\/$/,"");t.routes.forEach(n=>{n.children?.length&&n.children.forEach(r=>{let o=r.path.replace(/\/$/,"");if(e===o||e.startsWith(`${o}/`)){let a=s.querySelector(`#${r.outlet}`)||s.querySelector(`.${r.outlet}`);a instanceof HTMLElement&&r.element&&r.element(a)}})})}var ee=require("zustand/vanilla");function xt(s){let t=(0,ee.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 Dt(s){let t=s();typeof t=="function"&&t()}var Mt=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,o)=>{let a=document.createElement("script");a.src=n,a.onload=()=>r(),a.onerror=()=>o(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.")},At=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 Ct(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){let r=t.cloneNode(!0);return e?.appendChild(r),r}if(typeof t=="object"&&t!==null&&"render"in 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 It=s=>typeof window>"u"?{isDOM:null}:{isDOM:s||document.body};var se=require("lodash-es"),Nt=s=>s;typeof window<"u"&&typeof document<"u"&&(Nt=s=>{let t=document.createElement("div");return t.innerText=s,t.innerHTML});var Ue=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",Nt(n));let r=e.getAttribute("aria-label");r&&e.setAttribute("aria-label",Nt(r));let o=e.querySelector(":scope > *");o&&(e.innerHTML="",e.appendChild(o));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",i=>{i.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)}})}})},qe=(0,se.debounce)(Ue,50),j=s=>{qe(s)};var Ft=s=>{if(!s)return;let t=H("a",s);j(t)};var Ot=P(require("dompurify"),1);var ne=require("zustand/vanilla"),ie=P(require("dompurify"),1),C=(0,ne.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]=ie.default.sanitize(s[e]);return t}var J=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 o=this.filterAndSanitizeParams(r.params);C.getState().setParams(o),C.getState().setQuery(n);let a=document.createElement("div");if(r.element?.(a,o,n),r.children){let i=t.slice(r.path.length),c=a.querySelector("#child");c&&this.renderChildren(r.children,i,c,o,n)}}else{let o=this.findMatchingRoute("*",this.routes);if(o){let a=this.filterAndSanitizeParams(o.params);C.getState().setParams(a),C.getState().setQuery(n);let i=document.createElement("div");o.element?.(i,a,n)}}}renderChildren(t,e,n,r,o){if(!t||t.length===0){let i=n.querySelector("#child");i&&i.remove();return}let a=this.findMatchingRoute(e,t);if(a){let i=document.createElement("div");i.id="child";let c={...r,...a.params},l=this.filterAndSanitizeParams(c);if(C.getState().setParams(l),C.getState().setQuery(o),a.element?.(i,l,o),n.appendChild(i),a.children){let u=e.slice(a.path.length);this.renderChildren(a.children,u,i,l,o)}}}parseQueryParams(t){let e={},n=new URLSearchParams(t);for(let[r,o]of n.entries())this.expectedParams.has(r)&&(e[r]=Ot.default.sanitize(o));return e}findMatchingRoute(t,e,n={}){for(let r of e){let o=r.path;if(o==="*")return r;{let i=[],c=o.replace(/:[^\s/]+/g,d=>(i.push(d.substring(1)),"([^\\s/]+)")),l=new RegExp(`^${c}(?:/|$)`),u=t.match(l);if(u){let d={...n};if(i.forEach((h,f)=>{d[h]=u[f+1]??""}),r.children){let h=t.slice(u[0].length),f=this.findMatchingRoute(h,r.children,d);if(f)return f}return{...r,params:d}}}}}filterAndSanitizeParams(t){if(!t)return{};let e={};for(let n in t)this.expectedParams.has(n)&&(e[n]=Ot.default.sanitize(t[n]??""));return e}navigate(t){history.pushState(null,"",t),this.handlePopState()}addRoute(t){this.routes.push(t)}};var Ae=()=>({name:"ts-filebased-router",async buildStart(){if(typeof process>"u"||!process.versions?.node)return;let s=await import("path"),t=await import("fs/promises"),e=await Promise.resolve().then(()=>(Me(),De)),n=s.resolve("src/pages"),r=s.resolve("src/gen"),o=s.resolve("src/routes"),a=s.join(r,"tsrouter.gen.ts"),i=s.join(o,"__root.ts"),c=process.env.NODE_ENV!=="production";async function l(p){try{await t.mkdir(p,{recursive:!0})}catch{}}function u(p){let g="/"+s.relative(n,p).replace(/\\/g,"/");return g=g.replace(/\.ts$/,"").replace(/\/index$/,"")||"/",g.replace(/\[(.+?)\]/g,":$1")}function d(p){return p.replace(/^\//,"").split("/").map(g=>g.startsWith(":")?g.slice(1):g).filter(Boolean).join("-")||"index"}function h(p){let w=s.relative(n,p).replace(/\\/g,"/").split("/").filter(Boolean),R=w[w.length-1].replace(".ts",""),x=w.length>1?w[w.length-2]:"";if(R==="index")return x?f(x):"Index";if(R.startsWith("[")&&R.endsWith("]")){let O=R.slice(1,-1);return f(x)+f(O)}return f(R)}function f(p){return p.charAt(0).toUpperCase()+p.slice(1)}async function T(p){let g=await t.readdir(p,{withFileTypes:!0}),w=[];for(let R of g){let x=s.join(p,R.name);if(R.isDirectory())w=w.concat(await T(x));else if(R.isFile()&&R.name.endsWith(".ts")){let O=u(x),at=d(O),S=h(x);w.push({file:x,route:O,routeName:at,importName:S})}}return w}function _(){return`import { createRouter } from "../gen/tsrouter.gen";
|
|
1
|
+
"use strict";var Ie=Object.create;var V=Object.defineProperty;var Ne=Object.getOwnPropertyDescriptor;var Fe=Object.getOwnPropertyNames;var Oe=Object.getPrototypeOf,ke=Object.prototype.hasOwnProperty;var ct=(s,t)=>()=>(s&&(t=s(s=0)),t);var Gt=(s,t)=>{for(var e in t)V(s,e,{get:t[e],enumerable:!0})},Bt=(s,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Fe(t))!ke.call(s,n)&&n!==e&&V(s,n,{get:()=>t[n],enumerable:!(r=Ne(t,n))||r.enumerable});return s};var P=(s,t,e)=>(e=s!=null?Ie(Oe(s)):{},Bt(t||!s||!s.__esModule?V(e,"default",{value:s,enumerable:!0}):e,s)),$e=s=>Bt(V({},"__esModule",{value:!0}),s);function he(s,t={}){let e=t.entryType||t.type;if(e==="both"&&(e=v.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&&!ae.includes(e))throw new Error(`readdirp: Invalid type passed. Use one of ${ae.join(", ")}`)}else throw new Error("readdirp: root argument is required. Usage: readdirp(root, options)");return t.root=s,new Ot(t)}var M,ue,A,v,Ft,de,Ye,ae,Ge,Be,Ve,Ke,ce,le,Ot,fe=ct(()=>{"use strict";M=require("fs/promises"),ue=require("stream"),A=require("path"),v={FILE_TYPE:"files",DIR_TYPE:"directories",FILE_DIR_TYPE:"files_directories",EVERYTHING_TYPE:"all"},Ft={root:".",fileFilter:s=>!0,directoryFilter:s=>!0,type:v.FILE_TYPE,lstat:!1,depth:2147483648,alwaysStat:!1,highWaterMark:4096};Object.freeze(Ft);de="READDIRP_RECURSIVE_ERROR",Ye=new Set(["ENOENT","EPERM","EACCES","ELOOP",de]),ae=[v.DIR_TYPE,v.EVERYTHING_TYPE,v.FILE_DIR_TYPE,v.FILE_TYPE],Ge=new Set([v.DIR_TYPE,v.EVERYTHING_TYPE,v.FILE_DIR_TYPE]),Be=new Set([v.EVERYTHING_TYPE,v.FILE_DIR_TYPE,v.FILE_TYPE]),Ve=s=>Ye.has(s.code),Ke=process.platform==="win32",ce=s=>!0,le=s=>{if(s===void 0)return ce;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(r=>e.basename===r)}return ce},Ot=class extends ue.Readable{constructor(t={}){super({objectMode:!0,autoDestroy:!0,highWaterMark:t.highWaterMark});let e={...Ft,...t},{root:r,type:n}=e;this._fileFilter=le(e.fileFilter),this._directoryFilter=le(e.directoryFilter);let o=e.lstat?M.lstat:M.stat;Ke?this._stat=a=>o(a,{bigint:!0}):this._stat=o,this._maxDepth=e.depth??Ft.depth,this._wantsDir=n?Ge.has(n):!1,this._wantsFile=n?Be.has(n):!1,this._wantsEverything=n===v.EVERYTHING_TYPE,this._root=(0,A.resolve)(r),this._isDirent=!e.alwaysStat,this._statsProp=this._isDirent?"dirent":"stats",this._rdOptions={encoding:"utf8",withFileTypes:this._isDirent},this.parents=[this._exploreDir(r,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,r=e&&e.files;if(r&&r.length>0){let{path:n,depth:o}=e,a=r.splice(0,t).map(c=>this._formatEntry(c,n)),i=await Promise.all(a);for(let c of i){if(!c)continue;if(this.destroyed)return;let l=await this._getEntryType(c);l==="directory"&&this._directoryFilter(c)?(o<=this._maxDepth&&this.parents.push(this._exploreDir(c.fullPath,o+1)),this._wantsDir&&(this.push(c),t--)):(l==="file"||this._includeAsFile(c))&&this._fileFilter(c)&&this._wantsFile&&(this.push(c),t--)}}else{let n=this.parents.pop();if(!n){this.push(null);break}if(this.parent=await n,this.destroyed)return}}}catch(e){this.destroy(e)}finally{this.reading=!1}}}async _exploreDir(t,e){let r;try{r=await(0,M.readdir)(t,this._rdOptions)}catch(n){this._onError(n)}return{files:r,depth:e,path:t}}async _formatEntry(t,e){let r,n=this._isDirent?t.name:t;try{let o=(0,A.resolve)((0,A.join)(e,n));r={path:(0,A.relative)(this._root,o),fullPath:o,basename:n},r[this._statsProp]=this._isDirent?t:await this._stat(o)}catch(o){this._onError(o);return}return r}_onError(t){Ve(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 r=t.fullPath;try{let n=await(0,M.realpath)(r),o=await(0,M.lstat)(n);if(o.isFile())return"file";if(o.isDirectory()){let a=n.length;if(r.startsWith(n)&&r.substr(a,1)===A.sep){let i=new Error(`Circular symlink detected: "${r}" points to "${n}"`);return i.code=de,this._onError(i)}return"directory"}}catch(n){return this._onError(n),""}}}_includeAsFile(t){let e=t&&t[this._statsProp];return e&&this._wantsEverything&&!e.isDirectory()}}});function me(s,t,e,r,n){let o=(a,i)=>{e(s),n(a,i,{watchedPath:s}),i&&s!==i&&tt(y.resolve(s,i),I,y.join(s,i))};try{return(0,N.watch)(s,{persistent:t.persistent},o)}catch(a){r(a);return}}var N,L,y,pe,Qe,zt,ge,st,nt,Wt,Je,Xe,Ze,ye,E,b,ts,es,I,X,k,ss,ns,rs,$t,U,is,q,Ee,Z,tt,os,kt,as,et,we=ct(()=>{"use strict";N=require("fs"),L=require("fs/promises"),y=P(require("path"),1),pe=require("os"),Qe="data",zt="end",ge="close",st=()=>{},nt=process.platform,Wt=nt==="win32",Je=nt==="darwin",Xe=nt==="linux",Ze=nt==="freebsd",ye=(0,pe.type)()==="OS400",E={ALL:"all",READY:"ready",ADD:"add",CHANGE:"change",ADD_DIR:"addDir",UNLINK:"unlink",UNLINK_DIR:"unlinkDir",RAW:"raw",ERROR:"error"},b=E,ts="watch",es={lstat:L.lstat,stat:L.stat},I="listeners",X="errHandlers",k="rawEmitters",ss=[I,X,k],ns=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"]),rs=s=>ns.has(y.extname(s).slice(1).toLowerCase()),$t=(s,t)=>{s instanceof Set?s.forEach(t):t(s)},U=(s,t,e)=>{let r=s[t];r instanceof Set||(s[t]=r=new Set([r])),r.add(e)},is=s=>t=>{let e=s[t];e instanceof Set?e.clear():delete s[t]},q=(s,t,e)=>{let r=s[t];r instanceof Set?r.delete(e):r===e&&delete s[t]},Ee=s=>s instanceof Set?s.size===0:!s,Z=new Map;tt=(s,t,e,r,n)=>{let o=Z.get(s);o&&$t(o[t],a=>{a(e,r,n)})},os=(s,t,e,r)=>{let{listener:n,errHandler:o,rawEmitter:a}=r,i=Z.get(t),c;if(!e.persistent)return c=me(s,e,n,o,a),c?c.close.bind(c):void 0;if(i)U(i,I,n),U(i,X,o),U(i,k,a);else{if(c=me(s,e,tt.bind(null,t,I),o,tt.bind(null,t,k)),!c)return;c.on(b.ERROR,async l=>{let u=tt.bind(null,t,X);if(i&&(i.watcherUnusable=!0),Wt&&l.code==="EPERM")try{await(await(0,L.open)(s,"r")).close(),u(l)}catch{}else u(l)}),i={listeners:n,errHandlers:o,rawEmitters:a,watcher:c},Z.set(t,i)}return()=>{q(i,I,n),q(i,X,o),q(i,k,a),Ee(i.listeners)&&(i.watcher.close(),Z.delete(t),ss.forEach(is(i)),i.watcher=void 0,Object.freeze(i))}},kt=new Map,as=(s,t,e,r)=>{let{listener:n,rawEmitter:o}=r,a=kt.get(t),i=a&&a.options;return i&&(i.persistent<e.persistent||i.interval>e.interval)&&((0,N.unwatchFile)(t),a=void 0),a?(U(a,I,n),U(a,k,o)):(a={listeners:n,rawEmitters:o,options:e,watcher:(0,N.watchFile)(t,e,(c,l)=>{$t(a.rawEmitters,d=>{d(b.CHANGE,t,{curr:c,prev:l})});let u=c.mtimeMs;(c.size!==l.size||u>l.mtimeMs||u===0)&&$t(a.listeners,d=>d(s,c))})},kt.set(t,a)),()=>{q(a,I,n),q(a,k,o),Ee(a.listeners)&&(kt.delete(t),(0,N.unwatchFile)(t),a.options=a.watcher=void 0,Object.freeze(a))}},et=class{constructor(t){this.fsw=t,this._boundHandleError=e=>t._handleError(e)}_watchWithNodeFs(t,e){let r=this.fsw.options,n=y.dirname(t),o=y.basename(t);this.fsw._getWatchedDir(n).add(o);let i=y.resolve(t),c={persistent:r.persistent};e||(e=st);let l;if(r.usePolling){let u=r.interval!==r.binaryInterval;c.interval=u&&rs(o)?r.binaryInterval:r.interval,l=as(t,i,c,{listener:e,rawEmitter:this.fsw._emitRaw})}else l=os(t,i,c,{listener:e,errHandler:this._boundHandleError,rawEmitter:this.fsw._emitRaw});return l}_handleFile(t,e,r){if(this.fsw.closed)return;let n=y.dirname(t),o=y.basename(t),a=this.fsw._getWatchedDir(n),i=e;if(a.has(o))return;let c=async(u,d)=>{if(this.fsw._throttle(ts,t,5)){if(!d||d.mtimeMs===0)try{let h=await(0,L.stat)(t);if(this.fsw.closed)return;let f=h.atimeMs,T=h.mtimeMs;if((!f||f<=T||T!==i.mtimeMs)&&this.fsw._emit(b.CHANGE,t,h),(Je||Xe||Ze)&&i.ino!==h.ino){this.fsw._closeFile(u),i=h;let _=this._watchWithNodeFs(t,c);_&&this.fsw._addPathCloser(u,_)}else i=h}catch{this.fsw._remove(n,o)}else if(a.has(o)){let h=d.atimeMs,f=d.mtimeMs;(!h||h<=f||f!==i.mtimeMs)&&this.fsw._emit(b.CHANGE,t,d),i=d}}},l=this._watchWithNodeFs(t,c);if(!(r&&this.fsw.options.ignoreInitial)&&this.fsw._isntIgnored(t)){if(!this.fsw._throttle(b.ADD,t,0))return;this.fsw._emit(b.ADD,t,e)}return l}async _handleSymlink(t,e,r,n){if(this.fsw.closed)return;let o=t.fullPath,a=this.fsw._getWatchedDir(e);if(!this.fsw.options.followSymlinks){this.fsw._incrReadyCount();let i;try{i=await(0,L.realpath)(r)}catch{return this.fsw._emitReady(),!0}return this.fsw.closed?void 0:(a.has(n)?this.fsw._symlinkPaths.get(o)!==i&&(this.fsw._symlinkPaths.set(o,i),this.fsw._emit(b.CHANGE,r,t.stats)):(a.add(n),this.fsw._symlinkPaths.set(o,i),this.fsw._emit(b.ADD,r,t.stats)),this.fsw._emitReady(),!0)}if(this.fsw._symlinkPaths.has(o))return!0;this.fsw._symlinkPaths.set(o,!0)}_handleRead(t,e,r,n,o,a,i){if(t=y.join(t,""),i=this.fsw._throttle("readdir",t,1e3),!i)return;let c=this.fsw._getWatchedDir(r.path),l=new Set,u=this.fsw._readdirp(t,{fileFilter:d=>r.filterPath(d),directoryFilter:d=>r.filterDir(d)});if(u)return u.on(Qe,async d=>{if(this.fsw.closed){u=void 0;return}let h=d.path,f=y.join(t,h);if(l.add(h),!(d.stats.isSymbolicLink()&&await this._handleSymlink(d,t,f,h))){if(this.fsw.closed){u=void 0;return}(h===n||!n&&!c.has(h))&&(this.fsw._incrReadyCount(),f=y.join(o,y.relative(o,f)),this._addToNodeFs(f,e,r,a+1))}}).on(b.ERROR,this._boundHandleError),new Promise((d,h)=>{if(!u)return h();u.once(zt,()=>{if(this.fsw.closed){u=void 0;return}let f=i?i.clear():!1;d(void 0),c.getChildren().filter(T=>T!==t&&!l.has(T)).forEach(T=>{this.fsw._remove(t,T)}),u=void 0,f&&this._handleRead(t,!1,r,n,o,a,i)})})}async _handleDir(t,e,r,n,o,a,i){let c=this.fsw._getWatchedDir(y.dirname(t)),l=c.has(y.basename(t));!(r&&this.fsw.options.ignoreInitial)&&!o&&!l&&this.fsw._emit(b.ADD_DIR,t,e),c.add(y.basename(t)),this.fsw._getWatchedDir(t);let u,d,h=this.fsw.options.depth;if((h==null||n<=h)&&!this.fsw._symlinkPaths.has(i)){if(!o&&(await this._handleRead(t,r,a,o,t,n,u),this.fsw.closed))return;d=this._watchWithNodeFs(t,(f,T)=>{T&&T.mtimeMs===0||this._handleRead(f,!1,a,o,t,n,u)})}return d}async _addToNodeFs(t,e,r,n,o){let a=this.fsw._emitReady;if(this.fsw._isIgnored(t)||this.fsw.closed)return a(),!1;let i=this.fsw._getWatchHelpers(t);r&&(i.filterPath=c=>r.filterPath(c),i.filterDir=c=>r.filterDir(c));try{let c=await es[i.statMethod](i.watchPath);if(this.fsw.closed)return;if(this.fsw._isIgnored(i.watchPath,c))return a(),!1;let l=this.fsw.options.followSymlinks,u;if(c.isDirectory()){let d=y.resolve(t),h=l?await(0,L.realpath)(t):t;if(this.fsw.closed||(u=await this._handleDir(i.watchPath,c,e,n,o,i,h),this.fsw.closed))return;d!==h&&h!==void 0&&this.fsw._symlinkPaths.set(d,h)}else if(c.isSymbolicLink()){let d=l?await(0,L.realpath)(t):t;if(this.fsw.closed)return;let h=y.dirname(i.watchPath);if(this.fsw._getWatchedDir(h).add(i.watchPath),this.fsw._emit(b.ADD,i.watchPath,c),u=await this._handleDir(h,c,e,n,t,i,d),this.fsw.closed)return;d!==void 0&&this.fsw._symlinkPaths.set(y.resolve(t),d)}else u=this._handleFile(i.watchPath,c,e);return a(),u&&this.fsw._addPathCloser(t,u),!1}catch(c){if(this.fsw._handleError(c))return a(),t}}}});var Me={};Gt(Me,{FSWatcher:()=>Y,WatchHelper:()=>it,default:()=>_s,watch:()=>De});function rt(s){return Array.isArray(s)?s:[s]}function ms(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 ps(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 _e(s,t,e){let r=ps(t);for(let n=0;n<s.length;n++){let o=s[n];if(o(r,e))return!0}return!1}function gs(s,t){if(s==null)throw new TypeError("anymatch: specify first argument");let r=rt(s).map(n=>ms(n));return t==null?(n,o)=>_e(r,n,o):_e(r,t)}function De(s,t={}){let e=new Y(t);return e.add(s),e}var Re,ot,be,m,jt,cs,Le,ls,us,ds,Te,hs,fs,Ut,Se,Pe,xe,ve,ys,Es,qt,ws,Ts,it,Y,_s,Ae=ct(()=>{"use strict";Re=require("fs"),ot=require("fs/promises"),be=require("events"),m=P(require("path"),1);fe();we();jt="/",cs="//",Le=".",ls="..",us="string",ds=/\\/g,Te=/\/\//,hs=/\..*\.(sw[px])$|~$|\.subl.*\.tmp/,fs=/^\.[/\\]/;Ut=s=>typeof s=="object"&&s!==null&&!(s instanceof RegExp);Se=s=>{let t=rt(s).flat();if(!t.every(e=>typeof e===us))throw new TypeError(`Non-string provided as watch path: ${t}`);return t.map(xe)},Pe=s=>{let t=s.replace(ds,jt),e=!1;for(t.startsWith(cs)&&(e=!0);t.match(Te);)t=t.replace(Te,jt);return e&&(t=jt+t),t},xe=s=>Pe(m.normalize(Pe(s))),ve=(s="")=>t=>typeof t=="string"?xe(m.isAbsolute(t)?t:m.join(s,t)):t,ys=(s,t)=>m.isAbsolute(s)?s:m.join(t,s),Es=Object.freeze(new Set),qt=class{constructor(t,e){this.path=t,this._removeWatcher=e,this.items=new Set}add(t){let{items:e}=this;e&&t!==Le&&t!==ls&&e.add(t)}async remove(t){let{items:e}=this;if(!e||(e.delete(t),e.size>0))return;let r=this.path;try{await(0,ot.readdir)(r)}catch{this._removeWatcher&&this._removeWatcher(m.dirname(r),m.basename(r))}}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=st,this.items=Es,Object.freeze(this)}},ws="stat",Ts="lstat",it=class{constructor(t,e,r){this.fsw=r;let n=t;this.path=t=t.replace(fs,""),this.watchPath=n,this.fullWatchPath=m.resolve(n),this.dirParts=[],this.dirParts.forEach(o=>{o.length>1&&o.pop()}),this.followSymlinks=e,this.statMethod=e?ws:Ts}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 r=this.entryPath(t);return this.fsw._isntIgnored(r,e)&&this.fsw._hasReadPermissions(e)}filterDir(t){return this.fsw._isntIgnored(this.entryPath(t),t.stats)}},Y=class extends be.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,r={stabilityThreshold:2e3,pollInterval:100},n={persistent:!0,ignoreInitial:!1,ignorePermissionErrors:!1,interval:100,binaryInterval:300,followSymlinks:!0,usePolling:!1,atomic:!0,...t,ignored:t.ignored?rt(t.ignored):rt([]),awaitWriteFinish:e===!0?r:typeof e=="object"?{...r,...e}:!1};ye&&(n.usePolling=!0),n.atomic===void 0&&(n.atomic=!n.usePolling);let o=process.env.CHOKIDAR_USEPOLLING;if(o!==void 0){let c=o.toLowerCase();c==="false"||c==="0"?n.usePolling=!1:c==="true"||c==="1"?n.usePolling=!0:n.usePolling=!!c}let a=process.env.CHOKIDAR_INTERVAL;a&&(n.interval=Number.parseInt(a,10));let i=0;this._emitReady=()=>{i++,i>=this._readyCount&&(this._emitReady=st,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=n,this._nodeFsHandler=new et(this),Object.freeze(n)}_addIgnoredPath(t){if(Ut(t)){for(let e of this._ignoredPaths)if(Ut(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)Ut(e)&&e.path===t&&this._ignoredPaths.delete(e)}add(t,e,r){let{cwd:n}=this.options;this.closed=!1,this._closePromise=void 0;let o=Se(t);return n&&(o=o.map(a=>ys(a,n))),o.forEach(a=>{this._removeIgnoredPath(a)}),this._userIgnored=void 0,this._readyCount||(this._readyCount=0),this._readyCount+=o.length,Promise.all(o.map(async a=>{let i=await this._nodeFsHandler._addToNodeFs(a,!r,void 0,0,e);return i&&this._emitReady(),i})).then(a=>{this.closed||a.forEach(i=>{i&&this.add(m.dirname(i),m.basename(e||i))})}),this}unwatch(t){if(this.closed)return this;let e=Se(t),{cwd:r}=this.options;return e.forEach(n=>{!m.isAbsolute(n)&&!this._closers.has(n)&&(r&&(n=m.join(r,n)),n=m.resolve(n)),this._closePath(n),this._addIgnoredPath(n),this._watched.has(n)&&this._addIgnoredPath({path:n,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(r=>{let n=r();n instanceof Promise&&t.push(n)})),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,r)=>{let o=(this.options.cwd?m.relative(this.options.cwd,r):r)||Le;t[o]=e.getChildren().sort()}),t}emitWithAll(t,e){this.emit(t,...e),t!==E.ERROR&&this.emit(E.ALL,t,...e)}async _emit(t,e,r){if(this.closed)return;let n=this.options;Wt&&(e=m.normalize(e)),n.cwd&&(e=m.relative(n.cwd,e));let o=[e];r!=null&&o.push(r);let a=n.awaitWriteFinish,i;if(a&&(i=this._pendingWrites.get(e)))return i.lastChange=new Date,this;if(n.atomic){if(t===E.UNLINK)return this._pendingUnlinks.set(e,[t,...o]),setTimeout(()=>{this._pendingUnlinks.forEach((c,l)=>{this.emit(...c),this.emit(E.ALL,...c),this._pendingUnlinks.delete(l)})},typeof n.atomic=="number"?n.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,u)=>{l?(t=E.ERROR,o[0]=l,this.emitWithAll(t,o)):u&&(o.length>1?o[1]=u:o.push(u),this.emitWithAll(t,o))};return this._awaitWriteFinish(e,a.stabilityThreshold,t,c),this}if(t===E.CHANGE&&!this._throttle(E.CHANGE,e,50))return this;if(n.alwaysStat&&r===void 0&&(t===E.ADD||t===E.ADD_DIR||t===E.CHANGE)){let c=n.cwd?m.join(n.cwd,e):e,l;try{l=await(0,ot.stat)(c)}catch{}if(!l||this.closed)return;o.push(l)}return this.emitWithAll(t,o),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,r){this._throttled.has(t)||this._throttled.set(t,new Map);let n=this._throttled.get(t);if(!n)throw new Error("invalid throttle");let o=n.get(e);if(o)return o.count++,!1;let a,i=()=>{let l=n.get(e),u=l?l.count:0;return n.delete(e),clearTimeout(a),l&&clearTimeout(l.timeoutObject),u};a=setTimeout(i,r);let c={timeoutObject:a,clear:i,count:0};return n.set(e,c),c}_incrReadyCount(){return this._readyCount++}_awaitWriteFinish(t,e,r,n){let o=this.options.awaitWriteFinish;if(typeof o!="object")return;let a=o.pollInterval,i,c=t;this.options.cwd&&!m.isAbsolute(t)&&(c=m.join(this.options.cwd,t));let l=new Date,u=this._pendingWrites;function d(h){(0,Re.stat)(c,(f,T)=>{if(f||!u.has(t)){f&&f.code!=="ENOENT"&&n(f);return}let _=Number(new Date);h&&T.size!==h.size&&(u.get(t).lastChange=_);let H=u.get(t);_-H.lastChange>=e?(u.delete(t),n(void 0,T)):i=setTimeout(d,a,T)})}u.has(t)||(u.set(t,{lastChange:l,cancelWait:()=>(u.delete(t),clearTimeout(i),r)}),i=setTimeout(d,a))}_isIgnored(t,e){if(this.options.atomic&&hs.test(t))return!0;if(!this._userIgnored){let{cwd:r}=this.options,o=(this.options.ignored||[]).map(ve(r)),i=[...[...this._ignoredPaths].map(ve(r)),...o];this._userIgnored=gs(i,void 0)}return this._userIgnored(t,e)}_isntIgnored(t,e){return!this._isIgnored(t,e)}_getWatchHelpers(t){return new it(t,this.options.followSymlinks,this)}_getWatchedDir(t){let e=m.resolve(t);return this._watched.has(e)||this._watched.set(e,new qt(e,this._boundRemove)),this._watched.get(e)}_hasReadPermissions(t){return this.options.ignorePermissionErrors?!0:!!(Number(t.mode)&256)}_remove(t,e,r){let n=m.join(t,e),o=m.resolve(n);if(r=r??(this._watched.has(n)||this._watched.has(o)),!this._throttle("remove",n,100))return;!r&&this._watched.size===1&&this.add(t,e,!0),this._getWatchedDir(n).getChildren().forEach(h=>this._remove(n,h));let c=this._getWatchedDir(t),l=c.has(e);c.remove(e),this._symlinkPaths.has(o)&&this._symlinkPaths.delete(o);let u=n;if(this.options.cwd&&(u=m.relative(this.options.cwd,n)),this.options.awaitWriteFinish&&this._pendingWrites.has(u)&&this._pendingWrites.get(u).cancelWait()===E.ADD)return;this._watched.delete(n),this._watched.delete(o);let d=r?E.UNLINK_DIR:E.UNLINK;l&&!this._isIgnored(n)&&this._emit(d,n),this._closePath(n)}_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(r=>r()),this._closers.delete(t))}_addPathCloser(t,e){if(!e)return;let r=this._closers.get(t);r||(r=[],this._closers.set(t,r)),r.push(e)}_readdirp(t,e){if(this.closed)return;let r={type:E.ALL,alwaysStat:!0,lstat:!0,...e,depth:0},n=he(t,r);return this._streams.add(n),n.once(ge,()=>{n=void 0}),n.once(zt,()=>{n&&(this._streams.delete(n),n=void 0)}),n}};_s={watch:De,FSWatcher:Y}});var Ss={};Gt(Ss,{TSFilebasedRouter:()=>Ce,TSRouter:()=>J,createSignal:()=>It,html:()=>lt,loadPyFiles:()=>Dt,mapper:()=>Vt,renderChildRoutes:()=>Lt,useAnchor:()=>j,useAnchorSingle:()=>_t,useInitialDOM:()=>wt,useTSAuth:()=>vt,useTSCollection:()=>Pt,useTSComponent:()=>W,useTSElementEach:()=>Q,useTSElements:()=>yt,useTSEvent:()=>ht,useTSEventAll:()=>pt,useTSExtractParams:()=>mt,useTSLazy:()=>Mt,useTSMetaData:()=>St,useTSNavigate:()=>Rt,useTSNoReload:()=>Ht,useTSOutlet:()=>bt,useTSParams:()=>$,useTSPurifier:()=>dt,useTSSSRHydration:()=>At,useTSSelect:()=>O,useTSloadBrython:()=>xt});module.exports=$e(Ss);function ze(s){let t=s==null?"":String(s),e=t.toLowerCase();return e.includes("<script")||e.includes("javascript:")?"":(t=t.replace(/url\(\s*(['"])?\s*\1?\s*\)/gi,""),t.replace(/<\s*(script|iframe|object|embed|link|style|meta|body)[^>]*>.*?<\s*\/\s*\1\s*>/gi,"").replace(/<\s*(script|iframe|object|embed|link|style|meta)[^>]*>/gi,"").replace(/\s+on\w+\s*=\s*(['"]).*?\1/gi,"").replace(/\s+on\w+\s*=\s*[^\s>]+/gi,"").replace(/\s(href|src)\s*=\s*(['"]?)\s*(javascript:|vbscript:|data:|file:)[^'">\s]*\2/gi,'$1="#"'))}function lt(s,...t){return s.reduce((e,r,n)=>{let o=n<t.length?ze(t[n]):"";return e+r+o},"")}var Vt=(s,t)=>s.reduce((e,r,n)=>e+t(r,n),"");var ut=P(require("dompurify"),1),dt=(s,t)=>{let r={...{ADD_TAGS:["my-custom-tag"]},...t};return typeof s=="string"?ut.default.sanitize(s,r):ut.default.sanitize(s.innerHTML,r)};var ht=(s,t,e)=>{if(typeof s=="string"){let r=document.getElementById(s);r?r.addEventListener(t,e):console.warn(`Element with id '${s}' not found.`)}else s instanceof HTMLElement?s.addEventListener(t,e):s===document?document.addEventListener(t,e):console.warn("Invalid target parameter provided.")};var Kt=require("zustand/vanilla"),ft=P(require("dompurify"),1);function We(s,t){let e=[],r=s.replace(/:[^/]+/g,i=>(e.push(i.slice(1)),"([^/]+)")),n=new RegExp(`^${r}$`),o=t.match(n),a={};return o&&e.forEach((i,c)=>{a[i]=ft.default.sanitize(o[c+1]??"")}),a}function je(s){let t={},e=new URLSearchParams(s);for(let[r,n]of e.entries())t[r]=ft.default.sanitize(n);return t}var $=(0,Kt.createStore)((s,t)=>({params:{},query:{},setFromPattern:e=>{let r=window.location.pathname,n=We(e,r),o=je(window.location.search);s({params:n,query:o})},getParam:e=>t().params[e],getQuery:e=>t().query[e]}));function mt(s){let t=$.getState();t.setFromPattern(s);let e=t.params,r=t.query;return{...e,...r}}var pt=(s,t,e)=>{let r=document.querySelectorAll(s);return r.forEach(n=>{n.addEventListener(t,e)}),()=>{r.forEach(n=>{n.removeEventListener(t,e)})}};var Qt=P(require("dompurify"),1),z=require("motion");function gt(s){let t={},e=400,r="ease-in-out",n=0,o=0;return s.split(/\s+/).forEach(i=>{i==="infinite"?o=1/0:i.startsWith("duration-")?e=Number(i.replace("duration-","")):i.startsWith("delay-")?n=Number(i.replace("delay-","")):/^ease(-in|-out|-in-out)?|linear$/.test(i)?r=i:i.startsWith("opacity-")?t.opacity=Number(i.replace("opacity-",""))/100:/^-?x-\d+$/.test(i)?t.translateX=Number(i.replace("-x-","").replace("x-",""))*(i.startsWith("-x-")?-1:1):/^-?y-\d+$/.test(i)?t.translateY=Number(i.replace("-y-","").replace("y-",""))*(i.startsWith("-y-")?-1:1):/^-?rotate-\d+$/.test(i)?t.rotate=Number(i.replace("-rotate-","").replace("rotate-",""))*(i.startsWith("-rotate-")?-1:1):/^-?scale-\d+$/.test(i)&&(t.scale=Number(i.replace("-scale-","").replace("scale-",""))/100)}),{props:t,duration:e,easing:r,delay:n,repeat:o}}var yt=(s,t,e={},r)=>{let n={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","label","form"],ALLOWED_ATTR:["class","id","href","src","alt","title","data-click","data-change","data-select","data-effect","data-classlist","data-hover","data-submit","data-key","data-event","data-component"],...r},o=Qt.default.sanitize(t,{...n,RETURN_DOM_FRAGMENT:!0});for(;s.firstChild;)s.removeChild(s.firstChild);s.appendChild(o),Object.entries(e).forEach(([a,i])=>{s.querySelectorAll(`[data-click="${a}"]`).forEach(c=>{c.addEventListener("click",l=>i(c,l))})}),s.querySelectorAll("[data-component]").forEach(a=>{let i=a.dataset.component;i&&e[i]&&e[i](a)}),s.querySelectorAll("[data-effect]").forEach(a=>{let c=(a.dataset.effect?.split(/\s+/)||[]).join(" "),{props:l,duration:u,easing:d,delay:h,repeat:f}=gt(c);setTimeout(()=>{(0,z.animate)(a,l,{duration:u/1e3,easing:d,repeat:f})},h)}),s.querySelectorAll("[data-hover]").forEach(a=>{let i=a.dataset.hover||"",[c,...l]=i.split(" hover:"),u=gt(c),d=gt(l.join(" "));(0,z.animate)(a,u.props,{duration:u.duration/1e3,easing:u.easing}),a.addEventListener("mouseenter",()=>{(0,z.animate)(a,d.props,{duration:d.duration/1e3,easing:d.easing})}),a.addEventListener("mouseleave",()=>{(0,z.animate)(a,u.props,{duration:u.duration/1e3,easing:u.easing})})})};var Et=P(require("dompurify"),1),K=null,wt=(s,t)=>{if(typeof document>"u")return;let e=document.getElementById(s);if(!e)return;Et.default.addHook("uponSanitizeAttribute",(a,i)=>{let c=(i.attrName||"").toLowerCase(),l=(i.attrValue??"").toString().trim();if(c.startsWith("on")){i.keepAttr=!1;return}if((c==="href"||c==="src")&&/^(javascript:|vbscript:|data:|file:|about:)/i.test(l)){i.keepAttr=!1;return}if(c==="class"){let d=l.split(/\s+/).filter(Boolean).filter(h=>{if(/^[a-zA-Z0-9\-\:\/_\[\]\(\)]+$/.test(h)){if(/^bg-\[url\(.*\)\]$/.test(h)){let f=h.replace(/^bg-\[url\(/,"").replace(/\)\]$/,"").replace(/^['"]|['"]$/g,"");return f===""||/^https?:\/\//i.test(f)||/^\/(?!\/)/.test(f)||/^\.{0,2}\//.test(f)}return!0}return!1});i.attrValue=d.join(" ");return}if(c==="style"){i.keepAttr=!1;return}});let r=e.cloneNode(!0),n=Et.default.sanitize(r.innerHTML,{USE_PROFILES:{html:!0},ALLOWED_TAGS:["div","span","p","h1","h2","h3","h4","h5","h6","ul","ol","li","strong","em","a","img","br","form","button","input","label"],ALLOWED_ATTR:["href","src","alt","title","class","id","type","name","value","placeholder","data-click","data-change","data-submit","data-select","data-hover","data-classlist"],FORBID_TAGS:["script","iframe","object","embed","body","html","svg","math","link","meta"],ALLOW_DATA_ATTR:!0,KEEP_CONTENT:!1,RETURN_DOM_FRAGMENT:!0}),o=Array.from(n.childNodes).map(a=>a.outerHTML||a.textContent||"").join("");if(K!==null&&o!==K){let a=document.createElement("div");t(a);let c=new DOMParser().parseFromString(K,"text/html");for(;e.firstChild;)e.removeChild(e.firstChild);c.body.childNodes.forEach(l=>e.appendChild(l.cloneNode(!0)))}else{for(K=o;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(n),t(e)}};var Tt=P(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 _t=(s,t,e,r="",n=null)=>{if(!s)return;let o=Tt.default.sanitize(t,{ALLOWED_URI_REGEXP:/^(https?:|\/)/}),a=Tt.default.sanitize(e,{USE_PROFILES:{html:!1}});s.setAttribute("href",o),s.setAttribute("aria-label",a),r&&(s.className=r.trim()),n&&s.replaceChildren(n),typeof window<"u"&&s.addEventListener("click",i=>{i.preventDefault();let l=i.currentTarget.getAttribute("href");if(l){let u=window.scrollY;window.scrollTo(0,0),window.history.pushState({scrollPosition:u},"",l),dispatchEvent(new PopStateEvent("popstate"))}})};var D=P(require("dompurify"),1);var Jt=(s="'self' 'nonce-rAnd0m123' 'unsafe-inline' 'unsafe-eval'",t="'self' 'nonce-rAnd0m123'",e="'none'",r="'self' https://fonts.googleapis.com https://fonts.gstatic.com",n="'self' https://blogger.googleusercontent.com",o=["'self'","https://fonts.googleapis.com","https://fonts.gstatic.com","https://www.google.com/maps/"],a="'self' https://www.youtube.com",i="'self'",c="/csp-report",l=!1)=>{let u=()=>{try{let d=document.querySelector('meta[http-equiv="Content-Security-Policy"]');d||(d=document.createElement("meta"),d.setAttribute("http-equiv","Content-Security-Policy"),document.head.appendChild(d));let h=l?`report-uri ${c};`:"";d.setAttribute("content",`default-src 'self'; script-src ${s}; style-src ${t}; object-src ${e}; font-src ${r}; img-src ${n}; connect-src ${o.join(" ")}; frame-src ${a}; base-uri ${i}; ${h}`)}catch(d){console.error("Error adding CSP meta element:",d)}};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",u):u()};var St=(s,t)=>{let e={name:D.default.sanitize(s.name||""),title:D.default.sanitize(s.title||""),description:D.default.sanitize(s.description||"Default description"),author:D.default.sanitize(s.author||""),favicon:s.favicon},r=p=>{e.name=D.default.sanitize(p),_("name",e.name)},n=p=>{e.title=D.default.sanitize(p),document.title=e.title},o=p=>{e.description=D.default.sanitize(p),_("description",e.description)},a=p=>{e.author=D.default.sanitize(p),_("author",e.author)},i=p=>{e.favicon=D.default.sanitize(p);let g=document.querySelector('link[rel="icon"]');g||(g=document.createElement("link"),g.rel="icon",document.head.appendChild(g)),g.href=e.favicon},c=()=>e.name,l=()=>e.title,u=()=>e.description,d=()=>e.author,h=()=>e.favicon,f=()=>e,T=(p,g)=>{let w=document.createElement("meta");w.setAttribute("name",p),w.setAttribute("content",g),document.head.appendChild(w)},_=(p,g)=>{let w=document.querySelector(`meta[name="${p}"]`);w?w.setAttribute("content",g):T(p,g)},H=()=>{e.title&&(document.title=e.title),e.name&&_("name",e.name),e.description&&_("description",e.description),e.author&&_("author",e.author),e.favicon&&i(e.favicon)};return t&&Jt(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:r,setTitle:n,setDescription:o,setAuthor:a,setFavicon:i,getName:c,getTitle:l,getDescription:u,getAuthor:d,getFavicon:h,getAllMetaData:f,appendMetaTagsToHead:H}};var Xt=P(require("dompurify"),1),W=(s,t,e,r,n)=>{let o=`#${s}`,a=t.querySelectorAll(o);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 i=a[0];i.innerHTML=Xt.default.sanitize(i.innerHTML,{USE_PROFILES:{html:!0}}),e(i,r,n)};var Pt=(s,t,e,r=[])=>{let n=new Set;s.forEach((o,a)=>{if(n.has(o)){console.warn(`[useTSCollection] Duplicate ID in collection array: "${o}" \u2014 skipping.`);return}n.add(o);let i=t.querySelectorAll(`#${o}`);if(i.length>1){console.warn(`[useTSCollection] Duplicate ID in DOM: "${o}" (${i.length} elements found) \u2014 skipping component mount.`);return}let c=e[a],l=Array.isArray(r)?r[a]:void 0;typeof c=="function"?W(o,t,c,l):console.warn(`[useTSCollection] No valid component function found for ID: "${o}"`)})};var O=(s,t)=>{let r=(t??document).querySelectorAll(s);if(r.length===0)return process.env.NODE_ENV!=="production"&&console.warn(`[useTSSelect] No element found for selector: '${s}'`),null;if(s.startsWith("#")&&r.length>1){if(process.env.NODE_ENV!=="production")throw new Error(`[useTSSelect] Duplicate ID detected: '${s}'. 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: '${s}'. Returning the first one.`),r[0]};var Zt=require("jwt-decode"),vt=(s,t)=>{let e=localStorage.getItem("token");if(!e)return window.location.href=t,null;try{let r=(0,Zt.jwtDecode)(e),n=Date.now()/1e3;return r.exp&&r.exp<n&&(console.error("Token has expired"),window.localStorage.removeItem("token"),window.location.href=t),null}catch(r){return console.error("Invalid token:",r),window.location.href=t,null}};var Q=(s,t,e)=>{s.forEach(r=>{t.forEach(n=>{r.addEventListener(n,o=>{e(r,o)})})})};var Rt=()=>({back:()=>window.history.back(),forward:()=>window.history.forward()});var bt=(s,t)=>{let e=document.querySelector(`#${s}`)||document.querySelector(`.${s}`);if(!e)return;let r=window.location.pathname.replace(/\/$/,"");for(let n of t){let o=n.path.replace(/\/$/,"");if(r===o||r.startsWith(`${o}/`)){n.component(e);break}}};function Lt(s,t){let e=window.location.pathname.replace(/\/$/,"");t.routes.forEach(r=>{r.children?.length&&r.children.forEach(n=>{let o=n.path.replace(/\/$/,"");if(e===o||e.startsWith(`${o}/`)){let a=s.querySelector(`#${n.outlet}`)||s.querySelector(`.${n.outlet}`);a instanceof HTMLElement&&n.element&&n.element(a)}})})}var xt=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=r=>new Promise((n,o)=>{let a=document.createElement("script");a.src=r,a.onload=()=>n(),a.onerror=()=>o(new Error(`Failed to load ${r}`)),document.head.appendChild(a)});await e(s),await e(t),typeof window.brython=="function"?window.brython():console.error("Brython did not load correctly.")},Dt=s=>new Promise((t,e)=>{let r=document.createElement("script");r.type="text/python",r.src=`/src/python/${s}`,r.onload=()=>t(),r.onerror=()=>e(new Error(`Failed to load ${s}`)),document.body.appendChild(r)});function Mt(s){let t=null;return async(e,r)=>{try{if(!t){let n=await s();t=n.default||n}if(typeof t=="function")return t(e,r);if(t instanceof HTMLElement){let n=t.cloneNode(!0);return e?.appendChild(n),n}if(typeof t=="object"&&t!==null&&"render"in t&&typeof t.render=="function")return t.render(e,r);console.warn("useTSLazy: Unsupported module type",t)}catch(n){console.error("useTSLazy failed:",n)}}}var At=s=>typeof window>"u"?{isDOM:null}:{isDOM:s||document.body};var te=require("lodash-es"),Ct=s=>s;typeof window<"u"&&typeof document<"u"&&(Ct=s=>{let t=document.createElement("div");return t.innerText=s,t.innerHTML});var Ue=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 r=e.getAttribute("class")||"";e.setAttribute("class",Ct(r));let n=e.getAttribute("aria-label");n&&e.setAttribute("aria-label",Ct(n));let o=e.querySelector(":scope > *");o&&(e.innerHTML="",e.appendChild(o));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",i=>{i.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)}})}})},qe=(0,te.debounce)(Ue,50),j=s=>{qe(s)};var Ht=s=>{if(!s)return;let t=O("a",s);j(t)};var ee=null,se=s=>{let t=s;return[()=>t,n=>{t=typeof n=="function"?n(t):n}]};function ne(s,t,e){let r=()=>{s.textContent=t().toString(),e?.(t())};r();let n=t.set;n&&(t.set=o=>{n(o),r()})}function It(s){let[t,e]=se(s),r=()=>t();return r.set=n=>e(n),r.bind=n=>ne(n,r),r}var Nt=P(require("dompurify"),1);var ie=require("zustand/vanilla"),oe=P(require("dompurify"),1),C=(0,ie.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]=oe.default.sanitize(s[e]);return t}var J=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,r=this.parseQueryParams(e),n=this.findMatchingRoute(t,this.routes);if(n){if(n.routeto){this.navigate(n.routeto);return}let o=this.filterAndSanitizeParams(n.params);C.getState().setParams(o),C.getState().setQuery(r);let a=document.createElement("div");if(n.element?.(a,o,r),n.children){let i=t.slice(n.path.length),c=a.querySelector("#child");c&&this.renderChildren(n.children,i,c,o,r)}}else{let o=this.findMatchingRoute("*",this.routes);if(o){let a=this.filterAndSanitizeParams(o.params);C.getState().setParams(a),C.getState().setQuery(r);let i=document.createElement("div");o.element?.(i,a,r)}}}renderChildren(t,e,r,n,o){if(!t||t.length===0){let i=r.querySelector("#child");i&&i.remove();return}let a=this.findMatchingRoute(e,t);if(a){let i=document.createElement("div");i.id="child";let c={...n,...a.params},l=this.filterAndSanitizeParams(c);if(C.getState().setParams(l),C.getState().setQuery(o),a.element?.(i,l,o),r.appendChild(i),a.children){let u=e.slice(a.path.length);this.renderChildren(a.children,u,i,l,o)}}}parseQueryParams(t){let e={},r=new URLSearchParams(t);for(let[n,o]of r.entries())this.expectedParams.has(n)&&(e[n]=Nt.default.sanitize(o));return e}findMatchingRoute(t,e,r={}){for(let n of e){let o=n.path;if(o==="*")return n;{let i=[],c=o.replace(/:[^\s/]+/g,d=>(i.push(d.substring(1)),"([^\\s/]+)")),l=new RegExp(`^${c}(?:/|$)`),u=t.match(l);if(u){let d={...r};if(i.forEach((h,f)=>{d[h]=u[f+1]??""}),n.children){let h=t.slice(u[0].length),f=this.findMatchingRoute(h,n.children,d);if(f)return f}return{...n,params:d}}}}}filterAndSanitizeParams(t){if(!t)return{};let e={};for(let r in t)this.expectedParams.has(r)&&(e[r]=Nt.default.sanitize(t[r]??""));return e}navigate(t){history.pushState(null,"",t),this.handlePopState()}addRoute(t){this.routes.push(t)}};var Ce=()=>({name:"ts-filebased-router",async buildStart(){if(typeof process>"u"||!process.versions?.node)return;let s=await import("path"),t=await import("fs/promises"),e=await Promise.resolve().then(()=>(Ae(),Me)),r=s.resolve("src/pages"),n=s.resolve("src/gen"),o=s.resolve("src/routes"),a=s.join(n,"tsrouter.gen.ts"),i=s.join(o,"__root.ts"),c=process.env.NODE_ENV!=="production";async function l(p){try{await t.mkdir(p,{recursive:!0})}catch{}}function u(p){let g="/"+s.relative(r,p).replace(/\\/g,"/");return g=g.replace(/\.ts$/,"").replace(/\/index$/,"")||"/",g.replace(/\[(.+?)\]/g,":$1")}function d(p){return p.replace(/^\//,"").split("/").map(g=>g.startsWith(":")?g.slice(1):g).filter(Boolean).join("-")||"index"}function h(p){let w=s.relative(r,p).replace(/\\/g,"/").split("/").filter(Boolean),R=w[w.length-1].replace(".ts",""),x=w.length>1?w[w.length-2]:"";if(R==="index")return x?f(x):"Index";if(R.startsWith("[")&&R.endsWith("]")){let F=R.slice(1,-1);return f(x)+f(F)}return f(R)}function f(p){return p.charAt(0).toUpperCase()+p.slice(1)}async function T(p){let g=await t.readdir(p,{withFileTypes:!0}),w=[];for(let R of g){let x=s.join(p,R.name);if(R.isDirectory())w=w.concat(await T(x));else if(R.isFile()&&R.name.endsWith(".ts")){let F=u(x),at=d(F),S=h(x);w.push({file:x,route:F,routeName:at,importName:S})}}return w}function _(){return`import { createRouter } from "../gen/tsrouter.gen";
|
|
2
2
|
|
|
3
3
|
export const Router = async (DOM: HTMLElement) => {
|
|
4
4
|
const router = await createRouter(DOM);
|
|
@@ -7,7 +7,7 @@ export const Router = async (DOM: HTMLElement) => {
|
|
|
7
7
|
window.addEventListener("popstate", () => {
|
|
8
8
|
void router.navigate(window.location.pathname + window.location.search, false);
|
|
9
9
|
});
|
|
10
|
-
};`}async function
|
|
10
|
+
};`}async function H(){let p=await T(r),g=p.find(S=>S.route==="/notfound"),w=p.filter(S=>S.route!=="/notfound");for(let S of p)if(!(await t.readFile(S.file,"utf-8")).trim()){let G=S.importName,B=S.route.includes(":"),He=["html","useTSElements","useTSMetaData",...B?["useTSExtractParams"]:[]].join(", ");await t.writeFile(S.file,`import { ${He} } from "@devwareng/vanilla-ts";
|
|
11
11
|
|
|
12
12
|
export default function ${G}(DOM: HTMLElement) {
|
|
13
13
|
useTSMetaData({
|
|
@@ -26,8 +26,8 @@ export default function ${G}(DOM: HTMLElement) {
|
|
|
26
26
|
${B?"<pre>${JSON.stringify(params, null, 2)}</pre>":""}
|
|
27
27
|
</div>
|
|
28
28
|
\`);
|
|
29
|
-
}`,"utf-8")}let R=["useTSLazy",...g?[]:["html","useTSElements"]].join(", "),x=w.map(S=>{let
|
|
30
|
-
`),
|
|
29
|
+
}`,"utf-8")}let R=["useTSLazy",...g?[]:["html","useTSElements"]].join(", "),x=w.map(S=>{let Yt="../pages/"+s.relative(r,S.file).replace(/\\/g,"/").replace(/\.ts$/,"");return`{ path: "${S.route}", name: "${S.routeName}", component: useTSLazy(() => import("${Yt}")) }`}).join(`,
|
|
30
|
+
`),F=g?`export const NotFound = useTSLazy(() => import("../pages/${s.relative(r,g.file).replace(/\\/g,"/").replace(/\.ts$/,"")}"))`:"export function NotFound(DOM: HTMLElement) {\n return useTSElements(DOM, html`<div><h1>404 - Page Not Found</h1></div>`);\n}",at=`// AUTO-GENERATED FILE
|
|
31
31
|
import { ${R} } from "@devwareng/vanilla-ts";
|
|
32
32
|
|
|
33
33
|
type Route = {
|
|
@@ -36,7 +36,7 @@ type Route = {
|
|
|
36
36
|
component: (DOM: HTMLElement) => Promise<any>;
|
|
37
37
|
};
|
|
38
38
|
|
|
39
|
-
${
|
|
39
|
+
${F}
|
|
40
40
|
|
|
41
41
|
export const routeTree: Route[] = [
|
|
42
42
|
${x}
|
|
@@ -64,7 +64,7 @@ export async function createRouter(DOM: HTMLElement) {
|
|
|
64
64
|
|
|
65
65
|
return { navigate, routes: routeTree };
|
|
66
66
|
}
|
|
67
|
-
`;await l(
|
|
67
|
+
`;await l(n),await t.writeFile(a,at,"utf-8"),await t.writeFile(i,_(),"utf-8")}await l(n),await l(o),await l(r),await H(),c&&(e.watch(r).on("all",async(g,w)=>{w.endsWith(".ts")&&await H()}),e.watch(i).on("unlink",async()=>{await t.writeFile(i,_(),"utf-8")})),console.log("\u{1F7E2} TS Router Generated (Smart + Clean Mode)")}});0&&(module.exports={TSFilebasedRouter,TSRouter,createSignal,html,loadPyFiles,mapper,renderChildRoutes,useAnchor,useAnchorSingle,useInitialDOM,useTSAuth,useTSCollection,useTSComponent,useTSElementEach,useTSElements,useTSEvent,useTSEventAll,useTSExtractParams,useTSLazy,useTSMetaData,useTSNavigate,useTSNoReload,useTSOutlet,useTSParams,useTSPurifier,useTSSSRHydration,useTSSelect,useTSloadBrython});
|
|
68
68
|
/*! Bundled license information:
|
|
69
69
|
|
|
70
70
|
chokidar/esm/index.js:
|
package/dist/index.d.cts
CHANGED
|
@@ -4,7 +4,7 @@ import * as zustand_vanilla from 'zustand/vanilla';
|
|
|
4
4
|
|
|
5
5
|
declare function html(strings: TemplateStringsArray, ...values: unknown[]): string;
|
|
6
6
|
|
|
7
|
-
declare const mapper: (
|
|
7
|
+
declare const mapper: <T>(items: T[], cb: (item: T, index: number) => string) => string;
|
|
8
8
|
|
|
9
9
|
declare const TSFilebasedRouter: () => Plugin;
|
|
10
10
|
|
|
@@ -116,16 +116,6 @@ type OutletOptions = {
|
|
|
116
116
|
declare const useTSOutlet: (selector: string, outlets: OutletOptions[]) => void;
|
|
117
117
|
declare function renderChildRoutes(DOM: HTMLElement, router: RouterInstance): void;
|
|
118
118
|
|
|
119
|
-
type Listener<T> = (value: T) => void;
|
|
120
|
-
interface Signal<T> {
|
|
121
|
-
get: () => T;
|
|
122
|
-
set: (newValue: T) => void;
|
|
123
|
-
subscribe: (listener: Listener<T>) => () => void;
|
|
124
|
-
}
|
|
125
|
-
declare function createSignal<T>(initialValue: T): Signal<T>;
|
|
126
|
-
type CleanupFn = () => void;
|
|
127
|
-
declare function createEffect(effectFn: () => void | CleanupFn): void;
|
|
128
|
-
|
|
129
119
|
declare global {
|
|
130
120
|
interface Window {
|
|
131
121
|
brython: Function;
|
|
@@ -151,6 +141,13 @@ declare const useTSNoReload: (DOM: HTMLElement) => void;
|
|
|
151
141
|
type AnchorInput = NodeListOf<HTMLAnchorElement> | HTMLAnchorElement[] | HTMLAnchorElement | null | undefined;
|
|
152
142
|
declare const useAnchor: (anchors?: AnchorInput) => void;
|
|
153
143
|
|
|
144
|
+
type Signal<T> = {
|
|
145
|
+
(): T;
|
|
146
|
+
set: (fn: T | ((prev: T) => T)) => void;
|
|
147
|
+
bind: (el: HTMLElement) => void;
|
|
148
|
+
};
|
|
149
|
+
declare function createSignal<T>(initial: T): Signal<T>;
|
|
150
|
+
|
|
154
151
|
type RouteCallback = (errorElement?: HTMLElement, params?: Record<string, string>, query?: Record<string, string>) => void;
|
|
155
152
|
interface RouteConfig {
|
|
156
153
|
path: string;
|
|
@@ -173,4 +170,4 @@ declare class TSRouter {
|
|
|
173
170
|
addRoute(route: RouteConfig): void;
|
|
174
171
|
}
|
|
175
172
|
|
|
176
|
-
export { TSFilebasedRouter, TSRouter,
|
|
173
|
+
export { TSFilebasedRouter, TSRouter, createSignal, html, loadPyFiles, mapper, renderChildRoutes, useAnchor, useAnchorSingle, useInitialDOM, useTSAuth, useTSCollection, useTSComponent, useTSElementEach, useTSElements, useTSEvent, useTSEventAll, useTSExtractParams, useTSLazy, useTSMetaData, useTSNavigate, useTSNoReload, useTSOutlet, useTSParams, useTSPurifier, useTSSSRHydration, useTSSelect, useTSloadBrython };
|
package/dist/index.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import * as zustand_vanilla from 'zustand/vanilla';
|
|
|
4
4
|
|
|
5
5
|
declare function html(strings: TemplateStringsArray, ...values: unknown[]): string;
|
|
6
6
|
|
|
7
|
-
declare const mapper: (
|
|
7
|
+
declare const mapper: <T>(items: T[], cb: (item: T, index: number) => string) => string;
|
|
8
8
|
|
|
9
9
|
declare const TSFilebasedRouter: () => Plugin;
|
|
10
10
|
|
|
@@ -116,16 +116,6 @@ type OutletOptions = {
|
|
|
116
116
|
declare const useTSOutlet: (selector: string, outlets: OutletOptions[]) => void;
|
|
117
117
|
declare function renderChildRoutes(DOM: HTMLElement, router: RouterInstance): void;
|
|
118
118
|
|
|
119
|
-
type Listener<T> = (value: T) => void;
|
|
120
|
-
interface Signal<T> {
|
|
121
|
-
get: () => T;
|
|
122
|
-
set: (newValue: T) => void;
|
|
123
|
-
subscribe: (listener: Listener<T>) => () => void;
|
|
124
|
-
}
|
|
125
|
-
declare function createSignal<T>(initialValue: T): Signal<T>;
|
|
126
|
-
type CleanupFn = () => void;
|
|
127
|
-
declare function createEffect(effectFn: () => void | CleanupFn): void;
|
|
128
|
-
|
|
129
119
|
declare global {
|
|
130
120
|
interface Window {
|
|
131
121
|
brython: Function;
|
|
@@ -151,6 +141,13 @@ declare const useTSNoReload: (DOM: HTMLElement) => void;
|
|
|
151
141
|
type AnchorInput = NodeListOf<HTMLAnchorElement> | HTMLAnchorElement[] | HTMLAnchorElement | null | undefined;
|
|
152
142
|
declare const useAnchor: (anchors?: AnchorInput) => void;
|
|
153
143
|
|
|
144
|
+
type Signal<T> = {
|
|
145
|
+
(): T;
|
|
146
|
+
set: (fn: T | ((prev: T) => T)) => void;
|
|
147
|
+
bind: (el: HTMLElement) => void;
|
|
148
|
+
};
|
|
149
|
+
declare function createSignal<T>(initial: T): Signal<T>;
|
|
150
|
+
|
|
154
151
|
type RouteCallback = (errorElement?: HTMLElement, params?: Record<string, string>, query?: Record<string, string>) => void;
|
|
155
152
|
interface RouteConfig {
|
|
156
153
|
path: string;
|
|
@@ -173,4 +170,4 @@ declare class TSRouter {
|
|
|
173
170
|
addRoute(route: RouteConfig): void;
|
|
174
171
|
}
|
|
175
172
|
|
|
176
|
-
export { TSFilebasedRouter, TSRouter,
|
|
173
|
+
export { TSFilebasedRouter, TSRouter, createSignal, html, loadPyFiles, mapper, renderChildRoutes, useAnchor, useAnchorSingle, useInitialDOM, useTSAuth, useTSCollection, useTSComponent, useTSElementEach, useTSElements, useTSEvent, useTSEventAll, useTSExtractParams, useTSLazy, useTSMetaData, useTSNavigate, useTSNoReload, useTSOutlet, useTSParams, useTSPurifier, useTSSSRHydration, useTSSelect, useTSloadBrython };
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
function he(n){let e=n==null?"":String(n),t=e.toLowerCase();return t.includes("<script")||t.includes("javascript:")?"":(e=e.replace(/url\(\s*(['"])?\s*\1?\s*\)/gi,""),e.replace(/<\s*(script|iframe|object|embed|link|style|meta|body)[^>]*>.*?<\s*\/\s*\1\s*>/gi,"").replace(/<\s*(script|iframe|object|embed|link|style|meta)[^>]*>/gi,"").replace(/\s+on\w+\s*=\s*(['"]).*?\1/gi,"").replace(/\s+on\w+\s*=\s*[^\s>]+/gi,"").replace(/\s(href|src)\s*=\s*(['"]?)\s*(javascript:|vbscript:|data:|file:)[^'">\s]*\2/gi,'$1="#"'))}function k(n,...e){return n.reduce((t,r,o)=>{let a=o<e.length?he(e[o]):"";return t+r+a},"")}var ge=n=>n.replace(/<\/?(script|iframe|object|embed|link|meta|style|form|textarea|svg|math|body)[^>]*>/gi,"").replace(/<(?!\/?(b|i|em|strong|p|br|ul|ol|li|a|div|span|h1|h2|h3|h4|h5|h6|section|article|input|button)\b)[^>]*>/gi,"").replace(/\s+on[a-z]+\s*=\s*("[^"]*"|'[^']*'|[^\s>]+)/gi,"").replace(/\s*style\s*=\s*("[^"]*"|'[^']*')/gi,"").replace(/<a\b([^>]*)href\s*=\s*(['"]?)(?!https?:|#)[^'"\s>]+(['"]?)([^>]*)>/gi,"<a$1$4>").replace(/\s+(href|src)\s*=\s*(['"]?)\s*(javascript:|data:)[^'"\s>]*/gi,"").replace(/<a\b([^>]*)\bhref\s*=\s*(['"])(\/blog|#blog)\2([^>]*)>/gi,'<a$1 href=$2$3$2 href-line="true"$4>').trim(),Te=n=>n?.map(e=>ge(e)).join("")??"";import q from"dompurify";var j=(n,e)=>{let r={...{ADD_TAGS:["my-custom-tag"]},...e};return typeof n=="string"?q.sanitize(n,r):q.sanitize(n.innerHTML,r)};var U=(n,e,t)=>{if(typeof n=="string"){let r=document.getElementById(n);r?r.addEventListener(e,t):console.warn(`Element with id '${n}' not found.`)}else n instanceof HTMLElement?n.addEventListener(e,t):n===document?document.addEventListener(e,t):console.warn("Invalid target parameter provided.")};import{createStore as Ee}from"zustand/vanilla";import W from"dompurify";function Se(n,e){let t=[],r=n.replace(/:[^/]+/g,s=>(t.push(s.slice(1)),"([^/]+)")),o=new RegExp(`^${r}$`),a=e.match(o),i={};return a&&t.forEach((s,c)=>{i[s]=W.sanitize(a[c+1]??"")}),i}function ye(n){let e={},t=new URLSearchParams(n);for(let[r,o]of t.entries())e[r]=W.sanitize(o);return e}var A=Ee((n,e)=>({params:{},query:{},setFromPattern:t=>{let r=window.location.pathname,o=Se(t,r),a=ye(window.location.search);n({params:o,query:a})},getParam:t=>e().params[t],getQuery:t=>e().query[t]}));function B(n){let e=A.getState();e.setFromPattern(n);let t=e.params,r=e.query;return{...t,...r}}var G=(n,e,t)=>{let r=document.querySelectorAll(n);return r.forEach(o=>{o.addEventListener(e,t)}),()=>{r.forEach(o=>{o.removeEventListener(e,t)})}};import ve from"dompurify";import{animate as D}from"motion";function N(n){let e={},t=400,r="ease-in-out",o=0,a=0;return n.split(/\s+/).forEach(s=>{s==="infinite"?a=1/0:s.startsWith("duration-")?t=Number(s.replace("duration-","")):s.startsWith("delay-")?o=Number(s.replace("delay-","")):/^ease(-in|-out|-in-out)?|linear$/.test(s)?r=s:s.startsWith("opacity-")?e.opacity=Number(s.replace("opacity-",""))/100:/^-?x-\d+$/.test(s)?e.translateX=Number(s.replace("-x-","").replace("x-",""))*(s.startsWith("-x-")?-1:1):/^-?y-\d+$/.test(s)?e.translateY=Number(s.replace("-y-","").replace("y-",""))*(s.startsWith("-y-")?-1:1):/^-?rotate-\d+$/.test(s)?e.rotate=Number(s.replace("-rotate-","").replace("rotate-",""))*(s.startsWith("-rotate-")?-1:1):/^-?scale-\d+$/.test(s)&&(e.scale=Number(s.replace("-scale-","").replace("scale-",""))/100)}),{props:e,duration:t,easing:r,delay:o,repeat:a}}var Q=(n,e,t={},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","label","form"],ALLOWED_ATTR:["class","id","href","src","alt","title","data-click","data-change","data-select","data-effect","data-classlist","data-hover","data-submit","data-key","data-event","data-component"],...r},a=ve.sanitize(e,{...o,RETURN_DOM_FRAGMENT:!0});for(;n.firstChild;)n.removeChild(n.firstChild);n.appendChild(a),Object.entries(t).forEach(([i,s])=>{n.querySelectorAll(`[data-click="${i}"]`).forEach(c=>{c.addEventListener("click",l=>s(c,l))})}),n.querySelectorAll("[data-component]").forEach(i=>{let s=i.dataset.component;s&&t[s]&&t[s](i)}),n.querySelectorAll("[data-effect]").forEach(i=>{let c=(i.dataset.effect?.split(/\s+/)||[]).join(" "),{props:l,duration:p,easing:m,delay:g,repeat:h}=N(c);setTimeout(()=>{D(i,l,{duration:p/1e3,easing:m,repeat:h})},g)}),n.querySelectorAll("[data-hover]").forEach(i=>{let s=i.dataset.hover||"",[c,...l]=s.split(" hover:"),p=N(c),m=N(l.join(" "));D(i,p.props,{duration:p.duration/1e3,easing:p.easing}),i.addEventListener("mouseenter",()=>{D(i,m.props,{duration:m.duration/1e3,easing:m.easing})}),i.addEventListener("mouseleave",()=>{D(i,p.props,{duration:p.duration/1e3,easing:p.easing})})})};import V from"dompurify";var H=null,K=(n,e)=>{if(typeof document>"u")return;let t=document.getElementById(n);if(!t)return;V.addHook("uponSanitizeAttribute",(i,s)=>{let c=(s.attrName||"").toLowerCase(),l=(s.attrValue??"").toString().trim();if(c.startsWith("on")){s.keepAttr=!1;return}if((c==="href"||c==="src")&&/^(javascript:|vbscript:|data:|file:|about:)/i.test(l)){s.keepAttr=!1;return}if(c==="class"){let m=l.split(/\s+/).filter(Boolean).filter(g=>{if(/^[a-zA-Z0-9\-\:\/_\[\]\(\)]+$/.test(g)){if(/^bg-\[url\(.*\)\]$/.test(g)){let h=g.replace(/^bg-\[url\(/,"").replace(/\)\]$/,"").replace(/^['"]|['"]$/g,"");return h===""||/^https?:\/\//i.test(h)||/^\/(?!\/)/.test(h)||/^\.{0,2}\//.test(h)}return!0}return!1});s.attrValue=m.join(" ");return}if(c==="style"){s.keepAttr=!1;return}});let r=t.cloneNode(!0),o=V.sanitize(r.innerHTML,{USE_PROFILES:{html:!0},ALLOWED_TAGS:["div","span","p","h1","h2","h3","h4","h5","h6","ul","ol","li","strong","em","a","img","br","form","button","input","label"],ALLOWED_ATTR:["href","src","alt","title","class","id","type","name","value","placeholder","data-click","data-change","data-submit","data-select","data-hover","data-classlist"],FORBID_TAGS:["script","iframe","object","embed","body","html","svg","math","link","meta"],ALLOW_DATA_ATTR:!0,KEEP_CONTENT:!1,RETURN_DOM_FRAGMENT:!0}),a=Array.from(o.childNodes).map(i=>i.outerHTML||i.textContent||"").join("");if(H!==null&&a!==H){let i=document.createElement("div");e(i);let c=new DOMParser().parseFromString(H,"text/html");for(;t.firstChild;)t.removeChild(t.firstChild);c.body.childNodes.forEach(l=>t.appendChild(l.cloneNode(!0)))}else{for(H=a;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(o),e(t)}};import Y from"dompurify";typeof window<"u"&&!window.__anchorSinglePopstateHandlerAttached&&(window.addEventListener("popstate",n=>{let e=n.state;e?.scrollPosition!==void 0&&window.scrollTo(0,e.scrollPosition)}),window.__anchorSinglePopstateHandlerAttached=!0);var J=(n,e,t,r="",o=null)=>{if(!n)return;let a=Y.sanitize(e,{ALLOWED_URI_REGEXP:/^(https?:|\/)/}),i=Y.sanitize(t,{USE_PROFILES:{html:!1}});n.setAttribute("href",a),n.setAttribute("aria-label",i),r&&(n.className=r.trim()),o&&n.replaceChildren(o),typeof window<"u"&&n.addEventListener("click",s=>{s.preventDefault();let l=s.currentTarget.getAttribute("href");if(l){let p=window.scrollY;window.scrollTo(0,0),window.history.pushState({scrollPosition:p},"",l),dispatchEvent(new PopStateEvent("popstate"))}})};import v from"dompurify";var X=(n="'self' 'nonce-rAnd0m123' 'unsafe-inline' 'unsafe-eval'",e="'self' 'nonce-rAnd0m123'",t="'none'",r="'self' https://fonts.googleapis.com https://fonts.gstatic.com",o="'self' https://blogger.googleusercontent.com",a=["'self'","https://fonts.googleapis.com","https://fonts.gstatic.com","https://www.google.com/maps/"],i="'self' https://www.youtube.com",s="'self'",c="/csp-report",l=!1)=>{let p=()=>{try{let m=document.querySelector('meta[http-equiv="Content-Security-Policy"]');m||(m=document.createElement("meta"),m.setAttribute("http-equiv","Content-Security-Policy"),document.head.appendChild(m));let g=l?`report-uri ${c};`:"";m.setAttribute("content",`default-src 'self'; script-src ${n}; style-src ${e}; object-src ${t}; font-src ${r}; img-src ${o}; connect-src ${a.join(" ")}; frame-src ${i}; base-uri ${s}; ${g}`)}catch(m){console.error("Error adding CSP meta element:",m)}};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",p):p()};var Z=(n,e)=>{let t={name:v.sanitize(n.name||""),title:v.sanitize(n.title||""),description:v.sanitize(n.description||"Default description"),author:v.sanitize(n.author||""),favicon:n.favicon},r=u=>{t.name=v.sanitize(u),y("name",t.name)},o=u=>{t.title=v.sanitize(u),document.title=t.title},a=u=>{t.description=v.sanitize(u),y("description",t.description)},i=u=>{t.author=v.sanitize(u),y("author",t.author)},s=u=>{t.favicon=v.sanitize(u);let d=document.querySelector('link[rel="icon"]');d||(d=document.createElement("link"),d.rel="icon",document.head.appendChild(d)),d.href=t.favicon},c=()=>t.name,l=()=>t.title,p=()=>t.description,m=()=>t.author,g=()=>t.favicon,h=()=>t,P=(u,d)=>{let f=document.createElement("meta");f.setAttribute("name",u),f.setAttribute("content",d),document.head.appendChild(f)},y=(u,d)=>{let f=document.querySelector(`meta[name="${u}"]`);f?f.setAttribute("content",d):P(u,d)},M=()=>{t.title&&(document.title=t.title),t.name&&y("name",t.name),t.description&&y("description",t.description),t.author&&y("author",t.author),t.favicon&&s(t.favicon)};return e&&X(e.scriptSrc,e.styleSrc,e.objectSrc,Array.isArray(e.connectSrc)?e.connectSrc.join(" "):e.connectSrc,e.reportOnly!==void 0?String(e.reportOnly):void 0),M(),{setName:r,setTitle:o,setDescription:a,setAuthor:i,setFavicon:s,getName:c,getTitle:l,getDescription:p,getAuthor:m,getFavicon:g,getAllMetaData:h,appendMetaTagsToHead:M}};import we from"dompurify";var C=(n,e,t,r,o)=>{let a=`#${n}`,i=e.querySelectorAll(a);if(i.length===0)throw new Error(`[useTSComponent] No element found with id '${n}' in the given parent.`);if(i.length>1)throw new Error(`[useTSComponent] Duplicate id '${n}' detected. Found ${i.length} elements.`);let s=i[0];s.innerHTML=we.sanitize(s.innerHTML,{USE_PROFILES:{html:!0}}),t(s,r,o)};var ee=(n,e,t,r=[])=>{let o=new Set;n.forEach((a,i)=>{if(o.has(a)){console.warn(`[useTSCollection] Duplicate ID in collection array: "${a}" \u2014 skipping.`);return}o.add(a);let s=e.querySelectorAll(`#${a}`);if(s.length>1){console.warn(`[useTSCollection] Duplicate ID in DOM: "${a}" (${s.length} elements found) \u2014 skipping component mount.`);return}let c=t[i],l=Array.isArray(r)?r[i]:void 0;typeof c=="function"?C(a,e,c,l):console.warn(`[useTSCollection] No valid component function found for ID: "${a}"`)})};var R=(n,e)=>{let r=(e??document).querySelectorAll(n);if(r.length===0)return process.env.NODE_ENV!=="production"&&console.warn(`[useTSSelect] No element found for selector: '${n}'`),null;if(n.startsWith("#")&&r.length>1){if(process.env.NODE_ENV!=="production")throw new Error(`[useTSSelect] Duplicate ID detected: '${n}'. 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: '${n}'. Returning the first one.`),r[0]};import{jwtDecode as Le}from"jwt-decode";var te=(n,e)=>{let t=localStorage.getItem("token");if(!t)return window.location.href=e,null;try{let r=Le(t),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 F=(n,e,t)=>{n.forEach(r=>{e.forEach(o=>{r.addEventListener(o,a=>{t(r,a)})})})};var ne=()=>({back:()=>window.history.back(),forward:()=>window.history.forward()});var re=(n,e)=>{let t=document.querySelector(`#${n}`)||document.querySelector(`.${n}`);if(!t)return;let r=window.location.pathname.replace(/\/$/,"");for(let o of e){let a=o.path.replace(/\/$/,"");if(r===a||r.startsWith(`${a}/`)){o.component(t);break}}};function oe(n,e){let t=window.location.pathname.replace(/\/$/,"");e.routes.forEach(r=>{r.children?.length&&r.children.forEach(o=>{let a=o.path.replace(/\/$/,"");if(t===a||t.startsWith(`${a}/`)){let i=n.querySelector(`#${o.outlet}`)||n.querySelector(`.${o.outlet}`);i instanceof HTMLElement&&o.element&&o.element(i)}})})}import{createStore as Me}from"zustand/vanilla";function se(n){let e=Me(()=>({value:n})),t=new Set;return{get:()=>e.getState().value,set:r=>{e.setState({value:r}),t.forEach(o=>o(r))},subscribe:r=>(t.add(r),r(e.getState().value),()=>t.delete(r))}}function ie(n){let e=n();typeof e=="function"&&e()}var ae=async()=>{let n="https://cdn.jsdelivr.net/npm/brython@3/brython.min.js",e="https://cdn.jsdelivr.net/npm/brython@3/brython_stdlib.js",t=r=>new Promise((o,a)=>{let i=document.createElement("script");i.src=r,i.onload=()=>o(),i.onerror=()=>a(new Error(`Failed to load ${r}`)),document.head.appendChild(i)});await t(n),await t(e),typeof window.brython=="function"?window.brython():console.error("Brython did not load correctly.")},ce=n=>new Promise((e,t)=>{let r=document.createElement("script");r.type="text/python",r.src=`/src/python/${n}`,r.onload=()=>e(),r.onerror=()=>t(new Error(`Failed to load ${n}`)),document.body.appendChild(r)});function le(n){let e=null;return async(t,r)=>{try{if(!e){let o=await n();e=o.default||o}if(typeof e=="function")return e(t,r);if(e instanceof HTMLElement){let o=e.cloneNode(!0);return t?.appendChild(o),o}if(typeof e=="object"&&e!==null&&"render"in e&&typeof e.render=="function")return e.render(t,r);console.warn("useTSLazy: Unsupported module type",e)}catch(o){console.error("useTSLazy failed:",o)}}}var ue=n=>typeof window>"u"?{isDOM:null}:{isDOM:n||document.body};import{debounce as Re}from"lodash-es";var z=n=>n;typeof window<"u"&&typeof document<"u"&&(z=n=>{let e=document.createElement("div");return e.innerText=n,e.innerHTML});var Pe=n=>{(n?Array.isArray(n)?n:n instanceof HTMLAnchorElement?[n]:Array.from(n):Array.from(document.querySelectorAll("a"))).forEach(t=>{if(!t||t.dataset.anchorEnhanced==="true")return;t.dataset.anchorEnhanced="true";let r=t.getAttribute("class")||"";t.setAttribute("class",z(r));let o=t.getAttribute("aria-label");o&&t.setAttribute("aria-label",z(o));let a=t.querySelector(":scope > *");a&&(t.innerHTML="",t.appendChild(a));let i=t.getAttribute("href")||"";if(!i.startsWith("#")){try{if(new URL(i,window.location.href).origin!==window.location.origin)return}catch{return}t.addEventListener("click",s=>{s.preventDefault();let c=t.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)}})}})},be=Re(Pe,50),O=n=>{be(n)};var de=n=>{if(!n)return;let e=R("a",n);O(e)};import pe from"dompurify";import{createStore as xe}from"zustand/vanilla";import Ae from"dompurify";var w=xe(n=>({params:{},query:{},setParams:e=>n(()=>({params:me(e)})),setQuery:e=>n(()=>({query:me(e)}))}));function me(n){let e={};for(let t in n)e[t]=Ae.sanitize(n[t]);return e}var I=class{constructor(e,t){this.routes=[];this.routes=e,this.expectedParams=new Set(t),window.addEventListener("popstate",this.handlePopState.bind(this)),this.handlePopState()}handlePopState(){let e=window.location.pathname,t=window.location.search,r=this.parseQueryParams(t),o=this.findMatchingRoute(e,this.routes);if(o){if(o.routeto){this.navigate(o.routeto);return}let a=this.filterAndSanitizeParams(o.params);w.getState().setParams(a),w.getState().setQuery(r);let i=document.createElement("div");if(o.element?.(i,a,r),o.children){let s=e.slice(o.path.length),c=i.querySelector("#child");c&&this.renderChildren(o.children,s,c,a,r)}}else{let a=this.findMatchingRoute("*",this.routes);if(a){let i=this.filterAndSanitizeParams(a.params);w.getState().setParams(i),w.getState().setQuery(r);let s=document.createElement("div");a.element?.(s,i,r)}}}renderChildren(e,t,r,o,a){if(!e||e.length===0){let s=r.querySelector("#child");s&&s.remove();return}let i=this.findMatchingRoute(t,e);if(i){let s=document.createElement("div");s.id="child";let c={...o,...i.params},l=this.filterAndSanitizeParams(c);if(w.getState().setParams(l),w.getState().setQuery(a),i.element?.(s,l,a),r.appendChild(s),i.children){let p=t.slice(i.path.length);this.renderChildren(i.children,p,s,l,a)}}}parseQueryParams(e){let t={},r=new URLSearchParams(e);for(let[o,a]of r.entries())this.expectedParams.has(o)&&(t[o]=pe.sanitize(a));return t}findMatchingRoute(e,t,r={}){for(let o of t){let a=o.path;if(a==="*")return o;{let s=[],c=a.replace(/:[^\s/]+/g,m=>(s.push(m.substring(1)),"([^\\s/]+)")),l=new RegExp(`^${c}(?:/|$)`),p=e.match(l);if(p){let m={...r};if(s.forEach((g,h)=>{m[g]=p[h+1]??""}),o.children){let g=e.slice(p[0].length),h=this.findMatchingRoute(g,o.children,m);if(h)return h}return{...o,params:m}}}}}filterAndSanitizeParams(e){if(!e)return{};let t={};for(let r in e)this.expectedParams.has(r)&&(t[r]=pe.sanitize(e[r]??""));return t}navigate(e){history.pushState(null,"",e),this.handlePopState()}addRoute(e){this.routes.push(e)}};var De=()=>({name:"ts-filebased-router",async buildStart(){if(typeof process>"u"||!process.versions?.node)return;let n=await import("path"),e=await import("fs/promises"),t=await import("./esm-KRNKVVL7.js"),r=n.resolve("src/pages"),o=n.resolve("src/gen"),a=n.resolve("src/routes"),i=n.join(o,"tsrouter.gen.ts"),s=n.join(a,"__root.ts"),c=process.env.NODE_ENV!=="production";async function l(u){try{await e.mkdir(u,{recursive:!0})}catch{}}function p(u){let d="/"+n.relative(r,u).replace(/\\/g,"/");return d=d.replace(/\.ts$/,"").replace(/\/index$/,"")||"/",d.replace(/\[(.+?)\]/g,":$1")}function m(u){return u.replace(/^\//,"").split("/").map(d=>d.startsWith(":")?d.slice(1):d).filter(Boolean).join("-")||"index"}function g(u){let f=n.relative(r,u).replace(/\\/g,"/").split("/").filter(Boolean),E=f[f.length-1].replace(".ts",""),S=f.length>1?f[f.length-2]:"";if(E==="index")return S?h(S):"Index";if(E.startsWith("[")&&E.endsWith("]")){let L=E.slice(1,-1);return h(S)+h(L)}return h(E)}function h(u){return u.charAt(0).toUpperCase()+u.slice(1)}async function P(u){let d=await e.readdir(u,{withFileTypes:!0}),f=[];for(let E of d){let S=n.join(u,E.name);if(E.isDirectory())f=f.concat(await P(S));else if(E.isFile()&&E.name.endsWith(".ts")){let L=p(S),$=m(L),T=g(S);f.push({file:S,route:L,routeName:$,importName:T})}}return f}function y(){return`import { createRouter } from "../gen/tsrouter.gen";
|
|
1
|
+
function Te(n){let e=n==null?"":String(n),t=e.toLowerCase();return t.includes("<script")||t.includes("javascript:")?"":(e=e.replace(/url\(\s*(['"])?\s*\1?\s*\)/gi,""),e.replace(/<\s*(script|iframe|object|embed|link|style|meta|body)[^>]*>.*?<\s*\/\s*\1\s*>/gi,"").replace(/<\s*(script|iframe|object|embed|link|style|meta)[^>]*>/gi,"").replace(/\s+on\w+\s*=\s*(['"]).*?\1/gi,"").replace(/\s+on\w+\s*=\s*[^\s>]+/gi,"").replace(/\s(href|src)\s*=\s*(['"]?)\s*(javascript:|vbscript:|data:|file:)[^'">\s]*\2/gi,'$1="#"'))}function k(n,...e){return n.reduce((t,r,o)=>{let i=o<e.length?Te(e[o]):"";return t+r+i},"")}var Se=(n,e)=>n.reduce((t,r,o)=>t+e(r,o),"");import q from"dompurify";var j=(n,e)=>{let r={...{ADD_TAGS:["my-custom-tag"]},...e};return typeof n=="string"?q.sanitize(n,r):q.sanitize(n.innerHTML,r)};var U=(n,e,t)=>{if(typeof n=="string"){let r=document.getElementById(n);r?r.addEventListener(e,t):console.warn(`Element with id '${n}' not found.`)}else n instanceof HTMLElement?n.addEventListener(e,t):n===document?document.addEventListener(e,t):console.warn("Invalid target parameter provided.")};import{createStore as Ee}from"zustand/vanilla";import W from"dompurify";function ye(n,e){let t=[],r=n.replace(/:[^/]+/g,s=>(t.push(s.slice(1)),"([^/]+)")),o=new RegExp(`^${r}$`),i=e.match(o),a={};return i&&t.forEach((s,c)=>{a[s]=W.sanitize(i[c+1]??"")}),a}function ve(n){let e={},t=new URLSearchParams(n);for(let[r,o]of t.entries())e[r]=W.sanitize(o);return e}var A=Ee((n,e)=>({params:{},query:{},setFromPattern:t=>{let r=window.location.pathname,o=ye(t,r),i=ve(window.location.search);n({params:o,query:i})},getParam:t=>e().params[t],getQuery:t=>e().query[t]}));function B(n){let e=A.getState();e.setFromPattern(n);let t=e.params,r=e.query;return{...t,...r}}var G=(n,e,t)=>{let r=document.querySelectorAll(n);return r.forEach(o=>{o.addEventListener(e,t)}),()=>{r.forEach(o=>{o.removeEventListener(e,t)})}};import we from"dompurify";import{animate as H}from"motion";function N(n){let e={},t=400,r="ease-in-out",o=0,i=0;return n.split(/\s+/).forEach(s=>{s==="infinite"?i=1/0:s.startsWith("duration-")?t=Number(s.replace("duration-","")):s.startsWith("delay-")?o=Number(s.replace("delay-","")):/^ease(-in|-out|-in-out)?|linear$/.test(s)?r=s:s.startsWith("opacity-")?e.opacity=Number(s.replace("opacity-",""))/100:/^-?x-\d+$/.test(s)?e.translateX=Number(s.replace("-x-","").replace("x-",""))*(s.startsWith("-x-")?-1:1):/^-?y-\d+$/.test(s)?e.translateY=Number(s.replace("-y-","").replace("y-",""))*(s.startsWith("-y-")?-1:1):/^-?rotate-\d+$/.test(s)?e.rotate=Number(s.replace("-rotate-","").replace("rotate-",""))*(s.startsWith("-rotate-")?-1:1):/^-?scale-\d+$/.test(s)&&(e.scale=Number(s.replace("-scale-","").replace("scale-",""))/100)}),{props:e,duration:t,easing:r,delay:o,repeat:i}}var Q=(n,e,t={},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","label","form"],ALLOWED_ATTR:["class","id","href","src","alt","title","data-click","data-change","data-select","data-effect","data-classlist","data-hover","data-submit","data-key","data-event","data-component"],...r},i=we.sanitize(e,{...o,RETURN_DOM_FRAGMENT:!0});for(;n.firstChild;)n.removeChild(n.firstChild);n.appendChild(i),Object.entries(t).forEach(([a,s])=>{n.querySelectorAll(`[data-click="${a}"]`).forEach(c=>{c.addEventListener("click",l=>s(c,l))})}),n.querySelectorAll("[data-component]").forEach(a=>{let s=a.dataset.component;s&&t[s]&&t[s](a)}),n.querySelectorAll("[data-effect]").forEach(a=>{let c=(a.dataset.effect?.split(/\s+/)||[]).join(" "),{props:l,duration:p,easing:m,delay:g,repeat:h}=N(c);setTimeout(()=>{H(a,l,{duration:p/1e3,easing:m,repeat:h})},g)}),n.querySelectorAll("[data-hover]").forEach(a=>{let s=a.dataset.hover||"",[c,...l]=s.split(" hover:"),p=N(c),m=N(l.join(" "));H(a,p.props,{duration:p.duration/1e3,easing:p.easing}),a.addEventListener("mouseenter",()=>{H(a,m.props,{duration:m.duration/1e3,easing:m.easing})}),a.addEventListener("mouseleave",()=>{H(a,p.props,{duration:p.duration/1e3,easing:p.easing})})})};import V from"dompurify";var D=null,K=(n,e)=>{if(typeof document>"u")return;let t=document.getElementById(n);if(!t)return;V.addHook("uponSanitizeAttribute",(a,s)=>{let c=(s.attrName||"").toLowerCase(),l=(s.attrValue??"").toString().trim();if(c.startsWith("on")){s.keepAttr=!1;return}if((c==="href"||c==="src")&&/^(javascript:|vbscript:|data:|file:|about:)/i.test(l)){s.keepAttr=!1;return}if(c==="class"){let m=l.split(/\s+/).filter(Boolean).filter(g=>{if(/^[a-zA-Z0-9\-\:\/_\[\]\(\)]+$/.test(g)){if(/^bg-\[url\(.*\)\]$/.test(g)){let h=g.replace(/^bg-\[url\(/,"").replace(/\)\]$/,"").replace(/^['"]|['"]$/g,"");return h===""||/^https?:\/\//i.test(h)||/^\/(?!\/)/.test(h)||/^\.{0,2}\//.test(h)}return!0}return!1});s.attrValue=m.join(" ");return}if(c==="style"){s.keepAttr=!1;return}});let r=t.cloneNode(!0),o=V.sanitize(r.innerHTML,{USE_PROFILES:{html:!0},ALLOWED_TAGS:["div","span","p","h1","h2","h3","h4","h5","h6","ul","ol","li","strong","em","a","img","br","form","button","input","label"],ALLOWED_ATTR:["href","src","alt","title","class","id","type","name","value","placeholder","data-click","data-change","data-submit","data-select","data-hover","data-classlist"],FORBID_TAGS:["script","iframe","object","embed","body","html","svg","math","link","meta"],ALLOW_DATA_ATTR:!0,KEEP_CONTENT:!1,RETURN_DOM_FRAGMENT:!0}),i=Array.from(o.childNodes).map(a=>a.outerHTML||a.textContent||"").join("");if(D!==null&&i!==D){let a=document.createElement("div");e(a);let c=new DOMParser().parseFromString(D,"text/html");for(;t.firstChild;)t.removeChild(t.firstChild);c.body.childNodes.forEach(l=>t.appendChild(l.cloneNode(!0)))}else{for(D=i;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(o),e(t)}};import Y from"dompurify";typeof window<"u"&&!window.__anchorSinglePopstateHandlerAttached&&(window.addEventListener("popstate",n=>{let e=n.state;e?.scrollPosition!==void 0&&window.scrollTo(0,e.scrollPosition)}),window.__anchorSinglePopstateHandlerAttached=!0);var J=(n,e,t,r="",o=null)=>{if(!n)return;let i=Y.sanitize(e,{ALLOWED_URI_REGEXP:/^(https?:|\/)/}),a=Y.sanitize(t,{USE_PROFILES:{html:!1}});n.setAttribute("href",i),n.setAttribute("aria-label",a),r&&(n.className=r.trim()),o&&n.replaceChildren(o),typeof window<"u"&&n.addEventListener("click",s=>{s.preventDefault();let l=s.currentTarget.getAttribute("href");if(l){let p=window.scrollY;window.scrollTo(0,0),window.history.pushState({scrollPosition:p},"",l),dispatchEvent(new PopStateEvent("popstate"))}})};import v from"dompurify";var X=(n="'self' 'nonce-rAnd0m123' 'unsafe-inline' 'unsafe-eval'",e="'self' 'nonce-rAnd0m123'",t="'none'",r="'self' https://fonts.googleapis.com https://fonts.gstatic.com",o="'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",s="'self'",c="/csp-report",l=!1)=>{let p=()=>{try{let m=document.querySelector('meta[http-equiv="Content-Security-Policy"]');m||(m=document.createElement("meta"),m.setAttribute("http-equiv","Content-Security-Policy"),document.head.appendChild(m));let g=l?`report-uri ${c};`:"";m.setAttribute("content",`default-src 'self'; script-src ${n}; style-src ${e}; object-src ${t}; font-src ${r}; img-src ${o}; connect-src ${i.join(" ")}; frame-src ${a}; base-uri ${s}; ${g}`)}catch(m){console.error("Error adding CSP meta element:",m)}};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",p):p()};var Z=(n,e)=>{let t={name:v.sanitize(n.name||""),title:v.sanitize(n.title||""),description:v.sanitize(n.description||"Default description"),author:v.sanitize(n.author||""),favicon:n.favicon},r=u=>{t.name=v.sanitize(u),y("name",t.name)},o=u=>{t.title=v.sanitize(u),document.title=t.title},i=u=>{t.description=v.sanitize(u),y("description",t.description)},a=u=>{t.author=v.sanitize(u),y("author",t.author)},s=u=>{t.favicon=v.sanitize(u);let d=document.querySelector('link[rel="icon"]');d||(d=document.createElement("link"),d.rel="icon",document.head.appendChild(d)),d.href=t.favicon},c=()=>t.name,l=()=>t.title,p=()=>t.description,m=()=>t.author,g=()=>t.favicon,h=()=>t,P=(u,d)=>{let f=document.createElement("meta");f.setAttribute("name",u),f.setAttribute("content",d),document.head.appendChild(f)},y=(u,d)=>{let f=document.querySelector(`meta[name="${u}"]`);f?f.setAttribute("content",d):P(u,d)},M=()=>{t.title&&(document.title=t.title),t.name&&y("name",t.name),t.description&&y("description",t.description),t.author&&y("author",t.author),t.favicon&&s(t.favicon)};return e&&X(e.scriptSrc,e.styleSrc,e.objectSrc,Array.isArray(e.connectSrc)?e.connectSrc.join(" "):e.connectSrc,e.reportOnly!==void 0?String(e.reportOnly):void 0),M(),{setName:r,setTitle:o,setDescription:i,setAuthor:a,setFavicon:s,getName:c,getTitle:l,getDescription:p,getAuthor:m,getFavicon:g,getAllMetaData:h,appendMetaTagsToHead:M}};import Le from"dompurify";var C=(n,e,t,r,o)=>{let i=`#${n}`,a=e.querySelectorAll(i);if(a.length===0)throw new Error(`[useTSComponent] No element found with id '${n}' in the given parent.`);if(a.length>1)throw new Error(`[useTSComponent] Duplicate id '${n}' detected. Found ${a.length} elements.`);let s=a[0];s.innerHTML=Le.sanitize(s.innerHTML,{USE_PROFILES:{html:!0}}),t(s,r,o)};var ee=(n,e,t,r=[])=>{let o=new Set;n.forEach((i,a)=>{if(o.has(i)){console.warn(`[useTSCollection] Duplicate ID in collection array: "${i}" \u2014 skipping.`);return}o.add(i);let s=e.querySelectorAll(`#${i}`);if(s.length>1){console.warn(`[useTSCollection] Duplicate ID in DOM: "${i}" (${s.length} elements found) \u2014 skipping component mount.`);return}let c=t[a],l=Array.isArray(r)?r[a]:void 0;typeof c=="function"?C(i,e,c,l):console.warn(`[useTSCollection] No valid component function found for ID: "${i}"`)})};var R=(n,e)=>{let r=(e??document).querySelectorAll(n);if(r.length===0)return process.env.NODE_ENV!=="production"&&console.warn(`[useTSSelect] No element found for selector: '${n}'`),null;if(n.startsWith("#")&&r.length>1){if(process.env.NODE_ENV!=="production")throw new Error(`[useTSSelect] Duplicate ID detected: '${n}'. 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: '${n}'. Returning the first one.`),r[0]};import{jwtDecode as Me}from"jwt-decode";var te=(n,e)=>{let t=localStorage.getItem("token");if(!t)return window.location.href=e,null;try{let r=Me(t),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 F=(n,e,t)=>{n.forEach(r=>{e.forEach(o=>{r.addEventListener(o,i=>{t(r,i)})})})};var ne=()=>({back:()=>window.history.back(),forward:()=>window.history.forward()});var re=(n,e)=>{let t=document.querySelector(`#${n}`)||document.querySelector(`.${n}`);if(!t)return;let r=window.location.pathname.replace(/\/$/,"");for(let o of e){let i=o.path.replace(/\/$/,"");if(r===i||r.startsWith(`${i}/`)){o.component(t);break}}};function oe(n,e){let t=window.location.pathname.replace(/\/$/,"");e.routes.forEach(r=>{r.children?.length&&r.children.forEach(o=>{let i=o.path.replace(/\/$/,"");if(t===i||t.startsWith(`${i}/`)){let a=n.querySelector(`#${o.outlet}`)||n.querySelector(`.${o.outlet}`);a instanceof HTMLElement&&o.element&&o.element(a)}})})}var se=async()=>{let n="https://cdn.jsdelivr.net/npm/brython@3/brython.min.js",e="https://cdn.jsdelivr.net/npm/brython@3/brython_stdlib.js",t=r=>new Promise((o,i)=>{let a=document.createElement("script");a.src=r,a.onload=()=>o(),a.onerror=()=>i(new Error(`Failed to load ${r}`)),document.head.appendChild(a)});await t(n),await t(e),typeof window.brython=="function"?window.brython():console.error("Brython did not load correctly.")},ie=n=>new Promise((e,t)=>{let r=document.createElement("script");r.type="text/python",r.src=`/src/python/${n}`,r.onload=()=>e(),r.onerror=()=>t(new Error(`Failed to load ${n}`)),document.body.appendChild(r)});function ae(n){let e=null;return async(t,r)=>{try{if(!e){let o=await n();e=o.default||o}if(typeof e=="function")return e(t,r);if(e instanceof HTMLElement){let o=e.cloneNode(!0);return t?.appendChild(o),o}if(typeof e=="object"&&e!==null&&"render"in e&&typeof e.render=="function")return e.render(t,r);console.warn("useTSLazy: Unsupported module type",e)}catch(o){console.error("useTSLazy failed:",o)}}}var ce=n=>typeof window>"u"?{isDOM:null}:{isDOM:n||document.body};import{debounce as Re}from"lodash-es";var z=n=>n;typeof window<"u"&&typeof document<"u"&&(z=n=>{let e=document.createElement("div");return e.innerText=n,e.innerHTML});var Pe=n=>{(n?Array.isArray(n)?n:n instanceof HTMLAnchorElement?[n]:Array.from(n):Array.from(document.querySelectorAll("a"))).forEach(t=>{if(!t||t.dataset.anchorEnhanced==="true")return;t.dataset.anchorEnhanced="true";let r=t.getAttribute("class")||"";t.setAttribute("class",z(r));let o=t.getAttribute("aria-label");o&&t.setAttribute("aria-label",z(o));let i=t.querySelector(":scope > *");i&&(t.innerHTML="",t.appendChild(i));let a=t.getAttribute("href")||"";if(!a.startsWith("#")){try{if(new URL(a,window.location.href).origin!==window.location.origin)return}catch{return}t.addEventListener("click",s=>{s.preventDefault();let c=t.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)}})}})},be=Re(Pe,50),O=n=>{be(n)};var le=n=>{if(!n)return;let e=R("a",n);O(e)};var ue=null,de=n=>{let e=n;return[()=>e,o=>{e=typeof o=="function"?o(e):o}]};function me(n,e,t){let r=()=>{n.textContent=e().toString(),t?.(e())};r();let o=e.set;o&&(e.set=i=>{o(i),r()})}function pe(n){let[e,t]=de(n),r=()=>e();return r.set=o=>t(o),r.bind=o=>me(o,r),r}import he from"dompurify";import{createStore as xe}from"zustand/vanilla";import Ae from"dompurify";var w=xe(n=>({params:{},query:{},setParams:e=>n(()=>({params:fe(e)})),setQuery:e=>n(()=>({query:fe(e)}))}));function fe(n){let e={};for(let t in n)e[t]=Ae.sanitize(n[t]);return e}var I=class{constructor(e,t){this.routes=[];this.routes=e,this.expectedParams=new Set(t),window.addEventListener("popstate",this.handlePopState.bind(this)),this.handlePopState()}handlePopState(){let e=window.location.pathname,t=window.location.search,r=this.parseQueryParams(t),o=this.findMatchingRoute(e,this.routes);if(o){if(o.routeto){this.navigate(o.routeto);return}let i=this.filterAndSanitizeParams(o.params);w.getState().setParams(i),w.getState().setQuery(r);let a=document.createElement("div");if(o.element?.(a,i,r),o.children){let s=e.slice(o.path.length),c=a.querySelector("#child");c&&this.renderChildren(o.children,s,c,i,r)}}else{let i=this.findMatchingRoute("*",this.routes);if(i){let a=this.filterAndSanitizeParams(i.params);w.getState().setParams(a),w.getState().setQuery(r);let s=document.createElement("div");i.element?.(s,a,r)}}}renderChildren(e,t,r,o,i){if(!e||e.length===0){let s=r.querySelector("#child");s&&s.remove();return}let a=this.findMatchingRoute(t,e);if(a){let s=document.createElement("div");s.id="child";let c={...o,...a.params},l=this.filterAndSanitizeParams(c);if(w.getState().setParams(l),w.getState().setQuery(i),a.element?.(s,l,i),r.appendChild(s),a.children){let p=t.slice(a.path.length);this.renderChildren(a.children,p,s,l,i)}}}parseQueryParams(e){let t={},r=new URLSearchParams(e);for(let[o,i]of r.entries())this.expectedParams.has(o)&&(t[o]=he.sanitize(i));return t}findMatchingRoute(e,t,r={}){for(let o of t){let i=o.path;if(i==="*")return o;{let s=[],c=i.replace(/:[^\s/]+/g,m=>(s.push(m.substring(1)),"([^\\s/]+)")),l=new RegExp(`^${c}(?:/|$)`),p=e.match(l);if(p){let m={...r};if(s.forEach((g,h)=>{m[g]=p[h+1]??""}),o.children){let g=e.slice(p[0].length),h=this.findMatchingRoute(g,o.children,m);if(h)return h}return{...o,params:m}}}}}filterAndSanitizeParams(e){if(!e)return{};let t={};for(let r in e)this.expectedParams.has(r)&&(t[r]=he.sanitize(e[r]??""));return t}navigate(e){history.pushState(null,"",e),this.handlePopState()}addRoute(e){this.routes.push(e)}};var He=()=>({name:"ts-filebased-router",async buildStart(){if(typeof process>"u"||!process.versions?.node)return;let n=await import("path"),e=await import("fs/promises"),t=await import("./esm-KRNKVVL7.js"),r=n.resolve("src/pages"),o=n.resolve("src/gen"),i=n.resolve("src/routes"),a=n.join(o,"tsrouter.gen.ts"),s=n.join(i,"__root.ts"),c=process.env.NODE_ENV!=="production";async function l(u){try{await e.mkdir(u,{recursive:!0})}catch{}}function p(u){let d="/"+n.relative(r,u).replace(/\\/g,"/");return d=d.replace(/\.ts$/,"").replace(/\/index$/,"")||"/",d.replace(/\[(.+?)\]/g,":$1")}function m(u){return u.replace(/^\//,"").split("/").map(d=>d.startsWith(":")?d.slice(1):d).filter(Boolean).join("-")||"index"}function g(u){let f=n.relative(r,u).replace(/\\/g,"/").split("/").filter(Boolean),S=f[f.length-1].replace(".ts",""),E=f.length>1?f[f.length-2]:"";if(S==="index")return E?h(E):"Index";if(S.startsWith("[")&&S.endsWith("]")){let L=S.slice(1,-1);return h(E)+h(L)}return h(S)}function h(u){return u.charAt(0).toUpperCase()+u.slice(1)}async function P(u){let d=await e.readdir(u,{withFileTypes:!0}),f=[];for(let S of d){let E=n.join(u,S.name);if(S.isDirectory())f=f.concat(await P(E));else if(S.isFile()&&S.name.endsWith(".ts")){let L=p(E),$=m(L),T=g(E);f.push({file:E,route:L,routeName:$,importName:T})}}return f}function y(){return`import { createRouter } from "../gen/tsrouter.gen";
|
|
2
2
|
|
|
3
3
|
export const Router = async (DOM: HTMLElement) => {
|
|
4
4
|
const router = await createRouter(DOM);
|
|
@@ -7,7 +7,7 @@ export const Router = async (DOM: HTMLElement) => {
|
|
|
7
7
|
window.addEventListener("popstate", () => {
|
|
8
8
|
void router.navigate(window.location.pathname + window.location.search, false);
|
|
9
9
|
});
|
|
10
|
-
};`}async function M(){let u=await P(r),d=u.find(T=>T.route==="/notfound"),f=u.filter(T=>T.route!=="/notfound");for(let T of u)if(!(await e.readFile(T.file,"utf-8")).trim()){let b=T.importName,x=T.route.includes(":"),
|
|
10
|
+
};`}async function M(){let u=await P(r),d=u.find(T=>T.route==="/notfound"),f=u.filter(T=>T.route!=="/notfound");for(let T of u)if(!(await e.readFile(T.file,"utf-8")).trim()){let b=T.importName,x=T.route.includes(":"),ge=["html","useTSElements","useTSMetaData",...x?["useTSExtractParams"]:[]].join(", ");await e.writeFile(T.file,`import { ${ge} } from "@devwareng/vanilla-ts";
|
|
11
11
|
|
|
12
12
|
export default function ${b}(DOM: HTMLElement) {
|
|
13
13
|
useTSMetaData({
|
|
@@ -26,9 +26,9 @@ export default function ${b}(DOM: HTMLElement) {
|
|
|
26
26
|
${x?"<pre>${JSON.stringify(params, null, 2)}</pre>":""}
|
|
27
27
|
</div>
|
|
28
28
|
\`);
|
|
29
|
-
}`,"utf-8")}let
|
|
29
|
+
}`,"utf-8")}let S=["useTSLazy",...d?[]:["html","useTSElements"]].join(", "),E=f.map(T=>{let _="../pages/"+n.relative(r,T.file).replace(/\\/g,"/").replace(/\.ts$/,"");return`{ path: "${T.route}", name: "${T.routeName}", component: useTSLazy(() => import("${_}")) }`}).join(`,
|
|
30
30
|
`),L=d?`export const NotFound = useTSLazy(() => import("../pages/${n.relative(r,d.file).replace(/\\/g,"/").replace(/\.ts$/,"")}"))`:"export function NotFound(DOM: HTMLElement) {\n return useTSElements(DOM, html`<div><h1>404 - Page Not Found</h1></div>`);\n}",$=`// AUTO-GENERATED FILE
|
|
31
|
-
import { ${
|
|
31
|
+
import { ${S} } from "@devwareng/vanilla-ts";
|
|
32
32
|
|
|
33
33
|
type Route = {
|
|
34
34
|
path: string;
|
|
@@ -39,7 +39,7 @@ type Route = {
|
|
|
39
39
|
${L}
|
|
40
40
|
|
|
41
41
|
export const routeTree: Route[] = [
|
|
42
|
-
${
|
|
42
|
+
${E}
|
|
43
43
|
];
|
|
44
44
|
|
|
45
45
|
export async function createRouter(DOM: HTMLElement) {
|
|
@@ -64,4 +64,4 @@ export async function createRouter(DOM: HTMLElement) {
|
|
|
64
64
|
|
|
65
65
|
return { navigate, routes: routeTree };
|
|
66
66
|
}
|
|
67
|
-
`;await l(o),await e.writeFile(
|
|
67
|
+
`;await l(o),await e.writeFile(a,$,"utf-8"),await e.writeFile(s,y(),"utf-8")}await l(o),await l(i),await l(r),await M(),c&&(t.watch(r).on("all",async(d,f)=>{f.endsWith(".ts")&&await M()}),t.watch(s).on("unlink",async()=>{await e.writeFile(s,y(),"utf-8")})),console.log("\u{1F7E2} TS Router Generated (Smart + Clean Mode)")}});export{He as TSFilebasedRouter,I as TSRouter,pe as createSignal,k as html,ie as loadPyFiles,Se as mapper,oe as renderChildRoutes,O as useAnchor,J as useAnchorSingle,K as useInitialDOM,te as useTSAuth,ee as useTSCollection,C as useTSComponent,F as useTSElementEach,Q as useTSElements,U as useTSEvent,G as useTSEventAll,B as useTSExtractParams,ae as useTSLazy,Z as useTSMetaData,ne as useTSNavigate,le as useTSNoReload,re as useTSOutlet,A as useTSParams,j as useTSPurifier,ce as useTSSSRHydration,R as useTSSelect,se as useTSloadBrython};
|