rightsize 0.5.0 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (144) hide show
  1. package/README.md +14 -9
  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 +47 -6
  7. package/dist/backend-msb/backend.d.ts.map +1 -1
  8. package/dist/backend-msb/backend.js +123 -10
  9. package/dist/backend-msb/backend.js.map +1 -1
  10. package/dist/backend-msb/commands.d.ts +2 -2
  11. package/dist/backend-msb/commands.d.ts.map +1 -1
  12. package/dist/backend-msb/commands.js +22 -7
  13. package/dist/backend-msb/commands.js.map +1 -1
  14. package/dist/backend-msb/platform.js +2 -2
  15. package/dist/backend-msb/provisioner.d.ts +1 -1
  16. package/dist/backend-msb/provisioner.js +1 -1
  17. package/dist/backend-msb/snapshot-import.d.ts +4 -4
  18. package/dist/backend-msb/snapshot-import.js +4 -4
  19. package/dist/backend-msb/snapshot-list.d.ts +3 -3
  20. package/dist/backend-msb/snapshot-list.js +3 -3
  21. package/dist/backend-msb/snapshot-not-found.d.ts +1 -1
  22. package/dist/backend-msb/snapshot-not-found.js +1 -1
  23. package/dist/backend-msb/snapshot-save-fsync.d.ts +55 -0
  24. package/dist/backend-msb/snapshot-save-fsync.d.ts.map +1 -0
  25. package/dist/backend-msb/snapshot-save-fsync.js +79 -0
  26. package/dist/backend-msb/snapshot-save-fsync.js.map +1 -0
  27. package/dist/core/backend.d.ts +2 -2
  28. package/dist/core/checkpoint/api.d.ts +1 -1
  29. package/dist/core/checkpoint/api.js +1 -1
  30. package/dist/core/docker-image-name.d.ts +58 -0
  31. package/dist/core/docker-image-name.d.ts.map +1 -0
  32. package/dist/core/docker-image-name.js +127 -0
  33. package/dist/core/docker-image-name.js.map +1 -0
  34. package/dist/core/errors.d.ts +21 -0
  35. package/dist/core/errors.d.ts.map +1 -1
  36. package/dist/core/errors.js +26 -0
  37. package/dist/core/errors.js.map +1 -1
  38. package/dist/core/generic-container.d.ts +7 -1
  39. package/dist/core/generic-container.d.ts.map +1 -1
  40. package/dist/core/generic-container.js +8 -2
  41. package/dist/core/generic-container.js.map +1 -1
  42. package/dist/core/model.d.ts +9 -4
  43. package/dist/core/model.d.ts.map +1 -1
  44. package/dist/index.d.ts +8 -5
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +8 -5
  47. package/dist/index.js.map +1 -1
  48. package/dist/modules/arango.d.ts +11 -3
  49. package/dist/modules/arango.d.ts.map +1 -1
  50. package/dist/modules/arango.js +14 -4
  51. package/dist/modules/arango.js.map +1 -1
  52. package/dist/modules/cassandra.d.ts +12 -3
  53. package/dist/modules/cassandra.d.ts.map +1 -1
  54. package/dist/modules/cassandra.js +15 -4
  55. package/dist/modules/cassandra.js.map +1 -1
  56. package/dist/modules/clickhouse.d.ts +8 -2
  57. package/dist/modules/clickhouse.d.ts.map +1 -1
  58. package/dist/modules/clickhouse.js +11 -3
  59. package/dist/modules/clickhouse.js.map +1 -1
  60. package/dist/modules/elasticsearch.d.ts +49 -0
  61. package/dist/modules/elasticsearch.d.ts.map +1 -0
  62. package/dist/modules/elasticsearch.js +66 -0
  63. package/dist/modules/elasticsearch.js.map +1 -0
  64. package/dist/modules/flink.d.ts +8 -2
  65. package/dist/modules/flink.d.ts.map +1 -1
  66. package/dist/modules/flink.js +13 -4
  67. package/dist/modules/flink.js.map +1 -1
  68. package/dist/modules/floci.d.ts +30 -6
  69. package/dist/modules/floci.d.ts.map +1 -1
  70. package/dist/modules/floci.js +39 -9
  71. package/dist/modules/floci.js.map +1 -1
  72. package/dist/modules/index.d.ts +3 -1
  73. package/dist/modules/index.d.ts.map +1 -1
  74. package/dist/modules/index.js +3 -1
  75. package/dist/modules/index.js.map +1 -1
  76. package/dist/modules/kafka.d.ts +10 -3
  77. package/dist/modules/kafka.d.ts.map +1 -1
  78. package/dist/modules/kafka.js +13 -4
  79. package/dist/modules/kafka.js.map +1 -1
  80. package/dist/modules/keycloak.d.ts +10 -2
  81. package/dist/modules/keycloak.d.ts.map +1 -1
  82. package/dist/modules/keycloak.js +13 -3
  83. package/dist/modules/keycloak.js.map +1 -1
  84. package/dist/modules/mariadb.d.ts +8 -2
  85. package/dist/modules/mariadb.d.ts.map +1 -1
  86. package/dist/modules/mariadb.js +11 -3
  87. package/dist/modules/mariadb.js.map +1 -1
  88. package/dist/modules/memcached.d.ts +12 -3
  89. package/dist/modules/memcached.d.ts.map +1 -1
  90. package/dist/modules/memcached.js +15 -4
  91. package/dist/modules/memcached.js.map +1 -1
  92. package/dist/modules/minio.d.ts +7 -2
  93. package/dist/modules/minio.d.ts.map +1 -1
  94. package/dist/modules/minio.js +10 -3
  95. package/dist/modules/minio.js.map +1 -1
  96. package/dist/modules/mongodb.d.ts +7 -2
  97. package/dist/modules/mongodb.d.ts.map +1 -1
  98. package/dist/modules/mongodb.js +16 -4
  99. package/dist/modules/mongodb.js.map +1 -1
  100. package/dist/modules/mysql.d.ts +8 -2
  101. package/dist/modules/mysql.d.ts.map +1 -1
  102. package/dist/modules/mysql.js +11 -3
  103. package/dist/modules/mysql.js.map +1 -1
  104. package/dist/modules/neo4j.d.ts +7 -2
  105. package/dist/modules/neo4j.d.ts.map +1 -1
  106. package/dist/modules/neo4j.js +10 -3
  107. package/dist/modules/neo4j.js.map +1 -1
  108. package/dist/modules/pinot.d.ts +7 -2
  109. package/dist/modules/pinot.d.ts.map +1 -1
  110. package/dist/modules/pinot.js +10 -3
  111. package/dist/modules/pinot.js.map +1 -1
  112. package/dist/modules/postgres.d.ts +11 -2
  113. package/dist/modules/postgres.d.ts.map +1 -1
  114. package/dist/modules/postgres.js +14 -3
  115. package/dist/modules/postgres.js.map +1 -1
  116. package/dist/modules/qdrant.d.ts +26 -0
  117. package/dist/modules/qdrant.d.ts.map +1 -0
  118. package/dist/modules/qdrant.js +38 -0
  119. package/dist/modules/qdrant.js.map +1 -0
  120. package/dist/modules/rabbitmq.d.ts +11 -2
  121. package/dist/modules/rabbitmq.d.ts.map +1 -1
  122. package/dist/modules/rabbitmq.js +14 -3
  123. package/dist/modules/rabbitmq.js.map +1 -1
  124. package/dist/modules/redis.d.ts +8 -2
  125. package/dist/modules/redis.d.ts.map +1 -1
  126. package/dist/modules/redis.js +11 -3
  127. package/dist/modules/redis.js.map +1 -1
  128. package/dist/modules/redpanda.d.ts +15 -6
  129. package/dist/modules/redpanda.d.ts.map +1 -1
  130. package/dist/modules/redpanda.js +18 -7
  131. package/dist/modules/redpanda.js.map +1 -1
  132. package/dist/modules/spring-cloud-config.d.ts +7 -2
  133. package/dist/modules/spring-cloud-config.d.ts.map +1 -1
  134. package/dist/modules/spring-cloud-config.js +10 -3
  135. package/dist/modules/spring-cloud-config.js.map +1 -1
  136. package/dist/modules/valkey.d.ts +9 -2
  137. package/dist/modules/valkey.d.ts.map +1 -1
  138. package/dist/modules/valkey.js +12 -3
  139. package/dist/modules/valkey.js.map +1 -1
  140. package/dist/modules/wiremock.d.ts +7 -2
  141. package/dist/modules/wiremock.d.ts.map +1 -1
  142. package/dist/modules/wiremock.js +10 -3
  143. package/dist/modules/wiremock.js.map +1 -1
  144. package/package.json +1 -1
@@ -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 = "mariadb:11.4") {
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 = "mariadb:11.4") {
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;AAEvC,MAAM,UAAU,GAAG,IAAI,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,OAAO,gBAAiB,SAAQ,gBAAgB;IAC5C,aAAa,GAAG,MAAM,CAAC;IACvB,aAAa,GAAG,MAAM,CAAC;IACvB,aAAa,GAAG,MAAM,CAAC;IAE/B,YAAY,KAAK,GAAG,cAAc;QAChC,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,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,KAAK,GAAG,cAAc;QAChD,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
+ {"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
- /** A single-node Memcached container, ready-checked with a protocol-level `version` probe. */
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;AAYhE;;;;;;;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,8FAA8F;AAC9F,qBAAa,kBAAmB,SAAQ,gBAAgB;gBAC1C,KAAK,SAAyB;WAKpB,KAAK,CAAC,KAAK,SAAyB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAIxF,wDAAwD;IACxD,IAAI,OAAO,IAAI,MAAM,CAEpB;CACF"}
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
- /** A single-node Memcached container, ready-checked with a protocol-level `version` probe. */
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 = "memcached:1.6-alpine") {
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 = "memcached:1.6-alpine") {
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":"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"}
1
+ {"version":3,"file":"memcached.js","sourceRoot":"","sources":["../../src/modules/memcached.ts"],"names":[],"mappings":"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"}
@@ -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 MinIO container — an S3-compatible object store. Requires
4
5
  * an explicit command: the image's default ENTRYPOINT alone does not serve,
@@ -15,12 +16,16 @@ import { GenericContainer } from "../core/generic-container.js";
15
16
  *
16
17
  * Readiness is a protocol-aware HTTP check against `/minio/health/live` on
17
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`).
18
23
  */
19
24
  export declare class MinIOContainer extends GenericContainer {
20
25
  private rootUserState;
21
26
  private rootPasswordState;
22
- constructor(image?: string);
23
- static start(image?: string): Promise<MinIOContainer>;
27
+ constructor(image?: string | DockerImageName);
28
+ static start(image?: string | DockerImageName): Promise<MinIOContainer>;
24
29
  /** Overrides `MINIO_ROOT_USER` (default `testuser`). */
25
30
  withRootUser(user: string): this;
26
31
  /** Overrides `MINIO_ROOT_PASSWORD` (default `testpassword`). MinIO rejects anything shorter than 8 characters. */
@@ -1 +1 @@
1
- {"version":3,"file":"minio.d.ts","sourceRoot":"","sources":["../../src/modules/minio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAMhE;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,cAAe,SAAQ,gBAAgB;IAClD,OAAO,CAAC,aAAa,CAAc;IACnC,OAAO,CAAC,iBAAiB,CAAkB;gBAE/B,KAAK,SAA6C;WAcxC,KAAK,CAAC,KAAK,SAA6C,GAAG,OAAO,CAAC,cAAc,CAAC;IAIxG,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"}
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"}
@@ -1,7 +1,10 @@
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 API_PORT = 9000;
4
5
  const CONSOLE_PORT = 9001;
6
+ const EXPECTED_REPOSITORY = "minio/minio";
7
+ const DEFAULT_IMAGE = "minio/minio:latest";
5
8
  /**
6
9
  * A single-node MinIO container — an S3-compatible object store. Requires
7
10
  * an explicit command: the image's default ENTRYPOINT alone does not serve,
@@ -18,12 +21,16 @@ const CONSOLE_PORT = 9001;
18
21
  *
19
22
  * Readiness is a protocol-aware HTTP check against `/minio/health/live` on
20
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`).
21
28
  */
22
29
  export class MinIOContainer extends GenericContainer {
23
30
  rootUserState = "testuser";
24
31
  rootPasswordState = "testpassword";
25
- constructor(image = "minio/minio:RELEASE.2025-09-07T16-13-09Z") {
26
- super(image);
32
+ constructor(image = DEFAULT_IMAGE) {
33
+ super(DockerImageName.requireCompatible(image, EXPECTED_REPOSITORY));
27
34
  this.withExposedPorts(API_PORT, CONSOLE_PORT)
28
35
  .withCommand("server", "/data", "--console-address", ":9001")
29
36
  .withEnv("MINIO_ROOT_USER", this.rootUserState)
@@ -35,7 +42,7 @@ export class MinIOContainer extends GenericContainer {
35
42
  // belongs here once that's measured on its own, not assumed from a
36
43
  // number that included the whole round-trip's overhead.
37
44
  }
38
- static async start(image = "minio/minio:RELEASE.2025-09-07T16-13-09Z") {
45
+ static async start(image = DEFAULT_IMAGE) {
39
46
  return (await new MinIOContainer(image).start());
40
47
  }
41
48
  /** Overrides `MINIO_ROOT_USER` (default `testuser`). */
@@ -1 +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;AAEvC,MAAM,QAAQ,GAAG,IAAI,CAAC;AACtB,MAAM,YAAY,GAAG,IAAI,CAAC;AAE1B;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAO,cAAe,SAAQ,gBAAgB;IAC1C,aAAa,GAAG,UAAU,CAAC;IAC3B,iBAAiB,GAAG,cAAc,CAAC;IAE3C,YAAY,KAAK,GAAG,0CAA0C;QAC5D,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,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,KAAK,GAAG,0CAA0C;QAC5E,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"}
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"}
@@ -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":"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"}
@@ -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"}