@docusaurus/utils 2.0.0-beta.16 → 2.0.0-beta.17
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/lib/constants.js +1 -2
- package/lib/constants.js.map +1 -1
- package/lib/dataFileUtils.js +4 -4
- package/lib/dataFileUtils.js.map +1 -1
- package/lib/emitUtils.d.ts +23 -0
- package/lib/emitUtils.d.ts.map +1 -0
- package/lib/emitUtils.js +90 -0
- package/lib/emitUtils.js.map +1 -0
- package/lib/gitUtils.js +2 -2
- package/lib/gitUtils.js.map +1 -1
- package/lib/globUtils.js +3 -3
- package/lib/globUtils.js.map +1 -1
- package/lib/hashUtils.js +1 -1
- package/lib/hashUtils.js.map +1 -1
- package/lib/i18nUtils.d.ts +17 -0
- package/lib/i18nUtils.d.ts.map +1 -0
- package/lib/i18nUtils.js +40 -0
- package/lib/i18nUtils.js.map +1 -0
- package/lib/index.d.ts +5 -49
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +43 -249
- package/lib/index.js.map +1 -1
- package/lib/jsUtils.d.ts +17 -0
- package/lib/jsUtils.d.ts.map +1 -0
- package/lib/jsUtils.js +72 -0
- package/lib/jsUtils.js.map +1 -0
- package/lib/markdownLinks.js +1 -1
- package/lib/markdownLinks.js.map +1 -1
- package/lib/markdownParser.js +5 -6
- package/lib/markdownParser.js.map +1 -1
- package/lib/pathUtils.d.ts +1 -0
- package/lib/pathUtils.d.ts.map +1 -1
- package/lib/pathUtils.js +9 -2
- package/lib/pathUtils.js.map +1 -1
- package/lib/slugger.js +2 -2
- package/lib/slugger.js.map +1 -1
- package/lib/tags.js +2 -3
- package/lib/tags.js.map +1 -1
- package/lib/urlUtils.d.ts +11 -0
- package/lib/urlUtils.d.ts.map +1 -1
- package/lib/urlUtils.js +56 -1
- package/lib/urlUtils.js.map +1 -1
- package/lib/webpackUtils.js +1 -1
- package/lib/webpackUtils.js.map +1 -1
- package/package.json +4 -4
- package/src/emitUtils.ts +113 -0
- package/src/i18nUtils.ts +58 -0
- package/src/index.ts +26 -300
- package/src/jsUtils.ts +88 -0
- package/src/pathUtils.ts +8 -2
- package/src/urlUtils.ts +53 -0
package/lib/tags.js
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.groupTaggedItems = exports.normalizeFrontMatterTags = exports.normalizeFrontMatterTag = void 0;
|
|
10
10
|
const tslib_1 = require("tslib");
|
|
11
|
-
const lodash_1 =
|
|
11
|
+
const lodash_1 = tslib_1.__importDefault(require("lodash"));
|
|
12
12
|
const urlUtils_1 = require("./urlUtils");
|
|
13
13
|
function normalizeFrontMatterTag(tagsPath, frontMatterTag) {
|
|
14
14
|
function toTagObject(tagString) {
|
|
@@ -49,12 +49,11 @@ exports.normalizeFrontMatterTags = normalizeFrontMatterTags;
|
|
|
49
49
|
function groupTaggedItems(items, getItemTags) {
|
|
50
50
|
const result = {};
|
|
51
51
|
function handleItemTag(item, tag) {
|
|
52
|
-
var _a;
|
|
53
52
|
// Init missing tag groups
|
|
54
53
|
// TODO: it's not really clear what should be the behavior if 2 items have
|
|
55
54
|
// the same tag but the permalink is different for each
|
|
56
55
|
// For now, the first tag found wins
|
|
57
|
-
result[tag.permalink] =
|
|
56
|
+
result[tag.permalink] = result[tag.permalink] ?? {
|
|
58
57
|
tag,
|
|
59
58
|
items: [],
|
|
60
59
|
};
|
package/lib/tags.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tags.js","sourceRoot":"","sources":["../src/tags.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;AAEH,
|
|
1
|
+
{"version":3,"file":"tags.js","sourceRoot":"","sources":["../src/tags.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;AAEH,4DAAuB;AACvB,yCAAwC;AASxC,SAAgB,uBAAuB,CACrC,QAAgB,EAChB,cAA8B;IAE9B,SAAS,WAAW,CAAC,SAAiB;QACpC,OAAO;YACL,KAAK,EAAE,SAAS;YAChB,SAAS,EAAE,gBAAC,CAAC,SAAS,CAAC,SAAS,CAAC;SAClC,CAAC;IACJ,CAAC;IAED,0DAA0D;IAC1D,SAAS,qBAAqB,CAAC,SAAiB;QAC9C,2EAA2E;QAC3E,2EAA2E;QAC3E,mDAAmD;QACnD,OAAO,IAAA,uBAAY,EAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,GAAG,GACP,OAAO,cAAc,KAAK,QAAQ;QAChC,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC;QAC7B,CAAC,CAAC,cAAc,CAAC;IAErB,OAAO;QACL,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,SAAS,EAAE,qBAAqB,CAAC,GAAG,CAAC,SAAS,CAAC;KAChD,CAAC;AACJ,CAAC;AA5BD,0DA4BC;AAED,SAAgB,wBAAwB,CACtC,QAAgB,EAChB,kBAAgD,EAAE;IAElD,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CACvC,uBAAuB,CAAC,QAAQ,EAAE,GAAG,CAAC,CACvC,CAAC;IAEF,OAAO,gBAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAChD,CAAC;AATD,4DASC;AAOD;;;;;;;GAOG;AACH,SAAgB,gBAAgB,CAC9B,KAAa,EACb,WAAkC;IAElC,MAAM,MAAM,GAA0C,EAAE,CAAC;IAEzD,SAAS,aAAa,CAAC,IAAU,EAAE,GAAQ;QACzC,0BAA0B;QAC1B,0EAA0E;QAC1E,uDAAuD;QACvD,oCAAoC;QACpC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI;YAC/C,GAAG;YACH,KAAK,EAAE,EAAE;SACV,CAAC;QAEF,oBAAoB;QACpB,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACrB,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YAChC,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,mEAAmE;IACnE,wDAAwD;IACxD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACtC,KAAK,CAAC,KAAK,GAAG,gBAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AAjCD,4CAiCC"}
|
package/lib/urlUtils.d.ts
CHANGED
|
@@ -6,4 +6,15 @@
|
|
|
6
6
|
*/
|
|
7
7
|
export declare function normalizeUrl(rawUrls: string[]): string;
|
|
8
8
|
export declare function getEditUrl(fileRelativePath: string, editUrl?: string): string | undefined;
|
|
9
|
+
/**
|
|
10
|
+
* Convert filepath to url path.
|
|
11
|
+
* Example: 'index.md' -> '/', 'foo/bar.js' -> '/foo/bar',
|
|
12
|
+
*/
|
|
13
|
+
export declare function fileToPath(file: string): string;
|
|
14
|
+
export declare function encodePath(userPath: string): string;
|
|
15
|
+
export declare function isValidPathname(str: string): boolean;
|
|
16
|
+
export declare function resolvePathname(to: string, from?: string): string;
|
|
17
|
+
export declare function addLeadingSlash(str: string): string;
|
|
18
|
+
export declare function addTrailingSlash(str: string): string;
|
|
19
|
+
export declare function removeTrailingSlash(str: string): string;
|
|
9
20
|
//# sourceMappingURL=urlUtils.d.ts.map
|
package/lib/urlUtils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"urlUtils.d.ts","sourceRoot":"","sources":["../src/urlUtils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"urlUtils.d.ts","sourceRoot":"","sources":["../src/urlUtils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CA8EtD;AAED,wBAAgB,UAAU,CACxB,gBAAgB,EAAE,MAAM,EACxB,OAAO,CAAC,EAAE,MAAM,GACf,MAAM,GAAG,SAAS,CAKpB;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQ/C;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKnD;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAWpD;AAGD,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAEjE;AACD,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEnD;AAGD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEpD;AACD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEvD"}
|
package/lib/urlUtils.js
CHANGED
|
@@ -6,7 +6,10 @@
|
|
|
6
6
|
* LICENSE file in the root directory of this source tree.
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.getEditUrl = exports.normalizeUrl = void 0;
|
|
9
|
+
exports.removeTrailingSlash = exports.addTrailingSlash = exports.addLeadingSlash = exports.resolvePathname = exports.isValidPathname = exports.encodePath = exports.fileToPath = exports.getEditUrl = exports.normalizeUrl = void 0;
|
|
10
|
+
const tslib_1 = require("tslib");
|
|
11
|
+
const jsUtils_1 = require("./jsUtils");
|
|
12
|
+
const resolve_pathname_1 = tslib_1.__importDefault(require("resolve-pathname"));
|
|
10
13
|
function normalizeUrl(rawUrls) {
|
|
11
14
|
const urls = [...rawUrls];
|
|
12
15
|
const resultArray = [];
|
|
@@ -78,4 +81,56 @@ function getEditUrl(fileRelativePath, editUrl) {
|
|
|
78
81
|
: undefined;
|
|
79
82
|
}
|
|
80
83
|
exports.getEditUrl = getEditUrl;
|
|
84
|
+
/**
|
|
85
|
+
* Convert filepath to url path.
|
|
86
|
+
* Example: 'index.md' -> '/', 'foo/bar.js' -> '/foo/bar',
|
|
87
|
+
*/
|
|
88
|
+
function fileToPath(file) {
|
|
89
|
+
const indexRE = /(?<dirname>^|.*\/)index\.(?:mdx?|jsx?|tsx?)$/i;
|
|
90
|
+
const extRE = /\.(?:mdx?|jsx?|tsx?)$/;
|
|
91
|
+
if (indexRE.test(file)) {
|
|
92
|
+
return file.replace(indexRE, '/$1');
|
|
93
|
+
}
|
|
94
|
+
return `/${file.replace(extRE, '').replace(/\\/g, '/')}`;
|
|
95
|
+
}
|
|
96
|
+
exports.fileToPath = fileToPath;
|
|
97
|
+
function encodePath(userPath) {
|
|
98
|
+
return userPath
|
|
99
|
+
.split('/')
|
|
100
|
+
.map((item) => encodeURIComponent(item))
|
|
101
|
+
.join('/');
|
|
102
|
+
}
|
|
103
|
+
exports.encodePath = encodePath;
|
|
104
|
+
function isValidPathname(str) {
|
|
105
|
+
if (!str.startsWith('/')) {
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
try {
|
|
109
|
+
// weird, but is there a better way?
|
|
110
|
+
const parsedPathname = new URL(str, 'https://domain.com').pathname;
|
|
111
|
+
return parsedPathname === str || parsedPathname === encodeURI(str);
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
exports.isValidPathname = isValidPathname;
|
|
118
|
+
// resolve pathname and fail fast if resolution fails
|
|
119
|
+
function resolvePathname(to, from) {
|
|
120
|
+
return (0, resolve_pathname_1.default)(to, from);
|
|
121
|
+
}
|
|
122
|
+
exports.resolvePathname = resolvePathname;
|
|
123
|
+
function addLeadingSlash(str) {
|
|
124
|
+
return str.startsWith('/') ? str : `/${str}`;
|
|
125
|
+
}
|
|
126
|
+
exports.addLeadingSlash = addLeadingSlash;
|
|
127
|
+
// TODO deduplicate: also present in @docusaurus/utils-common
|
|
128
|
+
function addTrailingSlash(str) {
|
|
129
|
+
return str.endsWith('/') ? str : `${str}/`;
|
|
130
|
+
}
|
|
131
|
+
exports.addTrailingSlash = addTrailingSlash;
|
|
132
|
+
function removeTrailingSlash(str) {
|
|
133
|
+
return (0, jsUtils_1.removeSuffix)(str, '/');
|
|
134
|
+
}
|
|
135
|
+
exports.removeTrailingSlash = removeTrailingSlash;
|
|
81
136
|
//# sourceMappingURL=urlUtils.js.map
|
package/lib/urlUtils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"urlUtils.js","sourceRoot":"","sources":["../src/urlUtils.ts"],"names":[],"mappings":";AAAA;;;;;GAKG
|
|
1
|
+
{"version":3,"file":"urlUtils.js","sourceRoot":"","sources":["../src/urlUtils.ts"],"names":[],"mappings":"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"}
|
package/lib/webpackUtils.js
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.getFileLoaderUtils = void 0;
|
|
10
10
|
const tslib_1 = require("tslib");
|
|
11
|
-
const path_1 =
|
|
11
|
+
const path_1 = tslib_1.__importDefault(require("path"));
|
|
12
12
|
const pathUtils_1 = require("./pathUtils");
|
|
13
13
|
const constants_1 = require("./constants");
|
|
14
14
|
// Inspired by https://github.com/gatsbyjs/gatsby/blob/8e6e021014da310b9cc7d02e58c9b3efe938c665/packages/gatsby/src/utils/webpack-utils.ts#L447
|
package/lib/webpackUtils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webpackUtils.js","sourceRoot":"","sources":["../src/webpackUtils.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;AAGH,
|
|
1
|
+
{"version":3,"file":"webpackUtils.js","sourceRoot":"","sources":["../src/webpackUtils.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;AAGH,wDAAwB;AACxB,2CAAuC;AACvC,2CAGqB;AAoBrB,+IAA+I;AAC/I,SAAgB,kBAAkB;IAChC,8EAA8E;IAC9E,WAAW;IACX,MAAM,cAAc,GAAG,oCAAwB,CAAC;IAEhD,4DAA4D;IAC5D,MAAM,kBAAkB,GAAG,CAAC,MAAmB,EAAE,EAAE,CACjD,GAAG,yCAA6B,IAAI,MAAM,6BAA6B,CAAC;IAE1E,MAAM,OAAO,GAA+B;QAC1C,IAAI,EAAE,CAAC,OAA8B,EAAE,EAAE,CAAC,CAAC;YACzC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;YACtC,OAAO,EAAE;gBACP,IAAI,EAAE,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC;aACzC;SACF,CAAC;QACF,GAAG,EAAE,CAAC,OAA8B,EAAE,EAAE,CAAC,CAAC;YACxC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC;YACrC,OAAO,EAAE;gBACP,KAAK,EAAE,cAAc;gBACrB,IAAI,EAAE,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC;gBACxC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;aACzC;SACF,CAAC;QAEF,mDAAmD;QACnD,wEAAwE;QACxE,sEAAsE;QACtE,kEAAkE;QAClE,kDAAkD;QAClD,6BAA6B,EAAE,IAAI,IAAA,sBAAU,EAC3C,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAC9B,UAAU,cAAc,SAAS,kBAAkB,CAClD,QAAQ,CACT,aAAa,IAAA,sBAAU,EAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,GAAG;QAC3D,4BAA4B,EAAE,IAAI,IAAA,sBAAU,EAC1C,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAC/B,SAAS,kBAAkB,CAAC,OAAO,CAAC,GAAG;KACzC,CAAC;IAEF,MAAM,KAAK,GAA6B;QACtC;;;WAGG;QACH,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YACb,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAC,MAAM,EAAE,QAAQ,EAAC,CAAC,CAAC;YACtC,IAAI,EAAE,yCAAyC;SAChD,CAAC;QAEF,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YACZ,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAC,MAAM,EAAE,OAAO,EAAC,CAAC,CAAC;YACrC,IAAI,EAAE,4BAA4B;SACnC,CAAC;QAEF;;;WAGG;QACH,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YACZ,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAC,MAAM,EAAE,QAAQ,EAAC,CAAC,CAAC;YACtC,IAAI,EAAE,+CAA+C;SACtD,CAAC;QAEF,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;YACV,IAAI,EAAE,SAAS;YACf,KAAK,EAAE;gBACL;oBACE,GAAG,EAAE;wBACH;4BACE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC;4BACxC,OAAO,EAAE;gCACP,QAAQ,EAAE,KAAK;gCACf,IAAI,EAAE,IAAI;gCACV,UAAU,EAAE;oCACV,OAAO,EAAE;wCACP;4CACE,IAAI,EAAE,gBAAgB;4CACtB,MAAM,EAAE;gDACN,SAAS,EAAE;oDACT,WAAW,EAAE,KAAK;oDAClB,aAAa,EAAE,KAAK;iDACrB;6CACF;yCACF;qCACF;iCACF;gCACD,SAAS,EAAE,IAAI;gCACf,GAAG,EAAE,CAAC,CAAC,cAAI,CAAC;6BACb;yBACF;qBACF;oBACD,6DAA6D;oBAC7D,gDAAgD;oBAChD,MAAM,EAAE;wBACN,GAAG,EAAE,CAAC,wBAAwB,CAAC;qBAChC;iBACF;gBACD;oBACE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAC,MAAM,EAAE,QAAQ,EAAC,CAAC,CAAC;iBACvC;aACF;SACF,CAAC;QAEF,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;YAClB,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,OAAO,EAAC,CAAC,CAAC;YACtC,IAAI,EAAE,iCAAiC;SACxC,CAAC;KACH,CAAC;IAEF,OAAO,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC;AAC1B,CAAC;AA/GD,gDA+GC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@docusaurus/utils",
|
|
3
|
-
"version": "2.0.0-beta.
|
|
3
|
+
"version": "2.0.0-beta.17",
|
|
4
4
|
"description": "Node utility functions for Docusaurus packages.",
|
|
5
5
|
"main": "./lib/index.js",
|
|
6
6
|
"types": "./lib/index.d.ts",
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
},
|
|
19
19
|
"license": "MIT",
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@docusaurus/logger": "2.0.0-beta.
|
|
21
|
+
"@docusaurus/logger": "2.0.0-beta.17",
|
|
22
22
|
"@svgr/webpack": "^6.0.0",
|
|
23
23
|
"file-loader": "^6.2.0",
|
|
24
24
|
"fs-extra": "^10.0.1",
|
|
@@ -38,12 +38,12 @@
|
|
|
38
38
|
"node": ">=14"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
|
-
"@docusaurus/types": "2.0.0-beta.
|
|
41
|
+
"@docusaurus/types": "2.0.0-beta.17",
|
|
42
42
|
"@types/dedent": "^0.7.0",
|
|
43
43
|
"@types/github-slugger": "^1.3.0",
|
|
44
44
|
"@types/micromatch": "^4.0.2",
|
|
45
45
|
"@types/react-dom": "^17.0.11",
|
|
46
46
|
"dedent": "^0.7.0"
|
|
47
47
|
},
|
|
48
|
-
"gitHead": "
|
|
48
|
+
"gitHead": "0032c0b0480083227af2e1b4da2d3ee6ce992403"
|
|
49
49
|
}
|
package/src/emitUtils.ts
ADDED
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import path from 'path';
|
|
9
|
+
import fs from 'fs-extra';
|
|
10
|
+
import {createHash} from 'crypto';
|
|
11
|
+
import {simpleHash, docuHash} from './hashUtils';
|
|
12
|
+
import {findAsyncSequential} from './jsUtils';
|
|
13
|
+
|
|
14
|
+
const fileHash = new Map<string, string>();
|
|
15
|
+
|
|
16
|
+
export async function generate(
|
|
17
|
+
generatedFilesDir: string,
|
|
18
|
+
file: string,
|
|
19
|
+
content: string,
|
|
20
|
+
skipCache: boolean = process.env.NODE_ENV === 'production',
|
|
21
|
+
): Promise<void> {
|
|
22
|
+
const filepath = path.join(generatedFilesDir, file);
|
|
23
|
+
|
|
24
|
+
if (skipCache) {
|
|
25
|
+
await fs.ensureDir(path.dirname(filepath));
|
|
26
|
+
await fs.writeFile(filepath, content);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
let lastHash = fileHash.get(filepath);
|
|
31
|
+
|
|
32
|
+
// If file already exists but its not in runtime cache yet,
|
|
33
|
+
// we try to calculate the content hash and then compare
|
|
34
|
+
// This is to avoid unnecessary overwriting and we can reuse old file.
|
|
35
|
+
if (!lastHash && (await fs.pathExists(filepath))) {
|
|
36
|
+
const lastContent = await fs.readFile(filepath, 'utf8');
|
|
37
|
+
lastHash = createHash('md5').update(lastContent).digest('hex');
|
|
38
|
+
fileHash.set(filepath, lastHash);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
const currentHash = createHash('md5').update(content).digest('hex');
|
|
42
|
+
|
|
43
|
+
if (lastHash !== currentHash) {
|
|
44
|
+
await fs.ensureDir(path.dirname(filepath));
|
|
45
|
+
await fs.writeFile(filepath, content);
|
|
46
|
+
fileHash.set(filepath, currentHash);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const chunkNameCache = new Map();
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Generate unique chunk name given a module path.
|
|
54
|
+
*/
|
|
55
|
+
export function genChunkName(
|
|
56
|
+
modulePath: string,
|
|
57
|
+
prefix?: string,
|
|
58
|
+
preferredName?: string,
|
|
59
|
+
shortId: boolean = process.env.NODE_ENV === 'production',
|
|
60
|
+
): string {
|
|
61
|
+
let chunkName: string | undefined = chunkNameCache.get(modulePath);
|
|
62
|
+
if (!chunkName) {
|
|
63
|
+
if (shortId) {
|
|
64
|
+
chunkName = simpleHash(modulePath, 8);
|
|
65
|
+
} else {
|
|
66
|
+
let str = modulePath;
|
|
67
|
+
if (preferredName) {
|
|
68
|
+
const shortHash = simpleHash(modulePath, 3);
|
|
69
|
+
str = `${preferredName}${shortHash}`;
|
|
70
|
+
}
|
|
71
|
+
const name = str === '/' ? 'index' : docuHash(str);
|
|
72
|
+
chunkName = prefix ? `${prefix}---${name}` : name;
|
|
73
|
+
}
|
|
74
|
+
chunkNameCache.set(modulePath, chunkName);
|
|
75
|
+
}
|
|
76
|
+
return chunkName;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* @param permalink The URL that the HTML file corresponds to, without base URL
|
|
81
|
+
* @param outDir Full path to the output directory
|
|
82
|
+
* @param trailingSlash The site config option. If provided, only one path will
|
|
83
|
+
* be read.
|
|
84
|
+
* @returns This returns a buffer, which you have to decode string yourself if
|
|
85
|
+
* needed. (Not always necessary since the output isn't for human consumption
|
|
86
|
+
* anyways, and most HTML manipulation libs accept buffers)
|
|
87
|
+
*/
|
|
88
|
+
export async function readOutputHTMLFile(
|
|
89
|
+
permalink: string,
|
|
90
|
+
outDir: string,
|
|
91
|
+
trailingSlash: boolean | undefined,
|
|
92
|
+
): Promise<Buffer> {
|
|
93
|
+
const withTrailingSlashPath = path.join(outDir, permalink, 'index.html');
|
|
94
|
+
const withoutTrailingSlashPath = path.join(
|
|
95
|
+
outDir,
|
|
96
|
+
`${permalink.replace(/\/$/, '')}.html`,
|
|
97
|
+
);
|
|
98
|
+
if (trailingSlash) {
|
|
99
|
+
return fs.readFile(withTrailingSlashPath);
|
|
100
|
+
} else if (trailingSlash === false) {
|
|
101
|
+
return fs.readFile(withoutTrailingSlashPath);
|
|
102
|
+
}
|
|
103
|
+
const HTMLPath = await findAsyncSequential(
|
|
104
|
+
[withTrailingSlashPath, withoutTrailingSlashPath],
|
|
105
|
+
fs.pathExists,
|
|
106
|
+
);
|
|
107
|
+
if (!HTMLPath) {
|
|
108
|
+
throw new Error(
|
|
109
|
+
`Expected output HTML file to be found at ${withTrailingSlashPath}`,
|
|
110
|
+
);
|
|
111
|
+
}
|
|
112
|
+
return fs.readFile(HTMLPath);
|
|
113
|
+
}
|
package/src/i18nUtils.ts
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import path from 'path';
|
|
9
|
+
import _ from 'lodash';
|
|
10
|
+
import type {TranslationFileContent, TranslationFile} from '@docusaurus/types';
|
|
11
|
+
import {DEFAULT_PLUGIN_ID} from './constants';
|
|
12
|
+
|
|
13
|
+
export function mergeTranslations(
|
|
14
|
+
contents: TranslationFileContent[],
|
|
15
|
+
): TranslationFileContent {
|
|
16
|
+
return contents.reduce((acc, content) => ({...acc, ...content}), {});
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// Useful to update all the messages of a translation file
|
|
20
|
+
// Used in tests to simulate translations
|
|
21
|
+
export function updateTranslationFileMessages(
|
|
22
|
+
translationFile: TranslationFile,
|
|
23
|
+
updateMessage: (message: string) => string,
|
|
24
|
+
): TranslationFile {
|
|
25
|
+
return {
|
|
26
|
+
...translationFile,
|
|
27
|
+
content: _.mapValues(translationFile.content, (translation) => ({
|
|
28
|
+
...translation,
|
|
29
|
+
message: updateMessage(translation.message),
|
|
30
|
+
})),
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export function getPluginI18nPath({
|
|
35
|
+
siteDir,
|
|
36
|
+
locale,
|
|
37
|
+
pluginName,
|
|
38
|
+
pluginId = DEFAULT_PLUGIN_ID,
|
|
39
|
+
subPaths = [],
|
|
40
|
+
}: {
|
|
41
|
+
siteDir: string;
|
|
42
|
+
locale: string;
|
|
43
|
+
pluginName: string;
|
|
44
|
+
pluginId?: string | undefined;
|
|
45
|
+
subPaths?: string[];
|
|
46
|
+
}): string {
|
|
47
|
+
return path.join(
|
|
48
|
+
siteDir,
|
|
49
|
+
'i18n',
|
|
50
|
+
// namespace first by locale: convenient to work in a single folder for a
|
|
51
|
+
// translator
|
|
52
|
+
locale,
|
|
53
|
+
// Make it convenient to use for single-instance
|
|
54
|
+
// ie: return "docs", not "docs-default" nor "docs/default"
|
|
55
|
+
`${pluginName}${pluginId === DEFAULT_PLUGIN_ID ? '' : `-${pluginId}`}`,
|
|
56
|
+
...subPaths,
|
|
57
|
+
);
|
|
58
|
+
}
|