Skip to content
This repository has been archived by the owner on Sep 8, 2023. It is now read-only.
/ cuetypescript Public archive

Converts Cue types to TypeScript types and vice-versa.

License

Notifications You must be signed in to change notification settings

inngest/cuetypescript

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cue + TypeScript


This package converts Cue types to TypeScript types, and soon vice-versa.

Cue is a concise language for defining types and constraints in one file. It's best practice to have a single source of truth for your types. This package allows you to convert your Cue types to TypeScript for the frontend.

Usage

This is a library for converting cue types, intended for use within a go application. Run the following command to install the package:

go get github.com/inngest/cuetypescript

Examples

CUETypeScript
#Post: {
	id:        string
	slug:      string
	title:     string
	subtitle?: string
	rating:    float & <=5
	category:  "tech" | "finance" | "hr"
	tags: [...string]
	references: [...{
		slug:  string
		title: string
	}]
}
export const Category = {
  TECH: "tech",
  FINANCE: "finance",
  HR: "hr",
} as const;
export type Category = typeof Category[keyof typeof Category];

export interface Post {
  id: string;
  slug: string;
  title: string;
  subtitle?: string;
  rating: number;
  category: Category;
  tags: Array<string>;
  references: Array<{
    slug: string;
    title: string;
  }>;
};

Features

  • Interface generation
  • Type conversion and support
  • Nested struct support
  • Union support
  • "Best practice" enum generation. We create enums with both const and type values, allowing you to properly reference enum values via eg. Category.TECH.

In the future, we plan on adding:

  • Function generation for checking and validating Cue constraints
  • Default value generation and constructors
  • Typescript to Cue support

Releases

No releases published

Packages

No packages published

Languages