npm package: @picadeck/nestjs
Description: NestJS module wrapper for Picadeck schema visualizer
Author: Picadeck
Latest version: 1.0.0

# @picadeck/nestjs

NestJS module for Picadeck Schema Visualizer. Serves an interactive schema visualization route directly from your NestJS application.

## Installation

```bash
npm install @picadeck/nestjs @picadeck/core
```

Plus the parser package for your ORM:

```bash
npm install @picadeck/mongoose-parser   # for Mongoose
npm install @picadeck/typeorm-parser     # for TypeORM
npm install @picadeck/sequelize-parser   # for Sequelize
npm install @picadeck/prisma-parser      # for Prisma
```

## Usage with `register()`

Use `register()` when you want explicit control over which parser runs.

```typescript
import { Module } from "@nestjs/common";
import { SchemaVisualizerModule } from "@picadeck/nestjs";
import { parseMongooseConnection } from "@picadeck/mongoose-parser";
import { getConnectionToken } from "@nestjs/mongoose";

@Module({
  imports: [
    SchemaVisualizerModule.register({
      route: "/schema",
      parser: async (moduleRef) => {
        const connection = moduleRef.get(getConnectionToken());
        return parseMongooseConnection(connection);
      },
      theme: "dark",
      title: "My API Schema",
    }),
  ],
})
export class AppModule {}
```

## Usage with `autoDetect()`

Use `autoDetect()` to let Picadeck probe the NestJS DI container and pick the right parser automatically. Detection order: Mongoose -> TypeORM -> Sequelize -> Prisma file.

```typescript
import { Module } from "@nestjs/common";
import { SchemaVisualizerModule } from "@picadeck/nestjs";

@Module({
  imports: [
    SchemaVisualizerModule.autoDetect({
      route: "/schema",
      theme: "light",
    }),
  ],
})
export class AppModule {}
```

## API

### `SchemaVisualizerModule.register(options)`

| Option   | Type                                          | Required | Description                        |
| -------- | --------------------------------------------- | -------- | ---------------------------------- |
| `route`  | `string`                                      | Yes      | Route path (e.g. `'/schema'`)     |
| `parser` | `(moduleRef: ModuleRef) => UniversalSchema`   | Yes      | Parser function with DI access     |
| `theme`  | `'light' \| 'dark'`                           | No       | UI theme (default: `'light'`)      |
| `title`  | `string`                                      | No       | Page title                         |

### `SchemaVisualizerModule.autoDetect(options)`

| Option             | Type                   | Required | Description                                      |
| ------------------ | ---------------------- | -------- | ------------------------------------------------ |
| `route`            | `string`               | Yes      | Route path                                       |
| `theme`            | `'light' \| 'dark'`   | No       | UI theme (default: `'light'`)                    |
| `title`            | `string`               | No       | Page title                                       |
| `prismaSchemaPath` | `string`               | No       | Path to `.prisma` file (default: `'./prisma/schema.prisma'`) |

## License

MIT