writr 3.0.1 → 3.2.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 +49 -19
- package/dist/writr.d.ts +8 -5
- package/dist/writr.js +51 -9
- package/package.json +14 -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,15 @@
|
|
|
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
|
-
*
|
|
29
|
+
* MDX Support (remark-mdx).
|
|
27
30
|
|
|
28
31
|
## Getting Started
|
|
29
32
|
|
|
@@ -79,23 +82,30 @@ const description = await writr.description(markdown); // 'Hello World Test'
|
|
|
79
82
|
|
|
80
83
|
### `new Writr(options?: WritrOptions)`
|
|
81
84
|
|
|
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.
|
|
85
|
+
You can access the `WritrOptions` from the instance of Writr. Here is an example of WritrOptions.
|
|
94
86
|
|
|
95
87
|
```javascript
|
|
96
88
|
import { Writr, WritrOptions } from 'writr';
|
|
89
|
+
const writrOptions = {
|
|
90
|
+
openai: 'your-api-key', // openai api key (default: undefined)
|
|
91
|
+
renderOptions: {
|
|
92
|
+
emoji: true,
|
|
93
|
+
toc: true,
|
|
94
|
+
slug: true,
|
|
95
|
+
highlight: true,
|
|
96
|
+
gfm: true,
|
|
97
|
+
math: true,
|
|
98
|
+
mdx: true
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
const writr = new Writr(writrOptions);
|
|
97
102
|
```
|
|
98
103
|
|
|
104
|
+
### `.engine`
|
|
105
|
+
|
|
106
|
+
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.
|
|
107
|
+
|
|
108
|
+
|
|
99
109
|
### `.options`
|
|
100
110
|
|
|
101
111
|
Accessing the default options for this instance of Writr.
|
|
@@ -119,18 +129,38 @@ interface RenderOptions {
|
|
|
119
129
|
}
|
|
120
130
|
```
|
|
121
131
|
|
|
122
|
-
### `.
|
|
132
|
+
### `.renderSync(markdown: string, options?: RenderOptions): string`
|
|
123
133
|
|
|
124
|
-
Rendering markdown to HTML. the options are based on RenderOptions. Which you can access from the Writr instance.
|
|
134
|
+
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
135
|
|
|
136
|
+
```javascript
|
|
137
|
+
import { Writr } from 'writr';
|
|
138
|
+
const writr = new Writr();
|
|
139
|
+
const markdown = `# Hello World ::-):\n\n This is a test.`;
|
|
140
|
+
const html = writr.renderSync(markdown); // <h1>Hello World 🙂</h1><p>This is a test.</p>
|
|
141
|
+
```
|
|
126
142
|
|
|
127
|
-
###
|
|
143
|
+
### '.renderReact(markdown: string, options?: RenderOptions, reactOptions?: HTMLReactParserOptions): Promise<React.JSX.Element>'
|
|
128
144
|
|
|
129
|
-
|
|
145
|
+
Rendering markdown to React. The options are based on RenderOptions and now HTMLReactParserOptions from `html-react-parser`.
|
|
130
146
|
|
|
131
|
-
|
|
147
|
+
```javascript
|
|
148
|
+
import { Writr } from 'writr';
|
|
149
|
+
const writr = new Writr();
|
|
150
|
+
const markdown = `# Hello World ::-):\n\n This is a test.`;
|
|
151
|
+
const reactElement = await writr.renderReact(markdown); // Will return a React.JSX.Element
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### '.renderReactSync(markdown: string, options?: RenderOptions, reactOptions?: HTMLReactParserOptions): React.JSX.Element'
|
|
132
155
|
|
|
133
|
-
|
|
156
|
+
Rendering markdown to React. The options are based on RenderOptions and now HTMLReactParserOptions from `html-react-parser`.
|
|
157
|
+
|
|
158
|
+
```javascript
|
|
159
|
+
import { Writr } from 'writr';
|
|
160
|
+
const writr = new Writr();
|
|
161
|
+
const markdown = `# Hello World ::-):\n\n This is a test.`;
|
|
162
|
+
const reactElement = writr.renderReactSync(markdown); // Will return a React.JSX.Element
|
|
163
|
+
```
|
|
134
164
|
|
|
135
165
|
## Code of Conduct and Contributing
|
|
136
166
|
[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,8 @@ type RenderOptions = {
|
|
|
13
11
|
slug?: boolean;
|
|
14
12
|
highlight?: boolean;
|
|
15
13
|
gfm?: boolean;
|
|
14
|
+
math?: boolean;
|
|
15
|
+
mdx?: boolean;
|
|
16
16
|
};
|
|
17
17
|
declare class Writr {
|
|
18
18
|
engine: Processor<import("mdast").Root, import("mdast").Root, import("hast").Root, import("hast").Root, string>;
|
|
@@ -20,6 +20,9 @@ declare class Writr {
|
|
|
20
20
|
constructor(options?: WritrOptions);
|
|
21
21
|
get options(): WritrOptions;
|
|
22
22
|
render(markdown: string, options?: RenderOptions): Promise<string>;
|
|
23
|
+
renderSync(markdown: string, options?: RenderOptions): string;
|
|
24
|
+
renderReact(markdown: string, options?: RenderOptions, reactParseOptions?: HTMLReactParserOptions): Promise<string | React.JSX.Element | React.JSX.Element[]>;
|
|
25
|
+
renderReactSync(markdown: string, options?: RenderOptions, reactParseOptions?: HTMLReactParserOptions): string | React.JSX.Element | React.JSX.Element[];
|
|
23
26
|
private createProcessor;
|
|
24
27
|
}
|
|
25
28
|
export { Writr, type WritrOptions, type RenderOptions };
|
package/dist/writr.js
CHANGED
|
@@ -5,8 +5,12 @@ 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 remarkMDX from 'remark-mdx';
|
|
13
|
+
import parse from 'html-react-parser';
|
|
10
14
|
class Writr {
|
|
11
15
|
engine = unified()
|
|
12
16
|
.use(remarkParse)
|
|
@@ -15,21 +19,30 @@ class Writr {
|
|
|
15
19
|
.use(remarkEmoji) // Add emoji support
|
|
16
20
|
.use(remarkRehype) // Convert markdown to HTML
|
|
17
21
|
.use(rehypeSlug) // Add slugs to headings in HTML
|
|
22
|
+
.use(remarkMath) // Add math support
|
|
23
|
+
.use(rehypeKatex) // Add math support
|
|
18
24
|
.use(rehypeHighlight) // Apply syntax highlighting
|
|
25
|
+
.use(remarkMDX) // Add MDX support
|
|
19
26
|
.use(rehypeStringify); // Stringify HTML
|
|
20
27
|
_options = {
|
|
21
28
|
openai: undefined,
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
29
|
+
renderOptions: {
|
|
30
|
+
emoji: true,
|
|
31
|
+
toc: true,
|
|
32
|
+
slug: true,
|
|
33
|
+
highlight: true,
|
|
34
|
+
gfm: true,
|
|
35
|
+
math: true,
|
|
36
|
+
mdx: true,
|
|
37
|
+
},
|
|
27
38
|
};
|
|
28
39
|
constructor(options) {
|
|
29
40
|
if (options) {
|
|
30
41
|
this._options = { ...this._options, ...options };
|
|
31
|
-
|
|
32
|
-
|
|
42
|
+
if (this._options.renderOptions) {
|
|
43
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
44
|
+
this.engine = this.createProcessor(this._options.renderOptions);
|
|
45
|
+
}
|
|
33
46
|
}
|
|
34
47
|
}
|
|
35
48
|
get options() {
|
|
@@ -39,7 +52,7 @@ class Writr {
|
|
|
39
52
|
try {
|
|
40
53
|
let { engine } = this;
|
|
41
54
|
if (options) {
|
|
42
|
-
options = { ...this._options, ...options };
|
|
55
|
+
options = { ...this._options.renderOptions, ...options };
|
|
43
56
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
44
57
|
engine = this.createProcessor(options);
|
|
45
58
|
}
|
|
@@ -50,6 +63,29 @@ class Writr {
|
|
|
50
63
|
throw new Error(`Failed to render markdown: ${error.message}`);
|
|
51
64
|
}
|
|
52
65
|
}
|
|
66
|
+
renderSync(markdown, options) {
|
|
67
|
+
try {
|
|
68
|
+
let { engine } = this;
|
|
69
|
+
if (options) {
|
|
70
|
+
options = { ...this._options.renderOptions, ...options };
|
|
71
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
72
|
+
engine = this.createProcessor(options);
|
|
73
|
+
}
|
|
74
|
+
const file = engine.processSync(markdown);
|
|
75
|
+
return String(file);
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
throw new Error(`Failed to render markdown: ${error.message}`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
async renderReact(markdown, options, reactParseOptions) {
|
|
82
|
+
const html = await this.render(markdown, options);
|
|
83
|
+
return parse(html, reactParseOptions);
|
|
84
|
+
}
|
|
85
|
+
renderReactSync(markdown, options, reactParseOptions) {
|
|
86
|
+
const html = this.renderSync(markdown, options);
|
|
87
|
+
return parse(html, reactParseOptions);
|
|
88
|
+
}
|
|
53
89
|
createProcessor(options) {
|
|
54
90
|
const processor = unified().use(remarkParse);
|
|
55
91
|
if (options.gfm) {
|
|
@@ -68,9 +104,15 @@ class Writr {
|
|
|
68
104
|
if (options.highlight) {
|
|
69
105
|
processor.use(rehypeHighlight);
|
|
70
106
|
}
|
|
107
|
+
if (options.math) {
|
|
108
|
+
processor.use(remarkMath).use(rehypeKatex);
|
|
109
|
+
}
|
|
110
|
+
if (options.mdx) {
|
|
111
|
+
processor.use(remarkMDX);
|
|
112
|
+
}
|
|
71
113
|
processor.use(rehypeStringify);
|
|
72
114
|
return processor;
|
|
73
115
|
}
|
|
74
116
|
}
|
|
75
117
|
export { Writr };
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdHIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvd3JpdHIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE9BQU8sRUFBWSxNQUFNLFNBQVMsQ0FBQztBQUMzQyxPQUFPLFdBQVcsTUFBTSxjQUFjLENBQUM7QUFDdkMsT0FBTyxZQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sVUFBVSxNQUFNLGFBQWEsQ0FBQztBQUNyQyxPQUFPLGVBQWUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvQyxPQUFPLGVBQWUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvQyxPQUFPLFNBQVMsTUFBTSxZQUFZLENBQUM7QUFDbkMsT0FBTyxTQUFTLE1BQU0sWUFBWSxDQUFDO0FBQ25DLE9BQU8sV0FBVyxNQUFNLGNBQWMsQ0FBQztBQW1CdkMsTUFBTSxLQUFLO0lBQ0gsTUFBTSxHQUFHLE9BQU8sRUFBRTtTQUN2QixHQUFHLENBQUMsV0FBVyxDQUFDO1NBQ2hCLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQywrQkFBK0I7U0FDOUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLHdCQUF3QjtTQUN2QyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsb0JBQW9CO1NBQ3JDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQywyQkFBMkI7U0FDN0MsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLGdDQUFnQztTQUNoRCxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUMsNEJBQTRCO1NBQ2pELEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLGlCQUFpQjtJQUV4QixRQUFRLEdBQWlCO1FBQ3pDLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLEtBQUssRUFBRSxJQUFJO1FBQ1gsR0FBRyxFQUFFLElBQUk7UUFDVCxJQUFJLEVBQUUsSUFBSTtRQUNWLFNBQVMsRUFBRSxJQUFJO1FBQ2YsR0FBRyxFQUFFLElBQUk7S0FDVCxDQUFDO0lBRUYsWUFBWSxPQUFzQjtRQUNqQyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLE9BQU8sRUFBQyxDQUFDO1lBQy9DLG1FQUFtRTtZQUNuRSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25ELENBQUM7SUFDRixDQUFDO0lBRUQsSUFBVyxPQUFPO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN0QixDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFnQixFQUFFLE9BQXVCO1FBQ3JELElBQUksQ0FBQztZQUNKLElBQUksRUFBQyxNQUFNLEVBQUMsR0FBRyxJQUFJLENBQUM7WUFDcEIsSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDYixPQUFPLEdBQUcsRUFBQyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxPQUFPLEVBQUMsQ0FBQztnQkFDekMsbUVBQW1FO2dCQUNuRSxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN4QyxDQUFDO1lBRUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzVDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQStCLEtBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzNFLENBQUM7SUFDRixDQUFDO0lBRU8sZUFBZSxDQUFDLE9BQXFDO1FBQzVELE1BQU0sU0FBUyxHQUFHLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUU3QyxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNqQixTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzFCLENBQUM7UUFFRCxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNqQixTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxFQUFDLE9BQU8sRUFBRSx1QkFBdUIsRUFBQyxDQUFDLENBQUM7UUFDOUQsQ0FBQztRQUVELElBQUksT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ25CLFNBQVMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDNUIsQ0FBQztRQUVELFNBQVMsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFNUIsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbEIsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMzQixDQUFDO1FBRUQsSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDdkIsU0FBUyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNoQyxDQUFDO1FBRUQsU0FBUyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUUvQixPQUFPLFNBQVMsQ0FBQztJQUNsQixDQUFDO0NBQ0Q7QUFFRCxPQUFPLEVBQUMsS0FBSyxFQUF3QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt1bmlmaWVkLCBQcm9jZXNzb3J9IGZyb20gJ3VuaWZpZWQnO1xuaW1wb3J0IHJlbWFya1BhcnNlIGZyb20gJ3JlbWFyay1wYXJzZSc7XG5pbXBvcnQgcmVtYXJrUmVoeXBlIGZyb20gJ3JlbWFyay1yZWh5cGUnO1xuaW1wb3J0IHJlaHlwZVNsdWcgZnJvbSAncmVoeXBlLXNsdWcnO1xuaW1wb3J0IHJlaHlwZUhpZ2hsaWdodCBmcm9tICdyZWh5cGUtaGlnaGxpZ2h0JztcbmltcG9ydCByZWh5cGVTdHJpbmdpZnkgZnJvbSAncmVoeXBlLXN0cmluZ2lmeSc7XG5pbXBvcnQgcmVtYXJrVG9jIGZyb20gJ3JlbWFyay10b2MnO1xuaW1wb3J0IHJlbWFya0dmbSBmcm9tICdyZW1hcmstZ2ZtJztcbmltcG9ydCByZW1hcmtFbW9qaSBmcm9tICdyZW1hcmstZW1vamknO1xuXG50eXBlIFdyaXRyT3B0aW9ucyA9IHtcblx0b3BlbmFpPzogc3RyaW5nOyAvLyBPcGVuYWkgYXBpIGtleSAoZGVmYXVsdDogdW5kZWZpbmVkKVxuXHRlbW9qaT86IGJvb2xlYW47IC8vIEVtb2ppIHN1cHBvcnQgKGRlZmF1bHQ6IHRydWUpXG5cdHRvYz86IGJvb2xlYW47IC8vIFRhYmxlIG9mIGNvbnRlbnRzIGdlbmVyYXRpb24gKGRlZmF1bHQ6IHRydWUpXG5cdHNsdWc/OiBib29sZWFuOyAvLyBTbHVnIGdlbmVyYXRpb24gKGRlZmF1bHQ6IHRydWUpXG5cdGhpZ2hsaWdodD86IGJvb2xlYW47IC8vIENvZGUgaGlnaGxpZ2h0aW5nIChkZWZhdWx0OiB0cnVlKVxuXHRnZm0/OiBib29sZWFuOyAvLyBHaXRodWIgZmxhdm9yIG1hcmtkb3duIChkZWZhdWx0OiB0cnVlKVxufTtcblxudHlwZSBSZW5kZXJPcHRpb25zID0ge1xuXHRlbW9qaT86IGJvb2xlYW47IC8vIEVtb2ppIHN1cHBvcnQgKGRlZmF1bHQ6IHRydWUpXG5cdHRvYz86IGJvb2xlYW47IC8vIFRhYmxlIG9mIGNvbnRlbnRzIGdlbmVyYXRpb24gKGRlZmF1bHQ6IHRydWUpXG5cdHNsdWc/OiBib29sZWFuOyAvLyBTbHVnIGdlbmVyYXRpb24gKGRlZmF1bHQ6IHRydWUpXG5cdGhpZ2hsaWdodD86IGJvb2xlYW47IC8vIENvZGUgaGlnaGxpZ2h0aW5nIChkZWZhdWx0OiB0cnVlKVxuXHRnZm0/OiBib29sZWFuOyAvLyBHaXRodWIgZmxhdm9yIG1hcmtkb3duIChkZWZhdWx0OiB0cnVlKVxufTtcblxuY2xhc3MgV3JpdHIge1xuXHRwdWJsaWMgZW5naW5lID0gdW5pZmllZCgpXG5cdFx0LnVzZShyZW1hcmtQYXJzZSlcblx0XHQudXNlKHJlbWFya0dmbSkgLy8gVXNlIEdpdEh1YiBGbGF2b3JlZCBNYXJrZG93blxuXHRcdC51c2UocmVtYXJrVG9jKSAvLyBBZGQgdGFibGUgb2YgY29udGVudHNcblx0XHQudXNlKHJlbWFya0Vtb2ppKSAvLyBBZGQgZW1vamkgc3VwcG9ydFxuXHRcdC51c2UocmVtYXJrUmVoeXBlKSAvLyBDb252ZXJ0IG1hcmtkb3duIHRvIEhUTUxcblx0XHQudXNlKHJlaHlwZVNsdWcpIC8vIEFkZCBzbHVncyB0byBoZWFkaW5ncyBpbiBIVE1MXG5cdFx0LnVzZShyZWh5cGVIaWdobGlnaHQpIC8vIEFwcGx5IHN5bnRheCBoaWdobGlnaHRpbmdcblx0XHQudXNlKHJlaHlwZVN0cmluZ2lmeSk7IC8vIFN0cmluZ2lmeSBIVE1MXG5cblx0cHJpdmF0ZSByZWFkb25seSBfb3B0aW9uczogV3JpdHJPcHRpb25zID0ge1xuXHRcdG9wZW5haTogdW5kZWZpbmVkLFxuXHRcdGVtb2ppOiB0cnVlLFxuXHRcdHRvYzogdHJ1ZSxcblx0XHRzbHVnOiB0cnVlLFxuXHRcdGhpZ2hsaWdodDogdHJ1ZSxcblx0XHRnZm06IHRydWUsXG5cdH07XG5cblx0Y29uc3RydWN0b3Iob3B0aW9ucz86IFdyaXRyT3B0aW9ucykge1xuXHRcdGlmIChvcHRpb25zKSB7XG5cdFx0XHR0aGlzLl9vcHRpb25zID0gey4uLnRoaXMuX29wdGlvbnMsIC4uLm9wdGlvbnN9O1xuXHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtYXNzaWdubWVudFxuXHRcdFx0dGhpcy5lbmdpbmUgPSB0aGlzLmNyZWF0ZVByb2Nlc3Nvcih0aGlzLl9vcHRpb25zKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgZ2V0IG9wdGlvbnMoKTogV3JpdHJPcHRpb25zIHtcblx0XHRyZXR1cm4gdGhpcy5fb3B0aW9ucztcblx0fVxuXG5cdGFzeW5jIHJlbmRlcihtYXJrZG93bjogc3RyaW5nLCBvcHRpb25zPzogUmVuZGVyT3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPiB7XG5cdFx0dHJ5IHtcblx0XHRcdGxldCB7ZW5naW5lfSA9IHRoaXM7XG5cdFx0XHRpZiAob3B0aW9ucykge1xuXHRcdFx0XHRvcHRpb25zID0gey4uLnRoaXMuX29wdGlvbnMsIC4uLm9wdGlvbnN9O1xuXHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hc3NpZ25tZW50XG5cdFx0XHRcdGVuZ2luZSA9IHRoaXMuY3JlYXRlUHJvY2Vzc29yKG9wdGlvbnMpO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBmaWxlID0gYXdhaXQgZW5naW5lLnByb2Nlc3MobWFya2Rvd24pO1xuXHRcdFx0cmV0dXJuIFN0cmluZyhmaWxlKTtcblx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gcmVuZGVyIG1hcmtkb3duOiAkeyhlcnJvciBhcyBFcnJvcikubWVzc2FnZX1gKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGNyZWF0ZVByb2Nlc3NvcihvcHRpb25zOiBSZW5kZXJPcHRpb25zIHwgV3JpdHJPcHRpb25zKTogYW55IHtcblx0XHRjb25zdCBwcm9jZXNzb3IgPSB1bmlmaWVkKCkudXNlKHJlbWFya1BhcnNlKTtcblxuXHRcdGlmIChvcHRpb25zLmdmbSkge1xuXHRcdFx0cHJvY2Vzc29yLnVzZShyZW1hcmtHZm0pO1xuXHRcdH1cblxuXHRcdGlmIChvcHRpb25zLnRvYykge1xuXHRcdFx0cHJvY2Vzc29yLnVzZShyZW1hcmtUb2MsIHtoZWFkaW5nOiAndG9jfHRhYmxlIG9mIGNvbnRlbnRzJ30pO1xuXHRcdH1cblxuXHRcdGlmIChvcHRpb25zLmVtb2ppKSB7XG5cdFx0XHRwcm9jZXNzb3IudXNlKHJlbWFya0Vtb2ppKTtcblx0XHR9XG5cblx0XHRwcm9jZXNzb3IudXNlKHJlbWFya1JlaHlwZSk7XG5cblx0XHRpZiAob3B0aW9ucy5zbHVnKSB7XG5cdFx0XHRwcm9jZXNzb3IudXNlKHJlaHlwZVNsdWcpO1xuXHRcdH1cblxuXHRcdGlmIChvcHRpb25zLmhpZ2hsaWdodCkge1xuXHRcdFx0cHJvY2Vzc29yLnVzZShyZWh5cGVIaWdobGlnaHQpO1xuXHRcdH1cblxuXHRcdHByb2Nlc3Nvci51c2UocmVoeXBlU3RyaW5naWZ5KTtcblxuXHRcdHJldHVybiBwcm9jZXNzb3I7XG5cdH1cbn1cblxuZXhwb3J0IHtXcml0ciwgdHlwZSBXcml0ck9wdGlvbnMsIHR5cGUgUmVuZGVyT3B0aW9uc307XG5cbiJdfQ==
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdHIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvd3JpdHIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE9BQU8sRUFBWSxNQUFNLFNBQVMsQ0FBQztBQUMzQyxPQUFPLFdBQVcsTUFBTSxjQUFjLENBQUM7QUFDdkMsT0FBTyxZQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sVUFBVSxNQUFNLGFBQWEsQ0FBQztBQUNyQyxPQUFPLGVBQWUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvQyxPQUFPLGVBQWUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvQyxPQUFPLFNBQVMsTUFBTSxZQUFZLENBQUM7QUFDbkMsT0FBTyxVQUFVLE1BQU0sYUFBYSxDQUFDO0FBQ3JDLE9BQU8sV0FBVyxNQUFNLGNBQWMsQ0FBQztBQUN2QyxPQUFPLFNBQVMsTUFBTSxZQUFZLENBQUM7QUFDbkMsT0FBTyxXQUFXLE1BQU0sY0FBYyxDQUFDO0FBQ3ZDLE9BQU8sU0FBUyxNQUFNLFlBQVksQ0FBQztBQUNuQyxPQUFPLEtBQW9DLE1BQU0sbUJBQW1CLENBQUM7QUFrQnJFLE1BQU0sS0FBSztJQUNILE1BQU0sR0FBRyxPQUFPLEVBQUU7U0FDdkIsR0FBRyxDQUFDLFdBQVcsQ0FBQztTQUNoQixHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsK0JBQStCO1NBQzlDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyx3QkFBd0I7U0FDdkMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLG9CQUFvQjtTQUNyQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsMkJBQTJCO1NBQzdDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxnQ0FBZ0M7U0FDaEQsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLG1CQUFtQjtTQUNuQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsbUJBQW1CO1NBQ3BDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQyw0QkFBNEI7U0FDakQsR0FB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LENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzFCLENBQUM7UUFFRCxTQUFTLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRS9CLE9BQU8sU0FBUyxDQUFDO0lBQ2xCLENBQUM7Q0FDRDtBQUVELE9BQU8sRUFBQyxLQUFLLEVBQXdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3VuaWZpZWQsIFByb2Nlc3Nvcn0gZnJvbSAndW5pZmllZCc7XG5pbXBvcnQgcmVtYXJrUGFyc2UgZnJvbSAncmVtYXJrLXBhcnNlJztcbmltcG9ydCByZW1hcmtSZWh5cGUgZnJvbSAncmVtYXJrLXJlaHlwZSc7XG5pbXBvcnQgcmVoeXBlU2x1ZyBmcm9tICdyZWh5cGUtc2x1Zyc7XG5pbXBvcnQgcmVoeXBlSGlnaGxpZ2h0IGZyb20gJ3JlaHlwZS1oaWdobGlnaHQnO1xuaW1wb3J0IHJlaHlwZVN0cmluZ2lmeSBmcm9tICdyZWh5cGUtc3RyaW5naWZ5JztcbmltcG9ydCByZW1hcmtUb2MgZnJvbSAncmVtYXJrLXRvYyc7XG5pbXBvcnQgcmVtYXJrTWF0aCBmcm9tICdyZW1hcmstbWF0aCc7XG5pbXBvcnQgcmVoeXBlS2F0ZXggZnJvbSAncmVoeXBlLWthdGV4JztcbmltcG9ydCByZW1hcmtHZm0gZnJvbSAncmVtYXJrLWdmbSc7XG5pbXBvcnQgcmVtYXJrRW1vamkgZnJvbSAncmVtYXJrLWVtb2ppJztcbmltcG9ydCByZW1hcmtNRFggZnJvbSAncmVtYXJrLW1keCc7XG5pbXBvcnQgcGFyc2UsIHt0eXBlIEhUTUxSZWFjdFBhcnNlck9wdGlvbnN9IGZyb20gJ2h0bWwtcmVhY3QtcGFyc2VyJztcbmltcG9ydCB0eXBlIFJlYWN0IGZyb20gJ3JlYWN0JztcblxudHlwZSBXcml0ck9wdGlvbnMgPSB7XG5cdG9wZW5haT86IHN0cmluZzsgLy8gT3BlbmFpIGFwaSBrZXkgKGRlZmF1bHQ6IHVuZGVmaW5lZClcblx0cmVuZGVyT3B0aW9ucz86IFJlbmRlck9wdGlvbnM7IC8vIERlZmF1bHQgcmVuZGVyIG9wdGlvbnMgKGRlZmF1bHQ6IHVuZGVmaW5lZClcbn07XG5cbnR5cGUgUmVuZGVyT3B0aW9ucyA9IHtcblx0ZW1vamk/OiBib29sZWFuOyAvLyBFbW9qaSBzdXBwb3J0IChkZWZhdWx0OiB0cnVlKVxuXHR0b2M/OiBib29sZWFuOyAvLyBUYWJsZSBvZiBjb250ZW50cyBnZW5lcmF0aW9uIChkZWZhdWx0OiB0cnVlKVxuXHRzbHVnPzogYm9vbGVhbjsgLy8gU2x1ZyBnZW5lcmF0aW9uIChkZWZhdWx0OiB0cnVlKVxuXHRoaWdobGlnaHQ/OiBib29sZWFuOyAvLyBDb2RlIGhpZ2hsaWdodGluZyAoZGVmYXVsdDogdHJ1ZSlcblx0Z2ZtPzogYm9vbGVhbjsgLy8gR2l0aHViIGZsYXZvciBtYXJrZG93biAoZGVmYXVsdDogdHJ1ZSlcblx0bWF0aD86IGJvb2xlYW47IC8vIE1hdGggc3VwcG9ydCAoZGVmYXVsdDogdHJ1ZSlcblx0bWR4PzogYm9vbGVhbjsgLy8gTURYIHN1cHBvcnQgKGRlZmF1bHQ6IHRydWUpXG59O1xuXG5jbGFzcyBXcml0ciB7XG5cdHB1YmxpYyBlbmdpbmUgPSB1bmlmaWVkKClcblx0XHQudXNlKHJlbWFya1BhcnNlKVxuXHRcdC51c2UocmVtYXJrR2ZtKSAvLyBVc2UgR2l0SHViIEZsYXZvcmVkIE1hcmtkb3duXG5cdFx0LnVzZShyZW1hcmtUb2MpIC8vIEFkZCB0YWJsZSBvZiBjb250ZW50c1xuXHRcdC51c2UocmVtYXJrRW1vamkpIC8vIEFkZCBlbW9qaSBzdXBwb3J0XG5cdFx0LnVzZShyZW1hcmtSZWh5cGUpIC8vIENvbnZlcnQgbWFya2Rvd24gdG8gSFRNTFxuXHRcdC51c2UocmVoeXBlU2x1ZykgLy8gQWRkIHNsdWdzIHRvIGhlYWRpbmdzIGluIEhUTUxcblx0XHQudXNlKHJlbWFya01hdGgpIC8vIEFkZCBtYXRoIHN1cHBvcnRcblx0XHQudXNlKHJlaHlwZUthdGV4KSAvLyBBZGQgbWF0aCBzdXBwb3J0XG5cdFx0LnVzZShyZWh5cGVIaWdobGlnaHQpIC8vIEFwcGx5IHN5bnRheCBoaWdobGlnaHRpbmdcblx0XHQudXNlKHJlbWFya01EWCkgLy8gQWRkIE1EWCBzdXBwb3J0XG5cdFx0LnVzZShyZWh5cGVTdHJpbmdpZnkpOyAvLyBTdHJpbmdpZnkgSFRNTFxuXG5cdHByaXZhdGUgcmVhZG9ubHkgX29wdGlvbnM6IFdyaXRyT3B0aW9ucyA9IHtcblx0XHRvcGVuYWk6IHVuZGVmaW5lZCxcblx0XHRyZW5kZXJPcHRpb25zOiB7XG5cdFx0XHRlbW9qaTogdHJ1ZSxcblx0XHRcdHRvYzogdHJ1ZSxcblx0XHRcdHNsdWc6IHRydWUsXG5cdFx0XHRoaWdobGlnaHQ6IHRydWUsXG5cdFx0XHRnZm06IHRydWUsXG5cdFx0XHRtYXRoOiB0cnVlLFxuXHRcdFx0bWR4OiB0cnVlLFxuXHRcdH0sXG5cdH07XG5cblx0Y29uc3RydWN0b3Iob3B0aW9ucz86IFdyaXRyT3B0aW9ucykge1xuXHRcdGlmIChvcHRpb25zKSB7XG5cdFx0XHR0aGlzLl9vcHRpb25zID0gey4uLnRoaXMuX29wdGlvbnMsIC4uLm9wdGlvbnN9O1xuXHRcdFx0aWYgKHRoaXMuX29wdGlvbnMucmVuZGVyT3B0aW9ucykge1xuXHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hc3NpZ25tZW50XG5cdFx0XHRcdHRoaXMuZW5naW5lID0gdGhpcy5jcmVhdGVQcm9jZXNzb3IodGhpcy5fb3B0aW9ucy5yZW5kZXJPcHRpb25zKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgZ2V0IG9wdGlvbnMoKTogV3JpdHJPcHRpb25zIHtcblx0XHRyZXR1cm4gdGhpcy5fb3B0aW9ucztcblx0fVxuXG5cdGFzeW5jIHJlbmRlcihtYXJrZG93bjogc3RyaW5nLCBvcHRpb25zPzogUmVuZGVyT3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPiB7XG5cdFx0dHJ5IHtcblx0XHRcdGxldCB7ZW5naW5lfSA9IHRoaXM7XG5cdFx0XHRpZiAob3B0aW9ucykge1xuXHRcdFx0XHRvcHRpb25zID0gey4uLnRoaXMuX29wdGlvbnMucmVuZGVyT3B0aW9ucywgLi4ub3B0aW9uc307XG5cdFx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWFzc2lnbm1lbnRcblx0XHRcdFx0ZW5naW5lID0gdGhpcy5jcmVhdGVQcm9jZXNzb3Iob3B0aW9ucyk7XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IGZpbGUgPSBhd2FpdCBlbmdpbmUucHJvY2VzcyhtYXJrZG93bik7XG5cdFx0XHRyZXR1cm4gU3RyaW5nKGZpbGUpO1xuXHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byByZW5kZXIgbWFya2Rvd246ICR7KGVycm9yIGFzIEVycm9yKS5tZXNzYWdlfWApO1xuXHRcdH1cblx0fVxuXG5cdHJlbmRlclN5bmMobWFya2Rvd246IHN0cmluZywgb3B0aW9ucz86IFJlbmRlck9wdGlvbnMpOiBzdHJpbmcge1xuXHRcdHRyeSB7XG5cdFx0XHRsZXQge2VuZ2luZX0gPSB0aGlzO1xuXHRcdFx0aWYgKG9wdGlvbnMpIHtcblx0XHRcdFx0b3B0aW9ucyA9IHsuLi50aGlzLl9vcHRpb25zLnJlbmRlck9wdGlvbnMsIC4uLm9wdGlvbnN9O1xuXHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hc3NpZ25tZW50XG5cdFx0XHRcdGVuZ2luZSA9IHRoaXMuY3JlYXRlUHJvY2Vzc29yKG9wdGlvbnMpO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBmaWxlID0gZW5naW5lLnByb2Nlc3NTeW5jKG1hcmtkb3duKTtcblx0XHRcdHJldHVybiBTdHJpbmcoZmlsZSk7XG5cdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHJlbmRlciBtYXJrZG93bjogJHsoZXJyb3IgYXMgRXJyb3IpLm1lc3NhZ2V9YCk7XG5cdFx0fVxuXHR9XG5cblx0YXN5bmMgcmVuZGVyUmVhY3QobWFya2Rvd246IHN0cmluZywgb3B0aW9ucz86IFJlbmRlck9wdGlvbnMsIHJlYWN0UGFyc2VPcHRpb25zPzogSFRNTFJlYWN0UGFyc2VyT3B0aW9ucyk6IFByb21pc2U8c3RyaW5nIHwgUmVhY3QuSlNYLkVsZW1lbnQgfCBSZWFjdC5KU1guRWxlbWVudFtdPiB7XG5cdFx0Y29uc3QgaHRtbCA9IGF3YWl0IHRoaXMucmVuZGVyKG1hcmtkb3duLCBvcHRpb25zKTtcblxuXHRcdHJldHVybiBwYXJzZShodG1sLCByZWFjdFBhcnNlT3B0aW9ucyk7XG5cdH1cblxuXHRyZW5kZXJSZWFjdFN5bmMobWFya2Rvd246IHN0cmluZywgb3B0aW9ucz86IFJlbmRlck9wdGlvbnMsIHJlYWN0UGFyc2VPcHRpb25zPzogSFRNTFJlYWN0UGFyc2VyT3B0aW9ucyk6IHN0cmluZyB8IFJlYWN0LkpTWC5FbGVtZW50IHwgUmVhY3QuSlNYLkVsZW1lbnRbXSB7XG5cdFx0Y29uc3QgaHRtbCA9IHRoaXMucmVuZGVyU3luYyhtYXJrZG93biwgb3B0aW9ucyk7XG5cdFx0cmV0dXJuIHBhcnNlKGh0bWwsIHJlYWN0UGFyc2VPcHRpb25zKTtcblx0fVxuXG5cdHByaXZhdGUgY3JlYXRlUHJvY2Vzc29yKG9wdGlvbnM6IFJlbmRlck9wdGlvbnMpOiBhbnkge1xuXHRcdGNvbnN0IHByb2Nlc3NvciA9IHVuaWZpZWQoKS51c2UocmVtYXJrUGFyc2UpO1xuXG5cdFx0aWYgKG9wdGlvbnMuZ2ZtKSB7XG5cdFx0XHRwcm9jZXNzb3IudXNlKHJlbWFya0dmbSk7XG5cdFx0fVxuXG5cdFx0aWYgKG9wdGlvbnMudG9jKSB7XG5cdFx0XHRwcm9jZXNzb3IudXNlKHJlbWFya1RvYywge2hlYWRpbmc6ICd0b2N8dGFibGUgb2YgY29udGVudHMnfSk7XG5cdFx0fVxuXG5cdFx0aWYgKG9wdGlvbnMuZW1vamkpIHtcblx0XHRcdHByb2Nlc3Nvci51c2UocmVtYXJrRW1vamkpO1xuXHRcdH1cblxuXHRcdHByb2Nlc3Nvci51c2UocmVtYXJrUmVoeXBlKTtcblxuXHRcdGlmIChvcHRpb25zLnNsdWcpIHtcblx0XHRcdHByb2Nlc3Nvci51c2UocmVoeXBlU2x1Zyk7XG5cdFx0fVxuXG5cdFx0aWYgKG9wdGlvbnMuaGlnaGxpZ2h0KSB7XG5cdFx0XHRwcm9jZXNzb3IudXNlKHJlaHlwZUhpZ2hsaWdodCk7XG5cdFx0fVxuXG5cdFx0aWYgKG9wdGlvbnMubWF0aCkge1xuXHRcdFx0cHJvY2Vzc29yLnVzZShyZW1hcmtNYXRoKS51c2UocmVoeXBlS2F0ZXgpO1xuXHRcdH1cblxuXHRcdGlmIChvcHRpb25zLm1keCkge1xuXHRcdFx0cHJvY2Vzc29yLnVzZShyZW1hcmtNRFgpO1xuXHRcdH1cblxuXHRcdHByb2Nlc3Nvci51c2UocmVoeXBlU3RyaW5naWZ5KTtcblxuXHRcdHJldHVybiBwcm9jZXNzb3I7XG5cdH1cbn1cblxuZXhwb3J0IHtXcml0ciwgdHlwZSBXcml0ck9wdGlvbnMsIHR5cGUgUmVuZGVyT3B0aW9uc307XG5cbiJdfQ==
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "writr",
|
|
3
|
-
"version": "3.0
|
|
3
|
+
"version": "3.2.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,16 @@
|
|
|
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",
|
|
60
|
+
"remark-mdx": "^3.0.1",
|
|
52
61
|
"remark-parse": "^11.0.0",
|
|
53
62
|
"remark-rehype": "^11.1.0",
|
|
54
63
|
"remark-toc": "^9.0.0",
|
|
@@ -57,6 +66,7 @@
|
|
|
57
66
|
},
|
|
58
67
|
"devDependencies": {
|
|
59
68
|
"@types/node": "^20.10.5",
|
|
69
|
+
"@types/react": "^18.2.61",
|
|
60
70
|
"@vitest/coverage-v8": "^1.1.0",
|
|
61
71
|
"docula": "^0.4.0",
|
|
62
72
|
"rimraf": "^5.0.5",
|