<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[News For Developers | Blog]]></title><description><![CDATA[npm install blog]]></description><link>https://blog.npminstall.com/</link><image><url>https://blog.npminstall.com/favicon.png</url><title>News For Developers | Blog</title><link>https://blog.npminstall.com/</link></image><generator>Ghost 5.82</generator><lastBuildDate>Mon, 17 Nov 2025 19:37:13 GMT</lastBuildDate><atom:link href="https://blog.npminstall.com/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Deno Subhosting, Run User Submitted Javascript Securely]]></title><description><![CDATA[<p>Subhosting simplifies the process of securely running untrusted JavaScript from various customers in a hosted, sandboxed environment. This service is perfect for scenarios such as providing edge functions to users, hosting ecommerce storefronts near customers, and more&#x2014;all while ensuring security and minimal production infrastructure maintenance.</p>
<p>For those hosting</p>]]></description><link>https://blog.npminstall.com/secure-javascript-containers-with-deno-for-running-user-provided-code/</link><guid isPermaLink="false">6672c241be4758f2cf37ddfc</guid><dc:creator><![CDATA[Sysadmin]]></dc:creator><pubDate>Wed, 19 Jun 2024 04:00:00 GMT</pubDate><media:content url="https://blog.npminstall.com/content/images/2024/06/Screenshot-2024-06-19-074406.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.npminstall.com/content/images/2024/06/Screenshot-2024-06-19-074406.png" alt="Deno Subhosting, Run User Submitted Javascript Securely"><p>Subhosting simplifies the process of securely running untrusted JavaScript from various customers in a hosted, sandboxed environment. This service is perfect for scenarios such as providing edge functions to users, hosting ecommerce storefronts near customers, and more&#x2014;all while ensuring security and minimal production infrastructure maintenance.</p>
<p>For those hosting user code, it&apos;s often desirable to make deployments publicly accessible via custom domains like user1.yourcompany.com. With the latest update, managing these custom domains across user deployments has become more straightforward thanks to the new flexible domain associations. This feature allows for programmatic domain management and the attachment of custom domains to deployments via the Subhosting API.</p>
<h2 id="key-features">Key Features</h2>
<h3 id="organization-wide-wildcard-subdomains">Organization-wide Wildcard Subdomains</h3>
<p>Assign different subdomains under a single wildcard domain to various deployments. For example, with the wildcard domain *.example.com, you can allocate foo.example.com to one deployment and bar.example.com to another. This enhanced flexibility supports more sophisticated deployment strategies and simplifies resource management.</p>
<h3 id="variables-for-simplified-domain-management">Variables for Simplified Domain Management</h3>
<p>To streamline the programmatic management and referencing of user deployments, two variables are now available when specifying a domain name to associate with a deployment:</p>
<ul>
<li><code>{deployment.id}</code>: The unique identifier of the deployment.</li>
<li><code>{project.name}</code>: The name of the project associated with the deployment.</li>
</ul>
<p>These variables can be combined with arbitrary strings, provided they result in valid domains under the registered wildcard domain. Examples include:</p>
<ul>
<li><code>{deployment.id}.example.com</code></li>
<li><code>{project.name}.example.com</code></li>
<li><code>{project.name}-{deployment.id}.example.com</code></li>
<li><code>foo-{deployment.id}.example.com</code></li>
<li><code>foo-{deployment.id}-{project.name}.example.com</code></li>
</ul>
<p>When using the deno.dev domain, the allowed formats are limited to:</p>
<ul>
<li><code>{project.name}-{deployment.id}.deno.dev</code></li>
<li><code>{project.name}.deno.dev</code></li>
</ul>
<p>These improvements offer better customization and automation, making it easier to manage and reference deployments programmatically.</p>
<h2 id="practical-usage">Practical Usage</h2>
<h3 id="registering-custom-domains">Registering Custom Domains</h3>
<p>Before attaching custom domains to deployments, you need to register the domain using the <code>POST /organizations/{organizationId}/domains</code> endpoint:</p>
<pre><code class="language-javascript">import { assert } from &quot;jsr:@std/assert/assert&quot;;

const orgId = &quot;your-organization-id&quot;;
const orgToken = &quot;your-organization-token&quot;;

const res = await fetch(
  `https://api.deno.com/v1/organizations/${orgId}/domains`,
  {
    method: &quot;POST&quot;,
    body: JSON.stringify({
      domain: &quot;*.example.com&quot;,
    }),
    headers: {
      &quot;Content-Type&quot;: &quot;application/json&quot;,
      &quot;Authorization&quot;: `Bearer ${orgToken}`,
    },
  },
);

assert(res.ok);
The response includes a dnsRecords field, listing DNS records for setting up a name server.

Issuing TLS Certificates
Next, provision TLS certificates for the domain using the POST /domains/{domainId}/certificates/provision endpoint:

javascript
Copy code
import { assert } from &quot;jsr:@std/assert/assert&quot;;

const orgToken = &quot;your-organization-token&quot;;
// Domain ID from the previous step
const domainId = &quot;your-domain-id&quot;;

const res = await fetch(
  `https://api.deno.com/v1/domains/${domainId}/certificates/provision`,
  {
    method: &quot;POST&quot;,
    headers: {
      &quot;Authorization&quot;: `Bearer ${orgToken}`,
    },
  },
);

assert(res.ok);
Creating a Deployment
Create a new deployment with POST /projects/{projectId}/deployments:

javascript
Copy code
import { assert } from &quot;jsr:@std/assert/assert&quot;;

const projectId = &quot;your-project-id&quot;;
const orgToken = &quot;your-organization-token&quot;;

const res = await fetch(
  `https://api.deno.com/v1/projects/${projectId}/deployments`,
  {
    method: &quot;POST&quot;,
    body: JSON.stringify({
      entryPointUrl: &quot;main.ts&quot;,
      assets: {
        &quot;main.ts&quot;: {
          kind: &quot;file&quot;,
          content: &apos;Deno.serve(() =&gt; new Response(&quot;hello&quot;));&apos;,
        },
      },
      envVars: {},
      domains: [
        &quot;foo.example.com&quot;,
        &quot;{deployment.id}.example.com&quot;,
        &quot;{project.name}-{deployment.id}.deno.dev&quot;,
      ],
    }),
    headers: {
      &quot;Content-Type&quot;: &quot;application/json&quot;,
      &quot;Authorization&quot;: `Bearer ${orgToken}`,
    },
  },
);

assert(res.ok);
</code></pre>
<p>The domains field in the payload specifies the custom domains attached to the deployment. For a deployment ID chonky-dog-57 under the project my-project, the following domains will route to this deployment:</p>
<pre><code class="language-javascript">https://foo.example.com
https://chonky-dog-57.example.com
https://my-project-chonky-dog-57.deno.dev
</code></pre>
<p>Attaching Custom Domains to Existing Deployments<br>
To attach a custom domain to an existing deployment, use PUT /deployments/{deploymentId}/domains/{domain}:</p>
<pre><code class="language-javascript">import { assert } from &quot;jsr:@std/assert/assert&quot;;

const deploymentId = &quot;chonky-dog-57&quot;;
const orgToken = &quot;your-organization-token&quot;;

const extraDomain = &quot;prefix-{project.name}.example.com&quot;;

const res = await fetch(`/deployments/${deploymentId}/domains/${extraDomain}`, {
  method: &quot;PUT&quot;,
  headers: {
    &quot;Authorization&quot;: `Bearer ${orgToken}`,
  },
});

assert(res.ok);
</code></pre>
<p>This will direct <code>https://prefix-my-project.example.com</code> to the chonky-dog-57 deployment. Note that attaching a domain to a deployment automatically detaches it from any previous deployment.</p>
<p>Detaching Domains from Deployments<br>
To detach a domain from a deployment, use DELETE /deployments/{deploymentId}/domains/{domain}:</p>
<pre><code class="language-javascript">import { assert } from &quot;jsr:@std/assert/assert&quot;;

const deploymentId = &quot;chonky-dog-57&quot;;
const orgToken = &quot;your-organization-token&quot;;

const res = await fetch(
  `/deployments/${deploymentId}/domains/foo.example.com`,
  {
    method: &quot;DELETE&quot;,
    headers: {
      &quot;Authorization&quot;: `Bearer ${orgToken}`,
    },
  },
);

assert(res.ok);
</code></pre>
<p>After this, the domain <code>https://foo.example.com</code> will no longer direct to the chonky-dog-57 deployment.</p>
<p>What&#x2019;s Next<br>
Deno subhosting may be a top choice for organizations looking to run user code securely without the hassle of maintaining production infrastructure. We are committed to enhancing Subhosting, making it the easiest way to securely run third-party untrusted code, so you can focus on delivering value to your users.</p>
<p>As Deno continues to evolve, it&apos;s becoming a formidable competitor to Node.js, offering unique features that cater to modern development needs. One notable advancement is the integration of npm packages, which greatly expands Deno&apos;s capabilities and compatibility with existing JavaScript ecosystems. For developers interested in leveraging npm packages within Deno for their private projects, check out this insightful article on <a href="https://blog.npminstall.com/deno-npm-repositories-for-private-projects/">Deno npm packages</a>. This integration signifies a major step forward in Deno&apos;s mission to provide a secure, efficient, and versatile runtime for JavaScript and TypeScript applications.</p>
]]></content:encoded></item><item><title><![CDATA[Deno Version 1.44 Supports Private npm Packages]]></title><description><![CDATA[<p>Deno Land has recently unveiled version 1.44 of Deno, its alternative JavaScript, TypeScript, and WebAssembly runtime that challenges <a href="https://npminstall.com/how-to-install-nodejs?ref=blog.npminstall.com" rel="noreferrer">Node.js</a>. This new release introduces compatibility with private NPM registries, which facilitates the use of proprietary internal packages within Deno through the configuration of an .npmrc file. The update has</p>]]></description><link>https://blog.npminstall.com/deno-npm-repositories-for-private-projects/</link><guid isPermaLink="false">666ae31fbe4758f2cf37ddf0</guid><dc:creator><![CDATA[Sysadmin]]></dc:creator><pubDate>Thu, 13 Jun 2024 04:00:00 GMT</pubDate><media:content url="https://blog.npminstall.com/content/images/2024/06/deno-logo.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.npminstall.com/content/images/2024/06/deno-logo.png" alt="Deno Version 1.44 Supports Private npm Packages"><p>Deno Land has recently unveiled version 1.44 of Deno, its alternative JavaScript, TypeScript, and WebAssembly runtime that challenges <a href="https://npminstall.com/how-to-install-nodejs?ref=blog.npminstall.com" rel="noreferrer">Node.js</a>. This new release introduces compatibility with private NPM registries, which facilitates the use of proprietary internal packages within Deno through the configuration of an .npmrc file. The update has also enhanced the overall performance of the Deno runtime.</p><p>Released on May 30, Deno 1.44 is accessible for upgrade via the command <code>deno upgrade</code> executed in the terminal. The addition of support for private NPM registries is particularly significant as it addresses the needs of many large organizations that operate their own <a href="https://npminstall.com/packages?ref=blog.npminstall.com" rel="noreferrer">NPM registries</a> to handle internal packages more securely. Developers can now configure Deno to retrieve private packages from these registries either through a package.json file or by directly importing packages with npm: specifiers.</p><p>Enhancements in Deno 1.44 also include performance optimizations such as V8 pointer compression, which reduces memory usage by enabling the V8 JavaScript engine to more efficiently store pointers. This improvement is beneficial in environments that handle large numbers of object allocations, resulting in lower memory demands. Other performance upgrades include quicker module loading times, improved startup speeds in AWS Lambda environments, and enhanced language server performance.</p><p>In terms of Node.js compatibility, Deno 1.44 has made strides in supporting the execution of <a href="https://npminstall.com/package/next?ref=blog.npminstall.com" rel="noreferrer">Next.js</a> applications, although some challenges remain. The usage of the setting <code>DENO_FUTURE=1</code> is currently required, but Deno Land anticipates resolving these issues promptly.</p><p>Following the previous Deno 1.43 release, which introduced an improved language server on May 1, Deno 1.44 also adds several other new features and enhancements. These include:</p><ul><li>Integration with gRPC services, allowing connections to platforms like Google Cloud Platform via the @grpc/grpc-js client library.</li><li>Advancements toward stabilizing the Deno standard library.</li><li>Introduction of a stable DenoexitCode API that manages the exit codes of programs.</li><li>Continued performance and stability improvements to the language server, such as caching semantic tokens for open documents and rectifying JSDoc display issues.</li><li>Updates to the FFI (Foreign Function Interface) API which now treats u64 and i64 types from native code as bigint, aligning with JavaScript&#x2019;s approach to handling large integers for improved performance and consistency.</li></ul>]]></content:encoded></item><item><title><![CDATA[Develop a Chat App with NodeJS, React, and Socket.io]]></title><description><![CDATA[<p>Creating a chat application has become increasingly accessible with the powerful tools available in modern web development. In this guide, we&#x2019;ll explore how to build a robust chat app using NodeJS, React, and Socket.io. These three packages, each providing unique functionalities, come together to offer a seamless</p>]]></description><link>https://blog.npminstall.com/develop-a-chat-app-with-nodejs-react-and-socket-io/</link><guid isPermaLink="false">6659ae7276c30eeed545e920</guid><dc:creator><![CDATA[Sysadmin]]></dc:creator><pubDate>Fri, 31 May 2024 04:00:00 GMT</pubDate><media:content url="https://blog.npminstall.com/content/images/2024/05/Screenshot-2024-05-31-070501.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.npminstall.com/content/images/2024/05/Screenshot-2024-05-31-070501.png" alt="Develop a Chat App with NodeJS, React, and Socket.io"><p>Creating a chat application has become increasingly accessible with the powerful tools available in modern web development. In this guide, we&#x2019;ll explore how to build a robust chat app using NodeJS, React, and Socket.io. These three packages, each providing unique functionalities, come together to offer a seamless real-time communication experience. We&apos;ll delve into each package, understand their roles, and see how they can be integrated to develop a fully functional chat application.</p><p><strong>NodeJS</strong> is a runtime environment that allows developers to run JavaScript on the server side. It is designed for building scalable network applications and excels in handling multiple simultaneous connections efficiently. By using NodeJS, you can create the server-side logic for your chat app, manage user connections, and handle data flow between the client and server. <a href="https://npminstall.com/how-to-install-nodejs?ref=blog.npminstall.com" rel="noreferrer">NodeJS</a> provides a non-blocking I/O system that makes it ideal for real-time applications like chat apps.</p><p><strong>React</strong> is a JavaScript library for building user interfaces, particularly single-page applications where data changes dynamically. React enables developers to create reusable UI components, manage state effectively, and render the user interface efficiently. With <a href="https://npminstall.com/package/react?ref=blog.npminstall.com" rel="noreferrer">React</a>, you can build a responsive and interactive front end for your chat application, ensuring that messages are displayed in real-time as they are sent and received.</p><p><strong>Socket.io</strong> is a library that enables real-time, bidirectional communication between web clients and servers. It is built on top of WebSockets and offers fallbacks for older browsers that do not support WebSockets natively. With <a href="https://github.com/socketio/socket.io?ref=blog.npminstall.com" rel="noreferrer">Socket.io</a>, you can implement real-time functionalities in your chat app, such as instant messaging, typing indicators, and presence updates. It handles the complexities of real-time communication, allowing you to focus on building your app&#x2019;s core features.</p><figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/mvEOyEnTiok?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="Build a Chat app with NodeJS, React and Socket.io"></iframe></figure><p>When combined, NodeJS, React, and Socket.io provide a comprehensive stack for building a chat application. NodeJS handles the server-side operations, React manages the client-side interface, and Socket.io facilitates real-time communication between the server and the client. By leveraging these tools, you can create an efficient and responsive chat app where users can communicate in real-time, send messages instantly, and see updates without needing to refresh the page.</p><p>In conclusion, building a chat app with NodeJS, React, and Socket.io is a powerful way to deliver a seamless real-time messaging experience. Each package brings its strengths to the table: NodeJS for server-side logic, React for a dynamic front-end, and Socket.io for real-time communication. By understanding and utilizing these tools together, you can create a chat application that is both robust and user-friendly, providing a solid foundation for further development and feature expansion.</p>]]></content:encoded></item><item><title><![CDATA[Web Frameworks for Node.js: A Comparative Overview]]></title><description><![CDATA[<p>Node.js has revolutionized server-side development with its event-driven, non-blocking I/O model. Among its numerous web frameworks, some stand out due to their popularity, performance, or unique features. This article explores three top web frameworks for Node.js: Express, Fastify, and Socket.IO, along with three additional alternatives to</p>]]></description><link>https://blog.npminstall.com/web-frameworks-for-node-js-a-comparative-overview/</link><guid isPermaLink="false">66586ba976c30eeed545e8ff</guid><dc:creator><![CDATA[Sysadmin]]></dc:creator><pubDate>Thu, 30 May 2024 04:00:00 GMT</pubDate><media:content url="https://blog.npminstall.com/content/images/2024/05/Screenshot-2024-05-30-081335.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.npminstall.com/content/images/2024/05/Screenshot-2024-05-30-081335.png" alt="Web Frameworks for Node.js: A Comparative Overview"><p>Node.js has revolutionized server-side development with its event-driven, non-blocking I/O model. Among its numerous web frameworks, some stand out due to their popularity, performance, or unique features. This article explores three top web frameworks for Node.js: Express, Fastify, and Socket.IO, along with three additional alternatives to consider for your next project.</p><h3 id="express">Express</h3><p>Express is the most popular, fast, and minimalist web framework for Node.js backends. It provides a robust set of features to develop web and mobile applications, making it a go-to choice for developers.</p><p><strong>Example:</strong></p><pre><code>const express = require(&apos;express&apos;);
const app = express();
app.get(&apos;/&apos;, (req, res) =&gt; {
  res.send(&apos;Hello World&apos;);
});
app.listen(3000, () =&gt; {
  console.log(&apos;Server is running on port 3000&apos;);
});
</code></pre>
<h3 id="fastify">Fastify</h3><p>Fastify is one of the fastest web frameworks focused on providing the best developer experience with the least overhead. It boasts a powerful plugin architecture and a high-performance HTTP server.</p><p><strong>Example:</strong></p><pre><code>const fastify = require(&apos;fastify&apos;)({
  logger: true
});

fastify.get(&apos;/&apos;, async (request, reply) =&gt; {
  reply.type(&apos;application/json&apos;).code(200);
  return { hello: &apos;world&apos; };
});

fastify.listen(3000, (err, address) =&gt; {
  if (err) throw err;
  fastify.log.info(`Server is running on ${address}`);
});
</code></pre>
<h3 id="socketio">Socket.IO</h3><p>Socket.IO enables real-time, bidirectional, event-based communication using long-polling or WebSockets with disconnection detection and auto-reconnection support. It&apos;s ideal for applications requiring real-time updates.</p><p><strong>Example:</strong></p><pre><code>const server = require(&apos;http&apos;).createServer();
const io = require(&apos;socket.io&apos;)(server);

io.on(&apos;connection&apos;, (client) =&gt; {
  client.on(&apos;event&apos;, (data) =&gt; { /* &#x2026; */ });
  client.on(&apos;disconnect&apos;, () =&gt; { /* &#x2026; */ });
});

server.listen(3000, () =&gt; {
  console.log(&apos;Server is running on port 3000&apos;);
});
</code></pre>
<h3 id="koa">Koa</h3><p>Koa is a web framework designed by the creators of Express, aiming to be smaller, more expressive, and robust. It leverages async functions for enhanced error handling and cleaner code.</p><p><strong>Example:</strong></p><pre><code>const Koa = require(&apos;koa&apos;);
const app = new Koa();

app.use(async ctx =&gt; {
  ctx.body = &apos;Hello World&apos;;
});

app.listen(3000, () =&gt; {
  console.log(&apos;Server is running on port 3000&apos;);
});
</code></pre>
<h3 id="nestjs">NestJS</h3><p>NestJS is a progressive Node.js framework for building efficient, reliable, and scalable server-side applications. It uses TypeScript by default and combines elements of OOP (Object-Oriented Programming), FP (Functional Programming), and FRP (Functional Reactive Programming).</p><p><strong>Example:</strong></p><pre><code>import { NestFactory } from &apos;@nestjs/core&apos;;
import { AppModule } from &apos;./app.module&apos;;

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  await app.listen(3000);
}
bootstrap();
</code></pre>
<h3 id="hapi">Hapi</h3><p>Hapi.js is a rich framework for building applications and services. Known for its powerful plugin system, Hapi.js simplifies the development of complex applications with a high degree of customization.</p><p><strong>Example:</strong></p><pre><code>const Hapi = require(&apos;@hapi/hapi&apos;);
const init = async () =&gt; {
  const server = Hapi.server({
    port: 3000,
    host: &apos;localhost&apos;
  });
  server.route({
    method: &apos;GET&apos;,
    path: &apos;/&apos;,
    handler: (request, h) =&gt; {
      return &apos;Hello World&apos;;
    }
  });
  await server.start();
  console.log(&apos;Server is running on port 3000&apos;);
};
init();
</code></pre>
<h3 id="conclusion">Conclusion</h3><p>Choosing the right web framework for your Node.js application depends on your specific needs. The <a href="https://npminstall.com/package/express?ref=blog.npminstall.com" rel="noreferrer">Express Node.js web application framework</a> remains a versatile and straightforward choice, Fastify offers performance and developer-friendliness, and Socket.IO excels in real-time applications. Koa, NestJS, and Hapi provide additional robust options with unique strengths, from minimalism and modern design to enterprise-grade features. Evaluate your project requirements and consider these frameworks to enhance your Node.js development experience.</p>]]></content:encoded></item><item><title><![CDATA[Stay Secure with the Latest Git Update: Fixes for Five Critical Vulnerabilities]]></title><description><![CDATA[<p>The latest Git update has introduced crucial fixes for five significant vulnerabilities that have been discovered in recent versions of the software. This article dives into the technical specifics of these vulnerabilities and highlights the importance of updating to the latest version to ensure your repositories and systems remain secure.</p>]]></description><link>https://blog.npminstall.com/stay-secure-with-the-latest-git-update-fixes-for-five-critical-vulnerabilities/</link><guid isPermaLink="false">66571ba276c30eeed545e8f5</guid><dc:creator><![CDATA[Sysadmin]]></dc:creator><pubDate>Wed, 29 May 2024 04:00:00 GMT</pubDate><media:content url="https://blog.npminstall.com/content/images/2024/05/Screenshot-2024-05-29-081325.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.npminstall.com/content/images/2024/05/Screenshot-2024-05-29-081325.png" alt="Stay Secure with the Latest Git Update: Fixes for Five Critical Vulnerabilities"><p>The latest Git update has introduced crucial fixes for five significant vulnerabilities that have been discovered in recent versions of the software. This article dives into the technical specifics of these vulnerabilities and highlights the importance of updating to the latest version to ensure your repositories and systems remain secure.</p><h3 id="cve-2024-32002-critical-windows-macos-remote-code-execution-via-submodule-cloning">CVE-2024-32002 (Critical, Windows &amp; macOS): Remote Code Execution via Submodule Cloning</h3><p><strong>Impact:</strong> Git repositories with submodules can be manipulated to execute a malicious hook during a clone operation. This vulnerability allows an attacker to place a hook in the <code>.git/</code> directory of a submodule, which is executed without user intervention, leading to Remote Code Execution (RCE).</p><p><strong>Technical Details:</strong> When a repository with submodules is cloned, Git could be tricked into writing files into the submodule&apos;s <code>.git/</code> directory instead of its worktree. This can include a malicious hook script that executes during the clone, compromising the user&apos;s system.</p><p><strong>Patched Versions:</strong> v2.45.1, v2.44.1, v2.43.4, v2.42.2, v2.41.1, v2.40.2, v2.39.4</p><p><strong>Workarounds:</strong> Users can mitigate this by disabling symbolic link support in Git (<code>git config --global core.symlinks false</code>). Additionally, avoid cloning repositories from untrusted sources.</p><h3 id="cve-2024-32004-high-multi-user-machines-arbitrary-code-execution-via-local-repository">CVE-2024-32004 (High, Multi-User Machines): Arbitrary Code Execution via Local Repository</h3><p><strong>Impact:</strong> An attacker can craft a local repository that, when cloned, executes arbitrary code on the user&apos;s machine.</p><p><strong>Technical Details:</strong> This vulnerability exploits the way Git handles local repositories. By preparing a repository with specific characteristics, an attacker can ensure that cloning the repository will run arbitrary code, potentially compromising the system.</p><p><strong>Patched Versions:</strong> v2.45.1, v2.44.1, v2.43.4, v2.42.2, v2.41.1, v2.40.2, v2.39.4</p><p><strong>Workarounds:</strong> Avoid cloning repositories from untrusted local sources.</p><h3 id="cve-2024-32465-high-all-setups-bypassing-protections-with-zip-files">CVE-2024-32465 (High, All Setups): Bypassing Protections with .zip Files</h3><p><strong>Impact:</strong> Cloning from .zip files containing Git repositories can bypass Git&apos;s protections, potentially allowing unsafe hooks to execute.</p><p><strong>Technical Details:</strong> The vulnerability arises when Git repositories are distributed as .zip files. Git&#x2019;s built-in protections against unsafe operations can be circumvented, allowing attackers to include malicious hooks that execute within the context of the repository.</p><p><strong>Patched Versions:</strong> v2.45.1, v2.44.1, v2.43.4, v2.42.2, v2.41.1, v2.40.2, v2.39.4</p><p><strong>Workarounds:</strong> Do not use Git in repositories obtained via archives from untrusted sources.</p><h3 id="cve-2024-32020-low-multi-user-machines-hard-link-manipulation-in-cloned-repositories">CVE-2024-32020 (Low, Multi-User Machines): Hard-Link Manipulation in Cloned Repositories</h3><p><strong>Impact:</strong> Local clones on the same disk can allow untrusted users to modify hard-linked files in the cloned repository&#x2019;s object database.</p><p><strong>Technical Details:</strong> When cloning a local repository on the same disk, Git creates hard links for efficiency. If the source repository is owned by an untrusted user, these hard links can be manipulated after the clone, leading to potential corruption or malicious changes.</p><p><strong>Patched Versions:</strong> v2.45.1, v2.44.1, v2.43.4, v2.42.2, v2.41.1, v2.40.2, v2.39.4</p><p><strong>Workarounds:</strong> Be cautious when cloning repositories on multi-user machines and ensure the source repository is trusted.</p><h3 id="cve-2024-32021-low-multi-user-machines-symlink-exploitation-in-local-clones">CVE-2024-32021 (Low, Multi-User Machines): Symlink Exploitation in Local Clones</h3><p><strong>Impact:</strong> Cloning a local repository with symlinks can result in hard-linking to arbitrary files in the objects/ directory.</p><p><strong>Technical Details:</strong> Git&#x2019;s optimizations for local cloning include creating hard links to object files. This can be exploited if the repository contains symlinks, allowing an attacker to create hard links to arbitrary files, thus potentially accessing or modifying sensitive data.</p><p><strong>Patched Versions:</strong> v2.45.1, v2.44.1, v2.43.4, v2.42.2, v2.41.1, v2.40.2, v2.39.4</p><p><strong>Workarounds:</strong> Avoid cloning repositories with symlinks from untrusted sources and disable local optimizations (<code>--no-local</code>).</p><h3 id="conclusion">Conclusion</h3><p>These vulnerabilities highlight the importance of keeping your Git installation up to date. The latest patches address critical issues that could otherwise compromise the security and integrity of your repositories. Update to the latest version of Git immediately to protect your development environment from these potential threats.</p>]]></content:encoded></item><item><title><![CDATA[Protecting Your Codebase with GitHub's Secret Scanning]]></title><description><![CDATA[<p>In the world of software development, maintaining security is paramount. One critical aspect of this is managing secrets&#x2014;tokens, keys, and other sensitive information that should never be exposed in your code repositories. GitHub has implemented a robust solution to help developers avoid accidental exposure of secrets, particularly within</p>]]></description><link>https://blog.npminstall.com/protecting-your-npm-packages-with-githubs-secret-scanning/</link><guid isPermaLink="false">6655d37676c30eeed545e8e9</guid><dc:creator><![CDATA[Sysadmin]]></dc:creator><pubDate>Tue, 28 May 2024 04:00:00 GMT</pubDate><media:content url="https://blog.npminstall.com/content/images/2024/05/Screenshot-2024-05-28-085309.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.npminstall.com/content/images/2024/05/Screenshot-2024-05-28-085309.png" alt="Protecting Your Codebase with GitHub&apos;s Secret Scanning"><p>In the world of software development, maintaining security is paramount. One critical aspect of this is managing secrets&#x2014;tokens, keys, and other sensitive information that should never be exposed in your code repositories. GitHub has implemented a robust solution to help developers avoid accidental exposure of secrets, particularly within npm packages.</p><h2 id="how-githubs-secret-scanning-works">How GitHub&apos;s Secret Scanning Works</h2><p>GitHub&apos;s secret scanning automatically detects leaked secrets across all public packages on the npm registry. If a potential secret is detected, GitHub notifies the service provider that issued the secret. The service provider then validates the string and decides whether to revoke the secret, issue a new one, or contact the committer directly. Importantly, package maintainers do not receive direct alerts from these detections, which helps streamline the response process.</p><h2 id="features-of-githubs-secret-scanning">Features of GitHub&apos;s Secret Scanning</h2><h3 id="secret-scanning-alerts-for-partners">Secret Scanning Alerts for Partners</h3><p>GitHub scans all public repositories and <a href="https://npminstall.com/packages?ref=blog.npminstall.com" rel="noreferrer">npm packages</a> for known secret patterns provided by its partners. When a secret is detected, it is reported to the relevant service provider. This automatic scanning helps mitigate the risk of leaked secrets being misused.</p><h3 id="secret-scanning-alerts-for-users">Secret Scanning Alerts for Users</h3><p>Secret scanning alerts are available for free on all public repositories. Users can enable this feature to receive alerts when a secret is detected. This scanning extends to all branches and the entire Git history, ensuring thorough coverage. The scanning also includes content in issues, pull requests, and GitHub Discussions, although this is currently in beta.</p><h3 id="custom-secret-patterns">Custom Secret Patterns</h3><p>Organizations using GitHub Enterprise Cloud can define custom secret scanning patterns, allowing them to tailor the scanning process to their specific needs. This feature is part of GitHub Advanced Security, which provides enhanced security capabilities for private and internal repositories.</p><h3 id="push-protection">Push Protection</h3><p>GitHub also offers push protection, which prevents contributors from accidentally committing secrets. If a secret is detected during a push, the contributor must remove it or bypass the protection with appropriate justification. This feature helps maintain security from the moment code is pushed to the repository.</p><h2 id="enabling-and-managing-secret-scanning">Enabling and Managing Secret Scanning</h2><p>To enable secret scanning, repository administrators and organization owners can navigate to the security settings of their repository or organization. Once enabled, any detected secrets will generate alerts visible in the repository&apos;s Security tab. These alerts can be managed and resolved by the relevant team members.</p><h3 id="notifications-and-alerts">Notifications and Alerts</h3><p>GitHub provides multiple ways to configure notifications for secret scanning alerts. Users can receive email alerts, view alerts in the repository&apos;s Security tab, and access alerts via the REST API. This flexibility ensures that alerts are promptly addressed, reducing the risk of secret exposure.</p><h2 id="conclusion">Conclusion</h2><p>GitHub&apos;s secret scanning is a powerful tool for enhancing the security of npm packages and other public repositories. By automatically detecting and managing leaked secrets, it helps developers and organizations protect their sensitive information and maintain the integrity of their projects. Whether you are a solo developer or part of a large organization, enabling secret scanning is a crucial step in securing your code and preventing unauthorized access to your services.</p>]]></content:encoded></item><item><title><![CDATA[Fullstack React Development With Next.js]]></title><description><![CDATA[<p>Next.js, a robust framework built on top of React.js, continues to dominate web development in 2024 due to its comprehensive approach to building modern web applications. React.js, the underlying library, is renowned for its efficient rendering and flexible component model. It allows developers to build high-performance, dynamic</p>]]></description><link>https://blog.npminstall.com/fullstack-react-development-with-next-js/</link><guid isPermaLink="false">6652813dc254e5eb363f190a</guid><dc:creator><![CDATA[Sysadmin]]></dc:creator><pubDate>Sun, 26 May 2024 04:00:00 GMT</pubDate><media:content url="https://blog.npminstall.com/content/images/2024/05/Screenshot-2024-05-25-204613.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.npminstall.com/content/images/2024/05/Screenshot-2024-05-25-204613.png" alt="Fullstack React Development With Next.js"><p>Next.js, a robust framework built on top of React.js, continues to dominate web development in 2024 due to its comprehensive approach to building modern web applications. React.js, the underlying library, is renowned for its efficient rendering and flexible component model. It allows developers to build high-performance, dynamic user interfaces with ease. For those looking to integrate React into their projects, more information can be found on the <a href="https://npminstall.com/package/react?ref=blog.npminstall.com" rel="noreferrer">React.js package page</a>.</p><p>One of the key reasons for Next.js&apos;s popularity is its out-of-the-box features, which include server-side rendering, static site generation, and automatic code splitting. These features make Next.js exceptionally well-suited for creating fast, SEO-friendly web pages that perform well on all devices. Server-side rendering, in particular, helps improve the SEO of web applications by ensuring that content is fully crawlable by search engine bots, a critical requirement for achieving higher rankings in search results.</p><p>Next.js also simplifies the routing process with a filesystem-based routing mechanism. Unlike traditional React applications where routing needs to be handled explicitly, Next.js automatically routes files based on their location in the <code>pages</code> directory. This convention over configuration approach not only speeds up development but also reduces the chance of errors.</p><p>Another significant advantage is its API routes feature, which allows developers to write server-side logic to handle various backend functionalities directly within the Next.js application. This integration of front-end and backend simplifies development workflows and reduces the need to manage separate backend services. For comprehensive details on the latest features of Next.js, interested developers should visit the <a href="https://npminstall.com/package/next?ref=blog.npminstall.com" rel="noreferrer">Next.js package page</a>.</p><p>Moreover, the Next.js community and ecosystem have grown substantially, offering a wide range of plugins, integrations, and tools that enhance developer productivity and application capabilities. This thriving community not only fosters innovation and continuous improvement of the framework but also provides extensive support and learning resources, making it easier for new developers to get started and for experienced developers to advance their skills.</p><p>In conclusion, the combination of React.js&apos;s robust feature set and Next.js&apos;s enhancements for performance, SEO, and developer experience make it a compelling choice for web developers in 2024. Its continued evolution and the strong community support ensure that it remains a leading choice for building modern web applications.</p>]]></content:encoded></item><item><title><![CDATA[Highlights of Vercel Ship 2024 for Developers]]></title><description><![CDATA[<h3 id="vercel-ship-2024-a-frontend-revolution-in-nyc">Vercel Ship 2024: A Frontend Revolution in NYC</h3><p>I had the pleasure of being among the nearly 1,000 attendees at Vercel Ship, held in the bustling heart of New York City. The event, now in its second year, was a vivid showcase of innovation and collaboration in the world</p>]]></description><link>https://blog.npminstall.com/shipping-production-code-with-next-js-and-vercel/</link><guid isPermaLink="false">665281e5c254e5eb363f1912</guid><dc:creator><![CDATA[Sysadmin]]></dc:creator><pubDate>Sun, 26 May 2024 04:00:00 GMT</pubDate><media:content url="https://blog.npminstall.com/content/images/2024/05/Screenshot-2024-05-25-203534.png" medium="image"/><content:encoded><![CDATA[<h3 id="vercel-ship-2024-a-frontend-revolution-in-nyc">Vercel Ship 2024: A Frontend Revolution in NYC</h3><img src="https://blog.npminstall.com/content/images/2024/05/Screenshot-2024-05-25-203534.png" alt="Highlights of Vercel Ship 2024 for Developers"><p>I had the pleasure of being among the nearly 1,000 attendees at Vercel Ship, held in the bustling heart of New York City. The event, now in its second year, was a vivid showcase of innovation and collaboration in the world of frontend development.</p><h4 id="embracing-the-power-of-the-frontend-cloud">Embracing the Power of the Frontend Cloud</h4><p>The theme of this year&#x2019;s Vercel Ship was the &quot;power of the frontend cloud,&quot; which was palpably felt through the introduction of groundbreaking features and tools. The event emphasized the growing ecosystem, seamless integrations, and the collaborative efforts of teams pushing the boundaries of web development.</p><figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/roRx0b_VXsU?start=135&amp;feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="Vercel Ship 2024 Keynote &amp; AI Panel"></iframe></figure><h4 id="key-announcements-and-features">Key Announcements and Features</h4><ol><li><strong>Next.js and Platform Integrations</strong>: A significant highlight was the improved platform and Next.js integrations for feature flags. These integrations are now deeply embedded within Vercel Web Analytics, allowing developers to view impacts directly tied to active feature flags.</li><li><strong>Vercel Firewall</strong>: The newly introduced Vercel Firewall was a standout announcement. It provides robust tools to log, block, and challenge malicious traffic with an ease of management that is simply unmatched. With the ability to configure rules based on over 15 fields and global propagation in under 300 milliseconds, it sets a new standard in web security.</li><li><strong>Vercel Toolbar Enhancements</strong>: The Vercel Toolbar received exciting upgrades, including an Open Graph preview and accessibility audits. These tools are designed to enhance both the developer experience and the end-user interaction, ensuring compliance with the latest web standards.</li><li><strong>Next.js 15 Release Candidate</strong>: We also got a first look at the Next.js 15 Release Candidate, which introduces several innovative features like support for React 19, improved caching mechanisms, and experimental support for partial prerendering.</li><li><strong>AI-Powered Development</strong>: Perhaps one of the most futuristic introductions was v0 and the Vercel AI SDK. These tools are designed to transform the way developers build applications by enabling the generation of React code from simple text prompts and crafting AI-driven user experiences.</li></ol><h4 id="experience-and-collaborative-spirit">Experience and Collaborative Spirit</h4><p>Attending Vercel Ship 2024 was not just about witnessing the unveiling of new products but also about experiencing the collaborative spirit of the developer community. The workshops, keynotes, and side discussions brimmed with ideas and shared ambitions to drive the web forward.</p><h4 id="looking-ahead">Looking Ahead</h4><p>As I reflect on the event, it&apos;s clear that Vercel is not just facilitating development but is actively shaping the future of how we build on the web. With tools that enhance speed, security, and collaboration, Vercel is ensuring that frontend developers have what they need to lead at the edge of innovation.</p><p>To all my fellow developers and tech enthusiasts who missed this year&apos;s event, I highly recommend watching the recorded sessions and keynotes, which are filled with insightful discussions and demonstrations of the new features. Vercel Ship has truly set a new benchmark for what we can expect in the realm of frontend development. Let&#x2019;s continue to innovate and transform the web together.</p>]]></content:encoded></item><item><title><![CDATA[Manifest confusion, a hack waiting to happen]]></title><description><![CDATA[<p>Inaction plagues cybersecurity efforts almost a year after initial reports of npm manifest confusion hacks, a technique where discrepancies between the npm registry entries and the actual package content can be exploited. There remains a stark lack of significant action to safeguard against such vulnerabilities. Despite initial warnings, developers continue</p>]]></description><link>https://blog.npminstall.com/manifest-confusion-a-hack-waiting-to-happen/</link><guid isPermaLink="false">665331fa76c30eeed545e8d7</guid><dc:creator><![CDATA[Sysadmin]]></dc:creator><pubDate>Sun, 26 May 2024 04:00:00 GMT</pubDate><media:content url="https://blog.npminstall.com/content/images/2024/05/image.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://blog.npminstall.com/content/images/2024/05/image.jpg" alt="Manifest confusion, a hack waiting to happen"><p>Inaction plagues cybersecurity efforts almost a year after initial reports of npm manifest confusion hacks, a technique where discrepancies between the npm registry entries and the actual package content can be exploited. There remains a stark lack of significant action to safeguard against such vulnerabilities. Despite initial warnings, developers continue to show laxity in scrutinizing their project dependencies.</p><p>This vulnerability was highlighted by JFrog&apos;s recent uncovering of over 800 npm packages exhibiting mismatches between their registry metadata and actual content. Of these, 18 were specifically crafted to abuse manifest confusion, a method that could allow attackers to execute harmful code on a developer&#x2019;s system by misleading them with altered package metadata.</p><p>Darcy Clarke initially reported this issue in July 2023, revealing how attackers could deceive both developers and auditing tools by altering the manifest file submitted during the package publishing process. The npm system, which does not verify if the manifest file within the tarball (package.json) corresponds with the manifest data presented at the server during publishing, becomes a gateway for installing malicious dependencies.</p><p>Despite the apparent threat, the majority of these discrepancies are from packages that seem to serve as proofs of concept rather than being deployed in actual attacks. This indicates a concerning complacency within the development community towards such potential security breaches.</p><p>The adoption of packages with unknown dependencies represents a significant risk in software development, particularly when these dependencies come from repositories that may not enforce strict security standards. Developers often pull in libraries and tools without a full understanding of their dependency trees, which can include numerous other libraries, each with its own potential vulnerabilities. This cascading effect means that even a single insecure package in the dependency chain can compromise the entire application. Furthermore, development or build scripts included within these packages can execute arbitrary code when the packages are installed or built, potentially leading to inadvertent execution of malicious code. This poses a serious security threat, especially in environments where dependency audits are not regularly performed, or where dependencies are automatically updated without thorough review.</p><p>Enforcing the use of secure code versions in development projects is crucial, yet many teams do not opt-in to practices that would require such measures. Without mandatory checks and balances, such as signing packages, pinning dependencies to specific, vetted versions, or using package locks to ensure reproducibility, projects are left vulnerable to attacks through dependency chains. The lack of these enforcement mechanisms often leads to scenarios where outdated or compromised libraries remain in use, exposing applications to known vulnerabilities that are otherwise preventable. This oversight underscores the need for development teams to adopt and rigorously apply security best practices around dependency management, including regular audits, updating dependencies to incorporate security patches, and employing tools that can detect and mitigate risks associated with third-party code.</p><p>The persistent vulnerability underscores a critical need for developers to adopt more rigorous validation processes for package dependencies, ensuring they are secure and trustworthy before integration. Without such measures, the community remains at risk from attacks exploiting these overlooked discrepancies.</p>]]></content:encoded></item><item><title><![CDATA[ChatGPT Fails to Write Its Own Code]]></title><description><![CDATA[<p>The irony of GPT-4 failing to write its own integrations must have gone over Sam Altman&apos;s head. For months we have been frustrated by OpenAI&apos;s apparent lack of ability to write code for its own implementations. It will provide you with deprecated code, incorrect versions, and</p>]]></description><link>https://blog.npminstall.com/chatgpt-fails-to-use-openai-api/</link><guid isPermaLink="false">665272c61729f3df4465d187</guid><dc:creator><![CDATA[Sysadmin]]></dc:creator><pubDate>Sat, 25 May 2024 04:00:00 GMT</pubDate><media:content url="https://blog.npminstall.com/content/images/2024/05/DALL-E-2024-05-25-19.57.24---Digital-art-of-a-broken-keyboard.-The-image-features-a-scattered-arrangement-of-keys--some-keys-detached-and-lying-separately.-The-keyboard-itself-has.webp" medium="image"/><content:encoded><![CDATA[<img src="https://blog.npminstall.com/content/images/2024/05/DALL-E-2024-05-25-19.57.24---Digital-art-of-a-broken-keyboard.-The-image-features-a-scattered-arrangement-of-keys--some-keys-detached-and-lying-separately.-The-keyboard-itself-has.webp" alt="ChatGPT Fails to Write Its Own Code"><p>The irony of GPT-4 failing to write its own integrations must have gone over Sam Altman&apos;s head. For months we have been frustrated by OpenAI&apos;s apparent lack of ability to write code for its own implementations. It will provide you with deprecated code, incorrect versions, and a sense of baffling frustration as their flagship product ChatGPT fails to produce, even on the upgraded $20/mo subscription plan.</p><p>This has led to a significant portion of the developer community vocalizing their concerns on various forums and social media platforms. Many have expressed disappointment, noting that the AI, despite its advanced capabilities and understanding of complex topics, struggles with up-to-date technical accuracy in its code suggestions. Developers expect reliable tools that streamline their workflow, not complicate it further with outdated or erroneous code. As OpenAI continues to evolve, it&apos;s crucial for the team to prioritize enhancing the AI&apos;s coding capabilities, ensuring it aligns with the latest programming standards and practices. This not only enhances user satisfaction but also reinforces the utility of AI in professional software development environments.</p><p>To mitigate these challenges and to truly harness the potential of OpenAI in your projects, it&apos;s important for developers to access accurate and up-to-date resources. For those looking to integrate OpenAI effectively, consider visiting <a href="https://npminstall.com/openai-node-api-library?ref=blog.npminstall.com" rel="noreferrer">how to use OpenAI Node API library</a>, a comprehensive guide that provides crucial information on utilizing the OpenAI Node API Library. This resource is designed to help you navigate through the complexities of API integration, ensuring that you can maximize the capabilities of the technology in your applications.</p><p>In conclusion, while the journey of integrating AI like GPT-4 into development projects has been fraught with hurdles, the future holds promise. OpenAI is continuously improving, driven by feedback from its user community and ongoing advancements in AI research. For developers, staying informed and utilizing well-maintained resources will be key to overcoming integration challenges. As AI technologies evolve, they are set to become even more indispensable tools in the developer&apos;s toolkit, reshaping the landscape of software development with ever-increasing efficiency and sophistication.</p>]]></content:encoded></item></channel></rss>