Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
@soubai/web-merge
Advanced tools
Declarative client-side web fragments (apps/files) merger using web component APIs
EXPERIMENTAL DO NOT USE IN PRODUCTION
$ npm install @soubai/web-merge
# or
$ yarn add @soubai/web-merge
Then import it in your script
import '@soubai/web-merge'
<script type="module" src="//unpkg.com/@soubai/web-merge"></script>
use <web-merge>
custom element to load you fragment into web application
<web-merge content="./fragments/fragment-1.html"></web-merge>
<web-merge content="./fragments/fragment-2.html"></web-merge>
content: define the source of you fragments (files,urls ...)
<web-merge content="./fragments/fragment-1.html"></web-merge>
<web-merge content="http://localhost:3000"></web-merge>
lazy: allow lazy loading for a fragment
<web-merge lazy content="./fragments/fragment-1.html"></web-merge>
route: define the route of the component that will be loaded when the this route is fired.
<web-merge route='/cart' content="http://127.0.0.1:3000"></web-merge>
Web-merge includes a build-in simple state management system based on event (not Event bus).
The fragment parent
expose a state
class that can help you to mutate and get new store
// fragment-3.html
const { state } = parent;
//initial state
state.init({ count: 0 })
//event name
const COUNT_CHANGE = "countChange";
//Apply side effects
state.on(COUNT_CHANGE, ({ count }) => {
document.querySelector("span.value").textContent = count;
});
//mutations
document.getElementById("inc").addEventListener("click", function () {
state.dispatch(COUNT_CHANGE, ({ count }) => ({ count: count + 1 }));
});
document.getElementById("dec").addEventListener("click", function () {
state.dispatch(COUNT_CHANGE, ({ count }) => ({ count: count - 1 }));
});
Web-merge includes a build-in pushState router that will helps you to load fragments/apps based on route.
The fragment parent
expose a router
class that can help you to perform routing action to load fragments/apps
You need to warper your fragments/apps with web-merge-router
component and define base
attribute as root route of your routing system; Than add route
attribute to your fragments/apps to define the route that will load the fragment
<!-- index.html -->
<web-merge-router base="/examples">
<web-merge route="/" content="./fragments/fragment-6.html"></web-merge>
<web-merge route="/about" content="./fragments/fragment-5.html"></web-merge>
</web-merge-router>
// fragment-5.html
const { router } = parent;
<!-- fragment-5.html -->
<ul>
<li>
<a onclick="router.onNavigate('/')" href="#">Home</a>
</li>
<li>
<a onclick="router.onNavigate('/about')" href="#">About</a>
</li>
</ul>
After cloning package on your local machine :
$ npm install
# start dev server to test examples locally
$ yarn dev
# Build
$ yarn build
FAQs
Declarative custom element for micro-frontend architecture
We found that @soubai/web-merge demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.