<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: beladevo</title>
    <description>The latest articles on DEV Community by beladevo (@beladevo).</description>
    <link>https://dev.to/beladevo</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3204011%2F8c3bb0da-d5f1-4d9a-b47c-2bf8dc07f1f9.png</url>
      <title>DEV Community: beladevo</title>
      <link>https://dev.to/beladevo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/beladevo"/>
    <language>en</language>
    <item>
      <title>WebMCP is coming — so I’m building webmcp.js</title>
      <dc:creator>beladevo</dc:creator>
      <pubDate>Mon, 25 May 2026 07:06:30 +0000</pubDate>
      <link>https://dev.to/beladevo/webmcp-is-coming-so-im-building-webmcpjs-118m</link>
      <guid>https://dev.to/beladevo/webmcp-is-coming-so-im-building-webmcpjs-118m</guid>
      <description>&lt;p&gt;The web was built for humans.&lt;/p&gt;

&lt;p&gt;AI agents are not humans.&lt;/p&gt;

&lt;p&gt;Today, many agents still use websites like a person would: read the page, inspect the DOM, guess which button to click, fill a form, and hope the UI did not change.&lt;/p&gt;

&lt;p&gt;That is useful.&lt;/p&gt;

&lt;p&gt;But it is also fragile.&lt;/p&gt;

&lt;p&gt;WebMCP points to a different future: websites can expose structured tools directly from the page.&lt;/p&gt;

&lt;p&gt;Instead of an agent guessing what a website can do, the website can declare it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="nx"&gt;products&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;search&lt;/span&gt;
&lt;span class="nx"&gt;cart&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;add&lt;/span&gt;
&lt;span class="nx"&gt;checkout&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;start&lt;/span&gt;
&lt;span class="nx"&gt;project&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;create&lt;/span&gt;
&lt;span class="nx"&gt;report&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;generate&lt;/span&gt;
&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;invite&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These are not random clicks.&lt;/p&gt;

&lt;p&gt;They are explicit capabilities with names, descriptions, schemas, and functions.&lt;/p&gt;

&lt;p&gt;That is the interesting part.&lt;/p&gt;

&lt;p&gt;Not “AI clicks buttons better.”&lt;/p&gt;

&lt;p&gt;Something much better:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Websites become understandable and actionable for agents.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Why this matters
&lt;/h2&gt;

&lt;p&gt;If agents become a real interface to software, websites need more than visual UI.&lt;/p&gt;

&lt;p&gt;They need an agent-facing surface that is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;clear&lt;/li&gt;
&lt;li&gt;typed&lt;/li&gt;
&lt;li&gt;validated&lt;/li&gt;
&lt;li&gt;safe&lt;/li&gt;
&lt;li&gt;testable&lt;/li&gt;
&lt;li&gt;connected to the real product flow&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;WebMCP gives the browser-level direction.&lt;/p&gt;

&lt;p&gt;But developers still need a practical layer to use it well.&lt;/p&gt;

&lt;h2&gt;
  
  
  The missing developer layer
&lt;/h2&gt;

&lt;p&gt;Registering a tool is only the beginning.&lt;/p&gt;

&lt;p&gt;The real production questions are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is the input valid?&lt;/li&gt;
&lt;li&gt;Is this action read-only or dangerous?&lt;/li&gt;
&lt;li&gt;Should the user confirm it first?&lt;/li&gt;
&lt;li&gt;Can I audit what happened?&lt;/li&gt;
&lt;li&gt;Can I test this before exposing it to an agent?&lt;/li&gt;
&lt;li&gt;Can I use this cleanly in React or Next.js?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There is a big difference between:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="nx"&gt;products&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;search&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="nx"&gt;checkout&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;start&lt;/span&gt;
&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;delete&lt;/span&gt;
&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;send&lt;/span&gt;
&lt;span class="nx"&gt;team&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;invite&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Some tools read data.&lt;/p&gt;

&lt;p&gt;Some change state.&lt;/p&gt;

&lt;p&gt;Some may cost money.&lt;/p&gt;

&lt;p&gt;Some affect other users.&lt;/p&gt;

&lt;p&gt;That difference should be part of the developer experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I’m building
&lt;/h2&gt;

&lt;p&gt;I’m building &lt;strong&gt;webmcp.js&lt;/strong&gt; — a TypeScript-first developer layer for WebMCP.&lt;br&gt;
GitHub: &lt;a href="https://github.com/beladevo/webmcp.js" rel="noopener noreferrer"&gt;https://github.com/beladevo/webmcp.js&lt;/a&gt;&lt;br&gt;&lt;br&gt;
Docs: &lt;a href="https://webmcp.webml.co.il/" rel="noopener noreferrer"&gt;https://webmcp.webml.co.il/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Not a new protocol.&lt;/p&gt;

&lt;p&gt;Not a replacement for WebMCP.&lt;/p&gt;

&lt;p&gt;A small, practical layer that helps developers expose WebMCP tools with better defaults.&lt;/p&gt;

&lt;p&gt;The first focus:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;typed tool registration
schema validation
risk levels
permission rules
human confirmation
audit hooks
React / Next.js friendly APIs
testing utilities
clear examples
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The API should feel familiar:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="nx"&gt;mcp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;tool&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;cart.add&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Add a product to the user's cart&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;input&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;z&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;object&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;productId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;z&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;string&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
    &lt;span class="na"&gt;quantity&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;z&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;number&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;min&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="p"&gt;}),&lt;/span&gt;
  &lt;span class="na"&gt;risk&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;high&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;requireConfirmation&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;productId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;quantity&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;cart&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;productId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;quantity&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can explore the project here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/beladevo/webmcp.js" rel="noopener noreferrer"&gt;https://github.com/beladevo/webmcp.js&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Docs: &lt;a href="https://webmcp.webml.co.il/" rel="noopener noreferrer"&gt;https://webmcp.webml.co.il/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Demo: &lt;a href="https://webmcp.webml.co.il/demo" rel="noopener noreferrer"&gt;https://webmcp.webml.co.il/demo&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The wrapper is not the point.&lt;/p&gt;

&lt;p&gt;The point is the system around the tool:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;validation
permissions
confirmation
safe defaults
testing
debugging
developer experience
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  The purple cow
&lt;/h2&gt;

&lt;p&gt;Most websites today are made for humans only.&lt;/p&gt;

&lt;p&gt;The remarkable websites will be different.&lt;/p&gt;

&lt;p&gt;They will have two interfaces:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A visual interface for people&lt;/li&gt;
&lt;li&gt;A structured interface for agents&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That second interface should not be an afterthought.&lt;/p&gt;

&lt;p&gt;It should be safe, typed, intentional, and built into the product.&lt;/p&gt;

&lt;p&gt;That is the idea behind &lt;strong&gt;webmcp.js&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Open source
&lt;/h2&gt;

&lt;p&gt;This space is still early.&lt;/p&gt;

&lt;p&gt;That is why I want to build it in public, follow the standard closely, and avoid hype.&lt;/p&gt;

&lt;p&gt;The project will be released under the &lt;strong&gt;MIT License&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Contributions will be welcome around:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;examples
TypeScript API design
permissions and safety
React / Next.js integration
testing utilities
documentation
security review
tracking WebMCP changes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Try it / contribute
&lt;/h2&gt;

&lt;p&gt;The project is open source and available here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/beladevo/webmcp.js" rel="noopener noreferrer"&gt;https://github.com/beladevo/webmcp.js&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Docs: &lt;a href="https://webmcp.webml.co.il/" rel="noopener noreferrer"&gt;https://webmcp.webml.co.il/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Demo: &lt;a href="https://webmcp.webml.co.il/demo" rel="noopener noreferrer"&gt;https://webmcp.webml.co.il/demo&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you’re interested in WebMCP, browser agents, TypeScript API design, permissions, or developer tooling — contributions are welcome.&lt;/p&gt;

&lt;h2&gt;
  
  
  The goal
&lt;/h2&gt;

&lt;p&gt;Make websites agent-ready without making them unsafe or hard to maintain.&lt;/p&gt;

&lt;p&gt;If WebMCP becomes an important bridge between websites and AI agents, developers will need more than a browser API.&lt;/p&gt;

&lt;p&gt;They will need a clean, safe, typed, production-minded way to use it.&lt;/p&gt;

&lt;p&gt;That is what I want &lt;strong&gt;webmcp.js&lt;/strong&gt; to become.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>javascript</category>
      <category>opensource</category>
      <category>webml</category>
    </item>
    <item>
      <title>Redirector OSINT - One-Command Redirect &amp; Logging Tool</title>
      <dc:creator>beladevo</dc:creator>
      <pubDate>Fri, 05 Sep 2025 11:55:56 +0000</pubDate>
      <link>https://dev.to/beladevo/redirector-osint-one-command-redirect-logging-tool-f48</link>
      <guid>https://dev.to/beladevo/redirector-osint-one-command-redirect-logging-tool-f48</guid>
      <description>&lt;p&gt;When doing OSINT or red team work, I always needed a quick way to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;redirect traffic to a target,&lt;/li&gt;
&lt;li&gt;log IPs, User-Agents, headers, methods, and timestamps,&lt;/li&gt;
&lt;li&gt;and view it all in a clean dashboard.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So I built &lt;strong&gt;Redirector OSINT&lt;/strong&gt; – deployable in 30 seconds with pip or Docker.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fltrfbzujtb4kder3z771.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fltrfbzujtb4kder3z771.png" alt=" " width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pip install redirector-osint&lt;br&gt;
redirector run --redirect https://target.com&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;or&lt;/p&gt;

&lt;p&gt;&lt;code&gt;docker pull beladevos/redirector&lt;br&gt;
docker run -p 8000:8000 beladevos/redirector --redirect https://target.com&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;✅ Auto-refreshing dashboard&lt;br&gt;
✅ Filters &amp;amp; exports (CSV/JSON)&lt;br&gt;
✅ REST API &amp;amp; security features (auth, rate limits)&lt;/p&gt;

&lt;p&gt;Use cases: OSINT collection, phishing simulations (defense), red team ops, API testing, analytics.&lt;/p&gt;

&lt;p&gt;👉 GitHub: &lt;a href="https://github.com/beladevo/redirector" rel="noopener noreferrer"&gt;beladevo/redirector&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;👉 Full write-up: &lt;a href="https://omribeladev.medium.com/redirector-osint-the-fastest-way-to-launch-url-redirection-intelligence-collection-c1ea2948809e" rel="noopener noreferrer"&gt;Medium article&lt;/a&gt;&lt;/p&gt;

</description>
      <category>osint</category>
      <category>cybersecurity</category>
      <category>opensource</category>
      <category>python</category>
    </item>
    <item>
      <title>[Stop Fighting the Clock] - How to Control Time in Your Tests Without Hacks</title>
      <dc:creator>beladevo</dc:creator>
      <pubDate>Sun, 06 Jul 2025 11:25:15 +0000</pubDate>
      <link>https://dev.to/beladevo/stop-fighting-the-clock-how-to-control-time-in-your-tests-without-hacks-397c</link>
      <guid>https://dev.to/beladevo/stop-fighting-the-clock-how-to-control-time-in-your-tests-without-hacks-397c</guid>
      <description>&lt;p&gt;Hey everyone 👋&lt;/p&gt;

&lt;p&gt;I wanted to share a little library I’ve been building lately, called &lt;a href="https://www.npmjs.com/package/timewarp-sim" rel="noopener noreferrer"&gt;&lt;code&gt;timewarp-sim&lt;/code&gt;&lt;/a&gt;. If you’ve ever had to test date logic or simulate time passing, you know how frustrating it can be. You either end up waiting forever, fiddling with your system clock, or writing tons of brittle mocks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;timewarp-sim&lt;/strong&gt; solves this cleanly by giving you a &lt;em&gt;deterministic time machine&lt;/em&gt; for your JavaScript and TypeScript code.&lt;/p&gt;




&lt;h2&gt;
  
  
  ✨ What does it do?
&lt;/h2&gt;

&lt;p&gt;✅ Freeze time at a specific moment&lt;br&gt;
✅ Advance time however you like (seconds, hours, even decades)&lt;br&gt;
✅ Travel to any timestamp instantly&lt;br&gt;
✅ &lt;strong&gt;Globally mock &lt;code&gt;Date.now()&lt;/code&gt; and &lt;code&gt;new Date()&lt;/code&gt; so all your dependencies see the same simulated clock&lt;/strong&gt;&lt;br&gt;
✅ Register hooks to react whenever time changes&lt;br&gt;
✅ Unfreeze and return to real time anytime&lt;/p&gt;




&lt;h2&gt;
  
  
  💡 Why should you care?
&lt;/h2&gt;

&lt;p&gt;If you work on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Session or token expiration logic&lt;/li&gt;
&lt;li&gt;Caching and TTL validation&lt;/li&gt;
&lt;li&gt;Recurring jobs (cron-like scheduling)&lt;/li&gt;
&lt;li&gt;Billing or subscription renewals&lt;/li&gt;
&lt;li&gt;Reports that aggregate data by date&lt;/li&gt;
&lt;li&gt;Anything else where time matters&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;…this tool can &lt;strong&gt;save you hours of debugging and testing&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;You no longer have to wait for timeouts to expire or write fragile &lt;code&gt;setTimeout&lt;/code&gt; hacks- just jump forward in time with a single line of code.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚡ Quick Example
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Timewarp&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;timewarp-sim&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Real time:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;

&lt;span class="nx"&gt;Timewarp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;freeze&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Frozen:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;Timewarp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;now&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;

&lt;span class="nx"&gt;Timewarp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;enableGlobalMocking&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Mocked Date.now():&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;now&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;

&lt;span class="nx"&gt;Timewarp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;advance&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;60&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;After 1 hour:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;

&lt;span class="nx"&gt;Timewarp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;travelTo&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;2040-01-01T00:00:00Z&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Traveled to:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;

&lt;span class="nx"&gt;Timewarp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;unfreeze&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nx"&gt;Timewarp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;disableGlobalMocking&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Back to real time:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🌟 Get Involved
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;timewarp-sim&lt;/strong&gt; is open source, and I’d love to see it grow with help from the community!&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://github.com/beladevo/timewarp-sim" rel="noopener noreferrer"&gt;⭐ Star the project on GitHub&lt;/a&gt;&lt;br&gt;
👉 &lt;a href="https://github.com/beladevo/timewarp-sim/issues" rel="noopener noreferrer"&gt;Open issues&lt;/a&gt; for bugs or feature ideas&lt;br&gt;
👉 &lt;a href="https://github.com/beladevo/timewarp-sim/pulls" rel="noopener noreferrer"&gt;Contribute code&lt;/a&gt; if you want to make it even better&lt;/p&gt;

&lt;p&gt;If you find it useful, share it with your teammates or that friend who still uses &lt;code&gt;setTimeout(999999999)&lt;/code&gt; to simulate waiting.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
