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

asimut-user-gender-replacer

v1.0.1

Published

Скрипт для заміни слів і фраз у курсах Articulate Rise в LMS Collaborator з урахуванням статі користувача.

Readme

User Gender Replacer

Я створив цей скрипт для адаптації тексту курсів Articulate Rise у LMS Collaborator з урахуванням статі користувача. Він замінює задані слова й фрази, знаходить блоки в DOM і відкритих Shadow DOM та обробляє текст, який додається динамічно.

Опублікував пакет [email protected]. Підключення через LMS Collaborator погоджую окремо: спочатку команда перевіряє та встановлює пакет, а після підтвердження адреси файлу я оновлюю курс. Для інших LMS сумісність потрібно перевіряти окремо.

Що робить скрипт

  • Отримує вже доступні в поточному вікні дані з window.UserVariables.data, window.UserVariables2.data або window.userData.
  • Визначає стать за полями gender, sex, user_gender, userGender; за відсутності відповідного значення використовує евристики за ім’ям і текстом сторінки.
  • Якщо результат — female, замінює налаштовані слова у вказаних блоках. За інших результатів заміни не виконуються.
  • Надає API у window.GenderReplacer.

Скрипт не отримує профіль через API LMS, не витягує email чи ініціали й не надсилає дані мережевими запитами. Завантаження даних користувача забезпечує окрема інтеграція. Її має дозволяти політика LMS, і вона повинна надавати дані в тому самому вікні, де виконується скрипт.

Для отримання даних із LMS Collaborator використовую свій User Variables, який також опублікував у npm як [email protected]. Спочатку підключаю User Variables, потім Gender Replacer. Зберігаю defer без async і попередню конфігурацію замін.

Евристики визначення статі можуть помилятися; для передбачуваного результату інтеграція має передавати явно задане поле статі. Пакування в npm не змінює наявної поведінки.

Встановлення для провайдера LMS

Для встановлення опублікованої версії передаю команді Collaborator таку команду:

npm install --save-exact --ignore-scripts [email protected]

Браузерний файл встановлюється до:

node_modules/asimut-user-gender-replacer/selezen_v1.js

Це шлях на диску сервера. Провайдер має налаштувати доступ до цього файлу за дозволеним HTTPS URL і повідомити остаточний URL клієнтам. Саме встановлення npm-пакета не робить файл доступним у браузері. Надавати доступ до всього каталогу node_modules не потрібно.

Підключення у SCORM

Після підтвердження командою Collaborator саме цього URL на origin документа курсу використовую таке підключення:

<script defer src="/node_modules/asimut-user-gender-replacer/selezen_v1.js"></script>

Початковий / означає корінь origin документа, у якому міститься цей тег. Якщо курс відкрито в iframe на іншому домені, шлях також визначається відносно цього домену. Тому адресу перевіряю всередині реального SCORM-плеєра.

Приклад конфігурації для нової інтеграції:

window.GenderReplacer = {
  debug: false,
  targetBlocks: ['YOUR_BLOCK_ID'],
  genderReplacements: {
    female: {
      'готовий': 'готова',
      'пройшов': 'пройшла'
    }
  }
};

Конфігурацію задаю до запуску selezen_v1.js способом, дозволеним LMS; дозвіл на зовнішній файл не означає дозволу на довільний inline JavaScript. У наявному курсі зберігаю поточну конфігурацію та завантажувач даних користувача.

Скрипт призначений для браузера та використовує window, document, MutationObserver. Його не слід виконувати на сервері через Node.js або SSR. Збирання та додаткові залежності npm не потрібні.

Перевірка та публікація

Перед кожним випуском перевіряю синтаксис і склад npm-архіву:

npm run check
npm pack --dry-run

До npm-пакета включаю selezen_v1.js, package.json і цей README.

Публікація потребує входу в npm і прав на назву пакета. Порядок переходу з jsDelivr, погодження шляху з командою LMS Collaborator та оновлення курсів описав у MIGRATION.md.

Умови використання

Окрему ліцензію до репозиторію поки не додав.

Автор: Oleh Selezen / Asimut.