rightsize 0.5.0 → 0.6.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 +14 -9
- package/dist/backend-msb/agent-endpoint.d.ts +25 -0
- package/dist/backend-msb/agent-endpoint.d.ts.map +1 -0
- package/dist/backend-msb/agent-endpoint.js +27 -0
- package/dist/backend-msb/agent-endpoint.js.map +1 -0
- package/dist/backend-msb/backend.d.ts +47 -6
- package/dist/backend-msb/backend.d.ts.map +1 -1
- package/dist/backend-msb/backend.js +123 -10
- package/dist/backend-msb/backend.js.map +1 -1
- package/dist/backend-msb/commands.d.ts +2 -2
- package/dist/backend-msb/commands.d.ts.map +1 -1
- package/dist/backend-msb/commands.js +22 -7
- package/dist/backend-msb/commands.js.map +1 -1
- package/dist/backend-msb/platform.js +2 -2
- package/dist/backend-msb/provisioner.d.ts +1 -1
- package/dist/backend-msb/provisioner.js +1 -1
- package/dist/backend-msb/snapshot-import.d.ts +4 -4
- package/dist/backend-msb/snapshot-import.js +4 -4
- package/dist/backend-msb/snapshot-list.d.ts +3 -3
- package/dist/backend-msb/snapshot-list.js +3 -3
- package/dist/backend-msb/snapshot-not-found.d.ts +1 -1
- package/dist/backend-msb/snapshot-not-found.js +1 -1
- package/dist/backend-msb/snapshot-save-fsync.d.ts +55 -0
- package/dist/backend-msb/snapshot-save-fsync.d.ts.map +1 -0
- package/dist/backend-msb/snapshot-save-fsync.js +79 -0
- package/dist/backend-msb/snapshot-save-fsync.js.map +1 -0
- package/dist/core/backend.d.ts +2 -2
- package/dist/core/checkpoint/api.d.ts +1 -1
- package/dist/core/checkpoint/api.js +1 -1
- package/dist/core/docker-image-name.d.ts +58 -0
- package/dist/core/docker-image-name.d.ts.map +1 -0
- package/dist/core/docker-image-name.js +127 -0
- package/dist/core/docker-image-name.js.map +1 -0
- package/dist/core/errors.d.ts +21 -0
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +26 -0
- package/dist/core/errors.js.map +1 -1
- package/dist/core/generic-container.d.ts +7 -1
- package/dist/core/generic-container.d.ts.map +1 -1
- package/dist/core/generic-container.js +8 -2
- package/dist/core/generic-container.js.map +1 -1
- package/dist/core/model.d.ts +9 -4
- package/dist/core/model.d.ts.map +1 -1
- package/dist/index.d.ts +8 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -5
- package/dist/index.js.map +1 -1
- package/dist/modules/arango.d.ts +11 -3
- package/dist/modules/arango.d.ts.map +1 -1
- package/dist/modules/arango.js +14 -4
- package/dist/modules/arango.js.map +1 -1
- package/dist/modules/cassandra.d.ts +12 -3
- package/dist/modules/cassandra.d.ts.map +1 -1
- package/dist/modules/cassandra.js +15 -4
- package/dist/modules/cassandra.js.map +1 -1
- package/dist/modules/clickhouse.d.ts +8 -2
- package/dist/modules/clickhouse.d.ts.map +1 -1
- package/dist/modules/clickhouse.js +11 -3
- package/dist/modules/clickhouse.js.map +1 -1
- package/dist/modules/elasticsearch.d.ts +49 -0
- package/dist/modules/elasticsearch.d.ts.map +1 -0
- package/dist/modules/elasticsearch.js +66 -0
- package/dist/modules/elasticsearch.js.map +1 -0
- package/dist/modules/flink.d.ts +8 -2
- package/dist/modules/flink.d.ts.map +1 -1
- package/dist/modules/flink.js +13 -4
- package/dist/modules/flink.js.map +1 -1
- package/dist/modules/floci.d.ts +30 -6
- package/dist/modules/floci.d.ts.map +1 -1
- package/dist/modules/floci.js +39 -9
- package/dist/modules/floci.js.map +1 -1
- package/dist/modules/index.d.ts +3 -1
- package/dist/modules/index.d.ts.map +1 -1
- package/dist/modules/index.js +3 -1
- package/dist/modules/index.js.map +1 -1
- package/dist/modules/kafka.d.ts +10 -3
- package/dist/modules/kafka.d.ts.map +1 -1
- package/dist/modules/kafka.js +13 -4
- package/dist/modules/kafka.js.map +1 -1
- package/dist/modules/keycloak.d.ts +10 -2
- package/dist/modules/keycloak.d.ts.map +1 -1
- package/dist/modules/keycloak.js +13 -3
- package/dist/modules/keycloak.js.map +1 -1
- package/dist/modules/mariadb.d.ts +8 -2
- package/dist/modules/mariadb.d.ts.map +1 -1
- package/dist/modules/mariadb.js +11 -3
- package/dist/modules/mariadb.js.map +1 -1
- package/dist/modules/memcached.d.ts +12 -3
- package/dist/modules/memcached.d.ts.map +1 -1
- package/dist/modules/memcached.js +15 -4
- package/dist/modules/memcached.js.map +1 -1
- package/dist/modules/minio.d.ts +7 -2
- package/dist/modules/minio.d.ts.map +1 -1
- package/dist/modules/minio.js +10 -3
- package/dist/modules/minio.js.map +1 -1
- package/dist/modules/mongodb.d.ts +7 -2
- package/dist/modules/mongodb.d.ts.map +1 -1
- package/dist/modules/mongodb.js +16 -4
- package/dist/modules/mongodb.js.map +1 -1
- package/dist/modules/mysql.d.ts +8 -2
- package/dist/modules/mysql.d.ts.map +1 -1
- package/dist/modules/mysql.js +11 -3
- package/dist/modules/mysql.js.map +1 -1
- package/dist/modules/neo4j.d.ts +7 -2
- package/dist/modules/neo4j.d.ts.map +1 -1
- package/dist/modules/neo4j.js +10 -3
- package/dist/modules/neo4j.js.map +1 -1
- package/dist/modules/pinot.d.ts +7 -2
- package/dist/modules/pinot.d.ts.map +1 -1
- package/dist/modules/pinot.js +10 -3
- package/dist/modules/pinot.js.map +1 -1
- package/dist/modules/postgres.d.ts +11 -2
- package/dist/modules/postgres.d.ts.map +1 -1
- package/dist/modules/postgres.js +14 -3
- package/dist/modules/postgres.js.map +1 -1
- package/dist/modules/qdrant.d.ts +26 -0
- package/dist/modules/qdrant.d.ts.map +1 -0
- package/dist/modules/qdrant.js +38 -0
- package/dist/modules/qdrant.js.map +1 -0
- package/dist/modules/rabbitmq.d.ts +11 -2
- package/dist/modules/rabbitmq.d.ts.map +1 -1
- package/dist/modules/rabbitmq.js +14 -3
- package/dist/modules/rabbitmq.js.map +1 -1
- package/dist/modules/redis.d.ts +8 -2
- package/dist/modules/redis.d.ts.map +1 -1
- package/dist/modules/redis.js +11 -3
- package/dist/modules/redis.js.map +1 -1
- package/dist/modules/redpanda.d.ts +15 -6
- package/dist/modules/redpanda.d.ts.map +1 -1
- package/dist/modules/redpanda.js +18 -7
- package/dist/modules/redpanda.js.map +1 -1
- package/dist/modules/spring-cloud-config.d.ts +7 -2
- package/dist/modules/spring-cloud-config.d.ts.map +1 -1
- package/dist/modules/spring-cloud-config.js +10 -3
- package/dist/modules/spring-cloud-config.js.map +1 -1
- package/dist/modules/valkey.d.ts +9 -2
- package/dist/modules/valkey.d.ts.map +1 -1
- package/dist/modules/valkey.js +12 -3
- package/dist/modules/valkey.js.map +1 -1
- package/dist/modules/wiremock.d.ts +7 -2
- package/dist/modules/wiremock.d.ts.map +1 -1
- package/dist/modules/wiremock.js +10 -3
- package/dist/modules/wiremock.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { GenericContainer } from "../core/generic-container.js";
|
|
2
|
+
import { DockerImageName } from "../core/docker-image-name.js";
|
|
3
|
+
/**
|
|
4
|
+
* A single-node Elasticsearch container.
|
|
5
|
+
*
|
|
6
|
+
* ### No no-arg constructor — Elastic publishes no floating tag
|
|
7
|
+
*
|
|
8
|
+
* Every other module in this library floats to the image's own `:latest`
|
|
9
|
+
* (or an equivalent) when no image is given, so the version tracks upstream
|
|
10
|
+
* rather than this library's release cycle. Elasticsearch has no such tag to
|
|
11
|
+
* float to: `elasticsearch:latest`, `elasticsearch:9`, and `elasticsearch:8`
|
|
12
|
+
* are all 404 on Docker Hub — Elastic publishes only full version tags
|
|
13
|
+
* (verified against `elasticsearch:9.4.4`, arm64). An explicit image is
|
|
14
|
+
* therefore required on both the constructor and `start()`; there is no
|
|
15
|
+
* default to fall back to.
|
|
16
|
+
*
|
|
17
|
+
* ### Single-node config
|
|
18
|
+
*
|
|
19
|
+
* `discovery.type=single-node` skips the cluster-formation bootstrap
|
|
20
|
+
* checks a multi-node deployment would otherwise wait on;
|
|
21
|
+
* `xpack.security.enabled=false` disables TLS/auth so the REST API answers
|
|
22
|
+
* plain HTTP with no client-side certificate or credential setup;
|
|
23
|
+
* `ES_JAVA_OPTS=-Xms512m -Xmx512m` sizes the JVM heap down for a test boot.
|
|
24
|
+
*
|
|
25
|
+
* Exposes both the REST API (9200, what `restUrl` wraps) and the transport
|
|
26
|
+
* port (9300, published but not wrapped by any helper here).
|
|
27
|
+
*
|
|
28
|
+
* ### Memory and readiness
|
|
29
|
+
*
|
|
30
|
+
* `withMemoryLimit(2560)` — measured ~1.1 GB resident in a 2.48 GB guest at
|
|
31
|
+
* rest. Readiness is a plain HTTP 200 on `/`, reached in 27s on a quiet
|
|
32
|
+
* local machine; 300s absorbs a loaded CI runner without masking a real
|
|
33
|
+
* hang.
|
|
34
|
+
*
|
|
35
|
+
* **Cluster health never reaches `green` on a single node** — replica
|
|
36
|
+
* shards (Elasticsearch's own default is one replica per index) have
|
|
37
|
+
* nowhere to be assigned, so `/_cluster/health` reports `yellow`
|
|
38
|
+
* indefinitely. A readiness check that waited for `green` would hang until
|
|
39
|
+
* its own timeout; this module deliberately waits on the plain HTTP probe
|
|
40
|
+
* above instead.
|
|
41
|
+
*/
|
|
42
|
+
export declare class ElasticsearchContainer extends GenericContainer {
|
|
43
|
+
constructor(image: string | DockerImageName);
|
|
44
|
+
/** No default image — see the class doc for why Elasticsearch has no floating tag to fall back to. */
|
|
45
|
+
static start(image: string | DockerImageName): Promise<ElasticsearchContainer>;
|
|
46
|
+
/** The REST API's base URL for the running container. */
|
|
47
|
+
get restUrl(): string;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=elasticsearch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"elasticsearch.d.ts","sourceRoot":"","sources":["../../src/modules/elasticsearch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAO/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,qBAAa,sBAAuB,SAAQ,gBAAgB;gBAC9C,KAAK,EAAE,MAAM,GAAG,eAAe;IAU3C,sGAAsG;WAChF,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAI7F,yDAAyD;IACzD,IAAI,OAAO,IAAI,MAAM,CAEpB;CACF"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { GenericContainer } from "../core/generic-container.js";
|
|
2
|
+
import { Wait } from "../core/wait.js";
|
|
3
|
+
import { DockerImageName } from "../core/docker-image-name.js";
|
|
4
|
+
const REST_PORT = 9200;
|
|
5
|
+
const TRANSPORT_PORT = 9300;
|
|
6
|
+
const STARTUP_TIMEOUT_MS = 300_000;
|
|
7
|
+
const EXPECTED_REPOSITORY = "elasticsearch";
|
|
8
|
+
/**
|
|
9
|
+
* A single-node Elasticsearch container.
|
|
10
|
+
*
|
|
11
|
+
* ### No no-arg constructor — Elastic publishes no floating tag
|
|
12
|
+
*
|
|
13
|
+
* Every other module in this library floats to the image's own `:latest`
|
|
14
|
+
* (or an equivalent) when no image is given, so the version tracks upstream
|
|
15
|
+
* rather than this library's release cycle. Elasticsearch has no such tag to
|
|
16
|
+
* float to: `elasticsearch:latest`, `elasticsearch:9`, and `elasticsearch:8`
|
|
17
|
+
* are all 404 on Docker Hub — Elastic publishes only full version tags
|
|
18
|
+
* (verified against `elasticsearch:9.4.4`, arm64). An explicit image is
|
|
19
|
+
* therefore required on both the constructor and `start()`; there is no
|
|
20
|
+
* default to fall back to.
|
|
21
|
+
*
|
|
22
|
+
* ### Single-node config
|
|
23
|
+
*
|
|
24
|
+
* `discovery.type=single-node` skips the cluster-formation bootstrap
|
|
25
|
+
* checks a multi-node deployment would otherwise wait on;
|
|
26
|
+
* `xpack.security.enabled=false` disables TLS/auth so the REST API answers
|
|
27
|
+
* plain HTTP with no client-side certificate or credential setup;
|
|
28
|
+
* `ES_JAVA_OPTS=-Xms512m -Xmx512m` sizes the JVM heap down for a test boot.
|
|
29
|
+
*
|
|
30
|
+
* Exposes both the REST API (9200, what `restUrl` wraps) and the transport
|
|
31
|
+
* port (9300, published but not wrapped by any helper here).
|
|
32
|
+
*
|
|
33
|
+
* ### Memory and readiness
|
|
34
|
+
*
|
|
35
|
+
* `withMemoryLimit(2560)` — measured ~1.1 GB resident in a 2.48 GB guest at
|
|
36
|
+
* rest. Readiness is a plain HTTP 200 on `/`, reached in 27s on a quiet
|
|
37
|
+
* local machine; 300s absorbs a loaded CI runner without masking a real
|
|
38
|
+
* hang.
|
|
39
|
+
*
|
|
40
|
+
* **Cluster health never reaches `green` on a single node** — replica
|
|
41
|
+
* shards (Elasticsearch's own default is one replica per index) have
|
|
42
|
+
* nowhere to be assigned, so `/_cluster/health` reports `yellow`
|
|
43
|
+
* indefinitely. A readiness check that waited for `green` would hang until
|
|
44
|
+
* its own timeout; this module deliberately waits on the plain HTTP probe
|
|
45
|
+
* above instead.
|
|
46
|
+
*/
|
|
47
|
+
export class ElasticsearchContainer extends GenericContainer {
|
|
48
|
+
constructor(image) {
|
|
49
|
+
super(DockerImageName.requireCompatible(image, EXPECTED_REPOSITORY));
|
|
50
|
+
this.withExposedPorts(REST_PORT, TRANSPORT_PORT)
|
|
51
|
+
.withEnv("discovery.type", "single-node")
|
|
52
|
+
.withEnv("xpack.security.enabled", "false")
|
|
53
|
+
.withEnv("ES_JAVA_OPTS", "-Xms512m -Xmx512m")
|
|
54
|
+
.withMemoryLimit(2560)
|
|
55
|
+
.waitingFor(Wait.forHttp("/").forPort(REST_PORT).withStartupTimeout(STARTUP_TIMEOUT_MS));
|
|
56
|
+
}
|
|
57
|
+
/** No default image — see the class doc for why Elasticsearch has no floating tag to fall back to. */
|
|
58
|
+
static async start(image) {
|
|
59
|
+
return (await new ElasticsearchContainer(image).start());
|
|
60
|
+
}
|
|
61
|
+
/** The REST API's base URL for the running container. */
|
|
62
|
+
get restUrl() {
|
|
63
|
+
return `http://${this.host}:${this.getMappedPort(REST_PORT)}`;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=elasticsearch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"elasticsearch.js","sourceRoot":"","sources":["../../src/modules/elasticsearch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,MAAM,SAAS,GAAG,IAAI,CAAC;AACvB,MAAM,cAAc,GAAG,IAAI,CAAC;AAC5B,MAAM,kBAAkB,GAAG,OAAO,CAAC;AACnC,MAAM,mBAAmB,GAAG,eAAe,CAAC;AAE5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,MAAM,OAAO,sBAAuB,SAAQ,gBAAgB;IAC1D,YAAY,KAA+B;QACzC,KAAK,CAAC,eAAe,CAAC,iBAAiB,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,cAAc,CAAC;aAC7C,OAAO,CAAC,gBAAgB,EAAE,aAAa,CAAC;aACxC,OAAO,CAAC,wBAAwB,EAAE,OAAO,CAAC;aAC1C,OAAO,CAAC,cAAc,EAAE,mBAAmB,CAAC;aAC5C,eAAe,CAAC,IAAI,CAAC;aACrB,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAC7F,CAAC;IAED,sGAAsG;IACtG,MAAM,CAAU,KAAK,CAAC,KAAK,CAAC,KAA+B;QACzD,OAAO,CAAC,MAAM,IAAI,sBAAsB,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAA2B,CAAC;IACrF,CAAC;IAED,yDAAyD;IACzD,IAAI,OAAO;QACT,OAAO,UAAU,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;IAChE,CAAC;CACF"}
|
package/dist/modules/flink.d.ts
CHANGED
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
import { GenericContainer } from "../core/generic-container.js";
|
|
2
|
+
import { DockerImageName } from "../core/docker-image-name.js";
|
|
2
3
|
import type { SandboxBackend } from "../core/backend.js";
|
|
3
4
|
/**
|
|
4
5
|
* A Flink JobManager container (REST 8081, RPC 6123), with an optional
|
|
5
6
|
* companion TaskManager on Docker only — see `withTaskManager()`.
|
|
6
7
|
*
|
|
8
|
+
* No-arg construction floats to `flink:latest`, so the version tracks
|
|
9
|
+
* upstream rather than this library's release cycle (verified against
|
|
10
|
+
* `flink:1.20.5`, including the `nc`/busybox absence this class doc relies
|
|
11
|
+
* on below).
|
|
12
|
+
*
|
|
7
13
|
* `FLINK_PROPERTIES` must set `jobmanager.rpc.address` on the JobManager
|
|
8
14
|
* itself (not just the TaskManager): the JobManager's own Pekko/Akka actor
|
|
9
15
|
* system binds its external address from this property too, and the image's
|
|
@@ -38,8 +44,8 @@ export declare class FlinkContainer extends GenericContainer {
|
|
|
38
44
|
private taskManagerContainer;
|
|
39
45
|
private taskManagerNetwork;
|
|
40
46
|
private ownedNetwork;
|
|
41
|
-
constructor(image?: string);
|
|
42
|
-
static start(image?: string): Promise<FlinkContainer>;
|
|
47
|
+
constructor(image?: string | DockerImageName);
|
|
48
|
+
static start(image?: string | DockerImageName): Promise<FlinkContainer>;
|
|
43
49
|
/**
|
|
44
50
|
* Requests a companion TaskManager, started on a shared `Network` once
|
|
45
51
|
* the JobManager is ready. Docker only — see the class doc for why msb
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flink.d.ts","sourceRoot":"","sources":["../../src/modules/flink.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAIhE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"flink.d.ts","sourceRoot":"","sources":["../../src/modules/flink.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAIhE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAUzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,qBAAa,cAAe,SAAQ,gBAAgB;IAClD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,oBAAoB,CAAS;IACrC,OAAO,CAAC,oBAAoB,CAA+B;IAC3D,OAAO,CAAC,kBAAkB,CAAsB;IAChD,OAAO,CAAC,YAAY,CAAsB;gBAE9B,KAAK,GAAE,MAAM,GAAG,eAA+B;WAYrC,KAAK,CAAC,KAAK,GAAE,MAAM,GAAG,eAA+B,GAAG,OAAO,CAAC,cAAc,CAAC;IAIrG;;;;;;OAMG;IACH,eAAe,IAAI,IAAI;IASvB;;;;;;;OAOG;cACsB,mBAAmB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;cAU3D,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAqB7C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAYpC,oDAAoD;IACpD,IAAI,OAAO,IAAI,MAAM,CAEpB;CACF"}
|
package/dist/modules/flink.js
CHANGED
|
@@ -2,15 +2,23 @@ import { GenericContainer } from "../core/generic-container.js";
|
|
|
2
2
|
import { Network } from "../core/network.js";
|
|
3
3
|
import { Wait } from "../core/wait.js";
|
|
4
4
|
import { UnsupportedByBackendError } from "../core/errors.js";
|
|
5
|
+
import { DockerImageName } from "../core/docker-image-name.js";
|
|
5
6
|
const RPC_PORT = 6123;
|
|
6
7
|
const REST_PORT = 8081;
|
|
7
8
|
const JOBMANAGER_MEMORY_MB = 1024;
|
|
8
9
|
const TASKMANAGER_MEMORY_MB = 1024;
|
|
9
10
|
const JOBMANAGER_ALIAS = "flink-jobmanager";
|
|
11
|
+
const EXPECTED_REPOSITORY = "flink";
|
|
12
|
+
const DEFAULT_IMAGE = "flink:latest";
|
|
10
13
|
/**
|
|
11
14
|
* A Flink JobManager container (REST 8081, RPC 6123), with an optional
|
|
12
15
|
* companion TaskManager on Docker only — see `withTaskManager()`.
|
|
13
16
|
*
|
|
17
|
+
* No-arg construction floats to `flink:latest`, so the version tracks
|
|
18
|
+
* upstream rather than this library's release cycle (verified against
|
|
19
|
+
* `flink:1.20.5`, including the `nc`/busybox absence this class doc relies
|
|
20
|
+
* on below).
|
|
21
|
+
*
|
|
14
22
|
* `FLINK_PROPERTIES` must set `jobmanager.rpc.address` on the JobManager
|
|
15
23
|
* itself (not just the TaskManager): the JobManager's own Pekko/Akka actor
|
|
16
24
|
* system binds its external address from this property too, and the image's
|
|
@@ -45,9 +53,10 @@ export class FlinkContainer extends GenericContainer {
|
|
|
45
53
|
taskManagerContainer;
|
|
46
54
|
taskManagerNetwork;
|
|
47
55
|
ownedNetwork;
|
|
48
|
-
constructor(image =
|
|
49
|
-
|
|
50
|
-
|
|
56
|
+
constructor(image = DEFAULT_IMAGE) {
|
|
57
|
+
const resolvedImage = DockerImageName.requireCompatible(image, EXPECTED_REPOSITORY);
|
|
58
|
+
super(resolvedImage);
|
|
59
|
+
this.imageTag = resolvedImage;
|
|
51
60
|
this.withExposedPorts(RPC_PORT, REST_PORT)
|
|
52
61
|
.withEnv("FLINK_PROPERTIES", `jobmanager.rpc.address: ${JOBMANAGER_ALIAS}`)
|
|
53
62
|
.withCommand("jobmanager")
|
|
@@ -55,7 +64,7 @@ export class FlinkContainer extends GenericContainer {
|
|
|
55
64
|
.withNetworkAliases(JOBMANAGER_ALIAS)
|
|
56
65
|
.waitingFor(Wait.forHttp("/overview").forPort(REST_PORT).withStartupTimeout(120_000));
|
|
57
66
|
}
|
|
58
|
-
static async start(image =
|
|
67
|
+
static async start(image = DEFAULT_IMAGE) {
|
|
59
68
|
return (await new FlinkContainer(image).start());
|
|
60
69
|
}
|
|
61
70
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flink.js","sourceRoot":"","sources":["../../src/modules/flink.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"flink.js","sourceRoot":"","sources":["../../src/modules/flink.ts"],"names":[],"mappings":"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"}
|
package/dist/modules/floci.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { GenericContainer } from "../core/generic-container.js";
|
|
2
|
+
import { DockerImageName } from "../core/docker-image-name.js";
|
|
2
3
|
/**
|
|
3
4
|
* A [floci.io](https://floci.io) cloud emulator — one native Quarkus image
|
|
4
5
|
* per cloud provider, each speaking that provider's REST APIs against an
|
|
@@ -17,6 +18,17 @@ import { GenericContainer } from "../core/generic-container.js";
|
|
|
17
18
|
* `floci/floci-az:0.8.0`, and `floci/floci-gcp:0.4.0`) — pinned as the one
|
|
18
19
|
* wait path that works across all three; no log-wait fallback was needed.
|
|
19
20
|
*
|
|
21
|
+
* ### No-arg factories float, each to its own repository's `latest`
|
|
22
|
+
*
|
|
23
|
+
* `aws()`, `azure()`, and `gcp()` each default to that provider's
|
|
24
|
+
* `floci/floci*:latest`, so the version tracks upstream rather than this
|
|
25
|
+
* library's release cycle — verified against `floci/floci:1.5.30`,
|
|
26
|
+
* `floci/floci-az:0.8.0`, and `floci/floci-gcp:0.4.0` respectively, the same
|
|
27
|
+
* boots every other fact on this page cites. Each factory checks its own
|
|
28
|
+
* repository (`floci/floci`, `floci/floci-az`, `floci/floci-gcp`) — an image
|
|
29
|
+
* meant for one variant is rejected by another's factory with
|
|
30
|
+
* `IncompatibleImageError` before any backend call.
|
|
31
|
+
*
|
|
20
32
|
* ### No signing needed — verified against the AWS variant's S3 surface
|
|
21
33
|
*
|
|
22
34
|
* The AWS variant's S3-shaped REST endpoints accept unsigned requests with
|
|
@@ -34,12 +46,24 @@ import { GenericContainer } from "../core/generic-container.js";
|
|
|
34
46
|
export declare class FlociContainer extends GenericContainer {
|
|
35
47
|
private readonly guestPort;
|
|
36
48
|
private constructor();
|
|
37
|
-
/**
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
static
|
|
49
|
+
/**
|
|
50
|
+
* The AWS emulator, guest port 4566 — S3, DynamoDB, SQS, etc. Floats to
|
|
51
|
+
* `floci/floci:latest` (verified against `floci/floci:1.5.30`); only
|
|
52
|
+
* accepts images whose repository is `floci/floci`.
|
|
53
|
+
*/
|
|
54
|
+
static aws(image?: string | DockerImageName): FlociContainer;
|
|
55
|
+
/**
|
|
56
|
+
* The Azure emulator, guest port 4577. Floats to
|
|
57
|
+
* `floci/floci-az:latest` (verified against `floci/floci-az:0.8.0`); only
|
|
58
|
+
* accepts images whose repository is `floci/floci-az`.
|
|
59
|
+
*/
|
|
60
|
+
static azure(image?: string | DockerImageName): FlociContainer;
|
|
61
|
+
/**
|
|
62
|
+
* The GCP emulator, guest port 4588. Floats to
|
|
63
|
+
* `floci/floci-gcp:latest` (verified against `floci/floci-gcp:0.4.0`);
|
|
64
|
+
* only accepts images whose repository is `floci/floci-gcp`.
|
|
65
|
+
*/
|
|
66
|
+
static gcp(image?: string | DockerImageName): FlociContainer;
|
|
43
67
|
/** This variant's REST endpoint — the base URL for every emulated API call. */
|
|
44
68
|
get endpointUrl(): string;
|
|
45
69
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"floci.d.ts","sourceRoot":"","sources":["../../src/modules/floci.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"floci.d.ts","sourceRoot":"","sources":["../../src/modules/floci.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAY/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,qBAAa,cAAe,SAAQ,gBAAgB;IAClD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAEnC,OAAO;IAMP;;;;OAIG;IACH,MAAM,CAAC,GAAG,CAAC,KAAK,GAAE,MAAM,GAAG,eAAmC,GAAG,cAAc;IAI/E;;;;OAIG;IACH,MAAM,CAAC,KAAK,CAAC,KAAK,GAAE,MAAM,GAAG,eAAqC,GAAG,cAAc;IAInF;;;;OAIG;IACH,MAAM,CAAC,GAAG,CAAC,KAAK,GAAE,MAAM,GAAG,eAAmC,GAAG,cAAc;IAI/E,+EAA+E;IAC/E,IAAI,WAAW,IAAI,MAAM,CAExB;CACF"}
|
package/dist/modules/floci.js
CHANGED
|
@@ -1,8 +1,15 @@
|
|
|
1
1
|
import { GenericContainer } from "../core/generic-container.js";
|
|
2
2
|
import { Wait } from "../core/wait.js";
|
|
3
|
+
import { DockerImageName } from "../core/docker-image-name.js";
|
|
3
4
|
const AWS_PORT = 4566;
|
|
4
5
|
const AZURE_PORT = 4577;
|
|
5
6
|
const GCP_PORT = 4588;
|
|
7
|
+
const AWS_REPOSITORY = "floci/floci";
|
|
8
|
+
const AZURE_REPOSITORY = "floci/floci-az";
|
|
9
|
+
const GCP_REPOSITORY = "floci/floci-gcp";
|
|
10
|
+
const AWS_DEFAULT_IMAGE = "floci/floci:latest";
|
|
11
|
+
const AZURE_DEFAULT_IMAGE = "floci/floci-az:latest";
|
|
12
|
+
const GCP_DEFAULT_IMAGE = "floci/floci-gcp:latest";
|
|
6
13
|
/**
|
|
7
14
|
* A [floci.io](https://floci.io) cloud emulator — one native Quarkus image
|
|
8
15
|
* per cloud provider, each speaking that provider's REST APIs against an
|
|
@@ -21,6 +28,17 @@ const GCP_PORT = 4588;
|
|
|
21
28
|
* `floci/floci-az:0.8.0`, and `floci/floci-gcp:0.4.0`) — pinned as the one
|
|
22
29
|
* wait path that works across all three; no log-wait fallback was needed.
|
|
23
30
|
*
|
|
31
|
+
* ### No-arg factories float, each to its own repository's `latest`
|
|
32
|
+
*
|
|
33
|
+
* `aws()`, `azure()`, and `gcp()` each default to that provider's
|
|
34
|
+
* `floci/floci*:latest`, so the version tracks upstream rather than this
|
|
35
|
+
* library's release cycle — verified against `floci/floci:1.5.30`,
|
|
36
|
+
* `floci/floci-az:0.8.0`, and `floci/floci-gcp:0.4.0` respectively, the same
|
|
37
|
+
* boots every other fact on this page cites. Each factory checks its own
|
|
38
|
+
* repository (`floci/floci`, `floci/floci-az`, `floci/floci-gcp`) — an image
|
|
39
|
+
* meant for one variant is rejected by another's factory with
|
|
40
|
+
* `IncompatibleImageError` before any backend call.
|
|
41
|
+
*
|
|
24
42
|
* ### No signing needed — verified against the AWS variant's S3 surface
|
|
25
43
|
*
|
|
26
44
|
* The AWS variant's S3-shaped REST endpoints accept unsigned requests with
|
|
@@ -42,17 +60,29 @@ export class FlociContainer extends GenericContainer {
|
|
|
42
60
|
this.guestPort = port;
|
|
43
61
|
this.withExposedPorts(port).waitingFor(Wait.forHttp("/health").forPort(port));
|
|
44
62
|
}
|
|
45
|
-
/**
|
|
46
|
-
|
|
47
|
-
|
|
63
|
+
/**
|
|
64
|
+
* The AWS emulator, guest port 4566 — S3, DynamoDB, SQS, etc. Floats to
|
|
65
|
+
* `floci/floci:latest` (verified against `floci/floci:1.5.30`); only
|
|
66
|
+
* accepts images whose repository is `floci/floci`.
|
|
67
|
+
*/
|
|
68
|
+
static aws(image = AWS_DEFAULT_IMAGE) {
|
|
69
|
+
return new FlociContainer(DockerImageName.requireCompatible(image, AWS_REPOSITORY), AWS_PORT);
|
|
48
70
|
}
|
|
49
|
-
/**
|
|
50
|
-
|
|
51
|
-
|
|
71
|
+
/**
|
|
72
|
+
* The Azure emulator, guest port 4577. Floats to
|
|
73
|
+
* `floci/floci-az:latest` (verified against `floci/floci-az:0.8.0`); only
|
|
74
|
+
* accepts images whose repository is `floci/floci-az`.
|
|
75
|
+
*/
|
|
76
|
+
static azure(image = AZURE_DEFAULT_IMAGE) {
|
|
77
|
+
return new FlociContainer(DockerImageName.requireCompatible(image, AZURE_REPOSITORY), AZURE_PORT);
|
|
52
78
|
}
|
|
53
|
-
/**
|
|
54
|
-
|
|
55
|
-
|
|
79
|
+
/**
|
|
80
|
+
* The GCP emulator, guest port 4588. Floats to
|
|
81
|
+
* `floci/floci-gcp:latest` (verified against `floci/floci-gcp:0.4.0`);
|
|
82
|
+
* only accepts images whose repository is `floci/floci-gcp`.
|
|
83
|
+
*/
|
|
84
|
+
static gcp(image = GCP_DEFAULT_IMAGE) {
|
|
85
|
+
return new FlociContainer(DockerImageName.requireCompatible(image, GCP_REPOSITORY), GCP_PORT);
|
|
56
86
|
}
|
|
57
87
|
/** This variant's REST endpoint — the base URL for every emulated API call. */
|
|
58
88
|
get endpointUrl() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"floci.js","sourceRoot":"","sources":["../../src/modules/floci.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"floci.js","sourceRoot":"","sources":["../../src/modules/floci.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,MAAM,QAAQ,GAAG,IAAI,CAAC;AACtB,MAAM,UAAU,GAAG,IAAI,CAAC;AACxB,MAAM,QAAQ,GAAG,IAAI,CAAC;AACtB,MAAM,cAAc,GAAG,aAAa,CAAC;AACrC,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;AAC1C,MAAM,cAAc,GAAG,iBAAiB,CAAC;AACzC,MAAM,iBAAiB,GAAG,oBAAoB,CAAC;AAC/C,MAAM,mBAAmB,GAAG,uBAAuB,CAAC;AACpD,MAAM,iBAAiB,GAAG,wBAAwB,CAAC;AAEnD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,MAAM,OAAO,cAAe,SAAQ,gBAAgB;IACjC,SAAS,CAAS;IAEnC,YAAoB,KAAa,EAAE,IAAY;QAC7C,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAChF,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,GAAG,CAAC,QAAkC,iBAAiB;QAC5D,OAAO,IAAI,cAAc,CAAC,eAAe,CAAC,iBAAiB,CAAC,KAAK,EAAE,cAAc,CAAC,EAAE,QAAQ,CAAC,CAAC;IAChG,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,KAAK,CAAC,QAAkC,mBAAmB;QAChE,OAAO,IAAI,cAAc,CAAC,eAAe,CAAC,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,CAAC,EAAE,UAAU,CAAC,CAAC;IACpG,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,GAAG,CAAC,QAAkC,iBAAiB;QAC5D,OAAO,IAAI,cAAc,CAAC,eAAe,CAAC,iBAAiB,CAAC,KAAK,EAAE,cAAc,CAAC,EAAE,QAAQ,CAAC,CAAC;IAChG,CAAC;IAED,+EAA+E;IAC/E,IAAI,WAAW;QACb,OAAO,UAAU,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;IACrE,CAAC;CACF"}
|
package/dist/modules/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `rightsize/modules` — twenty-
|
|
2
|
+
* `rightsize/modules` — twenty-three preconfigured containers.
|
|
3
3
|
*
|
|
4
4
|
* Each module is a `GenericContainer` subclass with sensible defaults (image
|
|
5
5
|
* tag, exposed ports, wait strategy, and any memory floor its image needs)
|
|
@@ -31,4 +31,6 @@ export { Neo4jContainer } from "./neo4j.js";
|
|
|
31
31
|
export { FlociContainer } from "./floci.js";
|
|
32
32
|
export { MinIOContainer } from "./minio.js";
|
|
33
33
|
export { CassandraContainer } from "./cassandra.js";
|
|
34
|
+
export { ElasticsearchContainer } from "./elasticsearch.js";
|
|
35
|
+
export { QdrantContainer } from "./qdrant.js";
|
|
34
36
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/modules/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/modules/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/modules/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `rightsize/modules` — twenty-
|
|
2
|
+
* `rightsize/modules` — twenty-three preconfigured containers.
|
|
3
3
|
*
|
|
4
4
|
* Each module is a `GenericContainer` subclass with sensible defaults (image
|
|
5
5
|
* tag, exposed ports, wait strategy, and any memory floor its image needs)
|
|
@@ -31,4 +31,6 @@ export { Neo4jContainer } from "./neo4j.js";
|
|
|
31
31
|
export { FlociContainer } from "./floci.js";
|
|
32
32
|
export { MinIOContainer } from "./minio.js";
|
|
33
33
|
export { CassandraContainer } from "./cassandra.js";
|
|
34
|
+
export { ElasticsearchContainer } from "./elasticsearch.js";
|
|
35
|
+
export { QdrantContainer } from "./qdrant.js";
|
|
34
36
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/modules/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/modules/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/modules/kafka.d.ts
CHANGED
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
import { GenericContainer } from "../core/generic-container.js";
|
|
2
|
+
import { DockerImageName } from "../core/docker-image-name.js";
|
|
2
3
|
import type { ContainerSpec } from "../core/model.js";
|
|
3
|
-
/**
|
|
4
|
+
/**
|
|
5
|
+
* A single-node Kafka broker (KRaft mode, no ZooKeeper).
|
|
6
|
+
*
|
|
7
|
+
* No-arg construction floats to `apache/kafka:latest`, so the version tracks
|
|
8
|
+
* upstream rather than this library's release cycle (verified against
|
|
9
|
+
* `apache/kafka:4.0.0`, including the JVM heap override below).
|
|
10
|
+
*/
|
|
4
11
|
export declare class KafkaContainer extends GenericContainer {
|
|
5
|
-
constructor(image?: string);
|
|
6
|
-
static start(image?: string): Promise<KafkaContainer>;
|
|
12
|
+
constructor(image?: string | DockerImageName);
|
|
13
|
+
static start(image?: string | DockerImageName): Promise<KafkaContainer>;
|
|
7
14
|
protected customizeSpec(spec: ContainerSpec, mapped: (guest: number) => number): ContainerSpec;
|
|
8
15
|
/** The `PLAINTEXT://` bootstrap-servers address for the running broker. */
|
|
9
16
|
get bootstrapServers(): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kafka.d.ts","sourceRoot":"","sources":["../../src/modules/kafka.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"kafka.d.ts","sourceRoot":"","sources":["../../src/modules/kafka.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAMtD;;;;;;GAMG;AACH,qBAAa,cAAe,SAAQ,gBAAgB;gBACtC,KAAK,GAAE,MAAM,GAAG,eAA+B;WAoBrC,KAAK,CAAC,KAAK,GAAE,MAAM,GAAG,eAA+B,GAAG,OAAO,CAAC,cAAc,CAAC;cAMlF,aAAa,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,aAAa;IAOvG,2EAA2E;IAC3E,IAAI,gBAAgB,IAAI,MAAM,CAE7B;CACF"}
|
package/dist/modules/kafka.js
CHANGED
|
@@ -1,10 +1,19 @@
|
|
|
1
1
|
import { GenericContainer } from "../core/generic-container.js";
|
|
2
2
|
import { Wait } from "../core/wait.js";
|
|
3
|
+
import { DockerImageName } from "../core/docker-image-name.js";
|
|
3
4
|
const GUEST_PORT = 9092;
|
|
4
|
-
|
|
5
|
+
const EXPECTED_REPOSITORY = "apache/kafka";
|
|
6
|
+
const DEFAULT_IMAGE = "apache/kafka:latest";
|
|
7
|
+
/**
|
|
8
|
+
* A single-node Kafka broker (KRaft mode, no ZooKeeper).
|
|
9
|
+
*
|
|
10
|
+
* No-arg construction floats to `apache/kafka:latest`, so the version tracks
|
|
11
|
+
* upstream rather than this library's release cycle (verified against
|
|
12
|
+
* `apache/kafka:4.0.0`, including the JVM heap override below).
|
|
13
|
+
*/
|
|
5
14
|
export class KafkaContainer extends GenericContainer {
|
|
6
|
-
constructor(image =
|
|
7
|
-
super(image);
|
|
15
|
+
constructor(image = DEFAULT_IMAGE) {
|
|
16
|
+
super(DockerImageName.requireCompatible(image, EXPECTED_REPOSITORY));
|
|
8
17
|
this.withExposedPorts(GUEST_PORT)
|
|
9
18
|
.withEnv("KAFKA_NODE_ID", "1")
|
|
10
19
|
.withEnv("KAFKA_PROCESS_ROLES", "broker,controller")
|
|
@@ -22,7 +31,7 @@ export class KafkaContainer extends GenericContainer {
|
|
|
22
31
|
.withEnv("KAFKA_HEAP_OPTS", "-Xmx256M -Xms256M")
|
|
23
32
|
.waitingFor(Wait.forLogMessage(".*Kafka Server started.*"));
|
|
24
33
|
}
|
|
25
|
-
static async start(image =
|
|
34
|
+
static async start(image = DEFAULT_IMAGE) {
|
|
26
35
|
return (await new KafkaContainer(image).start());
|
|
27
36
|
}
|
|
28
37
|
// Rewrites the advertised listener to carry the mapped host port; see
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kafka.js","sourceRoot":"","sources":["../../src/modules/kafka.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"kafka.js","sourceRoot":"","sources":["../../src/modules/kafka.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAG/D,MAAM,UAAU,GAAG,IAAI,CAAC;AACxB,MAAM,mBAAmB,GAAG,cAAc,CAAC;AAC3C,MAAM,aAAa,GAAG,qBAAqB,CAAC;AAE5C;;;;;;GAMG;AACH,MAAM,OAAO,cAAe,SAAQ,gBAAgB;IAClD,YAAY,QAAkC,aAAa;QACzD,KAAK,CAAC,eAAe,CAAC,iBAAiB,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;aAC9B,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC;aAC7B,OAAO,CAAC,qBAAqB,EAAE,mBAAmB,CAAC;aACnD,OAAO,CAAC,gCAAgC,EAAE,kBAAkB,CAAC;aAC7D,OAAO,CAAC,iBAAiB,EAAE,oDAAoD,CAAC;aAChF,OAAO,CAAC,iCAAiC,EAAE,YAAY,CAAC;aACxD,OAAO,CAAC,sCAAsC,EAAE,0CAA0C,CAAC;aAC3F,OAAO,CAAC,wCAAwC,EAAE,GAAG,CAAC;aACtD,OAAO,CAAC,wCAAwC,EAAE,GAAG,CAAC;YACvD,mEAAmE;YACnE,oEAAoE;YACpE,+DAA+D;YAC/D,oEAAoE;YACpE,kCAAkC;aACjC,OAAO,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;aAC/C,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,0BAA0B,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,CAAU,KAAK,CAAC,KAAK,CAAC,QAAkC,aAAa;QACzE,OAAO,CAAC,MAAM,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAmB,CAAC;IACrE,CAAC;IAED,sEAAsE;IACtE,0EAA0E;IACvD,aAAa,CAAC,IAAmB,EAAE,MAAiC;QACrF,OAAO;YACL,GAAG,IAAI;YACP,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,4BAA4B,EAAE,yBAAyB,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;SAClG,CAAC;IACJ,CAAC;IAED,2EAA2E;IAC3E,IAAI,gBAAgB;QAClB,OAAO,eAAe,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC;IACtE,CAAC;CACF"}
|
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
import { GenericContainer } from "../core/generic-container.js";
|
|
2
|
+
import { DockerImageName } from "../core/docker-image-name.js";
|
|
2
3
|
/**
|
|
3
4
|
* A single-node Keycloak container started with `start-dev` (an
|
|
4
5
|
* in-memory/dev-mode boot — no external database wiring needed for tests).
|
|
5
6
|
*
|
|
7
|
+
* No-arg construction floats to `quay.io/keycloak/keycloak:latest`, so the
|
|
8
|
+
* version tracks upstream rather than this library's release cycle
|
|
9
|
+
* (verified against `quay.io/keycloak/keycloak:26.0`, patch `26.0.8`
|
|
10
|
+
* specifically). The compatibility check expects the repository
|
|
11
|
+
* `keycloak/keycloak` — `quay.io` is a registry host, stripped by the same
|
|
12
|
+
* Docker-reference convention this library applies everywhere else.
|
|
13
|
+
*
|
|
6
14
|
* Two pins here are version-sensitive and were verified against 26.0.8
|
|
7
15
|
* specifically:
|
|
8
16
|
*
|
|
@@ -24,8 +32,8 @@ import { GenericContainer } from "../core/generic-container.js";
|
|
|
24
32
|
export declare class KeycloakContainer extends GenericContainer {
|
|
25
33
|
private adminUsernameState;
|
|
26
34
|
private adminPasswordState;
|
|
27
|
-
constructor(image?: string);
|
|
28
|
-
static start(image?: string): Promise<KeycloakContainer>;
|
|
35
|
+
constructor(image?: string | DockerImageName);
|
|
36
|
+
static start(image?: string | DockerImageName): Promise<KeycloakContainer>;
|
|
29
37
|
/** Overrides `KC_BOOTSTRAP_ADMIN_USERNAME` (default `admin`). */
|
|
30
38
|
withAdminUsername(username: string): this;
|
|
31
39
|
/** Overrides `KC_BOOTSTRAP_ADMIN_PASSWORD` (default `admin`). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keycloak.d.ts","sourceRoot":"","sources":["../../src/modules/keycloak.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"keycloak.d.ts","sourceRoot":"","sources":["../../src/modules/keycloak.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAQ/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBAAa,iBAAkB,SAAQ,gBAAgB;IACrD,OAAO,CAAC,kBAAkB,CAAW;IACrC,OAAO,CAAC,kBAAkB,CAAW;gBAEzB,KAAK,GAAE,MAAM,GAAG,eAA+B;WAWrC,KAAK,CAAC,KAAK,GAAE,MAAM,GAAG,eAA+B,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAIxG,iEAAiE;IACjE,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKzC,iEAAiE;IACjE,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKzC,iEAAiE;IACjE,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,iEAAiE;IACjE,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,4DAA4D;IAC5D,IAAI,aAAa,IAAI,MAAM,CAE1B;CACF"}
|
package/dist/modules/keycloak.js
CHANGED
|
@@ -1,12 +1,22 @@
|
|
|
1
1
|
import { GenericContainer } from "../core/generic-container.js";
|
|
2
2
|
import { Wait } from "../core/wait.js";
|
|
3
|
+
import { DockerImageName } from "../core/docker-image-name.js";
|
|
3
4
|
const HTTP_PORT = 8080;
|
|
4
5
|
const MANAGEMENT_PORT = 9000;
|
|
5
6
|
const STARTUP_TIMEOUT_MS = 180_000;
|
|
7
|
+
const EXPECTED_REPOSITORY = "keycloak/keycloak";
|
|
8
|
+
const DEFAULT_IMAGE = "quay.io/keycloak/keycloak:latest";
|
|
6
9
|
/**
|
|
7
10
|
* A single-node Keycloak container started with `start-dev` (an
|
|
8
11
|
* in-memory/dev-mode boot — no external database wiring needed for tests).
|
|
9
12
|
*
|
|
13
|
+
* No-arg construction floats to `quay.io/keycloak/keycloak:latest`, so the
|
|
14
|
+
* version tracks upstream rather than this library's release cycle
|
|
15
|
+
* (verified against `quay.io/keycloak/keycloak:26.0`, patch `26.0.8`
|
|
16
|
+
* specifically). The compatibility check expects the repository
|
|
17
|
+
* `keycloak/keycloak` — `quay.io` is a registry host, stripped by the same
|
|
18
|
+
* Docker-reference convention this library applies everywhere else.
|
|
19
|
+
*
|
|
10
20
|
* Two pins here are version-sensitive and were verified against 26.0.8
|
|
11
21
|
* specifically:
|
|
12
22
|
*
|
|
@@ -28,8 +38,8 @@ const STARTUP_TIMEOUT_MS = 180_000;
|
|
|
28
38
|
export class KeycloakContainer extends GenericContainer {
|
|
29
39
|
adminUsernameState = "admin";
|
|
30
40
|
adminPasswordState = "admin";
|
|
31
|
-
constructor(image =
|
|
32
|
-
super(image);
|
|
41
|
+
constructor(image = DEFAULT_IMAGE) {
|
|
42
|
+
super(DockerImageName.requireCompatible(image, EXPECTED_REPOSITORY));
|
|
33
43
|
this.withExposedPorts(HTTP_PORT, MANAGEMENT_PORT)
|
|
34
44
|
.withCommand("start-dev")
|
|
35
45
|
.withEnv("KC_BOOTSTRAP_ADMIN_USERNAME", this.adminUsernameState)
|
|
@@ -38,7 +48,7 @@ export class KeycloakContainer extends GenericContainer {
|
|
|
38
48
|
.withMemoryLimit(1024)
|
|
39
49
|
.waitingFor(Wait.forHttp("/health/ready").forPort(MANAGEMENT_PORT).withStartupTimeout(STARTUP_TIMEOUT_MS));
|
|
40
50
|
}
|
|
41
|
-
static async start(image =
|
|
51
|
+
static async start(image = DEFAULT_IMAGE) {
|
|
42
52
|
return (await new KeycloakContainer(image).start());
|
|
43
53
|
}
|
|
44
54
|
/** Overrides `KC_BOOTSTRAP_ADMIN_USERNAME` (default `admin`). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keycloak.js","sourceRoot":"","sources":["../../src/modules/keycloak.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"keycloak.js","sourceRoot":"","sources":["../../src/modules/keycloak.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,MAAM,SAAS,GAAG,IAAI,CAAC;AACvB,MAAM,eAAe,GAAG,IAAI,CAAC;AAC7B,MAAM,kBAAkB,GAAG,OAAO,CAAC;AACnC,MAAM,mBAAmB,GAAG,mBAAmB,CAAC;AAChD,MAAM,aAAa,GAAG,kCAAkC,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,OAAO,iBAAkB,SAAQ,gBAAgB;IAC7C,kBAAkB,GAAG,OAAO,CAAC;IAC7B,kBAAkB,GAAG,OAAO,CAAC;IAErC,YAAY,QAAkC,aAAa;QACzD,KAAK,CAAC,eAAe,CAAC,iBAAiB,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,eAAe,CAAC;aAC9C,WAAW,CAAC,WAAW,CAAC;aACxB,OAAO,CAAC,6BAA6B,EAAE,IAAI,CAAC,kBAAkB,CAAC;aAC/D,OAAO,CAAC,6BAA6B,EAAE,IAAI,CAAC,kBAAkB,CAAC;aAC/D,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC;aACpC,eAAe,CAAC,IAAI,CAAC;aACrB,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAC/G,CAAC;IAED,MAAM,CAAU,KAAK,CAAC,KAAK,CAAC,QAAkC,aAAa;QACzE,OAAO,CAAC,MAAM,IAAI,iBAAiB,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAsB,CAAC;IAC3E,CAAC;IAED,iEAAiE;IACjE,iBAAiB,CAAC,QAAgB;QAChC,IAAI,CAAC,kBAAkB,GAAG,QAAQ,CAAC;QACnC,OAAO,IAAI,CAAC,OAAO,CAAC,6BAA6B,EAAE,QAAQ,CAAC,CAAC;IAC/D,CAAC;IAED,iEAAiE;IACjE,iBAAiB,CAAC,QAAgB;QAChC,IAAI,CAAC,kBAAkB,GAAG,QAAQ,CAAC;QACnC,OAAO,IAAI,CAAC,OAAO,CAAC,6BAA6B,EAAE,QAAQ,CAAC,CAAC;IAC/D,CAAC;IAED,iEAAiE;IACjE,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACjC,CAAC;IAED,iEAAiE;IACjE,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACjC,CAAC;IAED,4DAA4D;IAC5D,IAAI,aAAa;QACf,OAAO,UAAU,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;IAChE,CAAC;CACF"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { GenericContainer } from "../core/generic-container.js";
|
|
2
|
+
import { DockerImageName } from "../core/docker-image-name.js";
|
|
2
3
|
/**
|
|
3
4
|
* A single-node MariaDB container. Defaults to a `test`/`test`/`test`
|
|
4
5
|
* user/password/database trio (plus `MARIADB_ROOT_PASSWORD=test`), mirroring
|
|
@@ -31,13 +32,18 @@ import { GenericContainer } from "../core/generic-container.js";
|
|
|
31
32
|
* `.*port: 3306.*mariadb\.org binary distribution.*` with `times=1` matches
|
|
32
33
|
* only the last line above — the temp server's equivalent line has `port: 0`
|
|
33
34
|
* instead of `port: 3306`, so it never satisfies the pattern.
|
|
35
|
+
*
|
|
36
|
+
* No-arg construction floats to `mariadb:latest`, so the version tracks
|
|
37
|
+
* upstream rather than this library's release cycle (verified against
|
|
38
|
+
* `mariadb:11.4`, including the readiness regex above and the log excerpt it
|
|
39
|
+
* was captured from).
|
|
34
40
|
*/
|
|
35
41
|
export declare class MariaDBContainer extends GenericContainer {
|
|
36
42
|
private usernameState;
|
|
37
43
|
private passwordState;
|
|
38
44
|
private databaseState;
|
|
39
|
-
constructor(image?: string);
|
|
40
|
-
static start(image?: string): Promise<MariaDBContainer>;
|
|
45
|
+
constructor(image?: string | DockerImageName);
|
|
46
|
+
static start(image?: string | DockerImageName): Promise<MariaDBContainer>;
|
|
41
47
|
/** Overrides `MARIADB_USER` (default `test`). */
|
|
42
48
|
withUsername(username: string): this;
|
|
43
49
|
/** Overrides `MARIADB_PASSWORD` (default `test`). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mariadb.d.ts","sourceRoot":"","sources":["../../src/modules/mariadb.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"mariadb.d.ts","sourceRoot":"","sources":["../../src/modules/mariadb.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAM/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,qBAAa,gBAAiB,SAAQ,gBAAgB;IACpD,OAAO,CAAC,aAAa,CAAU;IAC/B,OAAO,CAAC,aAAa,CAAU;IAC/B,OAAO,CAAC,aAAa,CAAU;gBAEnB,KAAK,GAAE,MAAM,GAAG,eAA+B;WAcrC,KAAK,CAAC,KAAK,GAAE,MAAM,GAAG,eAA+B,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAIvG,iDAAiD;IACjD,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKpC,qDAAqD;IACrD,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKpC,qDAAqD;IACrD,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKpC,qDAAqD;IACrD,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,yDAAyD;IACzD,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,qDAAqD;IACrD,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,0HAA0H;IAC1H,IAAI,gBAAgB,IAAI,MAAM,CAE7B;CACF"}
|