

<!DOCTYPE html>

<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=Edge">

  <link rel="stylesheet" href="/street/assets/css/just-the-docs-default.css">

  <link rel="stylesheet" href="/street/assets/css/just-the-docs-head-nav.css" id="jtd-head-nav-stylesheet">

  <style id="jtd-nav-activation">
  
    .site-nav ul li a {
      background-image: none;
    }

  </style>

  

  
    <script src="/street/assets/js/vendor/lunr.min.js"></script>
  

  <script src="/street/assets/js/just-the-docs.js"></script>

  <meta name="viewport" content="width=device-width, initial-scale=1">

  



  <!-- Begin Jekyll SEO tag v2.9.0 -->
<title>StreetJS | TypeScript Backend Framework — No Express. No pg. No Prisma.</title>
<meta name="generator" content="Jekyll v4.4.1" />
<meta property="og:title" content="StreetJS" />
<meta name="author" content="street contributors" />
<meta property="og:locale" content="en" />
<meta name="description" content="StreetJS is a production-grade, memory-safe TypeScript backend framework built on Node.js core. Native PostgreSQL driver, JWT, WebSockets, clustering — 2 dependencies." />
<meta name="twitter:description" property="og:description" content="StreetJS is a production-grade, memory-safe TypeScript backend framework built on Node.js core. Native PostgreSQL driver, JWT, WebSockets, clustering — 2 dependencies." />
<link rel="canonical" href="https://hassanmubiru.github.io/street/assets/css/just-the-docs-head-nav.css" />
<meta property="og:url" content="https://hassanmubiru.github.io/street/assets/css/just-the-docs-head-nav.css" />
<meta property="og:site_name" content="StreetJS" />
<meta property="og:image" content="https://hassanmubiru.github.io/street/assets/images/og.png" />
<meta property="og:type" content="website" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:image" content="https://hassanmubiru.github.io/street/assets/images/og.png" />
<meta name="twitter:title" content="StreetJS" />
<meta name="twitter:site" content="@streetjs" />
<meta name="twitter:creator" content="@street contributors" />
<meta name="google-site-verification" content="" />
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"WebPage","author":{"@type":"Person","name":"street contributors"},"description":"StreetJS is a production-grade, memory-safe TypeScript backend framework built on Node.js core. Native PostgreSQL driver, JWT, WebSockets, clustering — 2 dependencies.","headline":"StreetJS","image":"https://hassanmubiru.github.io/street/assets/images/og.png","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"https://hassanmubiru.github.io/street/assets/images/logo.svg"},"name":"street contributors"},"url":"https://hassanmubiru.github.io/street/assets/css/just-the-docs-head-nav.css"}</script>
<!-- End Jekyll SEO tag -->


  <!-- Street docs: theme init (runs before paint to avoid flash) -->
<script>
  (function () {
    try {
      var saved = localStorage.getItem('street-theme');
      var theme = saved || (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light');
      document.documentElement.setAttribute('data-theme', theme);
    } catch (e) {
      document.documentElement.setAttribute('data-theme', 'light');
    }
  })();
</script>

<!-- Street docs: floating light/dark toggle -->
<script>
  document.addEventListener('DOMContentLoaded', function () {
    var SUN = '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="4"/><path d="M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M4.93 19.07l1.41-1.41M17.66 6.34l1.41-1.41"/></svg>';
    var MOON = '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"/></svg>';
    var btn = document.createElement('button');
    btn.className = 'theme-toggle';
    btn.type = 'button';
    btn.setAttribute('aria-label', 'Toggle light and dark theme');
    btn.setAttribute('title', 'Toggle theme');
    function render() {
      var isDark = document.documentElement.getAttribute('data-theme') === 'dark';
      btn.innerHTML = isDark ? SUN : MOON;
      btn.setAttribute('aria-pressed', String(isDark));
    }
    btn.addEventListener('click', function () {
      var isDark = document.documentElement.getAttribute('data-theme') === 'dark';
      var next = isDark ? 'light' : 'dark';
      document.documentElement.setAttribute('data-theme', next);
      try { localStorage.setItem('street-theme', next); } catch (e) {}
      render();
    });
    render();
    document.body.appendChild(btn);
  });
</script>

</head>

<body>
  <a class="skip-to-main" href="#main-content">Skip to main content</a>
  <svg xmlns="http://www.w3.org/2000/svg" class="d-none">
  <symbol id="svg-link" viewBox="0 0 24 24">
  <title>Link</title>
  <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-link">
    <path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path>
  </svg>
</symbol>

  <symbol id="svg-menu" viewBox="0 0 24 24">
  <title>Menu</title>
  <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-menu">
    <line x1="3" y1="12" x2="21" y2="12"></line><line x1="3" y1="6" x2="21" y2="6"></line><line x1="3" y1="18" x2="21" y2="18"></line>
  </svg>
</symbol>

  <symbol id="svg-arrow-right" viewBox="0 0 24 24">
  <title>Expand</title>
  <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevron-right">
    <polyline points="9 18 15 12 9 6"></polyline>
  </svg>
</symbol>

  <!-- Feather. MIT License: https://github.com/feathericons/feather/blob/master/LICENSE -->
<symbol id="svg-external-link" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-external-link">
  <title id="svg-external-link-title">(external link)</title>
  <path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1="10" y1="14" x2="21" y2="3"></line>
</symbol>

  
    <symbol id="svg-doc" viewBox="0 0 24 24">
  <title>Document</title>
  <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-file">
    <path d="M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"></path><polyline points="13 2 13 9 20 9"></polyline>
  </svg>
</symbol>

    <symbol id="svg-search" viewBox="0 0 24 24">
  <title>Search</title>
  <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-search">
    <circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line>
  </svg>
</symbol>

  
  
    <!-- Bootstrap Icons. MIT License: https://github.com/twbs/icons/blob/main/LICENSE.md -->
<symbol id="svg-copy" viewBox="0 0 16 16">
  <title>Copy</title>
  <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard" viewBox="0 0 16 16">
    <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z"/>
    <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z"/>
  </svg>
</symbol>
<symbol id="svg-copied" viewBox="0 0 16 16">
  <title>Copied</title>
  <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard-check-fill" viewBox="0 0 16 16">
    <path d="M6.5 0A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3Zm3 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3Z"/>
    <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1A2.5 2.5 0 0 1 9.5 5h-3A2.5 2.5 0 0 1 4 2.5v-1Zm6.854 7.354-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 0 1 .708-.708L7.5 10.793l2.646-2.647a.5.5 0 0 1 .708.708Z"/>
  </svg>
</symbol>

  
</svg>

  
    <header class="side-bar">
  <div class="site-header">
    <a href="/street/" class="site-title lh-tight">
  <div class="site-logo" role="img" aria-label="StreetJS"></div>

</a>
    <button id="menu-button" class="site-button btn-reset" aria-label="Menu" aria-expanded="false">
      <svg viewBox="0 0 24 24" class="icon" aria-hidden="true"><use xlink:href="#svg-menu"></use></svg>
    </button>
  </div>

  <nav aria-label="Main" id="site-nav" class="site-nav">
  
  
    <ul class="nav-list"><li class="nav-list-item"><a href="/street/" class="nav-list-link">Home</a></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="Getting Started submenu" aria-expanded="false">
        <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg>
      </button><a href="/street/getting-started/" class="nav-list-link">Getting Started</a><ul class="nav-list"><li class="nav-list-item"><a href="/street/getting-started/installation/" class="nav-list-link">Installation</a></li><li class="nav-list-item"><a href="/street/getting-started/project-structure/" class="nav-list-link">Project Structure</a></li><li class="nav-list-item"><a href="/street/getting-started/first-server/" class="nav-list-link">First Server</a></li><li class="nav-list-item"><a href="/street/getting-started/configuration/" class="nav-list-link">Configuration</a></li></ul></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="Authentication submenu" aria-expanded="false">
        <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg>
      </button><a href="/street/auth/" class="nav-list-link">Authentication</a><ul class="nav-list"><li class="nav-list-item"><a href="/street/auth/rbac.html" class="nav-list-link">RBAC</a></li><li class="nav-list-item"><a href="/street/auth/oauth2.html" class="nav-list-link">OAuth2 / OIDC</a></li><li class="nav-list-item"><a href="/street/auth/webauthn.html" class="nav-list-link">WebAuthn / Passkeys</a></li></ul></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="CLI submenu" aria-expanded="false">
        <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg>
      </button><a href="/street/cli/" class="nav-list-link">CLI</a><ul class="nav-list"><li class="nav-list-item"><a href="/street/cli/commands/" class="nav-list-link">CLI Commands</a></li></ul></li><li class="nav-list-item"><a href="/street/user-guide.html" class="nav-list-link">User Guide</a></li><li class="nav-list-item"><a href="/street/api-reference.html" class="nav-list-link">API Reference</a></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="Core submenu" aria-expanded="false">
        <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg>
      </button><a href="/street/core/" class="nav-list-link">Core</a><ul class="nav-list"><li class="nav-list-item"><a href="/street/core/dependency-injection/" class="nav-list-link">Dependency Injection</a></li><li class="nav-list-item"><a href="/street/core/routing/" class="nav-list-link">Routing</a></li><li class="nav-list-item"><a href="/street/core/controllers/" class="nav-list-link">Controllers</a></li><li class="nav-list-item"><a href="/street/core/middleware/" class="nav-list-link">Middleware & Validation</a></li><li class="nav-list-item"><a href="/street/core/services/" class="nav-list-link">Services</a></li><li class="nav-list-item"><a href="/street/core/openapi/" class="nav-list-link">OpenAPI</a></li></ul></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="Database submenu" aria-expanded="false">
        <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg>
      </button><a href="/street/database/" class="nav-list-link">Database</a><ul class="nav-list"><li class="nav-list-item"><a href="/street/database/postgres-wire-driver/" class="nav-list-link">PostgreSQL Wire Driver</a></li><li class="nav-list-item"><a href="/street/database/repositories/" class="nav-list-link">Repositories, Transactions & Migrations</a></li></ul></li><li class="nav-list-item"><a href="/street/cli-reference.html" class="nav-list-link">CLI Reference</a></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="Realtime submenu" aria-expanded="false">
        <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg>
      </button><a href="/street/realtime/" class="nav-list-link">Realtime</a><ul class="nav-list"><li class="nav-list-item"><a href="/street/realtime/websocket/" class="nav-list-link">WebSockets</a></li></ul></li><li class="nav-list-item"><a href="/street/jobs/" class="nav-list-link">Jobs</a></li><li class="nav-list-item"><a href="/street/security.html" class="nav-list-link">Security Guide</a></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="Storage submenu" aria-expanded="false">
        <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg>
      </button><a href="/street/storage/" class="nav-list-link">Storage</a><ul class="nav-list"><li class="nav-list-item"><a href="/street/storage/multipart-uploads/" class="nav-list-link">Multipart Uploads</a></li></ul></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="Security submenu" aria-expanded="false">
        <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg>
      </button><a href="/street/security/" class="nav-list-link">Security</a><ul class="nav-list"><li class="nav-list-item"><a href="/street/security/jwt/" class="nav-list-link">JWT, Sessions, Vault, XSS & Rate Limiting</a></li><li class="nav-list-item"><a href="/street/security/consumer-platform/" class="nav-list-link">Consumer Platform Security</a></li></ul></li><li class="nav-list-item"><a href="/street/observability/" class="nav-list-link">Observability</a></li><li class="nav-list-item"><a href="/street/migration.html" class="nav-list-link">Migration Guide</a></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="Performance submenu" aria-expanded="false">
        <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg>
      </button><a href="/street/performance/" class="nav-list-link">Performance</a><ul class="nav-list"><li class="nav-list-item"><a href="/street/performance/telemetry/" class="nav-list-link">Telemetry, Caching & Clustering</a></li></ul></li><li class="nav-list-item"><a href="/street/migration-from-express.html" class="nav-list-link">Migrating from Express</a></li><li class="nav-list-item"><a href="/street/troubleshooting.html" class="nav-list-link">Troubleshooting</a></li><li class="nav-list-item"><a href="/street/migration-from-nestjs.html" class="nav-list-link">Migrating from NestJS</a></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="Deployment submenu" aria-expanded="false">
        <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg>
      </button><a href="/street/deployment/" class="nav-list-link">Deployment</a><ul class="nav-list"><li class="nav-list-item"><a href="/street/deployment/docker/" class="nav-list-link">Docker, CI/CD & Scaling</a></li><li class="nav-list-item"><a href="/street/deployment/hosting-guide/" class="nav-list-link">GitHub Pages & npm Publishing</a></li></ul></li><li class="nav-list-item"><a href="/street/migration-from-fastify.html" class="nav-list-link">Migrating from Fastify</a></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="Testing submenu" aria-expanded="false">
        <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg>
      </button><a href="/street/testing/" class="nav-list-link">Testing</a><ul class="nav-list"><li class="nav-list-item"><a href="/street/testing/integration-tests/" class="nav-list-link">Integration Tests & Debugging</a></li></ul></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="Examples submenu" aria-expanded="false">
        <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg>
      </button><a href="/street/examples/" class="nav-list-link">Examples</a><ul class="nav-list"><li class="nav-list-item"><a href="/street/examples/rest-api/" class="nav-list-link">REST API</a></li><li class="nav-list-item"><a href="/street/examples/user-api/" class="nav-list-link">User CRUD API</a></li><li class="nav-list-item"><a href="/street/examples/streaming-query/" class="nav-list-link">Streaming, Chat & File Upload</a></li><li class="nav-list-item"><a href="/street/examples/websocket-chat/" class="nav-list-link">WebSocket Chat</a></li><li class="nav-list-item"><a href="/street/examples/file-upload/" class="nav-list-link">File Upload</a></li></ul></li><li class="nav-list-item"><a href="/street/use-cases/" class="nav-list-link">What Can Be Built</a></li><li class="nav-list-item"><a href="/street/faq/" class="nav-list-link">FAQ</a></li><li class="nav-list-item"><a href="/street/roadmap/" class="nav-list-link">Roadmap</a></li><li class="nav-list-item"><a href="/street/certification/" class="nav-list-link">Certification</a></li><li class="nav-list-item"><a href="/street/contributing/" class="nav-list-link">Contributing</a></li><li class="nav-list-item"><a href="/street/changelog/" class="nav-list-link">Changelog</a></li><li class="nav-list-item"><a href="/street/platform-leadership/" class="nav-list-link">Platform Leadership</a></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="Compliance Control Mappings submenu" aria-expanded="false">
        <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg>
      </button><a href="/street/compliance/README.html" class="nav-list-link">Compliance Control Mappings</a><ul class="nav-list"><li class="nav-list-item"><a href="/street/compliance/control-mappings.html" class="nav-list-link">SOC2 / HIPAA / GDPR / PCI Mappings</a></li></ul></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="Community submenu" aria-expanded="false">
        <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg>
      </button><a href="/street/community/README.html" class="nav-list-link">Community</a><ul class="nav-list"><li class="nav-list-item"><a href="/street/community/contributor-path.html" class="nav-list-link">Contributor Path</a></li></ul></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="Case Studies submenu" aria-expanded="false">
        <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg>
      </button><a href="/street/case-studies/README.html" class="nav-list-link">Case Studies</a><ul class="nav-list"><li class="nav-list-item"><a href="/street/case-studies/template-migration.html" class="nav-list-link">Template — Migration Case Study</a></li><li class="nav-list-item"><a href="/street/case-studies/template-deployment.html" class="nav-list-link">Template — Production Deployment Report</a></li><li class="nav-list-item"><a href="/street/case-studies/template-benchmark.html" class="nav-list-link">Template — Benchmark Report</a></li></ul></li><li class="nav-list-item"><a href="/street/sustainability/README.html" class="nav-list-link">Sustainability</a></li><li class="nav-list-item"><a href="/street/adoption/adoption-scorecard.html" class="nav-list-link">Adoption Scorecard</a></li></ul>
  
</nav>


<div class="d-md-block d-none site-footer">
  
  
    This site uses <a href="https://github.com/just-the-docs/just-the-docs">Just the Docs</a>, a documentation theme for Jekyll.
  
  </div>
</header>

  
  <div class="main" id="top">
    <div id="main-header" class="main-header">
  
    

<div class="search" role="search">
  <div class="search-input-wrap">
    <input type="text" id="search-input" class="search-input" tabindex="0" placeholder="Search StreetJS" autocomplete="off">
    <label for="search-input" class="search-label">
      <span class="sr-only">Search StreetJS</span>
      <svg viewBox="0 0 24 24" class="search-icon" aria-hidden="true"><use xlink:href="#svg-search"></use></svg>
    </label>
  </div>
  <div id="search-results" class="search-results"></div>
</div>

  
  
  
    <nav aria-label="Auxiliary" class="aux-nav">
  <ul class="aux-nav-list">
    
      <li class="aux-nav-list-item">
        <a href="https://github.com/hassanmubiru/street" class="site-button"
          
          target="_blank" rel="noopener noreferrer"
          
        >
          GitHub
        </a>
      </li>
    
      <li class="aux-nav-list-item">
        <a href="https://www.npmjs.com/package/streetjs" class="site-button"
          
          target="_blank" rel="noopener noreferrer"
          
        >
          npm
        </a>
      </li>
    
  </ul>
</nav>

  
</div>

    <div class="main-content-wrap">
      
      <div id="main-content" class="main-content">
        <main>
          
            <h.site-nav ul li a {
  background-image: linear-gradient(-90deg, rgb(234.8, 236.82, 244.9) 0%, rgba(234.8, 236.82, 244.9, 0.8) 80%, rgba(234.8, 236.82, 244.9, 0) 100%);
}

          

          
            
          
        </main>
        
<hr>
<footer>
  
    <p><a href="#top" id="back-to-top">Back to top</a></p>
  

  <p class="text-small mb-0">Copyright &copy; 2026 street contributors. Distributed under the <a href="https://github.com/hassanmubiru/street/blob/main/LICENSE">MIT license.</a> &nbsp;|&nbsp; <a href="https://www.npmjs.com/package/streetjs">npm</a> &nbsp;|&nbsp; <a href="https://github.com/hassanmubiru/street">GitHub</a>
</p>

  
    <div class="d-flex mt-2">
      
      
        <p class="text-small mb-0">
          <a href="https://github.com/hassanmubiru/street/edit/main/docs/assets/css/just-the-docs-head-nav.css" id="edit-this-page">Edit this page on GitHub</a>
        </p>
      
    </div>
  <div class="d-md-none mt-4 fs-2">
    
    
      This site uses <a href="https://github.com/just-the-docs/just-the-docs">Just the Docs</a>, a documentation theme for Jekyll.
    
  </div>
</footer>

      </div>
    </div>
    
      

<div class="search-overlay"></div>

    
  </div>

  
</body>
</html>

