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

@jeff-aporta/is-swagger

v0.1.0

Published

Visor OpenAPI @isa-components/swagger — CDN + utilidades server (spec, Postman, embed HTML).

Readme

Swagger Viewer (@jeff-aporta/is-swagger)

Visor OpenAPI 3 como app React + MUI + Iconify + CodeMirror, alineado con el stack de las apps front (ISAFront, AppShell, tema, toasts).

Publicado como CDN (Jeff-Aporta/swagger-viewer) y npm @jeff-aporta/is-swagger (visor + utilidades server: spec, Postman, embed HTML).

Solo necesitas pasar la especificación OpenAPI (objeto o URL) y opciones de marca/auth/export; el componente construye tabs por tag, ejemplos JSON, panel Doc (x-iss-doc-md), Try it out con JWT y exportaciones.

Uso npm (Azure Functions / workers)

npm install @jeff-aporta/is-swagger
# monorepo local: "file:../../Personal/components/swagger"
import { issRspAuth, jsonRequestBody, bearerComponents } from "@jeff-aporta/is-swagger/server/spec";
import { exampleOk } from "@jeff-aporta/is-swagger/server/envelope";
import { openApiToPostmanCollection } from "@jeff-aporta/is-swagger/server/postman";
import { createRequire } from "node:module";

const requireIsSwagger = createRequire(__filename);
const { buildSwaggerUiHtml } = requireIsSwagger("@jeff-aporta/is-swagger/embed/build-html");

Exports principales: ./server/spec, ./server/envelope, ./server/docs, ./server/postman, ./server/viewer-pins, ./embed/build-html, ./lib/is-document.

Uso CDN (mínimo)

<div id="root"></div>
<script type="importmap">{ /* react + mui — ver demo/index.html */ }</script>
<script>
  window.__SWAGGER_CONFIG__ = {
    specUrl: "/api/swagger.json",
    brand: { title: "Mi API", icon: "mdi:api" },
    auth: { enabled: true, loginUrl: "https://system-login.jeffaporta.workers.dev" },
    exports: {
      openApiUrl: "/api/swagger.json",
      postmanUrl: "/api/swagger/postman.json",
    },
  };
</script>
<script type="module">
  import { bootSwaggerApp } from "https://cdn.jsdelivr.net/gh/Jeff-Aporta/Personal@main/components/swagger/cdn/swagger-viewer.min.js";
  await bootSwaggerApp();
</script>

API programática

import { mountSwaggerViewer, bootSwaggerApp } from ".../swagger-viewer.min.js";

// Arranque completo (stack + ISAFront + CodeMirror)
await bootSwaggerApp({ specUrl: "/api/swagger.json", brand: { title: "API", icon: "mdi:api" } });

// Solo montar (stack ya cargado)
await mountSwaggerViewer({ spec: openApiObject, shell: true }, "#root");

// Global IIFE tras cargar el bundle
globalThis.ISAComponents.Swagger.bootSwaggerApp(config);

Config (__SWAGGER_CONFIG__ / primer argumento)

| Campo | Descripción | |-------|-------------| | spec | Objeto OpenAPI 3 | | specUrl | URL del JSON (alternativa a spec) | | brand.title, brand.icon | Marca en AppShell (meta application-name / app-icon) | | auth.loginUrl | Base system-login para JWT de prueba | | auth.enabled | false desactiva login | | exports.openApiUrl, exports.postmanUrl | Enlaces de descarga | | frontLinks | [{ label, url }] paneles GH Pages | | shell | false omite AppShell (solo cuerpo) | | ns | Namespace ISAFront (default ISA) |

Extensiones ISS

  • x-iss-doc-md en operación → pestaña Doc (Markdown vía marked)
  • x-iss-lookup en parámetro → autocomplete contra API

Build

cd components/swagger
npm run build
cd ../../apps/src/scripts
node front/gen-component-demo.mjs --component swagger

Demo local

Servir components/swagger/demo/ (p. ej. Live Server puerto 5500) o abrir tras gen-component-demo.

Parámetro ?spec=https://…/openapi.json carga otra especificación.