microtags 0.0.5 → 0.0.8

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/dist/meta.json CHANGED
@@ -17,7 +17,7 @@
17
17
  "format": "esm"
18
18
  },
19
19
  "src/util.ts": {
20
- "bytes": 1451,
20
+ "bytes": 2210,
21
21
  "imports": [
22
22
  {
23
23
  "path": "<runtime>",
@@ -44,7 +44,7 @@
44
44
  "format": "esm"
45
45
  },
46
46
  "src/setup-context.ts": {
47
- "bytes": 2877,
47
+ "bytes": 3331,
48
48
  "imports": [
49
49
  {
50
50
  "path": "src/reactivity.ts",
@@ -65,7 +65,7 @@
65
65
  "format": "esm"
66
66
  },
67
67
  "src/factory.ts": {
68
- "bytes": 7090,
68
+ "bytes": 7082,
69
69
  "imports": [
70
70
  {
71
71
  "path": "src/reactivity.ts",
@@ -149,7 +149,7 @@
149
149
  "imports": [],
150
150
  "exports": [],
151
151
  "inputs": {},
152
- "bytes": 25428
152
+ "bytes": 26056
153
153
  },
154
154
  "dist/index.js": {
155
155
  "imports": [
@@ -158,7 +158,7 @@
158
158
  "kind": "import-statement"
159
159
  },
160
160
  {
161
- "path": "dist/chunk-E7ZGOHL3.js",
161
+ "path": "dist/chunk-P4QHFKTJ.js",
162
162
  "kind": "import-statement"
163
163
  },
164
164
  {
@@ -177,7 +177,7 @@
177
177
  "bytesInOutput": 0
178
178
  },
179
179
  "src/setup-context.ts": {
180
- "bytesInOutput": 1747
180
+ "bytesInOutput": 1999
181
181
  },
182
182
  "src/factory.ts": {
183
183
  "bytesInOutput": 3594
@@ -186,7 +186,7 @@
186
186
  "bytesInOutput": 3646
187
187
  }
188
188
  },
189
- "bytes": 9416
189
+ "bytes": 9668
190
190
  },
191
191
  "dist/render.js.map": {
192
192
  "imports": [],
@@ -287,7 +287,7 @@
287
287
  "dist/util.js": {
288
288
  "imports": [
289
289
  {
290
- "path": "dist/chunk-E7ZGOHL3.js",
290
+ "path": "dist/chunk-P4QHFKTJ.js",
291
291
  "kind": "import-statement"
292
292
  },
293
293
  {
@@ -300,19 +300,20 @@
300
300
  "coerceJson",
301
301
  "coerceNumber",
302
302
  "coerceString",
303
- "runCleanups"
303
+ "runCleanups",
304
+ "toAttributes"
304
305
  ],
305
306
  "entryPoint": "src/util.ts",
306
307
  "inputs": {},
307
- "bytes": 268
308
+ "bytes": 300
308
309
  },
309
- "dist/chunk-E7ZGOHL3.js.map": {
310
+ "dist/chunk-P4QHFKTJ.js.map": {
310
311
  "imports": [],
311
312
  "exports": [],
312
313
  "inputs": {},
313
- "bytes": 2135
314
+ "bytes": 3311
314
315
  },
315
- "dist/chunk-E7ZGOHL3.js": {
316
+ "dist/chunk-P4QHFKTJ.js": {
316
317
  "imports": [
317
318
  {
318
319
  "path": "dist/chunk-7QVYU63E.js",
@@ -324,14 +325,15 @@
324
325
  "coerceJson",
325
326
  "coerceNumber",
326
327
  "coerceString",
327
- "runCleanups"
328
+ "runCleanups",
329
+ "toAttributes"
328
330
  ],
329
331
  "inputs": {
330
332
  "src/util.ts": {
331
- "bytesInOutput": 759
333
+ "bytesInOutput": 1188
332
334
  }
333
335
  },
334
- "bytes": 956
336
+ "bytes": 1401
335
337
  },
336
338
  "dist/chunk-7QVYU63E.js.map": {
337
339
  "imports": [],
@@ -1,8 +1,8 @@
1
- import type { SetupContext, Cleanup, PropsSignals, PropDef } from './types.js';
1
+ import type { SetupContext, PropsSignals, PropDef } from './types.js';
2
2
  /**
3
3
  * Build the ctx object passed to a component's setup() callback.
4
4
  * The cleanups array is mutated in place so factory.ts can drain it
5
5
  * on disconnect without copying.
6
6
  */
7
- export declare function makeSetupContext<Props extends Record<string, PropDef> = Record<string, PropDef>>(host: HTMLElement, props: PropsSignals<Props>, refs: Record<string, Element | Element[]>, contexts: Record<string, unknown>, cleanups: Cleanup[]): SetupContext<Props, any, any>;
7
+ export declare function makeSetupContext<Props extends Record<string, PropDef> = Record<string, PropDef>>(host: HTMLElement, props: PropsSignals<Props>, refs: Record<string, Element | Element[]>, contexts: Record<string, unknown>, cleanups: (() => void)[]): SetupContext<Props, any, any>;
8
8
  //# sourceMappingURL=setup-context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup-context.d.ts","sourceRoot":"","sources":["../src/setup-context.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACR,YAAY,EACZ,OAAO,EAEP,YAAY,EACZ,OAAO,EAEV,MAAM,YAAY,CAAA;AAEnB;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC5B,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAE/D,IAAI,EAAC,WAAW,EAChB,KAAK,EAAC,YAAY,CAAC,KAAK,CAAC,EACzB,IAAI,EAAC,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,EAAE,CAAC,EACxC,QAAQ,EAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,QAAQ,EAAC,OAAO,EAAE,GACpB,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CA2E9B"}
1
+ {"version":3,"file":"setup-context.d.ts","sourceRoot":"","sources":["../src/setup-context.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACR,YAAY,EAEZ,YAAY,EACZ,OAAO,EAEV,MAAM,YAAY,CAAA;AAEnB;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC5B,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAE/D,IAAI,EAAC,WAAW,EAChB,KAAK,EAAC,YAAY,CAAC,KAAK,CAAC,EACzB,IAAI,EAAC,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,EAAE,CAAC,EACxC,QAAQ,EAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,QAAQ,EAAC,CAAC,MAAM,IAAI,CAAC,EAAE,GACzB,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CA0F9B"}
package/dist/types.d.ts CHANGED
@@ -77,8 +77,6 @@ export interface MultipleRefDef<T extends HTMLElement = HTMLElement> extends Ref
77
77
  export type RefsMap<Defs extends Record<string, RefDef>> = {
78
78
  [K in keyof Defs]: Defs[K] extends MultipleRefDef<infer T> ? T[] : Defs[K] extends SingleRefDef<infer T> ? T : never;
79
79
  };
80
- /** A teardown function registered via ctx.onCleanup or ctx.on. */
81
- export type Cleanup = () => void;
82
80
  /** Options for ctx.bind. Omit `event` for a one-way binding. */
83
81
  export type BindOptions = {
84
82
  prop?: string;
@@ -106,11 +104,20 @@ export interface SetupContext<Props extends Record<string, PropDef> = Record<str
106
104
  /** Add a DOM event listener that is auto-removed on disconnect. */
107
105
  on<K extends keyof HTMLElementEventMap>(target: EventTarget, type: K, handler: (event: HTMLElementEventMap[K]) => void, options?: boolean | AddEventListenerOptions): void;
108
106
  on(target: EventTarget, type: string, handler: EventListener, options?: boolean | AddEventListenerOptions): void;
107
+ /**
108
+ * Dispatch an event from the host. Pass a pre-built `Event` to
109
+ * dispatch it as-is, or a name (plus optional `detail` and
110
+ * `CustomEventInit` options) to construct and dispatch a
111
+ * bubbling `CustomEvent`. Returns `dispatchEvent`'s result:
112
+ * `false` when a cancelable event had `preventDefault()` called.
113
+ */
114
+ emit(event: Event): boolean;
115
+ emit<D>(name: string, detail?: D, options?: Omit<CustomEventInit<D>, 'detail'>): boolean;
109
116
  /**
110
117
  * Run an alien-signals effect that auto-tracks the signals it reads.
111
118
  * The effect is auto-disposed on disconnect.
112
119
  */
113
- effect(fn: () => void | Cleanup): void;
120
+ effect(fn: () => void | (() => void)): void;
114
121
  /**
115
122
  * Bind a signal to a DOM element. The signal is the source of
116
123
  * truth: the element property is set from the signal on bind and
@@ -126,7 +133,7 @@ export interface SetupContext<Props extends Record<string, PropDef> = Record<str
126
133
  */
127
134
  bind<T>(signal: Signal<T>, element: Element, options?: BindOptions): void;
128
135
  /** Register custom teardown to run on disconnect. */
129
- onCleanup(fn: Cleanup): void;
136
+ onCleanup(fn: () => void): void;
130
137
  /** Read an optional context value. */
131
138
  consume<T>(token: ContextToken<T>): T | undefined;
132
139
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/util.cjs CHANGED
@@ -25,7 +25,8 @@ __export(util_exports, {
25
25
  coerceJson: () => coerceJson,
26
26
  coerceNumber: () => coerceNumber,
27
27
  coerceString: () => coerceString,
28
- runCleanups: () => runCleanups
28
+ runCleanups: () => runCleanups,
29
+ toAttributes: () => toAttributes
29
30
  });
30
31
  module.exports = __toCommonJS(util_exports);
31
32
  function coerceNumber(raw) {
@@ -65,4 +66,19 @@ function runCleanups(fns) {
65
66
  if (caught) throw firstError;
66
67
  }
67
68
  __name(runCleanups, "runCleanups");
69
+ function toAttributes(attrs) {
70
+ return Object.keys(attrs).reduce((acc, k) => {
71
+ const value = attrs[k];
72
+ if (!value) return acc;
73
+ if (typeof value === "boolean") {
74
+ if (value) return (acc + ` ${k}`).trim();
75
+ return acc;
76
+ }
77
+ if (Array.isArray(value)) {
78
+ return acc + ` ${k}="${value.join(" ")}"`;
79
+ }
80
+ return (acc + ` ${k}="${value}"`).trim();
81
+ }, "");
82
+ }
83
+ __name(toAttributes, "toAttributes");
68
84
  //# sourceMappingURL=util.cjs.map
package/dist/util.cjs.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/util.ts"],
4
- "sourcesContent": ["import type { Cleanup } from './types.js'\n\n/**\n * Coerce a raw attribute string to a number.\n * Returns NaN if the value cannot be parsed.\n */\nexport function coerceNumber (raw:string | null):number {\n return raw === null ? NaN : Number(raw)\n}\n\n/**\n * Coerce a raw attribute string to a string.\n * Converts null to empty string.\n */\nexport function coerceString (raw:string | null):string {\n return raw ?? ''\n}\n\n/**\n * Coerce a raw attribute string to a boolean.\n * Absence (null) is false; presence of any value (including '') is true.\n */\nexport function coerceBoolean (raw:string | null):boolean {\n return raw !== null\n}\n\n/**\n * Coerce a raw attribute string to a parsed JSON value.\n * Returns undefined if the value is null or cannot be parsed.\n */\nexport function coerceJson<T = unknown> (raw:string | null):T | undefined {\n if (raw === null) return undefined\n try {\n return JSON.parse(raw) as T\n } catch {\n return undefined\n }\n}\n\n/**\n * Run every cleanup in the list, ensuring all run even if some throw.\n * After all have run, re-throws the first error encountered.\n */\nexport function runCleanups (fns:Cleanup[]):void {\n let firstError:unknown\n let caught = false\n for (const fn of fns) {\n try {\n fn()\n } catch (err) {\n if (!caught) {\n firstError = err\n caught = true\n }\n }\n }\n if (caught) throw firstError\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMO,SAAS,aAAc,KAA0B;AACpD,SAAO,QAAQ,OAAO,MAAM,OAAO,GAAG;AAC1C;AAFgB;AAQT,SAAS,aAAc,KAA0B;AACpD,SAAO,OAAO;AAClB;AAFgB;AAQT,SAAS,cAAe,KAA2B;AACtD,SAAO,QAAQ;AACnB;AAFgB;AAQT,SAAS,WAAyB,KAAiC;AACtE,MAAI,QAAQ,KAAM,QAAO;AACzB,MAAI;AACA,WAAO,KAAK,MAAM,GAAG;AAAA,EACzB,QAAQ;AACJ,WAAO;AAAA,EACX;AACJ;AAPgB;AAaT,SAAS,YAAa,KAAoB;AAC7C,MAAI;AACJ,MAAI,SAAS;AACb,aAAW,MAAM,KAAK;AAClB,QAAI;AACA,SAAG;AAAA,IACP,SAAS,KAAK;AACV,UAAI,CAAC,QAAQ;AACT,qBAAa;AACb,iBAAS;AAAA,MACb;AAAA,IACJ;AAAA,EACJ;AACA,MAAI,OAAQ,OAAM;AACtB;AAdgB;",
4
+ "sourcesContent": ["/**\n * Coerce a raw attribute string to a number.\n * Returns NaN if the value cannot be parsed.\n */\nexport function coerceNumber (raw:string | null):number {\n return raw === null ? NaN : Number(raw)\n}\n\n/**\n * Coerce a raw attribute string to a string.\n * Converts null to empty string.\n */\nexport function coerceString (raw:string | null):string {\n return raw ?? ''\n}\n\n/**\n * Coerce a raw attribute string to a boolean.\n * Absence (null) is false; presence of any value (including '') is true.\n */\nexport function coerceBoolean (raw:string | null):boolean {\n return raw !== null\n}\n\n/**\n * Coerce a raw attribute string to a parsed JSON value.\n * Returns undefined if the value is null or cannot be parsed.\n */\nexport function coerceJson<T = unknown> (raw:string | null):T | undefined {\n if (raw === null) return undefined\n try {\n return JSON.parse(raw) as T\n } catch {\n return undefined\n }\n}\n\n/**\n * Run every cleanup in the list, ensuring all run even if some throw.\n * After all have run, re-throws the first error encountered.\n */\nexport function runCleanups (fns:(() => void)[]):void {\n let firstError:unknown\n let caught = false\n for (const fn of fns) {\n try {\n fn()\n } catch (err) {\n if (!caught) {\n firstError = err\n caught = true\n }\n }\n }\n if (caught) throw firstError\n}\n\nexport type Attrs = Record<string, undefined|null|string|number|boolean|(string|number)[]>\n\n/**\n * Transform an object into an HTML attributes string. The object should be\n * like `{ attributeName: value }`.\n *\n * @param {Attrs} attrs An object for the attributes.\n * @returns {string} A string suitable for use as HTML attributes.\n */\nexport function toAttributes (attrs:Attrs):string {\n return Object.keys(attrs).reduce((acc, k) => {\n const value = attrs[k]\n if (!value) return acc\n\n if (typeof value === 'boolean') {\n if (value) return (acc + ` ${k}`).trim()\n return acc\n }\n\n if (Array.isArray(value)) {\n return (acc + ` ${k}=\"${value.join(' ')}\"`)\n }\n\n return (acc + ` ${k}=\"${value}\"`).trim()\n }, '')\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIO,SAAS,aAAc,KAA0B;AACpD,SAAO,QAAQ,OAAO,MAAM,OAAO,GAAG;AAC1C;AAFgB;AAQT,SAAS,aAAc,KAA0B;AACpD,SAAO,OAAO;AAClB;AAFgB;AAQT,SAAS,cAAe,KAA2B;AACtD,SAAO,QAAQ;AACnB;AAFgB;AAQT,SAAS,WAAyB,KAAiC;AACtE,MAAI,QAAQ,KAAM,QAAO;AACzB,MAAI;AACA,WAAO,KAAK,MAAM,GAAG;AAAA,EACzB,QAAQ;AACJ,WAAO;AAAA,EACX;AACJ;AAPgB;AAaT,SAAS,YAAa,KAAyB;AAClD,MAAI;AACJ,MAAI,SAAS;AACb,aAAW,MAAM,KAAK;AAClB,QAAI;AACA,SAAG;AAAA,IACP,SAAS,KAAK;AACV,UAAI,CAAC,QAAQ;AACT,qBAAa;AACb,iBAAS;AAAA,MACb;AAAA,IACJ;AAAA,EACJ;AACA,MAAI,OAAQ,OAAM;AACtB;AAdgB;AAyBT,SAAS,aAAc,OAAoB;AAC9C,SAAO,OAAO,KAAK,KAAK,EAAE,OAAO,CAAC,KAAK,MAAM;AACzC,UAAM,QAAQ,MAAM,CAAC;AACrB,QAAI,CAAC,MAAO,QAAO;AAEnB,QAAI,OAAO,UAAU,WAAW;AAC5B,UAAI,MAAO,SAAQ,MAAM,IAAI,CAAC,IAAI,KAAK;AACvC,aAAO;AAAA,IACX;AAEA,QAAI,MAAM,QAAQ,KAAK,GAAG;AACtB,aAAQ,MAAM,IAAI,CAAC,KAAK,MAAM,KAAK,GAAG,CAAC;AAAA,IAC3C;AAEA,YAAQ,MAAM,IAAI,CAAC,KAAK,KAAK,KAAK,KAAK;AAAA,EAC3C,GAAG,EAAE;AACT;AAhBgB;",
6
6
  "names": []
7
7
  }
package/dist/util.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- import type { Cleanup } from './types.js';
2
1
  /**
3
2
  * Coerce a raw attribute string to a number.
4
3
  * Returns NaN if the value cannot be parsed.
@@ -23,5 +22,14 @@ export declare function coerceJson<T = unknown>(raw: string | null): T | undefin
23
22
  * Run every cleanup in the list, ensuring all run even if some throw.
24
23
  * After all have run, re-throws the first error encountered.
25
24
  */
26
- export declare function runCleanups(fns: Cleanup[]): void;
25
+ export declare function runCleanups(fns: (() => void)[]): void;
26
+ export type Attrs = Record<string, undefined | null | string | number | boolean | (string | number)[]>;
27
+ /**
28
+ * Transform an object into an HTML attributes string. The object should be
29
+ * like `{ attributeName: value }`.
30
+ *
31
+ * @param {Attrs} attrs An object for the attributes.
32
+ * @returns {string} A string suitable for use as HTML attributes.
33
+ */
34
+ export declare function toAttributes(attrs: Attrs): string;
27
35
  //# sourceMappingURL=util.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEzC;;;GAGG;AACH,wBAAgB,YAAY,CAAE,GAAG,EAAC,MAAM,GAAG,IAAI,GAAE,MAAM,CAEtD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAE,GAAG,EAAC,MAAM,GAAG,IAAI,GAAE,MAAM,CAEtD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAE,GAAG,EAAC,MAAM,GAAG,IAAI,GAAE,OAAO,CAExD;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,CAAC,GAAG,OAAO,EAAG,GAAG,EAAC,MAAM,GAAG,IAAI,GAAE,CAAC,GAAG,SAAS,CAOxE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAE,GAAG,EAAC,OAAO,EAAE,GAAE,IAAI,CAc/C"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,YAAY,CAAE,GAAG,EAAC,MAAM,GAAG,IAAI,GAAE,MAAM,CAEtD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAE,GAAG,EAAC,MAAM,GAAG,IAAI,GAAE,MAAM,CAEtD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAE,GAAG,EAAC,MAAM,GAAG,IAAI,GAAE,OAAO,CAExD;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,CAAC,GAAG,OAAO,EAAG,GAAG,EAAC,MAAM,GAAG,IAAI,GAAE,CAAC,GAAG,SAAS,CAOxE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAE,GAAG,EAAC,CAAC,MAAM,IAAI,CAAC,EAAE,GAAE,IAAI,CAcpD;AAED,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,GAAC,IAAI,GAAC,MAAM,GAAC,MAAM,GAAC,OAAO,GAAC,CAAC,MAAM,GAAC,MAAM,CAAC,EAAE,CAAC,CAAA;AAE1F;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAE,KAAK,EAAC,KAAK,GAAE,MAAM,CAgBhD"}
package/dist/util.js CHANGED
@@ -3,14 +3,16 @@ import {
3
3
  coerceJson,
4
4
  coerceNumber,
5
5
  coerceString,
6
- runCleanups
7
- } from "./chunk-E7ZGOHL3.js";
6
+ runCleanups,
7
+ toAttributes
8
+ } from "./chunk-P4QHFKTJ.js";
8
9
  import "./chunk-7QVYU63E.js";
9
10
  export {
10
11
  coerceBoolean,
11
12
  coerceJson,
12
13
  coerceNumber,
13
14
  coerceString,
14
- runCleanups
15
+ runCleanups,
16
+ toAttributes
15
17
  };
16
18
  //# sourceMappingURL=util.js.map
package/dist/util.min.js CHANGED
@@ -1,2 +1,2 @@
1
- var l=Object.defineProperty;var r=(n,e)=>l(n,"name",{value:e,configurable:!0});function c(n){return n===null?NaN:Number(n)}r(c,"coerceNumber");function f(n){return n??""}r(f,"coerceString");function s(n){return n!==null}r(s,"coerceBoolean");function p(n){if(n!==null)try{return JSON.parse(n)}catch{return}}r(p,"coerceJson");function a(n){let e,t=!1;for(let u of n)try{u()}catch(o){t||(e=o,t=!0)}if(t)throw e}r(a,"runCleanups");export{s as coerceBoolean,p as coerceJson,c as coerceNumber,f as coerceString,a as runCleanups};
1
+ var i=Object.defineProperty;var u=(r,n)=>i(r,"name",{value:n,configurable:!0});function f(r){return r===null?NaN:Number(r)}u(f,"coerceNumber");function s(r){return r??""}u(s,"coerceString");function c(r){return r!==null}u(c,"coerceBoolean");function d(r){if(r!==null)try{return JSON.parse(r)}catch{return}}u(d,"coerceJson");function g(r){let n,e=!1;for(let t of r)try{t()}catch(o){e||(n=o,e=!0)}if(e)throw n}u(g,"runCleanups");function p(r){return Object.keys(r).reduce((n,e)=>{let t=r[e];return t?typeof t=="boolean"?t?(n+` ${e}`).trim():n:Array.isArray(t)?n+` ${e}="${t.join(" ")}"`:(n+` ${e}="${t}"`).trim():n},"")}u(p,"toAttributes");export{c as coerceBoolean,d as coerceJson,f as coerceNumber,s as coerceString,g as runCleanups,p as toAttributes};
2
2
  //# sourceMappingURL=util.min.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/util.ts"],
4
- "sourcesContent": ["import type { Cleanup } from './types.js'\n\n/**\n * Coerce a raw attribute string to a number.\n * Returns NaN if the value cannot be parsed.\n */\nexport function coerceNumber (raw:string | null):number {\n return raw === null ? NaN : Number(raw)\n}\n\n/**\n * Coerce a raw attribute string to a string.\n * Converts null to empty string.\n */\nexport function coerceString (raw:string | null):string {\n return raw ?? ''\n}\n\n/**\n * Coerce a raw attribute string to a boolean.\n * Absence (null) is false; presence of any value (including '') is true.\n */\nexport function coerceBoolean (raw:string | null):boolean {\n return raw !== null\n}\n\n/**\n * Coerce a raw attribute string to a parsed JSON value.\n * Returns undefined if the value is null or cannot be parsed.\n */\nexport function coerceJson<T = unknown> (raw:string | null):T | undefined {\n if (raw === null) return undefined\n try {\n return JSON.parse(raw) as T\n } catch {\n return undefined\n }\n}\n\n/**\n * Run every cleanup in the list, ensuring all run even if some throw.\n * After all have run, re-throws the first error encountered.\n */\nexport function runCleanups (fns:Cleanup[]):void {\n let firstError:unknown\n let caught = false\n for (const fn of fns) {\n try {\n fn()\n } catch (err) {\n if (!caught) {\n firstError = err\n caught = true\n }\n }\n }\n if (caught) throw firstError\n}\n"],
5
- "mappings": "+EAMO,SAASA,EAAcC,EAA0B,CACpD,OAAOA,IAAQ,KAAO,IAAM,OAAOA,CAAG,CAC1C,CAFgBC,EAAAF,EAAA,gBAQT,SAASG,EAAcF,EAA0B,CACpD,OAAOA,GAAO,EAClB,CAFgBC,EAAAC,EAAA,gBAQT,SAASC,EAAeH,EAA2B,CACtD,OAAOA,IAAQ,IACnB,CAFgBC,EAAAE,EAAA,iBAQT,SAASC,EAAyBJ,EAAiC,CACtE,GAAIA,IAAQ,KACZ,GAAI,CACA,OAAO,KAAK,MAAMA,CAAG,CACzB,MAAQ,CACJ,MACJ,CACJ,CAPgBC,EAAAG,EAAA,cAaT,SAASC,EAAaC,EAAoB,CAC7C,IAAIC,EACAC,EAAS,GACb,QAAWC,KAAMH,EACb,GAAI,CACAG,EAAG,CACP,OAASC,EAAK,CACLF,IACDD,EAAaG,EACbF,EAAS,GAEjB,CAEJ,GAAIA,EAAQ,MAAMD,CACtB,CAdgBN,EAAAI,EAAA",
6
- "names": ["coerceNumber", "raw", "__name", "coerceString", "coerceBoolean", "coerceJson", "runCleanups", "fns", "firstError", "caught", "fn", "err"]
4
+ "sourcesContent": ["/**\n * Coerce a raw attribute string to a number.\n * Returns NaN if the value cannot be parsed.\n */\nexport function coerceNumber (raw:string | null):number {\n return raw === null ? NaN : Number(raw)\n}\n\n/**\n * Coerce a raw attribute string to a string.\n * Converts null to empty string.\n */\nexport function coerceString (raw:string | null):string {\n return raw ?? ''\n}\n\n/**\n * Coerce a raw attribute string to a boolean.\n * Absence (null) is false; presence of any value (including '') is true.\n */\nexport function coerceBoolean (raw:string | null):boolean {\n return raw !== null\n}\n\n/**\n * Coerce a raw attribute string to a parsed JSON value.\n * Returns undefined if the value is null or cannot be parsed.\n */\nexport function coerceJson<T = unknown> (raw:string | null):T | undefined {\n if (raw === null) return undefined\n try {\n return JSON.parse(raw) as T\n } catch {\n return undefined\n }\n}\n\n/**\n * Run every cleanup in the list, ensuring all run even if some throw.\n * After all have run, re-throws the first error encountered.\n */\nexport function runCleanups (fns:(() => void)[]):void {\n let firstError:unknown\n let caught = false\n for (const fn of fns) {\n try {\n fn()\n } catch (err) {\n if (!caught) {\n firstError = err\n caught = true\n }\n }\n }\n if (caught) throw firstError\n}\n\nexport type Attrs = Record<string, undefined|null|string|number|boolean|(string|number)[]>\n\n/**\n * Transform an object into an HTML attributes string. The object should be\n * like `{ attributeName: value }`.\n *\n * @param {Attrs} attrs An object for the attributes.\n * @returns {string} A string suitable for use as HTML attributes.\n */\nexport function toAttributes (attrs:Attrs):string {\n return Object.keys(attrs).reduce((acc, k) => {\n const value = attrs[k]\n if (!value) return acc\n\n if (typeof value === 'boolean') {\n if (value) return (acc + ` ${k}`).trim()\n return acc\n }\n\n if (Array.isArray(value)) {\n return (acc + ` ${k}=\"${value.join(' ')}\"`)\n }\n\n return (acc + ` ${k}=\"${value}\"`).trim()\n }, '')\n}\n"],
5
+ "mappings": "+EAIO,SAASA,EAAcC,EAA0B,CACpD,OAAOA,IAAQ,KAAO,IAAM,OAAOA,CAAG,CAC1C,CAFgBC,EAAAF,EAAA,gBAQT,SAASG,EAAcF,EAA0B,CACpD,OAAOA,GAAO,EAClB,CAFgBC,EAAAC,EAAA,gBAQT,SAASC,EAAeH,EAA2B,CACtD,OAAOA,IAAQ,IACnB,CAFgBC,EAAAE,EAAA,iBAQT,SAASC,EAAyBJ,EAAiC,CACtE,GAAIA,IAAQ,KACZ,GAAI,CACA,OAAO,KAAK,MAAMA,CAAG,CACzB,MAAQ,CACJ,MACJ,CACJ,CAPgBC,EAAAG,EAAA,cAaT,SAASC,EAAaC,EAAyB,CAClD,IAAIC,EACAC,EAAS,GACb,QAAWC,KAAMH,EACb,GAAI,CACAG,EAAG,CACP,OAASC,EAAK,CACLF,IACDD,EAAaG,EACbF,EAAS,GAEjB,CAEJ,GAAIA,EAAQ,MAAMD,CACtB,CAdgBN,EAAAI,EAAA,eAyBT,SAASM,EAAcC,EAAoB,CAC9C,OAAO,OAAO,KAAKA,CAAK,EAAE,OAAO,CAACC,EAAKC,IAAM,CACzC,IAAMC,EAAQH,EAAME,CAAC,EACrB,OAAKC,EAED,OAAOA,GAAU,UACbA,GAAeF,EAAM,IAAIC,CAAC,IAAI,KAAK,EAChCD,EAGP,MAAM,QAAQE,CAAK,EACXF,EAAM,IAAIC,CAAC,KAAKC,EAAM,KAAK,GAAG,CAAC,KAGnCF,EAAM,IAAIC,CAAC,KAAKC,CAAK,KAAK,KAAK,EAXpBF,CAYvB,EAAG,EAAE,CACT,CAhBgBZ,EAAAU,EAAA",
6
+ "names": ["coerceNumber", "raw", "__name", "coerceString", "coerceBoolean", "coerceJson", "runCleanups", "fns", "firstError", "caught", "fn", "err", "toAttributes", "attrs", "acc", "k", "value"]
7
7
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "microtags",
3
3
  "type": "module",
4
- "version": "0.0.5",
4
+ "version": "0.0.8",
5
5
  "sideEffects": [
6
6
  "./example/**"
7
7
  ],
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/util.ts"],
4
- "sourcesContent": ["import type { Cleanup } from './types.js'\n\n/**\n * Coerce a raw attribute string to a number.\n * Returns NaN if the value cannot be parsed.\n */\nexport function coerceNumber (raw:string | null):number {\n return raw === null ? NaN : Number(raw)\n}\n\n/**\n * Coerce a raw attribute string to a string.\n * Converts null to empty string.\n */\nexport function coerceString (raw:string | null):string {\n return raw ?? ''\n}\n\n/**\n * Coerce a raw attribute string to a boolean.\n * Absence (null) is false; presence of any value (including '') is true.\n */\nexport function coerceBoolean (raw:string | null):boolean {\n return raw !== null\n}\n\n/**\n * Coerce a raw attribute string to a parsed JSON value.\n * Returns undefined if the value is null or cannot be parsed.\n */\nexport function coerceJson<T = unknown> (raw:string | null):T | undefined {\n if (raw === null) return undefined\n try {\n return JSON.parse(raw) as T\n } catch {\n return undefined\n }\n}\n\n/**\n * Run every cleanup in the list, ensuring all run even if some throw.\n * After all have run, re-throws the first error encountered.\n */\nexport function runCleanups (fns:Cleanup[]):void {\n let firstError:unknown\n let caught = false\n for (const fn of fns) {\n try {\n fn()\n } catch (err) {\n if (!caught) {\n firstError = err\n caught = true\n }\n }\n }\n if (caught) throw firstError\n}\n"],
5
- "mappings": ";;;;;AAMO,SAAS,aAAc,KAA0B;AACpD,SAAO,QAAQ,OAAO,MAAM,OAAO,GAAG;AAC1C;AAFgB;AAQT,SAAS,aAAc,KAA0B;AACpD,SAAO,OAAO;AAClB;AAFgB;AAQT,SAAS,cAAe,KAA2B;AACtD,SAAO,QAAQ;AACnB;AAFgB;AAQT,SAAS,WAAyB,KAAiC;AACtE,MAAI,QAAQ,KAAM,QAAO;AACzB,MAAI;AACA,WAAO,KAAK,MAAM,GAAG;AAAA,EACzB,QAAQ;AACJ,WAAO;AAAA,EACX;AACJ;AAPgB;AAaT,SAAS,YAAa,KAAoB;AAC7C,MAAI;AACJ,MAAI,SAAS;AACb,aAAW,MAAM,KAAK;AAClB,QAAI;AACA,SAAG;AAAA,IACP,SAAS,KAAK;AACV,UAAI,CAAC,QAAQ;AACT,qBAAa;AACb,iBAAS;AAAA,MACb;AAAA,IACJ;AAAA,EACJ;AACA,MAAI,OAAQ,OAAM;AACtB;AAdgB;",
6
- "names": []
7
- }