chkit 0.1.2-beta.7 → 0.2.0-beta.12

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 (322) hide show
  1. package/README.md +69 -56
  2. package/dist/bin/chkit.js +82 -31
  3. package/dist/bin/chkit.js.map +1 -1
  4. package/dist/commands/check/output.js +1 -1
  5. package/dist/commands/check/output.js.map +1 -1
  6. package/dist/commands/drift/command.d.ts.map +1 -1
  7. package/dist/commands/drift/command.js +9 -0
  8. package/dist/commands/drift/command.js.map +1 -1
  9. package/dist/commands/drift/compare.d.ts +52 -4
  10. package/dist/commands/drift/compare.d.ts.map +1 -1
  11. package/dist/commands/drift/compare.js +258 -49
  12. package/dist/commands/drift/compare.js.map +1 -1
  13. package/dist/commands/drift/payload.d.ts +1 -0
  14. package/dist/commands/drift/payload.d.ts.map +1 -1
  15. package/dist/commands/drift/payload.js +59 -10
  16. package/dist/commands/drift/payload.js.map +1 -1
  17. package/dist/commands/generate/command.d.ts.map +1 -1
  18. package/dist/commands/generate/command.js +73 -33
  19. package/dist/commands/generate/command.js.map +1 -1
  20. package/dist/commands/generate/cutover.d.ts +56 -0
  21. package/dist/commands/generate/cutover.d.ts.map +1 -0
  22. package/dist/commands/generate/cutover.js +138 -0
  23. package/dist/commands/generate/cutover.js.map +1 -0
  24. package/dist/commands/generate/output.d.ts +3 -2
  25. package/dist/commands/generate/output.d.ts.map +1 -1
  26. package/dist/commands/generate/output.js +17 -2
  27. package/dist/commands/generate/output.js.map +1 -1
  28. package/dist/commands/generate/plan-pipeline.d.ts.map +1 -1
  29. package/dist/commands/generate/plan-pipeline.js +35 -36
  30. package/dist/commands/generate/plan-pipeline.js.map +1 -1
  31. package/dist/commands/init.d.ts +2 -0
  32. package/dist/commands/init.d.ts.map +1 -1
  33. package/dist/commands/init.js +21 -4
  34. package/dist/commands/init.js.map +1 -1
  35. package/dist/commands/migrate/abandon.d.ts +39 -0
  36. package/dist/commands/migrate/abandon.d.ts.map +1 -0
  37. package/dist/commands/migrate/abandon.js +76 -0
  38. package/dist/commands/migrate/abandon.js.map +1 -0
  39. package/dist/commands/migrate/apply.d.ts +10 -1
  40. package/dist/commands/migrate/apply.d.ts.map +1 -1
  41. package/dist/commands/migrate/apply.js +108 -10
  42. package/dist/commands/migrate/apply.js.map +1 -1
  43. package/dist/commands/migrate/async-apply.d.ts +11 -3
  44. package/dist/commands/migrate/async-apply.d.ts.map +1 -1
  45. package/dist/commands/migrate/async-apply.js +113 -27
  46. package/dist/commands/migrate/async-apply.js.map +1 -1
  47. package/dist/commands/migrate/command.d.ts +46 -1
  48. package/dist/commands/migrate/command.d.ts.map +1 -1
  49. package/dist/commands/migrate/command.js +159 -35
  50. package/dist/commands/migrate/command.js.map +1 -1
  51. package/dist/commands/migrate/empty.d.ts +8 -0
  52. package/dist/commands/migrate/empty.d.ts.map +1 -0
  53. package/dist/commands/migrate/empty.js +17 -0
  54. package/dist/commands/migrate/empty.js.map +1 -0
  55. package/dist/commands/migrate/errors.d.ts +22 -0
  56. package/dist/commands/migrate/errors.d.ts.map +1 -0
  57. package/dist/commands/migrate/errors.js +31 -0
  58. package/dist/commands/migrate/errors.js.map +1 -0
  59. package/dist/commands/migrate/output.d.ts +31 -0
  60. package/dist/commands/migrate/output.d.ts.map +1 -1
  61. package/dist/commands/migrate/output.js +120 -9
  62. package/dist/commands/migrate/output.js.map +1 -1
  63. package/dist/commands/migrate/prompts.d.ts +1 -0
  64. package/dist/commands/migrate/prompts.d.ts.map +1 -1
  65. package/dist/commands/migrate/prompts.js +3 -0
  66. package/dist/commands/migrate/prompts.js.map +1 -1
  67. package/dist/commands/migrate/recovery.d.ts +90 -0
  68. package/dist/commands/migrate/recovery.d.ts.map +1 -0
  69. package/dist/commands/migrate/recovery.js +163 -0
  70. package/dist/commands/migrate/recovery.js.map +1 -0
  71. package/dist/commands/migrate/retry.d.ts +37 -0
  72. package/dist/commands/migrate/retry.d.ts.map +1 -0
  73. package/dist/commands/migrate/retry.js +46 -0
  74. package/dist/commands/migrate/retry.js.map +1 -0
  75. package/dist/commands/migrate/settings.d.ts +8 -0
  76. package/dist/commands/migrate/settings.d.ts.map +1 -0
  77. package/dist/commands/migrate/settings.js +40 -0
  78. package/dist/commands/migrate/settings.js.map +1 -0
  79. package/dist/commands/plugin.d.ts.map +1 -1
  80. package/dist/commands/plugin.js +28 -4
  81. package/dist/commands/plugin.js.map +1 -1
  82. package/dist/commands/query.d.ts.map +1 -1
  83. package/dist/commands/query.js +11 -15
  84. package/dist/commands/query.js.map +1 -1
  85. package/dist/commands/registry.d.ts +2 -0
  86. package/dist/commands/registry.d.ts.map +1 -0
  87. package/dist/commands/registry.js +228 -0
  88. package/dist/commands/registry.js.map +1 -0
  89. package/dist/commands/snapshot/command.d.ts +3 -0
  90. package/dist/commands/snapshot/command.d.ts.map +1 -0
  91. package/dist/commands/snapshot/command.js +32 -0
  92. package/dist/commands/snapshot/command.js.map +1 -0
  93. package/dist/commands/snapshot/output.d.ts +24 -0
  94. package/dist/commands/snapshot/output.d.ts.map +1 -0
  95. package/dist/commands/snapshot/output.js +86 -0
  96. package/dist/commands/snapshot/output.js.map +1 -0
  97. package/dist/commands/snapshot/rebuild.d.ts +19 -0
  98. package/dist/commands/snapshot/rebuild.d.ts.map +1 -0
  99. package/dist/commands/snapshot/rebuild.js +94 -0
  100. package/dist/commands/snapshot/rebuild.js.map +1 -0
  101. package/dist/internal-plugins/core/plugin.d.ts.map +1 -1
  102. package/dist/internal-plugins/core/plugin.js +2 -0
  103. package/dist/internal-plugins/core/plugin.js.map +1 -1
  104. package/dist/registry/build.d.ts +17 -0
  105. package/dist/registry/build.d.ts.map +1 -0
  106. package/dist/registry/build.js +94 -0
  107. package/dist/registry/build.js.map +1 -0
  108. package/dist/registry/dependencies.d.ts +19 -0
  109. package/dist/registry/dependencies.d.ts.map +1 -0
  110. package/dist/registry/dependencies.js +105 -0
  111. package/dist/registry/dependencies.js.map +1 -0
  112. package/dist/registry/files.d.ts +4 -0
  113. package/dist/registry/files.d.ts.map +1 -0
  114. package/dist/registry/files.js +33 -0
  115. package/dist/registry/files.js.map +1 -0
  116. package/dist/registry/install.d.ts +55 -0
  117. package/dist/registry/install.d.ts.map +1 -0
  118. package/dist/registry/install.js +175 -0
  119. package/dist/registry/install.js.map +1 -0
  120. package/dist/registry/model.d.ts +172 -0
  121. package/dist/registry/model.d.ts.map +1 -0
  122. package/dist/registry/model.js +161 -0
  123. package/dist/registry/model.js.map +1 -0
  124. package/dist/registry/project-config.d.ts +18 -0
  125. package/dist/registry/project-config.d.ts.map +1 -0
  126. package/dist/registry/project-config.js +337 -0
  127. package/dist/registry/project-config.js.map +1 -0
  128. package/dist/registry/resolve.d.ts +7 -0
  129. package/dist/registry/resolve.d.ts.map +1 -0
  130. package/dist/registry/resolve.js +136 -0
  131. package/dist/registry/resolve.js.map +1 -0
  132. package/dist/runtime/argv.d.ts +3 -0
  133. package/dist/runtime/argv.d.ts.map +1 -0
  134. package/dist/runtime/argv.js +29 -0
  135. package/dist/runtime/argv.js.map +1 -0
  136. package/dist/runtime/command-dispatch.d.ts +2 -1
  137. package/dist/runtime/command-dispatch.d.ts.map +1 -1
  138. package/dist/runtime/command-dispatch.js +15 -7
  139. package/dist/runtime/command-dispatch.js.map +1 -1
  140. package/dist/runtime/config-merge.d.ts.map +1 -1
  141. package/dist/runtime/config-merge.js +2 -1
  142. package/dist/runtime/config-merge.js.map +1 -1
  143. package/dist/runtime/config.d.ts.map +1 -1
  144. package/dist/runtime/config.js +2 -1
  145. package/dist/runtime/config.js.map +1 -1
  146. package/dist/runtime/global-flags.d.ts +4 -0
  147. package/dist/runtime/global-flags.d.ts.map +1 -1
  148. package/dist/runtime/global-flags.js +1 -0
  149. package/dist/runtime/global-flags.js.map +1 -1
  150. package/dist/runtime/help.d.ts +1 -1
  151. package/dist/runtime/help.d.ts.map +1 -1
  152. package/dist/runtime/help.js +13 -4
  153. package/dist/runtime/help.js.map +1 -1
  154. package/dist/runtime/journal-store.d.ts.map +1 -1
  155. package/dist/runtime/journal-store.js +178 -42
  156. package/dist/runtime/journal-store.js.map +1 -1
  157. package/dist/runtime/json-output.d.ts +15 -1
  158. package/dist/runtime/json-output.d.ts.map +1 -1
  159. package/dist/runtime/json-output.js +43 -2
  160. package/dist/runtime/json-output.js.map +1 -1
  161. package/dist/runtime/migration-store.d.ts +1 -1
  162. package/dist/runtime/migration-store.d.ts.map +1 -1
  163. package/dist/runtime/migration-store.js +17 -16
  164. package/dist/runtime/migration-store.js.map +1 -1
  165. package/dist/runtime/plugin-runtime/executor-debug.d.ts.map +1 -1
  166. package/dist/runtime/plugin-runtime/executor-debug.js +10 -8
  167. package/dist/runtime/plugin-runtime/executor-debug.js.map +1 -1
  168. package/dist/runtime/plugin-runtime/loader.js +1 -1
  169. package/dist/runtime/plugin-runtime/loader.js.map +1 -1
  170. package/dist/runtime/safety-markers.d.ts +4 -2
  171. package/dist/runtime/safety-markers.d.ts.map +1 -1
  172. package/dist/runtime/safety-markers.js +4 -2
  173. package/dist/runtime/safety-markers.js.map +1 -1
  174. package/dist/runtime/schema-loader.d.ts +20 -1
  175. package/dist/runtime/schema-loader.d.ts.map +1 -1
  176. package/dist/runtime/schema-loader.js +26 -0
  177. package/dist/runtime/schema-loader.js.map +1 -1
  178. package/dist/runtime/snapshot-document.d.ts +33 -0
  179. package/dist/runtime/snapshot-document.d.ts.map +1 -0
  180. package/dist/runtime/snapshot-document.js +65 -0
  181. package/dist/runtime/snapshot-document.js.map +1 -0
  182. package/package.json +20 -7
  183. package/dist/bin/clickhouse-resource.d.ts +0 -4
  184. package/dist/bin/clickhouse-resource.d.ts.map +0 -1
  185. package/dist/bin/clickhouse-resource.js +0 -11
  186. package/dist/bin/clickhouse-resource.js.map +0 -1
  187. package/dist/bin/command-dispatch.d.ts +0 -13
  188. package/dist/bin/command-dispatch.d.ts.map +0 -1
  189. package/dist/bin/command-dispatch.js +0 -186
  190. package/dist/bin/command-dispatch.js.map +0 -1
  191. package/dist/bin/command-registry.d.ts +0 -34
  192. package/dist/bin/command-registry.d.ts.map +0 -1
  193. package/dist/bin/command-registry.js +0 -87
  194. package/dist/bin/command-registry.js.map +0 -1
  195. package/dist/bin/commands/check.d.ts +0 -3
  196. package/dist/bin/commands/check.d.ts.map +0 -1
  197. package/dist/bin/commands/check.js +0 -181
  198. package/dist/bin/commands/check.js.map +0 -1
  199. package/dist/bin/commands/codegen.d.ts +0 -2
  200. package/dist/bin/commands/codegen.d.ts.map +0 -1
  201. package/dist/bin/commands/codegen.js +0 -25
  202. package/dist/bin/commands/codegen.js.map +0 -1
  203. package/dist/bin/commands/drift.d.ts +0 -27
  204. package/dist/bin/commands/drift.d.ts.map +0 -1
  205. package/dist/bin/commands/drift.js +0 -220
  206. package/dist/bin/commands/drift.js.map +0 -1
  207. package/dist/bin/commands/generate/output.d.ts +0 -8
  208. package/dist/bin/commands/generate/output.d.ts.map +0 -1
  209. package/dist/bin/commands/generate/output.js +0 -58
  210. package/dist/bin/commands/generate/output.js.map +0 -1
  211. package/dist/bin/commands/generate/plan-pipeline.d.ts +0 -7
  212. package/dist/bin/commands/generate/plan-pipeline.d.ts.map +0 -1
  213. package/dist/bin/commands/generate/plan-pipeline.js +0 -143
  214. package/dist/bin/commands/generate/plan-pipeline.js.map +0 -1
  215. package/dist/bin/commands/generate/rename-mappings.d.ts +0 -29
  216. package/dist/bin/commands/generate/rename-mappings.d.ts.map +0 -1
  217. package/dist/bin/commands/generate/rename-mappings.js +0 -195
  218. package/dist/bin/commands/generate/rename-mappings.js.map +0 -1
  219. package/dist/bin/commands/generate.d.ts +0 -3
  220. package/dist/bin/commands/generate.d.ts.map +0 -1
  221. package/dist/bin/commands/generate.js +0 -158
  222. package/dist/bin/commands/generate.js.map +0 -1
  223. package/dist/bin/commands/init.d.ts +0 -2
  224. package/dist/bin/commands/init.d.ts.map +0 -1
  225. package/dist/bin/commands/init.js +0 -12
  226. package/dist/bin/commands/init.js.map +0 -1
  227. package/dist/bin/commands/migrate.d.ts +0 -3
  228. package/dist/bin/commands/migrate.d.ts.map +0 -1
  229. package/dist/bin/commands/migrate.js +0 -288
  230. package/dist/bin/commands/migrate.js.map +0 -1
  231. package/dist/bin/commands/plugin-like.d.ts +0 -38
  232. package/dist/bin/commands/plugin-like.d.ts.map +0 -1
  233. package/dist/bin/commands/plugin-like.js +0 -101
  234. package/dist/bin/commands/plugin-like.js.map +0 -1
  235. package/dist/bin/commands/plugin.d.ts +0 -3
  236. package/dist/bin/commands/plugin.d.ts.map +0 -1
  237. package/dist/bin/commands/plugin.js +0 -148
  238. package/dist/bin/commands/plugin.js.map +0 -1
  239. package/dist/bin/commands/pull.d.ts +0 -2
  240. package/dist/bin/commands/pull.d.ts.map +0 -1
  241. package/dist/bin/commands/pull.js +0 -25
  242. package/dist/bin/commands/pull.js.map +0 -1
  243. package/dist/bin/commands/status.d.ts +0 -3
  244. package/dist/bin/commands/status.d.ts.map +0 -1
  245. package/dist/bin/commands/status.js +0 -63
  246. package/dist/bin/commands/status.js.map +0 -1
  247. package/dist/bin/commands/typegen.d.ts +0 -2
  248. package/dist/bin/commands/typegen.d.ts.map +0 -1
  249. package/dist/bin/commands/typegen.js +0 -25
  250. package/dist/bin/commands/typegen.js.map +0 -1
  251. package/dist/bin/config.d.ts +0 -13
  252. package/dist/bin/config.d.ts.map +0 -1
  253. package/dist/bin/config.js +0 -48
  254. package/dist/bin/config.js.map +0 -1
  255. package/dist/bin/debug.d.ts +0 -3
  256. package/dist/bin/debug.d.ts.map +0 -1
  257. package/dist/bin/debug.js +0 -14
  258. package/dist/bin/debug.js.map +0 -1
  259. package/dist/bin/global-flags.d.ts +0 -16
  260. package/dist/bin/global-flags.d.ts.map +0 -1
  261. package/dist/bin/global-flags.js +0 -7
  262. package/dist/bin/global-flags.js.map +0 -1
  263. package/dist/bin/help.d.ts +0 -5
  264. package/dist/bin/help.d.ts.map +0 -1
  265. package/dist/bin/help.js +0 -84
  266. package/dist/bin/help.js.map +0 -1
  267. package/dist/bin/internal-plugins/index.d.ts +0 -3
  268. package/dist/bin/internal-plugins/index.d.ts.map +0 -1
  269. package/dist/bin/internal-plugins/index.js +0 -5
  270. package/dist/bin/internal-plugins/index.js.map +0 -1
  271. package/dist/bin/internal-plugins/skill-hint.d.ts +0 -31
  272. package/dist/bin/internal-plugins/skill-hint.d.ts.map +0 -1
  273. package/dist/bin/internal-plugins/skill-hint.js +0 -172
  274. package/dist/bin/internal-plugins/skill-hint.js.map +0 -1
  275. package/dist/bin/journal-store.d.ts +0 -10
  276. package/dist/bin/journal-store.d.ts.map +0 -1
  277. package/dist/bin/journal-store.js +0 -137
  278. package/dist/bin/journal-store.js.map +0 -1
  279. package/dist/bin/json-output.d.ts +0 -5
  280. package/dist/bin/json-output.d.ts.map +0 -1
  281. package/dist/bin/json-output.js +0 -21
  282. package/dist/bin/json-output.js.map +0 -1
  283. package/dist/bin/lib.d.ts +0 -5
  284. package/dist/bin/lib.d.ts.map +0 -1
  285. package/dist/bin/lib.js +0 -5
  286. package/dist/bin/lib.js.map +0 -1
  287. package/dist/bin/logging.d.ts +0 -3
  288. package/dist/bin/logging.d.ts.map +0 -1
  289. package/dist/bin/logging.js +0 -31
  290. package/dist/bin/logging.js.map +0 -1
  291. package/dist/bin/migration-store.d.ts +0 -22
  292. package/dist/bin/migration-store.d.ts.map +0 -1
  293. package/dist/bin/migration-store.js +0 -60
  294. package/dist/bin/migration-store.js.map +0 -1
  295. package/dist/bin/plugin-runtime.d.ts +0 -45
  296. package/dist/bin/plugin-runtime.d.ts.map +0 -1
  297. package/dist/bin/plugin-runtime.js +0 -513
  298. package/dist/bin/plugin-runtime.js.map +0 -1
  299. package/dist/bin/safety-markers.d.ts +0 -23
  300. package/dist/bin/safety-markers.d.ts.map +0 -1
  301. package/dist/bin/safety-markers.js +0 -85
  302. package/dist/bin/safety-markers.js.map +0 -1
  303. package/dist/bin/schema-loader.d.ts +0 -3
  304. package/dist/bin/schema-loader.d.ts.map +0 -1
  305. package/dist/bin/schema-loader.js +0 -11
  306. package/dist/bin/schema-loader.js.map +0 -1
  307. package/dist/bin/table-scope.d.ts +0 -38
  308. package/dist/bin/table-scope.d.ts.map +0 -1
  309. package/dist/bin/table-scope.js +0 -167
  310. package/dist/bin/table-scope.js.map +0 -1
  311. package/dist/bin/version.d.ts +0 -2
  312. package/dist/bin/version.d.ts.map +0 -1
  313. package/dist/bin/version.js +0 -5
  314. package/dist/bin/version.js.map +0 -1
  315. package/dist/drift-diff.d.ts +0 -8
  316. package/dist/drift-diff.d.ts.map +0 -1
  317. package/dist/drift-diff.js +0 -46
  318. package/dist/drift-diff.js.map +0 -1
  319. package/dist/drift.d.ts +0 -66
  320. package/dist/drift.d.ts.map +0 -1
  321. package/dist/drift.js +0 -220
  322. package/dist/drift.js.map +0 -1
@@ -1,5 +1,7 @@
1
- import { isUnknownDatabaseError } from '@chkit/clickhouse';
1
+ import { setTimeout as sleep } from 'node:timers/promises';
2
+ import { allReplicas, isUnknownDatabaseError, resolveReplicaFanout, waitForTable } from '@chkit/clickhouse';
2
3
  import { onClusterClause } from '@chkit/core';
4
+ import pRetry from 'p-retry';
3
5
  import { CLI_VERSION } from './version.js';
4
6
  import { debug } from './debug.js';
5
7
  const DEFAULT_JOURNAL_TABLE = '_chkit_migrations';
@@ -13,6 +15,25 @@ export function resolveJournalTableName() {
13
15
  return candidate;
14
16
  }
15
17
  const OPERATIONS_TUPLE_TYPE = 'Array(Tuple(operation_index Int32, operation_key String, operation_type String, query_id String, status LowCardinality(String), started_at DateTime64(3, \'UTC\'), finished_at Nullable(DateTime64(3, \'UTC\')), last_error String))';
18
+ const UNKNOWN_TABLE = {
19
+ code: '60',
20
+ name: 'UNKNOWN_TABLE',
21
+ message: /Unknown table expression identifier|Table \S+ does not exist/,
22
+ };
23
+ const UNKNOWN_IDENTIFIER = {
24
+ code: '47',
25
+ name: 'UNKNOWN_IDENTIFIER',
26
+ message: /Unknown expression identifier|Missing columns/,
27
+ };
28
+ const READONLY = { code: '164', name: 'READONLY', message: /in readonly mode/ };
29
+ /** Whether `error` is the ClickHouse error `kind`. The native client sets `code`. */
30
+ function isClickHouseError(error, kind) {
31
+ if (!(error instanceof Error))
32
+ return false;
33
+ if ('code' in error && String(error.code) === kind.code)
34
+ return true;
35
+ return error.message.includes(kind.name) || kind.message.test(error.message);
36
+ }
16
37
  function isRetryableInsertRace(error) {
17
38
  if (!(error instanceof Error))
18
39
  return false;
@@ -77,6 +98,15 @@ function parseOperations(value) {
77
98
  return [];
78
99
  return decoded.map((row) => operationFromTuple(row));
79
100
  }
101
+ /**
102
+ * The `ReplacingMergeTree(applied_at)` version as epoch milliseconds. ClickHouse
103
+ * returns `DateTime64(3, 'UTC')` without a zone and chkit writes ISO strings with
104
+ * or without `Z`; all of them are UTC.
105
+ */
106
+ function rowVersion(appliedAt) {
107
+ const iso = appliedAt.trim().replace(' ', 'T');
108
+ return Date.parse(/(Z|[+-]\d{2}:?\d{2})$/.test(iso) ? iso : `${iso}Z`);
109
+ }
80
110
  export function createJournalStore(db, cluster) {
81
111
  const journalTable = resolveJournalTableName();
82
112
  debug('journal', `journal table: ${journalTable}${process.env.CHKIT_JOURNAL_TABLE ? ' (from CHKIT_JOURNAL_TABLE)' : ''}${cluster ? ` (ON CLUSTER ${cluster})` : ''}`);
@@ -106,15 +136,27 @@ ORDER BY (name)
106
136
  SETTINGS index_granularity = 1`;
107
137
  let bootstrapped = false;
108
138
  let _databaseMissing = false;
109
- async function ensureTable() {
110
- if (bootstrapped)
139
+ // The database exists but the journal does not: reads see no rows, and the
140
+ // first write creates it.
141
+ let tableMissing = false;
142
+ let replicaSyncSupported;
143
+ // Read-your-writes: the last row version this store wrote per migration.
144
+ const lastWritten = new Map();
145
+ /**
146
+ * Makes sure the journal can be read or, with `create`, written. Only a
147
+ * write creates the journal or adds the columns an old one lacks, so
148
+ * status, check and migrate (plan) run as a read-only user (#402).
149
+ */
150
+ async function ensureTable(create) {
151
+ if (bootstrapped || (tableMissing && !create))
111
152
  return;
112
153
  debug('journal', `probing journal table "${journalTable}"`);
113
154
  try {
114
- await db.query(`SELECT name FROM ${journalTable} LIMIT 0`);
115
- debug('journal', 'journal table exists — checking schema');
116
- await ensureSchemaUpgraded();
155
+ await db.query(`SELECT name, migration_completed, operations FROM ${journalTable} LIMIT 0`);
156
+ debug('journal', 'journal table exists');
157
+ await waitForEveryReplica();
117
158
  bootstrapped = true;
159
+ tableMissing = false;
118
160
  return;
119
161
  }
120
162
  catch (error) {
@@ -124,6 +166,25 @@ SETTINGS index_granularity = 1`;
124
166
  bootstrapped = true;
125
167
  return;
126
168
  }
169
+ if (isClickHouseError(error, UNKNOWN_IDENTIFIER)) {
170
+ debug('journal', 'journal table predates per-operation tracking — upgrading');
171
+ await ensureSchemaUpgraded();
172
+ await waitForEveryReplica();
173
+ bootstrapped = true;
174
+ return;
175
+ }
176
+ if (!create) {
177
+ if (!isClickHouseError(error, UNKNOWN_TABLE))
178
+ throw error;
179
+ if (await existsOnAnotherReplica()) {
180
+ await waitForEveryReplica();
181
+ bootstrapped = true;
182
+ return;
183
+ }
184
+ debug('journal', 'journal table does not exist — reading it as empty');
185
+ tableMissing = true;
186
+ return;
187
+ }
127
188
  }
128
189
  debug('journal', 'creating journal table');
129
190
  try {
@@ -138,27 +199,88 @@ SETTINGS index_granularity = 1`;
138
199
  }
139
200
  throw error;
140
201
  }
141
- for (let attempt = 0; attempt < 10; attempt++) {
142
- try {
143
- await db.query(`SELECT name FROM ${journalTable} LIMIT 0`);
144
- debug('journal', `DDL propagation confirmed (attempt ${attempt + 1})`);
145
- break;
146
- }
147
- catch {
148
- await new Promise((r) => setTimeout(r, 250));
149
- }
150
- }
202
+ await pRetry(async (attempt) => {
203
+ await db.query(`SELECT name FROM ${journalTable} LIMIT 0`);
204
+ debug('journal', `DDL propagation confirmed (attempt ${attempt})`);
205
+ }, { retries: 9, minTimeout: 250, factor: 1 }).catch(() => undefined);
206
+ await waitForEveryReplica();
151
207
  bootstrapped = true;
208
+ tableMissing = false;
209
+ }
210
+ // On a multi-replica target, the replica that answered the probe may not
211
+ // have applied another process's CREATE yet.
212
+ async function existsOnAnotherReplica() {
213
+ const fanout = await resolveReplicaFanout(db, cluster);
214
+ if (!fanout)
215
+ return false;
216
+ const [row] = await db.query(`SELECT count() AS replicas FROM ${allReplicas(fanout, 'system.tables')} WHERE database = currentDatabase() AND name = '${journalTable}'`);
217
+ return Number(row?.replicas ?? 0) > 0;
218
+ }
219
+ // A multi-replica target reads the journal from every replica (#265), which
220
+ // fails while one of them does not have the table yet, e.g. right after the
221
+ // CREATE above or another process's. A single replica needs no wait.
222
+ async function waitForEveryReplica() {
223
+ if (!(await resolveReplicaFanout(db, cluster)))
224
+ return;
225
+ const [row] = await db.query('SELECT currentDatabase() AS database');
226
+ await waitForTable(db, row?.database ?? 'default', journalTable, { cluster });
152
227
  }
153
228
  async function ensureSchemaUpgraded() {
154
229
  // Pre-existing journal tables predate per-operation tracking. Add the
155
230
  // columns idempotently so older deployments pick them up on first run
156
231
  // of the new chkit. ALTER ADD COLUMN IF NOT EXISTS is a metadata op,
157
232
  // no data rewrite.
158
- await db.command(`ALTER TABLE ${journalTable}${onCluster} ADD COLUMN IF NOT EXISTS migration_completed Bool DEFAULT true`);
159
- await db.command(`ALTER TABLE ${journalTable}${onCluster} ADD COLUMN IF NOT EXISTS operations ${OPERATIONS_TUPLE_TYPE} DEFAULT []`);
233
+ try {
234
+ await db.command(`ALTER TABLE ${journalTable}${onCluster} ADD COLUMN IF NOT EXISTS migration_completed Bool DEFAULT true`);
235
+ await db.command(`ALTER TABLE ${journalTable}${onCluster} ADD COLUMN IF NOT EXISTS operations ${OPERATIONS_TUPLE_TYPE} DEFAULT []`);
236
+ }
237
+ catch (error) {
238
+ // A read-only user cannot run the ALTER (#402).
239
+ throw new Error(`The journal table ${journalTable} predates per-operation tracking and needs its new columns added. Run chkit once as a user that can ALTER it (as migrate --apply needs). ${error instanceof Error ? error.message : String(error)}`, { cause: error });
240
+ }
241
+ }
242
+ /**
243
+ * The rows to read the journal from. A single replica reads the table with
244
+ * FINAL. With several replicas (#265), the replica a read lands on may not
245
+ * have the latest version yet, while the replica that ran an INSERT always
246
+ * has it: read every replica and keep the newest version per migration. Each
247
+ * write stamps applied_at in milliseconds as the row version, which is what
248
+ * ReplacingMergeTree(applied_at) keeps too.
249
+ */
250
+ async function journalRows(where, limit = '') {
251
+ const fanout = await resolveReplicaFanout(db, cluster);
252
+ const columns = 'name, applied_at, checksum, chkit_version, migration_completed, toJSONString(operations) AS operations';
253
+ if (!fanout) {
254
+ const sql = `SELECT ${columns} FROM ${journalTable} FINAL WHERE ${where} ORDER BY name${limit}`;
255
+ try {
256
+ return await db.query(`${sql} SETTINGS select_sequential_consistency = 1`);
257
+ }
258
+ catch (error) {
259
+ // A readonly = 1 user cannot change any setting (#402). It only
260
+ // reads, so there is no write of its own to wait for.
261
+ if (!isClickHouseError(error, READONLY))
262
+ throw error;
263
+ debug('journal', 'read-only user — reading the journal without select_sequential_consistency');
264
+ return await db.query(sql);
265
+ }
266
+ }
267
+ debug('journal', `reading the journal across ${fanout.replicas} replicas of cluster ${fanout.cluster}`);
268
+ return await db.query(`SELECT name, latest.1 AS applied_at, latest.2 AS checksum, latest.3 AS chkit_version, latest.4 AS migration_completed, latest.5 AS operations FROM (SELECT name, argMax(tuple(applied_at, checksum, chkit_version, migration_completed, toJSONString(operations)), applied_at) AS latest FROM clusterAllReplicas('${escapeSqlString(fanout.cluster)}', currentDatabase(), '${journalTable}') GROUP BY name) WHERE ${where} ORDER BY name${limit}`);
160
269
  }
161
270
  async function trySyncReplica() {
271
+ if (replicaSyncSupported === undefined) {
272
+ try {
273
+ const rows = await db.query(`SELECT engine FROM system.tables WHERE database = currentDatabase() AND name = '${journalTable}'`);
274
+ // Only skip synchronization when the actual engine is known. If system
275
+ // metadata is unavailable, retain the existing best-effort sync behavior.
276
+ replicaSyncSupported = rows[0] ? rows[0].engine.startsWith('Replicated') : true;
277
+ }
278
+ catch {
279
+ replicaSyncSupported = true;
280
+ }
281
+ }
282
+ if (!replicaSyncSupported)
283
+ return;
162
284
  try {
163
285
  await db.command(`SYSTEM SYNC REPLICA ${journalTable}`);
164
286
  }
@@ -172,13 +294,13 @@ SETTINGS index_granularity = 1`;
172
294
  },
173
295
  async readJournal() {
174
296
  debug('journal', 'reading journal');
175
- await ensureTable();
176
- if (_databaseMissing) {
177
- debug('journal', 'database missing — returning empty journal');
297
+ await ensureTable(false);
298
+ if (_databaseMissing || tableMissing) {
299
+ debug('journal', 'database or journal table missing — returning empty journal');
178
300
  return { version: 1, applied: [] };
179
301
  }
180
302
  await trySyncReplica();
181
- const rows = await db.query(`SELECT name, applied_at, checksum, chkit_version FROM ${journalTable} FINAL WHERE migration_completed = true ORDER BY name SETTINGS select_sequential_consistency = 1`);
303
+ const rows = await journalRows('migration_completed = true');
182
304
  debug('journal', `journal has ${rows.length} applied entries`);
183
305
  return {
184
306
  version: 1,
@@ -190,15 +312,16 @@ SETTINGS index_granularity = 1`;
190
312
  };
191
313
  },
192
314
  async readMigrationState(migrationName) {
193
- await ensureTable();
194
- if (_databaseMissing)
315
+ await ensureTable(false);
316
+ if (_databaseMissing || tableMissing)
195
317
  return null;
196
318
  await trySyncReplica();
197
- const rows = await db.query(`SELECT name, applied_at, checksum, chkit_version, migration_completed, toJSONString(operations) AS operations FROM ${journalTable} FINAL WHERE name = '${escapeSqlString(migrationName)}' LIMIT 1 SETTINGS select_sequential_consistency = 1`);
319
+ const rows = await journalRows(`name = '${escapeSqlString(migrationName)}'`, ' LIMIT 1');
320
+ const written = lastWritten.get(migrationName);
198
321
  const row = rows[0];
199
322
  if (!row)
200
- return null;
201
- return {
323
+ return written ?? null;
324
+ const state = {
202
325
  name: row.name,
203
326
  appliedAt: row.applied_at,
204
327
  checksum: row.checksum,
@@ -206,6 +329,15 @@ SETTINGS index_granularity = 1`;
206
329
  migrationCompleted: parseBool(row.migration_completed),
207
330
  operations: parseOperations(row.operations),
208
331
  };
332
+ // Each request can land on a different replica, and SYSTEM SYNC REPLICA
333
+ // on one request does not make the next one read our write. Never hand a
334
+ // read-modify-write caller a version older than the one we just wrote, or
335
+ // its write would drop the progress recorded in between.
336
+ if (written && rowVersion(state.appliedAt) < rowVersion(written.appliedAt)) {
337
+ debug('journal', `stale journal read for ${migrationName} — using the last written version`);
338
+ return written;
339
+ }
340
+ return state;
209
341
  },
210
342
  async writeMigrationState(state) {
211
343
  if (_databaseMissing) {
@@ -213,22 +345,26 @@ SETTINGS index_granularity = 1`;
213
345
  _databaseMissing = false;
214
346
  bootstrapped = false;
215
347
  }
216
- await ensureTable();
217
- const insertSql = `INSERT INTO ${journalTable} (name, applied_at, checksum, chkit_version, migration_completed, operations) VALUES ('${escapeSqlString(state.name)}', '${escapeSqlString(state.appliedAt)}', '${escapeSqlString(state.checksum)}', '${escapeSqlString(state.chkitVersion || CLI_VERSION)}', ${state.migrationCompleted ? 'true' : 'false'}, ${operationsArrayLiteral(state.operations)})`;
218
- const maxAttempts = 5;
219
- for (let attempt = 1; attempt <= maxAttempts; attempt += 1) {
220
- try {
221
- await db.command(insertSql);
222
- break;
223
- }
224
- catch (error) {
225
- if (!isRetryableInsertRace(error) || attempt === maxAttempts) {
226
- throw error;
227
- }
228
- debug('journal', `insert race detected — retrying (attempt ${attempt}/${maxAttempts})`);
229
- await new Promise((r) => setTimeout(r, attempt * 150));
230
- }
348
+ await ensureTable(true);
349
+ if (_databaseMissing) {
350
+ // Nothing to journal until the migration creates the database; the
351
+ // INSERT would otherwise fall back to the server's default database.
352
+ debug('journal', 'database still missing — skipping journal write');
353
+ return;
231
354
  }
355
+ const insertSql = `INSERT INTO ${journalTable} (name, applied_at, checksum, chkit_version, migration_completed, operations) VALUES ('${escapeSqlString(state.name)}', '${escapeSqlString(state.appliedAt)}', '${escapeSqlString(state.checksum)}', '${escapeSqlString(state.chkitVersion || CLI_VERSION)}', ${state.migrationCompleted ? 'true' : 'false'}, ${operationsArrayLiteral(state.operations)})`;
356
+ await pRetry(() => db.command(insertSql), {
357
+ retries: 4,
358
+ minTimeout: 0,
359
+ shouldRetry: async ({ error, attemptNumber }) => {
360
+ if (!isRetryableInsertRace(error))
361
+ return false;
362
+ debug('journal', `insert race detected — retrying (attempt ${attemptNumber}/5)`);
363
+ await sleep(attemptNumber * 150);
364
+ return true;
365
+ },
366
+ });
367
+ lastWritten.set(state.name, state);
232
368
  await trySyncReplica();
233
369
  },
234
370
  async appendEntry(entry) {
@@ -1 +1 @@
1
- {"version":3,"file":"journal-store.js","sourceRoot":"","sources":["../../src/runtime/journal-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"journal-store.js","sourceRoot":"","sources":["../../src/runtime/journal-store.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,20 @@
1
- type Command = 'generate' | 'migrate' | 'status' | 'drift' | 'check' | 'plugin' | 'query';
1
+ type Command = 'add' | 'registry' | 'generate' | 'migrate' | 'status' | 'drift' | 'check' | 'snapshot' | 'plugin' | 'query';
2
2
  /** Whether any JSON payload (success or error) has already been written to stdout. */
3
3
  export declare function hasEmittedJson(): boolean;
4
+ /**
5
+ * Write a line to stdout through the stream. Bun's `console.log` drops whatever
6
+ * does not fit in a 64 KiB pipe buffer once stdout is non-blocking, and
7
+ * `process.exit` drops what the stream has not flushed yet, so remember a
8
+ * pending drain for the exit path to await (`stdoutDrained`).
9
+ *
10
+ * A reader that closes early (`| head`) makes the write fail with EPIPE. Node's
11
+ * console swallows that; a bare stream write would crash on the unhandled
12
+ * `'error'` event, so handle it here: stop writing and settle the drain so the
13
+ * CLI still exits with the command's own code.
14
+ */
15
+ export declare function writeStdout(text: string): void;
16
+ /** Resolves once everything written with `writeStdout` has been flushed. */
17
+ export declare function stdoutDrained(): Promise<void>;
4
18
  export declare function printOutput(value: unknown, jsonMode: boolean): void;
5
19
  export declare function emitJson<T extends object>(command: Command, payload: T): void;
6
20
  export interface JsonError {
@@ -1 +1 @@
1
- {"version":3,"file":"json-output.d.ts","sourceRoot":"","sources":["../../src/runtime/json-output.ts"],"names":[],"mappings":"AAAA,KAAK,OAAO,GACR,UAAU,GACV,SAAS,GACT,QAAQ,GACR,OAAO,GACP,OAAO,GACP,QAAQ,GACR,OAAO,CAAA;AAMX,sFAAsF;AACtF,wBAAgB,cAAc,IAAI,OAAO,CAExC;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI,CAgBnE;AAaD,wBAAgB,QAAQ,CAAC,CAAC,SAAS,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,CAE7E;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,MAAM,CAAA;IACrB,EAAE,EAAE,KAAK,CAAA;IACT,KAAK,EAAE,SAAS,CAAA;CACjB;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,iBAAiB,CAO3F;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI,CAGrE"}
1
+ {"version":3,"file":"json-output.d.ts","sourceRoot":"","sources":["../../src/runtime/json-output.ts"],"names":[],"mappings":"AAAA,KAAK,OAAO,GACR,KAAK,GACL,UAAU,GACV,UAAU,GACV,SAAS,GACT,QAAQ,GACR,OAAO,GACP,OAAO,GACP,UAAU,GACV,QAAQ,GACR,OAAO,CAAA;AAMX,sFAAsF;AACtF,wBAAgB,cAAc,IAAI,OAAO,CAExC;AAaD;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAc9C;AAED,4EAA4E;AAC5E,wBAAgB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAE7C;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI,CAgBnE;AAaD,wBAAgB,QAAQ,CAAC,CAAC,SAAS,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,CAE7E;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,MAAM,CAAA;IACrB,EAAE,EAAE,KAAK,CAAA;IACT,KAAK,EAAE,SAAS,CAAA;CACjB;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,iBAAiB,CAO3F;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI,CAGrE"}
@@ -4,6 +4,47 @@ let jsonEmitted = false;
4
4
  export function hasEmittedJson() {
5
5
  return jsonEmitted;
6
6
  }
7
+ let stdoutDrain;
8
+ let resolveStdoutDrain;
9
+ let stdoutListening = false;
10
+ let stdoutClosed = false;
11
+ function settleStdoutDrain() {
12
+ stdoutDrain = undefined;
13
+ resolveStdoutDrain?.();
14
+ resolveStdoutDrain = undefined;
15
+ }
16
+ /**
17
+ * Write a line to stdout through the stream. Bun's `console.log` drops whatever
18
+ * does not fit in a 64 KiB pipe buffer once stdout is non-blocking, and
19
+ * `process.exit` drops what the stream has not flushed yet, so remember a
20
+ * pending drain for the exit path to await (`stdoutDrained`).
21
+ *
22
+ * A reader that closes early (`| head`) makes the write fail with EPIPE. Node's
23
+ * console swallows that; a bare stream write would crash on the unhandled
24
+ * `'error'` event, so handle it here: stop writing and settle the drain so the
25
+ * CLI still exits with the command's own code.
26
+ */
27
+ export function writeStdout(text) {
28
+ if (!stdoutListening) {
29
+ stdoutListening = true;
30
+ process.stdout.on('error', () => {
31
+ stdoutClosed = true;
32
+ settleStdoutDrain();
33
+ });
34
+ }
35
+ if (stdoutClosed)
36
+ return;
37
+ if (process.stdout.write(`${text}\n`) || stdoutDrain)
38
+ return;
39
+ stdoutDrain = new Promise((resolve) => {
40
+ resolveStdoutDrain = resolve;
41
+ });
42
+ process.stdout.once('drain', settleStdoutDrain);
43
+ }
44
+ /** Resolves once everything written with `writeStdout` has been flushed. */
45
+ export function stdoutDrained() {
46
+ return stdoutDrain ?? Promise.resolve();
47
+ }
7
48
  export function printOutput(value, jsonMode) {
8
49
  if (jsonMode) {
9
50
  jsonEmitted = true;
@@ -13,7 +54,7 @@ export function printOutput(value, jsonMode) {
13
54
  const payload = typeof value === 'string'
14
55
  ? { schemaVersion: JSON_CONTRACT_VERSION, message: value }
15
56
  : value;
16
- console.log(JSON.stringify(payload, null, 2));
57
+ writeStdout(JSON.stringify(payload, null, 2));
17
58
  return;
18
59
  }
19
60
  if (typeof value === 'string') {
@@ -45,6 +86,6 @@ export function buildJsonErrorEnvelope(command, error) {
45
86
  */
46
87
  export function emitJsonError(command, error) {
47
88
  jsonEmitted = true;
48
- console.log(JSON.stringify(buildJsonErrorEnvelope(command, error), null, 2));
89
+ writeStdout(JSON.stringify(buildJsonErrorEnvelope(command, error), null, 2));
49
90
  }
50
91
  //# sourceMappingURL=json-output.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"json-output.js","sourceRoot":"","sources":["../../src/runtime/json-output.ts"],"names":[],"mappings":"AASA,MAAM,qBAAqB,GAAG,CAAC,CAAA;AAE/B,IAAI,WAAW,GAAG,KAAK,CAAA;AAEvB,sFAAsF;AACtF,MAAM,UAAU,cAAc;IAC5B,OAAO,WAAW,CAAA;AACpB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAc,EAAE,QAAiB;IAC3D,IAAI,QAAQ,EAAE,CAAC;QACb,WAAW,GAAG,IAAI,CAAA;QAClB,0EAA0E;QAC1E,4EAA4E;QAC5E,iEAAiE;QACjE,MAAM,OAAO,GACX,OAAO,KAAK,KAAK,QAAQ;YACvB,CAAC,CAAC,EAAE,aAAa,EAAE,qBAAqB,EAAE,OAAO,EAAE,KAAK,EAAE;YAC1D,CAAC,CAAC,KAAK,CAAA;QACX,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;QAC7C,OAAM;IACR,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACpB,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAmB,OAAgB,EAAE,OAAU;IAIjE,OAAO;QACL,OAAO;QACP,aAAa,EAAE,qBAAqB;QACpC,GAAG,OAAO;KACX,CAAA;AACH,CAAC;AAED,MAAM,UAAU,QAAQ,CAAmB,OAAgB,EAAE,OAAU;IACrE,WAAW,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,CAAA;AAClD,CAAC;AAeD,MAAM,UAAU,sBAAsB,CAAC,OAAe,EAAE,KAAgB;IACtE,OAAO;QACL,OAAO;QACP,aAAa,EAAE,qBAAqB;QACpC,EAAE,EAAE,KAAK;QACT,KAAK;KACN,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,KAAgB;IAC7D,WAAW,GAAG,IAAI,CAAA;IAClB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;AAC9E,CAAC"}
1
+ {"version":3,"file":"json-output.js","sourceRoot":"","sources":["../../src/runtime/json-output.ts"],"names":[],"mappings":"AAYA,MAAM,qBAAqB,GAAG,CAAC,CAAA;AAE/B,IAAI,WAAW,GAAG,KAAK,CAAA;AAEvB,sFAAsF;AACtF,MAAM,UAAU,cAAc;IAC5B,OAAO,WAAW,CAAA;AACpB,CAAC;AAED,IAAI,WAAsC,CAAA;AAC1C,IAAI,kBAA4C,CAAA;AAChD,IAAI,eAAe,GAAG,KAAK,CAAA;AAC3B,IAAI,YAAY,GAAG,KAAK,CAAA;AAExB,SAAS,iBAAiB;IACxB,WAAW,GAAG,SAAS,CAAA;IACvB,kBAAkB,EAAE,EAAE,CAAA;IACtB,kBAAkB,GAAG,SAAS,CAAA;AAChC,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,eAAe,GAAG,IAAI,CAAA;QACtB,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YAC9B,YAAY,GAAG,IAAI,CAAA;YACnB,iBAAiB,EAAE,CAAA;QACrB,CAAC,CAAC,CAAA;IACJ,CAAC;IACD,IAAI,YAAY;QAAE,OAAM;IACxB,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,WAAW;QAAE,OAAM;IAC5D,WAAW,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QACpC,kBAAkB,GAAG,OAAO,CAAA;IAC9B,CAAC,CAAC,CAAA;IACF,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAA;AACjD,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,aAAa;IAC3B,OAAO,WAAW,IAAI,OAAO,CAAC,OAAO,EAAE,CAAA;AACzC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAc,EAAE,QAAiB;IAC3D,IAAI,QAAQ,EAAE,CAAC;QACb,WAAW,GAAG,IAAI,CAAA;QAClB,0EAA0E;QAC1E,4EAA4E;QAC5E,iEAAiE;QACjE,MAAM,OAAO,GACX,OAAO,KAAK,KAAK,QAAQ;YACvB,CAAC,CAAC,EAAE,aAAa,EAAE,qBAAqB,EAAE,OAAO,EAAE,KAAK,EAAE;YAC1D,CAAC,CAAC,KAAK,CAAA;QACX,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;QAC7C,OAAM;IACR,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACpB,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAmB,OAAgB,EAAE,OAAU;IAIjE,OAAO;QACL,OAAO;QACP,aAAa,EAAE,qBAAqB;QACpC,GAAG,OAAO;KACX,CAAA;AACH,CAAC;AAED,MAAM,UAAU,QAAQ,CAAmB,OAAgB,EAAE,OAAU;IACrE,WAAW,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,CAAA;AAClD,CAAC;AAeD,MAAM,UAAU,sBAAsB,CAAC,OAAe,EAAE,KAAgB;IACtE,OAAO;QACL,OAAO;QACP,aAAa,EAAE,qBAAqB;QACpC,EAAE,EAAE,KAAK;QACT,KAAK;KACN,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,KAAgB;IAC7D,WAAW,GAAG,IAAI,CAAA;IAClB,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;AAC9E,CAAC"}
@@ -1,4 +1,4 @@
1
- import { type MigrationOperation, type Snapshot } from '@chkit/core';
1
+ import type { MigrationOperation, Snapshot } from '@chkit/core';
2
2
  export interface MigrationJournalEntry {
3
3
  name: string;
4
4
  appliedAt: string;
@@ -1 +1 @@
1
- {"version":3,"file":"migration-store.d.ts","sourceRoot":"","sources":["../../src/runtime/migration-store.ts"],"names":[],"mappings":"AAOA,OAAO,EAA2B,KAAK,kBAAkB,EAAyB,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAA;AAEpH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,CAAC,CAAA;IACV,OAAO,EAAE,qBAAqB,EAAE,CAAA;CACjC;AAED,UAAU,gBAAgB;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;CACf;AAUD,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAc5E;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,kBAAkB,EAAE,GAAG,MAAM,EAAE,CAExE;AAED,wBAAsB,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAG7E;AAMD,wBAAsB,sBAAsB,CAC1C,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAiB7B;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEjD"}
1
+ {"version":3,"file":"migration-store.d.ts","sourceRoot":"","sources":["../../src/runtime/migration-store.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAI/D,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,CAAC,CAAA;IACV,OAAO,EAAE,qBAAqB,EAAE,CAAA;CACjC;AAED,UAAU,gBAAgB;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;CACf;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAM5E;AAmBD,wBAAgB,aAAa,CAAC,UAAU,EAAE,kBAAkB,EAAE,GAAG,MAAM,EAAE,CAExE;AAED,wBAAsB,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAG7E;AAMD,wBAAsB,sBAAsB,CAC1C,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAiB7B;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEjD"}
@@ -3,26 +3,27 @@ import { existsSync } from 'node:fs';
3
3
  import { readFile } from 'node:fs/promises';
4
4
  import { join } from 'node:path';
5
5
  import fg from 'fast-glob';
6
- import { canonicalizeDefinitions } from '@chkit/core';
7
- function parseJSONOrThrow(raw, filePath, kind) {
8
- try {
9
- return JSON.parse(raw);
10
- }
11
- catch {
12
- throw new Error(`Invalid ${kind} JSON at ${filePath}. Fix or remove the file and retry.`);
13
- }
14
- }
6
+ import { parseSnapshotDocument } from './snapshot-document.js';
15
7
  export async function readSnapshot(metaDir) {
16
8
  const file = join(metaDir, 'snapshot.json');
17
9
  if (!existsSync(file))
18
10
  return null;
19
- const raw = await readFile(file, 'utf8');
20
- const parsed = parseJSONOrThrow(raw, file, 'snapshot');
21
- return {
22
- version: 1,
23
- generatedAt: parsed.generatedAt ?? '',
24
- definitions: canonicalizeDefinitions(parsed.definitions ?? []),
25
- };
11
+ const parsed = parseSnapshotDocument(await readFile(file, 'utf8'));
12
+ if (parsed.status === 'ok')
13
+ return parsed.snapshot;
14
+ throw new Error(describeUnreadableSnapshot(file, parsed.reason));
15
+ }
16
+ function describeUnreadableSnapshot(file, reason) {
17
+ if (reason === 'conflict_markers') {
18
+ return (`Snapshot ${file} contains unresolved merge conflict markers. ` +
19
+ 'Resolve any conflicts in your schema files, then run `chkit snapshot rebuild` to rewrite snapshot.json from them, ' +
20
+ 'and review its report before committing. See https://chkit.obsessiondb.com/cli/snapshot/');
21
+ }
22
+ const detail = reason === 'empty' ? ' (the file is empty)' : '';
23
+ // During a merge or rebase the committed version is only one side of the conflict.
24
+ return (`Invalid snapshot JSON at ${file}${detail}. ` +
25
+ 'Outside a merge or rebase, restore the committed version from git. ' +
26
+ 'Otherwise, or if the file was never committed, run `chkit snapshot rebuild` to rewrite it from your schema definitions.');
26
27
  }
27
28
  export function summarizePlan(operations) {
28
29
  return operations.map((op) => `${op.type} [${op.risk}] ${op.key}`);
@@ -1 +1 @@
1
- {"version":3,"file":"migration-store.js","sourceRoot":"","sources":["../../src/runtime/migration-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migration-store.js","sourceRoot":"","sources":["../../src/runtime/migration-store.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"executor-debug.d.ts","sourceRoot":"","sources":["../../../src/runtime/plugin-runtime/executor-debug.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AA6B3D,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,kBAAkB,GAC3B,kBAAkB,CAwEpB"}
1
+ {"version":3,"file":"executor-debug.d.ts","sourceRoot":"","sources":["../../../src/runtime/plugin-runtime/executor-debug.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAA0C,MAAM,mBAAmB,CAAA;AA6BnG,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,kBAAkB,GAC3B,kBAAkB,CA2EpB"}
@@ -19,20 +19,22 @@ export function wrapExecutorWithDebug(executor) {
19
19
  if (!isDebugEnabled())
20
20
  return executor;
21
21
  const queryJson = executor.queryJson?.bind(executor);
22
+ const systemTableSource = executor.systemTableSource?.bind(executor);
22
23
  return {
23
- command(sql) {
24
+ ...(systemTableSource ? { systemTableSource } : {}),
25
+ command(sql, settings) {
24
26
  debug('clickhouse', `command: ${truncate(sql)}`);
25
- return trace('command', null, () => executor.command(sql));
27
+ return trace('command', null, () => executor.command(sql, settings));
26
28
  },
27
- query(sql) {
29
+ query(sql, settings) {
28
30
  debug('clickhouse', `query: ${truncate(sql)}`);
29
- return trace('query', (rows) => `${rows.length} rows`, () => executor.query(sql));
31
+ return trace('query', (rows) => `${rows.length} rows`, () => executor.query(sql, settings));
30
32
  },
31
33
  ...(queryJson
32
34
  ? {
33
- queryJson(sql) {
35
+ queryJson(sql, settings) {
34
36
  debug('clickhouse', `queryJson: ${truncate(sql)}`);
35
- return trace('queryJson', (payload) => `${payload.rows} rows`, () => queryJson(sql));
37
+ return trace('queryJson', (payload) => `${payload.rows} rows`, () => queryJson(sql, settings));
36
38
  },
37
39
  }
38
40
  : {}),
@@ -40,9 +42,9 @@ export function wrapExecutorWithDebug(executor) {
40
42
  debug('clickhouse', `insert into ${params.table} — ${params.values.length} rows`);
41
43
  return trace('insert', null, () => executor.insert(params));
42
44
  },
43
- submit(sql, queryId) {
45
+ submit(sql, queryId, settings) {
44
46
  debug('clickhouse', `submit${queryId ? ` (id: ${queryId})` : ''}: ${truncate(sql)}`);
45
- return trace('submit', (id) => `id: ${id}`, () => executor.submit(sql, queryId));
47
+ return trace('submit', (id) => `id: ${id}`, () => executor.submit(sql, queryId, settings));
46
48
  },
47
49
  queryStatus(queryId, options) {
48
50
  debug('clickhouse', `queryStatus for ${queryId}`);
@@ -1 +1 @@
1
- {"version":3,"file":"executor-debug.js","sourceRoot":"","sources":["../../../src/runtime/plugin-runtime/executor-debug.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"executor-debug.js","sourceRoot":"","sources":["../../../src/runtime/plugin-runtime/executor-debug.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEnD,SAAS,QAAQ,CAAC,GAAW;IAC3B,OAAO,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAA;AAC3D,CAAC;AAED,KAAK,UAAU,KAAK,CAClB,KAAa,EACb,UAA0C,EAC1C,EAAoB;IAEpB,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAA;IAC/B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,EAAE,EAAE,CAAA;QACzB,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QAC3D,KAAK,CAAC,YAAY,EAAE,GAAG,KAAK,MAAM,MAAM,KAAK,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAA;QACxF,OAAO,MAAM,CAAA;IACf,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,KAAK,CACH,YAAY,EACZ,GAAG,KAAK,YAAY,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,KAAK,EAC9D,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAC/C,CAAA;QACD,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,QAA4B;IAE5B,IAAI,CAAC,cAAc,EAAE;QAAE,OAAO,QAAQ,CAAA;IACtC,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;IAEpD,MAAM,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;IAEpE,OAAO;QACL,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnD,OAAO,CAAC,GAAW,EAAE,QAA6B;YAChD,KAAK,CAAC,YAAY,EAAE,YAAY,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAChD,OAAO,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAA;QACtE,CAAC;QACD,KAAK,CAAI,GAAW,EAAE,QAA6B;YACjD,KAAK,CAAC,YAAY,EAAE,UAAU,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAC9C,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAI,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAA;QAChG,CAAC;QACD,GAAG,CAAC,SAAS;YACX,CAAC,CAAC;gBACE,SAAS,CAAoC,GAAW,EAAE,QAA6B;oBACrF,KAAK,CAAC,YAAY,EAAE,cAAc,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;oBAClD,OAAO,KAAK,CACV,WAAW,EACX,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,OAAO,EACnC,GAAG,EAAE,CAAC,SAAS,CAAI,GAAG,EAAE,QAAQ,CAAC,CAClC,CAAA;gBACH,CAAC;aACF;YACH,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,CAAoC,MAIzC;YACC,KAAK,CACH,YAAY,EACZ,eAAe,MAAM,CAAC,KAAK,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,OAAO,CAC7D,CAAA;YACD,OAAO,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;QAC7D,CAAC;QACD,MAAM,CAAC,GAAW,EAAE,OAAgB,EAAE,QAA6B;YACjE,KAAK,CACH,YAAY,EACZ,SAAS,OAAO,CAAC,CAAC,CAAC,SAAS,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,GAAG,CAAC,EAAE,CAChE,CAAA;YACD,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAA;QAC5F,CAAC;QACD,WAAW,CAAC,OAAe,EAAE,OAA4B;YACvD,KAAK,CAAC,YAAY,EAAE,mBAAmB,OAAO,EAAE,CAAC,CAAA;YACjD,OAAO,KAAK,CACV,aAAa,EACb,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,EACzB,GAAG,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAC7C,CAAA;QACH,CAAC;QACD,iBAAiB;YACf,KAAK,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAA;YACxC,OAAO,KAAK,CACV,mBAAmB,EACnB,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,UAAU,EACxC,GAAG,EAAE,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CACnC,CAAA;QACH,CAAC;QACD,gBAAgB,CAAC,SAAmB;YAClC,KAAK,CAAC,YAAY,EAAE,oCAAoC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAChF,OAAO,KAAK,CACV,kBAAkB,EAClB,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,SAAS,EACrC,GAAG,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAC3C,CAAA;QACH,CAAC;QACD,KAAK,CAAC,KAAK;YACT,KAAK,CAAC,YAAY,EAAE,qBAAqB,CAAC,CAAA;YAC1C,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAA;QACxB,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -3,7 +3,7 @@ export function normalizePluginRegistration(entry) {
3
3
  plugin: entry.plugin,
4
4
  nameHint: entry.name,
5
5
  enabled: entry.enabled !== false,
6
- options: entry.options ?? {},
6
+ options: { ...entry.options },
7
7
  };
8
8
  }
9
9
  function parseCliMajor(version) {
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../src/runtime/plugin-runtime/loader.ts"],"names":[],"mappings":"AAWA,MAAM,UAAU,2BAA2B,CACzC,KAA4B;IAE5B,OAAO;QACL,MAAM,EAAE,KAAK,CAAC,MAAmB;QACjC,QAAQ,EAAE,KAAK,CAAC,IAAI;QACpB,OAAO,EAAE,KAAK,CAAC,OAAO,KAAK,KAAK;QAChC,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE;KAC7B,CAAA;AACH,CAAC;AAED,SAAS,aAAa,CAAC,OAAe;IACpC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAA;IACzD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,wBAAwB,OAAO,0BAA0B,CAAC,CAAA;IAC5E,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,UAAkB,EAClB,MAAiB,EACjB,WAAmB;IAEnB,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAA;IACjC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,aAAa,WAAW,8BAA8B,CAAC,CAAA;IACzE,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CACb,WAAW,IAAI,yBAAyB,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,iCAAiC,CAC5G,CAAA;IACH,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAA;IACxD,IAAI,CAAC,aAAa;QAAE,OAAM;IAE1B,MAAM,QAAQ,GAAG,aAAa,CAAC,UAAU,CAAC,CAAA;IAC1C,IACE,aAAa,CAAC,QAAQ,KAAK,SAAS;QACpC,QAAQ,GAAG,aAAa,CAAC,QAAQ,EACjC,CAAC;QACD,MAAM,IAAI,KAAK,CACb,WAAW,IAAI,8BAA8B,UAAU,2BAA2B,aAAa,CAAC,QAAQ,GAAG,CAC5G,CAAA;IACH,CAAC;IACD,IACE,aAAa,CAAC,QAAQ,KAAK,SAAS;QACpC,QAAQ,GAAG,aAAa,CAAC,QAAQ,EACjC,CAAC;QACD,MAAM,IAAI,KAAK,CACb,WAAW,IAAI,8BAA8B,UAAU,2BAA2B,aAAa,CAAC,QAAQ,GAAG,CAC5G,CAAA;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../src/runtime/plugin-runtime/loader.ts"],"names":[],"mappings":"AAWA,MAAM,UAAU,2BAA2B,CACzC,KAA4B;IAE5B,OAAO;QACL,MAAM,EAAE,KAAK,CAAC,MAAmB;QACjC,QAAQ,EAAE,KAAK,CAAC,IAAI;QACpB,OAAO,EAAE,KAAK,CAAC,OAAO,KAAK,KAAK;QAChC,OAAO,EAAE,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE;KAC9B,CAAA;AACH,CAAC;AAED,SAAS,aAAa,CAAC,OAAe;IACpC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAA;IACzD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,wBAAwB,OAAO,0BAA0B,CAAC,CAAA;IAC5E,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,UAAkB,EAClB,MAAiB,EACjB,WAAmB;IAEnB,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAA;IACjC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,aAAa,WAAW,8BAA8B,CAAC,CAAA;IACzE,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CACb,WAAW,IAAI,yBAAyB,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,iCAAiC,CAC5G,CAAA;IACH,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAA;IACxD,IAAI,CAAC,aAAa;QAAE,OAAM;IAE1B,MAAM,QAAQ,GAAG,aAAa,CAAC,UAAU,CAAC,CAAA;IAC1C,IACE,aAAa,CAAC,QAAQ,KAAK,SAAS;QACpC,QAAQ,GAAG,aAAa,CAAC,QAAQ,EACjC,CAAC;QACD,MAAM,IAAI,KAAK,CACb,WAAW,IAAI,8BAA8B,UAAU,2BAA2B,aAAa,CAAC,QAAQ,GAAG,CAC5G,CAAA;IACH,CAAC;IACD,IACE,aAAa,CAAC,QAAQ,KAAK,SAAS;QACpC,QAAQ,GAAG,aAAa,CAAC,QAAQ,EACjC,CAAC;QACD,MAAM,IAAI,KAAK,CACb,WAAW,IAAI,8BAA8B,UAAU,2BAA2B,aAAa,CAAC,QAAQ,GAAG,CAC5G,CAAA;IACH,CAAC;AACH,CAAC"}