@effect/sql-pg 4.0.0-beta.99 → 4.0.0-rc.108

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/AGENTS.md +381 -0
  2. package/CLAUDE.md +381 -0
  3. package/README.md +10 -3
  4. package/ai-docs/README.md +44 -0
  5. package/ai-docs/package.json +36 -0
  6. package/ai-docs/src/01_effect/01_basics/01_effect-gen.ts +30 -0
  7. package/ai-docs/src/01_effect/01_basics/02_effect-fn.ts +39 -0
  8. package/ai-docs/src/01_effect/01_basics/10_creating-effects.ts +74 -0
  9. package/ai-docs/src/01_effect/01_basics/index.md +5 -0
  10. package/ai-docs/src/01_effect/02_schema/10_schema-basics.ts +43 -0
  11. package/ai-docs/src/01_effect/02_schema/index.md +7 -0
  12. package/ai-docs/src/01_effect/03_services/01_service.ts +45 -0
  13. package/ai-docs/src/01_effect/03_services/10_reference.ts +10 -0
  14. package/ai-docs/src/01_effect/03_services/20_layer-composition.ts +70 -0
  15. package/ai-docs/src/01_effect/03_services/20_layer-unwrap.ts +66 -0
  16. package/ai-docs/src/01_effect/03_services/index.md +5 -0
  17. package/ai-docs/src/01_effect/04_errors/01_error-handling.ts +30 -0
  18. package/ai-docs/src/01_effect/04_errors/10_catch-tags.ts +24 -0
  19. package/ai-docs/src/01_effect/04_errors/20_reason-errors.ts +64 -0
  20. package/ai-docs/src/01_effect/04_errors/index.md +1 -0
  21. package/ai-docs/src/01_effect/05_resources/10_acquire-release.ts +105 -0
  22. package/ai-docs/src/01_effect/05_resources/20_layer-side-effects.ts +31 -0
  23. package/ai-docs/src/01_effect/05_resources/30_layer-map.ts +86 -0
  24. package/ai-docs/src/01_effect/05_resources/index.md +3 -0
  25. package/ai-docs/src/01_effect/06_running/10_run-main.ts +30 -0
  26. package/ai-docs/src/01_effect/06_running/20_layer-launch.ts +27 -0
  27. package/ai-docs/src/01_effect/06_running/index.md +1 -0
  28. package/ai-docs/src/01_effect/07_pubsub/10_pubsub.ts +56 -0
  29. package/ai-docs/src/01_effect/07_pubsub/index.md +3 -0
  30. package/ai-docs/src/03_stream/10_creating-streams.ts +103 -0
  31. package/ai-docs/src/03_stream/20_consuming-streams.ts +137 -0
  32. package/ai-docs/src/03_stream/30_encoding.ts +165 -0
  33. package/ai-docs/src/03_stream/index.md +4 -0
  34. package/ai-docs/src/04_integration/10_managed-runtime.ts +129 -0
  35. package/ai-docs/src/04_integration/index.md +5 -0
  36. package/ai-docs/src/05_batching/10_request-resolver.ts +89 -0
  37. package/ai-docs/src/05_batching/index.md +3 -0
  38. package/ai-docs/src/06_schedule/10_schedules.ts +110 -0
  39. package/ai-docs/src/06_schedule/index.md +3 -0
  40. package/ai-docs/src/07_datetime/10_creating-and-formatting.ts +30 -0
  41. package/ai-docs/src/07_datetime/20_time-zones.ts +44 -0
  42. package/ai-docs/src/07_datetime/index.md +5 -0
  43. package/ai-docs/src/08_observability/10_logging.ts +66 -0
  44. package/ai-docs/src/08_observability/20_otlp-tracing.ts +95 -0
  45. package/ai-docs/src/08_observability/index.md +7 -0
  46. package/ai-docs/src/09_testing/10_effect-tests.ts +55 -0
  47. package/ai-docs/src/09_testing/20_layer-tests.ts +138 -0
  48. package/ai-docs/src/09_testing/index.md +1 -0
  49. package/ai-docs/src/10_predicate/01_basics.ts +14 -0
  50. package/ai-docs/src/10_predicate/index.md +9 -0
  51. package/ai-docs/src/50_http-client/10_basics.ts +102 -0
  52. package/ai-docs/src/50_http-client/index.md +3 -0
  53. package/ai-docs/src/51_http-server/10_basics.ts +116 -0
  54. package/ai-docs/src/51_http-server/fixtures/api/Api.ts +14 -0
  55. package/ai-docs/src/51_http-server/fixtures/api/Authorization.ts +36 -0
  56. package/ai-docs/src/51_http-server/fixtures/api/System.ts +10 -0
  57. package/ai-docs/src/51_http-server/fixtures/api/Users.ts +91 -0
  58. package/ai-docs/src/51_http-server/fixtures/domain/User.ts +12 -0
  59. package/ai-docs/src/51_http-server/fixtures/domain/UserErrors.ts +22 -0
  60. package/ai-docs/src/51_http-server/fixtures/server/Authorization.ts +36 -0
  61. package/ai-docs/src/51_http-server/fixtures/server/Users/http.ts +71 -0
  62. package/ai-docs/src/51_http-server/fixtures/server/Users.ts +62 -0
  63. package/ai-docs/src/51_http-server/index.md +3 -0
  64. package/ai-docs/src/60_child-process/10_working-with-child-processes.ts +117 -0
  65. package/ai-docs/src/60_child-process/index.md +3 -0
  66. package/ai-docs/src/70_cli/10_basics.ts +136 -0
  67. package/ai-docs/src/70_cli/index.md +5 -0
  68. package/ai-docs/src/71_ai/10_language-model.ts +156 -0
  69. package/ai-docs/src/71_ai/20_tools.ts +226 -0
  70. package/ai-docs/src/71_ai/30_chat.ts +158 -0
  71. package/ai-docs/src/71_ai/fixtures/domain/LaunchPlan.ts +9 -0
  72. package/ai-docs/src/71_ai/index.md +5 -0
  73. package/ai-docs/src/80_cluster/10_entities.ts +97 -0
  74. package/ai-docs/src/80_cluster/index.md +4 -0
  75. package/ai-docs/src/index.md +10 -0
  76. package/ai-docs/tsconfig.json +24 -0
  77. package/dist/PgClient.d.ts +6 -6
  78. package/dist/PgClient.d.ts.map +1 -1
  79. package/dist/PgClient.js +51 -39
  80. package/dist/PgClient.js.map +1 -1
  81. package/dist/PgMigrator.d.ts +1 -1
  82. package/dist/PgMigrator.js +1 -1
  83. package/dist/PgMigrator.js.map +1 -1
  84. package/dist/index.js.map +1 -1
  85. package/package.json +11 -9
  86. package/src/PgClient.ts +27 -10
  87. package/src/PgMigrator.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"PgMigrator.js","names":["Effect","FileSystem","Layer","Path","Redacted","ChildProcess","ChildProcessSpawner","Migrator","PgClient","run","make","dumpSchema","path","table","pgDump","args","gen","sql","spawner","dump","env","PATH","globalThis","process","PGHOST","config","host","PGPORT","port","toString","PGUSER","username","PGPASSWORD","password","value","undefined","PGDATABASE","database","PGSSLMODE","ssl","pipe","string","replace","trim","mapError","error","MigrationError","kind","message","pgDumpSchema","pgDumpMigrations","pgDumpAll","map","all","concurrency","schema","migrations","pgDumpFile","fs","path_","makeDirectory","dirname","recursive","writeFileString","layer","options","effectDiscard"],"sources":["../src/PgMigrator.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"PgMigrator.js","names":[],"sources":["../src/PgMigrator.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["PgClient","PgMigrator"],"sources":["../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAIA;AAEA;;;AAGA,OAAO,KAAKA,QAAQ,MAAM,eAAe;AAEzC;;;AAGA,OAAO,KAAKC,UAAU,MAAM,iBAAiB","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAIA;AAEA;;;AAGA,OAAO,KAAK,QAAQ,MAAM,eAAe;AAEzC;;;AAGA,OAAO,KAAK,UAAU,MAAM,iBAAiB","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect/sql-pg",
3
- "version": "4.0.0-beta.99",
3
+ "version": "4.0.0-rc.108",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "description": "A PostgreSQL toolkit for Effect",
@@ -29,6 +29,7 @@
29
29
  ".": "./dist/index.js",
30
30
  "./*": "./dist/*.js",
31
31
  "./internal/*": null,
32
+ "./index": null,
32
33
  "./*/index": null
33
34
  },
34
35
  "files": [
@@ -36,24 +37,27 @@
36
37
  "dist/**/*.js",
37
38
  "dist/**/*.js.map",
38
39
  "dist/**/*.d.ts",
39
- "dist/**/*.d.ts.map"
40
+ "dist/**/*.d.ts.map",
41
+ "AGENTS.md",
42
+ "CLAUDE.md",
43
+ "ai-docs/**/*"
40
44
  ],
41
45
  "publishConfig": {
42
46
  "access": "public",
43
47
  "provenance": true
44
48
  },
45
49
  "devDependencies": {
46
- "@testcontainers/postgresql": "^11.14.0",
50
+ "@testcontainers/postgresql": "^12.0.4",
47
51
  "@types/pg": "^8.20.0",
48
52
  "@types/pg-cursor": "^2.7.2",
49
- "effect": "^4.0.0-beta.99"
53
+ "effect": "^4.0.0-rc.108"
50
54
  },
51
55
  "peerDependencies": {
52
- "effect": "^4.0.0-beta.99"
56
+ "effect": "^4.0.0-rc.108"
53
57
  },
54
58
  "dependencies": {
55
59
  "pg": "^8.22.0",
56
- "pg-connection-string": "2.14.0",
60
+ "pg-connection-string": "^2.14.0",
57
61
  "pg-cursor": "^2.21.0",
58
62
  "pg-pool": "^3.14.0",
59
63
  "pg-types": "^4.1.0"
@@ -62,8 +66,6 @@
62
66
  "codegen": "effect-utils codegen",
63
67
  "build": "tsc -b tsconfig.json && pnpm babel",
64
68
  "babel": "babel dist --plugins annotate-pure-calls --out-dir dist --source-maps",
65
- "check": "tsc -b tsconfig.json",
66
- "test": "vitest",
67
- "coverage": "vitest --coverage"
69
+ "check": "tsc -b tsconfig.json"
68
70
  }
69
71
  }
package/src/PgClient.ts CHANGED
@@ -73,7 +73,7 @@ export type TypeId = "~@effect/sql-pg/PgClient"
73
73
  /**
74
74
  * PostgreSQL client service, extending `SqlClient` with JSON parameter fragments and LISTEN/NOTIFY helpers.
75
75
  *
76
- * @category models
76
+ * @category services
77
77
  * @since 4.0.0
78
78
  */
79
79
  export interface PgClient extends Client.SqlClient {
@@ -99,7 +99,7 @@ export const PgClient = Context.Service<PgClient>("@effect/sql-pg/PgClient")
99
99
  /**
100
100
  * Configuration for a PostgreSQL client, including connection, TLS, custom stream, application name, type parser, JSON transform, and query/result name transform options.
101
101
  *
102
- * @category constructors
102
+ * @category models
103
103
  * @since 4.0.0
104
104
  */
105
105
  export interface PgClientConfig {
@@ -129,7 +129,7 @@ export interface PgClientConfig {
129
129
  /**
130
130
  * PostgreSQL pool configuration, extending `PgClientConfig` with idle timeout, pool size, and connection lifetime settings.
131
131
  *
132
- * @category constructors
132
+ * @category models
133
133
  * @since 4.0.0
134
134
  */
135
135
  export interface PgPoolConfig extends PgClientConfig {
@@ -219,8 +219,9 @@ export const makeClient = (
219
219
  */
220
220
  readonly acquireForStream?: boolean | undefined
221
221
  }
222
- ): Effect.Effect<PgClient, SqlError, Scope.Scope | Reactivity.Reactivity> =>
223
- fromClient({
222
+ ): Effect.Effect<PgClient, SqlError, Scope.Scope | Reactivity.Reactivity> => {
223
+ function onError() {}
224
+ return fromClient({
224
225
  ...options,
225
226
  acquire: Effect.acquireRelease(
226
227
  Effect.tryPromise({
@@ -237,13 +238,17 @@ export const makeClient = (
237
238
  application_name: options.applicationName ?? "@effect/sql-pg",
238
239
  types: options.types
239
240
  })
241
+ client.on("error", onError)
240
242
  await client.connect()
241
243
  return client
242
244
  },
243
245
  catch: (cause) => new SqlError({ reason: classifyError(cause, "PgClient: Failed to connect", "connect") })
244
246
  }),
245
247
  (client) =>
246
- Effect.promise(() => client.end()).pipe(
248
+ Effect.promise(() => {
249
+ client.off("error", onError)
250
+ return client.end()
251
+ }).pipe(
247
252
  Effect.timeoutOption(1000)
248
253
  ),
249
254
  { interruptible: true }
@@ -264,6 +269,7 @@ export const makeClient = (
264
269
  ),
265
270
  acquireForStream: options.acquireForStream ?? false
266
271
  })
272
+ }
267
273
 
268
274
  /**
269
275
  * Builds a PostgreSQL client from a scoped `pg` pool acquisition effect, deriving transaction, streaming, and LISTEN/NOTIFY support from that pool.
@@ -522,6 +528,17 @@ export const fromClient = Effect.fnUntraced(function*(
522
528
  )
523
529
  const connection = makeConection(client)
524
530
  const acquirer = semaphore.withPermit(Effect.succeed(connection))
531
+ const transactionAcquirer = Effect.uninterruptibleMask((restore) => {
532
+ const fiber = Fiber.getCurrent()!
533
+ const scope = Context.getUnsafe(fiber.context, Scope.Scope)
534
+ return Effect.as(
535
+ Effect.tap(
536
+ restore(semaphore.take(1)),
537
+ () => Scope.addFinalizer(scope, semaphore.release(1))
538
+ ),
539
+ connection
540
+ )
541
+ })
525
542
 
526
543
  const config: PgClientConfig = {
527
544
  ...options,
@@ -535,7 +552,7 @@ export const fromClient = Effect.fnUntraced(function*(
535
552
 
536
553
  return yield* makeWith({
537
554
  acquirer,
538
- transactionAcquirer: acquirer,
555
+ transactionAcquirer,
539
556
  listenAcquirer: streamClient,
540
557
  config,
541
558
  spanAttributes: options.spanAttributes,
@@ -865,18 +882,18 @@ const escape = Statement.defaultEscape("\"")
865
882
  /**
866
883
  * PostgreSQL-specific custom statement fragments supported by the compiler, currently JSON parameter fragments.
867
884
  *
868
- * @category custom types
885
+ * @category models
869
886
  * @since 4.0.0
870
887
  */
871
888
  export type PgCustom = PgJson
872
889
 
873
890
  /**
874
- * @category custom types
891
+ * @category models
875
892
  * @since 4.0.0
876
893
  */
877
894
  interface PgJson extends Custom<"PgJson", unknown> {}
878
895
  /**
879
- * @category custom types
896
+ * @category constructors
880
897
  * @since 4.0.0
881
898
  */
882
899
  const PgJson = Statement.custom<PgJson>("PgJson")
package/src/PgMigrator.ts CHANGED
@@ -29,7 +29,7 @@ export * from "effect/unstable/sql/Migrator"
29
29
  /**
30
30
  * Runs PostgreSQL SQL migrations using the configured clients. Schema dumps use `pg_dump` and require child process, filesystem, and path services.
31
31
  *
32
- * @category constructors
32
+ * @category running
33
33
  * @since 4.0.0
34
34
  */
35
35
  export const run: <R2 = never>(