From 15e0e36a9da3771fdcc2663e5b3453f0c422c891 Mon Sep 17 00:00:00 2001 From: Andrew Kane Date: Mon, 12 Jan 2026 12:48:17 -0800 Subject: [PATCH 1/9] Switched to module [skip ci] --- package.json | 1 + src/index.js | 6 ++++-- src/knex/index.js | 6 +++--- src/kysely/index.js | 11 +++++++---- src/mikro-orm/bit.js | 8 ++++---- src/mikro-orm/halfvec.js | 12 ++++++------ src/mikro-orm/index.js | 14 +++++++------- src/mikro-orm/sparsevec.js | 12 ++++++------ src/mikro-orm/vector.js | 12 ++++++------ src/objection/index.js | 12 ++++++++---- src/pg-promise/index.js | 4 +--- src/pg/index.js | 11 +++++------ src/sequelize/halfvec.js | 12 ++++++------ src/sequelize/index.js | 17 ++++++++++------- src/sequelize/sparsevec.js | 12 ++++++------ src/sequelize/vector.js | 12 ++++++------ src/utils/index.js | 8 +++++--- src/utils/sparse-vector.js | 4 ++-- ...drizzle-orm.test.mjs => drizzle-orm.test.js} | 0 tests/{knex.test.mjs => knex.test.js} | 0 tests/{kysely.test.mjs => kysely.test.js} | 0 tests/{mikro-orm.test.mjs => mikro-orm.test.js} | 0 tests/{objection.test.mjs => objection.test.js} | 0 .../{pg-promise.test.mjs => pg-promise.test.js} | 0 tests/{pg.test.mjs => pg.test.js} | 0 tests/{postgres.test.mjs => postgres.test.js} | 0 tests/{prisma.test.mjs => prisma.test.js} | 0 tests/{sequelize.test.mjs => sequelize.test.js} | 0 tests/{slonik.test.mjs => slonik.test.js} | 0 ...se-vector.test.mjs => sparse-vector.test.js} | 0 tests/{typeorm.test.mjs => typeorm.test.js} | 0 tests/{utils.test.mjs => utils.test.js} | 0 types/index.d.ts | 13 +++++++++---- types/knex/index.d.ts | 10 +++++++--- types/kysely/index.d.ts | 10 +++++++--- types/mikro-orm/bit.d.ts | 2 +- types/mikro-orm/halfvec.d.ts | 2 +- types/mikro-orm/index.d.ts | 8 ++++---- types/mikro-orm/sparsevec.d.ts | 5 ++--- types/mikro-orm/vector.d.ts | 2 +- types/objection/index.d.ts | 10 +++++++--- types/pg-promise/index.d.ts | 5 +---- types/pg/index.d.ts | 13 +++++++++---- types/sequelize/index.d.ts | 9 +++++++-- types/utils/index.d.ts | 10 ++++++++-- 45 files changed, 157 insertions(+), 116 deletions(-) rename tests/{drizzle-orm.test.mjs => drizzle-orm.test.js} (100%) rename tests/{knex.test.mjs => knex.test.js} (100%) rename tests/{kysely.test.mjs => kysely.test.js} (100%) rename tests/{mikro-orm.test.mjs => mikro-orm.test.js} (100%) rename tests/{objection.test.mjs => objection.test.js} (100%) rename tests/{pg-promise.test.mjs => pg-promise.test.js} (100%) rename tests/{pg.test.mjs => pg.test.js} (100%) rename tests/{postgres.test.mjs => postgres.test.js} (100%) rename tests/{prisma.test.mjs => prisma.test.js} (100%) rename tests/{sequelize.test.mjs => sequelize.test.js} (100%) rename tests/{slonik.test.mjs => slonik.test.js} (100%) rename tests/{sparse-vector.test.mjs => sparse-vector.test.js} (100%) rename tests/{typeorm.test.mjs => typeorm.test.js} (100%) rename tests/{utils.test.mjs => utils.test.js} (100%) diff --git a/package.json b/package.json index 484b570..a066faa 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "type": "git", "url": "https://github.com/pgvector/pgvector-node" }, + "type": "module", "exports": { ".": { "types": "./types/index.d.ts", diff --git a/src/index.js b/src/index.js index a2f55f3..46a69e8 100644 --- a/src/index.js +++ b/src/index.js @@ -1,3 +1,5 @@ -const { fromSql, toSql, SparseVector } = require('./utils'); +import { fromSql, toSql, SparseVector } from './utils/index.js'; -module.exports = {fromSql, toSql, SparseVector}; +export default { fromSql, toSql }; + +export { SparseVector }; diff --git a/src/knex/index.js b/src/knex/index.js index 88db82d..5b0d80d 100644 --- a/src/knex/index.js +++ b/src/knex/index.js @@ -1,5 +1,5 @@ -const knex = require('knex'); -const { fromSql, toSql, vectorType, halfvecType, sparsevecType } = require('../utils'); +import knex from 'knex'; +import { fromSql, toSql, vectorType, halfvecType, sparsevecType } from '../utils/index.js'; knex.SchemaBuilder.extend('enableExtension', function (name) { return this.raw('CREATE EXTENSION IF NOT EXISTS ??', [name]); @@ -44,4 +44,4 @@ knex.QueryBuilder.extend('jaccardDistance', function (column, value) { return this.client.raw('?? <%> ?', [column, value]); }); -module.exports = {fromSql, toSql}; +export default { fromSql, toSql }; diff --git a/src/kysely/index.js b/src/kysely/index.js index 036d27e..758b998 100644 --- a/src/kysely/index.js +++ b/src/kysely/index.js @@ -1,5 +1,5 @@ -const { sql } = require('kysely'); -const { fromSql, toSql } = require('..'); +import { sql } from 'kysely'; +import { fromSql, toSql } from '../utils/index.js'; function l2Distance(column, value) { return sql`${sql.ref(column)} <-> ${toSql(value)}`; @@ -25,9 +25,12 @@ function jaccardDistance(column, value) { return sql`${sql.ref(column)} <%> ${value}`; } -module.exports = { +export default { fromSql, - toSql, + toSql +}; + +export { l2Distance, maxInnerProduct, cosineDistance, diff --git a/src/mikro-orm/bit.js b/src/mikro-orm/bit.js index 2ef20e3..de3e6a9 100644 --- a/src/mikro-orm/bit.js +++ b/src/mikro-orm/bit.js @@ -1,10 +1,10 @@ -const { Type } = require('@mikro-orm/core'); -const utils = require('../utils'); +import { Type } from '@mikro-orm/core'; +import { bitType } from '../utils/index.js'; class BitType extends Type { getColumnType(prop, platform) { - return utils.bitType(prop.length); + return bitType(prop.length); } } -module.exports = {BitType}; +export { BitType }; diff --git a/src/mikro-orm/halfvec.js b/src/mikro-orm/halfvec.js index c654b7e..1beef8d 100644 --- a/src/mikro-orm/halfvec.js +++ b/src/mikro-orm/halfvec.js @@ -1,24 +1,24 @@ -const { Type } = require('@mikro-orm/core'); -const utils = require('../utils'); +import { Type } from '@mikro-orm/core'; +import { halfvecFromSql, halfvecToSql, halfvecType } from '../utils/index.js'; class HalfvecType extends Type { convertToDatabaseValue(value, platform) { if (value === null) { return null; } - return utils.halfvecToSql(value); + return halfvecToSql(value); } convertToJSValue(value, platform) { if (value === null) { return null; } - return utils.halfvecFromSql(value); + return halfvecFromSql(value); } getColumnType(prop, platform) { - return utils.halfvecType(prop.dimensions); + return halfvecType(prop.dimensions); } } -module.exports = {HalfvecType}; +export { HalfvecType }; diff --git a/src/mikro-orm/index.js b/src/mikro-orm/index.js index 5d1e081..f1d9ee8 100644 --- a/src/mikro-orm/index.js +++ b/src/mikro-orm/index.js @@ -1,9 +1,9 @@ -const { raw } = require('@mikro-orm/core'); -const { BitType } = require('./bit'); -const { HalfvecType } = require('./halfvec'); -const { SparsevecType } = require('./sparsevec'); -const { VectorType } = require('./vector'); -const { toSql } = require('../utils'); +import { raw } from '@mikro-orm/core'; +import { BitType } from './bit.js'; +import { HalfvecType } from './halfvec.js'; +import { SparsevecType } from './sparsevec.js'; +import { VectorType } from './vector.js'; +import { toSql } from '../utils/index.js'; function distance(op, column, value, em, binary) { if (raw) { @@ -37,7 +37,7 @@ function jaccardDistance(column, value, em) { return distance('<%>', column, value, em, true); } -module.exports = { +export { VectorType, HalfvecType, BitType, diff --git a/src/mikro-orm/sparsevec.js b/src/mikro-orm/sparsevec.js index 7633aba..af48818 100644 --- a/src/mikro-orm/sparsevec.js +++ b/src/mikro-orm/sparsevec.js @@ -1,24 +1,24 @@ -const { Type } = require('@mikro-orm/core'); -const utils = require('../utils'); +import { Type } from '@mikro-orm/core'; +import { sparsevecFromSql, sparsevecToSql, sparsevecType } from '../utils/index.js'; class SparsevecType extends Type { convertToDatabaseValue(value, platform) { if (value === null) { return null; } - return utils.sparsevecToSql(value); + return sparsevecToSql(value); } convertToJSValue(value, platform) { if (value === null) { return null; } - return utils.sparsevecFromSql(value); + return sparsevecFromSql(value); } getColumnType(prop, platform) { - return utils.sparsevecType(prop.dimensions); + return sparsevecType(prop.dimensions); } } -module.exports = {SparsevecType}; +export { SparsevecType }; diff --git a/src/mikro-orm/vector.js b/src/mikro-orm/vector.js index ce60563..f53258b 100644 --- a/src/mikro-orm/vector.js +++ b/src/mikro-orm/vector.js @@ -1,24 +1,24 @@ -const { Type } = require('@mikro-orm/core'); -const utils = require('../utils'); +import { Type } from '@mikro-orm/core'; +import { vectorFromSql, vectorToSql, vectorType } from '../utils/index.js'; class VectorType extends Type { convertToDatabaseValue(value, platform) { if (value === null) { return null; } - return utils.vectorToSql(value); + return vectorToSql(value); } convertToJSValue(value, platform) { if (value === null) { return null; } - return utils.vectorFromSql(value); + return vectorFromSql(value); } getColumnType(prop, platform) { - return utils.vectorType(prop.dimensions); + return vectorType(prop.dimensions); } } -module.exports = {VectorType}; +export { VectorType }; diff --git a/src/objection/index.js b/src/objection/index.js index e0205a3..eac55c7 100644 --- a/src/objection/index.js +++ b/src/objection/index.js @@ -1,5 +1,6 @@ -const { fromSql, toSql } = require('../knex'); -const { raw } = require('objection'); +import { fromSql, toSql } from '../utils/index.js'; +import { raw } from 'objection'; +import '../knex/index.js'; function l2Distance(column, value) { return raw('?? <-> ?', [column, toSql(value)]); @@ -25,9 +26,12 @@ function jaccardDistance(column, value) { return raw('?? <%> ?', [column, value]); } -module.exports = { +export default { fromSql, - toSql, + toSql +}; + +export { l2Distance, maxInnerProduct, cosineDistance, diff --git a/src/pg-promise/index.js b/src/pg-promise/index.js index 4a40432..9436db5 100644 --- a/src/pg-promise/index.js +++ b/src/pg-promise/index.js @@ -1,3 +1 @@ -const { registerType, registerTypes, toSql } = require('../pg'); - -module.exports = {registerType, registerTypes, toSql}; +export { default } from '../pg/index.js'; diff --git a/src/pg/index.js b/src/pg/index.js index a7f78bc..459547b 100644 --- a/src/pg/index.js +++ b/src/pg/index.js @@ -1,5 +1,4 @@ -const utils = require('../utils'); -const { toSql } = require('../utils'); +import { toSql, vectorFromSql, halfvecFromSql, sparsevecFromSql } from '../utils/index.js'; async function registerTypes(client) { const result = await client.query('SELECT typname, oid FROM pg_type WHERE typname IN ($1, $2, $3)', ['vector', 'halfvec', 'sparsevec']); @@ -14,22 +13,22 @@ async function registerTypes(client) { } client.setTypeParser(vector.oid, 'text', function (value) { - return utils.vectorFromSql(value); + return vectorFromSql(value); }); if (halfvec) { client.setTypeParser(halfvec.oid, 'text', function (value) { - return utils.halfvecFromSql(value); + return halfvecFromSql(value); }); } if (sparsevec) { client.setTypeParser(sparsevec.oid, 'text', function (value) { - return utils.sparsevecFromSql(value); + return sparsevecFromSql(value); }); } } const registerType = registerTypes; -module.exports = {registerType, registerTypes, toSql}; +export default { registerType, registerTypes, toSql }; diff --git a/src/sequelize/halfvec.js b/src/sequelize/halfvec.js index ded4470..402ce01 100644 --- a/src/sequelize/halfvec.js +++ b/src/sequelize/halfvec.js @@ -1,5 +1,5 @@ -const util = require('node:util'); -const utils = require('../utils'); +import util from 'node:util'; +import { halfvecType, halfvecToSql, halfvecFromSql } from '../utils/index.js'; function registerHalfvec(Sequelize) { const DataTypes = Sequelize.DataTypes; @@ -13,15 +13,15 @@ function registerHalfvec(Sequelize) { } toSql() { - return utils.halfvecType(this._dimensions).toUpperCase(); + return halfvecType(this._dimensions).toUpperCase(); } _stringify(value) { - return utils.halfvecToSql(value); + return halfvecToSql(value); } static parse(value) { - return utils.halfvecFromSql(value); + return halfvecFromSql(value); } } @@ -45,4 +45,4 @@ function registerHalfvec(Sequelize) { Sequelize.HALFVEC ??= DataTypes.HALFVEC; } -module.exports = {registerHalfvec}; +export { registerHalfvec }; diff --git a/src/sequelize/index.js b/src/sequelize/index.js index 499a70e..fb646df 100644 --- a/src/sequelize/index.js +++ b/src/sequelize/index.js @@ -1,8 +1,8 @@ -const { toSql } = require('../utils'); -const { Utils } = require('sequelize'); -const { registerHalfvec } = require('./halfvec'); -const { registerSparsevec } = require('./sparsevec'); -const { registerVector } = require('./vector'); +import { toSql } from '../utils/index.js'; +import { Utils } from 'sequelize'; +import { registerHalfvec } from './halfvec.js'; +import { registerSparsevec } from './sparsevec.js'; +import { registerVector } from './vector.js'; function registerTypes(Sequelize) { registerVector(Sequelize); @@ -42,9 +42,12 @@ function jaccardDistance(column, value, sequelize) { const registerType = registerTypes; -module.exports = { +export default { registerType, - registerTypes, + registerTypes +}; + +export { l2Distance, maxInnerProduct, cosineDistance, diff --git a/src/sequelize/sparsevec.js b/src/sequelize/sparsevec.js index bb4448e..404a782 100644 --- a/src/sequelize/sparsevec.js +++ b/src/sequelize/sparsevec.js @@ -1,5 +1,5 @@ -const util = require('node:util'); -const utils = require('../utils'); +import util from 'node:util'; +import { sparsevecType, sparsevecToSql, sparsevecFromSql } from '../utils/index.js'; function registerSparsevec(Sequelize) { const DataTypes = Sequelize.DataTypes; @@ -13,15 +13,15 @@ function registerSparsevec(Sequelize) { } toSql() { - return utils.sparsevecType(this._dimensions).toUpperCase(); + return sparsevecType(this._dimensions).toUpperCase(); } _stringify(value) { - return utils.sparsevecToSql(value); + return sparsevecToSql(value); } static parse(value) { - return utils.sparsevecFromSql(value); + return sparsevecFromSql(value); } } @@ -45,4 +45,4 @@ function registerSparsevec(Sequelize) { Sequelize.SPARSEVEC ??= DataTypes.SPARSEVEC; } -module.exports = {registerSparsevec}; +export { registerSparsevec }; diff --git a/src/sequelize/vector.js b/src/sequelize/vector.js index 93bc68b..9f38fc6 100644 --- a/src/sequelize/vector.js +++ b/src/sequelize/vector.js @@ -1,5 +1,5 @@ -const util = require('node:util'); -const utils = require('../utils'); +import util from 'node:util'; +import { vectorType, vectorToSql, vectorFromSql } from '../utils/index.js'; function registerVector(Sequelize) { const DataTypes = Sequelize.DataTypes; @@ -13,15 +13,15 @@ function registerVector(Sequelize) { } toSql() { - return utils.vectorType(this._dimensions).toUpperCase(); + return vectorType(this._dimensions).toUpperCase(); } _stringify(value) { - return utils.vectorToSql(value); + return vectorToSql(value); } static parse(value) { - return utils.vectorFromSql(value); + return vectorFromSql(value); } } @@ -45,4 +45,4 @@ function registerVector(Sequelize) { Sequelize.VECTOR ??= DataTypes.VECTOR; } -module.exports = {registerVector}; +export { registerVector }; diff --git a/src/utils/index.js b/src/utils/index.js index cbee2f5..cebc0a7 100644 --- a/src/utils/index.js +++ b/src/utils/index.js @@ -1,5 +1,5 @@ -const util = require('node:util'); -const { SparseVector } = require('./sparse-vector'); +import util from 'node:util'; +import { SparseVector } from './sparse-vector.js'; function vectorFromSql(value) { if (value === null) { @@ -87,7 +87,9 @@ function sparsevecType(dimensions) { // for backwards compatibility const sqlType = vectorType; -module.exports = { +export default { fromSql, toSql, sqlType }; + +export { fromSql, toSql, vectorFromSql, diff --git a/src/utils/sparse-vector.js b/src/utils/sparse-vector.js index 570fa72..78bd5c7 100644 --- a/src/utils/sparse-vector.js +++ b/src/utils/sparse-vector.js @@ -1,4 +1,4 @@ -const util = require('node:util'); +import util from 'node:util'; class SparseVector { constructor(value, dimensions) { @@ -74,4 +74,4 @@ class SparseVector { } } -module.exports = {SparseVector}; +export { SparseVector }; diff --git a/tests/drizzle-orm.test.mjs b/tests/drizzle-orm.test.js similarity index 100% rename from tests/drizzle-orm.test.mjs rename to tests/drizzle-orm.test.js diff --git a/tests/knex.test.mjs b/tests/knex.test.js similarity index 100% rename from tests/knex.test.mjs rename to tests/knex.test.js diff --git a/tests/kysely.test.mjs b/tests/kysely.test.js similarity index 100% rename from tests/kysely.test.mjs rename to tests/kysely.test.js diff --git a/tests/mikro-orm.test.mjs b/tests/mikro-orm.test.js similarity index 100% rename from tests/mikro-orm.test.mjs rename to tests/mikro-orm.test.js diff --git a/tests/objection.test.mjs b/tests/objection.test.js similarity index 100% rename from tests/objection.test.mjs rename to tests/objection.test.js diff --git a/tests/pg-promise.test.mjs b/tests/pg-promise.test.js similarity index 100% rename from tests/pg-promise.test.mjs rename to tests/pg-promise.test.js diff --git a/tests/pg.test.mjs b/tests/pg.test.js similarity index 100% rename from tests/pg.test.mjs rename to tests/pg.test.js diff --git a/tests/postgres.test.mjs b/tests/postgres.test.js similarity index 100% rename from tests/postgres.test.mjs rename to tests/postgres.test.js diff --git a/tests/prisma.test.mjs b/tests/prisma.test.js similarity index 100% rename from tests/prisma.test.mjs rename to tests/prisma.test.js diff --git a/tests/sequelize.test.mjs b/tests/sequelize.test.js similarity index 100% rename from tests/sequelize.test.mjs rename to tests/sequelize.test.js diff --git a/tests/slonik.test.mjs b/tests/slonik.test.js similarity index 100% rename from tests/slonik.test.mjs rename to tests/slonik.test.js diff --git a/tests/sparse-vector.test.mjs b/tests/sparse-vector.test.js similarity index 100% rename from tests/sparse-vector.test.mjs rename to tests/sparse-vector.test.js diff --git a/tests/typeorm.test.mjs b/tests/typeorm.test.js similarity index 100% rename from tests/typeorm.test.mjs rename to tests/typeorm.test.js diff --git a/tests/utils.test.mjs b/tests/utils.test.js similarity index 100% rename from tests/utils.test.mjs rename to tests/utils.test.js diff --git a/types/index.d.ts b/types/index.d.ts index 6975fb0..cd3e4b3 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -1,4 +1,9 @@ -import { fromSql } from "./utils"; -import { toSql } from "./utils"; -import { SparseVector } from "./utils"; -export { fromSql, toSql, SparseVector }; +declare namespace _default { + export { fromSql }; + export { toSql }; +} +export default _default; +export { SparseVector }; +import { fromSql } from './utils/index.js'; +import { toSql } from './utils/index.js'; +import { SparseVector } from './utils/index.js'; diff --git a/types/knex/index.d.ts b/types/knex/index.d.ts index 5e00b5a..4a20aac 100644 --- a/types/knex/index.d.ts +++ b/types/knex/index.d.ts @@ -1,3 +1,7 @@ -import { fromSql } from "../utils"; -import { toSql } from "../utils"; -export { fromSql, toSql }; +declare namespace _default { + export { fromSql }; + export { toSql }; +} +export default _default; +import { fromSql } from '../utils/index.js'; +import { toSql } from '../utils/index.js'; diff --git a/types/kysely/index.d.ts b/types/kysely/index.d.ts index c0f1a75..52cebf3 100644 --- a/types/kysely/index.d.ts +++ b/types/kysely/index.d.ts @@ -1,9 +1,13 @@ -import { fromSql } from ".."; -import { toSql } from ".."; +declare namespace _default { + export { fromSql }; + export { toSql }; +} +export default _default; +import { fromSql } from '../utils/index.js'; +import { toSql } from '../utils/index.js'; export function l2Distance(column: any, value: any): import("kysely").RawBuilder; export function maxInnerProduct(column: any, value: any): import("kysely").RawBuilder; export function cosineDistance(column: any, value: any): import("kysely").RawBuilder; export function l1Distance(column: any, value: any): import("kysely").RawBuilder; export function hammingDistance(column: any, value: any): import("kysely").RawBuilder; export function jaccardDistance(column: any, value: any): import("kysely").RawBuilder; -export { fromSql, toSql }; diff --git a/types/mikro-orm/bit.d.ts b/types/mikro-orm/bit.d.ts index 7f2dfd8..2764692 100644 --- a/types/mikro-orm/bit.d.ts +++ b/types/mikro-orm/bit.d.ts @@ -2,4 +2,4 @@ export class BitType extends Type { constructor(); getColumnType(prop: any, platform: any): any; } -import { Type } from "@mikro-orm/core/types"; +import { Type } from '@mikro-orm/core'; diff --git a/types/mikro-orm/halfvec.d.ts b/types/mikro-orm/halfvec.d.ts index 61bc957..c523c60 100644 --- a/types/mikro-orm/halfvec.d.ts +++ b/types/mikro-orm/halfvec.d.ts @@ -4,4 +4,4 @@ export class HalfvecType extends Type { convertToJSValue(value: any, platform: any): any; getColumnType(prop: any, platform: any): any; } -import { Type } from "@mikro-orm/core/types"; +import { Type } from '@mikro-orm/core'; diff --git a/types/mikro-orm/index.d.ts b/types/mikro-orm/index.d.ts index ae14f9c..ed41d01 100644 --- a/types/mikro-orm/index.d.ts +++ b/types/mikro-orm/index.d.ts @@ -1,7 +1,7 @@ -import { VectorType } from "./vector"; -import { HalfvecType } from "./halfvec"; -import { BitType } from "./bit"; -import { SparsevecType } from "./sparsevec"; +import { VectorType } from './vector.js'; +import { HalfvecType } from './halfvec.js'; +import { BitType } from './bit.js'; +import { SparsevecType } from './sparsevec.js'; export function l2Distance(column: any, value: any, em: any): any; export function maxInnerProduct(column: any, value: any, em: any): any; export function cosineDistance(column: any, value: any, em: any): any; diff --git a/types/mikro-orm/sparsevec.d.ts b/types/mikro-orm/sparsevec.d.ts index 33cb2c1..d5378b4 100644 --- a/types/mikro-orm/sparsevec.d.ts +++ b/types/mikro-orm/sparsevec.d.ts @@ -1,8 +1,7 @@ export class SparsevecType extends Type { constructor(); convertToDatabaseValue(value: any, platform: any): any; - convertToJSValue(value: any, platform: any): utils.SparseVector; + convertToJSValue(value: any, platform: any): import("../utils/sparse-vector.js").SparseVector; getColumnType(prop: any, platform: any): any; } -import { Type } from "@mikro-orm/core/types"; -import utils = require("../utils"); +import { Type } from '@mikro-orm/core'; diff --git a/types/mikro-orm/vector.d.ts b/types/mikro-orm/vector.d.ts index 036d533..31ae47c 100644 --- a/types/mikro-orm/vector.d.ts +++ b/types/mikro-orm/vector.d.ts @@ -4,4 +4,4 @@ export class VectorType extends Type { convertToJSValue(value: any, platform: any): any; getColumnType(prop: any, platform: any): any; } -import { Type } from "@mikro-orm/core/types"; +import { Type } from '@mikro-orm/core'; diff --git a/types/objection/index.d.ts b/types/objection/index.d.ts index 5a5a848..b21ddcf 100644 --- a/types/objection/index.d.ts +++ b/types/objection/index.d.ts @@ -1,9 +1,13 @@ -import { fromSql } from "../knex"; -import { toSql } from "../knex"; +declare namespace _default { + export { fromSql }; + export { toSql }; +} +export default _default; +import { fromSql } from '../utils/index.js'; +import { toSql } from '../utils/index.js'; export function l2Distance(column: any, value: any): import("objection").RawBuilder; export function maxInnerProduct(column: any, value: any): import("objection").RawBuilder; export function cosineDistance(column: any, value: any): import("objection").RawBuilder; export function l1Distance(column: any, value: any): import("objection").RawBuilder; export function hammingDistance(column: any, value: any): import("objection").RawBuilder; export function jaccardDistance(column: any, value: any): import("objection").RawBuilder; -export { fromSql, toSql }; diff --git a/types/pg-promise/index.d.ts b/types/pg-promise/index.d.ts index ec4eb33..1f391e1 100644 --- a/types/pg-promise/index.d.ts +++ b/types/pg-promise/index.d.ts @@ -1,4 +1 @@ -import { registerType } from "../pg"; -import { registerTypes } from "../pg"; -import { toSql } from "../pg"; -export { registerType, registerTypes, toSql }; +export { default } from "../pg/index.js"; diff --git a/types/pg/index.d.ts b/types/pg/index.d.ts index cffdb62..3be8fc0 100644 --- a/types/pg/index.d.ts +++ b/types/pg/index.d.ts @@ -1,4 +1,9 @@ -export function registerType(client: any): Promise; -export function registerTypes(client: any): Promise; -import { toSql } from "../utils"; -export { toSql }; +declare namespace _default { + export { registerType }; + export { registerTypes }; + export { toSql }; +} +export default _default; +declare function registerType(client: any): Promise; +declare function registerTypes(client: any): Promise; +import { toSql } from '../utils/index.js'; diff --git a/types/sequelize/index.d.ts b/types/sequelize/index.d.ts index 38107a9..20a033e 100644 --- a/types/sequelize/index.d.ts +++ b/types/sequelize/index.d.ts @@ -1,5 +1,10 @@ -export function registerType(Sequelize: any): void; -export function registerTypes(Sequelize: any): void; +declare namespace _default { + export { registerType }; + export { registerTypes }; +} +export default _default; +declare function registerType(Sequelize: any): void; +declare function registerTypes(Sequelize: any): void; export function l2Distance(column: any, value: any, sequelize: any): any; export function maxInnerProduct(column: any, value: any, sequelize: any): any; export function cosineDistance(column: any, value: any, sequelize: any): any; diff --git a/types/utils/index.d.ts b/types/utils/index.d.ts index 4d610ad..3e4bdd1 100644 --- a/types/utils/index.d.ts +++ b/types/utils/index.d.ts @@ -1,15 +1,21 @@ +declare namespace _default { + export { fromSql }; + export { toSql }; + export { sqlType }; +} +export default _default; export function fromSql(value: any): any; export function toSql(value: any): any; +export function sqlType(dimensions: any): any; export function vectorFromSql(value: any): any; export function vectorToSql(value: any): any; export function halfvecFromSql(value: any): any; export function halfvecToSql(value: any): any; export function sparsevecFromSql(value: any): SparseVector; export function sparsevecToSql(value: any): any; -export function sqlType(dimensions: any): any; export function vectorType(dimensions: any): any; export function halfvecType(dimensions: any): any; export function bitType(dimensions: any): any; export function sparsevecType(dimensions: any): any; -import { SparseVector } from "./sparse-vector"; +import { SparseVector } from './sparse-vector.js'; export { SparseVector }; From aad0eef1b251a518b5c10c0648547438eedc7c4a Mon Sep 17 00:00:00 2001 From: Andrew Kane Date: Mon, 12 Jan 2026 12:52:15 -0800 Subject: [PATCH 2/9] Improved code [skip ci] --- src/mikro-orm/bit.js | 4 +--- src/mikro-orm/halfvec.js | 4 +--- src/mikro-orm/index.js | 34 +++++++++++----------------------- src/mikro-orm/sparsevec.js | 4 +--- src/mikro-orm/vector.js | 4 +--- types/mikro-orm/index.d.ts | 9 ++++----- 6 files changed, 19 insertions(+), 40 deletions(-) diff --git a/src/mikro-orm/bit.js b/src/mikro-orm/bit.js index de3e6a9..4e3e491 100644 --- a/src/mikro-orm/bit.js +++ b/src/mikro-orm/bit.js @@ -1,10 +1,8 @@ import { Type } from '@mikro-orm/core'; import { bitType } from '../utils/index.js'; -class BitType extends Type { +export class BitType extends Type { getColumnType(prop, platform) { return bitType(prop.length); } } - -export { BitType }; diff --git a/src/mikro-orm/halfvec.js b/src/mikro-orm/halfvec.js index 1beef8d..8321604 100644 --- a/src/mikro-orm/halfvec.js +++ b/src/mikro-orm/halfvec.js @@ -1,7 +1,7 @@ import { Type } from '@mikro-orm/core'; import { halfvecFromSql, halfvecToSql, halfvecType } from '../utils/index.js'; -class HalfvecType extends Type { +export class HalfvecType extends Type { convertToDatabaseValue(value, platform) { if (value === null) { return null; @@ -20,5 +20,3 @@ class HalfvecType extends Type { return halfvecType(prop.dimensions); } } - -export { HalfvecType }; diff --git a/src/mikro-orm/index.js b/src/mikro-orm/index.js index f1d9ee8..2e85f5b 100644 --- a/src/mikro-orm/index.js +++ b/src/mikro-orm/index.js @@ -1,8 +1,4 @@ import { raw } from '@mikro-orm/core'; -import { BitType } from './bit.js'; -import { HalfvecType } from './halfvec.js'; -import { SparsevecType } from './sparsevec.js'; -import { VectorType } from './vector.js'; import { toSql } from '../utils/index.js'; function distance(op, column, value, em, binary) { @@ -13,39 +9,31 @@ function distance(op, column, value, em, binary) { } } -function l2Distance(column, value, em) { +export { BitType } from './bit.js'; +export { HalfvecType } from './halfvec.js'; +export { SparsevecType } from './sparsevec.js'; +export { VectorType } from './vector.js'; + +export function l2Distance(column, value, em) { return distance('<->', column, value, em); } -function maxInnerProduct(column, value, em) { +export function maxInnerProduct(column, value, em) { return distance('<#>', column, value, em); } -function cosineDistance(column, value, em) { +export function cosineDistance(column, value, em) { return distance('<=>', column, value, em); } -function l1Distance(column, value, em) { +export function l1Distance(column, value, em) { return distance('<+>', column, value, em); } -function hammingDistance(column, value, em) { +export function hammingDistance(column, value, em) { return distance('<~>', column, value, em, true); } -function jaccardDistance(column, value, em) { +export function jaccardDistance(column, value, em) { return distance('<%>', column, value, em, true); } - -export { - VectorType, - HalfvecType, - BitType, - SparsevecType, - l2Distance, - maxInnerProduct, - cosineDistance, - l1Distance, - hammingDistance, - jaccardDistance -}; diff --git a/src/mikro-orm/sparsevec.js b/src/mikro-orm/sparsevec.js index af48818..9f29243 100644 --- a/src/mikro-orm/sparsevec.js +++ b/src/mikro-orm/sparsevec.js @@ -1,7 +1,7 @@ import { Type } from '@mikro-orm/core'; import { sparsevecFromSql, sparsevecToSql, sparsevecType } from '../utils/index.js'; -class SparsevecType extends Type { +export class SparsevecType extends Type { convertToDatabaseValue(value, platform) { if (value === null) { return null; @@ -20,5 +20,3 @@ class SparsevecType extends Type { return sparsevecType(prop.dimensions); } } - -export { SparsevecType }; diff --git a/src/mikro-orm/vector.js b/src/mikro-orm/vector.js index f53258b..6ae172e 100644 --- a/src/mikro-orm/vector.js +++ b/src/mikro-orm/vector.js @@ -1,7 +1,7 @@ import { Type } from '@mikro-orm/core'; import { vectorFromSql, vectorToSql, vectorType } from '../utils/index.js'; -class VectorType extends Type { +export class VectorType extends Type { convertToDatabaseValue(value, platform) { if (value === null) { return null; @@ -20,5 +20,3 @@ class VectorType extends Type { return vectorType(prop.dimensions); } } - -export { VectorType }; diff --git a/types/mikro-orm/index.d.ts b/types/mikro-orm/index.d.ts index ed41d01..178b920 100644 --- a/types/mikro-orm/index.d.ts +++ b/types/mikro-orm/index.d.ts @@ -1,11 +1,10 @@ -import { VectorType } from './vector.js'; -import { HalfvecType } from './halfvec.js'; -import { BitType } from './bit.js'; -import { SparsevecType } from './sparsevec.js'; export function l2Distance(column: any, value: any, em: any): any; export function maxInnerProduct(column: any, value: any, em: any): any; export function cosineDistance(column: any, value: any, em: any): any; export function l1Distance(column: any, value: any, em: any): any; export function hammingDistance(column: any, value: any, em: any): any; export function jaccardDistance(column: any, value: any, em: any): any; -export { VectorType, HalfvecType, BitType, SparsevecType }; +export { BitType } from "./bit.js"; +export { HalfvecType } from "./halfvec.js"; +export { SparsevecType } from "./sparsevec.js"; +export { VectorType } from "./vector.js"; From fb6105577fa7f9c989dbc888f9e03c228751c313 Mon Sep 17 00:00:00 2001 From: Andrew Kane Date: Mon, 12 Jan 2026 12:55:22 -0800 Subject: [PATCH 3/9] Improved code [skip ci] --- src/kysely/index.js | 28 ++++++++-------------------- src/objection/index.js | 21 ++++++--------------- types/kysely/index.d.ts | 12 ++++++------ types/objection/index.d.ts | 12 ++++++------ 4 files changed, 26 insertions(+), 47 deletions(-) diff --git a/src/kysely/index.js b/src/kysely/index.js index 758b998..263f04e 100644 --- a/src/kysely/index.js +++ b/src/kysely/index.js @@ -1,40 +1,28 @@ import { sql } from 'kysely'; import { fromSql, toSql } from '../utils/index.js'; -function l2Distance(column, value) { +export default { fromSql, toSql }; + +export function l2Distance(column, value) { return sql`${sql.ref(column)} <-> ${toSql(value)}`; } -function maxInnerProduct(column, value) { +export function maxInnerProduct(column, value) { return sql`${sql.ref(column)} <#> ${toSql(value)}`; } -function cosineDistance(column, value) { +export function cosineDistance(column, value) { return sql`${sql.ref(column)} <=> ${toSql(value)}`; } -function l1Distance(column, value) { +export function l1Distance(column, value) { return sql`${sql.ref(column)} <+> ${toSql(value)}`; } -function hammingDistance(column, value) { +export function hammingDistance(column, value) { return sql`${sql.ref(column)} <~> ${value}`; } -function jaccardDistance(column, value) { +export function jaccardDistance(column, value) { return sql`${sql.ref(column)} <%> ${value}`; } - -export default { - fromSql, - toSql -}; - -export { - l2Distance, - maxInnerProduct, - cosineDistance, - l1Distance, - hammingDistance, - jaccardDistance -}; diff --git a/src/objection/index.js b/src/objection/index.js index eac55c7..088f00a 100644 --- a/src/objection/index.js +++ b/src/objection/index.js @@ -2,27 +2,27 @@ import { fromSql, toSql } from '../utils/index.js'; import { raw } from 'objection'; import '../knex/index.js'; -function l2Distance(column, value) { +export function l2Distance(column, value) { return raw('?? <-> ?', [column, toSql(value)]); } -function maxInnerProduct(column, value) { +export function maxInnerProduct(column, value) { return raw('?? <#> ?', [column, toSql(value)]); } -function cosineDistance(column, value) { +export function cosineDistance(column, value) { return raw('?? <=> ?', [column, toSql(value)]); } -function l1Distance(column, value) { +export function l1Distance(column, value) { return raw('?? <+> ?', [column, toSql(value)]); } -function hammingDistance(column, value) { +export function hammingDistance(column, value) { return raw('?? <~> ?', [column, value]); } -function jaccardDistance(column, value) { +export function jaccardDistance(column, value) { return raw('?? <%> ?', [column, value]); } @@ -30,12 +30,3 @@ export default { fromSql, toSql }; - -export { - l2Distance, - maxInnerProduct, - cosineDistance, - l1Distance, - hammingDistance, - jaccardDistance -}; diff --git a/types/kysely/index.d.ts b/types/kysely/index.d.ts index 52cebf3..efd6f3f 100644 --- a/types/kysely/index.d.ts +++ b/types/kysely/index.d.ts @@ -1,3 +1,9 @@ +export function l2Distance(column: any, value: any): import("kysely").RawBuilder; +export function maxInnerProduct(column: any, value: any): import("kysely").RawBuilder; +export function cosineDistance(column: any, value: any): import("kysely").RawBuilder; +export function l1Distance(column: any, value: any): import("kysely").RawBuilder; +export function hammingDistance(column: any, value: any): import("kysely").RawBuilder; +export function jaccardDistance(column: any, value: any): import("kysely").RawBuilder; declare namespace _default { export { fromSql }; export { toSql }; @@ -5,9 +11,3 @@ declare namespace _default { export default _default; import { fromSql } from '../utils/index.js'; import { toSql } from '../utils/index.js'; -export function l2Distance(column: any, value: any): import("kysely").RawBuilder; -export function maxInnerProduct(column: any, value: any): import("kysely").RawBuilder; -export function cosineDistance(column: any, value: any): import("kysely").RawBuilder; -export function l1Distance(column: any, value: any): import("kysely").RawBuilder; -export function hammingDistance(column: any, value: any): import("kysely").RawBuilder; -export function jaccardDistance(column: any, value: any): import("kysely").RawBuilder; diff --git a/types/objection/index.d.ts b/types/objection/index.d.ts index b21ddcf..2749fa8 100644 --- a/types/objection/index.d.ts +++ b/types/objection/index.d.ts @@ -1,3 +1,9 @@ +export function l2Distance(column: any, value: any): import("objection").RawBuilder; +export function maxInnerProduct(column: any, value: any): import("objection").RawBuilder; +export function cosineDistance(column: any, value: any): import("objection").RawBuilder; +export function l1Distance(column: any, value: any): import("objection").RawBuilder; +export function hammingDistance(column: any, value: any): import("objection").RawBuilder; +export function jaccardDistance(column: any, value: any): import("objection").RawBuilder; declare namespace _default { export { fromSql }; export { toSql }; @@ -5,9 +11,3 @@ declare namespace _default { export default _default; import { fromSql } from '../utils/index.js'; import { toSql } from '../utils/index.js'; -export function l2Distance(column: any, value: any): import("objection").RawBuilder; -export function maxInnerProduct(column: any, value: any): import("objection").RawBuilder; -export function cosineDistance(column: any, value: any): import("objection").RawBuilder; -export function l1Distance(column: any, value: any): import("objection").RawBuilder; -export function hammingDistance(column: any, value: any): import("objection").RawBuilder; -export function jaccardDistance(column: any, value: any): import("objection").RawBuilder; From 1cf25ea25fda66b39ade6997dd67e074b538bdd9 Mon Sep 17 00:00:00 2001 From: Andrew Kane Date: Mon, 12 Jan 2026 12:59:37 -0800 Subject: [PATCH 4/9] Improved code [skip ci] --- src/sequelize/halfvec.js | 4 +--- src/sequelize/index.js | 21 ++++++------------- src/sequelize/sparsevec.js | 4 +--- src/sequelize/vector.js | 4 +--- src/utils/index.js | 43 +++++++++++++------------------------- src/utils/sparse-vector.js | 4 +--- types/sequelize/index.d.ts | 12 +++++------ types/utils/index.d.ts | 24 ++++++++++----------- 8 files changed, 42 insertions(+), 74 deletions(-) diff --git a/src/sequelize/halfvec.js b/src/sequelize/halfvec.js index 402ce01..2d96003 100644 --- a/src/sequelize/halfvec.js +++ b/src/sequelize/halfvec.js @@ -1,7 +1,7 @@ import util from 'node:util'; import { halfvecType, halfvecToSql, halfvecFromSql } from '../utils/index.js'; -function registerHalfvec(Sequelize) { +export function registerHalfvec(Sequelize) { const DataTypes = Sequelize.DataTypes; const PgTypes = DataTypes.postgres; const ABSTRACT = DataTypes.ABSTRACT.prototype.constructor; @@ -44,5 +44,3 @@ function registerHalfvec(Sequelize) { // for migrations Sequelize.HALFVEC ??= DataTypes.HALFVEC; } - -export { registerHalfvec }; diff --git a/src/sequelize/index.js b/src/sequelize/index.js index fb646df..aaef7e2 100644 --- a/src/sequelize/index.js +++ b/src/sequelize/index.js @@ -16,27 +16,27 @@ function distance(op, column, value, sequelize, binary) { return sequelize.literal(`${quotedColumn} ${op} ${escapedValue}`); } -function l2Distance(column, value, sequelize) { +export function l2Distance(column, value, sequelize) { return distance('<->', column, value, sequelize); } -function maxInnerProduct(column, value, sequelize) { +export function maxInnerProduct(column, value, sequelize) { return distance('<#>', column, value, sequelize); } -function cosineDistance(column, value, sequelize) { +export function cosineDistance(column, value, sequelize) { return distance('<=>', column, value, sequelize); } -function l1Distance(column, value, sequelize) { +export function l1Distance(column, value, sequelize) { return distance('<+>', column, value, sequelize); } -function hammingDistance(column, value, sequelize) { +export function hammingDistance(column, value, sequelize) { return distance('<~>', column, value, sequelize, true); } -function jaccardDistance(column, value, sequelize) { +export function jaccardDistance(column, value, sequelize) { return distance('<%>', column, value, sequelize, true); } @@ -46,12 +46,3 @@ export default { registerType, registerTypes }; - -export { - l2Distance, - maxInnerProduct, - cosineDistance, - l1Distance, - hammingDistance, - jaccardDistance -}; diff --git a/src/sequelize/sparsevec.js b/src/sequelize/sparsevec.js index 404a782..babd3cd 100644 --- a/src/sequelize/sparsevec.js +++ b/src/sequelize/sparsevec.js @@ -1,7 +1,7 @@ import util from 'node:util'; import { sparsevecType, sparsevecToSql, sparsevecFromSql } from '../utils/index.js'; -function registerSparsevec(Sequelize) { +export function registerSparsevec(Sequelize) { const DataTypes = Sequelize.DataTypes; const PgTypes = DataTypes.postgres; const ABSTRACT = DataTypes.ABSTRACT.prototype.constructor; @@ -44,5 +44,3 @@ function registerSparsevec(Sequelize) { // for migrations Sequelize.SPARSEVEC ??= DataTypes.SPARSEVEC; } - -export { registerSparsevec }; diff --git a/src/sequelize/vector.js b/src/sequelize/vector.js index 9f38fc6..221d663 100644 --- a/src/sequelize/vector.js +++ b/src/sequelize/vector.js @@ -1,7 +1,7 @@ import util from 'node:util'; import { vectorType, vectorToSql, vectorFromSql } from '../utils/index.js'; -function registerVector(Sequelize) { +export function registerVector(Sequelize) { const DataTypes = Sequelize.DataTypes; const PgTypes = DataTypes.postgres; const ABSTRACT = DataTypes.ABSTRACT.prototype.constructor; @@ -44,5 +44,3 @@ function registerVector(Sequelize) { // for migrations Sequelize.VECTOR ??= DataTypes.VECTOR; } - -export { registerVector }; diff --git a/src/utils/index.js b/src/utils/index.js index cebc0a7..539b348 100644 --- a/src/utils/index.js +++ b/src/utils/index.js @@ -1,38 +1,38 @@ import util from 'node:util'; import { SparseVector } from './sparse-vector.js'; -function vectorFromSql(value) { +export function vectorFromSql(value) { if (value === null) { return null; } return value.substring(1, value.length - 1).split(',').map((v) => parseFloat(v)); } -function vectorToSql(value) { +export function vectorToSql(value) { if (Array.isArray(value)) { return JSON.stringify(value.map((v) => Number(v))); } return value; } -const halfvecFromSql = vectorFromSql; -const halfvecToSql = vectorToSql; +export const halfvecFromSql = vectorFromSql; +export const halfvecToSql = vectorToSql; -function sparsevecFromSql(value) { +export function sparsevecFromSql(value) { if (value === null) { return null; } return new SparseVector(value); } -function sparsevecToSql(value) { +export function sparsevecToSql(value) { if (value instanceof SparseVector) { return value.toPostgres(); } return value; } -function fromSql(value) { +export function fromSql(value) { if (value === null) { return null; } else if (value[0] == '[') { @@ -44,7 +44,7 @@ function fromSql(value) { } } -function toSql(value) { +export function toSql(value) { if (value === null) { return null; } else if (Array.isArray(value)) { @@ -68,40 +68,25 @@ function typeWithDimensions(name, dimensions) { return util.format('%s(%d)', name, dimensions); } -function vectorType(dimensions) { +export function vectorType(dimensions) { return typeWithDimensions('vector', dimensions); } -function halfvecType(dimensions) { +export function halfvecType(dimensions) { return typeWithDimensions('halfvec', dimensions); } -function bitType(dimensions) { +export function bitType(dimensions) { return typeWithDimensions('bit', dimensions); } -function sparsevecType(dimensions) { +export function sparsevecType(dimensions) { return typeWithDimensions('sparsevec', dimensions); } // for backwards compatibility -const sqlType = vectorType; +export const sqlType = vectorType; export default { fromSql, toSql, sqlType }; -export { - fromSql, - toSql, - vectorFromSql, - vectorToSql, - halfvecFromSql, - halfvecToSql, - sparsevecFromSql, - sparsevecToSql, - sqlType, - vectorType, - halfvecType, - bitType, - sparsevecType, - SparseVector -}; +export { SparseVector }; diff --git a/src/utils/sparse-vector.js b/src/utils/sparse-vector.js index 78bd5c7..d37d1bb 100644 --- a/src/utils/sparse-vector.js +++ b/src/utils/sparse-vector.js @@ -1,6 +1,6 @@ import util from 'node:util'; -class SparseVector { +export class SparseVector { constructor(value, dimensions) { if (typeof value === 'string') { this.#fromSql(value); @@ -73,5 +73,3 @@ class SparseVector { } } } - -export { SparseVector }; diff --git a/types/sequelize/index.d.ts b/types/sequelize/index.d.ts index 20a033e..b12cf62 100644 --- a/types/sequelize/index.d.ts +++ b/types/sequelize/index.d.ts @@ -1,3 +1,9 @@ +export function l2Distance(column: any, value: any, sequelize: any): any; +export function maxInnerProduct(column: any, value: any, sequelize: any): any; +export function cosineDistance(column: any, value: any, sequelize: any): any; +export function l1Distance(column: any, value: any, sequelize: any): any; +export function hammingDistance(column: any, value: any, sequelize: any): any; +export function jaccardDistance(column: any, value: any, sequelize: any): any; declare namespace _default { export { registerType }; export { registerTypes }; @@ -5,9 +11,3 @@ declare namespace _default { export default _default; declare function registerType(Sequelize: any): void; declare function registerTypes(Sequelize: any): void; -export function l2Distance(column: any, value: any, sequelize: any): any; -export function maxInnerProduct(column: any, value: any, sequelize: any): any; -export function cosineDistance(column: any, value: any, sequelize: any): any; -export function l1Distance(column: any, value: any, sequelize: any): any; -export function hammingDistance(column: any, value: any, sequelize: any): any; -export function jaccardDistance(column: any, value: any, sequelize: any): any; diff --git a/types/utils/index.d.ts b/types/utils/index.d.ts index 3e4bdd1..078997e 100644 --- a/types/utils/index.d.ts +++ b/types/utils/index.d.ts @@ -1,21 +1,21 @@ -declare namespace _default { - export { fromSql }; - export { toSql }; - export { sqlType }; -} -export default _default; -export function fromSql(value: any): any; -export function toSql(value: any): any; -export function sqlType(dimensions: any): any; export function vectorFromSql(value: any): any; export function vectorToSql(value: any): any; -export function halfvecFromSql(value: any): any; -export function halfvecToSql(value: any): any; export function sparsevecFromSql(value: any): SparseVector; export function sparsevecToSql(value: any): any; +export function fromSql(value: any): any; +export function toSql(value: any): any; export function vectorType(dimensions: any): any; export function halfvecType(dimensions: any): any; export function bitType(dimensions: any): any; export function sparsevecType(dimensions: any): any; -import { SparseVector } from './sparse-vector.js'; +export function halfvecFromSql(value: any): any; +export function halfvecToSql(value: any): any; +export function sqlType(dimensions: any): any; +declare namespace _default { + export { fromSql }; + export { toSql }; + export { sqlType }; +} +export default _default; export { SparseVector }; +import { SparseVector } from './sparse-vector.js'; From c10f4e807bc2c924fcf25932365701ff54b2759f Mon Sep 17 00:00:00 2001 From: Andrew Kane Date: Mon, 12 Jan 2026 13:01:25 -0800 Subject: [PATCH 5/9] Improved code [skip ci] --- src/utils/index.js | 8 ++++---- types/utils/index.d.ts | 5 ++--- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/utils/index.js b/src/utils/index.js index 539b348..b525f02 100644 --- a/src/utils/index.js +++ b/src/utils/index.js @@ -1,6 +1,8 @@ import util from 'node:util'; import { SparseVector } from './sparse-vector.js'; +export { SparseVector } from './sparse-vector.js'; + export function vectorFromSql(value) { if (value === null) { return null; @@ -15,8 +17,8 @@ export function vectorToSql(value) { return value; } -export const halfvecFromSql = vectorFromSql; -export const halfvecToSql = vectorToSql; +export { vectorFromSql as halfvecFromSql }; +export { vectorToSql as halfvecToSql }; export function sparsevecFromSql(value) { if (value === null) { @@ -88,5 +90,3 @@ export function sparsevecType(dimensions) { export const sqlType = vectorType; export default { fromSql, toSql, sqlType }; - -export { SparseVector }; diff --git a/types/utils/index.d.ts b/types/utils/index.d.ts index 078997e..d1f3751 100644 --- a/types/utils/index.d.ts +++ b/types/utils/index.d.ts @@ -8,8 +8,7 @@ export function vectorType(dimensions: any): any; export function halfvecType(dimensions: any): any; export function bitType(dimensions: any): any; export function sparsevecType(dimensions: any): any; -export function halfvecFromSql(value: any): any; -export function halfvecToSql(value: any): any; +export { SparseVector } from "./sparse-vector.js"; export function sqlType(dimensions: any): any; declare namespace _default { export { fromSql }; @@ -17,5 +16,5 @@ declare namespace _default { export { sqlType }; } export default _default; -export { SparseVector }; import { SparseVector } from './sparse-vector.js'; +export { vectorFromSql as halfvecFromSql, vectorToSql as halfvecToSql }; From 2e2db324cdcd3d66a0f956be42c4fa858a5a9c8a Mon Sep 17 00:00:00 2001 From: Andrew Kane Date: Mon, 12 Jan 2026 14:27:38 -0800 Subject: [PATCH 6/9] Updated changelog [skip ci] --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b3d3bf3..26e13d5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.3.0 (unreleased) + +- Switched to ESM + ## 0.2.1 (2025-05-20) - Improved support for migrations with Sequelize From ba704ca7967f6862b2e4092db974f6b498732a1b Mon Sep 17 00:00:00 2001 From: Andrew Kane Date: Mon, 12 Jan 2026 14:28:19 -0800 Subject: [PATCH 7/9] Dropped support for Node < 20 [skip ci] --- CHANGELOG.md | 1 + package.json | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 26e13d5..b07daff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ ## 0.3.0 (unreleased) - Switched to ESM +- Dropped support for Node < 20 ## 0.2.1 (2025-05-20) diff --git a/package.json b/package.json index a066faa..0063c63 100644 --- a/package.json +++ b/package.json @@ -87,7 +87,7 @@ "types" ], "engines": { - "node": ">=18" + "node": ">=20" }, "scripts": { "build": "tsc", From ec7c659528c59aafccdcc7b7ae598d5828b2885b Mon Sep 17 00:00:00 2001 From: Andrew Kane Date: Mon, 12 Jan 2026 14:45:25 -0800 Subject: [PATCH 8/9] Improved code [skip ci] --- src/index.js | 2 +- types/index.d.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/index.js b/src/index.js index 46a69e8..55e4dd1 100644 --- a/src/index.js +++ b/src/index.js @@ -2,4 +2,4 @@ import { fromSql, toSql, SparseVector } from './utils/index.js'; export default { fromSql, toSql }; -export { SparseVector }; +export { fromSql, toSql, SparseVector }; diff --git a/types/index.d.ts b/types/index.d.ts index cd3e4b3..f97eb38 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -3,7 +3,7 @@ declare namespace _default { export { toSql }; } export default _default; -export { SparseVector }; import { fromSql } from './utils/index.js'; import { toSql } from './utils/index.js'; import { SparseVector } from './utils/index.js'; +export { fromSql, toSql, SparseVector }; From e63d5aee7c14e7e6628b76965b8d74b9a9587955 Mon Sep 17 00:00:00 2001 From: Andrew Kane Date: Tue, 13 Jan 2026 09:40:39 -0800 Subject: [PATCH 9/9] Improved code [skip ci] --- src/index.js | 4 ++-- src/knex/index.js | 2 ++ src/kysely/index.js | 6 ++++-- src/mikro-orm/index.js | 10 +++++----- src/objection/index.js | 7 +++---- src/pg/index.js | 2 ++ src/sequelize/index.js | 7 +++---- types/knex/index.d.ts | 1 + types/kysely/index.d.ts | 1 + types/objection/index.d.ts | 1 + types/pg/index.d.ts | 5 +++-- types/sequelize/index.d.ts | 4 ++-- 12 files changed, 29 insertions(+), 21 deletions(-) diff --git a/src/index.js b/src/index.js index 55e4dd1..3431301 100644 --- a/src/index.js +++ b/src/index.js @@ -1,5 +1,5 @@ import { fromSql, toSql, SparseVector } from './utils/index.js'; -export default { fromSql, toSql }; - export { fromSql, toSql, SparseVector }; + +export default { fromSql, toSql }; diff --git a/src/knex/index.js b/src/knex/index.js index 5b0d80d..7902684 100644 --- a/src/knex/index.js +++ b/src/knex/index.js @@ -44,4 +44,6 @@ knex.QueryBuilder.extend('jaccardDistance', function (column, value) { return this.client.raw('?? <%> ?', [column, value]); }); +export { fromSql, toSql }; + export default { fromSql, toSql }; diff --git a/src/kysely/index.js b/src/kysely/index.js index 263f04e..5c1aabb 100644 --- a/src/kysely/index.js +++ b/src/kysely/index.js @@ -1,8 +1,6 @@ import { sql } from 'kysely'; import { fromSql, toSql } from '../utils/index.js'; -export default { fromSql, toSql }; - export function l2Distance(column, value) { return sql`${sql.ref(column)} <-> ${toSql(value)}`; } @@ -26,3 +24,7 @@ export function hammingDistance(column, value) { export function jaccardDistance(column, value) { return sql`${sql.ref(column)} <%> ${value}`; } + +export { fromSql, toSql }; + +export default { fromSql, toSql }; diff --git a/src/mikro-orm/index.js b/src/mikro-orm/index.js index 2e85f5b..432fd79 100644 --- a/src/mikro-orm/index.js +++ b/src/mikro-orm/index.js @@ -1,6 +1,11 @@ import { raw } from '@mikro-orm/core'; import { toSql } from '../utils/index.js'; +export { BitType } from './bit.js'; +export { HalfvecType } from './halfvec.js'; +export { SparsevecType } from './sparsevec.js'; +export { VectorType } from './vector.js'; + function distance(op, column, value, em, binary) { if (raw) { return raw(`?? ${op} ?`, [column, binary ? value : toSql(value)]); @@ -9,11 +14,6 @@ function distance(op, column, value, em, binary) { } } -export { BitType } from './bit.js'; -export { HalfvecType } from './halfvec.js'; -export { SparsevecType } from './sparsevec.js'; -export { VectorType } from './vector.js'; - export function l2Distance(column, value, em) { return distance('<->', column, value, em); } diff --git a/src/objection/index.js b/src/objection/index.js index 088f00a..ceae913 100644 --- a/src/objection/index.js +++ b/src/objection/index.js @@ -26,7 +26,6 @@ export function jaccardDistance(column, value) { return raw('?? <%> ?', [column, value]); } -export default { - fromSql, - toSql -}; +export { fromSql, toSql }; + +export default { fromSql, toSql }; diff --git a/src/pg/index.js b/src/pg/index.js index 459547b..982d7b7 100644 --- a/src/pg/index.js +++ b/src/pg/index.js @@ -31,4 +31,6 @@ async function registerTypes(client) { const registerType = registerTypes; +export { registerType, registerTypes, toSql }; + export default { registerType, registerTypes, toSql }; diff --git a/src/sequelize/index.js b/src/sequelize/index.js index aaef7e2..019232c 100644 --- a/src/sequelize/index.js +++ b/src/sequelize/index.js @@ -42,7 +42,6 @@ export function jaccardDistance(column, value, sequelize) { const registerType = registerTypes; -export default { - registerType, - registerTypes -}; +export { registerType, registerTypes }; + +export default { registerType, registerTypes }; diff --git a/types/knex/index.d.ts b/types/knex/index.d.ts index 4a20aac..aa95e69 100644 --- a/types/knex/index.d.ts +++ b/types/knex/index.d.ts @@ -5,3 +5,4 @@ declare namespace _default { export default _default; import { fromSql } from '../utils/index.js'; import { toSql } from '../utils/index.js'; +export { fromSql, toSql }; diff --git a/types/kysely/index.d.ts b/types/kysely/index.d.ts index efd6f3f..f29f408 100644 --- a/types/kysely/index.d.ts +++ b/types/kysely/index.d.ts @@ -11,3 +11,4 @@ declare namespace _default { export default _default; import { fromSql } from '../utils/index.js'; import { toSql } from '../utils/index.js'; +export { fromSql, toSql }; diff --git a/types/objection/index.d.ts b/types/objection/index.d.ts index 2749fa8..e399c17 100644 --- a/types/objection/index.d.ts +++ b/types/objection/index.d.ts @@ -11,3 +11,4 @@ declare namespace _default { export default _default; import { fromSql } from '../utils/index.js'; import { toSql } from '../utils/index.js'; +export { fromSql, toSql }; diff --git a/types/pg/index.d.ts b/types/pg/index.d.ts index 3be8fc0..58e1581 100644 --- a/types/pg/index.d.ts +++ b/types/pg/index.d.ts @@ -4,6 +4,7 @@ declare namespace _default { export { toSql }; } export default _default; -declare function registerType(client: any): Promise; -declare function registerTypes(client: any): Promise; +export function registerType(client: any): Promise; +export function registerTypes(client: any): Promise; import { toSql } from '../utils/index.js'; +export { toSql }; diff --git a/types/sequelize/index.d.ts b/types/sequelize/index.d.ts index b12cf62..7b0ec47 100644 --- a/types/sequelize/index.d.ts +++ b/types/sequelize/index.d.ts @@ -9,5 +9,5 @@ declare namespace _default { export { registerTypes }; } export default _default; -declare function registerType(Sequelize: any): void; -declare function registerTypes(Sequelize: any): void; +export function registerType(Sequelize: any): void; +export function registerTypes(Sequelize: any): void;