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

choco-app

v1.8.0

Published

Библиотека для взаимодействия веб-приложений с Choco SuperApp. Работает только в браузерном окружении.

Downloads

936

Readme

choco-app

Библиотека для взаимодействия веб-приложений с Choco SuperApp. Работает только в браузерном окружении.

Установка

npm install choco-app

Share

shareFile

Type: (base64: string, filename?: string, mime?: string) => void

Поделиться файлом формата Base64.

base64

Type: string Картинка в формате Base64.

filename

Type: string Название файла.

mime

Type: string Тип файла.

import { shareFile } from 'choco-app';

shareFile('data:image/png;base64', 'name', 'image/png');

shareImage

Type: (base64: string, filename?: string, mime?: string) => void

Поделиться картинкой формата Base64.

base64

Type: string Картинка в формате Base64.

filename

Type: string Название файла.

mime

Type: string Тип файла.

import { shareImage } from 'choco-app';

shareImage('data:image/png;base64', 'name', 'image/png');

shareText

Type: (text: string) => void

Поделиться текстом.

text

Type: string Передаваемый текст.

import { shareText } from 'choco-app';

shareText('Hello World!');

Остальное

clearCache

Type: () => void

Очищает кэш приложения.

import { clearCache } from 'choco-app';

clearCache();

backToApplication

Type: () => void

Выход из веб-приложения обратно в нативное.

import { backToApplication } from 'choco-app';

backToApplication();

applicationBecomeActive

Type: (callback: Function) => void

Принимает функцию, которую стоит выполнить при выходе приложения из фона.

callback

Type: Function Любая функция.

import { applicationBecomeActive } from 'choco-app';

applicationBecomeActive(() => console.log('Вышел из фона'));

hapticSelection

Type: () => void

Вызывает нативную вибрацию.

import { hapticSelection } from 'choco-app';

hapticSelection();

isLocationEnabled

Type: () => boolean

Доступна ли геопозиция при использовании приложения.

import { isLocationEnabled } from 'choco-app';

isLocationEnabled();

onKeyboardClosed

Type: (callback: Function) => void

Принимает функцию, которую стоит выполнить при закрытии клавиатуры.

callback

Type: Function Любая функция.

import { onKeyboardClosed } from 'choco-app';

onKeyboardClosed(() => console.log('Вышел из фона'));

reload

Type: () => void

Обновление страницы с передачей в query следующих параметров: track_id, code, device_id, session_id и т.д.

import { reload } from 'choco-app';

reload();

getRefferalCode

Type: () => Promise<IRefferalCode>

Получение реферального кода.

import { getRefferalCode } from 'choco-app';

getRefferalCode().then(code => console.log(`Реферальный код: ${code}`));

openQR

Type: () => Promise<string>

Нативное считывание QR-кода.

import { openQR } from 'choco-app';

openQR().then(text => console.log(`QR-код: ${text}`));

pay

Type: (deeplink: string) => Promise<'success' | 'closed'>

Вызов оплаты через deeplink.

deeplink

Type: string Ссылка на оплату в приложении.

import { pay } from 'choco-app';

pay('ссылка на оплату').then(status => {
    if (status === 'success') {
        console.log('Оплата прошла успешно')
    } else {
        console.log('Модальное окно оплаты закрыли')
    }
}));

requestGeoPermissionStatus

Type: () => Promise<GeoStatus>

Получение статуса геопозиции.

import { requestGeoPermissionStatus } from 'choco-app';

requestGeoPermissionStatus().then(status => {
    if (status === 'granted') {
        // Получить гео
    }
}));

authorize

Type: (clientId: string, type: 'code' | 'trackId', redirectUri?: string, state?: string) => Promise<string | undefined>

Авторизация пользователя по clientId. Если пользователь не авторизован в нативном приложении, откроется окно авторизации с вводом номера телефона и кода. В другом случае, метод сразу вернет ответ.

clientId

Type: string

Идентификатор вашего приложения.

type

Type: 'code' | 'trackId'

Тип авторизации.

redirectUri

Type: string

Используется, если авторизация через code. На этот адрес возвращается код авторизации. Необходимо получить доступы у дежурного.

state

Type: string

Случайная строка, которая вернется вместе с кодом авторизации, чтобы приложение смогло убедиться, что ответ пришел не от стороннего сервиса.

:warning: Вызов метода по type='code': вернет ошибку, если авторизация по code отсутствует в нативном приложении. Необходимо сделать обработку на ошибку с message NOT_SUPPORTED.

:warning: Обработка ошибок: В новых версиях приложения необходимо обрабатывать ошибки, отличные от NOT_SUPPORTED.

import { authorize } from 'choco-app';

// Авторизация по trackId
authorize('11111111', 'trackId').then(trackId => {
    if (trackId) {
        // Сделать запрос на авторизацию
    }
}));

// Авторизация по code
authorize('11111111', 'code')
    .then(code => {
        if (code) {
            // Сделать запрос на авторизацию
        }
    })
    .catch(error => {
        if (error.message === 'NOT_SUPPORTED') {
            // Показать ошибку или вызвать authorize с типом trackId
        }
    })

openBarcodeScanner

Type: (formats: BarcodeFormat[], instructions: string[], actionText?: string) => Promise<string | 'manual'>

Открывает сканер штрихкодов. Возвращает строку с результатом сканирования или 'manual', если пользователь открыл ручной ввод.

formats

Type: BarcodeFormat[]

Массив форматов штрихкодов, которые нужно сканировать. По-умолчанию ['EAN_13', 'EAN_8', 'CODE_128'].

instructions

Type: string[]

Массив инструкций, которые будут показаны пользователю. По-умолчанию пустой массив.

actionText

Type: string

Текст кнопки внутри сканера. Опциональный параметр.

import { openBarcodeScanner } from 'choco-app';
import { BarcodeFormat } from 'choco-app/dist/ts/enum';

openBarcodeScanner([BarcodeFormat.EAN_13, BarcodeFormat.EAN_8], ['Холодильник открыт', 'Возьмите товар', 'Наведите камеру на штрихкод'], 'Ввести штрихкод вручную').then(result => {
    if (result === 'manual') {
        // Показать ручной ввод
    } else {
        // Успешное сканирование, штрихкод в result
    }
}));

isCameraPermissionEnabled

Type: () => Promise<boolean>

Проверяет, есть ли разрешение на использование камеры.

import { isCameraPermissionEnabled } from 'choco-app';

isCameraPermissionEnabled().then(isEnabled => {
    if (isEnabled) {
        // Разрешение есть
    } else {
        // Разрешения нет
    }
}));

logAmplitudeEvent

Type: (event: string, body: unknown) => boolean

Логирует событие в Amplitude.

event

Type: string

Название ивента аналитики.

body

Свойства ивента.

import { logAmplitudeEvent } from 'choco-app';

logAmplitudeEvent('event', { data: 'data' });

getNotificationStatus

Type: () => Promise<NotificationStatus>

Получение статуса о разрешенности уведомлений.

Статусы бывают granted | notDetermined | denied

import { getNotificationStatus } from 'choco-app';

getNotificationStatus().then(status => {
    if (status === 'granted') {
        // Когда уведомлений разрешены
    }
}));

requestNotificationStatus

Type: () => Promise<NotificationStatus>

Запрос на статусы о разрешенности уведомлений. Когда у юзера не определен или заблочен, этот метод отправляет юзера в настройки приложения Choco в телефоне

Статусы бывают granted | notDetermined | denied

import { requestNotificationStatus } from 'choco-app';

requestNotificationStatus().then(status => {
    if (status === 'granted') {
        // Когда уведомлений разрешены
    }
});

toastNotify

Type: (body: NotifyBody | string, title?: string, message?: string) => void

Показывает нативное уведомление в приложении. Первым параметром принимает либо объект, либо строку, которая является типом NotifyType, вторым параметром может принять заголовок уведомления, а третьим сообщение.

NotifyType может быть 'success' | 'info' | 'warning' | 'error'. Объект NotifyBody состоит из type (по умолчанию - 'success'), title, message.

import { toastNotify } from 'choco-app';

toastNotify({
    type: 'success',
    title: 'Title',
    message: 'Some message'
});

toastNotify('error', 'Title', 'Some message');

logAppsflyerEvent

Type: (event: string, body: unknown) => boolean

Логирует событие в appsflyer.

event

Type: string

Название ивента appsflyer.

body

Свойства ивента.

import { logAppsflyerEvent } from 'choco-app';

logAppsflyerEvent('event', { ... });

openAppSettings

Type: () => void

Открывает настройки приложения ios/android.

import { openAppSettings } from 'choco-app';

openAppSettings();