+
Example Domain
+
+ This domain is for use in illustrative examples in documents. You may
+ use this domain in literature without prior coordination or asking for
+ permission.
+
+
+ More information...
+
+
+
+
+
diff --git a/packages/common/native/fixtures/sample.html.0.md b/packages/common/native/fixtures/sample.html.0.md
new file mode 100644
index 0000000000..b722328f91
--- /dev/null
+++ b/packages/common/native/fixtures/sample.html.0.md
@@ -0,0 +1,6 @@
+Example Domain
+
+ This domain is for use in illustrative examples in documents. You may
+ use this domain in literature without prior coordination or asking for
+ permission.
+ More information...
\ No newline at end of file
diff --git a/packages/common/native/fixtures/sample.pdf b/packages/common/native/fixtures/sample.pdf
new file mode 100644
index 0000000000..c01805e89c
Binary files /dev/null and b/packages/common/native/fixtures/sample.pdf differ
diff --git a/packages/common/native/fixtures/sample.pdf.0.md b/packages/common/native/fixtures/sample.pdf.0.md
new file mode 100644
index 0000000000..f35c3d5d5e
--- /dev/null
+++ b/packages/common/native/fixtures/sample.pdf.0.md
@@ -0,0 +1,17 @@
+
+
+Sample PDF
+This is a simple PDF file. Fun fun fun.
+
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Phasellus facilisis odio sed mi.
+Curabitur suscipit. Nullam vel nisi. Etiam semper ipsum ut lectus. Proin aliquam, erat eget
+pharetra commodo, eros mi condimentum quam, sed commodo justo quam ut velit.
+Integer a erat. Cras laoreet ligula cursus enim. Aenean scelerisque velit et tellus.
+Vestibulum dictum aliquet sem. Nulla facilisi. Vestibulum accumsan ante vitae elit. Nulla
+erat dolor, blandit in, rutrum quis, semper pulvinar, enim. Nullam varius congue risus.
+Vivamus sollicitudin, metus ut interdum eleifend, nisi tellus pellentesque elit, tristique
+accumsan eros quam et risus. Suspendisse libero odio, mattis sit amet, aliquet eget,
+hendrerit vel, nulla. Sed vitae augue. Aliquam erat volutpat. Aliquam feugiat vulputate nisl.
+Suspendisse quis nulla pretium ante pretium mollis. Proin velit ligula, sagittis at, egestas a,
+pulvinar quis, nisl.
+
diff --git a/packages/common/native/fixtures/sample.pdf.1.md b/packages/common/native/fixtures/sample.pdf.1.md
new file mode 100644
index 0000000000..3bb84cb162
--- /dev/null
+++ b/packages/common/native/fixtures/sample.pdf.1.md
@@ -0,0 +1,9 @@
+Pellentesque sit amet lectus. Praesent pulvinar, nunc quis iaculis sagittis, justo quam
+lobortis tortor, sed vestibulum dui metus venenatis est. Nunc cursus ligula. Nulla facilisi.
+Phasellus ullamcorper consectetuer ante. Duis tincidunt, urna id condimentum luctus, nibh
+ante vulputate sapien, id sagittis massa orci ut enim. Pellentesque vestibulum convallis
+sem. Nulla consequat quam ut nisl. Nullam est. Curabitur tincidunt dapibus lorem. Proin
+velit turpis, scelerisque sit amet, iaculis nec, rhoncus ac, ipsum. Phasellus lorem arcu,
+feugiat eu, gravida eu, consequat molestie, ipsum. Nullam vel est ut ipsum volutpat
+feugiat. Aenean pellentesque.
+
diff --git a/packages/common/native/fixtures/sample.pdf.2.md b/packages/common/native/fixtures/sample.pdf.2.md
new file mode 100644
index 0000000000..bc1e6a2638
--- /dev/null
+++ b/packages/common/native/fixtures/sample.pdf.2.md
@@ -0,0 +1,16 @@
+In mauris. Pellentesque dui nisi, iaculis eu, rhoncus in, venenatis ac, ante. Ut odio justo,
+scelerisque vel, facilisis non, commodo a, pede. Cras nec massa sit amet tortor volutpat
+varius. Donec lacinia, neque a luctus aliquet, pede massa imperdiet ante, at varius lorem
+pede sed sapien. Fusce erat nibh, aliquet in, eleifend eget, commodo eget, erat. Fusce
+consectetuer. Cras risus tortor, porttitor nec, tristique sed, convallis semper, eros. Fusce
+vulputate ipsum a mauris. Phasellus mollis. Curabitur sed urna. Aliquam nec sapien non
+nibh pulvinar convallis. Vivamus facilisis augue quis quam. Proin cursus aliquet metus.
+Suspendisse lacinia. Nulla at tellus ac turpis eleifend scelerisque. Maecenas a pede vitae
+enim commodo interdum. Donec odio. Sed sollicitudin dui vitae justo.
+
+Morbi elit nunc, facilisis a, mollis a, molestie at, lectus. Suspendisse eget mauris eu tellus
+molestie cursus. Duis ut magna at justo dignissim condimentum. Cum sociis natoque
+penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus varius. Ut sit
+amet diam suscipit mauris ornare aliquam. Sed varius. Duis arcu. Etiam tristique massa
+eget dui. Phasellus congue. Aenean est erat, tincidunt eget, venenatis quis, commodo at,
+quam.
\ No newline at end of file
diff --git a/packages/common/native/fixtures/sample.rs b/packages/common/native/fixtures/sample.rs
new file mode 100644
index 0000000000..20c7697ff9
--- /dev/null
+++ b/packages/common/native/fixtures/sample.rs
@@ -0,0 +1,10 @@
+fn factorial(n: u64) -> u64 {
+ if n == 0 {
+ return 1;
+ }
+ n * factorial(n - 1)
+}
+
+fn main() {
+ println!("Hello, world!");
+}
diff --git a/packages/common/native/fixtures/sample.rs.0.md b/packages/common/native/fixtures/sample.rs.0.md
new file mode 100644
index 0000000000..52e6433529
--- /dev/null
+++ b/packages/common/native/fixtures/sample.rs.0.md
@@ -0,0 +1,6 @@
+fn factorial(n: u64) -> u64 {
+ if n == 0 {
+ return 1;
+ }
+ n * factorial(n - 1)
+}
\ No newline at end of file
diff --git a/packages/common/native/fixtures/sample.rs.1.md b/packages/common/native/fixtures/sample.rs.1.md
new file mode 100644
index 0000000000..0309b94864
--- /dev/null
+++ b/packages/common/native/fixtures/sample.rs.1.md
@@ -0,0 +1,3 @@
+fn main() {
+ println!("Hello, world!");
+}
\ No newline at end of file
diff --git a/packages/common/native/fixtures/sample.ts b/packages/common/native/fixtures/sample.ts
new file mode 100644
index 0000000000..0186fe8f8c
--- /dev/null
+++ b/packages/common/native/fixtures/sample.ts
@@ -0,0 +1,3 @@
+export default function sample() {
+ return 'sample';
+}
diff --git a/packages/common/native/fixtures/sample.ts.0.md b/packages/common/native/fixtures/sample.ts.0.md
new file mode 100644
index 0000000000..5887c490aa
--- /dev/null
+++ b/packages/common/native/fixtures/sample.ts.0.md
@@ -0,0 +1,3 @@
+export default function sample() {
+ return 'sample';
+}
\ No newline at end of file
diff --git a/packages/common/native/src/doc_loader/document.rs b/packages/common/native/src/doc_loader/document.rs
new file mode 100644
index 0000000000..881767d4b9
--- /dev/null
+++ b/packages/common/native/src/doc_loader/document.rs
@@ -0,0 +1,169 @@
+use std::{io::Cursor, path::PathBuf};
+
+use path_ext::PathExt;
+
+use super::*;
+
+#[derive(Clone, Default)]
+pub struct Chunk {
+ pub index: usize,
+ pub content: String,
+ pub start: Option