From b2ed8f99364eaef087516be17f805f4ff81dacdb Mon Sep 17 00:00:00 2001 From: Philipinho <16838612+Philipinho@users.noreply.github.com> Date: Thu, 23 Apr 2026 13:14:09 +0100 Subject: [PATCH] Revert "refactor(base): use uuid package instead of inlined uuid7 in tests" This reverts commit f819f633c9141e0904f79e986ca1f1cd5dc5fd75. --- .../{tests => }/base-query-router.spec.ts | 0 .../{tests => }/column-types.spec.ts | 0 .../{tests => }/duckdb-query-builder.spec.ts | 0 .../{tests => }/loader-sql.spec.ts | 0 .../{tests => }/parity-matrix.spec.ts | 29 +++++++++++++++++- .../postgres-extension.service.spec.ts | 0 .../base/query-cache/testing/seed-base.ts | 30 ++++++++++++++++++- 7 files changed, 57 insertions(+), 2 deletions(-) rename apps/server/src/core/base/query-cache/{tests => }/base-query-router.spec.ts (100%) rename apps/server/src/core/base/query-cache/{tests => }/column-types.spec.ts (100%) rename apps/server/src/core/base/query-cache/{tests => }/duckdb-query-builder.spec.ts (100%) rename apps/server/src/core/base/query-cache/{tests => }/loader-sql.spec.ts (100%) rename apps/server/src/core/base/query-cache/{tests => }/parity-matrix.spec.ts (97%) rename apps/server/src/core/base/query-cache/{tests => }/postgres-extension.service.spec.ts (100%) diff --git a/apps/server/src/core/base/query-cache/tests/base-query-router.spec.ts b/apps/server/src/core/base/query-cache/base-query-router.spec.ts similarity index 100% rename from apps/server/src/core/base/query-cache/tests/base-query-router.spec.ts rename to apps/server/src/core/base/query-cache/base-query-router.spec.ts diff --git a/apps/server/src/core/base/query-cache/tests/column-types.spec.ts b/apps/server/src/core/base/query-cache/column-types.spec.ts similarity index 100% rename from apps/server/src/core/base/query-cache/tests/column-types.spec.ts rename to apps/server/src/core/base/query-cache/column-types.spec.ts diff --git a/apps/server/src/core/base/query-cache/tests/duckdb-query-builder.spec.ts b/apps/server/src/core/base/query-cache/duckdb-query-builder.spec.ts similarity index 100% rename from apps/server/src/core/base/query-cache/tests/duckdb-query-builder.spec.ts rename to apps/server/src/core/base/query-cache/duckdb-query-builder.spec.ts diff --git a/apps/server/src/core/base/query-cache/tests/loader-sql.spec.ts b/apps/server/src/core/base/query-cache/loader-sql.spec.ts similarity index 100% rename from apps/server/src/core/base/query-cache/tests/loader-sql.spec.ts rename to apps/server/src/core/base/query-cache/loader-sql.spec.ts diff --git a/apps/server/src/core/base/query-cache/tests/parity-matrix.spec.ts b/apps/server/src/core/base/query-cache/parity-matrix.spec.ts similarity index 97% rename from apps/server/src/core/base/query-cache/tests/parity-matrix.spec.ts rename to apps/server/src/core/base/query-cache/parity-matrix.spec.ts index 50631ec6..212f0254 100644 --- a/apps/server/src/core/base/query-cache/tests/parity-matrix.spec.ts +++ b/apps/server/src/core/base/query-cache/parity-matrix.spec.ts @@ -6,8 +6,8 @@ import { PostgresJSDialect } from 'kysely-postgres-js'; import * as postgres from 'postgres'; import { Injectable } from '@nestjs/common'; import { EventEmitterModule } from '@nestjs/event-emitter'; +import { randomBytes } from 'node:crypto'; import { generateJitteredKeyBetween } from 'fractional-indexing-jittered'; -import { v7 as uuid7 } from 'uuid'; import { BaseRepo } from '@docmost/db/repos/base/base.repo'; import { BasePropertyRepo } from '@docmost/db/repos/base/base-property.repo'; import { BaseRowRepo } from '@docmost/db/repos/base/base-row.repo'; @@ -78,6 +78,33 @@ function normalizePostgresUrl(url: string): string { const describeIntegration = INTEGRATION_DB_URL ? describe : describe.skip; +// Inline uuid7 so the spec file doesn't need to import the esm-only uuid +// package. Same pattern as seed-base.ts. +function uuid7(): string { + const now = BigInt(Date.now()); + const bytes = randomBytes(16); + bytes[0] = Number((now >> 40n) & 0xffn); + bytes[1] = Number((now >> 32n) & 0xffn); + bytes[2] = Number((now >> 24n) & 0xffn); + bytes[3] = Number((now >> 16n) & 0xffn); + bytes[4] = Number((now >> 8n) & 0xffn); + bytes[5] = Number(now & 0xffn); + bytes[6] = (bytes[6] & 0x0f) | 0x70; + bytes[8] = (bytes[8] & 0x3f) | 0x80; + const hex = bytes.toString('hex'); + return ( + hex.slice(0, 8) + + '-' + + hex.slice(8, 12) + + '-' + + hex.slice(12, 16) + + '-' + + hex.slice(16, 20) + + '-' + + hex.slice(20, 32) + ); +} + // Deterministic PRNG (mulberry32) for reproducible seeds across runs. function makeRng(seed: number): () => number { let s = seed >>> 0; diff --git a/apps/server/src/core/base/query-cache/tests/postgres-extension.service.spec.ts b/apps/server/src/core/base/query-cache/postgres-extension.service.spec.ts similarity index 100% rename from apps/server/src/core/base/query-cache/tests/postgres-extension.service.spec.ts rename to apps/server/src/core/base/query-cache/postgres-extension.service.spec.ts diff --git a/apps/server/src/core/base/query-cache/testing/seed-base.ts b/apps/server/src/core/base/query-cache/testing/seed-base.ts index 569f0813..3c629049 100644 --- a/apps/server/src/core/base/query-cache/testing/seed-base.ts +++ b/apps/server/src/core/base/query-cache/testing/seed-base.ts @@ -1,6 +1,34 @@ import type { Kysely } from 'kysely'; +import { randomBytes } from 'node:crypto'; import { generateJitteredKeyBetween } from 'fractional-indexing-jittered'; -import { v7 as uuid7 } from 'uuid'; + +// Minimal RFC 9562 uuid7. We inline instead of importing `uuid@13` because +// that package is ESM-only and this module is loaded by jest (CommonJS) in +// the integration spec. +function uuid7(): string { + const now = BigInt(Date.now()); + const bytes = randomBytes(16); + bytes[0] = Number((now >> 40n) & 0xffn); + bytes[1] = Number((now >> 32n) & 0xffn); + bytes[2] = Number((now >> 24n) & 0xffn); + bytes[3] = Number((now >> 16n) & 0xffn); + bytes[4] = Number((now >> 8n) & 0xffn); + bytes[5] = Number(now & 0xffn); + bytes[6] = (bytes[6] & 0x0f) | 0x70; // version 7 + bytes[8] = (bytes[8] & 0x3f) | 0x80; // variant + const hex = bytes.toString('hex'); + return ( + hex.slice(0, 8) + + '-' + + hex.slice(8, 12) + + '-' + + hex.slice(12, 16) + + '-' + + hex.slice(16, 20) + + '-' + + hex.slice(20, 32) + ); +} export type SeedBaseOptions = { db: Kysely;