react-native-nitro-markdown 0.5.5 → 0.5.6

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 CHANGED
@@ -1,9 +1,14 @@
1
+ # react-native-nitro-markdown
2
+
3
+ [![npm](https://img.shields.io/badge/npm-v0.5.6-orange?style=flat-square)](https://www.npmjs.com/package/react-native-nitro-markdown)
4
+ [![license](https://img.shields.io/badge/license-MIT-blue?style=flat-square)](./LICENSE)
5
+ [![react-native](https://img.shields.io/badge/react--native-%3E%3D0.75-1677a4?style=flat-square)](https://reactnative.dev/)
6
+ [![nitro-modules](https://img.shields.io/badge/nitro--modules-%3E%3D0.35.5-black?style=flat-square)](https://github.com/mrousavy/nitro)
7
+
1
8
  <p align="center">
2
- <img src="./readme/demo.gif" alt="react-native-nitro-markdown demo" width="400" />
9
+ <img src="https://raw.githubusercontent.com/JoaoPauloCMarra/react-native-nitro-markdown/main/readme/demo.gif" alt="react-native-nitro-markdown demo" width="400" />
3
10
  </p>
4
11
 
5
- # react-native-nitro-markdown
6
-
7
12
  Native Markdown parsing and rendering for React Native, powered by [md4c](https://github.com/mity/md4c) (C++) through [Nitro Modules](https://github.com/mrousavy/nitro) (JSI).
8
13
 
9
14
  ## Features
@@ -24,7 +29,7 @@ Native Markdown parsing and rendering for React Native, powered by [md4c](https:
24
29
  | Dependency | Version |
25
30
  |---|---|
26
31
  | React Native | `>=0.75.0` |
27
- | react-native-nitro-modules | `>=0.35.4` |
32
+ | react-native-nitro-modules | `>=0.35.5` |
28
33
  | react-native-mathjax-svg *(optional)* | `>=0.9.0` |
29
34
  | react-native-svg *(optional, for math)* | `>=13.0.0` |
30
35
 
@@ -29,6 +29,16 @@ var _reactNativeNitroModules = require("react-native-nitro-modules");
29
29
  * Each node has a type and optional properties depending on the node type.
30
30
  */
31
31
 
32
+ const createEmptyDocument = () => ({
33
+ type: "document",
34
+ children: []
35
+ });
36
+ function reportNativeParserFailure(methodName, error) {
37
+ if (__DEV__) {
38
+ // eslint-disable-next-line no-console
39
+ console.error(`[NitroMarkdown] ${methodName}: native parser failed.`, error);
40
+ }
41
+ }
32
42
  let MarkdownParserModule = exports.MarkdownParserModule = null;
33
43
  try {
34
44
  exports.MarkdownParserModule = MarkdownParserModule = _reactNativeNitroModules.NitroModules.createHybridObject("MarkdownParser");
@@ -56,17 +66,19 @@ function parseMarkdown(text, options) {
56
66
  return parseMarkdownWithOptions(text, options);
57
67
  }
58
68
  if (MarkdownParserModule != null && typeof MarkdownParserModule.parse === "function") {
59
- const jsonStr = MarkdownParserModule.parse(text);
60
- return JSON.parse(jsonStr);
69
+ try {
70
+ const jsonStr = MarkdownParserModule.parse(text);
71
+ return JSON.parse(jsonStr);
72
+ } catch (error) {
73
+ reportNativeParserFailure("parseMarkdown", error);
74
+ return createEmptyDocument();
75
+ }
61
76
  }
62
77
  if (__DEV__) {
63
78
  // eslint-disable-next-line no-console
64
79
  console.error("[NitroMarkdown] parseMarkdown: native parser unavailable — check installation.");
65
80
  }
66
- return {
67
- type: "document",
68
- children: []
69
- };
81
+ return createEmptyDocument();
70
82
  }
71
83
 
72
84
  /**
@@ -77,17 +89,19 @@ function parseMarkdown(text, options) {
77
89
  */
78
90
  function parseMarkdownWithOptions(text, options) {
79
91
  if (MarkdownParserModule != null && typeof MarkdownParserModule.parseWithOptions === "function") {
80
- const jsonStr = MarkdownParserModule.parseWithOptions(text, options);
81
- return JSON.parse(jsonStr);
92
+ try {
93
+ const jsonStr = MarkdownParserModule.parseWithOptions(text, options);
94
+ return JSON.parse(jsonStr);
95
+ } catch (error) {
96
+ reportNativeParserFailure("parseMarkdownWithOptions", error);
97
+ return createEmptyDocument();
98
+ }
82
99
  }
83
100
  if (__DEV__) {
84
101
  // eslint-disable-next-line no-console
85
102
  console.error("[NitroMarkdown] parseMarkdownWithOptions: native parser unavailable — check installation.");
86
103
  }
87
- return {
88
- type: "document",
89
- children: []
90
- };
104
+ return createEmptyDocument();
91
105
  }
92
106
 
93
107
  /**
@@ -96,7 +110,11 @@ function parseMarkdownWithOptions(text, options) {
96
110
  */
97
111
  function extractPlainText(text) {
98
112
  if (MarkdownParserModule != null && typeof MarkdownParserModule.extractPlainText === "function") {
99
- return MarkdownParserModule.extractPlainText(text);
113
+ try {
114
+ return MarkdownParserModule.extractPlainText(text);
115
+ } catch (error) {
116
+ reportNativeParserFailure("extractPlainText", error);
117
+ }
100
118
  }
101
119
  return getFlattenedText(parseMarkdown(text));
102
120
  }
@@ -106,7 +124,11 @@ function extractPlainText(text) {
106
124
  */
107
125
  function extractPlainTextWithOptions(text, options) {
108
126
  if (MarkdownParserModule != null && typeof MarkdownParserModule.extractPlainTextWithOptions === "function") {
109
- return MarkdownParserModule.extractPlainTextWithOptions(text, options);
127
+ try {
128
+ return MarkdownParserModule.extractPlainTextWithOptions(text, options);
129
+ } catch (error) {
130
+ reportNativeParserFailure("extractPlainTextWithOptions", error);
131
+ }
110
132
  }
111
133
  return getFlattenedText(parseMarkdownWithOptions(text, options));
112
134
  }
@@ -130,7 +152,8 @@ const getFlattenedText = node => {
130
152
  return node.content ?? "";
131
153
  }
132
154
  if (node.type === "code_block" || node.type === "math_block" || node.type === "html_block") {
133
- return (node.content ?? "").trim() + "\n\n";
155
+ const blockContent = node.content ?? node.children?.map(getFlattenedText).join("") ?? "";
156
+ return blockContent.trim() + "\n\n";
134
157
  }
135
158
  if (node.type === "line_break") return "\n";
136
159
  if (node.type === "soft_break") return " ";
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNativeNitroModules","require","MarkdownParserModule","exports","NitroModules","createHybridObject","e","__DEV__","console","error","parseMarkdown","text","options","parseMarkdownWithOptions","parse","jsonStr","JSON","type","children","parseWithOptions","extractPlainText","getFlattenedText","extractPlainTextWithOptions","getTextContent","node","content","map","join","trim","alt","title","childrenText","stripSourceOffsets","beg","_beg","end","_end","rest"],"sourceRoot":"../../src","sources":["headless.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNativeNitroModules","require","createEmptyDocument","type","children","reportNativeParserFailure","methodName","error","__DEV__","console","MarkdownParserModule","exports","NitroModules","createHybridObject","e","parseMarkdown","text","options","parseMarkdownWithOptions","parse","jsonStr","JSON","parseWithOptions","extractPlainText","getFlattenedText","extractPlainTextWithOptions","getTextContent","node","content","map","join","blockContent","trim","alt","title","childrenText","stripSourceOffsets","beg","_beg","end","_end","rest"],"sourceRoot":"../../src","sources":["headless.ts"],"mappings":"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","ignoreList":[]}
@@ -19,6 +19,16 @@ import { NitroModules } from "react-native-nitro-modules";
19
19
  * Each node has a type and optional properties depending on the node type.
20
20
  */
21
21
 
22
+ const createEmptyDocument = () => ({
23
+ type: "document",
24
+ children: []
25
+ });
26
+ function reportNativeParserFailure(methodName, error) {
27
+ if (__DEV__) {
28
+ // eslint-disable-next-line no-console
29
+ console.error(`[NitroMarkdown] ${methodName}: native parser failed.`, error);
30
+ }
31
+ }
22
32
  let MarkdownParserModule = null;
23
33
  try {
24
34
  MarkdownParserModule = NitroModules.createHybridObject("MarkdownParser");
@@ -48,17 +58,19 @@ export function parseMarkdown(text, options) {
48
58
  return parseMarkdownWithOptions(text, options);
49
59
  }
50
60
  if (MarkdownParserModule != null && typeof MarkdownParserModule.parse === "function") {
51
- const jsonStr = MarkdownParserModule.parse(text);
52
- return JSON.parse(jsonStr);
61
+ try {
62
+ const jsonStr = MarkdownParserModule.parse(text);
63
+ return JSON.parse(jsonStr);
64
+ } catch (error) {
65
+ reportNativeParserFailure("parseMarkdown", error);
66
+ return createEmptyDocument();
67
+ }
53
68
  }
54
69
  if (__DEV__) {
55
70
  // eslint-disable-next-line no-console
56
71
  console.error("[NitroMarkdown] parseMarkdown: native parser unavailable — check installation.");
57
72
  }
58
- return {
59
- type: "document",
60
- children: []
61
- };
73
+ return createEmptyDocument();
62
74
  }
63
75
 
64
76
  /**
@@ -69,17 +81,19 @@ export function parseMarkdown(text, options) {
69
81
  */
70
82
  export function parseMarkdownWithOptions(text, options) {
71
83
  if (MarkdownParserModule != null && typeof MarkdownParserModule.parseWithOptions === "function") {
72
- const jsonStr = MarkdownParserModule.parseWithOptions(text, options);
73
- return JSON.parse(jsonStr);
84
+ try {
85
+ const jsonStr = MarkdownParserModule.parseWithOptions(text, options);
86
+ return JSON.parse(jsonStr);
87
+ } catch (error) {
88
+ reportNativeParserFailure("parseMarkdownWithOptions", error);
89
+ return createEmptyDocument();
90
+ }
74
91
  }
75
92
  if (__DEV__) {
76
93
  // eslint-disable-next-line no-console
77
94
  console.error("[NitroMarkdown] parseMarkdownWithOptions: native parser unavailable — check installation.");
78
95
  }
79
- return {
80
- type: "document",
81
- children: []
82
- };
96
+ return createEmptyDocument();
83
97
  }
84
98
 
85
99
  /**
@@ -88,7 +102,11 @@ export function parseMarkdownWithOptions(text, options) {
88
102
  */
89
103
  export function extractPlainText(text) {
90
104
  if (MarkdownParserModule != null && typeof MarkdownParserModule.extractPlainText === "function") {
91
- return MarkdownParserModule.extractPlainText(text);
105
+ try {
106
+ return MarkdownParserModule.extractPlainText(text);
107
+ } catch (error) {
108
+ reportNativeParserFailure("extractPlainText", error);
109
+ }
92
110
  }
93
111
  return getFlattenedText(parseMarkdown(text));
94
112
  }
@@ -98,7 +116,11 @@ export function extractPlainText(text) {
98
116
  */
99
117
  export function extractPlainTextWithOptions(text, options) {
100
118
  if (MarkdownParserModule != null && typeof MarkdownParserModule.extractPlainTextWithOptions === "function") {
101
- return MarkdownParserModule.extractPlainTextWithOptions(text, options);
119
+ try {
120
+ return MarkdownParserModule.extractPlainTextWithOptions(text, options);
121
+ } catch (error) {
122
+ reportNativeParserFailure("extractPlainTextWithOptions", error);
123
+ }
102
124
  }
103
125
  return getFlattenedText(parseMarkdownWithOptions(text, options));
104
126
  }
@@ -121,7 +143,8 @@ export const getFlattenedText = node => {
121
143
  return node.content ?? "";
122
144
  }
123
145
  if (node.type === "code_block" || node.type === "math_block" || node.type === "html_block") {
124
- return (node.content ?? "").trim() + "\n\n";
146
+ const blockContent = node.content ?? node.children?.map(getFlattenedText).join("") ?? "";
147
+ return blockContent.trim() + "\n\n";
125
148
  }
126
149
  if (node.type === "line_break") return "\n";
127
150
  if (node.type === "soft_break") return " ";
@@ -1 +1 @@
1
- {"version":3,"names":["NitroModules","MarkdownParserModule","createHybridObject","e","__DEV__","console","error","parseMarkdown","text","options","parseMarkdownWithOptions","parse","jsonStr","JSON","type","children","parseWithOptions","extractPlainText","getFlattenedText","extractPlainTextWithOptions","getTextContent","node","content","map","join","trim","alt","title","childrenText","stripSourceOffsets","beg","_beg","end","_end","rest"],"sourceRoot":"../../src","sources":["headless.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["NitroModules","createEmptyDocument","type","children","reportNativeParserFailure","methodName","error","__DEV__","console","MarkdownParserModule","createHybridObject","e","parseMarkdown","text","options","parseMarkdownWithOptions","parse","jsonStr","JSON","parseWithOptions","extractPlainText","getFlattenedText","extractPlainTextWithOptions","getTextContent","node","content","map","join","blockContent","trim","alt","title","childrenText","stripSourceOffsets","beg","_beg","end","_end","rest"],"sourceRoot":"../../src","sources":["headless.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,YAAY,QAAQ,4BAA4B;;AAKzD;AACA;AACA;AACA;;AA6DA,MAAMC,mBAAmB,GAAGA,CAAA,MAAqB;EAC/CC,IAAI,EAAE,UAAU;EAChBC,QAAQ,EAAE;AACZ,CAAC,CAAC;AAEF,SAASC,yBAAyBA,CAACC,UAAkB,EAAEC,KAAe,EAAQ;EAC5E,IAAIC,OAAO,EAAE;IACX;IACAC,OAAO,CAACF,KAAK,CACX,mBAAmBD,UAAU,yBAAyB,EACtDC,KACF,CAAC;EACH;AACF;AAEA,IAAIG,oBAA2C,GAAG,IAAI;AACtD,IAAI;EACFA,oBAAoB,GAClBT,YAAY,CAACU,kBAAkB,CAAiB,gBAAgB,CAAC;AACrE,CAAC,CAAC,OAAOC,CAAC,EAAE;EACV,IAAIJ,OAAO,EAAE;IACX;IACAC,OAAO,CAACF,KAAK,CAAC,yDAAyD,EAAEK,CAAC,CAAC;EAC7E;AACF;AACA,SAASF,oBAAoB;;AAE7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAKA,OAAO,SAASG,aAAaA,CAC3BC,IAAY,EACZC,OAAuB,EACT;EACd,IAAIA,OAAO,IAAI,IAAI,EAAE;IACnB,OAAOC,wBAAwB,CAACF,IAAI,EAAEC,OAAO,CAAC;EAChD;EACA,IACEL,oBAAoB,IAAI,IAAI,IAC5B,OAAOA,oBAAoB,CAACO,KAAK,KAAK,UAAU,EAChD;IACA,IAAI;MACF,MAAMC,OAAO,GAAGR,oBAAoB,CAACO,KAAK,CAACH,IAAI,CAAC;MAChD,OAAOK,IAAI,CAACF,KAAK,CAACC,OAAO,CAAC;IAC5B,CAAC,CAAC,OAAOX,KAAK,EAAE;MACdF,yBAAyB,CAAC,eAAe,EAAEE,KAAK,CAAC;MACjD,OAAOL,mBAAmB,CAAC,CAAC;IAC9B;EACF;EAEA,IAAIM,OAAO,EAAE;IACX;IACAC,OAAO,CAACF,KAAK,CACX,gFACF,CAAC;EACH;EACA,OAAOL,mBAAmB,CAAC,CAAC;AAC9B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASc,wBAAwBA,CACtCF,IAAY,EACZC,OAAsB,EACR;EACd,IACEL,oBAAoB,IAAI,IAAI,IAC5B,OAAOA,oBAAoB,CAACU,gBAAgB,KAAK,UAAU,EAC3D;IACA,IAAI;MACF,MAAMF,OAAO,GAAGR,oBAAoB,CAACU,gBAAgB,CAACN,IAAI,EAAEC,OAAO,CAAC;MACpE,OAAOI,IAAI,CAACF,KAAK,CAACC,OAAO,CAAC;IAC5B,CAAC,CAAC,OAAOX,KAAK,EAAE;MACdF,yBAAyB,CAAC,0BAA0B,EAAEE,KAAK,CAAC;MAC5D,OAAOL,mBAAmB,CAAC,CAAC;IAC9B;EACF;EAEA,IAAIM,OAAO,EAAE;IACX;IACAC,OAAO,CAACF,KAAK,CACX,2FACF,CAAC;EACH;EACA,OAAOL,mBAAmB,CAAC,CAAC;AAC9B;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASmB,gBAAgBA,CAACP,IAAY,EAAU;EACrD,IACEJ,oBAAoB,IAAI,IAAI,IAC5B,OAAOA,oBAAoB,CAACW,gBAAgB,KAAK,UAAU,EAC3D;IACA,IAAI;MACF,OAAOX,oBAAoB,CAACW,gBAAgB,CAACP,IAAI,CAAC;IACpD,CAAC,CAAC,OAAOP,KAAK,EAAE;MACdF,yBAAyB,CAAC,kBAAkB,EAAEE,KAAK,CAAC;IACtD;EACF;EAEA,OAAOe,gBAAgB,CAACT,aAAa,CAACC,IAAI,CAAC,CAAC;AAC9C;;AAEA;AACA;AACA;AACA,OAAO,SAASS,2BAA2BA,CACzCT,IAAY,EACZC,OAAsB,EACd;EACR,IACEL,oBAAoB,IAAI,IAAI,IAC5B,OAAOA,oBAAoB,CAACa,2BAA2B,KAAK,UAAU,EACtE;IACA,IAAI;MACF,OAAOb,oBAAoB,CAACa,2BAA2B,CAACT,IAAI,EAAEC,OAAO,CAAC;IACxE,CAAC,CAAC,OAAOR,KAAK,EAAE;MACdF,yBAAyB,CAAC,6BAA6B,EAAEE,KAAK,CAAC;IACjE;EACF;EAEA,OAAOe,gBAAgB,CAACN,wBAAwB,CAACF,IAAI,EAAEC,OAAO,CAAC,CAAC;AAClE;AAIA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMS,cAAc,GAAIC,IAAkB,IAAa;EAC5D,IAAIA,IAAI,CAACC,OAAO,EAAE,OAAOD,IAAI,CAACC,OAAO;EACrC,OAAOD,IAAI,CAACrB,QAAQ,EAAEuB,GAAG,CAACH,cAAc,CAAC,CAACI,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE;AAC1D,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMN,gBAAgB,GAAIG,IAAkB,IAAa;EAC9D,IACEA,IAAI,CAACtB,IAAI,KAAK,MAAM,IACpBsB,IAAI,CAACtB,IAAI,KAAK,aAAa,IAC3BsB,IAAI,CAACtB,IAAI,KAAK,aAAa,IAC3BsB,IAAI,CAACtB,IAAI,KAAK,aAAa,EAC3B;IACA,OAAOsB,IAAI,CAACC,OAAO,IAAI,EAAE;EAC3B;EAEA,IACED,IAAI,CAACtB,IAAI,KAAK,YAAY,IAC1BsB,IAAI,CAACtB,IAAI,KAAK,YAAY,IAC1BsB,IAAI,CAACtB,IAAI,KAAK,YAAY,EAC1B;IACA,MAAM0B,YAAY,GAChBJ,IAAI,CAACC,OAAO,IAAID,IAAI,CAACrB,QAAQ,EAAEuB,GAAG,CAACL,gBAAgB,CAAC,CAACM,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE;IACrE,OAAOC,YAAY,CAACC,IAAI,CAAC,CAAC,GAAG,MAAM;EACrC;EAEA,IAAIL,IAAI,CAACtB,IAAI,KAAK,YAAY,EAAE,OAAO,IAAI;EAC3C,IAAIsB,IAAI,CAACtB,IAAI,KAAK,YAAY,EAAE,OAAO,GAAG;EAC1C,IAAIsB,IAAI,CAACtB,IAAI,KAAK,iBAAiB,EAAE,OAAO,SAAS;EAErD,IAAIsB,IAAI,CAACtB,IAAI,KAAK,OAAO,EAAE;IACzB,OAAOsB,IAAI,CAACM,GAAG,IAAIN,IAAI,CAACO,KAAK,IAAI,EAAE;EACrC;EAEA,MAAMC,YAAY,GAAGR,IAAI,CAACrB,QAAQ,EAAEuB,GAAG,CAACL,gBAAgB,CAAC,CAACM,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE;EAExE,QAAQH,IAAI,CAACtB,IAAI;IACf,KAAK,WAAW;IAChB,KAAK,SAAS;IACd,KAAK,YAAY;MACf,OAAO8B,YAAY,CAACH,IAAI,CAAC,CAAC,GAAG,MAAM;IAErC,KAAK,WAAW;IAChB,KAAK,gBAAgB;MACnB,OAAOG,YAAY,CAACH,IAAI,CAAC,CAAC,GAAG,IAAI;IAEnC,KAAK,MAAM;MACT,OAAOG,YAAY,GAAG,IAAI;IAE5B,KAAK,WAAW;MACd,OAAOA,YAAY,GAAG,IAAI;IAE5B,KAAK,YAAY;MACf,OAAOA,YAAY,GAAG,KAAK;IAE7B;MACE,OAAOA,YAAY;EACvB;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA,OAAO,SAASC,kBAAkBA,CAACT,IAAkB,EAAgB;EACnE,MAAM;IAAEU,GAAG,EAAEC,IAAI;IAAEC,GAAG,EAAEC,IAAI;IAAElC,QAAQ;IAAE,GAAGmC;EAAK,CAAC,GAAGd,IAAI;EACxD,OAAO;IACL,GAAGc,IAAI;IACP,IAAInC,QAAQ,GAAG;MAAEA,QAAQ,EAAEA,QAAQ,CAACuB,GAAG,CAACO,kBAAkB;IAAE,CAAC,GAAG,CAAC,CAAC;EACpE,CAAC;AACH","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"headless.d.ts","sourceRoot":"","sources":["../../../src/headless.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtE,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,gGAAgG;IAChG,IAAI,EACA,UAAU,GACV,SAAS,GACT,WAAW,GACX,MAAM,GACN,MAAM,GACN,QAAQ,GACR,eAAe,GACf,MAAM,GACN,OAAO,GACP,aAAa,GACb,YAAY,GACZ,YAAY,GACZ,iBAAiB,GACjB,YAAY,GACZ,YAAY,GACZ,OAAO,GACP,YAAY,GACZ,YAAY,GACZ,WAAW,GACX,YAAY,GACZ,MAAM,GACN,WAAW,GACX,gBAAgB,GAChB,aAAa,GACb,YAAY,GACZ,YAAY,GACZ,aAAa,CAAC;IAClB,sDAAsD;IACtD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yDAAyD;IACzD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sFAAsF;IACtF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oFAAoF;IACpF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,uFAAuF;IACvF,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;CAC3B,CAAC;AAEF,QAAA,IAAI,oBAAoB,EAAE,cAAc,GAAG,IAAW,CAAC;AAUvD,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAEhC;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAAC;AAC1D;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,GACrB,YAAY,CAAC;AAyBhB;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,GACrB,YAAY,CAgBd;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CASrD;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,GACrB,MAAM,CASR;AAED,YAAY,EAAE,cAAc,EAAE,CAAC;AAE/B;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GAAI,MAAM,YAAY,KAAG,MAGnD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,MAAM,YAAY,KAAG,MAkDrD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG,YAAY,CAMnE"}
1
+ {"version":3,"file":"headless.d.ts","sourceRoot":"","sources":["../../../src/headless.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtE,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,gGAAgG;IAChG,IAAI,EACA,UAAU,GACV,SAAS,GACT,WAAW,GACX,MAAM,GACN,MAAM,GACN,QAAQ,GACR,eAAe,GACf,MAAM,GACN,OAAO,GACP,aAAa,GACb,YAAY,GACZ,YAAY,GACZ,iBAAiB,GACjB,YAAY,GACZ,YAAY,GACZ,OAAO,GACP,YAAY,GACZ,YAAY,GACZ,WAAW,GACX,YAAY,GACZ,MAAM,GACN,WAAW,GACX,gBAAgB,GAChB,aAAa,GACb,YAAY,GACZ,YAAY,GACZ,aAAa,CAAC;IAClB,sDAAsD;IACtD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yDAAyD;IACzD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sFAAsF;IACtF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oFAAoF;IACpF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,uFAAuF;IACvF,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;CAC3B,CAAC;AAiBF,QAAA,IAAI,oBAAoB,EAAE,cAAc,GAAG,IAAW,CAAC;AAUvD,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAEhC;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAAC;AAC1D;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,GACrB,YAAY,CAAC;AA8BhB;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,GACrB,YAAY,CAqBd;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAarD;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,GACrB,MAAM,CAaR;AAED,YAAY,EAAE,cAAc,EAAE,CAAC;AAE/B;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GAAI,MAAM,YAAY,KAAG,MAGnD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,MAAM,YAAY,KAAG,MAoDrD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG,YAAY,CAMnE"}
@@ -1 +1 @@
1
- {"version":3,"file":"headless.d.ts","sourceRoot":"","sources":["../../../src/headless.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtE,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,gGAAgG;IAChG,IAAI,EACA,UAAU,GACV,SAAS,GACT,WAAW,GACX,MAAM,GACN,MAAM,GACN,QAAQ,GACR,eAAe,GACf,MAAM,GACN,OAAO,GACP,aAAa,GACb,YAAY,GACZ,YAAY,GACZ,iBAAiB,GACjB,YAAY,GACZ,YAAY,GACZ,OAAO,GACP,YAAY,GACZ,YAAY,GACZ,WAAW,GACX,YAAY,GACZ,MAAM,GACN,WAAW,GACX,gBAAgB,GAChB,aAAa,GACb,YAAY,GACZ,YAAY,GACZ,aAAa,CAAC;IAClB,sDAAsD;IACtD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yDAAyD;IACzD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sFAAsF;IACtF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oFAAoF;IACpF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,uFAAuF;IACvF,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;CAC3B,CAAC;AAEF,QAAA,IAAI,oBAAoB,EAAE,cAAc,GAAG,IAAW,CAAC;AAUvD,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAEhC;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAAC;AAC1D;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,GACrB,YAAY,CAAC;AAyBhB;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,GACrB,YAAY,CAgBd;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CASrD;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,GACrB,MAAM,CASR;AAED,YAAY,EAAE,cAAc,EAAE,CAAC;AAE/B;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GAAI,MAAM,YAAY,KAAG,MAGnD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,MAAM,YAAY,KAAG,MAkDrD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG,YAAY,CAMnE"}
1
+ {"version":3,"file":"headless.d.ts","sourceRoot":"","sources":["../../../src/headless.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtE,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,gGAAgG;IAChG,IAAI,EACA,UAAU,GACV,SAAS,GACT,WAAW,GACX,MAAM,GACN,MAAM,GACN,QAAQ,GACR,eAAe,GACf,MAAM,GACN,OAAO,GACP,aAAa,GACb,YAAY,GACZ,YAAY,GACZ,iBAAiB,GACjB,YAAY,GACZ,YAAY,GACZ,OAAO,GACP,YAAY,GACZ,YAAY,GACZ,WAAW,GACX,YAAY,GACZ,MAAM,GACN,WAAW,GACX,gBAAgB,GAChB,aAAa,GACb,YAAY,GACZ,YAAY,GACZ,aAAa,CAAC;IAClB,sDAAsD;IACtD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yDAAyD;IACzD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sFAAsF;IACtF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oFAAoF;IACpF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,uFAAuF;IACvF,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;CAC3B,CAAC;AAiBF,QAAA,IAAI,oBAAoB,EAAE,cAAc,GAAG,IAAW,CAAC;AAUvD,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAEhC;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAAC;AAC1D;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,GACrB,YAAY,CAAC;AA8BhB;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,GACrB,YAAY,CAqBd;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAarD;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,GACrB,MAAM,CAaR;AAED,YAAY,EAAE,cAAc,EAAE,CAAC;AAE/B;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GAAI,MAAM,YAAY,KAAG,MAGnD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,MAAM,YAAY,KAAG,MAoDrD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG,YAAY,CAMnE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-nitro-markdown",
3
- "version": "0.5.5",
3
+ "version": "0.5.6",
4
4
  "description": "High-performance Markdown parser for React Native using Nitro Modules and md4c",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",
package/src/headless.ts CHANGED
@@ -79,6 +79,21 @@ export type MarkdownNode = {
79
79
  children?: MarkdownNode[];
80
80
  };
81
81
 
82
+ const createEmptyDocument = (): MarkdownNode => ({
83
+ type: "document",
84
+ children: [],
85
+ });
86
+
87
+ function reportNativeParserFailure(methodName: string, error?: unknown): void {
88
+ if (__DEV__) {
89
+ // eslint-disable-next-line no-console
90
+ console.error(
91
+ `[NitroMarkdown] ${methodName}: native parser failed.`,
92
+ error,
93
+ );
94
+ }
95
+ }
96
+
82
97
  let MarkdownParserModule: MarkdownParser | null = null;
83
98
  try {
84
99
  MarkdownParserModule =
@@ -118,8 +133,13 @@ export function parseMarkdown(
118
133
  MarkdownParserModule != null &&
119
134
  typeof MarkdownParserModule.parse === "function"
120
135
  ) {
121
- const jsonStr = MarkdownParserModule.parse(text);
122
- return JSON.parse(jsonStr) as MarkdownNode;
136
+ try {
137
+ const jsonStr = MarkdownParserModule.parse(text);
138
+ return JSON.parse(jsonStr) as MarkdownNode;
139
+ } catch (error) {
140
+ reportNativeParserFailure("parseMarkdown", error);
141
+ return createEmptyDocument();
142
+ }
123
143
  }
124
144
 
125
145
  if (__DEV__) {
@@ -128,7 +148,7 @@ export function parseMarkdown(
128
148
  "[NitroMarkdown] parseMarkdown: native parser unavailable — check installation.",
129
149
  );
130
150
  }
131
- return { type: "document", children: [] };
151
+ return createEmptyDocument();
132
152
  }
133
153
 
134
154
  /**
@@ -145,8 +165,13 @@ export function parseMarkdownWithOptions(
145
165
  MarkdownParserModule != null &&
146
166
  typeof MarkdownParserModule.parseWithOptions === "function"
147
167
  ) {
148
- const jsonStr = MarkdownParserModule.parseWithOptions(text, options);
149
- return JSON.parse(jsonStr) as MarkdownNode;
168
+ try {
169
+ const jsonStr = MarkdownParserModule.parseWithOptions(text, options);
170
+ return JSON.parse(jsonStr) as MarkdownNode;
171
+ } catch (error) {
172
+ reportNativeParserFailure("parseMarkdownWithOptions", error);
173
+ return createEmptyDocument();
174
+ }
150
175
  }
151
176
 
152
177
  if (__DEV__) {
@@ -155,7 +180,7 @@ export function parseMarkdownWithOptions(
155
180
  "[NitroMarkdown] parseMarkdownWithOptions: native parser unavailable — check installation.",
156
181
  );
157
182
  }
158
- return { type: "document", children: [] };
183
+ return createEmptyDocument();
159
184
  }
160
185
 
161
186
  /**
@@ -167,7 +192,11 @@ export function extractPlainText(text: string): string {
167
192
  MarkdownParserModule != null &&
168
193
  typeof MarkdownParserModule.extractPlainText === "function"
169
194
  ) {
170
- return MarkdownParserModule.extractPlainText(text);
195
+ try {
196
+ return MarkdownParserModule.extractPlainText(text);
197
+ } catch (error) {
198
+ reportNativeParserFailure("extractPlainText", error);
199
+ }
171
200
  }
172
201
 
173
202
  return getFlattenedText(parseMarkdown(text));
@@ -184,7 +213,11 @@ export function extractPlainTextWithOptions(
184
213
  MarkdownParserModule != null &&
185
214
  typeof MarkdownParserModule.extractPlainTextWithOptions === "function"
186
215
  ) {
187
- return MarkdownParserModule.extractPlainTextWithOptions(text, options);
216
+ try {
217
+ return MarkdownParserModule.extractPlainTextWithOptions(text, options);
218
+ } catch (error) {
219
+ reportNativeParserFailure("extractPlainTextWithOptions", error);
220
+ }
188
221
  }
189
222
 
190
223
  return getFlattenedText(parseMarkdownWithOptions(text, options));
@@ -221,7 +254,9 @@ export const getFlattenedText = (node: MarkdownNode): string => {
221
254
  node.type === "math_block" ||
222
255
  node.type === "html_block"
223
256
  ) {
224
- return (node.content ?? "").trim() + "\n\n";
257
+ const blockContent =
258
+ node.content ?? node.children?.map(getFlattenedText).join("") ?? "";
259
+ return blockContent.trim() + "\n\n";
225
260
  }
226
261
 
227
262
  if (node.type === "line_break") return "\n";