Публічний реєстр
Звіт про здоров'я програмного забезпеченнясхема 0.27.0 · метрики 2.3.1 · 2026-07-30 20:35 UTC

ncbi / icn3d

web-based protein structure viewer and analysis tool interactively or in batch mode

JavaScriptВласна ліцензія★ 175 зірок⑂ 54 форкиз січ. 2016 р.Переглянути на GitHub ↗
ТипБібліотекаяк це визначено

ncbi/icn3d має індекс здоров’я 57 зі 100, що відповідає смузі «Помірний». Найвищий показник — Vitality (80/100), найнижчий — Engineering Quality (31/100). Останнє оновлення було 8 днів тому. Більшість нещодавньої роботи виконує один учасник.

57
загалом / 100
Помірний

Індекс здоров'я програмного забезпечення

Метрики згруповано у зважені категорії на шкалі 1–100. Загальна оцінка починається як їхнє зважене середнє, відкаліброване за розподілом публічного реєстру, тож діапазони мають перцентильний зміст; коли публічні дані активують Політику юрисдикцій високого ризику, рейтинг коригується й отримує верхню межу 34 («У зоні ризику»).

57
Винятковий93-100Верхній щабель реєстру (≈ топ-5%); відповідає практично всім перевіреним критеріям
Відмінний80-92Сильний за всіма напрямами; незначні прогалини
Добрий65-79Здоровий; прогалини обмежені та керовані
Помірний50-64Прийнятний, але з помітними прогалинами; рекомендовано перевірку
Слабкий35-49Суттєві недоліки в кількох сферах
У зоні ризику20-34Суттєві слабкі місця; впровадження потребує обережності
Критичний1-19Серйозні проблеми (покинутий, єдиний мейнтейнер, без базової гігієни)
ЖиттєздатністьСпільнота тавпровадженняСталість таврядуванняІнженернаякістьБезпекаГотовність доШІ

Профіль оцінок

Кожна вісь — окрема категорія. Форма важить більше, ніж середнє: здоровий об'єкт заповнює всю фігуру, тоді як профіль із піками та провалами означає, що сила в одному вимірі маскує ризик в іншому.

Зважений загальний бал 55 калібровано до 57 за шкалою опублікованого індексу (калібрування реєстру 2026-08-02).

Власність

2 843 підписники152 публічні репозиторіїз бер. 2013 р.

За цим репозиторієм стоїть організація — спільна, підзвітна опіка, здатна пережити будь-якого окремого мейнтейнера.

Пакетні екосистеми

РеєстрПакетВерсіяЗавантажень / місВерсіїОстання публікаціяТеги
npmicn3d3.51.22 7672508 днів томуncbiicn3d3d-viewerproteinstructurenode
PyPIicn3dpy3.51.01 14812023 дні томуwebgl-basedproteinstructureviewer

Метрики за категоріями

Життєздатність

Чи живий проєкт — чи пишеться код і чи виходять релізи?

80Відмінний · 21% загального індексу
Як обчислюється оцінка
28.8/36Свіжість push — останній push 8 дн. тому
11.1/36Ритм комітів — 16/52 тижнів із комітами
16.9/18Обсяг комітів — 76 комітів за останній рік
10/10OpenSSF Scorecard: Maintained — 27 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Використані вхідні дані
commits_last_year76
human_commit_share1
days_since_last_push8
active_weeks_last_year16
Як обчислюється оцінка
27/27Випускає релізи — опубліковано 100 релізів
36/36Свіжість релізів — останній реліз 10 дн. тому
27/27Ритм релізів — реліз кожні ~22,5 дн.
0/10OpenSSF Scorecard: Signed-Releases — немає даних
Використані вхідні дані
releases_count100
latest_release_tagv3.51.1
releases_from_tagsні
days_since_latest_release10
mean_days_between_releases22,5
Виключено з оцінювання (немає даних або не застосовно): OpenSSF Scorecard: Signed-Releases. Залишкові ваги перенормовано.

Спільнота та впровадження

Чи має проєкт користувачів, завантаження, увагу та влаштовані умови для контриб’юторів?

58Помірний · 17% загального індексу
Як обчислюється оцінка
36.3/60Зірки — 175 зірок
14.4/25Форки — 54 форків
6.2/15Спостерігачі — 14 спостерігачів
Використані вхідні дані
forks54
stars175
watchers14
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Як обчислюється оцінка
22.5/22.5README
16.9/22.5Ліцензія — файл ліцензії наявний, не є визнаною ліцензією
0/18Настанови CONTRIBUTING
13.5/13.5Кодекс поведінки
0/7.2Шаблон issue
0/6.3Шаблон PR
Використані вхідні дані
has_readmeтак
has_licenseтак
readme_badges
has_contributingні
has_issue_templateні
has_code_of_conductтак
readme_badge_services
has_pull_request_templateні
Як обчислюється оцінка
47.9/80Щомісячні завантаження — 3 915 завантажень/місяць у npm, pypi
0/20Залежні пакети в реєстрі — ця екосистема цього не повідомляє
Використані вхідні дані
packagesicn3d, icn3dpy
dependents
ecosystemsnpm, pypi
total_downloads
monthly_downloads3 915
Виключено з оцінювання (немає даних або не застосовно): Залежні пакети в реєстрі. Залишкові ваги перенормовано.

Сталість та врядування

Чи переживе проєкт своїх людей — бас-фактор, реактивність, хто за ним стоїть і як супроводжуються пакети?

64Помірний · 23% загального індексу
Як обчислюється оцінка
9/54Бас-фактор — на 1 контриб’ютор(ів) припадає половина всіх комітів
0.5/22.5Розподіл комітів — головний контриб’ютор — автор 98% комітів
5.4/13.5Широта контриб’юторів — 4 контриб’юторів
10/10OpenSSF Scorecard: Contributors — project has 6 contributing companies or organizations
Використані вхідні дані
bus_factor1
contributors_sampled4
top_contributor_share0,98
Як обчислюється оцінка
39.4/42Вирішення issue — закрито 94% issue
16/30Прийняття PR — злито 8/15 вирішених PR
0/13Newcomer PR acceptance — за 30 дн. не вирішено жодного PR від новачка
0/15OpenSSF Scorecard: Code-Review — Found 0/30 approved changesets -- score normalized to 0
Використані вхідні дані
merged_prs8
open_issues7
closed_issues104
prs_merged_7d
prs_decided_7d
prs_merged_30d
prs_decided_30d
issue_closed_ratio0,937
closed_unmerged_prs7
first_time_authors_30d
first_time_prs_merged_30d
first_time_prs_decided_30d
Виключено з оцінювання (немає даних або не застосовно): newcomer_pr_acceptance. Залишкові ваги перенормовано.
Як обчислюється оцінка
30/30Підтримка власника — у власності організації
0/20Верифікований домен
24.8/25Охоплення власника — 2 843 підписників у ncbi
25/25Послужний список — 152 публічних репозиторіїв, вік облікового запису ~13 р.
Використані вхідні дані
followers2 843
owner_typeOrganization
is_verified
owner_loginncbi
public_repos152
account_age_days4 892

Супровід пакетів

100Винятковий
Як обчислюється оцінка
25/25Опубліковано й доступно — 2 пакет(ів) у npm, pypi
35/35Свіжість публікацій — остання публікація 8 дн. тому
20/20Історія версій — 250 опублікованих версій
20/20Не застарілий — активний, не deprecated і не yanked
Використані вхідні дані
packagesicn3d, icn3dpy
ecosystemsnpm, pypi
any_deprecatedні
min_days_since_publish8

Інженерна якість

Чи наявні базові інженерні практики та документація?

31У зоні ризику · 19% загального індексу
Як обчислюється оцінка
0/24Процеси CI
0/24Наявні тести
0/16Конфігурація лінтера
0/9.6Pre-commit-хуки
0/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — немає даних
Використані вхідні дані
has_ciні
has_testsні
has_editorconfigні
has_linter_configні
has_precommit_configні
Виключено з оцінювання (немає даних або не застосовно): OpenSSF Scorecard: CI-Tests. Залишкові ваги перенормовано.
Як обчислюється оцінка
30/30README
0/25Каталог документації
15/15Сайт документації / домашня сторінка — https://www.ncbi.nlm.nih.gov/Structure/icn3d
10/10Опис репозиторію
10/10Теми — 16 тем
10/10Wiki
Використані вхідні дані
topicsicn3d, webgl, protein, 3d-structure, 3d-viewer, structure-viewer, nucleotide, chemical, protein-viewer, jupyter-notebook, snp, delphi, nodejs, molecular-viewer, ar, vr
has_wikiтак
homepagehttps://www.ncbi.nlm.nih.gov/Structure/icn3d
has_readmeтак
has_docs_dirні
has_descriptionтак

Безпека

Чи міцні видимі практики безпеки й ланцюга постачання, без непослабленої пов’язаності з юрисдикціями високого ризику?

38Слабкий · 16% загального індексу

Стан безпеки

33У зоні ризику
Як обчислюється оцінка
5.2/7.5Binary-Artifacts — binaries present in source code
0/7.5Branch-Protection — branch protection not enabled on development/release branches
0/2.5CI-Tests — немає даних
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/30 approved changesets -- score normalized to 0
2.5/2.5Contributors — project has 6 contributing companies or organizations
0/10Dangerous-Workflow — немає даних
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.2/2.5Ліцензія — license file detected
7.5/7.5Maintained — 27 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
0/5Packaging — немає даних
0/5Pinned-Dependencies — немає даних
0/5SAST — no SAST tool detected
5/5Security-Policy — security policy file detected
0/7.5Signed-Releases — немає даних
0/7.5Token-Permissions — немає даних
0/7.5Vulnerabilities — 23 existing vulnerabilities detected
Використані вхідні дані
sourceopenssf_scorecard
checks_evaluated12
scorecard_versionv5.5.0
checks_inconclusive6
scorecard_aggregate3,3
Виключено з оцінювання (немає даних або не застосовно): ci_tests, dangerous_workflow, packaging, pinned_dependencies, signed_releases, token_permissions. Залишкові ваги перенормовано.
Як обчислюється оцінка
10.9/35Прямі залежності без відомих сповіщень — уражено 1: axios 0.25.0 (high 8.6)
18.4/25Непрямі залежності без відомих сповіщень — уражено 1: @tootallnate/once 1.1.2 (low 3.3)
30.8/40Немає задавнених сповіщень — 2 пакет(ів) зі сповіщеннями без реакції понад 90 дн.; найдавніше опубліковано 994 дн. тому
Використані вхідні дані
sourceosv
advisories24
affected_packages2
assessed_packages77
unassessed_packages0
affected_by_severityhigh 1, low 1
direct_affected_packages1
Звірено з runtime-замиканням залежностей npm:icn3d@3.51.2 — тим, що тягне за собою встановлення опублікованого пакета, — 77 пакетів. Досяжність не аналізується.

Готовність до ШІ

Наскільки репозиторій оснащений для розробки та супроводу за участі ШІ-агентів? Має свідомо малу вагу (4%): агентний інструментарій — реальний сигнал супроводу, але репозиторій без нього все одно може отримати 100/100.

36Слабкий · 4% загального індексу
Як обчислюється оцінка
0/45Інструкції для агентів — немає CLAUDE.md / AGENTS.md / правил редактора
0/15Машиночитана документація (llms.txt)
35.2/40Читабельна історія комітів — намір зазначено у 66 з 100 людських комітів (структурований заголовок або пояснювальний текст)
Використані вхідні дані
has_llms_txtні
legible_history_share0,66
agent_instruction_files
agent_instruction_max_bytes
Як обчислюється оцінка
18/18Розгортання однією командою — icn3dnode/tmalign-icn3dnode/Makefile
0/22Автоматизовані тести
0/11Конфігурація лінтера / форматера
0/11Статична перевірка типів
10/10Відтворюване середовище — lockfile
0/10Підтверджена практика роботи з агентами — серед останніх 100 комітів немає створених агентом
0/8Автоматизоване супроводження — автоматичних оновлень залежностей не виявлено
0/10OpenSSF Scorecard: Pinned-Dependencies — немає даних
Використані вхідні дані
has_nixні
has_testsні
lockfilespackage-lock.json
has_dockerfileні
typed_languageні
bootstrap_filesicn3dnode/tmalign-icn3dnode/Makefile
has_devcontainerні
has_linter_configні
typecheck_configs
agent_commit_share0
toolchain_manifests
dependency_bot_commit_share0
Виключено з оцінювання (немає даних або не застосовно): OpenSSF Scorecard: Pinned-Dependencies. Залишкові ваги перенормовано.
Як обчислюється оцінка
0/45Типізований код — JavaScript без конфігурації перевірки типів
48.2/55Керовані розміри файлів — 25/201 файлів вихідного коду понад 60 КБ
Використані вхідні дані
primary_languageJavaScript
largest_source_bytes1 930 687
source_files_sampled201
oversized_source_files25
Як обчислюється оцінка
0/40Схема API (OpenAPI/GraphQL/proto)
0/20Сервер MCP
40/40Придатні до запуску приклади — example
Використані вхідні дані
example_dirsexample
has_mcp_signalні
api_schema_files

Ключові факти

175зірок GitHub
4контриб'юторів
76комітів за останні 12 місяців
8днів від останнього пушу
100релізів
1бас-фактор
7відкритих issue
npm, PyPIпакетних екосистем

Попередження щодо збору даних

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token

Докладніше

Історія зірок і форків 0 ★ / 54 ⇿
0Зірки
54Форки
99Релізи

Коли додано кожну зірку й форк — зібрано з GitHub і згруповано за днями. Кумулятивне зростання розміщено просто над денними додаваннями, з яких воно складається, тож їх видно одне проти одного: рівномірне органічне накопичення виглядає зовсім інакше, ніж різкий короткочасний сплеск. Там, де цю різницю можна виміряти, її подано як автентичність росту.

01020304050605252016-012021-042026-07
Мажорні 0Мінорні 35Патчі 58

Кожна точка охоплює 10 днів.

OpenSSF Scorecard 3.3 / 10
3.3сукупно

Незалежна, не прив'язана до інструментів оцінка безпеки від відкритого проєкту OpenSSF Scorecard. Кожна перевірка винагороджує практику безпеки, а не інструмент конкретного постачальника. Перевірки, які Scorecard не зміг визначити, позначено н/д і виключено з оцінки безпеки (вони ніколи не зараховуються як нуль).Scorecard v5.5.0 · 2026-07-30 20:35 UTC

7Binary-Artifactsbinaries present in source code
0Branch-Protectionbranch protection not enabled on development/release branches
н/дCI-Testsno pull request found
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/30 approved changesets -- score normalized to 0
10Contributorsproject has 6 contributing companies or organizations
н/дDangerous-Workflowno workflows found
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
9Licenselicense file detected
10Maintained27 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
н/дPackagingpackaging workflow not detected
н/дPinned-Dependenciesno dependencies found
0SASTno SAST tool detected
10Security-Policysecurity policy file detected
н/дSigned-Releasesno releases found
н/дToken-PermissionsNo tokens found
0Vulnerabilities23 existing vulnerabilities detected
Прямі залежності 16
РеєстрПакетОбмеження версіїМаніфест
npmjquery^3.5.0package.json
npmjquery-uigithub:jquery/jquery-ui#1.13.2package.json
npmline-awesome^1.3.0package.json
npmthree~0.177.0package.json
npmuglify-js^3.3.9package.json
npmdel^5.1.0package.json
npmgulp-concat^2.6.1package.json
npmgulp-dom^1.0.0package.json
npmgulp-help^1.6.1package.json
npmgulp-rename^2.0.0package.json
npmgulp-replace^1.1.1package.json
npmgulp-uglify^3.0.2package.json
npmgulp-zip^5.0.1package.json
npmrollup^2.45.2package.json
npmrollup-plugin-node-resolve^5.2.0package.json
npmrollup-plugin-terser^7.0.2package.json
Усі залежності 498

Повний розв'язаний набір залежностей із графа залежностей GitHub: 16 прямих і 482 непрямих (транзитивних) пакетів. Транзитивне замикання є повним, коли в репозиторії закомічено lockfile.

РеєстрПакетВерсіяЗв'язок
npmdel5.1.0пряма
npmgulp-concat2.6.1пряма
npmgulp-dom1.0.0пряма
npmgulp-help1.6.1пряма
npmgulp-rename2.0.0пряма
npmgulp-replace1.1.4пряма
npmgulp-uglify3.0.2пряма
npmgulp-zip5.1.0пряма
npmjquery3.7.1пряма
npmjquery-ui1.13.2пряма
npmline-awesome1.3.0пряма
npmrollup2.79.2пряма
npmrollup-plugin-node-resolve5.2.0пряма
npmrollup-plugin-terser7.0.2пряма
npmthree0.177.0пряма
npmuglify-js3.3.9пряма
npm@babel/code-frame7.26.2непряма
npm@babel/helper-validator-identifier7.25.9непряма
npm@jridgewell/gen-mapping0.3.5непряма
npm@jridgewell/resolve-uri3.1.2непряма
npm@jridgewell/set-array1.2.1непряма
npm@jridgewell/source-map0.3.6непряма
npm@jridgewell/sourcemap-codec1.5.0непряма
npm@jridgewell/trace-mapping0.3.25непряма
npm@nodelib/fs.scandir2.1.5непряма
npm@nodelib/fs.stat2.0.5непряма
npm@nodelib/fs.walk1.2.8непряма
npm@types/expect1.20.4непряма
npm@types/glob7.2.0непряма
npm@types/minimatch5.1.2непряма
npm@types/node22.9.1непряма
npm@types/resolve0.0.8непряма
npm@types/vinyl2.0.12непряма
npmabab2.0.6непряма
npmacorn6.4.2непряма
npmacorn8.14.0непряма
npmacorn-globals4.3.4непряма
npmacorn-walk6.2.0непряма
npmaggregate-error3.1.0непряма
npmajv6.12.6непряма
npmansi-colors1.1.0непряма
npmansi-gray0.1.1непряма
npmansi-regex2.1.1непряма
npmansi-styles2.2.1непряма
npmansi-wrap0.1.0непряма
npmanymatch2.0.0непряма
npmappend-buffer1.0.2непряма
npmarchy1.0.0непряма
npmarr-diff4.0.0непряма
npmarr-filter1.1.2непряма
npmarr-flatten1.1.0непряма
npmarr-map2.0.2непряма
npmarr-union3.1.0непряма
npmarray-each1.0.1непряма
npmarray-equal1.0.2непряма
npmarray-initial1.1.0непряма
npmarray-last1.3.0непряма
npmarray-slice1.1.0непряма
npmarray-sort1.0.0непряма
npmarray-union2.1.0непряма
npmarray-unique0.3.2непряма
npmasn10.2.6непряма
npmassert-plus1.0.0непряма
npmassign-symbols1.0.0непряма
npmasync-done1.3.2непряма
npmasync-each1.0.6непряма
npmasync-limiter1.0.1непряма
npmasync-settle1.0.0непряма
npmasynckit0.4.0непряма
npmatob2.1.2непряма
npmaws-sign20.7.0непряма
npmaws41.13.2непряма
npmbach1.2.0непряма
npmbalanced-match1.0.2непряма
npmbase0.11.2непряма
npmbcrypt-pbkdf1.0.2непряма
npmbinary-extensions1.13.1непряма
npmbinaryextensions2.3.0непряма
npmbindings1.5.0непряма
npmbrace-expansion1.1.11непряма
npmbraces2.3.2непряма
npmbraces3.0.3непряма
npmbrowser-process-hrtime1.0.0непряма
npmbuffer-crc320.2.13непряма
npmbuffer-equal1.0.1непряма
npmbuffer-from1.1.2непряма
npmbuiltin-modules3.3.0непряма
npmcache-base1.0.1непряма
npmcall-bind1.0.7непряма
npmcamelcase3.0.0непряма
npmcaseless0.12.0непряма
npmchalk1.1.3непряма
npmchokidar2.1.8непряма
npmclass-utils0.3.6непряма
npmclean-stack2.2.0непряма
npmcliui3.2.0непряма
npmclone2.1.2непряма
npmclone-buffer1.0.0непряма
npmclone-stats1.0.0непряма
npmcloneable-readable1.1.3непряма
npmcode-point-at1.1.0непряма
npmcollection-map1.0.0непряма
npmcollection-visit1.0.0непряма
npmcolor-support1.1.3непряма
npmcombined-stream1.0.8непряма
npmcommander2.13.0непряма
npmcommander2.20.3непряма
npmcomponent-emitter1.3.1непряма
npmconcat-map0.0.1непряма
npmconcat-stream1.6.2непряма
npmconcat-with-sourcemaps1.1.0непряма
npmconvert-source-map1.9.0непряма
npmcopy-descriptor0.1.1непряма
npmcopy-props2.0.5непряма
npmcore-util-is1.0.2непряма
npmcore-util-is1.0.3непряма
npmcssom0.3.8непряма
npmcssstyle1.4.0непряма
npmd1.0.2непряма
npmdashdash1.14.1непряма
npmdata-urls1.1.0непряма
npmdebug2.6.9непряма
npmdecamelize1.2.0непряма
npmdecode-uri-component0.2.2непряма
npmdeep-is0.1.4непряма
npmdefault-compare1.0.0непряма
npmdefault-resolution2.0.0непряма
npmdefine-data-property1.1.4непряма
npmdefine-properties1.2.1непряма
npmdefine-property0.2.5непряма
npmdefine-property1.0.0непряма
npmdefine-property2.0.2непряма
npmdelayed-stream1.0.0непряма
npmdetect-file1.0.0непряма
npmdir-glob3.0.1непряма
npmdomexception1.0.1непряма
npmduplexify3.7.1непряма
npmeach-props1.3.2непряма
npmecc-jsbn0.1.2непряма
npmend-of-stream1.4.4непряма
npmerror-ex1.3.2непряма
npmes-define-property1.0.0непряма
npmes-errors1.3.0непряма
npmes5-ext0.10.64непряма
npmes6-iterator2.0.3непряма
npmes6-symbol3.1.4непряма
npmes6-weak-map2.0.3непряма
npmescape-string-regexp1.0.5непряма
npmescodegen1.14.3непряма
npmesniff2.0.1непряма
npmesprima4.0.1непряма
npmestraverse4.3.0непряма
npmestree-walker0.6.1непряма
npmesutils2.0.3непряма
npmevent-emitter0.3.5непряма
npmexpand-brackets2.1.4непряма
npmexpand-tilde2.0.2непряма
npmext1.7.0непряма
npmextend3.0.2непряма
npmextend-shallow2.0.1непряма
npmextend-shallow3.0.2непряма
npmextglob2.0.4непряма
npmextsprintf1.3.0непряма
npmfancy-log1.3.3непряма
npmfast-deep-equal3.1.3непряма
npmfast-glob3.3.2непряма
npmfast-json-stable-stringify2.1.0непряма
npmfast-levenshtein1.1.4непряма
npmfast-levenshtein2.0.6непряма
npmfastq1.17.1непряма
npmfile-uri-to-path1.0.0непряма
npmfill-range4.0.0непряма
npmfill-range7.1.1непряма
npmfind-up1.1.2непряма
npmfindup-sync2.0.0непряма
npmfindup-sync3.0.0непряма
npmfined1.2.0непряма
npmflagged-respawn1.0.1непряма
npmflush-write-stream1.1.1непряма
npmfor-in1.0.2непряма
npmfor-own1.0.0непряма
npmforever-agent0.6.1непряма
npmform-data2.3.3непряма
npmfragment-cache0.2.1непряма
npmfs-mkdirp-stream1.0.0непряма
npmfs.realpath1.0.0непряма
npmfsevents1.2.13непряма
npmfsevents2.3.3непряма
npmfunction-bind1.1.2непряма
npmget-caller-file1.0.3непряма
npmget-intrinsic1.2.4непряма
npmget-stream5.2.0непряма
npmget-value2.0.6непряма
npmgetpass0.1.7непряма
npmglob7.2.3непряма
npmglob-parent3.1.0непряма
npmglob-parent5.1.2непряма
npmglob-stream6.1.0непряма
npmglob-watcher5.0.5непряма
npmglobal-modules1.0.0непряма
npmglobal-prefix1.0.2непряма
npmglobby10.0.2непряма
npmglogg1.0.2непряма
npmgopd1.0.1непряма
npmgraceful-fs4.2.11непряма
npmgulp4.0.2непряма
npmgulp-cli2.3.0непряма
npmgulplog1.0.0непряма
npmhar-schema2.0.0непряма
npmhar-validator5.1.5непряма
npmhas-ansi2.0.0непряма
npmhas-flag4.0.0непряма
npmhas-gulplog0.1.0непряма
npmhas-property-descriptors1.0.2непряма
npmhas-proto1.0.3непряма
npmhas-symbols1.0.3непряма
npmhas-value0.3.1непряма
npmhas-value1.0.0непряма
npmhas-values0.1.4непряма
npmhas-values1.0.0непряма
npmhasown2.0.2непряма
npmhomedir-polyfill1.0.3непряма
npmhosted-git-info2.8.9непряма
npmhtml-encoding-sniffer1.0.2непряма
npmhttp-signature1.2.0непряма
npmiconv-lite0.4.24непряма
npmignore5.3.2непряма
npmindent-string4.0.0непряма
npminflight1.0.6непряма
npminherits2.0.4непряма
npmini1.3.8непряма
npminterpret1.4.0непряма
npminvert-kv1.0.0непряма
npmis-absolute1.0.0непряма
npmis-accessor-descriptor1.0.1непряма
npmis-arrayish0.2.1непряма
npmis-binary-path1.0.1непряма
npmis-buffer1.1.6непряма
npmis-core-module2.15.1непряма
npmis-data-descriptor1.0.1непряма
npmis-descriptor0.1.7непряма
npmis-descriptor1.0.3непряма
npmis-extendable0.1.1непряма
npmis-extendable1.0.1непряма
npmis-extglob2.1.1непряма
npmis-fullwidth-code-point1.0.0непряма
npmis-glob3.1.0непряма
npmis-glob4.0.3непряма
npmis-module1.0.0непряма
npmis-negated-glob1.0.0непряма
npmis-number3.0.0непряма
npmis-number4.0.0непряма
npmis-number7.0.0непряма
npmis-path-cwd2.2.0непряма
npmis-path-inside3.0.3непряма
npmis-plain-object2.0.4непряма
npmis-plain-object5.0.0непряма
npmis-relative1.0.0непряма
npmis-typedarray1.0.0непряма
npmis-unc-path1.0.0непряма
npmis-utf80.2.1непряма
npmis-valid-glob1.0.0непряма
npmis-windows1.0.2непряма
npmisarray1.0.0непряма
npmisexe2.0.0непряма
npmisobject2.1.0непряма
npmisobject3.0.1непряма
npmisstream0.1.2непряма
npmistextorbinary3.3.0непряма
npmjest-worker26.6.2непряма
npmjs-tokens4.0.0непряма
npmjsbn0.1.1непряма
npmjsdom12.2.0непряма
npmjson-schema0.4.0непряма
npmjson-schema-traverse0.4.1непряма
npmjson-stable-stringify-without-jsonify1.0.1непряма
npmjson-stringify-safe5.0.1непряма
npmjsprim1.4.2непряма
npmjust-debounce1.1.0непряма
npmkind-of3.2.2непряма
npmkind-of4.0.0непряма
npmkind-of5.1.0непряма
npmkind-of6.0.3непряма
npmlast-run1.1.1непряма
npmlazystream1.0.1непряма
npmlcid1.0.0непряма
npmlead1.0.0непряма
npmlevn0.3.0непряма
npmliftoff3.1.0непряма
npmload-json-file1.1.0непряма
npmlodash4.17.21непряма
npmlodash.sortby4.7.0непряма
npmmake-error1.3.6непряма
npmmake-error-cause1.2.2непряма
npmmake-iterator1.0.1непряма
npmmap-cache0.2.2непряма
npmmap-visit1.0.0непряма
npmmatchdep2.0.0непряма
npmmerge-stream2.0.0непряма
npmmerge21.4.1непряма
npmmicromatch3.1.10непряма
npmmicromatch4.0.8непряма
npmmime-db1.52.0непряма
npmmime-types2.1.35непряма
npmminimatch3.1.2непряма
npmmixin-deep1.3.2непряма
npmms2.0.0непряма
npmmute-stdout1.0.1непряма
npmnan2.22.0непряма
npmnanomatch1.2.13непряма
npmnext-tick1.1.0непряма
npmnormalize-package-data2.5.0непряма
npmnormalize-path2.1.1непряма
npmnormalize-path3.0.0непряма
npmnow-and-later2.0.1непряма
npmnumber-is-nan1.0.1непряма
npmnwsapi2.2.13непряма
npmoauth-sign0.9.0непряма
npmobject-assign3.0.0непряма
npmobject-assign4.1.1непряма
npmobject-copy0.1.0непряма
npmobject-keys1.1.1непряма
npmobject-visit1.0.1непряма
npmobject.assign4.1.5непряма
npmobject.defaults1.1.0непряма
npmobject.map1.0.1непряма
npmobject.pick1.3.0непряма
npmobject.reduce1.0.1непряма
npmonce1.4.0непряма
npmoptionator0.8.3непряма
npmordered-read-streams1.0.1непряма
npmos-locale1.4.0непряма
npmp-map3.0.0непряма
npmparse-filepath1.0.2непряма
npmparse-json2.2.0непряма
npmparse-node-version1.0.1непряма
npmparse-passwd1.0.0непряма
npmparse55.1.0непряма
npmpascalcase0.1.1непряма
npmpath-dirname1.0.2непряма
npmpath-exists2.1.0непряма
npmpath-is-absolute1.0.1непряма
npmpath-parse1.0.7непряма
npmpath-root0.1.1непряма
npmpath-root-regex0.1.2непряма
npmpath-type1.1.0непряма
npmpath-type4.0.0непряма
npmperformance-now2.1.0непряма
npmpicocolors1.1.1непряма
npmpicomatch2.3.1непряма
npmpify2.3.0непряма
npmpinkie2.0.4непряма
npmpinkie-promise2.0.1непряма
npmplugin-error1.0.1непряма
npmpn1.1.0непряма
npmposix-character-classes0.1.1непряма
npmprelude-ls1.1.2непряма
npmpretty-hrtime1.0.3непряма
npmprocess-nextick-args2.0.1непряма
npmpsl1.13.0непряма
npmpump2.0.1непряма
npmpump3.0.2непряма
npmpumpify1.5.1непряма
npmpunycode2.3.1непряма
npmqs6.5.3непряма
npmqueue-microtask1.2.3непряма
npmrandombytes2.1.0непряма
npmread-pkg1.1.0непряма
npmread-pkg-up1.0.1непряма
npmreadable-stream2.3.8непряма
npmreaddirp2.2.1непряма
npmrechoir0.6.2непряма
npmregex-not1.0.2непряма
npmremove-bom-buffer3.0.0непряма
npmremove-bom-stream1.2.0непряма
npmremove-trailing-separator1.1.0непряма
npmrepeat-element1.1.4непряма
npmrepeat-string1.6.1непряма
npmreplace-ext1.0.1непряма
npmreplace-homedir1.0.0непряма
npmreplacestream4.0.3непряма
npmrequest2.88.2непряма
npmrequest-promise-core1.1.4непряма
npmrequest-promise-native1.0.9непряма
npmrequire-directory2.1.1непряма
npmrequire-main-filename1.0.1непряма
npmresolve1.22.8непряма
npmresolve-dir1.0.1непряма
npmresolve-options1.1.0непряма
npmresolve-url0.2.1непряма
npmret0.1.15непряма
npmreusify1.0.4непряма
npmrimraf3.0.2непряма
npmrollup-pluginutils2.8.2непряма
npmrun-parallel1.2.0непряма
npmsafe-buffer5.1.2непряма
npmsafe-buffer5.2.1непряма
npmsafe-regex1.1.0непряма
npmsafer-buffer2.1.2непряма
npmsaxes3.1.11непряма
npmsemver5.7.2непряма
npmsemver-greatest-satisfied-range1.1.0непряма
npmserialize-javascript4.0.0непряма
npmset-blocking2.0.0непряма
npmset-function-length1.2.2непряма
npmset-value2.0.1непряма
npmslash3.0.0непряма
npmsnapdragon0.8.2непряма
npmsnapdragon-node2.1.1непряма
npmsnapdragon-util3.0.1непряма
npmsource-map0.5.7непряма
npmsource-map0.6.1непряма
npmsource-map-resolve0.5.3непряма
npmsource-map-support0.5.21непряма
npmsource-map-url0.4.1непряма
npmsparkles1.0.1непряма
npmspdx-correct3.2.0непряма
npmspdx-exceptions2.5.0непряма
npmspdx-expression-parse3.0.1непряма
npmspdx-license-ids3.0.20непряма
npmsplit-string3.1.0непряма
npmsshpk1.18.0непряма
npmstack-trace0.0.10непряма
npmstatic-extend0.1.2непряма
npmstealthy-require1.1.1непряма
npmstream-exhaust1.0.2непряма
npmstream-shift1.0.3непряма
npmstring-width1.0.2непряма
npmstring_decoder1.1.1непряма
npmstrip-ansi3.0.1непряма
npmstrip-bom2.0.0непряма
npmsupports-color2.0.0непряма
npmsupports-color7.2.0непряма
npmsupports-preserve-symlinks-flag1.0.0непряма
npmsver-compat1.5.0непряма
npmsymbol-tree3.2.4непряма
npmterser5.36.0непряма
npmtextextensions3.3.0непряма
npmthrough22.0.3непряма
npmthrough22.0.5непряма
npmthrough23.0.2непряма
npmthrough2-filter3.0.0непряма
npmtime-stamp1.1.0непряма
npmto-absolute-glob2.0.2непряма
npmto-object-path0.3.0непряма
npmto-regex3.0.2непряма
npmto-regex-range2.1.1непряма
npmto-regex-range5.0.1непряма
npmto-through2.0.0непряма
npmtough-cookie2.5.0непряма
npmtr461.0.1непряма
npmtunnel-agent0.6.0непряма
npmtweetnacl0.14.5непряма
npmtype2.7.3непряма
npmtype-check0.3.2непряма
npmtypedarray0.0.6непряма
npmunc-path-regex0.1.2непряма
npmundertaker1.3.0непряма
npmundertaker-registry1.0.1непряма
npmundici-types6.19.8непряма
npmunion-value1.0.1непряма
npmunique-stream2.3.1непряма
npmunset-value1.0.0непряма
npmupath1.2.0непряма
npmuri-js4.4.1непряма
npmurix0.1.0непряма
npmuse3.1.1непряма
npmutil-deprecate1.0.2непряма
npmuuid3.4.0непряма
npmv8flags3.2.0непряма
npmvalidate-npm-package-license3.0.4непряма
npmvalue-or-function3.0.0непряма
npmverror1.10.0непряма
npmvinyl2.2.1непряма
npmvinyl-fs3.0.3непряма
npmvinyl-sourcemap1.1.0непряма
npmvinyl-sourcemaps-apply0.2.1непряма
npmw3c-hr-time1.0.2непряма
npmwebidl-conversions4.0.2непряма
npmwhatwg-encoding1.0.5непряма
npmwhatwg-mimetype2.3.0непряма
npmwhatwg-url7.1.0непряма
npmwhich1.3.1непряма
npmwhich-module1.0.0непряма
npmword-wrap1.2.5непряма
npmwrap-ansi2.1.0непряма
npmwrappy1.0.2непряма
npmws6.2.3непряма
npmxml-name-validator3.0.0непряма
npmxmlchars2.2.0непряма
npmxtend4.0.2непряма
npmy18n3.2.2непряма
npmyargs7.1.2непряма
npmyargs-parser21.1.1непряма
npmyargs-parser5.0.1непряма
npmyazl2.5.1непряма
PyPIidisplayнепряма
PyPIjupyterнепряма
Сповіщення про залежності 2

Встановлення npm:icn3d@3.51.2 тягне 77 пакетів, прямих і транзитивних: 2 мають відомі сповіщення, з них 1 — прямі залежності.

ПакетВерсіяЗв'язокКритичністьСповіщеньВиправлено в
axios0.25.0прямависока231.18.0
@tootallnate/once1.1.2непряманизька13.0.1

Сповіщення означає, що версія, записана в графі залежностей, потрапляє в уражений діапазон. Досяжність не аналізується, а граф містить піниї розробки й тестування — знахідка може стосуватися інструментів, а не поставленого коду.

Звіт у форматі JSON машиночитний
{
  "data": {
    "repo": {
      "topics": [
        "icn3d",
        "webgl",
        "protein",
        "3d-structure",
        "3d-viewer",
        "structure-viewer",
        "nucleotide",
        "chemical",
        "protein-viewer",
        "jupyter-notebook",
        "snp",
        "delphi",
        "nodejs",
        "molecular-viewer",
        "ar",
        "vr"
      ],
      "is_fork": false,
      "size_kb": 575688,
      "has_wiki": true,
      "homepage": "https://www.ncbi.nlm.nih.gov/Structure/icn3d",
      "languages": {
        "C++": 999598,
        "CSS": 15394,
        "HTML": 646764,
        "Shell": 439,
        "Python": 27156,
        "Makefile": 719,
        "JavaScript": 14344289
      },
      "pushed_at": "2026-07-22T15:57:31Z",
      "created_at": "2016-01-20T16:16:12Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-22T16:02:23Z",
      "description": "web-based protein structure viewer and analysis tool interactively or in batch mode",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": null,
      "default_branch": "master",
      "license_spdx_raw": "NOASSERTION",
      "primary_language": "JavaScript",
      "significant_languages": [
        "JavaScript"
      ]
    },
    "owner": {
      "blog": "http://www.ncbi.nlm.nih.gov",
      "name": "NCBI - National Center for Biotechnology Information/NLM/NIH",
      "type": "Organization",
      "login": "ncbi",
      "company": null,
      "location": null,
      "followers": 2843,
      "avatar_url": "https://avatars.githubusercontent.com/u/3812119?v=4",
      "created_at": "2013-03-08T19:57:55Z",
      "is_verified": null,
      "public_repos": 152,
      "account_age_days": 4892
    },
    "license": {
      "state": "custom",
      "spdx_id": null,
      "raw_spdx": "NOASSERTION",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v3.51.1",
          "kind": "patch",
          "published_at": "2026-07-20T18:10:32Z"
        },
        {
          "tag": "v3.51.0",
          "kind": "minor",
          "published_at": "2026-07-07T13:33:00Z"
        },
        {
          "tag": "v3.50.0",
          "kind": "minor",
          "published_at": "2026-06-08T19:00:12Z"
        },
        {
          "tag": "v3.49.2",
          "kind": "patch",
          "published_at": "2026-05-07T15:59:45Z"
        },
        {
          "tag": "v3.49.1",
          "kind": "patch",
          "published_at": "2026-05-04T17:15:10Z"
        },
        {
          "tag": "v3.49.0",
          "kind": "minor",
          "published_at": "2026-04-29T15:18:39Z"
        },
        {
          "tag": "v3.48.1",
          "kind": "patch",
          "published_at": "2026-04-15T15:57:40Z"
        },
        {
          "tag": "v3.48.0",
          "kind": "minor",
          "published_at": "2026-04-14T14:00:32Z"
        },
        {
          "tag": "v3.47.1",
          "kind": "patch",
          "published_at": "2026-01-21T14:04:31Z"
        },
        {
          "tag": "v3.47.0b",
          "kind": "other",
          "published_at": "2025-12-30T16:51:56Z"
        },
        {
          "tag": "v3.47.0",
          "kind": "minor",
          "published_at": "2025-12-29T18:57:10Z"
        },
        {
          "tag": "v3.46.0",
          "kind": "minor",
          "published_at": "2025-12-10T15:13:19Z"
        },
        {
          "tag": "v3.45.5",
          "kind": "patch",
          "published_at": "2025-12-02T19:35:31Z"
        },
        {
          "tag": "v3.45.4",
          "kind": "patch",
          "published_at": "2025-11-13T19:08:22Z"
        },
        {
          "tag": "v3.45.3",
          "kind": "patch",
          "published_at": "2025-09-22T11:51:15Z"
        },
        {
          "tag": "v3.45.2",
          "kind": "patch",
          "published_at": "2025-08-20T13:39:58Z"
        },
        {
          "tag": "v3.45.1",
          "kind": "patch",
          "published_at": "2025-07-28T18:27:24Z"
        },
        {
          "tag": "v3.45.0",
          "kind": "minor",
          "published_at": "2025-07-10T19:11:30Z"
        },
        {
          "tag": "v3.44.2",
          "kind": "patch",
          "published_at": "2025-06-30T17:20:51Z"
        },
        {
          "tag": "v3.44.1",
          "kind": "patch",
          "published_at": "2025-06-26T17:48:16Z"
        },
        {
          "tag": "v3.44.0",
          "kind": "minor",
          "published_at": "2025-06-11T16:06:33Z"
        },
        {
          "tag": "v3.43.0",
          "kind": "minor",
          "published_at": "2025-05-27T18:47:27Z"
        },
        {
          "tag": "v3.42.0",
          "kind": "minor",
          "published_at": "2025-05-12T17:33:39Z"
        },
        {
          "tag": "v3.41.0",
          "kind": "minor",
          "published_at": "2025-04-02T12:50:00Z"
        },
        {
          "tag": "v3.40.6",
          "kind": "patch",
          "published_at": "2025-03-21T00:14:58Z"
        },
        {
          "tag": "v3.40.5",
          "kind": "patch",
          "published_at": "2025-03-03T22:21:38Z"
        },
        {
          "tag": "v3.40.4",
          "kind": "patch",
          "published_at": "2025-02-13T21:12:24Z"
        },
        {
          "tag": "v3.40.3",
          "kind": "patch",
          "published_at": "2025-01-15T20:13:32Z"
        },
        {
          "tag": "v3.40.2",
          "kind": "patch",
          "published_at": "2025-01-08T17:27:32Z"
        },
        {
          "tag": "v3.40.0",
          "kind": "minor",
          "published_at": "2024-12-11T15:24:33Z"
        },
        {
          "tag": "v3.39.0",
          "kind": "minor",
          "published_at": "2024-12-02T17:38:16Z"
        },
        {
          "tag": "v3.38.1",
          "kind": "patch",
          "published_at": "2024-11-15T01:39:21Z"
        },
        {
          "tag": "v3.38.0",
          "kind": "minor",
          "published_at": "2024-11-12T16:51:34Z"
        },
        {
          "tag": "v3.37.0",
          "kind": "minor",
          "published_at": "2024-10-16T17:46:52Z"
        },
        {
          "tag": "v3.36.1",
          "kind": "patch",
          "published_at": "2024-10-07T16:01:21Z"
        },
        {
          "tag": "v3.36.0",
          "kind": "minor",
          "published_at": "2024-10-03T12:33:49Z"
        },
        {
          "tag": "v3.35.0",
          "kind": "minor",
          "published_at": "2024-09-12T17:29:06Z"
        },
        {
          "tag": "v3.34.1",
          "kind": "patch",
          "published_at": "2024-08-05T17:39:01Z"
        },
        {
          "tag": "v3.34.0",
          "kind": "minor",
          "published_at": "2024-07-29T15:03:46Z"
        },
        {
          "tag": "v3.33.3",
          "kind": "patch",
          "published_at": "2024-07-15T13:57:30Z"
        },
        {
          "tag": "v3.33.2",
          "kind": "patch",
          "published_at": "2024-06-25T20:12:47Z"
        },
        {
          "tag": "v3.33.1",
          "kind": "patch",
          "published_at": "2024-06-19T13:17:05Z"
        },
        {
          "tag": "v3.33.0",
          "kind": "minor",
          "published_at": "2024-06-12T14:06:29Z"
        },
        {
          "tag": "v3.32.0",
          "kind": "minor",
          "published_at": "2024-05-28T15:10:50Z"
        },
        {
          "tag": "v3.31.4",
          "kind": "patch",
          "published_at": "2024-05-11T14:21:50Z"
        },
        {
          "tag": "v3.31.3",
          "kind": "patch",
          "published_at": "2024-04-15T18:49:26Z"
        },
        {
          "tag": "v3.31.2",
          "kind": "patch",
          "published_at": "2024-04-09T18:28:56Z"
        },
        {
          "tag": "v3.31.1",
          "kind": "patch",
          "published_at": "2024-03-28T15:03:46Z"
        },
        {
          "tag": "v3.31.0",
          "kind": "minor",
          "published_at": "2024-03-25T16:14:35Z"
        },
        {
          "tag": "v3.30.1",
          "kind": "patch",
          "published_at": "2024-03-11T14:11:09Z"
        },
        {
          "tag": "v3.30.0",
          "kind": "minor",
          "published_at": "2024-02-27T17:51:09Z"
        },
        {
          "tag": "v3.29.5",
          "kind": "patch",
          "published_at": "2024-02-05T15:31:10Z"
        },
        {
          "tag": "v3.29.4",
          "kind": "patch",
          "published_at": "2024-01-19T14:46:58Z"
        },
        {
          "tag": "v3.29.3",
          "kind": "patch",
          "published_at": "2024-01-11T17:22:35Z"
        },
        {
          "tag": "v3.29.2",
          "kind": "patch",
          "published_at": "2024-01-08T15:13:18Z"
        },
        {
          "tag": "v3.29.1",
          "kind": "patch",
          "published_at": "2023-12-14T23:57:32Z"
        },
        {
          "tag": "v3.29.0",
          "kind": "minor",
          "published_at": "2023-12-13T19:48:41Z"
        },
        {
          "tag": "v3.28.4",
          "kind": "patch",
          "published_at": "2023-11-07T18:32:47Z"
        },
        {
          "tag": "v3.28.3",
          "kind": "patch",
          "published_at": "2023-10-05T16:06:47Z"
        },
        {
          "tag": "v3.28.2",
          "kind": "patch",
          "published_at": "2023-09-14T14:31:02Z"
        },
        {
          "tag": "v3.28.1",
          "kind": "patch",
          "published_at": "2023-08-23T19:43:53Z"
        },
        {
          "tag": "v3.28.0",
          "kind": "minor",
          "published_at": "2023-07-31T15:28:03Z"
        },
        {
          "tag": "v3.27.0",
          "kind": "minor",
          "published_at": "2023-07-13T23:45:21Z"
        },
        {
          "tag": "v3.26.1",
          "kind": "patch",
          "published_at": "2023-07-10T16:31:37Z"
        },
        {
          "tag": "v3.26.0",
          "kind": "minor",
          "published_at": "2023-06-20T15:00:58Z"
        },
        {
          "tag": "v3.25.4",
          "kind": "patch",
          "published_at": "2023-06-15T19:33:22Z"
        },
        {
          "tag": "v3.25.3",
          "kind": "patch",
          "published_at": "2023-05-24T21:25:03Z"
        },
        {
          "tag": "v3.25.2",
          "kind": "patch",
          "published_at": "2023-05-17T15:56:45Z"
        },
        {
          "tag": "v3.25.1",
          "kind": "patch",
          "published_at": "2023-05-03T21:10:45Z"
        },
        {
          "tag": "v3.25.0",
          "kind": "minor",
          "published_at": "2023-04-26T14:04:41Z"
        },
        {
          "tag": "v3.24.2",
          "kind": "patch",
          "published_at": "2023-04-24T18:17:50Z"
        },
        {
          "tag": "v3.24.1",
          "kind": "patch",
          "published_at": "2023-04-14T22:58:50Z"
        },
        {
          "tag": "v3.24.0",
          "kind": "minor",
          "published_at": "2023-04-10T18:56:39Z"
        },
        {
          "tag": "v3.23.3",
          "kind": "patch",
          "published_at": "2023-04-06T23:53:40Z"
        },
        {
          "tag": "v3.23.2",
          "kind": "patch",
          "published_at": "2023-04-03T01:03:10Z"
        },
        {
          "tag": "v3.23.1",
          "kind": "patch",
          "published_at": "2023-03-22T19:39:36Z"
        },
        {
          "tag": "v3.23.0",
          "kind": "minor",
          "published_at": "2023-03-16T22:21:26Z"
        },
        {
          "tag": "v3.22.4",
          "kind": "patch",
          "published_at": "2023-03-07T20:16:14Z"
        },
        {
          "tag": "v3.22.3",
          "kind": "patch",
          "published_at": "2023-03-01T20:50:28Z"
        },
        {
          "tag": "v3.22.2",
          "kind": "patch",
          "published_at": "2023-02-25T15:48:28Z"
        },
        {
          "tag": "v3.22.1",
          "kind": "patch",
          "published_at": "2023-02-17T23:47:59Z"
        },
        {
          "tag": "v3.22.0",
          "kind": "minor",
          "published_at": "2023-02-14T15:30:51Z"
        },
        {
          "tag": "v3.21.3",
          "kind": "patch",
          "published_at": "2023-02-06T03:43:34Z"
        },
        {
          "tag": "v3.21.2",
          "kind": "patch",
          "published_at": "2023-02-06T03:43:22Z"
        },
        {
          "tag": "v3.21.1",
          "kind": "patch",
          "published_at": "2023-02-06T03:43:09Z"
        },
        {
          "tag": "v3.21.0b",
          "kind": "other",
          "published_at": "2023-02-06T03:42:54Z"
        },
        {
          "tag": "v3.21.0",
          "kind": "minor",
          "published_at": "2023-02-06T03:42:37Z"
        },
        {
          "tag": "v3.20.1",
          "kind": "patch",
          "published_at": "2023-02-06T03:42:18Z"
        },
        {
          "tag": "v3.20.0",
          "kind": "minor",
          "published_at": "2023-02-06T03:42:02Z"
        },
        {
          "tag": "v3.19.1b",
          "kind": "other",
          "published_at": "2023-02-06T03:41:44Z"
        },
        {
          "tag": "v3.19.1",
          "kind": "patch",
          "published_at": "2023-02-06T03:41:36Z"
        },
        {
          "tag": "v3.19.0b",
          "kind": "other",
          "published_at": "2023-02-06T03:41:27Z"
        },
        {
          "tag": "v3.19.0",
          "kind": "minor",
          "published_at": "2023-02-06T03:41:18Z"
        },
        {
          "tag": "v3.18.1",
          "kind": "patch",
          "published_at": "2023-02-06T03:41:09Z"
        },
        {
          "tag": "v3.18.0b",
          "kind": "other",
          "published_at": "2023-02-06T03:40:52Z"
        },
        {
          "tag": "v3.18.0",
          "kind": "minor",
          "published_at": "2023-02-06T03:40:42Z"
        },
        {
          "tag": "v3.17.0b",
          "kind": "other",
          "published_at": "2023-02-06T03:40:31Z"
        },
        {
          "tag": "v3.17.0",
          "kind": "minor",
          "published_at": "2023-02-06T03:40:23Z"
        },
        {
          "tag": "v3.16.3",
          "kind": "patch",
          "published_at": "2023-02-06T03:40:13Z"
        },
        {
          "tag": "v3.16.2",
          "kind": "patch",
          "published_at": "2023-02-06T03:40:05Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "b53d64147fa87125ab958b26e58f9b59771f05de",
          "body": "Merge in STRUC/icn3d from release3.51.1 to master\n\n* commit '76d1b35aead0335b463cc00aad2022138171d1fa':\n  Updated to include glycans in the linked residues.",
          "is_bot": false,
          "headline": "Pull request #732: Updated to include glycans in the linked residues.",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-07-22T15:56:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "76d1b35aead0335b463cc00aad2022138171d1fa",
          "body": null,
          "is_bot": false,
          "headline": "Updated to include glycans in the linked residues.",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-07-22T15:56:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "96e5a9bbfed8f338a3f18eabf43bbe0e1351d424",
          "body": "Merge in STRUC/icn3d from release3.51.1 to master\n\n* commit '32157dab037f99c244ee52fba5924d00c730be03':\n  Updated to include glycans in the linked residues.\n  Updated to include glycans in the linked residues.",
          "is_bot": false,
          "headline": "Pull request #731: Updated to include glycans in the linked residues.",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-07-20T18:09:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "32157dab037f99c244ee52fba5924d00c730be03",
          "body": null,
          "is_bot": false,
          "headline": "Updated to include glycans in the linked residues.",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-07-20T18:08:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "51d26ce1b52b4952ffd0e2254f6a44795654f35a",
          "body": null,
          "is_bot": false,
          "headline": "Updated to include glycans in the linked residues.",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-07-20T18:07:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "75ab788d3b7c2994be9a0d8b27d0d7ac3a47c8e4",
          "body": "…grated 2D and 3D views.\n\nMerge in STRUC/icn3d from release3.51.0 to master\n\n* commit '2b5201aa53ffac00cd7826ee2e9b4ce6db8830a3':\n  Upgraded \"2D Diagram for Ig Domains\" to allow integrated 2D and 3D views.",
          "is_bot": false,
          "headline": "Pull request #730: Upgraded \"2D Diagram for Ig Domains\" to allow inte…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-07-07T13:31:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2b5201aa53ffac00cd7826ee2e9b4ce6db8830a3",
          "body": "…ews.",
          "is_bot": false,
          "headline": "Upgraded \"2D Diagram for Ig Domains\" to allow integrated 2D and 3D vi…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-07-07T13:30:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "79feff20b9ed424c5634834c0af794988927947e",
          "body": "… show \"2D Diagram for Nucleotides\" integrated with 3D view. The base pairs are either from FR3D or extended mmCIF with base pair information.\n\nMerge in STRUC/icn3d from release3.50.0 to master\n\n* commit 'a8591cbcef68d8af0eead8b3dc39b7a66f965f5b':\n  users can choose to use both R2DT and RNAcanvas to show \"2D Diagram for Nucleotides\" integrated with 3D view. The base pairs are either from Fr3D or extended mmCIF with base pair information.",
          "is_bot": false,
          "headline": "Pull request #729: users can choose to use both R2DT and RNAcanvas to…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-06-09T02:17:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a8591cbcef68d8af0eead8b3dc39b7a66f965f5b",
          "body": "…or Nucleotides\" integrated with 3D view. The base pairs are either from Fr3D or extended mmCIF with base pair information.",
          "is_bot": false,
          "headline": "users can choose to use both R2DT and RNAcanvas to show \"2D Diagram f…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-06-09T02:16:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "db55d51a6198be6b919e3a7ae9b67a9742054299",
          "body": "… show \"2D Diagram for Nucleotides\" integrated with 3D view. The base pairs are either from FR3D or extended mmCIF with base pair information.\n\nMerge in STRUC/icn3d from release3.50.0 to master\n\n* commit '970906e32afa8085744441774d6fe1efab8f08c4':\n  users can choose to use both R2DT and RNAcanvas to show \"2D Diagram for Nucleotides\" integrated with 3D view. The base pairs are either from Fr3D or extended mmCIF with base pair information.",
          "is_bot": false,
          "headline": "Pull request #728: users can choose to use both R2DT and RNAcanvas to…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-06-08T18:58:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "970906e32afa8085744441774d6fe1efab8f08c4",
          "body": "…or Nucleotides\" integrated with 3D view. The base pairs are either from Fr3D or extended mmCIF with base pair information.",
          "is_bot": false,
          "headline": "users can choose to use both R2DT and RNAcanvas to show \"2D Diagram f…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-06-08T18:57:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "57a74a7ca9864fb365f6735da6179345eff521f8",
          "body": "… can click on 2D Diagram to show selection on 3D view.\n\nMerge in STRUC/icn3d from release3.49.2 to master\n\n* commit '43c33289df3d84912204e0e8c801b11e20b023e6':\n  Updated \"2D Diagram for Nucleotides\" so that users can click on 2D Diagram to show selection on 3D view.",
          "is_bot": false,
          "headline": "Pull request #727: Updated \"2D Diagram for Nucleotides\" so that users…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-05-11T15:48:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "43c33289df3d84912204e0e8c801b11e20b023e6",
          "body": "…agram to show selection on 3D view.",
          "is_bot": false,
          "headline": "Updated \"2D Diagram for Nucleotides\" so that users can click on 2D Di…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-05-11T15:48:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1176b0ae10caa14f8de62c26af6eda211a71a897",
          "body": "… can click on 2D Diagram to show selection on 3D view.\n\nMerge in STRUC/icn3d from release3.49.2 to master\n\n* commit 'd8346b4e671405d099046a6a6b164a36c8f62f57':\n  Updated \"2D Diagram for Nucleotides\" so that users can click on 2D Diagram to show selection on 3D view.",
          "is_bot": false,
          "headline": "Pull request #726: Updated \"2D Diagram for Nucleotides\" so that users…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-05-08T14:30:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d8346b4e671405d099046a6a6b164a36c8f62f57",
          "body": "…agram to show selection on 3D view.",
          "is_bot": false,
          "headline": "Updated \"2D Diagram for Nucleotides\" so that users can click on 2D Di…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-05-08T14:30:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "127539a5595ba6b55045b8d0115ed2818e9352b9",
          "body": "… can click on 2D Diagram to show selection on 3D view.\n\nMerge in STRUC/icn3d from release3.49.2 to master\n\n* commit 'e792a5577b09cbc2928052720068f9ca8d0d0829':\n  Updated \"2D Diagram for Nucleotides\" so that users can click on 2D Diagram to show selection on 3D view.",
          "is_bot": false,
          "headline": "Pull request #725: Updated \"2D Diagram for Nucleotides\" so that users…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-05-08T14:15:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e792a5577b09cbc2928052720068f9ca8d0d0829",
          "body": "…agram to show selection on 3D view.",
          "is_bot": false,
          "headline": "Updated \"2D Diagram for Nucleotides\" so that users can click on 2D Di…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-05-08T14:14:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "43338d3a6ab007481cc0e4ffac85bdef2195414d",
          "body": "… can click on 2D Diagram to show selection on 3D view.\n\nMerge in STRUC/icn3d from release3.49.2 to master\n\n* commit '63f494b4b004a4f37d10e8178c8ab1e9a9fd9bf9':\n  Updated \"2D Diagram for Nucleotides\" so that users can click on 2D Diagram to show selection on 3D view.",
          "is_bot": false,
          "headline": "Pull request #724: Updated \"2D Diagram for Nucleotides\" so that users…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-05-08T11:45:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "63f494b4b004a4f37d10e8178c8ab1e9a9fd9bf9",
          "body": "…agram to show selection on 3D view.",
          "is_bot": false,
          "headline": "Updated \"2D Diagram for Nucleotides\" so that users can click on 2D Di…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-05-08T11:45:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0d70f72c7d735381f61e2ae96fa8a2540cc851ce",
          "body": "… can click on 2D Diagram to show selection on 3D view.\n\nMerge in STRUC/icn3d from release3.49.2 to master\n\n* commit '3c9f7c67c6da5b144e57a040c13c84a08dcd3311':\n  Updated \"2D Diagram for Nucleotides\" so that users can click on 2D Diagram to show selection on 3D view.",
          "is_bot": false,
          "headline": "Pull request #723: Updated \"2D Diagram for Nucleotides\" so that users…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-05-07T15:58:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3c9f7c67c6da5b144e57a040c13c84a08dcd3311",
          "body": "…agram to show selection on 3D view.",
          "is_bot": false,
          "headline": "Updated \"2D Diagram for Nucleotides\" so that users can click on 2D Di…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-05-07T15:57:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bdec93ebfd12e6a79f4ae026833d7f06d327d3c4",
          "body": "…iagram for each Ig domain in a chain.\n\nMerge in STRUC/icn3d from release3.49.1 to master\n\n* commit 'f295377e5ffcbf43f4a0aba8ac147d1bf5e79007':\n  Upgraded \"2D Diagram for Ig Domains\" to have one diagram for each Ig domain in a chain.",
          "is_bot": false,
          "headline": "Pull request #722: Upgraded \"2D Diagram for Ig Domains\" to have one d…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-05-06T13:40:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f295377e5ffcbf43f4a0aba8ac147d1bf5e79007",
          "body": "…domain in a chain.",
          "is_bot": false,
          "headline": "Upgraded \"2D Diagram for Ig Domains\" to have one diagram for each Ig …",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-05-06T13:39:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4d3d57c405454ea4dc2f21ede82f5ecfa3d65432",
          "body": "…iagram for each Ig domain in a chain.\n\nMerge in STRUC/icn3d from release3.49.1 to master\n\n* commit '6e6f03c86407f62af886ff09424a146b2ba6326a':\n  Upgraded \"2D Diagram for Ig Domains\" to have one diagram for each Ig domain in a chain.",
          "is_bot": false,
          "headline": "Pull request #721: Upgraded \"2D Diagram for Ig Domains\" to have one d…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-05-04T17:29:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6e6f03c86407f62af886ff09424a146b2ba6326a",
          "body": "…domain in a chain.",
          "is_bot": false,
          "headline": "Upgraded \"2D Diagram for Ig Domains\" to have one diagram for each Ig …",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-05-04T17:28:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4a15e86dc3152680195f77ed1f2e1a4bef1aeccf",
          "body": "…iagram for each Ig domain in a chain.\n\nMerge in STRUC/icn3d from release3.49.1 to master\n\n* commit '77823d5614575b376cf201c92fa8f7ce25b4ed4b':\n  Upgraded \"2D Diagram for Ig Domains\" to have one diagram for each Ig domain in a chain.",
          "is_bot": false,
          "headline": "Pull request #720: Upgraded \"2D Diagram for Ig Domains\" to have one d…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-05-04T17:13:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "77823d5614575b376cf201c92fa8f7ce25b4ed4b",
          "body": "…domain in a chain.",
          "is_bot": false,
          "headline": "Upgraded \"2D Diagram for Ig Domains\" to have one diagram for each Ig …",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-05-04T17:12:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4d0ce46f29088463d67cda02f05f451341e9702e",
          "body": "…diagram, and \"2D Diagram for Ig Domains\" with predetermined Ig templates. The features are available via the menu \"Analysis > 2D Diagram\" in iCn3D.\n\nMerge in STRUC/icn3d from release3.49.0 to master\n\n* commit '1e5134ef9980c1a20257f4db206c238a7f2d4208':\n  Added \"2D Diagram for Nucleotides\" using the R2DT diagram, and \"2D Diagram for Ig Domains\" with predetermined Ig templates. The features are available via the menu \"Analysis > 2D Diagram\" in iCn3D.",
          "is_bot": false,
          "headline": "Pull request #719: Added \"2D Diagram for Nucleotides\" using the R2DT …",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-04-29T15:17:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1e5134ef9980c1a20257f4db206c238a7f2d4208",
          "body": "…agram for Ig Domains\" with predetermined Ig templates. The features are available via the menu \"Analysis > 2D Diagram\" in iCn3D.",
          "is_bot": false,
          "headline": "Added \"2D Diagram for Nucleotides\" using the R2DT diagram, and \"2D Di…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-04-29T15:16:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4d4d508e2eaaab865c52fbe341125e343e4addd6",
          "body": "Merge in STRUC/icn3d from release3.48.1 to master\n\n* commit '37a768daa01fc42d6e341ef391bcb0fbc461d911':\n  Fixed the issue in changing backgroound color.",
          "is_bot": false,
          "headline": "Pull request #718: Fixed the issue in changing backgroound color.",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-04-15T15:45:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "37a768daa01fc42d6e341ef391bcb0fbc461d911",
          "body": null,
          "is_bot": false,
          "headline": "Fixed the issue in changing backgroound color.",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-04-15T15:45:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8e6a4ce24bf7476471646cb525bf87a5c72658ee",
          "body": "Merge in STRUC/icn3d from release3.48.1 to master\n\n* commit '27b9e68c80f7f54328a87827ac7c0978ea4c38da':\n  Fixed the issue in changing backgroound color.",
          "is_bot": false,
          "headline": "Pull request #717: Fixed the issue in changing backgroound color.",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-04-15T15:33:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "27b9e68c80f7f54328a87827ac7c0978ea4c38da",
          "body": null,
          "is_bot": false,
          "headline": "Fixed the issue in changing backgroound color.",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-04-15T15:33:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "90494fb871544f647d597d2936079363ed4597c9",
          "body": "Merge in STRUC/icn3d from release3.48.1 to master\n\n* commit '2a18fccf606f1ad68b4011af35b18f6f051cb031':\n  Fixed the issue in changing backgroound color.",
          "is_bot": false,
          "headline": "Pull request #716: Fixed the issue in changing backgroound color.",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-04-15T15:25:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2a18fccf606f1ad68b4011af35b18f6f051cb031",
          "body": null,
          "is_bot": false,
          "headline": "Fixed the issue in changing backgroound color.",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-04-15T15:24:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d3d21fd1722d27a9e6c035ed9f9a9df30ea949bd",
          "body": "… upgraded to version 1.2 by removing the templates for six IgE, seven IgFN3-like, and three other Igs.\n\nMerge in STRUC/icn3d from release3.48.0 to master\n\n* commit 'ee960a4762348eccbad202157d7acaf287dbc39f':\n  The IgStrand numbering scheme for Ig-fold has been upgraded to version 1.2 by removing the templates for six IgE, seven IgFN3-like, and three other Igs.",
          "is_bot": false,
          "headline": "Pull request #715: The IgStrand numbering scheme for Ig-fold has been…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-04-15T15:18:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ee960a4762348eccbad202157d7acaf287dbc39f",
          "body": "…n 1.2 by removing the templates for six IgE, seven IgFN3-like, and three other Igs.",
          "is_bot": false,
          "headline": "The IgStrand numbering scheme for Ig-fold has been upgraded to versio…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-04-15T15:18:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4806271fde70fca4ef427494dbf04f684041c8d5",
          "body": "… upgraded to version 1.2 by removing the templates for six IgE, seven IgFN3-like, and three other Igs.\n\nMerge in STRUC/icn3d from release3.48.0 to master\n\n* commit '2fe99207fa0262d41dc44e0d6092170df3eacb64':\n  The IgStrand numbering scheme for Ig-fold has been upgraded to version 1.2 by removing the templates for six IgE, seven IgFN3-like, and three other Igs.",
          "is_bot": false,
          "headline": "Pull request #714: The IgStrand numbering scheme for Ig-fold has been…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-04-14T13:58:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2fe99207fa0262d41dc44e0d6092170df3eacb64",
          "body": "…n 1.2 by removing the templates for six IgE, seven IgFN3-like, and three other Igs.",
          "is_bot": false,
          "headline": "The IgStrand numbering scheme for Ig-fold has been upgraded to versio…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-04-14T13:56:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e73411fbae85a84b012ecd472410630d4d7edac5",
          "body": "…D trajectories.\n\nMerge in STRUC/icn3d from release3.47.1 to master\n\n* commit '0e0819419ac59b202176760a0384bceebb937e2f':\n  Showed the count of hydrogen bonds over time for MD trajectories.",
          "is_bot": false,
          "headline": "Pull request #713: Showed the count of hydrogen bonds over time for M…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-01-21T14:03:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0e0819419ac59b202176760a0384bceebb937e2f",
          "body": null,
          "is_bot": false,
          "headline": "Showed the count of hydrogen bonds over time for MD trajectories.",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-01-21T14:02:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "65febf421e771c5832f110f4bc0568efc70a7db0",
          "body": "…XTC) via the menu \"File > Open File > MD Trajectory File\", and draw a plane among three sets with the menu \"Style > Plane among 3 Sets\".\n\nMerge in STRUC/icn3d from release3.47.0 to master\n\n* commit 'e66cd06aafa440b63564dd16441d44f4493639d8':\n  Added the support to load trajectory file (DCD or XTC) via the menu \"File > Open File > MD Trajectory File\", and draw a plane among three sets with the menu \"Style > Plane among 3 Sets\".",
          "is_bot": false,
          "headline": "Pull request #712: Added the support to load trajectory file (DCD or …",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-12-30T16:50:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e66cd06aafa440b63564dd16441d44f4493639d8",
          "body": "…File > Open File > MD Trajectory File\", and draw a plane among three sets with the menu \"Style > Plane among 3 Sets\".",
          "is_bot": false,
          "headline": "Added the support to load trajectory file (DCD or XTC) via the menu \"…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-12-30T16:50:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a6b08fcdbcba80899831816e6f77e604f084b328",
          "body": "…XTC) via the menu \"File > Open File > MD Trajectory File\", and draw a plane among three sets with the menu \"Style > Plane among 3 Sets\".\n\nMerge in STRUC/icn3d from release3.47.0 to master\n\n* commit 'a5eb03fe93bbe27d7efe68ce55cd92e710e495b8':\n  Added the support to load trajectory file (DCD or XTC) via the menu \"File > Open File > MD Trajectory File\", and draw a plane among three sets with the menu \"Style > Plane among 3 Sets\".",
          "is_bot": false,
          "headline": "Pull request #711: Added the support to load trajectory file (DCD or …",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-12-29T19:49:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a5eb03fe93bbe27d7efe68ce55cd92e710e495b8",
          "body": "…File > Open File > MD Trajectory File\", and draw a plane among three sets with the menu \"Style > Plane among 3 Sets\".",
          "is_bot": false,
          "headline": "Added the support to load trajectory file (DCD or XTC) via the menu \"…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-12-29T19:48:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "aeba0ca380ecf4f7f23741aefc0d5e12b09183b0",
          "body": "…XTC) via the menu \"File > Open File > MD Trajectory File\", and draw a plane among three sets with the menu \"Style > Plane among 3 Sets\".\n\nMerge in STRUC/icn3d from release3.47.0 to master\n\n* commit '3deae7c6692d4463ec3940ff9472384b73cbdaca':\n  Added the support to load trajectory file (DCD or XTC) via the menu \"File > Open File > MD Trajectory File\", and draw a plane among three sets with the menu \"Style > Plane among 3 Sets\".",
          "is_bot": false,
          "headline": "Pull request #710: Added the support to load trajectory file (DCD or …",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-12-29T18:55:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3deae7c6692d4463ec3940ff9472384b73cbdaca",
          "body": "…File > Open File > MD Trajectory File\", and draw a plane among three sets with the menu \"Style > Plane among 3 Sets\".",
          "is_bot": false,
          "headline": "Added the support to load trajectory file (DCD or XTC) via the menu \"…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-12-29T18:54:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "26c9a1ccaaf0e08ab479d1c7c767042f86cc4010",
          "body": "… to use AI as a tutor to show users step-by-step instructions about how to build a custom view with five methods: Interactive, Sharable URL, Jupyter Notebook, Node.js script, and Python script.\n\nMerge in STRUC/icn3d from release3.46.0 to master\n\n* commit 'f94778865a4360d984512c155aa94a1bf20b9b20':\n\n[…]\nlp menu to use AI as a tutor to show users step-by-step instructions about how to build a custom view with five methods: Interactive, Sharable URL, Jupyter Notebook, Node.js script, and Python script.",
          "is_bot": false,
          "headline": "Pull request #709: Added an external link \"AI Tutor\" in the Help menu…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-12-15T18:24:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f94778865a4360d984512c155aa94a1bf20b9b20",
          "body": "…or to show users step-by-step instructions about how to build a custom view with five methods: Interactive, Sharable URL, Jupyter Notebook, Node.js script, and Python script.",
          "is_bot": false,
          "headline": "Added an external link \"AI Tutor\" in the Help menu to use AI as a tut…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-12-15T18:24:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0bca2f5aa7bf1e066c7bffbd7796d8c9ef6fa331",
          "body": "… to use AI as a tutor to show users step-by-step instructions about how to build a custom view with five methods: Interactive, Sharable URL, Jupyter Notebook, Node.js script, and Python script.\n\nMerge in STRUC/icn3d from release3.46.0 to master\n\n* commit '2ac50b4259c567eac81bd4df513600e4c7d29d18':\n\n[…]\nlp menu to use AI as a tutor to show users step-by-step instructions about how to build a custom view with five methods: Interactive, Sharable URL, Jupyter Notebook, Node.js script, and Python script.",
          "is_bot": false,
          "headline": "Pull request #708: Added an external link \"AI Tutor\" in the Help menu…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-12-10T15:24:07Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2ac50b4259c567eac81bd4df513600e4c7d29d18",
          "body": "…or to show users step-by-step instructions about how to build a custom view with five methods: Interactive, Sharable URL, Jupyter Notebook, Node.js script, and Python script.",
          "is_bot": false,
          "headline": "Added an external link \"AI Tutor\" in the Help menu to use AI as a tut…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-12-10T15:23:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "67cd04d2e95bdcc4718429215c2688484dea7f7a",
          "body": "… to use AI as a tutor to show users step-by-step instructions about how to build a custom view with five methods: Interactive, Sharable URL, Jupyter Notebook, Node.js script, and Python script.\n\nMerge in STRUC/icn3d from release3.46.0 to master\n\n* commit '934dbf84adeaee5740759ec7cc575622b018b595':\n\n[…]\nlp menu to use AI as a tutor to show users step-by-step instructions about how to build a custom view with five methods: Interactive, Sharable URL, Jupyter Notebook, Node.js script, and Python script.",
          "is_bot": false,
          "headline": "Pull request #707: Added an external link \"AI Tutor\" in the Help menu…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-12-10T15:11:58Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "934dbf84adeaee5740759ec7cc575622b018b595",
          "body": "…or to show users step-by-step instructions about how to build a custom view with five methods: Interactive, Sharable URL, Jupyter Notebook, Node.js script, and Python script.",
          "is_bot": false,
          "headline": "Added an external link \"AI Tutor\" in the Help menu to use AI as a tut…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-12-10T15:10:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fc315d430faaff48f0543afcbfcd04ec4d9c0e4e",
          "body": "…Added a general Node.js script general_id_cmd.js to output results based on PDB/AlphaFold ID and commands from sharable URLs.\n\nMerge in STRUC/icn3d from release3.45.5 to master\n\n* commit 'b832c0a67456089045c6436a074086f2b8a03561':\n  Fixed alternation display for aligned structures. Added a general Node.js script general_id_cmd.js to output results based on PDB/AlphaFold ID and commands from sharable URLs.",
          "is_bot": false,
          "headline": "Pull request #706: Fixed alternation display for aligned structures. …",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-12-02T19:33:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b832c0a67456089045c6436a074086f2b8a03561",
          "body": "…e.js script general_id_cmd.js to output results based on PDB/AlphaFold ID and commands from sharable URLs.",
          "is_bot": false,
          "headline": "Fixed alternation display for aligned structures. Added a general Nod…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-12-02T19:32:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b26d49092fc4ce735579a7c9ee02e51d75cfacdd",
          "body": "…ersion 6, e.g., AF-Q12860-F1-model_v6.pdb.\n\nMerge in STRUC/icn3d from release3.45.4 to master\n\n* commit '45832dd5024276c4384202629b5986da739ba43a':\n  AlphaFold models were upgraded from version 4 to version 6, e.g., AF-Q12860-F1-model_v6.pdb.\n  AlphaFold models were upgraded from version 4 to version 6, e.g., AF-Q12860-F1-model_v6.pdb.",
          "is_bot": false,
          "headline": "Pull request #705: AlphaFold models were upgraded from version 4 to v…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-11-19T16:56:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "45832dd5024276c4384202629b5986da739ba43a",
          "body": "…Q12860-F1-model_v6.pdb.",
          "is_bot": false,
          "headline": "AlphaFold models were upgraded from version 4 to version 6, e.g., AF-…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-11-19T16:55:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b48d72245e5075e424426942cdc82029218fa442",
          "body": "…Q12860-F1-model_v6.pdb.",
          "is_bot": false,
          "headline": "AlphaFold models were upgraded from version 4 to version 6, e.g., AF-…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-11-19T16:50:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2d34819d39a09f4d59e83aa7a34a3e4d8cf77ee0",
          "body": "…ersion 6, e.g., AF-Q12860-F1-model_v6.pdb.\n\nMerge in STRUC/icn3d from release3.45.4 to master\n\n* commit '6fb34979f5f4547302af221b385102d144983084':\n  AlphaFold models were upgraded from version 4 to version 6, e.g., AF-Q12860-F1-model_v6.pdb.",
          "is_bot": false,
          "headline": "Pull request #704: AlphaFold models were upgraded from version 4 to v…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-11-13T19:22:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6fb34979f5f4547302af221b385102d144983084",
          "body": "…Q12860-F1-model_v6.pdb.",
          "is_bot": false,
          "headline": "AlphaFold models were upgraded from version 4 to version 6, e.g., AF-…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-11-13T19:21:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b0b6911d252dd5e332c036e6ebd42d21938b4c11",
          "body": "…ersion 6, e.g., AF-Q12860-F1-model_v6.pdb.\n\nMerge in STRUC/icn3d from release3.45.4 to master\n\n* commit 'b510ebbd4e58b1e347ee9b603dc72fba05ac8cbb':\n  AlphaFold models were upgraded from version 4 to version 6, e.g., AF-Q12860-F1-model_v6.pdb.",
          "is_bot": false,
          "headline": "Pull request #703: AlphaFold models were upgraded from version 4 to v…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-11-13T19:06:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b510ebbd4e58b1e347ee9b603dc72fba05ac8cbb",
          "body": "…Q12860-F1-model_v6.pdb.",
          "is_bot": false,
          "headline": "AlphaFold models were upgraded from version 4 to version 6, e.g., AF-…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-11-13T19:05:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9c883c6bc64062c86e33646617ab2dbe462a3c80",
          "body": "…00. Fixed sequence alignment view and camera viewpoint-related issues.\n\nMerge in STRUC/icn3d from release3.45.3 to master\n\n* commit '870fe677db67b4149b979ea7b50f59a68d9b42e4':\n  Enabled to input long PDB IDs starting with pdb_0000. Fixed sequence alignment view and camera viewpoint-related issues.",
          "is_bot": false,
          "headline": "Pull request #702: Enabled to input long PDB IDs starting with pdb_00…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-09-22T11:49:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "870fe677db67b4149b979ea7b50f59a68d9b42e4",
          "body": "…alignment view and camera viewpoint-related issues.",
          "is_bot": false,
          "headline": "Enabled to input long PDB IDs starting with pdb_0000. Fixed sequence …",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-09-22T11:48:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "60e3acfc2207322347f1cf33c28eb029f4cfbf17",
          "body": "…00. Fixed sequence alignment view and camera viewpoint-related issues.\n\nMerge in STRUC/icn3d from release3.45.3 to master\n\n* commit '0d1a91b1c18a20e5baf22c486c91ea3da777af22':\n  Enabled to input long PDB IDs starting with pdb_0000. Fixed sequence alignment view and camera viewpoint-related issues.",
          "is_bot": false,
          "headline": "Pull request #701: Enabled to input long PDB IDs starting with pdb_00…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-09-22T11:44:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0d1a91b1c18a20e5baf22c486c91ea3da777af22",
          "body": "…alignment view and camera viewpoint-related issues.",
          "is_bot": false,
          "headline": "Enabled to input long PDB IDs starting with pdb_0000. Fixed sequence …",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-09-22T11:43:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8c69e89bc2883d19834dbbb12b6cd9fedefab7c7",
          "body": "…own short URL service; removed the line \"global.THREE = require('three')\" in iCn3D node.js scripts since three.js has been compiled into icn3d.js since iCn3D 3.44.0.\n\nMerge in STRUC/icn3d from release3.45.2 to master\n\n* commit '8d5815c58e4f3b188130d6c6be9ec418b77b675e':\n  Switched from Google Firebase Dynamic Link to our own short URL service; removed the line \"global.THREE = require('three')\" in iCn3D node.js scripts since three.js has been compiled into icn3d.js since iCn3D 3.44.0.",
          "is_bot": false,
          "headline": "Pull request #700: Switched from Google Firebase Dynamic Link to our …",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-08-26T14:16:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8d5815c58e4f3b188130d6c6be9ec418b77b675e",
          "body": "…ce; removed the line \"global.THREE = require('three')\" in iCn3D node.js scripts since three.js has been compiled into icn3d.js since iCn3D 3.44.0.",
          "is_bot": false,
          "headline": "Switched from Google Firebase Dynamic Link to our own short URL servi…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-08-26T14:15:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a3f92b9c18b89014e04b8182c0b53e09c09de7af",
          "body": "…own short URL service; removed the line \"global.THREE = require('three')\" in iCn3D node.js scripts since three.js has been compiled into icn3d.js since iCn3D 3.44.0.\n\nMerge in STRUC/icn3d from release3.45.2 to master\n\n* commit '659a862ce52e75a49e45fc55b9fec8c12b87f62c':\n  Switched from Google Firebase Dynamic Link to our own short URL service; removed the line \"global.THREE = require('three')\" in iCn3D node.js scripts since three.js has been compiled into icn3d.js since iCn3D 3.44.0.",
          "is_bot": false,
          "headline": "Pull request #699: Switched from Google Firebase Dynamic Link to our …",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-08-21T13:55:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "659a862ce52e75a49e45fc55b9fec8c12b87f62c",
          "body": "…ce; removed the line \"global.THREE = require('three')\" in iCn3D node.js scripts since three.js has been compiled into icn3d.js since iCn3D 3.44.0.",
          "is_bot": false,
          "headline": "Switched from Google Firebase Dynamic Link to our own short URL servi…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-08-21T13:55:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5ccf13bd1759a4f24f918151bb616118a3aa5f99",
          "body": "…own short URL service; removed the line \"global.THREE = require('three')\" in iCn3D node.js scripts since three.js has been compiled into icn3d.js since iCn3D 3.44.0.\n\nMerge in STRUC/icn3d from release3.45.2 to master\n\n* commit '35374e1811db674ee18aaf15d992aff256003528':\n  Switched from Google Firebase Dynamic Link to our own short URL service; removed the line \"global.THREE = require('three')\" in iCn3D node.js scripts since three.js has been compiled into icn3d.js since iCn3D 3.44.0.",
          "is_bot": false,
          "headline": "Pull request #698: Switched from Google Firebase Dynamic Link to our …",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-08-21T13:53:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "35374e1811db674ee18aaf15d992aff256003528",
          "body": "…ce; removed the line \"global.THREE = require('three')\" in iCn3D node.js scripts since three.js has been compiled into icn3d.js since iCn3D 3.44.0.",
          "is_bot": false,
          "headline": "Switched from Google Firebase Dynamic Link to our own short URL servi…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-08-21T13:52:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "be4c4d7253d4996dfae7584b55ac877dd2fdfdcc",
          "body": "…own short URL service; removed the line \"global.THREE = require('three')\" in iCn3D node.js scripts since three.js has been compiled into icn3d.js since iCn3D 3.44.0.\n\nMerge in STRUC/icn3d from release3.45.2 to master\n\n* commit '2bf5499dcad80a7f8e13af1719669437d69562ac':\n  Switched from Google Firebase Dynamic Link to our own short URL service; removed the line \"global.THREE = require('three')\" in iCn3D node.js scripts since three.js has been compiled into icn3d.js since iCn3D 3.44.0.",
          "is_bot": false,
          "headline": "Pull request #697: Switched from Google Firebase Dynamic Link to our …",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-08-21T13:36:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2bf5499dcad80a7f8e13af1719669437d69562ac",
          "body": "…ce; removed the line \"global.THREE = require('three')\" in iCn3D node.js scripts since three.js has been compiled into icn3d.js since iCn3D 3.44.0.",
          "is_bot": false,
          "headline": "Switched from Google Firebase Dynamic Link to our own short URL servi…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-08-21T13:35:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c89330df2446ea9471b4251356d2d013a9cfcee4",
          "body": "… in iCn3D node.js scripts since three.js has been compiled into icn3d.js since iCn3D 3.44.0.\n\nMerge in STRUC/icn3d from release3.45.2 to master\n\n* commit '70f2bf4efb28ea605be05e313bf3b1c01d830456':\n  Removed the line \"global.THREE = require('three')\" in iCn3D node.js scripts since three.js was compiled into icn3d.js since iCn3D 3.44.0.",
          "is_bot": false,
          "headline": "Pull request #696: Removed the line \"global.THREE = require('three')\"…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-08-20T13:34:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "70f2bf4efb28ea605be05e313bf3b1c01d830456",
          "body": "…cripts since three.js was compiled into icn3d.js since iCn3D 3.44.0.",
          "is_bot": false,
          "headline": "Removed the line \"global.THREE = require('three')\" in iCn3D node.js s…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-08-20T13:33:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7bcd8b01d309393eadac44f31fed6e46af24c245",
          "body": "…+ alignment sequence display.\n\nMerge in STRUC/icn3d from release3.45.1 to master\n\n* commit '379ae3c1e881082d028e3eb7edb9ca06d47368a9':\n  Fixed bugs in assigning specific template and VAST+ alignment sequence display.",
          "is_bot": false,
          "headline": "Pull request #695: Fixed bugs in assigning specific template and VAST…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-07-28T18:25:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "379ae3c1e881082d028e3eb7edb9ca06d47368a9",
          "body": "…e display.",
          "is_bot": false,
          "headline": "Fixed bugs in assigning specific template and VAST+ alignment sequenc…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-07-28T18:25:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6832d5e7fdfd210ab5fc5a2449c66df00fb98a48",
          "body": "…inks from trackball parameters to camera parameters used in BCF files. Fixed a bug in using node.js script.\n\nMerge in STRUC/icn3d from release3.45.0 to master\n\n* commit 'e1908cf5d77bb9ee29077e0129876f2a4ce5e6f7':\n  Switched the transformation description in share links from trackball parameters to camera parameters used in BCF files. Fixed a bug in using node.js script.",
          "is_bot": false,
          "headline": "Pull request #694: Switched the transformation description in share l…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-07-18T03:17:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e1908cf5d77bb9ee29077e0129876f2a4ce5e6f7",
          "body": "… parameters to camera parameters used in BCF files. Fixed a bug in using node.js script.",
          "is_bot": false,
          "headline": "Switched the transformation description in share links from trackball…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-07-18T03:16:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3ca7c7b7ba8b3f5c722866104a75b1fa5ef8496f",
          "body": "…inks from trackball parameters to camera parameters used in BCF files. Fixed a bug in using node.js script.\n\nMerge in STRUC/icn3d from release3.45.0 to master\n\n* commit 'f1e51c972519dab1ed910ed0f3bc6197a026afa1':\n  Switched the transformation description in share links from trackball parameters to camera parameters used in BCF files. Fixed a bug in using node.js script.",
          "is_bot": false,
          "headline": "Pull request #693: Switched the transformation description in share l…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-07-10T19:10:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f1e51c972519dab1ed910ed0f3bc6197a026afa1",
          "body": "… parameters to camera parameters used in BCF files. Fixed a bug in using node.js script.",
          "is_bot": false,
          "headline": "Switched the transformation description in share links from trackball…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-07-10T19:08:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8b21ec508785de78f02e48f879f43c01f302c7c0",
          "body": "…and BCF files.\n\nMerge in STRUC/icn3d from release3.44.2 to master\n\n* commit '95a224712564823df5ae7e9a1127a2d0862dd18e':\n  Enabled to drag and drop to open mmCIF, PDB, PNG, and BCF files.",
          "is_bot": false,
          "headline": "Pull request #692: Enabled to drag and drop to open mmCIF, PDB, PNG, …",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-07-02T15:20:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "95a224712564823df5ae7e9a1127a2d0862dd18e",
          "body": null,
          "is_bot": false,
          "headline": "Enabled to drag and drop to open mmCIF, PDB, PNG, and BCF files.",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-07-02T15:20:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a6b54403ba7440db8073f1d9a07ceae5b7f5a830",
          "body": "…and BCF files.\n\nMerge in STRUC/icn3d from release3.44.2 to master\n\n* commit '9a3f467218606d8d4c61350b3ff02b9b3b7f2b2e':\n  Enabled to drag and drop to open mmCIF, PDB, PNG, and BCF files.",
          "is_bot": false,
          "headline": "Pull request #691: Enabled to drag and drop to open mmCIF, PDB, PNG, …",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-06-30T17:17:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9a3f467218606d8d4c61350b3ff02b9b3b7f2b2e",
          "body": null,
          "is_bot": false,
          "headline": "Enabled to drag and drop to open mmCIF, PDB, PNG, and BCF files.",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-06-30T17:16:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6c0586777555b25006d09e8d1e872e0c0a7a0c18",
          "body": "…e File > BCF Viewpoint\".\n\nMerge in STRUC/icn3d from release3.44.1 to master\n\n* commit 'cc9299c691c6744a67788e002ddcbdc6a4369cdf':\n  Output BCF viewpoint file via the menu \"File > Save File > BCF Viewpoint\".",
          "is_bot": false,
          "headline": "Pull request #690: Output BCF viewpoint file via the menu \"File > Sav…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-06-26T17:46:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cc9299c691c6744a67788e002ddcbdc6a4369cdf",
          "body": "…int\".",
          "is_bot": false,
          "headline": "Output BCF viewpoint file via the menu \"File > Save File > BCF Viewpo…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-06-26T17:46:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b8ca3f6c53233e4e25a8c73b56783eca5ef060e4",
          "body": "…e.js directly into iCn3D library. No need to include three.js as a separate library.\n\nMerge in STRUC/icn3d from release3.44.0 to master\n\n* commit 'e20839ace52c82ec9dbcf6f434b5d23b8d0f8867':\n  Upgraded three.js to version 177 and compiled three.js directly into iCn3D library. No need to include three.js as a separate library.\n  Upgraded three.js to version 177 and compiled three.js directly into iCn3D library. No need to include three.js as a separate library.",
          "is_bot": false,
          "headline": "Pull request #689: Upgraded three.js to version 177 and compiled thre…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-06-23T17:41:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e20839ace52c82ec9dbcf6f434b5d23b8d0f8867",
          "body": "…iCn3D library. No need to include three.js as a separate library.",
          "is_bot": false,
          "headline": "Upgraded three.js to version 177 and compiled three.js directly into …",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-06-23T17:40:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f104d38c612f9a56b8ade04570e079a6dfaeab80",
          "body": "…iCn3D library. No need to include three.js as a separate library.",
          "is_bot": false,
          "headline": "Upgraded three.js to version 177 and compiled three.js directly into …",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-06-23T17:39:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d00a4b67779accc64ba8611af9f8637dcc60b3db",
          "body": "…e.js directly into iCn3D library. No need to include three.js as a separate library.\n\nMerge in STRUC/icn3d from release3.44.0 to master\n\n* commit '6449b08a27d15073e18bf517baf54b1f1b8b602a':\n  Upgraded three.js to version 177 and compiled three.js directly into iCn3D library. No need to include three.js as a separate library.\n  Upgraded three.js to version 177 and compiled three.js directly into iCn3D library. No need to include three.js as a separate library.",
          "is_bot": false,
          "headline": "Pull request #688: Upgraded three.js to version 177 and compiled thre…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-06-11T16:04:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6449b08a27d15073e18bf517baf54b1f1b8b602a",
          "body": "…iCn3D library. No need to include three.js as a separate library.",
          "is_bot": false,
          "headline": "Upgraded three.js to version 177 and compiled three.js directly into …",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-06-11T16:02:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c55ba378a24d12ead55004d8a1ac8fb970914c1b",
          "body": "…iCn3D library. No need to include three.js as a separate library.",
          "is_bot": false,
          "headline": "Upgraded three.js to version 177 and compiled three.js directly into …",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-06-11T15:54:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "de6f65c3dbf45d5e17234adf896797ed2bd84734",
          "body": "…n short URL service.\n\nMerge in STRUC/icn3d from release3.43.0 to master\n\n* commit '0c3fd69cd7a20733332acd48258f0cf0c2897a40':\n  Replaced Google Firebase dynamic links with our own short URL service.",
          "is_bot": false,
          "headline": "Pull request #687: Replaced Google Firebase dynamic links with our ow…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-05-27T20:12:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0c3fd69cd7a20733332acd48258f0cf0c2897a40",
          "body": null,
          "is_bot": false,
          "headline": "Replaced Google Firebase dynamic links with our own short URL service.",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-05-27T20:11:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8708b8791da52de8c300ef9e0e46bbed7471b938",
          "body": "…n short URL service.\n\nMerge in STRUC/icn3d from release3.43.0 to master\n\n* commit '99d7a4a1a75b06548f04847a0a03d2191cad2a88':\n  Replaced Google Firebase dynamic links with our own short URL service.",
          "is_bot": false,
          "headline": "Pull request #686: Replaced Google Firebase dynamic links with our ow…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-05-27T20:08:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "99d7a4a1a75b06548f04847a0a03d2191cad2a88",
          "body": null,
          "is_bot": false,
          "headline": "Replaced Google Firebase dynamic links with our own short URL service.",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-05-27T20:07:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0037c7a5066609b9d1e0ec03dfeb49c224a825dc",
          "body": "…n short URL service.\n\nMerge in STRUC/icn3d from release3.43.0 to master\n\n* commit '4b51e97f459c9d516adeaef7cfa3709591a1895b':\n  Replaced Google Firebase dynamic links with our own short URL service.",
          "is_bot": false,
          "headline": "Pull request #685: Replaced Google Firebase dynamic links with our ow…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-05-27T18:45:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4b51e97f459c9d516adeaef7cfa3709591a1895b",
          "body": null,
          "is_bot": false,
          "headline": "Replaced Google Firebase dynamic links with our own short URL service.",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-05-27T18:43:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 100,
      "commits_last_year": 76,
      "latest_release_at": "2026-07-20T18:10:32Z",
      "latest_release_tag": "v3.51.1",
      "releases_from_tags": false,
      "days_since_last_push": 8,
      "active_weeks_last_year": 16,
      "days_since_latest_release": 10,
      "mean_days_between_releases": 22.5
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 62,
      "has_issue_template": false,
      "has_code_of_conduct": true,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "icn3d",
          "exists": true,
          "license": "SEE LICENSE IN LICENSE",
          "keywords": [
            "ncbi",
            "icn3d",
            "3d viewer",
            "protein",
            "structure",
            "node"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/icn3d",
          "is_deprecated": false,
          "latest_version": "3.51.2",
          "repository_url": "https://github.com/ncbi/icn3d",
          "versions_count": 250,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 2,
          "monthly_downloads": 2767,
          "first_published_at": "2021-05-03T20:35:53.972000Z",
          "latest_published_at": "2026-07-22T15:46:03.872000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 8
        },
        {
          "name": "icn3dpy",
          "exists": true,
          "license": "MIT License",
          "keywords": [
            "WebGL-based",
            "protein",
            "structure",
            "viewer",
            "Development Status :: 5 - Production/Stable",
            "Intended Audience :: Developers",
            "Intended Audience :: Science/Research",
            "License :: OSI Approved :: MIT License",
            "Programming Language :: Python :: 2",
            "Programming Language :: Python :: 3",
            "Topic :: Scientific/Engineering :: Bio-Informatics",
            "Topic :: Scientific/Engineering :: Chemistry",
            "Topic :: Scientific/Engineering :: Visualization"
          ],
          "ecosystem": "pypi",
          "matches_repo": true,
          "registry_url": "https://pypi.org/project/icn3dpy/",
          "is_deprecated": false,
          "latest_version": "3.51.0",
          "repository_url": "https://github.com/ncbi/icn3d",
          "versions_count": 120,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 1148,
          "first_published_at": "2020-07-11T02:27:54.078712Z",
          "latest_published_at": "2026-07-07T13:28:23.945615Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 23
        }
      ]
    },
    "popularity": {
      "forks": 54,
      "stars": 175,
      "watchers": 14,
      "fork_history": {
        "days": [
          {
            "date": "2016-01-22",
            "count": 2
          },
          {
            "date": "2016-05-04",
            "count": 1
          },
          {
            "date": "2016-06-29",
            "count": 1
          },
          {
            "date": "2016-07-10",
            "count": 1
          },
          {
            "date": "2016-07-15",
            "count": 1
          },
          {
            "date": "2017-02-07",
            "count": 1
          },
          {
            "date": "2017-03-07",
            "count": 1
          },
          {
            "date": "2019-01-24",
            "count": 1
          },
          {
            "date": "2020-02-01",
            "count": 1
          },
          {
            "date": "2020-04-12",
            "count": 1
          },
          {
            "date": "2020-07-09",
            "count": 1
          },
          {
            "date": "2020-07-12",
            "count": 3
          },
          {
            "date": "2020-07-13",
            "count": 1
          },
          {
            "date": "2020-08-18",
            "count": 1
          },
          {
            "date": "2020-11-23",
            "count": 3
          },
          {
            "date": "2020-11-29",
            "count": 1
          },
          {
            "date": "2021-04-07",
            "count": 1
          },
          {
            "date": "2021-04-26",
            "count": 1
          },
          {
            "date": "2021-08-19",
            "count": 1
          },
          {
            "date": "2021-12-14",
            "count": 1
          },
          {
            "date": "2022-02-15",
            "count": 1
          },
          {
            "date": "2022-04-06",
            "count": 1
          },
          {
            "date": "2022-06-07",
            "count": 1
          },
          {
            "date": "2022-07-29",
            "count": 1
          },
          {
            "date": "2022-11-28",
            "count": 1
          },
          {
            "date": "2023-01-22",
            "count": 1
          },
          {
            "date": "2023-02-24",
            "count": 1
          },
          {
            "date": "2023-02-26",
            "count": 1
          },
          {
            "date": "2023-04-28",
            "count": 1
          },
          {
            "date": "2024-01-05",
            "count": 1
          },
          {
            "date": "2024-01-09",
            "count": 1
          },
          {
            "date": "2024-01-18",
            "count": 1
          },
          {
            "date": "2024-01-23",
            "count": 1
          },
          {
            "date": "2024-03-04",
            "count": 1
          },
          {
            "date": "2024-05-02",
            "count": 1
          },
          {
            "date": "2024-12-03",
            "count": 1
          },
          {
            "date": "2025-04-20",
            "count": 1
          },
          {
            "date": "2025-04-21",
            "count": 1
          },
          {
            "date": "2025-05-06",
            "count": 1
          },
          {
            "date": "2025-06-15",
            "count": 1
          },
          {
            "date": "2025-06-23",
            "count": 1
          },
          {
            "date": "2025-06-27",
            "count": 1
          },
          {
            "date": "2025-08-15",
            "count": 1
          },
          {
            "date": "2025-11-26",
            "count": 1
          },
          {
            "date": "2025-12-02",
            "count": 1
          },
          {
            "date": "2026-01-23",
            "count": 1
          },
          {
            "date": "2026-07-21",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 52,
        "total_forks": 54
      },
      "star_history": null,
      "open_issues_and_prs": 10
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "example"
      ],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [
        "icn3dnode/tmalign-icn3dnode/Makefile"
      ],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [],
      "largest_source_bytes": 1930687,
      "source_files_sampled": 201,
      "oversized_source_files": 25,
      "agent_instruction_files": [],
      "agent_instruction_max_bytes": null
    },
    "dependencies": {
      "manifests": [
        "jupyternotebook/setup.py",
        "package.json"
      ],
      "advisories": {
        "error": null,
        "scope": "published_package",
        "source": "osv",
        "findings": [
          {
            "name": "axios",
            "direct": true,
            "version": "0.25.0",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 8.6,
            "advisory_ids": [
              "GHSA-3g43-6gmg-66jw",
              "GHSA-3p68-rc4w-qgx5",
              "GHSA-43fc-jf86-j433",
              "GHSA-5c9x-8gcm-mpgx",
              "GHSA-62hf-57xw-28j9",
              "GHSA-6chq-wfr3-2hj9",
              "GHSA-7q8q-rj6j-mhjq",
              "GHSA-898c-q2cr-xwhg",
              "GHSA-fvcv-3m26-pcqx",
              "GHSA-hfxv-24rg-xrqf"
            ],
            "fixed_version": "1.18.0",
            "advisory_count": 23,
            "oldest_advisory_days": 994
          },
          {
            "name": "@tootallnate/once",
            "direct": false,
            "version": "1.1.2",
            "severity": "low",
            "ecosystem": "npm",
            "cvss_score": 3.3,
            "advisory_ids": [
              "GHSA-vpq2-c234-7xj6"
            ],
            "fixed_version": "3.0.1",
            "advisory_count": 1,
            "oldest_advisory_days": 149
          }
        ],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {
          "low": 1,
          "high": 1
        },
        "advisory_count": 24,
        "affected_count": 2,
        "assessed_count": 77,
        "malicious_count": 0,
        "assessed_package": "npm:icn3d@3.51.2",
        "unassessed_count": 0,
        "direct_affected_count": 1
      },
      "ecosystems": [
        "npm",
        "pypi"
      ],
      "dependencies": [
        {
          "name": "jquery",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.5.0"
        },
        {
          "name": "jquery-ui",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "github:jquery/jquery-ui#1.13.2"
        },
        {
          "name": "line-awesome",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.3.0"
        },
        {
          "name": "three",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "~0.177.0"
        },
        {
          "name": "uglify-js",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.3.9"
        },
        {
          "name": "del",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.1.0"
        },
        {
          "name": "gulp-concat",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.6.1"
        },
        {
          "name": "gulp-dom",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.0.0"
        },
        {
          "name": "gulp-help",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.6.1"
        },
        {
          "name": "gulp-rename",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.0.0"
        },
        {
          "name": "gulp-replace",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.1.1"
        },
        {
          "name": "gulp-uglify",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.0.2"
        },
        {
          "name": "gulp-zip",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.0.1"
        },
        {
          "name": "rollup",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.45.2"
        },
        {
          "name": "rollup-plugin-node-resolve",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.2.0"
        },
        {
          "name": "rollup-plugin-terser",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^7.0.2"
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "del",
            "direct": true,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "gulp-concat",
            "direct": true,
            "version": "2.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "gulp-dom",
            "direct": true,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "gulp-help",
            "direct": true,
            "version": "1.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "gulp-rename",
            "direct": true,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "gulp-replace",
            "direct": true,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "gulp-uglify",
            "direct": true,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "gulp-zip",
            "direct": true,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "jquery",
            "direct": true,
            "version": "3.7.1",
            "ecosystem": "npm"
          },
          {
            "name": "jquery-ui",
            "direct": true,
            "version": "1.13.2",
            "ecosystem": "npm"
          },
          {
            "name": "line-awesome",
            "direct": true,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "rollup",
            "direct": true,
            "version": "2.79.2",
            "ecosystem": "npm"
          },
          {
            "name": "rollup-plugin-node-resolve",
            "direct": true,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "rollup-plugin-terser",
            "direct": true,
            "version": "7.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "three",
            "direct": true,
            "version": "0.177.0",
            "ecosystem": "npm"
          },
          {
            "name": "uglify-js",
            "direct": true,
            "version": "3.3.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/code-frame",
            "direct": false,
            "version": "7.26.2",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-identifier",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/gen-mapping",
            "direct": false,
            "version": "0.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/resolve-uri",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/set-array",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/source-map",
            "direct": false,
            "version": "0.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/sourcemap-codec",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/trace-mapping",
            "direct": false,
            "version": "0.3.25",
            "ecosystem": "npm"
          },
          {
            "name": "@nodelib/fs.scandir",
            "direct": false,
            "version": "2.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@nodelib/fs.stat",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@nodelib/fs.walk",
            "direct": false,
            "version": "1.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "@types/expect",
            "direct": false,
            "version": "1.20.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/glob",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/minimatch",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": false,
            "version": "22.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "@types/resolve",
            "direct": false,
            "version": "0.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "@types/vinyl",
            "direct": false,
            "version": "2.0.12",
            "ecosystem": "npm"
          },
          {
            "name": "abab",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "acorn",
            "direct": false,
            "version": "6.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "acorn",
            "direct": false,
            "version": "8.14.0",
            "ecosystem": "npm"
          },
          {
            "name": "acorn-globals",
            "direct": false,
            "version": "4.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "acorn-walk",
            "direct": false,
            "version": "6.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "aggregate-error",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "6.12.6",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-colors",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-gray",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-regex",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-wrap",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "anymatch",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "append-buffer",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "archy",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "arr-diff",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "arr-filter",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "arr-flatten",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "arr-map",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "arr-union",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "array-each",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "array-equal",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "array-initial",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "array-last",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "array-slice",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "array-sort",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "array-union",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "array-unique",
            "direct": false,
            "version": "0.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "asn1",
            "direct": false,
            "version": "0.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "assert-plus",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "assign-symbols",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "async-done",
            "direct": false,
            "version": "1.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "async-each",
            "direct": false,
            "version": "1.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "async-limiter",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "async-settle",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "asynckit",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "atob",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "aws-sign2",
            "direct": false,
            "version": "0.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "aws4",
            "direct": false,
            "version": "1.13.2",
            "ecosystem": "npm"
          },
          {
            "name": "bach",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "balanced-match",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "base",
            "direct": false,
            "version": "0.11.2",
            "ecosystem": "npm"
          },
          {
            "name": "bcrypt-pbkdf",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "binary-extensions",
            "direct": false,
            "version": "1.13.1",
            "ecosystem": "npm"
          },
          {
            "name": "binaryextensions",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "bindings",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "1.1.11",
            "ecosystem": "npm"
          },
          {
            "name": "braces",
            "direct": false,
            "version": "2.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "braces",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "browser-process-hrtime",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "buffer-crc32",
            "direct": false,
            "version": "0.2.13",
            "ecosystem": "npm"
          },
          {
            "name": "buffer-equal",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "buffer-from",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "builtin-modules",
            "direct": false,
            "version": "3.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "cache-base",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "call-bind",
            "direct": false,
            "version": "1.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "camelcase",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "caseless",
            "direct": false,
            "version": "0.12.0",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "chokidar",
            "direct": false,
            "version": "2.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "class-utils",
            "direct": false,
            "version": "0.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "clean-stack",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "cliui",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "clone",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "clone-buffer",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "clone-stats",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cloneable-readable",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "code-point-at",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "collection-map",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "collection-visit",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "color-support",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "combined-stream",
            "direct": false,
            "version": "1.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": false,
            "version": "2.13.0",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": false,
            "version": "2.20.3",
            "ecosystem": "npm"
          },
          {
            "name": "component-emitter",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "concat-map",
            "direct": false,
            "version": "0.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "concat-stream",
            "direct": false,
            "version": "1.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "concat-with-sourcemaps",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "convert-source-map",
            "direct": false,
            "version": "1.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "copy-descriptor",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "copy-props",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "core-util-is",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "core-util-is",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "cssom",
            "direct": false,
            "version": "0.3.8",
            "ecosystem": "npm"
          },
          {
            "name": "cssstyle",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "d",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "dashdash",
            "direct": false,
            "version": "1.14.1",
            "ecosystem": "npm"
          },
          {
            "name": "data-urls",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "2.6.9",
            "ecosystem": "npm"
          },
          {
            "name": "decamelize",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "decode-uri-component",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "deep-is",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "default-compare",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "default-resolution",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "define-data-property",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "define-properties",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "define-property",
            "direct": false,
            "version": "0.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "define-property",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "define-property",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "delayed-stream",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "detect-file",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "dir-glob",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "domexception",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "duplexify",
            "direct": false,
            "version": "3.7.1",
            "ecosystem": "npm"
          },
          {
            "name": "each-props",
            "direct": false,
            "version": "1.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "ecc-jsbn",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "end-of-stream",
            "direct": false,
            "version": "1.4.4",
            "ecosystem": "npm"
          },
          {
            "name": "error-ex",
            "direct": false,
            "version": "1.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "es-define-property",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "es-errors",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "es5-ext",
            "direct": false,
            "version": "0.10.64",
            "ecosystem": "npm"
          },
          {
            "name": "es6-iterator",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "es6-symbol",
            "direct": false,
            "version": "3.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "es6-weak-map",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "escape-string-regexp",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "escodegen",
            "direct": false,
            "version": "1.14.3",
            "ecosystem": "npm"
          },
          {
            "name": "esniff",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "esprima",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "estraverse",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "estree-walker",
            "direct": false,
            "version": "0.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "esutils",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "event-emitter",
            "direct": false,
            "version": "0.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "expand-brackets",
            "direct": false,
            "version": "2.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "expand-tilde",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "ext",
            "direct": false,
            "version": "1.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "extend",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "extend-shallow",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "extend-shallow",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "extglob",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "extsprintf",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "fancy-log",
            "direct": false,
            "version": "1.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "fast-deep-equal",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "fast-glob",
            "direct": false,
            "version": "3.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "fast-json-stable-stringify",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "fast-levenshtein",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "fast-levenshtein",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "fastq",
            "direct": false,
            "version": "1.17.1",
            "ecosystem": "npm"
          },
          {
            "name": "file-uri-to-path",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "fill-range",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "fill-range",
            "direct": false,
            "version": "7.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "find-up",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "findup-sync",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "findup-sync",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "fined",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "flagged-respawn",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "flush-write-stream",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "for-in",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "for-own",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "forever-agent",
            "direct": false,
            "version": "0.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "form-data",
            "direct": false,
            "version": "2.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "fragment-cache",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "fs-mkdirp-stream",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "fs.realpath",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "fsevents",
            "direct": false,
            "version": "1.2.13",
            "ecosystem": "npm"
          },
          {
            "name": "fsevents",
            "direct": false,
            "version": "2.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "function-bind",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "get-caller-file",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "get-intrinsic",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "get-stream",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "get-value",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "getpass",
            "direct": false,
            "version": "0.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "glob",
            "direct": false,
            "version": "7.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "glob-parent",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "glob-parent",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "glob-stream",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "glob-watcher",
            "direct": false,
            "version": "5.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "global-modules",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "global-prefix",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "globby",
            "direct": false,
            "version": "10.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "glogg",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "gopd",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "graceful-fs",
            "direct": false,
            "version": "4.2.11",
            "ecosystem": "npm"
          },
          {
            "name": "gulp",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "gulp-cli",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "gulplog",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "har-schema",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "har-validator",
            "direct": false,
            "version": "5.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "has-ansi",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-flag",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-gulplog",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-property-descriptors",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "has-proto",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "has-symbols",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "has-value",
            "direct": false,
            "version": "0.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "has-value",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-values",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "has-values",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hasown",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "homedir-polyfill",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "hosted-git-info",
            "direct": false,
            "version": "2.8.9",
            "ecosystem": "npm"
          },
          {
            "name": "html-encoding-sniffer",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "http-signature",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "iconv-lite",
            "direct": false,
            "version": "0.4.24",
            "ecosystem": "npm"
          },
          {
            "name": "ignore",
            "direct": false,
            "version": "5.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "indent-string",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "inflight",
            "direct": false,
            "version": "1.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "inherits",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "ini",
            "direct": false,
            "version": "1.3.8",
            "ecosystem": "npm"
          },
          {
            "name": "interpret",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "invert-kv",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-absolute",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-accessor-descriptor",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-arrayish",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-binary-path",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-buffer",
            "direct": false,
            "version": "1.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "is-core-module",
            "direct": false,
            "version": "2.15.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-data-descriptor",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-descriptor",
            "direct": false,
            "version": "0.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "is-descriptor",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-extendable",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-extendable",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-extglob",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-fullwidth-code-point",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-glob",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-glob",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-module",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-negated-glob",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-number",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-number",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-number",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-path-cwd",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-path-inside",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-plain-object",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "is-plain-object",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-relative",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-typedarray",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-unc-path",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-utf8",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-valid-glob",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-windows",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "isarray",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "isexe",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "isobject",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "isobject",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "isstream",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "istextorbinary",
            "direct": false,
            "version": "3.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-worker",
            "direct": false,
            "version": "26.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "js-tokens",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "jsbn",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "jsdom",
            "direct": false,
            "version": "12.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "json-schema",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "json-schema-traverse",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-stable-stringify-without-jsonify",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-stringify-safe",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "jsprim",
            "direct": false,
            "version": "1.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "just-debounce",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "kind-of",
            "direct": false,
            "version": "3.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "kind-of",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "kind-of",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "kind-of",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "last-run",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "lazystream",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "lcid",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "lead",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "levn",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "liftoff",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "load-json-file",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash",
            "direct": false,
            "version": "4.17.21",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.sortby",
            "direct": false,
            "version": "4.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "make-error",
            "direct": false,
            "version": "1.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "make-error-cause",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "make-iterator",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "map-cache",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "map-visit",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "matchdep",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "merge-stream",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "merge2",
            "direct": false,
            "version": "1.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromatch",
            "direct": false,
            "version": "3.1.10",
            "ecosystem": "npm"
          },
          {
            "name": "micromatch",
            "direct": false,
            "version": "4.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "mime-db",
            "direct": false,
            "version": "1.52.0",
            "ecosystem": "npm"
          },
          {
            "name": "mime-types",
            "direct": false,
            "version": "2.1.35",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "mixin-deep",
            "direct": false,
            "version": "1.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "mute-stdout",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "nan",
            "direct": false,
            "version": "2.22.0",
            "ecosystem": "npm"
          },
          {
            "name": "nanomatch",
            "direct": false,
            "version": "1.2.13",
            "ecosystem": "npm"
          },
          {
            "name": "next-tick",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-package-data",
            "direct": false,
            "version": "2.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-path",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-path",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "now-and-later",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "number-is-nan",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "nwsapi",
            "direct": false,
            "version": "2.2.13",
            "ecosystem": "npm"
          },
          {
            "name": "oauth-sign",
            "direct": false,
            "version": "0.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "object-assign",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "object-assign",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "object-copy",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "object-keys",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "object-visit",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "object.assign",
            "direct": false,
            "version": "4.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "object.defaults",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "object.map",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "object.pick",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "object.reduce",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "once",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "optionator",
            "direct": false,
            "version": "0.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "ordered-read-streams",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "os-locale",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-map",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "parse-filepath",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "parse-json",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "parse-node-version",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "parse-passwd",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "parse5",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "pascalcase",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "path-dirname",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "path-exists",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "path-is-absolute",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "path-parse",
            "direct": false,
            "version": "1.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "path-root",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "path-root-regex",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "path-type",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "path-type",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "performance-now",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "picocolors",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "pify",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "pinkie",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "pinkie-promise",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "plugin-error",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "pn",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "posix-character-classes",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "prelude-ls",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "pretty-hrtime",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "process-nextick-args",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "psl",
            "direct": false,
            "version": "1.13.0",
            "ecosystem": "npm"
          },
          {
            "name": "pump",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "pump",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "pumpify",
            "direct": false,
            "version": "1.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "punycode",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "qs",
            "direct": false,
            "version": "6.5.3",
            "ecosystem": "npm"
          },
          {
            "name": "queue-microtask",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "randombytes",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "read-pkg",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "read-pkg-up",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "readable-stream",
            "direct": false,
            "version": "2.3.8",
            "ecosystem": "npm"
          },
          {
            "name": "readdirp",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "rechoir",
            "direct": false,
            "version": "0.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "regex-not",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "remove-bom-buffer",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "remove-bom-stream",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "remove-trailing-separator",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "repeat-element",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "repeat-string",
            "direct": false,
            "version": "1.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "replace-ext",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "replace-homedir",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "replacestream",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "request",
            "direct": false,
            "version": "2.88.2",
            "ecosystem": "npm"
          },
          {
            "name": "request-promise-core",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "request-promise-native",
            "direct": false,
            "version": "1.0.9",
            "ecosystem": "npm"
          },
          {
            "name": "require-directory",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "require-main-filename",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "resolve",
            "direct": false,
            "version": "1.22.8",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-dir",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-options",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-url",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "ret",
            "direct": false,
            "version": "0.1.15",
            "ecosystem": "npm"
          },
          {
            "name": "reusify",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "rimraf",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "rollup-pluginutils",
            "direct": false,
            "version": "2.8.2",
            "ecosystem": "npm"
          },
          {
            "name": "run-parallel",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "safe-buffer",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "safe-buffer",
            "direct": false,
            "version": "5.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "safe-regex",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "safer-buffer",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "saxes",
            "direct": false,
            "version": "3.1.11",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "5.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "semver-greatest-satisfied-range",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "serialize-javascript",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "set-blocking",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "set-function-length",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "set-value",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "slash",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "snapdragon",
            "direct": false,
            "version": "0.8.2",
            "ecosystem": "npm"
          },
          {
            "name": "snapdragon-node",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "snapdragon-util",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "source-map",
            "direct": false,
            "version": "0.5.7",
            "ecosystem": "npm"
          },
          {
            "name": "source-map",
            "direct": false,
            "version": "0.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "source-map-resolve",
            "direct": false,
            "version": "0.5.3",
            "ecosystem": "npm"
          },
          {
            "name": "source-map-support",
            "direct": false,
            "version": "0.5.21",
            "ecosystem": "npm"
          },
          {
            "name": "source-map-url",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "sparkles",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "spdx-correct",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "spdx-exceptions",
            "direct": false,
            "version": "2.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "spdx-expression-parse",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "spdx-license-ids",
            "direct": false,
            "version": "3.0.20",
            "ecosystem": "npm"
          },
          {
            "name": "split-string",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "sshpk",
            "direct": false,
            "version": "1.18.0",
            "ecosystem": "npm"
          },
          {
            "name": "stack-trace",
            "direct": false,
            "version": "0.0.10",
            "ecosystem": "npm"
          },
          {
            "name": "static-extend",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "stealthy-require",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "stream-exhaust",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "stream-shift",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "string-width",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "string_decoder",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "strip-ansi",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "strip-bom",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "supports-preserve-symlinks-flag",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "sver-compat",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "symbol-tree",
            "direct": false,
            "version": "3.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "terser",
            "direct": false,
            "version": "5.36.0",
            "ecosystem": "npm"
          },
          {
            "name": "textextensions",
            "direct": false,
            "version": "3.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "through2",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "through2",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "through2",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "through2-filter",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "time-stamp",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "to-absolute-glob",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "to-object-path",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "to-regex",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "to-regex-range",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "to-regex-range",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "to-through",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "tough-cookie",
            "direct": false,
            "version": "2.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "tr46",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "tunnel-agent",
            "direct": false,
            "version": "0.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "tweetnacl",
            "direct": false,
            "version": "0.14.5",
            "ecosystem": "npm"
          },
          {
            "name": "type",
            "direct": false,
            "version": "2.7.3",
            "ecosystem": "npm"
          },
          {
            "name": "type-check",
            "direct": false,
            "version": "0.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "typedarray",
            "direct": false,
            "version": "0.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "unc-path-regex",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "undertaker",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "undertaker-registry",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "undici-types",
            "direct": false,
            "version": "6.19.8",
            "ecosystem": "npm"
          },
          {
            "name": "union-value",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "unique-stream",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "unset-value",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "upath",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "uri-js",
            "direct": false,
            "version": "4.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "urix",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "use",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "util-deprecate",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "uuid",
            "direct": false,
            "version": "3.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "v8flags",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "validate-npm-package-license",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "value-or-function",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "verror",
            "direct": false,
            "version": "1.10.0",
            "ecosystem": "npm"
          },
          {
            "name": "vinyl",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "vinyl-fs",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "vinyl-sourcemap",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "vinyl-sourcemaps-apply",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "w3c-hr-time",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "webidl-conversions",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "whatwg-encoding",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "whatwg-mimetype",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "whatwg-url",
            "direct": false,
            "version": "7.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "which",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "which-module",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "word-wrap",
            "direct": false,
            "version": "1.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "wrap-ansi",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "wrappy",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "ws",
            "direct": false,
            "version": "6.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "xml-name-validator",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "xmlchars",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "xtend",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "y18n",
            "direct": false,
            "version": "3.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "yargs",
            "direct": false,
            "version": "7.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "yargs-parser",
            "direct": false,
            "version": "21.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "yargs-parser",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "yazl",
            "direct": false,
            "version": "2.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "idisplay",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "jupyter",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 498,
        "direct_count": 16,
        "indirect_count": 482
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 3,
        "merged_prs": 8,
        "open_issues": 7,
        "closed_ratio": 0.937,
        "closed_issues": 104,
        "closed_unmerged_prs": 7
      },
      "bus_factor": 1,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "jiywang3",
          "commits": 1606,
          "avatar_url": "https://avatars.githubusercontent.com/u/11690222?v=4"
        },
        {
          "type": "User",
          "login": "Klortho",
          "commits": 20,
          "avatar_url": "https://avatars.githubusercontent.com/u/77226?v=4"
        },
        {
          "type": "User",
          "login": "th3linja",
          "commits": 11,
          "avatar_url": "https://avatars.githubusercontent.com/u/44933974?v=4"
        },
        {
          "type": "User",
          "login": "lewisg-ncbi",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/13484888?v=4"
        }
      ],
      "contributors_sampled": 4,
      "top_contributor_share": 0.98
    },
    "quality_signals": {
      "has_ci": false,
      "has_tests": false,
      "ci_workflows": [],
      "has_docs_dir": false,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "package-lock.json"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 7,
            "reason": "binaries present in source code",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 0,
            "reason": "branch protection not enabled on development/release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": null,
            "reason": "no pull request found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 0,
            "reason": "Found 0/30 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 6 contributing companies or organizations",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": null,
            "reason": "no workflows found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 0,
            "reason": "no update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 9,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "27 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": null,
            "reason": "no dependencies found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "no SAST tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 10,
            "reason": "security policy file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": null,
            "reason": "No tokens found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 0,
            "reason": "23 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "b53d64147fa87125ab958b26e58f9b59771f05de",
        "ran_at": "2026-07-30T20:35:06Z",
        "aggregate_score": 3.3,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": true,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-27T19:14:22Z",
      "oldest_open_prs": [
        {
          "number": 111,
          "created_at": "2024-01-24T01:16:57Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 116,
          "created_at": "2024-12-02T16:41:13Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 130,
          "created_at": "2026-07-21T04:38:25Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ],
      "last_merged_pr_at": "2025-01-15T12:48:09Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": [
        {
          "number": 55,
          "created_at": "2021-10-20T23:39:55Z",
          "last_comment_at": "2021-10-22T01:53:52Z",
          "last_comment_author": "jiywang3"
        },
        {
          "number": 58,
          "created_at": "2021-10-30T01:01:11Z",
          "last_comment_at": "2021-11-08T17:14:16Z",
          "last_comment_author": "jiywang3"
        },
        {
          "number": 64,
          "created_at": "2021-11-22T00:17:24Z",
          "last_comment_at": "2021-11-22T23:48:33Z",
          "last_comment_author": "jiywang3"
        },
        {
          "number": 67,
          "created_at": "2021-11-23T17:04:05Z",
          "last_comment_at": "2021-11-23T18:49:57Z",
          "last_comment_author": "jiywang3"
        },
        {
          "number": 70,
          "created_at": "2021-11-24T16:44:30Z",
          "last_comment_at": "2021-11-24T20:07:12Z",
          "last_comment_author": "digitaltodd"
        },
        {
          "number": 71,
          "created_at": "2021-11-24T17:23:02Z",
          "last_comment_at": "2021-11-24T19:39:51Z",
          "last_comment_author": "digitalbio"
        },
        {
          "number": 129,
          "created_at": "2026-04-16T18:42:15Z",
          "last_comment_at": "2026-04-29T15:48:05Z",
          "last_comment_author": "joelb123"
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/ncbi/icn3d",
    "host": "github.com",
    "name": "icn3d",
    "owner": "ncbi"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": "The weighted overall 55 is calibrated to 57 on the published index scale (record calibration 2026-08-02).",
      "notes": [
        {
          "code": "overall_calibration",
          "params": {
            "raw": 55,
            "calibrated": 57,
            "calibration": "2026-08-02"
          }
        }
      ],
      "value": 57,
      "inputs": {
        "security": 38,
        "vitality": 80,
        "community": 58,
        "governance": 64,
        "calibration": "2026-08-02",
        "engineering": 31,
        "ai_readiness": 36,
        "weighted_overall_raw": 55
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "excellent",
        "name": "Vitality",
        "value": 80,
        "weight": 0.21,
        "metrics": [
          {
            "key": "development_activity",
            "band": "good",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 67,
            "inputs": {
              "commits_last_year": 76,
              "human_commit_share": 1,
              "days_since_last_push": 8,
              "active_weeks_last_year": 16
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 8 days ago",
                "points": 28.8,
                "status": "partial",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 8
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "16/52 weeks with commits",
                "points": 11.1,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 16
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "76 commits in the last year",
                "points": 16.9,
                "status": "partial",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 76
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "27 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "exceptional",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "releases_count": 100,
              "latest_release_tag": "v3.51.1",
              "releases_from_tags": false,
              "days_since_latest_release": 10,
              "mean_days_between_releases": 22.5
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "100 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 100
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 10 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 10
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~22.5 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 22.5
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "exceptional",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "maintained",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 11,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 11 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 11
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "moderate",
        "name": "Community & Adoption",
        "value": 58,
        "weight": 0.17,
        "metrics": [
          {
            "key": "popularity",
            "band": "moderate",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 57,
            "inputs": {
              "forks": 54,
              "stars": 175,
              "watchers": 14,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "175 stars",
                "points": 36.3,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 175
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "54 forks",
                "points": 14.4,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 54
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "14 watchers",
                "points": 6.2,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 14
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "moderate",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 59,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "readme_badges": null,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": true,
              "readme_badge_services": [],
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file present, not a recognized license",
                "points": 16.9,
                "status": "partial",
                "details": [
                  {
                    "code": "license_custom",
                    "params": {}
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 13.5,
                "status": "met",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "moderate",
            "name": "Ecosystem adoption (downloads)",
            "note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "registry_dependents"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 60,
            "inputs": {
              "packages": [
                "icn3d",
                "icn3dpy"
              ],
              "dependents": null,
              "ecosystems": "npm, pypi",
              "total_downloads": null,
              "monthly_downloads": 3915
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "3,915 downloads/month across npm, pypi",
                "points": 47.9,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 3915,
                      "ecosystems": "npm, pypi"
                    }
                  }
                ],
                "max_points": 80
              },
              {
                "key": "registry_dependents",
                "name": "Registry dependents",
                "detail": "not reported by this ecosystem",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_reported_by_this_ecosystem",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "moderate",
        "name": "Sustainability & Governance",
        "value": 64,
        "weight": 0.23,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "at_risk",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 25,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 4,
              "top_contributor_share": 0.98
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "1 contributor(s) cover half of all commits",
                "points": 9,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 98% of commits",
                "points": 0.5,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 98
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "4 contributors",
                "points": 5.4,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 4
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 6 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "moderate",
            "name": "Issue & PR responsiveness",
            "note": "Excluded from scoring (no data or not applicable): Newcomer PR acceptance. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "newcomer_pr_acceptance"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 64,
            "inputs": {
              "merged_prs": 8,
              "open_issues": 7,
              "closed_issues": 104,
              "prs_merged_7d": null,
              "prs_decided_7d": null,
              "prs_merged_30d": null,
              "prs_decided_30d": null,
              "issue_closed_ratio": 0.937,
              "closed_unmerged_prs": 7,
              "first_time_authors_30d": null,
              "first_time_prs_merged_30d": null,
              "first_time_prs_decided_30d": null
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "94% of issues closed",
                "points": 39.4,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 94
                    }
                  }
                ],
                "max_points": 42
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "8/15 decided PRs merged",
                "points": 16,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 8,
                      "decided": 15
                    }
                  }
                ],
                "max_points": 30
              },
              {
                "key": "newcomer_pr_acceptance",
                "name": "Newcomer PR acceptance",
                "detail": "no first-time contributor's PR decided in 30d",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_newcomer_prs",
                    "params": {
                      "days": 30
                    }
                  }
                ],
                "max_points": 13
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "excellent",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 80,
            "inputs": {
              "followers": 2843,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "ncbi",
              "public_repos": 152,
              "account_age_days": 4892
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "organization-owned",
                "points": 30,
                "status": "met",
                "details": [
                  {
                    "code": "owner_organization",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "2,843 followers of ncbi",
                "points": 24.8,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 2843,
                      "login": "ncbi"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "152 public repos, account ~13 yr old",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 152
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 13
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "exceptional",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "icn3d",
                "icn3dpy"
              ],
              "ecosystems": "npm, pypi",
              "any_deprecated": false,
              "min_days_since_publish": 8
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "2 package(s) on npm, pypi",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 2,
                      "ecosystems": "npm, pypi"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 8 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 8
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "250 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 250
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "at_risk",
        "name": "Engineering Quality",
        "value": 31,
        "weight": 0.19,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "critical",
            "name": "Engineering practices",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: CI-Tests. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_ci_tests"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 1,
            "inputs": {
              "has_ci": false,
              "has_tests": false,
              "has_editorconfig": false,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "good",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 75,
            "inputs": {
              "topics": [
                "icn3d",
                "webgl",
                "protein",
                "3d-structure",
                "3d-viewer",
                "structure-viewer",
                "nucleotide",
                "chemical",
                "protein-viewer",
                "jupyter-notebook",
                "snp",
                "delphi",
                "nodejs",
                "molecular-viewer",
                "ar",
                "vr"
              ],
              "has_wiki": true,
              "homepage": "https://www.ncbi.nlm.nih.gov/Structure/icn3d",
              "has_readme": true,
              "has_docs_dir": false,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "https://www.ncbi.nlm.nih.gov/Structure/icn3d",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": "16 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 16
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "weak",
        "name": "Security",
        "value": 38,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): CI-Tests, Dangerous-Workflow, Packaging, Pinned-Dependencies, Signed-Releases, Token-Permissions. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "ci_tests",
                    "dangerous_workflow",
                    "packaging",
                    "pinned_dependencies",
                    "signed_releases",
                    "token_permissions"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 33,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 12,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 6,
              "scorecard_aggregate": 3.3
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "binaries present in source code",
                "points": 5.2,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection not enabled on development/release branches",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 0/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 6 contributing companies or organizations",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no workflows found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "no update tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.2,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "27 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "no dependencies found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "no SAST tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "No tokens found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "23 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "moderate",
            "name": "Dependency advisories",
            "note": "Matched the npm:icn3d@3.51.2 runtime dependency closure — what installing the published package pulls in — 77 packages. Reachability is not analyzed.",
            "notes": [
              {
                "code": "advisories_scope_published",
                "params": {
                  "package": "npm:icn3d@3.51.2",
                  "assessed": 77
                }
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 60,
            "inputs": {
              "source": "osv",
              "advisories": 24,
              "affected_packages": 2,
              "assessed_packages": 77,
              "unassessed_packages": 0,
              "affected_by_severity": "high 1, low 1",
              "direct_affected_packages": 1
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "1 affected: axios 0.25.0 (high 8.6)",
                "points": 10.9,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_affected",
                    "params": {
                      "count": 1,
                      "packages": "axios 0.25.0 (high 8.6)"
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "1 affected: @tootallnate/once 1.1.2 (low 3.3)",
                "points": 18.4,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_affected",
                    "params": {
                      "count": 1,
                      "packages": "@tootallnate/once 1.1.2 (low 3.3)"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "2 advisory-carrying package(s) unaddressed past 90 days; oldest published 994 days ago",
                "points": 30.8,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_stale",
                    "params": {
                      "days": 90,
                      "count": 2,
                      "oldest": 994
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "exceptional",
            "name": "Malicious dependencies",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "source": "osv",
              "meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
              "packages": [],
              "red_flag": false,
              "assessed_packages": 77,
              "malicious_packages": 0,
              "direct_malicious_packages": 0,
              "withdrawn_malicious_packages": 0,
              "installable_malicious_packages": 0
            },
            "components": [
              {
                "key": "no_dependency_reported_as_a_malicious_package",
                "name": "No dependency reported as a malicious package",
                "detail": "no dependency is reported as a malicious package",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "no_malicious_dependencies",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "exceptional",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "commit_weight_rule": {
                "min_commits": 50,
                "min_commit_share": 0.1
              },
              "review_only_matches": 0,
              "below_threshold_exposures": [],
              "assessed_self_published_locations": 2
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "weak",
        "name": "AI Readiness",
        "value": 36,
        "weight": 0.04,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "weak",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 35,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.66,
              "agent_instruction_files": [],
              "agent_instruction_max_bytes": null
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "no CLAUDE.md / AGENTS.md / editor rules",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_instructions",
                    "params": {}
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "66 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 35.2,
                "status": "partial",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 66,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "at_risk",
            "name": "Verify loop (build / test / typecheck)",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Pinned-Dependencies. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_pinned_dependencies"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 31,
            "inputs": {
              "has_nix": false,
              "has_tests": false,
              "lockfiles": [
                "package-lock.json"
              ],
              "has_dockerfile": false,
              "typed_language": false,
              "bootstrap_files": [
                "icn3dnode/tmalign-icn3dnode/Makefile"
              ],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [],
              "agent_commit_share": 0,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "icn3dnode/tmalign-icn3dnode/Makefile",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "icn3dnode/tmalign-icn3dnode/Makefile"
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "no agent-authored commits among the last 100",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_authored_commits",
                    "params": {
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "no dependencies found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "weak",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 48,
            "inputs": {
              "primary_language": "JavaScript",
              "largest_source_bytes": 1930687,
              "source_files_sampled": 201,
              "oversized_source_files": 25
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "JavaScript without a type-check config",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_typecheck_config_language",
                    "params": {
                      "language": "JavaScript"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "25/201 source files over 60KB",
                "points": 48.2,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 201,
                      "oversized": 25
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "weak",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "example_dirs": [
                "example"
              ],
              "has_mcp_signal": false,
              "api_schema_files": []
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": "example",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "example"
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? Carries a deliberately small weight: agent tooling is a real maintenance signal, but its absence must never gate the top of the scale (calibration saturates at raw 91, so 100/100 remains reachable with AI Readiness at zero)."
      }
    ],
    "classification": {
      "labels": [
        "library"
      ],
      "scores": {
        "library": 12,
        "notebook": 2
      },
      "primary": "library",
      "evidence": [
        {
          "tier": "distribution",
          "label": "library",
          "source": "registry:npm",
          "weight": 6
        },
        {
          "tier": "distribution",
          "label": "library",
          "source": "registry:pypi",
          "weight": 6
        },
        {
          "tier": "tags",
          "label": "notebook",
          "source": "tag:jupyter-notebook",
          "weight": 2
        }
      ],
      "artifacts": [],
      "confidence": "medium",
      "host_extension": false,
      "runs_as_process": false,
      "consumed_by_code": true
    },
    "metrics_version": "2.3.1"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-30T20:35:16.511245Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/n/ncbi/icn3d.svg",
  "full_name": "ncbi/icn3d",
  "license_state": "custom",
  "license_spdx": null
}

Оцінки — це сигнали, а не гарантії. Вони відображають публічно видимі практики на GitHub — це не аудит коду й не гарантія безпеки.

Відсутні дані виключаються, а ваги перенормовуються — нуль за відсутність ніколи не ставиться. Методологія версіонована й відкрита: метрики v2.3.1, схема v0.27.0 — повна методологія · вікі метрик.

Як окремий результат виглядає на тлі всього реєстру: сукупна статистикаnpm, PyPI.