@izagood/avcs 0.1.0 → 0.1.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/README.md +28 -8
- package/dist/api/repo.d.ts +12 -42
- package/dist/api/repo.d.ts.map +1 -1
- package/dist/api/repo.js +40 -87
- package/dist/api/repo.js.map +1 -1
- package/dist/merge/merge3.d.ts +46 -0
- package/dist/merge/merge3.d.ts.map +1 -0
- package/dist/merge/merge3.js +214 -0
- package/dist/merge/merge3.js.map +1 -0
- package/dist/objects/types.d.ts +9 -10
- package/dist/objects/types.d.ts.map +1 -1
- package/dist/reducer/reducer.d.ts +21 -28
- package/dist/reducer/reducer.d.ts.map +1 -1
- package/dist/reducer/reducer.js +65 -101
- package/dist/reducer/reducer.js.map +1 -1
- package/package.json +1 -1
- package/dist/semantic/contract.d.ts +0 -32
- package/dist/semantic/contract.d.ts.map +0 -1
- package/dist/semantic/contract.js +0 -150
- package/dist/semantic/contract.js.map +0 -1
- package/dist/semantic/symbols.d.ts +0 -45
- package/dist/semantic/symbols.d.ts.map +0 -1
- package/dist/semantic/symbols.js +0 -323
- package/dist/semantic/symbols.js.map +0 -1
package/dist/semantic/symbols.js
DELETED
|
@@ -1,323 +0,0 @@
|
|
|
1
|
-
// Phase 2: structured (symbol-granular) view of a source file.
|
|
2
|
-
//
|
|
3
|
-
// This is the seam that turns "same file" conflicts into "same symbol" conflicts.
|
|
4
|
-
// A file is parsed into an ordered list of spans — named top-level symbols and the
|
|
5
|
-
// gaps between them (imports, blank lines). Two operations that edit *different*
|
|
6
|
-
// symbols of the same file then occupy different conflict keys and auto-merge (L1),
|
|
7
|
-
// while two edits to the *same* symbol still contend.
|
|
8
|
-
//
|
|
9
|
-
// MVP scope: a brace/line scanner for TS/JS-shaped code. It is deliberately a
|
|
10
|
-
// pluggable `EntityIndexer` so a Tree-sitter backend can replace it per language
|
|
11
|
-
// without touching the reducer. It is approximate (well-formatted code), and falls
|
|
12
|
-
// back to whole-file semantics when a file does not parse into named symbols.
|
|
13
|
-
const DECL = /^(export\s+(default\s+)?)?(async\s+)?(function|class|interface|enum|namespace|type|const|let|var)\s+([A-Za-z0-9_$]+)/;
|
|
14
|
-
/** Top-level declaration kinds that own a brace-delimited body. */
|
|
15
|
-
const BRACE_FORMS = new Set(["function", "class", "interface", "enum", "namespace"]);
|
|
16
|
-
/**
|
|
17
|
-
* Split TS/JS source into symbol + gap spans. Brace depth is tracked across the
|
|
18
|
-
* whole text so nested braces inside a symbol don't end it early. Strings and line
|
|
19
|
-
* comments are handled well enough for ordinary code.
|
|
20
|
-
*/
|
|
21
|
-
function parse(content) {
|
|
22
|
-
const lines = content.split("\n");
|
|
23
|
-
const spans = [];
|
|
24
|
-
let gapBuf = [];
|
|
25
|
-
let gapIdx = 0;
|
|
26
|
-
const flushGap = () => {
|
|
27
|
-
if (gapBuf.length) {
|
|
28
|
-
spans.push({ kind: "gap", key: `@gap:${gapIdx++}`, text: gapBuf.join("\n") });
|
|
29
|
-
gapBuf = [];
|
|
30
|
-
}
|
|
31
|
-
};
|
|
32
|
-
let i = 0;
|
|
33
|
-
while (i < lines.length) {
|
|
34
|
-
const line = lines[i];
|
|
35
|
-
const m = DECL.exec(line.trim());
|
|
36
|
-
if (!m) {
|
|
37
|
-
gapBuf.push(line);
|
|
38
|
-
i++;
|
|
39
|
-
continue;
|
|
40
|
-
}
|
|
41
|
-
const keyword = m[4];
|
|
42
|
-
const name = m[5];
|
|
43
|
-
flushGap();
|
|
44
|
-
if (BRACE_FORMS.has(keyword) || /[{(]/.test(line)) {
|
|
45
|
-
// Consume lines until brace depth returns to 0 after having opened.
|
|
46
|
-
let depth = 0;
|
|
47
|
-
let opened = false;
|
|
48
|
-
const body = [];
|
|
49
|
-
while (i < lines.length) {
|
|
50
|
-
const l = lines[i];
|
|
51
|
-
body.push(l);
|
|
52
|
-
depth += braceDelta(l);
|
|
53
|
-
if (depth > 0)
|
|
54
|
-
opened = true;
|
|
55
|
-
i++;
|
|
56
|
-
if (opened && depth <= 0)
|
|
57
|
-
break;
|
|
58
|
-
if (!opened && /;\s*$/.test(l))
|
|
59
|
-
break; // e.g. `const x = 1;` with parens but no block
|
|
60
|
-
}
|
|
61
|
-
spans.push({ kind: "symbol", key: name, name, text: body.join("\n") });
|
|
62
|
-
}
|
|
63
|
-
else {
|
|
64
|
-
// Single-line / statement form (const/type/let), may span to a `;`.
|
|
65
|
-
const body = [];
|
|
66
|
-
while (i < lines.length) {
|
|
67
|
-
const l = lines[i];
|
|
68
|
-
body.push(l);
|
|
69
|
-
i++;
|
|
70
|
-
if (/;\s*$/.test(l) || !lines[i] || DECL.test((lines[i] ?? "").trim()))
|
|
71
|
-
break;
|
|
72
|
-
}
|
|
73
|
-
spans.push({ kind: "symbol", key: name, name, text: body.join("\n") });
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
flushGap();
|
|
77
|
-
return spans;
|
|
78
|
-
}
|
|
79
|
-
/** Net `{`+`(` minus `}`+`)` on a line, ignoring those in strings/line comments. */
|
|
80
|
-
function braceDelta(line) {
|
|
81
|
-
let depth = 0;
|
|
82
|
-
let str = null;
|
|
83
|
-
for (let j = 0; j < line.length; j++) {
|
|
84
|
-
const c = line[j];
|
|
85
|
-
if (str) {
|
|
86
|
-
if (c === "\\")
|
|
87
|
-
j++;
|
|
88
|
-
else if (c === str)
|
|
89
|
-
str = null;
|
|
90
|
-
continue;
|
|
91
|
-
}
|
|
92
|
-
if (c === '"' || c === "'" || c === "`")
|
|
93
|
-
str = c;
|
|
94
|
-
else if (c === "/" && line[j + 1] === "/")
|
|
95
|
-
break;
|
|
96
|
-
else if (c === "{")
|
|
97
|
-
depth++;
|
|
98
|
-
else if (c === "}")
|
|
99
|
-
depth--;
|
|
100
|
-
}
|
|
101
|
-
return depth;
|
|
102
|
-
}
|
|
103
|
-
function reassemble(spans) {
|
|
104
|
-
return spans.map((s) => s.text).join("\n");
|
|
105
|
-
}
|
|
106
|
-
export const tsIndexer = { language: "typescript", parse, reassemble };
|
|
107
|
-
/** List the symbol names in a file (stable ids), in source order. */
|
|
108
|
-
export function symbolNames(content, indexer = tsIndexer) {
|
|
109
|
-
return indexer.parse(content).filter((s) => s.kind === "symbol").map((s) => s.name);
|
|
110
|
-
}
|
|
111
|
-
/** A top-level declaration line starts at column 0 (no leading whitespace). This is the
|
|
112
|
-
* fallback used when the brace scanner fails to surface a symbol that nonetheless exists
|
|
113
|
-
* in the text — replacing its declaration in place instead of blindly appending a
|
|
114
|
-
* duplicate. Returns null if no top-level declaration of `name` is found. */
|
|
115
|
-
function replaceTopLevelDecl(content, name, newText) {
|
|
116
|
-
const lines = content.split("\n");
|
|
117
|
-
const topDeclName = (line) => {
|
|
118
|
-
if (!/^\S/.test(line))
|
|
119
|
-
return null; // must be column 0
|
|
120
|
-
const m = DECL.exec(line.trim());
|
|
121
|
-
return m && m[5] === name ? name : null;
|
|
122
|
-
};
|
|
123
|
-
let start = -1;
|
|
124
|
-
for (let i = 0; i < lines.length; i++)
|
|
125
|
-
if (topDeclName(lines[i]) === name) {
|
|
126
|
-
start = i;
|
|
127
|
-
break;
|
|
128
|
-
}
|
|
129
|
-
if (start === -1)
|
|
130
|
-
return null;
|
|
131
|
-
let end = lines.length;
|
|
132
|
-
for (let j = start + 1; j < lines.length; j++) {
|
|
133
|
-
const l = lines[j];
|
|
134
|
-
if (/^\S/.test(l) && DECL.test(l.trim())) {
|
|
135
|
-
end = j;
|
|
136
|
-
break;
|
|
137
|
-
} // next top-level decl
|
|
138
|
-
}
|
|
139
|
-
return [...lines.slice(0, start), newText, ...lines.slice(end)].join("\n");
|
|
140
|
-
}
|
|
141
|
-
/**
|
|
142
|
-
* Replace one symbol's text, returning the new file content. If the symbol does not
|
|
143
|
-
* exist, it is appended. Pure and deterministic.
|
|
144
|
-
*
|
|
145
|
-
* D5 duplicate-guard: when the brace scanner can't find the symbol as a span but a
|
|
146
|
-
* top-level declaration of that name DOES exist in the text (the scanner mis-parsed —
|
|
147
|
-
* e.g. a template literal containing `}`), blindly appending would create a SECOND
|
|
148
|
-
* definition of the symbol: a `set_symbol` meant to UPDATE silently duplicates instead.
|
|
149
|
-
* We fall back to a column-0 declaration scan and replace the existing decl in place. A
|
|
150
|
-
* genuinely-new symbol (no existing decl) is still appended.
|
|
151
|
-
*/
|
|
152
|
-
export function spliceSymbol(content, symbolName, newText, indexer = tsIndexer) {
|
|
153
|
-
const spans = indexer.parse(content);
|
|
154
|
-
const idx = spans.findIndex((s) => s.kind === "symbol" && s.name === symbolName);
|
|
155
|
-
if (idx !== -1) {
|
|
156
|
-
spans[idx] = { kind: "symbol", key: symbolName, name: symbolName, text: newText };
|
|
157
|
-
return indexer.reassemble(spans);
|
|
158
|
-
}
|
|
159
|
-
// Not found as a span. Avoid a duplicate definition if the decl actually exists.
|
|
160
|
-
const replaced = replaceTopLevelDecl(content, symbolName, newText);
|
|
161
|
-
if (replaced !== null)
|
|
162
|
-
return replaced;
|
|
163
|
-
spans.push({ kind: "symbol", key: symbolName, name: symbolName, text: newText });
|
|
164
|
-
return indexer.reassemble(spans);
|
|
165
|
-
}
|
|
166
|
-
const isIdChar = (c) => c >= "a" && c <= "z" || c >= "A" && c <= "Z" || c >= "0" && c <= "9" || c === "_" || c === "$";
|
|
167
|
-
/**
|
|
168
|
-
* M3 AST op: rename a top-level symbol — its declaration AND its references WITHIN
|
|
169
|
-
* the same file. Renames only whole-identifier occurrences in CODE, deliberately
|
|
170
|
-
* skipping strings, template-literal text, and comments (a regex `\bfrom\b` would
|
|
171
|
-
* also rewrite `from` inside a comment or a "from" string — silent corruption; D5).
|
|
172
|
-
* Template interpolations `${…}` are treated as code, so identifiers there ARE renamed.
|
|
173
|
-
* Cross-file references need real reference analysis (tree-sitter) — Track C. Pure.
|
|
174
|
-
*/
|
|
175
|
-
export function renameSymbol(content, from, to) {
|
|
176
|
-
if (!from || !to || from === to)
|
|
177
|
-
return content;
|
|
178
|
-
const stack = [{ k: "code", interp: false, depth: 0 }];
|
|
179
|
-
let out = "";
|
|
180
|
-
let i = 0;
|
|
181
|
-
const n = content.length;
|
|
182
|
-
while (i < n) {
|
|
183
|
-
const m = stack[stack.length - 1];
|
|
184
|
-
const c = content[i];
|
|
185
|
-
const c2 = content[i + 1];
|
|
186
|
-
if (m.k === "code") {
|
|
187
|
-
if (c === "/" && c2 === "/") {
|
|
188
|
-
out += "//";
|
|
189
|
-
i += 2;
|
|
190
|
-
stack.push({ k: "line" });
|
|
191
|
-
continue;
|
|
192
|
-
}
|
|
193
|
-
if (c === "/" && c2 === "*") {
|
|
194
|
-
out += "/*";
|
|
195
|
-
i += 2;
|
|
196
|
-
stack.push({ k: "block" });
|
|
197
|
-
continue;
|
|
198
|
-
}
|
|
199
|
-
if (c === "'") {
|
|
200
|
-
out += c;
|
|
201
|
-
i++;
|
|
202
|
-
stack.push({ k: "sq" });
|
|
203
|
-
continue;
|
|
204
|
-
}
|
|
205
|
-
if (c === '"') {
|
|
206
|
-
out += c;
|
|
207
|
-
i++;
|
|
208
|
-
stack.push({ k: "dq" });
|
|
209
|
-
continue;
|
|
210
|
-
}
|
|
211
|
-
if (c === "`") {
|
|
212
|
-
out += c;
|
|
213
|
-
i++;
|
|
214
|
-
stack.push({ k: "tmpl" });
|
|
215
|
-
continue;
|
|
216
|
-
}
|
|
217
|
-
if (m.interp && c === "{") {
|
|
218
|
-
m.depth++;
|
|
219
|
-
out += c;
|
|
220
|
-
i++;
|
|
221
|
-
continue;
|
|
222
|
-
}
|
|
223
|
-
if (m.interp && c === "}") {
|
|
224
|
-
if (m.depth === 0) {
|
|
225
|
-
stack.pop();
|
|
226
|
-
out += c;
|
|
227
|
-
i++;
|
|
228
|
-
continue;
|
|
229
|
-
} // closes ${…} → back to tmpl
|
|
230
|
-
m.depth--;
|
|
231
|
-
out += c;
|
|
232
|
-
i++;
|
|
233
|
-
continue;
|
|
234
|
-
}
|
|
235
|
-
if (isIdChar(c) && !(c >= "0" && c <= "9")) {
|
|
236
|
-
let j = i;
|
|
237
|
-
while (j < n && isIdChar(content[j]))
|
|
238
|
-
j++;
|
|
239
|
-
const word = content.slice(i, j);
|
|
240
|
-
out += word === from ? to : word;
|
|
241
|
-
i = j;
|
|
242
|
-
continue;
|
|
243
|
-
}
|
|
244
|
-
if (isIdChar(c)) { // a numeric/identifier run starting with a digit — never a rename target
|
|
245
|
-
let j = i;
|
|
246
|
-
while (j < n && isIdChar(content[j]))
|
|
247
|
-
j++;
|
|
248
|
-
out += content.slice(i, j);
|
|
249
|
-
i = j;
|
|
250
|
-
continue;
|
|
251
|
-
}
|
|
252
|
-
out += c;
|
|
253
|
-
i++;
|
|
254
|
-
continue;
|
|
255
|
-
}
|
|
256
|
-
if (m.k === "line") {
|
|
257
|
-
out += c;
|
|
258
|
-
i++;
|
|
259
|
-
if (c === "\n")
|
|
260
|
-
stack.pop();
|
|
261
|
-
continue;
|
|
262
|
-
}
|
|
263
|
-
if (m.k === "block") {
|
|
264
|
-
if (c === "*" && c2 === "/") {
|
|
265
|
-
out += "*/";
|
|
266
|
-
i += 2;
|
|
267
|
-
stack.pop();
|
|
268
|
-
continue;
|
|
269
|
-
}
|
|
270
|
-
out += c;
|
|
271
|
-
i++;
|
|
272
|
-
continue;
|
|
273
|
-
}
|
|
274
|
-
if (m.k === "sq" || m.k === "dq") {
|
|
275
|
-
const q = m.k === "sq" ? "'" : '"';
|
|
276
|
-
if (c === "\\") {
|
|
277
|
-
out += content.slice(i, i + 2);
|
|
278
|
-
i += 2;
|
|
279
|
-
continue;
|
|
280
|
-
}
|
|
281
|
-
out += c;
|
|
282
|
-
i++;
|
|
283
|
-
if (c === q)
|
|
284
|
-
stack.pop();
|
|
285
|
-
continue;
|
|
286
|
-
}
|
|
287
|
-
// template literal
|
|
288
|
-
if (c === "\\") {
|
|
289
|
-
out += content.slice(i, i + 2);
|
|
290
|
-
i += 2;
|
|
291
|
-
continue;
|
|
292
|
-
}
|
|
293
|
-
if (c === "`") {
|
|
294
|
-
out += c;
|
|
295
|
-
i++;
|
|
296
|
-
stack.pop();
|
|
297
|
-
continue;
|
|
298
|
-
}
|
|
299
|
-
if (c === "$" && c2 === "{") {
|
|
300
|
-
out += "${";
|
|
301
|
-
i += 2;
|
|
302
|
-
stack.push({ k: "code", interp: true, depth: 0 });
|
|
303
|
-
continue;
|
|
304
|
-
}
|
|
305
|
-
out += c;
|
|
306
|
-
i++;
|
|
307
|
-
}
|
|
308
|
-
return out;
|
|
309
|
-
}
|
|
310
|
-
/**
|
|
311
|
-
* M3 AST op support: extract one top-level symbol's text and return it together with
|
|
312
|
-
* the file content that remains (symbol removed). Returns null if the symbol is absent.
|
|
313
|
-
*/
|
|
314
|
-
export function extractSymbol(content, symbolName, indexer = tsIndexer) {
|
|
315
|
-
const spans = indexer.parse(content);
|
|
316
|
-
const idx = spans.findIndex((s) => s.kind === "symbol" && s.name === symbolName);
|
|
317
|
-
if (idx === -1)
|
|
318
|
-
return null;
|
|
319
|
-
const text = spans[idx].text;
|
|
320
|
-
const rest = indexer.reassemble(spans.filter((_, i) => i !== idx));
|
|
321
|
-
return { text, rest };
|
|
322
|
-
}
|
|
323
|
-
//# sourceMappingURL=symbols.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"symbols.js","sourceRoot":"","sources":["../../src/semantic/symbols.ts"],"names":[],"mappings":"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"}
|