🚀. Socket Launch Week Day 2:Introducing Manifest Alerts.Learn more
Sign In

@prisma-next/ts-render

Package Overview
Dependencies
Maintainers
3
Versions
370
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@prisma-next/ts-render

TypeScript source-text rendering utilities: JSON-to-TS literal printer and abstract expression base class

Source
npmnpm
Version
0.13.0-dev.34
Version published
Weekly downloads
34K
-20.13%
Maintainers
3
Weekly downloads
 
Created
Source

@prisma-next/ts-render

Internal package. This package is an implementation detail of prisma-next and is published only to support its runtime. Its API is unstable and may change without notice. Do not depend on this package directly; install prisma-next instead.

TypeScript source-text rendering utilities shared by any Prisma Next component that has to emit hand-editable .ts files — today the Postgres and Mongo migration-authoring surfaces, later any new target that ships a migration-authoring experience.

Overview

Two small pieces:

  • TsExpression — abstract base class for any node that renders as a TypeScript expression in a generated source file. Subclasses supply renderTypeScript(): string and importRequirements(): readonly ImportRequirement[]. Hierarchical so that composite nodes (e.g. a DataTransformCall containing slot expressions) can recurse into their children.
  • jsonToTsSource(value) — pure JSON-to-TypeScript-source printer. Accepts unknown for ergonomics with structural types whose fields happen to be JSON-compatible, and throws at runtime on anything that is not a JSON primitive / array / object.

Codec → TS pipeline

jsonToTsSource is deliberately the second stage of a two-stage pipeline:

jsValue  →  codec.encodeJson  →  JsonValue  →  jsonToTsSource  →  TS source text

Stage 1 (codec.encodeJson) is a codec responsibility — date serialization, opaque domain types (vector, bigint, uuid), JSON canonicalization. Stage 2 (this module) is a pure printer that must never grow type-specific branches. To render a non-JSON JS value (Date, Vector, BigInt, Buffer, …), encode it through the relevant codec's encodeJson first.

Usage

import { type ImportRequirement, TsExpression, jsonToTsSource } from '@prisma-next/ts-render';

class CreateTableCall extends TsExpression {
  constructor(
    readonly schema: string,
    readonly table: string,
    readonly columns: ReadonlyArray<{ name: string; typeSql: string; nullable: boolean }>,
  ) {
    super();
  }

  override renderTypeScript(): string {
    return `createTable(${jsonToTsSource(this.schema)}, ${jsonToTsSource(this.table)}, ${jsonToTsSource(this.columns)})`;
  }

  override importRequirements(): readonly ImportRequirement[] {
    return [{ moduleSpecifier: '@prisma-next/postgres/migration', symbol: 'createTable' }];
  }
}

FAQs

Package last updated on 15 Jun 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts