1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,74924,e=>{"use strict";e.s(["default",0,{home:()=>"/",top:()=>"/top",tech:e=>e?`/tech/${e}`:"/tech",techNew:()=>"/tech/new",techEdit:e=>`/tech/${e}/edit`,stack:e=>e?`/stacks/${e}`:"/stacks",stackNew:()=>"/stacks/new",stackEdit:e=>`/stacks/${e}/edit`,organizations:()=>"/organizations",organization:e=>`/organizations/${e}`,organizationCategory:(e,t)=>`/${e}/${t}`,post:(e,t)=>`/posts/${e}/${t}`,postEdit:(e,t)=>`/posts/${e}/${t}/edit`,postComment:(e,t)=>`/comments/${e}/${t}`,user:e=>`/users/${e}`,authGitHub:()=>"/auth/github",authTwitter:()=>"/auth/twitter",login:()=>"/Identity/Account/Login",logout:()=>"/Identity/Account/Logout",signIn:()=>"/signin",signUp:()=>"/signup",favorites:()=>"/favorites",account:()=>"/account",news:()=>"/news",sitemap:()=>"/sitemap"}])},67743,e=>{"use strict";var t=e.i(43476);e.i(71645);var a=e.i(18566),r=e.i(55049),n=e.i(84366),i=e.i(21412);function s(){let e=(0,a.useRouter)(),t=(0,r.useAuth)();async function s(){try{let e=await n.client.post(new i.Authenticate);t.signIn(e)}catch{t.signOut()}}async function o(a){t.signOut(),await n.client.post(new i.Authenticate({provider:"logout"})),a&&e.push(a)}return{...t,revalidate:s,signOut:o}}e.s(["Redirecting",0,()=>
1(0,t.jsx)(r.Loading,{className:"py-2 pl-4",children:"redirecting ..."}),"appAuth",()=>s])},46016,e=>{"use strict";let t,a,r;var n=e.i(71645);let i=e=>{let t,a=new Set,r=(e,r)=>{let n="function"==typeof e?e(t):e;if(!Object.is(n,t)){let e=t;t=(null!=r?r:"object"!=typeof n||null===n)?n:Object.assign({},t,n),a.forEach(a=>a(t,e))}},n=()=>t,i={setState:r,getState:n,getInitialState:()=>s,subscribe:e=>(a.add(e),()=>a.delete(e))},s=t=e(r,n,i);return i},s=e=>{let t=e?i(e):i,a=e=>(function(e,t=e=>e){let a=n.default.useSyncExternalStore(e.subscribe,n.default.useCallback(()=>t(e.getState()),[e,t]),n.default.useCallback(()=>t(e.getInitialState()),[e,t]));return n.default.useDebugValue(a),a})(t,e);return Object.assign(a,t),a},o=e=>t=>{try{let a=e(t);if(a instanceof Promise)return a;return{then:e=>o(e)(a),catch(e){return this}}}catch(e){return{then(e){return this},catch:t=>o(t)(e)}}};var l=e.i(84366);let c=(t?s(t):s)((a=(e,t)=>({loading:!1,sessionInfo:null,config:null,overview:null,headerTitle:null,technologies:[],techStacks:[],posts:{},organizations:[],favoriteTechnologyIds:[],favoriteTechStackIds:[],watchedTechIds:[],watchedTechNames:{},userVotes:{},userCommentVotes:{},setLoading:t=>e({loading:t}),setSessionInfo:t=>{e({sessionInfo:t,favoriteTechnologyIds:t?.favoriteTechnologyIds||[],favoriteTechStackIds:t?.favoriteTechStackIds||[]})},setConfig:t=>e({config:t}),setOverview:t=>e({overview:t}),setHeaderTitle:(t,a)=>e({headerTitle:{title:t,pathname:a}}),initialize:async()=>{e({loading:!0});try{let[t,a,r]=await Promise.all([l.getConfig(),l.getOverview(),l.getSessionInfo()]);e({config:t,overview:a,sessionInfo:r,favoriteTechnologyIds:r?.favoriteTechnologies?.map(e=>e.id)||[],favoriteTechStackIds:r?.favoriteTechStacks?.map(e=>e.id)||[],loading:!1})}catch(t){console.error("Failed to initialize app:",t),e({loading:!1})}},loadTechnology:async t=>{let a=await l.getTechnology(t);return e(e=>({technologies:[...e.technologies.filter(e=>e.slug!==t),a]})),a},loadTechnologyStack:async t=>{let a=await l.getTechnologyStack(t);return e(e=>({techStacks:[...e.techStacks.filter(e=>e.slug!==t),a.result]})),a.result},addFavoriteTechnology:async t=>{await l.addFavoriteTechnology(t),e(e=>({favoriteTechnologyIds:[...e.favoriteTechnologyIds,t]}))},removeFavoriteTechnology:async t=>{await l.removeFavoriteTechnology(t),e(e=>({favoriteTechnologyIds:e.favoriteTechnologyIds.filter(e=>e!==t)}))},addFavoriteTechStack:async t=>{await l.addFavoriteTechStack(t),e(e=>({favoriteTechStackIds:[...e.favoriteTechStackIds,t]}))},removeFavoriteTechStack:async t=>{await l.removeFavoriteTechStack(t),e(e=>({favoriteTechStackIds:e.favoriteTechStackIds.filter(e=>e!==t)}))},toggleWatchedTech:(t,a)=>{e(e=>{let r=e.watchedTechIds.includes(t),n={...e.watchedTechNames};return r?delete n[t]:a&&(n[t]=a),{watchedTechIds:r?e.watchedTechIds.filter(e=>e!==t):[...e.watchedTechIds,t],watchedTechNames:n}})},votePost:async(t,a)=>{await l.votePost(t,a),e(e=>({userVotes:{...e.userVotes,[t]:a}}))},votePostComment:async(t,a,r)=>{await l.votePostComment(t,a,r),e(e=>({userCommentVotes:{...e.userCommentVotes,[a]:r}}))}}),r={name:"techstacks-storage",partialize:e=>({sessionInfo:e.sessionInfo,favoriteTechnologyIds:e.favoriteTechnologyIds,favoriteTechStackIds:e.favoriteTechStackIds,watchedTechIds:e.watchedTechIds,watchedTechNames:e.watchedTechNames})},(e,t,n)=>{let i,s={storage:function(e,t){let a;try{a=e()}catch(e){return}return{getItem:e=>{var t;let r=e=>null===e?null:JSON.parse(e,void 0),n=null!=(t=a.getItem(e))?t:null;return n instanceof Promise?n.then(r):r(n)},setItem:(e,t)=>a.setItem(e,JSON.stringify(t,void 0)),removeItem:e=>a.removeItem(e)}}(()=>window.localStorage),partialize:e=>e,version:0,merge:(e,t)=>({...t,...e}),...r},l=!1,c=0,d=new Set,u=new Set,f=s.storage;if(!f)return a((...t)=>{console.warn(`[zustand persist middleware] Unable to update item '${s.name}', the given storage is currently unavailable.`),e(...t)},t,n);let h=()=>{let e=s.partialize({...t()});return f.setItem(s.name,{state:e,version:s.version})},g=n.setState;n.setState=(e,t)=>(g(e,t),h());let m=a((...t)=>(e(...t),h()),t,n);n.getInitialState=()=>m;let p=()=>{var a,r;if(!f)return;let n=++c;
1l=!1,d.forEach(e=>{var a;return e(null!=(a=t())?a:m)});let g=(null==(r=s.onRehydrateStorage)?void 0:r.call(s,null!=(a=t())?a:m))||void 0;return o(f.getItem.bind(f))(s.name).then(e=>{if(e)if("number"!=typeof e.version||e.version===s.version)return[!1,e.state];else{if(s.migrate){let t=s.migrate(e.state,e.version);return t instanceof Promise?t.then(e=>[!0,e]):[!0,t]}console.error("State loaded from storage couldn't be migrated since no migrate function was provided")}return[!1,void 0]}).then(a=>{var r;if(n!==c)return;let[o,l]=a;if(e(i=s.merge(l,null!=(r=t())?r:m),!0),o)return h()}).then(()=>{n===c&&(null==g||g(i,void 0),i=t(),l=!0,u.forEach(e=>e(i)))}).catch(e=>{n===c&&(null==g||g(void 0,e))})};return n.persist={setOptions:e=>{s={...s,...e},e.storage&&(f=e.storage)},clearStorage:()=>{null==f||f.removeItem(s.name)},getOptions:()=>s,rehydrate:()=>p(),hasHydrated:()=>l,onHydrate:e=>(d.add(e),()=>{d.delete(e)}),onFinishHydration:e=>(u.add(e),()=>{u.delete(e)})},s.skipHydration||p(),i||m}));e.s(["useAppStore",0,c],46016)},883,e=>{"use strict";var t=e.i(43476),a=e.i(71645),r=e.i(22016),n=e.i(55049),i=e.i(84366),s=e.i(46016);function o({children:e}){let r=(0,s.useAppStore)(e=>e.initialize);return(0,a.useEffect)(()=>{(async()=>{await (0,i.init)(),await r()})()},[r]),(0,t.jsx)(n.ClientContext.Provider,{value:i.client,children:e})}(0,n.setLinkComponent)(({to:e,...a})=>(0,t.jsx)(r.default,{href:e||a.href,...a})),e.s(["default",()=>o])},3374,e=>{"use strict";var t=e.i(43476),a=e.i(71645),r=e.i(22016),n=e.i(18566),i=e.i(55049),s=e.i(67743),o=e.i(84366),l=e.i(74924),c=e.i(46016);function d(){let e=(0,n.usePathname)(),{user:d}=(0,i.useAuth)(),{signOut:u}=(0,s.appAuth)(),[f,h]=(0,a.useState)(!1),g=(0,c.useAppStore)(e=>e.headerTitle);(0,a.useEffect)(()=>{h(!0)},[]);let m=async()=>{await u("/")},p=f&&g?.pathname===e?g.title:"TechStacks";return(0,t.jsx)("header",{className:"bg-gray-900 text-white sticky top-0 z-50 shadow-md",children:(0,t.jsx)("div",{className:"container mx-auto",children:(0,t.jsxs)("div",{className:"flex items-center justify-between h-16 px-4",children:[(0,t.jsx)("div",{className:"flex items-center space-x-4",children:(0,t.jsx)(r.default,{href:l.default.home(),className:"text-2xl font-bold hover:text-gray-300",children:p})}),(0,t.jsxs)("nav",{className:"hidden md:flex items-center space-x-1",children:[(0,t.jsx)(r.default,{href:l.default.home(),className:`px-4 py-2 rounded hover:bg-gray-800 ${"/"===e?"bg-gray-800":""}`,title:"Home (1 or H)",children:"Home"}),(0,t.jsx)(r.default,{href:l.default.top(),className:`px-4 py-2 rounded hover:bg-gray-800 ${"/top"===e?"bg-gray-800":""}`,title:"Top Technologies (2)",children:"Top"}),(0,t.jsx)(r.default,{href:l.default.stack(),className:`px-4 py-2 rounded hover:bg-gray-800 ${e?.startsWith("/stacks")?"bg-gray-800":""}`,title:"Technology Stacks (3)",children:"Stacks"}),(0,t.jsx)(r.default,{href:l.default.tech(),className:`px-4 py-2 rounded hover:bg-gray-800 ${e?.startsWith("/tech")?"bg-gray-800":""}`,title:"Technologies (4)",children:"Technologies"}),f&&d&&(0,t.jsx)(r.default,{href:l.default.favorites(),className:`px-4 py-2 rounded hover:bg-gray-800 ${"/favorites"===e?"bg-gray-800":""}`,title:"Favorites (5)",children:"Favorites"})]}),(0,t.jsx)("div",{className:"flex items-center",children:f?d?(0,t.jsxs)("div",{className:"relative group",children:[(0,t.jsx)("button",{type:"button",className:"flex items-center space-x-2 hover:bg-gray-800 rounded px-2 py-1",children:(d.profileUrl||d.userId)&&(0,t.jsx)("img",{src:d.profileUrl||(0,o.userAvatarUrl)(d.userId),alt:d.displayName||"User",className:"w-10 h-10 rounded-full object-cover"})}),(0,t.jsx)("div",{className:"absolute right-0 mt-2 w-48 bg-gray-800 rounded-md shadow-lg opacity-0 invisible group-hover:opacity-100 group-hover:visible transition-all",children:(0,t.jsxs)("div",{className:"py-1",children:[(0,t.jsx)(r.default,{href:l.default.account(),className:"block px-4 py-2 hover:bg-gray-700",children:"Account"}),(0,t.jsx)("button",{type:"button",onClick:m,className:"block w-full text-left px-4 py-2 hover:bg-gray-700",children:"Logout"})]})})]}):(0,t.jsx)(r.default,{href:l.default.signIn(),className:"px-4 py-2 bg-gray-700 hover:bg-gray-600 rounded",children:"Sign In"}):(0,t.jsx)("div",{className:"w-20 h-10"})})]})})})}e.s(["Header",()=>d])},61316,(e,t,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),a.default=function({html:e,height:t=null,width:a=null,children:i,dataNtpc:s=""}){return(0,n.useEffect)(()=>{s&&performance.mark("mark_feature_usage",{detail:{feature:`next-third-parties-${s}`}})},[s]),(0,r.jsxs)(r.Fragment,{children:[i,e?(0,r.jsx)("div",{style:{height:null!=t?`${t}px`:"auto",width:null!=a?`${a}px`:"auto"},"data-ntpc":s,dangerouslySetInnerHTML:{__html:e}}):null]})};let r=e.r(43476),n=e.r(71645)},8341,(e,t,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0});var r={cancelIdleCallback:function(){return s},requestIdleCallback:function(){return i}};for(var n in r)Object.defineProperty(a,n,{enumerable:!0,get:r[n]});let i="u">typeof self&&self.requestIdleCallback&&self.requestIdleCallback.bind(window)||function(e){let t=Date.now();return self.setTimeout(function(){e({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(Date.now()-t))}})},1)},s="u">typeof self&&self.cancelIdleCallback&&self.cancelIdleCallback.bind(window)||function(e){return clearTimeout(e)};("function"==typeof a.default||"object"==typeof a.default&&null!==a.default)&&void 0===a.default.__esModule&&(Object.defineProperty(a.default,"__esMo
1dule",{value:!0}),Object.assign(a.default,a),t.exports=a.default)},79520,(e,t,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0});var r={default:function(){return w},handleClientScriptLoad:function(){return p},initScriptLoader:function(){return v}};for(var n in r)Object.defineProperty(a,n,{enumerable:!0,get:r[n]});let i=e.r(55682),s=e.r(90809),o=e.r(43476),l=i._(e.r(74080)),c=s._(e.r(71645)),d=e.r(42732),u=e.r(22737),f=e.r(8341),h=new Map,g=new Set,m=e=>{let{src:t,id:a,onLoad:r=()=>{},onReady:n=null,dangerouslySetInnerHTML:i,children:s="",strategy:o="afterInteractive",onError:c,stylesheets:d}=e,f=a||t;if(f&&g.has(f))return;if(h.has(t)){g.add(f),h.get(t).then(r,c);return}let m=()=>{n&&n(),g.add(f)},p=document.createElement("script"),v=new Promise((e,t)=>{p.addEventListener("load",function(t){e(),r&&r.call(this,t),m()}),p.addEventListener("error",function(e){t(e)})}).catch(function(e){c&&c(e)});i?(p.innerHTML=i.__html||"",m()):s?(p.textContent="string"==typeof s?s:Array.isArray(s)?s.join(""):"",m()):t&&(p.src=t,h.set(t,v)),(0,u.setAttributesFromProps)(p,e),"worker"===o&&p.setAttribute("type","text/partytown"),p.setAttribute("data-nscript",o),d&&(e=>{if(l.default.preinit)return e.forEach(e=>{l.default.preinit(e,{as:"style"})});if("u">typeof window){let t=document.head;e.forEach(e=>{let a=document.createElement("link");a.type="text/css",a.rel="stylesheet",a.href=e,t.appendChild(a)})}})(d),document.body.appendChild(p)};function p(e){let{strategy:t="afterInteractive"}=e;"lazyOnload"===t?window.addEventListener("load",()=>{(0,f.requestIdleCallback)(()=>m(e))}):m(e)}function v(e){e.forEach(p),[...document.querySelectorAll('[data-nscript="beforeInteractive"]'),...document.querySelectorAll('[data-nscript="beforePageRender"]')].forEach(e=>{let t=e.id||e.getAttribute("src");g.add(t)})}function y(e){let{id:t,src:a="",onLoad:r=()=>{},onReady:n=null,strategy:i="afterInteractive",onError:s,stylesheets:u,...h}=e,{updateScripts:p,scripts:v,getIsSsr:y,appDir:w,nonce:b}=(0,c.useContext)(d.HeadManagerContext);b=h.nonce||b;let x=(0,c.useRef)(!1);(0,c.useEffect)(()=>{let e=t||a;x.current||(n&&e&&g.has(e)&&n(),x.current=!0)},[n,t,a]);let T=(0,c.useRef)(!1);if((0,c.useEffect)(()=>{if(!T.current){if("afterInteractive"===i)m(e);else"lazyOnload"===i&&("complete"===document.readyState?(0,f.requestIdleCallback)(()=>m(e)):window.addEventListener("load",()=>{(0,f.requestIdleCallback)(()=>m(e))}));T.current=!0}},[e,i]),("beforeInteractive"===i||"worker"===i)&&(p?(v[i]=(v[i]||[]).concat([{id:t,src:a,onLoad:r,onReady:n,onError:s,...h,nonce:b}]),p(v)):y&&y()?g.add(t||a):y&&!y()&&m({...e,nonce:b})),w){if(u&&u.forEach(e=>{l.default.preinit(e,{as:"style"})}),"beforeInteractive"===i)if(!a)return h.dangerouslySetInnerHTML&&(h.children=h.dangerouslySetInnerHTML.__html,delete h.dangerouslySetInnerHTML),(0,o.jsx)("script",{nonce:b,dangerouslySetInnerHTML:{__html:`(self.__next_s=self.__next_s||[]).push(${JSON.stringify([0,{...h,id:t}])})`}});else return l.default.preload(a,h.integrity?{as:"script",integrity:h.integrity,nonce:b,crossOrigin:h.crossOrigin}:{as:"script",nonce:b,crossOrigin:h.crossOrigin}),(0,o.jsx)("script",{nonce:b,dangerouslySetInnerHTML:{__html:`(self.__next_s=self.__next_s||[]).push(${JSON.stringify([a,{...h,id:t}])})`}});"afterInteractive"===i&&a&&l.default.preload(a,h.integrity?{as:"script",integrity:h.integrity,nonce:b,crossOrigin:h.crossOrigin}:{as:"script",nonce:b,crossOrigin:h.crossOrigin})}return null}Object.defineProperty(y,"__nextScript",{value:!0});let w=y;("function"==typeof a.default||"object"==typeof a.default&&null!==a.default)&&void 0===a.default.__esModule&&(Object.defineProperty(a.default,"__esModule",{value:!0}),Object.assign(a.default,a),t.exports=a.default)},3303,(e,t,a)=>{t.exports=e.r(79520)},19598,(e,t,a)=>{"use strict";var r=e.e&&e.e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(a,"__esModule",{value:!0}),a.sendGTMEvent=void 0,a.GoogleTagManager=function(e){let{gtmId:t,gtmScriptUrl:a,dataLayerName:r="dataLayer",auth:l,preview:c,dataLayer:d,nonce:u}=e;o=r;let f=new URL(a||"https://www.googletagmanager.com/gtm.js");return t&&f.searchParams.set("id",t),"dataLayer"!==r&&f.searchParams.set("l",r),l&&f.searchParams.set("gtm_auth",l),c&&(f.searchParams.set("gtm_preview",c),f.searchParams.set("gtm_cookies_win","x")),(0,i.useEffect)(()=>{performance.mark("mark_feature_usage",{detail:{feature:"next-third-parties-gtm"}})},[]),(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(s.default,{id:"_next-gtm-init",dangerouslySetInnerHTML:{__html:` 2 (function(w,l){ 3 w[l]=w[l]||[]; 4 w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'}); 5 ${d?`w[l].push(${JSON.stringify(d)})`:""} 6 })(window,'${r}');`},nonce:u}),(0,n.jsx)(s.default,{id:"_next-gtm","data-ntpc":"GTM",src:f.href,nonce:u})]})};let n=e.r(43476),i=e.r(71645),s=r(e.r(3303)),o="dataLayer";a.sendGTMEvent=(e,t)=>
6{let a=t||o;window[a]=window[a]||[],window[a].push(e)}},54576,(e,t,a)=>{"use strict";let r;var n=e.e&&e.e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(a,"__esModule",{value:!0}),a.GoogleAnalytics=function(e){let{gaId:t,debugMode:a,dataLayerName:n="dataLayer",nonce:l}=e;return void 0===r&&(r=n),(0,s.useEffect)(()=>{performance.mark("mark_feature_usage",{detail:{feature:"next-third-parties-ga"}})},[]),(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(o.default,{id:"_next-ga-init",dangerouslySetInnerHTML:{__html:` 7 window['${n}'] = window['${n}'] || []; 8 function gtag(){window['${n}'].push(arguments);} 9 gtag('js', new Date()); 10 11 gtag('config', '${t}' ${a?",{ 'debug_mode': true }":""});`},nonce:l}),(0,i.jsx)(o.default,{id:"_next-ga",src:`https://www.googletagmanager.com/gtag/js?id=${t}`,nonce:l})]})},a.sendGAEvent=function(){void 0===r?console.warn("@next/third-parties: GA has not been initialized"):window[r]?window[r].push(arguments):console.warn(`@next/third-parties: GA dataLayer ${r} does not exist`)};
11let i=e.r(43476),s=e.r(71645),o=n(e.r(3303))},32585,e=>{e.v(e=>Promise.resolve().then(()=>e(55049)))}]);
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.