npm.io
1.0.1 • Published yesterday

@russian-flags/republics-of-ussr

Licence
SEE LICENSE IN LICENSE
Version
1.0.1
Deps
0
Size
70 kB
Vulns
0
Weekly
0

@russian-flags/republics-of-ussr

English version

Нативная ESM-коллекция SVG-флагов и метаданных союзных республик СССР для JavaScript и TypeScript. Пакет повторяет устройство других коллекций @russian-flags: отдельные SVG, типизированный список, поиск по названиям и ленивые загрузчики.

Состав основан на странице Wikipedia «Список союзных республик СССР»: 15 республик состава 1956—1991 годов и Карело-Финская ССР как историческая 16-я позиция.

Состав

Флаг Республика slug Статус союзной республики
1 Флаг Российской СФСР Российская СФСР russian-sfsr 1922—1991
2 Флаг Украинской ССР Украинская ССР ukrainian-ssr 1922—1991
3 Флаг Белорусской ССР Белорусская ССР byelorussian-ssr 1922—1991
4 Флаг Узбекской ССР Узбекская ССР uzbek-ssr 1925—1991
5 Флаг Казахской ССР Казахская ССР kazakh-ssr 1936—1991
6 Флаг Грузинской ССР Грузинская ССР georgian-ssr 1936—1991
7 Флаг Азербайджанской ССР Азербайджанская ССР azerbaijan-ssr 1936—1991
8 Флаг Литовской ССР Литовская ССР lithuanian-ssr 1940—1991
9 Флаг Молдавской ССР Молдавская ССР moldavian-ssr 1940—1991
10 Флаг Латвийской ССР Латвийская ССР latvian-ssr 1940—1991
11 Флаг Киргизской ССР Киргизская ССР kirghiz-ssr 1936—1991
12 Флаг Таджикской ССР Таджикская ССР tajik-ssr 1929—1991
13 Флаг Армянской ССР Армянская ССР armenian-ssr 1936—1991
14 Флаг Туркменской ССР Туркменская ССР turkmen-ssr 1925—1991
15 Флаг Эстонской ССР Эстонская ССР estonian-ssr 1940—1991
Флаг Карело-Финской ССР Карело-Финская ССР karelo-finnish-ssr 1940—1956, историческая

Первые 15 элементов расположены в порядке статьи 71 Конституции СССР 1977 года; историческая республика добавлена последней.

Возможности

  • 16 готовых оптимизированных SVG-файлов с экспортами flags/<slug> и svg/<slug>.
  • ESM-сборка и декларации TypeScript.
  • Ленивый загрузчик для каждого флага.
  • Поиск по slug, коду, краткому и полному названию или alias.
  • Метаданные периода, статуса и конституционного порядка.

Установка

npm install @russian-flags/republics-of-ussr

Для локальной проверки из другого проекта:

npm install /path/to/republics-of-USSR

Быстрый старт

import { loadFlag, republics } from "@russian-flags/republics-of-ussr";

console.log(republics[0]);
// {
//   slug: "russian-sfsr",
//   code: "RUSSIAN_SFSR",
//   nameRu: "Российская СФСР",
//   nameEn: "Russian SFSR",
//   fullNameRu: "Российская Советская Федеративная Социалистическая Республика",
//   fullNameEn: "Russian Soviet Federative Socialist Republic",
//   aliases: ["РСФСР", "Россия", "Russia", "RSFSR"],
//   unionFrom: 1922,
//   unionTo: 1991,
//   constitutionalOrder: 1,
//   status: "constituent-1991",
// }

const image = await loadFlag("РСФСР", {
  alt: "Флаг РСФСР",
  className: "flag",
});

document.body.append(image);

loadFlag — alias функции loadFlagImage. Обе функции работают в браузере и требуют глобальный Image/DOM. Метаданные и поиск можно использовать в Node.js.

Прямой импорт SVG

import russianFlag from "@russian-flags/republics-of-ussr/flags/russian-sfsr";
import ukrainianSvg from "@russian-flags/republics-of-ussr/svg/ukrainian-ssr.svg";

console.log(russianFlag);
console.log(ukrainianSvg);

Оба пути указывают на файлы dist/flags/<slug>.svg. Импорт SVG как модуля требует сборщик с поддержкой ассетов, например Vite, webpack или Parcel.

После публикации файлы можно подключать через npm CDN:

<img src="https://unpkg.com/@russian-flags/republics-of-ussr@1.0.1/dist/flags/russian-sfsr.svg" alt="Флаг РСФСР" />

Поиск республики

import {
  normalizeRepublicInput,
  republicSlugs,
  resolveRepublicSlug,
} from "@russian-flags/republics-of-ussr";

console.log(republicSlugs.length); // 16
console.log(resolveRepublicSlug("RUSSIAN_SFSR")); // "russian-sfsr"
console.log(resolveRepublicSlug("РСФСР")); // "russian-sfsr"
console.log(resolveRepublicSlug("Russia")); // "russian-sfsr"
console.log(resolveRepublicSlug("КФССР")); // "karelo-finnish-ssr"
console.log(resolveRepublicSlug("unknown")); // undefined
console.log(normalizeRepublicInput("  UKRAINIAN_SSR ")); // "ukrainian-ssr"

Ввод нормализуется: пробелы по краям удаляются, регистр не учитывается, ё считается как е, пробелы и _ заменяются на -.

API

Экспорт Описание
republics Массив метаданных RepublicMeta.
republicSlugs Массив всех доступных slug.
normalizeRepublicInput(input) Нормализует пользовательский ввод.
resolveRepublicSlug(input) Возвращает slug по коду, названию или alias.
getFlagModuleLoader(input) Возвращает ленивый загрузчик или undefined.
loadFlagModule(input) Лениво импортирует модуль флага.
loadFlagImage(input, options) Создаёт HTMLImageElement с флагом.
loadFlag(input, options) Alias для loadFlagImage.
preloadFlag(input) Запускает загрузку модуля без ожидания.
createFlagImage(src, defaultAlt, options) Создаёт и настраивает <img>.

Основные типы: RepublicSlug, RepublicInput, RepublicStatus, RepublicMeta, FlagImageOptions, FlagModule.

Работа с SVG-ассетами

  1. Откройте assets/<slug>/index.svg.
  2. Внесите изменения в исходный SVG-флаг.
  3. Сохраните xmlns="http://www.w3.org/2000/svg" и масштабируемый viewBox.
  4. Запустите npm test.

Ассеты в assets являются исходниками пакета. Сборка сама копирует их в dist/flags/<slug>.svg; вручную редактировать dist не нужно.

Демо

npm install
npm --prefix examples install
npm run example:dev

Демо устанавливает @russian-flags/republics-of-ussr из npm, получает список из экспорта republics и лениво загружает каждый SVG через loadFlagModule. Локальная папка assets напрямую не используется.

Разработка

npm run build
npm test
npm run typecheck
npm run pack:dry

scripts/build-source.js читает src/republics.ts, проверяет assets/<slug>/index.svg и генерирует типы и загрузчики. scripts/build.js собирает JavaScript и копирует SVG в dist.

Репозиторий

Лицензия

Код пакета распространяется по лицензии MIT. Историческая символика и финальные SVG-флаги могут регулироваться отдельно; подробности см. в LICENSE.

Keywords