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

mpl-require-extension

v0.0.4

Published

A require.extensions loader for MPL (mapping template)

Downloads

8

Readme

Please do not use it yet as it is not fully documented and not passing all unit tests!

MPL Require Extension

NPM

It is a require.extensions loader for MPL which stands for Mapping Template and a NodeJS require.extension for handling custom file type *.mpl. The purpose of *.mpl represent a mapping relationship from source data structure to destination data structure.

Installation

npm i mpl-require-extension --save-dev

Scenario

Let's say if you send an api request and obtain something (consider this as ApiModel) as following,

{
  "Usr": {
    "id": "1"
  },
  "Gender": "male"
}

And now your have a need to transform it to fit your client application data structure (e.g. ViewModel)

{
  "userId": "1",
  "gender": "male"
}

In such case, you could create a .mpl file to represent the mapping relationship:

Usr/id userId
Gender gender

Specification for .mpl

  1. Each row represent a mapping relationship.
  2. In a row, relationship is split by whitespace in the middle. The left hand side of the whitespace represent the target data structure from ApiModel whereas the right hand side are the destination that will be mapped to ViewModel.
  3. Slash ('/') represent going to inner structure of the data no matter it is an object or array.
Usr/id userId
Gender gender

How to use

At first, please make sure the extension is in used in either NodeJS environment or import it manually.

(manual import, typescript/javascript es6)

import 'mpl-require-extension'; 

(manual import, javascript es5)

require('mpl-require-extension'); 

Once this is setup, you can require file with .mpl extension,

cosnt xxx = require('xxx.mpl'); 
// xxx becomes a key-value pair array of obejct
// Below is the data type.
//  xxx =>   {
//              [key: string]: string
//          }   

Example

Example 1

user.mpl

Usr/id userId
Gender gender
console.log(require('./user.mpl'));

Benefits

  1. Since this is a text base file, therefore it extremely easy to allow other backend language to transform data base on a mapping template. With assistance like webpack, it allows to transform in front end as well.

  2. My intention of the .mpl file is to upload it to internal server which can be accessed by font-end or back-end developers. If font-end developers make changes to their ViewModel, what they need to do is to update the specific MPL file and that's it. No communication cost with backend developers any more. Same for backend developers. This makes front end and backend completely independent during the development process.

Licensing

MIT license