npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@longsightgroup/qti3-transcoder

v0.10.2

Published

Framework-neutral, profile-driven QTI 3 to QTI 1.2 and QTI 2.x transcoding.

Readme

@longsightgroup/qti3-transcoder

Profile-driven QTI 3 to QTI 1.2, QTI 2.1, and QTI 2.2 transcoding.

Every operation requires an explicit, versioned profile. The package does not detect an LMS or silently select a compatibility mode.

import { transcodeQti3Item } from "@longsightgroup/qti3-transcoder";

const result = transcodeQti3Item(
  { kind: "xml", xml: qti3Xml, sourcePath: "items/question.xml" },
  { profile: "qti21-standard@1" },
);

Node-only evidence tooling is available from the explicit @longsightgroup/qti3-transcoder/evidence entry point. The main entry point has no Node runtime dependency.

The standards profiles are qti12-standard@1, qti21-standard@1, and qti22-standard@1. canvas-classic-quizzes@1 is a separate, source-backed Canvas Classic Quizzes dialect; it is never selected implicitly. See Canvas Classic profile for its package conventions, interaction policies, and release evidence contract. canvas-new-quizzes@1 is a distinct source-derived Canvas New Quizzes direct-import profile whose live product-import status is explicitly unverified. See Canvas New Quizzes profile. moodle-xml@1 targets Moodle's first-party question-bank XML importer rather than its legacy Blackboard compatibility path. See Moodle XML profile. blackboard-question-banks@1 targets Blackboard Learn's QTI 2.1 question-bank importer. See the Blackboard question-bank profile. brightspace-course-import@1 targets the QTI 2.1 path under Brightspace course import. See the Brightspace course-import profile. QTI 1.2 and vendor conversions use declared, diagnosed fallbacks when the selected destination cannot represent an interaction natively.

Typed authoring input and parsed XML both normalize through the core QtiAssessmentItem semantic model. Interaction mappers are executable and exhaustive over the core registry. QTI 2.1 and 2.2 share semantic mappers but have separate wire serializers; QTI 1.2 owns explicit native and fallback response/scoring mappings. Composite items produce one mapping report per interaction.

Package transcoding preserves safe source paths, assessment-test section structure, item dependencies, and per-resource asset ownership. Generated reports use deterministic assets/generated/<sha256>.json paths.

pnpm check:transcoder-support executes every profile/interaction case and compares the result with the committed evidence hashes. pnpm check:transcoder-xsd validates every QTI profile cell against the vendored, SHA-256-locked schema closure. Moodle XML is a proprietary vendor format and is validated against its runtime semantic contract. Recorded product imports may supplement this evidence, but they are not required by pnpm release:check.