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

model-conversion

v1.0.0

Published

A package to simplify conversion between models.

Readme

Model Conversion

A package to simplify conversion between models.

Table of contents

  1. Installation
  2. Documentation

Installation

You can install the package using the following commands:

# yarn
yarn add model-conversion

# npm
npm install model-conversion

Documentation

Interfaces

As your app is growing up, you'll get to work with different services like database, other APIs, apps you're handling request for, etc. Maintaining models can rapidly become an hard task. This is where this package comes into place.

This package includes 3 interfaces to helps you convert your models:

  • ToAppModelConvertible: used to convert a model to the model you use inside your app/api/project. App models are camel cased and contains property that are helpful for your app logic.
  • ToPublicModelConvertible: used to convert a model to the public model sent to external services. Public models are pascal cased and does not contains any sensitive data.
  • ToDatabaseModelConvertible: used to convert a model to the database model you use in your app.api/project. Database models are camel cased and contains information that needs to be stored.

Quick start

To convert a model to the desired one, make your model conform to one of the provided interfaces by this package. Those interfaces are generic, so you need to specify the type of the model that will be converted to.

import { ToPublicModelConvertible } from 'model-conversion'

class AppUser implement ToPublicModelConvertible<PublicUser> {
   public readonly id: string;
   public readonly createdAt: Date;
   public readonly password: string;
   public readonly firstName: string;
   public readonly lastName: string;

   public toPublicModel(): PublicUser {
      return new PublicUser(this.id, this.createdAt.toISOString(), `${this.firstName} ${this.lastName}`);
   }
}

AppUser can now be converted to its public representation like so:

const appUser: AppUser = new AppUser(
  "id",
  new Date(),
  "password",
  "Duke",
  "Caboom",
);
const publicUser: PublicUser = appUser.toPublicModel();

A model can be converted to multiple models. Just make it conforms to multiple interfaces.

import { ToDatabaseModelConvertible, ToPublicModelConvertible } from 'model-conversion'

class AppUser implement ToPublicModelConvertible<PublicUser>, ToDatabaseModelConvertible<DBUser> {
   public readonly id: string;
   public readonly createdAt: Date;
   public readonly password: string;
   public readonly firstName: string;
   public readonly lastName: string;

   public toPublicModel(): PublicUser {
      return new PublicUser(this.id, this.createdAt.toISOString(), `${this.firstName} ${this.lastName}`);
   }

   public toDatabaseModel(): DBUser {
      return new DBUser(this.id, this.createdAt, this.firstName, this.lastName);
   }
}