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-variables

v1.0.0

Published

Скрипт для персоналізації курсів Articulate Rise даними користувача з LMS Collaborator через SCORM API.

Readme

User Variables

Я створив цей скрипт для персоналізації курсів Articulate Rise даними користувача з LMS Collaborator. Він підставляє значення в текстові маркери %user_...%, замінює фото та надає дані через window.UserVariables.data.

Перший npm-випуск готую під назвою asimut-user-variables, версія 1.0.0. Перед підключенням переконайтеся, що пакет опубліковано, а команда LMS Collaborator встановила й погодила його використання на вашому порталі.

Звідки надходять дані

LMS Collaborator передає інформацію про поточного користувача через cmi.core.student_info. Це описано в базі знань Collaborator. Для інших LMS сумісність потрібно перевіряти окремо.

Скрипт шукає об’єкт API або API_1484_11 у поточному вікні та доступних батьківських вікнах, а потім використовує LMSGetValue або GetValue. Він читає cmi.core.student_info, за відсутності даних — cmi.suspend_data, а далі використовує cmi.core.student_name як запасний варіант.

Набір полів залежить від реалізації LMS і вмісту отриманого об’єкта. Скрипт не створює відсутні email, стать чи ініціали. Наявність методу GetValue не гарантує сумісності всіх використаних назв полів із будь-якою LMS або версією SCORM. Це потрібно перевірити у провайдера.

Скрипт не виконує HTTP-запитів до API профілю. Під час підставляння фото браузер завантажує зображення з URL, отриманого від LMS, тому адресу зображення має дозволяти політика img-src. Поточна версія також виводить об’єкт даних користувача та URL фото в консоль браузера; цю поведінку початкового скрипту збережено, і провайдер має врахувати її під час перевірки. У самому npm-пакеті даних слухачів немає.

Встановлення та розміщення файлу провайдером

Після публікації пакета:

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

Файл на диску:

node_modules/asimut-user-variables/selezen_v1.js

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

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

Якщо провайдер підтвердив доступність файлу на origin документа курсу за таким шляхом:

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

Разом з окремим пакетом заміни тексту за статтю, після погодження обох файлів:

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

Спочатку має завантажуватися User Variables. Зберігайте defer і порядок підключення; не додавайте async. Для заміни тексту за статтю також потрібна попередня конфігурація window.GenderReplacer.

Початковий / відраховується від origin документа курсу, зокрема всередині iframe, а не обов’язково від домену головної сторінки LMS. Використовуйте лише URL, підтверджені та перевірені в реальному SCORM-плеєрі. Доступ до SCORM API через батьківське вікно залежить від політики origin; нове посилання саме по собі не усуває обмежень iframe.

Старий і новий теги одного скрипту не повинні виконуватися одночасно.

Маркери в тексті

Наприклад, за наявності поля user_firstname або firstname маркер %user_firstname% замінюється його значенням. Для %user_email% потрібне user_email або email, для %user_gender% — user_gender або gender. Повна назва поля з префіксом user_ має пріоритет над короткою. Використовуйте маркери в нижньому регістрі.

Фото підставляється в img[alt="replace_user_img"] та підтримувані SVG-заглушки з першого доступного поля user_big_photo_thumb, big_photo_thumb, photo_thumb.

Скрипт відстежує зміни DOM, обробляє відкриті Shadow DOM і доступні iframe. Він призначений для браузера, використовує window, document і MutationObserver та не повинен виконуватися в Node.js/SSR. Додаткових залежностей npm і збирання немає.

Перевірка перед публікацією

npm run check
npm pack --dry-run

До npm-пакета включаю selezen_v1.js, package.json і README. Для публікації потрібні обліковий запис npm і права на назву пакета. Порядок переходу з jsDelivr описав у MIGRATION.md.

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

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

Автор: Oleh Selezen / Asimut.