Home / File/ types.ts — astro Source File

types.ts — astro Source File

Architecture documentation for types.ts, a typescript file in the astro codebase. 2 imports, 0 dependents.

File typescript CoreAstro CoreMiddleware 2 imports 1 functions 1 classes

Entity Profile

Dependency Diagram

graph LR
  6e2bac63_8347_e439_f286_003fc8700611["types.ts"]
  d97d1d38_d12d_091d_d5c6_25c44398932a["./core/schemas.js"]
  6e2bac63_8347_e439_f286_003fc8700611 --> d97d1d38_d12d_091d_d5c6_25c44398932a
  f8c9251e_f535_6281_2118_9e79a4155212["v4"]
  6e2bac63_8347_e439_f286_003fc8700611 --> f8c9251e_f535_6281_2118_9e79a4155212
  style 6e2bac63_8347_e439_f286_003fc8700611 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import type * as z from 'zod/v4';
import type {
	booleanColumnSchema,
	columnSchema,
	columnsSchema,
	dateColumnSchema,
	dbConfigSchema,
	indexSchema,
	jsonColumnSchema,
	MaybeArray,
	numberColumnOptsSchema,
	numberColumnSchema,
	referenceableColumnSchema,
	resolvedIndexSchema,
	tableSchema,
	textColumnOptsSchema,
	textColumnSchema,
} from './schemas.js';

export type ResolvedIndexes = z.output<typeof dbConfigSchema>['tables'][string]['indexes'];
export type BooleanColumn = z.infer<typeof booleanColumnSchema>;
export type BooleanColumnInput = z.input<typeof booleanColumnSchema>;
export type NumberColumn = z.infer<typeof numberColumnSchema>;
export type NumberColumnInput = z.input<typeof numberColumnSchema>;
export type TextColumn = z.infer<typeof textColumnSchema>;
export type TextColumnInput = z.input<typeof textColumnSchema>;
export type DateColumn = z.infer<typeof dateColumnSchema>;
export type DateColumnInput = z.input<typeof dateColumnSchema>;
export type JsonColumn = z.infer<typeof jsonColumnSchema>;
export type JsonColumnInput = z.input<typeof jsonColumnSchema>;

export type ColumnType =
	| BooleanColumn['type']
	| NumberColumn['type']
	| TextColumn['type']
	| DateColumn['type']
	| JsonColumn['type'];

export type DBColumn = z.infer<typeof columnSchema>;
export type DBColumnInput =
	| DateColumnInput
	| BooleanColumnInput
	| NumberColumnInput
	| TextColumnInput
	| JsonColumnInput;
export type DBColumns = z.infer<typeof columnsSchema>;
export type DBTable = z.infer<typeof tableSchema>;
export type DBTables = Record<string, DBTable>;
export type ResolvedDBTables = z.output<typeof dbConfigSchema>['tables'];
export type ResolvedDBTable = z.output<typeof dbConfigSchema>['tables'][string];
export type DBSnapshot = {
	schema: Record<string, ResolvedDBTable>;
	version: string;
};

export type DBConfigInput = z.input<typeof dbConfigSchema>;
export type DBConfig = z.infer<typeof dbConfigSchema>;

export type ColumnsConfig = z.input<typeof tableSchema>['columns'];
export type OutputColumnsConfig = z.output<typeof tableSchema>['columns'];

export interface TableConfig<TColumns extends ColumnsConfig = ColumnsConfig>
	// use `extends` to ensure types line up with zod,
	// only adding generics for type completions.
	extends Pick<z.input<typeof tableSchema>, 'columns' | 'indexes' | 'foreignKeys'> {
	columns: TColumns;
	foreignKeys?: Array<{
		columns: MaybeArray<Extract<keyof TColumns, string>>;
		references: () => MaybeArray<z.input<typeof referenceableColumnSchema>>;
	}>;
	indexes?: Array<IndexConfig<TColumns>> | Record<string, LegacyIndexConfig<TColumns>>;
	deprecated?: boolean;
}

interface IndexConfig<TColumns extends ColumnsConfig> extends z.input<typeof indexSchema> {
	on: MaybeArray<Extract<keyof TColumns, string>>;
}

/** @deprecated */
interface LegacyIndexConfig<TColumns extends ColumnsConfig>
	extends z.input<typeof resolvedIndexSchema> {
	on: MaybeArray<Extract<keyof TColumns, string>>;
}

// We cannot use `Omit<NumberColumn | TextColumn, 'type'>`,
// since Omit collapses our union type on primary key.
export type NumberColumnOpts = z.input<typeof numberColumnOptsSchema>;
export type TextColumnOpts = z.input<typeof textColumnOptsSchema>;

declare global {
	// eslint-disable-next-line  @typescript-eslint/no-namespace
	namespace Astro {
		export interface IntegrationHooks {
			'astro:db:setup'?: (options: {
				extendDb: (options: {
					configEntrypoint?: URL | string;
					seedEntrypoint?: URL | string;
				}) => void;
			}) => void | Promise<void>;
		}
	}
}

Domain

Subdomains

Functions

Classes

Dependencies

  • ./core/schemas.js
  • v4

Frequently Asked Questions

What does types.ts do?
types.ts is a source file in the astro codebase, written in typescript. It belongs to the CoreAstro domain, CoreMiddleware subdomain.
What functions are defined in types.ts?
types.ts defines 1 function(s): z.
What does types.ts depend on?
types.ts imports 2 module(s): ./core/schemas.js, v4.
Where is types.ts in the architecture?
types.ts is located at packages/db/src/core/types.ts (domain: CoreAstro, subdomain: CoreMiddleware, directory: packages/db/src/core).

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free