npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

rflib

v5.0.1

Published

Salesforce library for improving the reliability of your org

Downloads

16

Readme

Reliability Force

Build Status GitHub NPM package version codecov

The goal of this library is to help developers to create clean, production-ready code with a high level of operational supportability.

This library is inspired by Dan Appleman's (see Advanced Apex Programming) logging design pattern to collect better diagnostic information when dealing with errors in your Apex classes. This library expands his concepts to provide detailed log information from Lightning Components and Lightning Web Components, giving developers more visibility into the execution path on the client side, especially when dealing with production issues. The library can be configured to automatically report any unexpected errors through Salesforce's latest technologies such as Platform Events.

Key Features

The following lists describe some of the key features of rflib.

Logging Framework (package RFLIB):

  • Logger for LWC and Aura, which publishes logs the same way as Apex
  • Configuration through Custom Settings allowing for different log configurations between users
  • Aggregation of log statements when reporting
  • Using Platform Events for reporting of log statements
  • Support Batched Logging for when DML statements are not supported
  • Log Archive using Big Objects
  • Dashboard for all Object and Field permissions for Profiles and Permission Sets
  • Supports logging in Flow and Process Builder
  • Supports Salesforce Functions (NodeJS only)
  • Display of platform details (Governor Limits, browser & NodeJS process details) for every Log Event

Feature Switches (package RFLIB-FS):

  • Fully configured using Custom Metadata
  • Supports hierarchical structure (similar to Custom Settings) to override settings at the profile or user level
  • Fully supported in Flow Builder through Get Records or Apex Action

Trigger Framework (package RFLIB-TF):

  • Fully decoupled framework, trigger handlers work in isolation
  • Recursion tracking to allow for easy prevention of multiple executions
  • Fully configurable trigger management (activation, order, error handling, etc) using Custom Metadata Types
  • Framework for Retryable Actions using Platform Events for asynchronous actions

Deploy

The best way to add RFLIB to your environment is by installing the unlocked package.

Alternatively, you can either clone the repository and use 'sfdx force:source:deploy' to deploy this library to your Sandbox or use the Deploy to Salesforce button below to deploy it directly into your org.

Please check the CHANGELOG file for versions, install links and package aliases.

To install package via browser:

https://login.salesforce.com/packaging/installPackage.apexp?p0=<PACKAGE_VERSION_ID>

To install package via SFDX CLI Plugin:

sfdx force:package:install -p <Package ID> -w 10 -s AdminsOnly -u <your org alias>

To deploy code:

To install the logger in a Salesforce Function using NodeJS:

npm install --save rflib

See the NPM Package Registry record for more details.

Documentation

Documentation such as "How To's" and more can be found in the Wiki of this repository.

Log Event Dashboard

Review any log events sent within the last 72 hours or receive new log events in real-time. The dashboard shows all the events and lets you filter them by searching text within the messages. This will make it easy to detect error codes or other log messages of value.

To enabled the Ops Center application, simply assign the Ops Center Access Permission Set to the users of your choice.

alt text

Permissions Explorer

Review object and field permissions for profiles and permission Sets easily within the same user interface. Many problems encountered in an org trace back to access issues. Using the Setup interface to review access for users is pretty inefficient. This dashboard provides access to all profiles and permissions and allows for quick filtering of the results.

To enabled the Ops Center application, simply assign the Ops Center Access Permission Set to the users of your choice.

alt text

Management Console

A critical aspect of operating a Salesforce Org is managing Governor Limits. There are transactional and org-wide limits, some of which RFLIB is consuming in order to report and display Log Events. While there are several different tools available to monitor org-wide Governor Limits, RFLIB provides a simple way to stay on top of those as well through the Management Console tab.

There, users with access to the Ops Center can view the current consumption of the org-wide Governor Limits relevant to RFLIB. In addition, RFLIB will display what users have not been provided with Permission Set to enable client logging and what users are assigned access to the Ops Center.

alt text

Application Event Dashboard

Whether a product owner wants to understand feature adoption or user behaviour, Application Events provide visibility into the an application's usage patterns and can help teams to make better decisions and learn more about their apps.

For operational teams, Application Events can be used to track integration requests and their outcomes, which can lead to a call to action to review RFLIB log messages for more details.

alt text

Updates

See CHANGELOG file for versions, install links and package IDs.

Credits

  • Table Pagination was inspired by: https://salesforcelightningwebcomponents.blogspot.com/2019/04/pagination-with-search-step-by-step.html
  • Log Monitor Component was inspired by: https://github.com/rsoesemann/apex-unified-logging
  • "Bypass All Trigger" Custom Permission was inspired by: https://github.com/appero-com/MyTriggers
  • The unlocked packaged was created with the help of Andrew Fawcett: https://andyinthecloud.com/2018/06/16/salesforce-dx-packages-and-open-source/
  • Logo was created with: https://www.freelogodesign.org/
  • Thanks to Fabien Taillon for his SFDX CLI Plugin: https://github.com/texei/texei-sfdx-plugin
  • Thanks to René Winkelmeyer for his SFDX CLI Plugin: https://github.com/muenzpraeger/sfdx-plugin
  • Thanks to Shane McLaughlin for his SFDX CLI Plugin: https://github.com/mshanemc/shane-sfdx-plugins
  • Thanks to Simon Akbar for his amazing blog post: https://www.machinereadablepeople.net/home/2020/4/4/exporting-salesforce-field-level-security-and-object-access-with-the-data-loader
  • Thanks to Salesforce Labs for the Streaming Monitor package: https://appexchange.salesforce.com/appxListingDetail?listingId=a0N3A00000FYEEWUA5
  • Thanks to Numaan Mahammad for Big Object Utility: https://appexchange.salesforce.com/appxListingDetail?listingId=a0N3A00000EcvSsUAJ
  • Thanks to Marco Almodova for granting me his ConfirmationDialog component including the right to share it under the BSD-3-Clause license: https://github.com/marcoalmodova/confirm-dialog
  • Thanks to Pearl Lee (@thetechbee) and Aleksandra Radovanovic (@_AleksM) for being such amazing supporters of my work and this library

Attribution