Security News
JSR Working Group Kicks Off with Ambitious Roadmap and Plans for Open Governance
At its inaugural meeting, the JSR Working Group outlined plans for an open governance model and a roadmap to enhance JavaScript package management.
@grlt-hub/app-compose
Advanced tools
Create scalable, module-based applications with ease.
Modern applications require a modular structure to ensure flexibility and adapt to business needs. Building a truly modular system inevitably brings the challenge of bringing all components together. In this process, it’s critical to manage the connection flow: loading one module first, then another, while controlling their dependencies. Complexity increases when it becomes necessary to disable parts of the system without leaving traces in the code (such as if/else
statements) and without disrupting the operation of other components.
app-compose
provides the ability not only to flexibly disable modules on demand but also to completely exclude their code from loading when they are turned off. Moreover, all dependencies of a disabled module are also automatically excluded, which helps save resources and maintain high application performance.
There are three entities: users, accounts, and wallets.
If the user exists, then the accounts entity should be started. If the accounts entity is done, then the wallets entity should be started.
import { createContainer, compose } from '@grlt-hub/app-compose';
// wrap the module in a container
const user = createContainer({
id: 'user',
start: async () => {
const data = await fetchUser();
return { api: { data } };
},
});
const accounts = createContainer({
id: 'accounts',
dependsOn: [user],
start: async ({ user }) => {
const data = await fetchAccounts({ id: user.data.id });
return { api: { data } };
},
enable: ({ user }) => user.data.id !== null,
});
const wallets = createContainer({
id: 'wallets',
dependsOn: [accounts],
start: () => ({ api: null }),
});
// up the containers
await compose.up([user, wallets, accounts]);
// { user: 'idle', accounts: 'idle', wallets: 'idle' }
// { user: 'pending', accounts: 'idle', wallets: 'idle' }
// { user: 'done', accounts: 'idle', wallets: 'idle' }
//
/* if user.data.id !== null */
/** { user: 'done', accounts: 'pending', wallets: 'idle' } **/
/** { user: 'done', accounts: 'done', wallets: 'pending' } **/
/** { user: 'done', accounts: 'done', wallets: 'done' } **/
//
/* else */
/** { user: 'done', accounts: 'off', wallets: 'off' } **/
//
// compose.up done
The library offers convenient functions for creating and composing modules into a single system. Each module is encapsulated in a container with a clear configuration, including parameters like id, dependsOn, optionalDependsOn, start, and enable. Developers describe containers and launch them using compose.up
fn, without the need to worry about the order of execution. This approach makes working with containers intuitive and close to natural language.
For additional information, guides and api reference visit documentation site.
1.0.0
createContainer
fncompose.up
fnFAQs
Create scalable, module-based applications with ease.
The npm package @grlt-hub/app-compose receives a total of 194 weekly downloads. As such, @grlt-hub/app-compose popularity was classified as not popular.
We found that @grlt-hub/app-compose demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers 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.
Security News
At its inaugural meeting, the JSR Working Group outlined plans for an open governance model and a roadmap to enhance JavaScript package management.
Security News
Research
An advanced npm supply chain attack is leveraging Ethereum smart contracts for decentralized, persistent malware control, evading traditional defenses.
Security News
Research
Attackers are impersonating Sindre Sorhus on npm with a fake 'chalk-node' package containing a malicious backdoor to compromise developers' projects.