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

@upv/ushi-shared

v2.4.0

Published

Shared DTOs, types, and utilities for the USHI platform (LMS, Trials, Social, Wallet).

Readme

📦 USHI Core Shared Package

Auto-generated documentation of all modules in src/. Includes file-level summaries, exports, and structure.


🆕 Recent Highlights

  • ✅ Standardized ApiErrorCode enum with extended HTTP error coverage
  • ✅ Introduced structured ApiErrorContext for detailed debugging
  • ✅ Consistent response builders: ok(), created(), deleted(), internalError(), etc.
  • 204 No Content response included
  • ✅ Strongly typed and extensible error/success helpers

🗂️ File Structure

📁 api
  📁 errors
    📄 errors.ts
    📄 index.ts
  📄 headers.ts
  📄 index.ts
  📁 responses
    📄 ErrorResponse.ts
    📄 LoginResponse.ts
    📄 SuccessResponse.ts
    📄 apiResponse.ts
    📄 index.ts
  📄 routes.ts
📁 core
  📁 dtos
    📁 base
      📄 BaseDto.ts
      📄 index.ts
    📁 demographics
      📄 DemographicsProfileDto.ts
      📄 index.ts
    📁 identity
      📄 IdentityProfileDto.ts
      📄 index.ts
    📄 index.ts
    📁 lms
      📄 LMSPersonProfileDto.ts
      📄 index.ts
    📁 region
      📄 RegionDto.ts
      📄 index.ts
    📁 role
      📄 RoleAssignmentDto.ts
      📄 RoleDto.ts
      📄 RoleRegistry.ts
      📄 index.ts
    📁 social
      📄 SocialProfileDto.ts
      📄 index.ts
    📁 trial
      📄 TrialParticipantProfileDto.ts
      📄 index.ts
    📁 user
      📄 PersonDto.ts
      📄 PersonProfileDto.ts
      📄 index.ts
    📁 wallet
      📄 WalletProfileDto.ts
      📄 index.ts
  📁 enums
    📄 PersonEnums.ts
    📄 index.ts
  📄 index.ts
📁 env
  📄 browser.ts
  📄 common.ts
  📄 node.ts
📄 index.ts
📁 types
  📄 base.ts
  📄 demographicsProfile.ts
  📄 identityProfile.ts
  📄 index.ts
  📄 lambda.ts
  📄 lmsPersonProfile.ts
  📄 role.ts
  📄 roleAssignment.ts
  📄 socialProfile.ts
  📄 trialParticipantProfile.ts
  📄 user.ts
  📄 userProfile.ts
  📄 walletProfile.ts
📁 utils
  📄 Token.ts
  📄 index.ts
  📄 logger.ts
  📄 roles.ts
  📁 validation
    📄 CheckRules.ts
    📄 index.ts
    📁 schemas
      📄 index.ts
      📄 loginSchema.ts
    📄 zodUtils.ts

.

| File | Description | Exports | |------|-------------|---------| | index.ts | — | — |

api

| File | Description | Exports | |------|-------------|---------| | headers.ts | — | defaultHeaders, enum | | index.ts | — | — | | routes.ts | Flatten nested route object to get a union of all route paths as strings. | ApiRoutes |

api/errors

| File | Description | Exports | |------|-------------|---------| | errors.ts | — | — | | index.ts | — | — |

api/responses

| File | Description | Exports | |------|-------------|---------| | ErrorResponse.ts | // * Returns an error 4xx/5xx API Gateway response. // * @param message - Error message to return // * @param statusCode - Optional error code (defaults to 500) // | error, error | | LoginResponse.ts | — | — | | SuccessResponse.ts | Returns a successful 2xx API Gateway response. @template T - Payload type @param body - The response payload (typed) @param statusCode - HTTP status code (defaults to 200) @returns APIGatewayProxyResultV2 with JSON-encoded payload | success | | apiResponse.ts | A serializable object to be returned in an API Gateway response. | buildResponse | | index.ts | — | — |

core

| File | Description | Exports | |------|-------------|---------| | index.ts | — | — |

core/dtos

| File | Description | Exports | |------|-------------|---------| | index.ts | — | — |

core/dtos/base

| File | Description | Exports | |------|-------------|---------| | BaseDto.ts | BaseDto Abstract base class for all Data Transfer Objects (DTOs) in the USHI platform. Provides common properties and a consistent serialization structure. @template T - Raw input type extending IBaseDtoInput | — | | index.ts | — | — |

core/dtos/demographics

| File | Description | Exports | |------|-------------|---------| | DemographicsProfileDto.ts | DemographicsProfileDto DTO for user identity and demographics used in trials, personalization, and segmentation. | — | | index.ts | — | — |

core/dtos/identity

| File | Description | Exports | |------|-------------|---------| | IdentityProfileDto.ts | IdentityProfileDto DTO for structured legal identity associated with a user. Useful for secure trials, identity verification, or eConsent. | — | | index.ts | — | — |

core/dtos/lms

| File | Description | Exports | |------|-------------|---------| | LMSPersonProfileDto.ts | LMSPersonProfileDto DTO for user learning profile in the USHI LMS system. | — | | index.ts | — | — |

core/dtos/region

| File | Description | Exports | |------|-------------|---------| | RegionDto.ts | IRegionDto - Raw input structure for Region | — | | index.ts | — | — |

core/dtos/role

| File | Description | Exports | |------|-------------|---------| | RoleAssignmentDto.ts | RoleAssignmentDto DTO class for managing user roles within scoped domains and contexts. Supports auditing, expiration, and status tracking. | — | | RoleDto.ts | RoleDto Data Transfer Object for Role entities in the USHI platform. Encapsulates role identity (e.g., 'admin', 'student') and domain scope (e.g., LMS, Trial), providing consistent serialization and access to role data. | — | | RoleRegistry.ts | RoleRegistry Maps each RoleDomain to the valid PersonRole[] values allowed in that domain. This is used for validation, UI dropdowns, and system-wide role management. | RoleRegistry | | index.ts | — | — |

core/dtos/social

| File | Description | Exports | |------|-------------|---------| | SocialProfileDto.ts | SocialProfileDto DTO for representing a user's social presence in the USHI community platform. | — | | index.ts | — | — |

core/dtos/trial

| File | Description | Exports | |------|-------------|---------| | TrialParticipantProfileDto.ts | TrialParticipantProfileDto DTO for representing a user's enrollment and status within a clinical trial. | — | | index.ts | — | — |

core/dtos/user

| File | Description | Exports | |------|-------------|---------| | PersonDto.ts | PersonDto DTO for the global Person entity in the USHI platform. This is the root user object shared across all systems (LMS, Trials, Social). Includes identity linkage via Cognito ID and optional phone number for verification. | — | | PersonProfileDto.ts | PersonProfileDto Aggregated DTO class that builds a full PersonProfile from raw nested inputs. | — | | index.ts | — | — |

core/dtos/wallet

| File | Description | Exports | |------|-------------|---------| | WalletProfileDto.ts | WalletProfileDto DTO for storing blockchain-linked user identity. | — | | index.ts | — | — |

core/enums

| File | Description | Exports | |------|-------------|---------| | PersonEnums.ts | RoleDomain Logical domain scopes used in role-based access control across the USHI platform. Enables contextual permission separation (e.g., global vs LMS vs trial-specific). | — | | index.ts | — | — |

env

| File | Description | Exports | |------|-------------|---------| | browser.ts | — | — | | common.ts | — | — | | node.ts | — | — |

types

| File | Description | Exports | |------|-------------|---------| | base.ts | Raw input type for DTO constructors | — | | demographicsProfile.ts | IDemographicsProfileDto - Raw input for user identity & demographics | — | | identityProfile.ts | IIdentityProfileDto - Raw input for identity profile | — | | index.ts | — | — | | lambda.ts | Extracted request context fields for logs or analytics | — | | lmsPersonProfile.ts | ILMSPersonProfileDto - Raw input for LMS user profile | — | | role.ts | IRoleDto Represents the raw input structure for a Role entity, typically used when creating or updating roles in the system. | — | | roleAssignment.ts | Status of a role assignment | — | | socialProfile.ts | ISocialProfileDto - Raw input for social profile creation/update | — | | trialParticipantProfile.ts | ITrialParticipantProfileDto - Raw input for trial profile | — | | user.ts | IPersonDto - Raw input shape for global Person entity | — | | userProfile.ts | PersonProfile - Unified cross-domain representation of a user in the USHI platform. Used for aggregation, display, and platform-wide access decisions. | — | | walletProfile.ts | IWalletProfileDto - Raw input for wallet info | — |

utils

| File | Description | Exports | |------|-------------|---------| | Token.ts | — | — | | index.ts | — | — | | logger.ts | — | logger | | roles.ts | getActiveAssignmentsForPerson Filters role assignments to include only those that: - belong to the specified user - are currently active - have not expired @param userId - The user ID to filter by @param assignments - All role assignments in the system @param now - Optional override for current time (defaults to Date.now()) @returns Array of active, non-expired role assignments | isAdmin, isTrialRole, getActiveAssignmentsForPerson, isRoleStillValid, validateRoleAssignments |

utils/validation

| File | Description | Exports | |------|-------------|---------| | CheckRules.ts | @deprecated Use Zod schema + validateBody() instead. | — | | index.ts | — | — | | zodUtils.ts | — | validateBody |

utils/validation/schemas

| File | Description | Exports | |------|-------------|---------| | index.ts | — | — | | loginSchema.ts | — | loginSchema |