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 🙏

© 2026 – Pkg Stats / Ryan Hefner

fundamentool

v1.0.0

Published

TypeScript utility library — strings, objects, arrays, async, type predicates, RPC, JSONL, Node.js and browser utilities

Downloads

41

Readme

fundamentool

English version

Набор утилит для работы с данными, URL, временем, событиями и асинхронным кодом.

Установка

npm install fundamentool

Сборка

npm run build

Типы и сборка попадают в dist/.

Тесты

npm test

Документация API

Генерация Typedoc в каталог docs/:

npm run docs:api

Точки входа

| Точка входа | Содержимое | |-------------|------------| | fundamentool | Универсальные утилиты (строки, объекты, массивы, типовые проверки и т.д.) | | fundamentool/async | Асинхронные итераторы, параллельное выполнение, последовательность | | fundamentool/is | Предикаты типов (isString, isEqual, isMatch и др.) | | fundamentool/join | Утилиты склейки строк | | fundamentool/split | Утилиты разбиения строк | | fundamentool/jsonl | Сериализация JSON Lines | | fundamentool/browser | Browser-утилиты (WebSocket, хранилище, роутинг, DI-провайдеры) | | fundamentool/node | Node.js-утилиты (файловый ввод-вывод, хеш, обход директорий) | | fundamentool/rpc | RPC-ядро: RpcClient, RpcConnect, RpcClientPool, RpcCoder | | fundamentool/rpc/browser | Browser-воркеры: RpcClientWorker, RpcConnectWorker, RpcClientWorkerPool | | fundamentool/rpc/node | Node.js-воркеры: NodeRpcClientWorker, NodeRpcConnectWorker, NodeRpcClientWorkerPool |

Лицензия

MIT

Основные модули

  • URL: urlParse, urlExtend, unparam, param — разбор и расширение URL, query-строки
  • Время: formatTime, normalizeDate, getData — форматирование и нормализация дат
  • События: attachEvent, EventEmitter, subscribe, Unsubscriber
  • Асинхронность: wait, createTimeout, createInterval, createAnimationFrame
  • Объекты и массивы: merge, without, extend-подобная логика, get по пути
  • Строки: half, halfLast — разбиение по разделителю
  • Прочее: noop, getUniqId, tryJsonParse, провайдеры (queue, template, router и др.)

Точный список экспортов — в src/index.ts. Подробное API — в сгенерированной документации (npm run docs:api).

Публичное API (экспортируется из src/index.ts)

Утилиты для DOM и событий

  • attachEvent (attachEvent.ts): безопасная подписка на DOM-событие с возвратом функции отписки.
  • EventEmitter (EventEmitter/): типизированный emitter с методами subscribe, once, clear, destroy.
  • subscribe (subscribe.ts): утилита для добавления/удаления слушателей в произвольную коллекцию.
  • Unsubscriber (Unsubscriber/): агрегатор отписок (add, unsubscribe), удобен для сборки всех unsubscribe‑функций.
  • noop (noop.ts): пустая функция, часто используется как дефолтный колбэк.

Таймеры и асинхронность

  • wait (wait.ts): Promise, который резолвится через указанный timeout, с опциональным значением.
  • createTimeout (createTimeout.ts): обёртка над setTimeout, возвращает функцию отмены.
  • createInterval (createInterval.ts): реализация интервала на базе setTimeout с контролем жизненного цикла и отменой.
  • createAnimationFrame (createAnimationFrame.ts): loop на requestAnimationFrame с учётом накопленного времени.
  • queueProvider (queueProvider.ts): последовательная очередь выполнения асинхронных задач (одна задача за раз).
  • sendingQueue (sendingQueue.ts): очередь промисов с аккумуляцией ошибок и методом drain() для ожидания завершения всех.

URL, роутинг и HTTP‑окружение

  • urlParse (urlParse.ts): низкоуровневый разбор URL в богатую структуру (TUrlProps), включая query, hash, child.
  • urlExtend (urlExtend.ts): комбинирование base URL и частичных структур URL (TUrlOptions), для модификации query/path.
  • unparam (unparam.ts): разбор query‑строки в объект (в т.ч. вложенные структуры и массивы по скобочной нотации).
  • routeParseProvider (routeParseProvider.ts): генератор regexp+маппера по route‑шаблону (используется в routerProvider).
  • regexpMapperProvider (regexpMapperProvider.ts): привязка regexp exec к мапперу значений (в том числе для роутинга).
  • routerProvider (routerProvider.ts): сложный роутер поверх history/store и React‑компонентов (Link, Router и т.п.).
  • rpc (rpc/): семейство модулей для RPC‑взаимодействия (кодирование сообщений, клиент, пул клиентов, browser/node адаптеры).

Шаблоны и текст

  • templateProvider (templateProvider.ts): mini‑template движок {{expr}} по объекту‑scope (с templatePartsJoin под капотом).
  • convertToBreakLineHTML (convertToBreakLineHTML.ts): преобразование текста с \n в HTML со span/br и экранированием </>.
  • formatTime (formatTime.ts): форматирование дат по маске, плюс вспомогательные normalizeDate, getData.
  • dateToUTCString (dateToUTCString.ts): компактный UTC‑строковый формат YYYYMMDDThhmmssZ.
  • withoutEmpty (withoutEmpty.ts): очистка структуры от null / undefined / пустых строк (с контролем глубины).

Объекты и коллекции

  • merge (merge.ts): семантический merge коллекции значений.
  • mapperProvider (mapperProvider.ts): маппер [values] -> {keys: values[i]} с опциональным dst.
  • pushArray (pushArray.ts): эффективная конкатенация array‑like в массив.
  • without (without.ts): копия объекта без указанных ключей.

Базовые утилиты

  • half (half.ts): разбиение строки на две части по разделителю.
  • tryJsonParse (tryJsonParse.ts): безопасный JSON.parse с возвратом исходного значения при ошибке.
  • getUniqId (getUniqId.ts): генерация уникального строкового ID с опциональным префиксом.

Хранилища и cookie

  • localStorageProvider (localStorageProvider.ts): адаптер под localStorage.
  • cookieStorageProvider (cookieStorageProvider.ts): адаптер под cookie‑хранилище.