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 🙏

© 2024 – Pkg Stats / Ryan Hefner

dts-dom

v3.7.0

Published

DOM for TypeScript Declaration Files

Downloads

51,642

Readme

npm version

dts-dom is a library for programatically generating TypeScript declaration files. It is based mostly on the same CodeDOM provided for C# and other .NET languages.

dts-dom automatically handles indentation, formatting, and proper placement of declare and export keywords.

As with other CodeDOM libraries, this is overkill for small projects, but is useful in more complex code generation scenarios.

PRs gladly accepted as this is mostly implemented on an as-needed basis for another project.

Usage

npm install --save dts-dom

import * as dom from 'dts-dom';

const intf = dom.create.interface('MyInterface');
intf.jsDocComment = 'This is my nice interface';
intf.members.push(dom.create.method(
    'getThing',
    [dom.create.parameter('x', dom.type.number)],
    dom.type.void,
    dom.DeclarationFlags.Optional));

const ns = dom.create.namespace('SomeNamespace');
ns.members.push(intf);

console.log(dom.emit(ns));

This writes out the block:

declare namespace SomeNamespace {
    /**
     * This is my nice interface
     */
    interface MyInterface {
        getThing?(x: number): void;
    }
}

Version History

3.7.0

3.6.0

3.5.0

3.4.0

3.3.0

3.2.0

3.1.1

  • Bugfix: Enum members with falsy values like 0 are now correctly printed

3.1.0

  • New Functionality: Added the ability to emit intersection types

3.0.0

  • Breaking change: generic type parameters on methods were incorrectly not being emitted; see #42

2.1.0

  • New Functionality: Added the ability to emit export default assignments

    const module = create.module('my-module');
    const constDeclaration = create.const('test', 'string');
    const exportDefault = create.exportDefault('test');
    module.members.push(constDeclaration, exportDefault);
    const s = emit(module);

    Produces:

    declare module 'my-module' {
        const test: string;
        export default test;
    }
  • Non-breaking Change: Superfluous declare keywords are no longer emitted inside module declarations

2.0.0

  • New Functionality: Added the ability to emit triple-slash directives #39

    const tripleSlashDirectives = [create.tripleSlashReferenceTypesDirective("react")];
    const returnType = create.namedTypeReference('JSX.Element');
    const component = create.function('Component', [], returnType, DeclarationFlags.Export);
    const s = emit(component, { tripleSlashDirectives });

    Produces:

    /// <reference types="react" />
    export function Component(): JSX.Element;
  • Breaking Change: Changed the second parameter of emit from ContextFlags to EmitOptions #39

    // 1.0
    const s = emit(tree, ContextFlags.Module);
    // 2.0
    const s = emit(tree, { rootFlags: ContextFlags.Module });

1.0.0

The same as 0.1.25

Semver Policy

The major version will be bumped if:

  • The semantics of emitted code changes, unless the prior emit was clearly a bug (e.g. members being simply skipped or printed with incorrect semantics)
  • The API surface changes in a way that could break the runtime behavior of extant working code

The major version will not be bumped if:

  • New API surface is added
  • The formatting of emitted code changes

Contributors

The following people have contributed features and/or bug fixes. Thank you!