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. 2 imports, 4 dependents.

File typescript DrizzleORM QueryBuilders 2 imports 4 dependents 4 functions

Entity Profile

Dependency Diagram

graph LR
  b6483f8f_39d9_6c02_34b8_9a3df7d428eb["utils.ts"]
  a9e31838_d52b_02c1_2b9d_c4354b2ad2fa["valibot"]
  b6483f8f_39d9_6c02_34b8_9a3df7d428eb --> a9e31838_d52b_02c1_2b9d_c4354b2ad2fa
  8d35eaf2_a542_cfd4_fa1a_fafca0f02686["vitest"]
  b6483f8f_39d9_6c02_34b8_9a3df7d428eb --> 8d35eaf2_a542_cfd4_fa1a_fafca0f02686
  1bf01e0d_32f6_c53c_135f_427fc06b2360["mysql.test.ts"]
  1bf01e0d_32f6_c53c_135f_427fc06b2360 --> b6483f8f_39d9_6c02_34b8_9a3df7d428eb
  f5bdd4a8_7392_24f0_b17c_d98d0b1db060["pg.test.ts"]
  f5bdd4a8_7392_24f0_b17c_d98d0b1db060 --> b6483f8f_39d9_6c02_34b8_9a3df7d428eb
  00b34a50_02d5_93ca_7f88_bf3d79d32df9["singlestore.test.ts"]
  00b34a50_02d5_93ca_7f88_bf3d79d32df9 --> b6483f8f_39d9_6c02_34b8_9a3df7d428eb
  fb71c760_c401_e9c7_5556_1ea015bc362f["sqlite.test.ts"]
  fb71c760_c401_e9c7_5556_1ea015bc362f --> b6483f8f_39d9_6c02_34b8_9a3df7d428eb
  style b6483f8f_39d9_6c02_34b8_9a3df7d428eb fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import type * as v from 'valibot';
import { expect, type TaskContext } from 'vitest';

function onlySpecifiedKeys(obj: Record<string, any>, keys: string[]) {
	return Object.fromEntries(Object.entries(obj).filter(([key]) => keys.includes(key)));
}

export function expectSchemaShape<T extends v.ObjectSchema<v.ObjectEntries, undefined>>(t: TaskContext, expected: T) {
	return {
		from(actual: T) {
			expect(Object.keys(actual.entries)).toStrictEqual(Object.keys(expected.entries));

			for (const key of Object.keys(actual.entries)) {
				const actualEntry = actual.entries[key] as any;
				const expectedEntry = expected.entries[key] as any;
				const keys = ['kind', 'type', 'expects', 'async', 'message'];
				actualEntry.pipe ??= [];
				expectedEntry.pipe ??= [];

				expect(onlySpecifiedKeys(actualEntry, keys)).toStrictEqual(onlySpecifiedKeys(expectedEntry, keys));
				expect(actualEntry.pipe.length).toStrictEqual(expectedEntry.pipe.length);

				for (let i = 0; i < actualEntry.pipe.length; i++) {
					const actualPipeElement = actualEntry.pipe[i];
					const expectedPipeElement = expectedEntry.pipe[i];
					expect(onlySpecifiedKeys(actualPipeElement, keys)).toStrictEqual(
						onlySpecifiedKeys(expectedPipeElement, keys),
					);
				}
			}
		},
	};
}

export function expectEnumValues<T extends v.EnumSchema<any, undefined>>(t: TaskContext, expected: T) {
	return {
		from(actual: T) {
			expect(actual.enum).toStrictEqual(expected.enum);
		},
	};
}

export function Expect<_ extends true>() {}

Domain

Subdomains

Dependencies

  • valibot
  • vitest

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 DrizzleORM domain, QueryBuilders subdomain.
What functions are defined in utils.ts?
utils.ts defines 4 function(s): Expect, expectEnumValues, expectSchemaShape, onlySpecifiedKeys.
What does utils.ts depend on?
utils.ts imports 2 module(s): valibot, vitest.
What files import utils.ts?
utils.ts is imported by 4 file(s): mysql.test.ts, pg.test.ts, singlestore.test.ts, sqlite.test.ts.
Where is utils.ts in the architecture?
utils.ts is located at drizzle-valibot/tests/utils.ts (domain: DrizzleORM, subdomain: QueryBuilders, directory: drizzle-valibot/tests).

Analyze Your Own Codebase

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

Try Supermodel Free