@vimpak/jsx 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,105 @@
1
+ # @vimpak/jsx
2
+
3
+ A JSX library for server-side rendering, designed to work with Bun.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @vimpak/jsx
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ ### JSX Configuration
14
+
15
+ Configure your `tsconfig.json`:
16
+
17
+ ```json
18
+ {
19
+ "compilerOptions": {
20
+ "jsx": "react-jsx",
21
+ "jsxImportSource": "@vimpak/jsx"
22
+ }
23
+ }
24
+ ```
25
+
26
+ ### Basic Example
27
+
28
+ ```tsx
29
+ import { render } from "@vimpak/jsx";
30
+
31
+ function Greeting({ name }: { name: string }) {
32
+ return <h1>Hello, {name}!</h1>;
33
+ }
34
+
35
+ const html = await render(<Greeting name="World" />);
36
+ // Output: <h1>Hello, World!</h1>
37
+ ```
38
+
39
+ ### Fragments
40
+
41
+ ```tsx
42
+ function Page() {
43
+ return (
44
+ <>
45
+ <h1>Title</h1>
46
+ <p>Content</p>
47
+ </>
48
+ );
49
+ }
50
+ ```
51
+
52
+ ### Safe HTML
53
+
54
+ Use the `safe` prop to render raw HTML:
55
+
56
+ ```tsx
57
+ function Component() {
58
+ return <div safe="<strong>Bold text</strong>" />;
59
+ }
60
+ ```
61
+
62
+ ### Styles
63
+
64
+ ```tsx
65
+ function Styled() {
66
+ return <div style={{ color: "red", fontSize: "16px" }}>Styled</div>;
67
+ }
68
+ ```
69
+
70
+ ### Context
71
+
72
+ ```tsx
73
+ class AppContext {
74
+ async getTheme() {
75
+ return "dark";
76
+ }
77
+ }
78
+
79
+ const ctx = new AppContext();
80
+
81
+ function Greeting(props: { name: string }, ctx: AppContext) {
82
+ return <div></div>;
83
+ }
84
+
85
+ function App() {
86
+ return (
87
+ <div>
88
+ <Greeting />
89
+ </div>
90
+ );
91
+ }
92
+
93
+ const html = await render(<App />, ctx);
94
+ ```
95
+
96
+ ## API
97
+
98
+ ### `render(element, context?)`
99
+
100
+ Renders a JSX element to an HTML string.
101
+
102
+ - **element**: The root JSX element to render
103
+ - **context** (optional): A `Context` value for passing values to all components
104
+
105
+ Returns `Promise<string>`.
package/dist/html.d.ts ADDED
@@ -0,0 +1,712 @@
1
+ /** Same as a string type but allows autocompletion of literal values */
2
+ type AnyString = string & {};
3
+ declare namespace JSX {
4
+ /**
5
+ * The index signature was removed to enable closed typing for style using CSSType.
6
+ * You're able to use type assertion or module augmentation to add properties or an
7
+ * index signature of your own.
8
+ *
9
+ * For examples and more information, visit:
10
+ * https://github.com/frenic/csstype#what-should-i-do-when-i-get-type-errors
11
+ */
12
+ type CSSProperties = import("csstype").Properties;
13
+ interface HtmlTag extends IntrinsicAttributes {
14
+ accesskey?: undefined | string;
15
+ autocapitalize?: undefined | "off" | "none" | "on" | "sentences" | "words" | "characters" | AnyString;
16
+ autocorrect?: undefined | "on" | "off" | AnyString;
17
+ contenteditable?: undefined | string;
18
+ enterkeyhint?: undefined | "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | AnyString;
19
+ inert?: undefined | boolean;
20
+ inputmode?: undefined | "none" | "text" | "decimal" | "numeric" | "tel" | "search" | "email" | "url" | AnyString;
21
+ dir?: undefined | string;
22
+ hidden?: undefined | string | boolean;
23
+ id?: undefined | number | string;
24
+ nonce?: undefined | string;
25
+ part?: undefined | string;
26
+ popover?: undefined | boolean | "auto" | "manual";
27
+ role?: undefined | AriaRole;
28
+ lang?: undefined | string;
29
+ slot?: undefined | string;
30
+ draggable?: undefined | string | boolean;
31
+ spellcheck?: undefined | string | boolean;
32
+ tabindex?: undefined | number | string;
33
+ title?: undefined | string;
34
+ translate?: undefined | string | boolean;
35
+ virtualkeyboardpolicy?: undefined | "auto" | "manual" | AnyString;
36
+ writingsuggestions?: undefined | "true" | "false" | AnyString;
37
+ /** A css style attribute which also supports a `csstype` object. */
38
+ style?: undefined | string | CSSProperties;
39
+ safe?: undefined | string;
40
+ className?: undefined | string;
41
+ }
42
+ interface HtmlAnchorTag extends HtmlTag {
43
+ href?: undefined | string;
44
+ hreflang?: undefined | string;
45
+ target?: undefined | string;
46
+ download?: undefined | string;
47
+ referrerpolicy?: undefined | "" | "no-referrer" | "no-referrer-when-downgrade" | "origin" | "origin-when-cross-origin" | "same-origin" | "strict-origin" | "strict-origin-when-cross-origin" | "unsafe-url" | AnyString;
48
+ ping?: undefined | string;
49
+ rel?: undefined | string;
50
+ media?: undefined | string;
51
+ type?: undefined | string;
52
+ }
53
+ interface HtmlAreaTag extends HtmlTag {
54
+ alt?: undefined | string;
55
+ coords?: undefined | string;
56
+ shape?: undefined | string;
57
+ href?: undefined | string;
58
+ target?: undefined | string;
59
+ ping?: undefined | string;
60
+ rel?: undefined | string;
61
+ media?: undefined | string;
62
+ hreflang?: undefined | string;
63
+ type?: undefined | string;
64
+ }
65
+ interface HtmlAudioTag extends HtmlTag {
66
+ src?: undefined | string;
67
+ autobuffer?: undefined | string;
68
+ autoplay?: undefined | boolean;
69
+ preload?: undefined | string;
70
+ muted?: undefined | boolean;
71
+ loop?: undefined | boolean;
72
+ controls?: undefined | string;
73
+ }
74
+ interface BaseTag extends HtmlTag {
75
+ href?: undefined | string;
76
+ target?: undefined | string;
77
+ }
78
+ interface HtmlQuoteTag extends HtmlTag {
79
+ cite?: undefined | string;
80
+ }
81
+ interface HtmlBodyTag extends HtmlTag {
82
+ }
83
+ interface HtmlButtonTag extends HtmlTag {
84
+ action?: undefined | string;
85
+ autofocus?: undefined | boolean;
86
+ command?: undefined | string;
87
+ commandfor?: undefined | string;
88
+ disabled?: undefined | boolean;
89
+ enctype?: undefined | string;
90
+ form?: undefined | string;
91
+ method?: undefined | string;
92
+ name?: undefined | string;
93
+ novalidate?: undefined | string | boolean;
94
+ target?: undefined | string;
95
+ type?: undefined | string;
96
+ value?: undefined | string;
97
+ formaction?: undefined | string;
98
+ formenctype?: undefined | string;
99
+ formmethod?: undefined | string;
100
+ formnovalidate?: undefined | string | boolean;
101
+ formtarget?: undefined | string;
102
+ popovertarget?: undefined | string;
103
+ popovertargetaction?: undefined | string;
104
+ }
105
+ interface HtmlDataListTag extends HtmlTag {
106
+ }
107
+ interface HtmlCanvasTag extends HtmlTag {
108
+ width?: undefined | string;
109
+ height?: undefined | string;
110
+ }
111
+ interface HtmlTableColTag extends HtmlTag {
112
+ span?: undefined | string;
113
+ }
114
+ interface HtmlTableSectionTag extends HtmlTag {
115
+ }
116
+ interface HtmlTableRowTag extends HtmlTag {
117
+ }
118
+ interface DataTag extends HtmlTag {
119
+ value?: undefined | string;
120
+ }
121
+ interface HtmlEmbedTag extends HtmlTag, Record<string, any> {
122
+ src?: undefined | string;
123
+ type?: undefined | string;
124
+ width?: undefined | string;
125
+ height?: undefined | string;
126
+ }
127
+ interface HtmlFieldSetTag extends HtmlTag {
128
+ disabled?: undefined | boolean;
129
+ form?: undefined | string;
130
+ name?: undefined | string;
131
+ }
132
+ interface HtmlFormTag extends HtmlTag {
133
+ "accept-charset"?: undefined | string;
134
+ action?: undefined | string;
135
+ autocomplete?: undefined | string;
136
+ enctype?: undefined | string;
137
+ method?: undefined | string;
138
+ name?: undefined | string;
139
+ novalidate?: undefined | string | boolean;
140
+ target?: undefined | string;
141
+ }
142
+ interface HtmlHtmlTag extends HtmlTag {
143
+ manifest?: undefined | string;
144
+ xmlns?: string | string;
145
+ }
146
+ interface HtmlIFrameTag extends HtmlTag {
147
+ allow?: undefined | string;
148
+ allowfullscreen?: undefined | boolean;
149
+ allowpaymentrequest?: undefined | boolean;
150
+ credentialless?: undefined | boolean;
151
+ frameborder?: undefined | number | string;
152
+ height?: undefined | string;
153
+ loading?: undefined | string;
154
+ name?: undefined | string;
155
+ referrerpolicy?: undefined | "" | "no-referrer" | "no-referrer-when-downgrade" | "origin" | "origin-when-cross-origin" | "same-origin" | "strict-origin" | "strict-origin-when-cross-origin" | "unsafe-url" | AnyString;
156
+ sandbox?: undefined | boolean | "" | "allow-downloads" | "allow-forms" | "allow-modals" | "allow-orientation-lock" | "allow-pointer-lock" | "allow-popups" | "allow-popups-to-escape-sandbox" | "allow-presentation" | "allow-same-origin" | "allow-scripts" | "allow-storage-access-by-user-activation" | "allow-top-navigation" | "allow-top-navigation-by-user-activation" | "allow-top-navigation-to-custom-protocols" | AnyString;
157
+ src?: undefined | string;
158
+ srcdoc?: undefined | string;
159
+ seamless?: undefined | string;
160
+ width?: undefined | string;
161
+ }
162
+ interface HtmlImageTag extends HtmlTag {
163
+ alt?: undefined | string;
164
+ src?: undefined | string;
165
+ crossorigin?: undefined | string;
166
+ usemap?: undefined | string;
167
+ ismap?: undefined | string;
168
+ width?: undefined | number | string;
169
+ height?: undefined | number | string;
170
+ decoding?: undefined | "sync" | "async" | "auto" | AnyString;
171
+ loading?: undefined | "eager" | "lazy" | AnyString;
172
+ srcset?: undefined | string;
173
+ fetchpriority?: undefined | "high" | "low" | "auto" | AnyString;
174
+ }
175
+ interface HtmlInputTag extends HtmlTag {
176
+ accept?: undefined | string;
177
+ action?: undefined | string;
178
+ alt?: undefined | string;
179
+ autocomplete?: undefined | string;
180
+ autofocus?: undefined | boolean;
181
+ checked?: undefined | boolean;
182
+ disabled?: undefined | boolean;
183
+ enctype?: undefined | string;
184
+ form?: undefined | string;
185
+ height?: undefined | string;
186
+ list?: undefined | string;
187
+ max?: undefined | number | string;
188
+ minlength?: undefined | number | string;
189
+ maxlength?: undefined | number | string;
190
+ method?: undefined | string;
191
+ min?: undefined | number | string;
192
+ multiple?: undefined | boolean;
193
+ name?: undefined | string;
194
+ novalidate?: undefined | boolean;
195
+ pattern?: undefined | string;
196
+ placeholder?: undefined | string;
197
+ readonly?: undefined | boolean;
198
+ required?: undefined | boolean;
199
+ size?: undefined | string;
200
+ src?: undefined | string;
201
+ step?: undefined | string;
202
+ target?: undefined | string;
203
+ type?: undefined | string;
204
+ value?: undefined | string;
205
+ width?: undefined | string;
206
+ }
207
+ interface HtmlModTag extends HtmlTag {
208
+ cite?: undefined | string;
209
+ datetime?: undefined | string | Date;
210
+ }
211
+ interface KeygenTag extends HtmlTag {
212
+ autofocus?: undefined | boolean;
213
+ challenge?: undefined | string;
214
+ disabled?: undefined | boolean;
215
+ form?: undefined | string;
216
+ keytype?: undefined | string;
217
+ name?: undefined | string;
218
+ }
219
+ interface HtmlLabelTag extends HtmlTag {
220
+ form?: undefined | string;
221
+ for?: undefined | string;
222
+ }
223
+ interface HtmlLITag extends HtmlTag {
224
+ value?: undefined | string | number;
225
+ }
226
+ interface HtmlLinkTag extends HtmlTag {
227
+ href?: undefined | string;
228
+ crossorigin?: undefined | string;
229
+ rel?: undefined | string;
230
+ as?: undefined | string;
231
+ media?: undefined | string;
232
+ hreflang?: undefined | string;
233
+ type?: undefined | string;
234
+ sizes?: undefined | string;
235
+ integrity?: undefined | string;
236
+ fetchpriority?: undefined | "high" | "low" | "auto" | AnyString;
237
+ blocking?: undefined | "render" | AnyString;
238
+ }
239
+ interface HtmlMapTag extends HtmlTag {
240
+ name?: undefined | string;
241
+ }
242
+ interface HtmlMetaTag extends HtmlTag {
243
+ name?: undefined | string;
244
+ property?: undefined | string;
245
+ "http-equiv"?: undefined | string;
246
+ content?: undefined | string;
247
+ charset?: undefined | string;
248
+ }
249
+ interface HtmlMeterTag extends HtmlTag {
250
+ value?: undefined | string | number;
251
+ min?: undefined | string | number;
252
+ max?: undefined | string | number;
253
+ low?: undefined | string | number;
254
+ high?: undefined | string | number;
255
+ optimum?: undefined | string | number;
256
+ }
257
+ interface HtmlObjectTag extends HtmlTag {
258
+ data?: undefined | string;
259
+ type?: undefined | string;
260
+ name?: undefined | string;
261
+ usemap?: undefined | string;
262
+ form?: undefined | string;
263
+ width?: undefined | string;
264
+ height?: undefined | string;
265
+ }
266
+ interface HtmlOListTag extends HtmlTag {
267
+ reversed?: undefined | string;
268
+ start?: undefined | string | number;
269
+ }
270
+ interface HtmlOptgroupTag extends HtmlTag {
271
+ disabled?: undefined | boolean;
272
+ label?: undefined | string;
273
+ }
274
+ interface HtmlOptionTag extends HtmlTag {
275
+ disabled?: undefined | boolean;
276
+ label?: undefined | string;
277
+ selected?: undefined | boolean;
278
+ value?: undefined | string;
279
+ }
280
+ interface HtmlOutputTag extends HtmlTag {
281
+ for?: undefined | string;
282
+ form?: undefined | string;
283
+ name?: undefined | string;
284
+ }
285
+ interface HtmlParamTag extends HtmlTag {
286
+ name?: undefined | string;
287
+ value?: undefined | string;
288
+ }
289
+ interface HtmlPictureTag extends HtmlTag {
290
+ }
291
+ interface HtmlProgressTag extends HtmlTag {
292
+ value?: undefined | string | number;
293
+ max?: undefined | string | number;
294
+ }
295
+ interface HtmlCommandTag extends HtmlTag {
296
+ type?: undefined | string;
297
+ label?: undefined | string;
298
+ icon?: undefined | string;
299
+ disabled?: undefined | boolean;
300
+ checked?: undefined | string;
301
+ radiogroup?: undefined | string;
302
+ default?: undefined | string;
303
+ }
304
+ interface HtmlLegendTag extends HtmlTag {
305
+ }
306
+ interface HtmlBrowserButtonTag extends HtmlTag {
307
+ type?: undefined | string;
308
+ }
309
+ interface HtmlMenuTag extends HtmlTag {
310
+ type?: undefined | string;
311
+ label?: undefined | string;
312
+ }
313
+ interface HtmlScriptTag extends HtmlTag {
314
+ src?: undefined | string;
315
+ type?: undefined | string;
316
+ charset?: undefined | string;
317
+ async?: undefined | boolean;
318
+ defer?: undefined | boolean;
319
+ crossorigin?: undefined | string;
320
+ integrity?: undefined | string;
321
+ text?: undefined | string;
322
+ fetchpriority?: undefined | "high" | "low" | "auto" | AnyString;
323
+ blocking?: undefined | "render" | AnyString;
324
+ }
325
+ interface HtmlDetailsTag extends HtmlTag {
326
+ open?: undefined | boolean;
327
+ name?: undefined | string;
328
+ }
329
+ interface HtmlDialogTag extends HtmlTag {
330
+ closedby?: undefined | "any" | "closerequest" | "none" | AnyString;
331
+ open?: undefined | boolean;
332
+ onclose?: undefined | string;
333
+ }
334
+ interface HtmlSelectTag extends HtmlTag, FormEvents {
335
+ autofocus?: undefined | boolean;
336
+ disabled?: undefined | boolean;
337
+ form?: undefined | string;
338
+ multiple?: undefined | string;
339
+ name?: undefined | string;
340
+ required?: undefined | boolean;
341
+ size?: undefined | string;
342
+ autocomplete?: undefined | string;
343
+ }
344
+ interface HtmlSourceTag extends HtmlTag {
345
+ src?: undefined | string;
346
+ srcset?: undefined | string;
347
+ type?: undefined | string;
348
+ media?: undefined | string;
349
+ }
350
+ interface HtmlStyleTag extends HtmlTag {
351
+ media?: undefined | string;
352
+ type?: undefined | string;
353
+ disabled?: undefined | boolean;
354
+ scoped?: undefined | string;
355
+ blocking?: undefined | "render" | AnyString;
356
+ }
357
+ interface HtmlTableTag extends HtmlTag {
358
+ align?: undefined | "left" | "center" | "right";
359
+ /** @deprecated */
360
+ bgcolor?: undefined | string;
361
+ border?: undefined | number;
362
+ cellpadding?: undefined | number | string;
363
+ cellspacing?: undefined | number | string;
364
+ width?: undefined | number | string;
365
+ }
366
+ interface HtmlTableDataCellTag extends HtmlTag {
367
+ align?: undefined | "left" | "center" | "right";
368
+ colspan?: undefined | string | number;
369
+ rowspan?: undefined | string | number;
370
+ headers?: undefined | string;
371
+ /** @deprecated */
372
+ valign?: undefined | "top" | "middle" | "bottom" | "baseline";
373
+ }
374
+ interface HtmlTextAreaTag extends HtmlTag {
375
+ autofocus?: undefined | boolean;
376
+ cols?: undefined | string;
377
+ dirname?: undefined | string;
378
+ disabled?: undefined | boolean;
379
+ form?: undefined | string;
380
+ maxlength?: undefined | number | string;
381
+ minlength?: undefined | number | string;
382
+ name?: undefined | string;
383
+ placeholder?: undefined | string;
384
+ readonly?: undefined | boolean;
385
+ required?: undefined | boolean;
386
+ rows?: undefined | string;
387
+ wrap?: undefined | string;
388
+ }
389
+ interface HtmlTableHeaderCellTag extends HtmlTag {
390
+ colspan?: undefined | string | number;
391
+ rowspan?: undefined | string | number;
392
+ headers?: undefined | string;
393
+ scope?: undefined | string;
394
+ /** @deprecated */
395
+ valign?: undefined | "top" | "middle" | "bottom" | "baseline";
396
+ width?: undefined | number | string;
397
+ }
398
+ interface HtmlTimeTag extends HtmlTag {
399
+ datetime?: undefined | string | Date;
400
+ }
401
+ interface HtmlTrackTag extends HtmlTag {
402
+ default?: undefined | string;
403
+ kind?: undefined | string;
404
+ label?: undefined | string;
405
+ src?: undefined | string;
406
+ srclang?: undefined | string;
407
+ }
408
+ interface HtmlVideoTag extends HtmlTag {
409
+ src?: undefined | string;
410
+ poster?: undefined | string;
411
+ autobuffer?: undefined | string;
412
+ autoplay?: undefined | boolean;
413
+ loop?: undefined | boolean;
414
+ muted?: undefined | boolean;
415
+ controls?: undefined | boolean;
416
+ width?: undefined | string;
417
+ height?: undefined | string;
418
+ }
419
+ interface HtmlSvgTag extends HtmlTag, Record<string, any> {
420
+ }
421
+ interface HtmlSearchTag extends HtmlTag {
422
+ }
423
+ interface HtmlSlotTag extends HtmlTag {
424
+ name?: undefined | string;
425
+ }
426
+ interface HtmlFencedFrameTag extends HtmlTag {
427
+ allow?: undefined | string;
428
+ height?: undefined | number | string;
429
+ width?: undefined | number | string;
430
+ }
431
+ interface HtmlUnspecifiedTag extends HtmlTag, Record<string, any> {
432
+ of: string;
433
+ }
434
+ interface HtmlBodyTag {
435
+ onafterprint?: undefined | string;
436
+ onbeforeprint?: undefined | string;
437
+ onbeforeonload?: undefined | string;
438
+ onblur?: undefined | string;
439
+ onerror?: undefined | string;
440
+ onfocus?: undefined | string;
441
+ onhaschange?: undefined | string;
442
+ onload?: undefined | string;
443
+ onmessage?: undefined | string;
444
+ onoffline?: undefined | string;
445
+ ononline?: undefined | string;
446
+ onpagehide?: undefined | string;
447
+ onpageshow?: undefined | string;
448
+ onpopstate?: undefined | string;
449
+ onredo?: undefined | string;
450
+ onresize?: undefined | string;
451
+ onstorage?: undefined | string;
452
+ onundo?: undefined | string;
453
+ onunload?: undefined | string;
454
+ }
455
+ interface HtmlTag {
456
+ oncontextmenu?: undefined | string;
457
+ onkeydown?: undefined | string;
458
+ onkeypress?: undefined | string;
459
+ onkeyup?: undefined | string;
460
+ onclick?: undefined | string;
461
+ ondblclick?: undefined | string;
462
+ ondrag?: undefined | string;
463
+ ondragend?: undefined | string;
464
+ ondragenter?: undefined | string;
465
+ ondragleave?: undefined | string;
466
+ ondragover?: undefined | string;
467
+ ondragstart?: undefined | string;
468
+ ondrop?: undefined | string;
469
+ onmousedown?: undefined | string;
470
+ onmousemove?: undefined | string;
471
+ onmouseout?: undefined | string;
472
+ onmouseover?: undefined | string;
473
+ onmouseup?: undefined | string;
474
+ onmousewheel?: undefined | string;
475
+ onscroll?: undefined | string;
476
+ }
477
+ interface FormEvents {
478
+ onblur?: undefined | string;
479
+ onchange?: undefined | string;
480
+ onfocus?: undefined | string;
481
+ onformchange?: undefined | string;
482
+ onforminput?: undefined | string;
483
+ oninput?: undefined | string;
484
+ oninvalid?: undefined | string;
485
+ onselect?: undefined | string;
486
+ onsubmit?: undefined | string;
487
+ }
488
+ interface HtmlInputTag extends FormEvents {
489
+ }
490
+ interface HtmlFieldSetTag extends FormEvents {
491
+ }
492
+ interface HtmlFormTag extends FormEvents {
493
+ }
494
+ interface MediaEvents {
495
+ onabort?: undefined | string;
496
+ oncanplay?: undefined | string;
497
+ oncanplaythrough?: undefined | string;
498
+ ondurationchange?: undefined | string;
499
+ onemptied?: undefined | string;
500
+ onended?: undefined | string;
501
+ onerror?: undefined | string;
502
+ onloadeddata?: undefined | string;
503
+ onloadedmetadata?: undefined | string;
504
+ onloadstart?: undefined | string;
505
+ onpause?: undefined | string;
506
+ onplay?: undefined | string;
507
+ onplaying?: undefined | string;
508
+ onprogress?: undefined | string;
509
+ onratechange?: undefined | string;
510
+ onreadystatechange?: undefined | string;
511
+ onseeked?: undefined | string;
512
+ onseeking?: undefined | string;
513
+ onstalled?: undefined | string;
514
+ onsuspend?: undefined | string;
515
+ ontimeupdate?: undefined | string;
516
+ onvolumechange?: undefined | string;
517
+ onwaiting?: undefined | string;
518
+ }
519
+ interface HtmlAudioTag extends MediaEvents {
520
+ }
521
+ interface HtmlEmbedTag extends MediaEvents {
522
+ }
523
+ interface HtmlImageTag extends MediaEvents {
524
+ border?: undefined | number;
525
+ }
526
+ interface HtmlObjectTag extends MediaEvents {
527
+ }
528
+ interface HtmlVideoTag extends MediaEvents {
529
+ }
530
+ interface IntrinsicElements {
531
+ a: HtmlAnchorTag;
532
+ abbr: HtmlTag;
533
+ address: HtmlTag;
534
+ animate: HtmlSvgTag;
535
+ animateMotion: HtmlSvgTag;
536
+ animateTransform: HtmlSvgTag;
537
+ area: HtmlAreaTag;
538
+ article: HtmlTag;
539
+ aside: HtmlTag;
540
+ audio: HtmlAudioTag;
541
+ b: HtmlTag;
542
+ base: BaseTag;
543
+ bb: HtmlBrowserButtonTag;
544
+ bdi: HtmlTag;
545
+ bdo: HtmlTag;
546
+ blockquote: HtmlQuoteTag;
547
+ body: HtmlBodyTag;
548
+ br: HtmlTag;
549
+ button: HtmlButtonTag;
550
+ canvas: HtmlCanvasTag;
551
+ caption: HtmlTag;
552
+ circle: HtmlSvgTag;
553
+ cite: HtmlTag;
554
+ clipPath: HtmlSvgTag;
555
+ code: HtmlTag;
556
+ col: HtmlTableColTag;
557
+ colgroup: HtmlTableColTag;
558
+ commands: HtmlCommandTag;
559
+ data: DataTag;
560
+ datalist: HtmlDataListTag;
561
+ dd: HtmlTag;
562
+ defs: HtmlSvgTag;
563
+ del: HtmlModTag;
564
+ desc: HtmlSvgTag;
565
+ details: HtmlDetailsTag;
566
+ dfn: HtmlTag;
567
+ dialog: HtmlDialogTag;
568
+ div: HtmlTag;
569
+ dl: HtmlTag;
570
+ dt: HtmlTag;
571
+ ellipse: HtmlSvgTag;
572
+ em: HtmlTag;
573
+ embed: HtmlEmbedTag;
574
+ feBlend: HtmlSvgTag;
575
+ feColorMatrix: HtmlSvgTag;
576
+ feComponentTransfer: HtmlSvgTag;
577
+ feComposite: HtmlSvgTag;
578
+ feConvolveMatrix: HtmlSvgTag;
579
+ feDiffuseLighting: HtmlSvgTag;
580
+ feDisplacementMap: HtmlSvgTag;
581
+ feDistantLight: HtmlSvgTag;
582
+ feDropShadow: HtmlSvgTag;
583
+ feFlood: HtmlSvgTag;
584
+ feFuncA: HtmlSvgTag;
585
+ feFuncB: HtmlSvgTag;
586
+ feFuncG: HtmlSvgTag;
587
+ feFuncR: HtmlSvgTag;
588
+ feGaussianBlur: HtmlSvgTag;
589
+ feImage: HtmlSvgTag;
590
+ feMerge: HtmlSvgTag;
591
+ feMergeNode: HtmlSvgTag;
592
+ feMorphology: HtmlSvgTag;
593
+ feOffset: HtmlSvgTag;
594
+ fePointLight: HtmlSvgTag;
595
+ feSpecularLighting: HtmlSvgTag;
596
+ feSpotLight: HtmlSvgTag;
597
+ feTile: HtmlSvgTag;
598
+ feTurbulence: HtmlSvgTag;
599
+ fencedframe: HtmlFencedFrameTag;
600
+ fieldset: HtmlFieldSetTag;
601
+ figcaption: HtmlTag;
602
+ figure: HtmlTag;
603
+ filter: HtmlSvgTag;
604
+ footer: HtmlTag;
605
+ foreignObject: HtmlSvgTag;
606
+ form: HtmlFormTag;
607
+ g: HtmlSvgTag;
608
+ h1: HtmlTag;
609
+ h2: HtmlTag;
610
+ h3: HtmlTag;
611
+ h4: HtmlTag;
612
+ h5: HtmlTag;
613
+ h6: HtmlTag;
614
+ head: HtmlTag;
615
+ header: HtmlTag;
616
+ hgroup: HtmlTag;
617
+ hr: HtmlTag;
618
+ html: HtmlHtmlTag;
619
+ i: HtmlTag;
620
+ iframe: HtmlIFrameTag;
621
+ image: HtmlSvgTag;
622
+ img: HtmlImageTag;
623
+ input: HtmlInputTag;
624
+ ins: HtmlModTag;
625
+ kbd: HtmlTag;
626
+ keygen: KeygenTag;
627
+ label: HtmlLabelTag;
628
+ legend: HtmlLegendTag;
629
+ li: HtmlLITag;
630
+ line: HtmlSvgTag;
631
+ linearGradient: HtmlSvgTag;
632
+ link: HtmlLinkTag;
633
+ main: HtmlTag;
634
+ map: HtmlMapTag;
635
+ mark: HtmlTag;
636
+ marker: HtmlSvgTag;
637
+ mask: HtmlSvgTag;
638
+ menu: HtmlMenuTag;
639
+ meta: HtmlMetaTag;
640
+ metadata: HtmlSvgTag;
641
+ meter: HtmlMeterTag;
642
+ mpath: HtmlSvgTag;
643
+ nav: HtmlTag;
644
+ noscript: HtmlTag;
645
+ object: HtmlObjectTag;
646
+ ol: HtmlOListTag;
647
+ optgroup: HtmlOptgroupTag;
648
+ option: HtmlOptionTag;
649
+ output: HtmlOutputTag;
650
+ p: HtmlTag;
651
+ param: HtmlParamTag;
652
+ path: HtmlSvgTag;
653
+ pattern: HtmlSvgTag;
654
+ picture: HtmlPictureTag;
655
+ polygon: HtmlSvgTag;
656
+ polyline: HtmlSvgTag;
657
+ pre: HtmlTag;
658
+ progress: HtmlProgressTag;
659
+ q: HtmlQuoteTag;
660
+ radialGradient: HtmlSvgTag;
661
+ rb: HtmlTag;
662
+ rect: HtmlSvgTag;
663
+ rp: HtmlTag;
664
+ rt: HtmlTag;
665
+ rtc: HtmlTag;
666
+ ruby: HtmlTag;
667
+ s: HtmlTag;
668
+ samp: HtmlTag;
669
+ slot: HtmlSlotTag;
670
+ script: HtmlScriptTag;
671
+ search: HtmlSearchTag;
672
+ section: HtmlTag;
673
+ select: HtmlSelectTag;
674
+ set: HtmlSvgTag;
675
+ small: HtmlTag;
676
+ source: HtmlSourceTag;
677
+ span: HtmlTag;
678
+ stop: HtmlSvgTag;
679
+ strong: HtmlTag;
680
+ style: HtmlStyleTag;
681
+ sub: HtmlTag;
682
+ summary: HtmlTag;
683
+ sup: HtmlTag;
684
+ svg: HtmlSvgTag;
685
+ switch: HtmlSvgTag;
686
+ symbol: HtmlSvgTag;
687
+ table: HtmlTableTag;
688
+ tag: HtmlUnspecifiedTag;
689
+ tbody: HtmlTag;
690
+ td: HtmlTableDataCellTag;
691
+ template: HtmlTag;
692
+ text: HtmlSvgTag;
693
+ textarea: HtmlTextAreaTag;
694
+ textPath: HtmlSvgTag;
695
+ tfoot: HtmlTableSectionTag;
696
+ th: HtmlTableHeaderCellTag;
697
+ thead: HtmlTableSectionTag;
698
+ time: HtmlTimeTag;
699
+ title: HtmlTag;
700
+ tr: HtmlTableRowTag;
701
+ track: HtmlTrackTag;
702
+ tspan: HtmlSvgTag;
703
+ u: HtmlTag;
704
+ ul: HtmlTag;
705
+ use: HtmlSvgTag;
706
+ var: HtmlTag;
707
+ video: HtmlVideoTag;
708
+ view: HtmlSvgTag;
709
+ wbr: HtmlTag;
710
+ }
711
+ }
712
+ type AriaRole = "alert" | "alertdialog" | "application" | "article" | "banner" | "button" | "cell" | "checkbox" | "columnheader" | "combobox" | "complementary" | "contentinfo" | "definition" | "dialog" | "directory" | "document" | "feed" | "figure" | "form" | "grid" | "gridcell" | "group" | "heading" | "img" | "link" | "list" | "listbox" | "listitem" | "log" | "main" | "marquee" | "math" | "menu" | "menubar" | "menuitem" | "menuitemcheckbox" | "menuitemradio" | "navigation" | "none" | "note" | "option" | "presentation" | "progressbar" | "radio" | "radiogroup" | "region" | "row" | "rowgroup" | "rowheader" | "scrollbar" | "search" | "searchbox" | "separator" | "slider" | "spinbutton" | "status" | "switch" | "tab" | "table" | "tablist" | "tabpanel" | "term" | "textbox" | "timer" | "toolbar" | "tooltip" | "tree" | "treegrid" | "treeitem" | (string & {});
package/dist/html.js ADDED
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ // FROM: https://github.com/kitajs/html
package/dist/index.d.ts CHANGED
@@ -1 +1,2 @@
1
+ import "./html";
1
2
  export { render } from "./render";
package/dist/index.js CHANGED
@@ -1 +1,2 @@
1
+ import "./html";
1
2
  export { render } from "./render";
package/package.json CHANGED
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "type": "module",
3
+ "version": "0.2.0",
3
4
  "name": "@vimpak/jsx",
4
5
  "collaborators": [
5
6
  "Sudesh Yadav <sudeshyadav955@gmail.com>"
@@ -8,14 +9,22 @@
8
9
  "./dist"
9
10
  ],
10
11
  "main": "./dist/index.js",
11
- "version": "0.1.0",
12
+ "exports": {
13
+ ".": {
14
+ "import": "./dist/index.js",
15
+ "types": "./dist/index.d.ts"
16
+ },
17
+ "./jsx-runtime": {
18
+ "import": "./dist/jsx-runtime.js",
19
+ "types": "./dist/jsx-runtime.d.ts"
20
+ }
21
+ },
12
22
  "scripts": {
13
23
  "prettify": "prettier --write --ignore-unknown ."
14
24
  },
15
25
  "devDependencies": {
16
26
  "prettier": "^3.2.5",
17
- "typescript": "^5.4.5",
18
- "vite": "^5.2.11"
27
+ "typescript": "^5.4.5"
19
28
  },
20
29
  "dependencies": {
21
30
  "@types/bun": "^1.3.9",
package/dist/context.d.ts DELETED
@@ -1,12 +0,0 @@
1
- export interface ContextToken<T> {
2
- key: symbol;
3
- factory: () => T;
4
- }
5
- export declare function createContextToken<T>(factory: () => T): ContextToken<T>;
6
- export declare class Context {
7
- #private;
8
- private constructor();
9
- get<T>(token: ContextToken<T>): T;
10
- set<T>(token: ContextToken<T>, value: T): Context;
11
- reset<T>(token: ContextToken<T>): Context;
12
- }
package/dist/context.js DELETED
@@ -1,37 +0,0 @@
1
- export function createContextToken(factory) {
2
- return { factory, key: Symbol() };
3
- }
4
- const contextCache = {};
5
- export class Context {
6
- #map = {};
7
- constructor(map) {
8
- this.#map = map;
9
- }
10
- get(token) {
11
- const items = this.#map[token.key];
12
- if (!Array.isArray(items) || items.length === 0) {
13
- if (!(token.key in contextCache)) {
14
- contextCache[token.key] = token.factory();
15
- }
16
- return contextCache[token.key];
17
- }
18
- return items[items.length - 1].value;
19
- }
20
- set(token, value) {
21
- const map = { ...this.#map };
22
- if (!(token.key in map)) {
23
- map[token.key] = [{ value }];
24
- }
25
- else {
26
- map[token.key].push({ value });
27
- }
28
- return new Context(map);
29
- }
30
- reset(token) {
31
- const map = { ...this.#map };
32
- if (token.key in map) {
33
- map[token.key].pop();
34
- }
35
- return new Context(map);
36
- }
37
- }