@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

Dependencies (0)

    Dev Dependencies (4)

    Package Sidebar

    Install

    npm i @evo/urlmapper

    Weekly Downloads

    92

    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