@remix-run/data-table-postgres 0.2.0 → 0.3.1

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/README.md CHANGED
@@ -62,20 +62,6 @@ await db.transaction(async (txDb) => txDb.exec('select 1'), {
62
62
  })
63
63
  ```
64
64
 
65
- ### Capability Overrides For Testing
66
-
67
- You can override capabilities to verify fallback paths in tests.
68
-
69
- ```ts
70
- import { createPostgresDatabaseAdapter } from 'remix/data-table-postgres'
71
-
72
- let adapter = createPostgresDatabaseAdapter(pool, {
73
- capabilities: {
74
- returning: false,
75
- },
76
- })
77
- ```
78
-
79
65
  ## Related Packages
80
66
 
81
67
  - [`data-table`](https://github.com/remix-run/remix/tree/main/packages/data-table) - Core query/relations API
package/dist/index.d.ts CHANGED
@@ -1,3 +1,2 @@
1
- export type { PostgresDatabaseAdapterOptions } from './lib/adapter.ts';
2
1
  export { createPostgresDatabaseAdapter, PostgresDatabaseAdapter } from './lib/adapter.ts';
3
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,8BAA8B,EAAE,MAAM,kBAAkB,CAAA;AACtE,OAAO,EAAE,6BAA6B,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAA"}
@@ -1,12 +1,6 @@
1
- import type { AdapterCapabilityOverrides, DataMigrationRequest, DataManipulationRequest, DataMigrationResult, DataMigrationOperation, DataManipulationResult, DataManipulationOperation, DatabaseAdapter, SqlStatement, TableRef, TransactionOptions, TransactionToken } from '@remix-run/data-table';
2
- import type { Pool as PostgresPool, PoolClient as PostgresPoolClient } from 'pg';
3
- /**
4
- * Postgres adapter configuration.
5
- */
6
- export type PostgresDatabaseAdapterOptions = {
7
- capabilities?: AdapterCapabilityOverrides;
8
- };
9
- type PostgresQueryable = PostgresPool | PostgresPoolClient;
1
+ import type { DataMigrationRequest, DataManipulationRequest, DataMigrationResult, DataMigrationOperation, DataManipulationResult, DataManipulationOperation, DatabaseAdapter, SqlStatement, TableRef, TransactionOptions, TransactionToken } from '@remix-run/data-table';
2
+ import type { Client as PostgresClient, Pool as PostgresPool, PoolClient as PostgresPoolClient } from 'pg';
3
+ type PostgresQueryable = PostgresClient | PostgresPool | PostgresPoolClient;
10
4
  /**
11
5
  * `DatabaseAdapter` implementation for postgres-compatible clients.
12
6
  */
@@ -26,7 +20,7 @@ export declare class PostgresDatabaseAdapter implements DatabaseAdapter {
26
20
  transactionalDdl: boolean;
27
21
  migrationLock: boolean;
28
22
  };
29
- constructor(client: PostgresQueryable, options?: PostgresDatabaseAdapterOptions);
23
+ constructor(client: PostgresQueryable);
30
24
  /**
31
25
  * Compiles a data or migration operation to postgres SQL statements.
32
26
  * @param operation Operation to compile.
@@ -126,6 +120,6 @@ export declare class PostgresDatabaseAdapter implements DatabaseAdapter {
126
120
  * let db = createDatabase(adapter)
127
121
  * ```
128
122
  */
129
- export declare function createPostgresDatabaseAdapter(client: PostgresQueryable, options?: PostgresDatabaseAdapterOptions): PostgresDatabaseAdapter;
123
+ export declare function createPostgresDatabaseAdapter(client: PostgresQueryable): PostgresDatabaseAdapter;
130
124
  export {};
131
125
  //# sourceMappingURL=adapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/lib/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,0BAA0B,EAC1B,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,sBAAsB,EACtB,sBAAsB,EACtB,yBAAyB,EACzB,eAAe,EAEf,YAAY,EACZ,QAAQ,EACR,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,uBAAuB,CAAA;AAO9B,OAAO,KAAK,EAAE,IAAI,IAAI,YAAY,EAAE,UAAU,IAAI,kBAAkB,EAAE,MAAM,IAAI,CAAA;AAIhF;;GAEG;AACH,MAAM,MAAM,8BAA8B,GAAG;IAC3C,YAAY,CAAC,EAAE,0BAA0B,CAAA;CAC1C,CAAA;AAOD,KAAK,iBAAiB,GAAG,YAAY,GAAG,kBAAkB,CAAA;AAE1D;;GAEG;AACH,qBAAa,uBAAwB,YAAW,eAAe;;IAC7D;;OAEG;IACH,OAAO,SAAa;IAEpB;;OAEG;IACH,YAAY;;;;;;MAAA;IAMZ,YAAY,MAAM,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,8BAA8B,EAS9E;IAED;;;;OAIG;IACH,UAAU,CAAC,SAAS,EAAE,yBAAyB,GAAG,sBAAsB,GAAG,YAAY,EAAE,CAOxF;IAED;;;;OAIG;IACG,OAAO,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAuB/E;IAED;;;;OAIG;IACG,OAAO,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAWzE;IAED;;;;;OAKG;IACG,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAMhF;IAED;;;;;;OAMG;IACG,SAAS,CACb,KAAK,EAAE,QAAQ,EACf,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,gBAAgB,GAC7B,OAAO,CAAC,OAAO,CAAC,CASlB;IAED;;;;OAIG;IACG,gBAAgB,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA0B9E;IAED;;;;OAIG;IACG,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgB9D;IAED;;;;OAIG;IACG,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBhE;IAED;;;;;OAKG;IACG,eAAe,CAAC,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG1E;IAED;;;;;OAKG;IACG,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG9E;IAED;;;;;OAKG;IACG,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG3E;IAED;;;OAGG;IACG,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAE1C;IAED;;;OAGG;IACG,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAE1C;CAmBF;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,iBAAiB,EACzB,OAAO,CAAC,EAAE,8BAA8B,GACvC,uBAAuB,CAEzB"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/lib/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,sBAAsB,EACtB,sBAAsB,EACtB,yBAAyB,EACzB,eAAe,EAEf,YAAY,EACZ,QAAQ,EACR,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,uBAAuB,CAAA;AAO9B,OAAO,KAAK,EACV,MAAM,IAAI,cAAc,EACxB,IAAI,IAAI,YAAY,EACpB,UAAU,IAAI,kBAAkB,EACjC,MAAM,IAAI,CAAA;AASX,KAAK,iBAAiB,GAAG,cAAc,GAAG,YAAY,GAAG,kBAAkB,CAAA;AAE3E;;GAEG;AACH,qBAAa,uBAAwB,YAAW,eAAe;;IAC7D;;OAEG;IACH,OAAO,SAAa;IAEpB;;OAEG;IACH,YAAY;;;;;;MAAA;IAMZ,YAAY,MAAM,EAAE,iBAAiB,EASpC;IAED;;;;OAIG;IACH,UAAU,CAAC,SAAS,EAAE,yBAAyB,GAAG,sBAAsB,GAAG,YAAY,EAAE,CAOxF;IAED;;;;OAIG;IACG,OAAO,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAuB/E;IAED;;;;OAIG;IACG,OAAO,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAWzE;IAED;;;;;OAKG;IACG,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAMhF;IAED;;;;;;OAMG;IACG,SAAS,CACb,KAAK,EAAE,QAAQ,EACf,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,gBAAgB,GAC7B,OAAO,CAAC,OAAO,CAAC,CASlB;IAED;;;;OAIG;IACG,gBAAgB,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA0B9E;IAED;;;;OAIG;IACG,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgB9D;IAED;;;;OAIG;IACG,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBhE;IAED;;;;;OAKG;IACG,eAAe,CAAC,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG1E;IAED;;;;;OAKG;IACG,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG9E;IAED;;;;;OAKG;IACG,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG3E;IAED;;;OAGG;IACG,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAE1C;IAED;;;OAGG;IACG,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAE1C;CAmBF;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,iBAAiB,GAAG,uBAAuB,CAEhG"}
@@ -16,14 +16,14 @@ export class PostgresDatabaseAdapter {
16
16
  #client;
17
17
  #transactions = new Map();
18
18
  #transactionCounter = 0;
19
- constructor(client, options) {
19
+ constructor(client) {
20
20
  this.#client = client;
21
21
  this.capabilities = {
22
- returning: options?.capabilities?.returning ?? true,
23
- savepoints: options?.capabilities?.savepoints ?? true,
24
- upsert: options?.capabilities?.upsert ?? true,
25
- transactionalDdl: options?.capabilities?.transactionalDdl ?? true,
26
- migrationLock: options?.capabilities?.migrationLock ?? true,
22
+ returning: true,
23
+ savepoints: true,
24
+ upsert: true,
25
+ transactionalDdl: true,
26
+ migrationLock: true,
27
27
  };
28
28
  }
29
29
  /**
@@ -247,8 +247,8 @@ export class PostgresDatabaseAdapter {
247
247
  * let db = createDatabase(adapter)
248
248
  * ```
249
249
  */
250
- export function createPostgresDatabaseAdapter(client, options) {
251
- return new PostgresDatabaseAdapter(client, options);
250
+ export function createPostgresDatabaseAdapter(client) {
251
+ return new PostgresDatabaseAdapter(client);
252
252
  }
253
253
  function isPostgresPool(client) {
254
254
  return 'connect' in client && typeof client.connect === 'function';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remix-run/data-table-postgres",
3
- "version": "0.2.0",
3
+ "version": "0.3.1",
4
4
  "description": "PostgreSQL adapter for remix/data-table",
5
5
  "author": "Michael Jackson <mjijackson@gmail.com>",
6
6
  "license": "MIT",
@@ -31,10 +31,12 @@
31
31
  "@types/pg": "^8.15.6",
32
32
  "@typescript/native-preview": "7.0.0-dev.20251125.1",
33
33
  "pg": "^8.16.3",
34
- "@remix-run/data-table": "0.2.0"
34
+ "@remix-run/assert": "0.2.0",
35
+ "@remix-run/data-table": "0.2.1",
36
+ "@remix-run/test": "0.3.0"
35
37
  },
36
38
  "dependencies": {
37
- "@remix-run/data-table": "^0.2.0"
39
+ "@remix-run/data-table": "^0.2.1"
38
40
  },
39
41
  "peerDependencies": {
40
42
  "pg": "^8.16.3"
@@ -54,8 +56,9 @@
54
56
  "scripts": {
55
57
  "build": "tsgo -p tsconfig.build.json",
56
58
  "clean": "git clean -fdX",
57
- "test": "node --test",
58
- "test:coverage": "node --experimental-test-coverage --test-coverage-include='src/**/*.ts' --test-coverage-lines=90 --test-coverage-branches=90 --test-coverage-functions=90 --test ./src/lib/adapter.test.ts ./src/lib/sql-compiler.test.ts",
59
+ "test": "remix-test",
60
+ "test:bun": "bun x --bun remix-test",
61
+ "test:coverage": "remix-test --coverage",
59
62
  "typecheck": "tsgo --noEmit"
60
63
  }
61
64
  }
package/src/index.ts CHANGED
@@ -1,2 +1 @@
1
- export type { PostgresDatabaseAdapterOptions } from './lib/adapter.ts'
2
1
  export { createPostgresDatabaseAdapter, PostgresDatabaseAdapter } from './lib/adapter.ts'
@@ -1,5 +1,4 @@
1
1
  import type {
2
- AdapterCapabilityOverrides,
3
2
  DataMigrationRequest,
4
3
  DataManipulationRequest,
5
4
  DataMigrationResult,
@@ -19,23 +18,20 @@ import {
19
18
  quoteLiteral as quoteLiteralHelper,
20
19
  quoteTableRef as quoteTableRefHelper,
21
20
  } from '@remix-run/data-table/sql-helpers'
22
- import type { Pool as PostgresPool, PoolClient as PostgresPoolClient } from 'pg'
21
+ import type {
22
+ Client as PostgresClient,
23
+ Pool as PostgresPool,
24
+ PoolClient as PostgresPoolClient,
25
+ } from 'pg'
23
26
 
24
27
  import { compilePostgresOperation } from './sql-compiler.ts'
25
28
 
26
- /**
27
- * Postgres adapter configuration.
28
- */
29
- export type PostgresDatabaseAdapterOptions = {
30
- capabilities?: AdapterCapabilityOverrides
31
- }
32
-
33
29
  type TransactionState = {
34
- client: PostgresPoolClient
30
+ client: PostgresClient | PostgresPoolClient
35
31
  releaseOnClose: boolean
36
32
  }
37
33
 
38
- type PostgresQueryable = PostgresPool | PostgresPoolClient
34
+ type PostgresQueryable = PostgresClient | PostgresPool | PostgresPoolClient
39
35
 
40
36
  /**
41
37
  * `DatabaseAdapter` implementation for postgres-compatible clients.
@@ -55,14 +51,14 @@ export class PostgresDatabaseAdapter implements DatabaseAdapter {
55
51
  #transactions = new Map<string, TransactionState>()
56
52
  #transactionCounter = 0
57
53
 
58
- constructor(client: PostgresQueryable, options?: PostgresDatabaseAdapterOptions) {
54
+ constructor(client: PostgresQueryable) {
59
55
  this.#client = client
60
56
  this.capabilities = {
61
- returning: options?.capabilities?.returning ?? true,
62
- savepoints: options?.capabilities?.savepoints ?? true,
63
- upsert: options?.capabilities?.upsert ?? true,
64
- transactionalDdl: options?.capabilities?.transactionalDdl ?? true,
65
- migrationLock: options?.capabilities?.migrationLock ?? true,
57
+ returning: true,
58
+ savepoints: true,
59
+ upsert: true,
60
+ transactionalDdl: true,
61
+ migrationLock: true,
66
62
  }
67
63
  }
68
64
 
@@ -171,7 +167,7 @@ export class PostgresDatabaseAdapter implements DatabaseAdapter {
171
167
  */
172
168
  async beginTransaction(options?: TransactionOptions): Promise<TransactionToken> {
173
169
  let releaseOnClose = false
174
- let transactionClient: PostgresPoolClient
170
+ let transactionClient: PostgresClient | PostgresPoolClient
175
171
 
176
172
  if (isPostgresPool(this.#client)) {
177
173
  transactionClient = await this.#client.connect()
@@ -300,7 +296,7 @@ export class PostgresDatabaseAdapter implements DatabaseAdapter {
300
296
  return this.#transactionClient(token)
301
297
  }
302
298
 
303
- #transactionClient(token: TransactionToken): PostgresPoolClient {
299
+ #transactionClient(token: TransactionToken): PostgresClient | PostgresPoolClient {
304
300
  let transaction = this.#transactions.get(token.id)
305
301
 
306
302
  if (!transaction) {
@@ -327,18 +323,15 @@ export class PostgresDatabaseAdapter implements DatabaseAdapter {
327
323
  * let db = createDatabase(adapter)
328
324
  * ```
329
325
  */
330
- export function createPostgresDatabaseAdapter(
331
- client: PostgresQueryable,
332
- options?: PostgresDatabaseAdapterOptions,
333
- ): PostgresDatabaseAdapter {
334
- return new PostgresDatabaseAdapter(client, options)
326
+ export function createPostgresDatabaseAdapter(client: PostgresQueryable): PostgresDatabaseAdapter {
327
+ return new PostgresDatabaseAdapter(client)
335
328
  }
336
329
 
337
330
  function isPostgresPool(client: PostgresQueryable): client is PostgresPool {
338
331
  return 'connect' in client && typeof client.connect === 'function'
339
332
  }
340
333
 
341
- function releasePostgresClient(client: PostgresPoolClient): void {
334
+ function releasePostgresClient(client: PostgresClient | PostgresPoolClient): void {
342
335
  let release = (client as { release?: () => void }).release
343
336
  release?.()
344
337
  }