@docusaurus/utils 3.9.2 → 3.10.1
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/index.d.ts +5 -4
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +13 -11
- package/lib/index.js.map +1 -1
- package/lib/lastUpdateUtils.d.ts +2 -6
- package/lib/lastUpdateUtils.d.ts.map +1 -1
- package/lib/lastUpdateUtils.js +13 -60
- package/lib/lastUpdateUtils.js.map +1 -1
- package/lib/markdownHeadingIdUtils.d.ts +49 -0
- package/lib/markdownHeadingIdUtils.d.ts.map +1 -0
- package/lib/markdownHeadingIdUtils.js +148 -0
- package/lib/markdownHeadingIdUtils.js.map +1 -0
- package/lib/markdownUtils.d.ts +0 -31
- package/lib/markdownUtils.d.ts.map +1 -1
- package/lib/markdownUtils.js +0 -89
- package/lib/markdownUtils.js.map +1 -1
- package/lib/moduleUtils.d.ts.map +1 -1
- package/lib/moduleUtils.js +4 -4
- package/lib/moduleUtils.js.map +1 -1
- package/lib/{gitUtils.d.ts → vcs/gitUtils.d.ts} +18 -0
- package/lib/vcs/gitUtils.d.ts.map +1 -0
- package/lib/vcs/gitUtils.js +343 -0
- package/lib/vcs/gitUtils.js.map +1 -0
- package/lib/vcs/vcs.d.ts +19 -0
- package/lib/vcs/vcs.d.ts.map +1 -0
- package/lib/vcs/vcs.js +46 -0
- package/lib/vcs/vcs.js.map +1 -0
- package/lib/vcs/vcsDefaultV1.d.ts +13 -0
- package/lib/vcs/vcsDefaultV1.d.ts.map +1 -0
- package/lib/vcs/vcsDefaultV1.js +33 -0
- package/lib/vcs/vcsDefaultV1.js.map +1 -0
- package/lib/vcs/vcsDefaultV2.d.ts +13 -0
- package/lib/vcs/vcsDefaultV2.d.ts.map +1 -0
- package/lib/vcs/vcsDefaultV2.js +33 -0
- package/lib/vcs/vcsDefaultV2.js.map +1 -0
- package/lib/vcs/vcsDisabled.d.ts +12 -0
- package/lib/vcs/vcsDisabled.d.ts.map +1 -0
- package/lib/vcs/vcsDisabled.js +24 -0
- package/lib/vcs/vcsDisabled.js.map +1 -0
- package/lib/vcs/vcsGitAdHoc.d.ts +16 -0
- package/lib/vcs/vcsGitAdHoc.d.ts.map +1 -0
- package/lib/vcs/vcsGitAdHoc.js +29 -0
- package/lib/vcs/vcsGitAdHoc.js.map +1 -0
- package/lib/vcs/vcsGitEager.d.ts +10 -0
- package/lib/vcs/vcsGitEager.d.ts.map +1 -0
- package/lib/vcs/vcsGitEager.js +89 -0
- package/lib/vcs/vcsGitEager.js.map +1 -0
- package/lib/vcs/vcsHardcoded.d.ts +17 -0
- package/lib/vcs/vcsHardcoded.d.ts.map +1 -0
- package/lib/vcs/vcsHardcoded.js +41 -0
- package/lib/vcs/vcsHardcoded.js.map +1 -0
- package/package.json +7 -7
- package/src/index.ts +11 -8
- package/src/lastUpdateUtils.ts +18 -76
- package/src/markdownHeadingIdUtils.ts +209 -0
- package/src/markdownUtils.ts +0 -119
- package/src/moduleUtils.ts +6 -8
- package/src/vcs/gitUtils.ts +541 -0
- package/src/vcs/vcs.ts +54 -0
- package/src/vcs/vcsDefaultV1.ts +33 -0
- package/src/vcs/vcsDefaultV2.ts +33 -0
- package/src/vcs/vcsDisabled.ts +25 -0
- package/src/vcs/vcsGitAdHoc.ts +30 -0
- package/src/vcs/vcsGitEager.ts +135 -0
- package/src/vcs/vcsHardcoded.ts +45 -0
- package/lib/cliUtils.d.ts +0 -14
- package/lib/cliUtils.d.ts.map +0 -1
- package/lib/cliUtils.js +0 -49
- package/lib/cliUtils.js.map +0 -1
- package/lib/gitUtils.d.ts.map +0 -1
- package/lib/gitUtils.js +0 -103
- package/lib/gitUtils.js.map +0 -1
- package/src/cliUtils.ts +0 -65
- package/src/gitUtils.ts +0 -200
package/lib/index.d.ts
CHANGED
|
@@ -6,13 +6,14 @@
|
|
|
6
6
|
*/
|
|
7
7
|
export { NODE_MAJOR_VERSION, NODE_MINOR_VERSION, DOCUSAURUS_VERSION, DEFAULT_BUILD_DIR_NAME, DEFAULT_CONFIG_FILE_NAME, BABEL_CONFIG_FILE_NAME, GENERATED_FILES_DIR_NAME, SRC_DIR_NAME, DEFAULT_STATIC_DIR_NAME, OUTPUT_STATIC_ASSETS_DIR_NAME, THEME_PATH, DEFAULT_I18N_DIR_NAME, CODE_TRANSLATIONS_FILE_NAME, DEFAULT_PORT, DEFAULT_PLUGIN_ID, WEBPACK_URL_LOADER_LIMIT, } from './constants';
|
|
8
8
|
export { generate, readOutputHTMLFile } from './emitUtils';
|
|
9
|
-
export { getFileCommitDate, FileNotTrackedError, GitNotFoundError, } from './gitUtils';
|
|
9
|
+
export { getFileCommitDate, FileNotTrackedError, GitNotFoundError, } from './vcs/gitUtils';
|
|
10
10
|
export { mergeTranslations, updateTranslationFileMessages, getPluginI18nPath, getLocaleConfig, } from './i18nUtils';
|
|
11
11
|
export { mapAsyncSequential, findAsyncSequential } from './jsUtils';
|
|
12
12
|
export { normalizeUrl, getEditUrl, fileToPath, encodePath, isValidPathname, resolvePathname, parseURLPath, parseLocalURLPath, parseURLOrPath, toURLPath, serializeURLPath, hasSSHProtocol, buildHttpsUrl, buildSshUrl, } from './urlUtils';
|
|
13
13
|
export type { URLPath } from './urlUtils';
|
|
14
14
|
export { type Tag, type TagsFile, type TagsFileInput, type TagMetadata, type TagsListItem, type TagModule, type FrontMatterTag, type TagsPluginOptions, groupTaggedItems, getTagVisibility, } from './tags';
|
|
15
|
-
export {
|
|
15
|
+
export { unwrapMdxCodeBlocks, admonitionTitleToDirectiveLabel, createExcerpt, DEFAULT_PARSE_FRONT_MATTER, parseMarkdownContentTitle, parseMarkdownFile, } from './markdownUtils';
|
|
16
|
+
export { parseMarkdownHeadingId, escapeMarkdownHeadingIds, writeMarkdownHeadingId, type HeadingIdSyntax, type WriteHeadingIDOptions, } from './markdownHeadingIdUtils';
|
|
16
17
|
export { type ContentPaths, type SourceToPermalink, resolveMarkdownLinkPathname, } from './markdownLinks';
|
|
17
18
|
export { type SluggerOptions, type Slugger, createSlugger } from './slugger';
|
|
18
19
|
export { isNameTooLong, shortName, posixPath, toMessageRelativeFilePath, aliasedSitePath, aliasedSitePathToRelativePath, escapePath, addTrailingPathSeparator, } from './pathUtils';
|
|
@@ -23,8 +24,8 @@ export { loadFreshModule } from './moduleUtils';
|
|
|
23
24
|
export { getDataFilePath, readDataFile, getContentPathList, findFolderContainingFile, getFolderContainingFile, } from './dataFileUtils';
|
|
24
25
|
export { isDraft, isUnlisted } from './contentVisibilityUtils';
|
|
25
26
|
export { escapeRegexp } from './regExpUtils';
|
|
26
|
-
export { askPreferredLanguage } from './cliUtils';
|
|
27
27
|
export { flattenRoutes } from './routeUtils';
|
|
28
|
-
export {
|
|
28
|
+
export { readLastUpdateData, type LastUpdateData, type FrontMatterLastUpdate, } from './lastUpdateUtils';
|
|
29
|
+
export { VcsPresetNames, getVcsPreset, TEST_VCS } from './vcs/vcs';
|
|
29
30
|
export { normalizeTags, reportInlineTags } from './tags';
|
|
30
31
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,wBAAwB,EACxB,sBAAsB,EACtB,wBAAwB,EACxB,YAAY,EACZ,uBAAuB,EACvB,6BAA6B,EAC7B,UAAU,EACV,qBAAqB,EACrB,2BAA2B,EAC3B,YAAY,EACZ,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAC,QAAQ,EAAE,kBAAkB,EAAC,MAAM,aAAa,CAAC;AACzD,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/lib/index.js
CHANGED
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
* LICENSE file in the root directory of this source tree.
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.
|
|
10
|
-
exports.reportInlineTags = exports.normalizeTags = exports.
|
|
9
|
+
exports.parseMarkdownHeadingId = exports.parseMarkdownFile = exports.parseMarkdownContentTitle = exports.DEFAULT_PARSE_FRONT_MATTER = exports.createExcerpt = exports.admonitionTitleToDirectiveLabel = exports.unwrapMdxCodeBlocks = exports.getTagVisibility = exports.groupTaggedItems = exports.buildSshUrl = exports.buildHttpsUrl = exports.hasSSHProtocol = exports.serializeURLPath = exports.toURLPath = exports.parseURLOrPath = exports.parseLocalURLPath = exports.parseURLPath = exports.resolvePathname = exports.isValidPathname = exports.encodePath = exports.fileToPath = exports.getEditUrl = exports.normalizeUrl = exports.findAsyncSequential = exports.mapAsyncSequential = exports.getLocaleConfig = exports.getPluginI18nPath = exports.updateTranslationFileMessages = exports.mergeTranslations = exports.GitNotFoundError = exports.FileNotTrackedError = exports.getFileCommitDate = exports.readOutputHTMLFile = exports.generate = exports.WEBPACK_URL_LOADER_LIMIT = exports.DEFAULT_PLUGIN_ID = exports.DEFAULT_PORT = exports.CODE_TRANSLATIONS_FILE_NAME = exports.DEFAULT_I18N_DIR_NAME = exports.THEME_PATH = exports.OUTPUT_STATIC_ASSETS_DIR_NAME = exports.DEFAULT_STATIC_DIR_NAME = exports.SRC_DIR_NAME = exports.GENERATED_FILES_DIR_NAME = exports.BABEL_CONFIG_FILE_NAME = exports.DEFAULT_CONFIG_FILE_NAME = exports.DEFAULT_BUILD_DIR_NAME = exports.DOCUSAURUS_VERSION = exports.NODE_MINOR_VERSION = exports.NODE_MAJOR_VERSION = void 0;
|
|
10
|
+
exports.reportInlineTags = exports.normalizeTags = exports.TEST_VCS = exports.getVcsPreset = exports.VcsPresetNames = exports.readLastUpdateData = exports.flattenRoutes = exports.escapeRegexp = exports.isUnlisted = exports.isDraft = exports.getFolderContainingFile = exports.findFolderContainingFile = exports.getContentPathList = exports.readDataFile = exports.getDataFilePath = exports.loadFreshModule = exports.getWebpackLoaderCompilerName = exports.getFileLoaderUtils = exports.createAbsoluteFilePathMatcher = exports.createMatcher = exports.globTranslatableSourceFiles = exports.safeGlobby = exports.GlobExcludeDefault = exports.Globby = exports.docuHash = exports.simpleHash = exports.md5Hash = exports.addTrailingPathSeparator = exports.escapePath = exports.aliasedSitePathToRelativePath = exports.aliasedSitePath = exports.toMessageRelativeFilePath = exports.posixPath = exports.shortName = exports.isNameTooLong = exports.createSlugger = exports.resolveMarkdownLinkPathname = exports.writeMarkdownHeadingId = exports.escapeMarkdownHeadingIds = void 0;
|
|
11
11
|
var constants_1 = require("./constants");
|
|
12
12
|
Object.defineProperty(exports, "NODE_MAJOR_VERSION", { enumerable: true, get: function () { return constants_1.NODE_MAJOR_VERSION; } });
|
|
13
13
|
Object.defineProperty(exports, "NODE_MINOR_VERSION", { enumerable: true, get: function () { return constants_1.NODE_MINOR_VERSION; } });
|
|
@@ -28,7 +28,9 @@ Object.defineProperty(exports, "WEBPACK_URL_LOADER_LIMIT", { enumerable: true, g
|
|
|
28
28
|
var emitUtils_1 = require("./emitUtils");
|
|
29
29
|
Object.defineProperty(exports, "generate", { enumerable: true, get: function () { return emitUtils_1.generate; } });
|
|
30
30
|
Object.defineProperty(exports, "readOutputHTMLFile", { enumerable: true, get: function () { return emitUtils_1.readOutputHTMLFile; } });
|
|
31
|
-
var gitUtils_1 = require("./gitUtils");
|
|
31
|
+
var gitUtils_1 = require("./vcs/gitUtils");
|
|
32
|
+
// TODO Docusaurus v4: remove these legacy exports,
|
|
33
|
+
// they are only kept for retro-compatibility
|
|
32
34
|
Object.defineProperty(exports, "getFileCommitDate", { enumerable: true, get: function () { return gitUtils_1.getFileCommitDate; } });
|
|
33
35
|
Object.defineProperty(exports, "FileNotTrackedError", { enumerable: true, get: function () { return gitUtils_1.FileNotTrackedError; } });
|
|
34
36
|
Object.defineProperty(exports, "GitNotFoundError", { enumerable: true, get: function () { return gitUtils_1.GitNotFoundError; } });
|
|
@@ -59,15 +61,16 @@ var tags_1 = require("./tags");
|
|
|
59
61
|
Object.defineProperty(exports, "groupTaggedItems", { enumerable: true, get: function () { return tags_1.groupTaggedItems; } });
|
|
60
62
|
Object.defineProperty(exports, "getTagVisibility", { enumerable: true, get: function () { return tags_1.getTagVisibility; } });
|
|
61
63
|
var markdownUtils_1 = require("./markdownUtils");
|
|
62
|
-
Object.defineProperty(exports, "parseMarkdownHeadingId", { enumerable: true, get: function () { return markdownUtils_1.parseMarkdownHeadingId; } });
|
|
63
|
-
Object.defineProperty(exports, "escapeMarkdownHeadingIds", { enumerable: true, get: function () { return markdownUtils_1.escapeMarkdownHeadingIds; } });
|
|
64
64
|
Object.defineProperty(exports, "unwrapMdxCodeBlocks", { enumerable: true, get: function () { return markdownUtils_1.unwrapMdxCodeBlocks; } });
|
|
65
65
|
Object.defineProperty(exports, "admonitionTitleToDirectiveLabel", { enumerable: true, get: function () { return markdownUtils_1.admonitionTitleToDirectiveLabel; } });
|
|
66
66
|
Object.defineProperty(exports, "createExcerpt", { enumerable: true, get: function () { return markdownUtils_1.createExcerpt; } });
|
|
67
67
|
Object.defineProperty(exports, "DEFAULT_PARSE_FRONT_MATTER", { enumerable: true, get: function () { return markdownUtils_1.DEFAULT_PARSE_FRONT_MATTER; } });
|
|
68
68
|
Object.defineProperty(exports, "parseMarkdownContentTitle", { enumerable: true, get: function () { return markdownUtils_1.parseMarkdownContentTitle; } });
|
|
69
69
|
Object.defineProperty(exports, "parseMarkdownFile", { enumerable: true, get: function () { return markdownUtils_1.parseMarkdownFile; } });
|
|
70
|
-
|
|
70
|
+
var markdownHeadingIdUtils_1 = require("./markdownHeadingIdUtils");
|
|
71
|
+
Object.defineProperty(exports, "parseMarkdownHeadingId", { enumerable: true, get: function () { return markdownHeadingIdUtils_1.parseMarkdownHeadingId; } });
|
|
72
|
+
Object.defineProperty(exports, "escapeMarkdownHeadingIds", { enumerable: true, get: function () { return markdownHeadingIdUtils_1.escapeMarkdownHeadingIds; } });
|
|
73
|
+
Object.defineProperty(exports, "writeMarkdownHeadingId", { enumerable: true, get: function () { return markdownHeadingIdUtils_1.writeMarkdownHeadingId; } });
|
|
71
74
|
var markdownLinks_1 = require("./markdownLinks");
|
|
72
75
|
Object.defineProperty(exports, "resolveMarkdownLinkPathname", { enumerable: true, get: function () { return markdownLinks_1.resolveMarkdownLinkPathname; } });
|
|
73
76
|
var slugger_1 = require("./slugger");
|
|
@@ -108,15 +111,14 @@ Object.defineProperty(exports, "isDraft", { enumerable: true, get: function () {
|
|
|
108
111
|
Object.defineProperty(exports, "isUnlisted", { enumerable: true, get: function () { return contentVisibilityUtils_1.isUnlisted; } });
|
|
109
112
|
var regExpUtils_1 = require("./regExpUtils");
|
|
110
113
|
Object.defineProperty(exports, "escapeRegexp", { enumerable: true, get: function () { return regExpUtils_1.escapeRegexp; } });
|
|
111
|
-
var cliUtils_1 = require("./cliUtils");
|
|
112
|
-
Object.defineProperty(exports, "askPreferredLanguage", { enumerable: true, get: function () { return cliUtils_1.askPreferredLanguage; } });
|
|
113
114
|
var routeUtils_1 = require("./routeUtils");
|
|
114
115
|
Object.defineProperty(exports, "flattenRoutes", { enumerable: true, get: function () { return routeUtils_1.flattenRoutes; } });
|
|
115
116
|
var lastUpdateUtils_1 = require("./lastUpdateUtils");
|
|
116
|
-
Object.defineProperty(exports, "getGitLastUpdate", { enumerable: true, get: function () { return lastUpdateUtils_1.getGitLastUpdate; } });
|
|
117
|
-
Object.defineProperty(exports, "getLastUpdate", { enumerable: true, get: function () { return lastUpdateUtils_1.getLastUpdate; } });
|
|
118
117
|
Object.defineProperty(exports, "readLastUpdateData", { enumerable: true, get: function () { return lastUpdateUtils_1.readLastUpdateData; } });
|
|
119
|
-
|
|
118
|
+
var vcs_1 = require("./vcs/vcs");
|
|
119
|
+
Object.defineProperty(exports, "VcsPresetNames", { enumerable: true, get: function () { return vcs_1.VcsPresetNames; } });
|
|
120
|
+
Object.defineProperty(exports, "getVcsPreset", { enumerable: true, get: function () { return vcs_1.getVcsPreset; } });
|
|
121
|
+
Object.defineProperty(exports, "TEST_VCS", { enumerable: true, get: function () { return vcs_1.TEST_VCS; } });
|
|
120
122
|
var tags_2 = require("./tags");
|
|
121
123
|
Object.defineProperty(exports, "normalizeTags", { enumerable: true, get: function () { return tags_2.normalizeTags; } });
|
|
122
124
|
Object.defineProperty(exports, "reportInlineTags", { enumerable: true, get: function () { return tags_2.reportInlineTags; } });
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;AAEH,yCAiBqB;AAhBnB,+GAAA,kBAAkB,OAAA;AAClB,+GAAA,kBAAkB,OAAA;AAClB,+GAAA,kBAAkB,OAAA;AAClB,mHAAA,sBAAsB,OAAA;AACtB,qHAAA,wBAAwB,OAAA;AACxB,mHAAA,sBAAsB,OAAA;AACtB,qHAAA,wBAAwB,OAAA;AACxB,yGAAA,YAAY,OAAA;AACZ,oHAAA,uBAAuB,OAAA;AACvB,0HAAA,6BAA6B,OAAA;AAC7B,uGAAA,UAAU,OAAA;AACV,kHAAA,qBAAqB,OAAA;AACrB,wHAAA,2BAA2B,OAAA;AAC3B,yGAAA,YAAY,OAAA;AACZ,8GAAA,iBAAiB,OAAA;AACjB,qHAAA,wBAAwB,OAAA;AAE1B,yCAAyD;AAAjD,qGAAA,QAAQ,OAAA;AAAE,+GAAA,kBAAkB,OAAA;AACpC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/lib/lastUpdateUtils.d.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
|
-
import type { PluginOptions } from '@docusaurus/types';
|
|
7
|
+
import type { PluginOptions, VcsConfig } from '@docusaurus/types';
|
|
8
8
|
export type LastUpdateData = {
|
|
9
9
|
/**
|
|
10
10
|
* A timestamp in **milliseconds**, usually read from `git log`
|
|
@@ -19,10 +19,6 @@ export type LastUpdateData = {
|
|
|
19
19
|
*/
|
|
20
20
|
lastUpdatedBy: string | undefined | null;
|
|
21
21
|
};
|
|
22
|
-
export declare function getGitLastUpdate(filePath: string): Promise<LastUpdateData | null>;
|
|
23
|
-
export declare const LAST_UPDATE_FALLBACK: LastUpdateData;
|
|
24
|
-
export declare const LAST_UPDATE_UNTRACKED_GIT_FILEPATH: string;
|
|
25
|
-
export declare function getLastUpdate(filePath: string): Promise<LastUpdateData | null>;
|
|
26
22
|
type LastUpdateOptions = Pick<PluginOptions, 'showLastUpdateAuthor' | 'showLastUpdateTime'>;
|
|
27
23
|
export type FrontMatterLastUpdate = {
|
|
28
24
|
author?: string;
|
|
@@ -32,6 +28,6 @@ export type FrontMatterLastUpdate = {
|
|
|
32
28
|
*/
|
|
33
29
|
date?: Date | string;
|
|
34
30
|
};
|
|
35
|
-
export declare function readLastUpdateData(filePath: string, options: LastUpdateOptions, lastUpdateFrontMatter: FrontMatterLastUpdate | undefined): Promise<LastUpdateData>;
|
|
31
|
+
export declare function readLastUpdateData(filePath: string, options: LastUpdateOptions, lastUpdateFrontMatter: FrontMatterLastUpdate | undefined, vcsParam: Pick<VcsConfig, 'getFileLastUpdateInfo'>): Promise<LastUpdateData>;
|
|
36
32
|
export {};
|
|
37
33
|
//# sourceMappingURL=lastUpdateUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lastUpdateUtils.d.ts","sourceRoot":"","sources":["../src/lastUpdateUtils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"lastUpdateUtils.d.ts","sourceRoot":"","sources":["../src/lastUpdateUtils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAC,aAAa,EAAE,SAAS,EAAC,MAAM,mBAAmB,CAAC;AAEhE,MAAM,MAAM,cAAc,GAAG;IAC3B;;;;OAIG;IACH,aAAa,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IACzC;;;;OAIG;IACH,aAAa,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;CAC1C,CAAC;AAEF,KAAK,iBAAiB,GAAG,IAAI,CAC3B,aAAa,EACb,sBAAsB,GAAG,oBAAoB,CAC9C,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;CACtB,CAAC;AAIF,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,iBAAiB,EAC1B,qBAAqB,EAAE,qBAAqB,GAAG,SAAS,EACxD,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,uBAAuB,CAAC,GACjD,OAAO,CAAC,cAAc,CAAC,CAsDzB"}
|
package/lib/lastUpdateUtils.js
CHANGED
|
@@ -6,66 +6,19 @@
|
|
|
6
6
|
* LICENSE file in the root directory of this source tree.
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.LAST_UPDATE_UNTRACKED_GIT_FILEPATH = exports.LAST_UPDATE_FALLBACK = void 0;
|
|
10
|
-
exports.getGitLastUpdate = getGitLastUpdate;
|
|
11
|
-
exports.getLastUpdate = getLastUpdate;
|
|
12
9
|
exports.readLastUpdateData = readLastUpdateData;
|
|
13
10
|
const tslib_1 = require("tslib");
|
|
14
11
|
const lodash_1 = tslib_1.__importDefault(require("lodash"));
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
if
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
//
|
|
24
|
-
|
|
25
|
-
try {
|
|
26
|
-
const result = await (0, gitUtils_1.getFileCommitDate)(filePath, {
|
|
27
|
-
age: 'newest',
|
|
28
|
-
includeAuthor: true,
|
|
29
|
-
});
|
|
30
|
-
return { lastUpdatedAt: result.timestamp, lastUpdatedBy: result.author };
|
|
31
|
-
}
|
|
32
|
-
catch (err) {
|
|
33
|
-
if (err instanceof gitUtils_1.GitNotFoundError) {
|
|
34
|
-
if (!showedGitRequirementError) {
|
|
35
|
-
logger_1.default.warn('Sorry, the last update options require Git.');
|
|
36
|
-
showedGitRequirementError = true;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
else if (err instanceof gitUtils_1.FileNotTrackedError) {
|
|
40
|
-
if (!showedFileNotTrackedError) {
|
|
41
|
-
logger_1.default.warn('Cannot infer the update date for some files, as they are not tracked by git.');
|
|
42
|
-
showedFileNotTrackedError = true;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
throw new Error(`An error occurred when trying to get the last update date`, { cause: err });
|
|
47
|
-
}
|
|
48
|
-
return null;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
exports.LAST_UPDATE_FALLBACK = {
|
|
52
|
-
lastUpdatedAt: 1539502055000,
|
|
53
|
-
lastUpdatedBy: 'Author',
|
|
54
|
-
};
|
|
55
|
-
// Not proud of this, but convenient for tests :/
|
|
56
|
-
exports.LAST_UPDATE_UNTRACKED_GIT_FILEPATH = `file/path/${Math.random()}.mdx`;
|
|
57
|
-
async function getLastUpdate(filePath) {
|
|
58
|
-
if (filePath === exports.LAST_UPDATE_UNTRACKED_GIT_FILEPATH) {
|
|
59
|
-
return null;
|
|
60
|
-
}
|
|
61
|
-
if (process.env.NODE_ENV !== 'production' ||
|
|
62
|
-
process.env.DOCUSAURUS_DISABLE_LAST_UPDATE === 'true') {
|
|
63
|
-
// Use fake data in dev/test for faster development.
|
|
64
|
-
return exports.LAST_UPDATE_FALLBACK;
|
|
65
|
-
}
|
|
66
|
-
return getGitLastUpdate(filePath);
|
|
67
|
-
}
|
|
68
|
-
async function readLastUpdateData(filePath, options, lastUpdateFrontMatter) {
|
|
12
|
+
const vcs_1 = require("./vcs/vcs");
|
|
13
|
+
// TODO Docusaurus v4: refactor/rename, make it clear this fn is only
|
|
14
|
+
// for Markdown files with front matter shared by content plugin
|
|
15
|
+
async function readLastUpdateData(filePath, options, lastUpdateFrontMatter, vcsParam) {
|
|
16
|
+
// We fallback to the default VSC config at runtime on purpose
|
|
17
|
+
// It preserves retro-compatibility if a third-party plugin imports it
|
|
18
|
+
// This also ensures unit tests keep working without extra setup
|
|
19
|
+
// We still want to ensure type safety by requiring the VCS param
|
|
20
|
+
// TODO Docusaurus v4: refactor all these Git read APIs
|
|
21
|
+
const vcs = vcsParam ?? (0, vcs_1.getVcsPreset)('default-v1');
|
|
69
22
|
const { showLastUpdateAuthor, showLastUpdateTime } = options;
|
|
70
23
|
if (!showLastUpdateAuthor && !showLastUpdateTime) {
|
|
71
24
|
return { lastUpdatedBy: undefined, lastUpdatedAt: undefined };
|
|
@@ -77,20 +30,20 @@ async function readLastUpdateData(filePath, options, lastUpdateFrontMatter) {
|
|
|
77
30
|
// We try to minimize git last update calls
|
|
78
31
|
// We call it at most once
|
|
79
32
|
// If all the data is provided as front matter, we do not call it
|
|
80
|
-
const getLastUpdateMemoized = lodash_1.default.memoize(() =>
|
|
33
|
+
const getLastUpdateMemoized = lodash_1.default.memoize(() => vcs.getFileLastUpdateInfo(filePath));
|
|
81
34
|
const getLastUpdateBy = () => getLastUpdateMemoized().then((update) => {
|
|
82
35
|
// Important, see https://github.com/facebook/docusaurus/pull/11211
|
|
83
36
|
if (update === null) {
|
|
84
37
|
return null;
|
|
85
38
|
}
|
|
86
|
-
return update?.
|
|
39
|
+
return update?.author;
|
|
87
40
|
});
|
|
88
41
|
const getLastUpdateAt = () => getLastUpdateMemoized().then((update) => {
|
|
89
42
|
// Important, see https://github.com/facebook/docusaurus/pull/11211
|
|
90
43
|
if (update === null) {
|
|
91
44
|
return null;
|
|
92
45
|
}
|
|
93
|
-
return update?.
|
|
46
|
+
return update?.timestamp;
|
|
94
47
|
});
|
|
95
48
|
const lastUpdatedBy = showLastUpdateAuthor
|
|
96
49
|
? frontMatterAuthor ?? (await getLastUpdateBy())
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lastUpdateUtils.js","sourceRoot":"","sources":["../src/lastUpdateUtils.ts"],"names":[],"mappings":";AAAA;;;;;GAKG
|
|
1
|
+
{"version":3,"file":"lastUpdateUtils.js","sourceRoot":"","sources":["../src/lastUpdateUtils.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAsCH,gDA2DC;;AA/FD,4DAAuB;AACvB,mCAAuC;AAiCvC,qEAAqE;AACrE,iEAAiE;AAC1D,KAAK,UAAU,kBAAkB,CACtC,QAAgB,EAChB,OAA0B,EAC1B,qBAAwD,EACxD,QAAkD;IAElD,8DAA8D;IAC9D,sEAAsE;IACtE,gEAAgE;IAChE,iEAAiE;IACjE,uDAAuD;IACvD,MAAM,GAAG,GAAG,QAAQ,IAAI,IAAA,kBAAY,EAAC,YAAY,CAAC,CAAC;IAEnD,MAAM,EAAC,oBAAoB,EAAE,kBAAkB,EAAC,GAAG,OAAO,CAAC;IAE3D,IAAI,CAAC,oBAAoB,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACjD,OAAO,EAAC,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAC,CAAC;IAC9D,CAAC;IAED,MAAM,iBAAiB,GAAG,qBAAqB,EAAE,MAAM,CAAC;IACxD,MAAM,oBAAoB,GAAG,qBAAqB,EAAE,IAAI;QACtD,CAAC,CAAC,IAAI,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE;QAChD,CAAC,CAAC,SAAS,CAAC;IAEd,2CAA2C;IAC3C,0BAA0B;IAC1B,iEAAiE;IACjE,MAAM,qBAAqB,GAAG,gBAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAC3C,GAAG,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CACpC,CAAC;IACF,MAAM,eAAe,GAAG,GAAG,EAAE,CAC3B,qBAAqB,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;QACtC,mEAAmE;QACnE,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,MAAM,EAAE,MAAM,CAAC;IACxB,CAAC,CAAC,CAAC;IACL,MAAM,eAAe,GAAG,GAAG,EAAE,CAC3B,qBAAqB,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;QACtC,mEAAmE;QACnE,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,MAAM,EAAE,SAAS,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEL,MAAM,aAAa,GAAG,oBAAoB;QACxC,CAAC,CAAC,iBAAiB,IAAI,CAAC,MAAM,eAAe,EAAE,CAAC;QAChD,CAAC,CAAC,SAAS,CAAC;IAEd,MAAM,aAAa,GAAG,kBAAkB;QACtC,CAAC,CAAC,oBAAoB,IAAI,CAAC,MAAM,eAAe,EAAE,CAAC;QACnD,CAAC,CAAC,SAAS,CAAC;IAEd,OAAO;QACL,aAAa;QACb,aAAa;KACd,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
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
|
+
import { type SluggerOptions } from './slugger';
|
|
8
|
+
/**
|
|
9
|
+
* The syntax to use for heading IDs.
|
|
10
|
+
* - `classic` => `{#id}` (invalid MDX, but commonly supported)
|
|
11
|
+
* - `mdx-comment` => `{/* #id * /}` (valid MDX)
|
|
12
|
+
*/
|
|
13
|
+
export type HeadingIdSyntax = 'classic' | 'mdx-comment';
|
|
14
|
+
/**
|
|
15
|
+
* Parses custom ID from a heading. The ID can contain any characters except
|
|
16
|
+
* `{#` and `}`.
|
|
17
|
+
*
|
|
18
|
+
* @param heading e.g. `## Some heading {#some-heading}` where the last
|
|
19
|
+
* character must be `}` for the ID to be recognized
|
|
20
|
+
* @param syntax which heading ID syntax to recognize
|
|
21
|
+
*/
|
|
22
|
+
export declare function parseMarkdownHeadingId(heading: string, syntax?: HeadingIdSyntax): {
|
|
23
|
+
/**
|
|
24
|
+
* The heading content sans the ID part, right-trimmed. e.g. `## Some heading`
|
|
25
|
+
*/
|
|
26
|
+
text: string;
|
|
27
|
+
/** The heading ID. e.g. `some-heading` */
|
|
28
|
+
id: string | undefined;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* For our classic syntax, MDX v2+ now requires escaping { to compile: \{#id}.
|
|
32
|
+
* See https://mdxjs.com/docs/troubleshooting-mdx/#could-not-parse-expression-with-acorn-error
|
|
33
|
+
*/
|
|
34
|
+
export declare function escapeMarkdownHeadingIds(content: string): string;
|
|
35
|
+
export type WriteHeadingIDOptions = SluggerOptions & {
|
|
36
|
+
/** The target syntax to use for heading IDs. */
|
|
37
|
+
syntax?: HeadingIdSyntax;
|
|
38
|
+
/** Migrate the existing heading IDs to the target syntax */
|
|
39
|
+
migrate?: boolean;
|
|
40
|
+
/** Overwrite existing heading IDs by re-generating them from the text. */
|
|
41
|
+
overwrite?: boolean;
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Takes Markdown content, returns new content with heading IDs written.
|
|
45
|
+
* Respects existing IDs (unless `overwrite=true`) and never generates colliding
|
|
46
|
+
* IDs (through the slugger).
|
|
47
|
+
*/
|
|
48
|
+
export declare function writeMarkdownHeadingId(content: string, options?: WriteHeadingIDOptions): string;
|
|
49
|
+
//# sourceMappingURL=markdownHeadingIdUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdownHeadingIdUtils.d.ts","sourceRoot":"","sources":["../src/markdownHeadingIdUtils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAA8B,KAAK,cAAc,EAAC,MAAM,WAAW,CAAC;AAE3E;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,aAAa,CAAC;AAExD;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,eAA2B,GAClC;IACD;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,EAAE,EAAE,MAAM,GAAG,SAAS,CAAC;CACxB,CA8BA;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAShE;AAyCD,MAAM,MAAM,qBAAqB,GAAG,cAAc,GAAG;IACnD,gDAAgD;IAChD,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,qBAA0B,GAClC,MAAM,CAuER"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the MIT license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.parseMarkdownHeadingId = parseMarkdownHeadingId;
|
|
10
|
+
exports.escapeMarkdownHeadingIds = escapeMarkdownHeadingIds;
|
|
11
|
+
exports.writeMarkdownHeadingId = writeMarkdownHeadingId;
|
|
12
|
+
const slugger_1 = require("./slugger");
|
|
13
|
+
/**
|
|
14
|
+
* Parses custom ID from a heading. The ID can contain any characters except
|
|
15
|
+
* `{#` and `}`.
|
|
16
|
+
*
|
|
17
|
+
* @param heading e.g. `## Some heading {#some-heading}` where the last
|
|
18
|
+
* character must be `}` for the ID to be recognized
|
|
19
|
+
* @param syntax which heading ID syntax to recognize
|
|
20
|
+
*/
|
|
21
|
+
function parseMarkdownHeadingId(heading, syntax = 'classic') {
|
|
22
|
+
// Classic syntax: {#my-id}
|
|
23
|
+
if (syntax === 'classic') {
|
|
24
|
+
const customHeadingIdRegex = /\s*\{#(?<id>(?:.(?!\{#|\}))*.)\}$/;
|
|
25
|
+
const matches = customHeadingIdRegex.exec(heading);
|
|
26
|
+
if (matches) {
|
|
27
|
+
return {
|
|
28
|
+
text: heading.replace(matches[0], ''),
|
|
29
|
+
id: matches.groups.id.trim(),
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
// MDX comment syntax: {/* #my-id */}
|
|
34
|
+
// Note: this is only used for the "write-heading-ids" CLI
|
|
35
|
+
// The mdx loader is using a real MDX parser to find these comments
|
|
36
|
+
else if (syntax === 'mdx-comment') {
|
|
37
|
+
const mdxCommentHeadingIdRegex = /\s*\{\/\*\s*#(?<id>\S+)\s*\*\/\}$/;
|
|
38
|
+
const mdxMatches = mdxCommentHeadingIdRegex.exec(heading);
|
|
39
|
+
if (mdxMatches) {
|
|
40
|
+
return {
|
|
41
|
+
text: heading.replace(mdxMatches[0], ''),
|
|
42
|
+
id: mdxMatches.groups.id.trim(),
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
// Unhandled cases, shouldn't happen
|
|
47
|
+
else {
|
|
48
|
+
throw new Error(`unknown heading id syntax '${syntax}'`);
|
|
49
|
+
}
|
|
50
|
+
return { text: heading, id: undefined };
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* For our classic syntax, MDX v2+ now requires escaping { to compile: \{#id}.
|
|
54
|
+
* See https://mdxjs.com/docs/troubleshooting-mdx/#could-not-parse-expression-with-acorn-error
|
|
55
|
+
*/
|
|
56
|
+
function escapeMarkdownHeadingIds(content) {
|
|
57
|
+
const markdownHeadingRegexp = /(?:^|\n)#{1,6}(?!#).*/g;
|
|
58
|
+
return content.replaceAll(markdownHeadingRegexp, (substring) =>
|
|
59
|
+
// TODO probably not the most efficient impl...
|
|
60
|
+
substring
|
|
61
|
+
.replace('{#', '\\{#')
|
|
62
|
+
// prevent duplicate escaping
|
|
63
|
+
.replace('\\\\{#', '\\{#'));
|
|
64
|
+
}
|
|
65
|
+
function addHeadingId(line, slugger, maintainCase, syntax, headingId) {
|
|
66
|
+
let headingLevel = 0;
|
|
67
|
+
while (line.charAt(headingLevel) === '#') {
|
|
68
|
+
headingLevel += 1;
|
|
69
|
+
}
|
|
70
|
+
const headingHashes = line.slice(0, headingLevel);
|
|
71
|
+
const headingContent = line.slice(headingLevel).trimEnd();
|
|
72
|
+
function getHeadingId() {
|
|
73
|
+
if (headingId) {
|
|
74
|
+
return headingId;
|
|
75
|
+
}
|
|
76
|
+
// Unwrap links
|
|
77
|
+
// "[ Hello](https://example.com) World " => "Hello world"
|
|
78
|
+
const headingText = headingContent
|
|
79
|
+
.replace(/\[(?<alt>[^\]]+)\]\([^)]+\)/g, (_match, p1) => p1)
|
|
80
|
+
.trim();
|
|
81
|
+
return slugger.slug(headingText, {
|
|
82
|
+
maintainCase,
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
const headingIdSuffix = syntax === 'mdx-comment'
|
|
86
|
+
? `{/* #${getHeadingId()} */}`
|
|
87
|
+
: `{#${getHeadingId()}}`;
|
|
88
|
+
return `${headingHashes}${headingContent} ${headingIdSuffix}`;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Takes Markdown content, returns new content with heading IDs written.
|
|
92
|
+
* Respects existing IDs (unless `overwrite=true`) and never generates colliding
|
|
93
|
+
* IDs (through the slugger).
|
|
94
|
+
*/
|
|
95
|
+
function writeMarkdownHeadingId(content, options = {}) {
|
|
96
|
+
const { syntax = 'classic', // Maybe we'll want to change this default later?
|
|
97
|
+
overwrite = false, migrate = false, maintainCase = false, } = options;
|
|
98
|
+
// For now, we have 2 booleans (retro compatible)
|
|
99
|
+
// but it could be useful to have a "mode" enum instead?
|
|
100
|
+
if (overwrite && migrate) {
|
|
101
|
+
throw new Error('Heading ids can either be overwritten or migrated, not both at the same time');
|
|
102
|
+
}
|
|
103
|
+
const lines = content.split('\n');
|
|
104
|
+
const slugger = (0, slugger_1.createSlugger)();
|
|
105
|
+
// Parse heading ID trying both syntaxes (classic first, then mdx-comment)
|
|
106
|
+
function parseHeadingIdAnySyntax(heading) {
|
|
107
|
+
const classic = parseMarkdownHeadingId(heading, 'classic');
|
|
108
|
+
if (classic.id) {
|
|
109
|
+
return classic;
|
|
110
|
+
}
|
|
111
|
+
return parseMarkdownHeadingId(heading, 'mdx-comment');
|
|
112
|
+
}
|
|
113
|
+
// If we can't overwrite existing slugs, make sure other headings don't
|
|
114
|
+
// generate colliding slugs by first marking these slugs as occupied
|
|
115
|
+
if (!overwrite) {
|
|
116
|
+
lines.forEach((line) => {
|
|
117
|
+
const parsedHeading = parseHeadingIdAnySyntax(line);
|
|
118
|
+
if (parsedHeading.id) {
|
|
119
|
+
slugger.slug(parsedHeading.id);
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
let inCode = false;
|
|
124
|
+
return lines
|
|
125
|
+
.map((line) => {
|
|
126
|
+
if (line.startsWith('```')) {
|
|
127
|
+
inCode = !inCode;
|
|
128
|
+
return line;
|
|
129
|
+
}
|
|
130
|
+
// Ignore h1 headings, as we don't create anchor links for those
|
|
131
|
+
if (inCode || !line.startsWith('##')) {
|
|
132
|
+
return line;
|
|
133
|
+
}
|
|
134
|
+
const parsedHeading = parseHeadingIdAnySyntax(line);
|
|
135
|
+
// Preserve the line if id is already there, unless we migrate/overwrite
|
|
136
|
+
if (parsedHeading.id && !overwrite && !migrate) {
|
|
137
|
+
return line;
|
|
138
|
+
}
|
|
139
|
+
const headingId = overwrite
|
|
140
|
+
? undefined
|
|
141
|
+
: migrate
|
|
142
|
+
? parsedHeading.id
|
|
143
|
+
: undefined;
|
|
144
|
+
return addHeadingId(parsedHeading.text, slugger, maintainCase, syntax, headingId);
|
|
145
|
+
})
|
|
146
|
+
.join('\n');
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=markdownHeadingIdUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdownHeadingIdUtils.js","sourceRoot":"","sources":["../src/markdownHeadingIdUtils.ts"],"names":[],"mappings":"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"}
|
package/lib/markdownUtils.d.ts
CHANGED
|
@@ -4,28 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
|
-
import { type SluggerOptions } from './slugger';
|
|
8
7
|
import type { ParseFrontMatter, DefaultParseFrontMatter } from '@docusaurus/types';
|
|
9
|
-
/**
|
|
10
|
-
* Parses custom ID from a heading. The ID can contain any characters except
|
|
11
|
-
* `{#` and `}`.
|
|
12
|
-
*
|
|
13
|
-
* @param heading e.g. `## Some heading {#some-heading}` where the last
|
|
14
|
-
* character must be `}` for the ID to be recognized
|
|
15
|
-
*/
|
|
16
|
-
export declare function parseMarkdownHeadingId(heading: string): {
|
|
17
|
-
/**
|
|
18
|
-
* The heading content sans the ID part, right-trimmed. e.g. `## Some heading`
|
|
19
|
-
*/
|
|
20
|
-
text: string;
|
|
21
|
-
/** The heading ID. e.g. `some-heading` */
|
|
22
|
-
id: string | undefined;
|
|
23
|
-
};
|
|
24
|
-
/**
|
|
25
|
-
* MDX 2 requires escaping { with a \ so our anchor syntax need that now.
|
|
26
|
-
* See https://mdxjs.com/docs/troubleshooting-mdx/#could-not-parse-expression-with-acorn-error
|
|
27
|
-
*/
|
|
28
|
-
export declare function escapeMarkdownHeadingIds(content: string): string;
|
|
29
8
|
/**
|
|
30
9
|
* Hacky temporary escape hatch for Crowdin bad MDX support
|
|
31
10
|
* See https://docusaurus.io/docs/i18n/crowdin#mdx
|
|
@@ -129,15 +108,5 @@ export declare function parseMarkdownFile({ filePath, fileContent, parseFrontMat
|
|
|
129
108
|
*/
|
|
130
109
|
content: string;
|
|
131
110
|
}>;
|
|
132
|
-
export type WriteHeadingIDOptions = SluggerOptions & {
|
|
133
|
-
/** Overwrite existing heading IDs. */
|
|
134
|
-
overwrite?: boolean;
|
|
135
|
-
};
|
|
136
|
-
/**
|
|
137
|
-
* Takes Markdown content, returns new content with heading IDs written.
|
|
138
|
-
* Respects existing IDs (unless `overwrite=true`) and never generates colliding
|
|
139
|
-
* IDs (through the slugger).
|
|
140
|
-
*/
|
|
141
|
-
export declare function writeMarkdownHeadingId(content: string, options?: WriteHeadingIDOptions): string;
|
|
142
111
|
export {};
|
|
143
112
|
//# sourceMappingURL=markdownUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdownUtils.d.ts","sourceRoot":"","sources":["../src/markdownUtils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,
|
|
1
|
+
{"version":3,"file":"markdownUtils.d.ts","sourceRoot":"","sources":["../src/markdownUtils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EACV,gBAAgB,EAChB,uBAAuB,EACxB,MAAM,mBAAmB,CAAC;AAM3B;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAc3D;AAED;;;;;;;;GAQG;AACH,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,MAAM,EACf,6BAA6B,EAAE,MAAM,EAAE,GACtC,MAAM,CAiBR;AAID;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CA8EpE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,MAAM,GAAG;IAChE,6CAA6C;IAC7C,WAAW,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAC,CAAC;IACtC,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB,CAuBA;AAED,eAAO,MAAM,0BAA0B,EAAE,uBAEW,CAAC;AAMrD,KAAK,gCAAgC,GAAG;IACtC;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAgB,yBAAyB,CACvC,gBAAgB,EAAE,MAAM,EACxB,OAAO,CAAC,EAAE,gCAAgC,GACzC;IACD,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC,CAyCA;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,EACtC,QAAQ,EACR,WAAW,EACX,gBAAgB,EAChB,kBAAkB,GACnB,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,gBAAgB,CAAC;CACpC,GAAG,gCAAgC,GAAG,OAAO,CAAC;IAC7C,oCAAoC;IACpC,WAAW,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAC,CAAC;IACtC,6CAA6C;IAC7C,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,iCAAiC;IACjC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC,CA2BD"}
|