drizzle-zero-sqlite 0.5.18

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.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 vxrn
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,22 @@
1
+ # drizzle-zero-sqlite
2
+
3
+ Generate a Zero schema from a Drizzle SQLite schema while keeping Drizzle as the single schema source.
4
+
5
+ ```ts
6
+ import { drizzleZeroConfig } from 'drizzle-zero-sqlite'
7
+ import { generateDrizzleSchemaFile } from 'on-zero/drizzle'
8
+
9
+ const zeroSchema = drizzleZeroConfig(
10
+ { ...schema, relations },
11
+ {
12
+ tables: {
13
+ user: true,
14
+ message: true,
15
+ },
16
+ }
17
+ )
18
+
19
+ const source = generateDrizzleSchemaFile(zeroSchema)
20
+ ```
21
+
22
+ The translator accepts Drizzle `sqliteTable` definitions and beta `defineRelations` exports, including `through(...)` relations. It rejects PostgreSQL tables so a project cannot silently generate the wrong dialect.
@@ -0,0 +1,113 @@
1
+ import { Column, Table } from 'drizzle-orm';
2
+ import type { ColumnBuilder, ReadonlyJSONValue, TableBuilderWithColumns, ValueType } from '@rocicorp/zero';
3
+ export type { ColumnBuilder, ReadonlyJSONValue, TableBuilderWithColumns };
4
+ type Flatten<T> = {
5
+ [K in keyof T]: T[K];
6
+ } & {};
7
+ type Nullish = null | undefined;
8
+ type ZeroType = 'string' | 'number' | 'boolean' | 'json';
9
+ type TableColumnKeys<TTable extends Table> = Extract<{
10
+ [K in keyof TTable]: TTable[K] extends Column ? K : never;
11
+ }[keyof TTable], string>;
12
+ type Columns<TTable extends Table> = Pick<TTable, TableColumnKeys<TTable>>;
13
+ type ColumnNames<TTable extends Table> = keyof Columns<TTable>;
14
+ type ColumnMetadata<TColumn> = TColumn extends {
15
+ _: unknown;
16
+ } ? TColumn['_'] : never;
17
+ type ColumnData<TColumn> = ColumnMetadata<TColumn> extends {
18
+ data: infer TData;
19
+ } ? TData : never;
20
+ type ColumnDataType<TColumn> = ColumnMetadata<TColumn> extends {
21
+ dataType: infer TDataType extends string;
22
+ } ? TDataType : never;
23
+ type ColumnEnumValues<TColumn> = ColumnMetadata<TColumn> extends {
24
+ enumValues: infer TEnumValues;
25
+ } ? TEnumValues : never;
26
+ type NormalizeColumnDataType<TDataType extends string> = TDataType extends 'date' ? 'date' : TDataType extends `bigint${string}` ? 'number' : TDataType extends 'boolean' ? 'boolean' : TDataType extends `number${string}` ? 'number' : TDataType extends 'string' ? 'string' : TDataType extends `string ${string}` ? 'string' : TDataType extends 'object json' ? 'json' : TDataType extends 'object date' ? 'date' : never;
27
+ type ResolveColumnZeroType<TColumn> = ColumnEnumValues<TColumn> extends readonly string[] ? 'string' : NormalizeColumnDataType<ColumnDataType<TColumn>> extends 'number' | 'date' ? 'number' : NormalizeColumnDataType<ColumnDataType<TColumn>> extends infer TType extends ZeroType ? TType : never;
28
+ type PreserveNarrow<TData, TWide, TFallback> = TData extends TWide ? TWide extends TData ? TFallback : TData : TFallback;
29
+ type ResolveCustomType<TColumn> = ResolveColumnZeroType<TColumn> extends 'json' ? unknown extends ColumnData<TColumn> ? ReadonlyJSONValue : ColumnData<TColumn> : ResolveColumnZeroType<TColumn> extends 'boolean' ? PreserveNarrow<Exclude<ColumnData<TColumn>, Nullish>, boolean, boolean> | Extract<ColumnData<TColumn>, Nullish> : ResolveColumnZeroType<TColumn> extends 'number' ? number : ResolveColumnZeroType<TColumn> extends 'string' ? PreserveNarrow<Exclude<ColumnData<TColumn>, Nullish>, string, string> | Extract<ColumnData<TColumn>, Nullish> : unknown;
30
+ type PrimaryKeyColumns<TTable extends Table> = {
31
+ [K in keyof Columns<TTable>]: ColumnMetadata<Columns<TTable>[K]> extends {
32
+ isPrimaryKey: true;
33
+ } ? K extends string ? K : never : never;
34
+ }[keyof Columns<TTable>];
35
+ type FindPrimaryKeyFromTable<TTable extends Table> = [PrimaryKeyColumns<TTable>] extends [
36
+ never
37
+ ] ? [never] : [PrimaryKeyColumns<TTable>];
38
+ type TypeOverride<TCustomType> = {
39
+ readonly type: ZeroType;
40
+ readonly optional: boolean;
41
+ readonly customType: TCustomType;
42
+ readonly kind?: 'enum';
43
+ };
44
+ export type ColumnsConfig<TTable extends Table> = boolean | Partial<{
45
+ readonly [KColumn in ColumnNames<TTable>]: boolean | ColumnBuilder<TypeOverride<ResolveCustomType<Columns<TTable>[KColumn]>>>;
46
+ }>;
47
+ type PrimaryKeyColumnNames<TTable extends Table> = Extract<FindPrimaryKeyFromTable<TTable>[number], ColumnNames<TTable>>;
48
+ type IncludedColumnKeys<TTable extends Table, TColumnConfig extends ColumnsConfig<TTable> | undefined> = [TColumnConfig] extends [boolean | undefined] ? ColumnNames<TTable> : [PrimaryKeyColumnNames<TTable>] extends [never] ? ColumnNames<TTable> : Extract<PrimaryKeyColumnNames<TTable> | {
49
+ [KColumn in keyof TColumnConfig & ColumnNames<TTable>]: [
50
+ TColumnConfig[KColumn]
51
+ ] extends [false | undefined] ? never : KColumn;
52
+ }[keyof TColumnConfig & ColumnNames<TTable>], ColumnNames<TTable>>;
53
+ type ZeroColumnDefinition<TTable extends Table, KColumn extends ColumnNames<TTable>> = Flatten<{
54
+ optional: boolean;
55
+ type: ValueType;
56
+ customType: ResolveCustomType<Columns<TTable>[KColumn]>;
57
+ serverName?: string;
58
+ }>;
59
+ export type ZeroColumns<TTable extends Table, TColumnConfig extends ColumnsConfig<TTable> | undefined> = Flatten<{
60
+ [KColumn in IncludedColumnKeys<TTable, TColumnConfig>]: TColumnConfig extends object ? KColumn extends keyof TColumnConfig ? TColumnConfig[KColumn] extends ColumnBuilder<any> ? TColumnConfig[KColumn]['schema'] : ZeroColumnDefinition<TTable, KColumn> : ZeroColumnDefinition<TTable, KColumn> : ZeroColumnDefinition<TTable, KColumn>;
61
+ }>;
62
+ export type ZeroTableBuilderSchema<TTableName extends string, TTable extends Table, TColumnConfig extends ColumnsConfig<TTable> | undefined> = Flatten<{
63
+ name: TTableName;
64
+ serverName?: string;
65
+ primaryKey: FindPrimaryKeyFromTable<TTable> extends [never] ? readonly [string, ...string[]] : readonly [string, ...string[]] & FindPrimaryKeyFromTable<TTable>;
66
+ columns: Flatten<ZeroColumns<TTable, TColumnConfig>>;
67
+ }>;
68
+ export type ZeroTableBuilder<TTableName extends string, TTable extends Table, TColumnConfig extends ColumnsConfig<TTable> | undefined> = TableBuilderWithColumns<Readonly<ZeroTableBuilderSchema<TTableName, TTable, TColumnConfig>>>;
69
+ export type ZeroTableCasing = 'snake_case' | 'camelCase' | undefined;
70
+ type TableColumnsConfig<TSchema extends Record<string, unknown>> = Partial<Flatten<{
71
+ readonly [K in keyof TSchema as TSchema[K] extends Table<any> ? K : never]: TSchema[K] extends Table<any> ? ColumnsConfig<TSchema[K]> : never;
72
+ }>>;
73
+ type DefaultTableColumnsConfig<TSchema extends Record<string, unknown>> = Flatten<{
74
+ readonly [K in keyof TSchema as TSchema[K] extends Table<any> ? K : never]: TSchema[K] extends Table<any> ? {
75
+ readonly [C in ColumnNames<TSchema[K]>]: true;
76
+ } : never;
77
+ }>;
78
+ type IncludedTableNames<TSchema extends Record<string, unknown>, TColumnConfig extends TableColumnsConfig<TSchema>> = Extract<{
79
+ [K in keyof TSchema & string]: TSchema[K] extends Table<any> ? K extends keyof TColumnConfig ? [TColumnConfig[K]] extends [false | undefined] ? never : K : never : never;
80
+ }[keyof TSchema & string], string>;
81
+ type TableConfigFor<TSchema extends Record<string, unknown>, TColumnConfig extends TableColumnsConfig<TSchema>, TTableName extends IncludedTableNames<TSchema, TColumnConfig>> = TSchema[TTableName] extends infer TTable extends Table<any> ? TTableName extends keyof TColumnConfig ? TColumnConfig[TTableName] extends ColumnsConfig<TTable> | undefined ? TColumnConfig[TTableName] : never : never : never;
82
+ export type DrizzleToZeroSchema<TSchema extends Record<string, unknown>, TColumnConfig extends TableColumnsConfig<TSchema> = DefaultTableColumnsConfig<TSchema>> = {
83
+ readonly tables: {
84
+ readonly [K in IncludedTableNames<TSchema, TColumnConfig>]: TSchema[K] extends infer TTable extends Table<any> ? ZeroTableBuilderSchema<K, TTable, TableConfigFor<TSchema, TColumnConfig, K>> : never;
85
+ };
86
+ readonly relationships: Record<string, Record<string, RelationHop[]>>;
87
+ readonly enableLegacyMutators?: boolean;
88
+ readonly enableLegacyQueries?: boolean;
89
+ };
90
+ type RelationHop = {
91
+ sourceField: string[];
92
+ destField: string[];
93
+ destSchema: string;
94
+ cardinality: 'one' | 'many';
95
+ };
96
+ export declare const getDrizzleColumnKeyFromColumnName: ({ columnName, table, }: {
97
+ columnName: string;
98
+ table: Table;
99
+ }) => string;
100
+ export declare const createZeroTableBuilder: <TTableName extends string, TTable extends Table, TColumnConfig extends ColumnsConfig<TTable> | undefined = undefined, TCasing extends ZeroTableCasing = ZeroTableCasing>(tableName: TTableName, table: TTable, columns?: TColumnConfig, debug?: boolean, casing?: TCasing, suppressDefaultsWarning?: boolean) => ZeroTableBuilder<TTableName, TTable, TColumnConfig>;
101
+ export declare const drizzleZeroConfig: <const TSchema extends Record<string, unknown>, const TColumnConfig extends TableColumnsConfig<TSchema> = DefaultTableColumnsConfig<TSchema>, const TCasing extends ZeroTableCasing = undefined>(schema: TSchema, config?: {
102
+ readonly tables?: TColumnConfig;
103
+ readonly casing?: TCasing;
104
+ readonly debug?: boolean;
105
+ readonly suppressDefaultsWarning?: boolean;
106
+ }) => Flatten<DrizzleToZeroSchema<TSchema, TColumnConfig>>;
107
+ export declare const drizzleZeroSqliteConfig: <const TSchema extends Record<string, unknown>, const TColumnConfig extends TableColumnsConfig<TSchema> = { readonly [K_1 in keyof TSchema as TSchema[K_1] extends Table<any> ? K_1 : never]: TSchema[K_1] extends Table<any> ? { readonly [C in Extract<(TSchema[K_1] extends infer T_1 extends Table<import("drizzle-orm").TableConfig<import("drizzle-orm").Columns>> ? { [K_3 in keyof T_1]: T_1[K_3] extends Column<import("drizzle-orm").ColumnBaseConfig<import("drizzle-orm").ColumnType>, object> ? K_3 : never; } : never)[keyof TSchema[K_1]], string>]: true; } : never; } extends infer T ? { [K in keyof T]: T[K]; } : never, const TCasing extends ZeroTableCasing = undefined>(schema: TSchema, config?: {
108
+ readonly tables?: TColumnConfig;
109
+ readonly casing?: TCasing;
110
+ readonly debug?: boolean;
111
+ readonly suppressDefaultsWarning?: boolean;
112
+ }) => Flatten<DrizzleToZeroSchema<TSchema, TColumnConfig>>;
113
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,376 @@
1
+ import { boolean as zeroBoolean, createSchema, enumeration as zeroEnumeration, json as zeroJson, number as zeroNumber, string as zeroString, table as zeroTable, } from '@rocicorp/zero';
2
+ import { Table, getColumns, getTableName, getTableUniqueName, is, } from 'drizzle-orm';
3
+ import { Relations as LegacyRelations } from 'drizzle-orm/_relations';
4
+ import { toCamelCase, toSnakeCase } from 'drizzle-orm/casing';
5
+ import { getColumnTable } from 'drizzle-orm/column';
6
+ import { SQLiteTable, getTableConfig } from 'drizzle-orm/sqlite-core';
7
+ const prefix = 'drizzle-zero-sqlite';
8
+ const warnedServerDefaults = new Set();
9
+ const typedEntries = (value) => Object.entries(value);
10
+ const debugLog = (debug, message, detail) => {
11
+ if (debug)
12
+ console.log(`${prefix}: ${message}`, detail ?? '');
13
+ };
14
+ const zeroTypeByColumnType = {
15
+ SQLiteText: 'string',
16
+ SQLiteTextJson: 'json',
17
+ SQLiteInteger: 'number',
18
+ SQLiteBoolean: 'boolean',
19
+ SQLiteTimestamp: 'number',
20
+ SQLiteReal: 'number',
21
+ SQLiteBlobJson: 'json',
22
+ SQLiteBigInt: 'number',
23
+ };
24
+ const zeroTypeBySqlType = {
25
+ text: 'string',
26
+ char: 'string',
27
+ varchar: 'string',
28
+ clob: 'string',
29
+ integer: 'number',
30
+ int: 'number',
31
+ tinyint: 'number',
32
+ smallint: 'number',
33
+ mediumint: 'number',
34
+ bigint: 'number',
35
+ real: 'number',
36
+ double: 'number',
37
+ 'double precision': 'number',
38
+ float: 'number',
39
+ numeric: 'number',
40
+ decimal: 'number',
41
+ boolean: 'boolean',
42
+ date: 'number',
43
+ datetime: 'number',
44
+ time: 'number',
45
+ timestamp: 'number',
46
+ json: 'json',
47
+ jsonb: 'json',
48
+ };
49
+ const zeroTypeFromDataType = (dataType) => {
50
+ if (typeof dataType !== 'string')
51
+ return null;
52
+ if (dataType === 'boolean')
53
+ return 'boolean';
54
+ if (dataType === 'date' || dataType === 'object date')
55
+ return 'number';
56
+ if (dataType === 'object json')
57
+ return 'json';
58
+ if (dataType === 'string' || dataType.startsWith('string '))
59
+ return 'string';
60
+ if (dataType === 'bigint' || dataType.startsWith('bigint '))
61
+ return 'number';
62
+ if (dataType === 'number' || dataType.startsWith('number '))
63
+ return 'number';
64
+ return null;
65
+ };
66
+ const resolveZeroType = (column) => {
67
+ if (column.enumValues?.length)
68
+ return 'string';
69
+ if (column.columnType && zeroTypeByColumnType[column.columnType]) {
70
+ return zeroTypeByColumnType[column.columnType] ?? null;
71
+ }
72
+ const dataType = zeroTypeFromDataType(column.dataType);
73
+ if (dataType)
74
+ return dataType;
75
+ return zeroTypeBySqlType[column.getSQLType().toLowerCase()] ?? null;
76
+ };
77
+ const getSqliteTableConfig = (table) => {
78
+ if (!is(table, SQLiteTable)) {
79
+ throw new Error(`${prefix}: Unsupported table type: ${getTableName(table)}. Only SQLite tables are supported.`);
80
+ }
81
+ return getTableConfig(table);
82
+ };
83
+ export const getDrizzleColumnKeyFromColumnName = ({ columnName, table, }) => {
84
+ const match = typedEntries(getColumns(table)).find(([_key, column]) => column.name === columnName);
85
+ if (!match) {
86
+ throw new Error(`${prefix}: Unable to resolve column ${getTableName(table)}.${columnName}`);
87
+ }
88
+ return String(match[0]);
89
+ };
90
+ export const createZeroTableBuilder = (tableName, table, columns, debug, casing, suppressDefaultsWarning) => {
91
+ const actualTableName = getTableName(table);
92
+ const tableColumns = getColumns(table);
93
+ const tableConfig = getSqliteTableConfig(table);
94
+ const columnNameToKey = new Map(Object.entries(tableColumns).map(([key, column]) => [column.name, key]));
95
+ const primaryKeys = new Set();
96
+ for (const [key, column] of Object.entries(tableColumns)) {
97
+ if (column.primary)
98
+ primaryKeys.add(key);
99
+ }
100
+ for (const primaryKey of tableConfig.primaryKeys) {
101
+ for (const column of primaryKey.columns) {
102
+ const key = columnNameToKey.get(column.name);
103
+ if (key)
104
+ primaryKeys.add(key);
105
+ }
106
+ }
107
+ if (primaryKeys.size === 0) {
108
+ throw new Error(`${prefix}: No primary keys found in table ${actualTableName}`);
109
+ }
110
+ const isColumnBuilder = (value) => typeof value === 'object' && value !== null && 'schema' in value;
111
+ const mappedColumns = {};
112
+ for (const [key, column] of Object.entries(tableColumns)) {
113
+ const columnConfig = typeof columns === 'object' && columns !== null
114
+ ? columns[key]
115
+ : undefined;
116
+ const override = isColumnBuilder(columnConfig);
117
+ const resolvedColumnName = !column.keyAsName || casing === undefined
118
+ ? column.name
119
+ : casing === 'camelCase'
120
+ ? toCamelCase(column.name)
121
+ : toSnakeCase(column.name);
122
+ if (typeof columns === 'object' && columns !== null) {
123
+ if (columnConfig !== undefined && typeof columnConfig !== 'boolean' && !override) {
124
+ throw new Error(`${prefix}: Invalid column config for ${actualTableName}.${resolvedColumnName}`);
125
+ }
126
+ if (columnConfig !== true && !override && !primaryKeys.has(key)) {
127
+ debugLog(debug, `Skipping column ${actualTableName}.${resolvedColumnName}`);
128
+ continue;
129
+ }
130
+ }
131
+ if (override) {
132
+ mappedColumns[key] = columnConfig;
133
+ continue;
134
+ }
135
+ const type = resolveZeroType(column);
136
+ if (!type) {
137
+ console.warn(`${prefix}: Unsupported column type: ${actualTableName}.${resolvedColumnName} (${column.columnType}, ${column.dataType}, ${column.getSQLType()})`);
138
+ continue;
139
+ }
140
+ const hasServerDefault = column.hasDefault || column.defaultFn !== undefined;
141
+ if (hasServerDefault && !suppressDefaultsWarning) {
142
+ const warningKey = `${actualTableName}.${resolvedColumnName}`;
143
+ if (!warnedServerDefaults.has(warningKey)) {
144
+ warnedServerDefaults.add(warningKey);
145
+ console.warn(`${prefix}: ${warningKey} uses a database default that a Zero client cannot apply`);
146
+ }
147
+ }
148
+ const optional = primaryKeys.has(key)
149
+ ? false
150
+ : hasServerDefault
151
+ ? true
152
+ : !column.notNull;
153
+ const builder = column.enumValues?.length
154
+ ? zeroEnumeration()
155
+ : type === 'string'
156
+ ? zeroString()
157
+ : type === 'number'
158
+ ? zeroNumber()
159
+ : type === 'boolean'
160
+ ? zeroBoolean()
161
+ : zeroJson();
162
+ const namedBuilder = resolvedColumnName === key ? builder : builder.from(resolvedColumnName);
163
+ mappedColumns[key] = optional ? namedBuilder.optional() : namedBuilder;
164
+ }
165
+ const tableBuilder = zeroTable(tableName);
166
+ const namedTableBuilder = actualTableName === tableName ? tableBuilder : tableBuilder.from(actualTableName);
167
+ return namedTableBuilder
168
+ .columns(mappedColumns)
169
+ .primaryKey(...primaryKeys);
170
+ };
171
+ const isBetaRelationsTableConfig = (value) => {
172
+ if (typeof value !== 'object' || value === null || Array.isArray(value))
173
+ return false;
174
+ return ('name' in value &&
175
+ typeof value.name === 'string' &&
176
+ 'table' in value &&
177
+ 'relations' in value &&
178
+ typeof value.relations === 'object' &&
179
+ value.relations !== null);
180
+ };
181
+ const isBetaRelationsExport = (value) => {
182
+ if (typeof value !== 'object' || value === null || Array.isArray(value))
183
+ return false;
184
+ const entries = Object.values(value);
185
+ return entries.length > 0 && entries.every(isBetaRelationsTableConfig);
186
+ };
187
+ const getDrizzleKeyFromTable = ({ schema, table, fallbackTableName, }) => {
188
+ if (table) {
189
+ const directMatch = typedEntries(schema).find(([_key, value]) => is(value, Table) && value === table)?.[0];
190
+ if (directMatch)
191
+ return String(directMatch);
192
+ const uniqueName = getTableUniqueName(table);
193
+ const uniqueMatch = typedEntries(schema).find(([_key, value]) => is(value, Table) && getTableUniqueName(value) === uniqueName)?.[0];
194
+ if (uniqueMatch)
195
+ return String(uniqueMatch);
196
+ }
197
+ if (fallbackTableName) {
198
+ const fallbackMatch = typedEntries(schema).find(([_key, value]) => is(value, Table) && getTableName(value) === fallbackTableName)?.[0];
199
+ if (fallbackMatch)
200
+ return String(fallbackMatch);
201
+ }
202
+ throw new Error(`${prefix}: Unable to resolve table key for ${table ? getTableUniqueName(table) : fallbackTableName}`);
203
+ };
204
+ const relationEntries = (relations) => Object.fromEntries(Object.entries(relations).filter(([_name, relation]) => {
205
+ if (typeof relation !== 'object' || relation === null)
206
+ return false;
207
+ return ('fieldName' in relation &&
208
+ 'relationType' in relation &&
209
+ 'sourceTable' in relation &&
210
+ 'targetTable' in relation &&
211
+ 'sourceColumns' in relation &&
212
+ 'targetColumns' in relation);
213
+ }));
214
+ const normalizeRelation = ({ schema, relation, }) => {
215
+ if (!is(relation.sourceTable, Table) || !is(relation.targetTable, Table)) {
216
+ throw new Error(`${prefix}: Relations involving views are not supported`);
217
+ }
218
+ const sourceTableName = getDrizzleKeyFromTable({
219
+ schema,
220
+ table: relation.sourceTable,
221
+ fallbackTableName: getTableName(relation.sourceTable),
222
+ });
223
+ const targetTableName = getDrizzleKeyFromTable({
224
+ schema,
225
+ table: relation.targetTable,
226
+ fallbackTableName: relation.targetTableName,
227
+ });
228
+ const sourceField = relation.sourceColumns.map((column) => getDrizzleColumnKeyFromColumnName({
229
+ columnName: column.name,
230
+ table: getColumnTable(column),
231
+ }));
232
+ const destField = relation.targetColumns.map((column) => getDrizzleColumnKeyFromColumnName({
233
+ columnName: column.name,
234
+ table: getColumnTable(column),
235
+ }));
236
+ if (!sourceField.length || !destField.length) {
237
+ throw new Error(`${prefix}: Missing join columns for ${sourceTableName}.${relation.fieldName}`);
238
+ }
239
+ if (!relation.through) {
240
+ return {
241
+ sourceTableName,
242
+ relationName: relation.fieldName,
243
+ hops: [
244
+ {
245
+ sourceField,
246
+ destField,
247
+ destSchema: targetTableName,
248
+ cardinality: relation.relationType,
249
+ },
250
+ ],
251
+ };
252
+ }
253
+ if (!relation.throughTable || !is(relation.throughTable, Table)) {
254
+ throw new Error(`${prefix}: Invalid through relation ${sourceTableName}.${relation.fieldName}`);
255
+ }
256
+ const throughTableName = getDrizzleKeyFromTable({
257
+ schema,
258
+ table: relation.throughTable,
259
+ fallbackTableName: getTableName(relation.throughTable),
260
+ });
261
+ const throughSourceField = relation.through.source.map((column) => column._.key);
262
+ const throughTargetField = relation.through.target.map((column) => column._.key);
263
+ if (!throughSourceField.length || !throughTargetField.length) {
264
+ throw new Error(`${prefix}: Missing through columns for ${sourceTableName}.${relation.fieldName}`);
265
+ }
266
+ return {
267
+ sourceTableName,
268
+ relationName: relation.fieldName,
269
+ hops: [
270
+ {
271
+ sourceField,
272
+ destField: throughSourceField,
273
+ destSchema: throughTableName,
274
+ cardinality: relation.relationType,
275
+ },
276
+ {
277
+ sourceField: throughTargetField,
278
+ destField,
279
+ destSchema: targetTableName,
280
+ cardinality: relation.relationType,
281
+ },
282
+ ],
283
+ };
284
+ };
285
+ export const drizzleZeroConfig = (schema, config) => {
286
+ const tables = [];
287
+ const includedTableKeys = new Set();
288
+ const tableColumnNames = new Map();
289
+ const discoveredRelations = new Map();
290
+ const legacyRelations = [];
291
+ for (const [entryNameKey, value] of typedEntries(schema)) {
292
+ const entryName = String(entryNameKey);
293
+ if (!value)
294
+ throw new Error(`${prefix}: ${entryName} is not defined`);
295
+ if (is(value, Table)) {
296
+ const tableConfig = config?.tables?.[entryNameKey];
297
+ if (config?.tables && (tableConfig === false || tableConfig === undefined)) {
298
+ debugLog(config.debug, `Skipping table ${entryName}`);
299
+ continue;
300
+ }
301
+ const tableBuilder = createZeroTableBuilder(entryName, value, tableConfig, config?.debug, config?.casing, config?.suppressDefaultsWarning);
302
+ tables.push(tableBuilder);
303
+ includedTableKeys.add(entryName);
304
+ tableColumnNames.set(entryName, new Set(Object.keys(tableBuilder.schema.columns)));
305
+ continue;
306
+ }
307
+ if (value instanceof LegacyRelations) {
308
+ legacyRelations.push(entryName);
309
+ continue;
310
+ }
311
+ if (!isBetaRelationsExport(value))
312
+ continue;
313
+ for (const [tableKey, tableConfig] of Object.entries(value)) {
314
+ if (!is(tableConfig.table, Table))
315
+ continue;
316
+ const entries = relationEntries(tableConfig.relations);
317
+ const existing = discoveredRelations.get(tableKey);
318
+ if (!existing) {
319
+ discoveredRelations.set(tableKey, {
320
+ table: tableConfig.table,
321
+ relations: entries,
322
+ });
323
+ continue;
324
+ }
325
+ if (existing.table !== tableConfig.table &&
326
+ getTableUniqueName(existing.table) !== getTableUniqueName(tableConfig.table)) {
327
+ throw new Error(`${prefix}: Conflicting relation exports for ${tableKey}`);
328
+ }
329
+ for (const [relationName, relation] of Object.entries(entries)) {
330
+ if (relationName in existing.relations) {
331
+ throw new Error(`${prefix}: Duplicate relationship ${tableKey}.${relationName}`);
332
+ }
333
+ existing.relations[relationName] = relation;
334
+ }
335
+ }
336
+ }
337
+ if (legacyRelations.length) {
338
+ throw new Error(`${prefix}: Legacy relations() exports are unsupported. Use defineRelations(). Found: ${legacyRelations.join(', ')}`);
339
+ }
340
+ if (!tables.length) {
341
+ throw new Error(`${prefix}: No SQLite tables found in the input`);
342
+ }
343
+ const relationships = {};
344
+ for (const relationConfig of discoveredRelations.values()) {
345
+ for (const relation of Object.values(relationConfig.relations)) {
346
+ const normalized = normalizeRelation({ schema, relation });
347
+ const targetTableName = normalized.hops.at(-1).destSchema;
348
+ const throughTableName = normalized.hops.length === 2 ? normalized.hops[0].destSchema : undefined;
349
+ if (!includedTableKeys.has(normalized.sourceTableName) ||
350
+ !includedTableKeys.has(targetTableName) ||
351
+ (throughTableName && !includedTableKeys.has(throughTableName))) {
352
+ debugLog(config?.debug, `Skipping relation ${normalized.relationName}`);
353
+ continue;
354
+ }
355
+ if (tableColumnNames.get(normalized.sourceTableName)?.has(normalized.relationName)) {
356
+ throw new Error(`${prefix}: Relationship ${normalized.sourceTableName}.${normalized.relationName} conflicts with a column`);
357
+ }
358
+ if (relationships[normalized.sourceTableName]?.[normalized.relationName]) {
359
+ throw new Error(`${prefix}: Duplicate relationship ${normalized.sourceTableName}.${normalized.relationName}`);
360
+ }
361
+ relationships[normalized.sourceTableName] = {
362
+ ...relationships[normalized.sourceTableName],
363
+ [normalized.relationName]: normalized.hops,
364
+ };
365
+ }
366
+ }
367
+ return createSchema({
368
+ tables,
369
+ relationships: Object.entries(relationships).map(([name, value]) => ({
370
+ name,
371
+ relationships: value,
372
+ })),
373
+ });
374
+ };
375
+ export const drizzleZeroSqliteConfig = drizzleZeroConfig;
376
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,58 @@
1
+ {
2
+ "name": "drizzle-zero-sqlite",
3
+ "version": "0.5.18",
4
+ "description": "Generate Zero schemas from Drizzle SQLite schemas",
5
+ "sideEffects": false,
6
+ "main": "dist/index.js",
7
+ "module": "dist/index.js",
8
+ "type": "module",
9
+ "types": "./dist/index.d.ts",
10
+ "files": [
11
+ "dist",
12
+ "LICENSE",
13
+ "README.md"
14
+ ],
15
+ "publishConfig": {
16
+ "access": "public"
17
+ },
18
+ "scripts": {
19
+ "build": "rm -rf dist && tsc -p tsconfig.build.json",
20
+ "format": "oxfmt",
21
+ "format:check": "oxfmt --check",
22
+ "lint": "oxlint src",
23
+ "test": "vitest run",
24
+ "typecheck": "tsc --noEmit -p tsconfig.test.json"
25
+ },
26
+ "exports": {
27
+ "./package.json": "./package.json",
28
+ ".": {
29
+ "types": "./dist/index.d.ts",
30
+ "import": "./dist/index.js",
31
+ "default": "./dist/index.js"
32
+ }
33
+ },
34
+ "peerDependencies": {
35
+ "@rocicorp/zero": ">=1.5.0",
36
+ "drizzle-orm": ">=1.0.0-beta.0 <2"
37
+ },
38
+ "devDependencies": {
39
+ "@rocicorp/zero": "1.7.0",
40
+ "drizzle-orm": "1.0.0-beta.9-e89174b",
41
+ "oxfmt": "0.28.0",
42
+ "oxlint": "1.43.0",
43
+ "typescript": "5.9.3",
44
+ "vitest": "3.2.4"
45
+ },
46
+ "repository": {
47
+ "type": "git",
48
+ "url": "git+https://github.com/natew/orez.git",
49
+ "directory": "packages/drizzle-zero-sqlite"
50
+ },
51
+ "keywords": [
52
+ "zero",
53
+ "drizzle",
54
+ "sqlite",
55
+ "schema"
56
+ ],
57
+ "license": "MIT"
58
+ }