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

jaxfis

v1.0.3

Published

Library for executing Ajax requests on the server and client side

Downloads

3

Readme

Модуль для работы с AJAX в Browser JS и Node.JS

Оглавление

 

 

Краткое описание

 

Jax это универсальный кросс-платформенный класс для отправки запросов из браузера на сервер, либо с сервера на сервер. Библиотека работает одинаково как на Node.JS так и в браузерах. Поддерживаются следующие запросы:

  • GET

  • POST

  • PUT

  • DELETE

По умолчанию для отправки запросов из браузера используется XMLHttpRequest, есть поддержка Fetch API. Для отправки с Node.JS используются стандартные пакеты Node - http/https. Различия в отправке данных с сервера и клиента заключаются только в отправляемых данных. Для удобства и поддержки кросплатформенности пакет включает в себя несколько вспомогательных классов - JFile, JFileList, JFormData и JBuffer. Для отправки запросов следует использовать методы и свойства Jax которые будут описаны ниже

 

 

Класс Jax

Поля и свойства

 

Jax.SEND_TYPES (Object)

Объект-перечисление представляющий способы отправки данных, имеет следующие значения:

  • URL - отправляет данные как закодированную URL-строку ( используется по умолчанию для GET и DELETE запросов ), нельзя отправлять файлы
  • JSON - отправляет данные в формате JSON
  • FORM - отправляет данные с заголовком multipart/form-data ( используется по умолчанию при отправке форм )  

 

Jax.RESPONSE_TYPES (Object)

Объект-перечисление представляющий формат получения ответа на запрос, имеет следующие значения

  • TEXT - возвращает ответ в виде текстовой строки
  • BUFFER - возвращает объект JBuffer
  • JSON - возвращает объект с данными из JSON
  • BLOB - возвращает объект Blob
  • DOC - В зависимости от используемого API возвращает разный результат  

 

Jax.CREDENTIALS (Object)

Объект-перечисление представляющий разрешения на отправку стандартных учетных данных, имеет следующие значения

  • NO_SEND - Не отправлять учетные данные при отправке запроса ( используется по умолчанию ) ( при отправке с помощью XMLHttpRequest, равен withCredentials=false )
  • SAME_ORIGIN - Отправляет учетные данные только если вызвающий скрипт находится в том же источнике что и URL-адрес запроса ( при отправке с помощью XMLHttpRequest, равен withCredentials=false )
  • ALL_SEND - Всегда отправляет учетные данные ( при отправке с помощью XMLHttpRequest, равен withCredentials=true )  

 

Jax.MIME_FILES (Array<[any,any]>) (только чтение)

Представляет массив mime-типов в котором тип и расширение хранятся по парам ( Пример: ['video/3gpp','.3gp'] )  

 

Jax.PROTOCOL (String) (только чтение)

(значение по умолчанию: 'http')

Возвращает протокол используемый по умолчанию для отправки запросов. (Для установки протокола см. Jax.setSSL())  

 

Jax.useFetch (Boolean)

Представляет логическое значение, указывающее следует ли использовать Fetch API вместо XMLHttpRequest при отправке запросов ( по умолчанию - false )( работает только для браузеров )  

 

Jax.isServer (Boolean)

Представляет логическое значение, определяющее откуда был запущен скрипт, из Node.JS или браузера ( определяется автоматически при использовании )  

 

Функции

Jax.setSSL(isSet)

Функция для установки протокола запросов. Протокол нужен в том случае если он не указан в URL-адресе запроса

Параметры:

  • isSet ( Boolean ) (не обязательный) - Логическое значение, если true - установит HTTPS (по умолчанию), если false - HTTP

Jax.get(url,params)

Функция для отправки GET-запроса

Параметры:

  • url ( String ) - URL-адрес отправки
  • params ( Object ) - Объект с параметрами запроса
    • params.headers ( Map<string,string>)(не обязательный ) - Коллекция дополнительных заголовков запроса, где ключ - наименование заголовка. Сontent-Type заголовок добавлять не нужно!
    • params.body ( Object | JFormData | FormData | Map | HTMLFormElement | string )( не обязательный ) - Тело запроса, может быть объектом, формой, HTML-элементом либо строкой(id формы, только для браузера), все данные будут закодированны в виде URL строки при отправке. Файлы отправлять нельзя
    • params.responseType ( String )( не обязательный ) - Устанавливает тип ответа, смотреть - Jax.RESPONSE_TYPES
    • params.credentials ( String )( не обязательный ) - Параметр для установки разрешения на отправку учетных данных, смотреть - Jax.CREDENTIALS
    • params.progress ( Function )( не обязательный ) - Callback-функция для получения текущего прогресса отправки данных ( не работает в Node.JS )

Возврат:

( Promise<object> ) В случае успешного выполнения вернет объект с результатом следующего вида

{
    success: true
    data: /*response*/ 
    headers: /*response headers Map*/
}

// Свойство data необходимо проверять на undefined, т.к. его может и не быть если с сервера был отправлен только код состояния

Пример GET-запроса:

Jax.get('http://example/jax-get',{
    body:{
        user:'TestUser',
        age:18,
        policy:true,
    }
}).then(result=>{
    console.log(result)
}).catch(err=>{
    console.error(err)
})

 


 

Jax.post(url,params)

Функция для отправки POST-запроса

Параметры:

  • url ( String ) - URL-адрес отправки
  • params ( Object ) - Объект с параметрами запроса
    • params.headers ( Map<string,string>)(не обязательный ) - Коллекция дополнительных заголовков запроса, где ключ - наименование заголовка. Сontent-Type заголовок добавлять не нужно!
    • params.body ( Object | JFormData | FormData | Map | HTMLFormElement | string )( не обязательный ) - Тело запроса, может быть объектом, формой, HTML-элементом либо строкой(id формы, только для браузера). Способ отправки зависит от нескольких факторов, подробнее об этом смотрите ниже - [Перейти]
    • params.sendType ( String )( не обязательный ) - Устанавливает способ отправки, смотреть - Jax.SEND_TYPES
    • params.responseType ( String )( не обязательный ) - Устанавливает тип ответа, смотреть - Jax.RESPONSE_TYPES
    • params.credentials ( String )( не обязательный ) - Параметр для установки разрешения на отправку учетных данных, смотреть - Jax.CREDENTIALS
    • params.progress ( Function )( не обязательный ) - Callback-функция для получения текущего прогресса отправки данных ( не работает в Node.JS )

Возврат:

( Promise<object> ) В случае успешного выполнения вернет объект с результатом следующего вида

{
    success: true
    data: /*response*/
    headers: /*response headers Map*/ 
}

Пример POST-запроса:

Jax.post('http://example/jax-post',{
    body:{
        user:'TestUser',
        age:18,
        policy:true,
    }
}).then(result=>{
    console.log(result)
}).catch(err=>{
    console.error(err)
})

Особенности POST

Случай №1:

При передаче параметра sendType, он может быть проигнорирован в случае если в body был передан id HTML-формы или HTMLFormElement, но только в том случае если в форме есть поля input c типом file. Тогда неважно какой тип был передан в sendType он по умолчанию будет заменен на multipart/form-data.

Случай №2:

Если в body был передан объект в свойствах которого есть значения типов JFile, JFileList, File, FileList, а sendType установлен как application/x-www-form-urlencoded (по умолчанию), то эти свойства будут игнорироваться.

Случай №3:

Если в body был передан объект в свойствах которого есть значения типов JFile, JFileList, File, FileList, а sendType установлен как application/json, то эти свойства будут сериализованы в JSON как пустые объекты, т.к. у объектов этих типов нет открытых свойств

Отправка файлов через POST

Для корректной отправки файлов рекомендуется устанавливать sendType в multipart/form-data (Jax.SEND_TYPES.FORM), и передавать данные в виде FormData, JFormData либо объекта. Примеры смотрите ниже.

Пример №1: Отправка с использованием id формы

Предположим что нужно передать форму с файлам с клиента(браузера) на сервер. На клиенте есть следующая форма для загрузки изображений:

<form id="form">
    <input type="text" id="email" name="email">
	<input type="file" id="file" name="photo" multiple>
	<button id="send-button" type="button">Send</button>
</form>

Запрос:

Jax.post('http://example/send-files',{
    body:'form'
}).then(result=>{
    console.log(result)
}).catch(err=>{
    console.error(err)
})

Запрос будет выполнен корректно и все данные переданные в форму буду конвертированы внутри запроса в multipart/form-data ( см. Случай№1 )

Пример №2: Отправка с использованием HTMLFormElement За основу возьмем HTML-форму с предыдущего примера

let form = document.getElementById('form')
if(form){
    Jax.post('http://example/send-files',{
        body:form
    }).then(result=>{
        console.log(result)
    }).catch(err=>{
        console.error(err)
    })
}

Так же как и в первом примере запрос будет успешно отработан

Пример №3: Отправка с использованием JFormData или Object

Данный способ подойдет когда нет HTMLFormElement на странице, либо при отправке с сервера на сервер(будет отличаться только способ загрузки файлов, подробнее см. JFile и JFileList).

Предположим что мы отправляем два файла и email пользователя с одного сервера на другой:

let form = new JFormData()
let files = await JFileList.load([
    './images/1.png',
    './images/2.png'
])
if(files && files?.length){
    form.set('images',files)
    form.set('email','[email protected]')

    Jax.post('http://example/send-files',{
        body:form,
        sendType:Jax.SEND_TYPES.FORM //явно указываем способ отправки
    }).then(result=>{
        console.log(result)
    }).catch(err=>{
        console.error(err)
    })
}

Тоже самое но с использованием объекта:

let files = await JFileList.load([
    './images/1.png',
    './images/2.png'
])

if(files && files?.length){
    Jax.post('http://example/send-files',{
        body:{
            files,
            email:'[email protected]' 
        },
        sendType:Jax.SEND_TYPES.FORM //явно указываем способ отправки
    }).then(result=>{
        console.log(result)
    }).catch(err=>{
        console.error(err)
    })
}

Если у вы хотите отправить только файлы, рекомендуется посмотреть Jax.file

Отправка POST/PUT запроса без параметров

Метод POST как и PUT допускается использовать без передачи params.body и других параметров, используя только URL, при этом если в строке адреса присутсвуют url encoded параметры они автоматически будут отправлены в теле запроса. Пример:

let url = Url.encode({user: 'TestUser', age: 18,},'http://example/send-url-post')
// В url: http://example/send-url-post?user=TestUser&age=18

Jax.post(url).then(result => {
	console.log(result)
}).catch(err => {
	console.error(err)
})

// При отправке будет указан адрес без параметров - http://example/send-url-post, все параметры будут переданы в тело запроса 

 


 

Jax.put(url,params)

Функция для отправки PUT-запроса

Параметры:

  • url ( String ) - URL-адрес отправки
  • params ( Object ) - Объект с параметрами запроса
    • params.headers ( Map<string,string>)(не обязательный ) - Коллекция дополнительных заголовков запроса, где ключ - наименование заголовка. Сontent-Type заголовок добавлять не нужно!
    • params.body ( Object | JFormData | FormData | Map | HTMLFormElement | string )( не обязательный ) - Тело запроса, может быть объектом, формой, HTML-элементом либо строкой(id формы, только для браузера), все данные будут закодированны в виде URL строки при отправке. Файлы отправлять нельзя
    • params.responseType ( String )( не обязательный ) - Устанавливает тип ответа, смотреть - Jax.RESPONSE_TYPES
    • params.sendType ( String )( не обязательный ) - Устанавливает способ отправки, смотреть - Jax.SEND_TYPES
    • params.credentials ( String )( не обязательный ) - Параметр для установки разрешения на отправку учетных данных, смотреть - Jax.CREDENTIALS
    • params.progress ( Function )( не обязательный ) - Callback-функция для получения текущего прогресса отправки данных ( не работает в Node.JS )

Возврат:

( Promise<object> ) В случае успешного выполнения вернет объект с результатом следующего вида

{
    success: true
    data: /*response*/
    headers: /*response headers Map*/ 
}

// Свойство data необходимо проверять на undefined, т.к. его может и не быть если с сервера был отправлен только код состояния

 


 

Jax.delete(url,params)

Функция для отправки DELETE-запроса

Параметры:

  • url ( String ) - URL-адрес отправки
  • params ( Object ) - Объект с параметрами запроса
    • params.headers ( Map<string,string>)(не обязательный ) - Коллекция дополнительных заголовков запроса, где ключ - наименование заголовка. Сontent-Type заголовок добавлять не нужно!
    • params.body ( Object | JFormData | FormData | Map | HTMLFormElement | string )( не обязательный ) - Тело запроса, может быть объектом, формой, HTML-элементом либо строкой(id формы, только для браузера), все данные будут закодированны в виде URL строки при отправке. Файлы отправлять нельзя
    • params.sendType ( String )( не обязательный ) - Устанавливает способ отправки, смотреть - Jax.SEND_TYPES
    • params.responseType ( String )( не обязательный ) - Устанавливает тип ответа, смотреть - Jax.RESPONSE_TYPES
    • params.credentials ( String )( не обязательный ) - Параметр для установки разрешения на отправку учетных данных, смотреть - Jax.CREDENTIALS
    • params.progress ( Function )( не обязательный ) - Callback-функция для получения текущего прогресса отправки данных ( не работает в Node.JS )

Возврат:

( Promise<object> ) В случае успешного выполнения вернет объект с результатом следующего вида

{
    success: true
    data: /*response*/
    headers: /*response headers Map*/ 
}

// Свойство data необходимо проверять на undefined, т.к. его может и не быть если с сервера был отправлен только код состояния

Обратите внимание что при отправке запроса DELETE с sendType = application/x-www-form-urlencoded все данные будут преобразованы в url строку но при этом переданы в тело запроса как и в методах POST/PUT, если вы хотите передать параметры в url строке адреса, нужно сделать это вручную. Для этого можно использовать класс Url, например:

let url = Url.encode({user: 'TestUser', age: 18,},'http://example/delete-url-test')

Jax.delete(url).then(res => {
	console.log(`DELETE success: ${res}`)
}).catch(err => {
	console.log(`DELETE error: ${err}`)
})

 


 

Jax.file(url,params)

Функция для отправки файлов, используется POST-запрос. В отличии от Jax.post() можно передавать только файловые объекты. При этом есть отправка в multipart/form-data формате, и отправка бинарных данных каждого файла в отдельном запросе со своим заголовком contentType

Параметры:

  • url ( String ) - URL-адрес отправки
  • params ( Object ) - Объект с параметрами запроса
    • params.headers ( Map<string,string>)(не обязательный ) - Коллекция дополнительных заголовков запроса, где ключ - наименование заголовка. Сontent-Type заголовок добавлять не нужно!
    • params.body ( File | FileList | JFile | JFileList )( не обязательный ) - Тело запроса, может быть объектом, формой, HTML-элементом либо строкой(id формы, только для браузера), все данные будут закодированны в виде URL строки при отправке. Файлы отправлять нельзя
    • params.isMultipart ( Boolean ) - Отправить данные с заголовком multipart/form-data (по умолчанию true)
    • params.responseType ( String )( не обязательный ) - Устанавливает тип ответа, смотреть - Jax.RESPONSE_TYPES
    • params.credentials ( String )( не обязательный ) - Параметр для установки разрешения на отправку учетных данных, смотреть - Jax.CREDENTIALS
    • params.progress ( Function )( не обязательный ) - Callback-функция для получения текущего прогресса отправки данных ( не работает в Node.JS )

Возврат:

( Promise<object> ) Возвращает Promise c результатом в случае успешного выполнения * (При установке isMultipart:false и передаче коллекции файлов возвращает массив с результатами всех промисов для каждого файла)

Пример отправки файлов:

let fileInput = document.getElementById('file')
let files = await JFileList.load(fileInput.files)
if(files && files?.length){
	Jax.file('http://example/send-files', {
		body: files,
	}).then(result => {
		console.log(result)
	}).catch(err => {
		console.error(err)
	})
}

 


 

Jax.jsonMapReplacer(key,value)

Функция для правильной сериализации Map в json с помощью функции JSON.stringify()

Параметры:

  • key ( any ) - наименование параметра
  • value ( any ) - значение

Возврат:

( Object ) Возвращает Map преобразованный в объект

 


 

Jax.jsonMapReviewer(key,value)

Функция для правильной десериализации Map с помощью функции JSON.parse() (работает только для Map сериализованных с помощью Jax.jsonMapReplacer)

Параметры:

  • key ( any ) - наименование параметра
  • value ( any ) - значение

Возврат:

( Map ) Преобразует сериализованные объекты в Map если в них есть свойство bodyType:'Map'  

 

Класс JFile

Класс предназначен для облегчения загрузки и отправки файлов. Данный класс можно использовать в браузерах и Node.JS

Поля и свойства

 

(JFile) object.contentType (String) ( только чтение )

Свойство содержащее mime тип файла  

(JFile)object.fullName (String) ( только чтение )

Свойство содержит полное имя файла с расширением  

(JFile) object.name (String) ( только чтение )

Свойство содержащее имя файла без расширения  

(JFile) object.ext (String) ( только чтение )

Свойство с расширением файла  

(JFile) object.size (Number) ( только чтение )

Свойство содержащее размер файла в байтах  

(JFile) object.data (JBuffer) ( только чтение )

Свойство содержащее данные из файла в виде JBuffer  

(JFile) object.path (String) ( только чтение ) ( только в Node.js )

Свойство содержащее путь к файлу  

Функции

JFile.load(file)

Функция для загрузки файла и создания нового объекта jFile

Параметры:

  • file ( String | File ) - Объект File( в браузерах ), либо путь к файлу в виде строки ( Node.JS )

Возврат:

( Promise<JFile|undefined> ) В случае успешной загрузки файла возвращает промис с новым объектом JFile, иначе вернет промис с undefined

Пример загрузки файла:

let file = await JFile.load('./images/test.png') // в Node.js

let fileBrowser = await JFile.load(fileInput.files[0]) // в браузере, fileInput это input элемент с type=file

 

 

Класс JFileList

Класс является аналогом браузерного FileList, позволяет создавать итерируемые объекты с которыми можно работать как с массивами. Элементами коллекции могут быть только JFile объекты

Поля и свойства

 

(JFileList)object.length (Number) ( только чтениe )

Свойство содержащее кол-во элементов коллекции  

Функции

JFileList.constructor(files)

Конструктор в который можно передать массив с объектами JFile

Параметры:

  • files ( Array<JFile> ) - Массив объектов JFile, если в массиве есть значения другого типа они будут отфильтрованы

 


 

JFileList.load(files)

Функция для загрузки файлов и создания новой коллекции

Параметры:

  • files ( FileList|File|JFile|Array<string>|Array<File>|Array<JFile> ) - Файловые объекты, массив или коллекция файловых объектов или путей к файлам

Возврат:

( Promise<JFileList|undefined> ) Возвращает промис с новым объектом JFileList. При этом в коллекцию будут добавлены только успешно загруженные файлы. Если ни один файл не удалось загрузить, промис вернет пустую коллекцию, а в случае ошибки undefined

Пример загрузки файлов и создания нового JFileList:

let files = await JFileList.load([
    './images/1.png',
    './images/2.png'
]) 

 


 

(JFileList) object.push(file)

Добавляет новый элемент в конец коллекции, добавить можно только объект типа JFile

Параметры:

  • file ( JFile ) - Объект JFile

Возврат:

( Boolean ) Возвращает логический результат выполнения функции

Пример:

let file = await JFile.load('./images/1.png')
let list = new JFileList()
if(file)
    console.log(list.push(file)) // Выведет true, новый элемент будет добавлен

let file2 = './images/2.png'
console.log(list.push(file2)) // Выведет false 

 


 

(JFileList) object.pop()

Извлекает последний элемент и удаляет его из коллекции

Возврат:

( JFile|undefined ) Возвращает объект JFile, либо undefined если коллекция пуста

 


 

(JFileList) object.shift()

Извлекает первый элемент и удаляет его из коллекции

Возврат:

( JFile|undefined ) Возвращает объект JFile, либо undefined если коллекция пуста

 


 

(JFileList) object.unshift(file)

Добавляет новый элемент в начало коллекции, добавить можно только объект типа JFile

Параметры:

  • file ( JFile ) - Объект JFile

Возврат:

( Boolean ) Возвращает логический результат выполнения функции (см push())

 


 

(JFileList) object.concat(list)

Функция для объединения двух и более коллекций в одну

Параметры:

  • list ( JFileList|Array<JFileList> ) - Объект либо массив объектов JFileList

Возврат:

( JFileList ) Возвращает новую коллекцию JFileList с элементами объединенных коллекций

 


 

(JFileList) object.toArray()

Функция для получения обычного массива из JFileList

Возврат:

( Array<JFile> ) Возвращает массив с JFile объектами

 


 

(JFileList) object.toString()

Функция для строчного вывода JFileList

Возврат:

( String ) Возвращает форматированную строку с содержимым JFileList

 

 

Класс JFormData

Класс является аналогом браузерного FormData, позволяет создать объект с данными, которые хранятся в виде пар (ключ-значение) и правильно преобразовывать эти данные при отправке запроса

Функции

(JFormData)object.from(params, filterFiles)

Функция для преобразования объектов и коллекций в объект JFormData

Параметры:

  • params ( JFormData | Map | Object ) - Map коллекция или объект
  • filterFiles ( Boolean ) ( не обязательный ) - Если true - фильтрует файловые классы (File,FileList,JFile,JFileList) (по умолчанию - false)

Возврат:

( Promise<JFormData> ) Возвращает промис с новым объектом JFormData

 


 

(JFormData)object.fromDOM(params, filterFiles)

Функция для получения данных из HTML формы и их записи в новый JFormData объект

Параметры:

  • params ( HTMLFormElement | string ) - элемент HTML формы либо его id
  • filterFiles ( Boolean ) ( не обязательный ) - Параметр указывающий нужно ли отфильтровывать поля input[type="file"] (по умолчанию - false)

Возврат:

( Promise<JFormData> ) Возвращает промис с новым объектом JFormData

 


 

(JFormData)object.get(name)

Функция для получения значения по его имени(ключу)

Параметры:

  • name ( string ) - Строковое наименование параметра

Возврат:

( any ) Возвращает значение по его ключу если оно есть

 


 

(JFormData)object.getAll()

Функция для получения всех значений JFormData в виде Map коллекции

Возврат:

( Map ) Возвращает Map-коллекцию

 


 

(JFormData)object.set(name,value)

Добавляет новую пару ключ-значение в JFormData

Параметры:

  • name ( string ) - Строковое наименование параметра
  • value ( any ) - Значение параметра

 


 

(JFormData)object.isset(name)

Функция для проверки существования параметра в JFormData по его имени

Параметры:

  • name ( string ) - Строковое наименование параметра

Возврат:

( Boolean ) Возвращает логическое значение

 


 

(JFormData)object.delete(name)

Функция для удаления параметра из JFormData по его имени

Параметры:

  • name ( string ) - Строковое наименование параметра

Возврат:

( Boolean ) Возвращает логическое значение(true - если параметр найден и удален, иначе false)

 


 

(JFormData)object.entries()

Функция для преобразования JFormData в итерируемый объект(массив) пар (ключ-значение)

Возврат:

( IterableIterator<[any,any]> ) Массив пар (ключ-значение)

 


 

(JFormData)object.toObj()

Функция для преобразования JFormData в объект

Возврат:

( Object ) Объект JS в котором ключи = свойства объекта

 


 

(JFormData)object.toMultipart()

Асинхронная функция для преобразования JFormData в формат multipart/form-data

Возврат:

( Promise<JBuffer|undefined> ) Возвращает промис с результатом JBuffer(в случае успешного выполнения)

 

 

Класс JBuffer

Вспомогательный класс для преобразования данных в бинарный формат, так же как и Buffer NodeJS основан на UInt8Array, но в отличии от него работает и в браузере. В JBuffer можно свободно конвертировать ArrayBuffer, Buffer, UInt8Array и Blob

Функции

JBuffer.constructor(buffer)

Конструктор для создания JBuffer из одного или нескольких байт массивов разного типа

Параметры:

  • buffer ( ArrayBuffer | Uint8Array | JBuffer | Buffer | string | Array<ArrayBuffer|Uint8Array|JBuffer|Buffer> ) - Map коллекция или объект

 


 

JBuffer.fromBlob(blob)

Асинхронная функция для получения JBuffer из Blob объекта

Параметры:

  • buffer ( Blob ) - Blob объект

Возврат:

( Promise<JBuffer|undefined> ) Возвращает промис с результатом JBuffer(в случае успешного выполнения)

 


 

JBuffer.concat(buffers)

Статическая функция для объединения нескольких бинарных массивов в новый JBuffer

Параметры:

  • buffers ( Array<Buffer|JBuffer|Uint8Array|any> ) - Массив бинарных массивов

Возврат:

( JBuffer | undefined ) Возвращает JBuffer(в случае успешного выполнения)

 


 

JBuffer.concat(buffers)

Статическая функция для объединения нескольких бинарных массивов в новый JBuffer

Параметры:

  • buffers ( Array<Buffer|JBuffer|Uint8Array|any> ) - Массив бинарных массивов

Возврат:

( JBuffer | undefined ) Возвращает JBuffer(в случае успешного выполнения)

 


 

JBuffer.toText(buffer)

Статическая функция для декодирования буфера в строку

Параметры:

  • buffer ( JBuffer | ArrayBuffer | Uint8Array | Buffer ) - Бинарный массив

Возврат:

( String | undefined ) Возвращает строку в случае успешного выполнения

 


 

(JBuffer)object.concat(buffers)

Функция для объединения текущего JBuffer объекта с бинарными массивами

Параметры:

  • buffers ( Array<Buffer|ArrayBuffer|JBuffer|Uint8Array> | Buffer | JBuffer | Uint8Array | ArrayBuffer ) - Массив бинарных массивов или один бинарный массив

Возврат:

( JBuffer | undefined ) Возвращает JBuffer(в случае успешного выполнения)

 


 

(JBuffer)object.split(len,all)

Функция для разбиения JBuffer объекта на части

Параметры:

  • len ( Number ) - Длина/смещение по которому разбивается буфер
  • all ( Boolean ) ( не обязательный ) - Параметр указывающий разбивать ли весь буфер до конца (по умолчанию - true)

Возврат:

( Array<JBuffer> | undefined ) Возвращает массив с JBuffer объектами в случае успешного выполнения

 


 

(JBuffer)object.toText()

Функция для декодирования текущего объекта JBuffer в строку

Возврат:

( String ) Возвращает декодированную строку

 

 

Класс Url

Вспомогательный класс для преобразования данных из объектов и коллекций в URL адрес и обратно

Функции

Url.encode(params, addr, add)

Функция для преобразования объекта параметров в URL

Параметры:

  • params ( Map | FormData | JFormData | Object ) - Объект параметров
  • addr ( String )( не обязательный ) - Адресная строка без параметров
  • add ( String )( не обязательный ) - Добавочный параметр для обработки вложенных объектов

Возврат:

( String ) Возвращает URL строку

Пример:

let object={
    user:'Alex',
    age:18,
    settings:{
        player:{
            volume:[10,15],
            mute:true
        }
    },
    location:[100,200,[500,550]]
}

console.log(Url.encode(object,'http://example.com/user')) // Преобразует в url адрес с параметрами
/* Вывод: http://example.com/user?user=Alex&age=18&settings[player][volume][]=10&settings[player][volume][]=15&settings[player][mute]=true&location[]=100&location[]=200&location[2][]=500&location[2][]=550 */

console.log(Url.encode(object)) // Преобразует в url параметры
/* user=Alex&age=18&settings[player][volume][]=10&settings[player][volume][]=15&settings[player][mute]=true&location[]=100&location[]=200&location[2][]=500&location[2][]=550 */

 


 

Url.decode(url)

Функция для преобразования параметров из URL в объект

Параметры:

  • url ( String ) - Строка URL параметров

Возврат:

( Object ) Возвращает объект с параметрами

Пример:

let url = 'http://example.com/user?user=Alex&age=18&settings[player][volume][]=10&settings[player][volume][]=15&settings[player][mute]=true&location[]=100&location[]=200&location[2][]=500&location[2][]=550'

let urlParam = 'user=Alex&age=18&settings[player][volume][]=10&settings[player][volume][]=15&settings[player][mute]=true&location[]=100&location[]=200&location[2][]=500&location[2][]=550'

console.log(Url.decode(url)) 
console.log(Url.decode(urlParam)) 

/* В вариантах с адресом и без, адрес будет отсекаться, в результате будет получен следующий объект:
{
    user:'Alex',
    age:18,
    settings:{
        player:{
            volume:[10,15],
            mute:true
        }
    },
    location:[100,200,[500,550]]
}
*/