arc-1 0.9.13 → 0.9.15
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/README.md +17 -4
- package/dist/adt/class-structure.d.ts +1 -1
- package/dist/adt/class-structure.js +1 -1
- package/dist/adt/client.d.ts +16 -3
- package/dist/adt/client.d.ts.map +1 -1
- package/dist/adt/client.js +40 -35
- package/dist/adt/client.js.map +1 -1
- package/dist/adt/ddic-xml.d.ts +9 -0
- package/dist/adt/ddic-xml.d.ts.map +1 -1
- package/dist/adt/ddic-xml.js +49 -53
- package/dist/adt/ddic-xml.js.map +1 -1
- package/dist/adt/devtools.d.ts.map +1 -1
- package/dist/adt/devtools.js +46 -15
- package/dist/adt/devtools.js.map +1 -1
- package/dist/adt/fm-signature.d.ts +1 -1
- package/dist/adt/fm-signature.js +1 -1
- package/dist/adt/rap-generate.js +1 -1
- package/dist/adt/rap-generate.js.map +1 -1
- package/dist/adt/rap-handlers.d.ts +1 -1
- package/dist/adt/rap-handlers.js +1 -1
- package/dist/adt/refactoring.d.ts.map +1 -1
- package/dist/adt/refactoring.js +11 -14
- package/dist/adt/refactoring.js.map +1 -1
- package/dist/adt/server-driven.d.ts +46 -2
- package/dist/adt/server-driven.d.ts.map +1 -1
- package/dist/adt/server-driven.js +13 -3
- package/dist/adt/server-driven.js.map +1 -1
- package/dist/adt/xml-parser.d.ts +8 -1
- package/dist/adt/xml-parser.d.ts.map +1 -1
- package/dist/adt/xml-parser.js +57 -49
- package/dist/adt/xml-parser.js.map +1 -1
- package/dist/authz/policy.d.ts +1 -1
- package/dist/authz/policy.js +1 -1
- package/dist/cache/cache.d.ts +1 -0
- package/dist/cache/cache.d.ts.map +1 -1
- package/dist/cache/cache.js.map +1 -1
- package/dist/cache/inactive-list-cache.d.ts +4 -4
- package/dist/cache/inactive-list-cache.d.ts.map +1 -1
- package/dist/cache/inactive-list-cache.js +19 -12
- package/dist/cache/inactive-list-cache.js.map +1 -1
- package/dist/cache/memory.d.ts +1 -0
- package/dist/cache/memory.d.ts.map +1 -1
- package/dist/cache/memory.js +3 -0
- package/dist/cache/memory.js.map +1 -1
- package/dist/cache/sqlite.d.ts +1 -0
- package/dist/cache/sqlite.d.ts.map +1 -1
- package/dist/cache/sqlite.js +3 -0
- package/dist/cache/sqlite.js.map +1 -1
- package/dist/cache/warmup.d.ts.map +1 -1
- package/dist/cache/warmup.js +85 -38
- package/dist/cache/warmup.js.map +1 -1
- package/dist/cli.d.ts +1 -1
- package/dist/cli.js +2 -2
- package/dist/cli.js.map +1 -1
- package/dist/context/compressor.d.ts.map +1 -1
- package/dist/context/compressor.js +22 -13
- package/dist/context/compressor.js.map +1 -1
- package/dist/context/contract.d.ts.map +1 -1
- package/dist/context/contract.js +4 -3
- package/dist/context/contract.js.map +1 -1
- package/dist/context/deps.d.ts.map +1 -1
- package/dist/context/deps.js +3 -2
- package/dist/context/deps.js.map +1 -1
- package/dist/context/grep.d.ts +3 -1
- package/dist/context/grep.d.ts.map +1 -1
- package/dist/context/grep.js +83 -1
- package/dist/context/grep.js.map +1 -1
- package/dist/context/method-surgery.d.ts.map +1 -1
- package/dist/context/method-surgery.js +3 -2
- package/dist/context/method-surgery.js.map +1 -1
- package/dist/handlers/activate.d.ts +25 -0
- package/dist/handlers/activate.d.ts.map +1 -0
- package/dist/handlers/activate.js +334 -0
- package/dist/handlers/activate.js.map +1 -0
- package/dist/handlers/cache-security.d.ts +22 -0
- package/dist/handlers/cache-security.d.ts.map +1 -0
- package/dist/handlers/cache-security.js +51 -0
- package/dist/handlers/cache-security.js.map +1 -0
- package/dist/handlers/cds-hints.d.ts +26 -0
- package/dist/handlers/cds-hints.d.ts.map +1 -0
- package/dist/handlers/cds-hints.js +380 -0
- package/dist/handlers/cds-hints.js.map +1 -0
- package/dist/handlers/context.d.ts +10 -0
- package/dist/handlers/context.d.ts.map +1 -0
- package/dist/handlers/context.js +344 -0
- package/dist/handlers/context.js.map +1 -0
- package/dist/handlers/diagnose.d.ts +8 -0
- package/dist/handlers/diagnose.d.ts.map +1 -0
- package/dist/handlers/diagnose.js +274 -0
- package/dist/handlers/diagnose.js.map +1 -0
- package/dist/handlers/dispatch.d.ts +39 -0
- package/dist/handlers/dispatch.d.ts.map +1 -0
- package/dist/handlers/dispatch.js +640 -0
- package/dist/handlers/dispatch.js.map +1 -0
- package/dist/handlers/feature-cache.d.ts +26 -0
- package/dist/handlers/feature-cache.d.ts.map +1 -0
- package/dist/handlers/feature-cache.js +45 -0
- package/dist/handlers/feature-cache.js.map +1 -0
- package/dist/handlers/git.d.ts +9 -0
- package/dist/handlers/git.d.ts.map +1 -0
- package/dist/handlers/git.js +227 -0
- package/dist/handlers/git.js.map +1 -0
- package/dist/handlers/lint.d.ts +9 -0
- package/dist/handlers/lint.d.ts.map +1 -0
- package/dist/handlers/lint.js +82 -0
- package/dist/handlers/lint.js.map +1 -0
- package/dist/handlers/manage.d.ts +10 -0
- package/dist/handlers/manage.d.ts.map +1 -0
- package/dist/handlers/manage.js +375 -0
- package/dist/handlers/manage.js.map +1 -0
- package/dist/handlers/navigate.d.ts +8 -0
- package/dist/handlers/navigate.d.ts.map +1 -0
- package/dist/handlers/navigate.js +188 -0
- package/dist/handlers/navigate.js.map +1 -0
- package/dist/handlers/object-types.d.ts +103 -0
- package/dist/handlers/object-types.d.ts.map +1 -0
- package/dist/handlers/object-types.js +476 -0
- package/dist/handlers/object-types.js.map +1 -0
- package/dist/handlers/query.d.ts +7 -0
- package/dist/handlers/query.d.ts.map +1 -0
- package/dist/handlers/query.js +190 -0
- package/dist/handlers/query.js.map +1 -0
- package/dist/handlers/read.d.ts +18 -0
- package/dist/handlers/read.d.ts.map +1 -0
- package/dist/handlers/read.js +581 -0
- package/dist/handlers/read.js.map +1 -0
- package/dist/handlers/schemas.d.ts +28 -26
- package/dist/handlers/schemas.d.ts.map +1 -1
- package/dist/handlers/schemas.js +17 -153
- package/dist/handlers/schemas.js.map +1 -1
- package/dist/handlers/search.d.ts +24 -0
- package/dist/handlers/search.d.ts.map +1 -0
- package/dist/handlers/search.js +208 -0
- package/dist/handlers/search.js.map +1 -0
- package/dist/handlers/shared.d.ts +19 -0
- package/dist/handlers/shared.d.ts.map +1 -0
- package/dist/handlers/shared.js +23 -0
- package/dist/handlers/shared.js.map +1 -0
- package/dist/handlers/tool-registry.d.ts +44 -0
- package/dist/handlers/tool-registry.d.ts.map +1 -0
- package/dist/handlers/tool-registry.js +152 -0
- package/dist/handlers/tool-registry.js.map +1 -0
- package/dist/handlers/tools.d.ts +9 -0
- package/dist/handlers/tools.d.ts.map +1 -1
- package/dist/handlers/tools.js +40 -141
- package/dist/handlers/tools.js.map +1 -1
- package/dist/handlers/transport.d.ts +8 -0
- package/dist/handlers/transport.d.ts.map +1 -0
- package/dist/handlers/transport.js +281 -0
- package/dist/handlers/transport.js.map +1 -0
- package/dist/handlers/write/class-surgery.d.ts +18 -0
- package/dist/handlers/write/class-surgery.d.ts.map +1 -0
- package/dist/handlers/write/class-surgery.js +366 -0
- package/dist/handlers/write/class-surgery.js.map +1 -0
- package/dist/handlers/write/context.d.ts +43 -0
- package/dist/handlers/write/context.d.ts.map +1 -0
- package/dist/handlers/write/context.js +5 -0
- package/dist/handlers/write/context.js.map +1 -0
- package/dist/handlers/write/create.d.ts +8 -0
- package/dist/handlers/write/create.d.ts.map +1 -0
- package/dist/handlers/write/create.js +603 -0
- package/dist/handlers/write/create.js.map +1 -0
- package/dist/handlers/write/rap.d.ts +8 -0
- package/dist/handlers/write/rap.d.ts.map +1 -0
- package/dist/handlers/write/rap.js +235 -0
- package/dist/handlers/write/rap.js.map +1 -0
- package/dist/handlers/write/update-delete.d.ts +8 -0
- package/dist/handlers/write/update-delete.d.ts.map +1 -0
- package/dist/handlers/write/update-delete.js +182 -0
- package/dist/handlers/write/update-delete.js.map +1 -0
- package/dist/handlers/write-helpers.d.ts +155 -0
- package/dist/handlers/write-helpers.d.ts.map +1 -0
- package/dist/handlers/write-helpers.js +859 -0
- package/dist/handlers/write-helpers.js.map +1 -0
- package/dist/handlers/write.d.ts +16 -0
- package/dist/handlers/write.d.ts.map +1 -0
- package/dist/handlers/write.js +210 -0
- package/dist/handlers/write.js.map +1 -0
- package/dist/handlers/zod-errors.d.ts +1 -1
- package/dist/handlers/zod-errors.js +1 -1
- package/dist/lint/abaplint-config-cache.d.ts +5 -0
- package/dist/lint/abaplint-config-cache.d.ts.map +1 -0
- package/dist/lint/abaplint-config-cache.js +29 -0
- package/dist/lint/abaplint-config-cache.js.map +1 -0
- package/dist/lint/config-builder.d.ts.map +1 -1
- package/dist/lint/config-builder.js +3 -4
- package/dist/lint/config-builder.js.map +1 -1
- package/dist/lint/lint.d.ts +1 -1
- package/dist/lint/lint.d.ts.map +1 -1
- package/dist/lint/lint.js +3 -2
- package/dist/lint/lint.js.map +1 -1
- package/dist/server/config.d.ts.map +1 -1
- package/dist/server/config.js +22 -8
- package/dist/server/config.js.map +1 -1
- package/dist/server/mcp-rate-limit.d.ts +1 -1
- package/dist/server/mcp-rate-limit.js +1 -1
- package/dist/server/server.d.ts +1 -1
- package/dist/server/server.js +3 -2
- package/dist/server/server.js.map +1 -1
- package/package.json +15 -10
- package/dist/handlers/intent.d.ts +0 -144
- package/dist/handlers/intent.d.ts.map +0 -1
- package/dist/handlers/intent.js +0 -6782
- package/dist/handlers/intent.js.map +0 -1
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SAPQuery handler — freestyle SQL execution with IN-list chunking + SQL literal parsing.
|
|
3
|
+
*/
|
|
4
|
+
import { AdtApiError } from '../adt/errors.js';
|
|
5
|
+
import { errorResult, hasSqlParserSignature, textResult } from './shared.js';
|
|
6
|
+
function classifySapQueryParserError(err, sql) {
|
|
7
|
+
if (err.statusCode !== 400)
|
|
8
|
+
return undefined;
|
|
9
|
+
const combined = `${err.message}\n${err.responseBody ?? ''}`;
|
|
10
|
+
if (!hasSqlParserSignature(combined))
|
|
11
|
+
return undefined;
|
|
12
|
+
const hints = [
|
|
13
|
+
'ADT freestyle SQL parser rejected this query on this backend/version.',
|
|
14
|
+
'Submit exactly one SELECT statement (no semicolons, no multi-statement scripts).',
|
|
15
|
+
'Remove ABAP target clauses from SQL text (INTO, APPENDING, PACKAGE SIZE).',
|
|
16
|
+
];
|
|
17
|
+
if (/\bJOIN\b/i.test(sql)) {
|
|
18
|
+
hints.push('JOIN parsing can fail on some systems (SAP Note 3605050); split into staged single-table queries.');
|
|
19
|
+
}
|
|
20
|
+
if (/\bINTO\b|\bAPPENDING\b|\bPACKAGE\s+SIZE\b/i.test(sql)) {
|
|
21
|
+
hints.push('Use the MCP maxRows parameter for row limits instead of ABAP target-table clauses.');
|
|
22
|
+
}
|
|
23
|
+
return `${err.message}\n\nHint: ${hints.join(' ')}`;
|
|
24
|
+
}
|
|
25
|
+
const SAPQUERY_IN_LIST_CHUNK_SIZE = 8;
|
|
26
|
+
function planSimpleInListChunking(sql, chunkSize = SAPQUERY_IN_LIST_CHUNK_SIZE) {
|
|
27
|
+
const maskedSql = maskSqlStringLiterals(sql);
|
|
28
|
+
if (maskedSql.includes(';'))
|
|
29
|
+
return undefined;
|
|
30
|
+
if (countSelectKeywords(maskedSql) !== 1)
|
|
31
|
+
return undefined;
|
|
32
|
+
const matches = [...maskedSql.matchAll(/\b[A-Za-z_][A-Za-z0-9_~.]*\s+IN\s*\(/gi)];
|
|
33
|
+
if (matches.length !== 1)
|
|
34
|
+
return undefined;
|
|
35
|
+
const match = matches[0];
|
|
36
|
+
const matchText = match[0];
|
|
37
|
+
const fieldName = matchText.match(/^([A-Za-z_][A-Za-z0-9_~.]*)\s+IN\s*\(/i)?.[1];
|
|
38
|
+
if (!fieldName || fieldName.toUpperCase() === 'NOT')
|
|
39
|
+
return undefined;
|
|
40
|
+
const matchStart = match.index ?? 0;
|
|
41
|
+
const openParen = matchStart + matchText.lastIndexOf('(');
|
|
42
|
+
const closeParen = findMatchingParen(maskedSql, openParen);
|
|
43
|
+
if (closeParen < 0)
|
|
44
|
+
return undefined;
|
|
45
|
+
const literals = parseSingleQuotedLiteralList(sql.slice(openParen + 1, closeParen));
|
|
46
|
+
if (!literals || literals.length <= chunkSize)
|
|
47
|
+
return undefined;
|
|
48
|
+
const prefix = sql.slice(0, openParen + 1);
|
|
49
|
+
const suffix = sql.slice(closeParen);
|
|
50
|
+
const statements = [];
|
|
51
|
+
for (let i = 0; i < literals.length; i += chunkSize) {
|
|
52
|
+
statements.push(`${prefix}${literals.slice(i, i + chunkSize).join(', ')}${suffix}`);
|
|
53
|
+
}
|
|
54
|
+
return { statements };
|
|
55
|
+
}
|
|
56
|
+
function maskSqlStringLiterals(sql) {
|
|
57
|
+
let masked = '';
|
|
58
|
+
let inString = false;
|
|
59
|
+
for (let i = 0; i < sql.length; i++) {
|
|
60
|
+
const ch = sql[i];
|
|
61
|
+
if (ch === "'") {
|
|
62
|
+
if (inString && sql[i + 1] === "'") {
|
|
63
|
+
masked += ' ';
|
|
64
|
+
i++;
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
inString = !inString;
|
|
68
|
+
masked += ' ';
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
masked += inString ? ' ' : ch;
|
|
72
|
+
}
|
|
73
|
+
return masked;
|
|
74
|
+
}
|
|
75
|
+
function countSelectKeywords(maskedSql) {
|
|
76
|
+
return [...maskedSql.matchAll(/\bSELECT\b/gi)].length;
|
|
77
|
+
}
|
|
78
|
+
function findMatchingParen(text, openParen) {
|
|
79
|
+
let depth = 0;
|
|
80
|
+
for (let i = openParen; i < text.length; i++) {
|
|
81
|
+
if (text[i] === '(')
|
|
82
|
+
depth++;
|
|
83
|
+
if (text[i] === ')') {
|
|
84
|
+
depth--;
|
|
85
|
+
if (depth === 0)
|
|
86
|
+
return i;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return -1;
|
|
90
|
+
}
|
|
91
|
+
function parseSingleQuotedLiteralList(listText) {
|
|
92
|
+
const literals = [];
|
|
93
|
+
let i = 0;
|
|
94
|
+
let expectingValue = true;
|
|
95
|
+
while (i < listText.length) {
|
|
96
|
+
while (i < listText.length && /\s/.test(listText[i]))
|
|
97
|
+
i++;
|
|
98
|
+
if (i >= listText.length)
|
|
99
|
+
return expectingValue && literals.length > 0 ? undefined : literals;
|
|
100
|
+
if (!expectingValue || listText[i] !== "'")
|
|
101
|
+
return undefined;
|
|
102
|
+
const start = i;
|
|
103
|
+
i++;
|
|
104
|
+
let closed = false;
|
|
105
|
+
while (i < listText.length) {
|
|
106
|
+
if (listText[i] === "'") {
|
|
107
|
+
if (listText[i + 1] === "'") {
|
|
108
|
+
i += 2;
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
i++;
|
|
112
|
+
closed = true;
|
|
113
|
+
break;
|
|
114
|
+
}
|
|
115
|
+
i++;
|
|
116
|
+
}
|
|
117
|
+
if (!closed)
|
|
118
|
+
return undefined;
|
|
119
|
+
literals.push(listText.slice(start, i));
|
|
120
|
+
expectingValue = false;
|
|
121
|
+
while (i < listText.length && /\s/.test(listText[i]))
|
|
122
|
+
i++;
|
|
123
|
+
if (i >= listText.length)
|
|
124
|
+
return literals;
|
|
125
|
+
if (listText[i] !== ',')
|
|
126
|
+
return undefined;
|
|
127
|
+
i++;
|
|
128
|
+
expectingValue = true;
|
|
129
|
+
}
|
|
130
|
+
return expectingValue && literals.length > 0 ? undefined : literals;
|
|
131
|
+
}
|
|
132
|
+
async function runChunkedSapQuery(client, plan, maxRows) {
|
|
133
|
+
const rowLimit = Number.isFinite(maxRows) && maxRows > 0 ? Math.floor(maxRows) : 100;
|
|
134
|
+
const rows = [];
|
|
135
|
+
let columns = [];
|
|
136
|
+
for (const statement of plan.statements) {
|
|
137
|
+
const remaining = Math.max(0, rowLimit - rows.length);
|
|
138
|
+
if (remaining === 0)
|
|
139
|
+
break;
|
|
140
|
+
const chunk = await client.runQuery(statement, remaining);
|
|
141
|
+
if (columns.length === 0)
|
|
142
|
+
columns = chunk.columns;
|
|
143
|
+
rows.push(...chunk.rows);
|
|
144
|
+
}
|
|
145
|
+
return { columns, rows: rows.slice(0, rowLimit) };
|
|
146
|
+
}
|
|
147
|
+
export async function handleSAPQuery(client, args) {
|
|
148
|
+
const sql = String(args.sql ?? '');
|
|
149
|
+
const maxRows = Number(args.maxRows ?? 100);
|
|
150
|
+
const chunkPlan = planSimpleInListChunking(sql);
|
|
151
|
+
let chunkingAttempted = false;
|
|
152
|
+
try {
|
|
153
|
+
chunkingAttempted = chunkPlan != null;
|
|
154
|
+
const data = chunkPlan ? await runChunkedSapQuery(client, chunkPlan, maxRows) : await client.runQuery(sql, maxRows);
|
|
155
|
+
return textResult(JSON.stringify(data, null, 2));
|
|
156
|
+
}
|
|
157
|
+
catch (err) {
|
|
158
|
+
if (err instanceof AdtApiError && err.isNotFound) {
|
|
159
|
+
// Try to extract table name from SQL and suggest similar names
|
|
160
|
+
const tableMatch = sql.match(/FROM\s+["']?([A-Za-z0-9_/$]+)["']?/i);
|
|
161
|
+
if (tableMatch) {
|
|
162
|
+
const tableName = tableMatch[1];
|
|
163
|
+
try {
|
|
164
|
+
const suggestions = await client.searchObject(`${tableName}*`, 10);
|
|
165
|
+
const tableNames = suggestions
|
|
166
|
+
.filter((s) => s.objectType.startsWith('TABL') || s.objectType.startsWith('VIEW') || s.objectType.startsWith('DDLS'))
|
|
167
|
+
.map((s) => s.objectName)
|
|
168
|
+
.slice(0, 5);
|
|
169
|
+
if (tableNames.length > 0) {
|
|
170
|
+
return errorResult(`Table "${tableName}" not found.\n\nDid you mean: ${tableNames.join(', ')}?\n\nUse SAPSearch("${tableName}*") for more results, or discover tables with: SAPQuery(sql="SELECT tabname FROM dd02l WHERE tabname LIKE '%${tableName}%'")`);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
catch {
|
|
174
|
+
// Search failed — fall through to original error
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
if (err instanceof AdtApiError) {
|
|
179
|
+
let parserHint = classifySapQueryParserError(err, sql);
|
|
180
|
+
if (parserHint && chunkingAttempted) {
|
|
181
|
+
parserHint +=
|
|
182
|
+
'\nARC-1 already split this simple long IN list into smaller ADT freestyle queries; this backend still rejected one chunk. Reduce the query further or use staged named-table previews.';
|
|
183
|
+
}
|
|
184
|
+
if (parserHint)
|
|
185
|
+
return errorResult(parserHint);
|
|
186
|
+
}
|
|
187
|
+
throw err;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/handlers/query.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SAPRead handler — read ABAP source + DDIC metadata, version/draft resolution, grep, table
|
|
3
|
+
* preview. Exports version helpers shared with the write handler.
|
|
4
|
+
*/
|
|
5
|
+
import type { AdtClient } from '../adt/client.js';
|
|
6
|
+
import type { InactiveObject } from '../adt/types.js';
|
|
7
|
+
import type { CachingLayer } from '../cache/caching-layer.js';
|
|
8
|
+
import { type CacheSecurityContext } from './cache-security.js';
|
|
9
|
+
import { type ToolResult } from './shared.js';
|
|
10
|
+
export type SourceVersion = 'active' | 'inactive';
|
|
11
|
+
type RequestedSourceVersion = SourceVersion | 'auto';
|
|
12
|
+
export declare function resolveVersionAndDraftInfo(client: AdtClient, cachingLayer: CachingLayer | undefined, type: string, name: string, requestedVersion: RequestedSourceVersion, cacheSecurity: CacheSecurityContext): Promise<{
|
|
13
|
+
effectiveVersion: SourceVersion;
|
|
14
|
+
draft?: InactiveObject;
|
|
15
|
+
}>;
|
|
16
|
+
export declare function handleSAPRead(client: AdtClient, args: Record<string, unknown>, cachingLayer: CachingLayer | undefined, cacheSecurity: CacheSecurityContext): Promise<ToolResult>;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=read.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/handlers/read.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAoB,MAAM,kBAAkB,CAAC;AAOpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAK9D,OAAO,EAAE,KAAK,oBAAoB,EAA+C,MAAM,qBAAqB,CAAC;AAG7G,OAAO,EAAe,KAAK,UAAU,EAAc,MAAM,aAAa,CAAC;AAavE,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,UAAU,CAAC;AAClD,KAAK,sBAAsB,GAAG,aAAa,GAAG,MAAM,CAAC;AAuBrD,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,SAAS,EACjB,YAAY,EAAE,YAAY,GAAG,SAAS,EACtC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,sBAAsB,EACxC,aAAa,EAAE,oBAAoB,GAClC,OAAO,CAAC;IAAE,gBAAgB,EAAE,aAAa,CAAC;IAAC,KAAK,CAAC,EAAE,cAAc,CAAA;CAAE,CAAC,CA6BtE;AAcD,wBAAsB,aAAa,CACjC,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,YAAY,EAAE,YAAY,GAAG,SAAS,EACtC,aAAa,EAAE,oBAAoB,GAClC,OAAO,CAAC,UAAU,CAAC,CAkkBrB"}
|