0.6.0 • Published 3 years ago

@evo/urlmapper v0.6.0

Weekly downloads
15
License
ISC
Repository
gitlab
Last release
3 years ago

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
0.6.0

3 years ago

0.5.4

3 years ago

0.5.3

4 years ago

0.5.2

5 years ago

0.5.1

5 years ago

0.5.0

5 years ago

0.4.3

5 years ago

0.4.2

5 years ago

0.4.1

5 years ago

0.4.0

5 years ago

0.3.0

5 years ago

0.2.1

5 years ago

0.2.0-0

5 years ago

0.1.0-0

5 years ago

0.0.3

5 years ago

0.0.2

5 years ago