@lass-lang/core 0.0.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../src/scanner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,160 @@
1
+ /**
2
+ * Scope tracking utilities for CSS property accumulation.
3
+ *
4
+ * Story 3.1: CSS Accumulator in Transpiler
5
+ * Story 3.3: Lookup in {{ }} Context
6
+ * Story 5.1: @{ } Style Block context tracking
7
+ *
8
+ * This module provides utilities for:
9
+ * 1. Cutting CSS into slices at brace boundaries
10
+ * 2. Looking up property values by walking parent chain
11
+ *
12
+ * The approach uses string slices and lazy regex lookup (not Maps).
13
+ * This is compile-time resolution - values are resolved during transpilation.
14
+ *
15
+ * Story 3.3 additions:
16
+ * - Each slice tracks its type ('css' or 'js') based on brace type
17
+ * - Each slice has a parent reference for easy scope walking
18
+ * - findPropertyValue() skips JS-type slices during lookup
19
+ *
20
+ * Story 5.1 additions:
21
+ * - @{ } creates CSS context inside JS context
22
+ * - Context nesting: CSS → {{ JS → @{ CSS → {{ JS }} → CSS } → JS }} → CSS
23
+ */
24
+ /**
25
+ * Brace types for context tracking.
26
+ * Story 5.1: Added '@{' for style blocks.
27
+ */
28
+ export type BraceType = '{{' | '{' | '@{' | null;
29
+ /**
30
+ * A single scope slice with metadata.
31
+ * Story 3.3: Added type and parent for scope tracking.
32
+ * Story 5.1: Added openedBy to track brace type.
33
+ */
34
+ export interface ScopeSlice {
35
+ /** The text content of this slice */
36
+ content: string;
37
+ /** Type of scope: 'css' for { } and @{ }, 'js' for {{ }} */
38
+ type: 'css' | 'js';
39
+ /** Index of parent slice, or null for root-level slices */
40
+ parent: number | null;
41
+ /** What brace type opened this slice: '{{', '{', '@{', or null for root */
42
+ openedBy: BraceType;
43
+ }
44
+ /**
45
+ * Result of cutting CSS by braces.
46
+ */
47
+ export interface ScopeSlices {
48
+ /** Array of slice objects with content, type, and parent reference */
49
+ slices: ScopeSlice[];
50
+ /** Minimum depth reached (negative indicates unbalanced closing braces) */
51
+ minDepth: number;
52
+ /** Maximum depth reached */
53
+ maxDepth: number;
54
+ }
55
+ /**
56
+ * Cuts CSS text into slices at brace boundaries.
57
+ *
58
+ * Handles three brace types:
59
+ * - { } for CSS blocks (CSS context)
60
+ * - {{ }} for JS expressions (JS context)
61
+ * - @{ } for style blocks (CSS context inside JS)
62
+ *
63
+ * Story 3.3: Each slice now includes:
64
+ * - type: 'css' for content inside { } and @{ }, 'js' for content inside {{ }}
65
+ * - parent: index of the parent slice for scope walking
66
+ *
67
+ * Story 5.1: @{ } creates CSS context inside JS, enabling @(prop) resolution
68
+ * inside style blocks.
69
+ *
70
+ * Example with CSS nesting:
71
+ * ```
72
+ * Input: ".parent { color: blue; .child { border: 1px; } }"
73
+ * Slices: [
74
+ * { content: ".parent ", type: 'css', parent: null },
75
+ * { content: " color: blue; .child ", type: 'css', parent: 0 },
76
+ * { content: " border: 1px; ", type: 'css', parent: 1 },
77
+ * { content: " ", type: 'css', parent: 0 },
78
+ * { content: "", type: 'css', parent: null }
79
+ * ]
80
+ * ```
81
+ *
82
+ * Example with JS expression:
83
+ * ```
84
+ * Input: ".box { color: {{ expr }}; }"
85
+ * Slices: [
86
+ * { content: ".box ", type: 'css', parent: null },
87
+ * { content: " color: ", type: 'css', parent: 0 },
88
+ * { content: " expr ", type: 'js', parent: 1 },
89
+ * { content: "; ", type: 'css', parent: 0 },
90
+ * { content: "", type: 'css', parent: null }
91
+ * ]
92
+ * ```
93
+ *
94
+ * Example with style block:
95
+ * ```
96
+ * Input: ".box { {{ @{ color: red; } }} }"
97
+ * Slices: [
98
+ * { content: ".box ", type: 'css', parent: null },
99
+ * { content: " ", type: 'css', parent: 0 },
100
+ * { content: " ", type: 'js', parent: 1 },
101
+ * { content: " color: red; ", type: 'css', parent: 2 }, // CSS inside @{ }
102
+ * { content: " ", type: 'js', parent: 1 },
103
+ * { content: " ", type: 'css', parent: 0 },
104
+ * { content: "", type: 'css', parent: null }
105
+ * ]
106
+ * ```
107
+ *
108
+ * @param cssZone - The CSS text to split
109
+ * @returns Object with slices array, minDepth, and maxDepth
110
+ */
111
+ export declare function cutByBraces(cssZone: string): ScopeSlices;
112
+ /**
113
+ * Finds the value of a CSS property by searching the scope tree.
114
+ *
115
+ * Story 3.3: Algorithm using parent references:
116
+ * 1. Search current slice (up to the position before @prop)
117
+ * 2. Search earlier sibling slices (same parent, earlier index)
118
+ * 3. Walk up to parent and repeat
119
+ * 4. Stop when we reach a root slice (parent: null) and exhaust all earlier siblings
120
+ *
121
+ * JS-type slices ({{ }}) are skipped during search since they contain
122
+ * JS code, not CSS property declarations.
123
+ *
124
+ * @param propName - The property name to look up (e.g., "border")
125
+ * @param slices - The slices from cutByBraces()
126
+ * @param currentIndex - Index of the slice containing the @prop reference
127
+ * @param positionInSlice - Character position in current slice (for self-reference protection)
128
+ * @returns The property value, or empty string if not found
129
+ */
130
+ export declare function findPropertyValue(propName: string, slices: ScopeSlice[], currentIndex: number, positionInSlice?: number): string;
131
+ /**
132
+ * Determines if two slices are in different sibling selector trees.
133
+ *
134
+ * Sibling trees are isolated - properties from one top-level rule
135
+ * cannot be accessed from another. Two slices are siblings when
136
+ * they don't share a common ancestor (neither is in the other's parent chain).
137
+ *
138
+ * Story 3.3: Uses parent references for simpler implementation.
139
+ *
140
+ * @param sliceIndexA - Index of first slice
141
+ * @param sliceIndexB - Index of second slice
142
+ * @param slices - The slices from cutByBraces()
143
+ * @returns true if slices are in DIFFERENT sibling trees (isolated from each other)
144
+ */
145
+ export declare function areSiblingTrees(sliceIndexA: number, sliceIndexB: number, slices: ScopeSlice[]): boolean;
146
+ /**
147
+ * Checks if a slice is inside an at-rule boundary (@media, @layer, etc).
148
+ *
149
+ * At-rule boundaries create separate scopes - properties from outside
150
+ * cannot be accessed from inside (in v0).
151
+ *
152
+ * Story 3.3: Uses parent references for simpler implementation.
153
+ * Walks up the parent chain checking if any ancestor contains an at-rule.
154
+ *
155
+ * @param slices - The slices from cutByBraces()
156
+ * @param sliceIndex - Index of the slice to check
157
+ * @returns true if the slice is inside an at-rule
158
+ */
159
+ export declare function isInsideAtRule(slices: ScopeSlice[], sliceIndex: number): boolean;
160
+ //# sourceMappingURL=scope-tracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scope-tracker.d.ts","sourceRoot":"","sources":["../src/scope-tracker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;AAEjD;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,qCAAqC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC;IACnB,2DAA2D;IAC3D,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,2EAA2E;IAC3E,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,sEAAsE;IACtE,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,2EAA2E;IAC3E,QAAQ,EAAE,MAAM,CAAC;IACjB,4BAA4B;IAC5B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAUD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CA2GxD;AAkCD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,UAAU,EAAE,EACpB,YAAY,EAAE,MAAM,EACpB,eAAe,GAAE,MAAW,GAC3B,MAAM,CAuFR;AAoBD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,UAAU,EAAE,GACnB,OAAO,CAmBT;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,UAAU,EAAE,EACpB,UAAU,EAAE,MAAM,GACjB,OAAO,CAcT"}
@@ -0,0 +1,376 @@
1
+ /**
2
+ * Scope tracking utilities for CSS property accumulation.
3
+ *
4
+ * Story 3.1: CSS Accumulator in Transpiler
5
+ * Story 3.3: Lookup in {{ }} Context
6
+ * Story 5.1: @{ } Style Block context tracking
7
+ *
8
+ * This module provides utilities for:
9
+ * 1. Cutting CSS into slices at brace boundaries
10
+ * 2. Looking up property values by walking parent chain
11
+ *
12
+ * The approach uses string slices and lazy regex lookup (not Maps).
13
+ * This is compile-time resolution - values are resolved during transpilation.
14
+ *
15
+ * Story 3.3 additions:
16
+ * - Each slice tracks its type ('css' or 'js') based on brace type
17
+ * - Each slice has a parent reference for easy scope walking
18
+ * - findPropertyValue() skips JS-type slices during lookup
19
+ *
20
+ * Story 5.1 additions:
21
+ * - @{ } creates CSS context inside JS context
22
+ * - Context nesting: CSS → {{ JS → @{ CSS → {{ JS }} → CSS } → JS }} → CSS
23
+ */
24
+ /**
25
+ * Cuts CSS text into slices at brace boundaries.
26
+ *
27
+ * Handles three brace types:
28
+ * - { } for CSS blocks (CSS context)
29
+ * - {{ }} for JS expressions (JS context)
30
+ * - @{ } for style blocks (CSS context inside JS)
31
+ *
32
+ * Story 3.3: Each slice now includes:
33
+ * - type: 'css' for content inside { } and @{ }, 'js' for content inside {{ }}
34
+ * - parent: index of the parent slice for scope walking
35
+ *
36
+ * Story 5.1: @{ } creates CSS context inside JS, enabling @(prop) resolution
37
+ * inside style blocks.
38
+ *
39
+ * Example with CSS nesting:
40
+ * ```
41
+ * Input: ".parent { color: blue; .child { border: 1px; } }"
42
+ * Slices: [
43
+ * { content: ".parent ", type: 'css', parent: null },
44
+ * { content: " color: blue; .child ", type: 'css', parent: 0 },
45
+ * { content: " border: 1px; ", type: 'css', parent: 1 },
46
+ * { content: " ", type: 'css', parent: 0 },
47
+ * { content: "", type: 'css', parent: null }
48
+ * ]
49
+ * ```
50
+ *
51
+ * Example with JS expression:
52
+ * ```
53
+ * Input: ".box { color: {{ expr }}; }"
54
+ * Slices: [
55
+ * { content: ".box ", type: 'css', parent: null },
56
+ * { content: " color: ", type: 'css', parent: 0 },
57
+ * { content: " expr ", type: 'js', parent: 1 },
58
+ * { content: "; ", type: 'css', parent: 0 },
59
+ * { content: "", type: 'css', parent: null }
60
+ * ]
61
+ * ```
62
+ *
63
+ * Example with style block:
64
+ * ```
65
+ * Input: ".box { {{ @{ color: red; } }} }"
66
+ * Slices: [
67
+ * { content: ".box ", type: 'css', parent: null },
68
+ * { content: " ", type: 'css', parent: 0 },
69
+ * { content: " ", type: 'js', parent: 1 },
70
+ * { content: " color: red; ", type: 'css', parent: 2 }, // CSS inside @{ }
71
+ * { content: " ", type: 'js', parent: 1 },
72
+ * { content: " ", type: 'css', parent: 0 },
73
+ * { content: "", type: 'css', parent: null }
74
+ * ]
75
+ * ```
76
+ *
77
+ * @param cssZone - The CSS text to split
78
+ * @returns Object with slices array, minDepth, and maxDepth
79
+ */
80
+ export function cutByBraces(cssZone) {
81
+ if (!cssZone) {
82
+ return {
83
+ slices: [{ content: '', type: 'css', parent: null, openedBy: null }],
84
+ minDepth: 0,
85
+ maxDepth: 0
86
+ };
87
+ }
88
+ const slices = [];
89
+ const parentStack = []; // Stack of parent slice indices
90
+ const contextStack = []; // Stack of brace types for matching
91
+ let currentSlice = '';
92
+ let currentType = 'css';
93
+ let currentOpenedBy = null; // What opened the current slice
94
+ let depth = 0;
95
+ let minDepth = 0;
96
+ let maxDepth = 0;
97
+ for (let i = 0; i < cssZone.length; i++) {
98
+ const char = cssZone[i];
99
+ const nextChar = cssZone[i + 1];
100
+ // Check for {{ (double opening brace - JS expression)
101
+ if (char === '{' && nextChar === '{') {
102
+ // Push current slice with current parent and openedBy
103
+ const parent = parentStack.length > 0 ? parentStack[parentStack.length - 1] : null;
104
+ slices.push({ content: currentSlice, type: currentType, parent, openedBy: currentOpenedBy });
105
+ // The slice we just pushed becomes the parent for nested content
106
+ parentStack.push(slices.length - 1);
107
+ contextStack.push({ braceType: '{{', sliceIndex: slices.length - 1 });
108
+ currentSlice = '';
109
+ currentType = 'js'; // Entering JS expression
110
+ currentOpenedBy = '{{';
111
+ depth++;
112
+ maxDepth = Math.max(maxDepth, depth);
113
+ i++; // Skip the second {
114
+ }
115
+ // Check for }} (double closing brace - JS expression)
116
+ else if (char === '}' && nextChar === '}') {
117
+ // Push current slice with current parent and openedBy
118
+ const parent = parentStack.length > 0 ? parentStack[parentStack.length - 1] : null;
119
+ slices.push({ content: currentSlice, type: currentType, parent, openedBy: currentOpenedBy });
120
+ // Pop parent since we're exiting this scope
121
+ parentStack.pop();
122
+ contextStack.pop();
123
+ currentSlice = '';
124
+ // Determine what type and openedBy to return to based on context stack
125
+ currentType = getContextType(contextStack);
126
+ currentOpenedBy = getContextOpenedBy(contextStack);
127
+ depth--;
128
+ minDepth = Math.min(minDepth, depth);
129
+ i++; // Skip the second }
130
+ }
131
+ // Check for @{ (style block - CSS inside JS)
132
+ else if (char === '@' && nextChar === '{') {
133
+ // Push current slice with current parent and openedBy
134
+ const parent = parentStack.length > 0 ? parentStack[parentStack.length - 1] : null;
135
+ slices.push({ content: currentSlice, type: currentType, parent, openedBy: currentOpenedBy });
136
+ // The slice we just pushed becomes the parent for nested content
137
+ parentStack.push(slices.length - 1);
138
+ contextStack.push({ braceType: '@{', sliceIndex: slices.length - 1 });
139
+ currentSlice = '';
140
+ currentType = 'css'; // @{ } creates CSS context
141
+ currentOpenedBy = '@{';
142
+ depth++;
143
+ maxDepth = Math.max(maxDepth, depth);
144
+ i++; // Skip the {
145
+ }
146
+ // Single { (CSS block)
147
+ else if (char === '{') {
148
+ // Push current slice with current parent and openedBy
149
+ const parent = parentStack.length > 0 ? parentStack[parentStack.length - 1] : null;
150
+ slices.push({ content: currentSlice, type: currentType, parent, openedBy: currentOpenedBy });
151
+ // The slice we just pushed becomes the parent for nested content
152
+ parentStack.push(slices.length - 1);
153
+ contextStack.push({ braceType: '{', sliceIndex: slices.length - 1 });
154
+ currentSlice = '';
155
+ currentOpenedBy = '{';
156
+ // CSS block stays in current type (CSS if in CSS, JS if in JS)
157
+ depth++;
158
+ maxDepth = Math.max(maxDepth, depth);
159
+ }
160
+ // Single } (closes CSS block, @{ block, or is part of JS)
161
+ else if (char === '}') {
162
+ // Push current slice with current parent and openedBy
163
+ const parent = parentStack.length > 0 ? parentStack[parentStack.length - 1] : null;
164
+ slices.push({ content: currentSlice, type: currentType, parent, openedBy: currentOpenedBy });
165
+ // Pop parent since we're exiting this scope
166
+ parentStack.pop();
167
+ contextStack.pop();
168
+ currentSlice = '';
169
+ // Determine what type and openedBy to return to based on context stack
170
+ currentType = getContextType(contextStack);
171
+ currentOpenedBy = getContextOpenedBy(contextStack);
172
+ depth--;
173
+ minDepth = Math.min(minDepth, depth);
174
+ }
175
+ else {
176
+ currentSlice += char;
177
+ }
178
+ }
179
+ // Always add trailing content (even if empty) to maintain consistent structure
180
+ const parent = parentStack.length > 0 ? parentStack[parentStack.length - 1] : null;
181
+ slices.push({ content: currentSlice, type: currentType, parent, openedBy: currentOpenedBy });
182
+ return { slices, minDepth, maxDepth };
183
+ }
184
+ /**
185
+ * Determines the current context type based on the context stack.
186
+ *
187
+ * - Empty stack or top is '{' → 'css'
188
+ * - Top is '{{' → 'js'
189
+ * - Top is '@{' → 'css' (style block creates CSS inside JS)
190
+ */
191
+ function getContextType(contextStack) {
192
+ if (contextStack.length === 0) {
193
+ return 'css';
194
+ }
195
+ const top = contextStack[contextStack.length - 1];
196
+ switch (top.braceType) {
197
+ case '{{':
198
+ return 'js';
199
+ case '@{':
200
+ case '{':
201
+ default:
202
+ return 'css';
203
+ }
204
+ }
205
+ /**
206
+ * Determines what brace opened the current context based on the context stack.
207
+ */
208
+ function getContextOpenedBy(contextStack) {
209
+ if (contextStack.length === 0) {
210
+ return null;
211
+ }
212
+ return contextStack[contextStack.length - 1].braceType;
213
+ }
214
+ /**
215
+ * Finds the value of a CSS property by searching the scope tree.
216
+ *
217
+ * Story 3.3: Algorithm using parent references:
218
+ * 1. Search current slice (up to the position before @prop)
219
+ * 2. Search earlier sibling slices (same parent, earlier index)
220
+ * 3. Walk up to parent and repeat
221
+ * 4. Stop when we reach a root slice (parent: null) and exhaust all earlier siblings
222
+ *
223
+ * JS-type slices ({{ }}) are skipped during search since they contain
224
+ * JS code, not CSS property declarations.
225
+ *
226
+ * @param propName - The property name to look up (e.g., "border")
227
+ * @param slices - The slices from cutByBraces()
228
+ * @param currentIndex - Index of the slice containing the @prop reference
229
+ * @param positionInSlice - Character position in current slice (for self-reference protection)
230
+ * @returns The property value, or empty string if not found
231
+ */
232
+ export function findPropertyValue(propName, slices, currentIndex, positionInSlice = -1) {
233
+ if (currentIndex < 0 || currentIndex >= slices.length) {
234
+ return '';
235
+ }
236
+ // Escape special regex characters in property name
237
+ const escapedPropName = propName.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
238
+ // Pattern: propName followed by : but NOT preceded by @
239
+ // Must match whole property name (word boundary or start of string)
240
+ // Captures the value between : and ; (or end of block)
241
+ // Uses negative lookbehind to exclude @propName: (CSS at-rules)
242
+ const pattern = new RegExp(`(?:^|[\\s;])(?<!@)${escapedPropName}\\s*:\\s*([^;{}]+?)(?:;|$)`, 'gi');
243
+ // Helper to check if a value is resolved (doesn't contain @(...) references)
244
+ const isResolvedValue = (value) => {
245
+ return !value.includes('@(');
246
+ };
247
+ // Search current slice first (with position limit for self-reference protection)
248
+ const currentSlice = slices[currentIndex];
249
+ if (currentSlice.type === 'css') {
250
+ const searchContent = positionInSlice >= 0
251
+ ? currentSlice.content.slice(0, positionInSlice)
252
+ : currentSlice.content;
253
+ const match = findLastMatch(searchContent, pattern);
254
+ if (match) {
255
+ const trimmed = match.trim();
256
+ // Skip values that contain unresolved @(...) references
257
+ if (isResolvedValue(trimmed)) {
258
+ return trimmed;
259
+ }
260
+ }
261
+ }
262
+ // Now search backwards through all earlier slices
263
+ // We search slices with the same parent first (siblings), then walk up
264
+ // The key insight: walk backward through slices, but only search those
265
+ // that are in our ancestry chain (share a common parent path)
266
+ // Build the set of all ancestor indices (the parent chain from current slice)
267
+ const ancestorIndices = new Set();
268
+ let parentIndex = currentSlice.parent;
269
+ while (parentIndex !== null) {
270
+ ancestorIndices.add(parentIndex);
271
+ parentIndex = slices[parentIndex].parent;
272
+ }
273
+ // Walk backward through slices, searching those that share our ancestry
274
+ for (let i = currentIndex - 1; i >= 0; i--) {
275
+ const slice = slices[i];
276
+ // Skip JS-type slices
277
+ if (slice.type === 'js') {
278
+ continue;
279
+ }
280
+ // Check if this slice is in our ancestor chain or shares a parent with one of them
281
+ // A slice is reachable if:
282
+ // 1. It's one of our ancestors (in ancestorIndices)
283
+ // 2. Its parent is one of our ancestors (it's a sibling of an ancestor)
284
+ const isAncestor = ancestorIndices.has(i);
285
+ const isReachableSibling = slice.parent !== null && ancestorIndices.has(slice.parent);
286
+ // Also include slices whose parent is the same as current slice's parent (direct siblings)
287
+ const isDirectSibling = slice.parent === currentSlice.parent;
288
+ if (!isAncestor && !isReachableSibling && !isDirectSibling) {
289
+ continue;
290
+ }
291
+ // Search this slice
292
+ const match = findLastMatch(slice.content, pattern);
293
+ if (match) {
294
+ const trimmed = match.trim();
295
+ // Skip values that contain unresolved @(...) references
296
+ if (isResolvedValue(trimmed)) {
297
+ return trimmed;
298
+ }
299
+ }
300
+ }
301
+ // Not found - return empty string (MVP behavior)
302
+ return '';
303
+ }
304
+ /**
305
+ * Finds the last match of a pattern in text.
306
+ * Returns the captured group 1 (the property value).
307
+ */
308
+ function findLastMatch(text, pattern) {
309
+ // Reset lastIndex for global regex
310
+ pattern.lastIndex = 0;
311
+ let lastMatch = null;
312
+ let match;
313
+ while ((match = pattern.exec(text)) !== null) {
314
+ lastMatch = match[1] ?? null;
315
+ }
316
+ return lastMatch;
317
+ }
318
+ /**
319
+ * Determines if two slices are in different sibling selector trees.
320
+ *
321
+ * Sibling trees are isolated - properties from one top-level rule
322
+ * cannot be accessed from another. Two slices are siblings when
323
+ * they don't share a common ancestor (neither is in the other's parent chain).
324
+ *
325
+ * Story 3.3: Uses parent references for simpler implementation.
326
+ *
327
+ * @param sliceIndexA - Index of first slice
328
+ * @param sliceIndexB - Index of second slice
329
+ * @param slices - The slices from cutByBraces()
330
+ * @returns true if slices are in DIFFERENT sibling trees (isolated from each other)
331
+ */
332
+ export function areSiblingTrees(sliceIndexA, sliceIndexB, slices) {
333
+ // Build set of all ancestors of slice A (including A itself)
334
+ const ancestorsA = new Set();
335
+ let index = sliceIndexA;
336
+ while (index !== null) {
337
+ ancestorsA.add(index);
338
+ index = slices[index].parent;
339
+ }
340
+ // Check if slice B or any of its ancestors is in A's ancestor set
341
+ index = sliceIndexB;
342
+ while (index !== null) {
343
+ if (ancestorsA.has(index)) {
344
+ return false; // Found common ancestor - not siblings
345
+ }
346
+ index = slices[index].parent;
347
+ }
348
+ return true; // No common ancestor - they are siblings
349
+ }
350
+ /**
351
+ * Checks if a slice is inside an at-rule boundary (@media, @layer, etc).
352
+ *
353
+ * At-rule boundaries create separate scopes - properties from outside
354
+ * cannot be accessed from inside (in v0).
355
+ *
356
+ * Story 3.3: Uses parent references for simpler implementation.
357
+ * Walks up the parent chain checking if any ancestor contains an at-rule.
358
+ *
359
+ * @param slices - The slices from cutByBraces()
360
+ * @param sliceIndex - Index of the slice to check
361
+ * @returns true if the slice is inside an at-rule
362
+ */
363
+ export function isInsideAtRule(slices, sliceIndex) {
364
+ // Walk up parent chain looking for at-rule patterns
365
+ let index = slices[sliceIndex]?.parent ?? null;
366
+ while (index !== null) {
367
+ const slice = slices[index];
368
+ // Check if this ancestor contains an at-rule
369
+ if (/@(?:media|layer|supports|container|keyframes|font-face)\b/i.test(slice.content)) {
370
+ return true;
371
+ }
372
+ index = slice.parent;
373
+ }
374
+ return false;
375
+ }
376
+ //# sourceMappingURL=scope-tracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scope-tracker.js","sourceRoot":"","sources":["../src/scope-tracker.ts"],"names":[],"mappings":"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"}