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.
Files changed (118) hide show
  1. package/README.md +16 -3
  2. package/dist/backend-msb/agent-endpoint.d.ts +25 -0
  3. package/dist/backend-msb/agent-endpoint.d.ts.map +1 -0
  4. package/dist/backend-msb/agent-endpoint.js +27 -0
  5. package/dist/backend-msb/agent-endpoint.js.map +1 -0
  6. package/dist/backend-msb/backend.d.ts +10 -0
  7. package/dist/backend-msb/backend.d.ts.map +1 -1
  8. package/dist/backend-msb/backend.js +26 -1
  9. package/dist/backend-msb/backend.js.map +1 -1
  10. package/dist/core/docker-image-name.d.ts +58 -0
  11. package/dist/core/docker-image-name.d.ts.map +1 -0
  12. package/dist/core/docker-image-name.js +127 -0
  13. package/dist/core/docker-image-name.js.map +1 -0
  14. package/dist/core/errors.d.ts +21 -0
  15. package/dist/core/errors.d.ts.map +1 -1
  16. package/dist/core/errors.js +26 -0
  17. package/dist/core/errors.js.map +1 -1
  18. package/dist/index.d.ts +8 -5
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +8 -5
  21. package/dist/index.js.map +1 -1
  22. package/dist/modules/arango.d.ts +11 -3
  23. package/dist/modules/arango.d.ts.map +1 -1
  24. package/dist/modules/arango.js +14 -4
  25. package/dist/modules/arango.js.map +1 -1
  26. package/dist/modules/cassandra.d.ts +57 -0
  27. package/dist/modules/cassandra.d.ts.map +1 -0
  28. package/dist/modules/cassandra.js +79 -0
  29. package/dist/modules/cassandra.js.map +1 -0
  30. package/dist/modules/clickhouse.d.ts +8 -2
  31. package/dist/modules/clickhouse.d.ts.map +1 -1
  32. package/dist/modules/clickhouse.js +11 -3
  33. package/dist/modules/clickhouse.js.map +1 -1
  34. package/dist/modules/elasticsearch.d.ts +49 -0
  35. package/dist/modules/elasticsearch.d.ts.map +1 -0
  36. package/dist/modules/elasticsearch.js +66 -0
  37. package/dist/modules/elasticsearch.js.map +1 -0
  38. package/dist/modules/flink.d.ts +8 -2
  39. package/dist/modules/flink.d.ts.map +1 -1
  40. package/dist/modules/flink.js +13 -4
  41. package/dist/modules/flink.js.map +1 -1
  42. package/dist/modules/floci.d.ts +30 -6
  43. package/dist/modules/floci.d.ts.map +1 -1
  44. package/dist/modules/floci.js +39 -9
  45. package/dist/modules/floci.js.map +1 -1
  46. package/dist/modules/index.d.ts +6 -1
  47. package/dist/modules/index.d.ts.map +1 -1
  48. package/dist/modules/index.js +6 -1
  49. package/dist/modules/index.js.map +1 -1
  50. package/dist/modules/kafka.d.ts +10 -3
  51. package/dist/modules/kafka.d.ts.map +1 -1
  52. package/dist/modules/kafka.js +13 -4
  53. package/dist/modules/kafka.js.map +1 -1
  54. package/dist/modules/keycloak.d.ts +10 -2
  55. package/dist/modules/keycloak.d.ts.map +1 -1
  56. package/dist/modules/keycloak.js +13 -3
  57. package/dist/modules/keycloak.js.map +1 -1
  58. package/dist/modules/mariadb.d.ts +8 -2
  59. package/dist/modules/mariadb.d.ts.map +1 -1
  60. package/dist/modules/mariadb.js +11 -3
  61. package/dist/modules/mariadb.js.map +1 -1
  62. package/dist/modules/memcached.d.ts +12 -3
  63. package/dist/modules/memcached.d.ts.map +1 -1
  64. package/dist/modules/memcached.js +15 -4
  65. package/dist/modules/memcached.js.map +1 -1
  66. package/dist/modules/minio.d.ts +40 -0
  67. package/dist/modules/minio.d.ts.map +1 -0
  68. package/dist/modules/minio.js +71 -0
  69. package/dist/modules/minio.js.map +1 -0
  70. package/dist/modules/mongodb.d.ts +7 -2
  71. package/dist/modules/mongodb.d.ts.map +1 -1
  72. package/dist/modules/mongodb.js +16 -4
  73. package/dist/modules/mongodb.js.map +1 -1
  74. package/dist/modules/mysql.d.ts +8 -2
  75. package/dist/modules/mysql.d.ts.map +1 -1
  76. package/dist/modules/mysql.js +11 -3
  77. package/dist/modules/mysql.js.map +1 -1
  78. package/dist/modules/neo4j.d.ts +7 -2
  79. package/dist/modules/neo4j.d.ts.map +1 -1
  80. package/dist/modules/neo4j.js +10 -3
  81. package/dist/modules/neo4j.js.map +1 -1
  82. package/dist/modules/pinot.d.ts +7 -2
  83. package/dist/modules/pinot.d.ts.map +1 -1
  84. package/dist/modules/pinot.js +10 -3
  85. package/dist/modules/pinot.js.map +1 -1
  86. package/dist/modules/postgres.d.ts +11 -2
  87. package/dist/modules/postgres.d.ts.map +1 -1
  88. package/dist/modules/postgres.js +14 -3
  89. package/dist/modules/postgres.js.map +1 -1
  90. package/dist/modules/qdrant.d.ts +26 -0
  91. package/dist/modules/qdrant.d.ts.map +1 -0
  92. package/dist/modules/qdrant.js +38 -0
  93. package/dist/modules/qdrant.js.map +1 -0
  94. package/dist/modules/rabbitmq.d.ts +11 -2
  95. package/dist/modules/rabbitmq.d.ts.map +1 -1
  96. package/dist/modules/rabbitmq.js +14 -3
  97. package/dist/modules/rabbitmq.js.map +1 -1
  98. package/dist/modules/redis.d.ts +8 -2
  99. package/dist/modules/redis.d.ts.map +1 -1
  100. package/dist/modules/redis.js +11 -3
  101. package/dist/modules/redis.js.map +1 -1
  102. package/dist/modules/redpanda.d.ts +15 -6
  103. package/dist/modules/redpanda.d.ts.map +1 -1
  104. package/dist/modules/redpanda.js +18 -7
  105. package/dist/modules/redpanda.js.map +1 -1
  106. package/dist/modules/spring-cloud-config.d.ts +7 -2
  107. package/dist/modules/spring-cloud-config.d.ts.map +1 -1
  108. package/dist/modules/spring-cloud-config.js +10 -3
  109. package/dist/modules/spring-cloud-config.js.map +1 -1
  110. package/dist/modules/valkey.d.ts +28 -0
  111. package/dist/modules/valkey.d.ts.map +1 -0
  112. package/dist/modules/valkey.js +41 -0
  113. package/dist/modules/valkey.js.map +1 -0
  114. package/dist/modules/wiremock.d.ts +7 -2
  115. package/dist/modules/wiremock.d.ts.map +1 -1
  116. package/dist/modules/wiremock.js +10 -3
  117. package/dist/modules/wiremock.js.map +1 -1
  118. package/package.json +1 -1
@@ -1,14 +1,19 @@
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 MongoDB container running as a one-member replica set
4
5
  * (required for transactions/change streams). `containerIsStarted`
5
6
  * initiates the replica set and waits for a primary to be elected before
6
7
  * `start()` returns, so `connectionString` is always usable immediately
7
8
  * after the container boots.
9
+ *
10
+ * No-arg construction floats to `mongo:latest`, so the version tracks
11
+ * upstream rather than this library's release cycle (verified against
12
+ * `mongo:8.0`).
8
13
  */
9
14
  export declare class MongoDBContainer extends GenericContainer {
10
- constructor(image?: string);
11
- static start(image?: string): Promise<MongoDBContainer>;
15
+ constructor(image?: string | DockerImageName);
16
+ static start(image?: string | DockerImageName): Promise<MongoDBContainer>;
12
17
  protected containerIsStarted(): Promise<void>;
13
18
  private pollUntil;
14
19
  /** A `mongodb://` connection string for the running container's `test` database. */
@@ -1 +1 @@
1
- {"version":3,"file":"mongodb.d.ts","sourceRoot":"","sources":["../../src/modules/mongodb.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAWhE;;;;;;GAMG;AACH,qBAAa,gBAAiB,SAAQ,gBAAgB;gBACxC,KAAK,SAAc;WAOT,KAAK,CAAC,KAAK,SAAc,GAAG,OAAO,CAAC,gBAAgB,CAAC;cAIlD,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;YAqB9C,SAAS;IAqBvB,oFAAoF;IACpF,IAAI,gBAAgB,IAAI,MAAM,CAE7B;IAED,yFAAyF;IACzF,IAAI,aAAa,IAAI,MAAM,CAE1B;CACF"}
1
+ {"version":3,"file":"mongodb.d.ts","sourceRoot":"","sources":["../../src/modules/mongodb.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAiB/D;;;;;;;;;;GAUG;AACH,qBAAa,gBAAiB,SAAQ,gBAAgB;gBACxC,KAAK,GAAE,MAAM,GAAG,eAA+B;WAOrC,KAAK,CAAC,KAAK,GAAE,MAAM,GAAG,eAA+B,GAAG,OAAO,CAAC,gBAAgB,CAAC;cAI9E,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;YAqB9C,SAAS;IAqBvB,oFAAoF;IACpF,IAAI,gBAAgB,IAAI,MAAM,CAE7B;IAED,yFAAyF;IACzF,IAAI,aAAa,IAAI,MAAM,CAE1B;CACF"}
@@ -1,8 +1,16 @@
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 = 27017;
4
- const REPLICA_SET_TIMEOUT_MS = 60_000;
5
+ // 180s, not the 60s this module used while it pinned `mongo:8.0`. A loaded Windows CI
6
+ // runner was observed failing `rs.initiate` at the 60s mark against the floating default
7
+ // (`mongo:latest`, 8.2.12 at the time), on a run whose whole suite took 28 minutes. This
8
+ // matches the budget the MySQL and ClickHouse modules already carry for the same reason:
9
+ // a first-boot sequence that is comfortable locally and marginal on a contended runner.
10
+ const REPLICA_SET_TIMEOUT_MS = 180_000;
5
11
  const POLL_INTERVAL_MS = 500;
12
+ const EXPECTED_REPOSITORY = "mongo";
13
+ const DEFAULT_IMAGE = "mongo:latest";
6
14
  function sleep(ms) {
7
15
  return new Promise((r) => setTimeout(r, ms));
8
16
  }
@@ -12,15 +20,19 @@ function sleep(ms) {
12
20
  * initiates the replica set and waits for a primary to be elected before
13
21
  * `start()` returns, so `connectionString` is always usable immediately
14
22
  * after the container boots.
23
+ *
24
+ * No-arg construction floats to `mongo:latest`, so the version tracks
25
+ * upstream rather than this library's release cycle (verified against
26
+ * `mongo:8.0`).
15
27
  */
16
28
  export class MongoDBContainer extends GenericContainer {
17
- constructor(image = "mongo:8.0") {
18
- super(image);
29
+ constructor(image = DEFAULT_IMAGE) {
30
+ super(DockerImageName.requireCompatible(image, EXPECTED_REPOSITORY));
19
31
  this.withExposedPorts(GUEST_PORT)
20
32
  .withCommand("mongod", "--replSet", "docker-rs", "--bind_ip_all")
21
33
  .waitingFor(Wait.forListeningPort());
22
34
  }
23
- static async start(image = "mongo:8.0") {
35
+ static async start(image = DEFAULT_IMAGE) {
24
36
  return (await new MongoDBContainer(image).start());
25
37
  }
26
38
  async containerIsStarted() {
@@ -1 +1 @@
1
- {"version":3,"file":"mongodb.js","sourceRoot":"","sources":["../../src/modules/mongodb.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mongodb.js","sourceRoot":"","sources":["../../src/modules/mongodb.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,KAAK,CAAC;AACzB,sFAAsF;AACtF,yFAAyF;AACzF,yFAAyF;AACzF,yFAAyF;AACzF,wFAAwF;AACxF,MAAM,sBAAsB,GAAG,OAAO,CAAC;AACvC,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAC7B,MAAM,mBAAmB,GAAG,OAAO,CAAC;AACpC,MAAM,aAAa,GAAG,cAAc,CAAC;AAErC,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,OAAO,gBAAiB,SAAQ,gBAAgB;IACpD,YAAY,QAAkC,aAAa;QACzD,KAAK,CAAC,eAAe,CAAC,iBAAiB,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;aAC9B,WAAW,CAAC,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,CAAC;aAChE,UAAU,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACzC,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;IAEkB,KAAK,CAAC,kBAAkB;QACzC,MAAM,IAAI,CAAC,SAAS,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;YACxD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,SAAS,EACT,SAAS,EACT,QAAQ,EACR,iDAAiD,CAClD,CAAC;YACF,OAAO,MAAM,CAAC,QAAQ,KAAK,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,SAAS,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;YACzD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,8BAA8B,CAAC,CAAC;YAC/F,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC;IAED,iEAAiE;IACjE,mEAAmE;IACnE,uEAAuE;IACvE,6DAA6D;IAC7D,wEAAwE;IAChE,KAAK,CAAC,SAAS,CAAC,IAAY,EAAE,IAA4B;QAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,sBAAsB,CAAC;QACrD,SAAS,CAAC;YACR,IAAI,KAAK,GAAG,KAAK,CAAC;YAClB,IAAI,CAAC;gBACH,KAAK,GAAG,MAAM,IAAI,EAAE,CAAC;YACvB,CAAC;YAAC,MAAM,CAAC;gBACP,KAAK,GAAG,KAAK,CAAC;YAChB,CAAC;YACD,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO;YACT,CAAC;YACD,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,QAAQ,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CACb,wBAAwB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,mBAAmB,IAAI,YAAY,sBAAsB,GAAG,IAAI,GAAG,CACvI,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED,oFAAoF;IACpF,IAAI,gBAAgB;QAClB,OAAO,aAAa,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,6BAA6B,CAAC;IAC/F,CAAC;IAED,yFAAyF;IACzF,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,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 MySQL container. Defaults to a `test`/`test`/`test`
4
5
  * user/password/database trio (plus `MYSQL_ROOT_PASSWORD=test`) so
@@ -36,13 +37,18 @@ import { GenericContainer } from "../core/generic-container.js";
36
37
  * 3306` with a trailing non-digit-or-end boundary, so it cannot match
37
38
  * `33060`, and `times=1` is then unambiguous (that exact line appears once,
38
39
  * only after the real server is up).
40
+ *
41
+ * No-arg construction floats to `mysql:latest`, so the version tracks
42
+ * upstream rather than this library's release cycle (verified against
43
+ * `mysql:8.4`, including the readiness regex above and the log excerpt it
44
+ * was captured from).
39
45
  */
40
46
  export declare class MySQLContainer extends GenericContainer {
41
47
  private usernameState;
42
48
  private passwordState;
43
49
  private databaseState;
44
- constructor(image?: string);
45
- static start(image?: string): Promise<MySQLContainer>;
50
+ constructor(image?: string | DockerImageName);
51
+ static start(image?: string | DockerImageName): Promise<MySQLContainer>;
46
52
  /** Overrides `MYSQL_USER` (default `test`). */
47
53
  withUsername(username: string): this;
48
54
  /** Overrides `MYSQL_PASSWORD` (default `test`). */
@@ -1 +1 @@
1
- {"version":3,"file":"mysql.d.ts","sourceRoot":"","sources":["../../src/modules/mysql.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAKhE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,qBAAa,cAAe,SAAQ,gBAAgB;IAClD,OAAO,CAAC,aAAa,CAAU;IAC/B,OAAO,CAAC,aAAa,CAAU;IAC/B,OAAO,CAAC,aAAa,CAAU;gBAEnB,KAAK,SAAc;WAwBT,KAAK,CAAC,KAAK,SAAc,GAAG,OAAO,CAAC,cAAc,CAAC;IAIzE,+CAA+C;IAC/C,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKpC,mDAAmD;IACnD,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKpC,mDAAmD;IACnD,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,iFAAiF;IACjF,IAAI,gBAAgB,IAAI,MAAM,CAE7B;CACF"}
1
+ {"version":3,"file":"mysql.d.ts","sourceRoot":"","sources":["../../src/modules/mysql.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAM/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,qBAAa,cAAe,SAAQ,gBAAgB;IAClD,OAAO,CAAC,aAAa,CAAU;IAC/B,OAAO,CAAC,aAAa,CAAU;IAC/B,OAAO,CAAC,aAAa,CAAU;gBAEnB,KAAK,GAAE,MAAM,GAAG,eAA+B;WAwBrC,KAAK,CAAC,KAAK,GAAE,MAAM,GAAG,eAA+B,GAAG,OAAO,CAAC,cAAc,CAAC;IAIrG,+CAA+C;IAC/C,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKpC,mDAAmD;IACnD,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKpC,mDAAmD;IACnD,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,iFAAiF;IACjF,IAAI,gBAAgB,IAAI,MAAM,CAE7B;CACF"}
@@ -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 = "mysql";
6
+ const DEFAULT_IMAGE = "mysql:latest";
4
7
  /**
5
8
  * A single-node MySQL container. Defaults to a `test`/`test`/`test`
6
9
  * user/password/database trio (plus `MYSQL_ROOT_PASSWORD=test`) so
@@ -38,13 +41,18 @@ const GUEST_PORT = 3306;
38
41
  * 3306` with a trailing non-digit-or-end boundary, so it cannot match
39
42
  * `33060`, and `times=1` is then unambiguous (that exact line appears once,
40
43
  * only after the real server is up).
44
+ *
45
+ * No-arg construction floats to `mysql:latest`, so the version tracks
46
+ * upstream rather than this library's release cycle (verified against
47
+ * `mysql:8.4`, including the readiness regex above and the log excerpt it
48
+ * was captured from).
41
49
  */
42
50
  export class MySQLContainer extends GenericContainer {
43
51
  usernameState = "test";
44
52
  passwordState = "test";
45
53
  databaseState = "test";
46
- constructor(image = "mysql:8.4") {
47
- super(image);
54
+ constructor(image = DEFAULT_IMAGE) {
55
+ super(DockerImageName.requireCompatible(image, EXPECTED_REPOSITORY));
48
56
  this.withExposedPorts(GUEST_PORT)
49
57
  .withEnv("MYSQL_USER", this.usernameState)
50
58
  .withEnv("MYSQL_PASSWORD", this.passwordState)
@@ -64,7 +72,7 @@ export class MySQLContainer extends GenericContainer {
64
72
  // image, MySQL 8.4's InnoDB default footprint fits msb's default ~450M
65
73
  // microVM RAM, so no module-level memory floor is warranted here.
66
74
  }
67
- static async start(image = "mysql:8.4") {
75
+ static async start(image = DEFAULT_IMAGE) {
68
76
  return (await new MySQLContainer(image).start());
69
77
  }
70
78
  /** Overrides `MYSQL_USER` (default `test`). */
@@ -1 +1 @@
1
- {"version":3,"file":"mysql.js","sourceRoot":"","sources":["../../src/modules/mysql.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAEvC,MAAM,UAAU,GAAG,IAAI,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,MAAM,OAAO,cAAe,SAAQ,gBAAgB;IAC1C,aAAa,GAAG,MAAM,CAAC;IACvB,aAAa,GAAG,MAAM,CAAC;IACvB,aAAa,GAAG,MAAM,CAAC;IAE/B,YAAY,KAAK,GAAG,WAAW;QAC7B,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;aAC9B,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC;aACzC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,aAAa,CAAC;aAC7C,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,aAAa,CAAC;aAC7C,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC;YACvC,gEAAgE;YAChE,qEAAqE;YACrE,iDAAiD;YACjD,mEAAmE;YACnE,mEAAmE;YACnE,iEAAiE;YACjE,kEAAkE;YAClE,qEAAqE;YACrE,yCAAyC;aACxC,UAAU,CACT,IAAI,CAAC,aAAa,CAAC,yDAAyD,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAC7G,CAAC;QACJ,qEAAqE;QACrE,uEAAuE;QACvE,kEAAkE;IACpE,CAAC;IAED,MAAM,CAAU,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,WAAW;QAC7C,OAAO,CAAC,MAAM,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAmB,CAAC;IACrE,CAAC;IAED,+CAA+C;IAC/C,YAAY,CAAC,QAAgB;QAC3B,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAED,mDAAmD;IACnD,YAAY,CAAC,QAAgB;QAC3B,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;IAClD,CAAC;IAED,mDAAmD;IACnD,YAAY,CAAC,QAAgB;QAC3B,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;IAClD,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,iFAAiF;IACjF,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
+ {"version":3,"file":"mysql.js","sourceRoot":"","sources":["../../src/modules/mysql.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,OAAO,CAAC;AACpC,MAAM,aAAa,GAAG,cAAc,CAAC;AAErC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,MAAM,OAAO,cAAe,SAAQ,gBAAgB;IAC1C,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,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC;aACzC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,aAAa,CAAC;aAC7C,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,aAAa,CAAC;aAC7C,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC;YACvC,gEAAgE;YAChE,qEAAqE;YACrE,iDAAiD;YACjD,mEAAmE;YACnE,mEAAmE;YACnE,iEAAiE;YACjE,kEAAkE;YAClE,qEAAqE;YACrE,yCAAyC;aACxC,UAAU,CACT,IAAI,CAAC,aAAa,CAAC,yDAAyD,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAC7G,CAAC;QACJ,qEAAqE;QACrE,uEAAuE;QACvE,kEAAkE;IACpE,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,+CAA+C;IAC/C,YAAY,CAAC,QAAgB;QAC3B,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAED,mDAAmD;IACnD,YAAY,CAAC,QAAgB;QAC3B,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;IAClD,CAAC;IAED,mDAAmD;IACnD,YAAY,CAAC,QAAgB;QAC3B,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;IAClD,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,iFAAiF;IACjF,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
  /**
3
4
  * A single-node Neo4j Community container, queried over its HTTP Cypher
4
5
  * transaction endpoint (`/db/neo4j/tx/commit`) — no bolt driver dependency
@@ -41,11 +42,15 @@ import { GenericContainer } from "../core/generic-container.js";
41
42
  * no memory cap sits at ~430MiB RSS, just over that default budget.
42
43
  * `withMemoryLimit(1024)` is this module's default (verified: boots clean,
43
44
  * the HTTP Cypher endpoint answers well within the startup timeout).
45
+ *
46
+ * No-arg construction floats to `neo4j:latest`, so the version tracks
47
+ * upstream rather than this library's release cycle (verified against
48
+ * `neo4j:5-community`, including every fact above).
44
49
  */
45
50
  export declare class Neo4jContainer extends GenericContainer {
46
51
  private passwordState;
47
- constructor(image?: string);
48
- static start(image?: string): Promise<Neo4jContainer>;
52
+ constructor(image?: string | DockerImageName);
53
+ static start(image?: string | DockerImageName): Promise<Neo4jContainer>;
49
54
  /** Overrides `NEO4J_AUTH`'s password half (default `rightsize-test`; the image requires at least 8 characters). */
50
55
  withPassword(password: string): this;
51
56
  /** The fixed admin username (`neo4j` — the image has no env var to change it). */
@@ -1 +1 @@
1
- {"version":3,"file":"neo4j.d.ts","sourceRoot":"","sources":["../../src/modules/neo4j.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAOhE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,qBAAa,cAAe,SAAQ,gBAAgB;IAClD,OAAO,CAAC,aAAa,CAAoB;gBAE7B,KAAK,SAAsB;WAQjB,KAAK,CAAC,KAAK,SAAsB,GAAG,OAAO,CAAC,cAAc,CAAC;IAIjF,mHAAmH;IACnH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKpC,kFAAkF;IAClF,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,gEAAgE;IAChE,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,mGAAmG;IACnG,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,kGAAkG;IAClG,IAAI,OAAO,IAAI,MAAM,CAEpB;CACF"}
1
+ {"version":3,"file":"neo4j.d.ts","sourceRoot":"","sources":["../../src/modules/neo4j.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAQ/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,qBAAa,cAAe,SAAQ,gBAAgB;IAClD,OAAO,CAAC,aAAa,CAAoB;gBAE7B,KAAK,GAAE,MAAM,GAAG,eAA+B;WAQrC,KAAK,CAAC,KAAK,GAAE,MAAM,GAAG,eAA+B,GAAG,OAAO,CAAC,cAAc,CAAC;IAIrG,mHAAmH;IACnH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKpC,kFAAkF;IAClF,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,gEAAgE;IAChE,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,mGAAmG;IACnG,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,kGAAkG;IAClG,IAAI,OAAO,IAAI,MAAM,CAEpB;CACF"}
@@ -1,8 +1,11 @@
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 = 7474;
4
5
  const BOLT_PORT = 7687;
5
6
  const DEFAULT_PASSWORD = "rightsize-test";
7
+ const EXPECTED_REPOSITORY = "neo4j";
8
+ const DEFAULT_IMAGE = "neo4j:latest";
6
9
  /**
7
10
  * A single-node Neo4j Community container, queried over its HTTP Cypher
8
11
  * transaction endpoint (`/db/neo4j/tx/commit`) — no bolt driver dependency
@@ -45,17 +48,21 @@ const DEFAULT_PASSWORD = "rightsize-test";
45
48
  * no memory cap sits at ~430MiB RSS, just over that default budget.
46
49
  * `withMemoryLimit(1024)` is this module's default (verified: boots clean,
47
50
  * the HTTP Cypher endpoint answers well within the startup timeout).
51
+ *
52
+ * No-arg construction floats to `neo4j:latest`, so the version tracks
53
+ * upstream rather than this library's release cycle (verified against
54
+ * `neo4j:5-community`, including every fact above).
48
55
  */
49
56
  export class Neo4jContainer extends GenericContainer {
50
57
  passwordState = DEFAULT_PASSWORD;
51
- constructor(image = "neo4j:5-community") {
52
- super(image);
58
+ constructor(image = DEFAULT_IMAGE) {
59
+ super(DockerImageName.requireCompatible(image, EXPECTED_REPOSITORY));
53
60
  this.withExposedPorts(HTTP_PORT, BOLT_PORT)
54
61
  .withEnv("NEO4J_AUTH", `neo4j/${this.passwordState}`)
55
62
  .withMemoryLimit(1024)
56
63
  .waitingFor(Wait.forLogMessage(".*Started\\..*", 1).withStartupTimeout(120_000));
57
64
  }
58
- static async start(image = "neo4j:5-community") {
65
+ static async start(image = DEFAULT_IMAGE) {
59
66
  return (await new Neo4jContainer(image).start());
60
67
  }
61
68
  /** Overrides `NEO4J_AUTH`'s password half (default `rightsize-test`; the image requires at least 8 characters). */
@@ -1 +1 @@
1
- {"version":3,"file":"neo4j.js","sourceRoot":"","sources":["../../src/modules/neo4j.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAEvC,MAAM,SAAS,GAAG,IAAI,CAAC;AACvB,MAAM,SAAS,GAAG,IAAI,CAAC;AACvB,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;AAE1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,MAAM,OAAO,cAAe,SAAQ,gBAAgB;IAC1C,aAAa,GAAG,gBAAgB,CAAC;IAEzC,YAAY,KAAK,GAAG,mBAAmB;QACrC,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC;aACxC,OAAO,CAAC,YAAY,EAAE,SAAS,IAAI,CAAC,aAAa,EAAE,CAAC;aACpD,eAAe,CAAC,IAAI,CAAC;aACrB,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;IACrF,CAAC;IAED,MAAM,CAAU,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,mBAAmB;QACrD,OAAO,CAAC,MAAM,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAmB,CAAC;IACrE,CAAC;IAED,mHAAmH;IACnH,YAAY,CAAC,QAAgB;QAC3B,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,SAAS,QAAQ,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,kFAAkF;IAClF,IAAI,QAAQ;QACV,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,gEAAgE;IAChE,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,mGAAmG;IACnG,IAAI,OAAO;QACT,OAAO,UAAU,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;IAChE,CAAC;IAED,kGAAkG;IAClG,IAAI,OAAO;QACT,OAAO,UAAU,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;IAChE,CAAC;CACF"}
1
+ {"version":3,"file":"neo4j.js","sourceRoot":"","sources":["../../src/modules/neo4j.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,SAAS,GAAG,IAAI,CAAC;AACvB,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;AAC1C,MAAM,mBAAmB,GAAG,OAAO,CAAC;AACpC,MAAM,aAAa,GAAG,cAAc,CAAC;AAErC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,MAAM,OAAO,cAAe,SAAQ,gBAAgB;IAC1C,aAAa,GAAG,gBAAgB,CAAC;IAEzC,YAAY,QAAkC,aAAa;QACzD,KAAK,CAAC,eAAe,CAAC,iBAAiB,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC;aACxC,OAAO,CAAC,YAAY,EAAE,SAAS,IAAI,CAAC,aAAa,EAAE,CAAC;aACpD,eAAe,CAAC,IAAI,CAAC;aACrB,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;IACrF,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,mHAAmH;IACnH,YAAY,CAAC,QAAgB;QAC3B,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,SAAS,QAAQ,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,kFAAkF;IAClF,IAAI,QAAQ;QACV,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,gEAAgE;IAChE,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,mGAAmG;IACnG,IAAI,OAAO;QACT,OAAO,UAAU,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;IAChE,CAAC;IAED,kGAAkG;IAClG,IAAI,OAAO;QACT,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-container Apache Pinot QuickStart cluster (controller + broker +
4
5
  * server + ZooKeeper, all four JVMs colocated in one image, started with
@@ -18,10 +19,14 @@ import { GenericContainer } from "../core/generic-container.js";
18
19
  * under any load; 4096MB is the first limit that boots AND stays stable
19
20
  * (~74% steady-state utilization). This is a hard floor, not a tunable
20
21
  * default — do not lower it.
22
+ *
23
+ * No-arg construction floats to `apachepinot/pinot:latest`, so the version
24
+ * tracks upstream rather than this library's release cycle (verified
25
+ * against `apachepinot/pinot:1.5.1`, including both facts above).
21
26
  */
22
27
  export declare class PinotContainer extends GenericContainer {
23
- constructor(image?: string);
24
- static start(image?: string): Promise<PinotContainer>;
28
+ constructor(image?: string | DockerImageName);
29
+ static start(image?: string | DockerImageName): Promise<PinotContainer>;
25
30
  /** The controller's REST base URL (schema/table admin, `/health`). */
26
31
  get controllerUrl(): string;
27
32
  /** The broker's query base URL. */
@@ -1 +1 @@
1
- {"version":3,"file":"pinot.d.ts","sourceRoot":"","sources":["../../src/modules/pinot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAOhE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,cAAe,SAAQ,gBAAgB;gBACtC,KAAK,SAA4B;WAWvB,KAAK,CAAC,KAAK,SAA4B,GAAG,OAAO,CAAC,cAAc,CAAC;IAIvF,sEAAsE;IACtE,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,mCAAmC;IACnC,IAAI,SAAS,IAAI,MAAM,CAEtB;CACF"}
1
+ {"version":3,"file":"pinot.d.ts","sourceRoot":"","sources":["../../src/modules/pinot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAQ/D;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,cAAe,SAAQ,gBAAgB;gBACtC,KAAK,GAAE,MAAM,GAAG,eAA+B;WAWrC,KAAK,CAAC,KAAK,GAAE,MAAM,GAAG,eAA+B,GAAG,OAAO,CAAC,cAAc,CAAC;IAIrG,sEAAsE;IACtE,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,mCAAmC;IACnC,IAAI,SAAS,IAAI,MAAM,CAEtB;CACF"}
@@ -1,8 +1,11 @@
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 CONTROLLER_PORT = 9000;
4
5
  const BROKER_PORT = 8000;
5
6
  const STARTUP_TIMEOUT_MS = 180_000;
7
+ const EXPECTED_REPOSITORY = "apachepinot/pinot";
8
+ const DEFAULT_IMAGE = "apachepinot/pinot:latest";
6
9
  /**
7
10
  * A single-container Apache Pinot QuickStart cluster (controller + broker +
8
11
  * server + ZooKeeper, all four JVMs colocated in one image, started with
@@ -22,10 +25,14 @@ const STARTUP_TIMEOUT_MS = 180_000;
22
25
  * under any load; 4096MB is the first limit that boots AND stays stable
23
26
  * (~74% steady-state utilization). This is a hard floor, not a tunable
24
27
  * default — do not lower it.
28
+ *
29
+ * No-arg construction floats to `apachepinot/pinot:latest`, so the version
30
+ * tracks upstream rather than this library's release cycle (verified
31
+ * against `apachepinot/pinot:1.5.1`, including both facts above).
25
32
  */
26
33
  export class PinotContainer extends GenericContainer {
27
- constructor(image = "apachepinot/pinot:1.5.1") {
28
- super(image);
34
+ constructor(image = DEFAULT_IMAGE) {
35
+ super(DockerImageName.requireCompatible(image, EXPECTED_REPOSITORY));
29
36
  this.withExposedPorts(CONTROLLER_PORT, BROKER_PORT)
30
37
  .withCommand("QuickStart", "-type", "EMPTY")
31
38
  .withMemoryLimit(4096)
@@ -34,7 +41,7 @@ export class PinotContainer extends GenericContainer {
34
41
  // masking a real hang.
35
42
  .waitingFor(Wait.forHttp("/health").forPort(CONTROLLER_PORT).withStartupTimeout(STARTUP_TIMEOUT_MS));
36
43
  }
37
- static async start(image = "apachepinot/pinot:1.5.1") {
44
+ static async start(image = DEFAULT_IMAGE) {
38
45
  return (await new PinotContainer(image).start());
39
46
  }
40
47
  /** The controller's REST base URL (schema/table admin, `/health`). */
@@ -1 +1 @@
1
- {"version":3,"file":"pinot.js","sourceRoot":"","sources":["../../src/modules/pinot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAEvC,MAAM,eAAe,GAAG,IAAI,CAAC;AAC7B,MAAM,WAAW,GAAG,IAAI,CAAC;AACzB,MAAM,kBAAkB,GAAG,OAAO,CAAC;AAEnC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,OAAO,cAAe,SAAQ,gBAAgB;IAClD,YAAY,KAAK,GAAG,yBAAyB;QAC3C,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE,WAAW,CAAC;aAChD,WAAW,CAAC,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC;aAC3C,eAAe,CAAC,IAAI,CAAC;YACtB,uEAAuE;YACvE,qEAAqE;YACrE,uBAAuB;aACtB,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC,CAAC;IACzG,CAAC;IAED,MAAM,CAAU,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,yBAAyB;QAC3D,OAAO,CAAC,MAAM,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAmB,CAAC;IACrE,CAAC;IAED,sEAAsE;IACtE,IAAI,aAAa;QACf,OAAO,UAAU,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE,CAAC;IACtE,CAAC;IAED,mCAAmC;IACnC,IAAI,SAAS;QACX,OAAO,UAAU,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;IAClE,CAAC;CACF"}
1
+ {"version":3,"file":"pinot.js","sourceRoot":"","sources":["../../src/modules/pinot.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,eAAe,GAAG,IAAI,CAAC;AAC7B,MAAM,WAAW,GAAG,IAAI,CAAC;AACzB,MAAM,kBAAkB,GAAG,OAAO,CAAC;AACnC,MAAM,mBAAmB,GAAG,mBAAmB,CAAC;AAChD,MAAM,aAAa,GAAG,0BAA0B,CAAC;AAEjD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;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,eAAe,EAAE,WAAW,CAAC;aAChD,WAAW,CAAC,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC;aAC3C,eAAe,CAAC,IAAI,CAAC;YACtB,uEAAuE;YACvE,qEAAqE;YACrE,uBAAuB;aACtB,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC,CAAC;IACzG,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,IAAI,aAAa;QACf,OAAO,UAAU,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE,CAAC;IACtE,CAAC;IAED,mCAAmC;IACnC,IAAI,SAAS;QACX,OAAO,UAAU,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;IAClE,CAAC;CACF"}
@@ -1,16 +1,25 @@
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 PostgreSQL container. Defaults to a `test`/`test`/`test`
4
5
  * user/password/database trio so `connectionString` is usable with zero
5
6
  * configuration; call `withUsername`/`withPassword`/`withDatabase` before
6
7
  * `start()` to override any of them.
8
+ *
9
+ * No-arg construction floats to `postgres:latest`, so the version tracks
10
+ * upstream rather than this library's release cycle (verified against
11
+ * `postgres:18-alpine`, including the wait-strategy and `DOCKER_PG_LLVM_DEPS`
12
+ * facts below). `latest` is Debian-based rather than Alpine — functionally
13
+ * equivalent, larger to pull. The `DOCKER_PG_LLVM_DEPS` override stays in
14
+ * place regardless: it's a no-op against a build that never baked the
15
+ * problem tab character, and required against one that does.
7
16
  */
8
17
  export declare class PostgresContainer extends GenericContainer {
9
18
  private usernameState;
10
19
  private passwordState;
11
20
  private databaseState;
12
- constructor(image?: string);
13
- static start(image?: string): Promise<PostgresContainer>;
21
+ constructor(image?: string | DockerImageName);
22
+ static start(image?: string | DockerImageName): Promise<PostgresContainer>;
14
23
  /** Overrides `POSTGRES_USER` (default `test`). */
15
24
  withUsername(username: string): this;
16
25
  /** Overrides `POSTGRES_PASSWORD` (default `test`). */
@@ -1 +1 @@
1
- {"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../src/modules/postgres.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAKhE;;;;;GAKG;AACH,qBAAa,iBAAkB,SAAQ,gBAAgB;IACrD,OAAO,CAAC,aAAa,CAAU;IAC/B,OAAO,CAAC,aAAa,CAAU;IAC/B,OAAO,CAAC,aAAa,CAAU;gBAEnB,KAAK,SAAuB;WAyBlB,KAAK,CAAC,KAAK,SAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAIrF,kDAAkD;IAClD,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKpC,sDAAsD;IACtD,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKpC,gDAAgD;IAChD,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,oFAAoF;IACpF,IAAI,gBAAgB,IAAI,MAAM,CAE7B;CACF"}
1
+ {"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../src/modules/postgres.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAM/D;;;;;;;;;;;;;GAaG;AACH,qBAAa,iBAAkB,SAAQ,gBAAgB;IACrD,OAAO,CAAC,aAAa,CAAU;IAC/B,OAAO,CAAC,aAAa,CAAU;IAC/B,OAAO,CAAC,aAAa,CAAU;gBAEnB,KAAK,GAAE,MAAM,GAAG,eAA+B;WAyBrC,KAAK,CAAC,KAAK,GAAE,MAAM,GAAG,eAA+B,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAIxG,kDAAkD;IAClD,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKpC,sDAAsD;IACtD,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKpC,gDAAgD;IAChD,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,oFAAoF;IACpF,IAAI,gBAAgB,IAAI,MAAM,CAE7B;CACF"}
@@ -1,18 +1,29 @@
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 = 5432;
5
+ const EXPECTED_REPOSITORY = "postgres";
6
+ const DEFAULT_IMAGE = "postgres:latest";
4
7
  /**
5
8
  * A single-node PostgreSQL container. Defaults to a `test`/`test`/`test`
6
9
  * user/password/database trio so `connectionString` is usable with zero
7
10
  * configuration; call `withUsername`/`withPassword`/`withDatabase` before
8
11
  * `start()` to override any of them.
12
+ *
13
+ * No-arg construction floats to `postgres:latest`, so the version tracks
14
+ * upstream rather than this library's release cycle (verified against
15
+ * `postgres:18-alpine`, including the wait-strategy and `DOCKER_PG_LLVM_DEPS`
16
+ * facts below). `latest` is Debian-based rather than Alpine — functionally
17
+ * equivalent, larger to pull. The `DOCKER_PG_LLVM_DEPS` override stays in
18
+ * place regardless: it's a no-op against a build that never baked the
19
+ * problem tab character, and required against one that does.
9
20
  */
10
21
  export class PostgresContainer extends GenericContainer {
11
22
  usernameState = "test";
12
23
  passwordState = "test";
13
24
  databaseState = "test";
14
- constructor(image = "postgres:18-alpine") {
15
- super(image);
25
+ constructor(image = DEFAULT_IMAGE) {
26
+ super(DockerImageName.requireCompatible(image, EXPECTED_REPOSITORY));
16
27
  this.withExposedPorts(GUEST_PORT)
17
28
  .withEnv("POSTGRES_USER", this.usernameState)
18
29
  .withEnv("POSTGRES_PASSWORD", this.passwordState)
@@ -35,7 +46,7 @@ export class PostgresContainer extends GenericContainer {
35
46
  // down. times=2 waits for the second, durable listen.
36
47
  .waitingFor(Wait.forLogMessage(".*database system is ready to accept connections.*", 2));
37
48
  }
38
- static async start(image = "postgres:18-alpine") {
49
+ static async start(image = DEFAULT_IMAGE) {
39
50
  return (await new PostgresContainer(image).start());
40
51
  }
41
52
  /** Overrides `POSTGRES_USER` (default `test`). */
@@ -1 +1 @@
1
- {"version":3,"file":"postgres.js","sourceRoot":"","sources":["../../src/modules/postgres.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAEvC,MAAM,UAAU,GAAG,IAAI,CAAC;AAExB;;;;;GAKG;AACH,MAAM,OAAO,iBAAkB,SAAQ,gBAAgB;IAC7C,aAAa,GAAG,MAAM,CAAC;IACvB,aAAa,GAAG,MAAM,CAAC;IACvB,aAAa,GAAG,MAAM,CAAC;IAE/B,YAAY,KAAK,GAAG,oBAAoB;QACtC,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;aAC9B,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC;aAC5C,OAAO,CAAC,mBAAmB,EAAE,IAAI,CAAC,aAAa,CAAC;aAChD,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC;YAC3C,sEAAsE;YACtE,4DAA4D;YAC5D,+DAA+D;YAC/D,qEAAqE;YACrE,mEAAmE;YACnE,oEAAoE;YACpE,qEAAqE;YACrE,kEAAkE;YAClE,mEAAmE;aAClE,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC;YACnC,+DAA+D;YAC/D,qEAAqE;YACrE,iEAAiE;YACjE,gEAAgE;YAChE,mEAAmE;YACnE,sDAAsD;aACrD,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,oDAAoD,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7F,CAAC;IAED,MAAM,CAAU,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,oBAAoB;QACtD,OAAO,CAAC,MAAM,IAAI,iBAAiB,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAsB,CAAC;IAC3E,CAAC;IAED,kDAAkD;IAClD,YAAY,CAAC,QAAgB;QAC3B,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;IACjD,CAAC;IAED,sDAAsD;IACtD,YAAY,CAAC,QAAgB;QAC3B,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;IACrD,CAAC;IAED,gDAAgD;IAChD,YAAY,CAAC,QAAgB;QAC3B,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAC/C,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,oFAAoF;IACpF,IAAI,gBAAgB;QAClB,OAAO,cAAc,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;IACvI,CAAC;CACF"}
1
+ {"version":3,"file":"postgres.js","sourceRoot":"","sources":["../../src/modules/postgres.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,UAAU,CAAC;AACvC,MAAM,aAAa,GAAG,iBAAiB,CAAC;AAExC;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,iBAAkB,SAAQ,gBAAgB;IAC7C,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,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC;aAC5C,OAAO,CAAC,mBAAmB,EAAE,IAAI,CAAC,aAAa,CAAC;aAChD,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC;YAC3C,sEAAsE;YACtE,4DAA4D;YAC5D,+DAA+D;YAC/D,qEAAqE;YACrE,mEAAmE;YACnE,oEAAoE;YACpE,qEAAqE;YACrE,kEAAkE;YAClE,mEAAmE;aAClE,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC;YACnC,+DAA+D;YAC/D,qEAAqE;YACrE,iEAAiE;YACjE,gEAAgE;YAChE,mEAAmE;YACnE,sDAAsD;aACrD,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,oDAAoD,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7F,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,kDAAkD;IAClD,YAAY,CAAC,QAAgB;QAC3B,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;IACjD,CAAC;IAED,sDAAsD;IACtD,YAAY,CAAC,QAAgB;QAC3B,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;IACrD,CAAC;IAED,gDAAgD;IAChD,YAAY,CAAC,QAAgB;QAC3B,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAC/C,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,oFAAoF;IACpF,IAAI,gBAAgB;QAClB,OAAO,cAAc,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;IACvI,CAAC;CACF"}
@@ -0,0 +1,26 @@
1
+ import { GenericContainer } from "../core/generic-container.js";
2
+ import { DockerImageName } from "../core/docker-image-name.js";
3
+ /**
4
+ * A single-node Qdrant container — a vector search engine.
5
+ *
6
+ * No-arg construction floats to `qdrant/qdrant:latest`, so the version
7
+ * tracks upstream rather than this library's release cycle (verified
8
+ * against `qdrant/qdrant:v1.18.3`, arm64 — note the image's tags carry a
9
+ * leading `v`, unlike most catalog images here).
10
+ *
11
+ * Exposes both the REST API (6333, what `restUrl` wraps) and the gRPC port
12
+ * (6334, published but not wrapped by any helper here).
13
+ *
14
+ * Readiness is a plain HTTP 200 on `/readyz`, answered on the very first
15
+ * poll in the verified boot — no long startup timeout override is needed.
16
+ * No `withMemoryLimit` override either: a full create-collection/upsert/
17
+ * search round-trip was verified with no memory limit set, in a guest
18
+ * reporting ~480 MB total.
19
+ */
20
+ export declare class QdrantContainer extends GenericContainer {
21
+ constructor(image?: string | DockerImageName);
22
+ static start(image?: string | DockerImageName): Promise<QdrantContainer>;
23
+ /** The REST API's base URL for the running container. */
24
+ get restUrl(): string;
25
+ }
26
+ //# sourceMappingURL=qdrant.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qdrant.d.ts","sourceRoot":"","sources":["../../src/modules/qdrant.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAO/D;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,eAAgB,SAAQ,gBAAgB;gBACvC,KAAK,GAAE,MAAM,GAAG,eAA+B;WAKrC,KAAK,CAAC,KAAK,GAAE,MAAM,GAAG,eAA+B,GAAG,OAAO,CAAC,eAAe,CAAC;IAItG,yDAAyD;IACzD,IAAI,OAAO,IAAI,MAAM,CAEpB;CACF"}
@@ -0,0 +1,38 @@
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 = 6333;
5
+ const GRPC_PORT = 6334;
6
+ const EXPECTED_REPOSITORY = "qdrant/qdrant";
7
+ const DEFAULT_IMAGE = "qdrant/qdrant:latest";
8
+ /**
9
+ * A single-node Qdrant container — a vector search engine.
10
+ *
11
+ * No-arg construction floats to `qdrant/qdrant:latest`, so the version
12
+ * tracks upstream rather than this library's release cycle (verified
13
+ * against `qdrant/qdrant:v1.18.3`, arm64 — note the image's tags carry a
14
+ * leading `v`, unlike most catalog images here).
15
+ *
16
+ * Exposes both the REST API (6333, what `restUrl` wraps) and the gRPC port
17
+ * (6334, published but not wrapped by any helper here).
18
+ *
19
+ * Readiness is a plain HTTP 200 on `/readyz`, answered on the very first
20
+ * poll in the verified boot — no long startup timeout override is needed.
21
+ * No `withMemoryLimit` override either: a full create-collection/upsert/
22
+ * search round-trip was verified with no memory limit set, in a guest
23
+ * reporting ~480 MB total.
24
+ */
25
+ export class QdrantContainer extends GenericContainer {
26
+ constructor(image = DEFAULT_IMAGE) {
27
+ super(DockerImageName.requireCompatible(image, EXPECTED_REPOSITORY));
28
+ this.withExposedPorts(REST_PORT, GRPC_PORT).waitingFor(Wait.forHttp("/readyz").forPort(REST_PORT));
29
+ }
30
+ static async start(image = DEFAULT_IMAGE) {
31
+ return (await new QdrantContainer(image).start());
32
+ }
33
+ /** The REST API's base URL for the running container. */
34
+ get restUrl() {
35
+ return `http://${this.host}:${this.getMappedPort(REST_PORT)}`;
36
+ }
37
+ }
38
+ //# sourceMappingURL=qdrant.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qdrant.js","sourceRoot":"","sources":["../../src/modules/qdrant.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,SAAS,GAAG,IAAI,CAAC;AACvB,MAAM,mBAAmB,GAAG,eAAe,CAAC;AAC5C,MAAM,aAAa,GAAG,sBAAsB,CAAC;AAE7C;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAO,eAAgB,SAAQ,gBAAgB;IACnD,YAAY,QAAkC,aAAa;QACzD,KAAK,CAAC,eAAe,CAAC,iBAAiB,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IACrG,CAAC;IAED,MAAM,CAAU,KAAK,CAAC,KAAK,CAAC,QAAkC,aAAa;QACzE,OAAO,CAAC,MAAM,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAoB,CAAC;IACvE,CAAC;IAED,yDAAyD;IACzD,IAAI,OAAO;QACT,OAAO,UAAU,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;IAChE,CAAC;CACF"}
@@ -1,10 +1,19 @@
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 RabbitMQ container with the management plugin enabled.
4
5
  * Defaults to the image's own `guest`/`guest` credentials; call
5
6
  * `withUsername`/`withPassword` before `start()` to override either (sets
6
7
  * `RABBITMQ_DEFAULT_USER`/`RABBITMQ_DEFAULT_PASS`).
7
8
  *
9
+ * No-arg construction floats to `rabbitmq:management`, not plain
10
+ * `rabbitmq:latest`: this module is built around the management plugin and
11
+ * its readiness check reads the plugin-count clause the management image
12
+ * prints on boot, and plain `latest` doesn't ship that plugin at all.
13
+ * Verified against `rabbitmq:4-management-alpine` — `management` carries no
14
+ * `-alpine` suffix, so it floats onto Debian rather than Alpine the same way
15
+ * the plain `latest` tag does elsewhere in this library.
16
+ *
8
17
  * Readiness waits on the boot log line captured from a real
9
18
  * `rabbitmq:4-management-alpine` run: `Server startup complete; N plugins
10
19
  * started.` — NOT the shorter "Server startup complete" alone some older
@@ -28,8 +37,8 @@ import { GenericContainer } from "../core/generic-container.js";
28
37
  export declare class RabbitMQContainer extends GenericContainer {
29
38
  private usernameState;
30
39
  private passwordState;
31
- constructor(image?: string);
32
- static start(image?: string): Promise<RabbitMQContainer>;
40
+ constructor(image?: string | DockerImageName);
41
+ static start(image?: string | DockerImageName): Promise<RabbitMQContainer>;
33
42
  /** Overrides `RABBITMQ_DEFAULT_USER` (default `guest`). */
34
43
  withUsername(username: string): this;
35
44
  /** Overrides `RABBITMQ_DEFAULT_PASS` (default `guest`). */
@@ -1 +1 @@
1
- {"version":3,"file":"rabbitmq.d.ts","sourceRoot":"","sources":["../../src/modules/rabbitmq.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAMhE;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,iBAAkB,SAAQ,gBAAgB;IACrD,OAAO,CAAC,aAAa,CAAW;IAChC,OAAO,CAAC,aAAa,CAAW;gBAEpB,KAAK,SAAiC;WAO5B,KAAK,CAAC,KAAK,SAAiC,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAI/F,2DAA2D;IAC3D,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKpC,2DAA2D;IAC3D,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKpC,sDAAsD;IACtD,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,sDAAsD;IACtD,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,0DAA0D;IAC1D,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,iEAAiE;IACjE,IAAI,aAAa,IAAI,MAAM,CAE1B;CACF"}
1
+ {"version":3,"file":"rabbitmq.d.ts","sourceRoot":"","sources":["../../src/modules/rabbitmq.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAO/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,qBAAa,iBAAkB,SAAQ,gBAAgB;IACrD,OAAO,CAAC,aAAa,CAAW;IAChC,OAAO,CAAC,aAAa,CAAW;gBAEpB,KAAK,GAAE,MAAM,GAAG,eAA+B;WAOrC,KAAK,CAAC,KAAK,GAAE,MAAM,GAAG,eAA+B,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAIxG,2DAA2D;IAC3D,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKpC,2DAA2D;IAC3D,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKpC,sDAAsD;IACtD,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,sDAAsD;IACtD,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,0DAA0D;IAC1D,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,iEAAiE;IACjE,IAAI,aAAa,IAAI,MAAM,CAE1B;CACF"}
@@ -1,13 +1,24 @@
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 AMQP_PORT = 5672;
4
5
  const MANAGEMENT_PORT = 15672;
6
+ const EXPECTED_REPOSITORY = "rabbitmq";
7
+ const DEFAULT_IMAGE = "rabbitmq:management";
5
8
  /**
6
9
  * A single-node RabbitMQ container with the management plugin enabled.
7
10
  * Defaults to the image's own `guest`/`guest` credentials; call
8
11
  * `withUsername`/`withPassword` before `start()` to override either (sets
9
12
  * `RABBITMQ_DEFAULT_USER`/`RABBITMQ_DEFAULT_PASS`).
10
13
  *
14
+ * No-arg construction floats to `rabbitmq:management`, not plain
15
+ * `rabbitmq:latest`: this module is built around the management plugin and
16
+ * its readiness check reads the plugin-count clause the management image
17
+ * prints on boot, and plain `latest` doesn't ship that plugin at all.
18
+ * Verified against `rabbitmq:4-management-alpine` — `management` carries no
19
+ * `-alpine` suffix, so it floats onto Debian rather than Alpine the same way
20
+ * the plain `latest` tag does elsewhere in this library.
21
+ *
11
22
  * Readiness waits on the boot log line captured from a real
12
23
  * `rabbitmq:4-management-alpine` run: `Server startup complete; N plugins
13
24
  * started.` — NOT the shorter "Server startup complete" alone some older
@@ -31,11 +42,11 @@ const MANAGEMENT_PORT = 15672;
31
42
  export class RabbitMQContainer extends GenericContainer {
32
43
  usernameState = "guest";
33
44
  passwordState = "guest";
34
- constructor(image = "rabbitmq:4-management-alpine") {
35
- super(image);
45
+ constructor(image = DEFAULT_IMAGE) {
46
+ super(DockerImageName.requireCompatible(image, EXPECTED_REPOSITORY));
36
47
  this.withExposedPorts(AMQP_PORT, MANAGEMENT_PORT).waitingFor(Wait.forLogMessage(".*Server startup complete.*"));
37
48
  }
38
- static async start(image = "rabbitmq:4-management-alpine") {
49
+ static async start(image = DEFAULT_IMAGE) {
39
50
  return (await new RabbitMQContainer(image).start());
40
51
  }
41
52
  /** Overrides `RABBITMQ_DEFAULT_USER` (default `guest`). */
@@ -1 +1 @@
1
- {"version":3,"file":"rabbitmq.js","sourceRoot":"","sources":["../../src/modules/rabbitmq.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAEvC,MAAM,SAAS,GAAG,IAAI,CAAC;AACvB,MAAM,eAAe,GAAG,KAAK,CAAC;AAE9B;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,OAAO,iBAAkB,SAAQ,gBAAgB;IAC7C,aAAa,GAAG,OAAO,CAAC;IACxB,aAAa,GAAG,OAAO,CAAC;IAEhC,YAAY,KAAK,GAAG,8BAA8B;QAChD,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC,UAAU,CAC1D,IAAI,CAAC,aAAa,CAAC,6BAA6B,CAAC,CAClD,CAAC;IACJ,CAAC;IAED,MAAM,CAAU,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,8BAA8B;QAChE,OAAO,CAAC,MAAM,IAAI,iBAAiB,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAsB,CAAC;IAC3E,CAAC;IAED,2DAA2D;IAC3D,YAAY,CAAC,QAAgB;QAC3B,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,QAAQ,CAAC,CAAC;IACzD,CAAC;IAED,2DAA2D;IAC3D,YAAY,CAAC,QAAgB;QAC3B,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,QAAQ,CAAC,CAAC;IACzD,CAAC;IAED,sDAAsD;IACtD,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,sDAAsD;IACtD,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,0DAA0D;IAC1D,IAAI,OAAO;QACT,OAAO,UAAU,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;IAC5G,CAAC;IAED,iEAAiE;IACjE,IAAI,aAAa;QACf,OAAO,UAAU,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE,CAAC;IACtE,CAAC;CACF"}
1
+ {"version":3,"file":"rabbitmq.js","sourceRoot":"","sources":["../../src/modules/rabbitmq.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,KAAK,CAAC;AAC9B,MAAM,mBAAmB,GAAG,UAAU,CAAC;AACvC,MAAM,aAAa,GAAG,qBAAqB,CAAC;AAE5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,OAAO,iBAAkB,SAAQ,gBAAgB;IAC7C,aAAa,GAAG,OAAO,CAAC;IACxB,aAAa,GAAG,OAAO,CAAC;IAEhC,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,CAAC,UAAU,CAC1D,IAAI,CAAC,aAAa,CAAC,6BAA6B,CAAC,CAClD,CAAC;IACJ,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,2DAA2D;IAC3D,YAAY,CAAC,QAAgB;QAC3B,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,QAAQ,CAAC,CAAC;IACzD,CAAC;IAED,2DAA2D;IAC3D,YAAY,CAAC,QAAgB;QAC3B,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,QAAQ,CAAC,CAAC;IACzD,CAAC;IAED,sDAAsD;IACtD,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,sDAAsD;IACtD,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,0DAA0D;IAC1D,IAAI,OAAO;QACT,OAAO,UAAU,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;IAC5G,CAAC;IAED,iEAAiE;IACjE,IAAI,aAAa;QACf,OAAO,UAAU,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE,CAAC;IACtE,CAAC;CACF"}
@@ -1,14 +1,20 @@
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 Redis container. Readiness is anchored on Redis's own
4
5
  * "Ready to accept connections" log line rather than a TCP probe: on a loaded
5
6
  * host the port forwarder can accept and hold a connection in the window
6
7
  * between Redis binding its socket and actually serving, which a bare
7
8
  * listening-port check cannot see through.
9
+ *
10
+ * No-arg construction floats to `redis:latest`, so the version tracks
11
+ * upstream rather than this library's release cycle (verified against
12
+ * `redis:8.6-alpine`). `latest` is Debian-based, not Alpine — functionally
13
+ * equivalent, just a larger pull.
8
14
  */
9
15
  export declare class RedisContainer extends GenericContainer {
10
- constructor(image?: string);
11
- static start(image?: string): Promise<RedisContainer>;
16
+ constructor(image?: string | DockerImageName);
17
+ static start(image?: string | DockerImageName): Promise<RedisContainer>;
12
18
  /** A `redis://` connection URI for the running container. */
13
19
  get uri(): string;
14
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"redis.d.ts","sourceRoot":"","sources":["../../src/modules/redis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAKhE;;;;;;GAMG;AACH,qBAAa,cAAe,SAAQ,gBAAgB;gBACtC,KAAK,SAAqB;WAKhB,KAAK,CAAC,KAAK,SAAqB,GAAG,OAAO,CAAC,cAAc,CAAC;IAIhF,6DAA6D;IAC7D,IAAI,GAAG,IAAI,MAAM,CAEhB;CACF"}
1
+ {"version":3,"file":"redis.d.ts","sourceRoot":"","sources":["../../src/modules/redis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAM/D;;;;;;;;;;;GAWG;AACH,qBAAa,cAAe,SAAQ,gBAAgB;gBACtC,KAAK,GAAE,MAAM,GAAG,eAA+B;WAKrC,KAAK,CAAC,KAAK,GAAE,MAAM,GAAG,eAA+B,GAAG,OAAO,CAAC,cAAc,CAAC;IAIrG,6DAA6D;IAC7D,IAAI,GAAG,IAAI,MAAM,CAEhB;CACF"}