Home / File/ utils.ts — drizzle-orm Source File

utils.ts — drizzle-orm Source File

Architecture documentation for utils.ts, a typescript file in the drizzle-orm codebase. 4 imports, 3 dependents.

File typescript DrizzleKit SchemaDiffer 4 imports 3 dependents 8 functions

Entity Profile

Dependency Diagram

graph LR
  34140e39_ad92_a121_09b2_e3e2624fd021["utils.ts"]
  217e2cbd_4fb7_ceab_251c_5733ece08a8f["views.ts"]
  34140e39_ad92_a121_09b2_e3e2624fd021 --> 217e2cbd_4fb7_ceab_251c_5733ece08a8f
  1667b582_3430_eb68_88ed_3f551edd5fa5["err"]
  34140e39_ad92_a121_09b2_e3e2624fd021 --> 1667b582_3430_eb68_88ed_3f551edd5fa5
  5fbcc7ce_945a_7e2d_e12d_559fa5000971["warning"]
  34140e39_ad92_a121_09b2_e3e2624fd021 --> 5fbcc7ce_945a_7e2d_e12d_559fa5000971
  8a4d5c8d_866e_cf50_8833_1e188ec956e8["semver"]
  34140e39_ad92_a121_09b2_e3e2624fd021 --> 8a4d5c8d_866e_cf50_8833_1e188ec956e8
  4e02c2bb_54a8_1500_813e_2cafd1ad4f59["connections.ts"]
  4e02c2bb_54a8_1500_813e_2cafd1ad4f59 --> 34140e39_ad92_a121_09b2_e3e2624fd021
  3337fb45_cdc6_b02c_a270_5043f829b54b["index.ts"]
  3337fb45_cdc6_b02c_a270_5043f829b54b --> 34140e39_ad92_a121_09b2_e3e2624fd021
  5bf76609_579e_d312_b33b_ab5b8b683111["schema.ts"]
  5bf76609_579e_d312_b33b_ab5b8b683111 --> 34140e39_ad92_a121_09b2_e3e2624fd021
  style 34140e39_ad92_a121_09b2_e3e2624fd021 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import semver from 'semver';
import { err, warning } from './views';

export const assertExists = (it?: any) => {
	if (!it) throw new Error();
};

export const ormVersionGt = async (version: string) => {
	const { npmVersion } = await import('drizzle-orm/version');
	if (!semver.gte(npmVersion, version)) {
		return false;
	}
	return true;
};

export const assertStudioNodeVersion = () => {
	if (semver.gte(process.version, '18.0.0')) return;

	err('Drizzle Studio requires NodeJS v18 or above');
	process.exit(1);
};

export const checkPackage = async (it: string) => {
	try {
		await import(it);
		return true;
	} catch (e) {
		return false;
	}
};

export const assertPackages = async (...pkgs: string[]) => {
	try {
		for (let i = 0; i < pkgs.length; i++) {
			const it = pkgs[i];
			await import(it);
		}
	} catch (e) {
		err(
			`please install required packages: ${
				pkgs
					.map((it) => `'${it}'`)
					.join(' ')
			}`,
		);
		process.exit(1);
	}
};

// ex: either pg or postgres are needed
export const assertEitherPackage = async (
	...pkgs: string[]
): Promise<string[]> => {
	const availables = [] as string[];
	for (let i = 0; i < pkgs.length; i++) {
		try {
			const it = pkgs[i];
			await import(it);
			availables.push(it);
		} catch (e) {}
	}

	if (availables.length > 0) {
		return availables;
	}

	err(
		`Please install one of those packages are needed: ${
			pkgs
				.map((it) => `'${it}'`)
				.join(' or ')
		}`,
	);
	process.exit(1);
};

const requiredApiVersion = 10;
export const assertOrmCoreVersion = async () => {
	try {
		const { compatibilityVersion } = await import('drizzle-orm/version');

		await import('drizzle-orm/relations');

		if (compatibilityVersion && compatibilityVersion === requiredApiVersion) {
			return;
		}

		if (!compatibilityVersion || compatibilityVersion < requiredApiVersion) {
			console.log(
				'This version of drizzle-kit requires newer version of drizzle-orm\nPlease update drizzle-orm package to the latest version 👍',
			);
		} else {
			console.log(
				'This version of drizzle-kit is outdated\nPlease update drizzle-kit package to the latest version 👍',
			);
		}
	} catch (e) {
		console.log('Please install latest version of drizzle-orm');
	}
	process.exit(1);
};

export const ormCoreVersions = async () => {
	try {
		const { compatibilityVersion, npmVersion } = await import(
			'drizzle-orm/version'
		);
		return { compatibilityVersion, npmVersion };
	} catch (e) {
		return {};
	}
};

Domain

Subdomains

Dependencies

Frequently Asked Questions

What does utils.ts do?
utils.ts is a source file in the drizzle-orm codebase, written in typescript. It belongs to the DrizzleKit domain, SchemaDiffer subdomain.
What functions are defined in utils.ts?
utils.ts defines 8 function(s): assertEitherPackage, assertExists, assertOrmCoreVersion, assertPackages, assertStudioNodeVersion, checkPackage, ormCoreVersions, ormVersionGt.
What does utils.ts depend on?
utils.ts imports 4 module(s): err, semver, views.ts, warning.
What files import utils.ts?
utils.ts is imported by 3 file(s): connections.ts, index.ts, schema.ts.
Where is utils.ts in the architecture?
utils.ts is located at drizzle-kit/src/cli/utils.ts (domain: DrizzleKit, subdomain: SchemaDiffer, directory: drizzle-kit/src/cli).

Analyze Your Own Codebase

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

Try Supermodel Free