drizzle-orm 0.30.10 → 0.31.0-c7963ca

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/column-builder.cjs.map +1 -1
  2. package/column-builder.d.cts +5 -1
  3. package/column-builder.d.ts +5 -1
  4. package/column-builder.js.map +1 -1
  5. package/mysql-core/table.cjs +1 -0
  6. package/mysql-core/table.cjs.map +1 -1
  7. package/mysql-core/table.js +1 -0
  8. package/mysql-core/table.js.map +1 -1
  9. package/mysql-core/utils.d.cts +1 -1
  10. package/mysql-core/utils.d.ts +1 -1
  11. package/package.json +61 -1
  12. package/pg-core/columns/common.cjs +84 -0
  13. package/pg-core/columns/common.cjs.map +1 -1
  14. package/pg-core/columns/common.d.cts +53 -0
  15. package/pg-core/columns/common.d.ts +53 -0
  16. package/pg-core/columns/common.js +82 -0
  17. package/pg-core/columns/common.js.map +1 -1
  18. package/pg-core/columns/index.cjs +9 -1
  19. package/pg-core/columns/index.cjs.map +1 -1
  20. package/pg-core/columns/index.d.cts +4 -0
  21. package/pg-core/columns/index.d.ts +4 -0
  22. package/pg-core/columns/index.js +4 -0
  23. package/pg-core/columns/index.js.map +1 -1
  24. package/pg-core/columns/vector_extension/bit.cjs +58 -0
  25. package/pg-core/columns/vector_extension/bit.cjs.map +1 -0
  26. package/pg-core/columns/vector_extension/bit.d.cts +29 -0
  27. package/pg-core/columns/vector_extension/bit.d.ts +29 -0
  28. package/pg-core/columns/vector_extension/bit.js +32 -0
  29. package/pg-core/columns/vector_extension/bit.js.map +1 -0
  30. package/pg-core/columns/vector_extension/halfvec.cjs +64 -0
  31. package/pg-core/columns/vector_extension/halfvec.cjs.map +1 -0
  32. package/pg-core/columns/vector_extension/halfvec.d.cts +31 -0
  33. package/pg-core/columns/vector_extension/halfvec.d.ts +31 -0
  34. package/pg-core/columns/vector_extension/halfvec.js +38 -0
  35. package/pg-core/columns/vector_extension/halfvec.js.map +1 -0
  36. package/pg-core/columns/vector_extension/sparsevec.cjs +58 -0
  37. package/pg-core/columns/vector_extension/sparsevec.cjs.map +1 -0
  38. package/pg-core/columns/vector_extension/sparsevec.d.cts +29 -0
  39. package/pg-core/columns/vector_extension/sparsevec.d.ts +29 -0
  40. package/pg-core/columns/vector_extension/sparsevec.js +32 -0
  41. package/pg-core/columns/vector_extension/sparsevec.js.map +1 -0
  42. package/pg-core/columns/vector_extension/vector.cjs +61 -0
  43. package/pg-core/columns/vector_extension/vector.cjs.map +1 -0
  44. package/pg-core/columns/vector_extension/vector.d.cts +31 -0
  45. package/pg-core/columns/vector_extension/vector.d.ts +31 -0
  46. package/pg-core/columns/vector_extension/vector.js +35 -0
  47. package/pg-core/columns/vector_extension/vector.js.map +1 -0
  48. package/pg-core/dialect.cjs +3 -2
  49. package/pg-core/dialect.cjs.map +1 -1
  50. package/pg-core/dialect.d.cts +1 -1
  51. package/pg-core/dialect.d.ts +1 -1
  52. package/pg-core/dialect.js +3 -2
  53. package/pg-core/dialect.js.map +1 -1
  54. package/pg-core/indexes.cjs +63 -22
  55. package/pg-core/indexes.cjs.map +1 -1
  56. package/pg-core/indexes.d.cts +29 -22
  57. package/pg-core/indexes.d.ts +29 -22
  58. package/pg-core/indexes.js +64 -23
  59. package/pg-core/indexes.js.map +1 -1
  60. package/pg-core/table.cjs +8 -0
  61. package/pg-core/table.cjs.map +1 -1
  62. package/pg-core/table.d.cts +2 -2
  63. package/pg-core/table.d.ts +2 -2
  64. package/pg-core/table.js +8 -0
  65. package/pg-core/table.js.map +1 -1
  66. package/pg-core/utils.cjs +1 -1
  67. package/pg-core/utils.cjs.map +1 -1
  68. package/pg-core/utils.d.cts +1 -1
  69. package/pg-core/utils.d.ts +1 -1
  70. package/pg-core/utils.js +1 -1
  71. package/pg-core/utils.js.map +1 -1
  72. package/relations.cjs +1 -1
  73. package/relations.cjs.map +1 -1
  74. package/relations.js +1 -1
  75. package/relations.js.map +1 -1
  76. package/sql/functions/index.cjs +3 -1
  77. package/sql/functions/index.cjs.map +1 -1
  78. package/sql/functions/index.d.cts +1 -0
  79. package/sql/functions/index.d.ts +1 -0
  80. package/sql/functions/index.js +1 -0
  81. package/sql/functions/index.js.map +1 -1
  82. package/sql/functions/vector.cjs +80 -0
  83. package/sql/functions/vector.cjs.map +1 -0
  84. package/sql/functions/vector.d.cts +120 -0
  85. package/sql/functions/vector.d.ts +120 -0
  86. package/sql/functions/vector.js +51 -0
  87. package/sql/functions/vector.js.map +1 -0
  88. package/sql/sql.cjs +3 -0
  89. package/sql/sql.cjs.map +1 -1
  90. package/sql/sql.d.cts +1 -0
  91. package/sql/sql.d.ts +1 -0
  92. package/sql/sql.js +3 -0
  93. package/sql/sql.js.map +1 -1
  94. package/sqlite-core/table.cjs +1 -0
  95. package/sqlite-core/table.cjs.map +1 -1
  96. package/sqlite-core/table.js +1 -0
  97. package/sqlite-core/table.js.map +1 -1
  98. package/sqlite-core/utils.d.cts +1 -1
  99. package/sqlite-core/utils.d.ts +1 -1
  100. package/table.cjs +6 -0
  101. package/table.cjs.map +1 -1
  102. package/table.js +5 -0
  103. package/table.js.map +1 -1
  104. package/version.cjs +2 -2
  105. package/version.cjs.map +1 -1
  106. package/version.d.cts +2 -2
  107. package/version.d.ts +2 -2
  108. package/version.js +2 -2
  109. package/version.js.map +1 -1
@@ -6,6 +6,7 @@ import { entityKind } from "../../entity.js";
6
6
  import type { Update } from "../../utils.js";
7
7
  import type { UpdateDeleteAction } from "../foreign-keys.js";
8
8
  import type { AnyPgTable, PgTable } from "../table.js";
9
+ import type { PgIndexOpClass } from "../indexes.js";
9
10
  export interface ReferenceConfig {
10
11
  ref: () => PgColumn;
11
12
  actions: {
@@ -50,6 +51,58 @@ export declare abstract class PgColumn<T extends ColumnBaseConfig<ColumnDataType
50
51
  static readonly [entityKind]: string;
51
52
  constructor(table: PgTable, config: ColumnBuilderRuntimeConfig<T['data'], TRuntimeConfig>);
52
53
  }
54
+ export type IndexedExtraConfigType = {
55
+ order?: 'asc' | 'desc';
56
+ nulls?: 'first' | 'last';
57
+ opClass?: string;
58
+ };
59
+ export declare class ExtraConfigColumn<T extends ColumnBaseConfig<ColumnDataType, string> = ColumnBaseConfig<ColumnDataType, string>> extends PgColumn<T, IndexedExtraConfigType> {
60
+ static readonly [entityKind]: string;
61
+ getSQLType(): string;
62
+ indexConfig: IndexedExtraConfigType;
63
+ defaultConfig: IndexedExtraConfigType;
64
+ asc(): Omit<this, 'asc' | 'desc'>;
65
+ desc(): Omit<this, 'asc' | 'desc'>;
66
+ nullsFirst(): Omit<this, 'nullsFirst' | 'nullsLast'>;
67
+ nullsLast(): Omit<this, 'nullsFirst' | 'nullsLast'>;
68
+ /**
69
+ * ### PostgreSQL documentation quote
70
+ *
71
+ * > An operator class with optional parameters can be specified for each column of an index.
72
+ * The operator class identifies the operators to be used by the index for that column.
73
+ * For example, a B-tree index on four-byte integers would use the int4_ops class;
74
+ * this operator class includes comparison functions for four-byte integers.
75
+ * In practice the default operator class for the column's data type is usually sufficient.
76
+ * The main point of having operator classes is that for some data types, there could be more than one meaningful ordering.
77
+ * For example, we might want to sort a complex-number data type either by absolute value or by real part.
78
+ * We could do this by defining two operator classes for the data type and then selecting the proper class when creating an index.
79
+ * More information about operator classes check:
80
+ *
81
+ * ### Useful links
82
+ * https://www.postgresql.org/docs/current/sql-createindex.html
83
+ *
84
+ * https://www.postgresql.org/docs/current/indexes-opclass.html
85
+ *
86
+ * https://www.postgresql.org/docs/current/xindex.html
87
+ *
88
+ * ### Additional types
89
+ * If you have the `pg_vector` extension installed in your database, you can use the
90
+ * `vector_l2_ops`, `vector_ip_ops`, `vector_cosine_ops`, `vector_l1_ops`, `bit_hamming_ops`, `bit_jaccard_ops`, `halfvec_l2_ops`, `sparsevec_l2_ops` options, which are predefined types.
91
+ *
92
+ * **You can always specify any string you want in the operator class, in case Drizzle doesn't have it natively in its types**
93
+ *
94
+ * @param opClass
95
+ * @returns
96
+ */
97
+ op(opClass: PgIndexOpClass): Omit<this, 'op'>;
98
+ }
99
+ export declare class IndexedColumn {
100
+ static readonly [entityKind]: string;
101
+ constructor(name: string | undefined, type: string, indexConfig: IndexedExtraConfigType);
102
+ name: string | undefined;
103
+ type: string;
104
+ indexConfig: IndexedExtraConfigType;
105
+ }
53
106
  export type AnyPgColumn<TPartial extends Partial<ColumnBaseConfig<ColumnDataType, string>> = {}> = PgColumn<Required<Update<ColumnBaseConfig<ColumnDataType, string>, TPartial>>>;
54
107
  export declare class PgArrayBuilder<T extends ColumnBuilderBaseConfig<'array', 'PgArray'>, TBase extends ColumnBuilderBaseConfig<ColumnDataType, string>> extends PgColumnBuilder<T, {
55
108
  baseBuilder: PgColumnBuilder<TBase>;
@@ -43,6 +43,10 @@ class PgColumnBuilder extends ColumnBuilder {
43
43
  );
44
44
  });
45
45
  }
46
+ /** @internal */
47
+ buildExtraConfigColumn(table) {
48
+ return new ExtraConfigColumn(table, this.config);
49
+ }
46
50
  }
47
51
  class PgColumn extends Column {
48
52
  constructor(table, config) {
@@ -54,6 +58,82 @@ class PgColumn extends Column {
54
58
  }
55
59
  static [entityKind] = "PgColumn";
56
60
  }
61
+ class ExtraConfigColumn extends PgColumn {
62
+ static [entityKind] = "ExtraConfigColumn";
63
+ getSQLType() {
64
+ return this.getSQLType();
65
+ }
66
+ indexConfig = {
67
+ order: this.config.order ?? "asc",
68
+ nulls: this.config.nulls ?? "last",
69
+ opClass: this.config.opClass
70
+ };
71
+ defaultConfig = {
72
+ order: "asc",
73
+ nulls: "last",
74
+ opClass: void 0
75
+ };
76
+ asc() {
77
+ this.indexConfig.order = "asc";
78
+ return this;
79
+ }
80
+ desc() {
81
+ this.indexConfig.order = "desc";
82
+ return this;
83
+ }
84
+ nullsFirst() {
85
+ this.indexConfig.nulls = "first";
86
+ return this;
87
+ }
88
+ nullsLast() {
89
+ this.indexConfig.nulls = "last";
90
+ return this;
91
+ }
92
+ /**
93
+ * ### PostgreSQL documentation quote
94
+ *
95
+ * > An operator class with optional parameters can be specified for each column of an index.
96
+ * The operator class identifies the operators to be used by the index for that column.
97
+ * For example, a B-tree index on four-byte integers would use the int4_ops class;
98
+ * this operator class includes comparison functions for four-byte integers.
99
+ * In practice the default operator class for the column's data type is usually sufficient.
100
+ * The main point of having operator classes is that for some data types, there could be more than one meaningful ordering.
101
+ * For example, we might want to sort a complex-number data type either by absolute value or by real part.
102
+ * We could do this by defining two operator classes for the data type and then selecting the proper class when creating an index.
103
+ * More information about operator classes check:
104
+ *
105
+ * ### Useful links
106
+ * https://www.postgresql.org/docs/current/sql-createindex.html
107
+ *
108
+ * https://www.postgresql.org/docs/current/indexes-opclass.html
109
+ *
110
+ * https://www.postgresql.org/docs/current/xindex.html
111
+ *
112
+ * ### Additional types
113
+ * If you have the `pg_vector` extension installed in your database, you can use the
114
+ * `vector_l2_ops`, `vector_ip_ops`, `vector_cosine_ops`, `vector_l1_ops`, `bit_hamming_ops`, `bit_jaccard_ops`, `halfvec_l2_ops`, `sparsevec_l2_ops` options, which are predefined types.
115
+ *
116
+ * **You can always specify any string you want in the operator class, in case Drizzle doesn't have it natively in its types**
117
+ *
118
+ * @param opClass
119
+ * @returns
120
+ */
121
+ op(opClass) {
122
+ this.indexConfig.opClass = opClass;
123
+ return this;
124
+ }
125
+ }
126
+ class IndexedColumn {
127
+ static [entityKind] = "IndexedColumn";
128
+ constructor(name, type, indexConfig) {
129
+ this.name = name;
130
+ this.type = type;
131
+ this.indexConfig = indexConfig;
132
+ }
133
+ name;
134
+ type;
135
+ indexConfig;
136
+ }
57
137
  class PgArrayBuilder extends PgColumnBuilder {
58
138
  static [entityKind] = "PgArrayBuilder";
59
139
  constructor(name, baseBuilder, size) {
@@ -99,6 +179,8 @@ class PgArray extends PgColumn {
99
179
  }
100
180
  }
101
181
  export {
182
+ ExtraConfigColumn,
183
+ IndexedColumn,
102
184
  PgArray,
103
185
  PgArrayBuilder,
104
186
  PgColumn,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/pg-core/columns/common.ts"],"sourcesContent":["import type {\n\tColumnBuilderBase,\n\tColumnBuilderBaseConfig,\n\tColumnBuilderExtraConfig,\n\tColumnBuilderRuntimeConfig,\n\tColumnDataType,\n\tMakeColumnConfig,\n} from '~/column-builder.ts';\nimport { ColumnBuilder } from '~/column-builder.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { Column } from '~/column.ts';\nimport { entityKind, is } from '~/entity.ts';\nimport type { Update } from '~/utils.ts';\n\nimport type { ForeignKey, UpdateDeleteAction } from '~/pg-core/foreign-keys.ts';\nimport { ForeignKeyBuilder } from '~/pg-core/foreign-keys.ts';\nimport type { AnyPgTable, PgTable } from '~/pg-core/table.ts';\nimport { iife } from '~/tracing-utils.ts';\nimport { uniqueKeyName } from '../unique-constraint.ts';\nimport { makePgArray, parsePgArray } from '../utils/array.ts';\n\nexport interface ReferenceConfig {\n\tref: () => PgColumn;\n\tactions: {\n\t\tonUpdate?: UpdateDeleteAction;\n\t\tonDelete?: UpdateDeleteAction;\n\t};\n}\n\nexport interface PgColumnBuilderBase<\n\tT extends ColumnBuilderBaseConfig<ColumnDataType, string> = ColumnBuilderBaseConfig<ColumnDataType, string>,\n\tTTypeConfig extends object = object,\n> extends ColumnBuilderBase<T, TTypeConfig & { dialect: 'pg' }> {}\n\nexport abstract class PgColumnBuilder<\n\tT extends ColumnBuilderBaseConfig<ColumnDataType, string> = ColumnBuilderBaseConfig<ColumnDataType, string>,\n\tTRuntimeConfig extends object = object,\n\tTTypeConfig extends object = object,\n\tTExtraConfig extends ColumnBuilderExtraConfig = ColumnBuilderExtraConfig,\n> extends ColumnBuilder<T, TRuntimeConfig, TTypeConfig & { dialect: 'pg' }, TExtraConfig>\n\timplements PgColumnBuilderBase<T, TTypeConfig>\n{\n\tprivate foreignKeyConfigs: ReferenceConfig[] = [];\n\n\tstatic readonly [entityKind]: string = 'PgColumnBuilder';\n\n\tarray(size?: number): PgArrayBuilder<\n\t\t& {\n\t\t\tname: T['name'];\n\t\t\tdataType: 'array';\n\t\t\tcolumnType: 'PgArray';\n\t\t\tdata: T['data'][];\n\t\t\tdriverParam: T['driverParam'][] | string;\n\t\t\tenumValues: T['enumValues'];\n\t\t}\n\t\t& (T extends { notNull: true } ? { notNull: true } : {})\n\t\t& (T extends { hasDefault: true } ? { hasDefault: true } : {}),\n\t\tT\n\t> {\n\t\treturn new PgArrayBuilder(this.config.name, this as PgColumnBuilder<any, any>, size);\n\t}\n\n\treferences(\n\t\tref: ReferenceConfig['ref'],\n\t\tactions: ReferenceConfig['actions'] = {},\n\t): this {\n\t\tthis.foreignKeyConfigs.push({ ref, actions });\n\t\treturn this;\n\t}\n\n\tunique(\n\t\tname?: string,\n\t\tconfig?: { nulls: 'distinct' | 'not distinct' },\n\t): this {\n\t\tthis.config.isUnique = true;\n\t\tthis.config.uniqueName = name;\n\t\tthis.config.uniqueType = config?.nulls;\n\t\treturn this;\n\t}\n\n\t/** @internal */\n\tbuildForeignKeys(column: PgColumn, table: PgTable): ForeignKey[] {\n\t\treturn this.foreignKeyConfigs.map(({ ref, actions }) => {\n\t\t\treturn iife(\n\t\t\t\t(ref, actions) => {\n\t\t\t\t\tconst builder = new ForeignKeyBuilder(() => {\n\t\t\t\t\t\tconst foreignColumn = ref();\n\t\t\t\t\t\treturn { columns: [column], foreignColumns: [foreignColumn] };\n\t\t\t\t\t});\n\t\t\t\t\tif (actions.onUpdate) {\n\t\t\t\t\t\tbuilder.onUpdate(actions.onUpdate);\n\t\t\t\t\t}\n\t\t\t\t\tif (actions.onDelete) {\n\t\t\t\t\t\tbuilder.onDelete(actions.onDelete);\n\t\t\t\t\t}\n\t\t\t\t\treturn builder.build(table);\n\t\t\t\t},\n\t\t\t\tref,\n\t\t\t\tactions,\n\t\t\t);\n\t\t});\n\t}\n\n\t/** @internal */\n\tabstract build<TTableName extends string>(\n\t\ttable: AnyPgTable<{ name: TTableName }>,\n\t): PgColumn<MakeColumnConfig<T, TTableName>>;\n}\n\n// To understand how to use `PgColumn` and `PgColumn`, see `Column` and `AnyColumn` documentation.\nexport abstract class PgColumn<\n\tT extends ColumnBaseConfig<ColumnDataType, string> = ColumnBaseConfig<ColumnDataType, string>,\n\tTRuntimeConfig extends object = {},\n\tTTypeConfig extends object = {},\n> extends Column<T, TRuntimeConfig, TTypeConfig & { dialect: 'pg' }> {\n\tstatic readonly [entityKind]: string = 'PgColumn';\n\n\tconstructor(\n\t\toverride readonly table: PgTable,\n\t\tconfig: ColumnBuilderRuntimeConfig<T['data'], TRuntimeConfig>,\n\t) {\n\t\tif (!config.uniqueName) {\n\t\t\tconfig.uniqueName = uniqueKeyName(table, [config.name]);\n\t\t}\n\t\tsuper(table, config);\n\t}\n}\n\nexport type AnyPgColumn<TPartial extends Partial<ColumnBaseConfig<ColumnDataType, string>> = {}> = PgColumn<\n\tRequired<Update<ColumnBaseConfig<ColumnDataType, string>, TPartial>>\n>;\n\nexport class PgArrayBuilder<\n\tT extends ColumnBuilderBaseConfig<'array', 'PgArray'>,\n\tTBase extends ColumnBuilderBaseConfig<ColumnDataType, string>,\n> extends PgColumnBuilder<\n\tT,\n\t{\n\t\tbaseBuilder: PgColumnBuilder<TBase>;\n\t\tsize: number | undefined;\n\t},\n\t{\n\t\tbaseBuilder: PgColumnBuilder<TBase>;\n\t}\n> {\n\tstatic override readonly [entityKind] = 'PgArrayBuilder';\n\n\tconstructor(\n\t\tname: string,\n\t\tbaseBuilder: PgArrayBuilder<T, TBase>['config']['baseBuilder'],\n\t\tsize: number | undefined,\n\t) {\n\t\tsuper(name, 'array', 'PgArray');\n\t\tthis.config.baseBuilder = baseBuilder;\n\t\tthis.config.size = size;\n\t}\n\n\t/** @internal */\n\toverride build<TTableName extends string>(\n\t\ttable: AnyPgTable<{ name: TTableName }>,\n\t): PgArray<MakeColumnConfig<T, TTableName>, TBase> {\n\t\tconst baseColumn = this.config.baseBuilder.build(table);\n\t\treturn new PgArray<MakeColumnConfig<T, TTableName>, TBase>(\n\t\t\ttable as AnyPgTable<{ name: MakeColumnConfig<T, TTableName>['tableName'] }>,\n\t\t\tthis.config as ColumnBuilderRuntimeConfig<any, any>,\n\t\t\tbaseColumn,\n\t\t);\n\t}\n}\n\nexport class PgArray<\n\tT extends ColumnBaseConfig<'array', 'PgArray'>,\n\tTBase extends ColumnBuilderBaseConfig<ColumnDataType, string>,\n> extends PgColumn<T> {\n\treadonly size: number | undefined;\n\n\tstatic readonly [entityKind]: string = 'PgArray';\n\n\tconstructor(\n\t\ttable: AnyPgTable<{ name: T['tableName'] }>,\n\t\tconfig: PgArrayBuilder<T, TBase>['config'],\n\t\treadonly baseColumn: PgColumn,\n\t\treadonly range?: [number | undefined, number | undefined],\n\t) {\n\t\tsuper(table, config);\n\t\tthis.size = config.size;\n\t}\n\n\tgetSQLType(): string {\n\t\treturn `${this.baseColumn.getSQLType()}[${typeof this.size === 'number' ? this.size : ''}]`;\n\t}\n\n\toverride mapFromDriverValue(value: unknown[] | string): T['data'] {\n\t\tif (typeof value === 'string') {\n\t\t\t// Thank you node-postgres for not parsing enum arrays\n\t\t\tvalue = parsePgArray(value);\n\t\t}\n\t\treturn value.map((v) => this.baseColumn.mapFromDriverValue(v));\n\t}\n\n\toverride mapToDriverValue(value: unknown[], isNestedArray = false): unknown[] | string {\n\t\tconst a = value.map((v) =>\n\t\t\tv === null\n\t\t\t\t? null\n\t\t\t\t: is(this.baseColumn, PgArray)\n\t\t\t\t? this.baseColumn.mapToDriverValue(v as unknown[], true)\n\t\t\t\t: this.baseColumn.mapToDriverValue(v)\n\t\t);\n\t\tif (isNestedArray) return a;\n\t\treturn makePgArray(a);\n\t}\n}\n"],"mappings":"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","names":["ref","actions"]}
1
+ {"version":3,"sources":["../../../src/pg-core/columns/common.ts"],"sourcesContent":["import type {\n\tColumnBuilderBase,\n\tColumnBuilderBaseConfig,\n\tColumnBuilderExtraConfig,\n\tColumnBuilderRuntimeConfig,\n\tColumnDataType,\n\tMakeColumnConfig,\n} from '~/column-builder.ts';\nimport { ColumnBuilder } from '~/column-builder.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { Column } from '~/column.ts';\nimport { entityKind, is } from '~/entity.ts';\nimport type { Update } from '~/utils.ts';\n\nimport type { ForeignKey, UpdateDeleteAction } from '~/pg-core/foreign-keys.ts';\nimport { ForeignKeyBuilder } from '~/pg-core/foreign-keys.ts';\nimport type { AnyPgTable, PgTable } from '~/pg-core/table.ts';\nimport { iife } from '~/tracing-utils.ts';\nimport type { PgIndexOpClass } from '../indexes.ts';\nimport { uniqueKeyName } from '../unique-constraint.ts';\nimport { makePgArray, parsePgArray } from '../utils/array.ts';\n\nexport interface ReferenceConfig {\n\tref: () => PgColumn;\n\tactions: {\n\t\tonUpdate?: UpdateDeleteAction;\n\t\tonDelete?: UpdateDeleteAction;\n\t};\n}\n\nexport interface PgColumnBuilderBase<\n\tT extends ColumnBuilderBaseConfig<ColumnDataType, string> = ColumnBuilderBaseConfig<ColumnDataType, string>,\n\tTTypeConfig extends object = object,\n> extends ColumnBuilderBase<T, TTypeConfig & { dialect: 'pg' }> {}\n\nexport abstract class PgColumnBuilder<\n\tT extends ColumnBuilderBaseConfig<ColumnDataType, string> = ColumnBuilderBaseConfig<ColumnDataType, string>,\n\tTRuntimeConfig extends object = object,\n\tTTypeConfig extends object = object,\n\tTExtraConfig extends ColumnBuilderExtraConfig = ColumnBuilderExtraConfig,\n> extends ColumnBuilder<T, TRuntimeConfig, TTypeConfig & { dialect: 'pg' }, TExtraConfig>\n\timplements PgColumnBuilderBase<T, TTypeConfig>\n{\n\tprivate foreignKeyConfigs: ReferenceConfig[] = [];\n\n\tstatic readonly [entityKind]: string = 'PgColumnBuilder';\n\n\tarray(size?: number): PgArrayBuilder<\n\t\t& {\n\t\t\tname: T['name'];\n\t\t\tdataType: 'array';\n\t\t\tcolumnType: 'PgArray';\n\t\t\tdata: T['data'][];\n\t\t\tdriverParam: T['driverParam'][] | string;\n\t\t\tenumValues: T['enumValues'];\n\t\t}\n\t\t& (T extends { notNull: true } ? { notNull: true } : {})\n\t\t& (T extends { hasDefault: true } ? { hasDefault: true } : {}),\n\t\tT\n\t> {\n\t\treturn new PgArrayBuilder(this.config.name, this as PgColumnBuilder<any, any>, size);\n\t}\n\n\treferences(\n\t\tref: ReferenceConfig['ref'],\n\t\tactions: ReferenceConfig['actions'] = {},\n\t): this {\n\t\tthis.foreignKeyConfigs.push({ ref, actions });\n\t\treturn this;\n\t}\n\n\tunique(\n\t\tname?: string,\n\t\tconfig?: { nulls: 'distinct' | 'not distinct' },\n\t): this {\n\t\tthis.config.isUnique = true;\n\t\tthis.config.uniqueName = name;\n\t\tthis.config.uniqueType = config?.nulls;\n\t\treturn this;\n\t}\n\n\t/** @internal */\n\tbuildForeignKeys(column: PgColumn, table: PgTable): ForeignKey[] {\n\t\treturn this.foreignKeyConfigs.map(({ ref, actions }) => {\n\t\t\treturn iife(\n\t\t\t\t(ref, actions) => {\n\t\t\t\t\tconst builder = new ForeignKeyBuilder(() => {\n\t\t\t\t\t\tconst foreignColumn = ref();\n\t\t\t\t\t\treturn { columns: [column], foreignColumns: [foreignColumn] };\n\t\t\t\t\t});\n\t\t\t\t\tif (actions.onUpdate) {\n\t\t\t\t\t\tbuilder.onUpdate(actions.onUpdate);\n\t\t\t\t\t}\n\t\t\t\t\tif (actions.onDelete) {\n\t\t\t\t\t\tbuilder.onDelete(actions.onDelete);\n\t\t\t\t\t}\n\t\t\t\t\treturn builder.build(table);\n\t\t\t\t},\n\t\t\t\tref,\n\t\t\t\tactions,\n\t\t\t);\n\t\t});\n\t}\n\n\t/** @internal */\n\tabstract build<TTableName extends string>(\n\t\ttable: AnyPgTable<{ name: TTableName }>,\n\t): PgColumn<MakeColumnConfig<T, TTableName>>;\n\n\t/** @internal */\n\tbuildExtraConfigColumn<TTableName extends string>(\n\t\ttable: AnyPgTable<{ name: TTableName }>,\n\t): ExtraConfigColumn {\n\t\treturn new ExtraConfigColumn(table, this.config);\n\t}\n}\n\n// To understand how to use `PgColumn` and `PgColumn`, see `Column` and `AnyColumn` documentation.\nexport abstract class PgColumn<\n\tT extends ColumnBaseConfig<ColumnDataType, string> = ColumnBaseConfig<ColumnDataType, string>,\n\tTRuntimeConfig extends object = {},\n\tTTypeConfig extends object = {},\n> extends Column<T, TRuntimeConfig, TTypeConfig & { dialect: 'pg' }> {\n\tstatic readonly [entityKind]: string = 'PgColumn';\n\n\tconstructor(\n\t\toverride readonly table: PgTable,\n\t\tconfig: ColumnBuilderRuntimeConfig<T['data'], TRuntimeConfig>,\n\t) {\n\t\tif (!config.uniqueName) {\n\t\t\tconfig.uniqueName = uniqueKeyName(table, [config.name]);\n\t\t}\n\t\tsuper(table, config);\n\t}\n}\n\nexport type IndexedExtraConfigType = { order?: 'asc' | 'desc'; nulls?: 'first' | 'last'; opClass?: string };\n\nexport class ExtraConfigColumn<\n\tT extends ColumnBaseConfig<ColumnDataType, string> = ColumnBaseConfig<ColumnDataType, string>,\n> extends PgColumn<T, IndexedExtraConfigType> {\n\tstatic readonly [entityKind]: string = 'ExtraConfigColumn';\n\n\toverride getSQLType(): string {\n\t\treturn this.getSQLType();\n\t}\n\n\tindexConfig: IndexedExtraConfigType = {\n\t\torder: this.config.order ?? 'asc',\n\t\tnulls: this.config.nulls ?? 'last',\n\t\topClass: this.config.opClass,\n\t};\n\tdefaultConfig: IndexedExtraConfigType = {\n\t\torder: 'asc',\n\t\tnulls: 'last',\n\t\topClass: undefined,\n\t};\n\n\tasc(): Omit<this, 'asc' | 'desc'> {\n\t\tthis.indexConfig.order = 'asc';\n\t\treturn this;\n\t}\n\n\tdesc(): Omit<this, 'asc' | 'desc'> {\n\t\tthis.indexConfig.order = 'desc';\n\t\treturn this;\n\t}\n\n\tnullsFirst(): Omit<this, 'nullsFirst' | 'nullsLast'> {\n\t\tthis.indexConfig.nulls = 'first';\n\t\treturn this;\n\t}\n\n\tnullsLast(): Omit<this, 'nullsFirst' | 'nullsLast'> {\n\t\tthis.indexConfig.nulls = 'last';\n\t\treturn this;\n\t}\n\n\t/**\n\t * ### PostgreSQL documentation quote\n\t *\n\t * > An operator class with optional parameters can be specified for each column of an index.\n\t * The operator class identifies the operators to be used by the index for that column.\n\t * For example, a B-tree index on four-byte integers would use the int4_ops class;\n\t * this operator class includes comparison functions for four-byte integers.\n\t * In practice the default operator class for the column's data type is usually sufficient.\n\t * The main point of having operator classes is that for some data types, there could be more than one meaningful ordering.\n\t * For example, we might want to sort a complex-number data type either by absolute value or by real part.\n\t * We could do this by defining two operator classes for the data type and then selecting the proper class when creating an index.\n\t * More information about operator classes check:\n\t *\n\t * ### Useful links\n\t * https://www.postgresql.org/docs/current/sql-createindex.html\n\t *\n\t * https://www.postgresql.org/docs/current/indexes-opclass.html\n\t *\n\t * https://www.postgresql.org/docs/current/xindex.html\n\t *\n\t * ### Additional types\n\t * If you have the `pg_vector` extension installed in your database, you can use the\n\t * `vector_l2_ops`, `vector_ip_ops`, `vector_cosine_ops`, `vector_l1_ops`, `bit_hamming_ops`, `bit_jaccard_ops`, `halfvec_l2_ops`, `sparsevec_l2_ops` options, which are predefined types.\n\t *\n\t * **You can always specify any string you want in the operator class, in case Drizzle doesn't have it natively in its types**\n\t *\n\t * @param opClass\n\t * @returns\n\t */\n\top(opClass: PgIndexOpClass): Omit<this, 'op'> {\n\t\tthis.indexConfig.opClass = opClass;\n\t\treturn this;\n\t}\n}\n\nexport class IndexedColumn {\n\tstatic readonly [entityKind]: string = 'IndexedColumn';\n\tconstructor(\n\t\tname: string | undefined,\n\t\ttype: string,\n\t\tindexConfig: IndexedExtraConfigType,\n\t) {\n\t\tthis.name = name;\n\t\tthis.type = type;\n\t\tthis.indexConfig = indexConfig;\n\t}\n\n\tname: string | undefined;\n\ttype: string;\n\tindexConfig: IndexedExtraConfigType;\n}\n\nexport type AnyPgColumn<TPartial extends Partial<ColumnBaseConfig<ColumnDataType, string>> = {}> = PgColumn<\n\tRequired<Update<ColumnBaseConfig<ColumnDataType, string>, TPartial>>\n>;\n\nexport class PgArrayBuilder<\n\tT extends ColumnBuilderBaseConfig<'array', 'PgArray'>,\n\tTBase extends ColumnBuilderBaseConfig<ColumnDataType, string>,\n> extends PgColumnBuilder<\n\tT,\n\t{\n\t\tbaseBuilder: PgColumnBuilder<TBase>;\n\t\tsize: number | undefined;\n\t},\n\t{\n\t\tbaseBuilder: PgColumnBuilder<TBase>;\n\t}\n> {\n\tstatic override readonly [entityKind] = 'PgArrayBuilder';\n\n\tconstructor(\n\t\tname: string,\n\t\tbaseBuilder: PgArrayBuilder<T, TBase>['config']['baseBuilder'],\n\t\tsize: number | undefined,\n\t) {\n\t\tsuper(name, 'array', 'PgArray');\n\t\tthis.config.baseBuilder = baseBuilder;\n\t\tthis.config.size = size;\n\t}\n\n\t/** @internal */\n\toverride build<TTableName extends string>(\n\t\ttable: AnyPgTable<{ name: TTableName }>,\n\t): PgArray<MakeColumnConfig<T, TTableName>, TBase> {\n\t\tconst baseColumn = this.config.baseBuilder.build(table);\n\t\treturn new PgArray<MakeColumnConfig<T, TTableName>, TBase>(\n\t\t\ttable as AnyPgTable<{ name: MakeColumnConfig<T, TTableName>['tableName'] }>,\n\t\t\tthis.config as ColumnBuilderRuntimeConfig<any, any>,\n\t\t\tbaseColumn,\n\t\t);\n\t}\n}\n\nexport class PgArray<\n\tT extends ColumnBaseConfig<'array', 'PgArray'>,\n\tTBase extends ColumnBuilderBaseConfig<ColumnDataType, string>,\n> extends PgColumn<T> {\n\treadonly size: number | undefined;\n\n\tstatic readonly [entityKind]: string = 'PgArray';\n\n\tconstructor(\n\t\ttable: AnyPgTable<{ name: T['tableName'] }>,\n\t\tconfig: PgArrayBuilder<T, TBase>['config'],\n\t\treadonly baseColumn: PgColumn,\n\t\treadonly range?: [number | undefined, number | undefined],\n\t) {\n\t\tsuper(table, config);\n\t\tthis.size = config.size;\n\t}\n\n\tgetSQLType(): string {\n\t\treturn `${this.baseColumn.getSQLType()}[${typeof this.size === 'number' ? this.size : ''}]`;\n\t}\n\n\toverride mapFromDriverValue(value: unknown[] | string): T['data'] {\n\t\tif (typeof value === 'string') {\n\t\t\t// Thank you node-postgres for not parsing enum arrays\n\t\t\tvalue = parsePgArray(value);\n\t\t}\n\t\treturn value.map((v) => this.baseColumn.mapFromDriverValue(v));\n\t}\n\n\toverride mapToDriverValue(value: unknown[], isNestedArray = false): unknown[] | string {\n\t\tconst a = value.map((v) =>\n\t\t\tv === null\n\t\t\t\t? null\n\t\t\t\t: is(this.baseColumn, PgArray)\n\t\t\t\t? this.baseColumn.mapToDriverValue(v as unknown[], true)\n\t\t\t\t: this.baseColumn.mapToDriverValue(v)\n\t\t);\n\t\tif (isNestedArray) return a;\n\t\treturn makePgArray(a);\n\t}\n}\n"],"mappings":"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","names":["ref","actions"]}
@@ -42,6 +42,10 @@ __reExport(columns_exports, require("./time.cjs"), module.exports);
42
42
  __reExport(columns_exports, require("./timestamp.cjs"), module.exports);
43
43
  __reExport(columns_exports, require("./uuid.cjs"), module.exports);
44
44
  __reExport(columns_exports, require("./varchar.cjs"), module.exports);
45
+ __reExport(columns_exports, require("./vector_extension/bit.cjs"), module.exports);
46
+ __reExport(columns_exports, require("./vector_extension/halfvec.cjs"), module.exports);
47
+ __reExport(columns_exports, require("./vector_extension/sparsevec.cjs"), module.exports);
48
+ __reExport(columns_exports, require("./vector_extension/vector.cjs"), module.exports);
45
49
  // Annotate the CommonJS export names for ESM import in node:
46
50
  0 && (module.exports = {
47
51
  ...require("./bigint.cjs"),
@@ -70,6 +74,10 @@ __reExport(columns_exports, require("./varchar.cjs"), module.exports);
70
74
  ...require("./time.cjs"),
71
75
  ...require("./timestamp.cjs"),
72
76
  ...require("./uuid.cjs"),
73
- ...require("./varchar.cjs")
77
+ ...require("./varchar.cjs"),
78
+ ...require("./vector_extension/bit.cjs"),
79
+ ...require("./vector_extension/halfvec.cjs"),
80
+ ...require("./vector_extension/sparsevec.cjs"),
81
+ ...require("./vector_extension/vector.cjs")
74
82
  });
75
83
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/pg-core/columns/index.ts"],"sourcesContent":["export * from './bigint.ts';\nexport * from './bigserial.ts';\nexport * from './boolean.ts';\nexport * from './char.ts';\nexport * from './cidr.ts';\nexport * from './common.ts';\nexport * from './custom.ts';\nexport * from './date.ts';\nexport * from './double-precision.ts';\nexport * from './enum.ts';\nexport * from './inet.ts';\nexport * from './integer.ts';\nexport * from './interval.ts';\nexport * from './json.ts';\nexport * from './jsonb.ts';\nexport * from './macaddr.ts';\nexport * from './macaddr8.ts';\nexport * from './numeric.ts';\nexport * from './real.ts';\nexport * from './serial.ts';\nexport * from './smallint.ts';\nexport * from './smallserial.ts';\nexport * from './text.ts';\nexport * from './time.ts';\nexport * from './timestamp.ts';\nexport * from './uuid.ts';\nexport * from './varchar.ts';\n"],"mappings":";;;;;;;;;;;;;;;AAAA;AAAA;AAAA,4BAAc,wBAAd;AACA,4BAAc,2BADd;AAEA,4BAAc,yBAFd;AAGA,4BAAc,sBAHd;AAIA,4BAAc,sBAJd;AAKA,4BAAc,wBALd;AAMA,4BAAc,wBANd;AAOA,4BAAc,sBAPd;AAQA,4BAAc,kCARd;AASA,4BAAc,sBATd;AAUA,4BAAc,sBAVd;AAWA,4BAAc,yBAXd;AAYA,4BAAc,0BAZd;AAaA,4BAAc,sBAbd;AAcA,4BAAc,uBAdd;AAeA,4BAAc,yBAfd;AAgBA,4BAAc,0BAhBd;AAiBA,4BAAc,yBAjBd;AAkBA,4BAAc,sBAlBd;AAmBA,4BAAc,wBAnBd;AAoBA,4BAAc,0BApBd;AAqBA,4BAAc,6BArBd;AAsBA,4BAAc,sBAtBd;AAuBA,4BAAc,sBAvBd;AAwBA,4BAAc,2BAxBd;AAyBA,4BAAc,sBAzBd;AA0BA,4BAAc,yBA1Bd;","names":[]}
1
+ {"version":3,"sources":["../../../src/pg-core/columns/index.ts"],"sourcesContent":["export * from './bigint.ts';\nexport * from './bigserial.ts';\nexport * from './boolean.ts';\nexport * from './char.ts';\nexport * from './cidr.ts';\nexport * from './common.ts';\nexport * from './custom.ts';\nexport * from './date.ts';\nexport * from './double-precision.ts';\nexport * from './enum.ts';\nexport * from './inet.ts';\nexport * from './integer.ts';\nexport * from './interval.ts';\nexport * from './json.ts';\nexport * from './jsonb.ts';\nexport * from './macaddr.ts';\nexport * from './macaddr8.ts';\nexport * from './numeric.ts';\nexport * from './real.ts';\nexport * from './serial.ts';\nexport * from './smallint.ts';\nexport * from './smallserial.ts';\nexport * from './text.ts';\nexport * from './time.ts';\nexport * from './timestamp.ts';\nexport * from './uuid.ts';\nexport * from './varchar.ts';\nexport * from './vector_extension/bit.ts';\nexport * from './vector_extension/halfvec.ts';\nexport * from './vector_extension/sparsevec.ts';\nexport * from './vector_extension/vector.ts';\n"],"mappings":";;;;;;;;;;;;;;;AAAA;AAAA;AAAA,4BAAc,wBAAd;AACA,4BAAc,2BADd;AAEA,4BAAc,yBAFd;AAGA,4BAAc,sBAHd;AAIA,4BAAc,sBAJd;AAKA,4BAAc,wBALd;AAMA,4BAAc,wBANd;AAOA,4BAAc,sBAPd;AAQA,4BAAc,kCARd;AASA,4BAAc,sBATd;AAUA,4BAAc,sBAVd;AAWA,4BAAc,yBAXd;AAYA,4BAAc,0BAZd;AAaA,4BAAc,sBAbd;AAcA,4BAAc,uBAdd;AAeA,4BAAc,yBAfd;AAgBA,4BAAc,0BAhBd;AAiBA,4BAAc,yBAjBd;AAkBA,4BAAc,sBAlBd;AAmBA,4BAAc,wBAnBd;AAoBA,4BAAc,0BApBd;AAqBA,4BAAc,6BArBd;AAsBA,4BAAc,sBAtBd;AAuBA,4BAAc,sBAvBd;AAwBA,4BAAc,2BAxBd;AAyBA,4BAAc,sBAzBd;AA0BA,4BAAc,yBA1Bd;AA2BA,4BAAc,sCA3Bd;AA4BA,4BAAc,0CA5Bd;AA6BA,4BAAc,4CA7Bd;AA8BA,4BAAc,yCA9Bd;","names":[]}
@@ -25,3 +25,7 @@ export * from "./time.cjs";
25
25
  export * from "./timestamp.cjs";
26
26
  export * from "./uuid.cjs";
27
27
  export * from "./varchar.cjs";
28
+ export * from "./vector_extension/bit.cjs";
29
+ export * from "./vector_extension/halfvec.cjs";
30
+ export * from "./vector_extension/sparsevec.cjs";
31
+ export * from "./vector_extension/vector.cjs";
@@ -25,3 +25,7 @@ export * from "./time.js";
25
25
  export * from "./timestamp.js";
26
26
  export * from "./uuid.js";
27
27
  export * from "./varchar.js";
28
+ export * from "./vector_extension/bit.js";
29
+ export * from "./vector_extension/halfvec.js";
30
+ export * from "./vector_extension/sparsevec.js";
31
+ export * from "./vector_extension/vector.js";
@@ -25,4 +25,8 @@ export * from "./time.js";
25
25
  export * from "./timestamp.js";
26
26
  export * from "./uuid.js";
27
27
  export * from "./varchar.js";
28
+ export * from "./vector_extension/bit.js";
29
+ export * from "./vector_extension/halfvec.js";
30
+ export * from "./vector_extension/sparsevec.js";
31
+ export * from "./vector_extension/vector.js";
28
32
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/pg-core/columns/index.ts"],"sourcesContent":["export * from './bigint.ts';\nexport * from './bigserial.ts';\nexport * from './boolean.ts';\nexport * from './char.ts';\nexport * from './cidr.ts';\nexport * from './common.ts';\nexport * from './custom.ts';\nexport * from './date.ts';\nexport * from './double-precision.ts';\nexport * from './enum.ts';\nexport * from './inet.ts';\nexport * from './integer.ts';\nexport * from './interval.ts';\nexport * from './json.ts';\nexport * from './jsonb.ts';\nexport * from './macaddr.ts';\nexport * from './macaddr8.ts';\nexport * from './numeric.ts';\nexport * from './real.ts';\nexport * from './serial.ts';\nexport * from './smallint.ts';\nexport * from './smallserial.ts';\nexport * from './text.ts';\nexport * from './time.ts';\nexport * from './timestamp.ts';\nexport * from './uuid.ts';\nexport * from './varchar.ts';\n"],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../../src/pg-core/columns/index.ts"],"sourcesContent":["export * from './bigint.ts';\nexport * from './bigserial.ts';\nexport * from './boolean.ts';\nexport * from './char.ts';\nexport * from './cidr.ts';\nexport * from './common.ts';\nexport * from './custom.ts';\nexport * from './date.ts';\nexport * from './double-precision.ts';\nexport * from './enum.ts';\nexport * from './inet.ts';\nexport * from './integer.ts';\nexport * from './interval.ts';\nexport * from './json.ts';\nexport * from './jsonb.ts';\nexport * from './macaddr.ts';\nexport * from './macaddr8.ts';\nexport * from './numeric.ts';\nexport * from './real.ts';\nexport * from './serial.ts';\nexport * from './smallint.ts';\nexport * from './smallserial.ts';\nexport * from './text.ts';\nexport * from './time.ts';\nexport * from './timestamp.ts';\nexport * from './uuid.ts';\nexport * from './varchar.ts';\nexport * from './vector_extension/bit.ts';\nexport * from './vector_extension/halfvec.ts';\nexport * from './vector_extension/sparsevec.ts';\nexport * from './vector_extension/vector.ts';\n"],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var bit_exports = {};
20
+ __export(bit_exports, {
21
+ PgBinaryVector: () => PgBinaryVector,
22
+ PgBinaryVectorBuilder: () => PgBinaryVectorBuilder,
23
+ bit: () => bit
24
+ });
25
+ module.exports = __toCommonJS(bit_exports);
26
+ var import_entity = require("../../../entity.cjs");
27
+ var import_common = require("../common.cjs");
28
+ class PgBinaryVectorBuilder extends import_common.PgColumnBuilder {
29
+ static [import_entity.entityKind] = "PgBinaryVectorBuilder";
30
+ constructor(name, config) {
31
+ super(name, "string", "PgBinaryVector");
32
+ this.config.dimensions = config.dimensions;
33
+ }
34
+ /** @internal */
35
+ build(table) {
36
+ return new PgBinaryVector(
37
+ table,
38
+ this.config
39
+ );
40
+ }
41
+ }
42
+ class PgBinaryVector extends import_common.PgColumn {
43
+ static [import_entity.entityKind] = "PgBinaryVector";
44
+ dimensions = this.config.dimensions;
45
+ getSQLType() {
46
+ return `bit(${this.dimensions})`;
47
+ }
48
+ }
49
+ function bit(name, config) {
50
+ return new PgBinaryVectorBuilder(name, config);
51
+ }
52
+ // Annotate the CommonJS export names for ESM import in node:
53
+ 0 && (module.exports = {
54
+ PgBinaryVector,
55
+ PgBinaryVectorBuilder,
56
+ bit
57
+ });
58
+ //# sourceMappingURL=bit.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/pg-core/columns/vector_extension/bit.ts"],"sourcesContent":["import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '~/column-builder.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { AnyPgTable } from '~/pg-core/table.ts';\nimport { PgColumn, PgColumnBuilder } from '../common.ts';\n\nexport type PgBinaryVectorBuilderInitial<TName extends string> = PgBinaryVectorBuilder<{\n\tname: TName;\n\tdataType: 'string';\n\tcolumnType: 'PgBinaryVector';\n\tdata: string;\n\tdriverParam: string;\n\tenumValues: undefined;\n}>;\n\nexport class PgBinaryVectorBuilder<T extends ColumnBuilderBaseConfig<'string', 'PgBinaryVector'>>\n\textends PgColumnBuilder<\n\t\tT,\n\t\t{ dimensions: number | undefined }\n\t>\n{\n\tstatic readonly [entityKind]: string = 'PgBinaryVectorBuilder';\n\n\tconstructor(name: string, config: PgBinaryVectorConfig) {\n\t\tsuper(name, 'string', 'PgBinaryVector');\n\t\tthis.config.dimensions = config.dimensions;\n\t}\n\n\t/** @internal */\n\toverride build<TTableName extends string>(\n\t\ttable: AnyPgTable<{ name: TTableName }>,\n\t): PgBinaryVector<MakeColumnConfig<T, TTableName>> {\n\t\treturn new PgBinaryVector<MakeColumnConfig<T, TTableName>>(\n\t\t\ttable,\n\t\t\tthis.config as ColumnBuilderRuntimeConfig<any, any>,\n\t\t);\n\t}\n}\n\nexport class PgBinaryVector<T extends ColumnBaseConfig<'string', 'PgBinaryVector'>>\n\textends PgColumn<T, { dimensions: number | undefined }>\n{\n\tstatic readonly [entityKind]: string = 'PgBinaryVector';\n\n\treadonly dimensions = this.config.dimensions;\n\n\tgetSQLType(): string {\n\t\treturn `bit(${this.dimensions})`;\n\t}\n}\n\nexport interface PgBinaryVectorConfig {\n\tdimensions: number;\n}\n\nexport function bit<TName extends string>(\n\tname: TName,\n\tconfig: PgBinaryVectorConfig,\n): PgBinaryVectorBuilderInitial<TName> {\n\treturn new PgBinaryVectorBuilder(name, config);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,oBAA2B;AAE3B,oBAA0C;AAWnC,MAAM,8BACJ,8BAIT;AAAA,EACC,QAAiB,wBAAU,IAAY;AAAA,EAEvC,YAAY,MAAc,QAA8B;AACvD,UAAM,MAAM,UAAU,gBAAgB;AACtC,SAAK,OAAO,aAAa,OAAO;AAAA,EACjC;AAAA;AAAA,EAGS,MACR,OACkD;AAClD,WAAO,IAAI;AAAA,MACV;AAAA,MACA,KAAK;AAAA,IACN;AAAA,EACD;AACD;AAEO,MAAM,uBACJ,uBACT;AAAA,EACC,QAAiB,wBAAU,IAAY;AAAA,EAE9B,aAAa,KAAK,OAAO;AAAA,EAElC,aAAqB;AACpB,WAAO,OAAO,KAAK,UAAU;AAAA,EAC9B;AACD;AAMO,SAAS,IACf,MACA,QACsC;AACtC,SAAO,IAAI,sBAAsB,MAAM,MAAM;AAC9C;","names":[]}
@@ -0,0 +1,29 @@
1
+ import type { ColumnBuilderBaseConfig } from "../../../column-builder.cjs";
2
+ import type { ColumnBaseConfig } from "../../../column.cjs";
3
+ import { entityKind } from "../../../entity.cjs";
4
+ import { PgColumn, PgColumnBuilder } from "../common.cjs";
5
+ export type PgBinaryVectorBuilderInitial<TName extends string> = PgBinaryVectorBuilder<{
6
+ name: TName;
7
+ dataType: 'string';
8
+ columnType: 'PgBinaryVector';
9
+ data: string;
10
+ driverParam: string;
11
+ enumValues: undefined;
12
+ }>;
13
+ export declare class PgBinaryVectorBuilder<T extends ColumnBuilderBaseConfig<'string', 'PgBinaryVector'>> extends PgColumnBuilder<T, {
14
+ dimensions: number | undefined;
15
+ }> {
16
+ static readonly [entityKind]: string;
17
+ constructor(name: string, config: PgBinaryVectorConfig);
18
+ }
19
+ export declare class PgBinaryVector<T extends ColumnBaseConfig<'string', 'PgBinaryVector'>> extends PgColumn<T, {
20
+ dimensions: number | undefined;
21
+ }> {
22
+ static readonly [entityKind]: string;
23
+ readonly dimensions: number | undefined;
24
+ getSQLType(): string;
25
+ }
26
+ export interface PgBinaryVectorConfig {
27
+ dimensions: number;
28
+ }
29
+ export declare function bit<TName extends string>(name: TName, config: PgBinaryVectorConfig): PgBinaryVectorBuilderInitial<TName>;
@@ -0,0 +1,29 @@
1
+ import type { ColumnBuilderBaseConfig } from "../../../column-builder.js";
2
+ import type { ColumnBaseConfig } from "../../../column.js";
3
+ import { entityKind } from "../../../entity.js";
4
+ import { PgColumn, PgColumnBuilder } from "../common.js";
5
+ export type PgBinaryVectorBuilderInitial<TName extends string> = PgBinaryVectorBuilder<{
6
+ name: TName;
7
+ dataType: 'string';
8
+ columnType: 'PgBinaryVector';
9
+ data: string;
10
+ driverParam: string;
11
+ enumValues: undefined;
12
+ }>;
13
+ export declare class PgBinaryVectorBuilder<T extends ColumnBuilderBaseConfig<'string', 'PgBinaryVector'>> extends PgColumnBuilder<T, {
14
+ dimensions: number | undefined;
15
+ }> {
16
+ static readonly [entityKind]: string;
17
+ constructor(name: string, config: PgBinaryVectorConfig);
18
+ }
19
+ export declare class PgBinaryVector<T extends ColumnBaseConfig<'string', 'PgBinaryVector'>> extends PgColumn<T, {
20
+ dimensions: number | undefined;
21
+ }> {
22
+ static readonly [entityKind]: string;
23
+ readonly dimensions: number | undefined;
24
+ getSQLType(): string;
25
+ }
26
+ export interface PgBinaryVectorConfig {
27
+ dimensions: number;
28
+ }
29
+ export declare function bit<TName extends string>(name: TName, config: PgBinaryVectorConfig): PgBinaryVectorBuilderInitial<TName>;
@@ -0,0 +1,32 @@
1
+ import { entityKind } from "../../../entity.js";
2
+ import { PgColumn, PgColumnBuilder } from "../common.js";
3
+ class PgBinaryVectorBuilder extends PgColumnBuilder {
4
+ static [entityKind] = "PgBinaryVectorBuilder";
5
+ constructor(name, config) {
6
+ super(name, "string", "PgBinaryVector");
7
+ this.config.dimensions = config.dimensions;
8
+ }
9
+ /** @internal */
10
+ build(table) {
11
+ return new PgBinaryVector(
12
+ table,
13
+ this.config
14
+ );
15
+ }
16
+ }
17
+ class PgBinaryVector extends PgColumn {
18
+ static [entityKind] = "PgBinaryVector";
19
+ dimensions = this.config.dimensions;
20
+ getSQLType() {
21
+ return `bit(${this.dimensions})`;
22
+ }
23
+ }
24
+ function bit(name, config) {
25
+ return new PgBinaryVectorBuilder(name, config);
26
+ }
27
+ export {
28
+ PgBinaryVector,
29
+ PgBinaryVectorBuilder,
30
+ bit
31
+ };
32
+ //# sourceMappingURL=bit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/pg-core/columns/vector_extension/bit.ts"],"sourcesContent":["import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '~/column-builder.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { AnyPgTable } from '~/pg-core/table.ts';\nimport { PgColumn, PgColumnBuilder } from '../common.ts';\n\nexport type PgBinaryVectorBuilderInitial<TName extends string> = PgBinaryVectorBuilder<{\n\tname: TName;\n\tdataType: 'string';\n\tcolumnType: 'PgBinaryVector';\n\tdata: string;\n\tdriverParam: string;\n\tenumValues: undefined;\n}>;\n\nexport class PgBinaryVectorBuilder<T extends ColumnBuilderBaseConfig<'string', 'PgBinaryVector'>>\n\textends PgColumnBuilder<\n\t\tT,\n\t\t{ dimensions: number | undefined }\n\t>\n{\n\tstatic readonly [entityKind]: string = 'PgBinaryVectorBuilder';\n\n\tconstructor(name: string, config: PgBinaryVectorConfig) {\n\t\tsuper(name, 'string', 'PgBinaryVector');\n\t\tthis.config.dimensions = config.dimensions;\n\t}\n\n\t/** @internal */\n\toverride build<TTableName extends string>(\n\t\ttable: AnyPgTable<{ name: TTableName }>,\n\t): PgBinaryVector<MakeColumnConfig<T, TTableName>> {\n\t\treturn new PgBinaryVector<MakeColumnConfig<T, TTableName>>(\n\t\t\ttable,\n\t\t\tthis.config as ColumnBuilderRuntimeConfig<any, any>,\n\t\t);\n\t}\n}\n\nexport class PgBinaryVector<T extends ColumnBaseConfig<'string', 'PgBinaryVector'>>\n\textends PgColumn<T, { dimensions: number | undefined }>\n{\n\tstatic readonly [entityKind]: string = 'PgBinaryVector';\n\n\treadonly dimensions = this.config.dimensions;\n\n\tgetSQLType(): string {\n\t\treturn `bit(${this.dimensions})`;\n\t}\n}\n\nexport interface PgBinaryVectorConfig {\n\tdimensions: number;\n}\n\nexport function bit<TName extends string>(\n\tname: TName,\n\tconfig: PgBinaryVectorConfig,\n): PgBinaryVectorBuilderInitial<TName> {\n\treturn new PgBinaryVectorBuilder(name, config);\n}\n"],"mappings":"AAEA,SAAS,kBAAkB;AAE3B,SAAS,UAAU,uBAAuB;AAWnC,MAAM,8BACJ,gBAIT;AAAA,EACC,QAAiB,UAAU,IAAY;AAAA,EAEvC,YAAY,MAAc,QAA8B;AACvD,UAAM,MAAM,UAAU,gBAAgB;AACtC,SAAK,OAAO,aAAa,OAAO;AAAA,EACjC;AAAA;AAAA,EAGS,MACR,OACkD;AAClD,WAAO,IAAI;AAAA,MACV;AAAA,MACA,KAAK;AAAA,IACN;AAAA,EACD;AACD;AAEO,MAAM,uBACJ,SACT;AAAA,EACC,QAAiB,UAAU,IAAY;AAAA,EAE9B,aAAa,KAAK,OAAO;AAAA,EAElC,aAAqB;AACpB,WAAO,OAAO,KAAK,UAAU;AAAA,EAC9B;AACD;AAMO,SAAS,IACf,MACA,QACsC;AACtC,SAAO,IAAI,sBAAsB,MAAM,MAAM;AAC9C;","names":[]}
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var halfvec_exports = {};
20
+ __export(halfvec_exports, {
21
+ PgHalfVector: () => PgHalfVector,
22
+ PgHalfVectorBuilder: () => PgHalfVectorBuilder,
23
+ halfvec: () => halfvec
24
+ });
25
+ module.exports = __toCommonJS(halfvec_exports);
26
+ var import_entity = require("../../../entity.cjs");
27
+ var import_common = require("../common.cjs");
28
+ class PgHalfVectorBuilder extends import_common.PgColumnBuilder {
29
+ static [import_entity.entityKind] = "PgHalfVectorBuilder";
30
+ constructor(name, config) {
31
+ super(name, "array", "PgHalfVector");
32
+ this.config.dimensions = config.dimensions;
33
+ }
34
+ /** @internal */
35
+ build(table) {
36
+ return new PgHalfVector(
37
+ table,
38
+ this.config
39
+ );
40
+ }
41
+ }
42
+ class PgHalfVector extends import_common.PgColumn {
43
+ static [import_entity.entityKind] = "PgHalfVector";
44
+ dimensions = this.config.dimensions;
45
+ getSQLType() {
46
+ return `halfvec(${this.dimensions})`;
47
+ }
48
+ mapToDriverValue(value) {
49
+ return JSON.stringify(value);
50
+ }
51
+ mapFromDriverValue(value) {
52
+ return value.slice(1, -1).split(",").map((v) => Number.parseFloat(v));
53
+ }
54
+ }
55
+ function halfvec(name, config) {
56
+ return new PgHalfVectorBuilder(name, config);
57
+ }
58
+ // Annotate the CommonJS export names for ESM import in node:
59
+ 0 && (module.exports = {
60
+ PgHalfVector,
61
+ PgHalfVectorBuilder,
62
+ halfvec
63
+ });
64
+ //# sourceMappingURL=halfvec.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/pg-core/columns/vector_extension/halfvec.ts"],"sourcesContent":["import type { ColumnBuilderBaseConfig, ColumnBuilderRuntimeConfig, MakeColumnConfig } from '~/column-builder.ts';\nimport type { ColumnBaseConfig } from '~/column.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { AnyPgTable } from '~/pg-core/table.ts';\nimport { PgColumn, PgColumnBuilder } from '../common.ts';\n\nexport type PgHalfVectorBuilderInitial<TName extends string> = PgHalfVectorBuilder<{\n\tname: TName;\n\tdataType: 'array';\n\tcolumnType: 'PgHalfVector';\n\tdata: number[];\n\tdriverParam: string;\n\tenumValues: undefined;\n}>;\n\nexport class PgHalfVectorBuilder<T extends ColumnBuilderBaseConfig<'array', 'PgHalfVector'>> extends PgColumnBuilder<\n\tT,\n\t{ dimensions: number | undefined }\n> {\n\tstatic readonly [entityKind]: string = 'PgHalfVectorBuilder';\n\n\tconstructor(name: string, config: PgHalfVectorConfig) {\n\t\tsuper(name, 'array', 'PgHalfVector');\n\t\tthis.config.dimensions = config.dimensions;\n\t}\n\n\t/** @internal */\n\toverride build<TTableName extends string>(\n\t\ttable: AnyPgTable<{ name: TTableName }>,\n\t): PgHalfVector<MakeColumnConfig<T, TTableName>> {\n\t\treturn new PgHalfVector<MakeColumnConfig<T, TTableName>>(\n\t\t\ttable,\n\t\t\tthis.config as ColumnBuilderRuntimeConfig<any, any>,\n\t\t);\n\t}\n}\n\nexport class PgHalfVector<T extends ColumnBaseConfig<'array', 'PgHalfVector'>>\n\textends PgColumn<T, { dimensions: number | undefined }>\n{\n\tstatic readonly [entityKind]: string = 'PgHalfVector';\n\n\treadonly dimensions = this.config.dimensions;\n\n\tgetSQLType(): string {\n\t\treturn `halfvec(${this.dimensions})`;\n\t}\n\n\toverride mapToDriverValue(value: unknown): unknown {\n\t\treturn JSON.stringify(value);\n\t}\n\n\toverride mapFromDriverValue(value: string): unknown {\n\t\treturn value\n\t\t\t.slice(1, -1)\n\t\t\t.split(',')\n\t\t\t.map((v) => Number.parseFloat(v));\n\t}\n}\n\nexport interface PgHalfVectorConfig {\n\tdimensions: number;\n}\n\nexport function halfvec<TName extends string>(\n\tname: TName,\n\tconfig: PgHalfVectorConfig,\n): PgHalfVectorBuilderInitial<TName> {\n\treturn new PgHalfVectorBuilder(name, config);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,oBAA2B;AAE3B,oBAA0C;AAWnC,MAAM,4BAAwF,8BAGnG;AAAA,EACD,QAAiB,wBAAU,IAAY;AAAA,EAEvC,YAAY,MAAc,QAA4B;AACrD,UAAM,MAAM,SAAS,cAAc;AACnC,SAAK,OAAO,aAAa,OAAO;AAAA,EACjC;AAAA;AAAA,EAGS,MACR,OACgD;AAChD,WAAO,IAAI;AAAA,MACV;AAAA,MACA,KAAK;AAAA,IACN;AAAA,EACD;AACD;AAEO,MAAM,qBACJ,uBACT;AAAA,EACC,QAAiB,wBAAU,IAAY;AAAA,EAE9B,aAAa,KAAK,OAAO;AAAA,EAElC,aAAqB;AACpB,WAAO,WAAW,KAAK,UAAU;AAAA,EAClC;AAAA,EAES,iBAAiB,OAAyB;AAClD,WAAO,KAAK,UAAU,KAAK;AAAA,EAC5B;AAAA,EAES,mBAAmB,OAAwB;AACnD,WAAO,MACL,MAAM,GAAG,EAAE,EACX,MAAM,GAAG,EACT,IAAI,CAAC,MAAM,OAAO,WAAW,CAAC,CAAC;AAAA,EAClC;AACD;AAMO,SAAS,QACf,MACA,QACoC;AACpC,SAAO,IAAI,oBAAoB,MAAM,MAAM;AAC5C;","names":[]}
@@ -0,0 +1,31 @@
1
+ import type { ColumnBuilderBaseConfig } from "../../../column-builder.cjs";
2
+ import type { ColumnBaseConfig } from "../../../column.cjs";
3
+ import { entityKind } from "../../../entity.cjs";
4
+ import { PgColumn, PgColumnBuilder } from "../common.cjs";
5
+ export type PgHalfVectorBuilderInitial<TName extends string> = PgHalfVectorBuilder<{
6
+ name: TName;
7
+ dataType: 'array';
8
+ columnType: 'PgHalfVector';
9
+ data: number[];
10
+ driverParam: string;
11
+ enumValues: undefined;
12
+ }>;
13
+ export declare class PgHalfVectorBuilder<T extends ColumnBuilderBaseConfig<'array', 'PgHalfVector'>> extends PgColumnBuilder<T, {
14
+ dimensions: number | undefined;
15
+ }> {
16
+ static readonly [entityKind]: string;
17
+ constructor(name: string, config: PgHalfVectorConfig);
18
+ }
19
+ export declare class PgHalfVector<T extends ColumnBaseConfig<'array', 'PgHalfVector'>> extends PgColumn<T, {
20
+ dimensions: number | undefined;
21
+ }> {
22
+ static readonly [entityKind]: string;
23
+ readonly dimensions: number | undefined;
24
+ getSQLType(): string;
25
+ mapToDriverValue(value: unknown): unknown;
26
+ mapFromDriverValue(value: string): unknown;
27
+ }
28
+ export interface PgHalfVectorConfig {
29
+ dimensions: number;
30
+ }
31
+ export declare function halfvec<TName extends string>(name: TName, config: PgHalfVectorConfig): PgHalfVectorBuilderInitial<TName>;
@@ -0,0 +1,31 @@
1
+ import type { ColumnBuilderBaseConfig } from "../../../column-builder.js";
2
+ import type { ColumnBaseConfig } from "../../../column.js";
3
+ import { entityKind } from "../../../entity.js";
4
+ import { PgColumn, PgColumnBuilder } from "../common.js";
5
+ export type PgHalfVectorBuilderInitial<TName extends string> = PgHalfVectorBuilder<{
6
+ name: TName;
7
+ dataType: 'array';
8
+ columnType: 'PgHalfVector';
9
+ data: number[];
10
+ driverParam: string;
11
+ enumValues: undefined;
12
+ }>;
13
+ export declare class PgHalfVectorBuilder<T extends ColumnBuilderBaseConfig<'array', 'PgHalfVector'>> extends PgColumnBuilder<T, {
14
+ dimensions: number | undefined;
15
+ }> {
16
+ static readonly [entityKind]: string;
17
+ constructor(name: string, config: PgHalfVectorConfig);
18
+ }
19
+ export declare class PgHalfVector<T extends ColumnBaseConfig<'array', 'PgHalfVector'>> extends PgColumn<T, {
20
+ dimensions: number | undefined;
21
+ }> {
22
+ static readonly [entityKind]: string;
23
+ readonly dimensions: number | undefined;
24
+ getSQLType(): string;
25
+ mapToDriverValue(value: unknown): unknown;
26
+ mapFromDriverValue(value: string): unknown;
27
+ }
28
+ export interface PgHalfVectorConfig {
29
+ dimensions: number;
30
+ }
31
+ export declare function halfvec<TName extends string>(name: TName, config: PgHalfVectorConfig): PgHalfVectorBuilderInitial<TName>;