@vendure-io/docs-provider 0.4.0 → 0.6.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 +44 -5
- package/dist/browser.cjs +1 -0
- package/dist/browser.d.ts +10 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +30 -0
- package/dist/frontmatter-C0Wmtdep.js +56 -0
- package/dist/frontmatter-CJYZSUYM.cjs +3 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +143 -155
- package/dist/loader.cjs +1 -1
- package/dist/loader.js +17 -16
- package/dist/manifest-D-EWZlSh.cjs +1 -0
- package/dist/manifest-ZCrzbFSf.js +182 -0
- package/dist/manifest-resolver.d.ts.map +1 -1
- package/dist/manifest.d.ts.map +1 -1
- package/dist/mdx-components.d.ts +26 -3
- package/dist/mdx-components.d.ts.map +1 -1
- package/dist/navigation-utils.d.ts +16 -1
- package/dist/navigation-utils.d.ts.map +1 -1
- package/dist/remark-plugins/index.d.ts +11 -0
- package/dist/remark-plugins/index.d.ts.map +1 -0
- package/dist/remark-plugins/remark-admonitions.d.ts +18 -0
- package/dist/remark-plugins/remark-admonitions.d.ts.map +1 -0
- package/dist/remark-plugins/remark-code-meta.d.ts +15 -0
- package/dist/remark-plugins/remark-code-meta.d.ts.map +1 -0
- package/dist/remark-plugins/remark-strip-html-comments.d.ts +8 -0
- package/dist/remark-plugins/remark-strip-html-comments.d.ts.map +1 -0
- package/dist/remark-plugins/remark-strip-imports.d.ts +8 -0
- package/dist/remark-plugins/remark-strip-imports.d.ts.map +1 -0
- package/dist/schema.d.ts +29 -6
- package/dist/schema.d.ts.map +1 -1
- package/dist/slug-utils-DUQgikEz.cjs +1 -0
- package/dist/slug-utils-DVKYe9h8.js +31 -0
- package/dist/testing/index.d.ts +32 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/mdx-compiler.d.ts +49 -0
- package/dist/testing/mdx-compiler.d.ts.map +1 -0
- package/dist/testing/test-manifest.d.ts +31 -0
- package/dist/testing/test-manifest.d.ts.map +1 -0
- package/dist/testing/types.d.ts +81 -0
- package/dist/testing/types.d.ts.map +1 -0
- package/dist/testing.cjs +4 -0
- package/dist/testing.js +202 -0
- package/dist/types.d.ts +6 -0
- package/dist/types.d.ts.map +1 -1
- package/docs/getting-started.md +1 -0
- package/docs/manifest-reference.md +85 -7
- package/docs/mdx-components-reference.md +46 -0
- package/docs/mdx-testing.md +437 -0
- package/docs/publishing.md +1 -0
- package/package.json +30 -1
- package/dist/manifest-BYUKRuRu.cjs +0 -3
- package/dist/manifest-CVIfw0ha.js +0 -228
package/README.md
CHANGED
|
@@ -191,6 +191,43 @@ const pages = getLeafNodes(manifest)
|
|
|
191
191
|
const { prev, next } = getPrevNextNodes(manifest, 'getting-started/installation')
|
|
192
192
|
```
|
|
193
193
|
|
|
194
|
+
### Hidden Pages
|
|
195
|
+
|
|
196
|
+
You can hide pages from the sidebar navigation while keeping them accessible via direct URL:
|
|
197
|
+
|
|
198
|
+
```typescript
|
|
199
|
+
const manifest: DocsPackageManifest = {
|
|
200
|
+
// ...
|
|
201
|
+
navigation: [
|
|
202
|
+
{
|
|
203
|
+
title: 'Public Page',
|
|
204
|
+
slug: 'public',
|
|
205
|
+
file: file('docs/public.mdx'),
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
title: 'Hidden Page',
|
|
209
|
+
slug: 'hidden',
|
|
210
|
+
file: file('docs/hidden.mdx'),
|
|
211
|
+
hidden: true, // Won't appear in sidebar, but /docs/hidden still works
|
|
212
|
+
},
|
|
213
|
+
],
|
|
214
|
+
}
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
### Browser Entry Point
|
|
218
|
+
|
|
219
|
+
For client-side React components (with `'use client'`), use the `/browser` entry point to avoid bundling Node.js modules:
|
|
220
|
+
|
|
221
|
+
```typescript
|
|
222
|
+
// In client components
|
|
223
|
+
import { filterVisibleNavigation, type NavigationNode } from '@vendure-io/docs-provider/browser'
|
|
224
|
+
|
|
225
|
+
// Filter hidden pages before rendering sidebar
|
|
226
|
+
const visibleNavigation = filterVisibleNavigation(manifest.navigation)
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
The main entry point includes Node.js-only utilities (`resolveManifest`, `createNavigationFromFolder`) that require `fs` access and cannot be used in browser contexts.
|
|
230
|
+
|
|
194
231
|
### Parsing MDX Frontmatter
|
|
195
232
|
|
|
196
233
|
```typescript
|
|
@@ -246,6 +283,7 @@ if (hasFrontmatter(mdxContent)) {
|
|
|
246
283
|
| `MemberDescriptionProps` | Props for MemberDescription component |
|
|
247
284
|
| `CustomFieldPropertyProps` | Props for CustomFieldProperty component |
|
|
248
285
|
| `StackblitzProps` | Props for Stackblitz component |
|
|
286
|
+
| `DocsLinkProps` | Props for DocsLink component |
|
|
249
287
|
| `MdxComponentProps` | Union type of all MDX component props |
|
|
250
288
|
|
|
251
289
|
### Schemas (Zod)
|
|
@@ -284,11 +322,12 @@ All types have corresponding Zod schemas for runtime validation:
|
|
|
284
322
|
|
|
285
323
|
#### Navigation Utilities
|
|
286
324
|
|
|
287
|
-
| Function | Description
|
|
288
|
-
| ----------------------------------------------- |
|
|
289
|
-
| `getAllFilePaths(manifest)` | Get all file paths from manifest
|
|
290
|
-
| `
|
|
291
|
-
| `
|
|
325
|
+
| Function | Description |
|
|
326
|
+
| ----------------------------------------------- | --------------------------------------- |
|
|
327
|
+
| `getAllFilePaths(manifest)` | Get all file paths from manifest |
|
|
328
|
+
| `filterVisibleNavigation(nodes)` | Filter out hidden nodes from navigation |
|
|
329
|
+
| `createNavigationFromFolder(path, options?)` | Create navigation from folder contents |
|
|
330
|
+
| `createNestedNavigationFromFolder(path, opts?)` | Create nested navigation from folders |
|
|
292
331
|
|
|
293
332
|
#### Slug Utilities
|
|
294
333
|
|
package/dist/browser.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./manifest-D-EWZlSh.cjs"),a=require("./slug-utils-DUQgikEz.cjs");exports.BreadcrumbItemSchema=e.BreadcrumbItemSchema;exports.DocPageMetaSchema=e.DocPageMetaSchema;exports.DocPageSchema=e.DocPageSchema;exports.DocsPackageManifestInputSchema=e.DocsPackageManifestInputSchema;exports.DocsPackageManifestSchema=e.DocsPackageManifestSchema;exports.FlatNavigationNodeSchema=e.FlatNavigationNodeSchema;exports.GitHubConfigSchema=e.GitHubConfigSchema;exports.LoadedDocsPackageSchema=e.LoadedDocsPackageSchema;exports.ManifestValidationError=e.ManifestValidationError;exports.NavigationNodeInputSchema=e.NavigationNodeInputSchema;exports.NavigationNodeSchema=e.NavigationNodeSchema;exports.SearchConfigSchema=e.SearchConfigSchema;exports.VendureVersionSchema=e.VendureVersionSchema;exports.buildBreadcrumbs=e.buildBreadcrumbs;exports.findNavigationNode=e.findNavigationNode;exports.flattenNavigation=e.flattenNavigation;exports.getLeafNodes=e.getLeafNodes;exports.getNodesAtDepth=e.getNodesAtDepth;exports.getPrevNextNodes=e.getPrevNextNodes;exports.isNodeActive=e.isNodeActive;exports.validateManifest=e.validateManifest;exports.filterVisibleNavigation=a.filterVisibleNavigation;exports.getAllFilePaths=a.getAllFilePaths;exports.slugFromFilename=a.slugFromFilename;exports.titleFromFilename=a.titleFromFilename;exports.toSlug=a.toSlug;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browser-safe exports from docs-provider.
|
|
3
|
+
* These utilities can be safely used in client components without bundling Node.js modules.
|
|
4
|
+
*/
|
|
5
|
+
export type { BreadcrumbItem, DocPage, DocPageMeta, DocsPackageManifest, DocsPackageManifestInput, FlatNavigationNode, GitHubConfig, LoadedDocsPackage, NavigationNode, NavigationNodeInput, SearchConfig, VendureVersion, } from './types';
|
|
6
|
+
export { BreadcrumbItemSchema, DocPageMetaSchema, DocPageSchema, DocsPackageManifestInputSchema, DocsPackageManifestSchema, FlatNavigationNodeSchema, GitHubConfigSchema, LoadedDocsPackageSchema, NavigationNodeInputSchema, NavigationNodeSchema, SearchConfigSchema, VendureVersionSchema, } from './schema';
|
|
7
|
+
export { ManifestValidationError, buildBreadcrumbs, findNavigationNode, flattenNavigation, getLeafNodes, getNodesAtDepth, getPrevNextNodes, isNodeActive, validateManifest, } from './manifest';
|
|
8
|
+
export { filterVisibleNavigation, getAllFilePaths } from './navigation-utils';
|
|
9
|
+
export { slugFromFilename, titleFromFilename, toSlug } from './slug-utils';
|
|
10
|
+
//# sourceMappingURL=browser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,YAAY,EACV,cAAc,EACd,OAAO,EACP,WAAW,EACX,mBAAmB,EACnB,wBAAwB,EACxB,kBAAkB,EAClB,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,mBAAmB,EACnB,YAAY,EACZ,cAAc,GACf,MAAM,SAAS,CAAA;AAGhB,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,aAAa,EACb,8BAA8B,EAC9B,yBAAyB,EACzB,wBAAwB,EACxB,kBAAkB,EAClB,uBAAuB,EACvB,yBAAyB,EACzB,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,UAAU,CAAA;AAGjB,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,GACjB,MAAM,YAAY,CAAA;AAGnB,OAAO,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAG7E,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA"}
|
package/dist/browser.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { B as s, D as t, a as i, b as o, c, F as g, G as m, L as n, M as d, N as r, d as h, S as N, V as l, e as S, f, g as v, h as u, i as D, j as F, k as P, v as b } from "./manifest-ZCrzbFSf.js";
|
|
2
|
+
import { f as p, g as V, s as k, t as x, a as A } from "./slug-utils-DVKYe9h8.js";
|
|
3
|
+
export {
|
|
4
|
+
s as BreadcrumbItemSchema,
|
|
5
|
+
t as DocPageMetaSchema,
|
|
6
|
+
i as DocPageSchema,
|
|
7
|
+
o as DocsPackageManifestInputSchema,
|
|
8
|
+
c as DocsPackageManifestSchema,
|
|
9
|
+
g as FlatNavigationNodeSchema,
|
|
10
|
+
m as GitHubConfigSchema,
|
|
11
|
+
n as LoadedDocsPackageSchema,
|
|
12
|
+
d as ManifestValidationError,
|
|
13
|
+
r as NavigationNodeInputSchema,
|
|
14
|
+
h as NavigationNodeSchema,
|
|
15
|
+
N as SearchConfigSchema,
|
|
16
|
+
l as VendureVersionSchema,
|
|
17
|
+
S as buildBreadcrumbs,
|
|
18
|
+
p as filterVisibleNavigation,
|
|
19
|
+
f as findNavigationNode,
|
|
20
|
+
v as flattenNavigation,
|
|
21
|
+
V as getAllFilePaths,
|
|
22
|
+
u as getLeafNodes,
|
|
23
|
+
D as getNodesAtDepth,
|
|
24
|
+
F as getPrevNextNodes,
|
|
25
|
+
P as isNodeActive,
|
|
26
|
+
k as slugFromFilename,
|
|
27
|
+
x as titleFromFilename,
|
|
28
|
+
A as toSlug,
|
|
29
|
+
b as validateManifest
|
|
30
|
+
};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
var c = Object.defineProperty;
|
|
2
|
+
var m = (a, t, r) => t in a ? c(a, t, { enumerable: !0, configurable: !0, writable: !0, value: r }) : a[t] = r;
|
|
3
|
+
var o = (a, t, r) => m(a, typeof t != "symbol" ? t + "" : t, r);
|
|
4
|
+
import i from "gray-matter";
|
|
5
|
+
import { D as u } from "./manifest-ZCrzbFSf.js";
|
|
6
|
+
class s extends Error {
|
|
7
|
+
constructor(r, e, n) {
|
|
8
|
+
super(r);
|
|
9
|
+
o(this, "filePath");
|
|
10
|
+
o(this, "originalError");
|
|
11
|
+
this.name = "FrontmatterParseError", this.filePath = e, this.originalError = n;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
function F(a, t) {
|
|
15
|
+
try {
|
|
16
|
+
const { data: r, content: e } = i(a);
|
|
17
|
+
return {
|
|
18
|
+
meta: d(r, t),
|
|
19
|
+
content: e.trim()
|
|
20
|
+
};
|
|
21
|
+
} catch (r) {
|
|
22
|
+
throw r instanceof s ? r : new s(
|
|
23
|
+
`Failed to parse frontmatter${t ? ` in ${t}` : ""}`,
|
|
24
|
+
t,
|
|
25
|
+
r
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
function d(a, t) {
|
|
30
|
+
const r = u.safeParse(a);
|
|
31
|
+
if (!r.success) {
|
|
32
|
+
const e = r.error.issues.map((n) => ` - ${n.path.join(".")}: ${n.message}`).join(`
|
|
33
|
+
`);
|
|
34
|
+
throw new s(
|
|
35
|
+
`Invalid frontmatter${t ? ` in ${t}` : ""}:
|
|
36
|
+
${e}`,
|
|
37
|
+
t,
|
|
38
|
+
r.error
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
return r.data;
|
|
42
|
+
}
|
|
43
|
+
function $(a) {
|
|
44
|
+
return a.trimStart().startsWith("---");
|
|
45
|
+
}
|
|
46
|
+
function l(a) {
|
|
47
|
+
const { data: t } = i(a);
|
|
48
|
+
return t;
|
|
49
|
+
}
|
|
50
|
+
export {
|
|
51
|
+
s as F,
|
|
52
|
+
l as e,
|
|
53
|
+
$ as h,
|
|
54
|
+
F as p,
|
|
55
|
+
d as v
|
|
56
|
+
};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";var m=Object.defineProperty;var u=(a,t,r)=>t in a?m(a,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):a[t]=r;var s=(a,t,r)=>u(a,typeof t!="symbol"?t+"":t,r);const i=require("gray-matter"),d=require("./manifest-D-EWZlSh.cjs");class o extends Error{constructor(r,e,n){super(r);s(this,"filePath");s(this,"originalError");this.name="FrontmatterParseError",this.filePath=e,this.originalError=n}}function F(a,t){try{const{data:r,content:e}=i(a);return{meta:c(r,t),content:e.trim()}}catch(r){throw r instanceof o?r:new o(`Failed to parse frontmatter${t?` in ${t}`:""}`,t,r)}}function c(a,t){const r=d.DocPageMetaSchema.safeParse(a);if(!r.success){const e=r.error.issues.map(n=>` - ${n.path.join(".")}: ${n.message}`).join(`
|
|
2
|
+
`);throw new o(`Invalid frontmatter${t?` in ${t}`:""}:
|
|
3
|
+
${e}`,t,r.error)}return r.data}function h(a){return a.trimStart().startsWith("---")}function f(a){const{data:t}=i(a);return t}exports.FrontmatterParseError=o;exports.extractFrontmatterData=f;exports.hasFrontmatter=h;exports.parseFrontmatter=F;exports.validateFrontmatter=c;
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var L=Object.defineProperty;var R=(e,t,r)=>t in e?L(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var S=(e,t,r)=>R(e,typeof t!="symbol"?t+"":t,r);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("./manifest-D-EWZlSh.cjs"),g=require("./frontmatter-CJYZSUYM.cjs"),l=require("./slug-utils-DUQgikEz.cjs"),N=require("fs"),y=require("path"),I=(e,t)=>e.order!==t.order?e.order-t.order:e.title.localeCompare(t.title);function j(e,t={}){const{extensions:r=[".mdx",".md"],filter:i,sort:o=I}=t,n=C(e,r);return(i?n.filter(i):n).sort(o).map(m=>({title:m.title,slug:m.slug,file:m.path}))}function q(e,t={}){return V(e,t,0)}function V(e,t,r){const{extensions:i=[".mdx",".md"],filter:o,sort:n=I,maxDepth:c=1/0,folderFilter:u}=t,m=N.readdirSync(e,{withFileTypes:!0}),h=[],$=C(e,i),D=(o?$.filter(o):$).sort(n);for(const f of D)h.push({title:f.title,slug:f.slug,file:f.path});if(r<c){const f=m.filter(d=>d.isDirectory());for(const d of f){if(u){const s=y.join(e,d.name);if(!u(d.name,s))continue}const F=y.join(e,d.name),v=V(F,t,r+1);if(v.length>0){const s=B(F,i);h.push({title:(s==null?void 0:s.title)||l.titleFromFilename(d.name),slug:l.slugFromFilename(d.name),file:s==null?void 0:s.path,children:v.filter(P=>!(s&&P.file===s.path))})}}}return h.sort((f,d)=>{var E,w;const F=D.find(M=>M.slug===f.slug),v=D.find(M=>M.slug===d.slug);if(F&&v)return n(F,v);const s=!!f.file&&!((E=f.children)!=null&&E.length),P=!!d.file&&!((w=d.children)!=null&&w.length);return s!==P?s?-1:1:(f.title||"").localeCompare(d.title||"")})}function C(e,t){try{const r=N.readdirSync(e,{withFileTypes:!0}),i=[];for(const o of r){if(!o.isFile())continue;const n=t.find(h=>o.name.toLowerCase().endsWith(h));if(!n||o.name.slice(0,-n.length).toLowerCase()==="index")continue;const u=y.join(e,o.name),m=k(u,o.name,n);i.push(m)}return i}catch{return[]}}function k(e,t,r){let i={},o=l.titleFromFilename(t),n=1/0;try{const c=N.readFileSync(e,"utf-8");i=g.extractFrontmatterData(c),i.title&&typeof i.title=="string"&&(o=i.title),typeof i.order=="number"&&(n=i.order)}catch{}return{path:e,filename:t,extension:r,frontmatter:i,order:n,title:o,slug:l.slugFromFilename(t)}}function B(e,t){for(const r of t){const i=y.join(e,`index${r}`);try{if(N.statSync(i).isFile())return k(i,`index${r}`,r)}catch{}}}class b extends Error{constructor(r,i,o,n){super(r);S(this,"nodePath");S(this,"filePath");S(this,"originalError");this.name="ManifestResolutionError",this.nodePath=i,this.filePath=o,this.originalError=n}}function T(e,t={}){const{strict:r=!0}=t,i=x(e.navigation,"",r);return{id:e.id,name:e.name,version:e.version,vendureVersion:e.vendureVersion,navigation:i,search:e.search,github:e.github,basePath:e.basePath}}function x(e,t,r){return e.map((i,o)=>U(i,t,o,r))}function U(e,t,r,i){const o=t?`${t}[${r}]`:`navigation[${r}]`;if(e.title&&e.slug)return{title:e.title,slug:e.slug,file:e.file,children:e.children?x(e.children,`${o}.children`,i):void 0,badge:e.badge,hidden:e.hidden};let n=e.title,c=e.slug;if(e.file&&(c||(c=l.slugFromFilename(e.file)),n||(n=W(e.file,o,i))),!n){if(i)throw new b(`Navigation node at ${o} is missing title and has no file to derive it from`,o,e.file);n=c||`Unknown (${r})`}if(!c){if(i)throw new b(`Navigation node at ${o} is missing slug and has no file to derive it from`,o,e.file);c=n?l.slugFromFilename(n):`node-${r}`}return{title:n,slug:c,file:e.file,children:e.children?x(e.children,`${o}.children`,i):void 0,badge:e.badge,hidden:e.hidden}}function W(e,t,r){try{const i=N.readFileSync(e,"utf-8"),o=g.extractFrontmatterData(i);return o.title&&typeof o.title=="string"?o.title:l.titleFromFilename(e)}catch(i){if(r)throw new b(`Failed to read file for title derivation at ${t}: ${e}`,t,e,i);return l.titleFromFilename(e)}}function G(e){return A(e.navigation)}function A(e){for(const t of e)if(!t.title||!t.slug||t.children&&A(t.children))return!0;return!1}exports.BreadcrumbItemSchema=a.BreadcrumbItemSchema;exports.DocPageMetaSchema=a.DocPageMetaSchema;exports.DocPageSchema=a.DocPageSchema;exports.DocsPackageManifestInputSchema=a.DocsPackageManifestInputSchema;exports.DocsPackageManifestSchema=a.DocsPackageManifestSchema;exports.FlatNavigationNodeSchema=a.FlatNavigationNodeSchema;exports.GitHubConfigSchema=a.GitHubConfigSchema;exports.LoadedDocsPackageSchema=a.LoadedDocsPackageSchema;exports.ManifestValidationError=a.ManifestValidationError;exports.NavigationNodeInputSchema=a.NavigationNodeInputSchema;exports.NavigationNodeSchema=a.NavigationNodeSchema;exports.SearchConfigSchema=a.SearchConfigSchema;exports.VendureVersionSchema=a.VendureVersionSchema;exports.buildBreadcrumbs=a.buildBreadcrumbs;exports.findNavigationNode=a.findNavigationNode;exports.flattenNavigation=a.flattenNavigation;exports.getLeafNodes=a.getLeafNodes;exports.getNodesAtDepth=a.getNodesAtDepth;exports.getPrevNextNodes=a.getPrevNextNodes;exports.isNodeActive=a.isNodeActive;exports.validateManifest=a.validateManifest;exports.FrontmatterParseError=g.FrontmatterParseError;exports.extractFrontmatterData=g.extractFrontmatterData;exports.hasFrontmatter=g.hasFrontmatter;exports.parseFrontmatter=g.parseFrontmatter;exports.validateFrontmatter=g.validateFrontmatter;exports.filterVisibleNavigation=l.filterVisibleNavigation;exports.getAllFilePaths=l.getAllFilePaths;exports.slugFromFilename=l.slugFromFilename;exports.titleFromFilename=l.titleFromFilename;exports.toSlug=l.toSlug;exports.ManifestResolutionError=b;exports.createNavigationFromFolder=j;exports.createNestedNavigationFromFolder=q;exports.manifestNeedsResolution=G;exports.resolveManifest=T;
|
package/dist/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ export { BreadcrumbItemSchema, DocPageMetaSchema, DocPageSchema, DocsPackageMani
|
|
|
3
3
|
export { FrontmatterParseError, extractFrontmatterData, hasFrontmatter, parseFrontmatter, validateFrontmatter, } from './frontmatter';
|
|
4
4
|
export type { ParsedFrontmatter } from './frontmatter';
|
|
5
5
|
export { ManifestValidationError, buildBreadcrumbs, findNavigationNode, flattenNavigation, getLeafNodes, getNodesAtDepth, getPrevNextNodes, isNodeActive, validateManifest, } from './manifest';
|
|
6
|
-
export { getAllFilePaths } from './navigation-utils';
|
|
6
|
+
export { filterVisibleNavigation, getAllFilePaths } from './navigation-utils';
|
|
7
7
|
export type { CustomFieldPropertyProps, GenerationInfoProps, GraphQLDocProps, LinkCardProps, MdxComponentProps, MemberDescriptionProps, MemberInfoProps, StackblitzProps, } from './mdx-components';
|
|
8
8
|
export { slugFromFilename, titleFromFilename, toSlug } from './slug-utils';
|
|
9
9
|
export { createNavigationFromFolder, createNestedNavigationFromFolder } from './folder-utils';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,cAAc,EACd,OAAO,EACP,WAAW,EACX,mBAAmB,EACnB,wBAAwB,EACxB,kBAAkB,EAClB,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,mBAAmB,EACnB,YAAY,EACZ,cAAc,GACf,MAAM,SAAS,CAAA;AAGhB,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,aAAa,EACb,8BAA8B,EAC9B,yBAAyB,EACzB,wBAAwB,EACxB,kBAAkB,EAClB,uBAAuB,EACvB,yBAAyB,EACzB,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,UAAU,CAAA;AAGjB,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,cAAc,EACd,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,eAAe,CAAA;AACtB,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAGtD,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,GACjB,MAAM,YAAY,CAAA;AAGnB,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,cAAc,EACd,OAAO,EACP,WAAW,EACX,mBAAmB,EACnB,wBAAwB,EACxB,kBAAkB,EAClB,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,mBAAmB,EACnB,YAAY,EACZ,cAAc,GACf,MAAM,SAAS,CAAA;AAGhB,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,aAAa,EACb,8BAA8B,EAC9B,yBAAyB,EACzB,wBAAwB,EACxB,kBAAkB,EAClB,uBAAuB,EACvB,yBAAyB,EACzB,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,UAAU,CAAA;AAGjB,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,cAAc,EACd,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,eAAe,CAAA;AACtB,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAGtD,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,GACjB,MAAM,YAAY,CAAA;AAGnB,OAAO,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAG7E,YAAY,EACV,wBAAwB,EACxB,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,sBAAsB,EACtB,eAAe,EACf,eAAe,GAChB,MAAM,kBAAkB,CAAA;AAGzB,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAG1E,OAAO,EAAE,0BAA0B,EAAE,gCAAgC,EAAE,MAAM,gBAAgB,CAAA;AAC7F,YAAY,EACV,iCAAiC,EACjC,uCAAuC,EACvC,QAAQ,GACT,MAAM,gBAAgB,CAAA;AAGvB,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,eAAe,GAChB,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,245 +1,233 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
3
|
-
var
|
|
4
|
-
import { e as
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
function
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
}
|
|
16
|
-
function T(e) {
|
|
17
|
-
return e.toLowerCase().trim().replace(/[^\w\s-]/g, "").replace(/\s+/g, "-").replace(/-+/g, "-").replace(/^-|-$/g, "");
|
|
18
|
-
}
|
|
19
|
-
function F(e) {
|
|
20
|
-
const i = (e.split("/").pop() || e).replace(/\.(mdx?|md)$/i, "").replace(/^\d+-/, "");
|
|
21
|
-
return T(i);
|
|
22
|
-
}
|
|
23
|
-
function N(e) {
|
|
24
|
-
return (e.split("/").pop() || e).replace(/\.(mdx?|md)$/i, "").replace(/^\d+-/, "").replace(/[-_]+/g, " ").toLowerCase().replace(/\b\w/g, (n) => n.toUpperCase()).trim();
|
|
25
|
-
}
|
|
26
|
-
const I = (e, t) => e.order !== t.order ? e.order - t.order : e.title.localeCompare(t.title);
|
|
27
|
-
function O(e, t = {}) {
|
|
28
|
-
const { extensions: r = [".mdx", ".md"], filter: i, sort: n = I } = t, o = W(e, r);
|
|
29
|
-
return (i ? o.filter(i) : o).sort(n).map((f) => ({
|
|
1
|
+
var A = Object.defineProperty;
|
|
2
|
+
var B = (e, t, i) => t in e ? A(e, t, { enumerable: !0, configurable: !0, writable: !0, value: i }) : e[t] = i;
|
|
3
|
+
var m = (e, t, i) => B(e, typeof t != "symbol" ? t + "" : t, i);
|
|
4
|
+
import { B as _, D as ee, a as te, b as re, c as ie, F as oe, G as ne, L as se, M as ae, N as le, d as ce, S as fe, V as de, e as he, f as ue, g as ge, h as me, i as ve, j as Fe, k as Ne, v as Se } from "./manifest-ZCrzbFSf.js";
|
|
5
|
+
import { e as M } from "./frontmatter-C0Wmtdep.js";
|
|
6
|
+
import { F as xe, h as be, p as $e, v as we } from "./frontmatter-C0Wmtdep.js";
|
|
7
|
+
import { s as v, t as F } from "./slug-utils-DVKYe9h8.js";
|
|
8
|
+
import { f as Ee, g as Me, a as Ie } from "./slug-utils-DVKYe9h8.js";
|
|
9
|
+
import { readdirSync as I, readFileSync as P, statSync as T } from "fs";
|
|
10
|
+
import { join as N } from "path";
|
|
11
|
+
const V = (e, t) => e.order !== t.order ? e.order - t.order : e.title.localeCompare(t.title);
|
|
12
|
+
function K(e, t = {}) {
|
|
13
|
+
const { extensions: i = [".mdx", ".md"], filter: r, sort: o = V } = t, n = k(e, i);
|
|
14
|
+
return (r ? n.filter(r) : n).sort(o).map((f) => ({
|
|
30
15
|
title: f.title,
|
|
31
16
|
slug: f.slug,
|
|
32
17
|
file: f.path
|
|
33
18
|
}));
|
|
34
19
|
}
|
|
35
|
-
function
|
|
36
|
-
return
|
|
20
|
+
function O(e, t = {}) {
|
|
21
|
+
return C(e, t, 0);
|
|
37
22
|
}
|
|
38
|
-
function
|
|
23
|
+
function C(e, t, i) {
|
|
39
24
|
const {
|
|
40
|
-
extensions:
|
|
41
|
-
filter:
|
|
42
|
-
sort:
|
|
25
|
+
extensions: r = [".mdx", ".md"],
|
|
26
|
+
filter: o,
|
|
27
|
+
sort: n = V,
|
|
43
28
|
maxDepth: a = 1 / 0,
|
|
44
29
|
folderFilter: d
|
|
45
|
-
} = t, f =
|
|
46
|
-
for (const c of
|
|
47
|
-
|
|
30
|
+
} = t, f = I(e, { withFileTypes: !0 }), h = [], w = k(e, r), S = (o ? w.filter(o) : w).sort(n);
|
|
31
|
+
for (const c of S)
|
|
32
|
+
h.push({
|
|
48
33
|
title: c.title,
|
|
49
34
|
slug: c.slug,
|
|
50
35
|
file: c.path
|
|
51
36
|
});
|
|
52
|
-
if (
|
|
37
|
+
if (i < a) {
|
|
53
38
|
const c = f.filter((l) => l.isDirectory());
|
|
54
39
|
for (const l of c) {
|
|
55
40
|
if (d) {
|
|
56
|
-
const s =
|
|
41
|
+
const s = N(e, l.name);
|
|
57
42
|
if (!d(l.name, s))
|
|
58
43
|
continue;
|
|
59
44
|
}
|
|
60
|
-
const
|
|
61
|
-
if (
|
|
62
|
-
const s =
|
|
63
|
-
|
|
64
|
-
title: (s == null ? void 0 : s.title) ||
|
|
65
|
-
slug:
|
|
45
|
+
const u = N(e, l.name), g = C(u, t, i + 1);
|
|
46
|
+
if (g.length > 0) {
|
|
47
|
+
const s = W(u, r);
|
|
48
|
+
h.push({
|
|
49
|
+
title: (s == null ? void 0 : s.title) || F(l.name),
|
|
50
|
+
slug: v(l.name),
|
|
66
51
|
file: s == null ? void 0 : s.path,
|
|
67
|
-
children:
|
|
52
|
+
children: g.filter((y) => !(s && y.file === s.path))
|
|
68
53
|
});
|
|
69
54
|
}
|
|
70
55
|
}
|
|
71
56
|
}
|
|
72
|
-
return
|
|
73
|
-
var
|
|
74
|
-
const
|
|
75
|
-
if (
|
|
76
|
-
return
|
|
77
|
-
const s = !!c.file && !((
|
|
78
|
-
return s !==
|
|
57
|
+
return h.sort((c, l) => {
|
|
58
|
+
var D, E;
|
|
59
|
+
const u = S.find((x) => x.slug === c.slug), g = S.find((x) => x.slug === l.slug);
|
|
60
|
+
if (u && g)
|
|
61
|
+
return n(u, g);
|
|
62
|
+
const s = !!c.file && !((D = c.children) != null && D.length), y = !!l.file && !((E = l.children) != null && E.length);
|
|
63
|
+
return s !== y ? s ? -1 : 1 : (c.title || "").localeCompare(l.title || "");
|
|
79
64
|
});
|
|
80
65
|
}
|
|
81
|
-
function
|
|
66
|
+
function k(e, t) {
|
|
82
67
|
try {
|
|
83
|
-
const
|
|
84
|
-
for (const
|
|
85
|
-
if (!
|
|
86
|
-
const
|
|
87
|
-
if (!
|
|
88
|
-
const d =
|
|
89
|
-
|
|
68
|
+
const i = I(e, { withFileTypes: !0 }), r = [];
|
|
69
|
+
for (const o of i) {
|
|
70
|
+
if (!o.isFile()) continue;
|
|
71
|
+
const n = t.find((h) => o.name.toLowerCase().endsWith(h));
|
|
72
|
+
if (!n || o.name.slice(0, -n.length).toLowerCase() === "index") continue;
|
|
73
|
+
const d = N(e, o.name), f = L(d, o.name, n);
|
|
74
|
+
r.push(f);
|
|
90
75
|
}
|
|
91
|
-
return
|
|
76
|
+
return r;
|
|
92
77
|
} catch {
|
|
93
78
|
return [];
|
|
94
79
|
}
|
|
95
80
|
}
|
|
96
|
-
function
|
|
97
|
-
let
|
|
81
|
+
function L(e, t, i) {
|
|
82
|
+
let r = {}, o = F(t), n = 1 / 0;
|
|
98
83
|
try {
|
|
99
|
-
const a =
|
|
100
|
-
|
|
84
|
+
const a = P(e, "utf-8");
|
|
85
|
+
r = M(a), r.title && typeof r.title == "string" && (o = r.title), typeof r.order == "number" && (n = r.order);
|
|
101
86
|
} catch {
|
|
102
87
|
}
|
|
103
88
|
return {
|
|
104
89
|
path: e,
|
|
105
90
|
filename: t,
|
|
106
|
-
extension:
|
|
107
|
-
frontmatter:
|
|
108
|
-
order:
|
|
109
|
-
title:
|
|
110
|
-
slug:
|
|
91
|
+
extension: i,
|
|
92
|
+
frontmatter: r,
|
|
93
|
+
order: n,
|
|
94
|
+
title: o,
|
|
95
|
+
slug: v(t)
|
|
111
96
|
};
|
|
112
97
|
}
|
|
113
|
-
function
|
|
114
|
-
for (const
|
|
115
|
-
const
|
|
98
|
+
function W(e, t) {
|
|
99
|
+
for (const i of t) {
|
|
100
|
+
const r = N(e, `index${i}`);
|
|
116
101
|
try {
|
|
117
|
-
if (
|
|
118
|
-
return
|
|
102
|
+
if (T(r).isFile())
|
|
103
|
+
return L(r, `index${i}`, i);
|
|
119
104
|
} catch {
|
|
120
105
|
}
|
|
121
106
|
}
|
|
122
107
|
}
|
|
123
|
-
class
|
|
124
|
-
constructor(r,
|
|
125
|
-
super(
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
this.name = "ManifestResolutionError", this.nodePath =
|
|
108
|
+
class b extends Error {
|
|
109
|
+
constructor(i, r, o, n) {
|
|
110
|
+
super(i);
|
|
111
|
+
m(this, "nodePath");
|
|
112
|
+
m(this, "filePath");
|
|
113
|
+
m(this, "originalError");
|
|
114
|
+
this.name = "ManifestResolutionError", this.nodePath = r, this.filePath = o, this.originalError = n;
|
|
130
115
|
}
|
|
131
116
|
}
|
|
132
|
-
function
|
|
133
|
-
const { strict:
|
|
117
|
+
function Q(e, t = {}) {
|
|
118
|
+
const { strict: i = !0 } = t, r = $(e.navigation, "", i);
|
|
134
119
|
return {
|
|
135
120
|
id: e.id,
|
|
136
121
|
name: e.name,
|
|
137
122
|
version: e.version,
|
|
138
123
|
vendureVersion: e.vendureVersion,
|
|
139
|
-
navigation:
|
|
124
|
+
navigation: r,
|
|
140
125
|
search: e.search,
|
|
141
126
|
github: e.github,
|
|
142
127
|
basePath: e.basePath
|
|
143
128
|
};
|
|
144
129
|
}
|
|
145
|
-
function
|
|
146
|
-
return e.map((
|
|
130
|
+
function $(e, t, i) {
|
|
131
|
+
return e.map((r, o) => j(r, t, o, i));
|
|
147
132
|
}
|
|
148
|
-
function j(e, t,
|
|
149
|
-
const
|
|
133
|
+
function j(e, t, i, r) {
|
|
134
|
+
const o = t ? `${t}[${i}]` : `navigation[${i}]`;
|
|
150
135
|
if (e.title && e.slug)
|
|
151
136
|
return {
|
|
152
137
|
title: e.title,
|
|
153
138
|
slug: e.slug,
|
|
154
139
|
file: e.file,
|
|
155
|
-
children: e.children ?
|
|
156
|
-
badge: e.badge
|
|
140
|
+
children: e.children ? $(e.children, `${o}.children`, r) : void 0,
|
|
141
|
+
badge: e.badge,
|
|
142
|
+
hidden: e.hidden
|
|
157
143
|
};
|
|
158
|
-
let
|
|
159
|
-
if (e.file && (a || (a =
|
|
160
|
-
if (
|
|
161
|
-
throw new
|
|
162
|
-
`Navigation node at ${
|
|
163
|
-
|
|
144
|
+
let n = e.title, a = e.slug;
|
|
145
|
+
if (e.file && (a || (a = v(e.file)), n || (n = p(e.file, o, r))), !n) {
|
|
146
|
+
if (r)
|
|
147
|
+
throw new b(
|
|
148
|
+
`Navigation node at ${o} is missing title and has no file to derive it from`,
|
|
149
|
+
o,
|
|
164
150
|
e.file
|
|
165
151
|
);
|
|
166
|
-
|
|
152
|
+
n = a || `Unknown (${i})`;
|
|
167
153
|
}
|
|
168
154
|
if (!a) {
|
|
169
|
-
if (
|
|
170
|
-
throw new
|
|
171
|
-
`Navigation node at ${
|
|
172
|
-
|
|
155
|
+
if (r)
|
|
156
|
+
throw new b(
|
|
157
|
+
`Navigation node at ${o} is missing slug and has no file to derive it from`,
|
|
158
|
+
o,
|
|
173
159
|
e.file
|
|
174
160
|
);
|
|
175
|
-
a =
|
|
161
|
+
a = n ? v(n) : `node-${i}`;
|
|
176
162
|
}
|
|
177
163
|
return {
|
|
178
|
-
title:
|
|
164
|
+
title: n,
|
|
179
165
|
slug: a,
|
|
180
166
|
file: e.file,
|
|
181
|
-
children: e.children ?
|
|
182
|
-
badge: e.badge
|
|
167
|
+
children: e.children ? $(e.children, `${o}.children`, r) : void 0,
|
|
168
|
+
badge: e.badge,
|
|
169
|
+
hidden: e.hidden
|
|
183
170
|
};
|
|
184
171
|
}
|
|
185
|
-
function
|
|
172
|
+
function p(e, t, i) {
|
|
186
173
|
try {
|
|
187
|
-
const
|
|
188
|
-
return
|
|
189
|
-
} catch (
|
|
190
|
-
if (
|
|
191
|
-
throw new
|
|
174
|
+
const r = P(e, "utf-8"), o = M(r);
|
|
175
|
+
return o.title && typeof o.title == "string" ? o.title : F(e);
|
|
176
|
+
} catch (r) {
|
|
177
|
+
if (i)
|
|
178
|
+
throw new b(
|
|
192
179
|
`Failed to read file for title derivation at ${t}: ${e}`,
|
|
193
180
|
t,
|
|
194
181
|
e,
|
|
195
|
-
|
|
182
|
+
r
|
|
196
183
|
);
|
|
197
|
-
return
|
|
184
|
+
return F(e);
|
|
198
185
|
}
|
|
199
186
|
}
|
|
200
|
-
function
|
|
201
|
-
return
|
|
187
|
+
function X(e) {
|
|
188
|
+
return R(e.navigation);
|
|
202
189
|
}
|
|
203
|
-
function
|
|
190
|
+
function R(e) {
|
|
204
191
|
for (const t of e)
|
|
205
|
-
if (!t.title || !t.slug || t.children &&
|
|
192
|
+
if (!t.title || !t.slug || t.children && R(t.children))
|
|
206
193
|
return !0;
|
|
207
194
|
return !1;
|
|
208
195
|
}
|
|
209
196
|
export {
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
197
|
+
_ as BreadcrumbItemSchema,
|
|
198
|
+
ee as DocPageMetaSchema,
|
|
199
|
+
te as DocPageSchema,
|
|
200
|
+
re as DocsPackageManifestInputSchema,
|
|
201
|
+
ie as DocsPackageManifestSchema,
|
|
202
|
+
oe as FlatNavigationNodeSchema,
|
|
203
|
+
xe as FrontmatterParseError,
|
|
204
|
+
ne as GitHubConfigSchema,
|
|
205
|
+
se as LoadedDocsPackageSchema,
|
|
206
|
+
b as ManifestResolutionError,
|
|
207
|
+
ae as ManifestValidationError,
|
|
208
|
+
le as NavigationNodeInputSchema,
|
|
209
|
+
ce as NavigationNodeSchema,
|
|
210
|
+
fe as SearchConfigSchema,
|
|
211
|
+
de as VendureVersionSchema,
|
|
212
|
+
he as buildBreadcrumbs,
|
|
213
|
+
K as createNavigationFromFolder,
|
|
214
|
+
O as createNestedNavigationFromFolder,
|
|
215
|
+
M as extractFrontmatterData,
|
|
216
|
+
Ee as filterVisibleNavigation,
|
|
217
|
+
ue as findNavigationNode,
|
|
218
|
+
ge as flattenNavigation,
|
|
219
|
+
Me as getAllFilePaths,
|
|
220
|
+
me as getLeafNodes,
|
|
221
|
+
ve as getNodesAtDepth,
|
|
222
|
+
Fe as getPrevNextNodes,
|
|
223
|
+
be as hasFrontmatter,
|
|
224
|
+
Ne as isNodeActive,
|
|
225
|
+
X as manifestNeedsResolution,
|
|
226
|
+
$e as parseFrontmatter,
|
|
227
|
+
Q as resolveManifest,
|
|
228
|
+
v as slugFromFilename,
|
|
229
|
+
F as titleFromFilename,
|
|
230
|
+
Ie as toSlug,
|
|
231
|
+
we as validateFrontmatter,
|
|
232
|
+
Se as validateManifest
|
|
245
233
|
};
|