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

@tsclass/tsclass

v9.5.1

Published

Provides TypeScript definitions for various business, financial, networking, content, and other common classes.

Readme

@tsclass/tsclass

A comprehensive, domain-driven TypeScript type library that gives your projects consistent, battle-tested interfaces for business logic, finance, networking, content management, and more — all in one place. 🚀

Issue Reporting and Security

For reporting bugs, issues, or security vulnerabilities, please visit community.foss.global/. This is the central community hub for all issue reporting. Developers who sign and comply with our contribution agreement and go through identification can also get a code.foss.global/ account to submit Pull Requests directly.

Install

pnpm install @tsclass/tsclass

or

npm install @tsclass/tsclass

🧩 Module Overview

@tsclass/tsclass is organized into 12 domain modules, each focusing on a specific area. Import only what you need:

import {
  business,
  finance,
  network,
  content,
  container,
  code,
  database,
  descriptors,
  events,
  general,
  saas,
  storage,
  website,
} from '@tsclass/tsclass';

Additionally, the library re-exports the entire type-fest collection plus a few custom utility types:

import type { typeFest, typeFestOwn } from '@tsclass/tsclass';

📚 Modules in Detail

🏢 business — Contacts, Contracts, Documents & More

The business module models real-world entities like people, companies, addresses, contracts, letters, and projects.

Contacts

| Type | Description | |------|-------------| | TContact | Discriminated union of TPerson \| TCompany | | TPerson | A person with name, salutation, sex, optional legal proxy | | TCompany | A company with registration details and lifecycle status (planned → founding → active → liquidation → closed) | | IAddress | Physical address with optional GPS coordinates | | TSocialLinks | Social media link (facebook, twitter, linkedin, or custom) | | TRegistrationDetails | VAT ID, registration ID, and registration name |

import { business } from '@tsclass/tsclass';

const company: business.TCompany = {
  type: 'company',
  name: 'Acme Corp',
  address: {
    streetName: 'Innovation Blvd',
    houseNumber: '42',
    postalCode: '28199',
    city: 'Bremen',
    country: 'Germany',
    countryCode: 'DE',
  },
  description: 'Builds amazing things',
  registrationDetails: {
    vatId: 'DE123456789',
    registrationId: 'HRB 12345',
    registrationName: 'Amtsgericht Bremen',
  },
  status: 'active',
  foundedDate: { day: 1, month: 6, year: 2020 },
};

Documents & Letters

| Type | Description | |------|-------------| | TDocumentEnvelope<TYPE, FIELDS> | Base generic for all documents — includes id, versionInfo, language, pdf, objectActions | | TLetterEnvelope<TYPE, FIELDS> | Extends document envelope with from, to, subject, and optional cover sheet | | TLetterSimple | A simple letter | | TLetter | Union of TLetterSimple \| finance.TInvoice | | IPdf | PDF with name, id, metadata, and buffer (Uint8Array) |

Contracts

| Type | Description | |------|-------------| | TContract | Union of all contract types | | TEmploymentContract | Employment terms including compensation, position, probation | | TNDAContract | Non-disclosure agreement with confidentiality terms | | TServiceContract | Service agreement with scope, deliverables, payment terms | | TLeaseContract | Property lease with address, rent, and deposit | | TContractParty | A party to a contract, with signing order and signature status | | TContractParagraph | Individual contract paragraph/clause |

Jobs & Projects

| Type | Description | |------|-------------| | IJob | Full job posting with salary, requirements, languages, and scraping history | | ISalaryInfo | Salary range with currency and period | | IProject | Software/business project with domain, social links, and tags |


💰 finance — Invoices, Payments, Currencies & Stock Prices

Everything money-related: invoices, credit notes, bank accounts, expenses, and market data.

Accounting Documents

| Type | Description | |------|-------------| | TAccountingDoc | Union of TInvoice \| TCreditNote \| TDebitNote \| TSelfBilledInvoice | | TInvoice | Standard invoice | | TCreditNote | Credit note | | TDebitNote | Debit note | | TSelfBilledInvoice | Self-billed invoice | | TAccountingDocItem | Line item with position, quantity, net price, VAT | | TAccountingDocStatus | 'draft' \| 'issued' \| 'paid' \| 'canceled' \| 'refunded' |

import { finance } from '@tsclass/tsclass';

const item: finance.TAccountingDocItem = {
  position: 1,
  name: 'Consulting Services',
  unitType: 'hour',
  unitQuantity: 40,
  unitNetPrice: 150,
  vatPercentage: 19,
};

Payments & Banking

| Type | Description | |------|-------------| | ISepaConnection | SEPA bank details (IBAN, BIC) | | IPayPalConnection | PayPal email connection | | IPaymentOptionInfo | Available payment methods | | ICheckingAccount | Bank account with currency and transactions | | ITransaction | A financial transaction |

Other Finance Types

| Type | Description | |------|-------------| | TCurrency | Union of ~170 ISO 4217 currency codes (including crypto: BTC, ETH, ADA, etc.) | | IStockPrice | Real-time stock quote with market state, exchange info, and provider | | IExpenseItem | Expense line item | | IVoucher | Expense voucher/receipt |

import { finance } from '@tsclass/tsclass';

const stock: finance.IStockPrice = {
  ticker: 'AAPL',
  price: 195.83,
  currency: 'USD',
  change: 2.47,
  changePercent: 1.28,
  previousClose: 193.36,
  timestamp: new Date(),
  provider: 'Yahoo Finance',
  marketState: 'REGULAR',
  exchange: 'NASDAQ',
  exchangeName: 'NASDAQ Global Select',
};

🌐 network — DNS, Certificates, SSH, JWT & HTTP

Types for infrastructure, networking, and web request/response handling.

| Type | Description | |------|-------------| | ICert | SSL/TLS certificate with keys and CSR | | IDnsRecord | DNS record with type, value, and DNSSEC status | | TDnsRecordType | All common DNS record types (A, AAAA, CNAME, MX, TXT, SRV, CAA, HTTPS, etc.) | | IDnsChallenge | DNS challenge for ACME verification | | IConvenientDnsProvider | DNS provider interface with ACME challenge methods | | IDomainDelegation | Parsed domain components (subdomain, domain, public suffix) | | ICnameDescriptor | CNAME proxy configuration with optional SSL | | IReverseProxyConfig | Reverse proxy config with authentication | | ISshKey | SSH key pair | | IJwtKeypair | JWT signing key pair (PEM format) | | INetworkNode | Network node with IPv4/IPv6 and security level | | IDevice | Network device with resolution and manufacturer | | ISimpleRequest / ISimpleResponse | Simplified HTTP request/response | | IRenderFunction | (req: ISimpleRequest) => Promise<ISimpleResponse> |

import { network } from '@tsclass/tsclass';

const record: network.IDnsRecord = {
  name: 'example.com',
  type: 'A',
  value: '93.184.216.34',
  dnsSecEnabled: true,
};

🔐 authentication — Claims & JWT Processing

| Type | Description | |------|-------------| | IClaim | JWT payload with userName, userId, validUntil, roles | | IProcessedClaim | Verified JWT with original token, decoded claim, and signed flag |


📦 container — Docker & OCI Containers

| Type | Description | |------|-------------| | IContainer | Container image reference (registry, tag, version, labels) | | IVolumeMount | Host-to-container volume mapping |


📝 content — Articles, Authors & Documentation

| Type | Description | |------|-------------| | IArticle<T> | Content article with title, body, tags, optional featured image, and generic reference object | | IAuthor | Author with name, birthday, and article list | | IDocumentationSet | Collection of articles forming a documentation set |


🗄️ database — MongoDB, Object Lifecycle & Wrappers

| Type | Description | |------|-------------| | IMongoDescriptor | MongoDB connection string and credentials | | IObjectAction | Audit trail entry: timestamp, userId, action name, message | | IObjectStatus | Object lifecycle status (active \| inactive \| hidden \| markedForDeletion) with scheduled deletion | | IWrappedData<T> | Generic data wrapper |


🔧 descriptors — Service Connection Descriptors

A convenience aggregation module that collects connection descriptors from across the library, plus adds its own.

| Type | Description | |------|-------------| | IMongoDescriptor | Re-exported from database | | IStorageDescriptor | Re-exported from storage | | IS3Descriptor | Deprecated alias for IStorageDescriptor | | ICloudflareDescriptor | Cloudflare API auth token | | ILetterExpressDescriptor | LetterExpress API credentials |


📡 events — Domain Event Types

| Type | Description | |------|-------------| | IEvent_Contract | Contract/subscription event | | IEvent_Money | Monetary transfer event (SEPA, credit card, PayPal, Cardano) | | IEvent_Release | Software release event (npm, Docker, App Store, Google Play) | | IEvent_Request | HTTP request event with duration | | IEvent_Session | User session event (new or reactivated) | | IEvent_User | User event placeholder |


📅 general — Foundational Types

| Type | Description | |------|-------------| | IDate | Simple calendar date (day, month, year) — used across many modules | | ITime | Time representation (placeholder for extension) |


☁️ saas — Products & Subscription Plans

| Type | Description | |------|-------------| | IProduct | SaaS product with features, landing page, and publisher | | IProductFeature | Product feature block with heading and link | | ISubscriptionPlan | Subscription plan with pricing terms, units, and contained products |


💾 storage — S3-Compatible Storage

| Type | Description | |------|-------------| | IStorageDescriptor | S3-compatible storage connection (endpoint, credentials, bucket, region) | | IS3Descriptor | ⚠️ Deprecated — use IStorageDescriptor |


🌍 website — Links, Menus & Navigation

| Type | Description | |------|-------------| | ILink | Hyperlink with URL, text, icon, and target | | ILinkBlock | Titled group of links | | IMenuItem<T, U> | Menu item with async action callback |


🏗️ Architecture: The Document Hierarchy

One of the most powerful aspects of @tsclass/tsclass is its layered document type hierarchy. Documents build on each other using generic envelope types:

TDocumentEnvelope           ← Base: id, version, language, PDF, object actions
  └── TLetterEnvelope       ← Adds: from, to, subject, cover sheet
        └── TAccountingDocEnvelope  ← Adds: items, currency, payment, due date
              ├── TInvoice
              ├── TCreditNote
              ├── TDebitNote
              └── TSelfBilledInvoice
  └── TContractEnvelope     ← Adds: parties, paragraphs, dates
        ├── TEmploymentContract
        ├── TNDAContract
        ├── TServiceContract
        └── TLeaseContract

This means an TInvoice automatically has all the fields of a letter (sender, recipient, subject) and a document (version info, PDF attachment, audit trail). No duplication, full consistency. ✨


🔧 Utility Types

The library also re-exports type-fest in its entirety plus two custom utility types:

| Type | Description | |------|-------------| | typeFestOwn.SecondArgument<T> | Extracts the second argument type from a function | | typeFestOwn.ValueType<T> | Extracts the value type from an object type |

import type { typeFest, typeFestOwn } from '@tsclass/tsclass';

type MyPartial = typeFest.PartialDeep<SomeComplexType>;
type Val = typeFestOwn.ValueType<{ a: number; b: string }>; // number | string

License and Legal Information

This repository contains open-source code licensed under the MIT License. A copy of the license can be found in the LICENSE file.

Please note: The MIT License does not grant permission to use the trade names, trademarks, service marks, or product names of the project, except as required for reasonable and customary use in describing the origin of the work and reproducing the content of the NOTICE file.

Trademarks

This project is owned and maintained by Task Venture Capital GmbH. The names and logos associated with Task Venture Capital GmbH and any related products or services are trademarks of Task Venture Capital GmbH or third parties, and are not included within the scope of the MIT license granted herein.

Use of these trademarks must comply with Task Venture Capital GmbH's Trademark Guidelines or the guidelines of the respective third-party owners, and any usage must be approved in writing. Third-party trademarks used herein are the property of their respective owners and used only in a descriptive manner, e.g. for an implementation of an API or similar.

Company Information

Task Venture Capital GmbH Registered at District Court Bremen HRB 35230 HB, Germany

For any legal inquiries or further information, please contact us via email at [email protected].

By using this repository, you acknowledge that you have read this section, agree to comply with its terms, and understand that the licensing of the code does not imply endorsement by Task Venture Capital GmbH of any derivative works.