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

@gatekeeper_technology/rollbar-utils

v1.2.3

Published

This code provides utility functions to handle and log errors with Rollbar integration in a Node.js environment, including rescheduling tasks and triggering Rollbar error logging based on certain conditions.

Downloads

28,907

Readme

rollbar-utils

This code provides utility functions to handle and log errors with Rollbar integration in a Node.js environment, including rescheduling tasks and triggering Rollbar error logging based on certain conditions.

Lazy man's Implementation

index.ts

import RollbarUtil from "@gatekeeper_technology/rollbar-utils";

let rollbar: RollbarUtil;

export async function run(this: TaskContext, params: any) {
    console.log(`🏁 Task started (in ${CloudCode.task.env}) with params: ${JSON.stringify(params ?? (params = {}), null, 2)}`);
    rollbar = new RollbarUtil({
        access_token: process.env.ROLLBAR_ACCESS_TOKEN,
        params: params,
        self: this
    });

    try {
        await runTask.call(this, request_object);
    } catch (error) {
        await rollbar.handleError(error);
    }
}

index.js

  • When working with .js files, you can import the package as shown below:
    const { default: RollbarUtil } = require("@gatekeeper_technology/rollbar-utils");

package.json

  • No need to import Rollbar
  • Manually update your dependency
    "dependencies": {
      "@gatekeeper_technology/rollbar-utils": "<latest_version>",
      "@journeyapps/cloudcode": "1.12.0"
    },

tsconfig.json (only for TypeScript):

  • Replace your tsconfig.json file with:
{
    "extends": "@journeyapps/cloudcode-build/task-tsconfig",
    "compilerOptions": {
        "esModuleInterop": true,
        "allowJs": false,
        "skipLibCheck": true
    }
}
  • Don't forget to register your Rollbar access token using deployment environment variable ROLLBAR_ACCESS_TOKEN. For testing, you can use the token that is pinned in the #rollbar-testing-spam Slack channel

  • Note: If you get an linting error of copying and pasting, try refreshing OXIDE.

Detailed Usage

Handle errors using in your main catch

await rollbar.handleError(error);

Or with options:

await rollbar.handleError(error, { reschedule_task: false });

Flags

  • env: Specifies environment(s) to log or reschedule errors. Default is "production".
    • Can be string or string[]
  • reschedule_task: Auto-reschedule task on failure. Default is true.
  • trigger_rollbar: Log errors to Rollbar. Default is true.

Customizing Error Behavior with throwError

The throwError function allows you to throw custom errors with configurable settings. You can control whether to trigger Rollbar logging or to reschedule the task. By default, the settings are { trigger_rollbar: true, reschedule_task: false }.

Here's how to use throwError:

    rollbar.throwError("Will not trigger rollbar", { trigger_rollbar: false });
    rollbar.throwError("Will trigger rollbar, but not reschedule", { trigger_rollbar: true, reschedule_task: false });
    rollbar.throwError("Will not trigger rollbar, and not reschedule", { trigger_rollbar: false, reschedule_task: false });

Note: All actions are implemented only in the specified environments, which defaults to "production."

Custom Error Handling

Our utility provides fine-grained control over how certain types of errors are managed. This section explains how to work with two specific custom errors: status-not-pending and attachments-uploading.

status-not-pending

This type of error is considered a "blocking" error. If such an error occurs, the task will not be retried.

attachments-uploading

For this error type, Rollbar logging is conditional based on the retry count. The utility will only log a Rollbar error on the final retry.

Changelog

[1.2.2] - 2024-07-23

Updated

  • Dependencies to latest versions

[1.2.1] - 2024-01-08

Added

  • Function to add object ids to the CC parameters for objects in the CC parameters.

[1.2.0] - 2023-10-12

Added

  • Introduced throwError function for more granular error handling.
  • Allows custom errors that can be set to either retry or not.
  • Can also be set to log or not log in Rollbar.

Changed

  • Refactored repository structure from a single file to a multi-file architecture.
  • Improves modularity and maintainability of the code.
  • Improved the README

[1.1.2] - 2023-09-29

Changed

  • Changed the Rollbar Config Validation to only log the errors in the console and not throw the Errors.
  • If the env is not set, it defaults to 'testing'
  • If the trace_id is not set, it defaults to 'not_applicable'

[1.1.1] - 2023-09-27

Added

  • Enhanced error analysis: The package now checks the error's name, message, and cause to determine whether the error should be ignored.

Changed

  • Updated README.md with both concise and comprehensive usage instructions.
  • Renamed the env_to_error flag to env.
  • The env flag now specifies the environments for which the CC Task may trigger rollbar and reschedule.
  • All console.warn or console.error are changed to console.log, due to not always logging the messages.

[1.1.0] - 2023-09-15

Added

  • 'status-not-pending' errors no longer rescheduling task or log on rollbar.

Changed

  • Converted functions to a Class
  • Improve console logging.
  • Better Exception handling

Fixed

  • Typo
  • Edge case where if a CC Task did not reschedule, rollbar would retrigger even if asked not to.

[1.0.9] - 2023-09-15

Fixed

  • Reverted hook function change in version 1.0.7.

[1.0.8] - 2023-09-15

Fixed

  • A bug where the context could not be found due to the hook function being async.

[1.0.7] - 2023-09-15

Changed

  • Changed functions to hook functions.

Fixed

  • A bug where the error names were not read correctly.
  • A bug where a null/undefined retry_count stopped the task from retrying.

[1.0.6] - 2023-09-01

Changed

  • More improved console logs!

Fixed

  • a bug that attempted to log task even without an rollbar access token

[1.0.5] - 2023-09-01

Added

  • Added comments on the two exported functions so that it helps developers.
  • Error handling for inside the package.

Fixed

  • A bug where the 'shouldReschedule' flag was ignored.

[1.0.4] - 2023-09-01

Added

  • Added optional 'shouldReschedule' flag.

Removed

  • Removed TS's type checking on 'this'.

[1.0.3] - 2023-09-01

Added

  • Added 'attachments-uploading' check.

Changed

  • Implemented 'trigger_rollbar' flag.
  • Improved on console logs.

Fixed

  • Typo fixed.

[1.0.2] - 2023-08-18

Added

  • Added .d.ts files.

Fixed

  • Resolved ToDos

[1.0.1] - 2023-08-18

Changed

  • Made the package public

[1.0.0] - 2023-07-21

Added

  • Initial functionality that logs errors through rollbar, if it does not reschedule itself.