typekro 0.40.1 → 0.41.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 (81) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/alchemy/resolver.d.ts.map +1 -1
  3. package/dist/alchemy/resolver.js +3 -2
  4. package/dist/alchemy/resolver.js.map +1 -1
  5. package/dist/alchemy/resource-registration.d.ts.map +1 -1
  6. package/dist/alchemy/resource-registration.js +4 -3
  7. package/dist/alchemy/resource-registration.js.map +1 -1
  8. package/dist/core/aspects/apply.d.ts.map +1 -1
  9. package/dist/core/aspects/apply.js +6 -4
  10. package/dist/core/aspects/apply.js.map +1 -1
  11. package/dist/core/aspects/primitives.d.ts.map +1 -1
  12. package/dist/core/aspects/primitives.js +2 -1
  13. package/dist/core/aspects/primitives.js.map +1 -1
  14. package/dist/core/deployment/direct-factory.d.ts.map +1 -1
  15. package/dist/core/deployment/direct-factory.js +54 -33
  16. package/dist/core/deployment/direct-factory.js.map +1 -1
  17. package/dist/core/deployment/kro-factory.d.ts.map +1 -1
  18. package/dist/core/deployment/kro-factory.js +2 -1
  19. package/dist/core/deployment/kro-factory.js.map +1 -1
  20. package/dist/core/deployment/kro-instance-safety.d.ts.map +1 -1
  21. package/dist/core/deployment/kro-instance-safety.js +2 -1
  22. package/dist/core/deployment/kro-instance-safety.js.map +1 -1
  23. package/dist/core/planning/canonical.d.ts.map +1 -1
  24. package/dist/core/planning/canonical.js +2 -1
  25. package/dist/core/planning/canonical.js.map +1 -1
  26. package/dist/core/planning/direct-runtime-adapter.d.ts +12 -0
  27. package/dist/core/planning/direct-runtime-adapter.d.ts.map +1 -1
  28. package/dist/core/planning/direct-runtime-adapter.js +40 -26
  29. package/dist/core/planning/direct-runtime-adapter.js.map +1 -1
  30. package/dist/core/planning/execution-record.d.ts +6 -1
  31. package/dist/core/planning/execution-record.d.ts.map +1 -1
  32. package/dist/core/planning/execution-record.js +21 -3
  33. package/dist/core/planning/execution-record.js.map +1 -1
  34. package/dist/core/planning/materialization.d.ts.map +1 -1
  35. package/dist/core/planning/materialization.js +3 -2
  36. package/dist/core/planning/materialization.js.map +1 -1
  37. package/dist/core/planning/planner.d.ts.map +1 -1
  38. package/dist/core/planning/planner.js +2 -1
  39. package/dist/core/planning/planner.js.map +1 -1
  40. package/dist/core/proxy/create-resource.d.ts.map +1 -1
  41. package/dist/core/proxy/create-resource.js +4 -3
  42. package/dist/core/proxy/create-resource.js.map +1 -1
  43. package/dist/core/references/resolver.d.ts.map +1 -1
  44. package/dist/core/references/resolver.js +4 -2
  45. package/dist/core/references/resolver.js.map +1 -1
  46. package/dist/core/serialization/cel-references.d.ts.map +1 -1
  47. package/dist/core/serialization/cel-references.js +2 -1
  48. package/dist/core/serialization/cel-references.js.map +1 -1
  49. package/dist/core/serialization/yaml.d.ts.map +1 -1
  50. package/dist/core/serialization/yaml.js +3 -2
  51. package/dist/core/serialization/yaml.js.map +1 -1
  52. package/dist/factories/clickhouse/compositions/clickhouse-cluster.d.ts.map +1 -1
  53. package/dist/factories/clickhouse/compositions/clickhouse-cluster.js +5 -0
  54. package/dist/factories/clickhouse/compositions/clickhouse-cluster.js.map +1 -1
  55. package/dist/factories/clickhouse/resources/installation.d.ts.map +1 -1
  56. package/dist/factories/clickhouse/resources/installation.js +18 -2
  57. package/dist/factories/clickhouse/resources/installation.js.map +1 -1
  58. package/dist/factories/clickhouse/types.d.ts +28 -0
  59. package/dist/factories/clickhouse/types.d.ts.map +1 -1
  60. package/dist/factories/clickhouse/types.js +43 -0
  61. package/dist/factories/clickhouse/types.js.map +1 -1
  62. package/dist/factories/clickhouse/utils/index.d.ts +1 -0
  63. package/dist/factories/clickhouse/utils/index.d.ts.map +1 -1
  64. package/dist/factories/clickhouse/utils/index.js +1 -0
  65. package/dist/factories/clickhouse/utils/index.js.map +1 -1
  66. package/dist/factories/clickhouse/utils/server-settings.d.ts +18 -0
  67. package/dist/factories/clickhouse/utils/server-settings.d.ts.map +1 -0
  68. package/dist/factories/clickhouse/utils/server-settings.js +159 -0
  69. package/dist/factories/clickhouse/utils/server-settings.js.map +1 -0
  70. package/dist/factories/clickhouse/utils/system-logs.d.ts +7 -1
  71. package/dist/factories/clickhouse/utils/system-logs.d.ts.map +1 -1
  72. package/dist/factories/clickhouse/utils/system-logs.js +101 -10
  73. package/dist/factories/clickhouse/utils/system-logs.js.map +1 -1
  74. package/dist/shared/own-property.d.ts +15 -0
  75. package/dist/shared/own-property.d.ts.map +1 -0
  76. package/dist/shared/own-property.js +26 -0
  77. package/dist/shared/own-property.js.map +1 -0
  78. package/dist/utils/helpers.d.ts.map +1 -1
  79. package/dist/utils/helpers.js +2 -1
  80. package/dist/utils/helpers.js.map +1 -1
  81. package/package.json +1 -1
@@ -0,0 +1,159 @@
1
+ // Caller-supplied ClickHouse settings: `serverSettings` (the CHI's
2
+ // `configuration.settings`, which the clickhouse-operator renders into
3
+ // `config.d/chop-generated-settings.xml`, a path key `a/b` becoming
4
+ // `<a><b>value</b></a>`) and `systemLogs.tables.<log>.settings` (see
5
+ // ./system-logs.ts).
6
+ //
7
+ // Both end up as server configuration TEXT, and the operator writes
8
+ // `configuration.settings` values into that XML VERBATIM. So the rules here are
9
+ // VALIDATION, not encoding: a key is an XML ELEMENT NAME (no escape form), so
10
+ // every path segment must be a bare identifier; a string value must not contain
11
+ // `<`, `>` or `&` and must be representable in XML; a number must render as a
12
+ // plain decimal (`1e21` does not read back as a number); a boolean renders as
13
+ // `1`/`0`, which every ClickHouse boolean setting accepts.
14
+ import { assertXmlRepresentable } from './xml.js';
15
+ // One path segment of a setting name. Every ClickHouse server and MergeTree
16
+ // setting name has this shape, and it is also a legal XML element name.
17
+ const CLICKHOUSE_SETTING_NAME_SEGMENT = /^[A-Za-z_][A-Za-z0-9_]*$/;
18
+ const CLICKHOUSE_SETTING_KEY_MAX_LENGTH = 256;
19
+ // Top-level settings and sections a caller may not set, with the reason.
20
+ // Null-prototype, so an inherited name such as `constructor` never matches.
21
+ //
22
+ // - `remote_servers`, `macros`, `interserver_http_host`: generated by the
23
+ // operator (from the layout, per replica, per host).
24
+ // - `zookeeper`: rendered from the `keeper` option.
25
+ // - `path`, `tmp_path`, `user_files_path`, `access_control_path`,
26
+ // `user_directories`: move data the server writes (parts and metadata,
27
+ // spilled query data, `file()` output, SQL-defined users and grants) off the
28
+ // volume the `storage` option mounts at /var/lib/clickhouse, so it would be
29
+ // lost on restart while the storage contract still reports it durable.
30
+ // `user_directories` also decides where the users TypeKro declares are read.
31
+ // - `filesystem_caches_path`: every cache path must lie inside it, so it can
32
+ // make the server refuse the cache disk the S3 storage option renders.
33
+ //
34
+ // Not reserved: `format_schema_path` and `user_scripts_path` point at inputs
35
+ // the caller supplies (often a mounted ConfigMap), not at data the server
36
+ // writes.
37
+ const CLICKHOUSE_RESERVED_SERVER_SETTING_SECTIONS = Object.assign(Object.create(null), {
38
+ remote_servers: 'the clickhouse-operator generates it from the cluster layout',
39
+ macros: 'the clickhouse-operator generates it per replica',
40
+ interserver_http_host: 'the clickhouse-operator generates it per host',
41
+ zookeeper: 'it is rendered from the `keeper` option',
42
+ path: 'it is the data root on the volume the `storage` option mounts',
43
+ tmp_path: 'it would move spilled query data off the volume the `storage` option mounts',
44
+ user_files_path: 'it would move file() data off the volume the `storage` option mounts',
45
+ access_control_path: 'it would move SQL-defined users and grants off the volume the `storage` option mounts',
46
+ user_directories: 'it decides where declared and SQL-defined users live; use `users` and the `storage` volume',
47
+ filesystem_caches_path: 'every cache path must lie inside it, including the cache disk the `storage` option renders',
48
+ });
49
+ // Where new MergeTree tables store data: `storage` owns both, in every mode.
50
+ const STORAGE_OWNED_KEYS = ['merge_tree/storage_policy', 'merge_tree/disk'];
51
+ /** Characters the operator would write into the server's XML unescaped. */
52
+ const XML_SPECIAL = /[<>&]/;
53
+ // A KRO resource template treats `${` as the start of a CEL expression, so a
54
+ // literal containing it would be evaluated rather than written.
55
+ const CEL_OPEN = '${';
56
+ /** Validate a setting value and render it as configuration text (`1`/`0` for booleans). */
57
+ export function renderClickHouseSettingValue(context, value) {
58
+ if (typeof value === 'boolean')
59
+ return value ? '1' : '0';
60
+ if (typeof value === 'number') {
61
+ const text = String(value);
62
+ if (Number.isInteger(value) && !Number.isSafeInteger(value)) {
63
+ throw new Error(`${context} is outside JavaScript's safe integer range; pass it as a string, e.g. ` +
64
+ `'10995116277760' or '100G'.`);
65
+ }
66
+ if (!Number.isFinite(value) || /e/i.test(text)) {
67
+ throw new Error(`${context} must be a finite number that renders as a plain decimal (got ${text}). ` +
68
+ `Pass very large or very small values as a string, e.g. '1099511627776'.`);
69
+ }
70
+ return text;
71
+ }
72
+ if (typeof value === 'string') {
73
+ if (XML_SPECIAL.test(value)) {
74
+ throw new Error(`${context} must not contain '<', '>' or '&' (got ${JSON.stringify(value)}): the ` +
75
+ `clickhouse-operator writes setting values into the server's XML configuration ` +
76
+ `unescaped, so the server would fail to parse its config at startup.`);
77
+ }
78
+ if (value.includes(CEL_OPEN)) {
79
+ throw new Error(`${context} must not contain '\${' (got ${JSON.stringify(value)}): KRO reads it as ` +
80
+ `the start of a CEL expression in the rendered resource template.`);
81
+ }
82
+ try {
83
+ assertXmlRepresentable(value);
84
+ }
85
+ catch (error) {
86
+ throw new Error(`${context}: ${error.message}`);
87
+ }
88
+ return value;
89
+ }
90
+ throw new Error(`${context} must be a string, a number or a boolean (got ${value === null ? 'null' : typeof value}).`);
91
+ }
92
+ /** Validate a setting name: bare identifier segments, `/`-separated when `allowPath`. */
93
+ export function assertClickHouseSettingKey(context, key, allowPath) {
94
+ const segments = allowPath ? key.split('/') : [key];
95
+ const valid = key.length > 0 &&
96
+ key.length <= CLICKHOUSE_SETTING_KEY_MAX_LENGTH &&
97
+ segments.every((segment) => CLICKHOUSE_SETTING_NAME_SEGMENT.test(segment));
98
+ if (valid)
99
+ return;
100
+ throw new Error(`${context}: setting name ${JSON.stringify(key)} is not valid. ` +
101
+ (allowPath ? `It must be one or more '/'-separated segments, each ` : `It must be `) +
102
+ `a letter or underscore followed by letters, digits or underscores (at most ` +
103
+ `${CLICKHOUSE_SETTING_KEY_MAX_LENGTH} characters). The name is rendered as an XML ` +
104
+ `element name in the server's configuration, where escaping is not available.`);
105
+ }
106
+ /**
107
+ * Validate and render a caller's `serverSettings` as `configuration.settings`
108
+ * entries. Keys equal to, or a path prefix/extension of, a `generated` key, and
109
+ * keys in an `ownedSections` section, are refused.
110
+ */
111
+ export function resolveClickHouseServerSettings(factoryName, settings, options) {
112
+ if (settings === undefined)
113
+ return {};
114
+ if (settings === null || typeof settings !== 'object' || Array.isArray(settings)) {
115
+ throw new Error(`${factoryName}: serverSettings must be an object of setting name to value.`);
116
+ }
117
+ // Null-prototype, so an own `__proto__` key is stored rather than hitting the
118
+ // prototype setter and vanishing.
119
+ const rendered = Object.create(null);
120
+ const generatedKeys = Object.keys(options.generated);
121
+ for (const [key, value] of Object.entries(settings)) {
122
+ if (value === undefined)
123
+ continue;
124
+ const context = `${factoryName}: serverSettings.${key}`;
125
+ assertClickHouseSettingKey(`${factoryName}: serverSettings`, key, true);
126
+ const section = key.split('/')[0];
127
+ if (Object.hasOwn(CLICKHOUSE_RESERVED_SERVER_SETTING_SECTIONS, section)) {
128
+ throw new Error(`${context}: <${section}> cannot be set through serverSettings — ` +
129
+ `${CLICKHOUSE_RESERVED_SERVER_SETTING_SECTIONS[section]}.`);
130
+ }
131
+ if (Object.hasOwn(options.ownedSections, section)) {
132
+ throw new Error(`${context}: the <${section}> section is configured through ` +
133
+ `\`${options.ownedSections[section]}\`, not serverSettings.`);
134
+ }
135
+ // `storage` owns where new tables store data (the default MergeTree policy or
136
+ // disk) in every mode; the rest of `merge_tree/*` is behavioral tuning.
137
+ const storageOwned = STORAGE_OWNED_KEYS.find((owned) => key === owned || owned.startsWith(`${key}/`) || key.startsWith(`${owned}/`));
138
+ if (storageOwned !== undefined) {
139
+ throw new Error(`${context}: '${storageOwned}' is configured through \`storage\`, not serverSettings.`);
140
+ }
141
+ const clash = generatedKeys.find((generated) => generated === key || generated.startsWith(`${key}/`) || key.startsWith(`${generated}/`));
142
+ if (clash !== undefined) {
143
+ throw new Error(`${context}: collides with the '${clash}' setting TypeKro renders from another ` +
144
+ `option. Configure it through that option instead.`);
145
+ }
146
+ rendered[key] = renderClickHouseSettingValue(context, value);
147
+ }
148
+ // Two caller keys can collide with each other the same way (`a` and `a/b`).
149
+ const keys = Object.keys(rendered);
150
+ for (const key of keys) {
151
+ const nested = keys.find((other) => other.startsWith(`${key}/`));
152
+ if (nested !== undefined) {
153
+ throw new Error(`${factoryName}: serverSettings keys '${key}' and '${nested}' conflict: one would ` +
154
+ `render as an element with both a value and child elements.`);
155
+ }
156
+ }
157
+ return rendered;
158
+ }
159
+ //# sourceMappingURL=server-settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-settings.js","sourceRoot":"","sources":["../../../../src/factories/clickhouse/utils/server-settings.ts"],"names":[],"mappings":"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"}
@@ -201,7 +201,13 @@ export interface ResolvedClickHouseSystemLogs {
201
201
  readonly storagePolicy?: string;
202
202
  /** TTL expression applied to every system log, or `undefined` for none. */
203
203
  readonly ttl?: string;
204
+ /** Per-log `name = value, …` clauses, for logs with at least one setting. */
205
+ readonly tableSettings?: Readonly<Record<string, string>>;
204
206
  }
207
+ /** The logs `systemLogs.tables.<log>.settings` accepts. */
208
+ export declare const CLICKHOUSE_CONFIGURABLE_SYSTEM_LOG_TABLES: readonly string[];
209
+ /** System log section names `serverSettings` may not write into. */
210
+ export declare const CLICKHOUSE_KNOWN_SYSTEM_LOG_SECTIONS: readonly string[];
205
211
  /**
206
212
  * Apply the system-log defaults for an installation.
207
213
  *
@@ -241,7 +247,7 @@ export declare function clickHouseSystemLogSettings(resolved: ResolvedClickHouse
241
247
  * `ttl: false` the operator's own 30-day TTL is kept
242
248
  * ({@link OPERATOR_SYSTEM_LOG_TTL}).
243
249
  */
244
- export declare function operatorReplacedSystemLogEngine(resolved: ResolvedClickHouseSystemLogs): string;
250
+ export declare function operatorReplacedSystemLogEngine(resolved: ResolvedClickHouseSystemLogs, table?: string): string;
245
251
  /**
246
252
  * CHI `configuration.files` entry that pins and trims the system logs the
247
253
  * operator gives a full `<engine>` ({@link CLICKHOUSE_OPERATOR_REPLACED_SYSTEM_LOGS}).
@@ -1 +1 @@
1
- {"version":3,"file":"system-logs.d.ts","sourceRoot":"","sources":["../../../../src/factories/clickhouse/utils/system-logs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C;;;;;GAKG;AACH,MAAM,MAAM,wBAAwB,GAAG,MAAM,CAAC,0BAA0B,CAAC,CAAC;AAE1E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,eAAO,MAAM,4BAA4B,gTAkB/B,CAAC;AAEX;;;;;;;GAOG;AACH,eAAO,MAAM,qCAAqC,sPAcxC,CAAC;AAEX;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,mCAAmC,qCAAsC,CAAC;AAEvF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,wCAAwC,iDAI3C,CAAC;AAEX;;;;;;;;GAQG;AACH,eAAO,MAAM,uCAAuC,+BAAgC,CAAC;AAErF;;;;;;;GAOG;AACH,eAAO,MAAM,2BAA2B,6BAA6B,CAAC;AAQtE;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,iCAAiC,CAAC;AAEtE;;;;;GAKG;AACH,eAAO,MAAM,iCAAiC,YAAY,CAAC;AAE3D;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,eAAO,MAAM,iCAAiC,KAAK,CAAC;AAEpD,yEAAyE;AACzE,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAEjE;AAUD,2DAA2D;AAC3D,MAAM,WAAW,4BAA4B;IAC3C,2EAA2E;IAC3E,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,2EAA2E;IAC3E,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;GASG;AACH,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,wBAAwB,GAAG,SAAS,EAC7C,uBAAuB,EAAE,MAAM,GAAG,SAAS,GAC1C,4BAA4B,CA8C9B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,4BAA4B,GACrC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAaxB;AAOD;;;;;;;GAOG;AACH,wBAAgB,+BAA+B,CAAC,QAAQ,EAAE,4BAA4B,GAAG,MAAM,CAQ9F;AAED;;;;;;;;GAQG;AACH,wBAAgB,qCAAqC,CACnD,QAAQ,EAAE,4BAA4B,GACrC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAiBxB"}
1
+ {"version":3,"file":"system-logs.d.ts","sourceRoot":"","sources":["../../../../src/factories/clickhouse/utils/system-logs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAO1C;;;;;GAKG;AACH,MAAM,MAAM,wBAAwB,GAAG,MAAM,CAAC,0BAA0B,CAAC,CAAC;AAE1E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,eAAO,MAAM,4BAA4B,gTAkB/B,CAAC;AAEX;;;;;;;GAOG;AACH,eAAO,MAAM,qCAAqC,sPAcxC,CAAC;AAEX;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,mCAAmC,qCAAsC,CAAC;AAEvF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,wCAAwC,iDAI3C,CAAC;AAEX;;;;;;;;GAQG;AACH,eAAO,MAAM,uCAAuC,+BAAgC,CAAC;AAErF;;;;;;;GAOG;AACH,eAAO,MAAM,2BAA2B,6BAA6B,CAAC;AAQtE;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,iCAAiC,CAAC;AAEtE;;;;;GAKG;AACH,eAAO,MAAM,iCAAiC,YAAY,CAAC;AAE3D;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,eAAO,MAAM,iCAAiC,KAAK,CAAC;AAEpD,yEAAyE;AACzE,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAEjE;AAUD,2DAA2D;AAC3D,MAAM,WAAW,4BAA4B;IAC3C,2EAA2E;IAC3E,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,2EAA2E;IAC3E,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,6EAA6E;IAC7E,QAAQ,CAAC,aAAa,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC3D;AAED,2DAA2D;AAC3D,eAAO,MAAM,yCAAyC,EAAE,SAAS,MAAM,EAGtE,CAAC;AAMF,oEAAoE;AACpE,eAAO,MAAM,oCAAoC,EAAE,SAAS,MAAM,EAIjE,CAAC;AAuEF;;;;;;;;;GASG;AACH,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,wBAAwB,GAAG,SAAS,EAC7C,uBAAuB,EAAE,MAAM,GAAG,SAAS,GAC1C,4BAA4B,CAiD9B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,4BAA4B,GACrC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAiBxB;AAOD;;;;;;;GAOG;AACH,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,4BAA4B,EACtC,KAAK,CAAC,EAAE,MAAM,GACb,MAAM,CAcR;AAED;;;;;;;;GAQG;AACH,wBAAgB,qCAAqC,CACnD,QAAQ,EAAE,4BAA4B,GACrC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAuBxB"}
@@ -35,6 +35,7 @@
35
35
  *
36
36
  * @module
37
37
  */
38
+ import { assertClickHouseSettingKey, renderClickHouseSettingValue, } from './server-settings.js';
38
39
  /**
39
40
  * ClickHouse's own system log tables, as ENABLED BY DEFAULT.
40
41
  *
@@ -236,6 +237,80 @@ export function defaultSystemLogTtl(retentionDays) {
236
237
  * backslashes and whitespace are rejected rather than escaped.
237
238
  */
238
239
  const STORAGE_POLICY_NAME = /^[A-Za-z_][A-Za-z0-9_.-]*$/;
240
+ /** The logs `systemLogs.tables.<log>.settings` accepts. */
241
+ export const CLICKHOUSE_CONFIGURABLE_SYSTEM_LOG_TABLES = [
242
+ ...CLICKHOUSE_SETTINGS_SYSTEM_LOG_TABLES,
243
+ ...CLICKHOUSE_OPERATOR_REPLACED_SYSTEM_LOGS,
244
+ ];
245
+ // Every system log section TypeKro knows, including those it leaves alone. A
246
+ // `serverSettings` key under any of them is refused in favour of `systemLogs`:
247
+ // writing into them by hand is how a server refuses to boot (#235) or runs a
248
+ // log the operator switched off.
249
+ /** System log section names `serverSettings` may not write into. */
250
+ export const CLICKHOUSE_KNOWN_SYSTEM_LOG_SECTIONS = [
251
+ ...CLICKHOUSE_SYSTEM_LOG_TABLES,
252
+ ...CLICKHOUSE_ENGINE_BOUND_SYSTEM_LOGS,
253
+ 'session_log',
254
+ ];
255
+ /**
256
+ * Render one SQL `SETTINGS` value: numbers and booleans bare, strings as a
257
+ * single-quoted SQL literal. ClickHouse converts a string literal to the
258
+ * setting's type, so `'100G'`-style values work for numeric settings too.
259
+ */
260
+ function renderSqlSettingValue(context, value) {
261
+ const text = renderClickHouseSettingValue(context, value);
262
+ return typeof value === 'string' ? `'${text.replace(/\\/g, '\\\\').replace(/'/g, "\\'")}'` : text;
263
+ }
264
+ /**
265
+ * Validate `systemLogs.tables` and render each log's settings clause.
266
+ */
267
+ function resolveSystemLogTableSettings(factoryName, tables) {
268
+ if (tables === undefined)
269
+ return {};
270
+ if (tables === null || typeof tables !== 'object' || Array.isArray(tables)) {
271
+ throw new Error(`${factoryName}: systemLogs.tables must be an object keyed by system log name.`);
272
+ }
273
+ const rendered = Object.create(null);
274
+ for (const [table, entry] of Object.entries(tables)) {
275
+ if (entry === undefined)
276
+ continue;
277
+ const path = `systemLogs.tables.${table}`;
278
+ if (!CLICKHOUSE_CONFIGURABLE_SYSTEM_LOG_TABLES.includes(table)) {
279
+ const why = CLICKHOUSE_OPERATOR_REMOVED_SYSTEM_LOGS.includes(table)
280
+ ? 'the clickhouse-operator switches this log off, and configuring it would switch it back on'
281
+ : CLICKHOUSE_ENGINE_BOUND_SYSTEM_LOGS.includes(table)
282
+ ? 'ClickHouse ships this log with its own <engine>, which cannot be combined with <settings>'
283
+ : table === 'session_log'
284
+ ? 'ClickHouse ships this log disabled, and configuring it would enable it'
285
+ : 'it is not a system log TypeKro configures';
286
+ throw new Error(`${factoryName}: ${path} is not supported: ${why}. Supported logs: ` +
287
+ `${CLICKHOUSE_CONFIGURABLE_SYSTEM_LOG_TABLES.join(', ')}.`);
288
+ }
289
+ if (entry === null || typeof entry !== 'object' || Array.isArray(entry)) {
290
+ throw new Error(`${factoryName}: ${path} must be an object such as \`{ settings: { … } }\`.`);
291
+ }
292
+ const settings = entry.settings;
293
+ if (settings === undefined)
294
+ continue;
295
+ if (settings === null || typeof settings !== 'object' || Array.isArray(settings)) {
296
+ throw new Error(`${factoryName}: ${path}.settings must be an object of MergeTree setting name to value.`);
297
+ }
298
+ const pairs = [];
299
+ for (const [name, value] of Object.entries(settings)) {
300
+ if (value === undefined)
301
+ continue;
302
+ assertClickHouseSettingKey(`${factoryName}: ${path}.settings`, name, false);
303
+ if (name === 'storage_policy') {
304
+ throw new Error(`${factoryName}: ${path}.settings.storage_policy is not accepted here; use ` +
305
+ `\`systemLogs.storagePolicy\`, which pins every system log consistently.`);
306
+ }
307
+ pairs.push(`${name} = ${renderSqlSettingValue(`${factoryName}: ${path}.settings.${name}`, value)}`);
308
+ }
309
+ if (pairs.length > 0)
310
+ rendered[table] = pairs.join(', ');
311
+ }
312
+ return rendered;
313
+ }
239
314
  /**
240
315
  * Apply the system-log defaults for an installation.
241
316
  *
@@ -275,9 +350,11 @@ export function resolveClickHouseSystemLogs(factoryName, options, serverWideStor
275
350
  `${JSON.stringify(ttl)}): the clickhouse-operator writes it into the server's XML ` +
276
351
  `config unescaped. Use the function forms instead: \`less(a, b)\`, \`greater(a, b)\`, \`and(a, b)\`.`);
277
352
  }
353
+ const tableSettings = resolveSystemLogTableSettings(factoryName, options?.tables);
278
354
  return {
279
355
  ...(storagePolicy !== undefined && { storagePolicy }),
280
356
  ...(ttl !== undefined && { ttl }),
357
+ ...(Object.keys(tableSettings).length > 0 && { tableSettings }),
281
358
  };
282
359
  }
283
360
  /**
@@ -301,8 +378,6 @@ export function resolveClickHouseSystemLogs(factoryName, options, serverWideStor
301
378
  */
302
379
  export function clickHouseSystemLogSettings(resolved) {
303
380
  const settings = {};
304
- if (resolved.storagePolicy === undefined && resolved.ttl === undefined)
305
- return settings;
306
381
  for (const table of CLICKHOUSE_SETTINGS_SYSTEM_LOG_TABLES) {
307
382
  if (resolved.storagePolicy !== undefined) {
308
383
  settings[`${table}/storage_policy`] = resolved.storagePolicy;
@@ -310,6 +385,12 @@ export function clickHouseSystemLogSettings(resolved) {
310
385
  if (resolved.ttl !== undefined) {
311
386
  settings[`${table}/ttl`] = resolved.ttl;
312
387
  }
388
+ // ClickHouse appends `<settings>` to the engine it builds for the log:
389
+ // `SETTINGS storage_policy = '…', <settings>` (SystemLog.cpp, v25.7).
390
+ const tableSettings = resolved.tableSettings?.[table];
391
+ if (tableSettings !== undefined) {
392
+ settings[`${table}/settings`] = tableSettings;
393
+ }
313
394
  }
314
395
  return settings;
315
396
  }
@@ -325,13 +406,19 @@ function escapeXmlText(value) {
325
406
  * `ttl: false` the operator's own 30-day TTL is kept
326
407
  * ({@link OPERATOR_SYSTEM_LOG_TTL}).
327
408
  */
328
- export function operatorReplacedSystemLogEngine(resolved) {
409
+ export function operatorReplacedSystemLogEngine(resolved, table) {
410
+ const settings = [
411
+ ...(resolved.storagePolicy !== undefined
412
+ ? [`storage_policy = '${resolved.storagePolicy}'`]
413
+ : []),
414
+ ...(table !== undefined && resolved.tableSettings?.[table] !== undefined
415
+ ? [resolved.tableSettings[table]]
416
+ : []),
417
+ ];
329
418
  return [
330
419
  'ENGINE = MergeTree PARTITION BY event_date ORDER BY event_time',
331
420
  `TTL ${resolved.ttl ?? OPERATOR_SYSTEM_LOG_TTL}`,
332
- ...(resolved.storagePolicy !== undefined
333
- ? [`SETTINGS storage_policy = '${resolved.storagePolicy}'`]
334
- : []),
421
+ ...(settings.length > 0 ? [`SETTINGS ${settings.join(', ')}`] : []),
335
422
  ].join(' ');
336
423
  }
337
424
  /**
@@ -344,14 +431,18 @@ export function operatorReplacedSystemLogEngine(resolved) {
344
431
  * sections stand untouched.
345
432
  */
346
433
  export function clickHouseSystemLogConfigurationFiles(resolved) {
347
- if (resolved.storagePolicy === undefined && resolved.ttl === undefined)
434
+ // With a policy or TTL to write, all three sections are replaced. Without
435
+ // one, only a log that carries its own settings is — the others keep the
436
+ // operator's section untouched.
437
+ const replaceAll = resolved.storagePolicy !== undefined || resolved.ttl !== undefined;
438
+ const tables = CLICKHOUSE_OPERATOR_REPLACED_SYSTEM_LOGS.filter((table) => replaceAll || resolved.tableSettings?.[table] !== undefined);
439
+ if (tables.length === 0)
348
440
  return {};
349
- const engine = escapeXmlText(operatorReplacedSystemLogEngine(resolved));
350
- const sections = CLICKHOUSE_OPERATOR_REPLACED_SYSTEM_LOGS.map((table) => [
441
+ const sections = tables.map((table) => [
351
442
  ` <${table} replace="1">`,
352
443
  ' <database>system</database>',
353
444
  ` <table>${table}</table>`,
354
- ` <engine>${engine}</engine>`,
445
+ ` <engine>${escapeXmlText(operatorReplacedSystemLogEngine(resolved, table))}</engine>`,
355
446
  ` <flush_interval_milliseconds>${OPERATOR_SYSTEM_LOG_FLUSH_INTERVAL_MS}</flush_interval_milliseconds>`,
356
447
  ` </${table}>`,
357
448
  ].join('\n'));
@@ -1 +1 @@
1
- {"version":3,"file":"system-logs.js","sourceRoot":"","sources":["../../../../src/factories/clickhouse/utils/system-logs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"system-logs.js","sourceRoot":"","sources":["../../../../src/factories/clickhouse/utils/system-logs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Own-property assignment for objects rebuilt from arbitrary keys.
3
+ *
4
+ * `target[key] = value` is not a plain write when `key` is `'__proto__'`: on
5
+ * an ordinary object it runs the inherited prototype setter, so the key never
6
+ * becomes a property and silently disappears from the rebuilt object. Data
7
+ * whose keys come from a caller (a map of setting names, Helm values, labels)
8
+ * can legitimately contain it, so every helper that copies such data key by
9
+ * key assigns through {@link setOwnProperty}.
10
+ *
11
+ * Every other key is assigned exactly as before, so the rebuilt object keeps
12
+ * its ordinary prototype and nothing else about it changes.
13
+ */
14
+ export declare function setOwnProperty(target: object, key: string, value: unknown): void;
15
+ //# sourceMappingURL=own-property.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"own-property.d.ts","sourceRoot":"","sources":["../../src/shared/own-property.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAWhF"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Own-property assignment for objects rebuilt from arbitrary keys.
3
+ *
4
+ * `target[key] = value` is not a plain write when `key` is `'__proto__'`: on
5
+ * an ordinary object it runs the inherited prototype setter, so the key never
6
+ * becomes a property and silently disappears from the rebuilt object. Data
7
+ * whose keys come from a caller (a map of setting names, Helm values, labels)
8
+ * can legitimately contain it, so every helper that copies such data key by
9
+ * key assigns through {@link setOwnProperty}.
10
+ *
11
+ * Every other key is assigned exactly as before, so the rebuilt object keeps
12
+ * its ordinary prototype and nothing else about it changes.
13
+ */
14
+ export function setOwnProperty(target, key, value) {
15
+ if (key === '__proto__') {
16
+ Object.defineProperty(target, key, {
17
+ value,
18
+ enumerable: true,
19
+ writable: true,
20
+ configurable: true,
21
+ });
22
+ return;
23
+ }
24
+ target[key] = value;
25
+ }
26
+ //# sourceMappingURL=own-property.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"own-property.js","sourceRoot":"","sources":["../../src/shared/own-property.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,cAAc,CAAC,MAAc,EAAE,GAAW,EAAE,KAAc;IACxE,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;QACxB,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE;YACjC,KAAK;YACL,UAAU,EAAE,IAAI;YAChB,QAAQ,EAAE,IAAI;YACd,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IACA,MAAkC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACnD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/utils/helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAqBlD;AAED;;;;;;;GAOG;AACH,wBAAgB,+BAA+B,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/E,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,CAAC,GACR,IAAI,CAMN;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhD"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/utils/helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAqBlD;AAED;;;;;;;GAOG;AACH,wBAAgB,+BAA+B,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/E,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,CAAC,GACR,IAAI,CAMN;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhD"}
@@ -12,6 +12,7 @@
12
12
  * - String utilities → `src/utils/string.ts`
13
13
  */
14
14
  import { copyResourceMetadata } from '../core/metadata/index.js';
15
+ import { setOwnProperty } from '../shared/own-property.js';
15
16
  /**
16
17
  * Recursively removes `undefined` values from an object tree.
17
18
  *
@@ -31,7 +32,7 @@ export function removeUndefinedValues(obj) {
31
32
  for (const [key, value] of Object.entries(obj)) {
32
33
  const cleanedValue = removeUndefinedValues(value);
33
34
  if (cleanedValue !== undefined) {
34
- cleaned[key] = cleanedValue;
35
+ setOwnProperty(cleaned, key, cleanedValue);
35
36
  }
36
37
  }
37
38
  return cleaned;
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/utils/helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAI,GAAM;IAC7C,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtC,OAAO,GAAG,CAAC;IACb,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,GAAG,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,CAAM,CAAC;IAClF,CAAC;IAED,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,OAAO,GAA4B,EAAE,CAAC;QAC5C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAA8B,CAAC,EAAE,CAAC;YAC1E,MAAM,YAAY,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;YAClD,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;gBAC/B,OAAO,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;YAC9B,CAAC;QACH,CAAC;QACD,OAAO,OAAY,CAAC;IACtB,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,+BAA+B,CAC7C,MAAS,EACT,MAAS;IAET,wEAAwE;IACxE,6EAA6E;IAC7E,kEAAkE;IAClE,wDAAwD;IACxD,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACvC,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,OAAO,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AACpD,CAAC"}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/utils/helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAI,GAAM;IAC7C,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtC,OAAO,GAAG,CAAC;IACb,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,GAAG,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,CAAM,CAAC;IAClF,CAAC;IAED,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,OAAO,GAA4B,EAAE,CAAC;QAC5C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAA8B,CAAC,EAAE,CAAC;YAC1E,MAAM,YAAY,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;YAClD,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;gBAC/B,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;QACD,OAAO,OAAY,CAAC;IACtB,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,+BAA+B,CAC7C,MAAS,EACT,MAAS;IAET,wEAAwE;IACxE,6EAA6E;IAC7E,kEAAkE;IAClE,wDAAwD;IACxD,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACvC,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,OAAO,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AACpD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "typekro",
3
- "version": "0.40.1",
3
+ "version": "0.41.1",
4
4
  "description": "A control plane aware framework for orchestrating kubernetes resources like a programmer.",
5
5
  "type": "module",
6
6
  "repository": {