Files
website/tr/blog/3.0.0.html
github-actions[bot] a3cdee9bf7 deploy: 3cc8b38390
2023-07-29 22:24:31 +00:00

21 lines
33 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!doctype html>
<html lang="tr" dir="ltr" class="blog-wrapper blog-post-page plugin-blog plugin-id-default">
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v2.4.1">
<title data-rh="true">Release 3.0.0 | sern - Handlers. Redefined.</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" property="og:url" content="https://sern.dev/tr/blog/3.0.0"><meta data-rh="true" name="docusaurus_locale" content="tr"><meta data-rh="true" name="docusaurus_tag" content="default"><meta data-rh="true" name="docsearch:language" content="tr"><meta data-rh="true" name="docsearch:docusaurus_tag" content="default"><meta data-rh="true" name="og:title" content="sern - Handlers. Redefined."><meta data-rh="true" name="og:description" content="A customizable, batteries-included, powerful discord.js framework to automate and streamline bot development"><meta data-rh="true" name="og:image" content="https://i.imgur.com/rr8nqDP.png"><meta data-rh="true" name="og:url" content="https://sern.dev"><meta data-rh="true" name="og:type" content="website"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" name="twitter:site" content="@sern-handler"><meta data-rh="true" name="twitter:title" content="sern - Handlers. Redefined."><meta data-rh="true" name="twitter:description" content="A customizable, batteries-included, powerful discord.js framework to automate and streamline bot development"><meta data-rh="true" name="twitter:image" content="./assets/images/logo.png"><meta data-rh="true" name="twitter:url" content="https://sern.dev"><meta data-rh="true" name="theme-color" content="#F25186"><meta data-rh="true" property="og:title" content="Release 3.0.0 | sern - Handlers. Redefined."><meta data-rh="true" name="description" content="3.0 Release"><meta data-rh="true" property="og:description" content="3.0 Release"><meta data-rh="true" property="og:type" content="article"><meta data-rh="true" property="article:published_time" content="2023-06-18T00:00:00.000Z"><meta data-rh="true" property="article:author" content="https://github.com/jacoobes"><meta data-rh="true" property="article:tag" content="release"><link data-rh="true" rel="icon" href="/tr/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://sern.dev/tr/blog/3.0.0"><link data-rh="true" rel="alternate" href="https://sern.dev/blog/3.0.0" hreflang="en"><link data-rh="true" rel="alternate" href="https://sern.dev/fr/blog/3.0.0" hreflang="fr"><link data-rh="true" rel="alternate" href="https://sern.dev/tr/blog/3.0.0" hreflang="tr"><link data-rh="true" rel="alternate" href="https://sern.dev/blog/3.0.0" hreflang="x-default"><link data-rh="true" rel="preconnect" href="https://AA9S5J9NYT-dsn.algolia.net" crossorigin="anonymous"><link rel="alternate" type="application/rss+xml" href="/tr/blog/rss.xml" title="sern - Handlers. Redefined. RSS Feed">
<link rel="alternate" type="application/atom+xml" href="/tr/blog/atom.xml" title="sern - Handlers. Redefined. Atom Feed">
<link rel="search" type="application/opensearchdescription+xml" title="sern - Handlers. Redefined." href="/tr/opensearch.xml"><link rel="stylesheet" href="/tr/assets/css/styles.81ba7e6f.css">
<link rel="preload" href="/tr/assets/js/runtime~main.c4cbec43.js" as="script">
<link rel="preload" href="/tr/assets/js/main.a7ae9c79.js" as="script">
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
<div role="region" aria-label="Ana içeriğe geç"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Ana içeriğe geç</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Gezinme çubuğunu aç/kapat" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/tr/"><div class="navbar__logo"><img src="/tr/img/favicon.ico" alt="logo logo" class="themedImage_ToTc themedImage--light_HNdA"><img src="/tr/img/favicon.ico" alt="logo logo" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">Home</b></a><a class="navbar__item navbar__link" href="/tr/docs/intro">Docs &amp; Guide</a><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/tr/blog">Blog</a><a class="navbar__item navbar__link" href="/tr/plugins">Plugins</a></div><div class="navbar__items navbar__items--right"><a href="https://github.com/sern-handler" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="Karanlık ve aydınlık mod arasında geçiş yapın (şu anda Aydınlık mod)" aria-label="Karanlık ve aydınlık mod arasında geçiş yapın (şu anda Aydınlık mod)" aria-live="polite"><svg viewBox="0 0 24 24" width="24" height="24" class="lightToggleIcon_pyhR"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" class="darkToggleIcon_wfgR"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg></button></div><div class="searchBox_ZlJk"><button type="button" class="DocSearch DocSearch-Button" aria-label="Ara"><span class="DocSearch-Button-Container"><svg width="20" height="20" class="DocSearch-Search-Icon" viewBox="0 0 20 20"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Ara</span></span><span class="DocSearch-Button-Keys"></span></button></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0"><div class="container margin-vert--lg"><div class="row"><aside class="col col--3"><nav class="sidebar_re4s thin-scrollbar" aria-label="Blog son gönderiler navigasyonu"><div class="sidebarItemTitle_pO2u margin-bottom--md">Recent posts</div><ul class="sidebarItemList_Yudw clean-list"><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/tr/blog/newlogo">New logo!</a></li><li class="sidebarItem__DBe"><a aria-current="page" class="sidebarItemLink_mo7H sidebarItemLinkActive_I1ZP" href="/tr/blog/3.0.0">Release 3.0.0</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/tr/blog/2.5.0">Release 2.5.0</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/tr/blog/2.0.0">Release 2.0.0</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/tr/blog/getting-started">How to get started with sern!</a></li></ul></nav></aside><main class="col col--7" itemscope="" itemtype="http://schema.org/Blog"><article itemprop="blogPost" itemscope="" itemtype="http://schema.org/BlogPosting"><header><h1 class="title_f1Hy" itemprop="headline">Release 3.0.0</h1><div class="container_mt6G margin-vert--md"><time datetime="2023-06-18T00:00:00.000Z" itemprop="datePublished">18 Haziran 2023</time> · <!-- -->3 dakikalık okuma</div><div class="margin-top--md margin-bottom--sm row"><div class="col col--6 authorCol_Hf19"><div class="avatar margin-bottom--sm"><a href="https://github.com/jacoobes" target="_blank" rel="noopener noreferrer" class="avatar__photo-link"><img class="avatar__photo" src="https://github.com/jacoobes.png" alt="jacoobes"></a><div class="avatar__intro" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><div class="avatar__name"><a href="https://github.com/jacoobes" target="_blank" rel="noopener noreferrer" itemprop="url"><span itemprop="name">jacoobes</span></a></div><small class="avatar__subtitle" itemprop="description">Head Dev</small></div></div></div></div></header><div id="__blog-post-container" class="markdown" itemprop="articleBody"><h2 class="anchor anchorWithStickyNavbar_LWe7" id="30-release">3.0 Release<a href="#30-release" class="hash-link" aria-label="3.0 Release doğrudan bağlantı" title="3.0 Release doğrudan bağlantı"></a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="join-our-discord-">Join our <a href="https://sern.dev/discord" target="_blank" rel="noopener noreferrer">discord</a> <br><a href="#join-our-discord-" class="hash-link" aria-label="join-our-discord- doğrudan bağlantı" title="join-our-discord- doğrudan bağlantı"></a></h3><h3 class="anchor anchorWithStickyNavbar_LWe7" id="features">Features<a href="#features" class="hash-link" aria-label="Features doğrudan bağlantı" title="Features doğrudan bağlantı"></a></h3><h4 class="anchor anchorWithStickyNavbar_LWe7" id="dependency-management">Dependency Management<a href="#dependency-management" class="hash-link" aria-label="Dependency Management doğrudan bağlantı" title="Dependency Management doğrudan bağlantı"></a></h4><ul><li><code>Service</code> API (recommended to use this over useContainer hooks)<ul><li>Dependencies type must be globally augmented in order for Services api to function properly</li></ul></li><li>new methods on ModuleManager<ul><li>getPublishableCommands()</li></ul></li><li>Init Hooks <ul><li>implement starting behavior for dependencies</li><li>To enforce and type check this, use the <code>Initializable</code> type when making your Dependencies type!</li></ul></li><li>Emitter interface<ul><li>More generic interface to define any event emitter</li><li>You can now swap out the SernEmitter with whatever emitter now. </li></ul></li></ul><div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#403f53;--prism-background-color:#FBFBFB"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#403f53"><span class="token keyword" style="color:rgb(12, 150, 155)">class</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(17, 17, 17)">DatabaseService</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(12, 150, 155)">implements</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(17, 17, 17)">Init</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(153, 76, 195)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> </span><span class="token comment" style="color:rgb(152, 159, 177);font-style:italic">//some hypothetical database</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> _pgsql </span><span class="token operator" style="color:rgb(12, 150, 155)">:</span><span class="token plain"> </span><span class="token function" style="color:rgb(153, 76, 195);font-style:italic">database</span><span class="token punctuation" style="color:rgb(153, 76, 195)">(</span><span class="token punctuation" style="color:rgb(153, 76, 195)">)</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#403f53"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> </span><span class="token keyword" style="color:rgb(12, 150, 155)">async</span><span class="token plain"> </span><span class="token function" style="color:rgb(153, 76, 195);font-style:italic">init</span><span class="token punctuation" style="color:rgb(153, 76, 195)">(</span><span class="token punctuation" style="color:rgb(153, 76, 195)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(153, 76, 195)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> </span><span class="token keyword" style="color:rgb(12, 150, 155)">await</span><span class="token plain"> _pgsql</span><span class="token punctuation" style="color:rgb(153, 76, 195)">.</span><span class="token function" style="color:rgb(153, 76, 195);font-style:italic">load</span><span class="token punctuation" style="color:rgb(153, 76, 195)">(</span><span class="token punctuation" style="color:rgb(153, 76, 195)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(153, 76, 195)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"></span><span class="token punctuation" style="color:rgb(153, 76, 195)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"></span><span class="token keyword" style="color:rgb(12, 150, 155)">await</span><span class="token plain"> </span><span class="token function" style="color:rgb(153, 76, 195);font-style:italic">makeDependencies</span><span class="token punctuation" style="color:rgb(153, 76, 195)">(</span><span class="token punctuation" style="color:rgb(153, 76, 195)">{</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> </span><span class="token function-variable function" style="color:rgb(153, 76, 195);font-style:italic">build</span><span class="token operator" style="color:rgb(12, 150, 155)">:</span><span class="token plain"> root </span><span class="token operator" style="color:rgb(12, 150, 155)">=&gt;</span><span class="token plain"> root</span><span class="token punctuation" style="color:rgb(153, 76, 195)">.</span><span class="token function" style="color:rgb(153, 76, 195);font-style:italic">add</span><span class="token punctuation" style="color:rgb(153, 76, 195)">(</span><span class="token punctuation" style="color:rgb(153, 76, 195)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> db</span><span class="token operator" style="color:rgb(12, 150, 155)">:</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(12, 150, 155)">new</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(17, 17, 17)">DatabaseService</span><span class="token punctuation" style="color:rgb(153, 76, 195)">(</span><span class="token punctuation" style="color:rgb(153, 76, 195)">)</span><span class="token plain"> </span><span class="token comment" style="color:rgb(152, 159, 177);font-style:italic">//will be init&#x27;ed automatically</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(153, 76, 195)">}</span><span class="token punctuation" style="color:rgb(153, 76, 195)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"></span><span class="token punctuation" style="color:rgb(153, 76, 195)">}</span><span class="token punctuation" style="color:rgb(153, 76, 195)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain" style="display:inline-block"></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Kodu panoya kopyala" title="Kopyala" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><ul><li>new SernEmitter event <code>modulesLoaded</code> , which allows users to customize behavior after all modules are loaded!</li></ul><div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#403f53;--prism-background-color:#FBFBFB"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#403f53"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"></span><span class="token keyword" style="color:rgb(12, 150, 155)">export</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(12, 150, 155)">default</span><span class="token plain"> </span><span class="token function" style="color:rgb(153, 76, 195);font-style:italic">eventModule</span><span class="token punctuation" style="color:rgb(153, 76, 195)">(</span><span class="token punctuation" style="color:rgb(153, 76, 195)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> name</span><span class="token operator" style="color:rgb(12, 150, 155)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(72, 118, 214)">&#x27;modulesLoaded&#x27;</span><span class="token punctuation" style="color:rgb(153, 76, 195)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> type</span><span class="token operator" style="color:rgb(12, 150, 155)">:</span><span class="token plain"> EventType</span><span class="token punctuation" style="color:rgb(153, 76, 195)">.</span><span class="token plain">Sern</span><span class="token punctuation" style="color:rgb(153, 76, 195)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> </span><span class="token function-variable function" style="color:rgb(153, 76, 195);font-style:italic">execute</span><span class="token operator" style="color:rgb(12, 150, 155)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(153, 76, 195)">(</span><span class="token punctuation" style="color:rgb(153, 76, 195)">)</span><span class="token plain"> </span><span class="token operator" style="color:rgb(12, 150, 155)">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(153, 76, 195)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> </span><span class="token builtin" style="color:rgb(72, 118, 214)">console</span><span class="token punctuation" style="color:rgb(153, 76, 195)">.</span><span class="token function" style="color:rgb(153, 76, 195);font-style:italic">log</span><span class="token punctuation" style="color:rgb(153, 76, 195)">(</span><span class="token string" style="color:rgb(72, 118, 214)">&#x27;All modules loaded&#x27;</span><span class="token punctuation" style="color:rgb(153, 76, 195)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(153, 76, 195)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain"></span><span class="token punctuation" style="color:rgb(153, 76, 195)">}</span><span class="token punctuation" style="color:rgb(153, 76, 195)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#403f53"><span class="token plain" style="display:inline-block"></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Kodu panoya kopyala" title="Kopyala" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="quality-of-life">Quality of Life<a href="#quality-of-life" class="hash-link" aria-label="Quality of Life doğrudan bağlantı" title="Quality of Life doğrudan bağlantı"></a></h4><ul><li><p>faster module loading</p><ul><li>I utilize async generators for reading files now. A lot faster than the first iteration.</li></ul></li><li><p>better error handling</p></li><li><p>Less boilerplate</p><ul><li>Services api cleans up v2 boilerplate</li></ul></li><li><p>class modules devex got upgraded and work better than before</p></li><li><p>automatically ignore any files not ending in (mts, cts, mjs, cjs, ts, js)</p><ul><li>ignore commands and events with <code>!</code> prefix on filename or directory (ie: <code>!filename.ts</code> or <code>!directory</code> will be ignored by sern)</li></ul></li><li><p><code>Service</code> API (recommended to use this over useContainer hooks)</p><ul><li>Dependencies type must be globally augmented in order for Services api to function properly</li></ul></li><li><p>Less boilerplate</p></li><li><p>new methods on ModuleManager</p></li><li><p>automatically ignore any files not ending in (mts, cts, mjs, cjs, ts, js)</p><ul><li>ignore commands / events with <code>!</code> prefix on filename or directory (ie: <code>!filename.ts</code> or <code>!directory</code>)</li></ul></li><li><p>new SernEmitter event <code>modulesLoaded</code> , which allows users to customize behavior after all modules are loaded!</p></li><li><p>Init Hooks </p><ul><li>implement starting behavior for dependencies</li></ul></li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="experimental">Experimental<a href="#experimental" class="hash-link" aria-label="Experimental doğrudan bağlantı" title="Experimental doğrudan bağlantı"></a></h3><ul><li>Experimental things may be subject to removal, need feedback and are not guaranteed stable</li><li>dev / prod mode <ul><li>sern will behave differently depending on mode set</li></ul></li><li>init sern from <code>file</code> option<ul><li>reads from local sern.config.json</li></ul></li></ul><div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#403f53;--prism-background-color:#FBFBFB"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#403f53"><span class="token maybe-class-name">Sern</span><span class="token punctuation" style="color:rgb(153, 76, 195)">.</span><span class="token method function property-access" style="color:rgb(153, 76, 195);font-style:italic">init</span><span class="token punctuation" style="color:rgb(153, 76, 195)">(</span><span class="token string" style="color:rgb(72, 118, 214)">&#x27;file&#x27;</span><span class="token punctuation" style="color:rgb(153, 76, 195)">)</span><span class="token punctuation" style="color:rgb(153, 76, 195)">;</span><span class="token plain"> </span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Kodu panoya kopyala" title="Kopyala" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="breaking-changes">Breaking changes<a href="#breaking-changes" class="hash-link" aria-label="Breaking changes doğrudan bağlantı" title="Breaking changes doğrudan bağlantı"></a></h3><ul><li>Sern.makeDependencies -&gt; makeDependencies<ul><li>it is asynchronous and top level function now. Make sure to await it before initing for proper synchronization.</li></ul></li><li>module store and manager internally changed, so those using them may recieve breaking changes</li><li>BaseOptions type removed</li></ul><div class="language-diff codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#403f53;--prism-background-color:#FBFBFB"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-diff codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#403f53"><span class="token deleted-sign deleted prefix deleted" style="color:rgba(239, 83, 80, 0.56);font-style:italic">-</span><span class="token deleted-sign deleted line" style="color:rgba(239, 83, 80, 0.56);font-style:italic"> Sern.makeDependencies({ build: () =&gt; {} })</span><br></span><span class="token-line" style="color:#403f53"><span class="token deleted-sign deleted line" style="color:rgba(239, 83, 80, 0.56);font-style:italic"></span><span class="token inserted-sign inserted prefix inserted" style="color:rgb(72, 118, 214);font-style:italic">+</span><span class="token inserted-sign inserted line" style="color:rgb(72, 118, 214);font-style:italic"> await makeDependencies({ build: () =&gt; {} })</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Kodu panoya kopyala" title="Kopyala" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="deprecations">Deprecations<a href="#deprecations" class="hash-link" aria-label="Deprecations doğrudan bağlantı" title="Deprecations doğrudan bağlantı"></a></h3><ul><li>Removed all previous marked deprecations in v3</li><li>ModuleStore will be removed as a dependency in v4. The only way to access modules should be through ModuleManager</li><li>Default Dependencies will be made internal in the v4. Users should only have access to its interface / contract</li></ul></div><footer class="row docusaurus-mt-lg blogPostFooterDetailsFull_mRVl"><div class="col"><b>Etiketler:</b><ul class="tags_jXut padding--none margin-left--sm"><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/tr/blog/tags/release">release</a></li></ul></div><div class="col margin-top--sm"><a href="https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/blog/2023-06-18-mdx-blog-post.md" target="_blank" rel="noreferrer noopener" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Bu sayfayı düzenle</a></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Blog gönderi sayfası navigasyonu"><a class="pagination-nav__link pagination-nav__link--prev" href="/tr/blog/newlogo"><div class="pagination-nav__sublabel">Daha Yeni Gönderi</div><div class="pagination-nav__label">New logo!</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/tr/blog/2.5.0"><div class="pagination-nav__sublabel">Daha Eski Gönderi</div><div class="pagination-nav__label">Release 2.5.0</div></a></nav></main><div class="col col--2"><div class="tableOfContents_bqdL thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#30-release" class="table-of-contents__link toc-highlight">3.0 Release</a><ul><li><a href="#join-our-discord-" class="table-of-contents__link toc-highlight">Join our discord <br></a></li><li><a href="#features" class="table-of-contents__link toc-highlight">Features</a></li><li><a href="#experimental" class="table-of-contents__link toc-highlight">Experimental</a></li><li><a href="#breaking-changes" class="table-of-contents__link toc-highlight">Breaking changes</a></li><li><a href="#deprecations" class="table-of-contents__link toc-highlight">Deprecations</a></li></ul></li></ul></div></div></div></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Information</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/tr/docs/intro">Docs &amp; Guide</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://stackoverflow.com/questions/tagged/sern-handler" target="_blank" rel="noopener noreferrer" class="footer__link-item">Stack Overflow<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://discord.gg/DwbF5H5JgQ" target="_blank" rel="noopener noreferrer" class="footer__link-item">Discord<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://opencollective.com/sern" target="_blank" rel="noopener noreferrer" class="footer__link-item">Open Collective<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div><div class="col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/tr/blog">Blog</a></li><li class="footer__item"><a href="https://github.com/sern-handler" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Built with ❤️ by the sern Handler team and its contributors</div></div></div></footer></div>
<script src="/tr/assets/js/runtime~main.c4cbec43.js"></script>
<script src="/tr/assets/js/main.a7ae9c79.js"></script>
</body>
</html>