Skip to content

Commit 6cd5e6b

Browse files
committed
Merge commit '45b3c529ad8a187580842a1ddf33b26f9b906ebc' into alternation-engine
2 parents f2ecdc6 + 45b3c52 commit 6cd5e6b

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+8312
-3691
lines changed

drizzle-kit/build.dev.ts

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,19 +15,6 @@ const driversPackages = [
1515
'better-sqlite3',
1616
];
1717

18-
esbuild.buildSync({
19-
entryPoints: ['./src/utils.ts'],
20-
bundle: true,
21-
outfile: 'dist/utils.js',
22-
format: 'cjs',
23-
target: 'node16',
24-
platform: 'node',
25-
external: ['drizzle-orm', 'esbuild', ...driversPackages],
26-
banner: {
27-
js: `#!/usr/bin/env -S node --loader @esbuild-kit/esm-loader --no-warnings`,
28-
},
29-
});
30-
3118
esbuild.buildSync({
3219
entryPoints: ['./src/cli/index.ts'],
3320
bundle: true,

drizzle-kit/build.ext.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,16 @@ const main = async () => {
3232
format: ['esm'],
3333
});
3434

35+
await tsup.build({
36+
entryPoints: ['./src/ext/studio-mysql.ts'],
37+
outDir: './dist',
38+
external: [],
39+
splitting: false,
40+
dts: true,
41+
platform: 'browser',
42+
format: ['esm'],
43+
});
44+
3545
// await tsup.build({
3646
// entryPoints: ['./src/utils/mover-postgres.ts', './src/utils/mover-mysql.ts'],
3747
// outDir: './dist',

drizzle-kit/build.ts

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ esbuild.buildSync({
4242

4343
const main = async () => {
4444
await tsup.build({
45-
entryPoints: ['./src/index.ts', './src/ext/api.ts'],
45+
entryPoints: ['./src/index.ts'],
4646
outDir: './dist',
4747
external: ['bun:sqlite'],
4848
splitting: false,
@@ -62,8 +62,29 @@ const main = async () => {
6262
},
6363
});
6464

65-
const apiCjs = readFileSync('./dist/api.js', 'utf8').replace(/await import\(/g, 'require(');
66-
writeFileSync('./dist/api.js', apiCjs);
65+
await tsup.build({
66+
entryPoints: ['./src/ext/api-postgres.ts'],
67+
outDir: './dist',
68+
external: ['bun:sqlite'],
69+
splitting: false,
70+
dts: true,
71+
format: ['cjs', 'esm'],
72+
outExtension: (ctx) => {
73+
if (ctx.format === 'cjs') {
74+
return {
75+
dts: '.d.ts',
76+
js: '.js',
77+
};
78+
}
79+
return {
80+
dts: '.d.mts',
81+
js: '.mjs',
82+
};
83+
},
84+
});
85+
86+
const apiCjs = readFileSync('./dist/api-postgres.js', 'utf8').replace(/await import\(/g, 'require(');
87+
writeFileSync('./dist/api-postgres.js', apiCjs);
6788
};
6889

6990
main().catch((e) => {

drizzle-kit/package.json

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
"build": "rm -rf ./dist && tsx build.ts && cp package.json dist/ && attw --pack dist",
4040
"build:cli": "rm -rf ./dist && tsx build.cli.ts && cp package.json dist/ && attw --pack dist",
4141
"build:dev": "rm -rf ./dist && tsx build.dev.ts && tsc -p tsconfig.cli-types.json && chmod +x ./dist/index.cjs",
42-
"build:ext": "rm -rf ./dist && vitest run bin.test && vitest run ./tests/postgres/ && vitest run ./tests/sqlite && tsx build.ext.ts",
42+
"build:ext": "rm -rf ./dist && vitest run bin.test && vitest run ./tests/postgres/ && vitest run ./tests/sqlite && vitest run ./tests/mysql && tsx build.ext.ts",
4343
"pack": "cp package.json README.md dist/ && (cd dist && npm pack --pack-destination ..) && rm -f package.tgz && mv *.tgz package.tgz",
4444
"tsc": "tsc -p tsconfig.build.json --noEmit",
4545
"publish": "npm publish package.tgz"
@@ -108,7 +108,6 @@
108108
"postgres": "^3.4.4",
109109
"prettier": "^3.5.3",
110110
"semver": "^7.7.2",
111-
"superjson": "^2.2.1",
112111
"tsup": "^8.3.5",
113112
"tsx": "^3.12.1",
114113
"typescript": "^5.6.3",
@@ -132,17 +131,17 @@
132131
"types": "./index.d.mts",
133132
"default": "./index.mjs"
134133
},
135-
"./api": {
134+
"./api-postgres": {
136135
"import": {
137-
"types": "./api.d.mts",
138-
"default": "./api.mjs"
136+
"types": "./api-postgres.d.mts",
137+
"default": "./api-postgres.mjs"
139138
},
140139
"require": {
141-
"types": "./api.d.ts",
142-
"default": "./api.js"
140+
"types": "./api-postgres.d.ts",
141+
"default": "./api-postgres.js"
143142
},
144-
"types": "./api.d.mts",
145-
"default": "./api.mjs"
143+
"types": "./api-postgres.d.mts",
144+
"default": "./api-postgres.mjs"
146145
}
147146
}
148147
}

drizzle-kit/src/cli/commands/generate-mysql.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { fromDrizzleSchema, prepareFromSchemaFiles } from 'src/dialects/mysql/dr
22
import { prepareSnapshot } from 'src/dialects/mysql/serializer';
33
import { prepareFilenames } from 'src/utils/utils-node';
44
import { Column, createDDL, interimToDDL, type Table, View } from '../../dialects/mysql/ddl';
5-
import { ddlDiffDry, diffDDL } from '../../dialects/mysql/diff';
5+
import { ddlDiffDry, ddlDiff } from '../../dialects/mysql/diff';
66
import { assertV1OutFolder, prepareMigrationFolder } from '../../utils/utils-node';
77
import { resolver } from '../prompts';
88
import { writeResult } from './generate-common';
@@ -34,7 +34,7 @@ export const handle = async (config: GenerateConfig) => {
3434
return;
3535
}
3636

37-
const { sqlStatements, statements, renames } = await diffDDL(
37+
const { sqlStatements, renames } = await ddlDiff(
3838
ddlPrev,
3939
ddlCur,
4040
resolver<Table>('table'),

drizzle-kit/src/cli/commands/generate-singlestore.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Column, createDDL, interimToDDL, Table, View } from 'src/dialects/mysql/ddl';
2-
import { ddlDiffDry, diffDDL } from 'src/dialects/singlestore/diff';
2+
import { ddlDiffDry, ddlDiff } from 'src/dialects/singlestore/diff';
33
import { fromDrizzleSchema, prepareFromSchemaFiles } from 'src/dialects/singlestore/drizzle';
44
import { prepareSnapshot } from 'src/dialects/singlestore/serializer';
55
import { prepareFilenames } from 'src/utils/utils-node';
@@ -34,7 +34,7 @@ export const handle = async (config: GenerateConfig) => {
3434
return;
3535
}
3636

37-
const { sqlStatements, renames } = await diffDDL(
37+
const { sqlStatements, renames } = await ddlDiff(
3838
ddlPrev,
3939
ddlCur,
4040
resolver<Table>('table'),

drizzle-kit/src/cli/commands/pull-mysql.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { join } from 'path';
66
import { toJsonSnapshot } from 'src/dialects/mysql/snapshot';
77
import { mockResolver } from 'src/utils/mocks';
88
import { createDDL, interimToDDL } from '../../dialects/mysql/ddl';
9-
import { diffDDL } from '../../dialects/mysql/diff';
9+
import { ddlDiff } from '../../dialects/mysql/diff';
1010
import { fromDatabaseForDrizzle } from '../../dialects/mysql/introspect';
1111
import { ddlToTypeScript } from '../../dialects/mysql/typescript';
1212
import { prepareOutFolder } from '../../utils/utils-node';
@@ -50,7 +50,7 @@ export const handle = async (
5050
const { snapshots, journal } = prepareOutFolder(out, 'mysql');
5151

5252
if (snapshots.length === 0) {
53-
const { sqlStatements } = await diffDDL(
53+
const { sqlStatements } = await ddlDiff(
5454
createDDL(),
5555
ddl,
5656
mockResolver(new Set()),

drizzle-kit/src/cli/commands/pull-singlestore.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { createDDL, interimToDDL } from 'src/dialects/mysql/ddl';
66
import { fromDatabaseForDrizzle } from 'src/dialects/mysql/introspect';
77
import { toJsonSnapshot } from 'src/dialects/mysql/snapshot';
88
import { ddlToTypeScript } from 'src/dialects/mysql/typescript';
9-
import { diffDDL } from 'src/dialects/singlestore/diff';
9+
import { ddlDiff } from 'src/dialects/singlestore/diff';
1010
import { mockResolver } from 'src/utils/mocks';
1111
import { prepareOutFolder } from '../../utils/utils-node';
1212
import type { Casing, Prefix } from '../validations/common';
@@ -51,7 +51,7 @@ export const handle = async (
5151
const { snapshots, journal } = prepareOutFolder(out, 'mysql');
5252

5353
if (snapshots.length === 0) {
54-
const { sqlStatements } = await diffDDL(
54+
const { sqlStatements } = await ddlDiff(
5555
createDDL(),
5656
ddl,
5757
mockResolver(new Set()),

drizzle-kit/src/cli/commands/push-mysql.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { render, renderWithTask } from 'hanji';
33
import { Column, interimToDDL, Table, View } from 'src/dialects/mysql/ddl';
44
import { JsonStatement } from 'src/dialects/mysql/statements';
55
import { prepareFilenames } from 'src/utils/utils-node';
6-
import { diffDDL } from '../../dialects/mysql/diff';
6+
import { ddlDiff } from '../../dialects/mysql/diff';
77
import type { DB } from '../../utils';
88
import { resolver } from '../prompts';
99
import { Select } from '../selector-ui';
@@ -50,7 +50,7 @@ export const handle = async (
5050
const { ddl: ddl2 } = interimToDDL(interimFromFiles);
5151
// TODO: handle errors
5252

53-
const { sqlStatements, statements } = await diffDDL(
53+
const { sqlStatements, statements } = await ddlDiff(
5454
ddl1,
5555
ddl2,
5656
resolver<Table>('table'),

drizzle-kit/src/cli/commands/push-singlestore.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { render, renderWithTask } from 'hanji';
33
import { Column, interimToDDL, Table, View } from 'src/dialects/mysql/ddl';
44
import { JsonStatement } from 'src/dialects/mysql/statements';
55
import { prepareFilenames } from 'src/utils/utils-node';
6-
import { diffDDL } from '../../dialects/singlestore/diff';
6+
import { ddlDiff } from '../../dialects/singlestore/diff';
77
import type { DB } from '../../utils';
88
import { resolver } from '../prompts';
99
import { Select } from '../selector-ui';
@@ -50,7 +50,7 @@ export const handle = async (
5050
const { ddl: ddl2 } = interimToDDL(interimFromFiles);
5151
// TODO: handle errors
5252

53-
const { sqlStatements, statements } = await diffDDL(
53+
const { sqlStatements, statements } = await ddlDiff(
5454
ddl1,
5555
ddl2,
5656
resolver<Table>('table'),

drizzle-kit/src/cli/commands/studio.ts

Lines changed: 45 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,8 @@ import { compress } from 'hono/compress';
2828
import { cors } from 'hono/cors';
2929
import { createServer } from 'node:https';
3030
import { LibSQLCredentials } from 'src/cli/validations/libsql';
31-
import superjson from 'superjson';
3231
import { z } from 'zod';
33-
import { assertUnreachable } from '../../utils';
32+
import { assertUnreachable, Proxy, TransactionProxy } from '../../utils';
3433
import { safeRegister } from '../../utils/utils-node';
3534
import { prepareFilenames } from '../../utils/utils-node';
3635
import type { MysqlCredentials } from '../validations/mysql';
@@ -54,7 +53,8 @@ export type Setup = {
5453
dbHash: string;
5554
dialect: 'postgresql' | 'mysql' | 'sqlite' | 'singlestore';
5655
driver?: 'aws-data-api' | 'd1-http' | 'turso' | 'pglite';
57-
proxy: (params: ProxyParams) => Promise<any[] | any>;
56+
proxy: Proxy;
57+
transactionProxy: TransactionProxy;
5858
customDefaults: CustomDefault[];
5959
schema: Record<string, Record<string, AnyTable<any>>>;
6060
relations: Record<string, Relations>;
@@ -63,7 +63,7 @@ export type Setup = {
6363

6464
export type ProxyParams = {
6565
sql: string;
66-
params: any[];
66+
params?: any[];
6767
typings?: any[];
6868
mode: 'array' | 'object';
6969
method: 'values' | 'get' | 'all' | 'run' | 'execute';
@@ -325,6 +325,7 @@ export const drizzleForPostgres = async (
325325
dialect: 'postgresql',
326326
driver: 'driver' in credentials ? credentials.driver : undefined,
327327
proxy: db.proxy,
328+
transactionProxy: db.transactionProxy,
328329
customDefaults,
329330
schema: pgSchema,
330331
relations,
@@ -339,7 +340,7 @@ export const drizzleForMySQL = async (
339340
schemaFiles?: SchemaFile[],
340341
): Promise<Setup> => {
341342
const { connectToMySQL } = await import('../connections');
342-
const { proxy } = await connectToMySQL(credentials);
343+
const { proxy, transactionProxy } = await connectToMySQL(credentials);
343344

344345
const customDefaults = getCustomDefaults(mysqlSchema);
345346

@@ -358,6 +359,7 @@ export const drizzleForMySQL = async (
358359
dbHash,
359360
dialect: 'mysql',
360361
proxy,
362+
transactionProxy,
361363
customDefaults,
362364
schema: mysqlSchema,
363365
relations,
@@ -430,6 +432,7 @@ export const drizzleForSQLite = async (
430432
dialect: 'sqlite',
431433
driver: 'driver' in credentials ? credentials.driver : undefined,
432434
proxy: sqliteDB.proxy,
435+
transactionProxy: sqliteDB.transactionProxy,
433436
customDefaults,
434437
schema: sqliteSchema,
435438
relations,
@@ -456,6 +459,7 @@ export const drizzleForLibSQL = async (
456459
dialect: 'sqlite',
457460
driver: undefined,
458461
proxy: sqliteDB.proxy,
462+
transactionProxy: sqliteDB.transactionProxy,
459463
customDefaults,
460464
schema: sqliteSchema,
461465
relations,
@@ -470,7 +474,7 @@ export const drizzleForSingleStore = async (
470474
schemaFiles?: SchemaFile[],
471475
): Promise<Setup> => {
472476
const { connectToSingleStore } = await import('../connections');
473-
const { proxy } = await connectToSingleStore(credentials);
477+
const { proxy, transactionProxy } = await connectToSingleStore(credentials);
474478

475479
const customDefaults = getCustomDefaults(singlestoreSchema);
476480

@@ -489,6 +493,7 @@ export const drizzleForSingleStore = async (
489493
dbHash,
490494
dialect: 'singlestore',
491495
proxy,
496+
transactionProxy,
492497
customDefaults,
493498
schema: singlestoreSchema,
494499
relations,
@@ -573,6 +578,25 @@ const proxySchema = z.object({
573578
}),
574579
});
575580

581+
const transactionProxySchema = z.object({
582+
type: z.literal('tproxy'),
583+
data: z
584+
.object({
585+
sql: z.string(),
586+
params: z.array(z.any()).optional(),
587+
typings: z.string().array().optional(),
588+
mode: z.enum(['array', 'object']).default('object'),
589+
method: z.union([
590+
z.literal('values'),
591+
z.literal('get'),
592+
z.literal('all'),
593+
z.literal('run'),
594+
z.literal('execute'),
595+
]),
596+
})
597+
.array(),
598+
});
599+
576600
const defaultsSchema = z.object({
577601
type: z.literal('defaults'),
578602
data: z
@@ -586,19 +610,18 @@ const defaultsSchema = z.object({
586610
.min(1),
587611
});
588612

589-
const schema = z.union([init, proxySchema, defaultsSchema]);
590-
591-
superjson.registerCustom<Buffer, number[]>(
592-
{
593-
isApplicable: (v): v is Buffer => v instanceof Buffer,
594-
serialize: (v) => [...v],
595-
deserialize: (v) => Buffer.from(v),
596-
},
597-
'buffer',
598-
);
613+
const schema = z.union([init, proxySchema, transactionProxySchema, defaultsSchema]);
599614

600615
const jsonStringify = (data: any) => {
601616
return JSON.stringify(data, (_key, value) => {
617+
// Convert Error to object
618+
if (value instanceof Error) {
619+
return {
620+
error: value.message,
621+
};
622+
}
623+
624+
// Convert BigInt to string
602625
if (typeof value === 'bigint') {
603626
return value.toString();
604627
}
@@ -635,6 +658,7 @@ export const prepareServer = async (
635658
dialect,
636659
driver,
637660
proxy,
661+
transactionProxy,
638662
customDefaults,
639663
schema: drizzleSchema,
640664
relations,
@@ -714,6 +738,11 @@ export const prepareServer = async (
714738
return c.json(JSON.parse(jsonStringify(result)));
715739
}
716740

741+
if (type === 'tproxy') {
742+
const result = await transactionProxy(body.data);
743+
return c.json(JSON.parse(jsonStringify(result)));
744+
}
745+
717746
if (type === 'defaults') {
718747
const columns = body.data;
719748

drizzle-kit/src/cli/commands/up-sqlite.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ const updateToV7 = (snapshot: SQLiteSchemaV6): SqliteSnapshot => {
112112
name: view.name,
113113
definition: view.definition,
114114
isExisting: view.isExisting,
115+
error: null,
115116
});
116117
}
117118

0 commit comments

Comments
 (0)