@wuyanbin/ai-code-review-cli-remote 1.0.27 → 1.0.29
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/core/context.d.ts.map +1 -1
- package/dist/core/context.js +8 -2
- package/dist/core/context.js.map +1 -1
- package/dist/core/diff.d.ts +22 -0
- package/dist/core/diff.d.ts.map +1 -1
- package/dist/core/diff.js +91 -16
- package/dist/core/diff.js.map +1 -1
- package/dist/core/incremental.d.ts +41 -0
- package/dist/core/incremental.d.ts.map +1 -1
- package/dist/core/incremental.js +285 -68
- package/dist/core/incremental.js.map +1 -1
- package/dist/core/prompt.d.ts.map +1 -1
- package/dist/core/prompt.js +5 -1
- package/dist/core/prompt.js.map +1 -1
- package/dist/core/reviewer.d.ts.map +1 -1
- package/dist/core/reviewer.js +163 -21
- package/dist/core/reviewer.js.map +1 -1
- package/dist/gitlab/api.d.ts +21 -0
- package/dist/gitlab/api.d.ts.map +1 -1
- package/dist/gitlab/api.js +33 -1
- package/dist/gitlab/api.js.map +1 -1
- package/dist/index.js +0 -0
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +32 -12
- package/dist/runner.js.map +1 -1
- package/package.json +4 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/core/context.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/core/context.ts"],"names":[],"mappings":"AAqBA,MAAM,WAAW,oBAAoB;IACnC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB;AAyID,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,MAAM,CAAC,CAUjB"}
|
package/dist/core/context.js
CHANGED
|
@@ -15,7 +15,8 @@ const RULE_FILES = [
|
|
|
15
15
|
"docs/architecture.md",
|
|
16
16
|
];
|
|
17
17
|
const MAX_RULE_BYTES = 16000;
|
|
18
|
-
|
|
18
|
+
// 每行 `[ADD] ` / `[CTX] ` 标记额外占用约 6 字节,预算相应上调以保持注入的源码行数
|
|
19
|
+
const MAX_SOURCE_BYTES = 40000;
|
|
19
20
|
const SOURCE_WINDOW_RADIUS = 12;
|
|
20
21
|
const MAX_CONTEXT_FILES = 8;
|
|
21
22
|
function truncateByBytes(value, maxBytes) {
|
|
@@ -91,6 +92,7 @@ async function readRuleContext(cwd) {
|
|
|
91
92
|
}
|
|
92
93
|
function buildLineWindow(file, content, changedLines) {
|
|
93
94
|
const lines = content.split("\n");
|
|
95
|
+
const addedLines = new Set(changedLines);
|
|
94
96
|
const windows = [];
|
|
95
97
|
for (const line of changedLines.slice(0, 12)) {
|
|
96
98
|
const start = Math.max(1, line - SOURCE_WINDOW_RADIUS);
|
|
@@ -108,7 +110,11 @@ function buildLineWindow(file, content, changedLines) {
|
|
|
108
110
|
const chunks = windows.map(({ start, end }) => {
|
|
109
111
|
const numbered = lines
|
|
110
112
|
.slice(start - 1, end)
|
|
111
|
-
.map((line, index) =>
|
|
113
|
+
.map((line, index) => {
|
|
114
|
+
const lineNumber = start + index;
|
|
115
|
+
const kind = addedLines.has(lineNumber) ? "[ADD]" : "[CTX]";
|
|
116
|
+
return `${kind} ${String(lineNumber).padStart(4, " ")} | ${line}`;
|
|
117
|
+
})
|
|
112
118
|
.join("\n");
|
|
113
119
|
return `lines ${start}-${end}\n${numbered}`;
|
|
114
120
|
});
|
package/dist/core/context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/core/context.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/core/context.ts"],"names":[],"mappings":"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"}
|
package/dist/core/diff.d.ts
CHANGED
|
@@ -16,5 +16,27 @@ export declare function collectAddedLines(diff: string): Map<string, AddedLine[]
|
|
|
16
16
|
export declare function getChangedFiles(diff: string): string[];
|
|
17
17
|
export declare function splitDiffByMaxBytes(diff: string, maxBytes: number): string[];
|
|
18
18
|
export declare function buildAddedLinesIndexText(diff: string, maxLines?: number): string;
|
|
19
|
+
export interface CommentAlignmentStats {
|
|
20
|
+
acceptedByLine: number;
|
|
21
|
+
repairedByCode: number;
|
|
22
|
+
rejectedMissingCode: number;
|
|
23
|
+
rejectedNoAddedLines: number;
|
|
24
|
+
rejectedConflictingEvidence: number;
|
|
25
|
+
rejectedAmbiguousCode: number;
|
|
26
|
+
rejectedUngroundedCode: number;
|
|
27
|
+
}
|
|
28
|
+
export interface CommentAlignmentResult {
|
|
29
|
+
comments: AIComment[];
|
|
30
|
+
stats: CommentAlignmentStats;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Align model comments only when file, line, and code provide enough evidence.
|
|
34
|
+
*
|
|
35
|
+
* A valid added line plus matching code is accepted. An invalid line may be
|
|
36
|
+
* repaired only when code uniquely matches one added line. Every other case is
|
|
37
|
+
* rejected rather than moved to an arbitrary nearby line.
|
|
38
|
+
*/
|
|
39
|
+
export declare function alignCommentsToDiffAddedLinesDetailed(diff: string, comments: AIComment[]): CommentAlignmentResult;
|
|
40
|
+
/** Compatibility wrapper for callers that only need accepted comments. */
|
|
19
41
|
export declare function alignCommentsToDiffAddedLines(diff: string, comments: AIComment[]): AIComment[];
|
|
20
42
|
//# sourceMappingURL=diff.d.ts.map
|
package/dist/core/diff.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/core/diff.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAG1C,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAgBpD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAqBlF;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CA2CxE;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAatD;AAyBD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAuB5E;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,SAAO,GAAG,MAAM,CAU9E;AAED,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,SAAS,EAAE,GACpB,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/core/diff.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAG1C,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAgBpD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAqBlF;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CA2CxE;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAatD;AAyBD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAuB5E;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,SAAO,GAAG,MAAM,CAU9E;AAED,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,2BAA2B,EAAE,MAAM,CAAC;IACpC,qBAAqB,EAAE,MAAM,CAAC;IAC9B,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtB,KAAK,EAAE,qBAAqB,CAAC;CAC9B;AAoCD;;;;;;GAMG;AACH,wBAAgB,qCAAqC,CACnD,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,SAAS,EAAE,GACpB,sBAAsB,CA0DxB;AAED,0EAA0E;AAC1E,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,SAAS,EAAE,GACpB,SAAS,EAAE,CAEb"}
|
package/dist/core/diff.js
CHANGED
|
@@ -7,6 +7,7 @@ exports.collectAddedLines = collectAddedLines;
|
|
|
7
7
|
exports.getChangedFiles = getChangedFiles;
|
|
8
8
|
exports.splitDiffByMaxBytes = splitDiffByMaxBytes;
|
|
9
9
|
exports.buildAddedLinesIndexText = buildAddedLinesIndexText;
|
|
10
|
+
exports.alignCommentsToDiffAddedLinesDetailed = alignCommentsToDiffAddedLinesDetailed;
|
|
10
11
|
exports.alignCommentsToDiffAddedLines = alignCommentsToDiffAddedLines;
|
|
11
12
|
const default_ignore_1 = require("./default-ignore");
|
|
12
13
|
function globToRegExp(pattern) {
|
|
@@ -171,25 +172,99 @@ function buildAddedLinesIndexText(diff, maxLines = 5000) {
|
|
|
171
172
|
}
|
|
172
173
|
return rows.length ? rows.join("\n") : "(diff 中未检测到可评论的新增行)";
|
|
173
174
|
}
|
|
174
|
-
function
|
|
175
|
+
function emptyAlignmentStats() {
|
|
176
|
+
return {
|
|
177
|
+
acceptedByLine: 0,
|
|
178
|
+
repairedByCode: 0,
|
|
179
|
+
rejectedMissingCode: 0,
|
|
180
|
+
rejectedNoAddedLines: 0,
|
|
181
|
+
rejectedConflictingEvidence: 0,
|
|
182
|
+
rejectedAmbiguousCode: 0,
|
|
183
|
+
rejectedUngroundedCode: 0,
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* 模型经常把 prompt 里渲染出的行前缀一并复制进 `code`(diff 的 `+`、源码窗口的
|
|
188
|
+
* `[ADD] 12 | `、可评论行索引的 `[file:12] `)。这里只反解析本 CLI 自己渲染的
|
|
189
|
+
* 已知前缀,逐级产出候选串;原样匹配始终优先,因此不会放宽精度语义。
|
|
190
|
+
*/
|
|
191
|
+
function modelCodeVariants(code) {
|
|
192
|
+
const variants = new Set();
|
|
193
|
+
const base = code.trim();
|
|
194
|
+
if (base)
|
|
195
|
+
variants.add(base);
|
|
196
|
+
const withoutRenderPrefix = base
|
|
197
|
+
.replace(/^\[(?:ADD|CTX)\]\s*\d+\s*\|\s?/, "")
|
|
198
|
+
.replace(/^\[[^\]\s]+:\d+\]\s?/, "")
|
|
199
|
+
.trim();
|
|
200
|
+
if (withoutRenderPrefix)
|
|
201
|
+
variants.add(withoutRenderPrefix);
|
|
202
|
+
const withoutDiffMarker = withoutRenderPrefix.replace(/^\+/, "").trim();
|
|
203
|
+
if (withoutDiffMarker)
|
|
204
|
+
variants.add(withoutDiffMarker);
|
|
205
|
+
return [...variants];
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Align model comments only when file, line, and code provide enough evidence.
|
|
209
|
+
*
|
|
210
|
+
* A valid added line plus matching code is accepted. An invalid line may be
|
|
211
|
+
* repaired only when code uniquely matches one added line. Every other case is
|
|
212
|
+
* rejected rather than moved to an arbitrary nearby line.
|
|
213
|
+
*/
|
|
214
|
+
function alignCommentsToDiffAddedLinesDetailed(diff, comments) {
|
|
175
215
|
const added = collectAddedLines(diff);
|
|
176
|
-
|
|
216
|
+
const aligned = [];
|
|
217
|
+
const stats = emptyAlignmentStats();
|
|
218
|
+
for (const comment of comments) {
|
|
177
219
|
const file = normalizePath(comment.file);
|
|
220
|
+
const code = comment.code?.trim();
|
|
221
|
+
if (!code) {
|
|
222
|
+
stats.rejectedMissingCode += 1;
|
|
223
|
+
continue;
|
|
224
|
+
}
|
|
178
225
|
const candidates = added.get(file);
|
|
179
|
-
if (!candidates?.length)
|
|
180
|
-
|
|
226
|
+
if (!candidates?.length) {
|
|
227
|
+
stats.rejectedNoAddedLines += 1;
|
|
228
|
+
continue;
|
|
229
|
+
}
|
|
230
|
+
const variants = modelCodeVariants(code);
|
|
181
231
|
const exact = candidates.find((item) => item.line === comment.line);
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
232
|
+
if (exact) {
|
|
233
|
+
if (!variants.includes(exact.content.trim())) {
|
|
234
|
+
stats.rejectedConflictingEvidence += 1;
|
|
235
|
+
continue;
|
|
236
|
+
}
|
|
237
|
+
stats.acceptedByLine += 1;
|
|
238
|
+
aligned.push({
|
|
239
|
+
...comment,
|
|
240
|
+
file,
|
|
241
|
+
line: exact.line,
|
|
242
|
+
code: exact.content,
|
|
243
|
+
});
|
|
244
|
+
continue;
|
|
245
|
+
}
|
|
246
|
+
const codeMatches = candidates.filter((item) => variants.includes(item.content.trim()));
|
|
247
|
+
if (codeMatches.length === 1) {
|
|
248
|
+
const [chosen] = codeMatches;
|
|
249
|
+
stats.repairedByCode += 1;
|
|
250
|
+
aligned.push({
|
|
251
|
+
...comment,
|
|
252
|
+
file,
|
|
253
|
+
line: chosen.line,
|
|
254
|
+
code: chosen.content,
|
|
255
|
+
});
|
|
256
|
+
continue;
|
|
257
|
+
}
|
|
258
|
+
if (codeMatches.length > 1) {
|
|
259
|
+
stats.rejectedAmbiguousCode += 1;
|
|
260
|
+
continue;
|
|
261
|
+
}
|
|
262
|
+
stats.rejectedUngroundedCode += 1;
|
|
263
|
+
}
|
|
264
|
+
return { comments: aligned, stats };
|
|
265
|
+
}
|
|
266
|
+
/** Compatibility wrapper for callers that only need accepted comments. */
|
|
267
|
+
function alignCommentsToDiffAddedLines(diff, comments) {
|
|
268
|
+
return alignCommentsToDiffAddedLinesDetailed(diff, comments).comments;
|
|
194
269
|
}
|
|
195
270
|
//# sourceMappingURL=diff.js.map
|
package/dist/core/diff.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/core/diff.ts"],"names":[],"mappings":";;AAGA,oCAgBC;AAOD,gDAqBC;AAQD,sCAEC;AAED,8CA2CC;AAED,0CAaC;AAyBD,kDAuBC;AAED,4DAUC;
|
|
1
|
+
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/core/diff.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,33 @@
|
|
|
1
1
|
import type { AIComment, KnownFinding, ReconciledFinding } from "../types";
|
|
2
|
+
export interface ChangedLineRange {
|
|
3
|
+
start: number;
|
|
4
|
+
end: number;
|
|
5
|
+
}
|
|
6
|
+
export interface IncrementalChangeScope {
|
|
7
|
+
changedFiles: Set<string>;
|
|
8
|
+
/** `git diff --unified=3` 在新文件一侧的 hunk 行区间。 */
|
|
9
|
+
hunks: Map<string, ChangedLineRange[]>;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* 解析 lastReviewedSha..当前评审 head 的 unified diff。hunk header 的新文件范围已经
|
|
13
|
+
* 包含 `--unified=3` 上下文,可直接用作“历史 finding 附近发生修改”的边界。
|
|
14
|
+
*/
|
|
15
|
+
export declare function parseIncrementalChangeScope(diff: string): IncrementalChangeScope;
|
|
16
|
+
export declare function isLineInChangedHunk(scope: IncrementalChangeScope, file: string, line: number): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* “附近”的上下文半径。默认 3 行;修复常落在锚点更远处的项目可通过
|
|
19
|
+
* `AICR_INCREMENTAL_CONTEXT` 放大,使语义修复更容易被判定为已修改。
|
|
20
|
+
*/
|
|
21
|
+
export declare function resolveIncrementalContextLines(env: NodeJS.ProcessEnv): number;
|
|
22
|
+
/**
|
|
23
|
+
* 加载 sinceSha..HEAD 的文件集合与带上下文 hunk。sha 不存在、force-push、
|
|
24
|
+
* 浅克隆等任何失败均返回 null,由对账层执行保守降级。
|
|
25
|
+
*/
|
|
26
|
+
export declare function loadIncrementalChangeScope(sinceSha: string, options?: {
|
|
27
|
+
cwd?: string;
|
|
28
|
+
headSha?: string;
|
|
29
|
+
contextLines?: number;
|
|
30
|
+
}): Promise<IncrementalChangeScope | null>;
|
|
2
31
|
export interface ReconcileInput {
|
|
3
32
|
/** 平台已知 findings(OPEN / WONT_FIX) */
|
|
4
33
|
known: KnownFinding[];
|
|
@@ -11,6 +40,11 @@ export interface ReconcileInput {
|
|
|
11
40
|
* null 表示无法计算(force-push / 浅克隆),新 finding 一律 blocking(安全优先)。
|
|
12
41
|
*/
|
|
13
42
|
changedFiles: Set<string> | null;
|
|
43
|
+
/**
|
|
44
|
+
* 自上次评审以来的新侧 hunk 范围;undefined 兼容旧调用,null 表示范围不可用。
|
|
45
|
+
* 历史 finding 只在可靠锚点落入 hunk 时进行修复重验证。
|
|
46
|
+
*/
|
|
47
|
+
changeScope?: IncrementalChangeScope | null;
|
|
14
48
|
/** 首轮评审(无 lastReviewedSha):所有新 finding 均为 baseline,blocking */
|
|
15
49
|
baseline: boolean;
|
|
16
50
|
/** GitLab 上被人工 resolve 的 fingerprint 集合 */
|
|
@@ -29,6 +63,12 @@ export interface ReconcileResult {
|
|
|
29
63
|
fixed: number;
|
|
30
64
|
wontFix: number;
|
|
31
65
|
dropped: number;
|
|
66
|
+
keptReported: number;
|
|
67
|
+
keptUntouched: number;
|
|
68
|
+
fixedRevalidated: number;
|
|
69
|
+
fixedMissingAnchor: number;
|
|
70
|
+
severityMigrated: number;
|
|
71
|
+
ambiguousAnchor: number;
|
|
32
72
|
};
|
|
33
73
|
}
|
|
34
74
|
/**
|
|
@@ -46,5 +86,6 @@ export declare function reconcileFindings(input: ReconcileInput): ReconcileResul
|
|
|
46
86
|
*/
|
|
47
87
|
export declare function listChangedFiles(sinceSha: string, options?: {
|
|
48
88
|
cwd?: string;
|
|
89
|
+
headSha?: string;
|
|
49
90
|
}): Promise<Set<string> | null>;
|
|
50
91
|
//# sourceMappingURL=incremental.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"incremental.d.ts","sourceRoot":"","sources":["../../src/core/incremental.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,SAAS,EACT,YAAY,EACZ,iBAAiB,EAClB,MAAM,UAAU,CAAC;AAMlB,MAAM,WAAW,cAAc;IAC7B,qCAAqC;IACrC,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,sBAAsB;IACtB,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IACjC,+DAA+D;IAC/D,QAAQ,EAAE,OAAO,CAAC;IAClB,2CAA2C;IAC3C,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,kBAAkB;IAClB,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,8BAA8B;IAC9B,cAAc,EAAE,SAAS,EAAE,CAAC;IAC5B,+BAA+B;IAC/B,gBAAgB,EAAE,SAAS,EAAE,CAAC;IAC9B,KAAK,EAAE;QACL,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"incremental.d.ts","sourceRoot":"","sources":["../../src/core/incremental.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,SAAS,EACT,YAAY,EACZ,iBAAiB,EAClB,MAAM,UAAU,CAAC;AAMlB,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,+CAA+C;IAC/C,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;CACxC;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,MAAM,GACX,sBAAsB,CAuCxB;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,sBAAsB,EAC7B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,OAAO,CAKT;AAKD;;;GAGG;AACH,wBAAgB,8BAA8B,CAC5C,GAAG,EAAE,MAAM,CAAC,UAAU,GACrB,MAAM,CAQR;AAiDD;;;GAGG;AACH,wBAAsB,0BAA0B,CAC9C,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAO,GACtE,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,CA8BxC;AAED,MAAM,WAAW,cAAc;IAC7B,qCAAqC;IACrC,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,sBAAsB;IACtB,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IACjC;;;OAGG;IACH,WAAW,CAAC,EAAE,sBAAsB,GAAG,IAAI,CAAC;IAC5C,+DAA+D;IAC/D,QAAQ,EAAE,OAAO,CAAC;IAClB,2CAA2C;IAC3C,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,kBAAkB;IAClB,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,8BAA8B;IAC9B,cAAc,EAAE,SAAS,EAAE,CAAC;IAC5B,+BAA+B;IAC/B,gBAAgB,EAAE,SAAS,EAAE,CAAC;IAC9B,KAAK,EAAE;QACL,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;QACtB,gBAAgB,EAAE,MAAM,CAAC;QACzB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,gBAAgB,EAAE,MAAM,CAAC;QACzB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAuED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,cAAc,GAAG,eAAe,CA6MxE;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/C,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAG7B"}
|