writr 3.0.1 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +47 -19
- package/dist/writr.d.ts +7 -5
- package/dist/writr.js +42 -9
- package/package.json +13 -4
package/README.md
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
[](https://github.com/jaredwray/writr/blob/master/LICENSE)
|
|
8
8
|
[](https://codecov.io/gh/jaredwray/writr)
|
|
9
9
|
[](https://npmjs.com/package/writr)
|
|
10
|
+
[](https://npmjs.com/package/writr)
|
|
10
11
|
|
|
11
12
|
---
|
|
12
13
|
## Table of Contents
|
|
@@ -17,13 +18,14 @@
|
|
|
17
18
|
## Features
|
|
18
19
|
* Takes the complexity of Remark and makes it easy to use.
|
|
19
20
|
* Up and Rendering in seconds with a simple API.
|
|
21
|
+
* Easily Render to `React` or `HTML`.
|
|
20
22
|
* Generates a Table of Contents for your markdown files (remark-toc).
|
|
21
23
|
* Slug generation for your markdown files (rehype-slug).
|
|
22
24
|
* Code Highlighting (rehype-highlight).
|
|
25
|
+
* Math Support (rehype-katex).
|
|
23
26
|
* Markdown to HTML (rehype-stringify).
|
|
24
27
|
* Github Flavor Markdown (remark-gfm).
|
|
25
28
|
* Emoji Support (remark-emoji).
|
|
26
|
-
* Generation of Keywords, Descriptions, and Translations using AI.
|
|
27
29
|
|
|
28
30
|
## Getting Started
|
|
29
31
|
|
|
@@ -79,23 +81,29 @@ const description = await writr.description(markdown); // 'Hello World Test'
|
|
|
79
81
|
|
|
80
82
|
### `new Writr(options?: WritrOptions)`
|
|
81
83
|
|
|
82
|
-
|
|
83
|
-
interface WritrOptions {
|
|
84
|
-
openai?: string; // openai api key (default: undefined)
|
|
85
|
-
emoji?: boolean; // emoji support (default: true)
|
|
86
|
-
toc?: boolean; // table of contents generation (default: true)
|
|
87
|
-
slug?: boolean; // slug generation (default: true)
|
|
88
|
-
highlight?: boolean; // code highlighting (default: true)
|
|
89
|
-
gfm?: boolean; // github flavor markdown (default: true)
|
|
90
|
-
}
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
You can access the `WritrOptions` from the instance of Writr.
|
|
84
|
+
You can access the `WritrOptions` from the instance of Writr. Here is an example of WritrOptions.
|
|
94
85
|
|
|
95
86
|
```javascript
|
|
96
87
|
import { Writr, WritrOptions } from 'writr';
|
|
88
|
+
const writrOptions = {
|
|
89
|
+
openai: 'your-api-key', // openai api key (default: undefined)
|
|
90
|
+
renderOptions: {
|
|
91
|
+
emoji: true,
|
|
92
|
+
toc: true,
|
|
93
|
+
slug: true,
|
|
94
|
+
highlight: true,
|
|
95
|
+
gfm: true,
|
|
96
|
+
math: true
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
const writr = new Writr(writrOptions);
|
|
97
100
|
```
|
|
98
101
|
|
|
102
|
+
### `.engine`
|
|
103
|
+
|
|
104
|
+
Accessing the underlying engine for this instance of Writr. This is a `Processor<Root, Root, Root, undefined, undefined>` fromt the unified `.use()` function. You can use this to add additional plugins to the engine.
|
|
105
|
+
|
|
106
|
+
|
|
99
107
|
### `.options`
|
|
100
108
|
|
|
101
109
|
Accessing the default options for this instance of Writr.
|
|
@@ -119,18 +127,38 @@ interface RenderOptions {
|
|
|
119
127
|
}
|
|
120
128
|
```
|
|
121
129
|
|
|
122
|
-
### `.
|
|
130
|
+
### `.renderSync(markdown: string, options?: RenderOptions): string`
|
|
123
131
|
|
|
124
|
-
Rendering markdown to HTML. the options are based on RenderOptions. Which you can access from the Writr instance.
|
|
132
|
+
Rendering markdown to HTML synchronously. the options are based on RenderOptions. Which you can access from the Writr instance. The parameters are the same as the `.render()` function.
|
|
125
133
|
|
|
134
|
+
```javascript
|
|
135
|
+
import { Writr } from 'writr';
|
|
136
|
+
const writr = new Writr();
|
|
137
|
+
const markdown = `# Hello World ::-):\n\n This is a test.`;
|
|
138
|
+
const html = writr.renderSync(markdown); // <h1>Hello World 🙂</h1><p>This is a test.</p>
|
|
139
|
+
```
|
|
126
140
|
|
|
127
|
-
###
|
|
141
|
+
### '.renderReact(markdown: string, options?: RenderOptions, reactOptions?: HTMLReactParserOptions): Promise<React.JSX.Element>'
|
|
128
142
|
|
|
129
|
-
|
|
143
|
+
Rendering markdown to React. The options are based on RenderOptions and now HTMLReactParserOptions from `html-react-parser`.
|
|
130
144
|
|
|
131
|
-
|
|
145
|
+
```javascript
|
|
146
|
+
import { Writr } from 'writr';
|
|
147
|
+
const writr = new Writr();
|
|
148
|
+
const markdown = `# Hello World ::-):\n\n This is a test.`;
|
|
149
|
+
const reactElement = await writr.renderReact(markdown); // Will return a React.JSX.Element
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### '.renderReactSync(markdown: string, options?: RenderOptions, reactOptions?: HTMLReactParserOptions): React.JSX.Element'
|
|
132
153
|
|
|
133
|
-
|
|
154
|
+
Rendering markdown to React. The options are based on RenderOptions and now HTMLReactParserOptions from `html-react-parser`.
|
|
155
|
+
|
|
156
|
+
```javascript
|
|
157
|
+
import { Writr } from 'writr';
|
|
158
|
+
const writr = new Writr();
|
|
159
|
+
const markdown = `# Hello World ::-):\n\n This is a test.`;
|
|
160
|
+
const reactElement = writr.renderReactSync(markdown); // Will return a React.JSX.Element
|
|
161
|
+
```
|
|
134
162
|
|
|
135
163
|
## Code of Conduct and Contributing
|
|
136
164
|
[Code of Conduct](CODE_OF_CONDUCT.md) and [Contributing](CONTRIBUTING.md) guidelines.
|
package/dist/writr.d.ts
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import { Processor } from 'unified';
|
|
2
|
+
import { type HTMLReactParserOptions } from 'html-react-parser';
|
|
3
|
+
import type React from 'react';
|
|
2
4
|
type WritrOptions = {
|
|
3
5
|
openai?: string;
|
|
4
|
-
|
|
5
|
-
toc?: boolean;
|
|
6
|
-
slug?: boolean;
|
|
7
|
-
highlight?: boolean;
|
|
8
|
-
gfm?: boolean;
|
|
6
|
+
renderOptions?: RenderOptions;
|
|
9
7
|
};
|
|
10
8
|
type RenderOptions = {
|
|
11
9
|
emoji?: boolean;
|
|
@@ -13,6 +11,7 @@ type RenderOptions = {
|
|
|
13
11
|
slug?: boolean;
|
|
14
12
|
highlight?: boolean;
|
|
15
13
|
gfm?: boolean;
|
|
14
|
+
math?: boolean;
|
|
16
15
|
};
|
|
17
16
|
declare class Writr {
|
|
18
17
|
engine: Processor<import("mdast").Root, import("mdast").Root, import("hast").Root, import("hast").Root, string>;
|
|
@@ -20,6 +19,9 @@ declare class Writr {
|
|
|
20
19
|
constructor(options?: WritrOptions);
|
|
21
20
|
get options(): WritrOptions;
|
|
22
21
|
render(markdown: string, options?: RenderOptions): Promise<string>;
|
|
22
|
+
renderSync(markdown: string, options?: RenderOptions): string;
|
|
23
|
+
renderReact(markdown: string, options?: RenderOptions, reactParseOptions?: HTMLReactParserOptions): Promise<string | React.JSX.Element | React.JSX.Element[]>;
|
|
24
|
+
renderReactSync(markdown: string, options?: RenderOptions, reactParseOptions?: HTMLReactParserOptions): string | React.JSX.Element | React.JSX.Element[];
|
|
23
25
|
private createProcessor;
|
|
24
26
|
}
|
|
25
27
|
export { Writr, type WritrOptions, type RenderOptions };
|
package/dist/writr.js
CHANGED
|
@@ -5,8 +5,11 @@ import rehypeSlug from 'rehype-slug';
|
|
|
5
5
|
import rehypeHighlight from 'rehype-highlight';
|
|
6
6
|
import rehypeStringify from 'rehype-stringify';
|
|
7
7
|
import remarkToc from 'remark-toc';
|
|
8
|
+
import remarkMath from 'remark-math';
|
|
9
|
+
import rehypeKatex from 'rehype-katex';
|
|
8
10
|
import remarkGfm from 'remark-gfm';
|
|
9
11
|
import remarkEmoji from 'remark-emoji';
|
|
12
|
+
import parse from 'html-react-parser';
|
|
10
13
|
class Writr {
|
|
11
14
|
engine = unified()
|
|
12
15
|
.use(remarkParse)
|
|
@@ -15,21 +18,28 @@ class Writr {
|
|
|
15
18
|
.use(remarkEmoji) // Add emoji support
|
|
16
19
|
.use(remarkRehype) // Convert markdown to HTML
|
|
17
20
|
.use(rehypeSlug) // Add slugs to headings in HTML
|
|
21
|
+
.use(remarkMath) // Add math support
|
|
22
|
+
.use(rehypeKatex) // Add math support
|
|
18
23
|
.use(rehypeHighlight) // Apply syntax highlighting
|
|
19
24
|
.use(rehypeStringify); // Stringify HTML
|
|
20
25
|
_options = {
|
|
21
26
|
openai: undefined,
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
+
renderOptions: {
|
|
28
|
+
emoji: true,
|
|
29
|
+
toc: true,
|
|
30
|
+
slug: true,
|
|
31
|
+
highlight: true,
|
|
32
|
+
gfm: true,
|
|
33
|
+
math: true,
|
|
34
|
+
},
|
|
27
35
|
};
|
|
28
36
|
constructor(options) {
|
|
29
37
|
if (options) {
|
|
30
38
|
this._options = { ...this._options, ...options };
|
|
31
|
-
|
|
32
|
-
|
|
39
|
+
if (this._options.renderOptions) {
|
|
40
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
41
|
+
this.engine = this.createProcessor(this._options.renderOptions);
|
|
42
|
+
}
|
|
33
43
|
}
|
|
34
44
|
}
|
|
35
45
|
get options() {
|
|
@@ -39,7 +49,7 @@ class Writr {
|
|
|
39
49
|
try {
|
|
40
50
|
let { engine } = this;
|
|
41
51
|
if (options) {
|
|
42
|
-
options = { ...this._options, ...options };
|
|
52
|
+
options = { ...this._options.renderOptions, ...options };
|
|
43
53
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
44
54
|
engine = this.createProcessor(options);
|
|
45
55
|
}
|
|
@@ -50,6 +60,29 @@ class Writr {
|
|
|
50
60
|
throw new Error(`Failed to render markdown: ${error.message}`);
|
|
51
61
|
}
|
|
52
62
|
}
|
|
63
|
+
renderSync(markdown, options) {
|
|
64
|
+
try {
|
|
65
|
+
let { engine } = this;
|
|
66
|
+
if (options) {
|
|
67
|
+
options = { ...this._options.renderOptions, ...options };
|
|
68
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
69
|
+
engine = this.createProcessor(options);
|
|
70
|
+
}
|
|
71
|
+
const file = engine.processSync(markdown);
|
|
72
|
+
return String(file);
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
throw new Error(`Failed to render markdown: ${error.message}`);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
async renderReact(markdown, options, reactParseOptions) {
|
|
79
|
+
const html = await this.render(markdown, options);
|
|
80
|
+
return parse(html, reactParseOptions);
|
|
81
|
+
}
|
|
82
|
+
renderReactSync(markdown, options, reactParseOptions) {
|
|
83
|
+
const html = this.renderSync(markdown, options);
|
|
84
|
+
return parse(html, reactParseOptions);
|
|
85
|
+
}
|
|
53
86
|
createProcessor(options) {
|
|
54
87
|
const processor = unified().use(remarkParse);
|
|
55
88
|
if (options.gfm) {
|
|
@@ -73,4 +106,4 @@ class Writr {
|
|
|
73
106
|
}
|
|
74
107
|
}
|
|
75
108
|
export { Writr };
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdHIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvd3JpdHIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE9BQU8sRUFBWSxNQUFNLFNBQVMsQ0FBQztBQUMzQyxPQUFPLFdBQVcsTUFBTSxjQUFjLENBQUM7QUFDdkMsT0FBTyxZQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sVUFBVSxNQUFNLGFBQWEsQ0FBQztBQUNyQyxPQUFPLGVBQWUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvQyxPQUFPLGVBQWUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvQyxPQUFPLFNBQVMsTUFBTSxZQUFZLENBQUM7QUFDbkMsT0FBTyxTQUFTLE1BQU0sWUFBWSxDQUFDO0FBQ25DLE9BQU8sV0FBVyxNQUFNLGNBQWMsQ0FBQztBQW1CdkMsTUFBTSxLQUFLO0lBQ0gsTUFBTSxHQUFHLE9BQU8sRUFBRTtTQUN2QixHQUFHLENBQUMsV0FBVyxDQUFDO1NBQ2hCLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQywrQkFBK0I7U0FDOUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLHdCQUF3QjtTQUN2QyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsb0JBQW9CO1NBQ3JDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQywyQkFBMkI7U0FDN0MsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLGdDQUFnQztTQUNoRCxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUMsNEJBQTRCO1NBQ2pELEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLGlCQUFpQjtJQUV4QixRQUFRLEdBQWlCO1FBQ3pDLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLEtBQUssRUFBRSxJQUFJO1FBQ1gsR0FBRyxFQUFFLElBQUk7UUFDVCxJQUFJLEVBQUUsSUFBSTtRQUNWLFNBQVMsRUFBRSxJQUFJO1FBQ2YsR0FBRyxFQUFFLElBQUk7S0FDVCxDQUFDO0lBRUYsWUFBWSxPQUFzQjtRQUNqQyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLE9BQU8sRUFBQyxDQUFDO1lBQy9DLG1FQUFtRTtZQUNuRSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25ELENBQUM7SUFDRixDQUFDO0lBRUQsSUFBVyxPQUFPO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN0QixDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFnQixFQUFFLE9BQXVCO1FBQ3JELElBQUksQ0FBQztZQUNKLElBQUksRUFBQyxNQUFNLEVBQUMsR0FBRyxJQUFJLENBQUM7WUFDcEIsSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDYixPQUFPLEdBQUcsRUFBQyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxPQUFPLEVBQUMsQ0FBQztnQkFDekMsbUVBQW1FO2dCQUNuRSxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN4QyxDQUFDO1lBRUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzVDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQStCLEtBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzNFLENBQUM7SUFDRixDQUFDO0lBRU8sZUFBZSxDQUFDLE9BQXFDO1FBQzVELE1BQU0sU0FBUyxHQUFHLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUU3QyxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNqQixTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzFCLENBQUM7UUFFRCxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNqQixTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxFQUFDLE9BQU8sRUFBRSx1QkFBdUIsRUFBQyxDQUFDLENBQUM7UUFDOUQsQ0FBQztRQUVELElBQUksT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ25CLFNBQVMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDNUIsQ0FBQztRQUVELFNBQVMsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFNUIsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbEIsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMzQixDQUFDO1FBRUQsSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDdkIsU0FBUyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNoQyxDQUFDO1FBRUQsU0FBUyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUUvQixPQUFPLFNBQVMsQ0FBQztJQUNsQixDQUFDO0NBQ0Q7QUFFRCxPQUFPLEVBQUMsS0FBSyxFQUF3QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt1bmlmaWVkLCBQcm9jZXNzb3J9IGZyb20gJ3VuaWZpZWQnO1xuaW1wb3J0IHJlbWFya1BhcnNlIGZyb20gJ3JlbWFyay1wYXJzZSc7XG5pbXBvcnQgcmVtYXJrUmVoeXBlIGZyb20gJ3JlbWFyay1yZWh5cGUnO1xuaW1wb3J0IHJlaHlwZVNsdWcgZnJvbSAncmVoeXBlLXNsdWcnO1xuaW1wb3J0IHJlaHlwZUhpZ2hsaWdodCBmcm9tICdyZWh5cGUtaGlnaGxpZ2h0JztcbmltcG9ydCByZWh5cGVTdHJpbmdpZnkgZnJvbSAncmVoeXBlLXN0cmluZ2lmeSc7XG5pbXBvcnQgcmVtYXJrVG9jIGZyb20gJ3JlbWFyay10b2MnO1xuaW1wb3J0IHJlbWFya0dmbSBmcm9tICdyZW1hcmstZ2ZtJztcbmltcG9ydCByZW1hcmtFbW9qaSBmcm9tICdyZW1hcmstZW1vamknO1xuXG50eXBlIFdyaXRyT3B0aW9ucyA9IHtcblx0b3BlbmFpPzogc3RyaW5nOyAvLyBPcGVuYWkgYXBpIGtleSAoZGVmYXVsdDogdW5kZWZpbmVkKVxuXHRlbW9qaT86IGJvb2xlYW47IC8vIEVtb2ppIHN1cHBvcnQgKGRlZmF1bHQ6IHRydWUpXG5cdHRvYz86IGJvb2xlYW47IC8vIFRhYmxlIG9mIGNvbnRlbnRzIGdlbmVyYXRpb24gKGRlZmF1bHQ6IHRydWUpXG5cdHNsdWc/OiBib29sZWFuOyAvLyBTbHVnIGdlbmVyYXRpb24gKGRlZmF1bHQ6IHRydWUpXG5cdGhpZ2hsaWdodD86IGJvb2xlYW47IC8vIENvZGUgaGlnaGxpZ2h0aW5nIChkZWZhdWx0OiB0cnVlKVxuXHRnZm0/OiBib29sZWFuOyAvLyBHaXRodWIgZmxhdm9yIG1hcmtkb3duIChkZWZhdWx0OiB0cnVlKVxufTtcblxudHlwZSBSZW5kZXJPcHRpb25zID0ge1xuXHRlbW9qaT86IGJvb2xlYW47IC8vIEVtb2ppIHN1cHBvcnQgKGRlZmF1bHQ6IHRydWUpXG5cdHRvYz86IGJvb2xlYW47IC8vIFRhYmxlIG9mIGNvbnRlbnRzIGdlbmVyYXRpb24gKGRlZmF1bHQ6IHRydWUpXG5cdHNsdWc/OiBib29sZWFuOyAvLyBTbHVnIGdlbmVyYXRpb24gKGRlZmF1bHQ6IHRydWUpXG5cdGhpZ2hsaWdodD86IGJvb2xlYW47IC8vIENvZGUgaGlnaGxpZ2h0aW5nIChkZWZhdWx0OiB0cnVlKVxuXHRnZm0/OiBib29sZWFuOyAvLyBHaXRodWIgZmxhdm9yIG1hcmtkb3duIChkZWZhdWx0OiB0cnVlKVxufTtcblxuY2xhc3MgV3JpdHIge1xuXHRwdWJsaWMgZW5naW5lID0gdW5pZmllZCgpXG5cdFx0LnVzZShyZW1hcmtQYXJzZSlcblx0XHQudXNlKHJlbWFya0dmbSkgLy8gVXNlIEdpdEh1YiBGbGF2b3JlZCBNYXJrZG93blxuXHRcdC51c2UocmVtYXJrVG9jKSAvLyBBZGQgdGFibGUgb2YgY29udGVudHNcblx0XHQudXNlKHJlbWFya0Vtb2ppKSAvLyBBZGQgZW1vamkgc3VwcG9ydFxuXHRcdC51c2UocmVtYXJrUmVoeXBlKSAvLyBDb252ZXJ0IG1hcmtkb3duIHRvIEhUTUxcblx0XHQudXNlKHJlaHlwZVNsdWcpIC8vIEFkZCBzbHVncyB0byBoZWFkaW5ncyBpbiBIVE1MXG5cdFx0LnVzZShyZWh5cGVIaWdobGlnaHQpIC8vIEFwcGx5IHN5bnRheCBoaWdobGlnaHRpbmdcblx0XHQudXNlKHJlaHlwZVN0cmluZ2lmeSk7IC8vIFN0cmluZ2lmeSBIVE1MXG5cblx0cHJpdmF0ZSByZWFkb25seSBfb3B0aW9uczogV3JpdHJPcHRpb25zID0ge1xuXHRcdG9wZW5haTogdW5kZWZpbmVkLFxuXHRcdGVtb2ppOiB0cnVlLFxuXHRcdHRvYzogdHJ1ZSxcblx0XHRzbHVnOiB0cnVlLFxuXHRcdGhpZ2hsaWdodDogdHJ1ZSxcblx0XHRnZm06IHRydWUsXG5cdH07XG5cblx0Y29uc3RydWN0b3Iob3B0aW9ucz86IFdyaXRyT3B0aW9ucykge1xuXHRcdGlmIChvcHRpb25zKSB7XG5cdFx0XHR0aGlzLl9vcHRpb25zID0gey4uLnRoaXMuX29wdGlvbnMsIC4uLm9wdGlvbnN9O1xuXHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtYXNzaWdubWVudFxuXHRcdFx0dGhpcy5lbmdpbmUgPSB0aGlzLmNyZWF0ZVByb2Nlc3Nvcih0aGlzLl9vcHRpb25zKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgZ2V0IG9wdGlvbnMoKTogV3JpdHJPcHRpb25zIHtcblx0XHRyZXR1cm4gdGhpcy5fb3B0aW9ucztcblx0fVxuXG5cdGFzeW5jIHJlbmRlcihtYXJrZG93bjogc3RyaW5nLCBvcHRpb25zPzogUmVuZGVyT3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPiB7XG5cdFx0dHJ5IHtcblx0XHRcdGxldCB7ZW5naW5lfSA9IHRoaXM7XG5cdFx0XHRpZiAob3B0aW9ucykge1xuXHRcdFx0XHRvcHRpb25zID0gey4uLnRoaXMuX29wdGlvbnMsIC4uLm9wdGlvbnN9O1xuXHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hc3NpZ25tZW50XG5cdFx0XHRcdGVuZ2luZSA9IHRoaXMuY3JlYXRlUHJvY2Vzc29yKG9wdGlvbnMpO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBmaWxlID0gYXdhaXQgZW5naW5lLnByb2Nlc3MobWFya2Rvd24pO1xuXHRcdFx0cmV0dXJuIFN0cmluZyhmaWxlKTtcblx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gcmVuZGVyIG1hcmtkb3duOiAkeyhlcnJvciBhcyBFcnJvcikubWVzc2FnZX1gKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGNyZWF0ZVByb2Nlc3NvcihvcHRpb25zOiBSZW5kZXJPcHRpb25zIHwgV3JpdHJPcHRpb25zKTogYW55IHtcblx0XHRjb25zdCBwcm9jZXNzb3IgPSB1bmlmaWVkKCkudXNlKHJlbWFya1BhcnNlKTtcblxuXHRcdGlmIChvcHRpb25zLmdmbSkge1xuXHRcdFx0cHJvY2Vzc29yLnVzZShyZW1hcmtHZm0pO1xuXHRcdH1cblxuXHRcdGlmIChvcHRpb25zLnRvYykge1xuXHRcdFx0cHJvY2Vzc29yLnVzZShyZW1hcmtUb2MsIHtoZWFkaW5nOiAndG9jfHRhYmxlIG9mIGNvbnRlbnRzJ30pO1xuXHRcdH1cblxuXHRcdGlmIChvcHRpb25zLmVtb2ppKSB7XG5cdFx0XHRwcm9jZXNzb3IudXNlKHJlbWFya0Vtb2ppKTtcblx0XHR9XG5cblx0XHRwcm9jZXNzb3IudXNlKHJlbWFya1JlaHlwZSk7XG5cblx0XHRpZiAob3B0aW9ucy5zbHVnKSB7XG5cdFx0XHRwcm9jZXNzb3IudXNlKHJlaHlwZVNsdWcpO1xuXHRcdH1cblxuXHRcdGlmIChvcHRpb25zLmhpZ2hsaWdodCkge1xuXHRcdFx0cHJvY2Vzc29yLnVzZShyZWh5cGVIaWdobGlnaHQpO1xuXHRcdH1cblxuXHRcdHByb2Nlc3Nvci51c2UocmVoeXBlU3RyaW5naWZ5KTtcblxuXHRcdHJldHVybiBwcm9jZXNzb3I7XG5cdH1cbn1cblxuZXhwb3J0IHtXcml0ciwgdHlwZSBXcml0ck9wdGlvbnMsIHR5cGUgUmVuZGVyT3B0aW9uc307XG5cbiJdfQ==
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdHIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvd3JpdHIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE9BQU8sRUFBWSxNQUFNLFNBQVMsQ0FBQztBQUMzQyxPQUFPLFdBQVcsTUFBTSxjQUFjLENBQUM7QUFDdkMsT0FBTyxZQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sVUFBVSxNQUFNLGFBQWEsQ0FBQztBQUNyQyxPQUFPLGVBQWUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvQyxPQUFPLGVBQWUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvQyxPQUFPLFNBQVMsTUFBTSxZQUFZLENBQUM7QUFDbkMsT0FBTyxVQUFVLE1BQU0sYUFBYSxDQUFDO0FBQ3JDLE9BQU8sV0FBVyxNQUFNLGNBQWMsQ0FBQztBQUN2QyxPQUFPLFNBQVMsTUFBTSxZQUFZLENBQUM7QUFDbkMsT0FBTyxXQUFXLE1BQU0sY0FBYyxDQUFDO0FBQ3ZDLE9BQU8sS0FBb0MsTUFBTSxtQkFBbUIsQ0FBQztBQWlCckUsTUFBTSxLQUFLO0lBQ0gsTUFBTSxHQUFHLE9BQU8sRUFBRTtTQUN2QixHQUFHLENBQUMsV0FBVyxDQUFDO1NBQ2hCLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQywrQkFBK0I7U0FDOUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLHdCQUF3QjtTQUN2QyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsb0JBQW9CO1NBQ3JDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQywyQkFBMkI7U0FDN0MsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLGdDQUFnQztTQUNoRCxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsbUJBQW1CO1NBQ25DLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxtQkFBbUI7U0FDcEMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDLDRCQUE0QjtTQUNqRCxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxpQkFB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QUFDO1FBQ2hELE9BQU8sS0FBSyxDQUFDLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFTyxlQUFlLENBQUMsT0FBc0I7UUFDN0MsTUFBTSxTQUFTLEdBQUcsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRTdDLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2pCLFNBQVMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDMUIsQ0FBQztRQUVELElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2pCLFNBQVMsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUMsT0FBTyxFQUFFLHVCQUF1QixFQUFDLENBQUMsQ0FBQztRQUM5RCxDQUFDO1FBRUQsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbkIsU0FBUyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM1QixDQUFDO1FBRUQsU0FBUyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUU1QixJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNsQixTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzNCLENBQUM7UUFFRCxJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN2QixTQUFTLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFFRCxTQUFTLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRS9CLE9BQU8sU0FBUyxDQUFDO0lBQ2xCLENBQUM7Q0FDRDtBQUVELE9BQU8sRUFBQyxLQUFLLEVBQXdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3VuaWZpZWQsIFByb2Nlc3Nvcn0gZnJvbSAndW5pZmllZCc7XG5pbXBvcnQgcmVtYXJrUGFyc2UgZnJvbSAncmVtYXJrLXBhcnNlJztcbmltcG9ydCByZW1hcmtSZWh5cGUgZnJvbSAncmVtYXJrLXJlaHlwZSc7XG5pbXBvcnQgcmVoeXBlU2x1ZyBmcm9tICdyZWh5cGUtc2x1Zyc7XG5pbXBvcnQgcmVoeXBlSGlnaGxpZ2h0IGZyb20gJ3JlaHlwZS1oaWdobGlnaHQnO1xuaW1wb3J0IHJlaHlwZVN0cmluZ2lmeSBmcm9tICdyZWh5cGUtc3RyaW5naWZ5JztcbmltcG9ydCByZW1hcmtUb2MgZnJvbSAncmVtYXJrLXRvYyc7XG5pbXBvcnQgcmVtYXJrTWF0aCBmcm9tICdyZW1hcmstbWF0aCc7XG5pbXBvcnQgcmVoeXBlS2F0ZXggZnJvbSAncmVoeXBlLWthdGV4JztcbmltcG9ydCByZW1hcmtHZm0gZnJvbSAncmVtYXJrLWdmbSc7XG5pbXBvcnQgcmVtYXJrRW1vamkgZnJvbSAncmVtYXJrLWVtb2ppJztcbmltcG9ydCBwYXJzZSwge3R5cGUgSFRNTFJlYWN0UGFyc2VyT3B0aW9uc30gZnJvbSAnaHRtbC1yZWFjdC1wYXJzZXInO1xuaW1wb3J0IHR5cGUgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG50eXBlIFdyaXRyT3B0aW9ucyA9IHtcblx0b3BlbmFpPzogc3RyaW5nOyAvLyBPcGVuYWkgYXBpIGtleSAoZGVmYXVsdDogdW5kZWZpbmVkKVxuXHRyZW5kZXJPcHRpb25zPzogUmVuZGVyT3B0aW9uczsgLy8gRGVmYXVsdCByZW5kZXIgb3B0aW9ucyAoZGVmYXVsdDogdW5kZWZpbmVkKVxufTtcblxudHlwZSBSZW5kZXJPcHRpb25zID0ge1xuXHRlbW9qaT86IGJvb2xlYW47IC8vIEVtb2ppIHN1cHBvcnQgKGRlZmF1bHQ6IHRydWUpXG5cdHRvYz86IGJvb2xlYW47IC8vIFRhYmxlIG9mIGNvbnRlbnRzIGdlbmVyYXRpb24gKGRlZmF1bHQ6IHRydWUpXG5cdHNsdWc/OiBib29sZWFuOyAvLyBTbHVnIGdlbmVyYXRpb24gKGRlZmF1bHQ6IHRydWUpXG5cdGhpZ2hsaWdodD86IGJvb2xlYW47IC8vIENvZGUgaGlnaGxpZ2h0aW5nIChkZWZhdWx0OiB0cnVlKVxuXHRnZm0/OiBib29sZWFuOyAvLyBHaXRodWIgZmxhdm9yIG1hcmtkb3duIChkZWZhdWx0OiB0cnVlKVxuXHRtYXRoPzogYm9vbGVhbjsgLy8gTWF0aCBzdXBwb3J0IChkZWZhdWx0OiB0cnVlKVxufTtcblxuY2xhc3MgV3JpdHIge1xuXHRwdWJsaWMgZW5naW5lID0gdW5pZmllZCgpXG5cdFx0LnVzZShyZW1hcmtQYXJzZSlcblx0XHQudXNlKHJlbWFya0dmbSkgLy8gVXNlIEdpdEh1YiBGbGF2b3JlZCBNYXJrZG93blxuXHRcdC51c2UocmVtYXJrVG9jKSAvLyBBZGQgdGFibGUgb2YgY29udGVudHNcblx0XHQudXNlKHJlbWFya0Vtb2ppKSAvLyBBZGQgZW1vamkgc3VwcG9ydFxuXHRcdC51c2UocmVtYXJrUmVoeXBlKSAvLyBDb252ZXJ0IG1hcmtkb3duIHRvIEhUTUxcblx0XHQudXNlKHJlaHlwZVNsdWcpIC8vIEFkZCBzbHVncyB0byBoZWFkaW5ncyBpbiBIVE1MXG5cdFx0LnVzZShyZW1hcmtNYXRoKSAvLyBBZGQgbWF0aCBzdXBwb3J0XG5cdFx0LnVzZShyZWh5cGVLYXRleCkgLy8gQWRkIG1hdGggc3VwcG9ydFxuXHRcdC51c2UocmVoeXBlSGlnaGxpZ2h0KSAvLyBBcHBseSBzeW50YXggaGlnaGxpZ2h0aW5nXG5cdFx0LnVzZShyZWh5cGVTdHJpbmdpZnkpOyAvLyBTdHJpbmdpZnkgSFRNTFxuXG5cdHByaXZhdGUgcmVhZG9ubHkgX29wdGlvbnM6IFdyaXRyT3B0aW9ucyA9IHtcblx0XHRvcGVuYWk6IHVuZGVmaW5lZCxcblx0XHRyZW5kZXJPcHRpb25zOiB7XG5cdFx0XHRlbW9qaTogdHJ1ZSxcblx0XHRcdHRvYzogdHJ1ZSxcblx0XHRcdHNsdWc6IHRydWUsXG5cdFx0XHRoaWdobGlnaHQ6IHRydWUsXG5cdFx0XHRnZm06IHRydWUsXG5cdFx0XHRtYXRoOiB0cnVlLFxuXHRcdH0sXG5cdH07XG5cblx0Y29uc3RydWN0b3Iob3B0aW9ucz86IFdyaXRyT3B0aW9ucykge1xuXHRcdGlmIChvcHRpb25zKSB7XG5cdFx0XHR0aGlzLl9vcHRpb25zID0gey4uLnRoaXMuX29wdGlvbnMsIC4uLm9wdGlvbnN9O1xuXHRcdFx0aWYgKHRoaXMuX29wdGlvbnMucmVuZGVyT3B0aW9ucykge1xuXHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hc3NpZ25tZW50XG5cdFx0XHRcdHRoaXMuZW5naW5lID0gdGhpcy5jcmVhdGVQcm9jZXNzb3IodGhpcy5fb3B0aW9ucy5yZW5kZXJPcHRpb25zKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgZ2V0IG9wdGlvbnMoKTogV3JpdHJPcHRpb25zIHtcblx0XHRyZXR1cm4gdGhpcy5fb3B0aW9ucztcblx0fVxuXG5cdGFzeW5jIHJlbmRlcihtYXJrZG93bjogc3RyaW5nLCBvcHRpb25zPzogUmVuZGVyT3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPiB7XG5cdFx0dHJ5IHtcblx0XHRcdGxldCB7ZW5naW5lfSA9IHRoaXM7XG5cdFx0XHRpZiAob3B0aW9ucykge1xuXHRcdFx0XHRvcHRpb25zID0gey4uLnRoaXMuX29wdGlvbnMucmVuZGVyT3B0aW9ucywgLi4ub3B0aW9uc307XG5cdFx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWFzc2lnbm1lbnRcblx0XHRcdFx0ZW5naW5lID0gdGhpcy5jcmVhdGVQcm9jZXNzb3Iob3B0aW9ucyk7XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IGZpbGUgPSBhd2FpdCBlbmdpbmUucHJvY2VzcyhtYXJrZG93bik7XG5cdFx0XHRyZXR1cm4gU3RyaW5nKGZpbGUpO1xuXHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byByZW5kZXIgbWFya2Rvd246ICR7KGVycm9yIGFzIEVycm9yKS5tZXNzYWdlfWApO1xuXHRcdH1cblx0fVxuXG5cdHJlbmRlclN5bmMobWFya2Rvd246IHN0cmluZywgb3B0aW9ucz86IFJlbmRlck9wdGlvbnMpOiBzdHJpbmcge1xuXHRcdHRyeSB7XG5cdFx0XHRsZXQge2VuZ2luZX0gPSB0aGlzO1xuXHRcdFx0aWYgKG9wdGlvbnMpIHtcblx0XHRcdFx0b3B0aW9ucyA9IHsuLi50aGlzLl9vcHRpb25zLnJlbmRlck9wdGlvbnMsIC4uLm9wdGlvbnN9O1xuXHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hc3NpZ25tZW50XG5cdFx0XHRcdGVuZ2luZSA9IHRoaXMuY3JlYXRlUHJvY2Vzc29yKG9wdGlvbnMpO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBmaWxlID0gZW5naW5lLnByb2Nlc3NTeW5jKG1hcmtkb3duKTtcblx0XHRcdHJldHVybiBTdHJpbmcoZmlsZSk7XG5cdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHJlbmRlciBtYXJrZG93bjogJHsoZXJyb3IgYXMgRXJyb3IpLm1lc3NhZ2V9YCk7XG5cdFx0fVxuXHR9XG5cblx0YXN5bmMgcmVuZGVyUmVhY3QobWFya2Rvd246IHN0cmluZywgb3B0aW9ucz86IFJlbmRlck9wdGlvbnMsIHJlYWN0UGFyc2VPcHRpb25zPzogSFRNTFJlYWN0UGFyc2VyT3B0aW9ucyk6IFByb21pc2U8c3RyaW5nIHwgUmVhY3QuSlNYLkVsZW1lbnQgfCBSZWFjdC5KU1guRWxlbWVudFtdPiB7XG5cdFx0Y29uc3QgaHRtbCA9IGF3YWl0IHRoaXMucmVuZGVyKG1hcmtkb3duLCBvcHRpb25zKTtcblxuXHRcdHJldHVybiBwYXJzZShodG1sLCByZWFjdFBhcnNlT3B0aW9ucyk7XG5cdH1cblxuXHRyZW5kZXJSZWFjdFN5bmMobWFya2Rvd246IHN0cmluZywgb3B0aW9ucz86IFJlbmRlck9wdGlvbnMsIHJlYWN0UGFyc2VPcHRpb25zPzogSFRNTFJlYWN0UGFyc2VyT3B0aW9ucyk6IHN0cmluZyB8IFJlYWN0LkpTWC5FbGVtZW50IHwgUmVhY3QuSlNYLkVsZW1lbnRbXSB7XG5cdFx0Y29uc3QgaHRtbCA9IHRoaXMucmVuZGVyU3luYyhtYXJrZG93biwgb3B0aW9ucyk7XG5cdFx0cmV0dXJuIHBhcnNlKGh0bWwsIHJlYWN0UGFyc2VPcHRpb25zKTtcblx0fVxuXG5cdHByaXZhdGUgY3JlYXRlUHJvY2Vzc29yKG9wdGlvbnM6IFJlbmRlck9wdGlvbnMpOiBhbnkge1xuXHRcdGNvbnN0IHByb2Nlc3NvciA9IHVuaWZpZWQoKS51c2UocmVtYXJrUGFyc2UpO1xuXG5cdFx0aWYgKG9wdGlvbnMuZ2ZtKSB7XG5cdFx0XHRwcm9jZXNzb3IudXNlKHJlbWFya0dmbSk7XG5cdFx0fVxuXG5cdFx0aWYgKG9wdGlvbnMudG9jKSB7XG5cdFx0XHRwcm9jZXNzb3IudXNlKHJlbWFya1RvYywge2hlYWRpbmc6ICd0b2N8dGFibGUgb2YgY29udGVudHMnfSk7XG5cdFx0fVxuXG5cdFx0aWYgKG9wdGlvbnMuZW1vamkpIHtcblx0XHRcdHByb2Nlc3Nvci51c2UocmVtYXJrRW1vamkpO1xuXHRcdH1cblxuXHRcdHByb2Nlc3Nvci51c2UocmVtYXJrUmVoeXBlKTtcblxuXHRcdGlmIChvcHRpb25zLnNsdWcpIHtcblx0XHRcdHByb2Nlc3Nvci51c2UocmVoeXBlU2x1Zyk7XG5cdFx0fVxuXG5cdFx0aWYgKG9wdGlvbnMuaGlnaGxpZ2h0KSB7XG5cdFx0XHRwcm9jZXNzb3IudXNlKHJlaHlwZUhpZ2hsaWdodCk7XG5cdFx0fVxuXG5cdFx0cHJvY2Vzc29yLnVzZShyZWh5cGVTdHJpbmdpZnkpO1xuXG5cdFx0cmV0dXJuIHByb2Nlc3Nvcjtcblx0fVxufVxuXG5leHBvcnQge1dyaXRyLCB0eXBlIFdyaXRyT3B0aW9ucywgdHlwZSBSZW5kZXJPcHRpb25zfTtcblxuIl19
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "writr",
|
|
3
|
-
"version": "3.0
|
|
3
|
+
"version": "3.1.0",
|
|
4
4
|
"description": "Markdown Rendering Simplified",
|
|
5
5
|
"type": "module",
|
|
6
|
-
"exports": "./dist/
|
|
7
|
-
"types": "./dist/
|
|
6
|
+
"exports": "./dist/writr.js",
|
|
7
|
+
"types": "./dist/writr.d.ts",
|
|
8
8
|
"repository": "https://github.com/jaredwray/writr.git",
|
|
9
9
|
"author": "Jared Wray <me@jaredwray.com>",
|
|
10
10
|
"engines": {
|
|
@@ -33,7 +33,11 @@
|
|
|
33
33
|
"seo-friendly",
|
|
34
34
|
"markdown-anchors",
|
|
35
35
|
"remark",
|
|
36
|
-
"rehype"
|
|
36
|
+
"rehype",
|
|
37
|
+
"react",
|
|
38
|
+
"react-component",
|
|
39
|
+
"react-markdown",
|
|
40
|
+
"markdown-to-react"
|
|
37
41
|
],
|
|
38
42
|
"scripts": {
|
|
39
43
|
"clean": "rimraf ./dist ./coverage ./node_modules ./package-lock.json ./yarn.lock ./site/README.md ./site-output",
|
|
@@ -44,11 +48,15 @@
|
|
|
44
48
|
"prepare": "yarn run build"
|
|
45
49
|
},
|
|
46
50
|
"dependencies": {
|
|
51
|
+
"html-react-parser": "^5.1.8",
|
|
52
|
+
"react": "^18.2.0",
|
|
47
53
|
"rehype-highlight": "^7.0.0",
|
|
54
|
+
"rehype-katex": "^7.0.0",
|
|
48
55
|
"rehype-slug": "^6.0.0",
|
|
49
56
|
"rehype-stringify": "^10.0.0",
|
|
50
57
|
"remark-emoji": "^4.0.1",
|
|
51
58
|
"remark-gfm": "^4.0.0",
|
|
59
|
+
"remark-math": "^6.0.0",
|
|
52
60
|
"remark-parse": "^11.0.0",
|
|
53
61
|
"remark-rehype": "^11.1.0",
|
|
54
62
|
"remark-toc": "^9.0.0",
|
|
@@ -57,6 +65,7 @@
|
|
|
57
65
|
},
|
|
58
66
|
"devDependencies": {
|
|
59
67
|
"@types/node": "^20.10.5",
|
|
68
|
+
"@types/react": "^18.2.61",
|
|
60
69
|
"@vitest/coverage-v8": "^1.1.0",
|
|
61
70
|
"docula": "^0.4.0",
|
|
62
71
|
"rimraf": "^5.0.5",
|