
Research
Two Malicious Rust Crates Impersonate Popular Logger to Steal Wallet Keys
Socket uncovers malicious Rust crates impersonating fast_log to steal Solana and Ethereum wallet keys from source code.
@ngxs-labs/attach-action
Advanced tools
⚡️ Attach independent, pure and easy to test Action Handlers to NGXS States.
This package allows to attach ActionHandlers
to State
classes.
To install @ngxs-labs/attach-action
run the following command:
yarn add @ngxs-labs/attach-action
npm install @ngxs-labs/attach-action
Especially large codebases can get the issue of ending up in sprawling and hard to test NGXS-state-classes. Breaking the state into smaller chunks is not always an option, especially when the data is very cohesive and the interaction between it is complex.
Thus we wanted to move actions into independent, testable and simple to grasp files. For this purpose, a small helper function was introduced which allows the declaration of actions which are handled outside of the state class.
Following this approach brought us in the desirable condition to have all actions and usefully grouped selectors in separate classes. Our file structure in large enterprise applications therefore usually looks ruffly like this:
/store
/shop
shop.state.ts
shop.actions.ts
actions/
add-product-to-cart.action.ts
add-product-to-cart.action.spec.ts
fetch-products.action.ts
fetch-products.action.spec.ts
selectors/
products.selector.ts
prices.selector.ts
The responsibility of the state-class itself is just to group und bootstrap all the action declarations:
@State<ShopStateModel>({ name: 'shop', defaults: DEFAULT_SHOP_STATE })
export class ShopState {
constructor(productService: ProductService) {
attachAction(ShopState, AddProductToCartAction, addProductToCart);
attachAction(ShopState, FetchProductsAction, fetchProducts(productService));
attachAction(ShopState, AnotherAction, ...);
attachAction(ShopState, [ActionA, ActionB], ...);
}
}
The actions are just idiomatic (higher-order) functions:
export const addProductToCart =
(ctx: StateContext<ShopStateModel>, act: AddProductToCartAction) => {
ctx.patchState({cart: [act.product]})
}
export const fetchProducts =
(productService: ProductService) =>
(ctx: StateContext<ShopStateModel>, act: FetchProductsAction) => {
productService.fetchProducts().subscribe(products => {
ctx.patchState({products})
});
}
FAQs
Unknown package
The npm package @ngxs-labs/attach-action receives a total of 286 weekly downloads. As such, @ngxs-labs/attach-action popularity was classified as not popular.
We found that @ngxs-labs/attach-action demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 7 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.
Research
Socket uncovers malicious Rust crates impersonating fast_log to steal Solana and Ethereum wallet keys from source code.
Research
A malicious package uses a QR code as steganography in an innovative technique.
Research
/Security News
Socket identified 80 fake candidates targeting engineering roles, including suspected North Korean operators, exposing the new reality of hiring as a security function.