unhead 3.0.0 → 3.0.2

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.
Files changed (45) hide show
  1. package/dist/client.d.mts +5 -5
  2. package/dist/client.d.ts +5 -5
  3. package/dist/client.mjs +2 -2
  4. package/dist/index.d.mts +54 -5
  5. package/dist/index.d.ts +54 -5
  6. package/dist/index.mjs +8 -1
  7. package/dist/parser.d.mts +1 -1
  8. package/dist/parser.d.ts +1 -1
  9. package/dist/plugins.d.mts +2 -2
  10. package/dist/plugins.d.ts +2 -2
  11. package/dist/scripts.d.mts +4 -4
  12. package/dist/scripts.d.ts +4 -4
  13. package/dist/server.d.mts +4 -4
  14. package/dist/server.d.ts +4 -4
  15. package/dist/server.mjs +3 -3
  16. package/dist/shared/{unhead.Dyr7L2Ht.d.mts → unhead.BJTN1X0i.d.mts} +171 -35
  17. package/dist/shared/{unhead.Dyr7L2Ht.d.ts → unhead.BJTN1X0i.d.ts} +171 -35
  18. package/dist/shared/{unhead.DmIUoNyg.d.ts → unhead.BRWMyYIW.d.ts} +1 -1
  19. package/dist/shared/{unhead.DbDvRsnF.d.mts → unhead.BXRLaj2l.d.mts} +1 -1
  20. package/dist/shared/{unhead.DKz0V2If.d.ts → unhead.BhElfVXO.d.ts} +1 -1
  21. package/dist/shared/{unhead.Sr8_Iw6G.mjs → unhead.C5ypJnIO.mjs} +8 -4
  22. package/dist/shared/{unhead.B825tVHL.d.mts → unhead.C6alnWbQ.d.mts} +2 -2
  23. package/dist/shared/{unhead.BiaRAmcT.d.mts → unhead.CZPkBynw.d.mts} +1 -1
  24. package/dist/shared/{unhead.DFKqTFly.d.ts → unhead.CpT6Kxc0.d.ts} +2 -2
  25. package/dist/shared/{unhead.cnX_MFeG.d.ts → unhead.D4KaR-FM.d.ts} +2 -2
  26. package/dist/shared/{unhead.Cp3HtzBy.d.ts → unhead.DH3TZMHc.d.ts} +1 -1
  27. package/dist/shared/{unhead.Db0zAB-x.d.mts → unhead.DJ6joC2O.d.mts} +2 -2
  28. package/dist/shared/{unhead.DQiBmCqH.mjs → unhead.DiRbsb3I.mjs} +9 -3
  29. package/dist/shared/{unhead.DyN7hSCT.d.mts → unhead.Dp1MlAYz.d.mts} +1 -1
  30. package/dist/shared/{unhead.D6A03PN3.d.mts → unhead.DsHmk_XC.d.mts} +1 -1
  31. package/dist/shared/{unhead.DvZZ4Zb_.d.ts → unhead.YGcEMcjf.d.ts} +1 -1
  32. package/dist/shared/{unhead.D4TxP3zZ.mjs → unhead.pv34ME7O.mjs} +1 -1
  33. package/dist/stream/client.d.mts +3 -3
  34. package/dist/stream/client.d.ts +3 -3
  35. package/dist/stream/iife.global.js +1 -1
  36. package/dist/stream/iife.mjs +2 -2
  37. package/dist/stream/server.d.mts +3 -3
  38. package/dist/stream/server.d.ts +3 -3
  39. package/dist/stream/server.mjs +16 -3
  40. package/dist/types.d.mts +6 -6
  41. package/dist/types.d.ts +6 -6
  42. package/dist/utils.d.mts +2 -2
  43. package/dist/utils.d.ts +2 -2
  44. package/dist/utils.mjs +1 -1
  45. package/package.json +1 -1
package/dist/client.d.mts CHANGED
@@ -1,9 +1,9 @@
1
- export { C as ClientUnhead, c as createHead } from './shared/unhead.Db0zAB-x.mjs';
2
- import { R as RenderDomHeadOptions } from './shared/unhead.DbDvRsnF.mjs';
3
- import { p as HeadRenderer, U as Unhead } from './shared/unhead.D6A03PN3.mjs';
4
- export { c as CreateClientHeadOptions } from './shared/unhead.D6A03PN3.mjs';
1
+ export { C as ClientUnhead, c as createHead } from './shared/unhead.DJ6joC2O.mjs';
2
+ import { R as RenderDomHeadOptions } from './shared/unhead.BXRLaj2l.mjs';
3
+ import { p as HeadRenderer, U as Unhead } from './shared/unhead.DsHmk_XC.mjs';
4
+ export { c as CreateClientHeadOptions } from './shared/unhead.DsHmk_XC.mjs';
5
5
  import 'hookable';
6
- import './shared/unhead.Dyr7L2Ht.mjs';
6
+ import './shared/unhead.BJTN1X0i.mjs';
7
7
 
8
8
  declare function createDomRenderer(options?: RenderDomHeadOptions): HeadRenderer<boolean>;
9
9
 
package/dist/client.d.ts CHANGED
@@ -1,9 +1,9 @@
1
- export { C as ClientUnhead, c as createHead } from './shared/unhead.DFKqTFly.js';
2
- import { R as RenderDomHeadOptions } from './shared/unhead.DvZZ4Zb_.js';
3
- import { p as HeadRenderer, U as Unhead } from './shared/unhead.DmIUoNyg.js';
4
- export { c as CreateClientHeadOptions } from './shared/unhead.DmIUoNyg.js';
1
+ export { C as ClientUnhead, c as createHead } from './shared/unhead.CpT6Kxc0.js';
2
+ import { R as RenderDomHeadOptions } from './shared/unhead.YGcEMcjf.js';
3
+ import { p as HeadRenderer, U as Unhead } from './shared/unhead.BRWMyYIW.js';
4
+ export { c as CreateClientHeadOptions } from './shared/unhead.BRWMyYIW.js';
5
5
  import 'hookable';
6
- import './shared/unhead.Dyr7L2Ht.js';
6
+ import './shared/unhead.BJTN1X0i.js';
7
7
 
8
8
  declare function createDomRenderer(options?: RenderDomHeadOptions): HeadRenderer<boolean>;
9
9
 
package/dist/client.mjs CHANGED
@@ -1,8 +1,8 @@
1
- import { c as createDomRenderer, r as renderDOMHead$1 } from './shared/unhead.D4TxP3zZ.mjs';
1
+ import { c as createDomRenderer, r as renderDOMHead$1 } from './shared/unhead.pv34ME7O.mjs';
2
2
  import { c as createUnhead, r as registerPlugin } from './shared/unhead.CfgPMHXt.mjs';
3
3
  import { c as createHooks } from './shared/unhead.DvIxXxuO.mjs';
4
4
  import './shared/unhead.fg-0ge_u.mjs';
5
- import './shared/unhead.DQiBmCqH.mjs';
5
+ import './shared/unhead.DiRbsb3I.mjs';
6
6
  import 'hookable';
7
7
 
8
8
  const P = { critical: -8, high: -1, low: 2 };
package/dist/index.d.mts CHANGED
@@ -1,13 +1,62 @@
1
- import { U as Unhead, k as HeadEntryOptions, A as ActiveHeadEntry, p as HeadRenderer, d as CreateHeadOptions } from './shared/unhead.D6A03PN3.mjs';
2
- import { ak as ResolvableHead, aT as UseSeoMetaInput } from './shared/unhead.Dyr7L2Ht.mjs';
3
- import { H as HeadSafe } from './shared/unhead.BiaRAmcT.mjs';
4
- export { u as useScript } from './shared/unhead.DyN7hSCT.mjs';
1
+ import { U as Unhead, k as HeadEntryOptions, A as ActiveHeadEntry, p as HeadRenderer, d as CreateHeadOptions } from './shared/unhead.DsHmk_XC.mjs';
2
+ import { at as ResolvableHead, b1 as UseSeoMetaInput, J as InferLink, U as Link, K as InferScript, aI as Script } from './shared/unhead.BJTN1X0i.mjs';
3
+ import { H as HeadSafe } from './shared/unhead.CZPkBynw.mjs';
4
+ export { u as useScript } from './shared/unhead.Dp1MlAYz.mjs';
5
5
  import 'hookable';
6
6
 
7
7
  declare function useHead<T extends Unhead<any>, I = ResolvableHead>(unhead: T, input?: ResolvableHead, options?: HeadEntryOptions): ActiveHeadEntry<I>;
8
8
  declare function useHeadSafe<T extends Unhead<any>>(unhead: T, input?: HeadSafe, options?: HeadEntryOptions): ActiveHeadEntry<HeadSafe>;
9
9
  declare function useSeoMeta<T extends Unhead<any>>(unhead: T, input?: UseSeoMetaInput, options?: HeadEntryOptions): ActiveHeadEntry<UseSeoMetaInput>;
10
10
 
11
+ /**
12
+ * Typed helper for declaring a `<link>` element inside {@link useHead}.
13
+ *
14
+ * Known `rel` values stay strict: `rel: 'preload'` still requires `as`,
15
+ * preload fonts still require `crossorigin`, `rel: 'mask-icon'` still requires
16
+ * `color`, etc. Non-standard `rel` values not covered by `KnownLinkRel` (e.g.
17
+ * OpenID endpoints, custom protocol discovery links) are accepted via
18
+ * `GenericLink` without losing strictness on the rest of the union.
19
+ *
20
+ * Standard rels like `'me'`, `'webmention'`, `'privacy-policy'`, and
21
+ * `'terms-of-service'` are already in the `Link` union, so they work with
22
+ * `useHead` directly without this helper.
23
+ *
24
+ * @example
25
+ * ```ts
26
+ * import { defineLink, useHead } from 'unhead'
27
+ *
28
+ * useHead({
29
+ * link: [
30
+ * defineLink({ rel: 'openid2.provider', href: 'https://example.com/openid' }),
31
+ * defineLink({ rel: 'EditURI', href: '/rsd.xml', type: 'application/rsd+xml' }),
32
+ * ],
33
+ * })
34
+ * ```
35
+ */
36
+ declare function defineLink<const T extends {
37
+ rel: string;
38
+ }>(link: T & InferLink<T>): Link;
39
+ /**
40
+ * Typed helper for declaring a `<script>` element inside {@link useHead}.
41
+ *
42
+ * Known `type` values stay strict: `type: 'module'` still requires `src` or inline
43
+ * content, `type: 'application/ld+json'` still requires `textContent`, etc. Custom
44
+ * or non-standard `type` values (e.g. `'text/plain'`, `'text/html'`) are accepted
45
+ * via {@link GenericScript} without losing strictness on the rest of the union.
46
+ *
47
+ * @example
48
+ * ```ts
49
+ * import { defineScript, useHead } from 'unhead'
50
+ *
51
+ * useHead({
52
+ * script: [
53
+ * defineScript({ type: 'text/plain', textContent: 'debug-token' }),
54
+ * ],
55
+ * })
56
+ * ```
57
+ */
58
+ declare function defineScript<const T extends object>(script: T & InferScript<T>): Script;
59
+
11
60
  declare function createUnhead<T = ResolvableHead, R = unknown>(renderer: HeadRenderer<R>, resolvedOptions?: CreateHeadOptions): Unhead<T, R>;
12
61
 
13
- export { createUnhead, useHead, useHeadSafe, useSeoMeta };
62
+ export { createUnhead, defineLink, defineScript, useHead, useHeadSafe, useSeoMeta };
package/dist/index.d.ts CHANGED
@@ -1,13 +1,62 @@
1
- import { U as Unhead, k as HeadEntryOptions, A as ActiveHeadEntry, p as HeadRenderer, d as CreateHeadOptions } from './shared/unhead.DmIUoNyg.js';
2
- import { ak as ResolvableHead, aT as UseSeoMetaInput } from './shared/unhead.Dyr7L2Ht.js';
3
- import { H as HeadSafe } from './shared/unhead.DKz0V2If.js';
4
- export { u as useScript } from './shared/unhead.Cp3HtzBy.js';
1
+ import { U as Unhead, k as HeadEntryOptions, A as ActiveHeadEntry, p as HeadRenderer, d as CreateHeadOptions } from './shared/unhead.BRWMyYIW.js';
2
+ import { at as ResolvableHead, b1 as UseSeoMetaInput, J as InferLink, U as Link, K as InferScript, aI as Script } from './shared/unhead.BJTN1X0i.js';
3
+ import { H as HeadSafe } from './shared/unhead.BhElfVXO.js';
4
+ export { u as useScript } from './shared/unhead.DH3TZMHc.js';
5
5
  import 'hookable';
6
6
 
7
7
  declare function useHead<T extends Unhead<any>, I = ResolvableHead>(unhead: T, input?: ResolvableHead, options?: HeadEntryOptions): ActiveHeadEntry<I>;
8
8
  declare function useHeadSafe<T extends Unhead<any>>(unhead: T, input?: HeadSafe, options?: HeadEntryOptions): ActiveHeadEntry<HeadSafe>;
9
9
  declare function useSeoMeta<T extends Unhead<any>>(unhead: T, input?: UseSeoMetaInput, options?: HeadEntryOptions): ActiveHeadEntry<UseSeoMetaInput>;
10
10
 
11
+ /**
12
+ * Typed helper for declaring a `<link>` element inside {@link useHead}.
13
+ *
14
+ * Known `rel` values stay strict: `rel: 'preload'` still requires `as`,
15
+ * preload fonts still require `crossorigin`, `rel: 'mask-icon'` still requires
16
+ * `color`, etc. Non-standard `rel` values not covered by `KnownLinkRel` (e.g.
17
+ * OpenID endpoints, custom protocol discovery links) are accepted via
18
+ * `GenericLink` without losing strictness on the rest of the union.
19
+ *
20
+ * Standard rels like `'me'`, `'webmention'`, `'privacy-policy'`, and
21
+ * `'terms-of-service'` are already in the `Link` union, so they work with
22
+ * `useHead` directly without this helper.
23
+ *
24
+ * @example
25
+ * ```ts
26
+ * import { defineLink, useHead } from 'unhead'
27
+ *
28
+ * useHead({
29
+ * link: [
30
+ * defineLink({ rel: 'openid2.provider', href: 'https://example.com/openid' }),
31
+ * defineLink({ rel: 'EditURI', href: '/rsd.xml', type: 'application/rsd+xml' }),
32
+ * ],
33
+ * })
34
+ * ```
35
+ */
36
+ declare function defineLink<const T extends {
37
+ rel: string;
38
+ }>(link: T & InferLink<T>): Link;
39
+ /**
40
+ * Typed helper for declaring a `<script>` element inside {@link useHead}.
41
+ *
42
+ * Known `type` values stay strict: `type: 'module'` still requires `src` or inline
43
+ * content, `type: 'application/ld+json'` still requires `textContent`, etc. Custom
44
+ * or non-standard `type` values (e.g. `'text/plain'`, `'text/html'`) are accepted
45
+ * via {@link GenericScript} without losing strictness on the rest of the union.
46
+ *
47
+ * @example
48
+ * ```ts
49
+ * import { defineScript, useHead } from 'unhead'
50
+ *
51
+ * useHead({
52
+ * script: [
53
+ * defineScript({ type: 'text/plain', textContent: 'debug-token' }),
54
+ * ],
55
+ * })
56
+ * ```
57
+ */
58
+ declare function defineScript<const T extends object>(script: T & InferScript<T>): Script;
59
+
11
60
  declare function createUnhead<T = ResolvableHead, R = unknown>(renderer: HeadRenderer<R>, resolvedOptions?: CreateHeadOptions): Unhead<T, R>;
12
61
 
13
- export { createUnhead, useHead, useHeadSafe, useSeoMeta };
62
+ export { createUnhead, defineLink, defineScript, useHead, useHeadSafe, useSeoMeta };
package/dist/index.mjs CHANGED
@@ -35,4 +35,11 @@ function useSeoMeta(unhead, input = {}, options) {
35
35
  return entry;
36
36
  }
37
37
 
38
- export { useHead, useHeadSafe, useSeoMeta };
38
+ function defineLink(link) {
39
+ return link;
40
+ }
41
+ function defineScript(script) {
42
+ return script;
43
+ }
44
+
45
+ export { defineLink, defineScript, useHead, useHeadSafe, useSeoMeta };
package/dist/parser.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { aD as SerializableHead } from './shared/unhead.Dyr7L2Ht.mjs';
1
+ import { aM as SerializableHead } from './shared/unhead.BJTN1X0i.mjs';
2
2
 
3
3
  declare const TagIdMap: {
4
4
  readonly html: 0;
package/dist/parser.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { aD as SerializableHead } from './shared/unhead.Dyr7L2Ht.js';
1
+ import { aM as SerializableHead } from './shared/unhead.BJTN1X0i.js';
2
2
 
3
3
  declare const TagIdMap: {
4
4
  readonly html: 0;
@@ -1,5 +1,5 @@
1
- import { n as HeadPluginInput, U as Unhead, o as HeadPluginOptions } from './shared/unhead.D6A03PN3.mjs';
2
- import { p as HeadTag } from './shared/unhead.Dyr7L2Ht.mjs';
1
+ import { n as HeadPluginInput, U as Unhead, o as HeadPluginOptions } from './shared/unhead.DsHmk_XC.mjs';
2
+ import { t as HeadTag } from './shared/unhead.BJTN1X0i.mjs';
3
3
  import 'hookable';
4
4
 
5
5
  declare const AliasSortingPlugin: HeadPluginInput;
package/dist/plugins.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { n as HeadPluginInput, U as Unhead, o as HeadPluginOptions } from './shared/unhead.DmIUoNyg.js';
2
- import { p as HeadTag } from './shared/unhead.Dyr7L2Ht.js';
1
+ import { n as HeadPluginInput, U as Unhead, o as HeadPluginOptions } from './shared/unhead.BRWMyYIW.js';
2
+ import { t as HeadTag } from './shared/unhead.BJTN1X0i.js';
3
3
  import 'hookable';
4
4
 
5
5
  declare const AliasSortingPlugin: HeadPluginInput;
@@ -1,8 +1,8 @@
1
- import { R as RecordingEntry } from './shared/unhead.D6A03PN3.mjs';
2
- export { a as AsVoidFunctions, j as EventHandlerOptions, u as ScriptInstance, z as UseFunctionType, B as UseScriptContext, F as UseScriptInput, G as UseScriptOptions, I as UseScriptResolvedInput, J as UseScriptReturn, K as UseScriptStatus, W as WarmupStrategy } from './shared/unhead.D6A03PN3.mjs';
3
- export { u as useScript } from './shared/unhead.DyN7hSCT.mjs';
1
+ import { R as RecordingEntry } from './shared/unhead.DsHmk_XC.mjs';
2
+ export { a as AsVoidFunctions, j as EventHandlerOptions, u as ScriptInstance, z as UseFunctionType, B as UseScriptContext, F as UseScriptInput, G as UseScriptOptions, I as UseScriptResolvedInput, J as UseScriptReturn, K as UseScriptStatus, W as WarmupStrategy } from './shared/unhead.DsHmk_XC.mjs';
3
+ export { u as useScript } from './shared/unhead.Dp1MlAYz.mjs';
4
4
  import 'hookable';
5
- import './shared/unhead.Dyr7L2Ht.mjs';
5
+ import './shared/unhead.BJTN1X0i.mjs';
6
6
 
7
7
  declare function createSpyProxy<T extends Record<string, any> | any[]>(target: T, onApply: (stack: RecordingEntry[][]) => void): T;
8
8
 
package/dist/scripts.d.ts CHANGED
@@ -1,8 +1,8 @@
1
- import { R as RecordingEntry } from './shared/unhead.DmIUoNyg.js';
2
- export { a as AsVoidFunctions, j as EventHandlerOptions, u as ScriptInstance, z as UseFunctionType, B as UseScriptContext, F as UseScriptInput, G as UseScriptOptions, I as UseScriptResolvedInput, J as UseScriptReturn, K as UseScriptStatus, W as WarmupStrategy } from './shared/unhead.DmIUoNyg.js';
3
- export { u as useScript } from './shared/unhead.Cp3HtzBy.js';
1
+ import { R as RecordingEntry } from './shared/unhead.BRWMyYIW.js';
2
+ export { a as AsVoidFunctions, j as EventHandlerOptions, u as ScriptInstance, z as UseFunctionType, B as UseScriptContext, F as UseScriptInput, G as UseScriptOptions, I as UseScriptResolvedInput, J as UseScriptReturn, K as UseScriptStatus, W as WarmupStrategy } from './shared/unhead.BRWMyYIW.js';
3
+ export { u as useScript } from './shared/unhead.DH3TZMHc.js';
4
4
  import 'hookable';
5
- import './shared/unhead.Dyr7L2Ht.js';
5
+ import './shared/unhead.BJTN1X0i.js';
6
6
 
7
7
  declare function createSpyProxy<T extends Record<string, any> | any[]>(target: T, onApply: (stack: RecordingEntry[][]) => void): T;
8
8
 
package/dist/server.d.mts CHANGED
@@ -1,7 +1,7 @@
1
- export { S as ServerUnhead, c as createHead } from './shared/unhead.B825tVHL.mjs';
2
- import { r as RenderSSRHeadOptions, p as HeadRenderer, s as SSRHeadPayload, U as Unhead } from './shared/unhead.D6A03PN3.mjs';
3
- export { e as CreateServerHeadOptions } from './shared/unhead.D6A03PN3.mjs';
4
- import { p as HeadTag } from './shared/unhead.Dyr7L2Ht.mjs';
1
+ export { S as ServerUnhead, c as createHead } from './shared/unhead.C6alnWbQ.mjs';
2
+ import { r as RenderSSRHeadOptions, p as HeadRenderer, s as SSRHeadPayload, U as Unhead } from './shared/unhead.DsHmk_XC.mjs';
3
+ export { e as CreateServerHeadOptions } from './shared/unhead.DsHmk_XC.mjs';
4
+ import { t as HeadTag } from './shared/unhead.BJTN1X0i.mjs';
5
5
  import 'hookable';
6
6
 
7
7
  declare function createServerRenderer(options?: RenderSSRHeadOptions): HeadRenderer<SSRHeadPayload>;
package/dist/server.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- export { S as ServerUnhead, c as createHead } from './shared/unhead.cnX_MFeG.js';
2
- import { r as RenderSSRHeadOptions, p as HeadRenderer, s as SSRHeadPayload, U as Unhead } from './shared/unhead.DmIUoNyg.js';
3
- export { e as CreateServerHeadOptions } from './shared/unhead.DmIUoNyg.js';
4
- import { p as HeadTag } from './shared/unhead.Dyr7L2Ht.js';
1
+ export { S as ServerUnhead, c as createHead } from './shared/unhead.D4KaR-FM.js';
2
+ import { r as RenderSSRHeadOptions, p as HeadRenderer, s as SSRHeadPayload, U as Unhead } from './shared/unhead.BRWMyYIW.js';
3
+ export { e as CreateServerHeadOptions } from './shared/unhead.BRWMyYIW.js';
4
+ import { t as HeadTag } from './shared/unhead.BJTN1X0i.js';
5
5
  import 'hookable';
6
6
 
7
7
  declare function createServerRenderer(options?: RenderSSRHeadOptions): HeadRenderer<SSRHeadPayload>;
package/dist/server.mjs CHANGED
@@ -1,10 +1,10 @@
1
- import { r as renderSSRHead$1 } from './shared/unhead.Sr8_Iw6G.mjs';
2
- export { a as capoTagWeight, c as createHead, b as createServerRenderer, e as escapeHtml, p as propsToString, s as ssrRenderTags, t as tagToString } from './shared/unhead.Sr8_Iw6G.mjs';
1
+ import { r as renderSSRHead$1 } from './shared/unhead.C5ypJnIO.mjs';
2
+ export { a as capoTagWeight, c as createHead, b as createServerRenderer, e as escapeHtml, p as propsToString, s as ssrRenderTags, t as tagToString } from './shared/unhead.C5ypJnIO.mjs';
3
3
  import { parseHtmlForUnheadExtraction, applyHeadToHtml, parseHtmlForIndexes } from './parser.mjs';
4
4
  import './shared/unhead.CfgPMHXt.mjs';
5
5
  import './shared/unhead.DvIxXxuO.mjs';
6
6
  import 'hookable';
7
- import './shared/unhead.DQiBmCqH.mjs';
7
+ import './shared/unhead.DiRbsb3I.mjs';
8
8
  import './shared/unhead.fg-0ge_u.mjs';
9
9
 
10
10
  // @__NO_SIDE_EFFECTS__