diff --git a/.changeset/public-kings-like.md b/.changeset/public-kings-like.md new file mode 100644 index 00000000..b482d5ea --- /dev/null +++ b/.changeset/public-kings-like.md @@ -0,0 +1,6 @@ +--- +"@slonik/sql-tag": major +"slonik": major +--- + +Replaced `any` output types (e.g. for `sql.unknown`) with `unknown` diff --git a/README.md b/README.md index dfb99e57..fdf2a79c 100644 --- a/README.md +++ b/README.md @@ -2096,7 +2096,7 @@ Produces: (template: TemplateStringsArray, ...values: ValueExpression[]) => QuerySqlToken; ``` -Creates a query with Zod `any` type. The result of such a query has TypeScript type `any`. +Creates a query with Zod `unknown` type. The result of such a query has TypeScript type `unknown`. ```ts const result = await connection.one(sql.unsafe` @@ -2104,10 +2104,10 @@ const result = await connection.one(sql.unsafe` FROM bar `); -// `result` type is `any` +// `result` type is `unknown` ``` -`sql.unsafe` is effectively a shortcut to `sql.type(z.any())`. +`sql.unsafe` is effectively a shortcut to `sql.type(z.unknown())`. `sql.unsafe` is as a convenience method for development. Your production code must not use `sql.unsafe`. Instead, diff --git a/packages/benchmark/package.json b/packages/benchmark/package.json index 17df78f4..c9bd8832 100644 --- a/packages/benchmark/package.json +++ b/packages/benchmark/package.json @@ -10,6 +10,6 @@ "pg": "^8.18.0", "pg-promise": "^11.15.0", "postgres": "^3.4.7", - "slonik": "^48.14.0" + "slonik": "workspace:^" } } diff --git a/packages/driver/package.json b/packages/driver/package.json index 6341adf8..d5369c9f 100644 --- a/packages/driver/package.json +++ b/packages/driver/package.json @@ -32,8 +32,8 @@ "test": "ava --verbose --serial" }, "dependencies": { - "@slonik/types": "^48.14.0", - "@slonik/utilities": "^48.14.0", + "@slonik/types": "workspace:^", + "@slonik/utilities": "workspace:^", "roarr": "^7.21.4", "serialize-error": "^12.0.0", "strict-event-emitter-types": "^2.0.0" diff --git a/packages/errors/package.json b/packages/errors/package.json index cc418b27..45ec3214 100644 --- a/packages/errors/package.json +++ b/packages/errors/package.json @@ -32,7 +32,7 @@ "test": "ava --verbose --serial" }, "dependencies": { - "@slonik/types": "^48.14.0" + "@slonik/types": "workspace:^" }, "devDependencies": { "@standard-schema/spec": "^1.0.0", diff --git a/packages/pg-driver/package.json b/packages/pg-driver/package.json index 41893b88..4f5a8507 100644 --- a/packages/pg-driver/package.json +++ b/packages/pg-driver/package.json @@ -32,11 +32,11 @@ "test": "ava --verbose --serial" }, "dependencies": { - "@slonik/driver": "^48.14.0", - "@slonik/errors": "^48.14.0", - "@slonik/sql-tag": "^48.14.0", - "@slonik/types": "^48.14.0", - "@slonik/utilities": "^48.14.0", + "@slonik/driver": "workspace:^", + "@slonik/errors": "workspace:^", + "@slonik/sql-tag": "workspace:^", + "@slonik/types": "workspace:^", + "@slonik/utilities": "workspace:^", "pg": "^8.18.0", "pg-query-stream": "^4.12.0", "pg-types": "^4.1.0", diff --git a/packages/slonik-dataloaders/package.json b/packages/slonik-dataloaders/package.json index 97c6a344..7b1058c1 100644 --- a/packages/slonik-dataloaders/package.json +++ b/packages/slonik-dataloaders/package.json @@ -31,9 +31,9 @@ "zod": "^4.3.6" }, "devDependencies": { - "@slonik/types": "^48.14.0", + "@slonik/types": "workspace:^", "@standard-schema/spec": "^1.0.0", - "slonik": "^48.14.0", + "slonik": "workspace:^", "typescript": "^5.9.3", "vitest": "^4.0.18" }, diff --git a/packages/slonik-dataloaders/src/factories/createConnectionLoaderClass.test.ts b/packages/slonik-dataloaders/src/factories/createConnectionLoaderClass.test.ts index 0458d73e..b715ef68 100644 --- a/packages/slonik-dataloaders/src/factories/createConnectionLoaderClass.test.ts +++ b/packages/slonik-dataloaders/src/factories/createConnectionLoaderClass.test.ts @@ -1,3 +1,4 @@ +import type { ColumnIdentifiers } from "../types"; import { createConnectionLoaderClass } from "./createConnectionLoaderClass.js"; import type { Query, QueryResultRow } from "@slonik/types"; import { parse } from "graphql"; @@ -584,7 +585,9 @@ describe("createConnectionLoaderClass (with validation)", () => { const loader = new UnsafePersonConnectionLoader(pool); const result = await loader.load({ - orderBy: ({ uid }) => [[uid, "ASC"]], + orderBy: (identifiers) => [ + [(identifiers as ColumnIdentifiers<{ uid: string }>).uid, "ASC"], + ], }); expect(getNodeIds(result.edges)).toEqual([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); diff --git a/packages/slonik-interceptor-field-name-transformation/package.json b/packages/slonik-interceptor-field-name-transformation/package.json index 6eb195d1..4bfb1b8e 100644 --- a/packages/slonik-interceptor-field-name-transformation/package.json +++ b/packages/slonik-interceptor-field-name-transformation/package.json @@ -30,7 +30,7 @@ }, "devDependencies": { "ava": "^6.4.1", - "slonik": "^48.14.0", + "slonik": "workspace:^", "tsimp": "^2.0.12", "typescript": "^5.9.3" }, diff --git a/packages/slonik-interceptor-query-cache/package.json b/packages/slonik-interceptor-query-cache/package.json index ebf553d6..fa802c34 100644 --- a/packages/slonik-interceptor-query-cache/package.json +++ b/packages/slonik-interceptor-query-cache/package.json @@ -32,7 +32,7 @@ }, "devDependencies": { "ava": "^6.4.1", - "slonik": "^48.14.0", + "slonik": "workspace:^", "tsimp": "^2.0.12", "typescript": "^5.9.3" }, diff --git a/packages/slonik-interceptor-query-logging/package.json b/packages/slonik-interceptor-query-logging/package.json index 33a32dd6..d8b34c4d 100644 --- a/packages/slonik-interceptor-query-logging/package.json +++ b/packages/slonik-interceptor-query-logging/package.json @@ -32,7 +32,7 @@ }, "devDependencies": { "ava": "^6.4.1", - "slonik": "^48.14.0", + "slonik": "workspace:^", "tsimp": "^2.0.12", "typescript": "^5.9.3" }, diff --git a/packages/slonik-sql-tag-raw/package.json b/packages/slonik-sql-tag-raw/package.json index d08c36b5..10429b46 100644 --- a/packages/slonik-sql-tag-raw/package.json +++ b/packages/slonik-sql-tag-raw/package.json @@ -26,12 +26,12 @@ "test": "ava --verbose --serial" }, "dependencies": { - "@slonik/sql-tag": "^48.14.0", + "@slonik/sql-tag": "workspace:^", "roarr": "^7.21.4" }, "devDependencies": { "ava": "^6.4.1", - "slonik": "^48.14.0", + "slonik": "workspace:^", "tsimp": "^2.0.12", "typescript": "^5.9.3" }, diff --git a/packages/slonik/package.json b/packages/slonik/package.json index 51f02d47..9b80865b 100644 --- a/packages/slonik/package.json +++ b/packages/slonik/package.json @@ -33,11 +33,11 @@ }, "dependencies": { "@opentelemetry/api": "^1.9.0", - "@slonik/driver": "^48.14.0", - "@slonik/errors": "^48.14.0", - "@slonik/pg-driver": "^48.14.0", - "@slonik/sql-tag": "^48.14.0", - "@slonik/utilities": "^48.14.0", + "@slonik/driver": "workspace:^", + "@slonik/errors": "workspace:^", + "@slonik/pg-driver": "workspace:^", + "@slonik/sql-tag":"workspace:^", + "@slonik/utilities": "workspace:^", "@standard-schema/spec": "^1.0.0", "iso8601-duration": "^2.1.3", "p-limit": "^6.2.0", @@ -48,6 +48,7 @@ "zod": "^4.3.6" }, "devDependencies": { + "@slonik/test-ssls": "workspace:^", "@types/node": "^24.10.13", "@types/sinon": "^20.0.0", "ava": "^6.4.1", diff --git a/packages/slonik/src/helpers.test/createIntegrationTests.ts b/packages/slonik/src/helpers.test/createIntegrationTests.ts index 1dc78a23..8bb9b70e 100644 --- a/packages/slonik/src/helpers.test/createIntegrationTests.ts +++ b/packages/slonik/src/helpers.test/createIntegrationTests.ts @@ -578,9 +578,15 @@ export const createIntegrationTests = ( const error = await t.throwsAsync( pool.connect(async (connection) => { - const connectionPid = await connection.oneFirst(sql.unsafe` - SELECT pg_backend_pid() - `); + const connectionPid = await connection.oneFirst( + sql.type( + z.object({ + pg_backend_pid: z.int(), + }), + )` + SELECT pg_backend_pid() + `, + ); setTimeout(() => { void pool.query(sql.unsafe`SELECT pg_terminate_backend(${connectionPid})`); @@ -602,9 +608,15 @@ export const createIntegrationTests = ( const error = await t.throwsAsync( pool.connect(async (connection) => { - const connectionPid = await connection.oneFirst(sql.unsafe` + const connectionPid = await connection.oneFirst( + sql.type( + z.object({ + pg_backend_pid: z.int(), + }), + )` SELECT pg_backend_pid() - `); + `, + ); setTimeout(() => { void pool.query(sql.unsafe`SELECT pg_cancel_backend(${connectionPid})`); @@ -690,10 +702,16 @@ export const createIntegrationTests = ( ) `); - const result = await pool.oneFirst(sql.unsafe` + const result = await pool.oneFirst( + sql.type( + z.object({ + payload: z.instanceof(Buffer), + }), + )` SELECT payload FROM person - `); + `, + ); t.is(result.toString(), payload); @@ -766,17 +784,29 @@ export const createIntegrationTests = ( driverFactory, }); - const firstPersonId = await pool.oneFirst(sql.unsafe` + const firstPersonId = await pool.oneFirst( + sql.type( + z.object({ + id: z.string(), + }), + )` INSERT INTO person (name) VALUES ('foo') RETURNING id - `); + `, + ); - const secondPersonId = await pool.oneFirst(sql.unsafe` + const secondPersonId = await pool.oneFirst( + sql.type( + z.object({ + id: z.string(), + }), + )` INSERT INTO person (name) VALUES ('bar') RETURNING id - `); + `, + ); let transactionCount = 0; @@ -1269,9 +1299,15 @@ export const createIntegrationTests = ( const error = await t.throwsAsync( pool.connect(async (connection) => { // connection pid - const connectionPid = await connection.oneFirst(sql.unsafe` - SELECT pg_backend_pid(); - `); + const connectionPid = await connection.oneFirst( + sql.type( + z.object({ + pg_backend_pid: z.int(), + }), + )` + SELECT pg_backend_pid() + `, + ); setTimeout(() => { void pool.query(sql.unsafe`SELECT pg_cancel_backend(${connectionPid})`); @@ -1294,9 +1330,15 @@ export const createIntegrationTests = ( const error = await t.throwsAsync( pool.connect(async (connection) => { // connection pid - const connectionPid = await connection.oneFirst(sql.unsafe` - SELECT pg_backend_pid(); - `); + const connectionPid = await connection.oneFirst( + sql.type( + z.object({ + pg_backend_pid: z.int(), + }), + )` + SELECT pg_backend_pid() + `, + ); setTimeout(() => { void pool.query(sql.unsafe`SELECT pg_terminate_backend(${connectionPid})`); diff --git a/packages/slonik/src/helpers.test/createPoolTests.ts b/packages/slonik/src/helpers.test/createPoolTests.ts index 2a685d76..77edd7da 100644 --- a/packages/slonik/src/helpers.test/createPoolTests.ts +++ b/packages/slonik/src/helpers.test/createPoolTests.ts @@ -9,6 +9,7 @@ import type { TestFn } from "ava"; import { randomUUID } from "node:crypto"; import { setTimeout as delay } from "node:timers/promises"; import * as sinon from "sinon"; +import { z } from "zod"; export const createPoolTests = (test: TestFn, driverFactory: DriverFactory) => { test("uses resetConnection after implicit connection release", async (t) => { @@ -386,7 +387,11 @@ export const createPoolTests = (test: TestFn, driverFactory: Dr let firstConnectionPid: number | undefined; await pool.connect(async (connection) => { - firstConnectionPid = await connection.oneFirst(sql.unsafe` + firstConnectionPid = await connection.oneFirst(sql.type( + z.object({ + pg_backend_pid: z.int(), + }), + )` SELECT pg_backend_pid(); `); }); @@ -394,7 +399,11 @@ export const createPoolTests = (test: TestFn, driverFactory: Dr let secondConnectionPid: number | undefined; await pool.connect(async (connection) => { - secondConnectionPid = await connection.oneFirst(sql.unsafe` + secondConnectionPid = await connection.oneFirst(sql.type( + z.object({ + pg_backend_pid: z.int(), + }), + )` SELECT pg_backend_pid(); `); }); @@ -411,7 +420,11 @@ export const createPoolTests = (test: TestFn, driverFactory: Dr let firstConnectionPid: number | undefined; await pool.transaction(async (transaction) => { - firstConnectionPid = await transaction.oneFirst(sql.unsafe` + firstConnectionPid = await transaction.oneFirst(sql.type( + z.object({ + pg_backend_pid: z.int(), + }), + )` SELECT pg_backend_pid(); `); }); @@ -419,7 +432,11 @@ export const createPoolTests = (test: TestFn, driverFactory: Dr let secondConnectionPid: number | undefined; await pool.transaction(async (transaction) => { - secondConnectionPid = await transaction.oneFirst(sql.unsafe` + secondConnectionPid = await transaction.oneFirst(sql.type( + z.object({ + pg_backend_pid: z.int(), + }), + )` SELECT pg_backend_pid(); `); }); @@ -720,14 +737,22 @@ export const createPoolTests = (test: TestFn, driverFactory: Dr maximumPoolSize: 1, }); - const firstConnectionPid = await pool.oneFirst(sql.unsafe` + const firstConnectionPid = await pool.oneFirst(sql.type( + z.object({ + pg_backend_pid: z.int(), + }), + )` SELECT pg_backend_pid(); `); // Confirm that the same connection is re-used. - await t.is( + t.is( firstConnectionPid, - await pool.oneFirst(sql.unsafe` + await pool.oneFirst(sql.type( + z.object({ + pg_backend_pid: z.int(), + }), + )` SELECT pg_backend_pid(); `), ); @@ -770,14 +795,22 @@ export const createPoolTests = (test: TestFn, driverFactory: Dr maximumPoolSize: 1, }); - const firstConnectionPid = await pool.oneFirst(sql.unsafe` + const firstConnectionPid = await pool.oneFirst(sql.type( + z.object({ + pg_backend_pid: z.int(), + }), + )` SELECT pg_backend_pid(); `); // Confirm that the same connection is re-used. - await t.is( + t.is( firstConnectionPid, - await pool.oneFirst(sql.unsafe` + await pool.oneFirst(sql.type( + z.object({ + pg_backend_pid: z.int(), + }), + )` SELECT pg_backend_pid(); `), ); diff --git a/packages/slonik/src/types.test.ts b/packages/slonik/src/types.test.ts index 1d8ff022..bd4e9dd9 100644 --- a/packages/slonik/src/types.test.ts +++ b/packages/slonik/src/types.test.ts @@ -38,7 +38,7 @@ export const queryMethods = async (): Promise => { // any const any = await client.any(sql.unsafe``); - expectTypeOf(any).toEqualTypeOf(); + expectTypeOf(any).toEqualTypeOf(); const anyZodTypedQuery = await client.any(sql.type(ZodRow)``); expectTypeOf(anyZodTypedQuery).toEqualTypeOf(); @@ -48,49 +48,49 @@ export const queryMethods = async (): Promise => { // anyFirst const anyFirst = await client.anyFirst(sql.unsafe``); - expectTypeOf(anyFirst).toEqualTypeOf(); + expectTypeOf(anyFirst).toEqualTypeOf(); const anyFirstZodTypedQuery = await client.anyFirst(sql.type(ZodRow)``); expectTypeOf(anyFirstZodTypedQuery).toEqualTypeOf>(); // many const many = await client.many(sql.unsafe``); - expectTypeOf(many).toEqualTypeOf(); + expectTypeOf(many).toEqualTypeOf(); const manyZodTypedQuery = await client.many(sql.type(ZodRow)``); expectTypeOf(manyZodTypedQuery).toEqualTypeOf(); // manyFirst const manyFirst = await client.manyFirst(sql.unsafe``); - expectTypeOf(manyFirst).toEqualTypeOf(); + expectTypeOf(manyFirst).toEqualTypeOf(); const manyFirstZodTypedQuery = await client.manyFirst(sql.type(ZodRow)``); expectTypeOf(manyFirstZodTypedQuery).toEqualTypeOf>(); // maybeOne const maybeOne = await client.maybeOne(sql.unsafe``); - expectTypeOf(maybeOne).toEqualTypeOf(); + expectTypeOf(maybeOne).toEqualTypeOf(); const maybeOneZodTypedQuery = await client.maybeOne(sql.type(ZodRow)``); expectTypeOf(maybeOneZodTypedQuery).toEqualTypeOf(); // maybeOneFirst const maybeOneFirst = await client.maybeOneFirst(sql.unsafe``); - expectTypeOf(maybeOneFirst).toEqualTypeOf(); + expectTypeOf(maybeOneFirst).toEqualTypeOf(); const maybeOneFirstZodTypedQuery = await client.maybeOneFirst(sql.type(ZodRow)``); expectTypeOf(maybeOneFirstZodTypedQuery).toEqualTypeOf(); // one const one = await client.one(sql.unsafe``); - expectTypeOf(one).toEqualTypeOf(); + expectTypeOf(one).toEqualTypeOf(); const oneZodTypedQuery = await client.one(sql.type(ZodRow)``); expectTypeOf(oneZodTypedQuery).toEqualTypeOf(); // oneFirst const oneFirst = await client.oneFirst(sql.unsafe``); - expectTypeOf(oneFirst).toEqualTypeOf(); + expectTypeOf(oneFirst).toEqualTypeOf(); const oneFirstZodTypedQuery = await client.oneFirst(sql.type(ZodRow)``); expectTypeOf(oneFirstZodTypedQuery).toEqualTypeOf(); diff --git a/packages/slonik/src/types.ts b/packages/slonik/src/types.ts index 6cf43c81..5fc22082 100644 --- a/packages/slonik/src/types.ts +++ b/packages/slonik/src/types.ts @@ -398,10 +398,16 @@ type PoolState = { }; type PoolStateName = "ACTIVE" | "ENDED" | "ENDING"; + +// This helper is used in Query*FirstFunction types to extract the first column's type from the schema +type InferFirstSchemaOutput = + keyof StandardSchemaV1.InferOutput extends never + ? unknown + : StandardSchemaV1.InferOutput[keyof StandardSchemaV1.InferOutput]; type QueryAnyFirstFunction = ( sql: QuerySqlToken, values?: PrimitiveValueExpression[], -) => Promise[keyof StandardSchemaV1.InferOutput]>>; +) => Promise>>; type QueryAnyFunction = ( sql: QuerySqlToken, values?: PrimitiveValueExpression[], @@ -413,7 +419,7 @@ type QueryExistsFunction = ( type QueryManyFirstFunction = ( sql: QuerySqlToken, values?: PrimitiveValueExpression[], -) => Promise[keyof StandardSchemaV1.InferOutput]>>; +) => Promise>>; type QueryManyFunction = ( sql: QuerySqlToken, values?: PrimitiveValueExpression[], @@ -421,7 +427,7 @@ type QueryManyFunction = ( type QueryMaybeOneFirstFunction = ( sql: QuerySqlToken, values?: PrimitiveValueExpression[], -) => Promise[keyof StandardSchemaV1.InferOutput]>; +) => Promise | null>; type QueryMaybeOneFunction = ( sql: QuerySqlToken, values?: PrimitiveValueExpression[], @@ -429,7 +435,7 @@ type QueryMaybeOneFunction = ( type QueryOneFirstFunction = ( sql: QuerySqlToken, values?: PrimitiveValueExpression[], -) => Promise[keyof StandardSchemaV1.InferOutput]>; +) => Promise>; type QueryOneFunction = ( sql: QuerySqlToken, values?: PrimitiveValueExpression[], diff --git a/packages/sql-tag/package.json b/packages/sql-tag/package.json index 4f79144e..2fc59930 100644 --- a/packages/sql-tag/package.json +++ b/packages/sql-tag/package.json @@ -32,8 +32,8 @@ "test": "ava --verbose --serial" }, "dependencies": { - "@slonik/errors": "^48.14.0", - "@slonik/types": "^48.14.0", + "@slonik/errors": "workspace:^", + "@slonik/types": "workspace:^", "roarr": "^7.21.4", "safe-stable-stringify": "^2.5.0", "serialize-error": "^12.0.0", diff --git a/packages/sql-tag/src/factories/createSqlTag.ts b/packages/sql-tag/src/factories/createSqlTag.ts index 865f059c..2cfd66f1 100644 --- a/packages/sql-tag/src/factories/createSqlTag.ts +++ b/packages/sql-tag/src/factories/createSqlTag.ts @@ -226,7 +226,7 @@ export const createSqlTag = < unsafe: (parts, ...args) => { return Object.freeze({ ...createFragment(parts, args), - parser: z.any(), + parser: z.unknown(), type: QueryToken, }); }, diff --git a/packages/sql-tag/src/types.ts b/packages/sql-tag/src/types.ts index 37c60645..7ac7228e 100644 --- a/packages/sql-tag/src/types.ts +++ b/packages/sql-tag/src/types.ts @@ -63,8 +63,7 @@ export type ListSqlToken = { }; export type QuerySqlToken< - // eslint-disable-next-line @typescript-eslint/no-explicit-any - T extends StandardSchemaV1 = StandardSchemaV1, + T extends StandardSchemaV1 = StandardSchemaV1, > = { /** * Optional name for the prepared statement. When provided, PostgreSQL will diff --git a/packages/utilities/package.json b/packages/utilities/package.json index 542916f7..2e20fe74 100644 --- a/packages/utilities/package.json +++ b/packages/utilities/package.json @@ -32,8 +32,8 @@ "test": "ava --verbose --serial" }, "dependencies": { - "@slonik/errors": "workspace:^48.14.0", - "@slonik/types": "^48.14.0" + "@slonik/errors": "workspace:^", + "@slonik/types": "workspace:^" }, "devDependencies": { "@slonik/test-ssls": "workspace:^", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e74a5505..260d3246 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -46,16 +46,16 @@ importers: specifier: ^3.4.7 version: 3.4.8 slonik: - specifier: ^48.13.2 + specifier: workspace:^ version: link:../slonik packages/driver: dependencies: '@slonik/types': - specifier: ^48.13.2 + specifier: workspace:^ version: link:../types '@slonik/utilities': - specifier: ^48.13.2 + specifier: workspace:^ version: link:../utilities roarr: specifier: ^7.21.4 @@ -89,7 +89,7 @@ importers: packages/errors: dependencies: '@slonik/types': - specifier: ^48.13.2 + specifier: workspace:^ version: link:../types devDependencies: '@standard-schema/spec': @@ -114,19 +114,19 @@ importers: packages/pg-driver: dependencies: '@slonik/driver': - specifier: ^48.13.2 + specifier: workspace:^ version: link:../driver '@slonik/errors': - specifier: ^48.13.2 + specifier: workspace:^ version: link:../errors '@slonik/sql-tag': - specifier: ^48.13.2 + specifier: workspace:^ version: link:../sql-tag '@slonik/types': - specifier: ^48.13.2 + specifier: workspace:^ version: link:../types '@slonik/utilities': - specifier: ^48.13.2 + specifier: workspace:^ version: link:../utilities pg: specifier: ^8.18.0 @@ -169,19 +169,19 @@ importers: specifier: ^1.9.0 version: 1.9.0 '@slonik/driver': - specifier: ^48.13.2 + specifier: workspace:^ version: link:../driver '@slonik/errors': - specifier: ^48.13.2 + specifier: workspace:^ version: link:../errors '@slonik/pg-driver': - specifier: ^48.13.2 + specifier: workspace:^ version: link:../pg-driver '@slonik/sql-tag': - specifier: ^48.13.2 + specifier: workspace:^ version: link:../sql-tag '@slonik/utilities': - specifier: ^48.13.2 + specifier: workspace:^ version: link:../utilities '@standard-schema/spec': specifier: ^1.0.0 @@ -208,6 +208,9 @@ importers: specifier: ^4.3.6 version: 4.3.6 devDependencies: + '@slonik/test-ssls': + specifier: workspace:^ + version: link:../test-ssls '@types/node': specifier: ^24.10.13 version: 24.10.13 @@ -249,13 +252,13 @@ importers: version: 4.3.6 devDependencies: '@slonik/types': - specifier: ^48.13.2 + specifier: workspace:^ version: link:../types '@standard-schema/spec': specifier: ^1.0.0 version: 1.1.0 slonik: - specifier: ^48.13.2 + specifier: workspace:^ version: link:../slonik typescript: specifier: ^5.9.3 @@ -274,7 +277,7 @@ importers: specifier: ^6.4.1 version: 6.4.1(rollup@4.55.1) slonik: - specifier: ^48.13.2 + specifier: workspace:^ version: link:../slonik tsimp: specifier: ^2.0.12 @@ -299,7 +302,7 @@ importers: specifier: ^6.4.1 version: 6.4.1(rollup@4.55.1) slonik: - specifier: ^48.13.2 + specifier: workspace:^ version: link:../slonik tsimp: specifier: ^2.0.12 @@ -324,7 +327,7 @@ importers: specifier: ^6.4.1 version: 6.4.1(rollup@4.55.1) slonik: - specifier: ^48.13.2 + specifier: workspace:^ version: link:../slonik tsimp: specifier: ^2.0.12 @@ -336,7 +339,7 @@ importers: packages/slonik-sql-tag-raw: dependencies: '@slonik/sql-tag': - specifier: ^48.13.2 + specifier: workspace:^ version: link:../sql-tag roarr: specifier: ^7.21.4 @@ -346,7 +349,7 @@ importers: specifier: ^6.4.1 version: 6.4.1(rollup@4.55.1) slonik: - specifier: ^48.13.2 + specifier: workspace:^ version: link:../slonik tsimp: specifier: ^2.0.12 @@ -358,10 +361,10 @@ importers: packages/sql-tag: dependencies: '@slonik/errors': - specifier: ^48.13.2 + specifier: workspace:^ version: link:../errors '@slonik/types': - specifier: ^48.13.2 + specifier: workspace:^ version: link:../types roarr: specifier: ^7.21.4 @@ -426,10 +429,10 @@ importers: packages/utilities: dependencies: '@slonik/errors': - specifier: workspace:^48.13.2 + specifier: workspace:^ version: link:../errors '@slonik/types': - specifier: ^48.13.2 + specifier: workspace:^ version: link:../types devDependencies: '@slonik/test-ssls': @@ -1081,24 +1084,28 @@ packages: engines: {node: '>= 12'} cpu: [arm64] os: [linux] + libc: [glibc] '@node-rs/xxhash-linux-arm64-musl@1.7.6': resolution: {integrity: sha512-AB5m6crGYSllM9F/xZNOQSPImotR5lOa9e4arW99Bv82S+gcpphI8fGMDOVTTCXY/RLRhvvhwzLDxmLB2O8VDg==} engines: {node: '>= 12'} cpu: [arm64] os: [linux] + libc: [musl] '@node-rs/xxhash-linux-x64-gnu@1.7.6': resolution: {integrity: sha512-a2A6M+5tc0PVlJlE/nl0XsLEzMpKkwg7Y1lR5urFUbW9uVQnKjJYQDrUojhlXk0Uv3VnYQPa6ThmwlacZA5mvQ==} engines: {node: '>= 12'} cpu: [x64] os: [linux] + libc: [glibc] '@node-rs/xxhash-linux-x64-musl@1.7.6': resolution: {integrity: sha512-WioGJSC1GoxQpmdQrG5l/uddSBAS4XCWczHNwXe895J5xadGQzyvmr0r17BNfihvbBUDH1H9jwouNYzDDeA6+A==} engines: {node: '>= 12'} cpu: [x64] os: [linux] + libc: [musl] '@node-rs/xxhash-wasm32-wasi@1.7.6': resolution: {integrity: sha512-WDXXKMMFMrez+esm2DzMPHFNPFYf+wQUtaXrXwtxXeQMFEzleOLwEaqV0+bbXGJTwhPouL3zY1Qo2xmIH4kkTg==} @@ -1182,41 +1189,49 @@ packages: resolution: {integrity: sha512-0eVYZxSceNqGADzhlV4ZRqkHF0fjWxRXQOB7Qwl5y1gN/XYUDvMfip+ngtzj4dM7zQT4U97hUhJ7PUKSy/JIGQ==} cpu: [arm64] os: [linux] + libc: [glibc] '@oxc-resolver/binding-linux-arm64-musl@11.16.3': resolution: {integrity: sha512-B1BvLeZbgDdVN0FvU40l5Q7lej8310WlabCBaouk8jY7H7xbI8phtomTtk3Efmevgfy5hImaQJu6++OmcFb2NQ==} cpu: [arm64] os: [linux] + libc: [musl] '@oxc-resolver/binding-linux-ppc64-gnu@11.16.3': resolution: {integrity: sha512-q7khglic3Jqak7uDgA3MFnjDeI7krQT595GDZpvFq785fmFYSx8rlTkoHzmhQtUisYtl4XG7WUscwsoidFUI4w==} cpu: [ppc64] os: [linux] + libc: [glibc] '@oxc-resolver/binding-linux-riscv64-gnu@11.16.3': resolution: {integrity: sha512-aFRNmQNPzDgQEbw2s3c8yJYRimacSDI+u9df8rn5nSKzTVitHmbEpZqfxpwNLCKIuLSNmozHR1z1OT+oZVeYqg==} cpu: [riscv64] os: [linux] + libc: [glibc] '@oxc-resolver/binding-linux-riscv64-musl@11.16.3': resolution: {integrity: sha512-vZI85SvSMADcEL9G1TIrV0Rlkc1fY5Mup0DdlVC5EHPysZB4hXXHpr+h09pjlK5y+5om5foIzDRxE1baUCaWOA==} cpu: [riscv64] os: [linux] + libc: [musl] '@oxc-resolver/binding-linux-s390x-gnu@11.16.3': resolution: {integrity: sha512-xiLBnaUlddFEzRHiHiSGEMbkg8EwZY6VD8F+3GfnFsiK3xg/4boaUV2bwXd+nUzl3UDQOMW1QcZJ4jJSb0qiJA==} cpu: [s390x] os: [linux] + libc: [glibc] '@oxc-resolver/binding-linux-x64-gnu@11.16.3': resolution: {integrity: sha512-6y0b05wIazJJgwu7yU/AYGFswzQQudYJBOb/otDhiDacp1+6ye8egoxx63iVo9lSpDbipL++54AJQFlcOHCB+g==} cpu: [x64] os: [linux] + libc: [glibc] '@oxc-resolver/binding-linux-x64-musl@11.16.3': resolution: {integrity: sha512-RmMgwuMa42c9logS7Pjprf5KCp8J1a1bFiuBFtG9/+yMu0BhY2t+0VR/um7pwtkNFvIQqAVh6gDOg/PnoKRcdQ==} cpu: [x64] os: [linux] + libc: [musl] '@oxc-resolver/binding-openharmony-arm64@11.16.3': resolution: {integrity: sha512-/7AYRkjjW7xu1nrHgWUFy99Duj4/ydOBVaHtODie9/M6fFngo+8uQDFFnzmr4q//sd/cchIerISp/8CQ5TsqIA==} @@ -1290,48 +1305,56 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] + libc: [glibc] '@oxfmt/binding-linux-arm64-musl@0.43.0': resolution: {integrity: sha512-ROaWfYh+6BSJ1Arwy5ujijTlwnZetxDxzBpDc1oBR4d7rfrPBqzeyjd5WOudowzQUgyavl2wEpzn1hw3jWcqLA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] + libc: [musl] '@oxfmt/binding-linux-ppc64-gnu@0.43.0': resolution: {integrity: sha512-PJRs/uNxmFipJJ8+SyKHh7Y7VZIKQicqrrBzvfyM5CtKi8D7yZKTwUOZV3ffxmiC2e7l1SDJpkBEOyue5NAFsg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] + libc: [glibc] '@oxfmt/binding-linux-riscv64-gnu@0.43.0': resolution: {integrity: sha512-j6biGAgzIhj+EtHXlbNumvwG7XqOIdiU4KgIWRXAEj/iUbHKukKW8eXa4MIwpQwW1YkxovduKtzEAPnjlnAhVQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] + libc: [glibc] '@oxfmt/binding-linux-riscv64-musl@0.43.0': resolution: {integrity: sha512-RYWxAcslKxvy7yri24Xm9cmD0RiANaiEPs007EFG6l9h1ChM69Q5SOzACaCoz4Z9dEplnhhneeBaTWMEdpgIbA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] + libc: [musl] '@oxfmt/binding-linux-s390x-gnu@0.43.0': resolution: {integrity: sha512-DT6Q8zfQQy3jxpezAsBACEHNUUixKSYTwdXeXojNHe4DQOoxjPdjr3Szu6BRNjxLykZM/xMNmp9ElOIyDppwtw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] + libc: [glibc] '@oxfmt/binding-linux-x64-gnu@0.43.0': resolution: {integrity: sha512-R8Yk7iYcuZORXmCfFZClqbDxRZgZ9/HEidUuBNdoX8Ptx07cMePnMVJ/woB84lFIDjh2ROHVaOP40Ds3rBXFqg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] + libc: [glibc] '@oxfmt/binding-linux-x64-musl@0.43.0': resolution: {integrity: sha512-F2YYqyvnQNvi320RWZNAvsaWEHwmW3k4OwNJ1hZxRKXupY63expbBaNp6jAgvYs7y/g546vuQnGHQuCBhslhLQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] + libc: [musl] '@oxfmt/binding-openharmony-arm64@0.43.0': resolution: {integrity: sha512-OE6TdietLXV3F6c7pNIhx/9YC1/2YFwjU9DPc/fbjxIX19hNIaP1rS0cFjCGJlGX+cVJwIKWe8Mos+LdQ1yAJw==} @@ -1404,48 +1427,56 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] + libc: [glibc] '@oxlint/binding-linux-arm64-musl@1.58.0': resolution: {integrity: sha512-zSoYRo5dxHLcUx93Stl2hW3hSNjPt99O70eRVWt5A1zwJ+FPjeCCANCD2a9R4JbHsdcl11TIQOjyigcRVOH2mw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] + libc: [musl] '@oxlint/binding-linux-ppc64-gnu@1.58.0': resolution: {integrity: sha512-NQ0U/lqxH2/VxBYeAIvMNUK1y0a1bJ3ZicqkF2c6wfakbEciP9jvIE4yNzCFpZaqeIeRYaV7AVGqEO1yrfVPjA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] + libc: [glibc] '@oxlint/binding-linux-riscv64-gnu@1.58.0': resolution: {integrity: sha512-X9J+kr3gIC9FT8GuZt0ekzpNUtkBVzMVU4KiKDSlocyQuEgi3gBbXYN8UkQiV77FTusLDPsovjo95YedHr+3yg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] + libc: [glibc] '@oxlint/binding-linux-riscv64-musl@1.58.0': resolution: {integrity: sha512-CDze3pi1OO3Wvb/QsXjmLEY4XPKGM6kIo82ssNOgmcl1IdndF9VSGAE38YLhADWmOac7fjqhBw82LozuUVxD0Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] + libc: [musl] '@oxlint/binding-linux-s390x-gnu@1.58.0': resolution: {integrity: sha512-b/89glbxFaEAcA6Uf1FvCNecBJEgcUTsV1quzrqXM/o4R1M4u+2KCVuyGCayN2UpsRWtGGLb+Ver0tBBpxaPog==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] + libc: [glibc] '@oxlint/binding-linux-x64-gnu@1.58.0': resolution: {integrity: sha512-0/yYpkq9VJFCEcuRlrViGj8pJUFFvNS4EkEREaN7CB1EcLXJIaVSSa5eCihwBGXtOZxhnblWgxks9juRdNQI7w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] + libc: [glibc] '@oxlint/binding-linux-x64-musl@1.58.0': resolution: {integrity: sha512-hr6FNvmcAXiH+JxSvaJ4SJ1HofkdqEElXICW9sm3/Rd5eC3t7kzvmLyRAB3NngKO2wzXRCAm4Z/mGWfrsS4X8w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] + libc: [musl] '@oxlint/binding-openharmony-arm64@1.58.0': resolution: {integrity: sha512-R+O368VXgRql1K6Xar+FEo7NEwfo13EibPMoTv3sesYQedRXd6m30Dh/7lZMxnrQVFfeo4EOfYIP4FpcgWQNHg==} @@ -1518,66 +1549,79 @@ packages: resolution: {integrity: sha512-Rn3n+FUk2J5VWx+ywrG/HGPTD9jXNbicRtTM11e/uorplArnXZYsVifnPPqNNP5BsO3roI4n8332ukpY/zN7rQ==} cpu: [arm] os: [linux] + libc: [glibc] '@rollup/rollup-linux-arm-musleabihf@4.55.1': resolution: {integrity: sha512-grPNWydeKtc1aEdrJDWk4opD7nFtQbMmV7769hiAaYyUKCT1faPRm2av8CX1YJsZ4TLAZcg9gTR1KvEzoLjXkg==} cpu: [arm] os: [linux] + libc: [musl] '@rollup/rollup-linux-arm64-gnu@4.55.1': resolution: {integrity: sha512-a59mwd1k6x8tXKcUxSyISiquLwB5pX+fJW9TkWU46lCqD/GRDe9uDN31jrMmVP3feI3mhAdvcCClhV8V5MhJFQ==} cpu: [arm64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-arm64-musl@4.55.1': resolution: {integrity: sha512-puS1MEgWX5GsHSoiAsF0TYrpomdvkaXm0CofIMG5uVkP6IBV+ZO9xhC5YEN49nsgYo1DuuMquF9+7EDBVYu4uA==} cpu: [arm64] os: [linux] + libc: [musl] '@rollup/rollup-linux-loong64-gnu@4.55.1': resolution: {integrity: sha512-r3Wv40in+lTsULSb6nnoudVbARdOwb2u5fpeoOAZjFLznp6tDU8kd+GTHmJoqZ9lt6/Sys33KdIHUaQihFcu7g==} cpu: [loong64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-loong64-musl@4.55.1': resolution: {integrity: sha512-MR8c0+UxAlB22Fq4R+aQSPBayvYa3+9DrwG/i1TKQXFYEaoW3B5b/rkSRIypcZDdWjWnpcvxbNaAJDcSbJU3Lw==} cpu: [loong64] os: [linux] + libc: [musl] '@rollup/rollup-linux-ppc64-gnu@4.55.1': resolution: {integrity: sha512-3KhoECe1BRlSYpMTeVrD4sh2Pw2xgt4jzNSZIIPLFEsnQn9gAnZagW9+VqDqAHgm1Xc77LzJOo2LdigS5qZ+gw==} cpu: [ppc64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-ppc64-musl@4.55.1': resolution: {integrity: sha512-ziR1OuZx0vdYZZ30vueNZTg73alF59DicYrPViG0NEgDVN8/Jl87zkAPu4u6VjZST2llgEUjaiNl9JM6HH1Vdw==} cpu: [ppc64] os: [linux] + libc: [musl] '@rollup/rollup-linux-riscv64-gnu@4.55.1': resolution: {integrity: sha512-uW0Y12ih2XJRERZ4jAfKamTyIHVMPQnTZcQjme2HMVDAHY4amf5u414OqNYC+x+LzRdRcnIG1YodLrrtA8xsxw==} cpu: [riscv64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-riscv64-musl@4.55.1': resolution: {integrity: sha512-u9yZ0jUkOED1BFrqu3BwMQoixvGHGZ+JhJNkNKY/hyoEgOwlqKb62qu+7UjbPSHYjiVy8kKJHvXKv5coH4wDeg==} cpu: [riscv64] os: [linux] + libc: [musl] '@rollup/rollup-linux-s390x-gnu@4.55.1': resolution: {integrity: sha512-/0PenBCmqM4ZUd0190j7J0UsQ/1nsi735iPRakO8iPciE7BQ495Y6msPzaOmvx0/pn+eJVVlZrNrSh4WSYLxNg==} cpu: [s390x] os: [linux] + libc: [glibc] '@rollup/rollup-linux-x64-gnu@4.55.1': resolution: {integrity: sha512-a8G4wiQxQG2BAvo+gU6XrReRRqj+pLS2NGXKm8io19goR+K8lw269eTrPkSdDTALwMmJp4th2Uh0D8J9bEV1vg==} cpu: [x64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-x64-musl@4.55.1': resolution: {integrity: sha512-bD+zjpFrMpP/hqkfEcnjXWHMw5BIghGisOKPj+2NaNDuVT+8Ds4mPf3XcPHuat1tz89WRL+1wbcxKY3WSbiT7w==} cpu: [x64] os: [linux] + libc: [musl] '@rollup/rollup-openbsd-x64@4.55.1': resolution: {integrity: sha512-eLXw0dOiqE4QmvikfQ6yjgkg/xDM+MdU9YJuP4ySTibXU0oAvnEWXt7UDJmD4UkYialMfOGFPJnIHSe/kdzPxg==}