Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

bse-admin

Package Overview
Dependencies
Maintainers
1
Versions
53
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

bse-admin

bse-admin =========

  • 1.4.0
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
4
Maintainers
1
Weekly downloads
 
Created
Source

bse-admin

Build Status Dependency Status devDependency Status

Сборщик данных для bem-site-engine

Используется как dev-зависимость в bem-site-engine в режиме разработки.

В качестве хранилища данных используется база данных LevelDB

Соответствующий nodejs модуль для работы с базой данных.

Архитектурно данный сборщик представляет собой nodejs приложение, которое имеет command line интерфейс и предоставляет определенное js API для возможности вызова основных команд из сторонних приложений.

Структура работы основана на создании сценариев и последовательном выполнении всех этапов в данных сценариях.

Доступные сценарии описаны модулями которые находятся в директории targets

Сценарии

Сценарий представляет собой класс который должен быть унаследован от класса TargetBase

var TargetBase = require('./base').TargetBase,
    TargetFoo = function (options) {
        this.init(options);
    };

TargetFoo.prototype = Object.create(TargetBase.prototype);
TargetFoo.prototype.init = function (options) {
    [
        // Set list of tasks here
    ].forEach(function (task) {
        this.addTask(task);
    }, this);

    TargetBase.prototype.init.call(this, options);
};

TargetFoo.prototype.getName = function () {
    return 'Your target name';
};

exports.TargetFoo = TargetFoo;

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

Также должен быть переопределен метод getName который должен возвращать название сценария. Это необходимо для построения логов.

Готовые сценарии

Очистка базы данных

Удаляет все записи из базы данных.

  • Название: CLEAR DATABASE
  • Модуль: clear-db.js
  • Примечание: Можно передать массив шаблонов названий ключей. Записи соответствующие ключам которые попадают под соответствующий шаблон будут удалены.
Публикация модели

Собирает *.json файл из js - структуры описания модели и шлет его на сервер провайдера данных.

  • Название: UPDATE MODEL
  • Модуль: update-model.js
  • Примечание: Можно передать хост и порт провайдера данных. Если эти опции не указаны, то хост и порт будут выставлены по значениям указанным в конфигурационном файле.
Полная сборка

Основной сценарий выполнения. Проверяет наличие обновленного файла модели. Синхронизирует модель, проверяет обновление документации, новых версий библиотек и мета-информации по авторам и переводчикам. Переопределяет ссылки в документах, строит файл sitemap.xml. При наличии изменений создает копию базы данных в папке с текущей датой.

  • Название: NODES SYNCHRONIZATION
  • Модуль: nodes.js
Сборка в режиме разработки

Сценарий приложения в режиме разработки. В отличие от полной сборки работает с js файловой структурой модели. Не создает копий базы данных.

  • Название: NODES DEV SYNCHRONIZATION
  • Модуль: nodes-dev.js
Сборка документации

Вариант сборки при котором проверяется и синхронизируется только содержимое *.md файлов документации. Кроме этого выполняется проверка информации по автором и переводчикам а также общие шаги типа переопредления ссылок и создания sitemap.xml файла.

Главным образом данный сценарий используется для поиска ошибок на этапе разработки.

  • Название: DOCS SYNCHRONIZATION
  • Модуль: docs.js
Сборка библиотек

Вариант сборки при котором проверяется и синхронизируется только содержимое библиотек блоков. Кроме этого выполняются общие шаги типа переопредления ссылок и создания sitemap.xml файла.

Главным образом данный сценарий используется для поиска ошибок на этапе разработки.

  • Название: LIBRARIES SYNCHRONIZATION
  • Модуль: libraries.js
  • Примечание: Можно передать параметры библиотеки или отдельной версии. Соответствующие этой версии или библиотеки файлы будут удалены из файлового кэша и заново загружены из github-репозитория.

Этапы сборки

Этапы сборки представляет собой модуль, который экспортирует функцию принимающую аргументом объект сценария сборки и возвращающую fullfill vow promise c объектом сценария сборки при успешном прохождении этапа сборки и reject vow promise с объектом ошибки выполнения.

Код простейшего модуля удовлетворяющего таким требованиям представлен ниже:

var vow = require('vow');

module.exports = function (target) {
    console.log('Hello world')
    return vow.resolve(target);
};

Если добавить такой этап сборки в любой из сценариев, то при выполнении такого модуля в консоль выведется "Hello world".

Модули всех этапов сборки раположены в директории targets.

Готовые этапы сборки

Очистка базы данных

Удаляет все записи из базы данных.

Синхронизация документации
Создание узлов авторов и переводчиков
Создание узлов тегов
Финализация сборки

Последний модуль в очереди выполнения для всех сценариев. Предназначен для вывод финального лога.

Кроме того в нем можно определить например отключение от базы данных.

Сборка файла из js файловой структуры модели

Собирает единый *.json файл модели из js - файлов распределенных по папкам. Сохраняет этот *.json файл на файловую систему в папку './cache'.

Инициализация

Инициализирует подключение к локальной базе данных и github API.

Очистка кэша файлов библиотек блоков

Очищает файловый кэш для данных сборки по библиотекам. Дополнительные опции переданных на данный этап сборки позволяют выборочно очистить кэш для определенной библиотеки или выбранной версии библиотеки.

Синхронизация данных по библиотекам блоков с файловой системой
Синхронизация данных по библиотекам блоков с базой данных
Синхронизация модели
Переопределение ссылок
Синхронизация файла с мета-информацией по авторам и переводчикам

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

Удаление файла модели

Удаляет файл модели после ее успешной обработки. Нужен для предотвращения повторной синхронизации данных при последующих запусках сборщика данных.

Построение данных для системы внутреннего поиска
Создание структуры данных для файла sitemap.xml

Этот модуль собирает все узлы имеющие url и и строит js модель соответствующую файлу sitemap.xml для индексации сайта поисковыми системами. Узлы могут содержать параметры которые переопределяют стандартные настройки индексации.

После построения модели она конвертируется в xml и сохраняется в базу данных.

Создание копии базы данных

При наличии собранных изменений в процессе сборки на этом этапе все файлы базы данных копируются в папку snapshots/{dd:mm:yyyy-hh:mm:ss} где dd:mm:yyyy-hh:mm:ss дата создания копии базы данных в соответствующем формате.

Кроме файлов базы данных, папка бэкапа также содержит, файл data.json, который содержит дату сборки и список изменений данных, которые произошли в результате сборки.

Также присуствуют файлы libraries.json и blocks.json которые нужны для сервисов поиска.

Переключение симлинки на копию базы данных

Существует 2 симлинки расположенные в папке db:

  • testing
  • production

Папки, на которые указывают эти симлинки запрашиваются сайтом соответственно с тестового и боевого окружений.

При этом тестовая симлинка переключается на последний созданный snapshot сразу же после его создания.

Публикация модели на удаленный сервис

Открывает, архивирует и отправляет файл модели на сервер сборки.

Построение карты ссылок - узлов модели

Необходим для оптимальной работы роутера на сайте. Задача роутера - нахождение нужного узла модели (точнее id узла) по url запроса.

Этот модуль строит карту соответствия всех маршрутов сайта узлам модели.

Ответственный за разработку: @tormozz48

Keywords

FAQs

Package last updated on 11 Feb 2015

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc