@pattern-algebra/core 0.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/README.md +571 -0
- package/dist/automaton/complement.d.ts +20 -0
- package/dist/automaton/complement.d.ts.map +1 -0
- package/dist/automaton/complement.js +36 -0
- package/dist/automaton/complement.js.map +1 -0
- package/dist/automaton/complement.test.d.ts +2 -0
- package/dist/automaton/complement.test.d.ts.map +1 -0
- package/dist/automaton/complement.test.js +114 -0
- package/dist/automaton/complement.test.js.map +1 -0
- package/dist/automaton/determinize.d.ts +41 -0
- package/dist/automaton/determinize.d.ts.map +1 -0
- package/dist/automaton/determinize.js +310 -0
- package/dist/automaton/determinize.js.map +1 -0
- package/dist/automaton/determinize.test.d.ts +2 -0
- package/dist/automaton/determinize.test.d.ts.map +1 -0
- package/dist/automaton/determinize.test.js +134 -0
- package/dist/automaton/determinize.test.js.map +1 -0
- package/dist/automaton/emptiness.d.ts +41 -0
- package/dist/automaton/emptiness.d.ts.map +1 -0
- package/dist/automaton/emptiness.js +262 -0
- package/dist/automaton/emptiness.js.map +1 -0
- package/dist/automaton/emptiness.test.d.ts +2 -0
- package/dist/automaton/emptiness.test.d.ts.map +1 -0
- package/dist/automaton/emptiness.test.js +154 -0
- package/dist/automaton/emptiness.test.js.map +1 -0
- package/dist/automaton/index.d.ts +10 -0
- package/dist/automaton/index.d.ts.map +1 -0
- package/dist/automaton/index.js +11 -0
- package/dist/automaton/index.js.map +1 -0
- package/dist/automaton/intersect.d.ts +35 -0
- package/dist/automaton/intersect.d.ts.map +1 -0
- package/dist/automaton/intersect.js +302 -0
- package/dist/automaton/intersect.js.map +1 -0
- package/dist/automaton/pattern-algebra.d.ts +62 -0
- package/dist/automaton/pattern-algebra.d.ts.map +1 -0
- package/dist/automaton/pattern-algebra.js +309 -0
- package/dist/automaton/pattern-algebra.js.map +1 -0
- package/dist/automaton/pattern-algebra.test.d.ts +2 -0
- package/dist/automaton/pattern-algebra.test.d.ts.map +1 -0
- package/dist/automaton/pattern-algebra.test.js +223 -0
- package/dist/automaton/pattern-algebra.test.js.map +1 -0
- package/dist/compile/automaton-builder.d.ts +47 -0
- package/dist/compile/automaton-builder.d.ts.map +1 -0
- package/dist/compile/automaton-builder.js +211 -0
- package/dist/compile/automaton-builder.js.map +1 -0
- package/dist/compile/compiler.d.ts +32 -0
- package/dist/compile/compiler.d.ts.map +1 -0
- package/dist/compile/compiler.js +47 -0
- package/dist/compile/compiler.js.map +1 -0
- package/dist/compile/index.d.ts +8 -0
- package/dist/compile/index.d.ts.map +1 -0
- package/dist/compile/index.js +8 -0
- package/dist/compile/index.js.map +1 -0
- package/dist/compile/quick-reject.d.ts +28 -0
- package/dist/compile/quick-reject.d.ts.map +1 -0
- package/dist/compile/quick-reject.js +147 -0
- package/dist/compile/quick-reject.js.map +1 -0
- package/dist/containment/analysis.d.ts +60 -0
- package/dist/containment/analysis.d.ts.map +1 -0
- package/dist/containment/analysis.js +378 -0
- package/dist/containment/analysis.js.map +1 -0
- package/dist/containment/containment.d.ts +23 -0
- package/dist/containment/containment.d.ts.map +1 -0
- package/dist/containment/containment.js +681 -0
- package/dist/containment/containment.js.map +1 -0
- package/dist/containment/containment.test.d.ts +2 -0
- package/dist/containment/containment.test.d.ts.map +1 -0
- package/dist/containment/containment.test.js +209 -0
- package/dist/containment/containment.test.js.map +1 -0
- package/dist/containment/index.d.ts +7 -0
- package/dist/containment/index.d.ts.map +1 -0
- package/dist/containment/index.js +7 -0
- package/dist/containment/index.js.map +1 -0
- package/dist/core-alpha.d.ts +1253 -0
- package/dist/core-beta.d.ts +1253 -0
- package/dist/core-public.d.ts +1253 -0
- package/dist/core-unstripped.d.ts +1253 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +49 -0
- package/dist/index.js.map +1 -0
- package/dist/match/index.d.ts +8 -0
- package/dist/match/index.d.ts.map +1 -0
- package/dist/match/index.js +8 -0
- package/dist/match/index.js.map +1 -0
- package/dist/match/matcher.d.ts +40 -0
- package/dist/match/matcher.d.ts.map +1 -0
- package/dist/match/matcher.js +256 -0
- package/dist/match/matcher.js.map +1 -0
- package/dist/match/matcher.test.d.ts +2 -0
- package/dist/match/matcher.test.d.ts.map +1 -0
- package/dist/match/matcher.test.js +185 -0
- package/dist/match/matcher.test.js.map +1 -0
- package/dist/match/path-utils.d.ts +132 -0
- package/dist/match/path-utils.d.ts.map +1 -0
- package/dist/match/path-utils.js +223 -0
- package/dist/match/path-utils.js.map +1 -0
- package/dist/match/path-utils.test.d.ts +2 -0
- package/dist/match/path-utils.test.d.ts.map +1 -0
- package/dist/match/path-utils.test.js +193 -0
- package/dist/match/path-utils.test.js.map +1 -0
- package/dist/match/segment-matcher.d.ts +25 -0
- package/dist/match/segment-matcher.d.ts.map +1 -0
- package/dist/match/segment-matcher.js +267 -0
- package/dist/match/segment-matcher.js.map +1 -0
- package/dist/parse/brace-expansion.d.ts +34 -0
- package/dist/parse/brace-expansion.d.ts.map +1 -0
- package/dist/parse/brace-expansion.js +294 -0
- package/dist/parse/brace-expansion.js.map +1 -0
- package/dist/parse/brace-expansion.test.d.ts +2 -0
- package/dist/parse/brace-expansion.test.d.ts.map +1 -0
- package/dist/parse/brace-expansion.test.js +105 -0
- package/dist/parse/brace-expansion.test.js.map +1 -0
- package/dist/parse/index.d.ts +8 -0
- package/dist/parse/index.d.ts.map +1 -0
- package/dist/parse/index.js +8 -0
- package/dist/parse/index.js.map +1 -0
- package/dist/parse/parser.d.ts +15 -0
- package/dist/parse/parser.d.ts.map +1 -0
- package/dist/parse/parser.js +526 -0
- package/dist/parse/parser.js.map +1 -0
- package/dist/parse/parser.test.d.ts +2 -0
- package/dist/parse/parser.test.d.ts.map +1 -0
- package/dist/parse/parser.test.js +266 -0
- package/dist/parse/parser.test.js.map +1 -0
- package/dist/parse/validator.d.ts +30 -0
- package/dist/parse/validator.d.ts.map +1 -0
- package/dist/parse/validator.js +115 -0
- package/dist/parse/validator.js.map +1 -0
- package/dist/parse/validator.test.d.ts +2 -0
- package/dist/parse/validator.test.d.ts.map +1 -0
- package/dist/parse/validator.test.js +45 -0
- package/dist/parse/validator.test.js.map +1 -0
- package/dist/types/ast.d.ts +158 -0
- package/dist/types/ast.d.ts.map +1 -0
- package/dist/types/ast.js +2 -0
- package/dist/types/ast.js.map +1 -0
- package/dist/types/automaton.d.ts +150 -0
- package/dist/types/automaton.d.ts.map +1 -0
- package/dist/types/automaton.js +2 -0
- package/dist/types/automaton.js.map +1 -0
- package/dist/types/containment.d.ts +257 -0
- package/dist/types/containment.d.ts.map +1 -0
- package/dist/types/containment.js +5 -0
- package/dist/types/containment.js.map +1 -0
- package/dist/types/errors.d.ts +37 -0
- package/dist/types/errors.d.ts.map +1 -0
- package/dist/types/errors.js +24 -0
- package/dist/types/errors.js.map +1 -0
- package/dist/types/index.d.ts +10 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +6 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +48 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pattern-algebra.js","sourceRoot":"","sources":["../../src/automaton/pattern-algebra.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pattern-algebra.test.d.ts","sourceRoot":"","sources":["../../src/automaton/pattern-algebra.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { patternIntersect, patternUnion, patternComplement, patternDifference } from './pattern-algebra';
|
|
3
|
+
import { compilePattern } from '../compile';
|
|
4
|
+
import { parsePattern } from '../parse';
|
|
5
|
+
import { matchPath } from '../match';
|
|
6
|
+
/**
|
|
7
|
+
* Helper to compile a pattern from source string.
|
|
8
|
+
*/
|
|
9
|
+
function compile(source) {
|
|
10
|
+
return compilePattern(parsePattern(source));
|
|
11
|
+
}
|
|
12
|
+
describe('patternIntersect', () => {
|
|
13
|
+
it('should match paths matching both patterns', () => {
|
|
14
|
+
const srcFiles = compile('src/**');
|
|
15
|
+
const tsFiles = compile('**/*.ts');
|
|
16
|
+
const result = patternIntersect(srcFiles, tsFiles);
|
|
17
|
+
// Should match TypeScript files in src
|
|
18
|
+
expect(matchPath('/src/index.ts', result)).toBe(true);
|
|
19
|
+
expect(matchPath('/src/utils/helper.ts', result)).toBe(true);
|
|
20
|
+
// Should NOT match TypeScript files outside src
|
|
21
|
+
expect(matchPath('/lib/index.ts', result)).toBe(false);
|
|
22
|
+
// Should NOT match non-TypeScript files in src
|
|
23
|
+
expect(matchPath('/src/index.js', result)).toBe(false);
|
|
24
|
+
});
|
|
25
|
+
it('should create synthetic source string', () => {
|
|
26
|
+
const a = compile('src/**');
|
|
27
|
+
const b = compile('**/*.ts');
|
|
28
|
+
const result = patternIntersect(a, b);
|
|
29
|
+
expect(result.source).toBe('(src/**) ∩ (**/*.ts)');
|
|
30
|
+
});
|
|
31
|
+
it('should compute depth constraints correctly', () => {
|
|
32
|
+
const shallow = compile('src/*'); // exactly 2 segments
|
|
33
|
+
const deep = compile('**/*.ts'); // at least 1 segment
|
|
34
|
+
const result = patternIntersect(shallow, deep);
|
|
35
|
+
// Intersection should use max of minSegments
|
|
36
|
+
expect(result.minSegments).toBe(2);
|
|
37
|
+
});
|
|
38
|
+
it('should handle intersection of literals', () => {
|
|
39
|
+
const exact = compile('src/index.ts');
|
|
40
|
+
const pattern = compile('src/*.ts');
|
|
41
|
+
const result = patternIntersect(exact, pattern);
|
|
42
|
+
expect(matchPath('/src/index.ts', result)).toBe(true);
|
|
43
|
+
expect(matchPath('/src/other.ts', result)).toBe(false);
|
|
44
|
+
});
|
|
45
|
+
it('should return empty for disjoint patterns', () => {
|
|
46
|
+
const js = compile('**/*.js');
|
|
47
|
+
const ts = compile('**/*.ts');
|
|
48
|
+
const result = patternIntersect(js, ts);
|
|
49
|
+
// These patterns have no overlap
|
|
50
|
+
expect(matchPath('/foo.js', result)).toBe(false);
|
|
51
|
+
expect(matchPath('/foo.ts', result)).toBe(false);
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
describe('patternUnion', () => {
|
|
55
|
+
it('should match paths matching either pattern', () => {
|
|
56
|
+
const jsFiles = compile('**/*.js');
|
|
57
|
+
const tsFiles = compile('**/*.ts');
|
|
58
|
+
const result = patternUnion(jsFiles, tsFiles);
|
|
59
|
+
expect(matchPath('/src/index.js', result)).toBe(true);
|
|
60
|
+
expect(matchPath('/src/index.ts', result)).toBe(true);
|
|
61
|
+
expect(matchPath('/lib/utils.js', result)).toBe(true);
|
|
62
|
+
// Should NOT match other extensions
|
|
63
|
+
expect(matchPath('/src/index.css', result)).toBe(false);
|
|
64
|
+
});
|
|
65
|
+
it('should create synthetic source string', () => {
|
|
66
|
+
const a = compile('*.js');
|
|
67
|
+
const b = compile('*.ts');
|
|
68
|
+
const result = patternUnion(a, b);
|
|
69
|
+
expect(result.source).toBe('(*.js) ∪ (*.ts)');
|
|
70
|
+
});
|
|
71
|
+
it('should be unbounded if either pattern is unbounded', () => {
|
|
72
|
+
const bounded = compile('src/*.ts');
|
|
73
|
+
const unbounded = compile('**/*.ts');
|
|
74
|
+
const result = patternUnion(bounded, unbounded);
|
|
75
|
+
expect(result.isUnbounded).toBe(true);
|
|
76
|
+
});
|
|
77
|
+
it('should compute depth constraints correctly', () => {
|
|
78
|
+
const shallow = compile('*.ts'); // 1 segment
|
|
79
|
+
const deep = compile('src/**/*.ts'); // at least 2 segments
|
|
80
|
+
const result = patternUnion(shallow, deep);
|
|
81
|
+
// Union should use min of minSegments
|
|
82
|
+
expect(result.minSegments).toBe(1);
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
describe('patternComplement', () => {
|
|
86
|
+
it('should match paths NOT matching original pattern (simple case)', () => {
|
|
87
|
+
// Use a simpler pattern without globstar for complement test
|
|
88
|
+
const srcIndex = compile('src/index.ts');
|
|
89
|
+
const notSrcIndex = patternComplement(srcIndex);
|
|
90
|
+
// Should NOT match the exact file
|
|
91
|
+
expect(matchPath('/src/index.ts', notSrcIndex)).toBe(false);
|
|
92
|
+
// Should match other files
|
|
93
|
+
expect(matchPath('/src/index.js', notSrcIndex)).toBe(true);
|
|
94
|
+
expect(matchPath('/src/other.ts', notSrcIndex)).toBe(true);
|
|
95
|
+
});
|
|
96
|
+
it('should create synthetic source string', () => {
|
|
97
|
+
const a = compile('**/*.ts');
|
|
98
|
+
const result = patternComplement(a);
|
|
99
|
+
expect(result.source).toBe('¬(**/*.ts)');
|
|
100
|
+
});
|
|
101
|
+
it('should always be unbounded', () => {
|
|
102
|
+
const bounded = compile('src/*.ts');
|
|
103
|
+
const result = patternComplement(bounded);
|
|
104
|
+
expect(result.isUnbounded).toBe(true);
|
|
105
|
+
expect(result.maxSegments).toBeUndefined();
|
|
106
|
+
});
|
|
107
|
+
it('should have empty quick-reject filter', () => {
|
|
108
|
+
const pattern = compile('src/**/*.ts');
|
|
109
|
+
const result = patternComplement(pattern);
|
|
110
|
+
expect(result.quickReject).toEqual({});
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
describe('patternDifference', () => {
|
|
114
|
+
it('should match paths in A but not in B (simple case)', () => {
|
|
115
|
+
// Use simpler patterns that don't rely on complex globstar complement
|
|
116
|
+
const srcFiles = compile('src/*');
|
|
117
|
+
const indexFiles = compile('src/index.ts');
|
|
118
|
+
const result = patternDifference(srcFiles, indexFiles);
|
|
119
|
+
// Should match src files that aren't index.ts
|
|
120
|
+
expect(matchPath('/src/other.ts', result)).toBe(true);
|
|
121
|
+
expect(matchPath('/src/utils.js', result)).toBe(true);
|
|
122
|
+
// Should NOT match index.ts specifically
|
|
123
|
+
expect(matchPath('/src/index.ts', result)).toBe(false);
|
|
124
|
+
// Should NOT match files outside src
|
|
125
|
+
expect(matchPath('/lib/index.ts', result)).toBe(false);
|
|
126
|
+
});
|
|
127
|
+
it('should create synthetic source string', () => {
|
|
128
|
+
const a = compile('src/**');
|
|
129
|
+
const b = compile('**/*.test.ts');
|
|
130
|
+
const result = patternDifference(a, b);
|
|
131
|
+
expect(result.source).toBe('(src/**) \\ (**/*.test.ts)');
|
|
132
|
+
});
|
|
133
|
+
it('should preserve unbounded status from first pattern', () => {
|
|
134
|
+
const unbounded = compile('**/*.ts');
|
|
135
|
+
const bounded = compile('test/*.ts');
|
|
136
|
+
const result = patternDifference(unbounded, bounded);
|
|
137
|
+
expect(result.isUnbounded).toBe(true);
|
|
138
|
+
});
|
|
139
|
+
it('should preserve quick-reject from first pattern', () => {
|
|
140
|
+
const a = compile('src/**/*.ts');
|
|
141
|
+
const b = compile('**/*.test.ts');
|
|
142
|
+
const result = patternDifference(a, b);
|
|
143
|
+
// Should inherit A's prefix requirement
|
|
144
|
+
expect(result.quickReject.requiredPrefix).toBe('/src');
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
describe('quick-reject filter merging', () => {
|
|
148
|
+
describe('intersection (AND semantics)', () => {
|
|
149
|
+
it('should take longer prefix when one is substring of other', () => {
|
|
150
|
+
const a = compile('src/**');
|
|
151
|
+
const b = compile('src/utils/**');
|
|
152
|
+
const result = patternIntersect(a, b);
|
|
153
|
+
expect(result.quickReject.requiredPrefix).toBe('/src/utils');
|
|
154
|
+
});
|
|
155
|
+
it('should combine required literals', () => {
|
|
156
|
+
const a = compile('src/**/index.ts');
|
|
157
|
+
const b = compile('**/utils/**/index.ts');
|
|
158
|
+
const result = patternIntersect(a, b);
|
|
159
|
+
const literals = result.quickReject.requiredLiterals ?? [];
|
|
160
|
+
expect(literals).toContain('src');
|
|
161
|
+
expect(literals).toContain('index.ts');
|
|
162
|
+
expect(literals).toContain('utils');
|
|
163
|
+
});
|
|
164
|
+
});
|
|
165
|
+
describe('union (OR semantics)', () => {
|
|
166
|
+
it('should take common prefix only', () => {
|
|
167
|
+
const a = compile('src/utils/**');
|
|
168
|
+
const b = compile('src/lib/**');
|
|
169
|
+
const result = patternUnion(a, b);
|
|
170
|
+
expect(result.quickReject.requiredPrefix).toBe('/src/');
|
|
171
|
+
});
|
|
172
|
+
it('should take intersection of required literals', () => {
|
|
173
|
+
const a = compile('src/**/index.ts');
|
|
174
|
+
const b = compile('lib/**/index.ts');
|
|
175
|
+
const result = patternUnion(a, b);
|
|
176
|
+
const literals = result.quickReject.requiredLiterals ?? [];
|
|
177
|
+
expect(literals).toContain('index.ts');
|
|
178
|
+
// 'src' and 'lib' should NOT be required since they differ
|
|
179
|
+
expect(literals).not.toContain('src');
|
|
180
|
+
expect(literals).not.toContain('lib');
|
|
181
|
+
});
|
|
182
|
+
});
|
|
183
|
+
});
|
|
184
|
+
describe('composition of operations', () => {
|
|
185
|
+
it('should support chained operations (simple case)', () => {
|
|
186
|
+
// Use simpler patterns to test composition
|
|
187
|
+
const srcJs = compile('src/*.js');
|
|
188
|
+
const srcTs = compile('src/*.ts');
|
|
189
|
+
const libJs = compile('lib/*.js');
|
|
190
|
+
// Union of srcJs and srcTs
|
|
191
|
+
const srcAll = patternUnion(srcJs, srcTs);
|
|
192
|
+
expect(matchPath('/src/index.js', srcAll)).toBe(true);
|
|
193
|
+
expect(matchPath('/src/index.ts', srcAll)).toBe(true);
|
|
194
|
+
expect(matchPath('/lib/index.js', srcAll)).toBe(false);
|
|
195
|
+
// Intersection of srcAll and libJs should be empty (different directories)
|
|
196
|
+
const srcAndLib = patternIntersect(srcJs, libJs);
|
|
197
|
+
expect(matchPath('/src/index.js', srcAndLib)).toBe(false);
|
|
198
|
+
expect(matchPath('/lib/index.js', srcAndLib)).toBe(false);
|
|
199
|
+
});
|
|
200
|
+
it('should satisfy A ∩ B = A - (A - B) identity', () => {
|
|
201
|
+
const a = compile('src/**');
|
|
202
|
+
const b = compile('**/*.ts');
|
|
203
|
+
const intersection = patternIntersect(a, b);
|
|
204
|
+
const viaIdentity = patternDifference(a, patternDifference(a, b));
|
|
205
|
+
// Both should produce equivalent behavior
|
|
206
|
+
const testPaths = ['/src/index.ts', '/src/foo.js', '/lib/bar.ts'];
|
|
207
|
+
for (const path of testPaths) {
|
|
208
|
+
expect(matchPath(path, intersection)).toBe(matchPath(path, viaIdentity));
|
|
209
|
+
}
|
|
210
|
+
});
|
|
211
|
+
it('should support nested unions', () => {
|
|
212
|
+
// Test union of unions
|
|
213
|
+
const js = compile('*.js');
|
|
214
|
+
const ts = compile('*.ts');
|
|
215
|
+
const css = compile('*.css');
|
|
216
|
+
const scriptsAndStyles = patternUnion(patternUnion(js, ts), css);
|
|
217
|
+
expect(matchPath('/index.js', scriptsAndStyles)).toBe(true);
|
|
218
|
+
expect(matchPath('/index.ts', scriptsAndStyles)).toBe(true);
|
|
219
|
+
expect(matchPath('/style.css', scriptsAndStyles)).toBe(true);
|
|
220
|
+
expect(matchPath('/readme.md', scriptsAndStyles)).toBe(false);
|
|
221
|
+
});
|
|
222
|
+
});
|
|
223
|
+
//# sourceMappingURL=pattern-algebra.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pattern-algebra.test.js","sourceRoot":"","sources":["../../src/automaton/pattern-algebra.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Automaton builder - converts pattern AST to segment automaton.
|
|
3
|
+
* @packageDocumentation
|
|
4
|
+
*/
|
|
5
|
+
import type { PathPattern, SegmentAutomaton } from '../types';
|
|
6
|
+
/**
|
|
7
|
+
* Build a segment automaton from a pattern AST.
|
|
8
|
+
*
|
|
9
|
+
* The automaton operates on path segments (not characters).
|
|
10
|
+
* This representation enables:
|
|
11
|
+
* - O(n) matching where n is number of path segments
|
|
12
|
+
* - Standard automaton operations for containment checking
|
|
13
|
+
*
|
|
14
|
+
* @param pattern - Parsed pattern AST
|
|
15
|
+
* @returns Segment automaton (NFA)
|
|
16
|
+
*
|
|
17
|
+
* @public
|
|
18
|
+
*/
|
|
19
|
+
export declare function buildAutomaton(pattern: PathPattern): SegmentAutomaton;
|
|
20
|
+
/**
|
|
21
|
+
* Get the minimum number of segments a pattern can match.
|
|
22
|
+
*
|
|
23
|
+
* @param pattern - Pattern AST
|
|
24
|
+
* @returns Minimum segment count
|
|
25
|
+
*
|
|
26
|
+
* @public
|
|
27
|
+
*/
|
|
28
|
+
export declare function getMinSegments(pattern: PathPattern): number;
|
|
29
|
+
/**
|
|
30
|
+
* Get the maximum number of segments a pattern can match.
|
|
31
|
+
*
|
|
32
|
+
* @param pattern - Pattern AST
|
|
33
|
+
* @returns Maximum segment count, or undefined if unbounded (contains **)
|
|
34
|
+
*
|
|
35
|
+
* @public
|
|
36
|
+
*/
|
|
37
|
+
export declare function getMaxSegments(pattern: PathPattern): number | undefined;
|
|
38
|
+
/**
|
|
39
|
+
* Check if a pattern contains a globstar (**).
|
|
40
|
+
*
|
|
41
|
+
* @param pattern - Pattern AST
|
|
42
|
+
* @returns true if pattern is unbounded
|
|
43
|
+
*
|
|
44
|
+
* @public
|
|
45
|
+
*/
|
|
46
|
+
export declare function isUnbounded(pattern: PathPattern): boolean;
|
|
47
|
+
//# sourceMappingURL=automaton-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"automaton-builder.d.ts","sourceRoot":"","sources":["../../src/compile/automaton-builder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,WAAW,EAKX,gBAAgB,EAGjB,MAAM,UAAU,CAAA;AAWjB;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,GAAG,gBAAgB,CAmBrE;AAwID;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAE3D;AAkBD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,CAEvE;AAsBD;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAEzD"}
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Automaton builder - converts pattern AST to segment automaton.
|
|
3
|
+
* @packageDocumentation
|
|
4
|
+
*/
|
|
5
|
+
import { segmentToRegex } from '../match/segment-matcher';
|
|
6
|
+
/**
|
|
7
|
+
* Build a segment automaton from a pattern AST.
|
|
8
|
+
*
|
|
9
|
+
* The automaton operates on path segments (not characters).
|
|
10
|
+
* This representation enables:
|
|
11
|
+
* - O(n) matching where n is number of path segments
|
|
12
|
+
* - Standard automaton operations for containment checking
|
|
13
|
+
*
|
|
14
|
+
* @param pattern - Parsed pattern AST
|
|
15
|
+
* @returns Segment automaton (NFA)
|
|
16
|
+
*
|
|
17
|
+
* @public
|
|
18
|
+
*/
|
|
19
|
+
export function buildAutomaton(pattern) {
|
|
20
|
+
const builder = {
|
|
21
|
+
states: [],
|
|
22
|
+
nextStateId: 0,
|
|
23
|
+
};
|
|
24
|
+
// Create initial and final states
|
|
25
|
+
const initialId = createState(builder, false);
|
|
26
|
+
const finalId = createState(builder, true);
|
|
27
|
+
// Build automaton for the pattern node
|
|
28
|
+
buildNodeAutomaton(builder, pattern.root, initialId, finalId);
|
|
29
|
+
return {
|
|
30
|
+
states: builder.states,
|
|
31
|
+
initialState: initialId,
|
|
32
|
+
acceptingStates: [finalId],
|
|
33
|
+
isDeterministic: false, // NFAs are not deterministic by default
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Create a new state in the automaton.
|
|
38
|
+
*/
|
|
39
|
+
function createState(builder, accepting) {
|
|
40
|
+
const id = builder.nextStateId++;
|
|
41
|
+
builder.states.push({
|
|
42
|
+
id,
|
|
43
|
+
transitions: [],
|
|
44
|
+
accepting,
|
|
45
|
+
});
|
|
46
|
+
return id;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Add a transition to a state.
|
|
50
|
+
*/
|
|
51
|
+
function addTransition(builder, fromState, transition) {
|
|
52
|
+
const state = builder.states[fromState];
|
|
53
|
+
builder.states[fromState] = {
|
|
54
|
+
...state,
|
|
55
|
+
transitions: [...state.transitions, transition],
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Build automaton for a pattern node.
|
|
60
|
+
*/
|
|
61
|
+
function buildNodeAutomaton(builder, node, startState, endState) {
|
|
62
|
+
if (node.type === 'sequence') {
|
|
63
|
+
buildSequenceAutomaton(builder, node, startState, endState);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
buildAlternationAutomaton(builder, node, startState, endState);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Build automaton for a segment sequence.
|
|
71
|
+
*/
|
|
72
|
+
function buildSequenceAutomaton(builder, sequence, startState, endState) {
|
|
73
|
+
const segments = sequence.segments;
|
|
74
|
+
if (segments.length === 0) {
|
|
75
|
+
// Empty sequence - epsilon transition
|
|
76
|
+
addTransition(builder, startState, { type: 'epsilon', target: endState });
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
// Create intermediate states between segments
|
|
80
|
+
let currentState = startState;
|
|
81
|
+
for (let i = 0; i < segments.length; i++) {
|
|
82
|
+
const segment = segments[i];
|
|
83
|
+
const isLast = i === segments.length - 1;
|
|
84
|
+
const nextState = isLast ? endState : createState(builder, false);
|
|
85
|
+
buildSegmentAutomaton(builder, segment, currentState, nextState);
|
|
86
|
+
currentState = nextState;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Build automaton for an alternation (brace expansion).
|
|
91
|
+
*/
|
|
92
|
+
function buildAlternationAutomaton(builder, alternation, startState, endState) {
|
|
93
|
+
// Each branch connects start to end via epsilon transitions
|
|
94
|
+
for (const branch of alternation.branches) {
|
|
95
|
+
const branchStart = createState(builder, false);
|
|
96
|
+
const branchEnd = createState(builder, false);
|
|
97
|
+
// Epsilon from start to branch start
|
|
98
|
+
addTransition(builder, startState, { type: 'epsilon', target: branchStart });
|
|
99
|
+
// Build branch automaton
|
|
100
|
+
buildNodeAutomaton(builder, branch, branchStart, branchEnd);
|
|
101
|
+
// Epsilon from branch end to end
|
|
102
|
+
addTransition(builder, branchEnd, { type: 'epsilon', target: endState });
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Build automaton for a single segment.
|
|
107
|
+
*/
|
|
108
|
+
function buildSegmentAutomaton(builder, segment, startState, endState) {
|
|
109
|
+
switch (segment.type) {
|
|
110
|
+
case 'literal':
|
|
111
|
+
addTransition(builder, startState, {
|
|
112
|
+
type: 'literal',
|
|
113
|
+
segment: segment.value,
|
|
114
|
+
target: endState,
|
|
115
|
+
});
|
|
116
|
+
break;
|
|
117
|
+
case 'globstar':
|
|
118
|
+
// Globstar: can match zero or more segments
|
|
119
|
+
// Model as: epsilon to end (zero segments) OR consume one and loop
|
|
120
|
+
addTransition(builder, startState, {
|
|
121
|
+
type: 'globstar',
|
|
122
|
+
selfLoop: startState,
|
|
123
|
+
exit: endState,
|
|
124
|
+
});
|
|
125
|
+
break;
|
|
126
|
+
case 'wildcard':
|
|
127
|
+
case 'charclass':
|
|
128
|
+
case 'composite': {
|
|
129
|
+
const regex = segmentToRegex(segment);
|
|
130
|
+
if (regex) {
|
|
131
|
+
addTransition(builder, startState, {
|
|
132
|
+
type: 'wildcard',
|
|
133
|
+
pattern: regex,
|
|
134
|
+
patternSource: segment.type === 'wildcard' ? segment.pattern : '',
|
|
135
|
+
target: endState,
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
break;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Get the minimum number of segments a pattern can match.
|
|
144
|
+
*
|
|
145
|
+
* @param pattern - Pattern AST
|
|
146
|
+
* @returns Minimum segment count
|
|
147
|
+
*
|
|
148
|
+
* @public
|
|
149
|
+
*/
|
|
150
|
+
export function getMinSegments(pattern) {
|
|
151
|
+
return getNodeMinSegments(pattern.root);
|
|
152
|
+
}
|
|
153
|
+
function getNodeMinSegments(node) {
|
|
154
|
+
if (node.type === 'sequence') {
|
|
155
|
+
let count = 0;
|
|
156
|
+
for (const segment of node.segments) {
|
|
157
|
+
if (segment.type !== 'globstar') {
|
|
158
|
+
count++;
|
|
159
|
+
}
|
|
160
|
+
// Globstar contributes 0 to minimum
|
|
161
|
+
}
|
|
162
|
+
return count;
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
// Alternation: minimum of all branches
|
|
166
|
+
return Math.min(...node.branches.map(getNodeMinSegments));
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Get the maximum number of segments a pattern can match.
|
|
171
|
+
*
|
|
172
|
+
* @param pattern - Pattern AST
|
|
173
|
+
* @returns Maximum segment count, or undefined if unbounded (contains **)
|
|
174
|
+
*
|
|
175
|
+
* @public
|
|
176
|
+
*/
|
|
177
|
+
export function getMaxSegments(pattern) {
|
|
178
|
+
return getNodeMaxSegments(pattern.root);
|
|
179
|
+
}
|
|
180
|
+
function getNodeMaxSegments(node) {
|
|
181
|
+
if (node.type === 'sequence') {
|
|
182
|
+
let count = 0;
|
|
183
|
+
for (const segment of node.segments) {
|
|
184
|
+
if (segment.type === 'globstar') {
|
|
185
|
+
return undefined; // Unbounded
|
|
186
|
+
}
|
|
187
|
+
count++;
|
|
188
|
+
}
|
|
189
|
+
return count;
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
// Alternation: max of all branches (undefined if any is undefined)
|
|
193
|
+
const maxes = node.branches.map(getNodeMaxSegments);
|
|
194
|
+
if (maxes.some((m) => m === undefined)) {
|
|
195
|
+
return undefined;
|
|
196
|
+
}
|
|
197
|
+
return Math.max(...maxes);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Check if a pattern contains a globstar (**).
|
|
202
|
+
*
|
|
203
|
+
* @param pattern - Pattern AST
|
|
204
|
+
* @returns true if pattern is unbounded
|
|
205
|
+
*
|
|
206
|
+
* @public
|
|
207
|
+
*/
|
|
208
|
+
export function isUnbounded(pattern) {
|
|
209
|
+
return getMaxSegments(pattern) === undefined;
|
|
210
|
+
}
|
|
211
|
+
//# sourceMappingURL=automaton-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"automaton-builder.js","sourceRoot":"","sources":["../../src/compile/automaton-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pattern compiler - compiles AST to efficient matching form.
|
|
3
|
+
* @packageDocumentation
|
|
4
|
+
*/
|
|
5
|
+
import type { PathPattern, CompiledPattern } from '../types';
|
|
6
|
+
/**
|
|
7
|
+
* Compile a pattern to an efficient matching form.
|
|
8
|
+
*
|
|
9
|
+
* The compiled pattern includes:
|
|
10
|
+
* - Original source and AST for debugging/analysis
|
|
11
|
+
* - Quick-reject filters for fast path elimination
|
|
12
|
+
* - Segment automaton for full matching
|
|
13
|
+
* - Depth constraints for optimization
|
|
14
|
+
*
|
|
15
|
+
* @param pattern - Parsed pattern AST
|
|
16
|
+
* @returns Compiled pattern ready for matching
|
|
17
|
+
*
|
|
18
|
+
* @public
|
|
19
|
+
*/
|
|
20
|
+
export declare function compilePattern(pattern: PathPattern): CompiledPattern;
|
|
21
|
+
/**
|
|
22
|
+
* Compile a pattern from source string.
|
|
23
|
+
*
|
|
24
|
+
* Convenience function that parses and compiles in one step.
|
|
25
|
+
*
|
|
26
|
+
* @param source - Pattern source string
|
|
27
|
+
* @returns Compiled pattern
|
|
28
|
+
*
|
|
29
|
+
* @public
|
|
30
|
+
*/
|
|
31
|
+
export { parsePattern } from '../parse';
|
|
32
|
+
//# sourceMappingURL=compiler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../src/compile/compiler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAI5D;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,GAAG,eAAe,CAepE;AAED;;;;;;;;;GASG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pattern compiler - compiles AST to efficient matching form.
|
|
3
|
+
* @packageDocumentation
|
|
4
|
+
*/
|
|
5
|
+
import { buildAutomaton, getMinSegments, getMaxSegments, isUnbounded } from './automaton-builder';
|
|
6
|
+
import { buildQuickRejectFilter } from './quick-reject';
|
|
7
|
+
/**
|
|
8
|
+
* Compile a pattern to an efficient matching form.
|
|
9
|
+
*
|
|
10
|
+
* The compiled pattern includes:
|
|
11
|
+
* - Original source and AST for debugging/analysis
|
|
12
|
+
* - Quick-reject filters for fast path elimination
|
|
13
|
+
* - Segment automaton for full matching
|
|
14
|
+
* - Depth constraints for optimization
|
|
15
|
+
*
|
|
16
|
+
* @param pattern - Parsed pattern AST
|
|
17
|
+
* @returns Compiled pattern ready for matching
|
|
18
|
+
*
|
|
19
|
+
* @public
|
|
20
|
+
*/
|
|
21
|
+
export function compilePattern(pattern) {
|
|
22
|
+
const automaton = buildAutomaton(pattern);
|
|
23
|
+
const quickReject = buildQuickRejectFilter(pattern);
|
|
24
|
+
const minSegments = getMinSegments(pattern);
|
|
25
|
+
const maxSegments = getMaxSegments(pattern);
|
|
26
|
+
return {
|
|
27
|
+
source: pattern.source,
|
|
28
|
+
ast: pattern,
|
|
29
|
+
quickReject,
|
|
30
|
+
automaton,
|
|
31
|
+
isUnbounded: isUnbounded(pattern),
|
|
32
|
+
minSegments,
|
|
33
|
+
maxSegments,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Compile a pattern from source string.
|
|
38
|
+
*
|
|
39
|
+
* Convenience function that parses and compiles in one step.
|
|
40
|
+
*
|
|
41
|
+
* @param source - Pattern source string
|
|
42
|
+
* @returns Compiled pattern
|
|
43
|
+
*
|
|
44
|
+
* @public
|
|
45
|
+
*/
|
|
46
|
+
export { parsePattern } from '../parse';
|
|
47
|
+
//# sourceMappingURL=compiler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../src/compile/compiler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjG,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAA;AAEvD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,cAAc,CAAC,OAAoB;IACjD,MAAM,SAAS,GAAG,cAAc,CAAC,OAAO,CAAC,CAAA;IACzC,MAAM,WAAW,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAA;IACnD,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,CAAA;IAC3C,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,CAAA;IAE3C,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,GAAG,EAAE,OAAO;QACZ,WAAW;QACX,SAAS;QACT,WAAW,EAAE,WAAW,CAAC,OAAO,CAAC;QACjC,WAAW;QACX,WAAW;KACZ,CAAA;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pattern compilation utilities.
|
|
3
|
+
* @packageDocumentation
|
|
4
|
+
*/
|
|
5
|
+
export { compilePattern } from './compiler';
|
|
6
|
+
export { buildAutomaton, getMinSegments, getMaxSegments, isUnbounded } from './automaton-builder';
|
|
7
|
+
export { buildQuickRejectFilter, applyQuickReject } from './quick-reject';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/compile/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjG,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pattern compilation utilities.
|
|
3
|
+
* @packageDocumentation
|
|
4
|
+
*/
|
|
5
|
+
export { compilePattern } from './compiler';
|
|
6
|
+
export { buildAutomaton, getMinSegments, getMaxSegments, isUnbounded } from './automaton-builder';
|
|
7
|
+
export { buildQuickRejectFilter, applyQuickReject } from './quick-reject';
|
|
8
|
+
//# sourceMappingURL=index.js.map
|