@evo/urlmapper
TypeScript icon, indicating that this package has built-in type declarations

0.6.0 • Public • Published

urlmapper

npm - https://www.npmjs.com/package/@evo/urlmapper

Данный пакет позволяет гибко работать с url роутингом (аналог routes из python).

Пример:

// создаем mapper
const mapper = new UrlMapper({
    typeAlias: /\w\-]+/,
    companyId: /\d+/,
});


// добавляем шаблон
mapper.connect('/{typeAlias};');
mapper.connect('/{typeAlias};c{companyId}');

// url dispatch
const { params } = mapper.match('/services;c123')

// params == { typeAlias: 'services', companyId: '123' }


// url generation
const url = mapper.url('/services;c123', { companyId: '111'});

// url === '/services;c111'

Создание mapper-а

Создаем mapper с параметрами typeAlias и companyId:

const mapper = new UrlMapper({
    typeAlias: /\w\-]+/,
    companyId: /\d+/,
});

url match

mapper.connect('/{typeAlias};');

const { params, query, match } = mapper.match('/services?test=1')
// params == { typeAlias: 'services' }
// query == { test: 1 }
// match -> RegexMatchResult

Создание нового url с помощью newUrl

mapper.connect('/test-{typeAlias};');

const testUrl = mapper.newUrl({ typeAlias: 'alias' }) // /test-alias

Добавление параметра в существующий url

Подстановка шаблонных параметров:

Допустим имея шаблон вида /{typeAlias}:c{companyId} и url /services;c123 хотим поменять companyId (123):

mapper.url('/services;c123', { companyId: 111 }) // /services;c111

Добавление GET параметров

Все параметры, которые не были обьявлены как шаблонные параметры будут добавлены в GET:

mapper.url('/services;c123', { test: 'test' }) // /services;c123?test=test

// Так-же можно добавлять список аргументов
mapper.url('/services;c123', { a: ['1', '2']}) // /services;c123?a=1&a=2

Удаление аргументов

Для удаления необходимо передать значение undefined:

mapper.connect('/{typeAlias}');
mapper.connect('/{typeAlias};c111');

// будет произведен поиск ближайшего по соответствию шаблона и найдет - '/{typeAlias}'
// в противном случае - будет exception
mapper.url('/services;c123', { companyId: undefined }) // /services

Readme

Keywords

none

Package Sidebar

Install

npm i @evo/urlmapper

Weekly Downloads

1

Version

0.6.0

License

ISC

Unpacked Size

20.1 kB

Total Files

14

Last publish

Collaborators

  • stoyanovk
  • lequan
  • zemlanin
  • alexander
  • seedofjoy
  • 041616
  • docccdev
  • orhideous
  • tailhook
  • hunson.abadeer
  • mark_tven
  • amostovenko
  • sadkovoy
  • himiranov
  • evo-kazymyrov