@pasosdejesus/m 0.21.1 → 0.22.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.
- package/dist/base-model/baseline.generated.d.ts +60 -0
- package/dist/base-model/baseline.generated.d.ts.map +1 -0
- package/dist/base-model/baseline.generated.js +1110 -0
- package/dist/base-model/baseline.generated.js.map +1 -0
- package/dist/base-model/check.d.ts +6 -0
- package/dist/base-model/check.d.ts.map +1 -0
- package/dist/base-model/check.js +195 -0
- package/dist/base-model/check.js.map +1 -0
- package/dist/base-model/generate.d.ts +37 -0
- package/dist/base-model/generate.d.ts.map +1 -0
- package/dist/base-model/generate.js +184 -0
- package/dist/base-model/generate.js.map +1 -0
- package/dist/base-model/guidelines.d.ts +13 -0
- package/dist/base-model/guidelines.d.ts.map +1 -0
- package/dist/base-model/guidelines.js +61 -0
- package/dist/base-model/guidelines.js.map +1 -0
- package/dist/base-model/index.d.ts +19 -0
- package/dist/base-model/index.d.ts.map +1 -0
- package/dist/base-model/index.js +22 -0
- package/dist/base-model/index.js.map +1 -0
- package/dist/base-model/parse-structure.d.ts +4 -0
- package/dist/base-model/parse-structure.d.ts.map +1 -0
- package/dist/base-model/parse-structure.js +170 -0
- package/dist/base-model/parse-structure.js.map +1 -0
- package/dist/base-model/queries.d.ts +41 -0
- package/dist/base-model/queries.d.ts.map +1 -0
- package/dist/base-model/queries.js +157 -0
- package/dist/base-model/queries.js.map +1 -0
- package/dist/base-model/references/learn-tg.d.ts +16 -0
- package/dist/base-model/references/learn-tg.d.ts.map +1 -0
- package/dist/base-model/references/learn-tg.js +60 -0
- package/dist/base-model/references/learn-tg.js.map +1 -0
- package/dist/base-model/types.d.ts +183 -0
- package/dist/base-model/types.d.ts.map +1 -0
- package/dist/base-model/types.js +10 -0
- package/dist/base-model/types.js.map +1 -0
- package/dist/base-model/version.d.ts +12 -0
- package/dist/base-model/version.d.ts.map +1 -0
- package/dist/base-model/version.js +20 -0
- package/dist/base-model/version.js.map +1 -0
- package/dist/debug/DebugConsole.js +6 -6
- package/dist/debug/DebugConsole.js.map +1 -1
- package/dist/debug/Logger.js +2 -2
- package/dist/debug/Logger.js.map +1 -1
- package/dist/e2e/assertions.js +3 -3
- package/dist/e2e/assertions.js.map +1 -1
- package/dist/e2e/env.js +3 -3
- package/dist/e2e/env.js.map +1 -1
- package/dist/i18n/common-cli.js +2 -2
- package/dist/i18n/common-cli.js.map +1 -1
- package/dist/m.js +37 -5
- package/dist/m.js.map +1 -1
- package/dist/tasks/base-model.d.ts +3 -0
- package/dist/tasks/base-model.d.ts.map +1 -0
- package/dist/tasks/base-model.js +177 -0
- package/dist/tasks/base-model.js.map +1 -0
- package/dist/tasks/context-git.d.ts +27 -0
- package/dist/tasks/context-git.d.ts.map +1 -0
- package/dist/tasks/context-git.js +96 -0
- package/dist/tasks/context-git.js.map +1 -0
- package/dist/tasks/context-ignore.d.ts +18 -0
- package/dist/tasks/context-ignore.d.ts.map +1 -0
- package/dist/tasks/context-ignore.js +63 -0
- package/dist/tasks/context-ignore.js.map +1 -0
- package/dist/tasks/context-profiles.d.ts +42 -0
- package/dist/tasks/context-profiles.d.ts.map +1 -0
- package/dist/tasks/context-profiles.js +295 -0
- package/dist/tasks/context-profiles.js.map +1 -0
- package/dist/tasks/context-render.d.ts +37 -0
- package/dist/tasks/context-render.d.ts.map +1 -0
- package/dist/tasks/context-render.js +162 -0
- package/dist/tasks/context-render.js.map +1 -0
- package/dist/tasks/context-reqs.d.ts +20 -0
- package/dist/tasks/context-reqs.d.ts.map +1 -0
- package/dist/tasks/context-reqs.js +75 -0
- package/dist/tasks/context-reqs.js.map +1 -0
- package/dist/tasks/context-workspaces.d.ts +22 -0
- package/dist/tasks/context-workspaces.d.ts.map +1 -0
- package/dist/tasks/context-workspaces.js +116 -0
- package/dist/tasks/context-workspaces.js.map +1 -0
- package/dist/tasks/context.d.ts +39 -3
- package/dist/tasks/context.d.ts.map +1 -1
- package/dist/tasks/context.js +254 -262
- package/dist/tasks/context.js.map +1 -1
- package/dist/tasks/db.js +5 -5
- package/dist/tasks/db.js.map +1 -1
- package/dist/tasks/edit.js +44 -44
- package/dist/tasks/edit.js.map +1 -1
- package/dist/tasks/engine.js +2 -2
- package/dist/tasks/engine.js.map +1 -1
- package/dist/tasks/env-diff.js +2 -2
- package/dist/tasks/env-diff.js.map +1 -1
- package/dist/tasks/glob.js +6 -6
- package/dist/tasks/glob.js.map +1 -1
- package/dist/tasks/grep.js +9 -9
- package/dist/tasks/grep.js.map +1 -1
- package/dist/tasks/readfile.js +17 -17
- package/dist/tasks/readfile.js.map +1 -1
- package/dist/tasks/req.js +17 -17
- package/dist/tasks/req.js.map +1 -1
- package/dist/tasks/wallet.js +15 -15
- package/dist/tasks/wallet.js.map +1 -1
- package/dist/tasks/writefile.js +8 -8
- package/dist/tasks/writefile.js.map +1 -1
- package/dist/templates/AGENTS.md.hbs +2 -2
- package/dist/templates/ARCHITECTURE.md.hbs +2 -2
- package/dist/templates/CONTRIBUTING.md.hbs +2 -2
- package/dist/templates/apps/.env.example.hbs +1 -1
- package/dist/templates/apps/hardhat/package.json +1 -1
- package/dist/templates/apps/hardhat/scripts/verifyDeployment.ts +10 -10
- package/dist/templates/apps/hardhat/sync-abis.mjs +3 -3
- package/dist/templates/apps/nextjs/app/page.tsx.hbs +2 -2
- package/dist/util/cli-parser.d.ts +3 -3
- package/dist/util/cli-parser.d.ts.map +1 -1
- package/dist/util/cli-parser.js +8 -1
- package/dist/util/cli-parser.js.map +1 -1
- package/dist/util/fs-walk.d.ts +11 -0
- package/dist/util/fs-walk.d.ts.map +1 -0
- package/dist/util/fs-walk.js +39 -0
- package/dist/util/fs-walk.js.map +1 -0
- package/dist/util/glob-match.d.ts +8 -0
- package/dist/util/glob-match.d.ts.map +1 -0
- package/dist/util/glob-match.js +79 -0
- package/dist/util/glob-match.js.map +1 -0
- package/package.json +2 -2
- package/src/blockchain/README.md +1 -1
- package/src/debug/README.md +1 -1
- package/src/e2e/README.md +2 -2
- package/src/tasks/README.md +16 -10
- package/src/test-utils/README.md +16 -16
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"baseline.generated.js","sourceRoot":"","sources":["../../src/base-model/baseline.generated.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { BaselineInventory, CheckReport, ParsedStructure, SqlExecutor } from './types.js';
|
|
2
|
+
export declare function inventoryFromParsed(parsed: ParsedStructure, tables?: readonly string[], version?: string): BaselineInventory;
|
|
3
|
+
export declare function compareInventories(expected: BaselineInventory, actual: BaselineInventory): CheckReport;
|
|
4
|
+
export declare function inventoryFromDb(db: SqlExecutor, tables?: readonly string[], version?: string): Promise<BaselineInventory>;
|
|
5
|
+
export declare function formatCheckReport(report: CheckReport): string;
|
|
6
|
+
//# sourceMappingURL=check.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/base-model/check.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,iBAAiB,EAAgB,WAAW,EAA8B,eAAe,EACzF,WAAW,EACZ,MAAM,YAAY,CAAC;AAUpB,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,GAAE,SAAS,MAAM,EAAsB,EAAE,OAAO,SAAK,GAAG,iBAAiB,CAa3I;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,iBAAiB,GAAG,WAAW,CA6FtG;AAyBD,wBAAsB,eAAe,CACnC,EAAE,EAAE,WAAW,EACf,MAAM,GAAE,SAAS,MAAM,EAAsB,EAC7C,OAAO,SAAK,GACX,OAAO,CAAC,iBAAiB,CAAC,CA2D5B;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAW7D"}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
import { normalizeType } from './parse-structure.js';
|
|
2
|
+
import { BASE_MODEL_TABLES } from './version.js';
|
|
3
|
+
function canonicalConstraint(constraint) {
|
|
4
|
+
const columns = [...constraint.columns].sort().join(',');
|
|
5
|
+
const reference = constraint.references
|
|
6
|
+
? `${constraint.references.table}(${[...constraint.references.columns].sort().join(',')})`
|
|
7
|
+
: '';
|
|
8
|
+
return `${constraint.kind}:${columns}:${reference}`;
|
|
9
|
+
}
|
|
10
|
+
export function inventoryFromParsed(parsed, tables = BASE_MODEL_TABLES, version = '') {
|
|
11
|
+
const inventory = { version, tables: {}, counts: {} };
|
|
12
|
+
for (const table of tables) {
|
|
13
|
+
const source = parsed.tables[table];
|
|
14
|
+
if (!source)
|
|
15
|
+
continue;
|
|
16
|
+
const columns = {};
|
|
17
|
+
for (const column of source.columns) {
|
|
18
|
+
columns[column.name] = { ...column, type: normalizeType(column.type) };
|
|
19
|
+
}
|
|
20
|
+
inventory.tables[table] = { columns, constraints: source.constraints };
|
|
21
|
+
inventory.counts[table] = source.columns.length;
|
|
22
|
+
}
|
|
23
|
+
return inventory;
|
|
24
|
+
}
|
|
25
|
+
export function compareInventories(expected, actual) {
|
|
26
|
+
const findings = [];
|
|
27
|
+
const tablesAbsent = [];
|
|
28
|
+
let tablesChecked = 0;
|
|
29
|
+
for (const [table, baseTable] of Object.entries(expected.tables)) {
|
|
30
|
+
const liveTable = actual.tables[table];
|
|
31
|
+
if (!liveTable) {
|
|
32
|
+
tablesAbsent.push(table);
|
|
33
|
+
findings.push({
|
|
34
|
+
table,
|
|
35
|
+
grade: 'absent',
|
|
36
|
+
detail: `base table "${table}" is missing (apply base model ${expected.version || ''}`.trim() + ')',
|
|
37
|
+
});
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
tablesChecked++;
|
|
41
|
+
for (const [columnName, baseColumn] of Object.entries(baseTable.columns)) {
|
|
42
|
+
const liveColumn = liveTable.columns[columnName];
|
|
43
|
+
if (!liveColumn) {
|
|
44
|
+
findings.push({ table, column: columnName, grade: 'drift', detail: `base column "${table}.${columnName}" is missing` });
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
const baseType = normalizeType(baseColumn.type);
|
|
48
|
+
const liveType = normalizeType(liveColumn.type);
|
|
49
|
+
if (baseType !== liveType) {
|
|
50
|
+
findings.push({
|
|
51
|
+
table,
|
|
52
|
+
column: columnName,
|
|
53
|
+
grade: 'drift',
|
|
54
|
+
detail: `"${table}.${columnName}" has type "${liveType}", base declares "${baseType}"`,
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
if (baseColumn.notNull && !liveColumn.notNull) {
|
|
58
|
+
findings.push({
|
|
59
|
+
table,
|
|
60
|
+
column: columnName,
|
|
61
|
+
grade: 'drift',
|
|
62
|
+
detail: `"${table}.${columnName}" is nullable, base declares NOT NULL`,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
const liveByCanonical = new Set(liveTable.constraints.map(canonicalConstraint));
|
|
67
|
+
for (const constraint of baseTable.constraints) {
|
|
68
|
+
if (constraint.kind === 'check') {
|
|
69
|
+
if (!liveTable.constraints.some((live) => live.name === constraint.name)) {
|
|
70
|
+
findings.push({
|
|
71
|
+
table,
|
|
72
|
+
constraint: constraint.name,
|
|
73
|
+
grade: 'drift',
|
|
74
|
+
detail: `base check "${constraint.name}" is missing`,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
if (!liveByCanonical.has(canonicalConstraint(constraint))) {
|
|
80
|
+
findings.push({
|
|
81
|
+
table,
|
|
82
|
+
constraint: constraint.name,
|
|
83
|
+
grade: 'drift',
|
|
84
|
+
detail: `base constraint "${constraint.name}" (${constraint.kind}) is missing on "${table}"`,
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
for (const live of liveTable.constraints) {
|
|
89
|
+
const known = baseTable.constraints.some((base) => base.name === live.name || canonicalConstraint(base) === canonicalConstraint(live));
|
|
90
|
+
if (!known) {
|
|
91
|
+
findings.push({ table, constraint: live.name, grade: 'extra', detail: `consumer constraint "${live.name}" (${live.kind})` });
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
for (const liveColumn of Object.keys(liveTable.columns)) {
|
|
95
|
+
if (!baseTable.columns[liveColumn]) {
|
|
96
|
+
findings.push({ table, column: liveColumn, grade: 'extra', detail: `consumer column "${table}.${liveColumn}"` });
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
const summary = {
|
|
101
|
+
drift: findings.filter((finding) => finding.grade === 'drift').length,
|
|
102
|
+
absent: findings.filter((finding) => finding.grade === 'absent').length,
|
|
103
|
+
extra: findings.filter((finding) => finding.grade === 'extra').length,
|
|
104
|
+
};
|
|
105
|
+
return {
|
|
106
|
+
ok: summary.drift === 0 && summary.absent === 0,
|
|
107
|
+
baseModelVersion: expected.version,
|
|
108
|
+
findings,
|
|
109
|
+
tablesChecked,
|
|
110
|
+
tablesAbsent,
|
|
111
|
+
summary,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
function dbType(row) {
|
|
115
|
+
const dataType = row.data_type;
|
|
116
|
+
if (dataType === 'character varying' || dataType === 'character') {
|
|
117
|
+
return row.character_maximum_length === null ? dataType : `${dataType}(${row.character_maximum_length})`;
|
|
118
|
+
}
|
|
119
|
+
if (dataType === 'numeric') {
|
|
120
|
+
return row.numeric_precision === null ? 'numeric' : `numeric(${row.numeric_precision},${row.numeric_scale ?? 0})`;
|
|
121
|
+
}
|
|
122
|
+
if (dataType.startsWith('timestamp')) {
|
|
123
|
+
return row.datetime_precision === null || row.datetime_precision === 6
|
|
124
|
+
? dataType
|
|
125
|
+
: `timestamp(${row.datetime_precision})${dataType.replace('timestamp', '')}`;
|
|
126
|
+
}
|
|
127
|
+
return dataType;
|
|
128
|
+
}
|
|
129
|
+
function sqlTableList(tables) {
|
|
130
|
+
return tables.map((table) => `'${table.replace(/'/g, "''")}'`).join(', ');
|
|
131
|
+
}
|
|
132
|
+
export async function inventoryFromDb(db, tables = BASE_MODEL_TABLES, version = '') {
|
|
133
|
+
const inventory = { version, tables: {}, counts: {} };
|
|
134
|
+
const tableList = sqlTableList(tables);
|
|
135
|
+
const columnsResult = await db.query(`SELECT table_name, column_name, data_type, is_nullable, column_default,
|
|
136
|
+
character_maximum_length, datetime_precision, numeric_precision, numeric_scale, udt_name
|
|
137
|
+
FROM information_schema.columns
|
|
138
|
+
WHERE table_schema = 'public' AND table_name IN (${tableList})
|
|
139
|
+
ORDER BY table_name, ordinal_position`);
|
|
140
|
+
const constraintsResult = await db.query(`SELECT t.relname AS table_name, c.conname, c.contype::text AS contype, pg_get_constraintdef(c.oid) AS definition
|
|
141
|
+
FROM pg_constraint c
|
|
142
|
+
JOIN pg_class t ON t.oid = c.conrelid
|
|
143
|
+
JOIN pg_namespace n ON n.oid = t.relnamespace
|
|
144
|
+
WHERE n.nspname = 'public' AND t.relname IN (${tableList}) AND c.contype IN ('p','u','f','c')
|
|
145
|
+
ORDER BY t.relname, c.conname`);
|
|
146
|
+
const kinds = {
|
|
147
|
+
p: 'primary-key', u: 'unique', f: 'foreign-key', c: 'check',
|
|
148
|
+
};
|
|
149
|
+
for (const row of columnsResult.rows) {
|
|
150
|
+
const table = inventory.tables[row.table_name] ?? (inventory.tables[row.table_name] = {
|
|
151
|
+
columns: {}, constraints: [],
|
|
152
|
+
});
|
|
153
|
+
table.columns[row.column_name] = {
|
|
154
|
+
name: row.column_name,
|
|
155
|
+
type: dbType(row),
|
|
156
|
+
notNull: row.is_nullable === 'NO',
|
|
157
|
+
default: row.column_default ?? undefined,
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
for (const row of constraintsResult.rows) {
|
|
161
|
+
const table = inventory.tables[row.table_name];
|
|
162
|
+
if (!table)
|
|
163
|
+
continue;
|
|
164
|
+
const columnsMatch = row.definition.match(/\((?:[^()]|\([^()]*\))*\)/);
|
|
165
|
+
const referencesMatch = row.definition.match(/REFERENCES\s+(?:\w+\.)?(\w+)\s*\(([^)]*)\)/);
|
|
166
|
+
table.constraints.push({
|
|
167
|
+
name: row.conname,
|
|
168
|
+
kind: kinds[row.contype] ?? 'check',
|
|
169
|
+
definition: row.definition,
|
|
170
|
+
columns: columnsMatch ? columnsMatch[0].slice(1, -1).split(',').map((column) => column.trim()) : [],
|
|
171
|
+
references: referencesMatch
|
|
172
|
+
? { table: referencesMatch[1], columns: referencesMatch[2].split(',').map((column) => column.trim()) }
|
|
173
|
+
: undefined,
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
for (const table of Object.keys(inventory.tables)) {
|
|
177
|
+
inventory.counts[table] = Object.keys(inventory.tables[table].columns).length;
|
|
178
|
+
}
|
|
179
|
+
return inventory;
|
|
180
|
+
}
|
|
181
|
+
export function formatCheckReport(report) {
|
|
182
|
+
const lines = [];
|
|
183
|
+
lines.push(`Base model ${report.baseModelVersion}: ${report.ok ? 'compliant' : 'DRIFT'}`);
|
|
184
|
+
lines.push(` tables checked: ${report.tablesChecked}`);
|
|
185
|
+
if (report.tablesAbsent.length > 0)
|
|
186
|
+
lines.push(` absent tables: ${report.tablesAbsent.join(', ')}`);
|
|
187
|
+
for (const finding of report.findings.filter((entry) => entry.grade !== 'extra')) {
|
|
188
|
+
lines.push(` [${finding.grade}] ${finding.detail}`);
|
|
189
|
+
}
|
|
190
|
+
const extras = report.findings.filter((entry) => entry.grade === 'extra');
|
|
191
|
+
if (extras.length > 0)
|
|
192
|
+
lines.push(` [extra] ${extras.length} consumer additions (not a failure)`);
|
|
193
|
+
return lines.join('\n');
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/base-model/check.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { BaselineExtensions, BaselineInventory, ParsedStructure } from './types.js';
|
|
2
|
+
export interface GenerateOptions {
|
|
3
|
+
parsed: ParsedStructure;
|
|
4
|
+
extensions: BaselineExtensions;
|
|
5
|
+
version: string;
|
|
6
|
+
reference?: {
|
|
7
|
+
source: string;
|
|
8
|
+
sha256: string;
|
|
9
|
+
};
|
|
10
|
+
tables?: readonly string[];
|
|
11
|
+
}
|
|
12
|
+
export interface GeneratedBaseline {
|
|
13
|
+
sql: string;
|
|
14
|
+
inventory: BaselineInventory;
|
|
15
|
+
manifest: {
|
|
16
|
+
version: string;
|
|
17
|
+
reference?: {
|
|
18
|
+
source: string;
|
|
19
|
+
sha256: string;
|
|
20
|
+
};
|
|
21
|
+
tables: Record<string, {
|
|
22
|
+
columns: number;
|
|
23
|
+
constraints: number;
|
|
24
|
+
extensions: number;
|
|
25
|
+
}>;
|
|
26
|
+
externalConstraints: Array<{
|
|
27
|
+
table: string;
|
|
28
|
+
name: string;
|
|
29
|
+
references: string;
|
|
30
|
+
}>;
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
export declare function buildInventory(parsed: ParsedStructure, options: GenerateOptions): BaselineInventory;
|
|
34
|
+
export declare function renderBaselineSql(parsed: ParsedStructure, options: GenerateOptions): string;
|
|
35
|
+
export declare function buildBaseline(options: GenerateOptions): GeneratedBaseline;
|
|
36
|
+
export declare function renderGeneratedModule(baseline: GeneratedBaseline): string;
|
|
37
|
+
//# sourceMappingURL=generate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/base-model/generate.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,kBAAkB,EAAE,iBAAiB,EAA8B,eAAe,EACnF,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,eAAe,CAAC;IACxB,UAAU,EAAE,kBAAkB,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,iBAAiB,CAAC;IAC7B,QAAQ,EAAE;QACR,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;QAC/C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACrF,mBAAmB,EAAE,KAAK,CAAC;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACjF,CAAC;CACH;AAuFD,wBAAgB,cAAc,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,eAAe,GAAG,iBAAiB,CAcnG;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,eAAe,GAAG,MAAM,CAqD3F;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,iBAAiB,CAyBzE;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,CAYzE"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import { BASE_MODEL_TABLES } from './version.js';
|
|
2
|
+
import { normalizeType } from './parse-structure.js';
|
|
3
|
+
const GENERATED_HEADER = [
|
|
4
|
+
'-- Base model baseline (generated, do not edit by hand).',
|
|
5
|
+
'-- Source of truth: the reference database; regenerate with',
|
|
6
|
+
'-- bin/m base-model:dump --from-structure <structure.sql> --extensions <file>',
|
|
7
|
+
'-- Consumers apply this to a fresh database and then their own migrations.',
|
|
8
|
+
];
|
|
9
|
+
function isExtensionColumn(table, column, extensions) {
|
|
10
|
+
return extensions.columns.includes(`${table}.${column}`);
|
|
11
|
+
}
|
|
12
|
+
function isExtensionConstraint(table, constraint, extensions) {
|
|
13
|
+
return extensions.constraints.includes(`${table}.${constraint}`);
|
|
14
|
+
}
|
|
15
|
+
function renderColumn(column) {
|
|
16
|
+
const parts = [` ${column.name} ${column.type}`];
|
|
17
|
+
if (column.default !== undefined)
|
|
18
|
+
parts.push(`DEFAULT ${column.default}`);
|
|
19
|
+
if (column.notNull)
|
|
20
|
+
parts.push('NOT NULL');
|
|
21
|
+
return parts.join(' ');
|
|
22
|
+
}
|
|
23
|
+
function renderConstraint(table, constraint) {
|
|
24
|
+
return `ALTER TABLE ONLY public.${table}\n ADD CONSTRAINT ${constraint.name} ${constraint.definition};`;
|
|
25
|
+
}
|
|
26
|
+
function renderServerDefault(spec) {
|
|
27
|
+
return `ALTER TABLE ONLY public.${spec.table} ALTER COLUMN ${spec.column} SET DEFAULT ${spec.default};`;
|
|
28
|
+
}
|
|
29
|
+
function renderSequence(sequence) {
|
|
30
|
+
const owned = sequence.ownedBy
|
|
31
|
+
? `\n\nALTER SEQUENCE public.${sequence.name} OWNED BY public.${sequence.ownedBy.table}.${sequence.ownedBy.column};`
|
|
32
|
+
: '';
|
|
33
|
+
return `${sequence.definition};${owned}`;
|
|
34
|
+
}
|
|
35
|
+
function isExternalFk(constraint, tables) {
|
|
36
|
+
return constraint.kind === 'foreign-key'
|
|
37
|
+
&& constraint.references !== undefined
|
|
38
|
+
&& !tables.has(constraint.references.table);
|
|
39
|
+
}
|
|
40
|
+
function baseTableSpec(parsed, table, extensions, tables) {
|
|
41
|
+
const source = parsed.tables[table];
|
|
42
|
+
if (!source)
|
|
43
|
+
throw new Error(`Reference structure has no table "${table}"`);
|
|
44
|
+
const keepsConstraint = (constraint) => {
|
|
45
|
+
if (isExtensionConstraint(table, constraint.name, extensions))
|
|
46
|
+
return false;
|
|
47
|
+
if (isExternalFk(constraint, tables))
|
|
48
|
+
return false;
|
|
49
|
+
if (constraint.kind === 'check')
|
|
50
|
+
return true;
|
|
51
|
+
return constraint.columns.every((column) => !isExtensionColumn(table, column, extensions));
|
|
52
|
+
};
|
|
53
|
+
return {
|
|
54
|
+
name: table,
|
|
55
|
+
columns: source.columns.filter((column) => !isExtensionColumn(table, column.name, extensions)),
|
|
56
|
+
constraints: source.constraints.filter(keepsConstraint),
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
function collectExternalConstraints(parsed, tables, extensions) {
|
|
60
|
+
const external = [];
|
|
61
|
+
for (const [table, spec] of Object.entries(parsed.tables)) {
|
|
62
|
+
if (!tables.has(table))
|
|
63
|
+
continue;
|
|
64
|
+
for (const constraint of spec.constraints) {
|
|
65
|
+
if (isExtensionConstraint(table, constraint.name, extensions))
|
|
66
|
+
continue;
|
|
67
|
+
if (!isExternalFk(constraint, tables))
|
|
68
|
+
continue;
|
|
69
|
+
external.push({
|
|
70
|
+
table,
|
|
71
|
+
name: constraint.name,
|
|
72
|
+
references: `${constraint.references.table}(${constraint.references.columns.join(',')})`,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return external;
|
|
77
|
+
}
|
|
78
|
+
export function buildInventory(parsed, options) {
|
|
79
|
+
const tables = (options.tables ?? BASE_MODEL_TABLES);
|
|
80
|
+
const tableSet = new Set(tables);
|
|
81
|
+
const inventory = { version: options.version, tables: {}, counts: {} };
|
|
82
|
+
for (const table of tables) {
|
|
83
|
+
const spec = baseTableSpec(parsed, table, options.extensions, tableSet);
|
|
84
|
+
const columns = {};
|
|
85
|
+
for (const column of spec.columns) {
|
|
86
|
+
columns[column.name] = { ...column, type: normalizeType(column.type) };
|
|
87
|
+
}
|
|
88
|
+
inventory.tables[table] = { columns, constraints: spec.constraints };
|
|
89
|
+
inventory.counts[table] = spec.columns.length;
|
|
90
|
+
}
|
|
91
|
+
return inventory;
|
|
92
|
+
}
|
|
93
|
+
export function renderBaselineSql(parsed, options) {
|
|
94
|
+
const tables = (options.tables ?? BASE_MODEL_TABLES);
|
|
95
|
+
const tableSet = new Set(tables);
|
|
96
|
+
const blocks = [
|
|
97
|
+
...GENERATED_HEADER,
|
|
98
|
+
`-- Base model version: ${options.version}`,
|
|
99
|
+
];
|
|
100
|
+
if (options.reference) {
|
|
101
|
+
blocks.push(`-- Reference: ${options.reference.source} (sha256 ${options.reference.sha256})`);
|
|
102
|
+
}
|
|
103
|
+
blocks.push('');
|
|
104
|
+
const specs = tables.map((table) => baseTableSpec(parsed, table, options.extensions, tableSet));
|
|
105
|
+
for (const table of tables) {
|
|
106
|
+
const sequences = Object.values(parsed.sequences)
|
|
107
|
+
.filter((sequence) => sequence.name.startsWith(`${table}_`))
|
|
108
|
+
.sort((a, b) => (a.name < b.name ? -1 : 1));
|
|
109
|
+
for (const sequence of sequences)
|
|
110
|
+
blocks.push(renderSequence(sequence));
|
|
111
|
+
if (sequences.length > 0)
|
|
112
|
+
blocks.push('');
|
|
113
|
+
}
|
|
114
|
+
for (const spec of specs) {
|
|
115
|
+
const body = [
|
|
116
|
+
...spec.columns.map(renderColumn),
|
|
117
|
+
...spec.constraints.filter((constraint) => constraint.kind === 'check').map((constraint) => ` CONSTRAINT ${constraint.name} ${constraint.definition}`),
|
|
118
|
+
];
|
|
119
|
+
blocks.push(`CREATE TABLE public.${spec.name} (\n${body.join(',\n')}\n);`, '');
|
|
120
|
+
}
|
|
121
|
+
for (const spec of specs) {
|
|
122
|
+
for (const constraint of spec.constraints) {
|
|
123
|
+
if (constraint.kind === 'check' || constraint.kind === 'foreign-key')
|
|
124
|
+
continue;
|
|
125
|
+
blocks.push(renderConstraint(spec.name, constraint), '');
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
for (const spec of specs) {
|
|
129
|
+
for (const constraint of spec.constraints) {
|
|
130
|
+
if (constraint.kind !== 'foreign-key')
|
|
131
|
+
continue;
|
|
132
|
+
blocks.push(renderConstraint(spec.name, constraint), '');
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
for (const table of tables) {
|
|
136
|
+
const defaults = parsed.serverDefaults
|
|
137
|
+
.filter((spec) => spec.table === table)
|
|
138
|
+
.filter((spec) => !isExtensionColumn(table, spec.column, options.extensions))
|
|
139
|
+
.sort((a, b) => (a.column < b.column ? -1 : 1));
|
|
140
|
+
for (const spec of defaults)
|
|
141
|
+
blocks.push(renderServerDefault(spec), '');
|
|
142
|
+
}
|
|
143
|
+
return `${blocks.join('\n').replace(/\n{3,}/g, '\n\n').trimEnd()}\n`;
|
|
144
|
+
}
|
|
145
|
+
export function buildBaseline(options) {
|
|
146
|
+
const tables = (options.tables ?? BASE_MODEL_TABLES);
|
|
147
|
+
const tableSet = new Set(tables);
|
|
148
|
+
const inventory = buildInventory(options.parsed, options);
|
|
149
|
+
const manifestTables = {};
|
|
150
|
+
for (const table of tables) {
|
|
151
|
+
const source = options.parsed.tables[table];
|
|
152
|
+
manifestTables[table] = {
|
|
153
|
+
columns: inventory.tables[table] ? Object.keys(inventory.tables[table].columns).length : 0,
|
|
154
|
+
constraints: inventory.tables[table]?.constraints.length ?? 0,
|
|
155
|
+
extensions: source
|
|
156
|
+
? source.columns.filter((column) => isExtensionColumn(table, column.name, options.extensions)).length
|
|
157
|
+
: 0,
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
return {
|
|
161
|
+
sql: renderBaselineSql(options.parsed, options),
|
|
162
|
+
inventory,
|
|
163
|
+
manifest: {
|
|
164
|
+
version: options.version,
|
|
165
|
+
reference: options.reference,
|
|
166
|
+
tables: manifestTables,
|
|
167
|
+
externalConstraints: collectExternalConstraints(options.parsed, tableSet, options.extensions),
|
|
168
|
+
},
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
export function renderGeneratedModule(baseline) {
|
|
172
|
+
return [
|
|
173
|
+
'// Generated by `bin/m base-model:dump`; do not edit by hand.',
|
|
174
|
+
"import type { BaselineInventory } from './types.js';",
|
|
175
|
+
'',
|
|
176
|
+
`export const BASELINE_GENERATED_MANIFEST = ${JSON.stringify(baseline.manifest, null, 2)} as const;`,
|
|
177
|
+
'',
|
|
178
|
+
`export const BASELINE_INVENTORY: BaselineInventory = ${JSON.stringify(baseline.inventory, null, 2)};`,
|
|
179
|
+
'',
|
|
180
|
+
`export const BASELINE_SQL = ${JSON.stringify(baseline.sql)};`,
|
|
181
|
+
'',
|
|
182
|
+
].join('\n');
|
|
183
|
+
}
|
|
184
|
+
//# sourceMappingURL=generate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/base-model/generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface Guideline {
|
|
2
|
+
n: number;
|
|
3
|
+
title: string;
|
|
4
|
+
text: string;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Guidelines of the base model (learn.tg REQ/260 §3.2), numbered so a consumer
|
|
8
|
+
* can cite them. Guideline 6 is the generic form of the privacy rule: the base
|
|
9
|
+
* ships the mechanism, the consumer declares its flag columns.
|
|
10
|
+
*/
|
|
11
|
+
export declare const GUIDELINES: Guideline[];
|
|
12
|
+
export declare function renderGuidelines(): string;
|
|
13
|
+
//# sourceMappingURL=guidelines.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guidelines.d.ts","sourceRoot":"","sources":["../../src/base-model/guidelines.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,eAAO,MAAM,UAAU,EAAE,SAAS,EAmDjC,CAAC;AAEF,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Guidelines of the base model (learn.tg REQ/260 §3.2), numbered so a consumer
|
|
3
|
+
* can cite them. Guideline 6 is the generic form of the privacy rule: the base
|
|
4
|
+
* ships the mechanism, the consumer declares its flag columns.
|
|
5
|
+
*/
|
|
6
|
+
export const GUIDELINES = [
|
|
7
|
+
{
|
|
8
|
+
n: 1,
|
|
9
|
+
title: 'The base is additive and shared',
|
|
10
|
+
text: 'A consumer may add columns, tables, indexes and triggers. It may not remove, rename or reinterpret a base column; if the base itself must change, `m` publishes a new base-model version and the consumers adopt it.',
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
n: 2,
|
|
14
|
+
title: 'Extensions must not break the base or another consumer',
|
|
15
|
+
text: 'New columns are nullable or carry a default, and they never change the meaning of a base column.',
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
n: 3,
|
|
19
|
+
title: 'The primary key of `usuario` is immutable',
|
|
20
|
+
text: 'Foreign keys point at it (27 in learn.tg): no renumbering, no re-creation, no TRUNCATE. The same holds for the catalogs identifiers.',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
n: 4,
|
|
24
|
+
title: 'Wallets are lowercase',
|
|
25
|
+
text: 'Stored and compared with LOWER(billetera) = LOWER(?).',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
n: 5,
|
|
29
|
+
title: 'The public name is `nusuario`',
|
|
30
|
+
text: 'Never `nombre`; base queries do not expose `nombre` outside the owner-facing profile.',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
n: 6,
|
|
34
|
+
title: 'Visibility flags are honored by every public surface',
|
|
35
|
+
text: 'The base exposes a generic visibility configuration (column names); every query that feeds a public listing must honor it, and the consumer declares those columns in its own migrations and documentation.',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
n: 7,
|
|
39
|
+
title: 'Triggers are allowed and are the consumer\'s responsibility',
|
|
40
|
+
text: 'They must not change the result of a base query, and the consumer documents them.',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
n: 8,
|
|
44
|
+
title: 'No PII in logs',
|
|
45
|
+
text: 'Neither the base queries nor the consumer log personal data.',
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
n: 9,
|
|
49
|
+
title: 'Extensions live in the consumer\'s own migrations',
|
|
50
|
+
text: 'Never by editing the baseline; they are documented where that consumer documents its schema.',
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
n: 10,
|
|
54
|
+
title: 'A consumer declares the base-model version it is on',
|
|
55
|
+
text: 'It records the version, re-runs the conformance check when adopting a new one, and the check is part of the consumer test suite.',
|
|
56
|
+
},
|
|
57
|
+
];
|
|
58
|
+
export function renderGuidelines() {
|
|
59
|
+
return GUIDELINES.map((guideline) => `${guideline.n}. **${guideline.title}.** ${guideline.text}`).join('\n\n');
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=guidelines.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guidelines.js","sourceRoot":"","sources":["../../src/base-model/guidelines.ts"],"names":[],"mappings":"AAMA;;;;GAIG;AACH,MAAM,CAAC,MAAM,UAAU,GAAgB;IACrC;QACE,CAAC,EAAE,CAAC;QACJ,KAAK,EAAE,iCAAiC;QACxC,IAAI,EAAE,sNAAsN;KAC7N;IACD;QACE,CAAC,EAAE,CAAC;QACJ,KAAK,EAAE,wDAAwD;QAC/D,IAAI,EAAE,kGAAkG;KACzG;IACD;QACE,CAAC,EAAE,CAAC;QACJ,KAAK,EAAE,2CAA2C;QAClD,IAAI,EAAE,sIAAsI;KAC7I;IACD;QACE,CAAC,EAAE,CAAC;QACJ,KAAK,EAAE,uBAAuB;QAC9B,IAAI,EAAE,uDAAuD;KAC9D;IACD;QACE,CAAC,EAAE,CAAC;QACJ,KAAK,EAAE,+BAA+B;QACtC,IAAI,EAAE,uFAAuF;KAC9F;IACD;QACE,CAAC,EAAE,CAAC;QACJ,KAAK,EAAE,sDAAsD;QAC7D,IAAI,EAAE,6MAA6M;KACpN;IACD;QACE,CAAC,EAAE,CAAC;QACJ,KAAK,EAAE,6DAA6D;QACpE,IAAI,EAAE,mFAAmF;KAC1F;IACD;QACE,CAAC,EAAE,CAAC;QACJ,KAAK,EAAE,gBAAgB;QACvB,IAAI,EAAE,8DAA8D;KACrE;IACD;QACE,CAAC,EAAE,CAAC;QACJ,KAAK,EAAE,mDAAmD;QAC1D,IAAI,EAAE,8FAA8F;KACrG;IACD;QACE,CAAC,EAAE,EAAE;QACL,KAAK,EAAE,qDAAqD;QAC5D,IAAI,EAAE,kIAAkI;KACzI;CACF,CAAC;AAEF,MAAM,UAAU,gBAAgB;IAC9B,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,OAAO,SAAS,CAAC,KAAK,OAAO,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACjH,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export { BASE_MODEL_VERSION, BASE_MODEL_TABLES, isBaseModelTable } from './version.js';
|
|
2
|
+
export type { BaseModelTable } from './version.js';
|
|
3
|
+
export * from './types.js';
|
|
4
|
+
export { parseStructureSql, normalizeType } from './parse-structure.js';
|
|
5
|
+
export { buildBaseline, buildInventory, renderBaselineSql, renderGeneratedModule } from './generate.js';
|
|
6
|
+
export { compareInventories, formatCheckReport, inventoryFromDb, inventoryFromParsed, } from './check.js';
|
|
7
|
+
export { USUARIO_BASE_COLUMNS, SEARCH_TOWNS_SQL, siweNusuario, isSessionSubject, getUserByWallet, getUserById, ensureWalletLink, upsertUserByWallet, readProfile, updateProfile, setVisibility, listCountries, listDepartments, listMunicipalities, searchTowns, catalogCounts, baseModelInfo, } from './queries.js';
|
|
8
|
+
export { GUIDELINES, renderGuidelines, type Guideline } from './guidelines.js';
|
|
9
|
+
export { LEARN_TG_EXTENSIONS } from './references/learn-tg.js';
|
|
10
|
+
import { BASELINE_INVENTORY, BASELINE_SQL, BASELINE_GENERATED_MANIFEST } from './baseline.generated.js';
|
|
11
|
+
import type { CheckReport, SqlExecutor } from './types.js';
|
|
12
|
+
export { BASELINE_INVENTORY, BASELINE_SQL, BASELINE_GENERATED_MANIFEST };
|
|
13
|
+
/**
|
|
14
|
+
* Conformance check of a live database against the shipped baseline.
|
|
15
|
+
* Extensions are reported as `extra` and never fail; missing or changed base
|
|
16
|
+
* tables/columns are `drift`/`absent` and make the report not ok.
|
|
17
|
+
*/
|
|
18
|
+
export declare function checkBaseModel(db: SqlExecutor): Promise<CheckReport>;
|
|
19
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/base-model/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACvF,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACxG,OAAO,EACL,kBAAkB,EAAE,iBAAiB,EAAE,eAAe,EAAE,mBAAmB,GAC5E,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,oBAAoB,EAAE,gBAAgB,EAAE,YAAY,EAAE,gBAAgB,EACtE,eAAe,EAAE,WAAW,EAAE,gBAAgB,EAAE,kBAAkB,EAClE,WAAW,EAAE,aAAa,EAAE,aAAa,EACzC,aAAa,EAAE,eAAe,EAAE,kBAAkB,EAAE,WAAW,EAAE,aAAa,EAC9E,aAAa,GACd,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAG/D,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAExG,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE3D,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,2BAA2B,EAAE,CAAC;AAEzE;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,EAAE,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAG1E"}
|