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 🙏

© 2026 – Pkg Stats / Ryan Hefner

@digitowl/backend-utilities

v2.4.0

Published

==========================================

Readme

Getting Started

Bind the dependencies

import { UtilitiesDependencies } from '@digitowl/backend-utilities';

const newContainer = new Container();

const registrationList = [
    // ...Other dependencies
    UtilitiesDependencies,
];

for (const reg of registrationList) {
    new reg().register(newContainer);
}

export const container = newContainer;

Bind the dependency types

import { UtilitiesDependencyTypes } from '@digitowl/backend-utilities';

export const types = {
    // ...Other dependency types
    ...UtilitiesDependencyTypes
}

Map errors

export class ExceptionToFailure {
    public failureMap = new Map<string, Map<string, boolean>>([
        [CoreFailureEnums.UPSTREAM_FAILURES, new Map<string, boolean>([
            ...CoreExceptionToFailure.failureMap.get(CoreFailureEnums.UPSTREAM_FAILURES),
            ...UtilityExceptionToFailure.failureMap.get(UtilityFailureEnums.UPSTREAM_FAILURES)
        ])],

        // ...Others failure mapping
    ]);

    // ...Converter function
}

JSONToCSVParserOperation

generateFile

The generateFile method is responsible for converting a given JSON data structure into a CSV formatted string, and then returning the resulting CSV content as a Buffer. The method uses a json2csv parser service that handles the parsing operation asynchronously

Example

const jsonData = [
    { name: "John", age: 30 },
    { name: "Jane", age: 25 }
];

// Read more: https://github.com/juanjoDiaz/json2csv/blob/main/packages/node/README.md#options-1
const parseOptions = {
    delimiter: ",",
    includeHeader: true,
    quoteChar: '"'
};

const csvBuffer = await jsonToCSVParserOperation.generateFile(jsonData, parseOptions);

// Do something with the buffer

JSZipFileCompressOperation

The JSZipFileCompressOperation class provides methods to create and manage ZIP files by adding files from external sources or in-memory buffers and generating the final compressed file. It leverages JSZip for ZIP file operations and uses fetch for downloading external resources.

addFileFromExternalSourceToZip

Adds a file from an external source to the ZIP file.

addFileFromBufferToZip

Adds a file from an in-memory buffer to the ZIP file.

generateFile

Generates the ZIP file and returns its content as a Node.js Buffer.

Example

...
@inject(types.iJSZipFileCompressOperation)
private zipFileCompressOperation: iJSZipFileCompressOperation,

await zipFileCompressOperation.addFileFromExternalSourceToZip({
    sourceExternalLink: "https://example.com/file.txt",
    destPathInZipFile: "folder/file.txt",
})

const fileBuffer = Buffer.from("Hello, world!");
await zipFileCompressOperation. .addFileFromBufferToZip({
    sourceFile: fileBuffer,
    destPathInZipFile: "hello.txt",
})

const zipBuffer = await this.zipFileCompressOperation.generateFile();

// Do something with the zip buffer

PuppeteerHeadlessBrowserOperation

The PuppeteerHeadlessBrowserOperation class provides functionality to generate a PDF file from an EJS template using Puppeteer, a headless browser automation library. This class is designed to handle the entire flow from rendering an EJS template to creating a PDF document.

generatePDFFromEJSTemplate

Generates a PDF from an EJS template with the provided data and PDF options.

Example

@inject(types.iPuppeteerHeadlessBrowserOperation)
private puppeteerHeadlessBrowserOperation: iPuppeteerHeadlessBrowserOperation,

const templatePath = "path/to/template.ejs";
const data = { title: "Sample Title", content: "Sample Content" };
const pdfOptions = { format: "A4", printBackground: true };

await this.puppeteerHeadlessBrowserOperation.generatePDFFromEJSTemplate(
    templatePath,
    data,
    pdfOptions
)