From b1a8b30d14f05dc3d77bedcfa8d753e64e212d95 Mon Sep 17 00:00:00 2001 From: Upd4ting Date: Fri, 21 Aug 2026 17:49:31 +0000 Subject: [PATCH 1/2] fix(schema): export canonical registry proxy --- src/index.ts | 1 + src/tests/root-declarations.test.ts | 32 +++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 src/tests/root-declarations.test.ts diff --git a/src/index.ts b/src/index.ts index fd45543..2ecfd46 100644 --- a/src/index.ts +++ b/src/index.ts @@ -6,6 +6,7 @@ export { Schema, SchemaDefinition, SchemaInstance, + Schemas, } from "./schema"; export { Selection, SingleSelection, Table } from "./selection"; export { Stream } from "./stream"; diff --git a/src/tests/root-declarations.test.ts b/src/tests/root-declarations.test.ts new file mode 100644 index 0000000..0d57c17 --- /dev/null +++ b/src/tests/root-declarations.test.ts @@ -0,0 +1,32 @@ +import { execFileSync } from "node:child_process"; +import path from "node:path"; +import { expect } from "chai"; +import * as declarations from ".."; +import * as schema from "../schema"; + +const packageRoot = path.resolve(__dirname, "../.."); + +function verifyImportOrder(firstEntry: string, secondEntry: string) { + const source = ` + const assert = require("node:assert/strict"); + const path = require("node:path"); + const packageRoot = ${JSON.stringify(packageRoot)}; + const first = require(path.join(packageRoot, ${JSON.stringify(firstEntry)})); + const second = require(path.join(packageRoot, ${JSON.stringify(secondEntry)})); + const root = ${JSON.stringify(firstEntry)} === "dist/index.js" ? first : second; + const subpath = ${JSON.stringify(firstEntry)} === "dist/schema.js" ? first : second; + assert.strictEqual(root.Schemas, subpath.Schemas); + `; + execFileSync(process.execPath, ["-e", source]); +} + +describe("root interface declarations", () => { + it("exports the canonical schema registry", () => { + expect(declarations.Schemas).to.equal(schema.Schemas); + }); + + it("keeps canonical declarations in both import orders", () => { + verifyImportOrder("dist/index.js", "dist/schema.js"); + verifyImportOrder("dist/schema.js", "dist/index.js"); + }); +}); From 86dfb2a16465eaadf96530c39c64d7c282e1e5c8 Mon Sep 17 00:00:00 2001 From: Upd4ting Date: Fri, 21 Aug 2026 18:54:58 +0000 Subject: [PATCH 2/2] fix(database): expose canonical query declarations --- src/index.ts | 10 ++++++++++ src/tests/root-declarations.test.ts | 29 ++++++++++++++++++++++++++--- 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/src/index.ts b/src/index.ts index 2ecfd46..7d53086 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,3 +1,13 @@ +import { CloseCursor, ReadCursor, RunQuery } from "./query"; +import { Schemas } from "./schema"; + +export const InterfaceDeclarations = { + CloseCursor, + ReadCursor, + RunQuery, + Schemas, +}; + export { Datum } from "./datum"; export { Query } from "./query"; export { diff --git a/src/tests/root-declarations.test.ts b/src/tests/root-declarations.test.ts index 0d57c17..58af89b 100644 --- a/src/tests/root-declarations.test.ts +++ b/src/tests/root-declarations.test.ts @@ -2,9 +2,11 @@ import { execFileSync } from "node:child_process"; import path from "node:path"; import { expect } from "chai"; import * as declarations from ".."; +import * as query from "../query"; import * as schema from "../schema"; const packageRoot = path.resolve(__dirname, "../.."); +const declarationKeys = ["CloseCursor", "ReadCursor", "RunQuery", "Schemas"]; function verifyImportOrder(firstEntry: string, secondEntry: string) { const source = ` @@ -14,19 +16,40 @@ function verifyImportOrder(firstEntry: string, secondEntry: string) { const first = require(path.join(packageRoot, ${JSON.stringify(firstEntry)})); const second = require(path.join(packageRoot, ${JSON.stringify(secondEntry)})); const root = ${JSON.stringify(firstEntry)} === "dist/index.js" ? first : second; - const subpath = ${JSON.stringify(firstEntry)} === "dist/schema.js" ? first : second; - assert.strictEqual(root.Schemas, subpath.Schemas); + const query = require(path.join(packageRoot, "dist/query.js")); + const schema = require(path.join(packageRoot, "dist/schema.js")); + assert.deepStrictEqual(Object.keys(root.InterfaceDeclarations).sort(), ${JSON.stringify(declarationKeys.sort())}); + assert.strictEqual(root.InterfaceDeclarations.CloseCursor, query.CloseCursor); + assert.strictEqual(root.InterfaceDeclarations.ReadCursor, query.ReadCursor); + assert.strictEqual(root.InterfaceDeclarations.RunQuery, query.RunQuery); + assert.strictEqual(root.InterfaceDeclarations.Schemas, schema.Schemas); + assert.strictEqual(root.Schemas, schema.Schemas); `; execFileSync(process.execPath, ["-e", source]); } describe("root interface declarations", () => { - it("exports the canonical schema registry", () => { + it("exports every canonical provider declaration", () => { + expect( + Object.keys(declarations.InterfaceDeclarations).sort(), + ).to.deep.equal(declarationKeys.sort()); + expect(declarations.InterfaceDeclarations.CloseCursor).to.equal( + query.CloseCursor, + ); + expect(declarations.InterfaceDeclarations.ReadCursor).to.equal( + query.ReadCursor, + ); + expect(declarations.InterfaceDeclarations.RunQuery).to.equal( + query.RunQuery, + ); + expect(declarations.InterfaceDeclarations.Schemas).to.equal(schema.Schemas); expect(declarations.Schemas).to.equal(schema.Schemas); }); it("keeps canonical declarations in both import orders", () => { verifyImportOrder("dist/index.js", "dist/schema.js"); verifyImportOrder("dist/schema.js", "dist/index.js"); + verifyImportOrder("dist/index.js", "dist/query.js"); + verifyImportOrder("dist/query.js", "dist/index.js"); }); });