@fun-land/fun-web 0.5.0 → 0.6.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 CHANGED
@@ -31,12 +31,9 @@ pnpm add @fun-land/fun-web @fun-land/accessor
31
31
 
32
32
  ```typescript
33
33
  import {
34
- h,
34
+ hx,
35
35
  funState,
36
36
  mount,
37
- bindProperty,
38
- on,
39
- enhance,
40
37
  type Component,
41
38
  type FunState,
42
39
  } from "@fun-land/fun-web";
@@ -44,15 +41,13 @@ import {
44
41
 
45
42
  const Counter: Component<{state: FunState<number>}> = (signal, {state}) => {
46
43
  // Component runs once - no re-rendering on state changes
47
- const button = h("button", {}, `Count: ${state.get()}`);
48
-
49
- // bindProperty subscribes to the state and updates named property
50
- enhance(button, bindProperty("textContent", state, signal));
51
-
52
- // Event handlers never go stale (component doesn't re-run)
53
- enhance(button, on("click", () => state.mod((n) => n + 1), signal));
54
-
55
- return button;
44
+ return hx("button", {
45
+ signal,
46
+ // bind syncs the button text with state
47
+ bind: { textContent: state },
48
+ // Event handlers never go stale (component doesn't re-run)
49
+ on: { click: () => state.mod((n) => n + 1) },
50
+ });
56
51
  };
57
52
 
58
53
  // Create reactive state and mount
@@ -69,12 +64,16 @@ const mounted = mount(Counter, { state: funState(0) }, document.body);
69
64
  const Counter: Component<{ count: FunState<number> }> = (signal, props) => {
70
65
  console.log("Component runs once");
71
66
 
72
- const display = h("div");
73
- const button = h("button", {}, "Increment");
67
+ const display = hx("div", {
68
+ signal,
69
+ bind: { textContent: props.count },
70
+ });
74
71
 
75
- // This subscription handles updates, not re-rendering
76
- enhance(display, bindProperty("textContent", props.count, signal));
77
- enhance(button, on("click", () => props.count.mod(n => n + 1), signal));
72
+ const button = hx("button", {
73
+ signal,
74
+ props: { textContent: "Increment" },
75
+ on: { click: () => props.count.mod(n => n + 1) },
76
+ });
78
77
 
79
78
  return h("div", {}, [display, button]);
80
79
  // Component function exits, but subscriptions keep working
@@ -117,12 +116,17 @@ function ReactCounter() {
117
116
  const FunWebCounter: Component<{ count: FunState<number> }> = (signal, props) => {
118
117
  console.log("Mounting!"); // Logs once, never again
119
118
 
120
- const display = h("div");
121
- const button = h("button", {}, "+");
119
+ const display = hx("div", {
120
+ signal,
121
+ bind: { textContent: props.count },
122
+ });
122
123
 
123
- // No useCallback needed - this closure never goes stale
124
- enhance(button, on("click", () => props.count.mod(n => n + 1), signal));
125
- enhance(display, bindProperty("textContent", props.count, signal));
124
+ const button = hx("button", {
125
+ signal,
126
+ props: { textContent: "+" },
127
+ // No useCallback needed - this closure never goes stale
128
+ on: { click: () => props.count.mod(n => n + 1) },
129
+ });
126
130
 
127
131
  return h("div", {}, [display, button]);
128
132
  };
@@ -186,33 +190,42 @@ const Dashboard: Component<{
186
190
 
187
191
  ### Reactivity Patterns
188
192
 
189
- **Use `bindProperty` for simple one-way bindings:**
193
+ **One-way binding with `hx`:**
190
194
 
191
195
  ```typescript
192
- const nameEl = h("div");
193
196
  const nameState: FunState<string> = state.prop("user").prop("name");
194
197
 
195
- enhance(nameEl, bindProperty("textContent", nameState, signal));
198
+ const nameEl = hx("div", {
199
+ signal,
200
+ bind: { textContent: nameState },
201
+ });
196
202
  // nameEl.textContent stays in sync with nameState
197
203
  ```
198
204
 
199
- **Use `on` for events:**
205
+ **Two-way binding with `hx`:**
200
206
 
201
207
  ```typescript
202
- const button = h("button", {}, "Click me");
203
- enhance(button, on("click", (e: MouseEvent & { currentTarget: HTMLButtonElement }) => {
204
- console.log(e.currentTarget.textContent);
205
- }, signal));
208
+ const input = hx("input", {
209
+ signal,
210
+ props: { type: "text" },
211
+ bind: { value: state.prop("name") },
212
+ on: { input: (e) => state.prop("name").set(e.currentTarget.value) },
213
+ });
206
214
  ```
207
215
 
208
- **Chain for two-way bindings:**
216
+ **Event handlers with `hx`:**
209
217
 
210
218
  ```typescript
211
- const input = enhance(
212
- h("input", { type: "text" }),
213
- bindProperty("value", state.prop("name"), signal),
214
- on("input", (e) => state.prop("name").set(e.currentTarget.value), signal)
215
- );
219
+ const button = hx("button", {
220
+ signal,
221
+ props: { textContent: "Click me" },
222
+ on: {
223
+ click: (e) => {
224
+ console.log(e.currentTarget.textContent);
225
+ e.currentTarget.disabled = true; // type-safe!
226
+ }
227
+ },
228
+ });
216
229
  ```
217
230
 
218
231
  **Use `.watch()` for complex logic:**
@@ -225,6 +238,17 @@ state.watch(signal, (s) => {
225
238
  });
226
239
  ```
227
240
 
241
+ **Using enhancers (alternative to `hx`):**
242
+
243
+ ```typescript
244
+ // If you prefer functional composition
245
+ const input = enhance(
246
+ h("input", { type: "text" }),
247
+ bindProperty("value", state.prop("name"), signal),
248
+ on("input", (e) => state.prop("name").set(e.currentTarget.value), signal)
249
+ );
250
+ ```
251
+
228
252
  ### Cleanup with AbortSignal
229
253
 
230
254
  All subscriptions and event listeners require an AbortSignal. When the signal aborts, everything cleans up automatically:
@@ -253,7 +277,7 @@ For the most part you won't have to worry about the abort signal if you use the
253
277
  **Don't have one big app state**
254
278
  This isn't redux. There's little reason to create giant state objects. Create state near the leaves and hoist it when you need to. That said
255
279
 
256
- **You can have more that one state**
280
+ **You can have more than one state**
257
281
  It's just a value. If having one state manage multiple properties works then great but if you want to have several that's fine too.
258
282
 
259
283
  **Deep chains of .prop() are a smell**
@@ -266,37 +290,49 @@ const bazFromState = Acc<MyState>().prop('foo').prop('bar').prop('baz')
266
290
  const baz = state.focus(bazFromState).get()
267
291
  ```
268
292
 
269
- **Prefer helpers over manual subscriptions:**
293
+ **Using .get() in component scope is a smell**
294
+ State is for when you want components to respond to state changes as such you should be using it with bindProperty or state.watch or inside event handlers. There are many cases for .get() but if it's the first thing you reach for you're probably gonna be confused that the UI isn't updating.
295
+
296
+ **Prefer `hx` for reactive elements:**
270
297
 
271
298
  ```typescript
272
- // ✅ Good
273
- enhance(element, bindProperty("textContent", state.prop("count"), signal));
299
+ // ✅ Good - declarative and type-safe
300
+ const input = hx("input", {
301
+ signal,
302
+ props: { type: "text" },
303
+ bind: { value: state.prop("name") },
304
+ on: { input: (e) => state.prop("name").set(e.currentTarget.value) },
305
+ });
274
306
 
275
- // Avoid (when bindProperty works)
276
- state.prop("count").watch(signal, (count) => {
277
- element.textContent = String(count);
307
+ // Also good - functional composition with enhancers
308
+ const input = enhance(
309
+ h("input", { type: "text" }),
310
+ bindProperty("value", state.prop("name"), signal),
311
+ on("input", (e) => state.prop("name").set(e.currentTarget.value), signal)
312
+ );
313
+
314
+ // ❌ Avoid manual subscriptions when `bind` works
315
+ const input = h("input", { type: "text" });
316
+ state.prop("name").watch(signal, (name) => {
317
+ input.value = name; // Just use bind!
278
318
  });
279
319
  ```
280
320
 
281
- **Use `on()` for type safety:**
321
+ **Don't bind events in `h()` props:**
282
322
 
283
323
  ```typescript
284
- // ✅ Good - types inferred
285
- enhance(button, on("click", (e) => {
286
- e.currentTarget.disabled = true; // TypeScript knows it's HTMLButtonElement
287
- }, signal));
288
-
289
- // ❌ Avoid - loses type information
290
- button.addEventListener("click", (e) => {
291
- (e.currentTarget as HTMLButtonElement).disabled = true;
292
- }); // ❌ Forgot {signal} !
324
+ // ✅ Good - uses hx with type-safe events
325
+ const button = hx("button", {
326
+ signal,
327
+ on: { click: (e) => e.currentTarget.disabled = true },
328
+ });
293
329
 
294
- // ❌ Avoid binding events in props
295
- h('button', {onclick: (e) => {
296
- // type info lost!
297
- (e.currentTarget as HTMLButtonElement).disabled = true;
298
- // ❌ event handler not cleaned up!
299
- }})
330
+ // ❌ Avoid - h() event props aren't cleaned up and lose types
331
+ const button = h("button", {
332
+ onclick: (e) => {
333
+ (e.currentTarget as HTMLButtonElement).disabled = true; // needs cast
334
+ }, // ❌ event handler not cleaned up!
335
+ });
300
336
  ```
301
337
 
302
338
  **Manual subscriptions for complex updates:**
@@ -319,9 +355,30 @@ state.watch(signal, (s) => {
319
355
 
320
356
  ### DOM Utilities
321
357
 
358
+ #### `hx` (recommended)
359
+
360
+ Create elements with structured props, attrs, event handlers, and reactive bindings. More complex but provides better type safety and ergonomics than `h` + enhancers.
361
+
362
+ ```typescript
363
+ const input = hx("input", {
364
+ signal,
365
+ props: { type: "text", placeholder: "Enter name" },
366
+ attrs: { "data-test": "name-input" },
367
+ bind: { value: nameState },
368
+ on: { input: (e) => nameState.set(e.currentTarget.value) },
369
+ });
370
+ ```
371
+
372
+ **Parameters:**
373
+ - `props` - Element properties (typed per element, writable properties only)
374
+ - `attrs` - HTML attributes (data-*, aria-*, etc.)
375
+ - `on` - Event handlers (type-safe, with inferred `currentTarget`)
376
+ - `bind` - Reactive bindings (properties sync with FunState)
377
+ - `signal` - **Required** AbortSignal for cleanup
378
+
322
379
  #### `h`
323
380
 
324
- Declaratively create an HTML Element with properties and children.
381
+ Create HTML elements declaratively. Consider using `hx` if you want to add event handlers or respond to state changes.
325
382
 
326
383
  ```typescript
327
384
  const div = h("div", { id: "app" }, [
@@ -332,12 +389,12 @@ const div = h("div", { id: "app" }, [
332
389
 
333
390
  **Attribute conventions:**
334
391
  - Dashed properties (`data-*`, `aria-*`) → `setAttribute()`
335
- - Don't event bind with properties, use `on()`
392
+ - Properties starting with `on` → event listeners (⚠️ not cleaned up, use `hx` or `on()` enhancer)
336
393
  - Everything else → property assignment
337
394
 
338
395
  #### bindProperty
339
396
 
340
- Bind element property to state. Returns `Enhancer`.
397
+ Bind element property to state. Returns `Enhancer`. Consider using `hx` with `bind` for better ergonomics.
341
398
 
342
399
  ```typescript
343
400
  const input = enhance(
@@ -345,11 +402,17 @@ const input = enhance(
345
402
  bindProperty("value", state.prop("name"), signal)
346
403
  );
347
404
  // input.value syncs with state.name
405
+
406
+ // Equivalent with hx:
407
+ const input = hx("input", {
408
+ signal,
409
+ bind: { value: state.prop("name") },
410
+ });
348
411
  ```
349
412
 
350
413
  #### on
351
414
 
352
- Add type-safe event listener. Returns `Enhancer`.
415
+ Add type-safe event listener. Returns `Enhancer`. Consider using `hx` with `on` for better ergonomics.
353
416
 
354
417
  ```typescript
355
418
  const button = enhance(
@@ -358,11 +421,21 @@ const button = enhance(
358
421
  e.currentTarget.disabled = true;
359
422
  }, signal)
360
423
  );
424
+
425
+ // Equivalent with hx:
426
+ const button = hx("button", {
427
+ signal,
428
+ on: {
429
+ click: (e) => {
430
+ e.currentTarget.disabled = true;
431
+ }
432
+ },
433
+ });
361
434
  ```
362
435
 
363
436
  #### bindListChildren
364
437
 
365
- Render and reconcile keyed lists efficiently. Each row gets its own AbortSignal for cleanup and a focused state. Returns `Enhancer`.
438
+ Render a list of items from a state array. Each row gets its own AbortSignal for cleanup and a focused state. Returns `Enhancer`.
366
439
 
367
440
  ```typescript
368
441
  import { Acc } from "@fun-land/accessor";
@@ -382,7 +455,7 @@ const list = enhance(
382
455
  bindListChildren({
383
456
  signal,
384
457
  state: todos,
385
- key: Acc<Todo>().prop("id"),
458
+ key: prop<Todo>()("id"), // key is an accessor that targets the unique string value in your array items
386
459
  row: ({ signal, state, remove }) => {
387
460
  const li = h("li");
388
461
 
@@ -435,10 +508,11 @@ const App: Component = (signal) => {
435
508
  const showDetailsState = funState(false);
436
509
  const userState = funState({ email: "alice@example.com", joinDate: "2024" });
437
510
 
438
- const toggleBtn = h("button", { textContent: "Toggle Details" });
439
- enhance(toggleBtn, on("click", () => {
440
- showDetailsState.mod(show => !show);
441
- }, signal));
511
+ const toggleBtn = hx("button", {
512
+ signal,
513
+ props: { textContent: "Toggle Details" },
514
+ on: { click: () => showDetailsState.mod(show => !show) },
515
+ });
442
516
 
443
517
  // Details component mounts/unmounts based on showDetailsState
444
518
  const detailsEl = renderWhen({
@@ -495,38 +569,30 @@ showState.watch(signal, (show) => {
495
569
  });
496
570
  ```
497
571
 
498
- #### $ and $$ - DOM Query Utilities
499
-
500
- Convenient shortcuts for `querySelector` and `querySelectorAll` with better TypeScript support.
501
-
502
- **`$<T extends Element>(selector: string): T | undefined`**
572
+ #### querySelectorAll
503
573
 
504
- Query a single element. Returns `undefined` instead of `null` if not found.
574
+ Query multiple elements. Returns a real Array (not NodeList) for better ergonomics.
505
575
 
506
576
  ```typescript
507
- const button = $<HTMLButtonElement>("#submit-btn");
508
- if (button) {
509
- button.disabled = true;
510
- }
511
-
512
- const input = $<HTMLInputElement>(".name-input");
577
+ const items = querySelectorAll<HTMLDivElement>(".item").map(addClass("active"));
513
578
  ```
514
579
 
515
- **`$$<T extends Element>(selector: string): T[]`**
580
+ #### enhance
516
581
 
517
- Query multiple elements. Returns a real Array (not NodeList) for better ergonomics.
582
+ Apply multiple enhancers to an element. Useful with `h()` and the enhancer utilities below.
518
583
 
519
584
  ```typescript
520
- const items = $$<HTMLDivElement>(".item");
521
- items.forEach(item => item.classList.add("active"));
522
-
523
- // Array methods work directly
524
- const texts = $$(".label").map(el => el.textContent);
585
+ const input = enhance(
586
+ h("input", { type: "text" }),
587
+ addClass("form-control"),
588
+ bindProperty("value", nameState, signal),
589
+ on("input", (e) => nameState.set(e.currentTarget.value), signal)
590
+ );
525
591
  ```
526
592
 
527
593
  #### Other utilities
528
594
 
529
- All return the element for chaining:
595
+ All return the element for chaining (used with `enhance`):
530
596
 
531
597
  ```typescript
532
598
  text: (content: string | number) => (el: Element) => Element
@@ -536,8 +602,6 @@ addClass: (...classes: string[]) => (el: Element) => Element
536
602
  removeClass: (...classes: string[]) => (el: Element) => Element
537
603
  toggleClass: (className: string, force?: boolean) => (el: Element) => Element
538
604
  append: (...children: Element[]) => (el: Element) => Element
539
- // pipe a value through a series of endomorphisms
540
- pipeAll: <T>(x: T, ...fns: Array<(x: T) => T>) => T
541
605
  ```
542
606
 
543
607
  ### Mounting
@@ -573,6 +637,7 @@ interface MountedComponent {
573
637
  Components compose by calling other components and passing focused state via props:
574
638
 
575
639
  ```typescript
640
+ import { h } from "@fun-land/fun-web";
576
641
  import { prop } from "@fun-land/accessor";
577
642
  import { UserProfile, UserData } from "./UserProfile";
578
643
  import { SettingsPanel, Settings } from "./Settings";
@@ -16,6 +16,46 @@ export type Enhancer<El extends Element> = (element: El) => El;
16
16
  * h('div', {id: 'app', 'data-test': 'foo'}, [child1, child2])
17
17
  */
18
18
  export declare const h: <Tag extends keyof HTMLElementTagNameMap>(tag: Tag, attrs?: Record<string, any> | null, children?: ElementChild | ElementChild[]) => HTMLElementTagNameMap[Tag];
19
+ type WritableKeys<T> = {
20
+ [K in keyof T]-?: (<F>() => F extends {
21
+ [Q in K]: T[K];
22
+ } ? 1 : 2) extends <F>() => F extends {
23
+ -readonly [Q in K]: T[K];
24
+ } ? 1 : 2 ? K : never;
25
+ }[keyof T];
26
+ type HxProps<El extends Element> = Partial<{
27
+ [K in WritableKeys<El> & string]: El[K] | null | undefined;
28
+ }>;
29
+ type HxHandlers<El extends Element> = Partial<{
30
+ [K in keyof GlobalEventHandlersEventMap]: (ev: GlobalEventHandlersEventMap[K] & {
31
+ currentTarget: El;
32
+ }) => void;
33
+ }>;
34
+ type HxBindings<El extends Element> = Partial<{
35
+ [K in WritableKeys<El> & string]: FunState<El[K]>;
36
+ }>;
37
+ type HxOptionsBase<El extends Element> = {
38
+ props?: HxProps<El>;
39
+ attrs?: Record<string, string | number | boolean | null | undefined>;
40
+ };
41
+ type HxOptions<El extends Element> = HxOptionsBase<El> & {
42
+ signal: AbortSignal;
43
+ on?: HxHandlers<El>;
44
+ bind?: HxBindings<El>;
45
+ };
46
+ /**
47
+ * Create an element with structured props, attrs, event handlers, and bindings.
48
+ *
49
+ * @example
50
+ * hx("input", {
51
+ * signal,
52
+ * props: { type: "text" },
53
+ * attrs: { "data-test": "name" },
54
+ * bind: { value: nameState },
55
+ * on: { input: (e) => nameState.set(e.currentTarget.value) },
56
+ * });
57
+ */
58
+ export declare function hx<Tag extends keyof HTMLElementTagNameMap>(tag: Tag, options: HxOptions<HTMLElementTagNameMap[Tag]>, children?: ElementChild | ElementChild[]): HTMLElementTagNameMap[Tag];
19
59
  /**
20
60
  * Set text content of an element (returns element for chaining)
21
61
  * @returns {Enhancer}
@@ -120,5 +160,7 @@ export declare function renderWhen<State, Props>(options: {
120
160
  props: Props;
121
161
  signal: AbortSignal;
122
162
  }): Element;
123
- export declare const $: <T extends Element>(selector: string) => T | undefined;
124
- export declare const $$: <T extends Element>(selector: string) => T[];
163
+ /** add passed class (idempotent) to element when state returns true */
164
+ export declare const bindClass: (className: string, state: FunState<boolean>, signal: AbortSignal) => <E extends Element>(el: E) => E;
165
+ export declare const querySelectorAll: <T extends Element>(selector: string) => T[];
166
+ export {};
@@ -1,3 +1,8 @@
1
+ /**
2
+ * Type-preserving Object.entries helper for objects with known keys
3
+ * @internal
4
+ */
5
+ const entries = (obj) => Object.entries(obj);
1
6
  /**
2
7
  * Create an HTML element with attributes and children
3
8
  *
@@ -42,6 +47,52 @@ attrs, children) => {
42
47
  }
43
48
  return element;
44
49
  };
50
+ // eslint-disable-next-line complexity
51
+ export function hx(tag, options, children) {
52
+ if (!(options === null || options === void 0 ? void 0 : options.signal)) {
53
+ throw new Error("hx: signal is required");
54
+ }
55
+ const { signal, props, attrs: attrMap, on: onMap, bind } = options;
56
+ const element = document.createElement(tag);
57
+ if (props) {
58
+ for (const [key, value] of entries(props)) {
59
+ if (value == null)
60
+ continue;
61
+ element[key] = value;
62
+ }
63
+ }
64
+ if (attrMap) {
65
+ for (const [key, value] of Object.entries(attrMap)) {
66
+ if (value == null)
67
+ continue;
68
+ element.setAttribute(key, String(value));
69
+ }
70
+ }
71
+ if (children != null) {
72
+ appendChildren(children)(element);
73
+ }
74
+ if (bind) {
75
+ const bindElementProperty = (key, state) => {
76
+ bindProperty(key, state, signal)(element);
77
+ };
78
+ for (const key of Object.keys(bind)) {
79
+ const state = bind[key];
80
+ if (!state)
81
+ continue;
82
+ bindElementProperty(key, state);
83
+ }
84
+ }
85
+ if (onMap) {
86
+ for (const [event, handler] of Object.entries(onMap)) {
87
+ if (!handler)
88
+ continue;
89
+ element.addEventListener(event, handler, {
90
+ signal,
91
+ });
92
+ }
93
+ }
94
+ return element;
95
+ }
45
96
  /**
46
97
  * Append children to an element, flattening arrays and converting primitives to text nodes
47
98
  * @returns {Enhancer}
@@ -285,6 +336,10 @@ export function renderWhen(options) {
285
336
  reconcile();
286
337
  return container;
287
338
  }
288
- export const $ = (selector) => { var _a; return (_a = document.querySelector(selector)) !== null && _a !== void 0 ? _a : undefined; };
289
- export const $$ = (selector) => Array.from(document.querySelectorAll(selector));
339
+ /** add passed class (idempotent) to element when state returns true */
340
+ export const bindClass = (className, state, signal) => (el) => {
341
+ state.watch(signal, (active) => el.classList.toggle(className, active));
342
+ return el;
343
+ };
344
+ export const querySelectorAll = (selector) => Array.from(document.querySelectorAll(selector));
290
345
  //# sourceMappingURL=dom.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dom.js","sourceRoot":"","sources":["../../../src/dom.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dom.js","sourceRoot":"","sources":["../../../src/dom.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,5 @@
1
1
  export type { Component, ElementChild } from "./types";
2
- export type { FunState } from "./state";
3
2
  export type { MountedComponent } from "./mount";
4
3
  export type { KeyedChildren } from "./dom";
5
- export { funState } from "./state";
6
- export { h, text, attr, attrs, addClass, removeClass, toggleClass, append, on, bindProperty, bindListChildren, renderWhen, enhance, $, $$, } from "./dom";
4
+ export * from "./dom";
7
5
  export { mount } from "./mount";
@@ -1,5 +1,4 @@
1
1
  // @fun-land/fun-web - Web component library for fun-land
2
- export { funState } from "./state";
3
- export { h, text, attr, attrs, addClass, removeClass, toggleClass, append, on, bindProperty, bindListChildren, renderWhen, enhance, $, $$, } from "./dom";
2
+ export * from "./dom";
4
3
  export { mount } from "./mount";
5
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,yDAAyD;AAOzD,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EACL,CAAC,EACD,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,WAAW,EACX,WAAW,EACX,MAAM,EACN,EAAE,EACF,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACV,OAAO,EACP,CAAC,EACD,EAAE,GACH,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,yDAAyD;AAKzD,cAAc,OAAO,CAAC;AACtB,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC"}