sorokeep 1.0.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.
- package/CONTRIBUTING.md +296 -0
- package/LICENSE +21 -0
- package/README.md +677 -0
- package/dist/alerts/alerts.d.ts +21 -0
- package/dist/alerts/alerts.d.ts.map +1 -0
- package/dist/alerts/alerts.js +18 -0
- package/dist/alerts/alerts.js.map +1 -0
- package/dist/alerts/discord.d.ts +3 -0
- package/dist/alerts/discord.d.ts.map +1 -0
- package/dist/alerts/discord.js +199 -0
- package/dist/alerts/discord.js.map +1 -0
- package/dist/alerts/dispatcher.d.ts +13 -0
- package/dist/alerts/dispatcher.d.ts.map +1 -0
- package/dist/alerts/dispatcher.js +91 -0
- package/dist/alerts/dispatcher.js.map +1 -0
- package/dist/alerts/keys.d.ts +24 -0
- package/dist/alerts/keys.d.ts.map +1 -0
- package/dist/alerts/keys.js +44 -0
- package/dist/alerts/keys.js.map +1 -0
- package/dist/alerts/pagerduty.d.ts +8 -0
- package/dist/alerts/pagerduty.d.ts.map +1 -0
- package/dist/alerts/pagerduty.js +164 -0
- package/dist/alerts/pagerduty.js.map +1 -0
- package/dist/alerts/resource.d.ts +23 -0
- package/dist/alerts/resource.d.ts.map +1 -0
- package/dist/alerts/resource.js +167 -0
- package/dist/alerts/resource.js.map +1 -0
- package/dist/alerts/slack.d.ts +7 -0
- package/dist/alerts/slack.d.ts.map +1 -0
- package/dist/alerts/slack.js +184 -0
- package/dist/alerts/slack.js.map +1 -0
- package/dist/alerts/telegram.d.ts +9 -0
- package/dist/alerts/telegram.d.ts.map +1 -0
- package/dist/alerts/telegram.js +133 -0
- package/dist/alerts/telegram.js.map +1 -0
- package/dist/alerts/templates.d.ts +109 -0
- package/dist/alerts/templates.d.ts.map +1 -0
- package/dist/alerts/templates.js +139 -0
- package/dist/alerts/templates.js.map +1 -0
- package/dist/alerts/types.d.ts +113 -0
- package/dist/alerts/types.d.ts.map +1 -0
- package/dist/alerts/types.js +87 -0
- package/dist/alerts/types.js.map +1 -0
- package/dist/alerts/webhook.d.ts +13 -0
- package/dist/alerts/webhook.d.ts.map +1 -0
- package/dist/alerts/webhook.js +56 -0
- package/dist/alerts/webhook.js.map +1 -0
- package/dist/cli/schemaFormatter.d.ts +11 -0
- package/dist/cli/schemaFormatter.d.ts.map +1 -0
- package/dist/cli/schemaFormatter.js +74 -0
- package/dist/cli/schemaFormatter.js.map +1 -0
- package/dist/commands/alerts.d.ts +3 -0
- package/dist/commands/alerts.d.ts.map +1 -0
- package/dist/commands/alerts.js +256 -0
- package/dist/commands/alerts.js.map +1 -0
- package/dist/commands/budget.d.ts +3 -0
- package/dist/commands/budget.d.ts.map +1 -0
- package/dist/commands/budget.js +47 -0
- package/dist/commands/budget.js.map +1 -0
- package/dist/commands/channels.d.ts +3 -0
- package/dist/commands/channels.d.ts.map +1 -0
- package/dist/commands/channels.js +84 -0
- package/dist/commands/channels.js.map +1 -0
- package/dist/commands/check.d.ts +3 -0
- package/dist/commands/check.d.ts.map +1 -0
- package/dist/commands/check.js +58 -0
- package/dist/commands/check.js.map +1 -0
- package/dist/commands/completion.d.ts +3 -0
- package/dist/commands/completion.d.ts.map +1 -0
- package/dist/commands/completion.js +36 -0
- package/dist/commands/completion.js.map +1 -0
- package/dist/commands/costs.d.ts +15 -0
- package/dist/commands/costs.d.ts.map +1 -0
- package/dist/commands/costs.js +280 -0
- package/dist/commands/costs.js.map +1 -0
- package/dist/commands/daemon.d.ts +3 -0
- package/dist/commands/daemon.d.ts.map +1 -0
- package/dist/commands/daemon.js +93 -0
- package/dist/commands/daemon.js.map +1 -0
- package/dist/commands/db.d.ts +3 -0
- package/dist/commands/db.d.ts.map +1 -0
- package/dist/commands/db.js +140 -0
- package/dist/commands/db.js.map +1 -0
- package/dist/commands/guard.d.ts +3 -0
- package/dist/commands/guard.d.ts.map +1 -0
- package/dist/commands/guard.js +181 -0
- package/dist/commands/guard.js.map +1 -0
- package/dist/commands/history.d.ts +3 -0
- package/dist/commands/history.d.ts.map +1 -0
- package/dist/commands/history.js +57 -0
- package/dist/commands/history.js.map +1 -0
- package/dist/commands/inspect.d.ts +3 -0
- package/dist/commands/inspect.d.ts.map +1 -0
- package/dist/commands/inspect.js +82 -0
- package/dist/commands/inspect.js.map +1 -0
- package/dist/commands/mcp.d.ts +3 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +20 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/pause.d.ts +3 -0
- package/dist/commands/pause.d.ts.map +1 -0
- package/dist/commands/pause.js +32 -0
- package/dist/commands/pause.js.map +1 -0
- package/dist/commands/resources.d.ts +3 -0
- package/dist/commands/resources.d.ts.map +1 -0
- package/dist/commands/resources.js +95 -0
- package/dist/commands/resources.js.map +1 -0
- package/dist/commands/restore.d.ts +3 -0
- package/dist/commands/restore.d.ts.map +1 -0
- package/dist/commands/restore.js +92 -0
- package/dist/commands/restore.js.map +1 -0
- package/dist/commands/resume.d.ts +3 -0
- package/dist/commands/resume.d.ts.map +1 -0
- package/dist/commands/resume.js +31 -0
- package/dist/commands/resume.js.map +1 -0
- package/dist/commands/status.d.ts +3 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +63 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/watch.d.ts +3 -0
- package/dist/commands/watch.d.ts.map +1 -0
- package/dist/commands/watch.js +163 -0
- package/dist/commands/watch.js.map +1 -0
- package/dist/core/aws_secrets.d.ts +13 -0
- package/dist/core/aws_secrets.d.ts.map +1 -0
- package/dist/core/aws_secrets.js +34 -0
- package/dist/core/aws_secrets.js.map +1 -0
- package/dist/core/budget.d.ts +10 -0
- package/dist/core/budget.d.ts.map +1 -0
- package/dist/core/budget.js +31 -0
- package/dist/core/budget.js.map +1 -0
- package/dist/core/channels.d.ts +67 -0
- package/dist/core/channels.d.ts.map +1 -0
- package/dist/core/channels.js +136 -0
- package/dist/core/channels.js.map +1 -0
- package/dist/core/check.d.ts +25 -0
- package/dist/core/check.d.ts.map +1 -0
- package/dist/core/check.js +85 -0
- package/dist/core/check.js.map +1 -0
- package/dist/core/completion.d.ts +9 -0
- package/dist/core/completion.d.ts.map +1 -0
- package/dist/core/completion.js +68 -0
- package/dist/core/completion.js.map +1 -0
- package/dist/core/costs.d.ts +90 -0
- package/dist/core/costs.d.ts.map +1 -0
- package/dist/core/costs.js +147 -0
- package/dist/core/costs.js.map +1 -0
- package/dist/core/decoder.d.ts +7 -0
- package/dist/core/decoder.d.ts.map +1 -0
- package/dist/core/decoder.js +38 -0
- package/dist/core/decoder.js.map +1 -0
- package/dist/core/discovery.d.ts +38 -0
- package/dist/core/discovery.d.ts.map +1 -0
- package/dist/core/discovery.js +208 -0
- package/dist/core/discovery.js.map +1 -0
- package/dist/core/extension.d.ts +83 -0
- package/dist/core/extension.d.ts.map +1 -0
- package/dist/core/extension.js +429 -0
- package/dist/core/extension.js.map +1 -0
- package/dist/core/inspect.d.ts +62 -0
- package/dist/core/inspect.d.ts.map +1 -0
- package/dist/core/inspect.js +303 -0
- package/dist/core/inspect.js.map +1 -0
- package/dist/core/introspection.d.ts +8 -0
- package/dist/core/introspection.d.ts.map +1 -0
- package/dist/core/introspection.js +8 -0
- package/dist/core/introspection.js.map +1 -0
- package/dist/core/monitor.d.ts +42 -0
- package/dist/core/monitor.d.ts.map +1 -0
- package/dist/core/monitor.js +188 -0
- package/dist/core/monitor.js.map +1 -0
- package/dist/core/rent_projection.d.ts +153 -0
- package/dist/core/rent_projection.d.ts.map +1 -0
- package/dist/core/rent_projection.js +146 -0
- package/dist/core/rent_projection.js.map +1 -0
- package/dist/core/scvalTranslator.d.ts +11 -0
- package/dist/core/scvalTranslator.d.ts.map +1 -0
- package/dist/core/scvalTranslator.js +36 -0
- package/dist/core/scvalTranslator.js.map +1 -0
- package/dist/core/state_diff.d.ts +45 -0
- package/dist/core/state_diff.d.ts.map +1 -0
- package/dist/core/state_diff.js +112 -0
- package/dist/core/state_diff.js.map +1 -0
- package/dist/core/status.d.ts +24 -0
- package/dist/core/status.d.ts.map +1 -0
- package/dist/core/status.js +57 -0
- package/dist/core/status.js.map +1 -0
- package/dist/core/vault.d.ts +37 -0
- package/dist/core/vault.d.ts.map +1 -0
- package/dist/core/vault.js +179 -0
- package/dist/core/vault.js.map +1 -0
- package/dist/core/watch.d.ts +36 -0
- package/dist/core/watch.d.ts.map +1 -0
- package/dist/core/watch.js +176 -0
- package/dist/core/watch.js.map +1 -0
- package/dist/daemon/loop.d.ts +38 -0
- package/dist/daemon/loop.d.ts.map +1 -0
- package/dist/daemon/loop.js +169 -0
- package/dist/daemon/loop.js.map +1 -0
- package/dist/db/backup.d.ts +12 -0
- package/dist/db/backup.d.ts.map +1 -0
- package/dist/db/backup.js +132 -0
- package/dist/db/backup.js.map +1 -0
- package/dist/db/budget.d.ts +17 -0
- package/dist/db/budget.d.ts.map +1 -0
- package/dist/db/budget.js +31 -0
- package/dist/db/budget.js.map +1 -0
- package/dist/db/database.d.ts +6 -0
- package/dist/db/database.d.ts.map +1 -0
- package/dist/db/database.js +134 -0
- package/dist/db/database.js.map +1 -0
- package/dist/db/migrations/.gitkeep +1 -0
- package/dist/db/migrations/001_resource_usage_logs.sql +28 -0
- package/dist/db/migrator.d.ts +28 -0
- package/dist/db/migrator.d.ts.map +1 -0
- package/dist/db/migrator.js +75 -0
- package/dist/db/migrator.js.map +1 -0
- package/dist/db/repositories.d.ts +474 -0
- package/dist/db/repositories.d.ts.map +1 -0
- package/dist/db/repositories.js +809 -0
- package/dist/db/repositories.js.map +1 -0
- package/dist/db/schema.sql +207 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +47 -0
- package/dist/index.js.map +1 -0
- package/dist/lib.d.ts +20 -0
- package/dist/lib.d.ts.map +1 -0
- package/dist/lib.js +16 -0
- package/dist/lib.js.map +1 -0
- package/dist/logging/index.d.ts +22 -0
- package/dist/logging/index.d.ts.map +1 -0
- package/dist/logging/index.js +34 -0
- package/dist/logging/index.js.map +1 -0
- package/dist/logging/logger.d.ts +14 -0
- package/dist/logging/logger.d.ts.map +1 -0
- package/dist/logging/logger.js +135 -0
- package/dist/logging/logger.js.map +1 -0
- package/dist/logging/types.d.ts +10 -0
- package/dist/logging/types.d.ts.map +1 -0
- package/dist/logging/types.js +2 -0
- package/dist/logging/types.js.map +1 -0
- package/dist/mcp/index.d.ts +3 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +14 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/server.d.ts +10 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +51 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tools/get-extension-costs.d.ts +4 -0
- package/dist/mcp/tools/get-extension-costs.d.ts.map +1 -0
- package/dist/mcp/tools/get-extension-costs.js +33 -0
- package/dist/mcp/tools/get-extension-costs.js.map +1 -0
- package/dist/mcp/tools/get_contract_status.d.ts +8 -0
- package/dist/mcp/tools/get_contract_status.d.ts.map +1 -0
- package/dist/mcp/tools/get_contract_status.js +33 -0
- package/dist/mcp/tools/get_contract_status.js.map +1 -0
- package/dist/rpc/client.d.ts +154 -0
- package/dist/rpc/client.d.ts.map +1 -0
- package/dist/rpc/client.js +766 -0
- package/dist/rpc/client.js.map +1 -0
- package/dist/utils/config.d.ts +51 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +86 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/formatting.d.ts +10 -0
- package/dist/utils/formatting.d.ts.map +1 -0
- package/dist/utils/formatting.js +66 -0
- package/dist/utils/formatting.js.map +1 -0
- package/dist/utils/watch-config.d.ts +13 -0
- package/dist/utils/watch-config.d.ts.map +1 -0
- package/dist/utils/watch-config.js +32 -0
- package/dist/utils/watch-config.js.map +1 -0
- package/package.json +73 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loop.js","sourceRoot":"","sources":["../../src/daemon/loop.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type Database from "better-sqlite3";
|
|
2
|
+
export interface DatabaseBackup {
|
|
3
|
+
contracts: Record<string, unknown>[];
|
|
4
|
+
contract_entries: Record<string, unknown>[];
|
|
5
|
+
extension_policies: Record<string, unknown>[];
|
|
6
|
+
alert_configs: Record<string, unknown>[];
|
|
7
|
+
channel_accounts: Record<string, unknown>[];
|
|
8
|
+
resource_alert_configs: Record<string, unknown>[];
|
|
9
|
+
}
|
|
10
|
+
export declare function exportDatabase(db: Database.Database): DatabaseBackup;
|
|
11
|
+
export declare function importDatabase(db: Database.Database, backup: DatabaseBackup): void;
|
|
12
|
+
//# sourceMappingURL=backup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../../src/db/backup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAqF3C,MAAM,WAAW,cAAc;IAC3B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACrC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAC5C,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAC9C,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACzC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAC5C,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;CACrD;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,cAAc,CASpE;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CA2BlF"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
const EXPORT_TABLES = [
|
|
2
|
+
"contracts",
|
|
3
|
+
"contract_entries",
|
|
4
|
+
"extension_policies",
|
|
5
|
+
"alert_configs",
|
|
6
|
+
"channel_accounts",
|
|
7
|
+
"resource_alert_configs",
|
|
8
|
+
];
|
|
9
|
+
const CLEAR_TABLES = [
|
|
10
|
+
"resource_alert_configs",
|
|
11
|
+
"alert_configs",
|
|
12
|
+
"extension_policies",
|
|
13
|
+
"channel_accounts",
|
|
14
|
+
"contract_entries",
|
|
15
|
+
"contracts",
|
|
16
|
+
];
|
|
17
|
+
const TABLE_COLUMNS = {
|
|
18
|
+
contracts: [
|
|
19
|
+
"id",
|
|
20
|
+
"name",
|
|
21
|
+
"network",
|
|
22
|
+
"wasm_hash",
|
|
23
|
+
"tags",
|
|
24
|
+
"registered_at",
|
|
25
|
+
"last_checked_ledger",
|
|
26
|
+
"last_introspected_at",
|
|
27
|
+
],
|
|
28
|
+
contract_entries: [
|
|
29
|
+
"id",
|
|
30
|
+
"contract_id",
|
|
31
|
+
"entry_key_xdr",
|
|
32
|
+
"entry_type",
|
|
33
|
+
"label",
|
|
34
|
+
"live_until_ledger",
|
|
35
|
+
"last_modified_ledger",
|
|
36
|
+
"discovery_source",
|
|
37
|
+
"first_seen_at",
|
|
38
|
+
"last_checked_at",
|
|
39
|
+
],
|
|
40
|
+
extension_policies: [
|
|
41
|
+
"id",
|
|
42
|
+
"contract_id",
|
|
43
|
+
"enabled",
|
|
44
|
+
"target_ttl_ledgers",
|
|
45
|
+
"extend_when_below_ledgers",
|
|
46
|
+
"keypair_public",
|
|
47
|
+
"keypair_source",
|
|
48
|
+
"created_at",
|
|
49
|
+
],
|
|
50
|
+
alert_configs: [
|
|
51
|
+
"id",
|
|
52
|
+
"contract_id",
|
|
53
|
+
"channel_type",
|
|
54
|
+
"channel_target",
|
|
55
|
+
"threshold_ledgers",
|
|
56
|
+
"webhook_secret",
|
|
57
|
+
"created_at",
|
|
58
|
+
],
|
|
59
|
+
channel_accounts: [
|
|
60
|
+
"id",
|
|
61
|
+
"public_key",
|
|
62
|
+
"keypair_source",
|
|
63
|
+
"label",
|
|
64
|
+
"network",
|
|
65
|
+
"funded",
|
|
66
|
+
"balance_xlm",
|
|
67
|
+
"balance_checked_at",
|
|
68
|
+
"created_at",
|
|
69
|
+
],
|
|
70
|
+
resource_alert_configs: [
|
|
71
|
+
"id",
|
|
72
|
+
"contract_id",
|
|
73
|
+
"channel_type",
|
|
74
|
+
"channel_target",
|
|
75
|
+
"cpu_limit",
|
|
76
|
+
"mem_limit",
|
|
77
|
+
"webhook_secret",
|
|
78
|
+
"created_at",
|
|
79
|
+
],
|
|
80
|
+
};
|
|
81
|
+
export function exportDatabase(db) {
|
|
82
|
+
return {
|
|
83
|
+
contracts: selectTable(db, "contracts"),
|
|
84
|
+
contract_entries: selectTable(db, "contract_entries"),
|
|
85
|
+
extension_policies: selectTable(db, "extension_policies"),
|
|
86
|
+
alert_configs: selectTable(db, "alert_configs"),
|
|
87
|
+
channel_accounts: selectTable(db, "channel_accounts"),
|
|
88
|
+
resource_alert_configs: selectTable(db, "resource_alert_configs"),
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
export function importDatabase(db, backup) {
|
|
92
|
+
validateBackup(backup);
|
|
93
|
+
const transaction = db.transaction((payload) => {
|
|
94
|
+
for (const table of CLEAR_TABLES) {
|
|
95
|
+
db.prepare(`DELETE FROM ${table}`).run();
|
|
96
|
+
}
|
|
97
|
+
for (const table of EXPORT_TABLES) {
|
|
98
|
+
const rows = payload[table];
|
|
99
|
+
if (rows.length === 0) {
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
const columns = TABLE_COLUMNS[table];
|
|
103
|
+
const placeholders = columns.map((column) => `@${column}`).join(", ");
|
|
104
|
+
const insert = db.prepare(`INSERT INTO ${table} (${columns.join(", ")}) VALUES (${placeholders})`);
|
|
105
|
+
for (const row of rows) {
|
|
106
|
+
insert.run(normalizeRow(row, columns));
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
transaction(backup);
|
|
111
|
+
}
|
|
112
|
+
function selectTable(db, table) {
|
|
113
|
+
return db.prepare(`SELECT * FROM ${table} ORDER BY rowid ASC`).all();
|
|
114
|
+
}
|
|
115
|
+
function validateBackup(value) {
|
|
116
|
+
if (!value || typeof value !== "object") {
|
|
117
|
+
throw new Error("Invalid database backup: expected an object");
|
|
118
|
+
}
|
|
119
|
+
for (const table of EXPORT_TABLES) {
|
|
120
|
+
if (!Array.isArray(value[table])) {
|
|
121
|
+
throw new Error(`Invalid database backup: missing table '${table}'`);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
function normalizeRow(row, columns) {
|
|
126
|
+
const normalized = {};
|
|
127
|
+
for (const column of columns) {
|
|
128
|
+
normalized[column] = Object.prototype.hasOwnProperty.call(row, column) ? row[column] : null;
|
|
129
|
+
}
|
|
130
|
+
return normalized;
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=backup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backup.js","sourceRoot":"","sources":["../../src/db/backup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type Database from "better-sqlite3";
|
|
2
|
+
export interface Budget {
|
|
3
|
+
id: number;
|
|
4
|
+
contract_id: string;
|
|
5
|
+
billing_cycle: string;
|
|
6
|
+
limit_xlm: number;
|
|
7
|
+
spent_xlm: number;
|
|
8
|
+
}
|
|
9
|
+
export declare function upsertBudget(db: Database.Database, budget: {
|
|
10
|
+
contract_id: string;
|
|
11
|
+
billing_cycle: string;
|
|
12
|
+
limit_xlm: number;
|
|
13
|
+
spent_xlm?: number;
|
|
14
|
+
}): void;
|
|
15
|
+
export declare function getBudget(db: Database.Database, contractId: string, billingCycle: string): Budget | undefined;
|
|
16
|
+
export declare function addBudgetSpent(db: Database.Database, contractId: string, billingCycle: string, amountXlm: number): void;
|
|
17
|
+
//# sourceMappingURL=budget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"budget.d.ts","sourceRoot":"","sources":["../../src/db/budget.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,MAAM,WAAW,MAAM;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE;IACxD,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,IAAI,CAiBP;AAED,wBAAgB,SAAS,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG7G;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAMvH"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export function upsertBudget(db, budget) {
|
|
2
|
+
if (budget.spent_xlm !== undefined) {
|
|
3
|
+
db.prepare(`
|
|
4
|
+
INSERT INTO budgets (contract_id, billing_cycle, limit_xlm, spent_xlm)
|
|
5
|
+
VALUES (@contract_id, @billing_cycle, @limit_xlm, @spent_xlm)
|
|
6
|
+
ON CONFLICT(contract_id, billing_cycle) DO UPDATE SET
|
|
7
|
+
limit_xlm = @limit_xlm,
|
|
8
|
+
spent_xlm = @spent_xlm
|
|
9
|
+
`).run(budget);
|
|
10
|
+
}
|
|
11
|
+
else {
|
|
12
|
+
db.prepare(`
|
|
13
|
+
INSERT INTO budgets (contract_id, billing_cycle, limit_xlm, spent_xlm)
|
|
14
|
+
VALUES (@contract_id, @billing_cycle, @limit_xlm, 0)
|
|
15
|
+
ON CONFLICT(contract_id, billing_cycle) DO UPDATE SET
|
|
16
|
+
limit_xlm = @limit_xlm
|
|
17
|
+
`).run(budget);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export function getBudget(db, contractId, billingCycle) {
|
|
21
|
+
return db.prepare("SELECT * FROM budgets WHERE contract_id = ? AND billing_cycle = ?")
|
|
22
|
+
.get(contractId, billingCycle);
|
|
23
|
+
}
|
|
24
|
+
export function addBudgetSpent(db, contractId, billingCycle, amountXlm) {
|
|
25
|
+
db.prepare(`
|
|
26
|
+
UPDATE budgets
|
|
27
|
+
SET spent_xlm = spent_xlm + ?
|
|
28
|
+
WHERE contract_id = ? AND billing_cycle = ?
|
|
29
|
+
`).run(amountXlm, contractId, billingCycle);
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=budget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"budget.js","sourceRoot":"","sources":["../../src/db/budget.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,YAAY,CAAC,EAAqB,EAAE,MAKnD;IACG,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACjC,EAAE,CAAC,OAAO,CAAC;;;;;;SAMV,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC;SAAM,CAAC;QACJ,EAAE,CAAC,OAAO,CAAC;;;;;SAKV,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC;AACL,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,EAAqB,EAAE,UAAkB,EAAE,YAAoB;IACrF,OAAO,EAAE,CAAC,OAAO,CAAC,mEAAmE,CAAC;SACjF,GAAG,CAAC,UAAU,EAAE,YAAY,CAAuB,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,EAAqB,EAAE,UAAkB,EAAE,YAAoB,EAAE,SAAiB;IAC7G,EAAE,CAAC,OAAO,CAAC;;;;KAIV,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;AAChD,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import Database from "better-sqlite3";
|
|
2
|
+
export declare function getDatabase(customPath?: string): Database.Database;
|
|
3
|
+
export declare function closeDatabase(): void;
|
|
4
|
+
export declare function vacuumDatabase(db: Database.Database): boolean;
|
|
5
|
+
export declare function getDatabaseForTesting(): Database.Database;
|
|
6
|
+
//# sourceMappingURL=database.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/db/database.ts"],"names":[],"mappings":"AAKA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAsBtC,wBAAgB,WAAW,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC,QAAQ,CA+ClE;AAyCD,wBAAgB,aAAa,SAK5B;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,OAAO,CAc7D;AAED,wBAAgB,qBAAqB,IAAI,QAAQ,CAAC,QAAQ,CAWzD"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import os from "node:os";
|
|
3
|
+
import fs from "node:fs";
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
5
|
+
import Database from "better-sqlite3";
|
|
6
|
+
import { Migrator } from "./migrator.js";
|
|
7
|
+
const SOROKEEP_DIR = path.join(os.homedir(), '.sorokeep');
|
|
8
|
+
const DB_PATH = path.join(SOROKEEP_DIR, 'sorokeep.db');
|
|
9
|
+
function ensureDataDirExists(dir) {
|
|
10
|
+
if (!fs.existsSync(dir)) {
|
|
11
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
15
|
+
const __dirname = path.dirname(__filename);
|
|
16
|
+
const SCHEMA_FILE_PATH = path.join(__dirname, 'schema.sql');
|
|
17
|
+
const SCHEMA = fs.readFileSync(SCHEMA_FILE_PATH, 'utf-8')
|
|
18
|
+
.replace(/--.*\n/g, '') // Removes SQL comments
|
|
19
|
+
.replace(/\s+/g, ' ') // Collapse whitespaces
|
|
20
|
+
.trim();
|
|
21
|
+
let db = null;
|
|
22
|
+
export function getDatabase(customPath) {
|
|
23
|
+
if (db)
|
|
24
|
+
return db;
|
|
25
|
+
const dbPath = customPath ?? DB_PATH;
|
|
26
|
+
ensureDataDirExists(path.dirname(dbPath));
|
|
27
|
+
db = new Database(dbPath);
|
|
28
|
+
db.pragma('journal_mode = WAL');
|
|
29
|
+
db.pragma('foreign_keys = ON');
|
|
30
|
+
db.exec(SCHEMA);
|
|
31
|
+
// Run schema migrations
|
|
32
|
+
const migrationsDir = path.join(__dirname, 'migrations');
|
|
33
|
+
const migrator = new Migrator(db, migrationsDir);
|
|
34
|
+
migrator.run();
|
|
35
|
+
// ── Live migrations ───────────────────────────────────────────────────────
|
|
36
|
+
// ALTER TABLE is idempotent-safe here: we catch the "duplicate column" error
|
|
37
|
+
// that SQLite throws when the column already exists. This handles existing
|
|
38
|
+
// sorokeep.db files created before these columns were added to schema.sql.
|
|
39
|
+
const migrations = [
|
|
40
|
+
`ALTER TABLE alerts_fired ADD COLUMN delivered INTEGER NOT NULL DEFAULT 0`,
|
|
41
|
+
`ALTER TABLE alerts_fired ADD COLUMN delivered_at TEXT`,
|
|
42
|
+
`ALTER TABLE alerts_fired ADD COLUMN retry_count INTEGER NOT NULL DEFAULT 0`,
|
|
43
|
+
`ALTER TABLE alert_configs ADD COLUMN webhook_secret TEXT`,
|
|
44
|
+
`ALTER TABLE contracts ADD COLUMN poll_interval_seconds INTEGER`,
|
|
45
|
+
`CREATE TABLE IF NOT EXISTS channel_accounts (
|
|
46
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
47
|
+
public_key TEXT NOT NULL UNIQUE,
|
|
48
|
+
keypair_source TEXT,
|
|
49
|
+
label TEXT,
|
|
50
|
+
network TEXT NOT NULL DEFAULT 'testnet',
|
|
51
|
+
funded BOOLEAN NOT NULL DEFAULT 0,
|
|
52
|
+
balance_xlm REAL,
|
|
53
|
+
balance_checked_at TEXT,
|
|
54
|
+
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
55
|
+
)`,
|
|
56
|
+
`ALTER TABLE contracts ADD COLUMN last_introspected_at DATETIME`,
|
|
57
|
+
`ALTER TABLE contracts ADD COLUMN active INTEGER NOT NULL DEFAULT 1`,
|
|
58
|
+
];
|
|
59
|
+
for (const sql of migrations) {
|
|
60
|
+
try {
|
|
61
|
+
db.exec(sql);
|
|
62
|
+
}
|
|
63
|
+
catch { /* column already exists — no-op */ }
|
|
64
|
+
}
|
|
65
|
+
migrateAlertConfigsChannelTypeCheck(db);
|
|
66
|
+
return db;
|
|
67
|
+
}
|
|
68
|
+
function migrateAlertConfigsChannelTypeCheck(db) {
|
|
69
|
+
const row = db.prepare(`
|
|
70
|
+
SELECT sql FROM sqlite_master
|
|
71
|
+
WHERE type = 'table' AND name = 'alert_configs'
|
|
72
|
+
`).get();
|
|
73
|
+
if (!row?.sql) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
const hasLegacyCheck = /CHECK\s*\(\s*channel_type\s+IN\s*\(\s*'slack'\s*,\s*'webhook'(?:,\s*'pagerduty')?\s*\)\s*\)/i.test(row.sql);
|
|
77
|
+
if (!hasLegacyCheck) {
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
db.exec("PRAGMA foreign_keys = OFF;");
|
|
81
|
+
db.exec("BEGIN TRANSACTION;");
|
|
82
|
+
db.exec(`
|
|
83
|
+
CREATE TABLE alert_configs_new (
|
|
84
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
85
|
+
contract_id TEXT NOT NULL REFERENCES contracts(id) ON DELETE CASCADE,
|
|
86
|
+
channel_type TEXT NOT NULL CHECK(channel_type IN ('slack', 'webhook', 'pagerduty', 'discord', 'telegram')),
|
|
87
|
+
channel_target TEXT NOT NULL,
|
|
88
|
+
threshold_ledgers INTEGER NOT NULL,
|
|
89
|
+
webhook_secret TEXT,
|
|
90
|
+
created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
91
|
+
)
|
|
92
|
+
`);
|
|
93
|
+
db.exec(`
|
|
94
|
+
INSERT INTO alert_configs_new (id, contract_id, channel_type, channel_target, threshold_ledgers, webhook_secret, created_at)
|
|
95
|
+
SELECT id, contract_id, channel_type, channel_target, threshold_ledgers, webhook_secret, created_at
|
|
96
|
+
FROM alert_configs
|
|
97
|
+
`);
|
|
98
|
+
db.exec(`DROP TABLE alert_configs;`);
|
|
99
|
+
db.exec(`ALTER TABLE alert_configs_new RENAME TO alert_configs;`);
|
|
100
|
+
db.exec("COMMIT;");
|
|
101
|
+
db.exec("PRAGMA foreign_keys = ON;");
|
|
102
|
+
}
|
|
103
|
+
export function closeDatabase() {
|
|
104
|
+
if (db) {
|
|
105
|
+
db.close();
|
|
106
|
+
db = null;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
export function vacuumDatabase(db) {
|
|
110
|
+
if (db.inTransaction) {
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
try {
|
|
114
|
+
db.exec("VACUUM");
|
|
115
|
+
return true;
|
|
116
|
+
}
|
|
117
|
+
catch (err) {
|
|
118
|
+
if (err instanceof Error && /(busy|locked)/i.test(err.message)) {
|
|
119
|
+
return false;
|
|
120
|
+
}
|
|
121
|
+
throw err;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
export function getDatabaseForTesting() {
|
|
125
|
+
const db = new Database(':memory:');
|
|
126
|
+
db.pragma('foreign_keys = ON');
|
|
127
|
+
db.exec(SCHEMA);
|
|
128
|
+
// Run schema migrations
|
|
129
|
+
const migrationsDir = path.join(__dirname, 'migrations');
|
|
130
|
+
const migrator = new Migrator(db, migrationsDir);
|
|
131
|
+
migrator.run();
|
|
132
|
+
return db;
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=database.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/db/database.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# Keep migrations directory
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
-- Migration 001: add resource_usage_logs table (issue #164)
|
|
2
|
+
--
|
|
3
|
+
-- Stores per-transaction CPU, memory, and fee-parameter snapshots so that
|
|
4
|
+
-- operators can track resource consumption over time without relying on
|
|
5
|
+
-- extension_history (which is specific to TTL-extension transactions).
|
|
6
|
+
|
|
7
|
+
CREATE TABLE IF NOT EXISTS resource_usage_logs (
|
|
8
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
9
|
+
contract_id TEXT NOT NULL REFERENCES contracts(id) ON DELETE CASCADE,
|
|
10
|
+
cpu_insns INTEGER NOT NULL,
|
|
11
|
+
mem_bytes INTEGER NOT NULL,
|
|
12
|
+
fee_instructions INTEGER,
|
|
13
|
+
fee_read_ledger_entries INTEGER,
|
|
14
|
+
fee_write_ledger_entries INTEGER,
|
|
15
|
+
fee_read_bytes INTEGER,
|
|
16
|
+
fee_write_bytes INTEGER,
|
|
17
|
+
fee_transaction_size INTEGER,
|
|
18
|
+
fee_historical_ledger INTEGER,
|
|
19
|
+
fee_rent_ledger INTEGER,
|
|
20
|
+
fee_refundable INTEGER,
|
|
21
|
+
recorded_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
22
|
+
);
|
|
23
|
+
|
|
24
|
+
CREATE INDEX IF NOT EXISTS idx_resource_usage_logs_contract_id
|
|
25
|
+
ON resource_usage_logs(contract_id);
|
|
26
|
+
|
|
27
|
+
CREATE INDEX IF NOT EXISTS idx_resource_usage_logs_recorded_at
|
|
28
|
+
ON resource_usage_logs(recorded_at DESC);
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type Database from "better-sqlite3";
|
|
2
|
+
export declare class Migrator {
|
|
3
|
+
private db;
|
|
4
|
+
private migrationsDir;
|
|
5
|
+
constructor(db: Database.Database, migrationsDir: string);
|
|
6
|
+
/**
|
|
7
|
+
* Initializes the migrations tracking table if it doesn't exist.
|
|
8
|
+
*/
|
|
9
|
+
init(): void;
|
|
10
|
+
/**
|
|
11
|
+
* Retrieves all applied migration versions.
|
|
12
|
+
*/
|
|
13
|
+
getAppliedMigrations(): number[];
|
|
14
|
+
/**
|
|
15
|
+
* Retrieves list of pending migrations from the migrations directory.
|
|
16
|
+
*/
|
|
17
|
+
getPendingMigrations(): {
|
|
18
|
+
version: number;
|
|
19
|
+
filename: string;
|
|
20
|
+
filepath: string;
|
|
21
|
+
}[];
|
|
22
|
+
/**
|
|
23
|
+
* Executes all pending migrations sequentially.
|
|
24
|
+
* Each migration script is executed in its own transaction.
|
|
25
|
+
*/
|
|
26
|
+
run(): void;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=migrator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrator.d.ts","sourceRoot":"","sources":["../../src/db/migrator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAI3C,qBAAa,QAAQ;IACjB,OAAO,CAAC,EAAE,CAAoB;IAC9B,OAAO,CAAC,aAAa,CAAS;gBAElB,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM;IAKxD;;OAEG;IACI,IAAI,IAAI,IAAI;IASnB;;OAEG;IACI,oBAAoB,IAAI,MAAM,EAAE;IAMvC;;OAEG;IACI,oBAAoB,IAAI;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE;IA4BxF;;;OAGG;IACI,GAAG,IAAI,IAAI;CAiBrB"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
export class Migrator {
|
|
4
|
+
db;
|
|
5
|
+
migrationsDir;
|
|
6
|
+
constructor(db, migrationsDir) {
|
|
7
|
+
this.db = db;
|
|
8
|
+
this.migrationsDir = migrationsDir;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Initializes the migrations tracking table if it doesn't exist.
|
|
12
|
+
*/
|
|
13
|
+
init() {
|
|
14
|
+
this.db.exec(`
|
|
15
|
+
CREATE TABLE IF NOT EXISTS schema_migrations (
|
|
16
|
+
version INTEGER PRIMARY KEY,
|
|
17
|
+
applied_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
18
|
+
);
|
|
19
|
+
`);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Retrieves all applied migration versions.
|
|
23
|
+
*/
|
|
24
|
+
getAppliedMigrations() {
|
|
25
|
+
this.init();
|
|
26
|
+
const rows = this.db.prepare("SELECT version FROM schema_migrations ORDER BY version ASC;").all();
|
|
27
|
+
return rows.map((r) => r.version);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Retrieves list of pending migrations from the migrations directory.
|
|
31
|
+
*/
|
|
32
|
+
getPendingMigrations() {
|
|
33
|
+
this.init();
|
|
34
|
+
if (!fs.existsSync(this.migrationsDir)) {
|
|
35
|
+
return [];
|
|
36
|
+
}
|
|
37
|
+
const files = fs.readdirSync(this.migrationsDir);
|
|
38
|
+
const pending = [];
|
|
39
|
+
const applied = new Set(this.getAppliedMigrations());
|
|
40
|
+
for (const file of files) {
|
|
41
|
+
const match = file.match(/^(\d+)(?:_.*)?\.sql$/i);
|
|
42
|
+
if (match) {
|
|
43
|
+
const version = parseInt(match[1], 10);
|
|
44
|
+
if (!applied.has(version)) {
|
|
45
|
+
pending.push({
|
|
46
|
+
version,
|
|
47
|
+
filename: file,
|
|
48
|
+
filepath: path.join(this.migrationsDir, file),
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
// Sort pending migrations by version to ensure sequential execution
|
|
54
|
+
return pending.sort((a, b) => a.version - b.version);
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Executes all pending migrations sequentially.
|
|
58
|
+
* Each migration script is executed in its own transaction.
|
|
59
|
+
*/
|
|
60
|
+
run() {
|
|
61
|
+
this.init();
|
|
62
|
+
const pending = this.getPendingMigrations();
|
|
63
|
+
for (const migration of pending) {
|
|
64
|
+
const sql = fs.readFileSync(migration.filepath, "utf-8");
|
|
65
|
+
// Define transaction for the migration run
|
|
66
|
+
const runMigrationTx = this.db.transaction(() => {
|
|
67
|
+
this.db.exec(sql);
|
|
68
|
+
this.db.prepare("INSERT INTO schema_migrations (version) VALUES (?);").run(migration.version);
|
|
69
|
+
});
|
|
70
|
+
// Execute migration transaction
|
|
71
|
+
runMigrationTx();
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=migrator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrator.js","sourceRoot":"","sources":["../../src/db/migrator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,OAAO,QAAQ;IACT,EAAE,CAAoB;IACtB,aAAa,CAAS;IAE9B,YAAY,EAAqB,EAAE,aAAqB;QACpD,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACvC,CAAC;IAED;;OAEG;IACI,IAAI;QACP,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;;;;SAKZ,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACI,oBAAoB;QACvB,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,6DAA6D,CAAC,CAAC,GAAG,EAA2B,CAAC;QAC3H,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACI,oBAAoB;QACvB,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;YACrC,OAAO,EAAE,CAAC;QACd,CAAC;QAED,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACjD,MAAM,OAAO,GAA8D,EAAE,CAAC;QAC9E,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;QAErD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;YAClD,IAAI,KAAK,EAAE,CAAC;gBACR,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAE,EAAE,EAAE,CAAC,CAAC;gBACxC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;oBACxB,OAAO,CAAC,IAAI,CAAC;wBACT,OAAO;wBACP,QAAQ,EAAE,IAAI;wBACd,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC;qBAChD,CAAC,CAAC;gBACP,CAAC;YACL,CAAC;QACL,CAAC;QAED,oEAAoE;QACpE,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;IACzD,CAAC;IAED;;;OAGG;IACI,GAAG;QACN,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAE5C,KAAK,MAAM,SAAS,IAAI,OAAO,EAAE,CAAC;YAC9B,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAEzD,2CAA2C;YAC3C,MAAM,cAAc,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;gBAC5C,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAClB,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,qDAAqD,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAClG,CAAC,CAAC,CAAC;YAEH,gCAAgC;YAChC,cAAc,EAAE,CAAC;QACrB,CAAC;IACL,CAAC;CACJ"}
|