@wireweave/core 1.0.0-beta.20260107130839 → 1.0.0-beta.20260107132939

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/src/ast/guards.ts DELETED
@@ -1,361 +0,0 @@
1
- /**
2
- * Type guards for wireweave AST
3
- *
4
- * Provides runtime type checking for AST nodes
5
- */
6
-
7
- import type {
8
- AnyNode,
9
- ContainerNode,
10
- LeafNode,
11
- LayoutNode,
12
- GridNode,
13
- ContainerComponentNode,
14
- TextContentNode,
15
- InputComponentNode,
16
- DisplayNode,
17
- DataNode,
18
- FeedbackNode,
19
- OverlayNode,
20
- NavigationNode,
21
- PageNode,
22
- HeaderNode,
23
- MainNode,
24
- FooterNode,
25
- SidebarNode,
26
- SectionNode,
27
- RowNode,
28
- ColNode,
29
- CardNode,
30
- ModalNode,
31
- DrawerNode,
32
- AccordionNode,
33
- TextNode,
34
- TitleNode,
35
- LinkNode,
36
- InputNode,
37
- TextareaNode,
38
- SelectNode,
39
- CheckboxNode,
40
- RadioNode,
41
- SwitchNode,
42
- SliderNode,
43
- ButtonNode,
44
- ImageNode,
45
- PlaceholderNode,
46
- AvatarNode,
47
- BadgeNode,
48
- IconNode,
49
- TableNode,
50
- ListNode,
51
- AlertNode,
52
- ToastNode,
53
- ProgressNode,
54
- SpinnerNode,
55
- TooltipNode,
56
- PopoverNode,
57
- DropdownNode,
58
- NavNode,
59
- TabsNode,
60
- BreadcrumbNode,
61
- DividerComponentNode,
62
- NodeType,
63
- } from './types';
64
-
65
- // ===========================================
66
- // Container Type Guards
67
- // ===========================================
68
-
69
- const CONTAINER_TYPES: NodeType[] = [
70
- 'Page',
71
- 'Header',
72
- 'Main',
73
- 'Footer',
74
- 'Sidebar',
75
- 'Section',
76
- 'Row',
77
- 'Col',
78
- 'Card',
79
- 'Modal',
80
- 'Drawer',
81
- 'Accordion',
82
- 'Tooltip',
83
- 'Popover',
84
- ];
85
-
86
- export function isContainerNode(node: AnyNode): node is ContainerNode {
87
- return CONTAINER_TYPES.includes(node.type as NodeType);
88
- }
89
-
90
- export function hasChildren(node: AnyNode): node is AnyNode & { children: AnyNode[] } {
91
- return 'children' in node && Array.isArray((node as { children?: unknown }).children);
92
- }
93
-
94
- export function isLeafNode(node: AnyNode): node is LeafNode {
95
- return !isContainerNode(node);
96
- }
97
-
98
- // ===========================================
99
- // Layout Type Guards
100
- // ===========================================
101
-
102
- export function isLayoutNode(node: AnyNode): node is LayoutNode {
103
- return ['Page', 'Header', 'Main', 'Footer', 'Sidebar', 'Section'].includes(node.type);
104
- }
105
-
106
- export function isPageNode(node: AnyNode): node is PageNode {
107
- return node.type === 'Page';
108
- }
109
-
110
- export function isHeaderNode(node: AnyNode): node is HeaderNode {
111
- return node.type === 'Header';
112
- }
113
-
114
- export function isMainNode(node: AnyNode): node is MainNode {
115
- return node.type === 'Main';
116
- }
117
-
118
- export function isFooterNode(node: AnyNode): node is FooterNode {
119
- return node.type === 'Footer';
120
- }
121
-
122
- export function isSidebarNode(node: AnyNode): node is SidebarNode {
123
- return node.type === 'Sidebar';
124
- }
125
-
126
- export function isSectionNode(node: AnyNode): node is SectionNode {
127
- return node.type === 'Section';
128
- }
129
-
130
- // ===========================================
131
- // Grid Type Guards
132
- // ===========================================
133
-
134
- export function isGridNode(node: AnyNode): node is GridNode {
135
- return ['Row', 'Col'].includes(node.type);
136
- }
137
-
138
- export function isRowNode(node: AnyNode): node is RowNode {
139
- return node.type === 'Row';
140
- }
141
-
142
- export function isColNode(node: AnyNode): node is ColNode {
143
- return node.type === 'Col';
144
- }
145
-
146
- // ===========================================
147
- // Container Component Type Guards
148
- // ===========================================
149
-
150
- export function isContainerComponentNode(node: AnyNode): node is ContainerComponentNode {
151
- return ['Card', 'Modal', 'Drawer', 'Accordion'].includes(node.type);
152
- }
153
-
154
- export function isCardNode(node: AnyNode): node is CardNode {
155
- return node.type === 'Card';
156
- }
157
-
158
- export function isModalNode(node: AnyNode): node is ModalNode {
159
- return node.type === 'Modal';
160
- }
161
-
162
- export function isDrawerNode(node: AnyNode): node is DrawerNode {
163
- return node.type === 'Drawer';
164
- }
165
-
166
- export function isAccordionNode(node: AnyNode): node is AccordionNode {
167
- return node.type === 'Accordion';
168
- }
169
-
170
- // ===========================================
171
- // Text Content Type Guards
172
- // ===========================================
173
-
174
- export function isTextContentNode(node: AnyNode): node is TextContentNode {
175
- return ['Text', 'Title', 'Link'].includes(node.type);
176
- }
177
-
178
- export function isTextNode(node: AnyNode): node is TextNode {
179
- return node.type === 'Text';
180
- }
181
-
182
- export function isTitleNode(node: AnyNode): node is TitleNode {
183
- return node.type === 'Title';
184
- }
185
-
186
- export function isLinkNode(node: AnyNode): node is LinkNode {
187
- return node.type === 'Link';
188
- }
189
-
190
- // ===========================================
191
- // Input Component Type Guards
192
- // ===========================================
193
-
194
- export function isInputComponentNode(node: AnyNode): node is InputComponentNode {
195
- return ['Input', 'Textarea', 'Select', 'Checkbox', 'Radio', 'Switch', 'Slider'].includes(
196
- node.type
197
- );
198
- }
199
-
200
- export function isInputNode(node: AnyNode): node is InputNode {
201
- return node.type === 'Input';
202
- }
203
-
204
- export function isTextareaNode(node: AnyNode): node is TextareaNode {
205
- return node.type === 'Textarea';
206
- }
207
-
208
- export function isSelectNode(node: AnyNode): node is SelectNode {
209
- return node.type === 'Select';
210
- }
211
-
212
- export function isCheckboxNode(node: AnyNode): node is CheckboxNode {
213
- return node.type === 'Checkbox';
214
- }
215
-
216
- export function isRadioNode(node: AnyNode): node is RadioNode {
217
- return node.type === 'Radio';
218
- }
219
-
220
- export function isSwitchNode(node: AnyNode): node is SwitchNode {
221
- return node.type === 'Switch';
222
- }
223
-
224
- export function isSliderNode(node: AnyNode): node is SliderNode {
225
- return node.type === 'Slider';
226
- }
227
-
228
- // ===========================================
229
- // Button Type Guard
230
- // ===========================================
231
-
232
- export function isButtonNode(node: AnyNode): node is ButtonNode {
233
- return node.type === 'Button';
234
- }
235
-
236
- // ===========================================
237
- // Display Component Type Guards
238
- // ===========================================
239
-
240
- export function isDisplayNode(node: AnyNode): node is DisplayNode {
241
- return ['Image', 'Placeholder', 'Avatar', 'Badge', 'Icon'].includes(node.type);
242
- }
243
-
244
- export function isImageNode(node: AnyNode): node is ImageNode {
245
- return node.type === 'Image';
246
- }
247
-
248
- export function isPlaceholderNode(node: AnyNode): node is PlaceholderNode {
249
- return node.type === 'Placeholder';
250
- }
251
-
252
- export function isAvatarNode(node: AnyNode): node is AvatarNode {
253
- return node.type === 'Avatar';
254
- }
255
-
256
- export function isBadgeNode(node: AnyNode): node is BadgeNode {
257
- return node.type === 'Badge';
258
- }
259
-
260
- export function isIconNode(node: AnyNode): node is IconNode {
261
- return node.type === 'Icon';
262
- }
263
-
264
- // ===========================================
265
- // Data Component Type Guards
266
- // ===========================================
267
-
268
- export function isDataNode(node: AnyNode): node is DataNode {
269
- return ['Table', 'List'].includes(node.type);
270
- }
271
-
272
- export function isTableNode(node: AnyNode): node is TableNode {
273
- return node.type === 'Table';
274
- }
275
-
276
- export function isListNode(node: AnyNode): node is ListNode {
277
- return node.type === 'List';
278
- }
279
-
280
- // ===========================================
281
- // Feedback Component Type Guards
282
- // ===========================================
283
-
284
- export function isFeedbackNode(node: AnyNode): node is FeedbackNode {
285
- return ['Alert', 'Toast', 'Progress', 'Spinner'].includes(node.type);
286
- }
287
-
288
- export function isAlertNode(node: AnyNode): node is AlertNode {
289
- return node.type === 'Alert';
290
- }
291
-
292
- export function isToastNode(node: AnyNode): node is ToastNode {
293
- return node.type === 'Toast';
294
- }
295
-
296
- export function isProgressNode(node: AnyNode): node is ProgressNode {
297
- return node.type === 'Progress';
298
- }
299
-
300
- export function isSpinnerNode(node: AnyNode): node is SpinnerNode {
301
- return node.type === 'Spinner';
302
- }
303
-
304
- // ===========================================
305
- // Overlay Component Type Guards
306
- // ===========================================
307
-
308
- export function isOverlayNode(node: AnyNode): node is OverlayNode {
309
- return ['Tooltip', 'Popover', 'Dropdown'].includes(node.type);
310
- }
311
-
312
- export function isTooltipNode(node: AnyNode): node is TooltipNode {
313
- return node.type === 'Tooltip';
314
- }
315
-
316
- export function isPopoverNode(node: AnyNode): node is PopoverNode {
317
- return node.type === 'Popover';
318
- }
319
-
320
- export function isDropdownNode(node: AnyNode): node is DropdownNode {
321
- return node.type === 'Dropdown';
322
- }
323
-
324
- // ===========================================
325
- // Navigation Component Type Guards
326
- // ===========================================
327
-
328
- export function isNavigationNode(node: AnyNode): node is NavigationNode {
329
- return ['Nav', 'Tabs', 'Breadcrumb'].includes(node.type);
330
- }
331
-
332
- export function isNavNode(node: AnyNode): node is NavNode {
333
- return node.type === 'Nav';
334
- }
335
-
336
- export function isTabsNode(node: AnyNode): node is TabsNode {
337
- return node.type === 'Tabs';
338
- }
339
-
340
- export function isBreadcrumbNode(node: AnyNode): node is BreadcrumbNode {
341
- return node.type === 'Breadcrumb';
342
- }
343
-
344
- // ===========================================
345
- // Divider Type Guard
346
- // ===========================================
347
-
348
- export function isDividerNode(node: AnyNode): node is DividerComponentNode {
349
- return node.type === 'Divider';
350
- }
351
-
352
- // ===========================================
353
- // Generic Type Guard
354
- // ===========================================
355
-
356
- export function isNodeType<T extends NodeType>(
357
- node: AnyNode,
358
- type: T
359
- ): node is Extract<AnyNode, { type: T }> {
360
- return node.type === type;
361
- }
package/src/ast/index.ts DELETED
@@ -1,9 +0,0 @@
1
- /**
2
- * AST module for wireweave
3
- *
4
- * Re-exports all AST types, guards, and utilities
5
- */
6
-
7
- export * from './types';
8
- export * from './guards';
9
- export * from './utils';