@shivaedev/local-postgres 0.9.0 → 0.11.0
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/CHANGELOG.md +17 -0
- package/README.md +8 -9
- package/dist/server/PostgresSettingError.d.ts +11 -0
- package/dist/server/PostgresSettingError.d.ts.map +1 -0
- package/dist/server/PostgresSettingError.js +11 -0
- package/dist/server/PostgresSettingError.js.map +1 -0
- package/dist/server/{clientConnection.d.ts → adapters/clientConnection.d.ts} +2 -2
- package/dist/server/adapters/clientConnection.d.ts.map +1 -0
- package/dist/server/{clientConnection.js → adapters/clientConnection.js} +1 -1
- package/dist/server/adapters/clientConnection.js.map +1 -0
- package/dist/server/adapters/docker.d.ts +8 -0
- package/dist/server/adapters/docker.d.ts.map +1 -0
- package/dist/server/{localDocker.js → adapters/docker.js} +3 -3
- package/dist/server/adapters/docker.js.map +1 -0
- package/dist/server/adapters/ensureConnections.d.ts +11 -0
- package/dist/server/adapters/ensureConnections.d.ts.map +1 -0
- package/dist/server/{localConnections.js → adapters/ensureConnections.js} +5 -13
- package/dist/server/adapters/ensureConnections.js.map +1 -0
- package/dist/server/{localContainer.d.ts → adapters/localContainer.d.ts} +4 -4
- package/dist/server/adapters/localContainer.d.ts.map +1 -0
- package/dist/server/{localContainer.js → adapters/localContainer.js} +3 -3
- package/dist/server/adapters/localContainer.js.map +1 -0
- package/dist/server/adapters/localSql.d.ts +6 -0
- package/dist/server/adapters/localSql.d.ts.map +1 -0
- package/dist/server/adapters/localSql.js +15 -0
- package/dist/server/adapters/localSql.js.map +1 -0
- package/dist/server/{runCommand.d.ts → adapters/runCommand.d.ts} +1 -1
- package/dist/server/adapters/runCommand.d.ts.map +1 -0
- package/dist/server/{runCommand.js → adapters/runCommand.js} +1 -1
- package/dist/server/adapters/runCommand.js.map +1 -0
- package/dist/server/assertLocalDatabase.d.ts +4 -0
- package/dist/server/assertLocalDatabase.d.ts.map +1 -0
- package/dist/server/assertLocalDatabase.js +14 -0
- package/dist/server/assertLocalDatabase.js.map +1 -0
- package/dist/server/dockerEnvironment.d.ts +10 -0
- package/dist/server/dockerEnvironment.d.ts.map +1 -0
- package/dist/server/dockerEnvironment.js +6 -0
- package/dist/server/dockerEnvironment.js.map +1 -0
- package/dist/server/localPostgres.d.ts +5 -6
- package/dist/server/localPostgres.d.ts.map +1 -1
- package/dist/server/localPostgres.js +7 -26
- package/dist/server/localPostgres.js.map +1 -1
- package/package.json +6 -6
- package/src/server/PostgresSettingError.ts +11 -0
- package/src/server/{clientConnection.ts → adapters/clientConnection.ts} +2 -2
- package/src/server/{localDocker.ts → adapters/docker.ts} +3 -4
- package/src/server/{localConnections.ts → adapters/ensureConnections.ts} +7 -16
- package/src/server/{localContainer.ts → adapters/localContainer.ts} +5 -5
- package/src/server/adapters/localSql.ts +20 -0
- package/src/server/{runCommand.ts → adapters/runCommand.ts} +1 -1
- package/src/server/assertLocalDatabase.ts +16 -0
- package/src/server/dockerEnvironment.ts +8 -0
- package/src/server/localPostgres.ts +9 -34
- package/dist/server/clientConnection.d.ts.map +0 -1
- package/dist/server/clientConnection.js.map +0 -1
- package/dist/server/localConnections.d.ts +0 -18
- package/dist/server/localConnections.d.ts.map +0 -1
- package/dist/server/localConnections.js.map +0 -1
- package/dist/server/localContainer.d.ts.map +0 -1
- package/dist/server/localContainer.js.map +0 -1
- package/dist/server/localDocker.d.ts +0 -12
- package/dist/server/localDocker.d.ts.map +0 -1
- package/dist/server/localDocker.js.map +0 -1
- package/dist/server/runCommand.d.ts.map +0 -1
- package/dist/server/runCommand.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.11.0 - 2026-11-03
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
- Read Docker settings through Effect Config with `dockerEnvironment` from `@shivaedev/local-postgres/server/dockerEnvironment.ts`.
|
|
8
|
+
|
|
9
|
+
### Breaking
|
|
10
|
+
|
|
11
|
+
- Import `PostgresSettingError` from `@shivaedev/local-postgres/server/PostgresSettingError.ts` and `ensureConnections` from `server/adapters/ensureConnections.ts` instead of `server/localConnections.ts`.
|
|
12
|
+
- Import `DockerEnvironment` from `@shivaedev/local-postgres/server/dockerEnvironment.ts` and `docker` from `server/adapters/docker.ts` instead of `server/localDocker.ts`. Import `localContainer`, `runCommand` and `clientConnection` modules from `server/adapters/` instead of `server/`; their exported names stay the same.
|
|
13
|
+
|
|
14
|
+
## 0.10.0 - 2026-11-02
|
|
15
|
+
|
|
16
|
+
### Breaking
|
|
17
|
+
|
|
18
|
+
- Import `assertLocalDatabase` from `@shivaedev/local-postgres/server/assertLocalDatabase.ts` instead of `@shivaedev/local-postgres/server/localPostgres.ts`. The validator has its own module so validation stays independent of process execution; its validation behavior is unchanged.
|
|
19
|
+
|
|
3
20
|
## 0.9.0 - 2026-11-02
|
|
4
21
|
|
|
5
22
|
### Fixed
|
package/README.md
CHANGED
|
@@ -40,15 +40,13 @@ When database names come from the application's configured URLs, pass those URLs
|
|
|
40
40
|
|
|
41
41
|
```ts
|
|
42
42
|
import { Config, Effect } from "effect";
|
|
43
|
+
import { dockerEnvironment } from "@shivaedev/local-postgres/server/dockerEnvironment.ts";
|
|
43
44
|
import { LOCAL_SERVER, localPostgres } from "@shivaedev/local-postgres/server/localPostgres.ts";
|
|
44
45
|
|
|
45
46
|
const setup = Effect.gen(function* () {
|
|
46
47
|
const development = yield* Config.String("DATABASE_URL").pipe(Config.withDefault(`${LOCAL_SERVER}/example_dev`));
|
|
47
48
|
const tests = yield* Config.String("TEST_DATABASE_URL").pipe(Config.withDefault(`${LOCAL_SERVER}/example_test`));
|
|
48
|
-
const environment = yield*
|
|
49
|
-
"DOCKER_CONTEXT": Config.String("DOCKER_CONTEXT").pipe(Config.withDefault("")),
|
|
50
|
-
"DOCKER_HOST": Config.String("DOCKER_HOST").pipe(Config.withDefault("")),
|
|
51
|
-
});
|
|
49
|
+
const environment = yield* dockerEnvironment;
|
|
52
50
|
yield* localPostgres(environment).prepareDatabases([development, tests]);
|
|
53
51
|
});
|
|
54
52
|
```
|
|
@@ -59,7 +57,8 @@ Use `assertLocalDatabase` when the setup script owns a fixed set of database nam
|
|
|
59
57
|
|
|
60
58
|
```ts
|
|
61
59
|
import { Effect } from "effect";
|
|
62
|
-
import { assertLocalDatabase
|
|
60
|
+
import { assertLocalDatabase } from "@shivaedev/local-postgres/server/assertLocalDatabase.ts";
|
|
61
|
+
import { LOCAL_SERVER, localPostgres } from "@shivaedev/local-postgres/server/localPostgres.ts";
|
|
63
62
|
|
|
64
63
|
const setup = Effect.gen(function* () {
|
|
65
64
|
const development = `${LOCAL_SERVER}/example_dev`;
|
|
@@ -94,11 +93,11 @@ Run these setup Effects at a Node entry point with `NodeRuntime.runMain(setup.pi
|
|
|
94
93
|
|
|
95
94
|
`startPostgres(connection)` prepares the service without choosing an application database to create. Its connection defaults to `LOCAL_SERVER`. Prefer `prepareDatabases` when the setup script needs named databases as well.
|
|
96
95
|
|
|
97
|
-
On each start, setup reads `SHOW max_connections`. Native servers retain their configured limit. When the running managed container publishes port 55432 and allows fewer than 500 connections, setup applies `ALTER SYSTEM SET max_connections = 500`, restarts that same container, waits for readiness and confirms the setting. Existing data stays in place. A limit of 500 or higher causes no setting change or restart. If the setting cannot be applied, setup fails with `PostgresSettingError` from `@shivaedev/local-postgres/server/
|
|
96
|
+
On each start, setup reads `SHOW max_connections`. Native servers retain their configured limit. When the running managed container publishes port 55432 and allows fewer than 500 connections, setup applies `ALTER SYSTEM SET max_connections = 500`, restarts that same container, waits for readiness and confirms the setting. Existing data stays in place. A limit of 500 or higher causes no setting change or restart. If the setting cannot be applied, setup fails with `PostgresSettingError` from `@shivaedev/local-postgres/server/PostgresSettingError.ts`, with `_tag`, `container`, `setting` and the original `cause`.
|
|
98
97
|
|
|
99
98
|
### API
|
|
100
99
|
|
|
101
|
-
Import
|
|
100
|
+
Import service preparation from `@shivaedev/local-postgres/server/localPostgres.ts` and fixed-name validation from `@shivaedev/local-postgres/server/assertLocalDatabase.ts`:
|
|
102
101
|
|
|
103
102
|
| Export | Purpose |
|
|
104
103
|
| ----------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
@@ -111,7 +110,7 @@ Import the setup API from `@shivaedev/local-postgres/server/localPostgres.ts`:
|
|
|
111
110
|
|
|
112
111
|
The last three functions are members of the object returned by `localPostgres`, not module-level exports. They fail in the typed error channel. `PostgresCommandError` carries the command, diagnostic message and exit code or platform cause; `LocalPostgresError` describes local-target and image refusals, and malformed URL password escapes. Exhausted readiness checks retain their final failure; a version mismatch always names a version the service returned.
|
|
113
112
|
|
|
114
|
-
The module export pattern also exposes the lower-level Docker and container command functions in `@shivaedev/local-postgres/server/
|
|
113
|
+
The module export pattern also exposes the lower-level Docker and container command functions in `@shivaedev/local-postgres/server/adapters/docker.ts` and `@shivaedev/local-postgres/server/adapters/localContainer.ts`. Use `@shivaedev/local-postgres/server/localPostgres.ts` for application preparation.
|
|
115
114
|
|
|
116
115
|
### Install and machine setup
|
|
117
116
|
|
|
@@ -129,7 +128,7 @@ postgres:18.6-alpine@sha256:77f585114c32fbca283dc835b0596f4e52b51b4c6662d7810b2f
|
|
|
129
128
|
|
|
130
129
|
A newly created container uses username and password `postgres`; connection URLs supply credentials for client commands. Setup accepts native PostgreSQL 18.6 version strings with distribution suffixes, such as `18.6 (Debian 18.6-1.pgdg13+2)`, without requiring a managed container or Docker installation. Setup refuses a running release other than 18.6 with `PostgresVersionMismatch` from `@shivaedev/local-postgres/server/PostgresVersionMismatch.ts`. The error carries `_tag: "PostgresVersionMismatch"`, `expectedVersion` and `observedVersion`. A running PostgreSQL 17 service is refused without losing its existing rows; upgrading it while preserving its data is your job. Container preparation and container-client fallback also check the managed image; a successful host-`psql` version probe does not inspect that image.
|
|
131
130
|
|
|
132
|
-
|
|
131
|
+
Yield `dockerEnvironment` from `@shivaedev/local-postgres/server/dockerEnvironment.ts` and pass its result to `localPostgres`, as in the configuration example. This reader uses Effect Config for `DOCKER_CONTEXT` and `DOCKER_HOST`, with empty defaults that let Docker use its active context. The same module exports the `DockerEnvironment` type. With `DOCKER_CONTEXT`, endpoint validation uses that context and ignores `DOCKER_HOST`; otherwise it validates `DOCKER_HOST` or the active context. Remote endpoints are rejected before a Docker operation. Each operation pins `DOCKER_HOST` to the validated endpoint and clears `DOCKER_CONTEXT`. The lower-level `docker` function refuses command environment settings that conflict with the supplied `DOCKER_HOST` or `DOCKER_CONTEXT` before invoking Docker.
|
|
133
132
|
|
|
134
133
|
### Limits
|
|
135
134
|
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Schema } from "effect";
|
|
2
|
+
declare const PostgresSettingError_base: Schema.Class<PostgresSettingError, Schema.TaggedStruct<"PostgresSettingError", {
|
|
3
|
+
readonly cause: Schema.Unknown;
|
|
4
|
+
readonly container: Schema.Literal<"development-postgres">;
|
|
5
|
+
readonly setting: Schema.Literal<"max_connections">;
|
|
6
|
+
}>, import("effect/Cause").YieldableError>;
|
|
7
|
+
export declare class PostgresSettingError extends PostgresSettingError_base {
|
|
8
|
+
get message(): string;
|
|
9
|
+
}
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=PostgresSettingError.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PostgresSettingError.d.ts","sourceRoot":"","sources":["../../src/server/PostgresSettingError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;;;;;;AAEhC,qBAAa,oBAAqB,SAAQ,yBAIxC;IACD,IAAa,OAAO,WAEnB;CACD"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Schema } from "effect";
|
|
2
|
+
export class PostgresSettingError extends Schema.TaggedError()("PostgresSettingError", {
|
|
3
|
+
cause: Schema.Unknown,
|
|
4
|
+
container: Schema.Literal("development-postgres"),
|
|
5
|
+
setting: Schema.Literal("max_connections"),
|
|
6
|
+
}) {
|
|
7
|
+
get message() {
|
|
8
|
+
return "Could not set max_connections to at least 500 in container development-postgres.";
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=PostgresSettingError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PostgresSettingError.js","sourceRoot":"","sources":["../../src/server/PostgresSettingError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,MAAM,OAAO,oBAAqB,SAAQ,MAAM,CAAC,WAAW,EAAwB,CAAC,sBAAsB,EAAE;IAC5G,KAAK,EAAE,MAAM,CAAC,OAAO;IACrB,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC;IACjD,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC;CAC1C,CAAC;IACD,IAAa,OAAO;QACnB,OAAO,kFAAkF,CAAC;IAC3F,CAAC;CACD"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Effect } from "effect";
|
|
2
|
-
import { LocalPostgresError } from "#LocalPostgresError.ts";
|
|
3
|
-
import type { CommandOptions } from "
|
|
2
|
+
import { LocalPostgresError } from "#server/LocalPostgresError.ts";
|
|
3
|
+
import type { CommandOptions } from "./runCommand.ts";
|
|
4
4
|
export declare const clientConnection: (value: URL, options?: CommandOptions | undefined) => Effect.Effect<{
|
|
5
5
|
options: {
|
|
6
6
|
env: {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clientConnection.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/clientConnection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,eAAO,MAAM,gBAAgB;;;;;;;;6BAe3B,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Effect } from "effect";
|
|
2
|
-
import { LocalPostgresError } from "#LocalPostgresError.ts";
|
|
2
|
+
import { LocalPostgresError } from "#server/LocalPostgresError.ts";
|
|
3
3
|
export const clientConnection = Effect.fn("LocalPostgres.clientConnection")(function* (value, options = {}) {
|
|
4
4
|
const url = new URL(value);
|
|
5
5
|
// libpq treats + literally in URI passwords.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clientConnection.js","sourceRoot":"","sources":["../../../src/server/adapters/clientConnection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAGnE,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,EAAE,CAAC,gCAAgC,CAAC,CAAC,QAAQ,CAAC,EAAE,KAAU,EAAE,OAAO,GAAmB,EAAE;IAC9H,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IAC3B,6CAA6C;IAC7C,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;QAClC,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,kBAAkB,CAAC,EAAE,OAAO,EAAE,yCAAyC,EAAE,CAAC;QAC3F,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC;KAC/H,CAAC,CAAC;IACH,GAAG,CAAC,QAAQ,GAAG,EAAE,CAAC;IAClB,KAAK,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,kBAAkB,EAAE,cAAc,EAAE,WAAW,CAAC,EAAE,CAAC;QAC3F,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAC9C,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC;AAChI,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import { LocalPostgresError } from "#server/LocalPostgresError.ts";
|
|
3
|
+
import { type CommandOptions } from "./runCommand.ts";
|
|
4
|
+
export declare const docker: (environment: Readonly<{
|
|
5
|
+
DOCKER_CONTEXT?: string | undefined;
|
|
6
|
+
DOCKER_HOST?: string | undefined;
|
|
7
|
+
}>, args: readonly string[], options?: CommandOptions | undefined) => Effect.Effect<string, LocalPostgresError | import("../PostgresCommandError.ts").PostgresCommandError, import("effect/process/ChildProcessSpawner").ChildProcessSpawner>;
|
|
8
|
+
//# sourceMappingURL=docker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docker.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/docker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,KAAK,cAAc,EAAc,MAAM,iBAAiB,CAAC;AAElE,eAAO,MAAM,MAAM;;;6OA4BjB,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Effect } from "effect";
|
|
2
|
-
import { LocalPostgresError } from "#LocalPostgresError.ts";
|
|
3
|
-
import { runCommand } from "
|
|
2
|
+
import { LocalPostgresError } from "#server/LocalPostgresError.ts";
|
|
3
|
+
import { runCommand } from "./runCommand.js";
|
|
4
4
|
export const docker = Effect.fn("LocalPostgres.docker")(function* (environment, args, options = {}) {
|
|
5
5
|
const context = environment.DOCKER_CONTEXT;
|
|
6
6
|
const host = environment.DOCKER_HOST;
|
|
@@ -21,4 +21,4 @@ export const docker = Effect.fn("LocalPostgres.docker")(function* (environment,
|
|
|
21
21
|
}
|
|
22
22
|
return yield* runCommand("docker", args, { ...settings, env: { ...settings.env, "DOCKER_CONTEXT": "", "DOCKER_HOST": endpoint } });
|
|
23
23
|
});
|
|
24
|
-
//# sourceMappingURL=
|
|
24
|
+
//# sourceMappingURL=docker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docker.js","sourceRoot":"","sources":["../../../src/server/adapters/docker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAuB,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElE,MAAM,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC,sBAAsB,CAAC,CAAC,QAAQ,CAAC,EAChE,WAA8B,EAC9B,IAAuB,EACvB,OAAO,GAAmB,EAAE;IAE5B,MAAM,OAAO,GAAG,WAAW,CAAC,cAAc,CAAC;IAC3C,MAAM,IAAI,GAAG,WAAW,CAAC,WAAW,CAAC;IACrC,IAAK,CAAC,gBAAgB,EAAE,aAAa,CAAW,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QAC7H,OAAO,KAAK,CAAC,CAAC,IAAI,kBAAkB,CAAC,EAAE,OAAO,EAAE,yEAAyE,EAAE,CAAC,CAAC;IAC9H,CAAC;IACD,MAAM,QAAQ,GAAG;QAChB,GAAG,OAAO;QACV,GAAG,EAAE,EAAE,GAAG,WAAW,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,gBAAgB,EAAE,OAAO,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,IAAI,EAAE,EAAE;QACnG,SAAS,EAAE,IAAI;KACf,CAAC;IACF,MAAM,QAAQ,GACb,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC;WACf,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,4BAA4B,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC7I,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,kBAAkB,CAAC,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC9I,IACC,CAAC,CACA,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;WACrF,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAC1F,EACA,CAAC;QACF,OAAO,KAAK,CAAC,CAAC,IAAI,kBAAkB,CAAC,EAAE,OAAO,EAAE,qFAAqF,EAAE,CAAC,CAAC;IAC1I,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,GAAG,QAAQ,EAAE,GAAG,EAAE,EAAE,GAAG,QAAQ,CAAC,GAAG,EAAE,gBAAgB,EAAE,EAAE,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;AACpI,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import type { ChildProcessSpawner } from "effect/process";
|
|
3
|
+
import { LocalPostgresError } from "#server/LocalPostgresError.ts";
|
|
4
|
+
import type { PostgresCommandError } from "#server/PostgresCommandError.ts";
|
|
5
|
+
import { PostgresSettingError } from "#server/PostgresSettingError.ts";
|
|
6
|
+
import type { PostgresVersionMismatch } from "#server/PostgresVersionMismatch.ts";
|
|
7
|
+
import type { docker as localDocker } from "./docker.ts";
|
|
8
|
+
type Query = (query: string) => Effect.Effect<string, LocalPostgresError | PostgresCommandError, ChildProcessSpawner.ChildProcessSpawner>;
|
|
9
|
+
export declare const ensureConnections: (docker: (args: readonly string[]) => ReturnType<typeof localDocker>, sql: Query, ready: () => Effect.Effect<void, LocalPostgresError | PostgresCommandError | PostgresVersionMismatch, ChildProcessSpawner.ChildProcessSpawner>) => Effect.Effect<void, PostgresSettingError, ChildProcessSpawner.ChildProcessSpawner>;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=ensureConnections.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ensureConnections.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/ensureConnections.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAClF,OAAO,KAAK,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,aAAa,CAAC;AAGzD,KAAK,KAAK,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,GAAG,oBAAoB,EAAE,mBAAmB,CAAC,mBAAmB,CAAC,CAAC;AAE1I,eAAO,MAAM,iBAAiB,kBACd,SAAS,MAAM,EAAE,KAAK,UAAU,CAAC,OAAO,WAAW,CAAC,2BAEtD,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,kBAAkB,GAAG,oBAAoB,GAAG,uBAAuB,EAAE,mBAAmB,CAAC,mBAAmB,CAAC,uFA6B7I,CAAC"}
|
|
@@ -1,15 +1,7 @@
|
|
|
1
|
-
import { Effect
|
|
2
|
-
import { LocalPostgresError } from "#LocalPostgresError.ts";
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
cause: Schema.Unknown,
|
|
6
|
-
container: Schema.Literal("development-postgres"),
|
|
7
|
-
setting: Schema.Literal("max_connections"),
|
|
8
|
-
}) {
|
|
9
|
-
get message() {
|
|
10
|
-
return "Could not set max_connections to at least 500 in container development-postgres.";
|
|
11
|
-
}
|
|
12
|
-
}
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import { LocalPostgresError } from "#server/LocalPostgresError.ts";
|
|
3
|
+
import { PostgresSettingError } from "#server/PostgresSettingError.ts";
|
|
4
|
+
import { POSTGRES_IMAGE } from "./localContainer.js";
|
|
13
5
|
export const ensureConnections = Effect.fn("LocalPostgres.ensureConnections")(function* (docker, sql, ready) {
|
|
14
6
|
yield* Effect.gen(function* () {
|
|
15
7
|
const current = Number(yield* sql("SHOW max_connections"));
|
|
@@ -37,4 +29,4 @@ export const ensureConnections = Effect.fn("LocalPostgres.ensureConnections")(fu
|
|
|
37
29
|
}
|
|
38
30
|
}).pipe(Effect.mapError((cause) => new PostgresSettingError({ cause, container: "development-postgres", setting: "max_connections" })));
|
|
39
31
|
});
|
|
40
|
-
//# sourceMappingURL=
|
|
32
|
+
//# sourceMappingURL=ensureConnections.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ensureConnections.js","sourceRoot":"","sources":["../../../src/server/adapters/ensureConnections.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAEnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAGvE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAIrD,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,EAAE,CAAC,iCAAiC,CAAC,CAAC,QAAQ,CAAC,EACtF,MAAmE,EACnE,GAAU,EACV,KAA8I;IAE9I,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC1B,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC;QAC3D,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;YAChD,OAAO,KAAK,CAAC,CAAC,IAAI,kBAAkB,CAAC,EAAE,OAAO,EAAE,uDAAuD,EAAE,CAAC,CAAC;QAC5G,CAAC;QACD,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC;YACpB,OAAO;QACR,CAAC;QACD,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,UAAU,EAAE,8BAA8B,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CACzI,MAAM,CAAC,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CACjE,CAAC;QACF,IAAI,CAAC,OAAO,EAAE,CAAC;YACd,OAAO;QACR,CAAC;QACD,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,mBAAmB,EAAE,sBAAsB,CAAC,CAAC,CAAC;QAClG,IAAI,KAAK,KAAK,cAAc,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC,CAAC,IAAI,kBAAkB,CAAC;gBACpC,OAAO,EAAE,sGAAsG;aAC/G,CAAC,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;QACrD,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC,CAAC;QACnD,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAC1D,OAAO,KAAK,CAAC,CAAC,IAAI,kBAAkB,CAAC,EAAE,OAAO,EAAE,4DAA4D,EAAE,CAAC,CAAC;QACjH,CAAC;IACF,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,oBAAoB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,sBAAsB,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC;AACzI,CAAC,CAAC,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Effect } from "effect";
|
|
2
|
-
import { LocalPostgresError } from "#LocalPostgresError.ts";
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
import type { CommandOptions } from "
|
|
2
|
+
import { LocalPostgresError } from "#server/LocalPostgresError.ts";
|
|
3
|
+
import { PostgresCommandError } from "#server/PostgresCommandError.ts";
|
|
4
|
+
import type { docker as runDocker } from "./docker.ts";
|
|
5
|
+
import type { CommandOptions } from "./runCommand.ts";
|
|
6
6
|
export declare const POSTGRES_IMAGE = "postgres:18.6-alpine@sha256:77f585114c32fbca283dc835b0596f4e52b51b4c6662d7810b2f4084f60a1873";
|
|
7
7
|
type Docker = (args: readonly string[], options?: CommandOptions) => ReturnType<typeof runDocker>;
|
|
8
8
|
export declare const sqlInContainer: (docker: Docker, url: URL, args: readonly string[], options: CommandOptions) => Effect.Effect<string, LocalPostgresError | PostgresCommandError, import("effect/process/ChildProcessSpawner").ChildProcessSpawner>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"localContainer.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/localContainer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAEvE,OAAO,KAAK,EAAE,MAAM,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,eAAO,MAAM,cAAc,iGAAiG,CAAC;AAE7H,KAAK,MAAM,GAAG,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,cAAc,KAAK,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC;AAElG,eAAO,MAAM,cAAc,oNAmBzB,CAAC;AAEH,eAAO,MAAM,cAAc,2JA2BzB,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Effect } from "effect";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
2
|
+
import { LocalPostgresError } from "#server/LocalPostgresError.ts";
|
|
3
|
+
import { PostgresCommandError } from "#server/PostgresCommandError.ts";
|
|
4
|
+
import { clientConnection } from "./clientConnection.js";
|
|
5
5
|
export const POSTGRES_IMAGE = "postgres:18.6-alpine@sha256:77f585114c32fbca283dc835b0596f4e52b51b4c6662d7810b2f4084f60a1873";
|
|
6
6
|
const CONTAINER = "development-postgres";
|
|
7
7
|
export const sqlInContainer = Effect.fn("LocalPostgres.sqlInContainer")(function* (docker, url, args, options) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"localContainer.js","sourceRoot":"","sources":["../../../src/server/adapters/localContainer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import { LocalPostgresError } from "#server/LocalPostgresError.ts";
|
|
3
|
+
import type { docker } from "./docker.ts";
|
|
4
|
+
import { type CommandOptions } from "./runCommand.ts";
|
|
5
|
+
export declare function localSql(localDocker: (args: readonly string[], options?: CommandOptions) => ReturnType<typeof docker>): (value: string | URL, query: string) => Effect.Effect<string, LocalPostgresError | import("../PostgresCommandError.ts").PostgresCommandError, import("effect/process/ChildProcessSpawner").ChildProcessSpawner>;
|
|
6
|
+
//# sourceMappingURL=localSql.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"localSql.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/localSql.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAEnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,KAAK,cAAc,EAA8B,MAAM,iBAAiB,CAAC;AAElF,wBAAgB,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,cAAc,KAAK,UAAU,CAAC,OAAO,MAAM,CAAC,mNAWrH"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import { assertLocalDatabase } from "#server/assertLocalDatabase.ts";
|
|
3
|
+
import { LocalPostgresError } from "#server/LocalPostgresError.ts";
|
|
4
|
+
import { clientConnection } from "./clientConnection.js";
|
|
5
|
+
import { sqlInContainer } from "./localContainer.js";
|
|
6
|
+
import { missingCommand, runCommand } from "./runCommand.js";
|
|
7
|
+
export function localSql(localDocker) {
|
|
8
|
+
return Effect.fn("LocalPostgres.sql")(function* (value, query) {
|
|
9
|
+
const parsed = yield* Effect.try({ catch: () => new LocalPostgresError({ message: "Invalid local database URL." }), try: () => new URL(value) });
|
|
10
|
+
const { url, options } = yield* clientConnection(yield* assertLocalDatabase(parsed.toString(), [parsed.pathname.slice(1)]));
|
|
11
|
+
const args = ["-X", "--set", "ON_ERROR_STOP=1", "-At", "-c", query];
|
|
12
|
+
return yield* runCommand("psql", [...args, "--dbname", url.toString()], options).pipe(Effect.catchTag("PostgresCommandError", (error) => missingCommand(error) ? sqlInContainer(localDocker, url, args, options) : Effect.fail(error)));
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=localSql.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"localSql.js","sourceRoot":"","sources":["../../../src/server/adapters/localSql.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAuB,cAAc,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElF,MAAM,UAAU,QAAQ,CAAC,WAA6F;IACrH,OAAO,MAAM,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,QAAQ,CAAC,EAAE,KAAmB,EAAE,KAAa;QAClF,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,kBAAkB,CAAC,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACjJ,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5H,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACpE,OAAO,KAAK,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CACpF,MAAM,CAAC,QAAQ,CAAC,sBAAsB,EAAE,CAAC,KAAK,EAAE,EAAE,CACjD,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,WAAW,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAC5F,CACD,CAAC;IACH,CAAC,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Effect } from "effect";
|
|
2
2
|
import { ChildProcess, ChildProcessSpawner } from "effect/process";
|
|
3
|
-
import { PostgresCommandError } from "#PostgresCommandError.ts";
|
|
3
|
+
import { PostgresCommandError } from "#server/PostgresCommandError.ts";
|
|
4
4
|
export type CommandOptions = Pick<ChildProcess.CommandOptions, "env" | "extendEnv">;
|
|
5
5
|
export declare const runCommand: (command: string, args: readonly string[], options?: CommandOptions | undefined) => Effect.Effect<string, PostgresCommandError, ChildProcessSpawner.ChildProcessSpawner>;
|
|
6
6
|
export declare function missingCommand(error: PostgresCommandError): boolean;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runCommand.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/runCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAyB,MAAM,QAAQ,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAEvE,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,KAAK,GAAG,WAAW,CAAC,CAAC;AAEpF,eAAO,MAAM,UAAU,0KAoBrB,CAAC;AAEH,wBAAgB,cAAc,CAAC,KAAK,EAAE,oBAAoB,WAEzD"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Effect, PlatformError, Stream } from "effect";
|
|
2
2
|
import { ChildProcess, ChildProcessSpawner } from "effect/process";
|
|
3
|
-
import { PostgresCommandError } from "#PostgresCommandError.ts";
|
|
3
|
+
import { PostgresCommandError } from "#server/PostgresCommandError.ts";
|
|
4
4
|
export const runCommand = Effect.fn("LocalPostgres.runCommand")(function* (command, args, options = {}) {
|
|
5
5
|
const label = command === "docker" ? `docker ${args[0] ?? ""}`.trim() : command;
|
|
6
6
|
return yield* Effect.scoped(Effect.gen(function* () {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runCommand.js","sourceRoot":"","sources":["../../../src/server/adapters/runCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAIvE,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,EAAE,CAAC,0BAA0B,CAAC,CAAC,QAAQ,CAAC,EAAE,OAAe,EAAE,IAAuB,EAAE,OAAO,GAAmB,EAAE;IAChJ,MAAM,KAAK,GAAG,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;IAChF,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAC1B,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACnB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,mBAAmB,CAAC,mBAAmB,CAAC;QAC/D,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QACtG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAC/C,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,EACpH,EAAE,WAAW,EAAE,WAAW,EAAE,CAC5B,CAAC;QACF,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;YAChB,OAAO,KAAK,CAAC,CAAC,IAAI,oBAAoB,CAAC;gBACtC,OAAO,EAAE,KAAK;gBACd,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC;gBACtB,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,qBAAqB,IAAI,GAAG;aAChE,CAAC,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC,CAAC,CACF,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,oBAAoB,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/I,CAAC,CAAC,CAAC;AAEH,MAAM,UAAU,cAAc,CAAC,KAA2B;IACzD,OAAO,KAAK,CAAC,KAAK,YAAY,aAAa,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC;AACrG,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import { LocalPostgresError } from "#server/LocalPostgresError.ts";
|
|
3
|
+
export declare const assertLocalDatabase: (value: string, names: readonly string[]) => Effect.Effect<import("url").URL, LocalPostgresError, never>;
|
|
4
|
+
//# sourceMappingURL=assertLocalDatabase.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assertLocalDatabase.d.ts","sourceRoot":"","sources":["../../src/server/assertLocalDatabase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAEnE,eAAO,MAAM,mBAAmB,0GAY9B,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import { LocalPostgresError } from "#server/LocalPostgresError.ts";
|
|
3
|
+
export const assertLocalDatabase = Effect.fn("LocalPostgres.assertLocalDatabase")(function* (value, names) {
|
|
4
|
+
const message = `Use a local database on 127.0.0.1:55432 named ${names.join(" or ")}.`;
|
|
5
|
+
const url = yield* Effect.try({ catch: () => new LocalPostgresError({ message }), try: () => new URL(value) });
|
|
6
|
+
if (!(["postgres:", "postgresql:"].includes(url.protocol) && ["localhost", "127.0.0.1"].includes(url.hostname))
|
|
7
|
+
|| url.port !== "55432"
|
|
8
|
+
|| ["host", "hostaddr", "port", "dbname", "service"].some((key) => url.searchParams.has(key))
|
|
9
|
+
|| !names.includes(url.pathname.slice(1))) {
|
|
10
|
+
return yield* new LocalPostgresError({ message });
|
|
11
|
+
}
|
|
12
|
+
return url;
|
|
13
|
+
});
|
|
14
|
+
//# sourceMappingURL=assertLocalDatabase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assertLocalDatabase.js","sourceRoot":"","sources":["../../src/server/assertLocalDatabase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAEnE,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,EAAE,CAAC,mCAAmC,CAAC,CAAC,QAAQ,CAAC,EAAE,KAAa,EAAE,KAAwB;IACnI,MAAM,OAAO,GAAG,iDAAiD,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;IACvF,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC/G,IACC,CAAC,CAAC,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;WACxG,GAAG,CAAC,IAAI,KAAK,OAAO;WACpB,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;WAC1F,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EACxC,CAAC;QACF,OAAO,KAAK,CAAC,CAAC,IAAI,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,GAAG,CAAC;AACZ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Config } from "effect";
|
|
2
|
+
export type DockerEnvironment = Readonly<{
|
|
3
|
+
"DOCKER_CONTEXT"?: string | undefined;
|
|
4
|
+
"DOCKER_HOST"?: string | undefined;
|
|
5
|
+
}>;
|
|
6
|
+
export declare const dockerEnvironment: Config.Config<{
|
|
7
|
+
DOCKER_CONTEXT: string;
|
|
8
|
+
DOCKER_HOST: string;
|
|
9
|
+
}>;
|
|
10
|
+
//# sourceMappingURL=dockerEnvironment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dockerEnvironment.d.ts","sourceRoot":"","sources":["../../src/server/dockerEnvironment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC;IAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC,CAAC;AAExH,eAAO,MAAM,iBAAiB;;;EAG5B,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Config } from "effect";
|
|
2
|
+
export const dockerEnvironment = Config.all({
|
|
3
|
+
"DOCKER_CONTEXT": Config.String("DOCKER_CONTEXT").pipe(Config.withDefault("")),
|
|
4
|
+
"DOCKER_HOST": Config.String("DOCKER_HOST").pipe(Config.withDefault("")),
|
|
5
|
+
});
|
|
6
|
+
//# sourceMappingURL=dockerEnvironment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dockerEnvironment.js","sourceRoot":"","sources":["../../src/server/dockerEnvironment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIhC,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAC;IAC3C,gBAAgB,EAAE,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IAC9E,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;CACxE,CAAC,CAAC"}
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
import { Effect } from "effect";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { PostgresVersionMismatch } from "#PostgresVersionMismatch.ts";
|
|
2
|
+
import type { DockerEnvironment } from "#server/dockerEnvironment.ts";
|
|
3
|
+
import { LocalPostgresError } from "#server/LocalPostgresError.ts";
|
|
4
|
+
import { PostgresVersionMismatch } from "#server/PostgresVersionMismatch.ts";
|
|
5
5
|
export declare const LOCAL_SERVER = "postgresql://postgres:postgres@127.0.0.1:55432";
|
|
6
|
-
export declare const assertLocalDatabase: (value: string, names: readonly string[]) => Effect.Effect<import("url").URL, LocalPostgresError, never>;
|
|
7
6
|
export interface ReadinessOptions {
|
|
8
7
|
readonly attempts?: number;
|
|
9
8
|
readonly delayMillis?: number;
|
|
10
9
|
}
|
|
11
10
|
export declare function localPostgres(environment: DockerEnvironment, { attempts, delayMillis }?: ReadinessOptions): {
|
|
12
|
-
prepareDatabases: (values: readonly string[]) => Effect.Effect<undefined, LocalPostgresError | import("./PostgresCommandError.ts").PostgresCommandError | import("
|
|
11
|
+
prepareDatabases: (values: readonly string[]) => Effect.Effect<undefined, LocalPostgresError | import("./PostgresCommandError.ts").PostgresCommandError | import("./PostgresSettingError.ts").PostgresSettingError | PostgresVersionMismatch, import("effect/process/ChildProcessSpawner").ChildProcessSpawner>;
|
|
13
12
|
sql: (value: string | URL, query: string) => Effect.Effect<string, LocalPostgresError | import("./PostgresCommandError.ts").PostgresCommandError, import("effect/process/ChildProcessSpawner").ChildProcessSpawner>;
|
|
14
|
-
startPostgres: (connection?: any) => Effect.Effect<void, LocalPostgresError | import("./PostgresCommandError.ts").PostgresCommandError | import("
|
|
13
|
+
startPostgres: (connection?: any) => Effect.Effect<void, LocalPostgresError | import("./PostgresCommandError.ts").PostgresCommandError | import("./PostgresSettingError.ts").PostgresSettingError | PostgresVersionMismatch, import("effect/process/ChildProcessSpawner").ChildProcessSpawner>;
|
|
15
14
|
};
|
|
16
15
|
//# sourceMappingURL=localPostgres.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"localPostgres.d.ts","sourceRoot":"","sources":["../../src/server/localPostgres.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAY,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"localPostgres.d.ts","sourceRoot":"","sources":["../../src/server/localPostgres.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAY,MAAM,QAAQ,CAAC;AAO1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAE7E,eAAO,MAAM,YAAY,mDAAmD,CAAC;AAE7E,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,wBAAgB,aAAa,CAAC,WAAW,EAAE,iBAAiB,EAAE,EAAE,QAAa,EAAE,WAAkB,EAAE,GAAE,gBAAqB;;;;EAuDzH"}
|
|
@@ -1,23 +1,12 @@
|
|
|
1
1
|
import { Effect, Schedule } from "effect";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
2
|
+
import { docker } from "#server/adapters/docker.ts";
|
|
3
|
+
import { ensureConnections } from "#server/adapters/ensureConnections.ts";
|
|
4
|
+
import { startContainer } from "#server/adapters/localContainer.ts";
|
|
5
|
+
import { localSql } from "#server/adapters/localSql.ts";
|
|
6
|
+
import { assertLocalDatabase } from "#server/assertLocalDatabase.ts";
|
|
7
|
+
import { LocalPostgresError } from "#server/LocalPostgresError.ts";
|
|
8
|
+
import { PostgresVersionMismatch } from "#server/PostgresVersionMismatch.ts";
|
|
9
9
|
export const LOCAL_SERVER = "postgresql://postgres:postgres@127.0.0.1:55432";
|
|
10
|
-
export const assertLocalDatabase = Effect.fn("LocalPostgres.assertLocalDatabase")(function* (value, names) {
|
|
11
|
-
const message = `Use a local database on 127.0.0.1:55432 named ${names.join(" or ")}.`;
|
|
12
|
-
const url = yield* Effect.try({ catch: () => new LocalPostgresError({ message }), try: () => new URL(value) });
|
|
13
|
-
if (!(["postgres:", "postgresql:"].includes(url.protocol) && ["localhost", "127.0.0.1"].includes(url.hostname))
|
|
14
|
-
|| url.port !== "55432"
|
|
15
|
-
|| ["host", "hostaddr", "port", "dbname", "service"].some((key) => url.searchParams.has(key))
|
|
16
|
-
|| !names.includes(url.pathname.slice(1))) {
|
|
17
|
-
return yield* new LocalPostgresError({ message });
|
|
18
|
-
}
|
|
19
|
-
return url;
|
|
20
|
-
});
|
|
21
10
|
export function localPostgres(environment, { attempts = 30, delayMillis = 1000 } = {}) {
|
|
22
11
|
function localDocker(args, options) {
|
|
23
12
|
return docker(environment, args, options);
|
|
@@ -68,12 +57,4 @@ export function localPostgres(environment, { attempts = 30, delayMillis = 1000 }
|
|
|
68
57
|
});
|
|
69
58
|
return { prepareDatabases, sql, startPostgres };
|
|
70
59
|
}
|
|
71
|
-
function localSql(localDocker) {
|
|
72
|
-
return Effect.fn("LocalPostgres.sql")(function* (value, query) {
|
|
73
|
-
const parsed = yield* Effect.try({ catch: () => new LocalPostgresError({ message: "Invalid local database URL." }), try: () => new URL(value) });
|
|
74
|
-
const { url, options } = yield* clientConnection(yield* assertLocalDatabase(parsed.toString(), [parsed.pathname.slice(1)]));
|
|
75
|
-
const args = ["-X", "--set", "ON_ERROR_STOP=1", "-At", "-c", query];
|
|
76
|
-
return yield* runCommand("psql", [...args, "--dbname", url.toString()], options).pipe(Effect.catchTag("PostgresCommandError", (error) => missingCommand(error) ? sqlInContainer(localDocker, url, args, options) : Effect.fail(error)));
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
60
|
//# sourceMappingURL=localPostgres.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"localPostgres.js","sourceRoot":"","sources":["../../src/server/localPostgres.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"localPostgres.js","sourceRoot":"","sources":["../../src/server/localPostgres.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shivaedev/local-postgres",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"description": "Repeatable local PostgreSQL preparation with one shared persistent service",
|
|
5
5
|
"homepage": "https://github.com/ShivaeDev/platform/tree/main/packages/local-postgres#readme",
|
|
6
6
|
"bugs": {
|
|
@@ -17,9 +17,9 @@
|
|
|
17
17
|
"imports": {
|
|
18
18
|
"#test/*": "./src/test-support/*",
|
|
19
19
|
"#*.ts": {
|
|
20
|
-
"source": "./src
|
|
21
|
-
"types": "./dist
|
|
22
|
-
"default": "./dist
|
|
20
|
+
"source": "./src/*.ts",
|
|
21
|
+
"types": "./dist/*.d.ts",
|
|
22
|
+
"default": "./dist/*.js"
|
|
23
23
|
}
|
|
24
24
|
},
|
|
25
25
|
"exports": {
|
|
@@ -41,8 +41,8 @@
|
|
|
41
41
|
],
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"@effect/platform-node": "4.0.6",
|
|
44
|
-
"@shivaedev/quality": "0.
|
|
45
|
-
"@shivaedev/test-story": "0.
|
|
44
|
+
"@shivaedev/quality": "0.57.0",
|
|
45
|
+
"@shivaedev/test-story": "0.35.0",
|
|
46
46
|
"@types/node": "24.19.2",
|
|
47
47
|
"effect": "4.0.6",
|
|
48
48
|
"typescript": "7.0.2",
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Schema } from "effect";
|
|
2
|
+
|
|
3
|
+
export class PostgresSettingError extends Schema.TaggedError<PostgresSettingError>()("PostgresSettingError", {
|
|
4
|
+
cause: Schema.Unknown,
|
|
5
|
+
container: Schema.Literal("development-postgres"),
|
|
6
|
+
setting: Schema.Literal("max_connections"),
|
|
7
|
+
}) {
|
|
8
|
+
override get message() {
|
|
9
|
+
return "Could not set max_connections to at least 500 in container development-postgres.";
|
|
10
|
+
}
|
|
11
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Effect } from "effect";
|
|
2
|
-
import { LocalPostgresError } from "#LocalPostgresError.ts";
|
|
3
|
-
import type { CommandOptions } from "
|
|
2
|
+
import { LocalPostgresError } from "#server/LocalPostgresError.ts";
|
|
3
|
+
import type { CommandOptions } from "./runCommand.ts";
|
|
4
4
|
|
|
5
5
|
export const clientConnection = Effect.fn("LocalPostgres.clientConnection")(function* (value: URL, options: CommandOptions = {}) {
|
|
6
6
|
const url = new URL(value);
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { Effect } from "effect";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
export type DockerEnvironment = Readonly<{ "DOCKER_CONTEXT"?: string | undefined; "DOCKER_HOST"?: string | undefined }>;
|
|
2
|
+
import type { DockerEnvironment } from "#server/dockerEnvironment.ts";
|
|
3
|
+
import { LocalPostgresError } from "#server/LocalPostgresError.ts";
|
|
4
|
+
import { type CommandOptions, runCommand } from "./runCommand.ts";
|
|
6
5
|
|
|
7
6
|
export const docker = Effect.fn("LocalPostgres.docker")(function* (
|
|
8
7
|
environment: DockerEnvironment,
|
|
@@ -1,20 +1,11 @@
|
|
|
1
|
-
import { Effect
|
|
1
|
+
import { Effect } from "effect";
|
|
2
2
|
import type { ChildProcessSpawner } from "effect/process";
|
|
3
|
-
import { LocalPostgresError } from "#LocalPostgresError.ts";
|
|
4
|
-
import {
|
|
5
|
-
import
|
|
6
|
-
import type {
|
|
7
|
-
import type {
|
|
8
|
-
|
|
9
|
-
export class PostgresSettingError extends Schema.TaggedError<PostgresSettingError>()("PostgresSettingError", {
|
|
10
|
-
cause: Schema.Unknown,
|
|
11
|
-
container: Schema.Literal("development-postgres"),
|
|
12
|
-
setting: Schema.Literal("max_connections"),
|
|
13
|
-
}) {
|
|
14
|
-
override get message() {
|
|
15
|
-
return "Could not set max_connections to at least 500 in container development-postgres.";
|
|
16
|
-
}
|
|
17
|
-
}
|
|
3
|
+
import { LocalPostgresError } from "#server/LocalPostgresError.ts";
|
|
4
|
+
import type { PostgresCommandError } from "#server/PostgresCommandError.ts";
|
|
5
|
+
import { PostgresSettingError } from "#server/PostgresSettingError.ts";
|
|
6
|
+
import type { PostgresVersionMismatch } from "#server/PostgresVersionMismatch.ts";
|
|
7
|
+
import type { docker as localDocker } from "./docker.ts";
|
|
8
|
+
import { POSTGRES_IMAGE } from "./localContainer.ts";
|
|
18
9
|
|
|
19
10
|
type Query = (query: string) => Effect.Effect<string, LocalPostgresError | PostgresCommandError, ChildProcessSpawner.ChildProcessSpawner>;
|
|
20
11
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { Effect } from "effect";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
6
|
-
import type { CommandOptions } from "
|
|
2
|
+
import { LocalPostgresError } from "#server/LocalPostgresError.ts";
|
|
3
|
+
import { PostgresCommandError } from "#server/PostgresCommandError.ts";
|
|
4
|
+
import { clientConnection } from "./clientConnection.ts";
|
|
5
|
+
import type { docker as runDocker } from "./docker.ts";
|
|
6
|
+
import type { CommandOptions } from "./runCommand.ts";
|
|
7
7
|
|
|
8
8
|
export const POSTGRES_IMAGE = "postgres:18.6-alpine@sha256:77f585114c32fbca283dc835b0596f4e52b51b4c6662d7810b2f4084f60a1873";
|
|
9
9
|
const CONTAINER = "development-postgres";
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import { assertLocalDatabase } from "#server/assertLocalDatabase.ts";
|
|
3
|
+
import { LocalPostgresError } from "#server/LocalPostgresError.ts";
|
|
4
|
+
import { clientConnection } from "./clientConnection.ts";
|
|
5
|
+
import type { docker } from "./docker.ts";
|
|
6
|
+
import { sqlInContainer } from "./localContainer.ts";
|
|
7
|
+
import { type CommandOptions, missingCommand, runCommand } from "./runCommand.ts";
|
|
8
|
+
|
|
9
|
+
export function localSql(localDocker: (args: readonly string[], options?: CommandOptions) => ReturnType<typeof docker>) {
|
|
10
|
+
return Effect.fn("LocalPostgres.sql")(function* (value: string | URL, query: string) {
|
|
11
|
+
const parsed = yield* Effect.try({ catch: () => new LocalPostgresError({ message: "Invalid local database URL." }), try: () => new URL(value) });
|
|
12
|
+
const { url, options } = yield* clientConnection(yield* assertLocalDatabase(parsed.toString(), [parsed.pathname.slice(1)]));
|
|
13
|
+
const args = ["-X", "--set", "ON_ERROR_STOP=1", "-At", "-c", query];
|
|
14
|
+
return yield* runCommand("psql", [...args, "--dbname", url.toString()], options).pipe(
|
|
15
|
+
Effect.catchTag("PostgresCommandError", (error) =>
|
|
16
|
+
missingCommand(error) ? sqlInContainer(localDocker, url, args, options) : Effect.fail(error),
|
|
17
|
+
),
|
|
18
|
+
);
|
|
19
|
+
});
|
|
20
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Effect, PlatformError, Stream } from "effect";
|
|
2
2
|
import { ChildProcess, ChildProcessSpawner } from "effect/process";
|
|
3
|
-
import { PostgresCommandError } from "#PostgresCommandError.ts";
|
|
3
|
+
import { PostgresCommandError } from "#server/PostgresCommandError.ts";
|
|
4
4
|
|
|
5
5
|
export type CommandOptions = Pick<ChildProcess.CommandOptions, "env" | "extendEnv">;
|
|
6
6
|
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import { LocalPostgresError } from "#server/LocalPostgresError.ts";
|
|
3
|
+
|
|
4
|
+
export const assertLocalDatabase = Effect.fn("LocalPostgres.assertLocalDatabase")(function* (value: string, names: readonly string[]) {
|
|
5
|
+
const message = `Use a local database on 127.0.0.1:55432 named ${names.join(" or ")}.`;
|
|
6
|
+
const url = yield* Effect.try({ catch: () => new LocalPostgresError({ message }), try: () => new URL(value) });
|
|
7
|
+
if (
|
|
8
|
+
!(["postgres:", "postgresql:"].includes(url.protocol) && ["localhost", "127.0.0.1"].includes(url.hostname))
|
|
9
|
+
|| url.port !== "55432"
|
|
10
|
+
|| ["host", "hostaddr", "port", "dbname", "service"].some((key) => url.searchParams.has(key))
|
|
11
|
+
|| !names.includes(url.pathname.slice(1))
|
|
12
|
+
) {
|
|
13
|
+
return yield* new LocalPostgresError({ message });
|
|
14
|
+
}
|
|
15
|
+
return url;
|
|
16
|
+
});
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Config } from "effect";
|
|
2
|
+
|
|
3
|
+
export type DockerEnvironment = Readonly<{ "DOCKER_CONTEXT"?: string | undefined; "DOCKER_HOST"?: string | undefined }>;
|
|
4
|
+
|
|
5
|
+
export const dockerEnvironment = Config.all({
|
|
6
|
+
"DOCKER_CONTEXT": Config.String("DOCKER_CONTEXT").pipe(Config.withDefault("")),
|
|
7
|
+
"DOCKER_HOST": Config.String("DOCKER_HOST").pipe(Config.withDefault("")),
|
|
8
|
+
});
|
|
@@ -1,28 +1,16 @@
|
|
|
1
1
|
import { Effect, Schedule } from "effect";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
7
|
-
import {
|
|
8
|
-
import
|
|
2
|
+
import { docker } from "#server/adapters/docker.ts";
|
|
3
|
+
import { ensureConnections } from "#server/adapters/ensureConnections.ts";
|
|
4
|
+
import { startContainer } from "#server/adapters/localContainer.ts";
|
|
5
|
+
import { localSql } from "#server/adapters/localSql.ts";
|
|
6
|
+
import type { CommandOptions } from "#server/adapters/runCommand.ts";
|
|
7
|
+
import { assertLocalDatabase } from "#server/assertLocalDatabase.ts";
|
|
8
|
+
import type { DockerEnvironment } from "#server/dockerEnvironment.ts";
|
|
9
|
+
import { LocalPostgresError } from "#server/LocalPostgresError.ts";
|
|
10
|
+
import { PostgresVersionMismatch } from "#server/PostgresVersionMismatch.ts";
|
|
9
11
|
|
|
10
12
|
export const LOCAL_SERVER = "postgresql://postgres:postgres@127.0.0.1:55432";
|
|
11
13
|
|
|
12
|
-
export const assertLocalDatabase = Effect.fn("LocalPostgres.assertLocalDatabase")(function* (value: string, names: readonly string[]) {
|
|
13
|
-
const message = `Use a local database on 127.0.0.1:55432 named ${names.join(" or ")}.`;
|
|
14
|
-
const url = yield* Effect.try({ catch: () => new LocalPostgresError({ message }), try: () => new URL(value) });
|
|
15
|
-
if (
|
|
16
|
-
!(["postgres:", "postgresql:"].includes(url.protocol) && ["localhost", "127.0.0.1"].includes(url.hostname))
|
|
17
|
-
|| url.port !== "55432"
|
|
18
|
-
|| ["host", "hostaddr", "port", "dbname", "service"].some((key) => url.searchParams.has(key))
|
|
19
|
-
|| !names.includes(url.pathname.slice(1))
|
|
20
|
-
) {
|
|
21
|
-
return yield* new LocalPostgresError({ message });
|
|
22
|
-
}
|
|
23
|
-
return url;
|
|
24
|
-
});
|
|
25
|
-
|
|
26
14
|
export interface ReadinessOptions {
|
|
27
15
|
readonly attempts?: number;
|
|
28
16
|
readonly delayMillis?: number;
|
|
@@ -84,16 +72,3 @@ export function localPostgres(environment: DockerEnvironment, { attempts = 30, d
|
|
|
84
72
|
});
|
|
85
73
|
return { prepareDatabases, sql, startPostgres };
|
|
86
74
|
}
|
|
87
|
-
|
|
88
|
-
function localSql(localDocker: (args: readonly string[], options?: CommandOptions) => ReturnType<typeof docker>) {
|
|
89
|
-
return Effect.fn("LocalPostgres.sql")(function* (value: string | URL, query: string) {
|
|
90
|
-
const parsed = yield* Effect.try({ catch: () => new LocalPostgresError({ message: "Invalid local database URL." }), try: () => new URL(value) });
|
|
91
|
-
const { url, options } = yield* clientConnection(yield* assertLocalDatabase(parsed.toString(), [parsed.pathname.slice(1)]));
|
|
92
|
-
const args = ["-X", "--set", "ON_ERROR_STOP=1", "-At", "-c", query];
|
|
93
|
-
return yield* runCommand("psql", [...args, "--dbname", url.toString()], options).pipe(
|
|
94
|
-
Effect.catchTag("PostgresCommandError", (error) =>
|
|
95
|
-
missingCommand(error) ? sqlInContainer(localDocker, url, args, options) : Effect.fail(error),
|
|
96
|
-
),
|
|
97
|
-
);
|
|
98
|
-
});
|
|
99
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"clientConnection.d.ts","sourceRoot":"","sources":["../../src/server/clientConnection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,eAAO,MAAM,gBAAgB;;;;;;;;6BAe3B,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"clientConnection.js","sourceRoot":"","sources":["../../src/server/clientConnection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAG5D,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,EAAE,CAAC,gCAAgC,CAAC,CAAC,QAAQ,CAAC,EAAE,KAAU,EAAE,OAAO,GAAmB,EAAE;IAC9H,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IAC3B,6CAA6C;IAC7C,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;QAClC,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,kBAAkB,CAAC,EAAE,OAAO,EAAE,yCAAyC,EAAE,CAAC;QAC3F,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC;KAC/H,CAAC,CAAC;IACH,GAAG,CAAC,QAAQ,GAAG,EAAE,CAAC;IAClB,KAAK,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,kBAAkB,EAAE,cAAc,EAAE,WAAW,CAAC,EAAE,CAAC;QAC3F,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAC9C,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC;AAChI,CAAC,CAAC,CAAC"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { Effect, Schema } from "effect";
|
|
2
|
-
import type { ChildProcessSpawner } from "effect/process";
|
|
3
|
-
import { LocalPostgresError } from "#LocalPostgresError.ts";
|
|
4
|
-
import type { docker as localDocker } from "#localDocker.ts";
|
|
5
|
-
import type { PostgresCommandError } from "#PostgresCommandError.ts";
|
|
6
|
-
import type { PostgresVersionMismatch } from "#PostgresVersionMismatch.ts";
|
|
7
|
-
declare const PostgresSettingError_base: Schema.Class<PostgresSettingError, Schema.TaggedStruct<"PostgresSettingError", {
|
|
8
|
-
readonly cause: Schema.Unknown;
|
|
9
|
-
readonly container: Schema.Literal<"development-postgres">;
|
|
10
|
-
readonly setting: Schema.Literal<"max_connections">;
|
|
11
|
-
}>, import("effect/Cause").YieldableError>;
|
|
12
|
-
export declare class PostgresSettingError extends PostgresSettingError_base {
|
|
13
|
-
get message(): string;
|
|
14
|
-
}
|
|
15
|
-
type Query = (query: string) => Effect.Effect<string, LocalPostgresError | PostgresCommandError, ChildProcessSpawner.ChildProcessSpawner>;
|
|
16
|
-
export declare const ensureConnections: (docker: (args: readonly string[]) => ReturnType<typeof localDocker>, sql: Query, ready: () => Effect.Effect<void, LocalPostgresError | PostgresCommandError | PostgresVersionMismatch, ChildProcessSpawner.ChildProcessSpawner>) => Effect.Effect<void, PostgresSettingError, ChildProcessSpawner.ChildProcessSpawner>;
|
|
17
|
-
export {};
|
|
18
|
-
//# sourceMappingURL=localConnections.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"localConnections.d.ts","sourceRoot":"","sources":["../../src/server/localConnections.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO,KAAK,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;;;;;;AAE3E,qBAAa,oBAAqB,SAAQ,yBAIxC;IACD,IAAa,OAAO,WAEnB;CACD;AAED,KAAK,KAAK,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,GAAG,oBAAoB,EAAE,mBAAmB,CAAC,mBAAmB,CAAC,CAAC;AAE1I,eAAO,MAAM,iBAAiB,kBACd,SAAS,MAAM,EAAE,KAAK,UAAU,CAAC,OAAO,WAAW,CAAC,2BAEtD,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,kBAAkB,GAAG,oBAAoB,GAAG,uBAAuB,EAAE,mBAAmB,CAAC,mBAAmB,CAAC,uFA6B7I,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"localConnections.js","sourceRoot":"","sources":["../../src/server/localConnections.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAExC,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAKpD,MAAM,OAAO,oBAAqB,SAAQ,MAAM,CAAC,WAAW,EAAwB,CAAC,sBAAsB,EAAE;IAC5G,KAAK,EAAE,MAAM,CAAC,OAAO;IACrB,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC;IACjD,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC;CAC1C,CAAC;IACD,IAAa,OAAO;QACnB,OAAO,kFAAkF,CAAC;IAC3F,CAAC;CACD;AAID,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,EAAE,CAAC,iCAAiC,CAAC,CAAC,QAAQ,CAAC,EACtF,MAAmE,EACnE,GAAU,EACV,KAA8I;IAE9I,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC1B,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC;QAC3D,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;YAChD,OAAO,KAAK,CAAC,CAAC,IAAI,kBAAkB,CAAC,EAAE,OAAO,EAAE,uDAAuD,EAAE,CAAC,CAAC;QAC5G,CAAC;QACD,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC;YACpB,OAAO;QACR,CAAC;QACD,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,UAAU,EAAE,8BAA8B,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CACzI,MAAM,CAAC,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CACjE,CAAC;QACF,IAAI,CAAC,OAAO,EAAE,CAAC;YACd,OAAO;QACR,CAAC;QACD,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,mBAAmB,EAAE,sBAAsB,CAAC,CAAC,CAAC;QAClG,IAAI,KAAK,KAAK,cAAc,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC,CAAC,IAAI,kBAAkB,CAAC;gBACpC,OAAO,EAAE,sGAAsG;aAC/G,CAAC,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;QACrD,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC,CAAC;QACnD,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAC1D,OAAO,KAAK,CAAC,CAAC,IAAI,kBAAkB,CAAC,EAAE,OAAO,EAAE,4DAA4D,EAAE,CAAC,CAAC;QACjH,CAAC;IACF,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,oBAAoB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,sBAAsB,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC;AACzI,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"localContainer.d.ts","sourceRoot":"","sources":["../../src/server/localContainer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,MAAM,IAAI,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,eAAO,MAAM,cAAc,iGAAiG,CAAC;AAE7H,KAAK,MAAM,GAAG,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,cAAc,KAAK,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC;AAElG,eAAO,MAAM,cAAc,oNAmBzB,CAAC;AAEH,eAAO,MAAM,cAAc,2JA2BzB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"localContainer.js","sourceRoot":"","sources":["../../src/server/localContainer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { Effect } from "effect";
|
|
2
|
-
import { LocalPostgresError } from "#LocalPostgresError.ts";
|
|
3
|
-
import { type CommandOptions } from "#runCommand.ts";
|
|
4
|
-
export type DockerEnvironment = Readonly<{
|
|
5
|
-
"DOCKER_CONTEXT"?: string | undefined;
|
|
6
|
-
"DOCKER_HOST"?: string | undefined;
|
|
7
|
-
}>;
|
|
8
|
-
export declare const docker: (environment: Readonly<{
|
|
9
|
-
DOCKER_CONTEXT?: string | undefined;
|
|
10
|
-
DOCKER_HOST?: string | undefined;
|
|
11
|
-
}>, args: readonly string[], options?: CommandOptions | undefined) => Effect.Effect<string, LocalPostgresError | import("./PostgresCommandError.ts").PostgresCommandError, import("effect/process/ChildProcessSpawner").ChildProcessSpawner>;
|
|
12
|
-
//# sourceMappingURL=localDocker.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"localDocker.d.ts","sourceRoot":"","sources":["../../src/server/localDocker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,KAAK,cAAc,EAAc,MAAM,gBAAgB,CAAC;AAEjE,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC;IAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC,CAAC;AAExH,eAAO,MAAM,MAAM;qBAF2C,MAAM,GAAG,SAAS;kBAAkB,MAAM,GAAG,SAAS;4OA8BlH,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"localDocker.js","sourceRoot":"","sources":["../../src/server/localDocker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAuB,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAIjE,MAAM,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC,sBAAsB,CAAC,CAAC,QAAQ,CAAC,EAChE,WAA8B,EAC9B,IAAuB,EACvB,OAAO,GAAmB,EAAE;IAE5B,MAAM,OAAO,GAAG,WAAW,CAAC,cAAc,CAAC;IAC3C,MAAM,IAAI,GAAG,WAAW,CAAC,WAAW,CAAC;IACrC,IAAK,CAAC,gBAAgB,EAAE,aAAa,CAAW,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QAC7H,OAAO,KAAK,CAAC,CAAC,IAAI,kBAAkB,CAAC,EAAE,OAAO,EAAE,yEAAyE,EAAE,CAAC,CAAC;IAC9H,CAAC;IACD,MAAM,QAAQ,GAAG;QAChB,GAAG,OAAO;QACV,GAAG,EAAE,EAAE,GAAG,WAAW,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,gBAAgB,EAAE,OAAO,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,IAAI,EAAE,EAAE;QACnG,SAAS,EAAE,IAAI;KACf,CAAC;IACF,MAAM,QAAQ,GACb,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC;WACf,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,4BAA4B,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC7I,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,kBAAkB,CAAC,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC9I,IACC,CAAC,CACA,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;WACrF,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAC1F,EACA,CAAC;QACF,OAAO,KAAK,CAAC,CAAC,IAAI,kBAAkB,CAAC,EAAE,OAAO,EAAE,qFAAqF,EAAE,CAAC,CAAC;IAC1I,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,GAAG,QAAQ,EAAE,GAAG,EAAE,EAAE,GAAG,QAAQ,CAAC,GAAG,EAAE,gBAAgB,EAAE,EAAE,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;AACpI,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runCommand.d.ts","sourceRoot":"","sources":["../../src/server/runCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAyB,MAAM,QAAQ,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,KAAK,GAAG,WAAW,CAAC,CAAC;AAEpF,eAAO,MAAM,UAAU,0KAoBrB,CAAC;AAEH,wBAAgB,cAAc,CAAC,KAAK,EAAE,oBAAoB,WAEzD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runCommand.js","sourceRoot":"","sources":["../../src/server/runCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAIhE,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,EAAE,CAAC,0BAA0B,CAAC,CAAC,QAAQ,CAAC,EAAE,OAAe,EAAE,IAAuB,EAAE,OAAO,GAAmB,EAAE;IAChJ,MAAM,KAAK,GAAG,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;IAChF,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAC1B,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACnB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,mBAAmB,CAAC,mBAAmB,CAAC;QAC/D,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QACtG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAC/C,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,EACpH,EAAE,WAAW,EAAE,WAAW,EAAE,CAC5B,CAAC;QACF,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;YAChB,OAAO,KAAK,CAAC,CAAC,IAAI,oBAAoB,CAAC;gBACtC,OAAO,EAAE,KAAK;gBACd,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC;gBACtB,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,qBAAqB,IAAI,GAAG;aAChE,CAAC,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC,CAAC,CACF,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,oBAAoB,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/I,CAAC,CAAC,CAAC;AAEH,MAAM,UAAU,cAAc,CAAC,KAA2B;IACzD,OAAO,KAAK,CAAC,KAAK,YAAY,aAAa,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC;AACrG,CAAC"}
|