@smart-data-engines/sde 0.1.0-dev.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/LICENSE +201 -0
  2. package/NOTICE +13 -0
  3. package/README.md +153 -0
  4. package/bin/weather.mjs +32 -0
  5. package/dist/_usage.d.ts +30 -0
  6. package/dist/_usage.js +194 -0
  7. package/dist/_usage.js.map +1 -0
  8. package/dist/bulk.d.ts +9 -0
  9. package/dist/bulk.js +83 -0
  10. package/dist/bulk.js.map +1 -0
  11. package/dist/canonical.d.ts +46 -0
  12. package/dist/canonical.js +150 -0
  13. package/dist/canonical.js.map +1 -0
  14. package/dist/capabilities.d.ts +48 -0
  15. package/dist/capabilities.js +62 -0
  16. package/dist/capabilities.js.map +1 -0
  17. package/dist/cutover.d.ts +36 -0
  18. package/dist/cutover.js +219 -0
  19. package/dist/cutover.js.map +1 -0
  20. package/dist/demo/model.d.ts +28 -0
  21. package/dist/demo/model.js +40 -0
  22. package/dist/demo/model.js.map +1 -0
  23. package/dist/demo/project.d.ts +19 -0
  24. package/dist/demo/project.js +128 -0
  25. package/dist/demo/project.js.map +1 -0
  26. package/dist/demo/weather.d.ts +73 -0
  27. package/dist/demo/weather.js +334 -0
  28. package/dist/demo/weather.js.map +1 -0
  29. package/dist/engines/_clickhouse-connection.d.ts +17 -0
  30. package/dist/engines/_clickhouse-connection.js +182 -0
  31. package/dist/engines/_clickhouse-connection.js.map +1 -0
  32. package/dist/engines/_tls-peer-identity.d.ts +2 -0
  33. package/dist/engines/_tls-peer-identity.js +23 -0
  34. package/dist/engines/_tls-peer-identity.js.map +1 -0
  35. package/dist/engines/_write-fences.d.ts +51 -0
  36. package/dist/engines/_write-fences.js +189 -0
  37. package/dist/engines/_write-fences.js.map +1 -0
  38. package/dist/engines/clickhouse.d.ts +193 -0
  39. package/dist/engines/clickhouse.js +899 -0
  40. package/dist/engines/clickhouse.js.map +1 -0
  41. package/dist/engines/postgres.d.ts +293 -0
  42. package/dist/engines/postgres.js +981 -0
  43. package/dist/engines/postgres.js.map +1 -0
  44. package/dist/errors.d.ts +89 -0
  45. package/dist/errors.js +90 -0
  46. package/dist/errors.js.map +1 -0
  47. package/dist/frozen-verification.d.ts +26 -0
  48. package/dist/frozen-verification.js +67 -0
  49. package/dist/frozen-verification.js.map +1 -0
  50. package/dist/generation.d.ts +34 -0
  51. package/dist/generation.js +81 -0
  52. package/dist/generation.js.map +1 -0
  53. package/dist/groups.d.ts +17 -0
  54. package/dist/groups.js +66 -0
  55. package/dist/groups.js.map +1 -0
  56. package/dist/hashing.d.ts +68 -0
  57. package/dist/hashing.js +146 -0
  58. package/dist/hashing.js.map +1 -0
  59. package/dist/in-place-index.d.ts +43 -0
  60. package/dist/in-place-index.js +272 -0
  61. package/dist/in-place-index.js.map +1 -0
  62. package/dist/index.d.ts +79 -0
  63. package/dist/index.js +64 -0
  64. package/dist/index.js.map +1 -0
  65. package/dist/inspection.d.ts +19 -0
  66. package/dist/inspection.js +31 -0
  67. package/dist/inspection.js.map +1 -0
  68. package/dist/internal.d.ts +42 -0
  69. package/dist/internal.js +56 -0
  70. package/dist/internal.js.map +1 -0
  71. package/dist/layout.d.ts +36 -0
  72. package/dist/layout.js +62 -0
  73. package/dist/layout.js.map +1 -0
  74. package/dist/migration.d.ts +197 -0
  75. package/dist/migration.js +592 -0
  76. package/dist/migration.js.map +1 -0
  77. package/dist/model.d.ts +93 -0
  78. package/dist/model.js +313 -0
  79. package/dist/model.js.map +1 -0
  80. package/dist/physical.d.ts +128 -0
  81. package/dist/physical.js +421 -0
  82. package/dist/physical.js.map +1 -0
  83. package/dist/placement.d.ts +157 -0
  84. package/dist/placement.js +651 -0
  85. package/dist/placement.js.map +1 -0
  86. package/dist/provisioning.d.ts +6 -0
  87. package/dist/provisioning.js +45 -0
  88. package/dist/provisioning.js.map +1 -0
  89. package/dist/query.d.ts +68 -0
  90. package/dist/query.js +340 -0
  91. package/dist/query.js.map +1 -0
  92. package/dist/routing.d.ts +25 -0
  93. package/dist/routing.js +35 -0
  94. package/dist/routing.js.map +1 -0
  95. package/dist/schema.d.ts +110 -0
  96. package/dist/schema.js +337 -0
  97. package/dist/schema.js.map +1 -0
  98. package/dist/session.d.ts +195 -0
  99. package/dist/session.js +870 -0
  100. package/dist/session.js.map +1 -0
  101. package/dist/shapes.d.ts +30 -0
  102. package/dist/shapes.js +112 -0
  103. package/dist/shapes.js.map +1 -0
  104. package/dist/staging.d.ts +29 -0
  105. package/dist/staging.js +214 -0
  106. package/dist/staging.js.map +1 -0
  107. package/dist/telemetry.d.ts +468 -0
  108. package/dist/telemetry.js +872 -0
  109. package/dist/telemetry.js.map +1 -0
  110. package/dist/testing/loader.d.ts +38 -0
  111. package/dist/testing/loader.js +86 -0
  112. package/dist/testing/loader.js.map +1 -0
  113. package/dist/testing/memory.d.ts +131 -0
  114. package/dist/testing/memory.js +311 -0
  115. package/dist/testing/memory.js.map +1 -0
  116. package/dist/timestamp.d.ts +20 -0
  117. package/dist/timestamp.js +89 -0
  118. package/dist/timestamp.js.map +1 -0
  119. package/dist/types.d.ts +79 -0
  120. package/dist/types.js +100 -0
  121. package/dist/types.js.map +1 -0
  122. package/dist/verification.d.ts +41 -0
  123. package/dist/verification.js +169 -0
  124. package/dist/verification.js.map +1 -0
  125. package/dist/watermark.d.ts +103 -0
  126. package/dist/watermark.js +170 -0
  127. package/dist/watermark.js.map +1 -0
  128. package/dist/write-fence.d.ts +58 -0
  129. package/dist/write-fence.js +225 -0
  130. package/dist/write-fence.js.map +1 -0
  131. package/package.json +86 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Building a model from neutral JSON, so that the conformance vectors can be shared.
3
+ *
4
+ * Every library needs this. A vector cannot contain TypeScript declarations any more than it can
5
+ * contain Python decorators, so the declaration in a vector is plain JSON and each implementation
6
+ * needs a way to turn that into its own model type.
7
+ *
8
+ * It deliberately does not re-implement the encoding: it produces specs and hands them to
9
+ * `assemble`. A loader with its own copy of the IR construction would make the vectors verify a code
10
+ * path no application ever executes, which is the most expensive kind of green test - it looks like
11
+ * coverage and is the absence of it.
12
+ */
13
+ import type { CostCeiling, LogicalModel } from '../model.js';
14
+ interface NeutralField {
15
+ readonly name: string;
16
+ readonly type: string;
17
+ readonly nullable?: boolean;
18
+ }
19
+ interface NeutralEntity {
20
+ readonly name: string;
21
+ readonly fields?: readonly NeutralField[];
22
+ readonly key?: readonly string[];
23
+ readonly pii?: readonly string[];
24
+ readonly residency?: string | null;
25
+ }
26
+ interface NeutralRelation {
27
+ readonly name: string;
28
+ readonly from: string;
29
+ readonly to: string;
30
+ }
31
+ export interface NeutralModel {
32
+ readonly entities?: readonly NeutralEntity[];
33
+ readonly relations?: readonly NeutralRelation[];
34
+ readonly atomic?: readonly (readonly string[])[];
35
+ readonly cost_ceiling?: CostCeiling | null;
36
+ }
37
+ export declare function modelFromNeutral(data: NeutralModel): LogicalModel;
38
+ export {};
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Building a model from neutral JSON, so that the conformance vectors can be shared.
3
+ *
4
+ * Every library needs this. A vector cannot contain TypeScript declarations any more than it can
5
+ * contain Python decorators, so the declaration in a vector is plain JSON and each implementation
6
+ * needs a way to turn that into its own model type.
7
+ *
8
+ * It deliberately does not re-implement the encoding: it produces specs and hands them to
9
+ * `assemble`. A loader with its own copy of the IR construction would make the vectors verify a code
10
+ * path no application ever executes, which is the most expensive kind of green test - it looks like
11
+ * coverage and is the absence of it.
12
+ */
13
+ import { DeclarationError } from '../errors.js';
14
+ import { assemble } from '../model.js';
15
+ import { checkType } from '../types.js';
16
+ /**
17
+ * Build a model from a vector's `model.json`.
18
+ *
19
+ * The neutral form states keys as a plain list, because that is what a human writes. Turning it into
20
+ * the positioned form the IR uses is this library's job - which is the point: if the vector carried
21
+ * the positioned form, passing it would only prove we can copy JSON.
22
+ */
23
+ /**
24
+ * The shapes a person can plausibly hand this function, named rather than crashed on.
25
+ *
26
+ * The first one is the whole reason this exists. The IR (§4) and the neutral form (§4a) are close
27
+ * enough to be confused - our own control-plane tests declared a model's IR for weeks and got away
28
+ * with it, because nothing read the stored document back - and they differ exactly where a key is
29
+ * written. Vector `errors/036`.
30
+ */
31
+ function checkShape(raw) {
32
+ for (const part of raw.key ?? []) {
33
+ if (typeof part === 'object' && part !== null && 'field' in part && 'position' in part) {
34
+ throw new DeclarationError(`${raw.name}: 'key' holds ${JSON.stringify(part)}, which is the IR's key form rather ` +
35
+ 'than the neutral one. The IR records a position because array order is not ' +
36
+ 'load-bearing anywhere else in it; a declaration states a key as a list of field names, ' +
37
+ 'in order. If you meant to hand over a model you already built, neutralDeclaration() ' +
38
+ 'produces this document from it.');
39
+ }
40
+ if (typeof part !== 'string') {
41
+ throw new DeclarationError(`${raw.name}: 'key' names fields as strings, not ${JSON.stringify(part)}`);
42
+ }
43
+ }
44
+ }
45
+ export function modelFromNeutral(data) {
46
+ const entities = [];
47
+ for (const raw of data.entities ?? []) {
48
+ checkShape(raw);
49
+ const fields = (raw.fields ?? []).map((f) => ({
50
+ name: f.name,
51
+ type: checkType(f.type, `${raw.name}.${f.name}`),
52
+ nullable: f.nullable === true,
53
+ }));
54
+ // No default. This read `raw.key ?? ['id']` and the Python port spelled the same thing with
55
+ // `or`, which differs on exactly one input: `"key": []` stayed keyless here and invented a key
56
+ // there, so one declaration had two model versions and no vector could see it. The rule is
57
+ // format-contract §4a now and the refusal is in `assemble`, where both front doors meet.
58
+ const key = raw.key ?? [];
59
+ entities.push({
60
+ name: raw.name,
61
+ fields,
62
+ key,
63
+ pii: raw.pii ?? [],
64
+ residency: raw.residency ?? null,
65
+ });
66
+ }
67
+ const names = new Set(entities.map((e) => e.name));
68
+ const relations = [];
69
+ for (const raw of data.relations ?? []) {
70
+ for (const side of [raw.from, raw.to]) {
71
+ if (!names.has(side)) {
72
+ throw new DeclarationError(`relation '${raw.name}' names unknown entity '${side}'`);
73
+ }
74
+ }
75
+ relations.push({ name: raw.name, source: raw.from, target: raw.to });
76
+ }
77
+ const atomic = (data.atomic ?? []).map((group) => [...group].sort());
78
+ for (const group of atomic) {
79
+ const unknown = group.filter((m) => !names.has(m));
80
+ if (unknown.length > 0) {
81
+ throw new DeclarationError(`atomic group names unknown entities ${JSON.stringify(unknown)}`);
82
+ }
83
+ }
84
+ return assemble(entities, relations, atomic, data.cost_ceiling ?? null);
85
+ }
86
+ //# sourceMappingURL=loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/testing/loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,131 @@
1
+ /**
2
+ * An in-memory engine, for the `migration/` conformance vectors and for anybody's adapter tests.
3
+ *
4
+ * **Why this is in the library rather than in a test file.** The `migration/` vectors pin behaviour
5
+ * that only happens against an engine: the order of the calls a backfill makes, the arithmetic of
6
+ * the resume marker, which side of the marker a verify counter lands on. Every implementation
7
+ * therefore needs an engine to run them against, and the two options were for each runner to write
8
+ * its own or for the fixture to be shared. A runner that writes its own is a runner whose *fixture*
9
+ * can be the thing that differs, and then a red vector means "one of two tables disagreed" rather
10
+ * than "one of two libraries disagreed" - the failure the whole suite exists to avoid, one level
11
+ * down.
12
+ *
13
+ * **What it is not.** It is not an implementation of anything in the format contract. It stores rows
14
+ * in an array and answers questions about them; every rule the vectors check lives in `migration.ts`
15
+ * and in `watermark.ts`. The one property it has to get right is a keyset scan, and the vectors pin
16
+ * the *calls* as well as the results, so a fixture that scanned differently shows up as a different
17
+ * call sequence rather than as a plausible wrong answer.
18
+ */
19
+ import type { PhysicalLayout } from '../placement.js';
20
+ import type { Row } from '../session.js';
21
+ export interface RecordedCall {
22
+ readonly engine: string;
23
+ readonly call: string;
24
+ readonly [field: string]: unknown;
25
+ }
26
+ /**
27
+ * The calls a set of engines received, in **one** sequence, each entry naming its engine.
28
+ *
29
+ * One journal for the whole set, and that is a fix. The first version kept a list per engine, which
30
+ * cannot express the guarantee the dual-write cases are about: a row reaches the source *before*
31
+ * anything is attempted against the copy. Reversing those two lines passed every vector, because
32
+ * each engine's own list was still in order - and the vector's own note claimed that ordering was
33
+ * what it pinned. A guarantee across two engines needs one sequence.
34
+ */
35
+ export declare class Recorded {
36
+ readonly calls: RecordedCall[];
37
+ note(engine: string, call: string, fields?: Record<string, unknown>): void;
38
+ }
39
+ export interface MemoryOptions {
40
+ readonly dialect?: string;
41
+ readonly tables?: Readonly<Record<string, readonly Row[]>>;
42
+ /**
43
+ * Whether this engine offers the two bookkeeping calls and the seven migration ones.
44
+ *
45
+ * False **removes** them rather than making them fail, because that is what an adapter without
46
+ * the capability actually is - and the check both refusals make is "will this object answer these
47
+ * calls".
48
+ */
49
+ readonly canKeepBookkeeping?: boolean;
50
+ readonly canMigrate?: boolean;
51
+ readonly canBulkWrite?: boolean;
52
+ readonly watermark?: number | null;
53
+ readonly markers?: Readonly<Record<string, number>>;
54
+ /**
55
+ * How many of the next inserts into each table must fail.
56
+ *
57
+ * The one thing a fake has to be able to do that a real engine does on its own: a fan-out that
58
+ * does not reach the copy is the case the whole dual-write design is about, and it cannot be
59
+ * reached by writing correct rows to a working table.
60
+ */
61
+ readonly failInserts?: Readonly<Record<string, number>>;
62
+ readonly name?: string;
63
+ readonly journal?: Recorded;
64
+ }
65
+ export declare class MemoryEngine {
66
+ readonly dialect: string;
67
+ readonly name: string;
68
+ readonly recorded: Recorded;
69
+ tables: Record<string, Row[]>;
70
+ private readonly watermarks;
71
+ private readonly markers;
72
+ private readonly failInserts;
73
+ constructor(options?: MemoryOptions);
74
+ private note;
75
+ private rows;
76
+ ensureSchema(layout: PhysicalLayout, _options: {
77
+ readonly keys: Readonly<Record<string, readonly string[]>>;
78
+ }): Promise<void>;
79
+ insert(table: string, values: Readonly<Row>): Promise<void>;
80
+ insertMany(table: string, rows: readonly Readonly<Row>[]): Promise<void>;
81
+ get(table: string, key: Readonly<Row>): Promise<Row | null>;
82
+ /**
83
+ * Snapshot, run, and put the snapshot back on failure.
84
+ *
85
+ * Enough to make a rollback observable, which is what the dual-write cases need: rows written
86
+ * inside a transaction that throws must not reach the copy, and the only way to check that is for
87
+ * the source to forget them too.
88
+ */
89
+ transaction<T>(body: () => Promise<T>): Promise<T>;
90
+ mapWatermark(): Promise<number | null>;
91
+ recordMapVersion(version: number, _options: {
92
+ readonly modelVersion: string;
93
+ }): Promise<void>;
94
+ keyRange(table: string, order: readonly string[], options?: {
95
+ readonly after?: readonly unknown[];
96
+ readonly upto?: readonly unknown[];
97
+ readonly limit?: number;
98
+ }): Promise<Row[]>;
99
+ nthKey(table: string, order: readonly string[], options: {
100
+ readonly position: number;
101
+ }): Promise<unknown[] | null>;
102
+ copyIn(table: string, rows: readonly Row[]): Promise<void>;
103
+ count(table: string): Promise<number>;
104
+ backfillMarker(options: {
105
+ readonly materialization: string;
106
+ readonly entity: string;
107
+ }): Promise<number>;
108
+ recordBackfillMarker(options: {
109
+ readonly materialization: string;
110
+ readonly entity: string;
111
+ readonly rows: number;
112
+ }): Promise<void>;
113
+ }
114
+ export interface EngineSpec {
115
+ readonly dialect?: string;
116
+ readonly tables?: Readonly<Record<string, readonly Row[]>>;
117
+ readonly bookkeeping?: boolean;
118
+ readonly migratable?: boolean;
119
+ readonly bulk_writable?: boolean;
120
+ readonly watermark?: number | null;
121
+ readonly markers?: Readonly<Record<string, number>>;
122
+ readonly fail_inserts?: Readonly<Record<string, number>>;
123
+ }
124
+ /**
125
+ * Build the engine set a `migration/` case describes.
126
+ *
127
+ * Here rather than in the runner for the same reason the engine itself is here: two runners that
128
+ * each read this document their own way can disagree about the *fixture*, and then a red vector
129
+ * says "one of two tables differed" instead of "one of two libraries differed".
130
+ */
131
+ export declare function enginesFrom(spec: Readonly<Record<string, EngineSpec>>, journal?: Recorded): Record<string, MemoryEngine>;
@@ -0,0 +1,311 @@
1
+ /**
2
+ * An in-memory engine, for the `migration/` conformance vectors and for anybody's adapter tests.
3
+ *
4
+ * **Why this is in the library rather than in a test file.** The `migration/` vectors pin behaviour
5
+ * that only happens against an engine: the order of the calls a backfill makes, the arithmetic of
6
+ * the resume marker, which side of the marker a verify counter lands on. Every implementation
7
+ * therefore needs an engine to run them against, and the two options were for each runner to write
8
+ * its own or for the fixture to be shared. A runner that writes its own is a runner whose *fixture*
9
+ * can be the thing that differs, and then a red vector means "one of two tables disagreed" rather
10
+ * than "one of two libraries disagreed" - the failure the whole suite exists to avoid, one level
11
+ * down.
12
+ *
13
+ * **What it is not.** It is not an implementation of anything in the format contract. It stores rows
14
+ * in an array and answers questions about them; every rule the vectors check lives in `migration.ts`
15
+ * and in `watermark.ts`. The one property it has to get right is a keyset scan, and the vectors pin
16
+ * the *calls* as well as the results, so a fixture that scanned differently shows up as a different
17
+ * call sequence rather than as a plausible wrong answer.
18
+ */
19
+ import { compareCodePoints } from '../canonical.js';
20
+ import { EngineError } from '../errors.js';
21
+ import { keyColumns, sameWidth } from '../migration.js';
22
+ /**
23
+ * The calls a set of engines received, in **one** sequence, each entry naming its engine.
24
+ *
25
+ * One journal for the whole set, and that is a fix. The first version kept a list per engine, which
26
+ * cannot express the guarantee the dual-write cases are about: a row reaches the source *before*
27
+ * anything is attempted against the copy. Reversing those two lines passed every vector, because
28
+ * each engine's own list was still in order - and the vector's own note claimed that ordering was
29
+ * what it pinned. A guarantee across two engines needs one sequence.
30
+ */
31
+ export class Recorded {
32
+ calls = [];
33
+ note(engine, call, fields = {}) {
34
+ this.calls.push({ engine, call, ...fields });
35
+ }
36
+ }
37
+ /**
38
+ * A total order over the value kinds a vector may use, with the kind first.
39
+ *
40
+ * Comparing a string to a number raises in Python and coerces in JavaScript, and neither is a key
41
+ * order. Vectors use one kind per column, so this never has to decide *between* kinds for a real
42
+ * comparison - the tag is there so a vector that accidentally mixed them fails in both languages
43
+ * rather than in one.
44
+ */
45
+ function rank(value) {
46
+ if (value === null || value === undefined)
47
+ return 0;
48
+ if (typeof value === 'boolean')
49
+ return 1;
50
+ if (typeof value === 'number')
51
+ return 2;
52
+ return 3;
53
+ }
54
+ function compareValues(left, right) {
55
+ const order = rank(left) - rank(right);
56
+ if (order !== 0)
57
+ return order;
58
+ switch (rank(left)) {
59
+ case 0:
60
+ return 0;
61
+ case 1:
62
+ return Number(left) - Number(right);
63
+ case 2:
64
+ return left - right;
65
+ default:
66
+ return compareCodePoints(String(left), String(right));
67
+ }
68
+ }
69
+ function compareKeys(order, left, right) {
70
+ for (const column of order) {
71
+ const result = compareValues(left[column], right[column]);
72
+ if (result !== 0)
73
+ return result;
74
+ }
75
+ return 0;
76
+ }
77
+ function compareToBound(order, row, bound) {
78
+ for (let index = 0; index < order.length; index += 1) {
79
+ const result = compareValues(row[order[index]], bound[index]);
80
+ if (result !== 0)
81
+ return result;
82
+ }
83
+ return 0;
84
+ }
85
+ export class MemoryEngine {
86
+ dialect;
87
+ name;
88
+ recorded;
89
+ tables = {};
90
+ watermarks = [];
91
+ markers = new Map();
92
+ failInserts = new Map();
93
+ constructor(options = {}) {
94
+ this.dialect = options.dialect ?? 'postgres';
95
+ this.name = options.name ?? 'engine';
96
+ this.recorded = options.journal ?? new Recorded();
97
+ for (const [name, rows] of Object.entries(options.tables ?? {})) {
98
+ this.tables[name] = rows.map((row) => ({ ...row }));
99
+ }
100
+ if (options.watermark !== undefined && options.watermark !== null) {
101
+ this.watermarks.push(options.watermark);
102
+ }
103
+ for (const [key, value] of Object.entries(options.markers ?? {})) {
104
+ this.markers.set(key, [value]);
105
+ }
106
+ for (const [table, count] of Object.entries(options.failInserts ?? {})) {
107
+ this.failInserts.set(table, count);
108
+ }
109
+ const target = this;
110
+ if (options.canKeepBookkeeping === false) {
111
+ for (const name of ['mapWatermark', 'recordMapVersion'])
112
+ target[name] = undefined;
113
+ }
114
+ if (options.canBulkWrite === false)
115
+ target['insertMany'] = undefined;
116
+ if (options.canMigrate === false) {
117
+ for (const name of [
118
+ 'keyRange',
119
+ 'nthKey',
120
+ 'copyIn',
121
+ 'count',
122
+ 'backfillMarker',
123
+ 'recordBackfillMarker',
124
+ ]) {
125
+ target[name] = undefined;
126
+ }
127
+ }
128
+ }
129
+ note(call, fields = {}) {
130
+ this.recorded.note(this.name, call, fields);
131
+ }
132
+ rows(table) {
133
+ const existing = this.tables[table];
134
+ if (existing !== undefined)
135
+ return existing;
136
+ const created = [];
137
+ this.tables[table] = created;
138
+ return created;
139
+ }
140
+ // --- Engine ------------------------------------------------------------------------------
141
+ async ensureSchema(layout, _options) {
142
+ this.note('ensure_schema', { tables: Object.values(layout.tables).sort(compareCodePoints) });
143
+ for (const table of Object.values(layout.tables))
144
+ this.rows(table);
145
+ }
146
+ async insert(table, values) {
147
+ this.note('insert', { table });
148
+ const remaining = this.failInserts.get(table) ?? 0;
149
+ if (remaining > 0) {
150
+ this.failInserts.set(table, remaining - 1);
151
+ throw new EngineError(`insert into ${table} failed: this engine was told to refuse it`);
152
+ }
153
+ this.rows(table).push({ ...values });
154
+ }
155
+ async insertMany(table, rows) {
156
+ this.note('insert_many', { table, rows: rows.length });
157
+ const remaining = this.failInserts.get(table) ?? 0;
158
+ if (remaining > 0) {
159
+ this.failInserts.set(table, remaining - 1);
160
+ throw new EngineError('batch insert failed: this engine was told to refuse it');
161
+ }
162
+ this.rows(table).push(...rows.map((row) => ({ ...row })));
163
+ }
164
+ async get(table, key) {
165
+ this.note('get', { table });
166
+ for (const row of this.rows(table)) {
167
+ if (Object.entries(key).every(([column, value]) => row[column] === value))
168
+ return { ...row };
169
+ }
170
+ return null;
171
+ }
172
+ /**
173
+ * Snapshot, run, and put the snapshot back on failure.
174
+ *
175
+ * Enough to make a rollback observable, which is what the dual-write cases need: rows written
176
+ * inside a transaction that throws must not reach the copy, and the only way to check that is for
177
+ * the source to forget them too.
178
+ */
179
+ async transaction(body) {
180
+ this.note('transaction');
181
+ const snapshot = {};
182
+ for (const [name, rows] of Object.entries(this.tables)) {
183
+ snapshot[name] = rows.map((row) => ({ ...row }));
184
+ }
185
+ try {
186
+ return await body();
187
+ }
188
+ catch (error) {
189
+ this.tables = snapshot;
190
+ throw error;
191
+ }
192
+ }
193
+ // --- WatermarkStore ----------------------------------------------------------------------
194
+ async mapWatermark() {
195
+ this.note('map_watermark');
196
+ return this.watermarks.length === 0 ? null : Math.max(...this.watermarks);
197
+ }
198
+ async recordMapVersion(version, _options) {
199
+ this.note('record_map_version', { version });
200
+ this.watermarks.push(version);
201
+ }
202
+ // --- Migratable --------------------------------------------------------------------------
203
+ async keyRange(table, order, options = {}) {
204
+ const cols = keyColumns(order, table);
205
+ if (options.after !== undefined)
206
+ sameWidth(options.after, cols, 'after');
207
+ if (options.upto !== undefined)
208
+ sameWidth(options.upto, cols, 'upto');
209
+ this.note('key_range', {
210
+ table,
211
+ after: options.after === undefined ? null : [...options.after],
212
+ upto: options.upto === undefined ? null : [...options.upto],
213
+ limit: options.limit ?? null,
214
+ });
215
+ let rows = [...this.rows(table)].sort((a, b) => compareKeys(cols, a, b));
216
+ if (options.after !== undefined) {
217
+ const after = options.after;
218
+ rows = rows.filter((row) => compareToBound(cols, row, after) > 0);
219
+ }
220
+ if (options.upto !== undefined) {
221
+ const upto = options.upto;
222
+ rows = rows.filter((row) => compareToBound(cols, row, upto) <= 0);
223
+ }
224
+ if (options.limit !== undefined)
225
+ rows = rows.slice(0, options.limit);
226
+ return rows.map((row) => ({ ...row }));
227
+ }
228
+ async nthKey(table, order, options) {
229
+ const cols = keyColumns(order, table);
230
+ this.note('nth_key', { table, position: options.position });
231
+ if (options.position < 1) {
232
+ throw new EngineError(`position is one-based; ${options.position} is not a row`);
233
+ }
234
+ const rows = [...this.rows(table)].sort((a, b) => compareKeys(cols, a, b));
235
+ if (options.position > rows.length)
236
+ return null;
237
+ const row = rows[options.position - 1];
238
+ return cols.map((column) => row[column]);
239
+ }
240
+ async copyIn(table, rows) {
241
+ this.note('copy_in', { table, rows: rows.length });
242
+ if (rows.length === 0)
243
+ return;
244
+ const columns = Object.keys(rows[0]).sort(compareCodePoints);
245
+ for (const row of rows) {
246
+ const here = Object.keys(row).sort(compareCodePoints);
247
+ if (here.join(' ') !== columns.join(' ')) {
248
+ throw new EngineError(`copyIn into ${table} was given rows with different columns ([${columns.join(', ')}] ` +
249
+ `and [${here.join(', ')}]). A chunk comes from one table, so this is a caller ` +
250
+ `assembling it from two.`);
251
+ }
252
+ }
253
+ const existing = this.rows(table);
254
+ // Idempotent on the whole row's identity, which is what both real targets do by a different
255
+ // mechanism: ON CONFLICT DO NOTHING in PostgreSQL and a ReplacingMergeTree collapse in
256
+ // ClickHouse. Not the same mechanism, which is why the adapters have live tests in every
257
+ // direction and this only has to absorb a recopy.
258
+ for (const row of rows) {
259
+ const present = existing.some((candidate) => Object.keys(row).every((column) => candidate[column] === row[column]));
260
+ if (!present)
261
+ existing.push({ ...row });
262
+ }
263
+ }
264
+ async count(table) {
265
+ this.note('count', { table });
266
+ return this.rows(table).length;
267
+ }
268
+ async backfillMarker(options) {
269
+ this.note('backfill_marker', {
270
+ materialization: options.materialization,
271
+ entity: options.entity,
272
+ });
273
+ const seen = this.markers.get(`${options.materialization}|${options.entity}`);
274
+ return seen === undefined || seen.length === 0 ? 0 : Math.max(...seen);
275
+ }
276
+ async recordBackfillMarker(options) {
277
+ this.note('record_backfill_marker', {
278
+ materialization: options.materialization,
279
+ entity: options.entity,
280
+ rows: options.rows,
281
+ });
282
+ const key = `${options.materialization}|${options.entity}`;
283
+ this.markers.set(key, [...(this.markers.get(key) ?? []), options.rows]);
284
+ }
285
+ }
286
+ /**
287
+ * Build the engine set a `migration/` case describes.
288
+ *
289
+ * Here rather than in the runner for the same reason the engine itself is here: two runners that
290
+ * each read this document their own way can disagree about the *fixture*, and then a red vector
291
+ * says "one of two tables differed" instead of "one of two libraries differed".
292
+ */
293
+ export function enginesFrom(spec, journal = new Recorded()) {
294
+ const built = {};
295
+ for (const [name, body] of Object.entries(spec)) {
296
+ built[name] = new MemoryEngine({
297
+ dialect: body.dialect ?? 'postgres',
298
+ name,
299
+ journal,
300
+ tables: body.tables ?? {},
301
+ canKeepBookkeeping: body.bookkeeping ?? true,
302
+ canMigrate: body.migratable ?? true,
303
+ canBulkWrite: body.bulk_writable ?? true,
304
+ watermark: body.watermark ?? null,
305
+ markers: body.markers ?? {},
306
+ failInserts: body.fail_inserts ?? {},
307
+ });
308
+ }
309
+ return built;
310
+ }
311
+ //# sourceMappingURL=memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/testing/memory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAUvD;;;;;;;;GAQG;AACH,MAAM,OAAO,QAAQ;IACV,KAAK,GAAmB,EAAE,CAAA;IAEnC,IAAI,CAAC,MAAc,EAAE,IAAY,EAAE,SAAkC,EAAE;QACrE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC,CAAA;IAC9C,CAAC;CACF;AA6BD;;;;;;;GAOG;AACH,SAAS,IAAI,CAAC,KAAc;IAC1B,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,CAAC,CAAA;IACnD,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,CAAC,CAAA;IACxC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAA;IACvC,OAAO,CAAC,CAAA;AACV,CAAC;AAED,SAAS,aAAa,CAAC,IAAa,EAAE,KAAc;IAClD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;IACtC,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IAC7B,QAAQ,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACnB,KAAK,CAAC;YACJ,OAAO,CAAC,CAAA;QACV,KAAK,CAAC;YACJ,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;QACrC,KAAK,CAAC;YACJ,OAAQ,IAAe,GAAI,KAAgB,CAAA;QAC7C;YACE,OAAO,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;IACzD,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,KAAwB,EAAE,IAAS,EAAE,KAAU;IAClE,KAAK,MAAM,MAAM,IAAI,KAAK,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;QACzD,IAAI,MAAM,KAAK,CAAC;YAAE,OAAO,MAAM,CAAA;IACjC,CAAC;IACD,OAAO,CAAC,CAAA;AACV,CAAC;AAED,SAAS,cAAc,CAAC,KAAwB,EAAE,GAAQ,EAAE,KAAyB;IACnF,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACrD,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAW,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;QACvE,IAAI,MAAM,KAAK,CAAC;YAAE,OAAO,MAAM,CAAA;IACjC,CAAC;IACD,OAAO,CAAC,CAAA;AACV,CAAC;AAED,MAAM,OAAO,YAAY;IACd,OAAO,CAAQ;IACf,IAAI,CAAQ;IACZ,QAAQ,CAAU;IAC3B,MAAM,GAA0B,EAAE,CAAA;IACjB,UAAU,GAAa,EAAE,CAAA;IACzB,OAAO,GAAG,IAAI,GAAG,EAAoB,CAAA;IACrC,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAA;IAExD,YAAY,UAAyB,EAAE;QACrC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,UAAU,CAAA;QAC5C,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,QAAQ,CAAA;QACpC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,QAAQ,EAAE,CAAA;QACjD,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;YAChE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAA;QACrD,CAAC;QACD,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,IAAI,OAAO,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;YAClE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QACzC,CAAC;QACD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;YACjE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;QAChC,CAAC;QACD,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC,EAAE,CAAC;YACvE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QACpC,CAAC;QACD,MAAM,MAAM,GAAG,IAA0C,CAAA;QACzD,IAAI,OAAO,CAAC,kBAAkB,KAAK,KAAK,EAAE,CAAC;YACzC,KAAK,MAAM,IAAI,IAAI,CAAC,cAAc,EAAE,kBAAkB,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAA;QACnF,CAAC;QACD,IAAI,OAAO,CAAC,YAAY,KAAK,KAAK;YAAE,MAAM,CAAC,YAAY,CAAC,GAAG,SAAS,CAAA;QACpE,IAAI,OAAO,CAAC,UAAU,KAAK,KAAK,EAAE,CAAC;YACjC,KAAK,MAAM,IAAI,IAAI;gBACjB,UAAU;gBACV,QAAQ;gBACR,QAAQ;gBACR,OAAO;gBACP,gBAAgB;gBAChB,sBAAsB;aACvB,EAAE,CAAC;gBACF,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAA;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;IAEO,IAAI,CAAC,IAAY,EAAE,SAAkC,EAAE;QAC7D,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;IAC7C,CAAC;IAEO,IAAI,CAAC,KAAa;QACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACnC,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,QAAQ,CAAA;QAC3C,MAAM,OAAO,GAAU,EAAE,CAAA;QACzB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,CAAA;QAC5B,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,4FAA4F;IAE5F,KAAK,CAAC,YAAY,CAChB,MAAsB,EACtB,QAAwE;QAExE,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAA;QAC5F,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACpE,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,MAAqB;QAC/C,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;QAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAClD,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YAClB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,GAAG,CAAC,CAAC,CAAA;YAC1C,MAAM,IAAI,WAAW,CAAC,eAAe,KAAK,4CAA4C,CAAC,CAAA;QACzF,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC,CAAA;IACtC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAa,EAAE,IAA8B;QAC5D,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;QACtD,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAClD,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YAClB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,GAAG,CAAC,CAAC,CAAA;YAC1C,MAAM,IAAI,WAAW,CAAC,wDAAwD,CAAC,CAAA;QACjF,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;IAC3D,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,KAAa,EAAE,GAAkB;QACzC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;QAC3B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACnC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC;gBAAE,OAAO,EAAE,GAAG,GAAG,EAAE,CAAA;QAC9F,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,WAAW,CAAI,IAAsB;QACzC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QACxB,MAAM,QAAQ,GAA0B,EAAE,CAAA;QAC1C,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACvD,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAA;QAClD,CAAC;QACD,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,EAAE,CAAA;QACrB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAA;YACtB,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAED,4FAA4F;IAE5F,KAAK,CAAC,YAAY;QAChB,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAA;IAC3E,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,OAAe,EAAE,QAA2C;QACjF,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAA;QAC5C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC/B,CAAC;IAED,4FAA4F;IAE5F,KAAK,CAAC,QAAQ,CACZ,KAAa,EACb,KAAwB,EACxB,UAII,EAAE;QAEN,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QACrC,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS;YAAE,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;QACxE,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;YAAE,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;QACrE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,KAAK;YACL,KAAK,EAAE,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;YAC9D,IAAI,EAAE,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;YAC3D,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,IAAI;SAC7B,CAAC,CAAA;QACF,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QACxE,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAA;YAC3B,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;QACnE,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;YACzB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QACnE,CAAC;QACD,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS;YAAE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;QACpE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAA;IACxC,CAAC;IAED,KAAK,CAAC,MAAM,CACV,KAAa,EACb,KAAwB,EACxB,OAAsC;QAEtC,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QACrC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA;QAC3D,IAAI,OAAO,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,WAAW,CAAC,0BAA0B,OAAO,CAAC,QAAQ,eAAe,CAAC,CAAA;QAClF,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC1E,IAAI,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAA;QAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAQ,CAAA;QAC7C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;IAC1C,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,IAAoB;QAC9C,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;QAClD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM;QAC7B,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAQ,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;QACnE,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;YACrD,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzC,MAAM,IAAI,WAAW,CACnB,eAAe,KAAK,4CAA4C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;oBACpF,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,wDAAwD;oBAC/E,yBAAyB,CAC5B,CAAA;YACH,CAAC;QACH,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACjC,4FAA4F;QAC5F,uFAAuF;QACvF,yFAAyF;QACzF,kDAAkD;QAClD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAC1C,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,CACtE,CAAA;YACD,IAAI,CAAC,OAAO;gBAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAA;QACzC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAAa;QACvB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAA;IAChC,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,OAGpB;QACC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC3B,eAAe,EAAE,OAAO,CAAC,eAAe;YACxC,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAA;QACF,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,eAAe,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;QAC7E,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAA;IACxE,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,OAI1B;QACC,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE;YAClC,eAAe,EAAE,OAAO,CAAC,eAAe;YACxC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB,CAAC,CAAA;QACF,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,eAAe,IAAI,OAAO,CAAC,MAAM,EAAE,CAAA;QAC1D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;IACzE,CAAC;CACF;AAaD;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CACzB,IAA0C,EAC1C,UAAoB,IAAI,QAAQ,EAAE;IAElC,MAAM,KAAK,GAAiC,EAAE,CAAA;IAC9C,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,YAAY,CAAC;YAC7B,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,UAAU;YACnC,IAAI;YACJ,OAAO;YACP,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE;YACzB,kBAAkB,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI;YAC5C,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI;YACnC,YAAY,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI;YACxC,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI;YACjC,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;YAC3B,WAAW,EAAE,IAAI,CAAC,YAAY,IAAI,EAAE;SACrC,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC"}