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

@nestjs-yalc/crud-gen

v1.4.0

Published

Factory-driven CRUD generator for NestJS with TypeORM and GraphQL/REST helpers (resolvers/controllers, services, dataloaders, repositories, DTO/field mapping).

Downloads

226

Readme

@nestjs-yalc/crud-gen

Factory-driven CRUD generator for NestJS with TypeORM and GraphQL/REST helpers (resolvers/controllers, services, dataloaders, repositories, DTO/field mapping).

Install & build (from repo root)

  • npm ci
  • Build: npm run build
  • Tests/coverage: npm run test:cov (uses Jest projects; set JEST_WORKERS to limit parallelism)

Quick start

When the app owns the whole resource surface, use the resource combinator:

export const userResource = CrudGenResourceFactory<User>({
  entityModel: User,
  graphql: true,
  rest: true,
});

By default, the resource factory uses the default TypeORM connection, infers the dataloader key and REST id field from a single TypeORM primary column, and generates the default service, dataloader, GraphQL resolver, and REST controller. Omit graphql or rest when the app should not expose that surface.

Customize only the surfaces that need application-specific contracts:

export const userResource = CrudGenResourceFactory<User>({
  entityModel: User,
  graphql: {
    resolver: {
      dto: UserType,
      input: {
        create: UserCreateInput,
        update: UserUpdateInput,
        conditions: UserCondition,
      },
    },
  },
  rest: {
    dto: UserType,
    path: 'users',
    idField: 'id',
  },
});

Spread userResource.providers into module providers, userResource.controllers into module controllers, and pass userResource.repository to TypeOrmModule.forFeature. Set backend.dbConnection when the resource uses a named TypeORM connection. Set backend.databaseKey when the model has no single primary column or uses a custom dataloader key.

For existing GraphQL-only modules, the compatibility helper still creates the backend and resolver providers together:

export const userProviders = CrudGenDependencyFactory<User>({
  entityModel: User,
  resolver: {
    dto: UserType,
    input: {
      create: UserCreateInput,
      update: UserUpdateInput,
      conditions: UserCondition,
    },
  },
  service: { dbConnection: 'default' },
  dataloader: { databaseKey: 'id' },
});

Spread userProviders.providers into your module providers and pass userProviders.repository to TypeOrmModule.forFeature.

Key pieces

  • Decorators: ModelObject, ModelField (mapping, relations, filters, derived fields)
  • Resource composition: CrudGenResourceFactory combines backend, GraphQL, and REST generation with per-surface enable/disable options.
  • Layer factories: CrudGenBackendFactory for service/repository/dataloader providers, CrudGenGraphqlFactory for resolver providers against existing backend tokens, and CrudGenDependencyFactory for the legacy backend + GraphQL pack.
  • Lower-level factories: GenericServiceFactory (service), DataLoaderFactory (dataloader), CGExtendedRepositoryFactory (repository)
  • GraphQL helpers: argument/condition builders, extra args/inputs, generated resolvers
  • REST helpers: CGQueryArgs, pagination/filter/sorting DTOs, Swagger response helper, crudRestControllerFactory to generate full CRUD controllers (list/getById/create/update/delete) wired to your GenericService, with optional readonly, structured JSON sorting/filters, flat equality query filters, custom serviceToken, and per-mutation toggles
  • Errors: entity CRUD errors, missing arguments/conditions

Note: some helpers are imported from subpaths (e.g., @nestjs-yalc/crud-gen/object.decorator, .../crud-gen.helpers) while the top-level src/index.ts export surface is being finalized.

Documentation

  • Documentation index: https://github.com/NestDevLab/nestjs-yalc/blob/dev/docs/documentation.md
  • GraphQL CRUD guide: https://github.com/NestDevLab/nestjs-yalc/blob/dev/docs/api-creation.md
  • Modeling with ModelObject and ModelField: https://github.com/NestDevLab/nestjs-yalc/blob/dev/docs/crud-gen-modeling.md
  • Dependency factory options: https://github.com/NestDevLab/nestjs-yalc/blob/dev/docs/crud-gen-factory.md
  • REST usage: https://github.com/NestDevLab/nestjs-yalc/blob/dev/docs/crud-gen-rest.md