next-box
TypeScript icon, indicating that this package has built-in type declarations

2.1.104 • Public • Published

Библиотека для разработки расширений, компонентов и работы с данными на платформе NextBox.

NPM Установка

npm install next-box

CDN Установка

<script src="
https://cdn.jsdelivr.net/npm/next-box@latest/index.min.js
"></script>

Простой пример использования

import { NextBox, StorageApi, Transport } from 'next-box';

const nb = new NextBox();

nb.init((state) => {
    const api = new StorageApi(state);
    ...

    api.download()
        .then((response) => response.json())
        .then((result) => {
            ...
        })
});

Навигация

В родительском фрейме

  • Перейти на / Transport.navigate('/', {}, '_parent')
  • Изменить queryParams на текущей странице Transport.navigate('', {'key': 'value'}, '_parent')

Открыть в новом окне

  • Перейти на / Transport.navigate('/', {}, '_blank')
  • Перейти на / и добавить queryParams Transport.navigate('/', {'key': 'value'}, '_blank')

Управление url текущим фреймом

  • Перейти на / Transport.navigate('/', {}, '_self')
  • Перейти на / и добавить queryParams Transport.navigate('/', {'key': 'value'}, '_self')

Инстанс NextBox

export declare class NextBox extends EventEmitter {
    /**
     *  Хранит актуальное состояние подключения
     */
    state?: AppState;

    /**
     *  Метод подключения к приложению, будет вызван после получения актуального состояния
     */
    init(handler?: (state: AppState) => void): void;
}

Инстанс StorageApi

export declare class StorageApi extends Api {
    /**
     * Получить список файлов
     */
    list(params: StorageRequestListParams): Promise<ResponseList<StorageElement>>;

    /**
     * Информация о файле (модель)
     */
    info(path: string): Promise<StorageElement>;

    /**
     * Создать файл или папку
     */
    create(name: string, path: string, type: 'dir' | 'file'): Promise<ResponseItem<StorageElement>>;

    /**
     * Удалить файл или папку
     */
    delete(path: string, hard?: boolean): Promise<any>;

    /**
     * Возвращает полный путь для загрузки файла
     */
    makeDownloadPath(path?: string, options?: MakePathOption): string;

    /**
     * Возвращает полный путь к изображению предварительного просмотра
     */
    makeImagePreview(path?: string, options?: MakePathOption): string;

    /**
     * Получить тело файла
     */
    download(path?: string): Promise<Response>;

    /**
     * Отправьте запрос на изменение файла
     */
    replace(body: any, path?: string): Promise<Response | null>;

    /**
     * Синхронная запись в файлы
     */
    liveReplace(body: any, path?: string, finalize?: () => void): void;

    /**
     * Загрузить файл
     */
    upload(path: string, file: File): Promise<{
        row: StorageElement;
    }>;

    /**
     * Загрузить файл по URL-адресу
     */
    uploadNet(path: string, url: string, overwrite?: boolean): Promise<StorageElement>;

    /**
     * Создать файд метаданных для расширения
     */
    createMeta(name?: string, path?: string): Promise<{
        row: StorageElement;
    }>;

    /**
     * Прочитать метаданные расширения
     */
    readMeta(path?: string): Promise<any>;

    /**
     * Сохранить метаданные расширения
     */
    saveMeta(body: any, path?: string): Promise<any>;

    /**
     * Относительный путь (откуда вызывается редактор)
     */
    relativePath(path?: string, defaultPath?: string): string;

    /**
     * Возвращает действительный URL-адрес в API (storage или FCA)
     */
    makeApiPath(...arg: string[]): URL;

    /**
     * Возвращает имя метафайла расширения (берется из extenstion.name.ru)
     */
    get metaName(): string;
}

Инстанс UserApi

export declare class UserApi extends Api {
    /**
     * Выход из системы
     */
    logout(): Promise<void>;

    /**
     * Получить данные пользователя по его id
     */
    get(id: number): Promise<User>;

    /**
     * Список пользователей
     */
    list(params: RequestUserListParams): Promise<ResponseList<User>>;

    /**
     * Вернуть удаленного пользователя
     */
    restore(id: number): Promise<void>;

    /**
     * Удалить пользователя
     */
    delete(id: number, params?: {
        hard: boolean;
    }): Promise<void>;

    /**
     * Обновить данные пользователя
     */
    update(data: UpdateUserParams): Promise<ResponseItem<User>>;

    /**
     * Создать нового пользователя
     */
    create(data: CreateUserParams): Promise<ResponseItem<User>>;

    /**
     * Создать API токен
     */
    createToken(data: {
        name: string;
        expire_in: string | null;
    }): Promise<UserToken>;

    /**
     * Получить список пользователей
     */
    listToken(params: RequestBaseParams): Promise<ResponseList<UserToken>>;

    /**
     * Удалить токен
     */
    deleteToken(id: number): Promise<void>;

    /**
     * Изменить пароль
     */
    changePassword(data: {
        new_password: string;
        old_password: string;
    }): Promise<{
        success: boolean;
    }>;

    /**
     * Получить данные о себе
     */
    me(): Promise<ResponseItem<User>>;

    /**
     * Загрузить аватар
     */
    meUploadAvatar(file: Blob, fileName: string): Promise<{
        file_path: string;
    }>;

    /**
     * Удалить аватар
     */
    meDeleteAvatar(): Promise<void>;

    /**
     * Получить список активных сессий
     */
    meListSession(params: RequestBaseParams): Promise<ResponseList<UserSession>>;

    /**
     * Удалить сессию по id или все
     */
    meDeleteSession(id?: number): Promise<void>;
}

Readme

Keywords

none

Package Sidebar

Install

npm i next-box

Weekly Downloads

356

Version

2.1.104

License

MIT

Unpacked Size

88.2 kB

Total Files

43

Last publish

Collaborators

  • ptnl.moscow