@devwareng/vanilla-ts 1.6.83 → 1.6.84
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/animate-4M3FYXLV.css +4072 -0
- package/dist/animate-BLFDHCG3.js +1 -0
- package/dist/index.cjs +12 -12
- package/dist/index.css +12 -0
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +12 -12
- package/package.json +3 -2
package/dist/index.js
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
function ue(t){let e=t==null?"":String(t),n=e.toLowerCase();return(n.includes("<script")||n.includes("javascript:"))&&(e=""),e.replace(/<\s*(script|iframe|object|embed|link|style|meta)[^>]*>.*?<\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(t,...e){return t.reduce((n,r,o)=>{let s=o<e.length?ue(e[o]):"";return n+r+s},"")}var me=t=>t.replace(/<\/?(script|iframe|object|embed|link|meta|style|form|input|button|textarea|svg|math)[^>]*>/gi,"").replace(/<(?!\/?(b|i|em|strong|p|br|ul|ol|li|a)\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(),de=t=>t?.map(e=>me(e)).join("")??"";import F from"dompurify";var _=(t,e)=>{let r={...{ADD_TAGS:["my-custom-tag"]},...e};return typeof t=="string"?F.sanitize(t,r):F.sanitize(t.innerHTML,r)};var z=(t,e,n)=>{if(typeof t=="string"){let r=document.getElementById(t);r?r.addEventListener(e,n):console.warn(`Element with id '${t}' not found.`)}else t===document?document.addEventListener(e,n):console.warn("Invalid id parameter provided.")};import{createStore as pe}from"zustand/vanilla";import I from"dompurify";function fe(t,e){let n=[],r=t.replace(/:[^/]+/g,i=>(n.push(i.slice(1)),"([^/]+)")),o=new RegExp(`^${r}$`),s=e.match(o),a={};return s&&n.forEach((i,c)=>{a[i]=I.sanitize(s[c+1]??"")}),a}function he(t){let e={},n=new URLSearchParams(t);for(let[r,o]of n.entries())e[r]=I.sanitize(o);return e}var x=pe((t,e)=>({params:{},query:{},setFromPattern:n=>{let r=window.location.pathname,o=fe(n,r),s=he(window.location.search);t({params:o,query:s})},getParam:n=>e().params[n],getQuery:n=>e().query[n]}));function q(t){let e=x.getState();e.setFromPattern(t);let n=e.params,r=e.query;return{...n,...r}}var j=(t,e,n)=>{let r=document.querySelectorAll(t);return r.forEach(o=>{o.addEventListener(e,n)}),()=>{r.forEach(o=>{o.removeEventListener(e,n)})}};import D from"dompurify";var U=(t,e,n={},r)=>{let o={USE_PROFILES:{svg:!0,html:!0},ALLOWED_TAGS:["svg","path","circle","rect","line","polyline","polygon","g","main","div","h1","h2","h3","h4","h5","h6","p","button","span","a","img","input","ul","li","i"],ALLOWED_ATTR:["class","id","href","src","alt","fill","stroke","stroke-width","viewBox","xmlns","d","x","y","cx","cy","r","width","height","data-onclick","data-onchange","data-onselect","data-classlist","data-hover"],FORBID_TAGS:["script","iframe","foreignObject"],FORBID_ATTR:["style","xlink:href"],ALLOWED_URI_REGEXP:/^(?:(?:https?|mailto|tel|ftp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,...r};D.addHook("uponSanitizeElement",(i,c)=>{let l=c.tagName.toLowerCase();l.includes("-")&&(c.allowedTags[l]=!0),l==="foreignobject"&&(c.allowedTags[l]=!1)}),D.addHook("uponSanitizeAttribute",(i,c)=>{let l=(c.attrName||"").toLowerCase(),u=(c.attrValue??"").toString().trim();if(l.startsWith("on")){c.keepAttr=!1;return}if(i.nodeName.toLowerCase()==="img"&&l==="src"){/^https?:\/\//i.test(u)||/^\/(?!\/)/.test(u)||/^data:image\/(png|jpeg|jpg|gif|webp);base64,/i.test(u)||(c.keepAttr=!1);return}if(l==="class"){let p=u.split(/\s+/).filter(Boolean).filter(E=>{if(!E.includes("["))return/^[a-zA-Z0-9\-\:\/_]+$/.test(E);if(/^bg-\[url\((['"]?)(https?:\/\/|\/)[^\s)]+\1\)\]$/.test(E)){let y=E.match(/^bg-\[url\((['"]?)(https?:\/\/|\/)([^\s)]+)\1\)\]$/);if(!y)return!1;let A=y[2]+y[3];return/^https?:\/\//i.test(A)||/^\/(?!\/)/.test(A)}return!!/^bg-\[#([0-9A-Fa-f]{3,8})\]$/.test(E)});c.attrValue=p.join(" ");return}if(l==="data-classlist"){/^[a-zA-Z0-9\-\s:_]+$/.test(u)||(c.keepAttr=!1);return}if(l==="data-hover"){/^[a-zA-Z0-9_-]+$/.test(u)||(c.keepAttr=!1);return}});let s=D.sanitize(e,{...o,RETURN_DOM:!0});t.innerHTML="",t.appendChild(s);let a=(i,c,l)=>{t.querySelectorAll(i).forEach(f=>{let u=f.dataset[c];u&&Object.prototype.hasOwnProperty.call(n,u)&&f.addEventListener(l,n[u])})};a("[data-onclick]","onclick","click"),a("[data-onchange]","onchange","change"),a("[data-onselect]","onselect","select"),a("[data-hover]","hover","mouseenter"),t.querySelectorAll("[data-hover]").forEach(i=>{let c=i.dataset.hover;c&&Object.prototype.hasOwnProperty.call(n,c)&&(i.addEventListener("mouseenter",n[c]),i.addEventListener("mouseleave",n[c]))}),t.querySelectorAll("[data-classlist]").forEach(i=>{let c=i.dataset.classlist;/^[a-zA-Z0-9\-\s:_]+$/.test(c)&&i.classList.add(...c.split(/\s+/))})};import ge from"dompurify";var b=null,B=(t,e)=>{if(typeof document>"u")return;let n=document.getElementById(t);if(!n)return;let r=n.innerHTML,s=ge.sanitize(r,{USE_PROFILES:{html:!0},ALLOWED_TAGS:["div","span","p","h1","h2","h3","h4","h5","h6","ul","ol","li","strong","em","a","img","br"],ALLOWED_ATTR:["href","src","alt","title","class","id","data-onclick","data-onchange"],FORBID_TAGS:["script","iframe","object","embed","form"],FORBID_ATTR:["style","srcset"],ALLOW_DATA_ATTR:!1,KEEP_CONTENT:!1}).replace(/\b(href|src)=["']?([^"'>\s]+)/gi,(a,i,c)=>/^https?:\/\//i.test(c)||/^mailto:/i.test(c)||/^tel:/i.test(c)||/^\/(?!\/)/.test(c)||/^#/.test(c)||/^data:image\/(png|jpeg|jpg|gif|webp);base64,/i.test(c)?`${i}="${c}"`:`${i}="#"`);if(b!==null&&s!==b){let a=document.createElement("div");e(a),n.innerHTML=b}else b=s,n.innerHTML=s,e(n)};import W from"dompurify";typeof window<"u"&&!window.__anchorSinglePopstateHandlerAttached&&(window.addEventListener("popstate",t=>{let e=t.state;e?.scrollPosition!==void 0&&window.scrollTo(0,e.scrollPosition)}),window.__anchorSinglePopstateHandlerAttached=!0);var G=(t,e,n,r="",o=null)=>{if(!t)return;let s=W.sanitize(e,{ALLOWED_URI_REGEXP:/^(https?:|\/)/}),a=W.sanitize(n,{USE_PROFILES:{html:!1}});t.setAttribute("href",s),t.setAttribute("aria-label",a),r&&(t.className=r.trim()),o&&t.replaceChildren(o),typeof window<"u"&&t.addEventListener("click",i=>{i.preventDefault();let l=i.currentTarget.getAttribute("href");if(l){let f=window.scrollY;window.scrollTo(0,0),window.history.pushState({scrollPosition:f},"",l),dispatchEvent(new PopStateEvent("popstate"))}})};import R from"dompurify";var Q=(t="'self' 'nonce-rAnd0m123' 'unsafe-inline' 'unsafe-eval'",e="'self' 'nonce-rAnd0m123'",n="'none'",r="'self' https://fonts.googleapis.com https://fonts.gstatic.com",o="'self' https://blogger.googleusercontent.com",s=["'self'","https://fonts.googleapis.com","https://fonts.gstatic.com","https://www.google.com/maps/"],a="'self' https://www.youtube.com",i="'self'",c="/csp-report",l=!1)=>{let f=()=>{try{let u=document.querySelector('meta[http-equiv="Content-Security-Policy"]');u||(u=document.createElement("meta"),u.setAttribute("http-equiv","Content-Security-Policy"),document.head.appendChild(u));let v=l?`report-uri ${c};`:"";u.setAttribute("content",`default-src 'self'; script-src ${t}; style-src ${e}; object-src ${n}; font-src ${r}; img-src ${o}; connect-src ${s.join(" ")}; frame-src ${a}; base-uri ${i}; ${v}`)}catch(u){console.error("Error adding CSP meta element:",u)}};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",f):f()};var V=(t,e)=>{let n={name:R.sanitize(t.name||""),description:R.sanitize(t.description||"Default description"),author:R.sanitize(t.author||"")},r=p=>{n.name=R.sanitize(p),u("name",n.name)},o=p=>{n.description=R.sanitize(p),u("description",n.description)},s=p=>{n.author=R.sanitize(p),u("author",n.author)},a=()=>n.name,i=()=>n.description,c=()=>n.author,l=()=>n,f=(p,E)=>{let y=document.createElement("meta");y.setAttribute("name",p),y.setAttribute("content",E),document.head.appendChild(y)},u=(p,E)=>{let y=document.querySelector(`meta[name="${p}"]`);y?y.setAttribute("content",E):f(p,E)},v=()=>{u("name",n.name),u("description",n.description),u("author",n.author)};return e&&Q(e.scriptSrc,e.styleSrc,e.objectSrc,Array.isArray(e.connectSrc)?e.connectSrc.join(" "):e.connectSrc,e.reportOnly!==void 0?String(e.reportOnly):void 0),v(),{setName:r,setDescription:o,setAuthor:s,getName:a,getDescription:i,getAuthor:c,getAllMetaData:l,appendMetaTagsToHead:v}};import Te from"dompurify";var O=(t,e,n,r,o)=>{let s=`#${t}`,a=e.querySelectorAll(s);if(a.length===0)throw new Error(`[useTSComponent] No element found with id '${t}' in the given parent.`);if(a.length>1)throw new Error(`[useTSComponent] Duplicate id '${t}' detected. Found ${a.length} elements.`);let i=a[0];i.innerHTML=Te.sanitize(i.innerHTML,{USE_PROFILES:{html:!0}}),n(i,r,o)};var Z=(t,e,n,r=[])=>{let o=new Set;t.forEach((s,a)=>{if(o.has(s)){console.warn(`[useTSCollection] Duplicate ID in collection array: "${s}" \u2014 skipping.`);return}o.add(s);let i=e.querySelectorAll(`#${s}`);if(i.length>1){console.warn(`[useTSCollection] Duplicate ID in DOM: "${s}" (${i.length} elements found) \u2014 skipping component mount.`);return}let c=n[a],l=Array.isArray(r)?r[a]:void 0;typeof c=="function"?O(s,e,c,l):console.warn(`[useTSCollection] No valid component function found for ID: "${s}"`)})};var P=(t,e)=>{let r=(e??document).querySelectorAll(t);if(r.length===0)return process.env.NODE_ENV!=="production"&&console.warn(`[useTSSelect] No element found for selector: '${t}'`),null;if(t.startsWith("#")&&r.length>1){if(process.env.NODE_ENV!=="production")throw new Error(`[useTSSelect] Duplicate ID detected: '${t}'. Found ${r.length} elements with this ID.`);return r[0]}return r.length>1&&process.env.NODE_ENV!=="production"&&console.warn(`[useTSSelect] Multiple elements found for selector: '${t}'. Returning the first one.`),r[0]};import{jwtDecode as Se}from"jwt-decode";var J=(t,e)=>{let n=localStorage.getItem("token");if(!n)return window.location.href=e,null;try{let r=Se(n),o=Date.now()/1e3;return r.exp&&r.exp<o&&(console.error("Token has expired"),window.localStorage.removeItem("token"),window.location.href=e),null}catch(r){return console.error("Invalid token:",r),window.location.href=e,null}};var H=(t,e,n)=>{t.forEach(r=>{e.forEach(o=>{r.addEventListener(o,s=>{n(r,s)})})})};var X=()=>({back:()=>window.history.back(),forward:()=>window.history.forward()});var Y=(t,e)=>{let n=document.querySelector(`#${t}`)||document.querySelector(`.${t}`);if(!n)return;let r=window.location.pathname.replace(/\/$/,"");for(let o of e){let s=o.path.replace(/\/$/,"");if(r===s||r.startsWith(`${s}/`)){o.component(n);break}}};function K(t,e){let n=window.location.pathname.replace(/\/$/,"");e.routes.forEach(r=>{r.children?.length&&r.children.forEach(o=>{let s=o.path.replace(/\/$/,"");if(n===s||n.startsWith(`${s}/`)){let a=t.querySelector(`#${o.outlet}`)||t.querySelector(`.${o.outlet}`);a instanceof HTMLElement&&o.element&&o.element(a)}})})}import{createStore as Ee}from"zustand/vanilla";function ee(t){let e=Ee(()=>({value:t})),n=new Set;return{get:()=>e.getState().value,set:r=>{e.setState({value:r}),n.forEach(o=>o(r))},subscribe:r=>(n.add(r),r(e.getState().value),()=>n.delete(r))}}function te(t){let e=t();typeof e=="function"&&e()}var ne=async()=>{let t="https://cdn.jsdelivr.net/npm/brython@3/brython.min.js",e="https://cdn.jsdelivr.net/npm/brython@3/brython_stdlib.js",n=r=>new Promise((o,s)=>{let a=document.createElement("script");a.src=r,a.onload=()=>o(),a.onerror=()=>s(new Error(`Failed to load ${r}`)),document.head.appendChild(a)});await n(t),await n(e),typeof window.brython=="function"?window.brython():console.error("Brython did not load correctly.")},re=t=>new Promise((e,n)=>{let r=document.createElement("script");r.type="text/python",r.src=`/src/python/${t}`,r.onload=()=>e(),r.onerror=()=>n(new Error(`Failed to load ${t}`)),document.body.appendChild(r)});function oe(t){let e=null;return async(n,r)=>{try{if(!e){let o=await t();e=o.default||o}if(typeof e=="function")return e(n,r);if(e instanceof HTMLElement){n?.appendChild(e);return}if(e&&typeof e.render=="function")return e.render(n,r);console.warn("useTSLazy: Unsupported module type",e)}catch(o){console.error("useTSLazy failed:",o)}}}var se=t=>typeof window>"u"?{isDOM:null}:{isDOM:t||document.body};import{debounce as ye}from"lodash-es";var $=t=>t;typeof window<"u"&&typeof document<"u"&&($=t=>{let e=document.createElement("div");return e.innerText=t,e.innerHTML});var ve=t=>{(t?Array.isArray(t)?t:t instanceof HTMLAnchorElement?[t]:Array.from(t):Array.from(document.querySelectorAll("a"))).forEach(n=>{if(!n||n.dataset.anchorEnhanced==="true")return;n.dataset.anchorEnhanced="true";let r=n.getAttribute("class")||"";n.setAttribute("class",$(r));let o=n.getAttribute("aria-label");o&&n.setAttribute("aria-label",$(o));let s=n.querySelector(":scope > *");s&&(n.innerHTML="",n.appendChild(s));let a=n.getAttribute("href")||"";if(!a.startsWith("#")){try{if(new URL(a,window.location.href).origin!==window.location.origin)return}catch{return}n.addEventListener("click",i=>{i.preventDefault();let c=n.getAttribute("href")||"";try{let l=new URL(c,window.location.href);window.history.pushState({},"",l.pathname+l.search+l.hash),window.dispatchEvent(new PopStateEvent("popstate"))}catch(l){console.error("Invalid URL in anchor:",c,l)}})}})},we=ye(ve,50),ie=t=>{we(t)};var ae=()=>{let t=P("a");ie(t)};import le from"dompurify";import{createStore as Le}from"zustand/vanilla";import Me from"dompurify";var M=Le(t=>({params:{},query:{},setParams:e=>t(()=>({params:ce(e)})),setQuery:e=>t(()=>({query:ce(e)}))}));function ce(t){let e={};for(let n in t)e[n]=Me.sanitize(t[n]);return e}var C=class{constructor(e,n){this.routes=[];this.routes=e,this.expectedParams=new Set(n),window.addEventListener("popstate",this.handlePopState.bind(this)),this.handlePopState()}handlePopState(){let e=window.location.pathname,n=window.location.search,r=this.parseQueryParams(n),o=this.findMatchingRoute(e,this.routes);if(o){if(o.routeto){this.navigate(o.routeto);return}let s=this.filterAndSanitizeParams(o.params);M.getState().setParams(s),M.getState().setQuery(r);let a=document.createElement("div");if(o.element?.(a,s,r),o.children){let i=e.slice(o.path.length),c=a.querySelector("#child");c&&this.renderChildren(o.children,i,c,s,r)}}else{let s=this.findMatchingRoute("*",this.routes);if(s){let a=this.filterAndSanitizeParams(s.params);M.getState().setParams(a),M.getState().setQuery(r);let i=document.createElement("div");s.element?.(i,a,r)}}}renderChildren(e,n,r,o,s){if(!e||e.length===0){let i=r.querySelector("#child");i&&i.remove();return}let a=this.findMatchingRoute(n,e);if(a){let i=document.createElement("div");i.id="child";let c={...o,...a.params},l=this.filterAndSanitizeParams(c);if(M.getState().setParams(l),M.getState().setQuery(s),a.element?.(i,l,s),r.appendChild(i),a.children){let f=n.slice(a.path.length);this.renderChildren(a.children,f,i,l,s)}}}parseQueryParams(e){let n={},r=new URLSearchParams(e);for(let[o,s]of r.entries())this.expectedParams.has(o)&&(n[o]=le.sanitize(s));return n}findMatchingRoute(e,n,r={}){for(let o of n){let s=o.path;if(s==="*")return o;{let i=[],c=s.replace(/:[^\s/]+/g,u=>(i.push(u.substring(1)),"([^\\s/]+)")),l=new RegExp(`^${c}(?:/|$)`),f=e.match(l);if(f){let u={...r};if(i.forEach((v,p)=>{u[v]=f[p+1]??""}),o.children){let v=e.slice(f[0].length),p=this.findMatchingRoute(v,o.children,u);if(p)return p}return{...o,params:u}}}}}filterAndSanitizeParams(e){if(!e)return{};let n={};for(let r in e)this.expectedParams.has(r)&&(n[r]=le.sanitize(e[r]??""));return n}navigate(e){history.pushState(null,"",e),this.handlePopState()}addRoute(e){this.routes.push(e)}};var Re=()=>({name:"ts-filebased-router",async buildStart(){if(typeof process>"u"||!process.versions?.node)return;let t=await import("fs/promises"),e=await import("path"),n=await import("./esm-KRNKVVL7.js"),r=e.resolve("src/pages"),o=e.resolve("src/gen"),s=e.resolve("src/routes"),a=e.join(o,"tsrouter.gen.ts"),i=e.join(s,"__root.ts"),c=process.env.NODE_ENV!=="production";async function l(d){try{await t.mkdir(d,{recursive:!0})}catch{}}function f(d,m){let h="/"+e.relative(m,d).replace(/\\/g,"/");return h=h.replace(/\.ts$/,"").replace(/\/index$/,"")||"/",h.replace(/\[(.+?)\]/g,":$1")}function u(d){return d.replace(/^\//,"").split("/").map(m=>m.startsWith(":")?m.slice(1):m).filter(Boolean).join("-")||"index"}function v(d,m){let T=e.relative(m,d).replace(/\\/g,"/").split("/").filter(Boolean),S=T[T.length-1].replace(".ts",""),w=T.length>1?T[T.length-2]:"";if(S.startsWith("[")&&S.endsWith("]")){let L=S.slice(1,-1);return w.charAt(0).toUpperCase()+w.slice(1)+L.charAt(0).toUpperCase()+L.slice(1)+"Param"}else return S.charAt(0).toUpperCase()+S.slice(1)}async function p(d){let m=await t.readdir(d,{withFileTypes:!0}),h=[];for(let T of m){let S=e.join(d,T.name);if(T.isDirectory())h=h.concat(await p(S));else if(T.isFile()&&T.name.endsWith(".ts")){let w=f(S,r),L=u(w),g=v(S,r);h.push({file:S,route:w,routeName:L,importName:g})}}return h}function E(d,m){let h=m.includes(":"),T=h?m.match(/:([^/]+)/)?.[1]:null;return`import { html, useTSElements, useTSMetaData${h?", useTSExtractParams":""} } from '@devwareng/vanilla-ts';
|
|
1
|
+
function ue(t){let e=t==null?"":String(t),n=e.toLowerCase();return(n.includes("<script")||n.includes("javascript:"))&&(e=""),e.replace(/<\s*(script|iframe|object|embed|link|style|meta)[^>]*>.*?<\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(t,...e){return t.reduce((n,r,o)=>{let s=o<e.length?ue(e[o]):"";return n+r+s},"")}var me=t=>t.replace(/<\/?(script|iframe|object|embed|link|meta|style|form|input|button|textarea|svg|math)[^>]*>/gi,"").replace(/<(?!\/?(b|i|em|strong|p|br|ul|ol|li|a)\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(),de=t=>t?.map(e=>me(e)).join("")??"";import F from"dompurify";var _=(t,e)=>{let r={...{ADD_TAGS:["my-custom-tag"]},...e};return typeof t=="string"?F.sanitize(t,r):F.sanitize(t.innerHTML,r)};var I=(t,e,n)=>{if(typeof t=="string"){let r=document.getElementById(t);r?r.addEventListener(e,n):console.warn(`Element with id '${t}' not found.`)}else t===document?document.addEventListener(e,n):console.warn("Invalid id parameter provided.")};import{createStore as pe}from"zustand/vanilla";import z from"dompurify";function fe(t,e){let n=[],r=t.replace(/:[^/]+/g,i=>(n.push(i.slice(1)),"([^/]+)")),o=new RegExp(`^${r}$`),s=e.match(o),a={};return s&&n.forEach((i,c)=>{a[i]=z.sanitize(s[c+1]??"")}),a}function ge(t){let e={},n=new URLSearchParams(t);for(let[r,o]of n.entries())e[r]=z.sanitize(o);return e}var x=pe((t,e)=>({params:{},query:{},setFromPattern:n=>{let r=window.location.pathname,o=fe(n,r),s=ge(window.location.search);t({params:o,query:s})},getParam:n=>e().params[n],getQuery:n=>e().query[n]}));function q(t){let e=x.getState();e.setFromPattern(t);let n=e.params,r=e.query;return{...n,...r}}var j=(t,e,n)=>{let r=document.querySelectorAll(t);return r.forEach(o=>{o.addEventListener(e,n)}),()=>{r.forEach(o=>{o.removeEventListener(e,n)})}};import D from"dompurify";var U=(t,e,n={},r)=>{let o={USE_PROFILES:{svg:!0,html:!0},ALLOWED_TAGS:["svg","path","circle","rect","line","polyline","polygon","g","main","div","h1","h2","h3","h4","h5","h6","p","button","span","a","img","input","ul","li","i"],ALLOWED_ATTR:["class","id","href","src","alt","fill","stroke","stroke-width","viewBox","xmlns","d","x","y","cx","cy","r","width","height","data-onclick","data-onchange","data-onselect","data-classlist","data-hover"],FORBID_TAGS:["script","iframe","foreignObject"],FORBID_ATTR:["style","xlink:href"],ALLOWED_URI_REGEXP:/^(?:(?:https?|mailto|tel|ftp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,...r};D.addHook("uponSanitizeElement",(i,c)=>{let l=c.tagName.toLowerCase();l.includes("-")&&(c.allowedTags[l]=!0),l==="foreignobject"&&(c.allowedTags[l]=!1)}),D.addHook("uponSanitizeAttribute",(i,c)=>{let l=(c.attrName||"").toLowerCase(),u=(c.attrValue??"").toString().trim();if(l.startsWith("on")){c.keepAttr=!1;return}if(i.nodeName.toLowerCase()==="img"&&l==="src"){/^https?:\/\//i.test(u)||/^\/(?!\/)/.test(u)||/^data:image\/(png|jpeg|jpg|gif|webp);base64,/i.test(u)||(c.keepAttr=!1);return}if(l==="class"){let d=u.split(/\s+/).filter(Boolean).filter(E=>{if(!E.includes("["))return/^[a-zA-Z0-9\-\:\/_]+$/.test(E);if(/^bg-\[url\((['"]?)(https?:\/\/|\/)[^\s)]+\1\)\]$/.test(E)){let y=E.match(/^bg-\[url\((['"]?)(https?:\/\/|\/)([^\s)]+)\1\)\]$/);if(!y)return!1;let M=y[2]+y[3];return/^https?:\/\//i.test(M)||/^\/(?!\/)/.test(M)}return!!/^bg-\[#([0-9A-Fa-f]{3,8})\]$/.test(E)});c.attrValue=d.join(" ");return}if(l==="data-classlist"){/^[a-zA-Z0-9\-\s:_]+$/.test(u)||(c.keepAttr=!1);return}if(l==="data-hover"){/^[a-zA-Z0-9_-]+$/.test(u)||(c.keepAttr=!1);return}});let s=D.sanitize(e,{...o,RETURN_DOM:!0});t.innerHTML="",t.appendChild(s);let a=(i,c,l)=>{t.querySelectorAll(i).forEach(g=>{let u=g.dataset[c];u&&Object.prototype.hasOwnProperty.call(n,u)&&g.addEventListener(l,n[u])})};a("[data-onclick]","onclick","click"),a("[data-onchange]","onchange","change"),a("[data-onselect]","onselect","select"),a("[data-hover]","hover","mouseenter"),t.querySelectorAll("[data-hover]").forEach(i=>{let c=i.dataset.hover;c&&Object.prototype.hasOwnProperty.call(n,c)&&(i.addEventListener("mouseenter",n[c]),i.addEventListener("mouseleave",n[c]))}),t.querySelectorAll("[data-classlist]").forEach(i=>{let c=i.dataset.classlist;/^[a-zA-Z0-9\-\s:_]+$/.test(c)&&i.classList.add(...c.split(/\s+/))})};import he from"dompurify";var b=null,B=(t,e)=>{if(typeof document>"u")return;let n=document.getElementById(t);if(!n)return;let r=n.innerHTML,s=he.sanitize(r,{USE_PROFILES:{html:!0},ALLOWED_TAGS:["div","span","p","h1","h2","h3","h4","h5","h6","ul","ol","li","strong","em","a","img","br"],ALLOWED_ATTR:["href","src","alt","title","class","id","data-onclick","data-onchange"],FORBID_TAGS:["script","iframe","object","embed","form"],FORBID_ATTR:["style","srcset"],ALLOW_DATA_ATTR:!1,KEEP_CONTENT:!1}).replace(/\b(href|src)=["']?([^"'>\s]+)/gi,(a,i,c)=>/^https?:\/\//i.test(c)||/^mailto:/i.test(c)||/^tel:/i.test(c)||/^\/(?!\/)/.test(c)||/^#/.test(c)||/^data:image\/(png|jpeg|jpg|gif|webp);base64,/i.test(c)?`${i}="${c}"`:`${i}="#"`);if(b!==null&&s!==b){let a=document.createElement("div");e(a),n.innerHTML=b}else b=s,n.innerHTML=s,e(n)};import W from"dompurify";typeof window<"u"&&!window.__anchorSinglePopstateHandlerAttached&&(window.addEventListener("popstate",t=>{let e=t.state;e?.scrollPosition!==void 0&&window.scrollTo(0,e.scrollPosition)}),window.__anchorSinglePopstateHandlerAttached=!0);var G=(t,e,n,r="",o=null)=>{if(!t)return;let s=W.sanitize(e,{ALLOWED_URI_REGEXP:/^(https?:|\/)/}),a=W.sanitize(n,{USE_PROFILES:{html:!1}});t.setAttribute("href",s),t.setAttribute("aria-label",a),r&&(t.className=r.trim()),o&&t.replaceChildren(o),typeof window<"u"&&t.addEventListener("click",i=>{i.preventDefault();let l=i.currentTarget.getAttribute("href");if(l){let g=window.scrollY;window.scrollTo(0,0),window.history.pushState({scrollPosition:g},"",l),dispatchEvent(new PopStateEvent("popstate"))}})};import A from"dompurify";var Q=(t="'self' 'nonce-rAnd0m123' 'unsafe-inline' 'unsafe-eval'",e="'self' 'nonce-rAnd0m123'",n="'none'",r="'self' https://fonts.googleapis.com https://fonts.gstatic.com",o="'self' https://blogger.googleusercontent.com",s=["'self'","https://fonts.googleapis.com","https://fonts.gstatic.com","https://www.google.com/maps/"],a="'self' https://www.youtube.com",i="'self'",c="/csp-report",l=!1)=>{let g=()=>{try{let u=document.querySelector('meta[http-equiv="Content-Security-Policy"]');u||(u=document.createElement("meta"),u.setAttribute("http-equiv","Content-Security-Policy"),document.head.appendChild(u));let w=l?`report-uri ${c};`:"";u.setAttribute("content",`default-src 'self'; script-src ${t}; style-src ${e}; object-src ${n}; font-src ${r}; img-src ${o}; connect-src ${s.join(" ")}; frame-src ${a}; base-uri ${i}; ${w}`)}catch(u){console.error("Error adding CSP meta element:",u)}};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",g):g()};var V=(t,e)=>{let n={name:A.sanitize(t.name||""),description:A.sanitize(t.description||"Default description"),author:A.sanitize(t.author||"")},r=d=>{n.name=A.sanitize(d),u("name",n.name)},o=d=>{n.description=A.sanitize(d),u("description",n.description)},s=d=>{n.author=A.sanitize(d),u("author",n.author)},a=()=>n.name,i=()=>n.description,c=()=>n.author,l=()=>n,g=(d,E)=>{let y=document.createElement("meta");y.setAttribute("name",d),y.setAttribute("content",E),document.head.appendChild(y)},u=(d,E)=>{let y=document.querySelector(`meta[name="${d}"]`);y?y.setAttribute("content",E):g(d,E)},w=()=>{u("name",n.name),u("description",n.description),u("author",n.author)};return e&&Q(e.scriptSrc,e.styleSrc,e.objectSrc,Array.isArray(e.connectSrc)?e.connectSrc.join(" "):e.connectSrc,e.reportOnly!==void 0?String(e.reportOnly):void 0),w(),{setName:r,setDescription:o,setAuthor:s,getName:a,getDescription:i,getAuthor:c,getAllMetaData:l,appendMetaTagsToHead:w}};import Te from"dompurify";var O=(t,e,n,r,o)=>{let s=`#${t}`,a=e.querySelectorAll(s);if(a.length===0)throw new Error(`[useTSComponent] No element found with id '${t}' in the given parent.`);if(a.length>1)throw new Error(`[useTSComponent] Duplicate id '${t}' detected. Found ${a.length} elements.`);let i=a[0];i.innerHTML=Te.sanitize(i.innerHTML,{USE_PROFILES:{html:!0}}),n(i,r,o)};var Z=(t,e,n,r=[])=>{let o=new Set;t.forEach((s,a)=>{if(o.has(s)){console.warn(`[useTSCollection] Duplicate ID in collection array: "${s}" \u2014 skipping.`);return}o.add(s);let i=e.querySelectorAll(`#${s}`);if(i.length>1){console.warn(`[useTSCollection] Duplicate ID in DOM: "${s}" (${i.length} elements found) \u2014 skipping component mount.`);return}let c=n[a],l=Array.isArray(r)?r[a]:void 0;typeof c=="function"?O(s,e,c,l):console.warn(`[useTSCollection] No valid component function found for ID: "${s}"`)})};var P=(t,e)=>{let r=(e??document).querySelectorAll(t);if(r.length===0)return process.env.NODE_ENV!=="production"&&console.warn(`[useTSSelect] No element found for selector: '${t}'`),null;if(t.startsWith("#")&&r.length>1){if(process.env.NODE_ENV!=="production")throw new Error(`[useTSSelect] Duplicate ID detected: '${t}'. Found ${r.length} elements with this ID.`);return r[0]}return r.length>1&&process.env.NODE_ENV!=="production"&&console.warn(`[useTSSelect] Multiple elements found for selector: '${t}'. Returning the first one.`),r[0]};import{jwtDecode as Se}from"jwt-decode";var J=(t,e)=>{let n=localStorage.getItem("token");if(!n)return window.location.href=e,null;try{let r=Se(n),o=Date.now()/1e3;return r.exp&&r.exp<o&&(console.error("Token has expired"),window.localStorage.removeItem("token"),window.location.href=e),null}catch(r){return console.error("Invalid token:",r),window.location.href=e,null}};var H=(t,e,n)=>{t.forEach(r=>{e.forEach(o=>{r.addEventListener(o,s=>{n(r,s)})})})};var X=()=>({back:()=>window.history.back(),forward:()=>window.history.forward()});var Y=(t,e)=>{let n=document.querySelector(`#${t}`)||document.querySelector(`.${t}`);if(!n)return;let r=window.location.pathname.replace(/\/$/,"");for(let o of e){let s=o.path.replace(/\/$/,"");if(r===s||r.startsWith(`${s}/`)){o.component(n);break}}};function K(t,e){let n=window.location.pathname.replace(/\/$/,"");e.routes.forEach(r=>{r.children?.length&&r.children.forEach(o=>{let s=o.path.replace(/\/$/,"");if(n===s||n.startsWith(`${s}/`)){let a=t.querySelector(`#${o.outlet}`)||t.querySelector(`.${o.outlet}`);a instanceof HTMLElement&&o.element&&o.element(a)}})})}import{createStore as Ee}from"zustand/vanilla";function ee(t){let e=Ee(()=>({value:t})),n=new Set;return{get:()=>e.getState().value,set:r=>{e.setState({value:r}),n.forEach(o=>o(r))},subscribe:r=>(n.add(r),r(e.getState().value),()=>n.delete(r))}}function te(t){let e=t();typeof e=="function"&&e()}var ne=async()=>{let t="https://cdn.jsdelivr.net/npm/brython@3/brython.min.js",e="https://cdn.jsdelivr.net/npm/brython@3/brython_stdlib.js",n=r=>new Promise((o,s)=>{let a=document.createElement("script");a.src=r,a.onload=()=>o(),a.onerror=()=>s(new Error(`Failed to load ${r}`)),document.head.appendChild(a)});await n(t),await n(e),typeof window.brython=="function"?window.brython():console.error("Brython did not load correctly.")},re=t=>new Promise((e,n)=>{let r=document.createElement("script");r.type="text/python",r.src=`/src/python/${t}`,r.onload=()=>e(),r.onerror=()=>n(new Error(`Failed to load ${t}`)),document.body.appendChild(r)});function oe(t){let e=null;return async(n,r)=>{try{if(!e){let o=await t();e=o.default||o}if(typeof e=="function")return e(n,r);if(e instanceof HTMLElement){n?.appendChild(e);return}if(e&&typeof e.render=="function")return e.render(n,r);console.warn("useTSLazy: Unsupported module type",e)}catch(o){console.error("useTSLazy failed:",o)}}}var se=t=>typeof window>"u"?{isDOM:null}:{isDOM:t||document.body};import{debounce as ye}from"lodash-es";var $=t=>t;typeof window<"u"&&typeof document<"u"&&($=t=>{let e=document.createElement("div");return e.innerText=t,e.innerHTML});var we=t=>{(t?Array.isArray(t)?t:t instanceof HTMLAnchorElement?[t]:Array.from(t):Array.from(document.querySelectorAll("a"))).forEach(n=>{if(!n||n.dataset.anchorEnhanced==="true")return;n.dataset.anchorEnhanced="true";let r=n.getAttribute("class")||"";n.setAttribute("class",$(r));let o=n.getAttribute("aria-label");o&&n.setAttribute("aria-label",$(o));let s=n.querySelector(":scope > *");s&&(n.innerHTML="",n.appendChild(s));let a=n.getAttribute("href")||"";if(!a.startsWith("#")){try{if(new URL(a,window.location.href).origin!==window.location.origin)return}catch{return}n.addEventListener("click",i=>{i.preventDefault();let c=n.getAttribute("href")||"";try{let l=new URL(c,window.location.href);window.history.pushState({},"",l.pathname+l.search+l.hash),window.dispatchEvent(new PopStateEvent("popstate"))}catch(l){console.error("Invalid URL in anchor:",c,l)}})}})},ve=ye(we,50),ie=t=>{ve(t)};var ae=t=>{let e=P("a",t);ie(e)};import le from"dompurify";import{createStore as Le}from"zustand/vanilla";import Me from"dompurify";var L=Le(t=>({params:{},query:{},setParams:e=>t(()=>({params:ce(e)})),setQuery:e=>t(()=>({query:ce(e)}))}));function ce(t){let e={};for(let n in t)e[n]=Me.sanitize(t[n]);return e}var C=class{constructor(e,n){this.routes=[];this.routes=e,this.expectedParams=new Set(n),window.addEventListener("popstate",this.handlePopState.bind(this)),this.handlePopState()}handlePopState(){let e=window.location.pathname,n=window.location.search,r=this.parseQueryParams(n),o=this.findMatchingRoute(e,this.routes);if(o){if(o.routeto){this.navigate(o.routeto);return}let s=this.filterAndSanitizeParams(o.params);L.getState().setParams(s),L.getState().setQuery(r);let a=document.createElement("div");if(o.element?.(a,s,r),o.children){let i=e.slice(o.path.length),c=a.querySelector("#child");c&&this.renderChildren(o.children,i,c,s,r)}}else{let s=this.findMatchingRoute("*",this.routes);if(s){let a=this.filterAndSanitizeParams(s.params);L.getState().setParams(a),L.getState().setQuery(r);let i=document.createElement("div");s.element?.(i,a,r)}}}renderChildren(e,n,r,o,s){if(!e||e.length===0){let i=r.querySelector("#child");i&&i.remove();return}let a=this.findMatchingRoute(n,e);if(a){let i=document.createElement("div");i.id="child";let c={...o,...a.params},l=this.filterAndSanitizeParams(c);if(L.getState().setParams(l),L.getState().setQuery(s),a.element?.(i,l,s),r.appendChild(i),a.children){let g=n.slice(a.path.length);this.renderChildren(a.children,g,i,l,s)}}}parseQueryParams(e){let n={},r=new URLSearchParams(e);for(let[o,s]of r.entries())this.expectedParams.has(o)&&(n[o]=le.sanitize(s));return n}findMatchingRoute(e,n,r={}){for(let o of n){let s=o.path;if(s==="*")return o;{let i=[],c=s.replace(/:[^\s/]+/g,u=>(i.push(u.substring(1)),"([^\\s/]+)")),l=new RegExp(`^${c}(?:/|$)`),g=e.match(l);if(g){let u={...r};if(i.forEach((w,d)=>{u[w]=g[d+1]??""}),o.children){let w=e.slice(g[0].length),d=this.findMatchingRoute(w,o.children,u);if(d)return d}return{...o,params:u}}}}}filterAndSanitizeParams(e){if(!e)return{};let n={};for(let r in e)this.expectedParams.has(r)&&(n[r]=le.sanitize(e[r]??""));return n}navigate(e){history.pushState(null,"",e),this.handlePopState()}addRoute(e){this.routes.push(e)}};var Re=()=>({name:"ts-filebased-router",async buildStart(){if(typeof process>"u"||!process.versions?.node)return;let t=await import("fs/promises"),e=await import("path"),n=await import("./esm-KRNKVVL7.js"),r=e.resolve("src/pages"),o=e.resolve("src/gen"),s=e.resolve("src/routes"),a=e.join(o,"tsrouter.gen.ts"),i=e.join(s,"__root.ts"),c=process.env.NODE_ENV!=="production";async function l(p){try{await t.mkdir(p,{recursive:!0})}catch{}}function g(p,f){let m="/"+e.relative(f,p).replace(/\\/g,"/");return m=m.replace(/\.ts$/,"").replace(/\/index$/,"")||"/",m.replace(/\[(.+?)\]/g,":$1")}function u(p){return p.replace(/^\//,"").split("/").map(f=>f.startsWith(":")?f.slice(1):f).filter(Boolean).join("-")||"index"}function w(p,f){let T=e.relative(f,p).replace(/\\/g,"/").split("/").filter(Boolean),S=T[T.length-1].replace(".ts",""),v=T.length>1?T[T.length-2]:"";if(S.startsWith("[")&&S.endsWith("]")){let R=S.slice(1,-1);return v.charAt(0).toUpperCase()+v.slice(1)+R.charAt(0).toUpperCase()+R.slice(1)+"Param"}else return S.charAt(0).toUpperCase()+S.slice(1)}async function d(p){let f=await t.readdir(p,{withFileTypes:!0}),m=[];for(let T of f){let S=e.join(p,T.name);if(T.isDirectory())m=m.concat(await d(S));else if(T.isFile()&&T.name.endsWith(".ts")){let v=g(S,r),R=u(v),h=w(S,r);m.push({file:S,route:v,routeName:R,importName:h})}}return m}function E(p,f){let m=f.includes(":"),T=m?f.match(/:([^/]+)/)?.[1]:null;return`import { html, useTSElements, useTSMetaData${m?", useTSExtractParams":""} } from '@devwareng/vanilla-ts';
|
|
2
2
|
|
|
3
|
-
export default function ${
|
|
3
|
+
export default function ${p}(DOM: HTMLElement) {
|
|
4
4
|
useTSMetaData({
|
|
5
|
-
name: '${
|
|
5
|
+
name: '${p.toLowerCase()}',
|
|
6
6
|
description: '',
|
|
7
7
|
author: ''
|
|
8
8
|
});
|
|
9
9
|
|
|
10
|
-
${
|
|
10
|
+
${m?`const params = useTSExtractParams("${f}");
|
|
11
11
|
if (!params.${T}) return;`:""}
|
|
12
12
|
const ui = useTSElements(
|
|
13
13
|
DOM,
|
|
14
14
|
html\`
|
|
15
|
-
<div class="p-4">
|
|
16
|
-
<h1>${
|
|
17
|
-
${
|
|
15
|
+
<div class="p-4 animate__animated animate__fadeIn duration-300">
|
|
16
|
+
<h1>${p}</h1>
|
|
17
|
+
${m?"<pre>${JSON.stringify(params, null, 2)}</pre>":""}
|
|
18
18
|
</div>
|
|
19
19
|
\`
|
|
20
20
|
);
|
|
@@ -31,14 +31,14 @@ export const Router = (DOM: HTMLElement) => {
|
|
|
31
31
|
window.addEventListener("popstate", () => {
|
|
32
32
|
router.navigate(window.location.pathname);
|
|
33
33
|
});
|
|
34
|
-
};`}async function
|
|
35
|
-
`),S=
|
|
36
|
-
`),
|
|
34
|
+
};`}async function M(){let p=await d(r),f=p.find(h=>h.route==="/notfound"),m=p.filter(h=>h.route!=="/notfound");for(let h of p)(await t.readFile(h.file,"utf-8")).trim()||await t.writeFile(h.file,E(h.importName,h.route),"utf-8");let T=p.map(h=>{let N="../pages/"+e.relative(r,h.file).replace(/\\/g,"/").replace(/\.ts$/,"");return`import ${h.importName} from "${N}";`}).join(`
|
|
35
|
+
`),S=m.map(h=>`{ path: "${h.route}", name: "${h.routeName}", component: (DOM: HTMLElement) => ${h.importName}(DOM) }`).join(`,
|
|
36
|
+
`),v=f?`export const NotFound = ${f.importName}`:'export function NotFound(DOM: HTMLElement) {\n return useTSElements(DOM, html`<div class="animate__animated animate__fadeIn duration-300 p-4"><h1>404 - Page Not Found</h1></div>`)\n}',R=`// AUTO-GENERATED FILE. DO NOT EDIT MANUALLY.
|
|
37
37
|
import { html, useTSElements } from "@devwareng/vanilla-ts"
|
|
38
38
|
|
|
39
39
|
${T}
|
|
40
40
|
|
|
41
|
-
${
|
|
41
|
+
${v}
|
|
42
42
|
|
|
43
43
|
export function RootDocument(DOM: HTMLElement) {
|
|
44
44
|
return useTSElements(DOM, html\`<div><h1>Root</h1></div>\`)
|
|
@@ -83,4 +83,4 @@ export function createRouter(DOM: HTMLElement) {
|
|
|
83
83
|
navigate(window.location.pathname + window.location.search)
|
|
84
84
|
return { navigate, routes: routeTree }
|
|
85
85
|
}
|
|
86
|
-
`;await l(o),await t.writeFile(a,
|
|
86
|
+
`;await l(o),await t.writeFile(a,R,"utf-8"),await t.writeFile(i,y(),"utf-8")}await l(o),await l(s),await l(r),await M(),c&&(n.watch(r).on("all",async(f,m)=>{if(m.endsWith(".ts"))if(f==="add"){let S=e.basename(m,".ts").replace(/\[|\]/g,"Param").replace(/(^\w|-\w)/g,h=>h.replace("-","").toUpperCase()),v=g(m,r);(await t.readFile(m,"utf-8")).trim()||await t.writeFile(m,E(S,v),"utf-8"),await M()}else f==="unlink"?(console.log(`\u26A0\uFE0F File removed: ${m}`),await M()):f==="change"&&await M()}),n.watch(i).on("unlink",async()=>{console.log("\u26A0\uFE0F Root file removed: regenerating..."),await t.writeFile(i,y(),"utf-8")})),console.log("\u{1F7E2} TS Filebased Router Generated Successfully...")}});export{Re as TSFilebasedRouter,C as TSRouter,te as createEffect,ee as createSignal,k as html,re as loadPyFiles,de as mapper,K as renderChildRoutes,G as useAnchorSingle,B as useInitialDOM,J as useTSAuth,Z as useTSCollection,O as useTSComponent,H as useTSElementEach,U as useTSElements,I as useTSEvent,j as useTSEventAll,q as useTSExtractParams,oe as useTSLazy,V as useTSMetaData,X as useTSNavigate,ae as useTSNoReload,Y as useTSOutlet,x as useTSParams,_ as useTSPurifier,se as useTSSSRHydration,P as useTSSelect,ne as useTSloadBrython};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@devwareng/vanilla-ts",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.84",
|
|
4
4
|
"description": "Framework-less TypeScript hooks for SPA development.",
|
|
5
5
|
"author": "Waren Arapoc Gador",
|
|
6
6
|
"license": "MIT",
|
|
@@ -44,9 +44,10 @@
|
|
|
44
44
|
"@types/js-cookie": "^3.0.6",
|
|
45
45
|
"@types/lodash-es": "^4.17.12",
|
|
46
46
|
"@types/node": "^24.3.0",
|
|
47
|
+
"animate.css": "^4.1.1",
|
|
47
48
|
"process": "^0.11.10",
|
|
48
49
|
"tsup": "^8.5.0",
|
|
49
50
|
"tsx": "^4.20.5",
|
|
50
51
|
"typescript": "^5.3.0"
|
|
51
52
|
}
|
|
52
|
-
}
|
|
53
|
+
}
|