@idealyst/tooling 1.2.24 → 1.2.26

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.
Files changed (57) hide show
  1. package/dist/analyzer/index.cjs +727 -0
  2. package/dist/analyzer/index.cjs.map +1 -0
  3. package/dist/analyzer/index.d.cts +65 -0
  4. package/dist/analyzer/index.d.ts +65 -0
  5. package/dist/analyzer/index.js +687 -0
  6. package/dist/analyzer/index.js.map +1 -0
  7. package/dist/analyzers/index.cjs +1201 -0
  8. package/dist/analyzers/index.cjs.map +1 -0
  9. package/dist/analyzers/index.d.cts +205 -0
  10. package/dist/analyzers/index.d.ts +205 -0
  11. package/dist/analyzers/index.js +1155 -0
  12. package/dist/analyzers/index.js.map +1 -0
  13. package/dist/index.cjs +2143 -0
  14. package/dist/index.cjs.map +1 -0
  15. package/dist/index.d.cts +55 -0
  16. package/dist/index.d.ts +55 -0
  17. package/dist/index.js +2061 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/rules/index.cjs +522 -0
  20. package/dist/rules/index.cjs.map +1 -0
  21. package/dist/rules/index.d.cts +69 -0
  22. package/dist/rules/index.d.ts +69 -0
  23. package/dist/rules/index.js +481 -0
  24. package/dist/rules/index.js.map +1 -0
  25. package/dist/types-CrlxbLFJ.d.cts +121 -0
  26. package/dist/types-CrlxbLFJ.d.ts +121 -0
  27. package/dist/types-CvIlSIOV.d.cts +149 -0
  28. package/dist/types-CvIlSIOV.d.ts +149 -0
  29. package/dist/utils/index.cjs +709 -0
  30. package/dist/utils/index.cjs.map +1 -0
  31. package/dist/utils/index.d.cts +94 -0
  32. package/dist/utils/index.d.ts +94 -0
  33. package/dist/utils/index.js +662 -0
  34. package/dist/utils/index.js.map +1 -0
  35. package/dist/vite-plugin.cjs +800 -0
  36. package/dist/vite-plugin.cjs.map +1 -0
  37. package/dist/vite-plugin.d.cts +40 -0
  38. package/dist/vite-plugin.d.ts +40 -0
  39. package/dist/vite-plugin.js +764 -0
  40. package/dist/vite-plugin.js.map +1 -0
  41. package/package.json +26 -24
  42. package/src/analyzer/component-analyzer.ts +0 -554
  43. package/src/analyzer/index.ts +0 -16
  44. package/src/analyzer/theme-analyzer.ts +0 -473
  45. package/src/analyzer/types.ts +0 -159
  46. package/src/analyzers/componentLinter.ts +0 -397
  47. package/src/analyzers/index.ts +0 -2
  48. package/src/analyzers/platformImports.ts +0 -391
  49. package/src/index.ts +0 -156
  50. package/src/rules/index.ts +0 -2
  51. package/src/rules/reactDomPrimitives.ts +0 -217
  52. package/src/rules/reactNativePrimitives.ts +0 -362
  53. package/src/types.ts +0 -173
  54. package/src/utils/fileClassifier.ts +0 -135
  55. package/src/utils/importParser.ts +0 -235
  56. package/src/utils/index.ts +0 -2
  57. package/src/vite-plugin.ts +0 -199
@@ -0,0 +1,69 @@
1
+ import { d as PrimitiveRule, e as PrimitiveRuleSet } from '../types-CvIlSIOV.js';
2
+
3
+ /**
4
+ * Module sources that indicate React Native platform
5
+ */
6
+ declare const REACT_NATIVE_SOURCES: readonly ["react-native", "react-native-web", "react-native-gesture-handler", "react-native-reanimated", "react-native-safe-area-context", "react-native-screens", "react-native-svg", "@react-native-vector-icons/material-design-icons", "@react-native-vector-icons/common", "@react-native-community/async-storage", "@react-native-picker/picker", "expo", "expo-constants", "expo-linking", "expo-status-bar"];
7
+ /**
8
+ * All React Native primitives combined
9
+ */
10
+ declare const REACT_NATIVE_PRIMITIVES: PrimitiveRule[];
11
+ /**
12
+ * Set of primitive names for quick lookup
13
+ */
14
+ declare const REACT_NATIVE_PRIMITIVE_NAMES: Set<string>;
15
+ /**
16
+ * Complete rule set for React Native
17
+ */
18
+ declare const REACT_NATIVE_RULE_SET: PrimitiveRuleSet;
19
+ /**
20
+ * Check if a name is a React Native primitive
21
+ */
22
+ declare function isReactNativePrimitive(name: string): boolean;
23
+ /**
24
+ * Get primitive info by name
25
+ */
26
+ declare function getReactNativePrimitive(name: string): PrimitiveRule | undefined;
27
+
28
+ /**
29
+ * Module sources that indicate React DOM platform
30
+ */
31
+ declare const REACT_DOM_SOURCES: readonly ["react-dom", "react-dom/client", "react-dom/server"];
32
+ /**
33
+ * Intrinsic HTML elements that indicate web-only code
34
+ * These are JSX intrinsic elements that only exist in DOM
35
+ *
36
+ * Note: These are detected via JSX usage, not imports
37
+ * This list is for reference and specialized detection
38
+ */
39
+ declare const HTML_INTRINSIC_ELEMENTS: readonly ["html", "head", "body", "main", "header", "footer", "nav", "aside", "article", "section", "div", "span", "p", "h1", "h2", "h3", "h4", "h5", "h6", "a", "strong", "em", "code", "pre", "blockquote", "br", "hr", "ul", "ol", "li", "dl", "dt", "dd", "table", "thead", "tbody", "tfoot", "tr", "th", "td", "caption", "colgroup", "col", "form", "input", "textarea", "select", "option", "optgroup", "button", "label", "fieldset", "legend", "datalist", "output", "progress", "meter", "img", "video", "audio", "source", "track", "picture", "figure", "figcaption", "canvas", "svg", "iframe", "embed", "object", "details", "summary", "dialog", "menu", "script", "noscript", "template", "slot"];
40
+ /**
41
+ * All React DOM primitives (API functions)
42
+ */
43
+ declare const REACT_DOM_PRIMITIVES: PrimitiveRule[];
44
+ /**
45
+ * Set of primitive names for quick lookup
46
+ */
47
+ declare const REACT_DOM_PRIMITIVE_NAMES: Set<string>;
48
+ /**
49
+ * Set of HTML intrinsic element names for quick lookup
50
+ */
51
+ declare const HTML_ELEMENT_NAMES: Set<string>;
52
+ /**
53
+ * Complete rule set for React DOM
54
+ */
55
+ declare const REACT_DOM_RULE_SET: PrimitiveRuleSet;
56
+ /**
57
+ * Check if a name is a React DOM primitive (API function)
58
+ */
59
+ declare function isReactDomPrimitive(name: string): boolean;
60
+ /**
61
+ * Check if a name is an HTML intrinsic element
62
+ */
63
+ declare function isHtmlElement(name: string): boolean;
64
+ /**
65
+ * Get primitive info by name
66
+ */
67
+ declare function getReactDomPrimitive(name: string): PrimitiveRule | undefined;
68
+
69
+ export { HTML_ELEMENT_NAMES, HTML_INTRINSIC_ELEMENTS, REACT_DOM_PRIMITIVES, REACT_DOM_PRIMITIVE_NAMES, REACT_DOM_RULE_SET, REACT_DOM_SOURCES, REACT_NATIVE_PRIMITIVES, REACT_NATIVE_PRIMITIVE_NAMES, REACT_NATIVE_RULE_SET, REACT_NATIVE_SOURCES, getReactDomPrimitive, getReactNativePrimitive, isHtmlElement, isReactDomPrimitive, isReactNativePrimitive };
@@ -0,0 +1,481 @@
1
+ // src/rules/reactNativePrimitives.ts
2
+ var REACT_NATIVE_SOURCES = [
3
+ "react-native",
4
+ "react-native-web",
5
+ "react-native-gesture-handler",
6
+ "react-native-reanimated",
7
+ "react-native-safe-area-context",
8
+ "react-native-screens",
9
+ "react-native-svg",
10
+ "@react-native-vector-icons/material-design-icons",
11
+ "@react-native-vector-icons/common",
12
+ "@react-native-community/async-storage",
13
+ "@react-native-picker/picker",
14
+ "expo",
15
+ "expo-constants",
16
+ "expo-linking",
17
+ "expo-status-bar"
18
+ ];
19
+ var CORE_PRIMITIVES = [
20
+ {
21
+ name: "View",
22
+ source: "react-native",
23
+ platform: "react-native",
24
+ description: "Basic container component"
25
+ },
26
+ {
27
+ name: "Text",
28
+ source: "react-native",
29
+ platform: "react-native",
30
+ description: "Text display component"
31
+ },
32
+ {
33
+ name: "Image",
34
+ source: "react-native",
35
+ platform: "react-native",
36
+ description: "Image display component"
37
+ },
38
+ {
39
+ name: "ImageBackground",
40
+ source: "react-native",
41
+ platform: "react-native",
42
+ description: "Background image container"
43
+ },
44
+ {
45
+ name: "ScrollView",
46
+ source: "react-native",
47
+ platform: "react-native",
48
+ description: "Scrollable container"
49
+ },
50
+ {
51
+ name: "FlatList",
52
+ source: "react-native",
53
+ platform: "react-native",
54
+ description: "Performant list component"
55
+ },
56
+ {
57
+ name: "SectionList",
58
+ source: "react-native",
59
+ platform: "react-native",
60
+ description: "Sectioned list component"
61
+ },
62
+ {
63
+ name: "VirtualizedList",
64
+ source: "react-native",
65
+ platform: "react-native",
66
+ description: "Base virtualized list"
67
+ }
68
+ ];
69
+ var INTERACTIVE_PRIMITIVES = [
70
+ {
71
+ name: "TouchableOpacity",
72
+ source: "react-native",
73
+ platform: "react-native",
74
+ description: "Touch with opacity feedback"
75
+ },
76
+ {
77
+ name: "TouchableHighlight",
78
+ source: "react-native",
79
+ platform: "react-native",
80
+ description: "Touch with highlight feedback"
81
+ },
82
+ {
83
+ name: "TouchableWithoutFeedback",
84
+ source: "react-native",
85
+ platform: "react-native",
86
+ description: "Touch without visual feedback"
87
+ },
88
+ {
89
+ name: "TouchableNativeFeedback",
90
+ source: "react-native",
91
+ platform: "react-native",
92
+ description: "Android ripple feedback"
93
+ },
94
+ {
95
+ name: "Pressable",
96
+ source: "react-native",
97
+ platform: "react-native",
98
+ description: "Modern press handler component"
99
+ },
100
+ {
101
+ name: "Button",
102
+ source: "react-native",
103
+ platform: "react-native",
104
+ description: "Basic button component"
105
+ }
106
+ ];
107
+ var INPUT_PRIMITIVES = [
108
+ {
109
+ name: "TextInput",
110
+ source: "react-native",
111
+ platform: "react-native",
112
+ description: "Text input field"
113
+ },
114
+ {
115
+ name: "Switch",
116
+ source: "react-native",
117
+ platform: "react-native",
118
+ description: "Toggle switch component"
119
+ },
120
+ {
121
+ name: "Slider",
122
+ source: "react-native",
123
+ platform: "react-native",
124
+ description: "Slider input (deprecated)"
125
+ }
126
+ ];
127
+ var MODAL_PRIMITIVES = [
128
+ {
129
+ name: "Modal",
130
+ source: "react-native",
131
+ platform: "react-native",
132
+ description: "Modal overlay component"
133
+ },
134
+ {
135
+ name: "Alert",
136
+ source: "react-native",
137
+ platform: "react-native",
138
+ description: "Native alert dialog"
139
+ },
140
+ {
141
+ name: "ActionSheetIOS",
142
+ source: "react-native",
143
+ platform: "react-native",
144
+ description: "iOS action sheet"
145
+ },
146
+ {
147
+ name: "StatusBar",
148
+ source: "react-native",
149
+ platform: "react-native",
150
+ description: "Status bar controller"
151
+ }
152
+ ];
153
+ var ANIMATION_PRIMITIVES = [
154
+ {
155
+ name: "Animated",
156
+ source: "react-native",
157
+ platform: "react-native",
158
+ description: "Animation library namespace"
159
+ },
160
+ {
161
+ name: "Easing",
162
+ source: "react-native",
163
+ platform: "react-native",
164
+ description: "Easing functions"
165
+ },
166
+ {
167
+ name: "LayoutAnimation",
168
+ source: "react-native",
169
+ platform: "react-native",
170
+ description: "Layout animation controller"
171
+ }
172
+ ];
173
+ var PLATFORM_PRIMITIVES = [
174
+ {
175
+ name: "Platform",
176
+ source: "react-native",
177
+ platform: "react-native",
178
+ description: "Platform detection utility"
179
+ },
180
+ {
181
+ name: "Dimensions",
182
+ source: "react-native",
183
+ platform: "react-native",
184
+ description: "Screen dimensions utility"
185
+ },
186
+ {
187
+ name: "PixelRatio",
188
+ source: "react-native",
189
+ platform: "react-native",
190
+ description: "Pixel ratio utility"
191
+ },
192
+ {
193
+ name: "Appearance",
194
+ source: "react-native",
195
+ platform: "react-native",
196
+ description: "Color scheme detection"
197
+ },
198
+ {
199
+ name: "useColorScheme",
200
+ source: "react-native",
201
+ platform: "react-native",
202
+ description: "Color scheme hook"
203
+ },
204
+ {
205
+ name: "useWindowDimensions",
206
+ source: "react-native",
207
+ platform: "react-native",
208
+ description: "Window dimensions hook"
209
+ }
210
+ ];
211
+ var EVENT_PRIMITIVES = [
212
+ {
213
+ name: "BackHandler",
214
+ source: "react-native",
215
+ platform: "react-native",
216
+ description: "Android back button handler"
217
+ },
218
+ {
219
+ name: "Keyboard",
220
+ source: "react-native",
221
+ platform: "react-native",
222
+ description: "Keyboard event handler"
223
+ },
224
+ {
225
+ name: "PanResponder",
226
+ source: "react-native",
227
+ platform: "react-native",
228
+ description: "Gesture responder system"
229
+ },
230
+ {
231
+ name: "Linking",
232
+ source: "react-native",
233
+ platform: "react-native",
234
+ description: "Deep linking utility"
235
+ },
236
+ {
237
+ name: "AppState",
238
+ source: "react-native",
239
+ platform: "react-native",
240
+ description: "App lifecycle state"
241
+ }
242
+ ];
243
+ var SAFETY_PRIMITIVES = [
244
+ {
245
+ name: "SafeAreaView",
246
+ source: "react-native",
247
+ platform: "react-native",
248
+ description: "Safe area inset container"
249
+ },
250
+ {
251
+ name: "KeyboardAvoidingView",
252
+ source: "react-native",
253
+ platform: "react-native",
254
+ description: "Keyboard avoidance container"
255
+ }
256
+ ];
257
+ var ACCESSIBILITY_PRIMITIVES = [
258
+ {
259
+ name: "AccessibilityInfo",
260
+ source: "react-native",
261
+ platform: "react-native",
262
+ description: "Accessibility information API"
263
+ }
264
+ ];
265
+ var STYLE_PRIMITIVES = [
266
+ {
267
+ name: "StyleSheet",
268
+ source: "react-native",
269
+ platform: "react-native",
270
+ description: "Style sheet creator"
271
+ }
272
+ ];
273
+ var REACT_NATIVE_PRIMITIVES = [
274
+ ...CORE_PRIMITIVES,
275
+ ...INTERACTIVE_PRIMITIVES,
276
+ ...INPUT_PRIMITIVES,
277
+ ...MODAL_PRIMITIVES,
278
+ ...ANIMATION_PRIMITIVES,
279
+ ...PLATFORM_PRIMITIVES,
280
+ ...EVENT_PRIMITIVES,
281
+ ...SAFETY_PRIMITIVES,
282
+ ...ACCESSIBILITY_PRIMITIVES,
283
+ ...STYLE_PRIMITIVES
284
+ ];
285
+ var REACT_NATIVE_PRIMITIVE_NAMES = new Set(
286
+ REACT_NATIVE_PRIMITIVES.map((p) => p.name)
287
+ );
288
+ var REACT_NATIVE_RULE_SET = {
289
+ platform: "react-native",
290
+ primitives: REACT_NATIVE_PRIMITIVES,
291
+ sources: [...REACT_NATIVE_SOURCES]
292
+ };
293
+ function isReactNativePrimitive(name) {
294
+ return REACT_NATIVE_PRIMITIVE_NAMES.has(name);
295
+ }
296
+ function getReactNativePrimitive(name) {
297
+ return REACT_NATIVE_PRIMITIVES.find((p) => p.name === name);
298
+ }
299
+
300
+ // src/rules/reactDomPrimitives.ts
301
+ var REACT_DOM_SOURCES = [
302
+ "react-dom",
303
+ "react-dom/client",
304
+ "react-dom/server"
305
+ ];
306
+ var DOM_API_PRIMITIVES = [
307
+ {
308
+ name: "createPortal",
309
+ source: "react-dom",
310
+ platform: "react-dom",
311
+ description: "Render children into a different DOM node"
312
+ },
313
+ {
314
+ name: "flushSync",
315
+ source: "react-dom",
316
+ platform: "react-dom",
317
+ description: "Force synchronous DOM updates"
318
+ },
319
+ {
320
+ name: "createRoot",
321
+ source: "react-dom/client",
322
+ platform: "react-dom",
323
+ description: "Create a React root for rendering"
324
+ },
325
+ {
326
+ name: "hydrateRoot",
327
+ source: "react-dom/client",
328
+ platform: "react-dom",
329
+ description: "Hydrate server-rendered content"
330
+ },
331
+ {
332
+ name: "render",
333
+ source: "react-dom",
334
+ platform: "react-dom",
335
+ description: "Legacy render function (deprecated)"
336
+ },
337
+ {
338
+ name: "hydrate",
339
+ source: "react-dom",
340
+ platform: "react-dom",
341
+ description: "Legacy hydrate function (deprecated)"
342
+ },
343
+ {
344
+ name: "unmountComponentAtNode",
345
+ source: "react-dom",
346
+ platform: "react-dom",
347
+ description: "Legacy unmount function (deprecated)"
348
+ },
349
+ {
350
+ name: "findDOMNode",
351
+ source: "react-dom",
352
+ platform: "react-dom",
353
+ description: "Find DOM node (deprecated)"
354
+ }
355
+ ];
356
+ var HTML_INTRINSIC_ELEMENTS = [
357
+ // Document structure
358
+ "html",
359
+ "head",
360
+ "body",
361
+ "main",
362
+ "header",
363
+ "footer",
364
+ "nav",
365
+ "aside",
366
+ "article",
367
+ "section",
368
+ // Content sectioning
369
+ "div",
370
+ "span",
371
+ "p",
372
+ "h1",
373
+ "h2",
374
+ "h3",
375
+ "h4",
376
+ "h5",
377
+ "h6",
378
+ // Text content
379
+ "a",
380
+ "strong",
381
+ "em",
382
+ "code",
383
+ "pre",
384
+ "blockquote",
385
+ "br",
386
+ "hr",
387
+ // Lists
388
+ "ul",
389
+ "ol",
390
+ "li",
391
+ "dl",
392
+ "dt",
393
+ "dd",
394
+ // Tables
395
+ "table",
396
+ "thead",
397
+ "tbody",
398
+ "tfoot",
399
+ "tr",
400
+ "th",
401
+ "td",
402
+ "caption",
403
+ "colgroup",
404
+ "col",
405
+ // Forms
406
+ "form",
407
+ "input",
408
+ "textarea",
409
+ "select",
410
+ "option",
411
+ "optgroup",
412
+ "button",
413
+ "label",
414
+ "fieldset",
415
+ "legend",
416
+ "datalist",
417
+ "output",
418
+ "progress",
419
+ "meter",
420
+ // Media
421
+ "img",
422
+ "video",
423
+ "audio",
424
+ "source",
425
+ "track",
426
+ "picture",
427
+ "figure",
428
+ "figcaption",
429
+ "canvas",
430
+ "svg",
431
+ "iframe",
432
+ "embed",
433
+ "object",
434
+ // Interactive
435
+ "details",
436
+ "summary",
437
+ "dialog",
438
+ "menu",
439
+ // Scripting
440
+ "script",
441
+ "noscript",
442
+ "template",
443
+ "slot"
444
+ ];
445
+ var REACT_DOM_PRIMITIVES = [...DOM_API_PRIMITIVES];
446
+ var REACT_DOM_PRIMITIVE_NAMES = new Set(
447
+ REACT_DOM_PRIMITIVES.map((p) => p.name)
448
+ );
449
+ var HTML_ELEMENT_NAMES = new Set(HTML_INTRINSIC_ELEMENTS);
450
+ var REACT_DOM_RULE_SET = {
451
+ platform: "react-dom",
452
+ primitives: REACT_DOM_PRIMITIVES,
453
+ sources: [...REACT_DOM_SOURCES]
454
+ };
455
+ function isReactDomPrimitive(name) {
456
+ return REACT_DOM_PRIMITIVE_NAMES.has(name);
457
+ }
458
+ function isHtmlElement(name) {
459
+ return HTML_ELEMENT_NAMES.has(name);
460
+ }
461
+ function getReactDomPrimitive(name) {
462
+ return REACT_DOM_PRIMITIVES.find((p) => p.name === name);
463
+ }
464
+ export {
465
+ HTML_ELEMENT_NAMES,
466
+ HTML_INTRINSIC_ELEMENTS,
467
+ REACT_DOM_PRIMITIVES,
468
+ REACT_DOM_PRIMITIVE_NAMES,
469
+ REACT_DOM_RULE_SET,
470
+ REACT_DOM_SOURCES,
471
+ REACT_NATIVE_PRIMITIVES,
472
+ REACT_NATIVE_PRIMITIVE_NAMES,
473
+ REACT_NATIVE_RULE_SET,
474
+ REACT_NATIVE_SOURCES,
475
+ getReactDomPrimitive,
476
+ getReactNativePrimitive,
477
+ isHtmlElement,
478
+ isReactDomPrimitive,
479
+ isReactNativePrimitive
480
+ };
481
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/rules/reactNativePrimitives.ts","../../src/rules/reactDomPrimitives.ts"],"sourcesContent":["import { PrimitiveRule, PrimitiveRuleSet } from '../types';\n\n/**\n * Module sources that indicate React Native platform\n */\nexport const REACT_NATIVE_SOURCES = [\n 'react-native',\n 'react-native-web',\n 'react-native-gesture-handler',\n 'react-native-reanimated',\n 'react-native-safe-area-context',\n 'react-native-screens',\n 'react-native-svg',\n '@react-native-vector-icons/material-design-icons',\n '@react-native-vector-icons/common',\n '@react-native-community/async-storage',\n '@react-native-picker/picker',\n 'expo',\n 'expo-constants',\n 'expo-linking',\n 'expo-status-bar',\n] as const;\n\n/**\n * Core React Native view primitives\n */\nconst CORE_PRIMITIVES: PrimitiveRule[] = [\n {\n name: 'View',\n source: 'react-native',\n platform: 'react-native',\n description: 'Basic container component',\n },\n {\n name: 'Text',\n source: 'react-native',\n platform: 'react-native',\n description: 'Text display component',\n },\n {\n name: 'Image',\n source: 'react-native',\n platform: 'react-native',\n description: 'Image display component',\n },\n {\n name: 'ImageBackground',\n source: 'react-native',\n platform: 'react-native',\n description: 'Background image container',\n },\n {\n name: 'ScrollView',\n source: 'react-native',\n platform: 'react-native',\n description: 'Scrollable container',\n },\n {\n name: 'FlatList',\n source: 'react-native',\n platform: 'react-native',\n description: 'Performant list component',\n },\n {\n name: 'SectionList',\n source: 'react-native',\n platform: 'react-native',\n description: 'Sectioned list component',\n },\n {\n name: 'VirtualizedList',\n source: 'react-native',\n platform: 'react-native',\n description: 'Base virtualized list',\n },\n];\n\n/**\n * Interactive/touchable primitives\n */\nconst INTERACTIVE_PRIMITIVES: PrimitiveRule[] = [\n {\n name: 'TouchableOpacity',\n source: 'react-native',\n platform: 'react-native',\n description: 'Touch with opacity feedback',\n },\n {\n name: 'TouchableHighlight',\n source: 'react-native',\n platform: 'react-native',\n description: 'Touch with highlight feedback',\n },\n {\n name: 'TouchableWithoutFeedback',\n source: 'react-native',\n platform: 'react-native',\n description: 'Touch without visual feedback',\n },\n {\n name: 'TouchableNativeFeedback',\n source: 'react-native',\n platform: 'react-native',\n description: 'Android ripple feedback',\n },\n {\n name: 'Pressable',\n source: 'react-native',\n platform: 'react-native',\n description: 'Modern press handler component',\n },\n {\n name: 'Button',\n source: 'react-native',\n platform: 'react-native',\n description: 'Basic button component',\n },\n];\n\n/**\n * Input primitives\n */\nconst INPUT_PRIMITIVES: PrimitiveRule[] = [\n {\n name: 'TextInput',\n source: 'react-native',\n platform: 'react-native',\n description: 'Text input field',\n },\n {\n name: 'Switch',\n source: 'react-native',\n platform: 'react-native',\n description: 'Toggle switch component',\n },\n {\n name: 'Slider',\n source: 'react-native',\n platform: 'react-native',\n description: 'Slider input (deprecated)',\n },\n];\n\n/**\n * Modal and overlay primitives\n */\nconst MODAL_PRIMITIVES: PrimitiveRule[] = [\n {\n name: 'Modal',\n source: 'react-native',\n platform: 'react-native',\n description: 'Modal overlay component',\n },\n {\n name: 'Alert',\n source: 'react-native',\n platform: 'react-native',\n description: 'Native alert dialog',\n },\n {\n name: 'ActionSheetIOS',\n source: 'react-native',\n platform: 'react-native',\n description: 'iOS action sheet',\n },\n {\n name: 'StatusBar',\n source: 'react-native',\n platform: 'react-native',\n description: 'Status bar controller',\n },\n];\n\n/**\n * Animation primitives\n */\nconst ANIMATION_PRIMITIVES: PrimitiveRule[] = [\n {\n name: 'Animated',\n source: 'react-native',\n platform: 'react-native',\n description: 'Animation library namespace',\n },\n {\n name: 'Easing',\n source: 'react-native',\n platform: 'react-native',\n description: 'Easing functions',\n },\n {\n name: 'LayoutAnimation',\n source: 'react-native',\n platform: 'react-native',\n description: 'Layout animation controller',\n },\n];\n\n/**\n * Platform and device primitives\n */\nconst PLATFORM_PRIMITIVES: PrimitiveRule[] = [\n {\n name: 'Platform',\n source: 'react-native',\n platform: 'react-native',\n description: 'Platform detection utility',\n },\n {\n name: 'Dimensions',\n source: 'react-native',\n platform: 'react-native',\n description: 'Screen dimensions utility',\n },\n {\n name: 'PixelRatio',\n source: 'react-native',\n platform: 'react-native',\n description: 'Pixel ratio utility',\n },\n {\n name: 'Appearance',\n source: 'react-native',\n platform: 'react-native',\n description: 'Color scheme detection',\n },\n {\n name: 'useColorScheme',\n source: 'react-native',\n platform: 'react-native',\n description: 'Color scheme hook',\n },\n {\n name: 'useWindowDimensions',\n source: 'react-native',\n platform: 'react-native',\n description: 'Window dimensions hook',\n },\n];\n\n/**\n * Event handling primitives\n */\nconst EVENT_PRIMITIVES: PrimitiveRule[] = [\n {\n name: 'BackHandler',\n source: 'react-native',\n platform: 'react-native',\n description: 'Android back button handler',\n },\n {\n name: 'Keyboard',\n source: 'react-native',\n platform: 'react-native',\n description: 'Keyboard event handler',\n },\n {\n name: 'PanResponder',\n source: 'react-native',\n platform: 'react-native',\n description: 'Gesture responder system',\n },\n {\n name: 'Linking',\n source: 'react-native',\n platform: 'react-native',\n description: 'Deep linking utility',\n },\n {\n name: 'AppState',\n source: 'react-native',\n platform: 'react-native',\n description: 'App lifecycle state',\n },\n];\n\n/**\n * Safety primitives\n */\nconst SAFETY_PRIMITIVES: PrimitiveRule[] = [\n {\n name: 'SafeAreaView',\n source: 'react-native',\n platform: 'react-native',\n description: 'Safe area inset container',\n },\n {\n name: 'KeyboardAvoidingView',\n source: 'react-native',\n platform: 'react-native',\n description: 'Keyboard avoidance container',\n },\n];\n\n/**\n * Accessibility primitives\n */\nconst ACCESSIBILITY_PRIMITIVES: PrimitiveRule[] = [\n {\n name: 'AccessibilityInfo',\n source: 'react-native',\n platform: 'react-native',\n description: 'Accessibility information API',\n },\n];\n\n/**\n * Style primitives\n */\nconst STYLE_PRIMITIVES: PrimitiveRule[] = [\n {\n name: 'StyleSheet',\n source: 'react-native',\n platform: 'react-native',\n description: 'Style sheet creator',\n },\n];\n\n/**\n * All React Native primitives combined\n */\nexport const REACT_NATIVE_PRIMITIVES: PrimitiveRule[] = [\n ...CORE_PRIMITIVES,\n ...INTERACTIVE_PRIMITIVES,\n ...INPUT_PRIMITIVES,\n ...MODAL_PRIMITIVES,\n ...ANIMATION_PRIMITIVES,\n ...PLATFORM_PRIMITIVES,\n ...EVENT_PRIMITIVES,\n ...SAFETY_PRIMITIVES,\n ...ACCESSIBILITY_PRIMITIVES,\n ...STYLE_PRIMITIVES,\n];\n\n/**\n * Set of primitive names for quick lookup\n */\nexport const REACT_NATIVE_PRIMITIVE_NAMES = new Set(\n REACT_NATIVE_PRIMITIVES.map((p) => p.name)\n);\n\n/**\n * Complete rule set for React Native\n */\nexport const REACT_NATIVE_RULE_SET: PrimitiveRuleSet = {\n platform: 'react-native',\n primitives: REACT_NATIVE_PRIMITIVES,\n sources: [...REACT_NATIVE_SOURCES],\n};\n\n/**\n * Check if a name is a React Native primitive\n */\nexport function isReactNativePrimitive(name: string): boolean {\n return REACT_NATIVE_PRIMITIVE_NAMES.has(name);\n}\n\n/**\n * Get primitive info by name\n */\nexport function getReactNativePrimitive(name: string): PrimitiveRule | undefined {\n return REACT_NATIVE_PRIMITIVES.find((p) => p.name === name);\n}\n","import { PrimitiveRule, PrimitiveRuleSet } from '../types';\n\n/**\n * Module sources that indicate React DOM platform\n */\nexport const REACT_DOM_SOURCES = [\n 'react-dom',\n 'react-dom/client',\n 'react-dom/server',\n] as const;\n\n/**\n * React DOM API primitives\n * These are functions/components that are React DOM specific\n */\nconst DOM_API_PRIMITIVES: PrimitiveRule[] = [\n {\n name: 'createPortal',\n source: 'react-dom',\n platform: 'react-dom',\n description: 'Render children into a different DOM node',\n },\n {\n name: 'flushSync',\n source: 'react-dom',\n platform: 'react-dom',\n description: 'Force synchronous DOM updates',\n },\n {\n name: 'createRoot',\n source: 'react-dom/client',\n platform: 'react-dom',\n description: 'Create a React root for rendering',\n },\n {\n name: 'hydrateRoot',\n source: 'react-dom/client',\n platform: 'react-dom',\n description: 'Hydrate server-rendered content',\n },\n {\n name: 'render',\n source: 'react-dom',\n platform: 'react-dom',\n description: 'Legacy render function (deprecated)',\n },\n {\n name: 'hydrate',\n source: 'react-dom',\n platform: 'react-dom',\n description: 'Legacy hydrate function (deprecated)',\n },\n {\n name: 'unmountComponentAtNode',\n source: 'react-dom',\n platform: 'react-dom',\n description: 'Legacy unmount function (deprecated)',\n },\n {\n name: 'findDOMNode',\n source: 'react-dom',\n platform: 'react-dom',\n description: 'Find DOM node (deprecated)',\n },\n];\n\n/**\n * Intrinsic HTML elements that indicate web-only code\n * These are JSX intrinsic elements that only exist in DOM\n *\n * Note: These are detected via JSX usage, not imports\n * This list is for reference and specialized detection\n */\nexport const HTML_INTRINSIC_ELEMENTS = [\n // Document structure\n 'html',\n 'head',\n 'body',\n 'main',\n 'header',\n 'footer',\n 'nav',\n 'aside',\n 'article',\n 'section',\n\n // Content sectioning\n 'div',\n 'span',\n 'p',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n\n // Text content\n 'a',\n 'strong',\n 'em',\n 'code',\n 'pre',\n 'blockquote',\n 'br',\n 'hr',\n\n // Lists\n 'ul',\n 'ol',\n 'li',\n 'dl',\n 'dt',\n 'dd',\n\n // Tables\n 'table',\n 'thead',\n 'tbody',\n 'tfoot',\n 'tr',\n 'th',\n 'td',\n 'caption',\n 'colgroup',\n 'col',\n\n // Forms\n 'form',\n 'input',\n 'textarea',\n 'select',\n 'option',\n 'optgroup',\n 'button',\n 'label',\n 'fieldset',\n 'legend',\n 'datalist',\n 'output',\n 'progress',\n 'meter',\n\n // Media\n 'img',\n 'video',\n 'audio',\n 'source',\n 'track',\n 'picture',\n 'figure',\n 'figcaption',\n 'canvas',\n 'svg',\n 'iframe',\n 'embed',\n 'object',\n\n // Interactive\n 'details',\n 'summary',\n 'dialog',\n 'menu',\n\n // Scripting\n 'script',\n 'noscript',\n 'template',\n 'slot',\n] as const;\n\n/**\n * All React DOM primitives (API functions)\n */\nexport const REACT_DOM_PRIMITIVES: PrimitiveRule[] = [...DOM_API_PRIMITIVES];\n\n/**\n * Set of primitive names for quick lookup\n */\nexport const REACT_DOM_PRIMITIVE_NAMES = new Set(\n REACT_DOM_PRIMITIVES.map((p) => p.name)\n);\n\n/**\n * Set of HTML intrinsic element names for quick lookup\n */\nexport const HTML_ELEMENT_NAMES: Set<string> = new Set(HTML_INTRINSIC_ELEMENTS);\n\n/**\n * Complete rule set for React DOM\n */\nexport const REACT_DOM_RULE_SET: PrimitiveRuleSet = {\n platform: 'react-dom',\n primitives: REACT_DOM_PRIMITIVES,\n sources: [...REACT_DOM_SOURCES],\n};\n\n/**\n * Check if a name is a React DOM primitive (API function)\n */\nexport function isReactDomPrimitive(name: string): boolean {\n return REACT_DOM_PRIMITIVE_NAMES.has(name);\n}\n\n/**\n * Check if a name is an HTML intrinsic element\n */\nexport function isHtmlElement(name: string): boolean {\n return HTML_ELEMENT_NAMES.has(name);\n}\n\n/**\n * Get primitive info by name\n */\nexport function getReactDomPrimitive(name: string): PrimitiveRule | undefined {\n return REACT_DOM_PRIMITIVES.find((p) => p.name === name);\n}\n"],"mappings":"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","names":[]}