@bartificer/linkify 2.4.0 → 2.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/README.md +135 -35
  2. package/dist/index.js +1 -1
  3. package/docs/LinkData.class.mjs.html +28 -53
  4. package/docs/LinkTemplate.class.mjs.html +29 -33
  5. package/docs/Linkifier.class.mjs.html +46 -59
  6. package/docs/PageData.class.mjs.html +54 -69
  7. package/docs/defaults.mjs.html +22 -2
  8. package/docs/docdash-overrides.css +9 -3
  9. package/docs/externals.jsdoc.html +6 -2
  10. package/docs/global.html +1276 -0
  11. package/docs/index.html +114 -45
  12. package/docs/index.js.html +7 -3
  13. package/docs/mermaid-init.js +21 -0
  14. package/docs/module-cheerio.html +6 -2
  15. package/docs/module-defaults.html +100 -5
  16. package/docs/module-link-data.LinkData.html +81 -212
  17. package/docs/module-link-data.html +8 -4
  18. package/docs/module-link-template.LinkTemplate.html +71 -96
  19. package/docs/module-link-template.html +8 -4
  20. package/docs/module-linkifier.Linkifier.html +103 -376
  21. package/docs/module-linkifier.html +6 -2
  22. package/docs/module-linkify.html +7 -3
  23. package/docs/module-mustache.html +6 -2
  24. package/docs/module-node-fetch.html +6 -2
  25. package/docs/module-page-data.PageData.html +224 -202
  26. package/docs/module-page-data.html +8 -4
  27. package/docs/module-title-case.html +6 -2
  28. package/docs/module-urijs.html +6 -2
  29. package/docs/module-url-slug.html +6 -2
  30. package/docs/module-utilities.html +74 -24
  31. package/docs/typedefs.jsdoc.html +145 -0
  32. package/docs/utilities.mjs.html +36 -23
  33. package/package.json +3 -2
  34. package/src/LinkData.class.mjs +22 -51
  35. package/src/LinkTemplate.class.mjs +23 -31
  36. package/src/Linkifier.class.mjs +40 -57
  37. package/src/PageData.class.mjs +48 -67
  38. package/src/defaults.mjs +16 -0
  39. package/src/index.js +1 -1
  40. package/src/typedefs.jsdoc +52 -0
  41. package/src/utilities.mjs +30 -21
package/docs/index.html CHANGED
@@ -43,7 +43,7 @@
43
43
  <input type="text" id="nav-search" placeholder="Search" />
44
44
 
45
45
 
46
- <h2><a href="index.html">Home</a></h2><h2><a href="https://github.com/bartificer/linkify" target="_blank" >On GitHub</a></h2><h2><a href="https://bartificer.net/" target="_blank" >Bartificer Creations</a></h2><h3>Modules</h3><ul><li><a href="module-defaults.html">defaults</a><ul class='members'><li data-type='member'><a href="module-defaults.html#.linkTemplates">linkTemplates</a></li><li data-type='member'><a href="module-defaults.html#.smallWords">smallWords</a></li><li data-type='member'><a href="module-defaults.html#.speciallyCapitalisedWords">speciallyCapitalisedWords</a></li></ul></li><li><a href="module-link-data.html">link-data</a></li><li><a href="module-link-template.html">link-template</a></li><li><a href="module-linkifier.html">linkifier</a></li><li><a href="module-linkify.html">linkify</a><ul class='members'><li data-type='member'><a href="module-linkify.html#.LinkData">LinkData</a></li><li data-type='member'><a href="module-linkify.html#.LinkTemplate">LinkTemplate</a></li><li data-type='member'><a href="module-linkify.html#.Linkifier">Linkifier</a></li><li data-type='member'><a href="module-linkify.html#.PageData">PageData</a></li><li data-type='member'><a href="module-linkify.html#.VERSION">VERSION</a></li><li data-type='member'><a href="module-linkify.html#.default">default</a></li><li data-type='member'><a href="module-linkify.html#.linkify">linkify</a></li></ul></li><li><a href="module-page-data.html">page-data</a></li><li><a href="module-utilities.html">utilities</a><ul class='methods'><li data-type='method'><a href="module-utilities.html#.batchFixCustomWordCases">batchFixCustomWordCases</a></li><li data-type='method'><a href="module-utilities.html#.escapeRegex">escapeRegex</a></li><li data-type='method'><a href="module-utilities.html#.extractSlug">extractSlug</a></li><li data-type='method'><a href="module-utilities.html#.regulariseWhitespace">regulariseWhitespace</a></li><li data-type='method'><a href="module-utilities.html#.stripQueryString">stripQueryString</a></li><li data-type='method'><a href="module-utilities.html#.stripUTMParameters">stripUTMParameters</a></li><li data-type='method'><a href="module-utilities.html#.toTitleCase">toTitleCase</a></li></ul></li></ul><h3>Classes</h3><ul><li><a href="module-link-data.LinkData.html">LinkData</a><ul class='methods'><li data-type='method'><a href="module-link-data.LinkData.html#asPlainObject">asPlainObject</a></li></ul></li><li><a href="module-link-template.LinkTemplate.html">LinkTemplate</a><ul class='methods'><li data-type='method'><a href="module-link-template.LinkTemplate.html#addFilter">addFilter</a></li><li data-type='method'><a href="module-link-template.LinkTemplate.html#filtersFor">filtersFor</a></li></ul></li><li><a href="module-linkifier.Linkifier.html">Linkifier</a><ul class='methods'><li data-type='method'><a href="module-linkifier.Linkifier.html#fetchPageData">fetchPageData</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#generateLink">generateLink</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#getTemplate">getTemplate</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#getTemplateNameForDomain">getTemplateNameForDomain</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#getTransformerForDomain">getTransformerForDomain</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#registerDefaultTemplateMapping">registerDefaultTemplateMapping</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#registerTemplate">registerTemplate</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#registerTransformer">registerTransformer</a></li></ul></li><li><a href="module-page-data.PageData.html">PageData</a><ul class='methods'><li data-type='method'><a href="module-page-data.PageData.html#addSecondaryHeading">addSecondaryHeading</a></li><li data-type='method'><a href="module-page-data.PageData.html#addTopLevelHeading">addTopLevelHeading</a></li><li data-type='method'><a href="module-page-data.PageData.html#asPlainObject">asPlainObject</a></li><li data-type='method'><a href="module-page-data.PageData.html#h1">h1</a></li><li data-type='method'><a href="module-page-data.PageData.html#h2">h2</a></li></ul></li></ul><h3>Externals</h3><ul><li><a href="module-cheerio.html">cheerio</a></li><li><a href="module-mustache.html">mustache</a></li><li><a href="module-node-fetch.html">node-fetch</a></li><li><a href="module-title-case.html">title-case</a></li><li><a href="module-urijs.html">urijs</a></li><li><a href="module-url-slug.html">url-slug</a></li></ul>
46
+ <h2><a href="index.html">Home</a></h2><h2><a href="https://github.com/bartificer/linkify" target="_blank" >On GitHub</a></h2><h2><a href="https://bartificer.net/" target="_blank" >Bartificer Creations</a></h2><h3>Modules</h3><ul><li><a href="module-defaults.html">defaults</a><ul class='members'><li data-type='member'><a href="module-defaults.html#.linkTemplates">linkTemplates</a></li><li data-type='member'><a href="module-defaults.html#.smallWords">smallWords</a></li><li data-type='member'><a href="module-defaults.html#.speciallyCapitalisedWords">speciallyCapitalisedWords</a></li></ul><ul class='methods'><li data-type='method'><a href="module-defaults.html#.dataTransformer">dataTransformer</a></li></ul></li><li><a href="module-link-data.html">link-data</a></li><li><a href="module-link-template.html">link-template</a></li><li><a href="module-linkifier.html">linkifier</a></li><li><a href="module-linkify.html">linkify</a><ul class='members'><li data-type='member'><a href="module-linkify.html#.LinkData">LinkData</a></li><li data-type='member'><a href="module-linkify.html#.LinkTemplate">LinkTemplate</a></li><li data-type='member'><a href="module-linkify.html#.Linkifier">Linkifier</a></li><li data-type='member'><a href="module-linkify.html#.PageData">PageData</a></li><li data-type='member'><a href="module-linkify.html#.VERSION">VERSION</a></li><li data-type='member'><a href="module-linkify.html#.default">default</a></li><li data-type='member'><a href="module-linkify.html#.linkify">linkify</a></li></ul></li><li><a href="module-page-data.html">page-data</a></li><li><a href="module-utilities.html">utilities</a><ul class='methods'><li data-type='method'><a href="module-utilities.html#.batchFixCustomWordCases">batchFixCustomWordCases</a></li><li data-type='method'><a href="module-utilities.html#.escapeRegex">escapeRegex</a></li><li data-type='method'><a href="module-utilities.html#.extractSlug">extractSlug</a></li><li data-type='method'><a href="module-utilities.html#.regulariseWhitespace">regulariseWhitespace</a></li><li data-type='method'><a href="module-utilities.html#.stripQueryString">stripQueryString</a></li><li data-type='method'><a href="module-utilities.html#.stripUTMParameters">stripUTMParameters</a></li><li data-type='method'><a href="module-utilities.html#.toTitleCase">toTitleCase</a></li></ul></li></ul><h3>Classes</h3><ul><li><a href="module-link-data.LinkData.html">LinkData</a><ul class='methods'><li data-type='method'><a href="module-link-data.LinkData.html#asPlainObject">asPlainObject</a></li></ul></li><li><a href="module-link-template.LinkTemplate.html">LinkTemplate</a><ul class='methods'><li data-type='method'><a href="module-link-template.LinkTemplate.html#addFilter">addFilter</a></li><li data-type='method'><a href="module-link-template.LinkTemplate.html#filtersFor">filtersFor</a></li></ul></li><li><a href="module-linkifier.Linkifier.html">Linkifier</a><ul class='methods'><li data-type='method'><a href="module-linkifier.Linkifier.html#fetchPageData">fetchPageData</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#generateLink">generateLink</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#getTemplate">getTemplate</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#getTemplateNameForDomain">getTemplateNameForDomain</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#getTransformerForDomain">getTransformerForDomain</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#registerDefaultTemplateMapping">registerDefaultTemplateMapping</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#registerTemplate">registerTemplate</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#registerTransformer">registerTransformer</a></li></ul></li><li><a href="module-page-data.PageData.html">PageData</a><ul class='methods'><li data-type='method'><a href="module-page-data.PageData.html#addSecondaryHeading">addSecondaryHeading</a></li><li data-type='method'><a href="module-page-data.PageData.html#addTopLevelHeading">addTopLevelHeading</a></li><li data-type='method'><a href="module-page-data.PageData.html#asPlainObject">asPlainObject</a></li><li data-type='method'><a href="module-page-data.PageData.html#h1">h1</a></li><li data-type='method'><a href="module-page-data.PageData.html#h2">h2</a></li></ul></li></ul><h3>Global</h3><ul><li><a href="global.html#dataTransformer">dataTransformer</a></li><li><a href="global.html#plainLinkInformationObject">plainLinkInformationObject</a></li><li><a href="global.html#plainPageInformationObject">plainPageInformationObject</a></li><li><a href="global.html#templateFieldFilterFunction">templateFieldFilterFunction</a></li><li><a href="global.html#templateFieldFilterTuple">templateFieldFilterTuple</a></li></ul><h3>Externals</h3><ul><li><a href="module-cheerio.html">cheerio</a></li><li><a href="module-mustache.html">mustache</a></li><li><a href="module-node-fetch.html">node-fetch</a></li><li><a href="module-title-case.html">title-case</a></li><li><a href="module-urijs.html">urijs</a></li><li><a href="module-url-slug.html">url-slug</a></li></ul>
47
47
 
48
48
  </nav>
49
49
 
@@ -79,44 +79,109 @@
79
79
  <p>This code was written by <a href="https://www.lets-talk.ie/contributor/bart">Bart Busschots</a> to speed up the creation of shownotes for the <a href="https://www.lets-talk.ie/lta">Let's Talk Apple</a> and the <a href="https://www.podfeet.com/blog/category/security-bits/">Security Bits</a> segments on the <a href="https://www.podfeet.com/blog/category/nosillacast/">NosillaCast</a>. It is released open-source as a courtesy to other podcasters and bloggers who regularly need to covert URLs into nicely formatted links.</p>
80
80
  <p>Pull requests and issues are welcomed, but on the understanding that this is a volunteer-maintained package, and all responses will be at the maintainer's discression as and when they have time. Realistically, you won't hear back from days or weeks, and if life is very hectic, perhaps even months.</p>
81
81
  <p>Given this reality, <strong>do not use this repository for anything mission-critical!</strong>.</p>
82
- <h2 id="instalation">Instalation</h2>
83
- <pre class="prettyprint source lang-sh"><code>npm install '@bartificer/linkifier';
84
- </code></pre>
85
- <h2 id="examples">Examples</h2>
86
- <p>This is an ES6 module, so when used with NPM, your scripts must have the <code>.mjs</code> file extension (to force ES module mode).</p>
87
- <h3 id="generate-a-link-from-a-url-using-all-the-defaults">Generate a Link from a URL Using all the Defaults</h3>
88
- <p>Create a file named <code>demo.mjs</code> with the following content:</p>
89
- <pre class="prettyprint source lang-javascript"><code>// import the linkify module
90
- import linkify from '@bartificer/linkify';
91
-
92
- // generate a link from a URL using the default template
93
- (async () => {
94
- let link = await linkify.generateLink('https://pbs.bartificer.net/pbs128');
95
- console.log(link);
96
- })();
97
- </code></pre>
98
- <p>Execute the script with <code>node</code>:</p>
99
- <pre class="prettyprint source lang-sh"><code>node demo.mjs
100
- </code></pre>
101
- <h3 id="using-the-bundled-templates">Using the Bundled Templates</h3>
102
- <p>The following demo code will generate a link using each of the bundled link templates:</p>
103
- <pre class="prettyprint source lang-javascript"><code>// import the linkify module
104
- import linkify from '@bartificer/linkify';
105
-
106
- // get a list of all registered template names
107
- const templateNames = linkify.templateNames;
108
- console.log('registered templates:', templateNames);
109
-
110
- // iterate over each tempalte with an example URL
82
+ <h1 id="intended-purpose--key-features">Intended Purpose &amp; Key Features</h1>
83
+ <p>This module's reason for existing is to take a URL, fetch and parse the web page's HTML to extract the page and section titles, pass the extracted data through a transformer function appropriate for the domain to extract the page's title, then render that to a link in any language using a desired template.</p>
84
+ <p>This is not a module for simply converting a URL to a generic link. What makes it different is:</p>
85
+ <ol>
86
+ <li>Link titles are automatically exctracted from the actual web page using customiusable <em>data transformers</em></li>
87
+ <li>Links can be rendered in any language using customisible templates.</li>
88
+ <li>Web page processing functions and output templates are associated with domain names in a DNS-aware way</li>
89
+ </ol>
90
+ <p>Data transformers and templates are resolved using the DNS hierarchy. For example, if you register a data transformer for the domain <code>bartificer.ie</code>, and then you process a link on the <code>www.bartificer.ie</code> domain, the module will first check if there is a transformer registered for <code>www.bartificer.ie</code>, if not it will find the one registered for <code>bartificer.ie</code> and use that. This means that the data transformer and template registered against the DNS root domain <code>.</code> acts as defaults for all domains that don't have their own custom settings.</p>
91
+ <p>To use this module you will need to write your own NodeJS script that:</p>
92
+ <ol>
93
+ <li>Imports this module</li>
94
+ <li>Registers your required templates and data transformers</li>
95
+ <li>Invokes the module's link generation function</li>
96
+ </ol>
97
+ <p>If this is more than you need, this module is not for you!</p>
98
+ <h1 id="instalation--minimal-nodejs-example">Instalation &amp; Minimal NodeJS Example</h1>
99
+ <p>Before you begin, make sure you have <a href="https://nodejs.org/en/download">the latest LTS version of NodeJS</a> installed!</p>
100
+ <p>Create an empty folder and open a shell in that folder.</p>
101
+ <p>First, install the module into your folder with the command:</p>
102
+ <pre class="prettyprint source lang-sh"><code>npm install '@bartificer/linkifier';</code></pre><p>Test the module is working with a basic script that uses all the defaults and makes no customisations. Create a file named <code>test.mjs</code> with the following content:</p>
103
+ <pre class="prettyprint source lang-javascript"><code>import { linkify } from '@bartificer/linkify';
104
+
111
105
  (async () => {
112
- let testURL = 'https://pbs.bartificer.net/pbs128';
113
- for(let templateName of templateNames){
114
- let link = await linkify.generateLink(testURL, templateName);
115
- console.log(`- ${templateName}: ${link}`);
116
- }
117
- })();
118
- </code></pre>
119
- <h3 id="real-world-examples">Real-World Examples</h3>
106
+ console.log(await linkify.generateLink('https://github.com/bartificer'));
107
+ })();</code></pre><p>Execute this script with the command:</p>
108
+ <pre class="prettyprint source lang-sh"><code>node ./examples/clipboardURLToMarkdown.mjs</code></pre><p>This should print an HTML link to this module's Git repository.</p>
109
+ <h1 id="customising-link-generation">Customising Link Generation</h1>
110
+ <p>The module is very much intended to be customised, and while the module has been designed to make your customisation code concise and as self-documenting as possible, it's vital to understand the module's process for generating links.</p>
111
+ <h2 id="the-link-generation-process">The Link Generation Process</h2>
112
+ <p>The module's <code>generateLink(url)</code> function is the primary entry point, and the only required argument is a URL.</p>
113
+ <p>This URL will be converted to a <code>PageData</code> object which capture's the various titles and headings found on the page.</p>
114
+ <p>Based on the URL's domain, a <em>data transformer</em> will be resolved, and that function will convert the <code>PageData</code> object to a <code>LinkData</code> object containing just the fields needed to render a link.</p>
115
+ <p>Based on the URL's domain, a <code>LinkTemplate</code> will be resolved, and that template will be combined with the <code>LinkData</code> object to render the link.</p>
116
+ <pre class="prettyprint source lang-mermaid"><code>flowchart TD
117
+ classDef inputNode fill:#090,color:#fff;
118
+ URL([fa:fa-circle-down URL]):::inputNode
119
+ TPLNAME([fa:fa-circle-down Template Name — Optional]):::inputNode
120
+
121
+ TPLMAP[(Domain → Default Template Mappings)]
122
+ TPLS[(Registered Tempaltes)]
123
+ TRANSMAP[(Domain → Transformer Mappings)]
124
+
125
+ FETCH{Try Fetch Page}
126
+ HAVETPLNAME{Template Name Specified?}
127
+
128
+ PARSE[fa:fa-gears Parse]
129
+ REVSLUG[fa:fa-gears Reverse Slug]
130
+ RSLVTPLNAME[fa:fa-gears Resolve Template Name]
131
+ RSLVTPL[fa:fa-gears Resolve Template]
132
+ RSLVTRANS[fa:fa-gears Resolve Transformer]
133
+ TRANS[fa:fa-gears Transform]
134
+ RENDER[fa:fa-gears Render]
135
+
136
+ PDATA{{fa:fa-table-cells PageData Object}}
137
+ LDATA{{fa:fa-table-cells LinkData Object}}
138
+ TPLNAMESTR{{fa:fa-quote-left Template Name}}
139
+ TPLOBJ{{fa:fa-table-cells Template Object}}
140
+ TRANSFN{{fa:fa-code Transformer Function}}
141
+
142
+ classDef outputNode fill:#090,color:#fff;
143
+ LINK([fa:fa-quote-left Link]):::outputNode
144
+
145
+ URL --> FETCH
146
+ TPLNAME --> HAVETPLNAME
147
+ FETCH -->|Success| PARSE
148
+ FETCH -->|Fail| REVSLUG
149
+ PARSE --> PDATA
150
+ REVSLUG --> PDATA
151
+ HAVETPLNAME -->|Yes| TPLNAMESTR
152
+ HAVETPLNAME -->|No| RSLVTPLNAME
153
+ TPLMAP --> RSLVTPLNAME
154
+ RSLVTPLNAME --> TPLNAMESTR
155
+ TPLNAMESTR --> RSLVTPL
156
+ RSLVTPL --> TPLOBJ
157
+ TPLS --> RSLVTPL
158
+ TRANSMAP --> RSLVTRANS
159
+ RSLVTRANS --> TRANSFN
160
+ PDATA --> TRANS
161
+ TRANSFN --> TRANS
162
+ TRANS --> LDATA
163
+ LDATA --> RENDER
164
+ TPLOBJ --> RENDER
165
+ RENDER --> LINK</code></pre><h2 id="customisation-points">Customisation Points</h2>
166
+ <p>To customise the module effectively you'll need the API documentation — <a href="https://bartificer.github.io/linkify/">bartificer.github.io/linkify</a>.</p>
167
+ <p>Before rendering links, you should do the following:</p>
168
+ <ol>
169
+ <li>Use an expanded import with at least the following:<pre class="prettyprint source lang-javascript"><code>import {linkify, LinkData, LinkTemplate} from '@bartificer/linkify';</code></pre></li>
170
+ <li>If none of the out-of-the-box templates are appropriate (<code>linkify.templateNames</code> is the array of registered template names), register a custom template of you own and make it the defaukt. For example:<pre class="prettyprint source lang-javascript"><code>// register a template for Markdown links with an emoji pre-fixed
171
+ linkify.registerTemplate('md-emoji', '🔗 [{{{title}}}]({{{url}}})');
172
+
173
+ // make the new template the default for all domains
174
+ linkfiy.registerDefaultTemplateMapping('.', 'md-emoji');</code></pre></li>
175
+ <li>If the default data transformer's logic does not fit with your needs, register a new default. For example:<pre class="prettyprint source lang-javascript"><code>linkify.registerTransformer('.', (pData) => { new LinkData(pData.url, pData.title.replace(/ · GitHub$/, ' on GitHub')) });</code></pre></li>
176
+ <li>Register all needed domain-specific custom transformers. For Example:<pre class="prettyprint source lang-javascript"><code>linkify.RegisterTransformer('some.domain', (pData) => { new LinkData(pData.url, pData.h1s[1]) });</code></pre></li>
177
+ <li>Very rarely, a different tempalte is required for a given domain, in that case, assign the desirec tempalte at the domain level. For example:<pre class="prettyprint source lang-javascript"><code>// create a special template for your home domain
178
+ linkify.registerTemplate('md-home', '🏠 [{{{title}}}]({{{url}}})');
179
+
180
+ // set that template as the default for just your domain (and its subdomains)
181
+ linkfiy.registerDefaultTemplateMapping('your.home.domain', 'md-home');</code></pre></li>
182
+ </ol>
183
+ <h1 id="real-world-examples">Real-World Examples</h1>
184
+ <p><em><strong>Note:</strong> these examples are written to work on a development clone of the module, to use them outside of that, change the import statements to import from <code>'@bartificer/linkify'</code> rather than <code>'../dist.index.js'</code>. Alternatively, fork, download and build the module (<code>npm ci &amp;&amp; npm run build</code>).</em></p>
120
185
  <p>Two real-world scripts Bart users to build shownotes are included in <a href="https://github.com/bartificer/linkify/tree/master/example">the <code>/example</code> folder in the GitHub repostitory</a>:</p>
121
186
  <ol>
122
187
  <li><code>clipboardURLToMarkdown.mjs</code> — the script Bart uses to convert links to Markdown for use in show notes. This script contains a real-world example of a custom template, and, of a large collection of custom transformers registered against specific domain names for dealing with their various quirks.</li>
@@ -154,7 +219,7 @@ console.log('registered templates:', templateNames);
154
219
  <dl class="details">
155
220
 
156
221
  <dt class="tag-description">Description:</dt>
157
- <dd class="tag-description"><ul class="dummy"><li><p>The definition of the class representing a link.</p></li></ul></dd>
222
+ <dd class="tag-description"><ul class="dummy"><li><p>Data model for link information.</p></li></ul></dd>
158
223
 
159
224
 
160
225
 
@@ -209,7 +274,7 @@ console.log('registered templates:', templateNames);
209
274
 
210
275
 
211
276
 
212
- <div class="description usertext"><p>The definition of the class representing a link.</p></div>
277
+ <div class="description usertext"><p>Data model for link information.</p></div>
213
278
 
214
279
 
215
280
 
@@ -268,7 +333,7 @@ console.log('registered templates:', templateNames);
268
333
  <dl class="details">
269
334
 
270
335
  <dt class="tag-description">Description:</dt>
271
- <dd class="tag-description"><ul class="dummy"><li><p>The definition of the class representing a link generation template.</p></li></ul></dd>
336
+ <dd class="tag-description"><ul class="dummy"><li><p>Link generation templates.</p></li></ul></dd>
272
337
 
273
338
 
274
339
 
@@ -323,7 +388,7 @@ console.log('registered templates:', templateNames);
323
388
 
324
389
 
325
390
 
326
- <div class="description usertext"><p>The definition of the class representing a link generation template.</p></div>
391
+ <div class="description usertext"><p>Link generation templates.</p></div>
327
392
 
328
393
 
329
394
 
@@ -496,7 +561,7 @@ console.log('registered templates:', templateNames);
496
561
  <dl class="details">
497
562
 
498
563
  <dt class="tag-description">Description:</dt>
499
- <dd class="tag-description"><ul class="dummy"><li><p>The definition of the class representing a web page.</p></li></ul></dd>
564
+ <dd class="tag-description"><ul class="dummy"><li><p>Data model for web page information.</p></li></ul></dd>
500
565
 
501
566
 
502
567
 
@@ -551,7 +616,7 @@ console.log('registered templates:', templateNames);
551
616
 
552
617
 
553
618
 
554
- <div class="description usertext"><p>The definition of the class representing a web page.</p></div>
619
+ <div class="description usertext"><p>Data model for web page information.</p></div>
555
620
 
556
621
 
557
622
 
@@ -934,7 +999,7 @@ console.log('registered templates:', templateNames);
934
999
  <br class="clear">
935
1000
 
936
1001
  <footer>
937
- Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Mon Apr 13 2026 16:45:07 GMT+0100 (Irish Standard Time) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
1002
+ Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Wed Apr 15 2026 17:49:51 GMT+0100 (Irish Standard Time) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
938
1003
  </footer>
939
1004
 
940
1005
  <script>prettyPrint();</script>
@@ -947,5 +1012,9 @@ console.log('registered templates:', templateNames);
947
1012
 
948
1013
  <link type="text/css" rel="stylesheet" href="./docdash-overrides.css">
949
1014
 
1015
+ <script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
1016
+
1017
+ <script src="./mermaid-init.js"></script>
1018
+
950
1019
  </body>
951
1020
  </html>
@@ -43,7 +43,7 @@
43
43
  <input type="text" id="nav-search" placeholder="Search" />
44
44
 
45
45
 
46
- <h2><a href="index.html">Home</a></h2><h2><a href="https://github.com/bartificer/linkify" target="_blank" >On GitHub</a></h2><h2><a href="https://bartificer.net/" target="_blank" >Bartificer Creations</a></h2><h3>Modules</h3><ul><li><a href="module-defaults.html">defaults</a><ul class='members'><li data-type='member'><a href="module-defaults.html#.linkTemplates">linkTemplates</a></li><li data-type='member'><a href="module-defaults.html#.smallWords">smallWords</a></li><li data-type='member'><a href="module-defaults.html#.speciallyCapitalisedWords">speciallyCapitalisedWords</a></li></ul></li><li><a href="module-link-data.html">link-data</a></li><li><a href="module-link-template.html">link-template</a></li><li><a href="module-linkifier.html">linkifier</a></li><li><a href="module-linkify.html">linkify</a><ul class='members'><li data-type='member'><a href="module-linkify.html#.LinkData">LinkData</a></li><li data-type='member'><a href="module-linkify.html#.LinkTemplate">LinkTemplate</a></li><li data-type='member'><a href="module-linkify.html#.Linkifier">Linkifier</a></li><li data-type='member'><a href="module-linkify.html#.PageData">PageData</a></li><li data-type='member'><a href="module-linkify.html#.VERSION">VERSION</a></li><li data-type='member'><a href="module-linkify.html#.default">default</a></li><li data-type='member'><a href="module-linkify.html#.linkify">linkify</a></li></ul></li><li><a href="module-page-data.html">page-data</a></li><li><a href="module-utilities.html">utilities</a><ul class='methods'><li data-type='method'><a href="module-utilities.html#.batchFixCustomWordCases">batchFixCustomWordCases</a></li><li data-type='method'><a href="module-utilities.html#.escapeRegex">escapeRegex</a></li><li data-type='method'><a href="module-utilities.html#.extractSlug">extractSlug</a></li><li data-type='method'><a href="module-utilities.html#.regulariseWhitespace">regulariseWhitespace</a></li><li data-type='method'><a href="module-utilities.html#.stripQueryString">stripQueryString</a></li><li data-type='method'><a href="module-utilities.html#.stripUTMParameters">stripUTMParameters</a></li><li data-type='method'><a href="module-utilities.html#.toTitleCase">toTitleCase</a></li></ul></li></ul><h3>Classes</h3><ul><li><a href="module-link-data.LinkData.html">LinkData</a><ul class='methods'><li data-type='method'><a href="module-link-data.LinkData.html#asPlainObject">asPlainObject</a></li></ul></li><li><a href="module-link-template.LinkTemplate.html">LinkTemplate</a><ul class='methods'><li data-type='method'><a href="module-link-template.LinkTemplate.html#addFilter">addFilter</a></li><li data-type='method'><a href="module-link-template.LinkTemplate.html#filtersFor">filtersFor</a></li></ul></li><li><a href="module-linkifier.Linkifier.html">Linkifier</a><ul class='methods'><li data-type='method'><a href="module-linkifier.Linkifier.html#fetchPageData">fetchPageData</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#generateLink">generateLink</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#getTemplate">getTemplate</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#getTemplateNameForDomain">getTemplateNameForDomain</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#getTransformerForDomain">getTransformerForDomain</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#registerDefaultTemplateMapping">registerDefaultTemplateMapping</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#registerTemplate">registerTemplate</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#registerTransformer">registerTransformer</a></li></ul></li><li><a href="module-page-data.PageData.html">PageData</a><ul class='methods'><li data-type='method'><a href="module-page-data.PageData.html#addSecondaryHeading">addSecondaryHeading</a></li><li data-type='method'><a href="module-page-data.PageData.html#addTopLevelHeading">addTopLevelHeading</a></li><li data-type='method'><a href="module-page-data.PageData.html#asPlainObject">asPlainObject</a></li><li data-type='method'><a href="module-page-data.PageData.html#h1">h1</a></li><li data-type='method'><a href="module-page-data.PageData.html#h2">h2</a></li></ul></li></ul><h3>Externals</h3><ul><li><a href="module-cheerio.html">cheerio</a></li><li><a href="module-mustache.html">mustache</a></li><li><a href="module-node-fetch.html">node-fetch</a></li><li><a href="module-title-case.html">title-case</a></li><li><a href="module-urijs.html">urijs</a></li><li><a href="module-url-slug.html">url-slug</a></li></ul>
46
+ <h2><a href="index.html">Home</a></h2><h2><a href="https://github.com/bartificer/linkify" target="_blank" >On GitHub</a></h2><h2><a href="https://bartificer.net/" target="_blank" >Bartificer Creations</a></h2><h3>Modules</h3><ul><li><a href="module-defaults.html">defaults</a><ul class='members'><li data-type='member'><a href="module-defaults.html#.linkTemplates">linkTemplates</a></li><li data-type='member'><a href="module-defaults.html#.smallWords">smallWords</a></li><li data-type='member'><a href="module-defaults.html#.speciallyCapitalisedWords">speciallyCapitalisedWords</a></li></ul><ul class='methods'><li data-type='method'><a href="module-defaults.html#.dataTransformer">dataTransformer</a></li></ul></li><li><a href="module-link-data.html">link-data</a></li><li><a href="module-link-template.html">link-template</a></li><li><a href="module-linkifier.html">linkifier</a></li><li><a href="module-linkify.html">linkify</a><ul class='members'><li data-type='member'><a href="module-linkify.html#.LinkData">LinkData</a></li><li data-type='member'><a href="module-linkify.html#.LinkTemplate">LinkTemplate</a></li><li data-type='member'><a href="module-linkify.html#.Linkifier">Linkifier</a></li><li data-type='member'><a href="module-linkify.html#.PageData">PageData</a></li><li data-type='member'><a href="module-linkify.html#.VERSION">VERSION</a></li><li data-type='member'><a href="module-linkify.html#.default">default</a></li><li data-type='member'><a href="module-linkify.html#.linkify">linkify</a></li></ul></li><li><a href="module-page-data.html">page-data</a></li><li><a href="module-utilities.html">utilities</a><ul class='methods'><li data-type='method'><a href="module-utilities.html#.batchFixCustomWordCases">batchFixCustomWordCases</a></li><li data-type='method'><a href="module-utilities.html#.escapeRegex">escapeRegex</a></li><li data-type='method'><a href="module-utilities.html#.extractSlug">extractSlug</a></li><li data-type='method'><a href="module-utilities.html#.regulariseWhitespace">regulariseWhitespace</a></li><li data-type='method'><a href="module-utilities.html#.stripQueryString">stripQueryString</a></li><li data-type='method'><a href="module-utilities.html#.stripUTMParameters">stripUTMParameters</a></li><li data-type='method'><a href="module-utilities.html#.toTitleCase">toTitleCase</a></li></ul></li></ul><h3>Classes</h3><ul><li><a href="module-link-data.LinkData.html">LinkData</a><ul class='methods'><li data-type='method'><a href="module-link-data.LinkData.html#asPlainObject">asPlainObject</a></li></ul></li><li><a href="module-link-template.LinkTemplate.html">LinkTemplate</a><ul class='methods'><li data-type='method'><a href="module-link-template.LinkTemplate.html#addFilter">addFilter</a></li><li data-type='method'><a href="module-link-template.LinkTemplate.html#filtersFor">filtersFor</a></li></ul></li><li><a href="module-linkifier.Linkifier.html">Linkifier</a><ul class='methods'><li data-type='method'><a href="module-linkifier.Linkifier.html#fetchPageData">fetchPageData</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#generateLink">generateLink</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#getTemplate">getTemplate</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#getTemplateNameForDomain">getTemplateNameForDomain</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#getTransformerForDomain">getTransformerForDomain</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#registerDefaultTemplateMapping">registerDefaultTemplateMapping</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#registerTemplate">registerTemplate</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#registerTransformer">registerTransformer</a></li></ul></li><li><a href="module-page-data.PageData.html">PageData</a><ul class='methods'><li data-type='method'><a href="module-page-data.PageData.html#addSecondaryHeading">addSecondaryHeading</a></li><li data-type='method'><a href="module-page-data.PageData.html#addTopLevelHeading">addTopLevelHeading</a></li><li data-type='method'><a href="module-page-data.PageData.html#asPlainObject">asPlainObject</a></li><li data-type='method'><a href="module-page-data.PageData.html#h1">h1</a></li><li data-type='method'><a href="module-page-data.PageData.html#h2">h2</a></li></ul></li></ul><h3>Global</h3><ul><li><a href="global.html#dataTransformer">dataTransformer</a></li><li><a href="global.html#plainLinkInformationObject">plainLinkInformationObject</a></li><li><a href="global.html#plainPageInformationObject">plainPageInformationObject</a></li><li><a href="global.html#templateFieldFilterFunction">templateFieldFilterFunction</a></li><li><a href="global.html#templateFieldFilterTuple">templateFieldFilterTuple</a></li></ul><h3>Externals</h3><ul><li><a href="module-cheerio.html">cheerio</a></li><li><a href="module-mustache.html">mustache</a></li><li><a href="module-node-fetch.html">node-fetch</a></li><li><a href="module-title-case.html">title-case</a></li><li><a href="module-urijs.html">urijs</a></li><li><a href="module-url-slug.html">url-slug</a></li></ul>
47
47
 
48
48
  </nav>
49
49
 
@@ -75,7 +75,7 @@
75
75
  * @requires link-data
76
76
  * @requires link-template
77
77
  * @requires page-data
78
- * @see {@link module:linkifier.Linkifier}
78
+ * @see {@link module:linkifier.Linkifier} for the entry point into the link generation functionality.
79
79
  * @example &lt;caption>Basic Usage&lt;/caption>
80
80
  * import { linkify } from '@bartificer/linkify';
81
81
  *
@@ -154,7 +154,7 @@ export { linkify as default };</code></pre>
154
154
  <br class="clear">
155
155
 
156
156
  <footer>
157
- Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Mon Apr 13 2026 16:45:07 GMT+0100 (Irish Standard Time) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
157
+ Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Wed Apr 15 2026 17:49:51 GMT+0100 (Irish Standard Time) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
158
158
  </footer>
159
159
 
160
160
  <script>prettyPrint();</script>
@@ -167,5 +167,9 @@ export { linkify as default };</code></pre>
167
167
 
168
168
  <link type="text/css" rel="stylesheet" href="./docdash-overrides.css">
169
169
 
170
+ <script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
171
+
172
+ <script src="./mermaid-init.js"></script>
173
+
170
174
  </body>
171
175
  </html>
@@ -0,0 +1,21 @@
1
+ document.addEventListener('DOMContentLoaded', function() {
2
+ // Get a list of all <pre> tags with the class 'lang-mermaid'
3
+ const mermaidPreTags = document.querySelectorAll('pre.lang-mermaid');
4
+
5
+ // Loop over all prettified Mermaid Code blocks and convert them to divs with the class 'mermaid'
6
+ mermaidPreTags.forEach(pre => {
7
+ const code = pre.textContent; // Get the raw code from the <pre> tag
8
+ console.log('INFO: converting pretified Mermaid code block to div for client-side rendering:', code);
9
+ const mermaidDiv = document.createElement('div'); // Create a new <div> element
10
+ mermaidDiv.classList.add('mermaid'); // Add the 'mermaid' class to the <div>
11
+ mermaidDiv.textContent = code; // Set the text content of the <div> to the raw code
12
+ pre.parentNode.replaceChild(mermaidDiv, pre); // Replace the <pre> tag with the new <div>
13
+ });
14
+
15
+ // Initialize Mermaid
16
+ if (typeof mermaid !== 'undefined') {
17
+ mermaid.initialize({ startOnLoad: true });
18
+ } else {
19
+ console.error('Mermaid library is not loaded.');
20
+ }
21
+ });
@@ -43,7 +43,7 @@
43
43
  <input type="text" id="nav-search" placeholder="Search" />
44
44
 
45
45
 
46
- <h2><a href="index.html">Home</a></h2><h2><a href="https://github.com/bartificer/linkify" target="_blank" >On GitHub</a></h2><h2><a href="https://bartificer.net/" target="_blank" >Bartificer Creations</a></h2><h3>Modules</h3><ul><li><a href="module-defaults.html">defaults</a><ul class='members'><li data-type='member'><a href="module-defaults.html#.linkTemplates">linkTemplates</a></li><li data-type='member'><a href="module-defaults.html#.smallWords">smallWords</a></li><li data-type='member'><a href="module-defaults.html#.speciallyCapitalisedWords">speciallyCapitalisedWords</a></li></ul></li><li><a href="module-link-data.html">link-data</a></li><li><a href="module-link-template.html">link-template</a></li><li><a href="module-linkifier.html">linkifier</a></li><li><a href="module-linkify.html">linkify</a><ul class='members'><li data-type='member'><a href="module-linkify.html#.LinkData">LinkData</a></li><li data-type='member'><a href="module-linkify.html#.LinkTemplate">LinkTemplate</a></li><li data-type='member'><a href="module-linkify.html#.Linkifier">Linkifier</a></li><li data-type='member'><a href="module-linkify.html#.PageData">PageData</a></li><li data-type='member'><a href="module-linkify.html#.VERSION">VERSION</a></li><li data-type='member'><a href="module-linkify.html#.default">default</a></li><li data-type='member'><a href="module-linkify.html#.linkify">linkify</a></li></ul></li><li><a href="module-page-data.html">page-data</a></li><li><a href="module-utilities.html">utilities</a><ul class='methods'><li data-type='method'><a href="module-utilities.html#.batchFixCustomWordCases">batchFixCustomWordCases</a></li><li data-type='method'><a href="module-utilities.html#.escapeRegex">escapeRegex</a></li><li data-type='method'><a href="module-utilities.html#.extractSlug">extractSlug</a></li><li data-type='method'><a href="module-utilities.html#.regulariseWhitespace">regulariseWhitespace</a></li><li data-type='method'><a href="module-utilities.html#.stripQueryString">stripQueryString</a></li><li data-type='method'><a href="module-utilities.html#.stripUTMParameters">stripUTMParameters</a></li><li data-type='method'><a href="module-utilities.html#.toTitleCase">toTitleCase</a></li></ul></li></ul><h3>Classes</h3><ul><li><a href="module-link-data.LinkData.html">LinkData</a><ul class='methods'><li data-type='method'><a href="module-link-data.LinkData.html#asPlainObject">asPlainObject</a></li></ul></li><li><a href="module-link-template.LinkTemplate.html">LinkTemplate</a><ul class='methods'><li data-type='method'><a href="module-link-template.LinkTemplate.html#addFilter">addFilter</a></li><li data-type='method'><a href="module-link-template.LinkTemplate.html#filtersFor">filtersFor</a></li></ul></li><li><a href="module-linkifier.Linkifier.html">Linkifier</a><ul class='methods'><li data-type='method'><a href="module-linkifier.Linkifier.html#fetchPageData">fetchPageData</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#generateLink">generateLink</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#getTemplate">getTemplate</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#getTemplateNameForDomain">getTemplateNameForDomain</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#getTransformerForDomain">getTransformerForDomain</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#registerDefaultTemplateMapping">registerDefaultTemplateMapping</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#registerTemplate">registerTemplate</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#registerTransformer">registerTransformer</a></li></ul></li><li><a href="module-page-data.PageData.html">PageData</a><ul class='methods'><li data-type='method'><a href="module-page-data.PageData.html#addSecondaryHeading">addSecondaryHeading</a></li><li data-type='method'><a href="module-page-data.PageData.html#addTopLevelHeading">addTopLevelHeading</a></li><li data-type='method'><a href="module-page-data.PageData.html#asPlainObject">asPlainObject</a></li><li data-type='method'><a href="module-page-data.PageData.html#h1">h1</a></li><li data-type='method'><a href="module-page-data.PageData.html#h2">h2</a></li></ul></li></ul><h3>Externals</h3><ul><li><a href="module-cheerio.html">cheerio</a></li><li><a href="module-mustache.html">mustache</a></li><li><a href="module-node-fetch.html">node-fetch</a></li><li><a href="module-title-case.html">title-case</a></li><li><a href="module-urijs.html">urijs</a></li><li><a href="module-url-slug.html">url-slug</a></li></ul>
46
+ <h2><a href="index.html">Home</a></h2><h2><a href="https://github.com/bartificer/linkify" target="_blank" >On GitHub</a></h2><h2><a href="https://bartificer.net/" target="_blank" >Bartificer Creations</a></h2><h3>Modules</h3><ul><li><a href="module-defaults.html">defaults</a><ul class='members'><li data-type='member'><a href="module-defaults.html#.linkTemplates">linkTemplates</a></li><li data-type='member'><a href="module-defaults.html#.smallWords">smallWords</a></li><li data-type='member'><a href="module-defaults.html#.speciallyCapitalisedWords">speciallyCapitalisedWords</a></li></ul><ul class='methods'><li data-type='method'><a href="module-defaults.html#.dataTransformer">dataTransformer</a></li></ul></li><li><a href="module-link-data.html">link-data</a></li><li><a href="module-link-template.html">link-template</a></li><li><a href="module-linkifier.html">linkifier</a></li><li><a href="module-linkify.html">linkify</a><ul class='members'><li data-type='member'><a href="module-linkify.html#.LinkData">LinkData</a></li><li data-type='member'><a href="module-linkify.html#.LinkTemplate">LinkTemplate</a></li><li data-type='member'><a href="module-linkify.html#.Linkifier">Linkifier</a></li><li data-type='member'><a href="module-linkify.html#.PageData">PageData</a></li><li data-type='member'><a href="module-linkify.html#.VERSION">VERSION</a></li><li data-type='member'><a href="module-linkify.html#.default">default</a></li><li data-type='member'><a href="module-linkify.html#.linkify">linkify</a></li></ul></li><li><a href="module-page-data.html">page-data</a></li><li><a href="module-utilities.html">utilities</a><ul class='methods'><li data-type='method'><a href="module-utilities.html#.batchFixCustomWordCases">batchFixCustomWordCases</a></li><li data-type='method'><a href="module-utilities.html#.escapeRegex">escapeRegex</a></li><li data-type='method'><a href="module-utilities.html#.extractSlug">extractSlug</a></li><li data-type='method'><a href="module-utilities.html#.regulariseWhitespace">regulariseWhitespace</a></li><li data-type='method'><a href="module-utilities.html#.stripQueryString">stripQueryString</a></li><li data-type='method'><a href="module-utilities.html#.stripUTMParameters">stripUTMParameters</a></li><li data-type='method'><a href="module-utilities.html#.toTitleCase">toTitleCase</a></li></ul></li></ul><h3>Classes</h3><ul><li><a href="module-link-data.LinkData.html">LinkData</a><ul class='methods'><li data-type='method'><a href="module-link-data.LinkData.html#asPlainObject">asPlainObject</a></li></ul></li><li><a href="module-link-template.LinkTemplate.html">LinkTemplate</a><ul class='methods'><li data-type='method'><a href="module-link-template.LinkTemplate.html#addFilter">addFilter</a></li><li data-type='method'><a href="module-link-template.LinkTemplate.html#filtersFor">filtersFor</a></li></ul></li><li><a href="module-linkifier.Linkifier.html">Linkifier</a><ul class='methods'><li data-type='method'><a href="module-linkifier.Linkifier.html#fetchPageData">fetchPageData</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#generateLink">generateLink</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#getTemplate">getTemplate</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#getTemplateNameForDomain">getTemplateNameForDomain</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#getTransformerForDomain">getTransformerForDomain</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#registerDefaultTemplateMapping">registerDefaultTemplateMapping</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#registerTemplate">registerTemplate</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#registerTransformer">registerTransformer</a></li></ul></li><li><a href="module-page-data.PageData.html">PageData</a><ul class='methods'><li data-type='method'><a href="module-page-data.PageData.html#addSecondaryHeading">addSecondaryHeading</a></li><li data-type='method'><a href="module-page-data.PageData.html#addTopLevelHeading">addTopLevelHeading</a></li><li data-type='method'><a href="module-page-data.PageData.html#asPlainObject">asPlainObject</a></li><li data-type='method'><a href="module-page-data.PageData.html#h1">h1</a></li><li data-type='method'><a href="module-page-data.PageData.html#h2">h2</a></li></ul></li></ul><h3>Global</h3><ul><li><a href="global.html#dataTransformer">dataTransformer</a></li><li><a href="global.html#plainLinkInformationObject">plainLinkInformationObject</a></li><li><a href="global.html#plainPageInformationObject">plainPageInformationObject</a></li><li><a href="global.html#templateFieldFilterFunction">templateFieldFilterFunction</a></li><li><a href="global.html#templateFieldFilterTuple">templateFieldFilterTuple</a></li></ul><h3>Externals</h3><ul><li><a href="module-cheerio.html">cheerio</a></li><li><a href="module-mustache.html">mustache</a></li><li><a href="module-node-fetch.html">node-fetch</a></li><li><a href="module-title-case.html">title-case</a></li><li><a href="module-urijs.html">urijs</a></li><li><a href="module-url-slug.html">url-slug</a></li></ul>
47
47
 
48
48
  </nav>
49
49
 
@@ -172,7 +172,7 @@
172
172
  <br class="clear">
173
173
 
174
174
  <footer>
175
- Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Mon Apr 13 2026 16:45:07 GMT+0100 (Irish Standard Time) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
175
+ Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Wed Apr 15 2026 17:49:51 GMT+0100 (Irish Standard Time) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
176
176
  </footer>
177
177
 
178
178
  <script>prettyPrint();</script>
@@ -185,5 +185,9 @@
185
185
 
186
186
  <link type="text/css" rel="stylesheet" href="./docdash-overrides.css">
187
187
 
188
+ <script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
189
+
190
+ <script src="./mermaid-init.js"></script>
191
+
188
192
  </body>
189
193
  </html>
@@ -43,7 +43,7 @@
43
43
  <input type="text" id="nav-search" placeholder="Search" />
44
44
 
45
45
 
46
- <h2><a href="index.html">Home</a></h2><h2><a href="https://github.com/bartificer/linkify" target="_blank" >On GitHub</a></h2><h2><a href="https://bartificer.net/" target="_blank" >Bartificer Creations</a></h2><h3>Modules</h3><ul><li><a href="module-defaults.html">defaults</a><ul class='members'><li data-type='member'><a href="module-defaults.html#.linkTemplates">linkTemplates</a></li><li data-type='member'><a href="module-defaults.html#.smallWords">smallWords</a></li><li data-type='member'><a href="module-defaults.html#.speciallyCapitalisedWords">speciallyCapitalisedWords</a></li></ul></li><li><a href="module-link-data.html">link-data</a></li><li><a href="module-link-template.html">link-template</a></li><li><a href="module-linkifier.html">linkifier</a></li><li><a href="module-linkify.html">linkify</a><ul class='members'><li data-type='member'><a href="module-linkify.html#.LinkData">LinkData</a></li><li data-type='member'><a href="module-linkify.html#.LinkTemplate">LinkTemplate</a></li><li data-type='member'><a href="module-linkify.html#.Linkifier">Linkifier</a></li><li data-type='member'><a href="module-linkify.html#.PageData">PageData</a></li><li data-type='member'><a href="module-linkify.html#.VERSION">VERSION</a></li><li data-type='member'><a href="module-linkify.html#.default">default</a></li><li data-type='member'><a href="module-linkify.html#.linkify">linkify</a></li></ul></li><li><a href="module-page-data.html">page-data</a></li><li><a href="module-utilities.html">utilities</a><ul class='methods'><li data-type='method'><a href="module-utilities.html#.batchFixCustomWordCases">batchFixCustomWordCases</a></li><li data-type='method'><a href="module-utilities.html#.escapeRegex">escapeRegex</a></li><li data-type='method'><a href="module-utilities.html#.extractSlug">extractSlug</a></li><li data-type='method'><a href="module-utilities.html#.regulariseWhitespace">regulariseWhitespace</a></li><li data-type='method'><a href="module-utilities.html#.stripQueryString">stripQueryString</a></li><li data-type='method'><a href="module-utilities.html#.stripUTMParameters">stripUTMParameters</a></li><li data-type='method'><a href="module-utilities.html#.toTitleCase">toTitleCase</a></li></ul></li></ul><h3>Classes</h3><ul><li><a href="module-link-data.LinkData.html">LinkData</a><ul class='methods'><li data-type='method'><a href="module-link-data.LinkData.html#asPlainObject">asPlainObject</a></li></ul></li><li><a href="module-link-template.LinkTemplate.html">LinkTemplate</a><ul class='methods'><li data-type='method'><a href="module-link-template.LinkTemplate.html#addFilter">addFilter</a></li><li data-type='method'><a href="module-link-template.LinkTemplate.html#filtersFor">filtersFor</a></li></ul></li><li><a href="module-linkifier.Linkifier.html">Linkifier</a><ul class='methods'><li data-type='method'><a href="module-linkifier.Linkifier.html#fetchPageData">fetchPageData</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#generateLink">generateLink</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#getTemplate">getTemplate</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#getTemplateNameForDomain">getTemplateNameForDomain</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#getTransformerForDomain">getTransformerForDomain</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#registerDefaultTemplateMapping">registerDefaultTemplateMapping</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#registerTemplate">registerTemplate</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#registerTransformer">registerTransformer</a></li></ul></li><li><a href="module-page-data.PageData.html">PageData</a><ul class='methods'><li data-type='method'><a href="module-page-data.PageData.html#addSecondaryHeading">addSecondaryHeading</a></li><li data-type='method'><a href="module-page-data.PageData.html#addTopLevelHeading">addTopLevelHeading</a></li><li data-type='method'><a href="module-page-data.PageData.html#asPlainObject">asPlainObject</a></li><li data-type='method'><a href="module-page-data.PageData.html#h1">h1</a></li><li data-type='method'><a href="module-page-data.PageData.html#h2">h2</a></li></ul></li></ul><h3>Externals</h3><ul><li><a href="module-cheerio.html">cheerio</a></li><li><a href="module-mustache.html">mustache</a></li><li><a href="module-node-fetch.html">node-fetch</a></li><li><a href="module-title-case.html">title-case</a></li><li><a href="module-urijs.html">urijs</a></li><li><a href="module-url-slug.html">url-slug</a></li></ul>
46
+ <h2><a href="index.html">Home</a></h2><h2><a href="https://github.com/bartificer/linkify" target="_blank" >On GitHub</a></h2><h2><a href="https://bartificer.net/" target="_blank" >Bartificer Creations</a></h2><h3>Modules</h3><ul><li><a href="module-defaults.html">defaults</a><ul class='members'><li data-type='member'><a href="module-defaults.html#.linkTemplates">linkTemplates</a></li><li data-type='member'><a href="module-defaults.html#.smallWords">smallWords</a></li><li data-type='member'><a href="module-defaults.html#.speciallyCapitalisedWords">speciallyCapitalisedWords</a></li></ul><ul class='methods'><li data-type='method'><a href="module-defaults.html#.dataTransformer">dataTransformer</a></li></ul></li><li><a href="module-link-data.html">link-data</a></li><li><a href="module-link-template.html">link-template</a></li><li><a href="module-linkifier.html">linkifier</a></li><li><a href="module-linkify.html">linkify</a><ul class='members'><li data-type='member'><a href="module-linkify.html#.LinkData">LinkData</a></li><li data-type='member'><a href="module-linkify.html#.LinkTemplate">LinkTemplate</a></li><li data-type='member'><a href="module-linkify.html#.Linkifier">Linkifier</a></li><li data-type='member'><a href="module-linkify.html#.PageData">PageData</a></li><li data-type='member'><a href="module-linkify.html#.VERSION">VERSION</a></li><li data-type='member'><a href="module-linkify.html#.default">default</a></li><li data-type='member'><a href="module-linkify.html#.linkify">linkify</a></li></ul></li><li><a href="module-page-data.html">page-data</a></li><li><a href="module-utilities.html">utilities</a><ul class='methods'><li data-type='method'><a href="module-utilities.html#.batchFixCustomWordCases">batchFixCustomWordCases</a></li><li data-type='method'><a href="module-utilities.html#.escapeRegex">escapeRegex</a></li><li data-type='method'><a href="module-utilities.html#.extractSlug">extractSlug</a></li><li data-type='method'><a href="module-utilities.html#.regulariseWhitespace">regulariseWhitespace</a></li><li data-type='method'><a href="module-utilities.html#.stripQueryString">stripQueryString</a></li><li data-type='method'><a href="module-utilities.html#.stripUTMParameters">stripUTMParameters</a></li><li data-type='method'><a href="module-utilities.html#.toTitleCase">toTitleCase</a></li></ul></li></ul><h3>Classes</h3><ul><li><a href="module-link-data.LinkData.html">LinkData</a><ul class='methods'><li data-type='method'><a href="module-link-data.LinkData.html#asPlainObject">asPlainObject</a></li></ul></li><li><a href="module-link-template.LinkTemplate.html">LinkTemplate</a><ul class='methods'><li data-type='method'><a href="module-link-template.LinkTemplate.html#addFilter">addFilter</a></li><li data-type='method'><a href="module-link-template.LinkTemplate.html#filtersFor">filtersFor</a></li></ul></li><li><a href="module-linkifier.Linkifier.html">Linkifier</a><ul class='methods'><li data-type='method'><a href="module-linkifier.Linkifier.html#fetchPageData">fetchPageData</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#generateLink">generateLink</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#getTemplate">getTemplate</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#getTemplateNameForDomain">getTemplateNameForDomain</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#getTransformerForDomain">getTransformerForDomain</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#registerDefaultTemplateMapping">registerDefaultTemplateMapping</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#registerTemplate">registerTemplate</a></li><li data-type='method'><a href="module-linkifier.Linkifier.html#registerTransformer">registerTransformer</a></li></ul></li><li><a href="module-page-data.PageData.html">PageData</a><ul class='methods'><li data-type='method'><a href="module-page-data.PageData.html#addSecondaryHeading">addSecondaryHeading</a></li><li data-type='method'><a href="module-page-data.PageData.html#addTopLevelHeading">addTopLevelHeading</a></li><li data-type='method'><a href="module-page-data.PageData.html#asPlainObject">asPlainObject</a></li><li data-type='method'><a href="module-page-data.PageData.html#h1">h1</a></li><li data-type='method'><a href="module-page-data.PageData.html#h2">h2</a></li></ul></li></ul><h3>Global</h3><ul><li><a href="global.html#dataTransformer">dataTransformer</a></li><li><a href="global.html#plainLinkInformationObject">plainLinkInformationObject</a></li><li><a href="global.html#plainPageInformationObject">plainPageInformationObject</a></li><li><a href="global.html#templateFieldFilterFunction">templateFieldFilterFunction</a></li><li><a href="global.html#templateFieldFilterTuple">templateFieldFilterTuple</a></li></ul><h3>Externals</h3><ul><li><a href="module-cheerio.html">cheerio</a></li><li><a href="module-mustache.html">mustache</a></li><li><a href="module-node-fetch.html">node-fetch</a></li><li><a href="module-title-case.html">title-case</a></li><li><a href="module-urijs.html">urijs</a></li><li><a href="module-url-slug.html">url-slug</a></li></ul>
47
47
 
48
48
  </nav>
49
49
 
@@ -201,7 +201,7 @@
201
201
 
202
202
  <dt class="tag-source">Source:</dt>
203
203
  <dd class="tag-source"><ul class="dummy"><li>
204
- <a href="defaults.mjs.html">defaults.mjs</a>, <a href="defaults.mjs.html#line27">line 27</a>
204
+ <a href="defaults.mjs.html">defaults.mjs</a>, <a href="defaults.mjs.html#line43">line 43</a>
205
205
  </li></ul></dd>
206
206
 
207
207
 
@@ -390,7 +390,7 @@ These are the additional words that also treated as so-called <em>small words</e
390
390
 
391
391
  <dt class="tag-source">Source:</dt>
392
392
  <dd class="tag-source"><ul class="dummy"><li>
393
- <a href="defaults.mjs.html">defaults.mjs</a>, <a href="defaults.mjs.html#line60">line 60</a>
393
+ <a href="defaults.mjs.html">defaults.mjs</a>, <a href="defaults.mjs.html#line76">line 76</a>
394
394
  </li></ul></dd>
395
395
 
396
396
 
@@ -478,7 +478,7 @@ These are the additional words that also treated as so-called <em>small words</e
478
478
 
479
479
  <dt class="tag-source">Source:</dt>
480
480
  <dd class="tag-source"><ul class="dummy"><li>
481
- <a href="defaults.mjs.html">defaults.mjs</a>, <a href="defaults.mjs.html#line67">line 67</a>
481
+ <a href="defaults.mjs.html">defaults.mjs</a>, <a href="defaults.mjs.html#line83">line 83</a>
482
482
  </li></ul></dd>
483
483
 
484
484
 
@@ -547,8 +547,99 @@ These are the additional words that also treated as so-called <em>small words</e
547
547
 
548
548
 
549
549
 
550
+
551
+
552
+
553
+ <h3 class="subsection-title">Methods</h3>
554
+
555
+
556
+
557
+
558
+
559
+
560
+ <h4 class="name" id=".dataTransformer"><span class="type-signature type-signature-static">(static) </span>dataTransformer<span class="signature">()</span><span class="type-signature"></span></h4>
561
+
562
+
563
+
564
+
565
+
566
+
567
+ <dl class="details">
568
+
569
+ <dt class="tag-description">Description:</dt>
570
+ <dd class="tag-description"><ul class="dummy"><li><p>The default link transformer. The Linkifier constructor assigns this data transformer to the root DNS name <code>.</code>, ensuring it acts as the fallback when no other domains are matched.</p>
571
+ <p>If the page has exactly one top-level heading, this heading is used as a the link text, otherwise the page title is used.</p>
572
+ <p>The description field is not explicitly set, so will default to the link text.</p></li></ul></dd>
573
+
574
+
575
+
576
+ <dt class="tag-source">Source:</dt>
577
+ <dd class="tag-source"><ul class="dummy"><li>
578
+ <a href="defaults.mjs.html">defaults.mjs</a>, <a href="defaults.mjs.html#line26">line 26</a>
579
+ </li></ul></dd>
580
+
581
+
582
+
583
+
584
+
585
+
586
+
587
+
588
+
589
+
590
+
591
+
592
+
593
+
594
+
595
+
596
+
597
+
598
+
599
+
550
600
 
551
601
 
602
+
603
+
604
+
605
+
606
+
607
+
608
+
609
+
610
+
611
+ </dl>
612
+
613
+
614
+
615
+
616
+
617
+
618
+
619
+
620
+
621
+
622
+
623
+
624
+
625
+
626
+
627
+
628
+
629
+
630
+
631
+
632
+
633
+
634
+
635
+
636
+
637
+
638
+
639
+
640
+
641
+
642
+
552
643
 
553
644
 
554
645
 
@@ -568,7 +659,7 @@ These are the additional words that also treated as so-called <em>small words</e
568
659
  <br class="clear">
569
660
 
570
661
  <footer>
571
- Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Mon Apr 13 2026 16:45:07 GMT+0100 (Irish Standard Time) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
662
+ Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Wed Apr 15 2026 17:49:51 GMT+0100 (Irish Standard Time) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
572
663
  </footer>
573
664
 
574
665
  <script>prettyPrint();</script>
@@ -581,5 +672,9 @@ These are the additional words that also treated as so-called <em>small words</e
581
672
 
582
673
  <link type="text/css" rel="stylesheet" href="./docdash-overrides.css">
583
674
 
675
+ <script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
676
+
677
+ <script src="./mermaid-init.js"></script>
678
+
584
679
  </body>
585
680
  </html>