@hyperfixi/patterns-reference 2.6.0 → 2.7.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,865 @@
1
+ {
2
+ "meta": {
3
+ "bar": {
4
+ "lokascript": "compileSync(code).ok via @hyperfixi/core (same call as the browser _= path), with @hyperfixi/reactivity and @hyperfixi/realtime installed (both ship pre-installed in hyperfixi.js), plus a jsdom top-level install smoke (no error within 500ms settle window)",
5
+ "hyperscript": "upstream _hyperscript parse with zero recovered errors (extensions loaded: socket, worker, eventsource); parse-level only",
6
+ "html": "HTML-markup patterns: each _= / script-tag snippet verified individually; hx-live/sse-*/ws-* attributes are hyperfixi-only and block the upstream claim"
7
+ },
8
+ "lokascriptVersion": "2.6.0",
9
+ "hyperscriptVersion": "0.9.93"
10
+ },
11
+ "engines": {
12
+ "accordion-exclusive": "both",
13
+ "accordion-toggle": "both",
14
+ "add-class-basic": "both",
15
+ "add-class-to-other": "both",
16
+ "announce-screen-reader": "lokascript",
17
+ "append-content": "both",
18
+ "async-block": "lokascript",
19
+ "beep-debug-expression": "both",
20
+ "behavior-draggable": "both",
21
+ "behavior-removable": "both",
22
+ "behavior-resizable": "lokascript",
23
+ "behavior-sortable": "both",
24
+ "bind-auto-detect": "both",
25
+ "bind-explicit-property": "both",
26
+ "bind-non-form-display": "both",
27
+ "bind-two-way": "both",
28
+ "blur-element": "both",
29
+ "breakpoint-command": "both",
30
+ "call-function": "both",
31
+ "caret-var-increment": "both",
32
+ "caret-var-on-target": "both",
33
+ "caret-var-write": "both",
34
+ "chained-access-possessive-dot": "both",
35
+ "closest-ancestor": "both",
36
+ "component-click-counter": "lokascript",
37
+ "component-hello-world": "lokascript",
38
+ "component-with-attrs": "lokascript",
39
+ "component-with-conditional": "lokascript",
40
+ "component-with-slots": "lokascript",
41
+ "computed-value": "both",
42
+ "copy-to-clipboard": "both",
43
+ "decrement-counter": "both",
44
+ "default-value": "both",
45
+ "document-ready": "both",
46
+ "dropdown-close-outside": "both",
47
+ "dropdown-toggle": "both",
48
+ "event-debounce": "lokascript",
49
+ "event-from-elsewhere": "both",
50
+ "event-key-combo": "both",
51
+ "event-once": null,
52
+ "event-throttle": "both",
53
+ "eventsource-basic": "both",
54
+ "fade-out-remove": "both",
55
+ "fetch-basic": "both",
56
+ "fetch-do-not-throw": "both",
57
+ "fetch-error-handling": "both",
58
+ "fetch-formdata": "lokascript",
59
+ "fetch-json": "both",
60
+ "fetch-loading-state": "both",
61
+ "fetch-with-headers": "both",
62
+ "fetch-with-method": "lokascript",
63
+ "fetch-with-method-body": "both",
64
+ "first-in-parent": "both",
65
+ "focus-element": "both",
66
+ "focus-trap": "both",
67
+ "form-disable-on-submit": "both",
68
+ "form-submit-prevent": "both",
69
+ "get-attribute-possessive-dot": "both",
70
+ "get-value": "both",
71
+ "get-value-possessive-dot": "both",
72
+ "go-back": "both",
73
+ "go-url": "both",
74
+ "halt-propagation": "both",
75
+ "hide-element": "both",
76
+ "hide-with-transition": "both",
77
+ "hx-live-attribute": "lokascript",
78
+ "hx-live-with-mutator": "lokascript",
79
+ "if-condition": "both",
80
+ "if-empty": "both",
81
+ "if-exists": "both",
82
+ "if-matches": "both",
83
+ "increment-by-amount": "both",
84
+ "increment-counter": "both",
85
+ "input-char-count": "both",
86
+ "input-clear": "lokascript",
87
+ "input-mirror": "both",
88
+ "input-validation": "both",
89
+ "install-behavior": "both",
90
+ "intercept-cache-strategies": null,
91
+ "its-value-possessive-dot": "both",
92
+ "js-inline": "both",
93
+ "keydown-key-is-syntax": "both",
94
+ "last-in-collection": "both",
95
+ "live-derived-value": "both",
96
+ "live-multiple-deps": "both",
97
+ "log-element": "both",
98
+ "log-value": "both",
99
+ "make-element": "both",
100
+ "make-toast-element": "both",
101
+ "method-call-possessive-dot": "both",
102
+ "modal-close-backdrop": "both",
103
+ "modal-close-button": "both",
104
+ "modal-close-escape": "both",
105
+ "modal-open": "both",
106
+ "morph-fetch-result": "both",
107
+ "morph-form-update": "lokascript",
108
+ "morph-with-template": "both",
109
+ "multiple-events": "both",
110
+ "next-element": "both",
111
+ "on-custom-event-receive": "both",
112
+ "optional-chaining-possessive": "lokascript",
113
+ "pick-text-range": "both",
114
+ "previous-element": "both",
115
+ "put-after": "both",
116
+ "put-before": "both",
117
+ "put-content-basic": "both",
118
+ "reactive-array-push": "both",
119
+ "remove-class-basic": "both",
120
+ "remove-class-from-all": "both",
121
+ "remove-element": "both",
122
+ "render-template-with-data": "both",
123
+ "repeat-for-each": "both",
124
+ "repeat-forever": "both",
125
+ "repeat-times": "both",
126
+ "repeat-until-event": "both",
127
+ "repeat-while": "both",
128
+ "send-event": "both",
129
+ "send-event-to-form": "both",
130
+ "send-with-detail": "both",
131
+ "set-attribute": "both",
132
+ "set-color-variable": "lokascript",
133
+ "set-inner-html-possessive-dot": "both",
134
+ "set-opacity": "both",
135
+ "set-style": "both",
136
+ "set-text-basic": "both",
137
+ "set-text-possessive-dot": "both",
138
+ "set-transform": "both",
139
+ "settle-animations": "both",
140
+ "show-element": "both",
141
+ "show-with-transition": "both",
142
+ "slide-toggle": "lokascript",
143
+ "socket-basic": "both",
144
+ "socket-send": "both",
145
+ "sse-connect-swap": "lokascript",
146
+ "sse-multi-event": "lokascript",
147
+ "stagger-animation": "lokascript",
148
+ "swap-content": "both",
149
+ "tabs-aria": "lokascript",
150
+ "tabs-basic": "both",
151
+ "tabs-content": "both",
152
+ "take-class-from-siblings": "both",
153
+ "tell-command": "lokascript",
154
+ "tell-other-element": "both",
155
+ "template-literal-interpolation": "both",
156
+ "template-literal-list-build": "both",
157
+ "toggle-aria-expanded": "both",
158
+ "toggle-class-basic": "both",
159
+ "toggle-class-on-other": "both",
160
+ "toggle-visibility": "both",
161
+ "transition-color": "both",
162
+ "transition-opacity": "both",
163
+ "transition-transform": "both",
164
+ "trigger-event": "both",
165
+ "two-way-binding": "both",
166
+ "unless-condition": "lokascript",
167
+ "wait-for-event": "both",
168
+ "wait-then": "both",
169
+ "when-multiple-changes": "both",
170
+ "when-value-changes": "lokascript",
171
+ "window-keydown": "both",
172
+ "window-resize": "both",
173
+ "window-scroll": "both",
174
+ "worker-basic": "both",
175
+ "ws-connect-send": "lokascript"
176
+ },
177
+ "details": {
178
+ "accordion-exclusive": {
179
+ "lokascript": true,
180
+ "hyperscript": true
181
+ },
182
+ "accordion-toggle": {
183
+ "lokascript": true,
184
+ "hyperscript": true
185
+ },
186
+ "add-class-basic": {
187
+ "lokascript": true,
188
+ "hyperscript": true
189
+ },
190
+ "add-class-to-other": {
191
+ "lokascript": true,
192
+ "hyperscript": true
193
+ },
194
+ "announce-screen-reader": {
195
+ "lokascript": true,
196
+ "hyperscript": false,
197
+ "hyperscriptError": "Expected event name"
198
+ },
199
+ "append-content": {
200
+ "lokascript": true,
201
+ "hyperscript": true
202
+ },
203
+ "async-block": {
204
+ "lokascript": true,
205
+ "hyperscript": false,
206
+ "hyperscriptError": "Unexpected Token : async"
207
+ },
208
+ "beep-debug-expression": {
209
+ "lokascript": true,
210
+ "hyperscript": true
211
+ },
212
+ "behavior-draggable": {
213
+ "lokascript": true,
214
+ "hyperscript": true
215
+ },
216
+ "behavior-removable": {
217
+ "lokascript": true,
218
+ "hyperscript": true
219
+ },
220
+ "behavior-resizable": {
221
+ "lokascript": true,
222
+ "hyperscript": false,
223
+ "hyperscriptError": "You must parenthesize math operations with different operators"
224
+ },
225
+ "behavior-sortable": {
226
+ "lokascript": true,
227
+ "hyperscript": true
228
+ },
229
+ "bind-auto-detect": {
230
+ "lokascript": true,
231
+ "hyperscript": true
232
+ },
233
+ "bind-explicit-property": {
234
+ "lokascript": true,
235
+ "hyperscript": true
236
+ },
237
+ "bind-non-form-display": {
238
+ "lokascript": true,
239
+ "hyperscript": true
240
+ },
241
+ "bind-two-way": {
242
+ "lokascript": true,
243
+ "hyperscript": true
244
+ },
245
+ "blur-element": {
246
+ "lokascript": true,
247
+ "hyperscript": true
248
+ },
249
+ "breakpoint-command": {
250
+ "lokascript": true,
251
+ "hyperscript": true
252
+ },
253
+ "call-function": {
254
+ "lokascript": true,
255
+ "hyperscript": true
256
+ },
257
+ "caret-var-increment": {
258
+ "lokascript": true,
259
+ "hyperscript": true
260
+ },
261
+ "caret-var-on-target": {
262
+ "lokascript": true,
263
+ "hyperscript": true
264
+ },
265
+ "caret-var-write": {
266
+ "lokascript": true,
267
+ "hyperscript": true
268
+ },
269
+ "chained-access-possessive-dot": {
270
+ "lokascript": true,
271
+ "hyperscript": true
272
+ },
273
+ "closest-ancestor": {
274
+ "lokascript": true,
275
+ "hyperscript": true
276
+ },
277
+ "component-click-counter": {
278
+ "lokascript": true,
279
+ "hyperscript": false,
280
+ "hyperscriptError": "uses hyperfixi-only attributes"
281
+ },
282
+ "component-hello-world": {
283
+ "lokascript": true,
284
+ "hyperscript": false,
285
+ "hyperscriptError": "uses hyperfixi-only attributes"
286
+ },
287
+ "component-with-attrs": {
288
+ "lokascript": true,
289
+ "hyperscript": false,
290
+ "hyperscriptError": "uses hyperfixi-only attributes"
291
+ },
292
+ "component-with-conditional": {
293
+ "lokascript": true,
294
+ "hyperscript": false,
295
+ "hyperscriptError": "uses hyperfixi-only attributes"
296
+ },
297
+ "component-with-slots": {
298
+ "lokascript": true,
299
+ "hyperscript": false,
300
+ "hyperscriptError": "uses hyperfixi-only attributes"
301
+ },
302
+ "computed-value": {
303
+ "lokascript": true,
304
+ "hyperscript": true
305
+ },
306
+ "copy-to-clipboard": {
307
+ "lokascript": true,
308
+ "hyperscript": true
309
+ },
310
+ "decrement-counter": {
311
+ "lokascript": true,
312
+ "hyperscript": true
313
+ },
314
+ "default-value": {
315
+ "lokascript": true,
316
+ "hyperscript": true
317
+ },
318
+ "document-ready": {
319
+ "lokascript": true,
320
+ "hyperscript": true
321
+ },
322
+ "dropdown-close-outside": {
323
+ "lokascript": true,
324
+ "hyperscript": true
325
+ },
326
+ "dropdown-toggle": {
327
+ "lokascript": true,
328
+ "hyperscript": true
329
+ },
330
+ "event-debounce": {
331
+ "lokascript": true,
332
+ "hyperscript": false,
333
+ "hyperscriptError": "Unexpected Token : value"
334
+ },
335
+ "event-from-elsewhere": {
336
+ "lokascript": true,
337
+ "hyperscript": true
338
+ },
339
+ "event-key-combo": {
340
+ "lokascript": true,
341
+ "hyperscript": true
342
+ },
343
+ "event-once": {
344
+ "lokascript": false,
345
+ "hyperscript": false,
346
+ "lokascriptError": "Unexpected token: add",
347
+ "hyperscriptError": "Unexpected Token : once"
348
+ },
349
+ "event-throttle": {
350
+ "lokascript": true,
351
+ "hyperscript": true
352
+ },
353
+ "eventsource-basic": {
354
+ "lokascript": true,
355
+ "hyperscript": true
356
+ },
357
+ "fade-out-remove": {
358
+ "lokascript": true,
359
+ "hyperscript": true
360
+ },
361
+ "fetch-basic": {
362
+ "lokascript": true,
363
+ "hyperscript": true
364
+ },
365
+ "fetch-do-not-throw": {
366
+ "lokascript": true,
367
+ "hyperscript": true
368
+ },
369
+ "fetch-error-handling": {
370
+ "lokascript": true,
371
+ "hyperscript": true
372
+ },
373
+ "fetch-formdata": {
374
+ "lokascript": true,
375
+ "hyperscript": false,
376
+ "hyperscriptError": "Expected a CSS expression"
377
+ },
378
+ "fetch-json": {
379
+ "lokascript": true,
380
+ "hyperscript": true
381
+ },
382
+ "fetch-loading-state": {
383
+ "lokascript": true,
384
+ "hyperscript": true
385
+ },
386
+ "fetch-with-headers": {
387
+ "lokascript": true,
388
+ "hyperscript": true
389
+ },
390
+ "fetch-with-method": {
391
+ "lokascript": true,
392
+ "hyperscript": false,
393
+ "hyperscriptError": "Unexpected Token : body"
394
+ },
395
+ "fetch-with-method-body": {
396
+ "lokascript": true,
397
+ "hyperscript": true
398
+ },
399
+ "first-in-parent": {
400
+ "lokascript": true,
401
+ "hyperscript": true
402
+ },
403
+ "focus-element": {
404
+ "lokascript": true,
405
+ "hyperscript": true
406
+ },
407
+ "focus-trap": {
408
+ "lokascript": true,
409
+ "hyperscript": true
410
+ },
411
+ "form-disable-on-submit": {
412
+ "lokascript": true,
413
+ "hyperscript": true
414
+ },
415
+ "form-submit-prevent": {
416
+ "lokascript": true,
417
+ "hyperscript": true
418
+ },
419
+ "get-attribute-possessive-dot": {
420
+ "lokascript": true,
421
+ "hyperscript": true
422
+ },
423
+ "get-value": {
424
+ "lokascript": true,
425
+ "hyperscript": true
426
+ },
427
+ "get-value-possessive-dot": {
428
+ "lokascript": true,
429
+ "hyperscript": true
430
+ },
431
+ "go-back": {
432
+ "lokascript": true,
433
+ "hyperscript": true
434
+ },
435
+ "go-url": {
436
+ "lokascript": true,
437
+ "hyperscript": true
438
+ },
439
+ "halt-propagation": {
440
+ "lokascript": true,
441
+ "hyperscript": true
442
+ },
443
+ "hide-element": {
444
+ "lokascript": true,
445
+ "hyperscript": true
446
+ },
447
+ "hide-with-transition": {
448
+ "lokascript": true,
449
+ "hyperscript": true
450
+ },
451
+ "hx-live-attribute": {
452
+ "lokascript": true,
453
+ "hyperscript": false,
454
+ "hyperscriptError": "uses hyperfixi-only attributes"
455
+ },
456
+ "hx-live-with-mutator": {
457
+ "lokascript": true,
458
+ "hyperscript": false,
459
+ "hyperscriptError": "uses hyperfixi-only attributes"
460
+ },
461
+ "if-condition": {
462
+ "lokascript": true,
463
+ "hyperscript": true
464
+ },
465
+ "if-empty": {
466
+ "lokascript": true,
467
+ "hyperscript": true
468
+ },
469
+ "if-exists": {
470
+ "lokascript": true,
471
+ "hyperscript": true
472
+ },
473
+ "if-matches": {
474
+ "lokascript": true,
475
+ "hyperscript": true
476
+ },
477
+ "increment-by-amount": {
478
+ "lokascript": true,
479
+ "hyperscript": true
480
+ },
481
+ "increment-counter": {
482
+ "lokascript": true,
483
+ "hyperscript": true
484
+ },
485
+ "input-char-count": {
486
+ "lokascript": true,
487
+ "hyperscript": true
488
+ },
489
+ "input-clear": {
490
+ "lokascript": true,
491
+ "hyperscript": false,
492
+ "hyperscriptError": "Expected 'to' but found '<'"
493
+ },
494
+ "input-mirror": {
495
+ "lokascript": true,
496
+ "hyperscript": true
497
+ },
498
+ "input-validation": {
499
+ "lokascript": true,
500
+ "hyperscript": true
501
+ },
502
+ "install-behavior": {
503
+ "lokascript": true,
504
+ "hyperscript": true
505
+ },
506
+ "intercept-cache-strategies": {
507
+ "lokascript": false,
508
+ "hyperscript": false,
509
+ "lokascriptError": "Unexpected token: ,",
510
+ "hyperscriptError": "Unexpected value: ,"
511
+ },
512
+ "its-value-possessive-dot": {
513
+ "lokascript": true,
514
+ "hyperscript": true
515
+ },
516
+ "js-inline": {
517
+ "lokascript": true,
518
+ "hyperscript": true
519
+ },
520
+ "keydown-key-is-syntax": {
521
+ "lokascript": true,
522
+ "hyperscript": true
523
+ },
524
+ "last-in-collection": {
525
+ "lokascript": true,
526
+ "hyperscript": true
527
+ },
528
+ "live-derived-value": {
529
+ "lokascript": true,
530
+ "hyperscript": true
531
+ },
532
+ "live-multiple-deps": {
533
+ "lokascript": true,
534
+ "hyperscript": true
535
+ },
536
+ "log-element": {
537
+ "lokascript": true,
538
+ "hyperscript": true
539
+ },
540
+ "log-value": {
541
+ "lokascript": true,
542
+ "hyperscript": true
543
+ },
544
+ "make-element": {
545
+ "lokascript": true,
546
+ "hyperscript": true
547
+ },
548
+ "make-toast-element": {
549
+ "lokascript": true,
550
+ "hyperscript": true
551
+ },
552
+ "method-call-possessive-dot": {
553
+ "lokascript": true,
554
+ "hyperscript": true
555
+ },
556
+ "modal-close-backdrop": {
557
+ "lokascript": true,
558
+ "hyperscript": true
559
+ },
560
+ "modal-close-button": {
561
+ "lokascript": true,
562
+ "hyperscript": true
563
+ },
564
+ "modal-close-escape": {
565
+ "lokascript": true,
566
+ "hyperscript": true
567
+ },
568
+ "modal-open": {
569
+ "lokascript": true,
570
+ "hyperscript": true
571
+ },
572
+ "morph-fetch-result": {
573
+ "lokascript": true,
574
+ "hyperscript": true
575
+ },
576
+ "morph-form-update": {
577
+ "lokascript": true,
578
+ "hyperscript": false,
579
+ "hyperscriptError": "Expected 'to' but found '<<<EOF>>>'"
580
+ },
581
+ "morph-with-template": {
582
+ "lokascript": true,
583
+ "hyperscript": true
584
+ },
585
+ "multiple-events": {
586
+ "lokascript": true,
587
+ "hyperscript": true
588
+ },
589
+ "next-element": {
590
+ "lokascript": true,
591
+ "hyperscript": true
592
+ },
593
+ "on-custom-event-receive": {
594
+ "lokascript": true,
595
+ "hyperscript": true
596
+ },
597
+ "optional-chaining-possessive": {
598
+ "lokascript": true,
599
+ "hyperscript": false,
600
+ "hyperscriptError": "Unexpected Token : ?"
601
+ },
602
+ "pick-text-range": {
603
+ "lokascript": true,
604
+ "hyperscript": true
605
+ },
606
+ "previous-element": {
607
+ "lokascript": true,
608
+ "hyperscript": true
609
+ },
610
+ "put-after": {
611
+ "lokascript": true,
612
+ "hyperscript": true
613
+ },
614
+ "put-before": {
615
+ "lokascript": true,
616
+ "hyperscript": true
617
+ },
618
+ "put-content-basic": {
619
+ "lokascript": true,
620
+ "hyperscript": true
621
+ },
622
+ "reactive-array-push": {
623
+ "lokascript": true,
624
+ "hyperscript": true
625
+ },
626
+ "remove-class-basic": {
627
+ "lokascript": true,
628
+ "hyperscript": true
629
+ },
630
+ "remove-class-from-all": {
631
+ "lokascript": true,
632
+ "hyperscript": true
633
+ },
634
+ "remove-element": {
635
+ "lokascript": true,
636
+ "hyperscript": true
637
+ },
638
+ "render-template-with-data": {
639
+ "lokascript": true,
640
+ "hyperscript": true
641
+ },
642
+ "repeat-for-each": {
643
+ "lokascript": true,
644
+ "hyperscript": true
645
+ },
646
+ "repeat-forever": {
647
+ "lokascript": true,
648
+ "hyperscript": true
649
+ },
650
+ "repeat-times": {
651
+ "lokascript": true,
652
+ "hyperscript": true
653
+ },
654
+ "repeat-until-event": {
655
+ "lokascript": true,
656
+ "hyperscript": true
657
+ },
658
+ "repeat-while": {
659
+ "lokascript": true,
660
+ "hyperscript": true
661
+ },
662
+ "send-event": {
663
+ "lokascript": true,
664
+ "hyperscript": true
665
+ },
666
+ "send-event-to-form": {
667
+ "lokascript": true,
668
+ "hyperscript": true
669
+ },
670
+ "send-with-detail": {
671
+ "lokascript": true,
672
+ "hyperscript": true
673
+ },
674
+ "set-attribute": {
675
+ "lokascript": true,
676
+ "hyperscript": true
677
+ },
678
+ "set-color-variable": {
679
+ "lokascript": true,
680
+ "hyperscript": false,
681
+ "hyperscriptError": "Unexpected value: *"
682
+ },
683
+ "set-inner-html-possessive-dot": {
684
+ "lokascript": true,
685
+ "hyperscript": true
686
+ },
687
+ "set-opacity": {
688
+ "lokascript": true,
689
+ "hyperscript": true
690
+ },
691
+ "set-style": {
692
+ "lokascript": true,
693
+ "hyperscript": true
694
+ },
695
+ "set-text-basic": {
696
+ "lokascript": true,
697
+ "hyperscript": true
698
+ },
699
+ "set-text-possessive-dot": {
700
+ "lokascript": true,
701
+ "hyperscript": true
702
+ },
703
+ "set-transform": {
704
+ "lokascript": true,
705
+ "hyperscript": true
706
+ },
707
+ "settle-animations": {
708
+ "lokascript": true,
709
+ "hyperscript": true
710
+ },
711
+ "show-element": {
712
+ "lokascript": true,
713
+ "hyperscript": true
714
+ },
715
+ "show-with-transition": {
716
+ "lokascript": true,
717
+ "hyperscript": true
718
+ },
719
+ "slide-toggle": {
720
+ "lokascript": true,
721
+ "hyperscript": false,
722
+ "hyperscriptError": "Expected 'to' but found 'over'"
723
+ },
724
+ "socket-basic": {
725
+ "lokascript": true,
726
+ "hyperscript": true
727
+ },
728
+ "socket-send": {
729
+ "lokascript": true,
730
+ "hyperscript": true
731
+ },
732
+ "sse-connect-swap": {
733
+ "lokascript": true,
734
+ "hyperscript": false,
735
+ "hyperscriptError": "uses hyperfixi-only attributes"
736
+ },
737
+ "sse-multi-event": {
738
+ "lokascript": true,
739
+ "hyperscript": false,
740
+ "hyperscriptError": "uses hyperfixi-only attributes"
741
+ },
742
+ "stagger-animation": {
743
+ "lokascript": true,
744
+ "hyperscript": false,
745
+ "hyperscriptError": "Expected 'end' but found 'with'"
746
+ },
747
+ "swap-content": {
748
+ "lokascript": true,
749
+ "hyperscript": true
750
+ },
751
+ "tabs-aria": {
752
+ "lokascript": true,
753
+ "hyperscript": false,
754
+ "hyperscriptError": "Expected event name"
755
+ },
756
+ "tabs-basic": {
757
+ "lokascript": true,
758
+ "hyperscript": true
759
+ },
760
+ "tabs-content": {
761
+ "lokascript": true,
762
+ "hyperscript": true
763
+ },
764
+ "take-class-from-siblings": {
765
+ "lokascript": true,
766
+ "hyperscript": true
767
+ },
768
+ "tell-command": {
769
+ "lokascript": true,
770
+ "hyperscript": false,
771
+ "hyperscriptError": "Expected 'end' but found 'to'"
772
+ },
773
+ "tell-other-element": {
774
+ "lokascript": true,
775
+ "hyperscript": true
776
+ },
777
+ "template-literal-interpolation": {
778
+ "lokascript": true,
779
+ "hyperscript": true
780
+ },
781
+ "template-literal-list-build": {
782
+ "lokascript": true,
783
+ "hyperscript": true
784
+ },
785
+ "toggle-aria-expanded": {
786
+ "lokascript": true,
787
+ "hyperscript": true
788
+ },
789
+ "toggle-class-basic": {
790
+ "lokascript": true,
791
+ "hyperscript": true
792
+ },
793
+ "toggle-class-on-other": {
794
+ "lokascript": true,
795
+ "hyperscript": true
796
+ },
797
+ "toggle-visibility": {
798
+ "lokascript": true,
799
+ "hyperscript": true
800
+ },
801
+ "transition-color": {
802
+ "lokascript": true,
803
+ "hyperscript": true
804
+ },
805
+ "transition-opacity": {
806
+ "lokascript": true,
807
+ "hyperscript": true
808
+ },
809
+ "transition-transform": {
810
+ "lokascript": true,
811
+ "hyperscript": true
812
+ },
813
+ "trigger-event": {
814
+ "lokascript": true,
815
+ "hyperscript": true
816
+ },
817
+ "two-way-binding": {
818
+ "lokascript": true,
819
+ "hyperscript": true
820
+ },
821
+ "unless-condition": {
822
+ "lokascript": true,
823
+ "hyperscript": false,
824
+ "hyperscriptError": "Unexpected Token : unless"
825
+ },
826
+ "wait-for-event": {
827
+ "lokascript": true,
828
+ "hyperscript": true
829
+ },
830
+ "wait-then": {
831
+ "lokascript": true,
832
+ "hyperscript": true
833
+ },
834
+ "when-multiple-changes": {
835
+ "lokascript": true,
836
+ "hyperscript": true
837
+ },
838
+ "when-value-changes": {
839
+ "lokascript": true,
840
+ "hyperscript": false,
841
+ "hyperscriptError": "Unexpected value: $"
842
+ },
843
+ "window-keydown": {
844
+ "lokascript": true,
845
+ "hyperscript": true
846
+ },
847
+ "window-resize": {
848
+ "lokascript": true,
849
+ "hyperscript": true
850
+ },
851
+ "window-scroll": {
852
+ "lokascript": true,
853
+ "hyperscript": true
854
+ },
855
+ "worker-basic": {
856
+ "lokascript": true,
857
+ "hyperscript": true
858
+ },
859
+ "ws-connect-send": {
860
+ "lokascript": true,
861
+ "hyperscript": false,
862
+ "hyperscriptError": "uses hyperfixi-only attributes"
863
+ }
864
+ }
865
+ }
package/data/patterns.db CHANGED
Binary file
@@ -1,4 +1,4 @@
1
- export { a as addLLMExample, b as buildFewShotContext, g as getAllPatterns, c as getAllTranslations, d as getExamplesByCommand, e as getHighConfidenceTranslations, f as getHighQualityExamples, h as getLLMExamples, i as getLLMStats, j as getMostUsedExamples, k as getPatternById, l as getPatternStats, m as getPatternsByCategory, n as getPatternsByCommand, o as getTranslation, p as getTranslationStats, q as getTranslationsByLanguage, r as getVerifiedTranslations, s as getWordOrder, t as searchPatterns, u as updateQualityScore, v as verifyTranslation } from '../llm-BS3mf0VG.mjs';
1
+ export { a as addLLMExample, b as buildFewShotContext, g as getAllPatterns, c as getAllTranslations, d as getExamplesByCommand, e as getHighConfidenceTranslations, f as getHighQualityExamples, h as getLLMExamples, i as getLLMStats, j as getMostUsedExamples, k as getPatternById, l as getPatternStats, m as getPatternsByCategory, n as getPatternsByCommand, o as getTranslation, p as getTranslationStats, q as getTranslationsByLanguage, r as getVerifiedTranslations, s as getWordOrder, t as searchPatterns, u as updateQualityScore, v as verifyTranslation } from '../llm-BfjUr-al.mjs';
2
2
  import { C as ConnectionOptions, P as PatternRole, a as Pattern, R as RoleType } from '../index-1ENU9L4F.mjs';
3
3
  import { SemanticRole } from '@lokascript/semantic';
4
4
 
@@ -1,4 +1,4 @@
1
- export { a as addLLMExample, b as buildFewShotContext, g as getAllPatterns, c as getAllTranslations, d as getExamplesByCommand, e as getHighConfidenceTranslations, f as getHighQualityExamples, h as getLLMExamples, i as getLLMStats, j as getMostUsedExamples, k as getPatternById, l as getPatternStats, m as getPatternsByCategory, n as getPatternsByCommand, o as getTranslation, p as getTranslationStats, q as getTranslationsByLanguage, r as getVerifiedTranslations, s as getWordOrder, t as searchPatterns, u as updateQualityScore, v as verifyTranslation } from '../llm-DkGTC6X7.js';
1
+ export { a as addLLMExample, b as buildFewShotContext, g as getAllPatterns, c as getAllTranslations, d as getExamplesByCommand, e as getHighConfidenceTranslations, f as getHighQualityExamples, h as getLLMExamples, i as getLLMStats, j as getMostUsedExamples, k as getPatternById, l as getPatternStats, m as getPatternsByCategory, n as getPatternsByCommand, o as getTranslation, p as getTranslationStats, q as getTranslationsByLanguage, r as getVerifiedTranslations, s as getWordOrder, t as searchPatterns, u as updateQualityScore, v as verifyTranslation } from '../llm-FVj71n77.js';
2
2
  import { C as ConnectionOptions, P as PatternRole, a as Pattern, R as RoleType } from '../index-1ENU9L4F.js';
3
3
  import { SemanticRole } from '@lokascript/semantic';
4
4
 
package/dist/index.d.mts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { C as ConnectionOptions, b as Command, E as Expression, F as Feature, K as Keyword, S as SpecialSymbol, L as LanguageDocsStats, c as LanguageElementType, d as LanguageElement, e as LLMExample, f as PatternsReference } from './index-1ENU9L4F.mjs';
2
2
  export { g as ClassifiedPattern, h as ComplexityLevel, D as DiscoveryResult, i as EngineCompat, j as ExpressionOperator, a as Pattern, k as PatternStats, l as SearchOptions, m as SyncOptions, n as SyncResult, T as TestOptions, o as Translation, p as TranslationMethod, V as ValidationOptions, q as ValidationResult, r as VerificationResult, W as WordOrder } from './index-1ENU9L4F.mjs';
3
3
  import Database from 'better-sqlite3';
4
- export { a as addLLMExample, b as buildFewShotContext, g as getAllPatterns, c as getAllTranslations, w as getBehaviorPatterns, d as getExamplesByCommand, e as getHighConfidenceTranslations, f as getHighQualityExamples, h as getLLMExamples, i as getLLMStats, j as getMostUsedExamples, k as getPatternById, l as getPatternStats, m as getPatternsByCategory, n as getPatternsByCommand, o as getTranslation, p as getTranslationStats, q as getTranslationsByLanguage, r as getVerifiedTranslations, s as getWordOrder, t as searchPatterns, u as updateQualityScore, v as verifyTranslation } from './llm-BS3mf0VG.mjs';
4
+ export { a as addLLMExample, b as buildFewShotContext, g as getAllPatterns, c as getAllTranslations, w as getBehaviorPatterns, d as getExamplesByCommand, e as getHighConfidenceTranslations, f as getHighQualityExamples, h as getLLMExamples, i as getLLMStats, j as getMostUsedExamples, k as getPatternById, l as getPatternStats, m as getPatternsByCategory, n as getPatternsByCommand, o as getTranslation, p as getTranslationStats, q as getTranslationsByLanguage, r as getVerifiedTranslations, s as getWordOrder, t as searchPatterns, u as updateQualityScore, v as verifyTranslation } from './llm-BfjUr-al.mjs';
5
5
  export { DbStampStatus, checkDbStamp, computeDbInputHash, dbStampPath, discoverPatterns, seedLLMExamples, syncTranslations, validateAllTranslations, writeDbStamp } from './sync/index.mjs';
6
6
  import '@lokascript/semantic';
7
7
 
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { C as ConnectionOptions, b as Command, E as Expression, F as Feature, K as Keyword, S as SpecialSymbol, L as LanguageDocsStats, c as LanguageElementType, d as LanguageElement, e as LLMExample, f as PatternsReference } from './index-1ENU9L4F.js';
2
2
  export { g as ClassifiedPattern, h as ComplexityLevel, D as DiscoveryResult, i as EngineCompat, j as ExpressionOperator, a as Pattern, k as PatternStats, l as SearchOptions, m as SyncOptions, n as SyncResult, T as TestOptions, o as Translation, p as TranslationMethod, V as ValidationOptions, q as ValidationResult, r as VerificationResult, W as WordOrder } from './index-1ENU9L4F.js';
3
3
  import Database from 'better-sqlite3';
4
- export { a as addLLMExample, b as buildFewShotContext, g as getAllPatterns, c as getAllTranslations, w as getBehaviorPatterns, d as getExamplesByCommand, e as getHighConfidenceTranslations, f as getHighQualityExamples, h as getLLMExamples, i as getLLMStats, j as getMostUsedExamples, k as getPatternById, l as getPatternStats, m as getPatternsByCategory, n as getPatternsByCommand, o as getTranslation, p as getTranslationStats, q as getTranslationsByLanguage, r as getVerifiedTranslations, s as getWordOrder, t as searchPatterns, u as updateQualityScore, v as verifyTranslation } from './llm-DkGTC6X7.js';
4
+ export { a as addLLMExample, b as buildFewShotContext, g as getAllPatterns, c as getAllTranslations, w as getBehaviorPatterns, d as getExamplesByCommand, e as getHighConfidenceTranslations, f as getHighQualityExamples, h as getLLMExamples, i as getLLMStats, j as getMostUsedExamples, k as getPatternById, l as getPatternStats, m as getPatternsByCategory, n as getPatternsByCommand, o as getTranslation, p as getTranslationStats, q as getTranslationsByLanguage, r as getVerifiedTranslations, s as getWordOrder, t as searchPatterns, u as updateQualityScore, v as verifyTranslation } from './llm-FVj71n77.js';
5
5
  export { DbStampStatus, checkDbStamp, computeDbInputHash, dbStampPath, discoverPatterns, seedLLMExamples, syncTranslations, validateAllTranslations, writeDbStamp } from './sync/index.js';
6
6
  import '@lokascript/semantic';
7
7
 
package/dist/index.js CHANGED
@@ -160,7 +160,8 @@ async function getPatternStats(connOptions) {
160
160
  };
161
161
  }
162
162
  async function getBehaviorPatterns(options) {
163
- return getPatternsByCategory("behavior", options);
163
+ const patterns = await getPatternsByCategory("behavior", options);
164
+ return patterns.filter((p) => /^\s*behavior\s/.test(p.rawCode));
164
165
  }
165
166
  function mapRowToPattern(row) {
166
167
  return {
@@ -842,7 +843,10 @@ function dbInputFiles(dbPath) {
842
843
  for (const f of [
843
844
  path.join(pr, "scripts", "init-db.ts"),
844
845
  path.join(pr, "scripts", "sync-translations.ts"),
845
- path.join(pr, "src", "sync", "span-mask.ts")
846
+ path.join(pr, "src", "sync", "span-mask.ts"),
847
+ // Committed engine-verification results are seeded into the engine
848
+ // column by init-db.ts, so they are DB input too.
849
+ path.join(pr, "data", "engine-verification.json")
846
850
  ]) {
847
851
  if (fs.existsSync(f)) files.push(f);
848
852
  }
package/dist/index.mjs CHANGED
@@ -152,7 +152,8 @@ async function getPatternStats(connOptions) {
152
152
  };
153
153
  }
154
154
  async function getBehaviorPatterns(options) {
155
- return getPatternsByCategory("behavior", options);
155
+ const patterns = await getPatternsByCategory("behavior", options);
156
+ return patterns.filter((p) => /^\s*behavior\s/.test(p.rawCode));
156
157
  }
157
158
  function mapRowToPattern(row) {
158
159
  return {
@@ -834,7 +835,10 @@ function dbInputFiles(dbPath) {
834
835
  for (const f of [
835
836
  join(pr, "scripts", "init-db.ts"),
836
837
  join(pr, "scripts", "sync-translations.ts"),
837
- join(pr, "src", "sync", "span-mask.ts")
838
+ join(pr, "src", "sync", "span-mask.ts"),
839
+ // Committed engine-verification results are seeded into the engine
840
+ // column by init-db.ts, so they are DB input too.
841
+ join(pr, "data", "engine-verification.json")
838
842
  ]) {
839
843
  if (existsSync(f)) files.push(f);
840
844
  }
@@ -33,9 +33,10 @@ declare function getPatternStats(connOptions?: ConnectionOptions): Promise<Patte
33
33
  /**
34
34
  * Get behavior definition patterns.
35
35
  *
36
- * Returns patterns with feature='behavior' — these are installable
37
- * behavior definitions (behavior Name(params) ... end) that can be
38
- * compiled and registered with a LokaScript runtime.
36
+ * Returns installable behavior definitions (behavior Name(params) ... end)
37
+ * that can be compiled and registered with a LokaScript runtime. The
38
+ * 'behavior' category also holds usage examples (`install Draggable`,
39
+ * `tell #modal …`), so filter to actual definitions by source shape.
39
40
  */
40
41
  declare function getBehaviorPatterns(options?: ConnectionOptions): Promise<Pattern[]>;
41
42
 
@@ -33,9 +33,10 @@ declare function getPatternStats(connOptions?: ConnectionOptions): Promise<Patte
33
33
  /**
34
34
  * Get behavior definition patterns.
35
35
  *
36
- * Returns patterns with feature='behavior' — these are installable
37
- * behavior definitions (behavior Name(params) ... end) that can be
38
- * compiled and registered with a LokaScript runtime.
36
+ * Returns installable behavior definitions (behavior Name(params) ... end)
37
+ * that can be compiled and registered with a LokaScript runtime. The
38
+ * 'behavior' category also holds usage examples (`install Draggable`,
39
+ * `tell #modal …`), so filter to actual definitions by source shape.
39
40
  */
40
41
  declare function getBehaviorPatterns(options?: ConnectionOptions): Promise<Pattern[]>;
41
42
 
@@ -30,7 +30,10 @@ function dbInputFiles(dbPath) {
30
30
  for (const f of [
31
31
  path.join(pr, "scripts", "init-db.ts"),
32
32
  path.join(pr, "scripts", "sync-translations.ts"),
33
- path.join(pr, "src", "sync", "span-mask.ts")
33
+ path.join(pr, "src", "sync", "span-mask.ts"),
34
+ // Committed engine-verification results are seeded into the engine
35
+ // column by init-db.ts, so they are DB input too.
36
+ path.join(pr, "data", "engine-verification.json")
34
37
  ]) {
35
38
  if (fs.existsSync(f)) files.push(f);
36
39
  }
@@ -28,7 +28,10 @@ function dbInputFiles(dbPath) {
28
28
  for (const f of [
29
29
  join(pr, "scripts", "init-db.ts"),
30
30
  join(pr, "scripts", "sync-translations.ts"),
31
- join(pr, "src", "sync", "span-mask.ts")
31
+ join(pr, "src", "sync", "span-mask.ts"),
32
+ // Committed engine-verification results are seeded into the engine
33
+ // column by init-db.ts, so they are DB input too.
34
+ join(pr, "data", "engine-verification.json")
32
35
  ]) {
33
36
  if (existsSync(f)) files.push(f);
34
37
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hyperfixi/patterns-reference",
3
- "version": "2.6.0",
3
+ "version": "2.7.1",
4
4
  "description": "Queryable patterns database for hyperscript with multilingual translations and LLM support",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -39,10 +39,8 @@
39
39
  "validate:fix": "tsx scripts/validate-all.ts --fix",
40
40
  "verify": "tsx scripts/verify-translations.ts",
41
41
  "verify:verbose": "tsx scripts/verify-translations.ts --verbose",
42
- "verify:engine": "tsx scripts/verify-engine-compat.ts",
43
- "verify:engine:verbose": "tsx scripts/verify-engine-compat.ts --verbose",
44
- "verify:engine:dry-run": "tsx scripts/verify-engine-compat.ts --dry-run --verbose",
45
- "test:check": "VITEST_QUIET=1 bash ../../scripts/vitest-run.sh --reporter=dot"
42
+ "test:check": "VITEST_QUIET=1 bash ../../scripts/vitest-run.sh --reporter=dot",
43
+ "verify:engines": "tsx scripts/verify-engines.ts --update-db"
46
44
  },
47
45
  "keywords": [
48
46
  "hyperscript",
@@ -56,7 +54,7 @@
56
54
  "author": "LokaScript Contributors",
57
55
  "license": "MIT",
58
56
  "engines": {
59
- "node": ">=18.0.0"
57
+ "node": ">=24"
60
58
  },
61
59
  "repository": {
62
60
  "type": "git",
@@ -68,12 +66,17 @@
68
66
  },
69
67
  "homepage": "https://github.com/codetalcott/hyperfixi/tree/main/packages/patterns-reference#readme",
70
68
  "dependencies": {
71
- "@lokascript/semantic": "^2.6.0",
69
+ "@lokascript/semantic": "^2.7.1",
72
70
  "better-sqlite3": "^12.6.2"
73
71
  },
74
72
  "devDependencies": {
73
+ "@hyperfixi/core": "^2.7.1",
74
+ "@hyperfixi/reactivity": "^2.7.1",
75
+ "@hyperfixi/realtime": "^2.7.1",
75
76
  "@types/better-sqlite3": "^7.6.0",
76
77
  "@types/node": "^20.0.0",
78
+ "hyperscript.org": "0.9.93",
79
+ "jsdom": "^26.0.0",
77
80
  "tsup": "^8.0.0",
78
81
  "tsx": "^4.0.0",
79
82
  "typescript": "^5.0.0",
@@ -225,12 +225,14 @@ export async function getPatternStats(connOptions?: ConnectionOptions): Promise<
225
225
  /**
226
226
  * Get behavior definition patterns.
227
227
  *
228
- * Returns patterns with feature='behavior' — these are installable
229
- * behavior definitions (behavior Name(params) ... end) that can be
230
- * compiled and registered with a LokaScript runtime.
228
+ * Returns installable behavior definitions (behavior Name(params) ... end)
229
+ * that can be compiled and registered with a LokaScript runtime. The
230
+ * 'behavior' category also holds usage examples (`install Draggable`,
231
+ * `tell #modal …`), so filter to actual definitions by source shape.
231
232
  */
232
233
  export async function getBehaviorPatterns(options?: ConnectionOptions): Promise<Pattern[]> {
233
- return getPatternsByCategory('behavior', options);
234
+ const patterns = await getPatternsByCategory('behavior', options);
235
+ return patterns.filter(p => /^\s*behavior\s/.test(p.rawCode));
234
236
  }
235
237
 
236
238
  // =============================================================================
@@ -57,6 +57,9 @@ function dbInputFiles(dbPath: string): string[] {
57
57
  join(pr, 'scripts', 'init-db.ts'),
58
58
  join(pr, 'scripts', 'sync-translations.ts'),
59
59
  join(pr, 'src', 'sync', 'span-mask.ts'),
60
+ // Committed engine-verification results are seeded into the engine
61
+ // column by init-db.ts, so they are DB input too.
62
+ join(pr, 'data', 'engine-verification.json'),
60
63
  ]) {
61
64
  if (existsSync(f)) files.push(f);
62
65
  }