@umami/shiso 0.10.0 → 0.11.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 -1
- package/dist/index.css +33 -33
- package/dist/index.js +4 -4
- package/dist/index.mjs +4 -4
- package/package.json +2 -3
- package/server/index.d.ts +2 -5
- package/server/index.js +71 -62
package/README.md
CHANGED
|
@@ -1,6 +1,54 @@
|
|
|
1
1
|
# Shiso
|
|
2
2
|
|
|
3
|
-
A content layer for [Next.js](https://nextjs.org/).
|
|
3
|
+
A content layer for [Next.js](https://nextjs.org/).
|
|
4
|
+
|
|
5
|
+
[Learn more](https://shiso.umami.is)
|
|
6
|
+
|
|
7
|
+
## Usage
|
|
8
|
+
|
|
9
|
+
### 1. Install the package
|
|
10
|
+
|
|
11
|
+
```shell
|
|
12
|
+
npm install @umami/shiso
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
### 2. Create page
|
|
16
|
+
|
|
17
|
+
In your `app` folder, create a folder for the content section you wish to add. In this case we are creating a section for `docs`.
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
src
|
|
21
|
+
├── app
|
|
22
|
+
│ └── docs
|
|
23
|
+
│ └── [[...id]]
|
|
24
|
+
│ └── page.jsx
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
In the `page.jsx` file, add the following code:
|
|
28
|
+
|
|
29
|
+
```javascript
|
|
30
|
+
import { Shiso } from '@umami/shiso';
|
|
31
|
+
import { getContent, getContentIds } from '@@umami/shiso/server';
|
|
32
|
+
import config from 'path/to/shiso.config.json';
|
|
33
|
+
|
|
34
|
+
export async function generateStaticParams() {
|
|
35
|
+
const ids = await getContentIds('./src/content/docs');
|
|
36
|
+
|
|
37
|
+
return ids.map((id: string) => ({
|
|
38
|
+
id: id.split('/')
|
|
39
|
+
}));
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export default async function Page({ params }: { params: Promise<{ id: string[] }> }) {
|
|
43
|
+
const content = await getContent(await params, './src/content/docs');
|
|
44
|
+
|
|
45
|
+
return <Shiso type="docs" content={content} config={config} />;
|
|
46
|
+
}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### 3. Write content
|
|
50
|
+
|
|
51
|
+
In the folder you specified, start adding `.mdx` files.
|
|
4
52
|
|
|
5
53
|
## License
|
|
6
54
|
|
package/dist/index.css
CHANGED
|
@@ -34,121 +34,121 @@ pre.CodeBlock_container__YmFmN code {
|
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
/* virtual-css:css:0ed498f49b21d225f1b5a4e1685cf2e5 */
|
|
37
|
-
.
|
|
37
|
+
.PageLinks_title__ZWYzZ {
|
|
38
38
|
position: sticky;
|
|
39
39
|
top: 0;
|
|
40
40
|
}
|
|
41
|
-
.
|
|
41
|
+
.PageLinks_links__MjU2M {
|
|
42
42
|
position: sticky;
|
|
43
43
|
top: 30px;
|
|
44
44
|
height: max-content;
|
|
45
45
|
}
|
|
46
|
-
.
|
|
46
|
+
.PageLinks_links__MjU2M a {
|
|
47
47
|
display: block;
|
|
48
|
-
color: var(--font-muted
|
|
48
|
+
color: var(--font-color-muted);
|
|
49
49
|
text-wrap: nowrap;
|
|
50
50
|
text-decoration: none;
|
|
51
51
|
}
|
|
52
|
-
.
|
|
52
|
+
.PageLinks_links__MjU2M a:hover {
|
|
53
53
|
color: var(--primary-color);
|
|
54
54
|
}
|
|
55
|
-
.PageLinks_indent-
|
|
55
|
+
.PageLinks_indent-1__MmYwN {
|
|
56
56
|
margin-left: 0;
|
|
57
57
|
}
|
|
58
|
-
.PageLinks_indent-
|
|
58
|
+
.PageLinks_indent-2__ODBkZ {
|
|
59
59
|
margin-left: 0;
|
|
60
60
|
}
|
|
61
|
-
.PageLinks_indent-
|
|
61
|
+
.PageLinks_indent-3__ZTc4Y {
|
|
62
62
|
margin-left: 10px;
|
|
63
63
|
}
|
|
64
|
-
.PageLinks_indent-
|
|
64
|
+
.PageLinks_indent-4__ZjNlO {
|
|
65
65
|
margin-left: 20px;
|
|
66
66
|
}
|
|
67
|
-
.PageLinks_indent-
|
|
67
|
+
.PageLinks_indent-5__NmE5N {
|
|
68
68
|
margin-left: 30px;
|
|
69
69
|
}
|
|
70
|
-
.PageLinks_indent-
|
|
70
|
+
.PageLinks_indent-6__YWUwN {
|
|
71
71
|
margin-left: 40px;
|
|
72
72
|
}
|
|
73
|
-
a.
|
|
73
|
+
a.PageLinks_selected__Y2YxY {
|
|
74
74
|
color: var(--primary-color);
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
/* virtual-css:css:72ce2cfbba7b635b2ff1a5f4f5eeabf3 */
|
|
78
|
-
.
|
|
78
|
+
.SideNav_nav__YTMyM {
|
|
79
79
|
position: sticky;
|
|
80
80
|
top: 30px;
|
|
81
81
|
height: max-content;
|
|
82
82
|
}
|
|
83
|
-
.
|
|
84
|
-
color: var(--font-muted
|
|
83
|
+
.SideNav_nav__YTMyM .SideNav_item__NzY4M {
|
|
84
|
+
color: var(--font-color-muted);
|
|
85
85
|
padding: 0;
|
|
86
86
|
border-radius: 0;
|
|
87
87
|
border-left: var(--border-size-1) solid var(--border-color);
|
|
88
88
|
}
|
|
89
|
-
.
|
|
89
|
+
.SideNav_nav__YTMyM .SideNav_item__NzY4M a {
|
|
90
90
|
color: currentColor;
|
|
91
91
|
width: 100%;
|
|
92
92
|
padding: var(--padding-y) var(--padding-x);
|
|
93
93
|
text-decoration: none;
|
|
94
94
|
}
|
|
95
|
-
.
|
|
95
|
+
.SideNav_nav__YTMyM .SideNav_item__NzY4M a:hover {
|
|
96
96
|
color: var(--primary-color);
|
|
97
97
|
}
|
|
98
|
-
.
|
|
98
|
+
.SideNav_nav__YTMyM .SideNav_item__NzY4M.SideNav_selected__OGVhN {
|
|
99
99
|
color: var(--font-color);
|
|
100
100
|
border-color: var(--primary-color);
|
|
101
101
|
}
|
|
102
|
-
.
|
|
102
|
+
.SideNav_items__N2Q4M header {
|
|
103
103
|
padding: var(--padding-y) 0;
|
|
104
104
|
}
|
|
105
105
|
|
|
106
106
|
/* virtual-css:css:7938c95522eda3e1f8244364ad70b38c */
|
|
107
|
-
.
|
|
107
|
+
.ContentArea_content__ZDM2M {
|
|
108
108
|
font-size: 16px;
|
|
109
109
|
margin-bottom: 60px;
|
|
110
110
|
}
|
|
111
|
-
.
|
|
112
|
-
color: var(--font-muted
|
|
111
|
+
.ContentArea_content__ZDM2M > p {
|
|
112
|
+
color: var(--font-color-muted);
|
|
113
113
|
line-height: 1.8;
|
|
114
114
|
}
|
|
115
|
-
.
|
|
115
|
+
.ContentArea_content__ZDM2M a {
|
|
116
116
|
color: var(--font-color);
|
|
117
117
|
font-weight: 600;
|
|
118
|
-
text-decoration: underline var(--font-
|
|
118
|
+
text-decoration: underline var(--font-color-muted);
|
|
119
119
|
text-underline-offset: 4px;
|
|
120
120
|
}
|
|
121
|
-
.
|
|
121
|
+
.ContentArea_content__ZDM2M a:hover {
|
|
122
122
|
text-decoration: underline var(--font-color);
|
|
123
123
|
}
|
|
124
|
-
.
|
|
124
|
+
.ContentArea_content__ZDM2M h1 {
|
|
125
125
|
font-size: var(--font-size-8);
|
|
126
126
|
letter-spacing: var(--letter-spacing-1);
|
|
127
127
|
margin: 0 0 var(--spacing-4) 0;
|
|
128
128
|
}
|
|
129
|
-
.
|
|
129
|
+
.ContentArea_content__ZDM2M h2 {
|
|
130
130
|
font-size: var(--font-size-6);
|
|
131
131
|
letter-spacing: var(--letter-spacing-1);
|
|
132
132
|
margin: var(--spacing-8) 0 var(--spacing-4) 0;
|
|
133
133
|
}
|
|
134
|
-
.
|
|
134
|
+
.ContentArea_content__ZDM2M h3 {
|
|
135
135
|
font-size: var(--font-size-5);
|
|
136
136
|
letter-spacing: var(--letter-spacing-1);
|
|
137
137
|
margin: var(--spacing-7) 0 var(--spacing-4) 0;
|
|
138
138
|
}
|
|
139
|
-
.
|
|
139
|
+
.ContentArea_content__ZDM2M ul {
|
|
140
140
|
list-style: disc;
|
|
141
141
|
}
|
|
142
|
-
.
|
|
142
|
+
.ContentArea_content__ZDM2M ol {
|
|
143
143
|
list-style: decimal;
|
|
144
144
|
}
|
|
145
|
-
.
|
|
145
|
+
.ContentArea_content__ZDM2M pre {
|
|
146
146
|
margin: var(--spacing-5) 0;
|
|
147
147
|
}
|
|
148
|
-
.
|
|
148
|
+
.ContentArea_content__ZDM2M code {
|
|
149
149
|
font-size: 14px;
|
|
150
150
|
}
|
|
151
|
-
.
|
|
151
|
+
.ContentArea_content__ZDM2M code:not([class]) {
|
|
152
152
|
font-family: var(--font-family-code);
|
|
153
153
|
color: var(--font-color);
|
|
154
154
|
padding: var(--spacing-1);
|
package/dist/index.js
CHANGED
|
@@ -145,7 +145,7 @@ var import_react_zen2 = require("@umami/react-zen");
|
|
|
145
145
|
var import_classnames = __toESM(require("classnames"));
|
|
146
146
|
|
|
147
147
|
// css-modules:/Users/mikecao/Development/umami-software/shiso/src/components/PageLinks.module.css
|
|
148
|
-
var PageLinks_default = { "title": "
|
|
148
|
+
var PageLinks_default = { "title": "PageLinks_title__ZWYzZ", "links": "PageLinks_links__MjU2M", "indent-1": "PageLinks_indent-1__MmYwN", "indent-2": "PageLinks_indent-2__ODBkZ", "indent-3": "PageLinks_indent-3__ZTc4Y", "indent-4": "PageLinks_indent-4__ZjNlO", "indent-5": "PageLinks_indent-5__NmE5N", "indent-6": "PageLinks_indent-6__YWUwN", "selected": "PageLinks_selected__Y2YxY" };
|
|
149
149
|
|
|
150
150
|
// src/components/PageLinks.tsx
|
|
151
151
|
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
@@ -190,7 +190,7 @@ var import_navigation = require("next/navigation");
|
|
|
190
190
|
var import_link = __toESM(require("next/link"));
|
|
191
191
|
|
|
192
192
|
// css-modules:/Users/mikecao/Development/umami-software/shiso/src/components/SideNav.module.css
|
|
193
|
-
var SideNav_default = { "nav": "
|
|
193
|
+
var SideNav_default = { "nav": "SideNav_nav__YTMyM", "item": "SideNav_item__NzY4M", "selected": "SideNav_selected__OGVhN", "items": "SideNav_items__N2Q4M" };
|
|
194
194
|
|
|
195
195
|
// src/components/SideNav.tsx
|
|
196
196
|
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
@@ -232,7 +232,7 @@ function TopNav({ tabs }) {
|
|
|
232
232
|
var import_react_zen5 = require("@umami/react-zen");
|
|
233
233
|
|
|
234
234
|
// css-modules:/Users/mikecao/Development/umami-software/shiso/src/components/ContentArea.module.css
|
|
235
|
-
var ContentArea_default = { "content": "
|
|
235
|
+
var ContentArea_default = { "content": "ContentArea_content__ZDM2M" };
|
|
236
236
|
|
|
237
237
|
// src/components/ContentArea.tsx
|
|
238
238
|
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
@@ -240,7 +240,7 @@ function ContentArea({ content }) {
|
|
|
240
240
|
return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_react_zen5.Box, { flexGrow: 1, children: [
|
|
241
241
|
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_react_zen5.Text, { color: "primary", weight: "bold", children: content.group }),
|
|
242
242
|
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_react_zen5.Heading, { size: "8", as: "h1", children: content?.meta?.title }),
|
|
243
|
-
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_react_zen5.Text, {
|
|
243
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_react_zen5.Text, { color: "muted", children: content?.meta?.description }),
|
|
244
244
|
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_react_zen5.Box, { className: ContentArea_default.content, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Markdown, { content }) })
|
|
245
245
|
] });
|
|
246
246
|
}
|
package/dist/index.mjs
CHANGED
|
@@ -109,7 +109,7 @@ import { Column, Text } from "@umami/react-zen";
|
|
|
109
109
|
import classNames from "classnames";
|
|
110
110
|
|
|
111
111
|
// css-modules:/Users/mikecao/Development/umami-software/shiso/src/components/PageLinks.module.css
|
|
112
|
-
var PageLinks_default = { "title": "
|
|
112
|
+
var PageLinks_default = { "title": "PageLinks_title__ZWYzZ", "links": "PageLinks_links__MjU2M", "indent-1": "PageLinks_indent-1__MmYwN", "indent-2": "PageLinks_indent-2__ODBkZ", "indent-3": "PageLinks_indent-3__ZTc4Y", "indent-4": "PageLinks_indent-4__ZjNlO", "indent-5": "PageLinks_indent-5__NmE5N", "indent-6": "PageLinks_indent-6__YWUwN", "selected": "PageLinks_selected__Y2YxY" };
|
|
113
113
|
|
|
114
114
|
// src/components/PageLinks.tsx
|
|
115
115
|
import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
@@ -154,7 +154,7 @@ import { usePathname } from "next/navigation";
|
|
|
154
154
|
import Link from "next/link";
|
|
155
155
|
|
|
156
156
|
// css-modules:/Users/mikecao/Development/umami-software/shiso/src/components/SideNav.module.css
|
|
157
|
-
var SideNav_default = { "nav": "
|
|
157
|
+
var SideNav_default = { "nav": "SideNav_nav__YTMyM", "item": "SideNav_item__NzY4M", "selected": "SideNav_selected__OGVhN", "items": "SideNav_items__N2Q4M" };
|
|
158
158
|
|
|
159
159
|
// src/components/SideNav.tsx
|
|
160
160
|
import { jsx as jsx6 } from "react/jsx-runtime";
|
|
@@ -196,7 +196,7 @@ function TopNav({ tabs }) {
|
|
|
196
196
|
import { Heading, Box as Box2, Text as Text2 } from "@umami/react-zen";
|
|
197
197
|
|
|
198
198
|
// css-modules:/Users/mikecao/Development/umami-software/shiso/src/components/ContentArea.module.css
|
|
199
|
-
var ContentArea_default = { "content": "
|
|
199
|
+
var ContentArea_default = { "content": "ContentArea_content__ZDM2M" };
|
|
200
200
|
|
|
201
201
|
// src/components/ContentArea.tsx
|
|
202
202
|
import { jsx as jsx8, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
@@ -204,7 +204,7 @@ function ContentArea({ content }) {
|
|
|
204
204
|
return /* @__PURE__ */ jsxs5(Box2, { flexGrow: 1, children: [
|
|
205
205
|
/* @__PURE__ */ jsx8(Text2, { color: "primary", weight: "bold", children: content.group }),
|
|
206
206
|
/* @__PURE__ */ jsx8(Heading, { size: "8", as: "h1", children: content?.meta?.title }),
|
|
207
|
-
/* @__PURE__ */ jsx8(Text2, {
|
|
207
|
+
/* @__PURE__ */ jsx8(Text2, { color: "muted", children: content?.meta?.description }),
|
|
208
208
|
/* @__PURE__ */ jsx8(Box2, { className: ContentArea_default.content, children: /* @__PURE__ */ jsx8(Markdown, { content }) })
|
|
209
209
|
] });
|
|
210
210
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@umami/shiso",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"description": "A content layer for Next.js",
|
|
5
5
|
"homepage": "https://umami.is/shiso",
|
|
6
6
|
"repository": {
|
|
@@ -49,12 +49,11 @@
|
|
|
49
49
|
"@mdx-js/loader": "^3.0.0",
|
|
50
50
|
"@mdx-js/mdx": "^3.1.0",
|
|
51
51
|
"@mdx-js/react": "^3.0.0",
|
|
52
|
-
"@umami/react-zen": "^0.
|
|
52
|
+
"@umami/react-zen": "^0.28.0",
|
|
53
53
|
"classnames": "^2.5.1",
|
|
54
54
|
"glob": "^10.3.10",
|
|
55
55
|
"gray-matter": "^4.0.3",
|
|
56
56
|
"highlight.js": "^11.11.0",
|
|
57
|
-
"mdx-bundler": "^10.0.3",
|
|
58
57
|
"next": "15.1.2",
|
|
59
58
|
"next-mdx-remote": "^5.0.0",
|
|
60
59
|
"react": "^19.0.0",
|
package/server/index.d.ts
CHANGED
|
@@ -1,5 +1,2 @@
|
|
|
1
|
-
export declare const
|
|
2
|
-
export declare
|
|
3
|
-
export declare function getContent(params: {
|
|
4
|
-
id: string[];
|
|
5
|
-
}, folder: string): Promise<any>;
|
|
1
|
+
export declare const getContent: (name: string | undefined, folder: string) => Promise<any>;
|
|
2
|
+
export declare const getContentIds: (folder: string) => Promise<any>;
|
package/server/index.js
CHANGED
|
@@ -34,6 +34,15 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
34
34
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
35
35
|
}
|
|
36
36
|
};
|
|
37
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
38
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
39
|
+
if (ar || !(i in from)) {
|
|
40
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
41
|
+
ar[i] = from[i];
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
45
|
+
};
|
|
37
46
|
import { cache } from 'react';
|
|
38
47
|
import { compile } from '@mdx-js/mdx';
|
|
39
48
|
import remarkGfm from 'remark-gfm';
|
|
@@ -42,72 +51,72 @@ import matter from 'gray-matter';
|
|
|
42
51
|
import fs from 'node:fs/promises';
|
|
43
52
|
import path from 'node:path';
|
|
44
53
|
import recursive from 'recursive-readdir';
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
var match = line.match(/^(#+)\s+(.*)/);
|
|
59
|
-
if (match) {
|
|
60
|
-
var num = match[1], name_1 = match[2];
|
|
61
|
-
var id_1 = name_1.toLowerCase().replace(/\s+/g, '-');
|
|
62
|
-
var size = num.length;
|
|
63
|
-
anchors.push({ name: name_1, id: id_1, size: size });
|
|
64
|
-
return "<h".concat(size, " id=\"").concat(id_1, "\">").concat(name_1.replace(/\{|\}/g, ''), "</h").concat(size, ">");
|
|
65
|
-
}
|
|
66
|
-
return line;
|
|
67
|
-
})
|
|
68
|
-
.join('\n');
|
|
69
|
-
_b = String;
|
|
70
|
-
return [4 /*yield*/, compile(modifiedContent, {
|
|
71
|
-
outputFormat: 'function-body',
|
|
72
|
-
remarkPlugins: [remarkGfm],
|
|
73
|
-
rehypePlugins: [rehypeHighlight],
|
|
74
|
-
})];
|
|
75
|
-
case 2:
|
|
76
|
-
code = _b.apply(void 0, [_c.sent()]);
|
|
77
|
-
return [2 /*return*/, {
|
|
78
|
-
id: id,
|
|
79
|
-
meta: frontmatter,
|
|
80
|
-
content: postContent,
|
|
81
|
-
code: code,
|
|
82
|
-
anchors: anchors,
|
|
83
|
-
}];
|
|
84
|
-
}
|
|
85
|
-
});
|
|
86
|
-
}); });
|
|
87
|
-
export function getContentIds(folder) {
|
|
88
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
89
|
-
var dir, files;
|
|
90
|
-
return __generator(this, function (_a) {
|
|
91
|
-
switch (_a.label) {
|
|
54
|
+
function getId(name, folder) {
|
|
55
|
+
return name.replace('.mdx', '').replace(folder, '').replace(/\\/g, '/').replace(/^\//, '');
|
|
56
|
+
}
|
|
57
|
+
export var getContent = cache(function () {
|
|
58
|
+
var args_1 = [];
|
|
59
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
60
|
+
args_1[_i] = arguments[_i];
|
|
61
|
+
}
|
|
62
|
+
return __awaiter(void 0, __spreadArray([], args_1, true), void 0, function (name, folder) {
|
|
63
|
+
var file, postContent, _a, frontmatter, mdxContent, id, anchors, modifiedContent, code, _b;
|
|
64
|
+
if (name === void 0) { name = 'index'; }
|
|
65
|
+
return __generator(this, function (_c) {
|
|
66
|
+
switch (_c.label) {
|
|
92
67
|
case 0:
|
|
93
|
-
|
|
94
|
-
return [4 /*yield*/,
|
|
68
|
+
file = path.join(folder, "".concat(name, ".mdx"));
|
|
69
|
+
return [4 /*yield*/, fs.readFile(file, 'utf8')];
|
|
95
70
|
case 1:
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
71
|
+
postContent = _c.sent();
|
|
72
|
+
_a = matter(postContent), frontmatter = _a.data, mdxContent = _a.content;
|
|
73
|
+
id = getId(name, folder);
|
|
74
|
+
anchors = [];
|
|
75
|
+
modifiedContent = mdxContent
|
|
76
|
+
.split('\n')
|
|
77
|
+
.map(function (line) {
|
|
78
|
+
var match = line.match(/^(#+)\s+(.*)/);
|
|
79
|
+
if (match) {
|
|
80
|
+
var num = match[1], name_1 = match[2];
|
|
81
|
+
var id_1 = name_1.toLowerCase().replace(/\s+/g, '-');
|
|
82
|
+
var size = num.length;
|
|
83
|
+
anchors.push({ name: name_1, id: id_1, size: size });
|
|
84
|
+
return "<h".concat(size, " id=\"").concat(id_1, "\">").concat(name_1.replace(/\{|\}/g, ''), "</h").concat(size, ">");
|
|
85
|
+
}
|
|
86
|
+
return line;
|
|
87
|
+
})
|
|
88
|
+
.join('\n');
|
|
89
|
+
_b = String;
|
|
90
|
+
return [4 /*yield*/, compile(modifiedContent, {
|
|
91
|
+
outputFormat: 'function-body',
|
|
92
|
+
remarkPlugins: [remarkGfm],
|
|
93
|
+
rehypePlugins: [rehypeHighlight],
|
|
99
94
|
})];
|
|
95
|
+
case 2:
|
|
96
|
+
code = _b.apply(void 0, [_c.sent()]);
|
|
97
|
+
return [2 /*return*/, {
|
|
98
|
+
id: id,
|
|
99
|
+
meta: frontmatter,
|
|
100
|
+
content: postContent,
|
|
101
|
+
code: code,
|
|
102
|
+
anchors: anchors,
|
|
103
|
+
}];
|
|
100
104
|
}
|
|
101
105
|
});
|
|
102
106
|
});
|
|
103
|
-
}
|
|
104
|
-
export function
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
107
|
+
});
|
|
108
|
+
export var getContentIds = cache(function (folder) { return __awaiter(void 0, void 0, void 0, function () {
|
|
109
|
+
var dir, files;
|
|
110
|
+
return __generator(this, function (_a) {
|
|
111
|
+
switch (_a.label) {
|
|
112
|
+
case 0:
|
|
113
|
+
dir = path.resolve(folder);
|
|
114
|
+
return [4 /*yield*/, recursive(dir)];
|
|
115
|
+
case 1:
|
|
116
|
+
files = _a.sent();
|
|
117
|
+
return [2 /*return*/, files.map(function (file) {
|
|
118
|
+
return getId(file, dir);
|
|
119
|
+
})];
|
|
120
|
+
}
|
|
112
121
|
});
|
|
113
|
-
}
|
|
122
|
+
}); });
|