@brillout/docpress 0.1.10 → 0.1.11
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/dist/chunk-2SRWLPTC.js +9 -0
- package/dist/chunk-2SRWLPTC.js.map +1 -0
- package/dist/chunk-G2A5MZJA.js +48 -0
- package/dist/chunk-G2A5MZJA.js.map +1 -0
- package/dist/{chunk-UCY72YQS.js → chunk-M7LTQJLV.js} +6 -6
- package/dist/chunk-M7LTQJLV.js.map +1 -0
- package/dist/chunk-P6M6A4HU.js +154 -0
- package/dist/chunk-P6M6A4HU.js.map +1 -0
- package/dist/cli/index.js +3 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/{src/components → components}/features/FeatureList.css +0 -0
- package/dist/components/features/FeatureList.css.map +1 -0
- package/dist/{src/components → components}/features/FeatureList.d.ts +0 -0
- package/dist/components/features/FeatureList.js +8 -0
- package/dist/{src/components → components}/features/FeatureList.js.map +0 -0
- package/dist/{src/components → components}/features/initFeatureList.d.ts +0 -0
- package/dist/{src/components → components}/features/initFeatureList.js +2 -2
- package/dist/components/features/initFeatureList.js.map +1 -0
- package/dist/{devServer-UEJORYCC.js → devServer-TDBL5PHQ.js} +3 -3
- package/dist/devServer-TDBL5PHQ.js.map +1 -0
- package/dist/index.d.ts +62 -60
- package/dist/index.js +10 -9
- package/dist/index.js.map +1 -1
- package/dist/{src/renderer → renderer}/_default.page.client.css +2 -11
- package/dist/renderer/_default.page.client.css.map +1 -0
- package/dist/{src/renderer → renderer}/_default.page.client.d.ts +0 -0
- package/dist/{src/renderer → renderer}/_default.page.client.js +2 -4
- package/dist/renderer/_default.page.client.js.map +1 -0
- package/dist/{src/renderer → renderer}/_default.page.server.css +0 -0
- package/dist/renderer/_default.page.server.css.map +1 -0
- package/dist/{src/renderer → renderer}/_default.page.server.d.ts +0 -0
- package/dist/{src/renderer → renderer}/_default.page.server.js +8 -8
- package/dist/renderer/_default.page.server.js.map +1 -0
- package/dist/vite.config.d.ts +5 -0
- package/dist/vite.config.js +150 -0
- package/dist/vite.config.js.map +1 -0
- package/package.json +11 -25
- package/readme.md +4 -2
- package/dist/chunk-3NFN2KUH.js +0 -1
- package/dist/chunk-3NFN2KUH.js.map +0 -1
- package/dist/chunk-G2KXEHNF.js +0 -56
- package/dist/chunk-G2KXEHNF.js.map +0 -1
- package/dist/chunk-G6OTZHVA.js +0 -9
- package/dist/chunk-G6OTZHVA.js.map +0 -1
- package/dist/chunk-JKLALMFU.js +0 -103
- package/dist/chunk-JKLALMFU.js.map +0 -1
- package/dist/chunk-UCY72YQS.js.map +0 -1
- package/dist/devServer-UEJORYCC.js.map +0 -1
- package/dist/src/components/features/FeatureList.css.map +0 -1
- package/dist/src/components/features/FeatureList.js +0 -8
- package/dist/src/components/features/initFeatureList.js.map +0 -1
- package/dist/src/renderer/_default.page.client.css.map +0 -1
- package/dist/src/renderer/_default.page.client.js.map +0 -1
- package/dist/src/renderer/_default.page.server.css.map +0 -1
- package/dist/src/renderer/_default.page.server.js.map +0 -1
- package/index.ts +0 -2
- package/vite.config/markdownHeadings.ts +0 -128
- package/vite.config.ts +0 -48
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/configFile.ts"],"sourcesContent":["export { configFile }\n\nimport { createRequire } from 'module'\nconst require = createRequire(import.meta.url)\n// Current file: /dist/chunk-XXXXXXXX.js (/src/cli/configFile.ts is bundled into /dist/chunk-XXXXX.js)\nconst configFile = require.resolve('./vite.config.js')\n"],"mappings":";AAEA,SAAS,qBAAqB;AAC9B,IAAMA,WAAU,cAAc,YAAY,GAAG;AAE7C,IAAM,aAAaA,SAAQ,QAAQ,kBAAkB;","names":["require"]}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
// src/utils/assert.ts
|
|
2
|
+
function assert(condition, debugInfo) {
|
|
3
|
+
if (condition) {
|
|
4
|
+
return;
|
|
5
|
+
}
|
|
6
|
+
const hasDebugInfo = debugInfo !== void 0;
|
|
7
|
+
if (hasDebugInfo) {
|
|
8
|
+
console.log(debugInfo);
|
|
9
|
+
if (typeof debugInfo === "object") {
|
|
10
|
+
debugInfo = JSON.stringify(debugInfo);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
let errMsg = "[DocPress] Bug. Contact DocPress maintainer.";
|
|
14
|
+
if (hasDebugInfo) {
|
|
15
|
+
errMsg += " Debug info: " + String(debugInfo);
|
|
16
|
+
}
|
|
17
|
+
const err = new Error(errMsg);
|
|
18
|
+
if (isBrowserAndDev()) {
|
|
19
|
+
alert(err.stack);
|
|
20
|
+
}
|
|
21
|
+
throw err;
|
|
22
|
+
}
|
|
23
|
+
function assertUsage(condition, msg) {
|
|
24
|
+
if (condition) {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
const err = new Error("[DocPress][Wrong Usage] " + msg);
|
|
28
|
+
if (isBrowserAndDev()) {
|
|
29
|
+
alert(err.stack);
|
|
30
|
+
}
|
|
31
|
+
throw err;
|
|
32
|
+
}
|
|
33
|
+
function isBrowserAndDev() {
|
|
34
|
+
var _a;
|
|
35
|
+
return typeof window !== "undefined" && ((_a = window == null ? void 0 : window.location) == null ? void 0 : _a.port) !== "";
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// src/utils/isBrowser.ts
|
|
39
|
+
function isBrowser() {
|
|
40
|
+
return typeof window !== "undefined";
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export {
|
|
44
|
+
assert,
|
|
45
|
+
assertUsage,
|
|
46
|
+
isBrowser
|
|
47
|
+
};
|
|
48
|
+
//# sourceMappingURL=chunk-G2A5MZJA.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils/assert.ts","../src/utils/isBrowser.ts"],"sourcesContent":["export { assert }\nexport { assertUsage }\n\nfunction assert(condition: unknown, debugInfo?: unknown): asserts condition {\n if (condition) {\n return\n }\n const hasDebugInfo = debugInfo !== undefined\n if (hasDebugInfo) {\n console.log(debugInfo)\n if (typeof debugInfo === 'object') {\n debugInfo = JSON.stringify(debugInfo)\n }\n }\n let errMsg = '[DocPress] Bug. Contact DocPress maintainer.'\n if (hasDebugInfo) {\n errMsg += ' Debug info: ' + String(debugInfo)\n }\n const err = new Error(errMsg)\n if (isBrowserAndDev()) {\n alert(err.stack)\n }\n throw err\n}\n\nfunction assertUsage(condition: unknown, msg: string): asserts condition {\n if (condition) {\n return\n }\n const err = new Error('[DocPress][Wrong Usage] ' + msg)\n if (isBrowserAndDev()) {\n alert(err.stack)\n }\n throw err\n}\n\nfunction isBrowserAndDev() {\n return typeof window !== 'undefined' && window?.location?.port !== ''\n}\n","export { isBrowser }\n\nfunction isBrowser() {\n return typeof window !== 'undefined'\n}\n"],"mappings":";AAGA,SAAS,OAAO,WAAoB,WAAwC;AAC1E,MAAI,WAAW;AACb;AAAA,EACF;AACA,QAAM,eAAe,cAAc;AACnC,MAAI,cAAc;AAChB,YAAQ,IAAI,SAAS;AACrB,QAAI,OAAO,cAAc,UAAU;AACjC,kBAAY,KAAK,UAAU,SAAS;AAAA,IACtC;AAAA,EACF;AACA,MAAI,SAAS;AACb,MAAI,cAAc;AAChB,cAAU,kBAAkB,OAAO,SAAS;AAAA,EAC9C;AACA,QAAM,MAAM,IAAI,MAAM,MAAM;AAC5B,MAAI,gBAAgB,GAAG;AACrB,UAAM,IAAI,KAAK;AAAA,EACjB;AACA,QAAM;AACR;AAEA,SAAS,YAAY,WAAoB,KAAgC;AACvE,MAAI,WAAW;AACb;AAAA,EACF;AACA,QAAM,MAAM,IAAI,MAAM,6BAA6B,GAAG;AACtD,MAAI,gBAAgB,GAAG;AACrB,UAAM,IAAI,KAAK;AAAA,EACjB;AACA,QAAM;AACR;AAEA,SAAS,kBAAkB;AApC3B;AAqCE,SAAO,OAAO,WAAW,iBAAe,sCAAQ,aAAR,mBAAkB,UAAS;AACrE;;;ACpCA,SAAS,YAAY;AACnB,SAAO,OAAO,WAAW;AAC3B;","names":[]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Emoji
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-P6M6A4HU.js";
|
|
4
4
|
import {
|
|
5
5
|
assert
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-G2A5MZJA.js";
|
|
7
7
|
|
|
8
8
|
// src/components/RepoLink.tsx
|
|
9
9
|
import React2 from "react";
|
|
@@ -168,11 +168,11 @@ function withEmoji(name, title) {
|
|
|
168
168
|
}
|
|
169
169
|
|
|
170
170
|
export {
|
|
171
|
+
getHeadings,
|
|
172
|
+
parseTitle,
|
|
171
173
|
PageContextProvider,
|
|
172
174
|
usePageContext,
|
|
173
175
|
isRepoLink,
|
|
174
|
-
RepoLink
|
|
175
|
-
getHeadings,
|
|
176
|
-
parseTitle
|
|
176
|
+
RepoLink
|
|
177
177
|
};
|
|
178
|
-
//# sourceMappingURL=chunk-
|
|
178
|
+
//# sourceMappingURL=chunk-M7LTQJLV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/RepoLink.tsx","../src/renderer/usePageContext.tsx","../src/headings.ts"],"sourcesContent":["import React from 'react'\nimport { assert } from '../utils/server'\nimport { usePageContext } from '../renderer/usePageContext'\n\nexport { RepoLink }\nexport { isRepoLink }\n\nfunction isRepoLink(href: string) {\n return ['/examples/', '/docs/', '/boilerplates/', '.github/', '/test/'].some((start) => href.startsWith(start))\n}\n\nfunction RepoLink({ path, text, editMode }: { path: string; text?: string | JSX.Element; editMode?: true }) {\n const pageContext = usePageContext()\n assert(isRepoLink(path), { path })\n text = text || path\n if (!path.startsWith('/')) {\n path = '/' + path\n }\n const viewMode = (editMode && 'edit') || (path.endsWith('/') && 'tree') || 'blob'\n const { githubRepository } = pageContext.config.projectInfo\n assert(githubRepository.startsWith('https://github.com/'))\n const href = `${githubRepository}/${viewMode}/main${path}`\n return <a href={href}>{text}</a>\n}\n","// `usePageContext` allows us to access `pageContext` in any React component.\n// More infos: https://vite-plugin-ssr.com/pageContext-anywhere\n\nimport React, { useContext } from 'react'\nimport type { PageContextResolved } from '../config/resolvePageContext'\n\nexport { PageContextProvider }\nexport { usePageContext }\n\nconst Context = React.createContext<PageContextResolved>(undefined as any)\n\nfunction PageContextProvider({\n pageContext,\n children\n}: {\n pageContext: PageContextResolved\n children: React.ReactNode\n}) {\n return <Context.Provider value={pageContext}>{children}</Context.Provider>\n}\n\nfunction usePageContext(): PageContextResolved {\n const pageContext = useContext(Context)\n return pageContext\n}\n","import React from 'react'\nimport { assert, Emoji, EmojiName } from './utils/server'\n\nexport { getHeadings }\nexport { parseTitle }\n\nexport type Heading = Omit<HeadingDefinition, 'title' | 'titleInNav'> & {\n title: JSX.Element\n titleInNav: JSX.Element\n parentHeadings: Heading[]\n // Not sure why this is needed\n isListTitle?: true\n sectionTitles?: string[]\n}\nexport type HeadingWithoutLink = {\n url: string\n title: string | JSX.Element\n}\nexport type HeadingDefinition = HeadingBase &\n (\n | ({ level: 1; titleEmoji: EmojiName } & HeadingAbstract)\n | ({ level: 4 } & HeadingAbstract)\n | {\n level: 2\n isListTitle?: true\n sectionTitles?: string[]\n url: string\n }\n | {\n level: 3\n url: string\n }\n )\ntype HeadingBase = {\n title: string\n level: number\n url?: string\n titleDocument?: string\n titleInNav?: string\n // titleSize?: string\n}\ntype HeadingAbstract = {\n url?: undefined\n titleDocument?: undefined\n titleInNav?: undefined\n}\n\nfunction getHeadings(config: { headings: HeadingDefinition[]; headingsWithoutLink: HeadingWithoutLink[] }): {\n headings: Heading[]\n headingsWithoutLink: HeadingWithoutLink[]\n} {\n const headingsWithoutParent: Omit<Heading, 'parentHeadings'>[] = config.headings.map((heading: HeadingDefinition) => {\n const titleProcessed: JSX.Element = parseTitle(heading.title)\n\n const titleInNav = heading.titleInNav || heading.title\n let titleInNavProcessed: JSX.Element\n if ('isListTitle' in heading) {\n assert(heading.isListTitle === true)\n let titleParsed: JSX.Element = parseTitle(titleInNav)\n // if (heading.titleSize) {\n // titleParsed = React.createElement('span', { style: { fontSize: heading.titleSize } }, titleParsed)\n // }\n titleInNavProcessed = React.createElement(React.Fragment, {}, getListPrefix(), titleParsed)\n } else {\n titleInNavProcessed = parseTitle(titleInNav)\n }\n if ('titleEmoji' in heading) {\n assert(heading.titleEmoji)\n titleInNavProcessed = withEmoji(heading.titleEmoji, titleInNavProcessed)\n }\n\n const headingProcessed: Omit<Heading, 'parentHeadings'> = {\n ...heading,\n title: titleProcessed,\n titleInNav: titleInNavProcessed\n }\n return headingProcessed\n })\n\n const headings: Heading[] = []\n headingsWithoutParent.forEach((heading) => {\n const parentHeadings = findParentHeadings(heading, headings)\n headings.push({ ...heading, parentHeadings })\n })\n\n const headingsWithoutLink = config.headingsWithoutLink.map((headingsWithoutLink) => {\n const { url, title } = headingsWithoutLink\n assert(\n headings.find((heading) => heading.url === url) === undefined,\n `remove ${headingsWithoutLink.url} from headingsWithoutLink`\n )\n const titleProcessed = typeof title === 'string' ? parseTitle(title) : title\n return {\n ...headingsWithoutLink,\n title: titleProcessed\n }\n })\n\n assertHeadingsUrl([...headings, ...headingsWithoutLink])\n return { headings, headingsWithoutLink }\n}\n\nfunction findParentHeadings(heading: Omit<Heading, 'parentHeadings'>, headings: Heading[]) {\n const parentHeadings: Heading[] = []\n let levelCurrent = heading.level\n let listTitleParentFound = false\n headings\n .slice()\n .reverse()\n .forEach((parentCandidate) => {\n let isListTitleParent = false\n if (\n !listTitleParentFound &&\n levelCurrent === heading.level &&\n parentCandidate.level === heading.level &&\n !parentCandidate.isListTitle &&\n heading.isListTitle\n ) {\n isListTitleParent = true\n listTitleParentFound = true\n }\n\n const isParent = parentCandidate.level < levelCurrent\n\n if (isParent || isListTitleParent) {\n levelCurrent = parentCandidate.level\n parentHeadings.push(parentCandidate)\n }\n })\n return parentHeadings\n}\n\nfunction assertHeadingsUrl(headings: { url?: string }[]) {\n const urls: Record<string, true> = {}\n headings.forEach((heading) => {\n if (heading.url) {\n const { url } = heading\n assert(url.startsWith('/'))\n assert(!urls[url], { url })\n urls[url] = true\n }\n })\n}\n\nfunction getListPrefix() {\n const nonBreakingSpace = String.fromCodePoint(0x00a0)\n const bulletPoint = String.fromCodePoint(0x2022)\n return nonBreakingSpace + bulletPoint + nonBreakingSpace\n}\n\nfunction parseTitle(title: string): JSX.Element {\n type Part = { nodeType: 'text' | 'code'; content: string }\n const parts: Part[] = []\n let current: Part | undefined\n title.split('').forEach((letter) => {\n if (letter === '`') {\n if (current?.nodeType === 'code') {\n // </code>\n parts.push(current)\n current = undefined\n } else {\n // <code>\n if (current) {\n parts.push(current)\n }\n current = { nodeType: 'code', content: '' }\n }\n } else {\n if (!current) {\n current = { nodeType: 'text', content: '' }\n }\n current.content += letter\n }\n })\n if (current) {\n parts.push(current)\n }\n\n const titleJsx = React.createElement(\n React.Fragment,\n {},\n ...parts.map((part, i) =>\n React.createElement(part.nodeType === 'code' ? 'code' : React.Fragment, { key: i }, part.content)\n )\n )\n\n return titleJsx\n}\n\nfunction withEmoji(name: EmojiName, title: string | JSX.Element): JSX.Element {\n const style = { fontSize: '1.4em' }\n //return React.createElement(React.Fragment, null, Emoji({ name, style }), ' ', title)\n return React.createElement(\n 'span',\n { style },\n Emoji({ name }),\n ' ',\n React.createElement('span', { style: { fontSize: '1rem' } }, title)\n )\n}\n"],"mappings":"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","names":["React","React","React","React","headingsWithoutLink"]}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import {
|
|
2
|
+
assert
|
|
3
|
+
} from "./chunk-G2A5MZJA.js";
|
|
4
|
+
|
|
5
|
+
// src/utils/Emoji/Emoji.ts
|
|
6
|
+
import React from "react";
|
|
7
|
+
|
|
8
|
+
// src/utils/Emoji/mechanical-arm.svg
|
|
9
|
+
var mechanical_arm_default = "/assets/mechanical-arm-TR7IQQMG.svg";
|
|
10
|
+
|
|
11
|
+
// src/utils/Emoji/compass.svg
|
|
12
|
+
var compass_default = "/assets/compass-2RWQU3E4.svg";
|
|
13
|
+
|
|
14
|
+
// src/utils/Emoji/road-fork.svg
|
|
15
|
+
var road_fork_default = "/assets/road-fork-3WZLW3HB.svg";
|
|
16
|
+
|
|
17
|
+
// src/utils/Emoji/shield.svg
|
|
18
|
+
var shield_default = "/assets/shield-CU45RG5C.svg";
|
|
19
|
+
|
|
20
|
+
// src/utils/Emoji/typescript.svg
|
|
21
|
+
var typescript_default = "/assets/typescript-ALIPKLRM.svg";
|
|
22
|
+
|
|
23
|
+
// src/utils/Emoji/engine.png
|
|
24
|
+
var engine_default = "/assets/engine-6Q6VSCVA.png";
|
|
25
|
+
|
|
26
|
+
// src/utils/Emoji/Emoji.ts
|
|
27
|
+
function Emoji({ name, style }) {
|
|
28
|
+
const emoji = name === "warning" && Unicode(9888, { fontFamily: "emoji" }) || name === "lab" && Unicode(9879) || name === "info" && Unicode(8505, { fontFamily: "emoji" }) || name === "package" && Unicode(128230) || name === "gift" && Unicode(127873) || name === "sparkling-heart" && Unicode(128150) || name === "red-circle" && Unicode(11093) || name === "engine" && Img(engine_default) || name === "typescript" && Img(typescript_default) || name === "shield" && Img(shield_default) || name === "road-fork" && Img(road_fork_default, "1.4em") || name === "writing-hang" && Unicode(9997) || name === "dizzy" && Unicode(128171) || name === "mechanical-arm" && Img(mechanical_arm_default) || name === "rocket" && Unicode(128640) || name === "wrench" && Unicode(128295) || name === "compass" && Img(compass_default, "1.4em") || name === "seedling" && Unicode(127793) || name === "books" && Unicode(128218) || name === "plug" && Unicode(128268) || name === "earth" && Unicode(127757) || name === "gear" && Unicode(9881) || name === "red-heart" && Unicode(10084, { fontFamily: "emoji" }) || name === "high-voltage" && Unicode(9889) || name === "sparkles" && Unicode(10024) || name === "gem-stone" && Unicode(128142) || name === "trophy" && Unicode(127942) || false;
|
|
29
|
+
assert(emoji, { name });
|
|
30
|
+
return emoji;
|
|
31
|
+
function Unicode(codePoint, styleAddendum) {
|
|
32
|
+
const text = String.fromCodePoint(codePoint);
|
|
33
|
+
if (style || styleAddendum) {
|
|
34
|
+
return React.createElement("span", { style: { ...style, ...styleAddendum } }, text);
|
|
35
|
+
} else {
|
|
36
|
+
return React.createElement(React.Fragment, null, text);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
function Img(imgSrc, width = "1.15em") {
|
|
40
|
+
const props = {
|
|
41
|
+
src: imgSrc,
|
|
42
|
+
style: {
|
|
43
|
+
verticalAlign: "text-top",
|
|
44
|
+
fontSize: "1em",
|
|
45
|
+
width,
|
|
46
|
+
...style
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
return React.createElement("img", props);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// src/utils/filter.ts
|
|
54
|
+
function filter(obj, predicate) {
|
|
55
|
+
const result = {};
|
|
56
|
+
Object.keys(obj).forEach((name) => {
|
|
57
|
+
if (predicate(obj[name], name)) {
|
|
58
|
+
result[name] = obj[name];
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
return result;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// src/utils/determineSectionUrlHash.ts
|
|
65
|
+
function determineSectionUrlHash(title) {
|
|
66
|
+
const urlHash = title.toLowerCase().split(/[^a-z0-9]+/).filter(Boolean).join("-");
|
|
67
|
+
return urlHash;
|
|
68
|
+
}
|
|
69
|
+
function determineSectionTitle(urlWithHash, titleNormalCase) {
|
|
70
|
+
assert(urlWithHash.includes("#"), { urlWithHash });
|
|
71
|
+
const urlHash = urlWithHash.split("#")[1];
|
|
72
|
+
const title = urlHash.split("-").map((word, i) => {
|
|
73
|
+
if (i === 0) {
|
|
74
|
+
return capitalizeFirstLetter(word);
|
|
75
|
+
}
|
|
76
|
+
if (!titleNormalCase && word.length >= 4) {
|
|
77
|
+
return capitalizeFirstLetter(word);
|
|
78
|
+
}
|
|
79
|
+
return word;
|
|
80
|
+
}).join(" ");
|
|
81
|
+
return title;
|
|
82
|
+
}
|
|
83
|
+
function capitalizeFirstLetter(word) {
|
|
84
|
+
return word[0].toUpperCase() + word.slice(1);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// src/utils/jsxToTextContent.ts
|
|
88
|
+
function jsxToTextContent(node) {
|
|
89
|
+
if (["string", "number"].includes(typeof node))
|
|
90
|
+
return String(node);
|
|
91
|
+
if (node instanceof Array)
|
|
92
|
+
return node.map(jsxToTextContent).join("");
|
|
93
|
+
if (typeof node === "object" && node)
|
|
94
|
+
return jsxToTextContent(node.props.children);
|
|
95
|
+
assert(false);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// src/utils/objectAssign.ts
|
|
99
|
+
function objectAssign(obj, objAddendum) {
|
|
100
|
+
Object.assign(obj, objAddendum);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// src/utils/crawlAllFiles.ts
|
|
104
|
+
import path from "path";
|
|
105
|
+
import { promises as fsp } from "fs";
|
|
106
|
+
|
|
107
|
+
// src/utils/filesystemPathHandling.ts
|
|
108
|
+
import assert2 from "assert";
|
|
109
|
+
var sepPosix = "/";
|
|
110
|
+
var sepWin32 = "\\";
|
|
111
|
+
function toPosixPath(path2) {
|
|
112
|
+
if (isPosix()) {
|
|
113
|
+
assertPosixPath(path2);
|
|
114
|
+
return path2;
|
|
115
|
+
}
|
|
116
|
+
if (isWin32()) {
|
|
117
|
+
const pathPosix = path2.split(sepWin32).join(sepPosix);
|
|
118
|
+
assertPosixPath(pathPosix);
|
|
119
|
+
return pathPosix;
|
|
120
|
+
}
|
|
121
|
+
assert2(false);
|
|
122
|
+
}
|
|
123
|
+
function assertPosixPath(path2) {
|
|
124
|
+
assert2(path2 && !path2.includes(sepWin32), `Wrongly formatted path: ${path2}`);
|
|
125
|
+
}
|
|
126
|
+
function isWin32() {
|
|
127
|
+
return process.platform === "win32";
|
|
128
|
+
}
|
|
129
|
+
function isPosix() {
|
|
130
|
+
return !isWin32();
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// src/utils/crawlAllFiles.ts
|
|
134
|
+
async function crawlAllFiles(dir) {
|
|
135
|
+
const dirFiles = await fsp.readdir(dir, { withFileTypes: true });
|
|
136
|
+
const allFiles = await Promise.all(
|
|
137
|
+
dirFiles.map((file) => {
|
|
138
|
+
const filePath = path.resolve(dir, file.name);
|
|
139
|
+
return file.isDirectory() ? crawlAllFiles(filePath) : filePath;
|
|
140
|
+
})
|
|
141
|
+
);
|
|
142
|
+
return allFiles.flat().map(toPosixPath);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
export {
|
|
146
|
+
Emoji,
|
|
147
|
+
filter,
|
|
148
|
+
determineSectionUrlHash,
|
|
149
|
+
determineSectionTitle,
|
|
150
|
+
jsxToTextContent,
|
|
151
|
+
objectAssign,
|
|
152
|
+
crawlAllFiles
|
|
153
|
+
};
|
|
154
|
+
//# sourceMappingURL=chunk-P6M6A4HU.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils/Emoji/Emoji.ts","../src/utils/filter.ts","../src/utils/determineSectionUrlHash.ts","../src/utils/jsxToTextContent.ts","../src/utils/objectAssign.ts","../src/utils/crawlAllFiles.ts","../src/utils/filesystemPathHandling.ts"],"sourcesContent":["import React from 'react'\nimport { assert } from '../assert'\n\nimport { iconMechanicalArm, iconCompass, iconRoadFork, iconShield, iconTypescript, iconEngine } from './assets'\n\nexport { Emoji }\nexport type { EmojiName }\n\ntype EmojiName =\n | 'warning'\n | 'typescript'\n | 'shield'\n | 'mechanical-arm'\n | 'mountain'\n | 'rocket'\n | 'wrench'\n | 'compass'\n | 'seedling'\n | 'books'\n | 'plug'\n | 'earth'\n | 'gear'\n | 'red-heart'\n | 'high-voltage'\n | 'gem-stone'\n | 'dizzy'\n | 'sparkles'\n | 'writing-hang'\n | 'road-fork'\n | 'engine'\n | 'red-circle'\n | 'sparkling-heart'\n | 'gift'\n | 'package'\n | 'info'\n | 'lab'\n | 'trophy'\n\nfunction Emoji({ name, style }: { name: EmojiName; style?: React.CSSProperties }): JSX.Element {\n const emoji =\n // ***\n // U+26A0\n // https://emojipedia.org/warning/\n // https://www.unicompat.com/26A0 => 94.1%\n // https://www.unicompat.com/26A0-FE0F => 92.4%\n // https://www.unicompat.com/2697 => 94.1%\n (name === 'warning' && Unicode(0x26a0, { fontFamily: 'emoji' })) ||\n // ***\n // U+2697\n // https://emojipedia.org/alembic/\n // https://www.unicompat.com/2697 => 94.1%\n (name === 'lab' && Unicode(0x2697)) ||\n // ***\n // U+2139\n // https://emojipedia.org/information/\n // https://www.unicompat.com/2139 => 94.8%\n // https://www.unicompat.com/2139-FE0F => 92.4%\n (name === 'info' && Unicode(0x2139, { fontFamily: 'emoji' })) ||\n // ***\n // U+1F4E6\n // https://emojipedia.org/package/\n // https://www.unicompat.com/1F4E6 => 94.1%\n (name === 'package' && Unicode(0x1f4e6)) ||\n // ***\n // U+1F381\n // https://emojipedia.org/wrapped-gift/\n // https://www.unicompat.com/1F381 => 94.1%\n (name === 'gift' && Unicode(0x1f381)) ||\n // ***\n // U+1F496\n // https://emojipedia.org/sparkling-heart/\n // https://www.unicompat.com/1F496 => 94.1%\n (name === 'sparkling-heart' && Unicode(0x1f496)) ||\n // ***\n // U+2B55\n // https://emojipedia.org/hollow-red-circle/\n // https://www.unicompat.com/2B55 => 94.1%\n (name === 'red-circle' && Unicode(0x2b55)) ||\n // ***\n (name === 'engine' && Img(iconEngine)) ||\n // ***\n // https://www.typescriptlang.org/branding/\n (name === 'typescript' && Img(iconTypescript)) ||\n // ***\n // U+FE0F\n // https://emojipedia.org/shield/\n // https://www.unicompat.com/FE0F => 46.5%\n // https://icon-sets.iconify.design/noto/shield/\n (name === 'shield' && Img(iconShield)) ||\n // ***\n // Custom\n (name === 'road-fork' && Img(iconRoadFork, '1.4em')) ||\n // ***\n // U+270D\n // https://emojipedia.org/writing-hand/\n // https://www.unicompat.com/270D => 93.8%\n (name === 'writing-hang' && Unicode(0x270d)) ||\n // ***\n // U+1F4AB\n // https://emojipedia.org/dizzy/\n // https://www.unicompat.com/1F4AB => 94.1%\n (name === 'dizzy' && Unicode(0x1f4ab)) ||\n // ***\n // U+1F9BE\n // https://iconify.design/icon-sets/noto/mechanical-arm.html\n // https://emojipedia.org/mechanical-arm/\n // https://www.unicompat.com/1f9be => 65.5%\n (name === 'mechanical-arm' && Img(iconMechanicalArm)) ||\n // ***\n // U+1F680\n // https://www.unicompat.com/1F680 => 94.1\n (name === 'rocket' && Unicode(0x1f680)) ||\n // ***\n // U+1F527\n // https://emojipedia.org/wrench/\n // https://www.unicompat.com/1F527 => 94.1%\n (name === 'wrench' && Unicode(0x1f527)) ||\n // ***\n // U+1F9ED\n // https://iconify.design/icon-sets/noto/compass.html\n // https://www.unicompat.com/1F9ED => 67.1%\n (name === 'compass' && Img(iconCompass, '1.4em')) ||\n // ***\n // U+1F331\n // https://www.unicompat.com/1F331 => 94.1%\n (name === 'seedling' && Unicode(0x1f331)) ||\n // ***\n // U+1F4DA\n // https://www.unicompat.com/1F4DA => 94.1%\n (name === 'books' && Unicode(0x1f4da)) ||\n // ***\n // U+1F50C\n // https://www.unicompat.com/1F50C => 94.1%\n (name === 'plug' && Unicode(0x1f50c)) ||\n // ***\n // U+1F30D\n // https://www.unicompat.com/1F30D => 88.8%\n (name === 'earth' && Unicode(0x1f30d)) ||\n // ***\n // U+2699\n // https://www.unicompat.com/2699 => 94.1%\n (name === 'gear' && Unicode(0x2699)) ||\n // ***\n // U+2764\n // https://emojipedia.org/red-heart/\n // https://www.unicompat.com/2764 => 94.4%\n // https://www.unicompat.com/2764-FE0F => 92.4%\n (name === 'red-heart' && Unicode(0x2764, { fontFamily: 'emoji' })) ||\n // U+26A1\n // https://www.unicompat.com/26A1 => 94.1%\n (name === 'high-voltage' && Unicode(0x26a1)) ||\n // U+2728\n // https://emojipedia.org/sparkles/\n // https://www.unicompat.com/2728 => 94.1%\n (name === 'sparkles' && Unicode(0x2728)) ||\n // ***\n // U+1F48E\n // https://emojipedia.org/gem-stone/\n // https://www.unicompat.com/1F48E => 94.1%\n (name === 'gem-stone' && Unicode(0x1f48e)) ||\n // ***\n // 0x1F3C6\n // https://emojipedia.org/trophy/\n // https://www.unicompat.com/1F3C6 => 94.1%\n (name === 'trophy' && Unicode(0x1f3c6)) ||\n false\n /* ======= Unused ========\n // ***\n // U+1FAA8\n // https://emojipedia.org/rock/\n // https://www.unicompat.com/1faa8 => 20.7%\n //\n // ***\n // U+26F0\n // https://emojipedia.org/mountain/\n // https://iconify.design/icon-sets/noto/mountain.html\n // https://www.unicompat.com/26F0 => 89.3%\n (name === 'mountain' && Img(iconMountain)) ||\n //\n // ***\n // U+2194\n // https://emojipedia.org/left-right-arrow/\n // https://www.unicompat.com/2194 => 95.0%\n // Couldn't manage to show colored version\n (name === 'left-right-arrow' && Unicode(0x2194)) ||\n (name === 'left-right-arrow' && Unicode(0x2194, { fontFamily: 'reset' })) ||\n (name === 'left-right-arrow' && Unicode(0xFE0F)) ||\n (name === 'left-right-arrow' && Unicode(0xFE0F, { fontFamily: 'reset' })) ||\n ======================== */\n\n assert(emoji, { name })\n\n return emoji\n\n function Unicode(codePoint: number, styleAddendum?: React.CSSProperties) {\n const text = String.fromCodePoint(codePoint)\n if (style || styleAddendum) {\n return React.createElement('span', { style: { ...style, ...styleAddendum } }, text)\n } else {\n return React.createElement(React.Fragment, null, text)\n }\n }\n\n function Img(imgSrc: string, width: string = '1.15em') {\n const props = {\n src: imgSrc,\n style: {\n verticalAlign: 'text-top',\n fontSize: '1em',\n width,\n ...style\n }\n }\n return React.createElement('img', props)\n }\n}\n","export { filter }\n\n// https://stackoverflow.com/questions/66341757/typescript-how-to-filter-the-object\nfunction filter<T extends object>(obj: T, predicate: <K extends keyof T>(value: T[K], key: K) => boolean): T {\n const result: { [K in keyof T]?: T[K] } = {}\n ;(Object.keys(obj) as Array<keyof T>).forEach((name) => {\n if (predicate(obj[name], name)) {\n result[name] = obj[name]\n }\n })\n return result as T\n}\n","import { assert } from './assert'\n\nexport { determineSectionUrlHash }\nexport { determineSectionTitle }\n\nfunction determineSectionUrlHash(title: string): string {\n const urlHash = title\n .toLowerCase()\n .split(/[^a-z0-9]+/)\n .filter(Boolean)\n .join('-')\n return urlHash\n}\n\nfunction determineSectionTitle(urlWithHash: string, titleNormalCase: boolean): string {\n assert(urlWithHash.includes('#'), { urlWithHash })\n const urlHash = urlWithHash.split('#')[1]\n const title = urlHash\n .split('-')\n .map((word, i) => {\n if (i === 0) {\n return capitalizeFirstLetter(word)\n }\n if (!titleNormalCase && word.length >= 4) {\n return capitalizeFirstLetter(word)\n }\n return word\n })\n .join(' ')\n return title\n}\n\nfunction capitalizeFirstLetter(word: string): string {\n return word[0].toUpperCase() + word.slice(1)\n}\n","import { assert } from './assert'\n\nexport { jsxToTextContent }\n\n// https://stackoverflow.com/questions/34204975/react-is-there-something-similar-to-node-textcontent/60564620#60564620\nfunction jsxToTextContent(node: JSX.Element | string): string {\n if (['string', 'number'].includes(typeof node)) return String(node)\n if (node instanceof Array) return node.map(jsxToTextContent).join('')\n if (typeof node === 'object' && node) return jsxToTextContent(node.props.children)\n assert(false)\n}\n","export { objectAssign }\n\n// Same as `Object.assign()` but with type inference\nfunction objectAssign<Obj extends Object, ObjAddendum>(\n obj: Obj,\n objAddendum: ObjAddendum\n): asserts obj is Obj & ObjAddendum {\n Object.assign(obj, objAddendum)\n}\n","export { crawlAllFiles }\n\nimport path from 'path'\nimport { promises as fsp } from 'fs'\nimport { toPosixPath } from './filesystemPathHandling'\n\n// Adapted from https://stackoverflow.com/questions/5827612/node-js-fs-readdir-recursive-directory-search/45130990#45130990\nasync function crawlAllFiles(dir: string): Promise<string[]> {\n const dirFiles = await fsp.readdir(dir, { withFileTypes: true })\n const allFiles = await Promise.all(\n dirFiles.map((file) => {\n const filePath = path.resolve(dir, file.name)\n return file.isDirectory() ? crawlAllFiles(filePath) : filePath\n })\n )\n return allFiles.flat().map(toPosixPath)\n}\n","export { toPosixPath }\nexport { assertPosixPath }\nexport { toSystemPath }\n\nimport assert from 'assert'\n\nconst sepPosix = '/'\nconst sepWin32 = '\\\\'\n\nfunction toPosixPath(path: string) {\n if (isPosix()) {\n assertPosixPath(path)\n return path\n }\n if (isWin32()) {\n const pathPosix = path.split(sepWin32).join(sepPosix)\n assertPosixPath(pathPosix)\n return pathPosix\n }\n assert(false)\n}\n\nfunction assertPosixPath(path: string) {\n assert(path && !path.includes(sepWin32), `Wrongly formatted path: ${path}`)\n}\n\nfunction toSystemPath(path: string) {\n if (isPosix()) {\n return toPosixPath(path)\n }\n if (isWin32()) {\n return path.split(sepPosix).join(sepWin32)\n }\n assert(false)\n}\n\nfunction isWin32() {\n return process.platform === 'win32'\n}\nfunction isPosix() {\n return !isWin32()\n}\n"],"mappings":"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","names":["assert","path","assert"]}
|
package/dist/cli/index.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
configFile
|
|
3
|
-
} from "../chunk-
|
|
3
|
+
} from "../chunk-2SRWLPTC.js";
|
|
4
4
|
import "../chunk-TTLAZ2T2.js";
|
|
5
5
|
|
|
6
|
-
// cli/index.ts
|
|
6
|
+
// src/cli/index.ts
|
|
7
7
|
import { build, preview } from "vite";
|
|
8
8
|
import { prerender } from "vite-plugin-ssr/prerender";
|
|
9
9
|
var args = process.argv.filter(Boolean).slice(2);
|
|
@@ -14,7 +14,7 @@ Error.stackTraceLimit = Infinity;
|
|
|
14
14
|
cli();
|
|
15
15
|
async function cli() {
|
|
16
16
|
if (isDev) {
|
|
17
|
-
await import("../devServer-
|
|
17
|
+
await import("../devServer-TDBL5PHQ.js");
|
|
18
18
|
} else if (isBuild) {
|
|
19
19
|
const commonConfig = {
|
|
20
20
|
configFile,
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../cli/index.ts"],"sourcesContent":["import { build, preview } from 'vite'\nimport { configFile } from './configFile'\nimport { prerender } from 'vite-plugin-ssr/prerender'\nconst args = process.argv.filter(Boolean).slice(2)\nconst isDev = args.includes('dev')\nconst isPreview = args.includes('preview')\nconst isBuild = args.includes('build')\nError.stackTraceLimit = Infinity\n\ncli()\n\nasync function cli() {\n if (isDev) {\n await import('./devServer')\n } else if (isBuild) {\n const commonConfig = {\n configFile,\n vitePluginSsr: {\n disableAutoFullBuild: true\n }\n }\n await build({ ...commonConfig })\n await build({ ...commonConfig, build: { ssr: true } })\n await prerender({ viteConfig: { configFile } })\n } else if (isPreview) {\n const server = await preview({ configFile, preview: { host: true } })\n server.printUrls()\n } else {\n throw new Error(\n `DocPress: unknown command \\`$ docpress ${args.join(\n ' '\n )}\\`. Known commands: \\`$ docpress dev\\` and \\`$ docpress preview\\`.`\n )\n }\n}\n"],"mappings":";;;;;;AAAA,SAAS,OAAO,eAAe;AAE/B,SAAS,iBAAiB;AAC1B,IAAM,OAAO,QAAQ,KAAK,OAAO,OAAO,EAAE,MAAM,CAAC;AACjD,IAAM,QAAQ,KAAK,SAAS,KAAK;AACjC,IAAM,YAAY,KAAK,SAAS,SAAS;AACzC,IAAM,UAAU,KAAK,SAAS,OAAO;AACrC,MAAM,kBAAkB;AAExB,IAAI;AAEJ,eAAe,MAAM;AACnB,MAAI,OAAO;AACT,UAAM,OAAO;AAAA,EACf,WAAW,SAAS;AAClB,UAAM,eAAe;AAAA,MACnB;AAAA,MACA,eAAe;AAAA,QACb,sBAAsB;AAAA,MACxB;AAAA,IACF;AACA,UAAM,MAAM,EAAE,GAAG,aAAa,CAAC;AAC/B,UAAM,MAAM,EAAE,GAAG,cAAc,OAAO,EAAE,KAAK,KAAK,EAAE,CAAC;AACrD,UAAM,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;AAAA,EAChD,WAAW,WAAW;AACpB,UAAM,SAAS,MAAM,QAAQ,EAAE,YAAY,SAAS,EAAE,MAAM,KAAK,EAAE,CAAC;AACpE,WAAO,UAAU;AAAA,EACnB,OAAO;AACL,UAAM,IAAI;AAAA,MACR,0CAA0C,KAAK;AAAA,QAC7C;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/cli/index.ts"],"sourcesContent":["import { build, preview } from 'vite'\nimport { configFile } from './configFile'\nimport { prerender } from 'vite-plugin-ssr/prerender'\nconst args = process.argv.filter(Boolean).slice(2)\nconst isDev = args.includes('dev')\nconst isPreview = args.includes('preview')\nconst isBuild = args.includes('build')\nError.stackTraceLimit = Infinity\n\ncli()\n\nasync function cli() {\n if (isDev) {\n await import('./devServer')\n } else if (isBuild) {\n const commonConfig = {\n configFile,\n vitePluginSsr: {\n disableAutoFullBuild: true\n }\n }\n await build({ ...commonConfig })\n await build({ ...commonConfig, build: { ssr: true } })\n await prerender({ viteConfig: { configFile } })\n } else if (isPreview) {\n const server = await preview({ configFile, preview: { host: true } })\n server.printUrls()\n } else {\n throw new Error(\n `DocPress: unknown command \\`$ docpress ${args.join(\n ' '\n )}\\`. Known commands: \\`$ docpress dev\\` and \\`$ docpress preview\\`.`\n )\n }\n}\n"],"mappings":";;;;;;AAAA,SAAS,OAAO,eAAe;AAE/B,SAAS,iBAAiB;AAC1B,IAAM,OAAO,QAAQ,KAAK,OAAO,OAAO,EAAE,MAAM,CAAC;AACjD,IAAM,QAAQ,KAAK,SAAS,KAAK;AACjC,IAAM,YAAY,KAAK,SAAS,SAAS;AACzC,IAAM,UAAU,KAAK,SAAS,OAAO;AACrC,MAAM,kBAAkB;AAExB,IAAI;AAEJ,eAAe,MAAM;AACnB,MAAI,OAAO;AACT,UAAM,OAAO;AAAA,EACf,WAAW,SAAS;AAClB,UAAM,eAAe;AAAA,MACnB;AAAA,MACA,eAAe;AAAA,QACb,sBAAsB;AAAA,MACxB;AAAA,IACF;AACA,UAAM,MAAM,EAAE,GAAG,aAAa,CAAC;AAC/B,UAAM,MAAM,EAAE,GAAG,cAAc,OAAO,EAAE,KAAK,KAAK,EAAE,CAAC;AACrD,UAAM,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;AAAA,EAChD,WAAW,WAAW;AACpB,UAAM,SAAS,MAAM,QAAQ,EAAE,YAAY,SAAS,EAAE,MAAM,KAAK,EAAE,CAAC;AACpE,WAAO,UAAU;AAAA,EACnB,OAAO;AACL,UAAM,IAAI;AAAA,MACR,0CAA0C,KAAK;AAAA,QAC7C;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/features/FeatureList.css"],"sourcesContent":["@media screen and (min-width: 840px) {\n .features-row {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n }\n .features-row summary:nth-of-type(1) {\n grid-row: 1;\n grid-column: 1 / 2;\n }\n .features-row summary:nth-of-type(2) {\n grid-row: 1;\n grid-column: 2 / 3;\n }\n .features-row aside {\n grid-row: 2;\n grid-column: 1 / 3;\n }\n}\n\n@media screen and (min-width: 840px) {\n .features-row.single-column .feature {\n grid-column: 1 / span 2 !important;\n width: 100% !important;\n max-width: calc(1010px / 2) !important;\n margin: auto !important;\n }\n}\n\n#features {\n margin: auto;\n margin-top: 0;\n max-width: 1080px;\n}\n\n#features summary p {\n margin: 10px 0;\n}\n#features h2 {\n margin-bottom: 0.7em;\n margin-top: 0.5em;\n}\n#features .secondary-feature h2 {\n font-size: 1.1em;\n margin-bottom: 0.7em;\n}\n.learn-more h3:first-of-type {\n margin-top: 15px;\n}\n\n.learn-more {\n border: var(--border-width) solid var(--border-color);\n padding: 10px 8px;\n}\n@media screen and (min-width: 840px) {\n .learn-more {\n max-width: 886px;\n border-radius: var(--border-radius);\n }\n}\naside.learn-more:not(.right-side) {\n border-top-left-radius: 0;\n}\naside.learn-more.right-side {\n border-top-right-radius: 0;\n justify-self: end;\n width: 100%;\n}\n@media screen and (max-width: 340px) {\n .learn-more {\n padding-right: 5px;\n padding-left: 5px;\n }\n}\n.learn-more {\n display: none;\n}\n.learn-more.selected {\n display: block;\n}\n#features {\n --border-radius: 20px;\n --border-width: 10px;\n --border-color: #f6f6f6;\n}\n.feature {\n padding: 8px;\n border-width: var(--border-width);\n border-style: solid;\n border-color: transparent;\n border-top-left-radius: var(--border-radius);\n border-top-right-radius: var(--border-radius);\n}\n.selected {\n border-color: var(--border-color);\n background-color: #fcfcfc;\n}\n.feature.selected {\n border-bottom: 0 !important;\n z-index: 1;\n}\n\n/* Hide top border of .learn-more */\n.learn-more {\n position: relative;\n top: calc(-1 * var(--border-width));\n}\n.feature {\n position: relative;\n z-index: 1;\n}\n\n.feature .chevron {\n transition: filter 0.3s ease-in-out, transform 0.3s ease-in-out !important;\n}\n.feature.selected .chevron {\n transform: rotate(180deg);\n}\n"],"mappings":";AAAA;AACE;AACE;AACA;AAAA;AAEF;AACE;AACA;AAAA;AAEF;AACE;AACA;AAAA;AAEF;AACE;AACA;AAAA;AAAA;AAIJ;AACE;AACE;AACA;AACA;AACA;AAAA;AAAA;AAIJ;AACE;AACA;AACA;AAAA;AAGF;AACE;AAAA;AAEF;AACE;AACA;AAAA;AAEF;AACE;AACA;AAAA;AAEF;AACE;AAAA;AAGF;AACE;AACA;AAAA;AAEF;AACE;AACE;AACA;AAAA;AAAA;AAGJ;AACE;AAAA;AAEF;AACE;AACA;AACA;AAAA;AAEF;AACE;AACE;AACA;AAAA;AAAA;AAGJ;AACE;AAAA;AAEF;AACE;AAAA;AAEF;AACE;AACA;AACA;AAAA;AAEF;AACE;AACA;AACA;AACA;AACA;AACA;AAAA;AAEF;AACE;AACA;AAAA;AAEF;AACE;AACA;AAAA;AAIF;AACE;AACA;AAAA;AAEF;AACE;AACA;AAAA;AAGF;AACE;AAAA;AAEF;AACE;AAAA;","names":[]}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/features/initFeatureList.ts"],"sourcesContent":["import { assert } from '../../utils/client'\n\naddTwitterWidgets()\naddFeatureClickHandlers()\nwindow.__docpress_hydrationFinished = true\n\nfunction addTwitterWidgets() {\n loadScript('https://platform.twitter.com/widgets.js')\n}\n\nfunction addFeatureClickHandlers() {\n const featureEls: HTMLElement[] = Array.from(\n document.getElementById('features')!.querySelectorAll('.feature.has-learn-more')\n )\n featureEls.forEach((featureEl) => {\n featureEl.onclick = () => {\n expandLearnMore(featureEl)\n }\n })\n}\n\nfunction expandLearnMore(featureEl: HTMLElement) {\n const featureId = featureEl.id\n assert(featureId.startsWith('feature-'), { featureId })\n const featureName = featureId.slice('feature-'.length)\n\n const selectedClass = 'selected'\n const learnId = 'learn-more-' + featureName\n const learnEl = document.getElementById(learnId)\n assert(learnEl, { learnId })\n\n const isExpanded = featureEl.classList.contains(selectedClass)\n\n if (!isExpanded) {\n const rowEl = featureEl.parentNode as HTMLElement\n if (getComputedStyle(rowEl, 'display') === 'grid') {\n ;[\n ...(rowEl.querySelectorAll('.learn-more') as any as HTMLElement[]),\n ...(rowEl.querySelectorAll('.feature') as any as HTMLElement[])\n ].forEach((el) => {\n el.classList.remove(selectedClass)\n })\n }\n }\n\n ;[featureEl, learnEl].forEach((el) => {\n el.classList.toggle(selectedClass)\n })\n}\n\nfunction loadScript(scriptUrl: string): void {\n assert(scriptUrl.startsWith('https://'))\n const scriptEl = document.createElement('script')\n scriptEl.src = scriptUrl\n scriptEl.async = true\n scriptEl.setAttribute('charset', 'utf-8')\n document.getElementsByTagName('head')[0].appendChild(scriptEl)\n}\n\nfunction getComputedStyle(el: HTMLElement, styleProp: string) {\n return window.document.defaultView!.getComputedStyle(el).getPropertyValue(styleProp)\n}\n\ndeclare global {\n var __docpress_hydrationFinished: undefined | true\n}\n"],"mappings":";;;;;;AAEA,kBAAkB;AAClB,wBAAwB;AACxB,OAAO,+BAA+B;AAEtC,SAAS,oBAAoB;AAC3B,aAAW,yCAAyC;AACtD;AAEA,SAAS,0BAA0B;AACjC,QAAM,aAA4B,MAAM;AAAA,IACtC,SAAS,eAAe,UAAU,EAAG,iBAAiB,yBAAyB;AAAA,EACjF;AACA,aAAW,QAAQ,CAAC,cAAc;AAChC,cAAU,UAAU,MAAM;AACxB,sBAAgB,SAAS;AAAA,IAC3B;AAAA,EACF,CAAC;AACH;AAEA,SAAS,gBAAgB,WAAwB;AAC/C,QAAM,YAAY,UAAU;AAC5B,SAAO,UAAU,WAAW,UAAU,GAAG,EAAE,UAAU,CAAC;AACtD,QAAM,cAAc,UAAU,MAAM,WAAW,MAAM;AAErD,QAAM,gBAAgB;AACtB,QAAM,UAAU,gBAAgB;AAChC,QAAM,UAAU,SAAS,eAAe,OAAO;AAC/C,SAAO,SAAS,EAAE,QAAQ,CAAC;AAE3B,QAAM,aAAa,UAAU,UAAU,SAAS,aAAa;AAE7D,MAAI,CAAC,YAAY;AACf,UAAM,QAAQ,UAAU;AACxB,QAAI,iBAAiB,OAAO,SAAS,MAAM,QAAQ;AACjD;AAAC;AAAA,QACC,GAAI,MAAM,iBAAiB,aAAa;AAAA,QACxC,GAAI,MAAM,iBAAiB,UAAU;AAAA,MACvC,EAAE,QAAQ,CAAC,OAAO;AAChB,WAAG,UAAU,OAAO,aAAa;AAAA,MACnC,CAAC;AAAA,IACH;AAAA,EACF;AAEA;AAAC,GAAC,WAAW,OAAO,EAAE,QAAQ,CAAC,OAAO;AACpC,OAAG,UAAU,OAAO,aAAa;AAAA,EACnC,CAAC;AACH;AAEA,SAAS,WAAW,WAAyB;AAC3C,SAAO,UAAU,WAAW,UAAU,CAAC;AACvC,QAAM,WAAW,SAAS,cAAc,QAAQ;AAChD,WAAS,MAAM;AACf,WAAS,QAAQ;AACjB,WAAS,aAAa,WAAW,OAAO;AACxC,WAAS,qBAAqB,MAAM,EAAE,GAAG,YAAY,QAAQ;AAC/D;AAEA,SAAS,iBAAiB,IAAiB,WAAmB;AAC5D,SAAO,OAAO,SAAS,YAAa,iBAAiB,EAAE,EAAE,iBAAiB,SAAS;AACrF;","names":[]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
configFile
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-2SRWLPTC.js";
|
|
4
4
|
import "./chunk-TTLAZ2T2.js";
|
|
5
5
|
|
|
6
|
-
// cli/devServer.ts
|
|
6
|
+
// src/cli/devServer.ts
|
|
7
7
|
import express from "express";
|
|
8
8
|
import * as vite from "vite";
|
|
9
9
|
import { renderPage } from "vite-plugin-ssr";
|
|
@@ -30,4 +30,4 @@ async function startServer() {
|
|
|
30
30
|
app.listen(port);
|
|
31
31
|
console.log(`Server running at http://localhost:${port}`);
|
|
32
32
|
}
|
|
33
|
-
//# sourceMappingURL=devServer-
|
|
33
|
+
//# sourceMappingURL=devServer-TDBL5PHQ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/devServer.ts"],"sourcesContent":["import express from 'express'\nimport * as vite from 'vite'\nimport { renderPage } from 'vite-plugin-ssr'\nimport { configFile } from './configFile'\nconst viteVersion = (vite as { version?: string }).version || '2.?.?'\n\nstartServer()\n\nasync function startServer() {\n const app = express()\n\n const viteDevServer = await vite.createServer({\n configFile,\n server: { middlewareMode: viteVersion.startsWith('2') ? 'ssr' : true }\n })\n app.use(viteDevServer.middlewares)\n\n app.get('*', async (req, res, next) => {\n const pageContextInit = {\n urlOriginal: req.originalUrl\n }\n const pageContext = await renderPage(pageContextInit)\n if (!pageContext.httpResponse) return next()\n const { body, statusCode, contentType } = pageContext.httpResponse\n res.status(statusCode).type(contentType).send(body)\n })\n\n const port = 3000\n app.listen(port)\n console.log(`Server running at http://localhost:${port}`)\n}\n"],"mappings":";;;;;;AAAA,OAAO,aAAa;AACpB,YAAY,UAAU;AACtB,SAAS,kBAAkB;AAE3B,IAAM,cAA6C,gBAAW;AAE9D,YAAY;AAEZ,eAAe,cAAc;AAC3B,QAAM,MAAM,QAAQ;AAEpB,QAAM,gBAAgB,MAAW,kBAAa;AAAA,IAC5C;AAAA,IACA,QAAQ,EAAE,gBAAgB,YAAY,WAAW,GAAG,IAAI,QAAQ,KAAK;AAAA,EACvE,CAAC;AACD,MAAI,IAAI,cAAc,WAAW;AAEjC,MAAI,IAAI,KAAK,OAAO,KAAK,KAAK,SAAS;AACrC,UAAM,kBAAkB;AAAA,MACtB,aAAa,IAAI;AAAA,IACnB;AACA,UAAM,cAAc,MAAM,WAAW,eAAe;AACpD,QAAI,CAAC,YAAY;AAAc,aAAO,KAAK;AAC3C,UAAM,EAAE,MAAM,YAAY,YAAY,IAAI,YAAY;AACtD,QAAI,OAAO,UAAU,EAAE,KAAK,WAAW,EAAE,KAAK,IAAI;AAAA,EACpD,CAAC;AAED,QAAM,OAAO;AACb,MAAI,OAAO,IAAI;AACf,UAAQ,IAAI,sCAAsC,MAAM;AAC1D;","names":[]}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React$1 from 'react';
|
|
2
|
-
export { FeatureList } from './
|
|
2
|
+
export { FeatureList } from './components/features/FeatureList.js';
|
|
3
3
|
|
|
4
4
|
declare type EmojiName = 'warning' | 'typescript' | 'shield' | 'mechanical-arm' | 'mountain' | 'rocket' | 'wrench' | 'compass' | 'seedling' | 'books' | 'plug' | 'earth' | 'gear' | 'red-heart' | 'high-voltage' | 'gem-stone' | 'dizzy' | 'sparkles' | 'writing-hang' | 'road-fork' | 'engine' | 'red-circle' | 'sparkling-heart' | 'gift' | 'package' | 'info' | 'lab' | 'trophy';
|
|
5
5
|
declare function Emoji({ name, style }: {
|
|
@@ -7,64 +7,6 @@ declare function Emoji({ name, style }: {
|
|
|
7
7
|
style?: React$1.CSSProperties;
|
|
8
8
|
}): JSX.Element;
|
|
9
9
|
|
|
10
|
-
declare type HeadingWithoutLink = {
|
|
11
|
-
url: string;
|
|
12
|
-
title: string | JSX.Element;
|
|
13
|
-
};
|
|
14
|
-
declare type HeadingDefinition = HeadingBase & (({
|
|
15
|
-
level: 1;
|
|
16
|
-
titleEmoji: EmojiName;
|
|
17
|
-
} & HeadingAbstract) | ({
|
|
18
|
-
level: 4;
|
|
19
|
-
} & HeadingAbstract) | {
|
|
20
|
-
level: 2;
|
|
21
|
-
isListTitle?: true;
|
|
22
|
-
sectionTitles?: string[];
|
|
23
|
-
url: string;
|
|
24
|
-
} | {
|
|
25
|
-
level: 3;
|
|
26
|
-
url: string;
|
|
27
|
-
});
|
|
28
|
-
declare type HeadingBase = {
|
|
29
|
-
title: string;
|
|
30
|
-
level: number;
|
|
31
|
-
url?: string;
|
|
32
|
-
titleDocument?: string;
|
|
33
|
-
titleInNav?: string;
|
|
34
|
-
};
|
|
35
|
-
declare type HeadingAbstract = {
|
|
36
|
-
url?: undefined;
|
|
37
|
-
titleDocument?: undefined;
|
|
38
|
-
titleInNav?: undefined;
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
declare type Config = {
|
|
42
|
-
projectInfo: {
|
|
43
|
-
githubRepository: string;
|
|
44
|
-
githubIssues: string;
|
|
45
|
-
projectName: string;
|
|
46
|
-
projectNameJsx?: JSX.Element;
|
|
47
|
-
projectVersion: string;
|
|
48
|
-
discordInvite: string;
|
|
49
|
-
twitterProfile: string;
|
|
50
|
-
};
|
|
51
|
-
faviconUrl: string;
|
|
52
|
-
algolia: null | {
|
|
53
|
-
appId: string;
|
|
54
|
-
apiKey: string;
|
|
55
|
-
indexName: string;
|
|
56
|
-
};
|
|
57
|
-
headings: HeadingDefinition[];
|
|
58
|
-
headingsWithoutLink: HeadingWithoutLink[];
|
|
59
|
-
navHeaderMobile: React.ReactNode;
|
|
60
|
-
navHeader: React.ReactNode;
|
|
61
|
-
titleNormalCase: boolean;
|
|
62
|
-
tagline: string;
|
|
63
|
-
websiteUrl: string;
|
|
64
|
-
bannerUrl?: string;
|
|
65
|
-
twitterHandle: string;
|
|
66
|
-
};
|
|
67
|
-
|
|
68
10
|
declare function Link(props: {
|
|
69
11
|
href: string;
|
|
70
12
|
text?: string | JSX.Element;
|
|
@@ -132,4 +74,64 @@ declare function jsxToTextContent(node: JSX.Element | string): string;
|
|
|
132
74
|
|
|
133
75
|
declare function objectAssign<Obj extends Object, ObjAddendum>(obj: Obj, objAddendum: ObjAddendum): asserts obj is Obj & ObjAddendum;
|
|
134
76
|
|
|
135
|
-
|
|
77
|
+
declare function crawlAllFiles(dir: string): Promise<string[]>;
|
|
78
|
+
|
|
79
|
+
declare type HeadingWithoutLink = {
|
|
80
|
+
url: string;
|
|
81
|
+
title: string | JSX.Element;
|
|
82
|
+
};
|
|
83
|
+
declare type HeadingDefinition = HeadingBase & (({
|
|
84
|
+
level: 1;
|
|
85
|
+
titleEmoji: EmojiName;
|
|
86
|
+
} & HeadingAbstract) | ({
|
|
87
|
+
level: 4;
|
|
88
|
+
} & HeadingAbstract) | {
|
|
89
|
+
level: 2;
|
|
90
|
+
isListTitle?: true;
|
|
91
|
+
sectionTitles?: string[];
|
|
92
|
+
url: string;
|
|
93
|
+
} | {
|
|
94
|
+
level: 3;
|
|
95
|
+
url: string;
|
|
96
|
+
});
|
|
97
|
+
declare type HeadingBase = {
|
|
98
|
+
title: string;
|
|
99
|
+
level: number;
|
|
100
|
+
url?: string;
|
|
101
|
+
titleDocument?: string;
|
|
102
|
+
titleInNav?: string;
|
|
103
|
+
};
|
|
104
|
+
declare type HeadingAbstract = {
|
|
105
|
+
url?: undefined;
|
|
106
|
+
titleDocument?: undefined;
|
|
107
|
+
titleInNav?: undefined;
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
declare type Config = {
|
|
111
|
+
projectInfo: {
|
|
112
|
+
githubRepository: string;
|
|
113
|
+
githubIssues: string;
|
|
114
|
+
projectName: string;
|
|
115
|
+
projectNameJsx?: JSX.Element;
|
|
116
|
+
projectVersion: string;
|
|
117
|
+
discordInvite: string;
|
|
118
|
+
twitterProfile: string;
|
|
119
|
+
};
|
|
120
|
+
faviconUrl: string;
|
|
121
|
+
algolia: null | {
|
|
122
|
+
appId: string;
|
|
123
|
+
apiKey: string;
|
|
124
|
+
indexName: string;
|
|
125
|
+
};
|
|
126
|
+
headings: HeadingDefinition[];
|
|
127
|
+
headingsWithoutLink: HeadingWithoutLink[];
|
|
128
|
+
navHeaderMobile: React.ReactNode;
|
|
129
|
+
navHeader: React.ReactNode;
|
|
130
|
+
titleNormalCase: boolean;
|
|
131
|
+
tagline: string;
|
|
132
|
+
websiteUrl: string;
|
|
133
|
+
bannerUrl?: string;
|
|
134
|
+
twitterHandle: string;
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
export { CodeBlock, Config, DocLink, Emoji, EmojiName, HeadingDefinition, HeadingWithoutLink, HorizontalLine, ImportMeta, Info, Link, Note, P, ReadingRecommendation, RepoLink, Sponsors, assert, assertUsage, crawlAllFiles, determineSectionTitle, determineSectionUrlHash, filter, isBrowser, isRepoLink, jsxToTextContent, objectAssign };
|
package/dist/index.js
CHANGED
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
import "./chunk-3NFN2KUH.js";
|
|
2
1
|
import {
|
|
3
2
|
RepoLink,
|
|
4
3
|
getHeadings,
|
|
5
4
|
isRepoLink,
|
|
6
5
|
parseTitle,
|
|
7
6
|
usePageContext
|
|
8
|
-
} from "./chunk-
|
|
9
|
-
import {
|
|
10
|
-
Emoji
|
|
11
|
-
} from "./chunk-G2KXEHNF.js";
|
|
7
|
+
} from "./chunk-M7LTQJLV.js";
|
|
12
8
|
import {
|
|
13
9
|
FeatureList
|
|
14
10
|
} from "./chunk-OEVBWUR6.js";
|
|
15
11
|
import {
|
|
16
|
-
|
|
17
|
-
|
|
12
|
+
Emoji,
|
|
13
|
+
crawlAllFiles,
|
|
18
14
|
determineSectionTitle,
|
|
19
15
|
determineSectionUrlHash,
|
|
20
16
|
filter,
|
|
21
|
-
isBrowser,
|
|
22
17
|
jsxToTextContent,
|
|
23
18
|
objectAssign
|
|
24
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-P6M6A4HU.js";
|
|
20
|
+
import {
|
|
21
|
+
assert,
|
|
22
|
+
assertUsage,
|
|
23
|
+
isBrowser
|
|
24
|
+
} from "./chunk-G2A5MZJA.js";
|
|
25
25
|
import "./chunk-TTLAZ2T2.js";
|
|
26
26
|
|
|
27
27
|
// src/components/Link.tsx
|
|
@@ -477,6 +477,7 @@ export {
|
|
|
477
477
|
Sponsors,
|
|
478
478
|
assert,
|
|
479
479
|
assertUsage,
|
|
480
|
+
crawlAllFiles,
|
|
480
481
|
determineSectionTitle,
|
|
481
482
|
determineSectionUrlHash,
|
|
482
483
|
filter,
|