PageSourceSearch

https://yunkhngn.dev/_next/static/chunks/9283.7e9123eebf4e6180.js

js yunkhngn.dev collected 2026-10-02 01:03:26 UTC 2,872 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4514,9283],{67635:(e,t,r)=>{r.d(t,{A:()=>n});let n=(0,r(90425).A)("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]])},79283:(e,t,r)=>{r.r(t),r.d(t,{default:()=>d});var n=r(95155),a=r(12115),s=r(94514),l=r(67635);function o({text:e}){let[t,r]=(0,a.useState)(!1);return(0,n.jsx)("button",{onClick:function(){navigator.clipboard.writeText(e),r(!0),setTimeout(()=>r(!1),1500)},className:"p-1 rounded hover:bg-muted transition-colors",children:t?(0,n.jsx)(s.A,{size:12,className:"text-green-500"}):(0,n.jsx)(l.A,{size:12,className:"text-muted-foreground"})})}function d(){let[e,t]=(0,a.useState)(""),[r,s]=(0,a.useState)(""),[l,d]=(0,a.useState)(null),c=l?.payload?.exp,i=c?1e3*c<Date.now():null;return(0,n.jsxs)("div",{className:"space-y-4",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{className:"text-xs text-muted-foreground mb-1 block",children:"JWT Token"}),(0,n.jsx)("textarea",{value:e,onChange:e=>t(e.target.value),rows:4,placeholder:"Paste JWT token v\xe0o đ\xe2y...",className:"w-full px-3 py-2 rounded-lg border border-border bg-background text-sm font-mono focus:outline-none focus:ring-2 focus:ring-ring resize-none"})]}),(0,n.jsx)("button",{onClick:function(){try{d(function(e){let t=e.trim().split(".");if(3!==t.length)throw Error("Token kh\xf4ng hợp lệ (cần đ\xfang 3 phần)");function r(e){for(e=e.replace(/-/g,"+").replace(/_/g,"/");e.length%4;)e+="=";return JSON.parse(atob(e))}return{header:r(t[0]),payload:r(t[1])}}(e)),s("")}catch(e){s(e.message),d(null)}},disabled:!e.trim(),className:"w-full px-4 py-2 rounded-lg border border-border bg-background hover:bg-accent text-sm font-medium transition-colors disabled:opacity-40",children:"Decode"}),r&&(0,n.jsx)("p",{className:"text-sm text-red-500",children:r}),l&&(0,n.jsxs)("div",{className:"space-y-3",children:[void 0!==c&&(0,n.jsx)("div",{className:`px-3 py-2 rounded-lg text-sm font-medium ${i?"bg-red-500/10 text-red-500":"bg-green-500/10 text-green-600"}`,children:i?"❌ Token đ\xe3 hết hạn":`✅ C\xf2n hạn đến ${new Date(1e3*c).toLocaleString()}`}),[{label:"Header",data:l.header},{label:"Payload",data:l.payload}].map(({label:e,data:t})=>{let r=JSON.stringify(t,null,2);return(0,n.jsxs)("div",{className:"bg-muted/40 rounded-lg p-3",children:[(0,n.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,n.jsx)("span",{className:"text-xs font-semibold text-muted-foreground uppercase tracking-wider",children:e}),(0,n.jsx)(o,{text:r})]}),(0,n.jsx)("pre",{className:"text-xs font-mono overflow-x-auto text-foreground",children:r})]},e)})]})]})}},94514:(e,t,r)=>{r.d(t,{A:()=>n});let n=(0,r(90425).A)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]])}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.