spindb 0.49.0 → 0.50.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 (76) hide show
  1. package/README.md +6 -3
  2. package/dist/cli/commands/create.js +10 -0
  3. package/dist/cli/commands/create.js.map +1 -1
  4. package/dist/cli/commands/engines.js +26 -4
  5. package/dist/cli/commands/engines.js.map +1 -1
  6. package/dist/cli/commands/menu/backup-handlers.js +8 -1
  7. package/dist/cli/commands/menu/backup-handlers.js.map +1 -1
  8. package/dist/cli/commands/menu/container-handlers.js +9 -1
  9. package/dist/cli/commands/menu/container-handlers.js.map +1 -1
  10. package/dist/cli/commands/start.js +24 -1
  11. package/dist/cli/commands/start.js.map +1 -1
  12. package/dist/cli/ui/prompts.js +6 -3
  13. package/dist/cli/ui/prompts.js.map +1 -1
  14. package/dist/config/engine-defaults.js +25 -26
  15. package/dist/config/engine-defaults.js.map +1 -1
  16. package/dist/config/engines-registry.js +0 -46
  17. package/dist/config/engines-registry.js.map +1 -1
  18. package/dist/config/engines.json +132 -101
  19. package/dist/config/version.js +1 -1
  20. package/dist/core/container-manager.js +18 -4
  21. package/dist/core/container-manager.js.map +1 -1
  22. package/dist/core/hostdb-metadata.js +57 -14
  23. package/dist/core/hostdb-metadata.js.map +1 -1
  24. package/dist/core/version-utils.js +35 -0
  25. package/dist/core/version-utils.js.map +1 -1
  26. package/dist/engines/base-engine.js +12 -0
  27. package/dist/engines/base-engine.js.map +1 -1
  28. package/dist/engines/clickhouse/index.js +72 -20
  29. package/dist/engines/clickhouse/index.js.map +1 -1
  30. package/dist/engines/clickhouse/version-maps.js +43 -55
  31. package/dist/engines/clickhouse/version-maps.js.map +1 -1
  32. package/dist/engines/cockroachdb/version-maps.js +26 -25
  33. package/dist/engines/cockroachdb/version-maps.js.map +1 -1
  34. package/dist/engines/couchdb/version-maps.js +28 -47
  35. package/dist/engines/couchdb/version-maps.js.map +1 -1
  36. package/dist/engines/duckdb/index.js +3 -0
  37. package/dist/engines/duckdb/index.js.map +1 -1
  38. package/dist/engines/duckdb/version-maps.js +28 -48
  39. package/dist/engines/duckdb/version-maps.js.map +1 -1
  40. package/dist/engines/ferretdb/version-maps.js +39 -115
  41. package/dist/engines/ferretdb/version-maps.js.map +1 -1
  42. package/dist/engines/influxdb/version-maps.js +28 -44
  43. package/dist/engines/influxdb/version-maps.js.map +1 -1
  44. package/dist/engines/libsql/version-maps.js +28 -43
  45. package/dist/engines/libsql/version-maps.js.map +1 -1
  46. package/dist/engines/mariadb/version-maps.js +34 -54
  47. package/dist/engines/mariadb/version-maps.js.map +1 -1
  48. package/dist/engines/meilisearch/version-maps.js +28 -49
  49. package/dist/engines/meilisearch/version-maps.js.map +1 -1
  50. package/dist/engines/mongodb/version-maps.js +34 -70
  51. package/dist/engines/mongodb/version-maps.js.map +1 -1
  52. package/dist/engines/mysql/version-maps.js +37 -65
  53. package/dist/engines/mysql/version-maps.js.map +1 -1
  54. package/dist/engines/postgresql/version-maps.js +28 -71
  55. package/dist/engines/postgresql/version-maps.js.map +1 -1
  56. package/dist/engines/qdrant/version-maps.js +28 -47
  57. package/dist/engines/qdrant/version-maps.js.map +1 -1
  58. package/dist/engines/questdb/version-maps.js +24 -25
  59. package/dist/engines/questdb/version-maps.js.map +1 -1
  60. package/dist/engines/redis/version-maps.js +28 -51
  61. package/dist/engines/redis/version-maps.js.map +1 -1
  62. package/dist/engines/sqlite/index.js +3 -0
  63. package/dist/engines/sqlite/index.js.map +1 -1
  64. package/dist/engines/sqlite/version-maps.js +32 -47
  65. package/dist/engines/sqlite/version-maps.js.map +1 -1
  66. package/dist/engines/surrealdb/version-maps.js +26 -24
  67. package/dist/engines/surrealdb/version-maps.js.map +1 -1
  68. package/dist/engines/tigerbeetle/version-maps.js +32 -47
  69. package/dist/engines/tigerbeetle/version-maps.js.map +1 -1
  70. package/dist/engines/typedb/version-maps.js +30 -27
  71. package/dist/engines/typedb/version-maps.js.map +1 -1
  72. package/dist/engines/valkey/version-maps.js +28 -52
  73. package/dist/engines/valkey/version-maps.js.map +1 -1
  74. package/dist/engines/weaviate/version-maps.js +28 -47
  75. package/dist/engines/weaviate/version-maps.js.map +1 -1
  76. package/package.json +4 -2
@@ -1,82 +1,46 @@
1
1
  /**
2
- * MongoDB version mapping
2
+ * MongoDB Version Maps
3
3
  *
4
- * TEMPORARY: This version map will be replaced by the hostdb npm package once published.
5
- * Until then, manually keep this in sync with robertjbass/hostdb releases.json:
6
- * https://github.com/robertjbass/hostdb/blob/main/releases.json
4
+ * Thin wrapper around the `hostdb` npm package. See engines/sqlite/version-maps.ts
5
+ * for the architecture rationale hostdb is the single source of truth.
7
6
  *
8
- * To update: Check releases.json, find databases.mongodb, copy all version strings.
7
+ * Note: SUPPORTED_MAJOR_VERSIONS is 2-part (e.g., '8.0') to preserve the
8
+ * convention used by `core/version-migration.ts:getMajorVersion()`. 1-part
9
+ * keys '7' and '8' still resolve via the MAP (LTS-pick: '8' → 8.0.23, not 8.2.9).
9
10
  */
11
+ import { resolveVersion as hostdbResolveVersion, getSupportedMajorVersions, listVersions, } from 'hostdb';
10
12
  import { logDebug } from '../../core/error-handler.js';
11
- /**
12
- * Map major versions to full versions
13
- * Keys are major.minor versions (e.g., "7.0", "8.0", "8.2")
14
- * Values are full versions from hostdb releases.json
15
- */
16
- export const MONGODB_VERSION_MAP = {
17
- // 1-part: major version → LTS
18
- '7': '7.0.34',
19
- '8': '8.0.23',
20
- // 2-part: major.minor latest patch
21
- '7.0': '7.0.34',
22
- '8.0': '8.0.23',
23
- '8.2': '8.2.9',
24
- // 3-part: exact version (identity mapping)
25
- '7.0.28': '7.0.28',
26
- '7.0.34': '7.0.34',
27
- '8.0.17': '8.0.17',
28
- '8.0.23': '8.0.23',
29
- '8.2.3': '8.2.3',
30
- '8.2.9': '8.2.9',
31
- };
32
- /**
33
- * Supported major MongoDB versions (2-part format).
34
- * Used for grouping and display purposes.
35
- */
36
- export const SUPPORTED_MAJOR_VERSIONS = ['7.0', '8.0', '8.2'];
37
- /**
38
- * Fallback map of major versions to stable patch versions
39
- * Used when hostdb repository is unreachable
40
- */
41
- export const FALLBACK_VERSION_MAP = MONGODB_VERSION_MAP;
42
- /**
43
- * Get the full version for a major version
44
- * @param majorVersion - Major version (e.g., "7.0", "8.0")
45
- * @returns Full version or null if not found
46
- */
47
- export function getFullVersion(majorVersion) {
48
- // Try exact match first
49
- if (MONGODB_VERSION_MAP[majorVersion]) {
50
- return MONGODB_VERSION_MAP[majorVersion];
13
+ const ENGINE = 'mongodb';
14
+ function buildVersionMap() {
15
+ const map = {};
16
+ for (const major of getSupportedMajorVersions(ENGINE)) {
17
+ const r = hostdbResolveVersion(ENGINE, major);
18
+ if (r)
19
+ map[major] = r;
20
+ }
21
+ for (const minor of listVersions(ENGINE, { format: 'major-minor' })) {
22
+ const r = hostdbResolveVersion(ENGINE, minor);
23
+ if (r)
24
+ map[minor] = r;
51
25
  }
52
- // Try matching major only (e.g., "8" -> highest 8.x version)
53
- const majorOnly = majorVersion.split('.')[0];
54
- const matchingVersions = Object.entries(MONGODB_VERSION_MAP)
55
- .filter(([key]) => key.split('.')[0] === majorOnly)
56
- .sort(([a], [b]) => b.localeCompare(a, undefined, { numeric: true }));
57
- if (matchingVersions.length > 0) {
58
- return matchingVersions[0][1];
26
+ for (const full of listVersions(ENGINE, { format: 'full' })) {
27
+ map[full] = full;
59
28
  }
60
- return null;
29
+ return map;
30
+ }
31
+ export const MONGODB_VERSION_MAP = buildVersionMap();
32
+ export const SUPPORTED_MAJOR_VERSIONS = listVersions(ENGINE, {
33
+ format: 'major-minor',
34
+ });
35
+ export const FALLBACK_VERSION_MAP = MONGODB_VERSION_MAP;
36
+ export function getFullVersion(majorVersion) {
37
+ return hostdbResolveVersion(ENGINE, majorVersion);
61
38
  }
62
- /**
63
- * Normalize a version string to a full version
64
- * @param version - Version string (major, major.minor, or full)
65
- * @returns Full version string
66
- */
67
39
  export function normalizeVersion(version) {
68
- // If already a full version (x.y.z), return as-is
69
- if (/^\d+\.\d+\.\d+$/.test(version)) {
70
- return version;
71
- }
72
- // Delegate to getFullVersion for major/major.minor lookup
73
- const fullVersion = getFullVersion(version);
74
- if (fullVersion) {
75
- return fullVersion;
76
- }
77
- // Unknown version format - log debug and return as-is
78
- // This may cause download failures if the version doesn't exist in hostdb
79
- logDebug(`MongoDB version '${version}' not in version map, may not be available in hostdb`);
40
+ const resolved = hostdbResolveVersion(ENGINE, version);
41
+ if (resolved)
42
+ return resolved;
43
+ logDebug(`MongoDB version '${version}' not in hostdb, may not be available for download`);
80
44
  return version;
81
45
  }
82
46
  //# sourceMappingURL=version-maps.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version-maps.js","sourceRoot":"","sources":["../../../engines/mongodb/version-maps.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAEnD;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAA2B;IACzD,8BAA8B;IAC9B,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,QAAQ;IACb,qCAAqC;IACrC,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,OAAO;IACd,2CAA2C;IAC3C,QAAQ,EAAE,QAAQ;IAClB,QAAQ,EAAE,QAAQ;IAClB,QAAQ,EAAE,QAAQ;IAClB,QAAQ,EAAE,QAAQ;IAClB,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,OAAO;CACjB,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;AAE7D;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAA2B,mBAAmB,CAAA;AAE/E;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,YAAoB;IACjD,wBAAwB;IACxB,IAAI,mBAAmB,CAAC,YAAY,CAAC,EAAE,CAAC;QACtC,OAAO,mBAAmB,CAAC,YAAY,CAAC,CAAA;IAC1C,CAAC;IAED,6DAA6D;IAC7D,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IAC5C,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC;SACzD,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC;SAClD,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IAEvE,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,OAAO,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC/B,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,kDAAkD;IAClD,IAAI,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACpC,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,0DAA0D;IAC1D,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,CAAA;IAC3C,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,sDAAsD;IACtD,0EAA0E;IAC1E,QAAQ,CACN,oBAAoB,OAAO,sDAAsD,CAClF,CAAA;IACD,OAAO,OAAO,CAAA;AAChB,CAAC"}
1
+ {"version":3,"file":"version-maps.js","sourceRoot":"","sources":["../../../engines/mongodb/version-maps.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACL,cAAc,IAAI,oBAAoB,EACtC,yBAAyB,EACzB,YAAY,GACb,MAAM,QAAQ,CAAA;AACf,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAEnD,MAAM,MAAM,GAAG,SAAS,CAAA;AAExB,SAAS,eAAe;IACtB,MAAM,GAAG,GAA2B,EAAE,CAAA;IACtC,KAAK,MAAM,KAAK,IAAI,yBAAyB,CAAC,MAAM,CAAC,EAAE,CAAC;QACtD,MAAM,CAAC,GAAG,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;QAC7C,IAAI,CAAC;YAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACvB,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,YAAY,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC;QACpE,MAAM,CAAC,GAAG,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;QAC7C,IAAI,CAAC;YAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACvB,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,YAAY,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QAC5D,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAClB,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAA2B,eAAe,EAAE,CAAA;AAE5E,MAAM,CAAC,MAAM,wBAAwB,GAAG,YAAY,CAAC,MAAM,EAAE;IAC3D,MAAM,EAAE,aAAa;CACtB,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAA2B,mBAAmB,CAAA;AAE/E,MAAM,UAAU,cAAc,CAAC,YAAoB;IACjD,OAAO,oBAAoB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;AACnD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,MAAM,QAAQ,GAAG,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACtD,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAA;IAC7B,QAAQ,CACN,oBAAoB,OAAO,oDAAoD,CAChF,CAAA;IACD,OAAO,OAAO,CAAA;AAChB,CAAC"}
@@ -1,78 +1,50 @@
1
1
  /**
2
2
  * MySQL Version Maps
3
3
  *
4
- * TEMPORARY: This version map will be replaced by the hostdb npm package once published.
5
- * Until then, manually keep this in sync with robertjbass/hostdb releases.json:
6
- * https://github.com/robertjbass/hostdb/blob/main/releases.json
4
+ * Thin wrapper around the `hostdb` npm package. See engines/sqlite/version-maps.ts
5
+ * for the architecture rationale hostdb is the single source of truth.
7
6
  *
8
- * When updating versions:
9
- * 1. Check hostdb releases.json for available versions
10
- * 2. Update MYSQL_VERSION_MAP to match
11
- */
12
- import { logDebug } from '../../core/error-handler.js';
13
- /**
14
- * Map of major MySQL versions to their latest stable patch versions.
15
- * Must match versions available in hostdb releases.json.
7
+ * Note: SUPPORTED_MAJOR_VERSIONS is 2-part (e.g., '8.4') to preserve the
8
+ * convention used by `core/version-migration.ts:getMajorVersion()`. The 1-part
9
+ * keys '8' and '9' still resolve via the MAP (LTS-pick: '8' → 8.4.9, not 9.6.0).
16
10
  *
17
- * Deprecated versions (8.0.40, 9.1.0, 9.5.0) are retained for backward
18
- * compatibility with existing containers. The deprecation status is
19
- * sourced from hostdb databases.json at runtime.
20
- */
21
- export const MYSQL_VERSION_MAP = {
22
- // 1-part: major version → latest
23
- '8': '8.4.9',
24
- '9': '9.6.0',
25
- // 2-part: major.minor → latest patch
26
- '8.0': '8.0.40',
27
- '8.4': '8.4.9',
28
- '9.1': '9.1.0',
29
- '9.5': '9.5.0',
30
- '9.6': '9.6.0',
31
- // 3-part: exact version (identity mapping)
32
- '8.0.40': '8.0.40',
33
- '8.4.3': '8.4.3',
34
- '8.4.9': '8.4.9',
35
- '9.1.0': '9.1.0',
36
- '9.5.0': '9.5.0',
37
- '9.6.0': '9.6.0',
38
- };
39
- /**
40
- * Supported major MySQL versions (2-part format).
41
- * Used for grouping and display purposes.
42
- * Includes deprecated versions so existing containers remain functional.
43
- */
44
- export const SUPPORTED_MAJOR_VERSIONS = ['8.0', '8.4', '9.1', '9.5', '9.6'];
45
- /**
46
- * Fallback map of major versions to stable patch versions
47
- * Used when hostdb repository is unreachable
11
+ * Deprecated patches (8.0.40, 9.1.0, 9.5.0) remain resolvable so existing
12
+ * containers keep working hostdb's `enabled !== false` check keeps them in
13
+ * the available-versions list; only `enabled: false` removes a version entirely.
48
14
  */
15
+ import { resolveVersion as hostdbResolveVersion, getSupportedMajorVersions, listVersions, } from 'hostdb';
16
+ import { logDebug } from '../../core/error-handler.js';
17
+ const ENGINE = 'mysql';
18
+ function buildVersionMap() {
19
+ const map = {};
20
+ for (const major of getSupportedMajorVersions(ENGINE)) {
21
+ const r = hostdbResolveVersion(ENGINE, major);
22
+ if (r)
23
+ map[major] = r;
24
+ }
25
+ for (const minor of listVersions(ENGINE, { format: 'major-minor' })) {
26
+ const r = hostdbResolveVersion(ENGINE, minor);
27
+ if (r)
28
+ map[minor] = r;
29
+ }
30
+ for (const full of listVersions(ENGINE, { format: 'full' })) {
31
+ map[full] = full;
32
+ }
33
+ return map;
34
+ }
35
+ export const MYSQL_VERSION_MAP = buildVersionMap();
36
+ export const SUPPORTED_MAJOR_VERSIONS = listVersions(ENGINE, {
37
+ format: 'major-minor',
38
+ });
49
39
  export const FALLBACK_VERSION_MAP = MYSQL_VERSION_MAP;
50
- /**
51
- * Get the full version string for a major version.
52
- *
53
- * @param majorVersion - Major version (e.g., '8.0', '9')
54
- * @returns Full version string (e.g., '8.0.40') or null if not supported
55
- */
56
40
  export function getFullVersion(majorVersion) {
57
- return MYSQL_VERSION_MAP[majorVersion] || null;
41
+ return hostdbResolveVersion(ENGINE, majorVersion);
58
42
  }
59
- /**
60
- * Normalize a version string to X.Y.Z format.
61
- *
62
- * @param version - Version string (e.g., '8.0', '8.0.40', '9')
63
- * @returns Normalized version (e.g., '8.0.40', '9.5.0') matching hostdb releases
64
- */
65
43
  export function normalizeVersion(version) {
66
- // If it's a key in the map (major, major.minor, or full version), return the mapped value
67
- // This handles all known versions including identity mappings for full versions
68
- const fullVersion = MYSQL_VERSION_MAP[version];
69
- if (fullVersion) {
70
- return fullVersion;
71
- }
72
- // Unknown version - warn and return as-is
73
- // This may cause download failures if the version doesn't exist in hostdb
44
+ const resolved = hostdbResolveVersion(ENGINE, version);
45
+ if (resolved)
46
+ return resolved;
74
47
  const parts = version.split('.');
75
- // Validate format: must be 1-3 numeric segments (e.g., "9", "8.0", "8.0.40")
76
48
  const isValidFormat = parts.length >= 1 &&
77
49
  parts.length <= 3 &&
78
50
  parts.every((p) => /^\d+$/.test(p));
@@ -80,7 +52,7 @@ export function normalizeVersion(version) {
80
52
  logDebug(`MySQL version '${version}' has invalid format, may not be available in hostdb`);
81
53
  }
82
54
  else {
83
- logDebug(`MySQL version '${version}' not in version map, may not be available in hostdb`);
55
+ logDebug(`MySQL version '${version}' not in hostdb, may not be available for download`);
84
56
  }
85
57
  return version;
86
58
  }
@@ -1 +1 @@
1
- {"version":3,"file":"version-maps.js","sourceRoot":"","sources":["../../../engines/mysql/version-maps.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAEnD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAA2B;IACvD,iCAAiC;IACjC,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,OAAO;IACZ,qCAAqC;IACrC,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,2CAA2C;IAC3C,QAAQ,EAAE,QAAQ;IAClB,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,OAAO;CACjB,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;AAE3E;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAA2B,iBAAiB,CAAA;AAE7E;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,YAAoB;IACjD,OAAO,iBAAiB,CAAC,YAAY,CAAC,IAAI,IAAI,CAAA;AAChD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,0FAA0F;IAC1F,gFAAgF;IAChF,MAAM,WAAW,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAA;IAC9C,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,0CAA0C;IAC1C,0EAA0E;IAC1E,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAEhC,6EAA6E;IAC7E,MAAM,aAAa,GACjB,KAAK,CAAC,MAAM,IAAI,CAAC;QACjB,KAAK,CAAC,MAAM,IAAI,CAAC;QACjB,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;IAErC,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,QAAQ,CACN,kBAAkB,OAAO,sDAAsD,CAChF,CAAA;IACH,CAAC;SAAM,CAAC;QACN,QAAQ,CACN,kBAAkB,OAAO,sDAAsD,CAChF,CAAA;IACH,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC"}
1
+ {"version":3,"file":"version-maps.js","sourceRoot":"","sources":["../../../engines/mysql/version-maps.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EACL,cAAc,IAAI,oBAAoB,EACtC,yBAAyB,EACzB,YAAY,GACb,MAAM,QAAQ,CAAA;AACf,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAEnD,MAAM,MAAM,GAAG,OAAO,CAAA;AAEtB,SAAS,eAAe;IACtB,MAAM,GAAG,GAA2B,EAAE,CAAA;IACtC,KAAK,MAAM,KAAK,IAAI,yBAAyB,CAAC,MAAM,CAAC,EAAE,CAAC;QACtD,MAAM,CAAC,GAAG,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;QAC7C,IAAI,CAAC;YAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACvB,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,YAAY,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC;QACpE,MAAM,CAAC,GAAG,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;QAC7C,IAAI,CAAC;YAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACvB,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,YAAY,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QAC5D,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAClB,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,MAAM,CAAC,MAAM,iBAAiB,GAA2B,eAAe,EAAE,CAAA;AAE1E,MAAM,CAAC,MAAM,wBAAwB,GAAG,YAAY,CAAC,MAAM,EAAE;IAC3D,MAAM,EAAE,aAAa;CACtB,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAA2B,iBAAiB,CAAA;AAE7E,MAAM,UAAU,cAAc,CAAC,YAAoB;IACjD,OAAO,oBAAoB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;AACnD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,MAAM,QAAQ,GAAG,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACtD,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAA;IAE7B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAChC,MAAM,aAAa,GACjB,KAAK,CAAC,MAAM,IAAI,CAAC;QACjB,KAAK,CAAC,MAAM,IAAI,CAAC;QACjB,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;IAErC,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,QAAQ,CACN,kBAAkB,OAAO,sDAAsD,CAChF,CAAA;IACH,CAAC;SAAM,CAAC;QACN,QAAQ,CACN,kBAAkB,OAAO,oDAAoD,CAC9E,CAAA;IACH,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC"}
@@ -1,81 +1,38 @@
1
1
  /**
2
2
  * PostgreSQL Version Maps
3
3
  *
4
- * TEMPORARY: This version map will be replaced by the hostdb npm package once published.
5
- * Until then, manually keep this in sync with robertjbass/hostdb releases.json:
6
- * https://github.com/robertjbass/hostdb/blob/main/releases.json
7
- *
8
- * When updating versions:
9
- * 1. Check hostdb releases.json for available versions
10
- * 2. Update POSTGRESQL_VERSION_MAP to match
11
- */
12
- /**
13
- * Map of major PostgreSQL versions to their latest stable patch versions.
14
- * Must match versions available in hostdb releases.json.
15
- */
16
- export const POSTGRESQL_VERSION_MAP = {
17
- // 1-part: major version → latest patch
18
- '15': '15.18.0',
19
- '16': '16.14.0',
20
- '17': '17.10.0',
21
- '18': '18.4.0',
22
- // 2-part: major.minor → latest patch
23
- '15.15': '15.15.0',
24
- '15.18': '15.18.0',
25
- '16.11': '16.11.0',
26
- '16.14': '16.14.0',
27
- '17.7': '17.7.0',
28
- '17.10': '17.10.0',
29
- '18.1': '18.1.0',
30
- '18.4': '18.4.0',
31
- // 3-part: exact version (identity mapping)
32
- '15.15.0': '15.15.0',
33
- '15.18.0': '15.18.0',
34
- '16.11.0': '16.11.0',
35
- '16.14.0': '16.14.0',
36
- '17.7.0': '17.7.0',
37
- '17.10.0': '17.10.0',
38
- '18.1.0': '18.1.0',
39
- '18.4.0': '18.4.0',
40
- };
41
- /**
42
- * Supported major PostgreSQL versions (1-part format).
43
- * Used for grouping and display purposes.
44
- */
45
- export const SUPPORTED_MAJOR_VERSIONS = ['15', '16', '17', '18'];
46
- /**
47
- * Get the full version string for a major version.
48
- *
49
- * @param majorVersion - Major version (e.g., '17')
50
- * @returns Full version string (e.g., '17.7.0') or null if not supported
51
- */
52
- export function getFullVersion(majorVersion) {
53
- return POSTGRESQL_VERSION_MAP[majorVersion] || null;
54
- }
55
- /**
56
- * Normalize a version string to X.Y.Z format.
57
- *
58
- * @param version - Version string (e.g., '17', '17.7', '17.7.0')
59
- * @returns Normalized version (e.g., '17.7.0')
4
+ * Thin wrapper around the `hostdb` npm package. See engines/sqlite/version-maps.ts
5
+ * for the architecture rationale hostdb is the single source of truth.
60
6
  */
61
- export function normalizeVersion(version) {
62
- // If it's a major version key in the map, return the full version
63
- const fullVersion = POSTGRESQL_VERSION_MAP[version];
64
- if (fullVersion) {
65
- return fullVersion;
7
+ import { resolveVersion as hostdbResolveVersion, getSupportedMajorVersions, listVersions, } from 'hostdb';
8
+ const ENGINE = 'postgresql';
9
+ function buildVersionMap() {
10
+ const map = {};
11
+ for (const major of getSupportedMajorVersions(ENGINE)) {
12
+ const r = hostdbResolveVersion(ENGINE, major);
13
+ if (r)
14
+ map[major] = r;
66
15
  }
67
- // If it's already a known full version (a value in the map), return as-is
68
- const knownVersions = Object.values(POSTGRESQL_VERSION_MAP);
69
- if (knownVersions.includes(version)) {
70
- return version;
16
+ for (const minor of listVersions(ENGINE, { format: 'major-minor' })) {
17
+ const r = hostdbResolveVersion(ENGINE, minor);
18
+ if (r)
19
+ map[minor] = r;
71
20
  }
72
- // If it looks like a full version (X.Y.Z), return as-is but warn
73
- if (/^\d+\.\d+\.\d+$/.test(version)) {
74
- console.warn(`PostgreSQL version '${version}' not in version map, may not be available in hostdb`);
75
- return version;
21
+ for (const full of listVersions(ENGINE, { format: 'full' })) {
22
+ map[full] = full;
76
23
  }
77
- // Unknown version format - warn and return unchanged
78
- console.warn(`PostgreSQL version '${version}' not in version map, may not be available in hostdb`);
24
+ return map;
25
+ }
26
+ export const POSTGRESQL_VERSION_MAP = buildVersionMap();
27
+ export const SUPPORTED_MAJOR_VERSIONS = getSupportedMajorVersions(ENGINE);
28
+ export function getFullVersion(majorVersion) {
29
+ return hostdbResolveVersion(ENGINE, majorVersion);
30
+ }
31
+ export function normalizeVersion(version) {
32
+ const resolved = hostdbResolveVersion(ENGINE, version);
33
+ if (resolved)
34
+ return resolved;
35
+ console.warn(`PostgreSQL version '${version}' not in hostdb, may not be available for download`);
79
36
  return version;
80
37
  }
81
38
  //# sourceMappingURL=version-maps.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version-maps.js","sourceRoot":"","sources":["../../../engines/postgresql/version-maps.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAA2B;IAC5D,uCAAuC;IACvC,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,QAAQ;IACd,qCAAqC;IACrC,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,2CAA2C;IAC3C,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,QAAQ,EAAE,QAAQ;IAClB,SAAS,EAAE,SAAS;IACpB,QAAQ,EAAE,QAAQ;IAClB,QAAQ,EAAE,QAAQ;CACnB,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AAEhE;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,YAAoB;IACjD,OAAO,sBAAsB,CAAC,YAAY,CAAC,IAAI,IAAI,CAAA;AACrD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,kEAAkE;IAClE,MAAM,WAAW,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAA;IACnD,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,0EAA0E;IAC1E,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAA;IAC3D,IAAI,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACpC,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,iEAAiE;IACjE,IAAI,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,IAAI,CACV,uBAAuB,OAAO,sDAAsD,CACrF,CAAA;QACD,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,qDAAqD;IACrD,OAAO,CAAC,IAAI,CACV,uBAAuB,OAAO,sDAAsD,CACrF,CAAA;IACD,OAAO,OAAO,CAAA;AAChB,CAAC"}
1
+ {"version":3,"file":"version-maps.js","sourceRoot":"","sources":["../../../engines/postgresql/version-maps.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,cAAc,IAAI,oBAAoB,EACtC,yBAAyB,EACzB,YAAY,GACb,MAAM,QAAQ,CAAA;AAEf,MAAM,MAAM,GAAG,YAAY,CAAA;AAE3B,SAAS,eAAe;IACtB,MAAM,GAAG,GAA2B,EAAE,CAAA;IACtC,KAAK,MAAM,KAAK,IAAI,yBAAyB,CAAC,MAAM,CAAC,EAAE,CAAC;QACtD,MAAM,CAAC,GAAG,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;QAC7C,IAAI,CAAC;YAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACvB,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,YAAY,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC;QACpE,MAAM,CAAC,GAAG,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;QAC7C,IAAI,CAAC;YAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACvB,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,YAAY,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QAC5D,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAClB,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,MAAM,CAAC,MAAM,sBAAsB,GAA2B,eAAe,EAAE,CAAA;AAE/E,MAAM,CAAC,MAAM,wBAAwB,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAA;AAEzE,MAAM,UAAU,cAAc,CAAC,YAAoB;IACjD,OAAO,oBAAoB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;AACnD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,MAAM,QAAQ,GAAG,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACtD,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAA;IAC7B,OAAO,CAAC,IAAI,CACV,uBAAuB,OAAO,oDAAoD,CACnF,CAAA;IACD,OAAO,OAAO,CAAA;AAChB,CAAC"}
@@ -1,58 +1,39 @@
1
1
  /**
2
2
  * Qdrant Version Maps
3
3
  *
4
- * TEMPORARY: This version map will be replaced by the hostdb npm package once published.
5
- * Until then, manually keep this in sync with robertjbass/hostdb releases.json:
6
- * https://github.com/robertjbass/hostdb/blob/main/releases.json
7
- *
8
- * When updating versions:
9
- * 1. Check hostdb releases.json for available versions
10
- * 2. Update QDRANT_VERSION_MAP to match
4
+ * Thin wrapper around the `hostdb` npm package. See engines/sqlite/version-maps.ts
5
+ * for the architecture rationale hostdb is the single source of truth.
11
6
  */
7
+ import { resolveVersion as hostdbResolveVersion, getSupportedMajorVersions, listVersions, } from 'hostdb';
12
8
  import { logDebug } from '../../core/error-handler.js';
13
- /**
14
- * Map of major Qdrant versions to their latest stable patch versions.
15
- * Must match versions available in hostdb releases.json.
16
- */
17
- export const QDRANT_VERSION_MAP = {
18
- // 1-part: major version -> latest
19
- '1': '1.16.3',
20
- // 2-part: major.minor -> latest patch
21
- '1.16': '1.16.3',
22
- // 3-part: exact version (identity mapping)
23
- '1.16.3': '1.16.3',
24
- };
25
- /**
26
- * Supported major Qdrant versions (1-part format).
27
- * Used for grouping and display purposes.
28
- */
29
- export const SUPPORTED_MAJOR_VERSIONS = ['1'];
30
- /**
31
- * Get the full version string for a major version.
32
- *
33
- * @param majorVersion - Major version (e.g., '1')
34
- * @returns Full version string (e.g., '1.16.3') or null if not supported
35
- */
9
+ const ENGINE = 'qdrant';
10
+ function buildVersionMap() {
11
+ const map = {};
12
+ for (const major of getSupportedMajorVersions(ENGINE)) {
13
+ const r = hostdbResolveVersion(ENGINE, major);
14
+ if (r)
15
+ map[major] = r;
16
+ }
17
+ for (const minor of listVersions(ENGINE, { format: 'major-minor' })) {
18
+ const r = hostdbResolveVersion(ENGINE, minor);
19
+ if (r)
20
+ map[minor] = r;
21
+ }
22
+ for (const full of listVersions(ENGINE, { format: 'full' })) {
23
+ map[full] = full;
24
+ }
25
+ return map;
26
+ }
27
+ export const QDRANT_VERSION_MAP = buildVersionMap();
28
+ export const SUPPORTED_MAJOR_VERSIONS = getSupportedMajorVersions(ENGINE);
36
29
  export function getFullVersion(majorVersion) {
37
- return QDRANT_VERSION_MAP[majorVersion] || null;
30
+ return hostdbResolveVersion(ENGINE, majorVersion);
38
31
  }
39
- /**
40
- * Normalize a version string to X.Y.Z format.
41
- *
42
- * @param version - Version string (e.g., '1', '1.16', '1.16.3')
43
- * @returns Normalized version (e.g., '1.16.3')
44
- */
45
32
  export function normalizeVersion(version) {
46
- // If it's in the version map (major, major.minor, or full version), return the mapped value
47
- // Note: Full versions have identity mappings (e.g., '1.16.3' => '1.16.3')
48
- const fullVersion = QDRANT_VERSION_MAP[version];
49
- if (fullVersion) {
50
- return fullVersion;
51
- }
52
- // Unknown version - warn and return as-is
53
- // This may cause download failures if the version doesn't exist in hostdb
33
+ const resolved = hostdbResolveVersion(ENGINE, version);
34
+ if (resolved)
35
+ return resolved;
54
36
  const parts = version.split('.');
55
- // Validate format: must be 1-3 numeric segments (e.g., "1", "1.16", "1.16.3")
56
37
  const isValidFormat = parts.length >= 1 &&
57
38
  parts.length <= 3 &&
58
39
  parts.every((p) => /^\d+$/.test(p));
@@ -60,7 +41,7 @@ export function normalizeVersion(version) {
60
41
  logDebug(`Qdrant version '${version}' has invalid format, may not be available in hostdb`);
61
42
  }
62
43
  else {
63
- logDebug(`Qdrant version '${version}' not in version map, may not be available in hostdb`);
44
+ logDebug(`Qdrant version '${version}' not in hostdb, may not be available for download`);
64
45
  }
65
46
  return version;
66
47
  }
@@ -1 +1 @@
1
- {"version":3,"file":"version-maps.js","sourceRoot":"","sources":["../../../engines/qdrant/version-maps.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAEnD;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAA2B;IACxD,kCAAkC;IAClC,GAAG,EAAE,QAAQ;IACb,sCAAsC;IACtC,MAAM,EAAE,QAAQ;IAChB,2CAA2C;IAC3C,QAAQ,EAAE,QAAQ;CACnB,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,GAAG,CAAC,CAAA;AAE7C;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,YAAoB;IACjD,OAAO,kBAAkB,CAAC,YAAY,CAAC,IAAI,IAAI,CAAA;AACjD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,4FAA4F;IAC5F,0EAA0E;IAC1E,MAAM,WAAW,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAA;IAC/C,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,0CAA0C;IAC1C,0EAA0E;IAC1E,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAEhC,8EAA8E;IAC9E,MAAM,aAAa,GACjB,KAAK,CAAC,MAAM,IAAI,CAAC;QACjB,KAAK,CAAC,MAAM,IAAI,CAAC;QACjB,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;IAErC,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,QAAQ,CACN,mBAAmB,OAAO,sDAAsD,CACjF,CAAA;IACH,CAAC;SAAM,CAAC;QACN,QAAQ,CACN,mBAAmB,OAAO,sDAAsD,CACjF,CAAA;IACH,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC"}
1
+ {"version":3,"file":"version-maps.js","sourceRoot":"","sources":["../../../engines/qdrant/version-maps.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,cAAc,IAAI,oBAAoB,EACtC,yBAAyB,EACzB,YAAY,GACb,MAAM,QAAQ,CAAA;AACf,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAEnD,MAAM,MAAM,GAAG,QAAQ,CAAA;AAEvB,SAAS,eAAe;IACtB,MAAM,GAAG,GAA2B,EAAE,CAAA;IACtC,KAAK,MAAM,KAAK,IAAI,yBAAyB,CAAC,MAAM,CAAC,EAAE,CAAC;QACtD,MAAM,CAAC,GAAG,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;QAC7C,IAAI,CAAC;YAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACvB,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,YAAY,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC;QACpE,MAAM,CAAC,GAAG,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;QAC7C,IAAI,CAAC;YAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACvB,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,YAAY,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QAC5D,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAClB,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,MAAM,CAAC,MAAM,kBAAkB,GAA2B,eAAe,EAAE,CAAA;AAE3E,MAAM,CAAC,MAAM,wBAAwB,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAA;AAEzE,MAAM,UAAU,cAAc,CAAC,YAAoB;IACjD,OAAO,oBAAoB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;AACnD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,MAAM,QAAQ,GAAG,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACtD,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAA;IAE7B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAChC,MAAM,aAAa,GACjB,KAAK,CAAC,MAAM,IAAI,CAAC;QACjB,KAAK,CAAC,MAAM,IAAI,CAAC;QACjB,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;IAErC,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,QAAQ,CACN,mBAAmB,OAAO,sDAAsD,CACjF,CAAA;IACH,CAAC;SAAM,CAAC;QACN,QAAQ,CACN,mBAAmB,OAAO,oDAAoD,CAC/E,CAAA;IACH,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC"}
@@ -1,33 +1,32 @@
1
1
  /**
2
2
  * QuestDB Version Maps
3
3
  *
4
- * IMPORTANT: Keep this in sync with hostdb databases.json:
5
- * https://github.com/robertjbass/hostdb/blob/main/databases.json
6
- *
7
- * QuestDB uses standard semantic versioning (e.g., 9.2.3)
4
+ * Thin wrapper around the `hostdb` npm package. See engines/sqlite/version-maps.ts
5
+ * for the architecture rationale — hostdb is the single source of truth.
8
6
  */
9
- export const QUESTDB_VERSION_MAP = {
10
- '9': '9.2.3',
11
- '9.2': '9.2.3',
12
- '9.2.3': '9.2.3',
13
- };
14
- export const SUPPORTED_MAJOR_VERSIONS = ['9'];
15
- export const FALLBACK_VERSION_MAP = QUESTDB_VERSION_MAP;
16
- /**
17
- * Normalize a version string to a full version
18
- * e.g., '9' -> '9.2.3'
19
- */
20
- export function normalizeVersion(version) {
21
- // If already a full version, return as-is
22
- if (/^\d+\.\d+\.\d+$/.test(version)) {
23
- return version;
7
+ import { resolveVersion as hostdbResolveVersion, getSupportedMajorVersions, listVersions, } from 'hostdb';
8
+ const ENGINE = 'questdb';
9
+ function buildVersionMap() {
10
+ const map = {};
11
+ for (const major of getSupportedMajorVersions(ENGINE)) {
12
+ const r = hostdbResolveVersion(ENGINE, major);
13
+ if (r)
14
+ map[major] = r;
24
15
  }
25
- // Try to look up in version map
26
- const fullVersion = QUESTDB_VERSION_MAP[version];
27
- if (fullVersion) {
28
- return fullVersion;
16
+ for (const minor of listVersions(ENGINE, { format: 'major-minor' })) {
17
+ const r = hostdbResolveVersion(ENGINE, minor);
18
+ if (r)
19
+ map[minor] = r;
29
20
  }
30
- // Return as-is if not found
31
- return version;
21
+ for (const full of listVersions(ENGINE, { format: 'full' })) {
22
+ map[full] = full;
23
+ }
24
+ return map;
25
+ }
26
+ export const QUESTDB_VERSION_MAP = buildVersionMap();
27
+ export const SUPPORTED_MAJOR_VERSIONS = getSupportedMajorVersions(ENGINE);
28
+ export const FALLBACK_VERSION_MAP = QUESTDB_VERSION_MAP;
29
+ export function normalizeVersion(version) {
30
+ return hostdbResolveVersion(ENGINE, version) ?? version;
32
31
  }
33
32
  //# sourceMappingURL=version-maps.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version-maps.js","sourceRoot":"","sources":["../../../engines/questdb/version-maps.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAA2B;IACzD,GAAG,EAAE,OAAO;IACZ,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,OAAO;CACjB,CAAA;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,GAAG,CAAC,CAAA;AAC7C,MAAM,CAAC,MAAM,oBAAoB,GAAG,mBAAmB,CAAA;AAEvD;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,0CAA0C;IAC1C,IAAI,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACpC,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,gCAAgC;IAChC,MAAM,WAAW,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAA;IAChD,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,4BAA4B;IAC5B,OAAO,OAAO,CAAA;AAChB,CAAC"}
1
+ {"version":3,"file":"version-maps.js","sourceRoot":"","sources":["../../../engines/questdb/version-maps.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,cAAc,IAAI,oBAAoB,EACtC,yBAAyB,EACzB,YAAY,GACb,MAAM,QAAQ,CAAA;AAEf,MAAM,MAAM,GAAG,SAAS,CAAA;AAExB,SAAS,eAAe;IACtB,MAAM,GAAG,GAA2B,EAAE,CAAA;IACtC,KAAK,MAAM,KAAK,IAAI,yBAAyB,CAAC,MAAM,CAAC,EAAE,CAAC;QACtD,MAAM,CAAC,GAAG,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;QAC7C,IAAI,CAAC;YAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACvB,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,YAAY,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC;QACpE,MAAM,CAAC,GAAG,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;QAC7C,IAAI,CAAC;YAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACvB,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,YAAY,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QAC5D,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAClB,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAA2B,eAAe,EAAE,CAAA;AAE5E,MAAM,CAAC,MAAM,wBAAwB,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAA;AAEzE,MAAM,CAAC,MAAM,oBAAoB,GAAG,mBAAmB,CAAA;AAEvD,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,OAAO,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,OAAO,CAAA;AACzD,CAAC"}