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 3c629049..569f0813 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,34 +1,6 @@ import type { Kysely } from 'kysely'; -import { randomBytes } from 'node:crypto'; import { generateJitteredKeyBetween } from 'fractional-indexing-jittered'; - -// 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) - ); -} +import { v7 as uuid7 } from 'uuid'; export type SeedBaseOptions = { db: Kysely; diff --git a/apps/server/src/core/base/query-cache/base-query-router.spec.ts b/apps/server/src/core/base/query-cache/tests/base-query-router.spec.ts similarity index 100% rename from apps/server/src/core/base/query-cache/base-query-router.spec.ts rename to apps/server/src/core/base/query-cache/tests/base-query-router.spec.ts diff --git a/apps/server/src/core/base/query-cache/column-types.spec.ts b/apps/server/src/core/base/query-cache/tests/column-types.spec.ts similarity index 100% rename from apps/server/src/core/base/query-cache/column-types.spec.ts rename to apps/server/src/core/base/query-cache/tests/column-types.spec.ts diff --git a/apps/server/src/core/base/query-cache/duckdb-query-builder.spec.ts b/apps/server/src/core/base/query-cache/tests/duckdb-query-builder.spec.ts similarity index 100% rename from apps/server/src/core/base/query-cache/duckdb-query-builder.spec.ts rename to apps/server/src/core/base/query-cache/tests/duckdb-query-builder.spec.ts diff --git a/apps/server/src/core/base/query-cache/loader-sql.spec.ts b/apps/server/src/core/base/query-cache/tests/loader-sql.spec.ts similarity index 100% rename from apps/server/src/core/base/query-cache/loader-sql.spec.ts rename to apps/server/src/core/base/query-cache/tests/loader-sql.spec.ts diff --git a/apps/server/src/core/base/query-cache/parity-matrix.spec.ts b/apps/server/src/core/base/query-cache/tests/parity-matrix.spec.ts similarity index 97% rename from apps/server/src/core/base/query-cache/parity-matrix.spec.ts rename to apps/server/src/core/base/query-cache/tests/parity-matrix.spec.ts index 212f0254..50631ec6 100644 --- a/apps/server/src/core/base/query-cache/parity-matrix.spec.ts +++ b/apps/server/src/core/base/query-cache/tests/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,33 +78,6 @@ 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/postgres-extension.service.spec.ts b/apps/server/src/core/base/query-cache/tests/postgres-extension.service.spec.ts similarity index 100% rename from apps/server/src/core/base/query-cache/postgres-extension.service.spec.ts rename to apps/server/src/core/base/query-cache/tests/postgres-extension.service.spec.ts