rightsize 0.4.0 → 0.6.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/README.md +16 -3
- 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 +10 -0
- package/dist/backend-msb/backend.d.ts.map +1 -1
- package/dist/backend-msb/backend.js +26 -1
- package/dist/backend-msb/backend.js.map +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/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 +57 -0
- package/dist/modules/cassandra.d.ts.map +1 -0
- package/dist/modules/cassandra.js +79 -0
- package/dist/modules/cassandra.js.map +1 -0
- 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 +6 -1
- package/dist/modules/index.d.ts.map +1 -1
- package/dist/modules/index.js +6 -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 +40 -0
- package/dist/modules/minio.d.ts.map +1 -0
- package/dist/modules/minio.js +71 -0
- package/dist/modules/minio.js.map +1 -0
- 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 +28 -0
- package/dist/modules/valkey.d.ts.map +1 -0
- package/dist/modules/valkey.js +41 -0
- package/dist/modules/valkey.js.map +1 -0
- 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
|
@@ -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` —
|
|
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)
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
* @packageDocumentation
|
|
12
12
|
*/
|
|
13
13
|
export { RedisContainer } from "./redis.js";
|
|
14
|
+
export { ValkeyContainer } from "./valkey.js";
|
|
14
15
|
export { MemcachedContainer, MemcachedRespondsStrategy } from "./memcached.js";
|
|
15
16
|
export { ArangoContainer } from "./arango.js";
|
|
16
17
|
export { MongoDBContainer } from "./mongodb.js";
|
|
@@ -28,4 +29,8 @@ export { KeycloakContainer } from "./keycloak.js";
|
|
|
28
29
|
export { ClickHouseContainer } from "./clickhouse.js";
|
|
29
30
|
export { Neo4jContainer } from "./neo4j.js";
|
|
30
31
|
export { FlociContainer } from "./floci.js";
|
|
32
|
+
export { MinIOContainer } from "./minio.js";
|
|
33
|
+
export { CassandraContainer } from "./cassandra.js";
|
|
34
|
+
export { ElasticsearchContainer } from "./elasticsearch.js";
|
|
35
|
+
export { QdrantContainer } from "./qdrant.js";
|
|
31
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,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"}
|
|
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` —
|
|
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)
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
* @packageDocumentation
|
|
12
12
|
*/
|
|
13
13
|
export { RedisContainer } from "./redis.js";
|
|
14
|
+
export { ValkeyContainer } from "./valkey.js";
|
|
14
15
|
export { MemcachedContainer, MemcachedRespondsStrategy } from "./memcached.js";
|
|
15
16
|
export { ArangoContainer } from "./arango.js";
|
|
16
17
|
export { MongoDBContainer } from "./mongodb.js";
|
|
@@ -28,4 +29,8 @@ export { KeycloakContainer } from "./keycloak.js";
|
|
|
28
29
|
export { ClickHouseContainer } from "./clickhouse.js";
|
|
29
30
|
export { Neo4jContainer } from "./neo4j.js";
|
|
30
31
|
export { FlociContainer } from "./floci.js";
|
|
32
|
+
export { MinIOContainer } from "./minio.js";
|
|
33
|
+
export { CassandraContainer } from "./cassandra.js";
|
|
34
|
+
export { ElasticsearchContainer } from "./elasticsearch.js";
|
|
35
|
+
export { QdrantContainer } from "./qdrant.js";
|
|
31
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,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"}
|
|
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"}
|
package/dist/modules/mariadb.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
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 = 3306;
|
|
5
|
+
const EXPECTED_REPOSITORY = "mariadb";
|
|
6
|
+
const DEFAULT_IMAGE = "mariadb:latest";
|
|
4
7
|
/**
|
|
5
8
|
* A single-node MariaDB container. Defaults to a `test`/`test`/`test`
|
|
6
9
|
* user/password/database trio (plus `MARIADB_ROOT_PASSWORD=test`), mirroring
|
|
@@ -33,13 +36,18 @@ const GUEST_PORT = 3306;
|
|
|
33
36
|
* `.*port: 3306.*mariadb\.org binary distribution.*` with `times=1` matches
|
|
34
37
|
* only the last line above — the temp server's equivalent line has `port: 0`
|
|
35
38
|
* instead of `port: 3306`, so it never satisfies the pattern.
|
|
39
|
+
*
|
|
40
|
+
* No-arg construction floats to `mariadb:latest`, so the version tracks
|
|
41
|
+
* upstream rather than this library's release cycle (verified against
|
|
42
|
+
* `mariadb:11.4`, including the readiness regex above and the log excerpt it
|
|
43
|
+
* was captured from).
|
|
36
44
|
*/
|
|
37
45
|
export class MariaDBContainer extends GenericContainer {
|
|
38
46
|
usernameState = "test";
|
|
39
47
|
passwordState = "test";
|
|
40
48
|
databaseState = "test";
|
|
41
|
-
constructor(image =
|
|
42
|
-
super(image);
|
|
49
|
+
constructor(image = DEFAULT_IMAGE) {
|
|
50
|
+
super(DockerImageName.requireCompatible(image, EXPECTED_REPOSITORY));
|
|
43
51
|
this.withExposedPorts(GUEST_PORT)
|
|
44
52
|
.withEnv("MARIADB_USER", this.usernameState)
|
|
45
53
|
.withEnv("MARIADB_PASSWORD", this.passwordState)
|
|
@@ -51,7 +59,7 @@ export class MariaDBContainer extends GenericContainer {
|
|
|
51
59
|
// No withMemoryLimit override, matching the MySQL precedent: MariaDB's
|
|
52
60
|
// InnoDB default footprint fits msb's default microVM RAM comfortably.
|
|
53
61
|
}
|
|
54
|
-
static async start(image =
|
|
62
|
+
static async start(image = DEFAULT_IMAGE) {
|
|
55
63
|
return (await new MariaDBContainer(image).start());
|
|
56
64
|
}
|
|
57
65
|
/** Overrides `MARIADB_USER` (default `test`). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mariadb.js","sourceRoot":"","sources":["../../src/modules/mariadb.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"mariadb.js","sourceRoot":"","sources":["../../src/modules/mariadb.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,UAAU,GAAG,IAAI,CAAC;AACxB,MAAM,mBAAmB,GAAG,SAAS,CAAC;AACtC,MAAM,aAAa,GAAG,gBAAgB,CAAC;AAEvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,MAAM,OAAO,gBAAiB,SAAQ,gBAAgB;IAC5C,aAAa,GAAG,MAAM,CAAC;IACvB,aAAa,GAAG,MAAM,CAAC;IACvB,aAAa,GAAG,MAAM,CAAC;IAE/B,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,cAAc,EAAE,IAAI,CAAC,aAAa,CAAC;aAC3C,OAAO,CAAC,kBAAkB,EAAE,IAAI,CAAC,aAAa,CAAC;aAC/C,OAAO,CAAC,kBAAkB,EAAE,IAAI,CAAC,aAAa,CAAC;aAC/C,OAAO,CAAC,uBAAuB,EAAE,MAAM,CAAC;YACzC,gEAAgE;YAChE,yBAAyB;aACxB,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,mDAAmD,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1F,uEAAuE;QACvE,uEAAuE;IACzE,CAAC;IAED,MAAM,CAAU,KAAK,CAAC,KAAK,CAAC,QAAkC,aAAa;QACzE,OAAO,CAAC,MAAM,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAqB,CAAC;IACzE,CAAC;IAED,iDAAiD;IACjD,YAAY,CAAC,QAAgB;QAC3B,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IAChD,CAAC;IAED,qDAAqD;IACrD,YAAY,CAAC,QAAgB;QAC3B,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;IACpD,CAAC;IAED,qDAAqD;IACrD,YAAY,CAAC,QAAgB;QAC3B,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;IACpD,CAAC;IAED,qDAAqD;IACrD,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,yDAAyD;IACzD,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,qDAAqD;IACrD,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,0HAA0H;IAC1H,IAAI,gBAAgB;QAClB,OAAO,WAAW,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;IACpI,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
|
import type { WaitStrategy, WaitTarget } from "../core/wait.js";
|
|
3
4
|
/**
|
|
4
5
|
* Speaks the memcached text protocol instead of trusting a bare TCP
|
|
@@ -14,10 +15,18 @@ export declare class MemcachedRespondsStrategy implements WaitStrategy {
|
|
|
14
15
|
private probe;
|
|
15
16
|
waitUntilReady(target: WaitTarget): Promise<void>;
|
|
16
17
|
}
|
|
17
|
-
/**
|
|
18
|
+
/**
|
|
19
|
+
* A single-node Memcached container, ready-checked with a protocol-level
|
|
20
|
+
* `version` probe.
|
|
21
|
+
*
|
|
22
|
+
* No-arg construction floats to `memcached:latest`, so the version tracks
|
|
23
|
+
* upstream rather than this library's release cycle (verified against
|
|
24
|
+
* `memcached:1.6-alpine`). `latest` is Debian-based rather than Alpine —
|
|
25
|
+
* functionally equivalent, larger to pull.
|
|
26
|
+
*/
|
|
18
27
|
export declare class MemcachedContainer extends GenericContainer {
|
|
19
|
-
constructor(image?: string);
|
|
20
|
-
static start(image?: string): Promise<MemcachedContainer>;
|
|
28
|
+
constructor(image?: string | DockerImageName);
|
|
29
|
+
static start(image?: string | DockerImageName): Promise<MemcachedContainer>;
|
|
21
30
|
/** The `host:port` address of the running container. */
|
|
22
31
|
get address(): string;
|
|
23
32
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memcached.d.ts","sourceRoot":"","sources":["../../src/modules/memcached.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"memcached.d.ts","sourceRoot":"","sources":["../../src/modules/memcached.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAchE;;;;;;;GAOG;AACH,qBAAa,yBAA0B,YAAW,YAAY;IAC5D,OAAO,CAAC,SAAS,CAAsB;IAEvC,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAKpC,OAAO,CAAC,KAAK;IA0CP,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CA0BxD;AAED;;;;;;;;GAQG;AACH,qBAAa,kBAAmB,SAAQ,gBAAgB;gBAC1C,KAAK,GAAE,MAAM,GAAG,eAA+B;WAKrC,KAAK,CAAC,KAAK,GAAE,MAAM,GAAG,eAA+B,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAIzG,wDAAwD;IACxD,IAAI,OAAO,IAAI,MAAM,CAEpB;CACF"}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import * as net from "node:net";
|
|
2
2
|
import { GenericContainer } from "../core/generic-container.js";
|
|
3
3
|
import { ContainerLaunchError } from "../core/errors.js";
|
|
4
|
+
import { DockerImageName } from "../core/docker-image-name.js";
|
|
4
5
|
const GUEST_PORT = 11211;
|
|
5
6
|
const DEFAULT_TIMEOUT_MS = 60_000;
|
|
6
7
|
const POLL_INTERVAL_MS = 250;
|
|
7
8
|
const PROBE_TIMEOUT_MS = 1_000;
|
|
8
9
|
const LOG_TAIL_LINES = 50;
|
|
10
|
+
const EXPECTED_REPOSITORY = "memcached";
|
|
11
|
+
const DEFAULT_IMAGE = "memcached:latest";
|
|
9
12
|
function sleep(ms) {
|
|
10
13
|
return new Promise((r) => setTimeout(r, ms));
|
|
11
14
|
}
|
|
@@ -88,13 +91,21 @@ export class MemcachedRespondsStrategy {
|
|
|
88
91
|
}
|
|
89
92
|
}
|
|
90
93
|
}
|
|
91
|
-
/**
|
|
94
|
+
/**
|
|
95
|
+
* A single-node Memcached container, ready-checked with a protocol-level
|
|
96
|
+
* `version` probe.
|
|
97
|
+
*
|
|
98
|
+
* No-arg construction floats to `memcached:latest`, so the version tracks
|
|
99
|
+
* upstream rather than this library's release cycle (verified against
|
|
100
|
+
* `memcached:1.6-alpine`). `latest` is Debian-based rather than Alpine —
|
|
101
|
+
* functionally equivalent, larger to pull.
|
|
102
|
+
*/
|
|
92
103
|
export class MemcachedContainer extends GenericContainer {
|
|
93
|
-
constructor(image =
|
|
94
|
-
super(image);
|
|
104
|
+
constructor(image = DEFAULT_IMAGE) {
|
|
105
|
+
super(DockerImageName.requireCompatible(image, EXPECTED_REPOSITORY));
|
|
95
106
|
this.withExposedPorts(GUEST_PORT).waitingFor(new MemcachedRespondsStrategy());
|
|
96
107
|
}
|
|
97
|
-
static async start(image =
|
|
108
|
+
static async start(image = DEFAULT_IMAGE) {
|
|
98
109
|
return (await new MemcachedContainer(image).start());
|
|
99
110
|
}
|
|
100
111
|
/** The `host:port` address of the running container. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memcached.js","sourceRoot":"","sources":["../../src/modules/memcached.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"memcached.js","sourceRoot":"","sources":["../../src/modules/memcached.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { GenericContainer } from "../core/generic-container.js";
|
|
2
|
+
import { DockerImageName } from "../core/docker-image-name.js";
|
|
3
|
+
/**
|
|
4
|
+
* A single-node MinIO container — an S3-compatible object store. Requires
|
|
5
|
+
* an explicit command: the image's default ENTRYPOINT alone does not serve,
|
|
6
|
+
* so this module always runs `server /data --console-address :9001`.
|
|
7
|
+
*
|
|
8
|
+
* `MINIO_ROOT_USER`/`MINIO_ROOT_PASSWORD` default to `testuser`/
|
|
9
|
+
* `testpassword`, not this library's usual `test`/`test` pair — MinIO
|
|
10
|
+
* itself rejects a root password shorter than 8 characters, so `test` (4
|
|
11
|
+
* characters) is a non-starter here.
|
|
12
|
+
*
|
|
13
|
+
* Exposes both the S3 API (9000, what `endpointUrl` wraps) and the web
|
|
14
|
+
* console (9001, published for anyone who wants to open it directly; no
|
|
15
|
+
* helper wraps it).
|
|
16
|
+
*
|
|
17
|
+
* Readiness is a protocol-aware HTTP check against `/minio/health/live` on
|
|
18
|
+
* the API port — verified answering 200 on the very first poll after boot.
|
|
19
|
+
*
|
|
20
|
+
* No-arg construction floats to `minio/minio:latest`, so the version tracks
|
|
21
|
+
* upstream rather than this library's release cycle (verified against
|
|
22
|
+
* `minio/minio:RELEASE.2025-09-07T16-13-09Z`).
|
|
23
|
+
*/
|
|
24
|
+
export declare class MinIOContainer extends GenericContainer {
|
|
25
|
+
private rootUserState;
|
|
26
|
+
private rootPasswordState;
|
|
27
|
+
constructor(image?: string | DockerImageName);
|
|
28
|
+
static start(image?: string | DockerImageName): Promise<MinIOContainer>;
|
|
29
|
+
/** Overrides `MINIO_ROOT_USER` (default `testuser`). */
|
|
30
|
+
withRootUser(user: string): this;
|
|
31
|
+
/** Overrides `MINIO_ROOT_PASSWORD` (default `testpassword`). MinIO rejects anything shorter than 8 characters. */
|
|
32
|
+
withRootPassword(password: string): this;
|
|
33
|
+
/** The configured root user (default `testuser`). */
|
|
34
|
+
get rootUser(): string;
|
|
35
|
+
/** The configured root password (default `testpassword`). */
|
|
36
|
+
get rootPassword(): string;
|
|
37
|
+
/** The S3 API's base URL for the running container. */
|
|
38
|
+
get endpointUrl(): string;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=minio.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"minio.d.ts","sourceRoot":"","sources":["../../src/modules/minio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAO/D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,cAAe,SAAQ,gBAAgB;IAClD,OAAO,CAAC,aAAa,CAAc;IACnC,OAAO,CAAC,iBAAiB,CAAkB;gBAE/B,KAAK,GAAE,MAAM,GAAG,eAA+B;WAcrC,KAAK,CAAC,KAAK,GAAE,MAAM,GAAG,eAA+B,GAAG,OAAO,CAAC,cAAc,CAAC;IAIrG,wDAAwD;IACxD,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKhC,kHAAkH;IAClH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKxC,qDAAqD;IACrD,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,6DAA6D;IAC7D,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,uDAAuD;IACvD,IAAI,WAAW,IAAI,MAAM,CAExB;CACF"}
|
|
@@ -0,0 +1,71 @@
|
|
|
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 API_PORT = 9000;
|
|
5
|
+
const CONSOLE_PORT = 9001;
|
|
6
|
+
const EXPECTED_REPOSITORY = "minio/minio";
|
|
7
|
+
const DEFAULT_IMAGE = "minio/minio:latest";
|
|
8
|
+
/**
|
|
9
|
+
* A single-node MinIO container — an S3-compatible object store. Requires
|
|
10
|
+
* an explicit command: the image's default ENTRYPOINT alone does not serve,
|
|
11
|
+
* so this module always runs `server /data --console-address :9001`.
|
|
12
|
+
*
|
|
13
|
+
* `MINIO_ROOT_USER`/`MINIO_ROOT_PASSWORD` default to `testuser`/
|
|
14
|
+
* `testpassword`, not this library's usual `test`/`test` pair — MinIO
|
|
15
|
+
* itself rejects a root password shorter than 8 characters, so `test` (4
|
|
16
|
+
* characters) is a non-starter here.
|
|
17
|
+
*
|
|
18
|
+
* Exposes both the S3 API (9000, what `endpointUrl` wraps) and the web
|
|
19
|
+
* console (9001, published for anyone who wants to open it directly; no
|
|
20
|
+
* helper wraps it).
|
|
21
|
+
*
|
|
22
|
+
* Readiness is a protocol-aware HTTP check against `/minio/health/live` on
|
|
23
|
+
* the API port — verified answering 200 on the very first poll after boot.
|
|
24
|
+
*
|
|
25
|
+
* No-arg construction floats to `minio/minio:latest`, so the version tracks
|
|
26
|
+
* upstream rather than this library's release cycle (verified against
|
|
27
|
+
* `minio/minio:RELEASE.2025-09-07T16-13-09Z`).
|
|
28
|
+
*/
|
|
29
|
+
export class MinIOContainer extends GenericContainer {
|
|
30
|
+
rootUserState = "testuser";
|
|
31
|
+
rootPasswordState = "testpassword";
|
|
32
|
+
constructor(image = DEFAULT_IMAGE) {
|
|
33
|
+
super(DockerImageName.requireCompatible(image, EXPECTED_REPOSITORY));
|
|
34
|
+
this.withExposedPorts(API_PORT, CONSOLE_PORT)
|
|
35
|
+
.withCommand("server", "/data", "--console-address", ":9001")
|
|
36
|
+
.withEnv("MINIO_ROOT_USER", this.rootUserState)
|
|
37
|
+
.withEnv("MINIO_ROOT_PASSWORD", this.rootPasswordState)
|
|
38
|
+
.waitingFor(Wait.forHttp("/minio/health/live").forPort(API_PORT));
|
|
39
|
+
// No withMemoryLimit override: the round-trip that verified this module
|
|
40
|
+
// ran at 1024 MB, but whether MinIO actually needs more than msb's
|
|
41
|
+
// default microVM sizing was never isolated in that pass — a floor
|
|
42
|
+
// belongs here once that's measured on its own, not assumed from a
|
|
43
|
+
// number that included the whole round-trip's overhead.
|
|
44
|
+
}
|
|
45
|
+
static async start(image = DEFAULT_IMAGE) {
|
|
46
|
+
return (await new MinIOContainer(image).start());
|
|
47
|
+
}
|
|
48
|
+
/** Overrides `MINIO_ROOT_USER` (default `testuser`). */
|
|
49
|
+
withRootUser(user) {
|
|
50
|
+
this.rootUserState = user;
|
|
51
|
+
return this.withEnv("MINIO_ROOT_USER", user);
|
|
52
|
+
}
|
|
53
|
+
/** Overrides `MINIO_ROOT_PASSWORD` (default `testpassword`). MinIO rejects anything shorter than 8 characters. */
|
|
54
|
+
withRootPassword(password) {
|
|
55
|
+
this.rootPasswordState = password;
|
|
56
|
+
return this.withEnv("MINIO_ROOT_PASSWORD", password);
|
|
57
|
+
}
|
|
58
|
+
/** The configured root user (default `testuser`). */
|
|
59
|
+
get rootUser() {
|
|
60
|
+
return this.rootUserState;
|
|
61
|
+
}
|
|
62
|
+
/** The configured root password (default `testpassword`). */
|
|
63
|
+
get rootPassword() {
|
|
64
|
+
return this.rootPasswordState;
|
|
65
|
+
}
|
|
66
|
+
/** The S3 API's base URL for the running container. */
|
|
67
|
+
get endpointUrl() {
|
|
68
|
+
return `http://${this.host}:${this.getMappedPort(API_PORT)}`;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=minio.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"minio.js","sourceRoot":"","sources":["../../src/modules/minio.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,YAAY,GAAG,IAAI,CAAC;AAC1B,MAAM,mBAAmB,GAAG,aAAa,CAAC;AAC1C,MAAM,aAAa,GAAG,oBAAoB,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,OAAO,cAAe,SAAQ,gBAAgB;IAC1C,aAAa,GAAG,UAAU,CAAC;IAC3B,iBAAiB,GAAG,cAAc,CAAC;IAE3C,YAAY,QAAkC,aAAa;QACzD,KAAK,CAAC,eAAe,CAAC,iBAAiB,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC;aAC1C,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,mBAAmB,EAAE,OAAO,CAAC;aAC5D,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC,aAAa,CAAC;aAC9C,OAAO,CAAC,qBAAqB,EAAE,IAAI,CAAC,iBAAiB,CAAC;aACtD,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QACpE,wEAAwE;QACxE,mEAAmE;QACnE,mEAAmE;QACnE,mEAAmE;QACnE,wDAAwD;IAC1D,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,wDAAwD;IACxD,YAAY,CAAC,IAAY;QACvB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED,kHAAkH;IAClH,gBAAgB,CAAC,QAAgB;QAC/B,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC;QAClC,OAAO,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAC;IACvD,CAAC;IAED,qDAAqD;IACrD,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,6DAA6D;IAC7D,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IAED,uDAAuD;IACvD,IAAI,WAAW;QACb,OAAO,UAAU,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC/D,CAAC;CACF"}
|