Skip to content

Latest commit

 

History

History
151 lines (110 loc) · 8.39 KB

File metadata and controls

151 lines (110 loc) · 8.39 KB

🚀 nullmock

English Türkçe Azərbaycanca Русский ქართული

Молниеносный mock API сервер без зависимостей, работающий на основе файловой системы, с умным движком генерации данных.

Nullmock читает ваши .json файлы, перехватывает динамические URL-маршруты, такие как /api/users/[id], понимает параметры запроса (query parameters) и магическим образом генерирует огромные объемы фейковых данных с использованием встроенных словарей или движка умного угадывания типов данных.

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

  • Без зависимостей: Чистый Node.js. Никаких express, faker или раздутых папок node_modules.
  • Маршрутизация по файловой системе: Папки определяют ваши API-маршруты (например, mocks/api/users/[id]/GET.json).
  • Умный движок данных: Автоматически угадывает типы данных по ключам JSON (например, генерирует реальные даты для created_at, email для user_email).
  • Встроенные словари (Locales): Используйте теги, такие как {{firstName:ru}} или {{city:ru}}, чтобы генерировать реалистичные локализованные данные.
  • Директива Repeat: Сгенерируйте 100 пользователей за миллисекунду, просто добавив "_repeat": 100 в ваш шаблон.
  • Режим библиотеки: Импортируйте движок напрямую в ваши Node.js скрипты без запуска сервера.

📦 Установка и быстрый старт

Выполните следующую команду в корневой директории вашего проекта для создания структуры:

npx nullmock init

Эта команда создаст следующую структуру:

  • mocks/: Главная папка для ваших API эндпоинтов.
  • mocks/locales/: Поместите сюда ваши собственные .json словари.
  • mocks/_examples/: Содержит 6 Золотых API Шаблонов для мгновенного старта.

(Чтобы пропустить создание примеров, выполните: npx nullmock init --no-examples)

🚦 Запуск сервера

Вариант 1: Быстрый старт

npx nullmock

Вариант 2: NPM Скрипты (Рекомендуется) Добавьте это в ваш package.json:

"scripts": {
  "mock": "nullmock"
}

Затем запустите: npm run mock


📂 6 Золотых шаблонов (_examples)

При выполнении команды init, Nullmock предоставляет 6 стандартных для индустрии шаблонов. Вы можете скопировать и вставить их в свои папки API:

  1. 1_basic_list.json: Простой, плоский массив элементов (удобно для категорий, стран).
  2. 2_paginated_list.json: Стандартная структура пагинации (current_page, data, total).
  3. 3_infinite_scroll.json: Структура пагинации на основе курсора (has_more, next_cursor).
  4. 4_single_resource.json: Детальный объект для одного элемента (например, /users/60).
  5. 5_dashboard_overview.json: Гибридная структура, содержащая как сводные метрики, так и массивы недавней активности.
  6. 6_lazy_auto_mock.json: Шаблон без конфигурации. Просто напишите ключи (например, "user_email": ""), оставьте значения пустыми, и умный движок Nullmock угадает и заполнит их!

🌍 Встроенные словари (Locales)

Nullmock поставляется со встроенными локализованными данными для быстрого прототипирования. Используйте синтаксис {{category:lang}} в ваших JSON файлах.

Поддерживаемые встроенные языки:

  • en (Английский)
  • tr (Турецкий)
  • az (Азербайджанский)
  • ru (Русский)
  • ka (Грузинский)

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

{
  "name": "{{firstName:ru}} {{lastName:ru}}",
  "location": "{{city:ru}}"
}

Пользовательские словари: Хотите использовать свои собственные данные? Просто создайте файл ru.json или my_data.json внутри папки mocks/locales/. Nullmock автоматически отдаст приоритет словарям вашего проекта над встроенными.


🌐 Симуляция сети (Задержки и Ошибки)

Легко тестируйте состояния загрузки (loading) и обработку ошибок на вашем фронтенде. Вы можете симулировать задержку сети и HTTP статус-коды двумя способами:

1. Через URL-параметры (Динамический тест) Нет необходимости менять ваши mock-файлы! Просто добавьте параметры к вашему fetch URL:

  • Тест состояния загрузки: /api/users?_delay=2000 (Ждет 2 секунды)
  • Тест неавторизованного доступа: /api/users?_status=401
  • Комбинируйте их: /api/users?_delay=1000&_status=500

2. Через JSON-конфигурацию (Постоянно) Добавьте ключи _delay и _status прямо в ваш JSON-файл. Nullmock применит их и удалит перед отправкой ответа клиенту:

{
  "_status": 404,
  "_delay": 1500,
  "error": "Пользователь не найден"
}

🔢 Умные диапазоны чисел

Нужны случайные числа в определенном диапазоне для цен, возраста или баланса кошелька? Просто используйте тег {{number:min-max}} в любом месте ваших строковых значений!

{
  "price": "{{number:10-500}}",
  "age": "{{number:18-65}}"
}

🧠 Использование Nullmock в качестве библиотеки (Import)

Вам не обязательно использовать Nullmock как сервер. Вы можете импортировать его мощный движок генерации напрямую в ваши бекенд-скрипты, тесты или сидеры!

const { deepScanAndRepeat } = require('nullmock');

const myTemplate = {
  "_repeat": 3,
  "id": "{{id}}",
  "email": "", // Умное угадывание
  "name": "{{firstName:ru}}"
};

// Генерируйте данные на лету! (Передаем { id: 10 } как динамический параметр)
const fakeData = deepScanAndRepeat(myTemplate, { id: 10 });

console.log(fakeData);

🤝 Вклад в проект

Ваш вклад всегда приветствуется! Пожалуйста, создавайте свои Pull Request'ы в ветку develop.

📄 Лицензия

MIT © modoldern