1.0.0 • Published 3 years ago

@xeerx/nodejs-parser v1.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
3 years ago

xeerx nodeJS parser

Install

npm i @xeerx/nodejs-parser
const xparser = require('@xeerx/nodejs-parser');

Functions

query

// => object
xparser.query('param1=val1&param2=val2');

/*
  param1: 'val1',
  param2: 'val2'
*/

path

// => object
xparser.path('/os/windows/info.html');

/* 
  root: 'os',
  dir: '/os/windows',
  base: 'info.html',
  ext: '.html',
  name: 'info'
*/

url

// => object
xparser.url('https://www.domain.com:80/path/file.ext?param1=val1&param2=val2#hash');

/* 
  protocol: 'https:',
  host: 'www.domain.com',
  port: '80',
  path: '/path/file.ext',
  hash: '#hash',
  query: { param1: 'val1', param2: 'val2' }
*/

find hostname in hosts object

// example hosts object
const hosts = {main:['domain.com','www.domain.com'], wiki:'wiki.domain.com'};

// => string
xparser.findHost(hosts,'domain.com'); // main
xparser.findHost(hosts,'wiki.domain.com'); // wiki
xparser.findHost(hosts,'sub.domain.com'); // unknown

get mime type

// default object list, you can edit it by: xparser.mimeTypes = {...};
{html:"text/html",js:"text/javascript",css:"text/css",png:"image/png",jpg:"image/jpg",mp4:"video/mp4",mp3:"audio/mp3",json:"application/json",zip:"application/zip",woff:"application/font-woff",ttf:"application/font-ttf",eot:"application/vnd.ms-fontobject",otf:"application/font-otf",xml:"text/xml",xlsx:"application/vnd.ms-excelf",xls:"text/xls",pdf:"application/pdf",php:"application/php",jpeg:"image/jpeg",gif:"image/gif",svg:"image/svg+xml",bmp:"image/bmp",ico:"image/vnd.microsoft.icon",tif:"image/tiff",tiff:"image/tiff",webp:"image/webp",webm:"video/webm",avi:"video/x-msvideo",mpeg:"video/mpeg",ogv:"video/ogg",ts:"video/mp2t",mkv:"video/x-matroska","3gp":"audio/3gpp",weba:"audio/webm",wav:"audio/wav",opus:"audio/opus",oga:"audio/oga","3gp":"audio/3gpp",aac:"audio/aac","7z":"application/x-7z-compressed",tar:"application/x-tar",rar:"application/vnd.rar",jar:"application/java-archive",gz:"application/gzip",bz:"application/x-bzip",bz2:"application/x-bzip2",arc:"application/x-freearc"}

// => string | unknown
xparser.mime('test.html'); // text/html

parsing multipart/form-data as object

// example
const example = `
-----------------------------9051914041544843365972754266
Content-Disposition: form-data; name="username"

xeerx
-----------------------------9051914041544843365972754266
Content-Disposition: form-data; name="password"

12345
-----------------------------9051914041544843365972754266
Content-Disposition: form-data; name="profile-picutre"; filename="image.png"
Content-Type: image/png

content of image.png file

-----------------------------9051914041544843365972754266--
`;

// => string | unknown
xparser.multipart(example,'multipart/form-data; boundary=---------------------------9051914041544843365972754266'); // text/html

/*
{
  username: {
    val: 'xeerx',
    file: undefined,
    size: 0,
    mime: undefined,
    mode: 'form-data',
    encode: undefined
  },
  password: {
    val: '12345',
    file: undefined,
    size: 0,
    mime: undefined,
    mode: 'form-data',
    encode: undefined
  },
  'profile-picutre': {
    val: 'content of image.png file',
    file: 'image.png',
    size: 9,
    mime: 'image/png',
    mode: 'form-data',
    encode: undefined
  }
}
*/