@docusaurus/utils 3.8.0 → 3.8.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/gitUtils.js CHANGED
@@ -70,10 +70,12 @@ async function getFileCommitDate(file, { age = 'oldest', includeAuthor = false,
70
70
  .filter(Boolean)
71
71
  .join(' ');
72
72
  const command = `git -c log.showSignature=false log ${args} -- "${path_1.default.basename(file)}"`;
73
- const result = (await GitCommandQueue.add(() => (0, execa_1.default)(command, {
74
- cwd: path_1.default.dirname(file),
75
- shell: true,
76
- })));
73
+ const result = (await GitCommandQueue.add(() => {
74
+ return (0, execa_1.default)(command, {
75
+ cwd: path_1.default.dirname(file),
76
+ shell: true,
77
+ });
78
+ }));
77
79
  if (result.exitCode !== 0) {
78
80
  throw new Error(`Failed to retrieve the git history for file "${file}" with exit code ${result.exitCode}: ${result.stderr}`);
79
81
  }
@@ -1 +1 @@
1
- {"version":3,"file":"gitUtils.js","sourceRoot":"","sources":["../src/gitUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gitUtils.js","sourceRoot":"","sources":["../src/gitUtils.ts"],"names":[],"mappings":"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"}
@@ -6,13 +6,22 @@
6
6
  */
7
7
  import type { PluginOptions } from '@docusaurus/types';
8
8
  export type LastUpdateData = {
9
- /** A timestamp in **milliseconds**, usually read from `git log` */
10
- lastUpdatedAt?: number;
11
- /** The author's name, usually coming from `git log` */
12
- lastUpdatedBy?: string;
9
+ /**
10
+ * A timestamp in **milliseconds**, usually read from `git log`
11
+ * `undefined`: not read
12
+ * `null`: no value to read (usual for untracked files)
13
+ */
14
+ lastUpdatedAt: number | undefined | null;
15
+ /**
16
+ * The author's name, usually coming from `git log`
17
+ * `undefined`: not read
18
+ * `null`: no value to read (usual for untracked files)
19
+ */
20
+ lastUpdatedBy: string | undefined | null;
13
21
  };
14
22
  export declare function getGitLastUpdate(filePath: string): Promise<LastUpdateData | null>;
15
23
  export declare const LAST_UPDATE_FALLBACK: LastUpdateData;
24
+ export declare const LAST_UPDATE_UNTRACKED_GIT_FILEPATH: string;
16
25
  export declare function getLastUpdate(filePath: string): Promise<LastUpdateData | null>;
17
26
  type LastUpdateOptions = Pick<PluginOptions, 'showLastUpdateAuthor' | 'showLastUpdateTime'>;
18
27
  export type FrontMatterLastUpdate = {
@@ -1 +1 @@
1
- {"version":3,"file":"lastUpdateUtils.d.ts","sourceRoot":"","sources":["../src/lastUpdateUtils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAErD,MAAM,MAAM,cAAc,GAAG;IAC3B,mEAAmE;IACnE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uDAAuD;IACvD,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAKF,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAmChC;AAED,eAAO,MAAM,oBAAoB,EAAE,cAGlC,CAAC;AAEF,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAShC;AAED,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;AAEF,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,iBAAiB,EAC1B,qBAAqB,EAAE,qBAAqB,GAAG,SAAS,GACvD,OAAO,CAAC,cAAc,CAAC,CAiCzB"}
1
+ {"version":3,"file":"lastUpdateUtils.d.ts","sourceRoot":"","sources":["../src/lastUpdateUtils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAErD,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;AAKF,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAmChC;AAED,eAAO,MAAM,oBAAoB,EAAE,cAGlC,CAAC;AAGF,eAAO,MAAM,kCAAkC,QAAmC,CAAC;AAEnF,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAYhC;AAED,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;AAEF,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,iBAAiB,EAC1B,qBAAqB,EAAE,qBAAqB,GAAG,SAAS,GACvD,OAAO,CAAC,cAAc,CAAC,CA6CzB"}
@@ -6,7 +6,7 @@
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_FALLBACK = void 0;
9
+ exports.LAST_UPDATE_UNTRACKED_GIT_FILEPATH = exports.LAST_UPDATE_FALLBACK = void 0;
10
10
  exports.getGitLastUpdate = getGitLastUpdate;
11
11
  exports.getLastUpdate = getLastUpdate;
12
12
  exports.readLastUpdateData = readLastUpdateData;
@@ -52,7 +52,12 @@ exports.LAST_UPDATE_FALLBACK = {
52
52
  lastUpdatedAt: 1539502055000,
53
53
  lastUpdatedBy: 'Author',
54
54
  };
55
+ // Not proud of this, but convenient for tests :/
56
+ exports.LAST_UPDATE_UNTRACKED_GIT_FILEPATH = `file/path/${Math.random()}.mdx`;
55
57
  async function getLastUpdate(filePath) {
58
+ if (filePath === exports.LAST_UPDATE_UNTRACKED_GIT_FILEPATH) {
59
+ return null;
60
+ }
56
61
  if (process.env.NODE_ENV !== 'production' ||
57
62
  process.env.DOCUSAURUS_DISABLE_LAST_UPDATE === 'true') {
58
63
  // Use fake data in dev/test for faster development.
@@ -63,7 +68,7 @@ async function getLastUpdate(filePath) {
63
68
  async function readLastUpdateData(filePath, options, lastUpdateFrontMatter) {
64
69
  const { showLastUpdateAuthor, showLastUpdateTime } = options;
65
70
  if (!showLastUpdateAuthor && !showLastUpdateTime) {
66
- return {};
71
+ return { lastUpdatedBy: undefined, lastUpdatedAt: undefined };
67
72
  }
68
73
  const frontMatterAuthor = lastUpdateFrontMatter?.author;
69
74
  const frontMatterTimestamp = lastUpdateFrontMatter?.date
@@ -73,8 +78,20 @@ async function readLastUpdateData(filePath, options, lastUpdateFrontMatter) {
73
78
  // We call it at most once
74
79
  // If all the data is provided as front matter, we do not call it
75
80
  const getLastUpdateMemoized = lodash_1.default.memoize(() => getLastUpdate(filePath));
76
- const getLastUpdateBy = () => getLastUpdateMemoized().then((update) => update?.lastUpdatedBy);
77
- const getLastUpdateAt = () => getLastUpdateMemoized().then((update) => update?.lastUpdatedAt);
81
+ const getLastUpdateBy = () => getLastUpdateMemoized().then((update) => {
82
+ // Important, see https://github.com/facebook/docusaurus/pull/11211
83
+ if (update === null) {
84
+ return null;
85
+ }
86
+ return update?.lastUpdatedBy;
87
+ });
88
+ const getLastUpdateAt = () => getLastUpdateMemoized().then((update) => {
89
+ // Important, see https://github.com/facebook/docusaurus/pull/11211
90
+ if (update === null) {
91
+ return null;
92
+ }
93
+ return update?.lastUpdatedAt;
94
+ });
78
95
  const lastUpdatedBy = showLastUpdateAuthor
79
96
  ? frontMatterAuthor ?? (await getLastUpdateBy())
80
97
  : undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"lastUpdateUtils.js","sourceRoot":"","sources":["../src/lastUpdateUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lastUpdateUtils.js","sourceRoot":"","sources":["../src/lastUpdateUtils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@docusaurus/utils",
3
- "version": "3.8.0",
3
+ "version": "3.8.1",
4
4
  "description": "Node utility functions for Docusaurus packages.",
5
5
  "main": "./lib/index.js",
6
6
  "types": "./lib/index.d.ts",
@@ -18,9 +18,9 @@
18
18
  },
19
19
  "license": "MIT",
20
20
  "dependencies": {
21
- "@docusaurus/logger": "3.8.0",
22
- "@docusaurus/types": "3.8.0",
23
- "@docusaurus/utils-common": "3.8.0",
21
+ "@docusaurus/logger": "3.8.1",
22
+ "@docusaurus/types": "3.8.1",
23
+ "@docusaurus/utils-common": "3.8.1",
24
24
  "escape-string-regexp": "^4.0.0",
25
25
  "execa": "5.1.1",
26
26
  "file-loader": "^6.2.0",
@@ -51,5 +51,5 @@
51
51
  "dedent": "^0.7.0",
52
52
  "tmp-promise": "^3.0.3"
53
53
  },
54
- "gitHead": "948d63c42fad0ba24b7b531a9deb6167e64dc845"
54
+ "gitHead": "fa8ae13e668fcbc0481ce10c0a734e2a5b397293"
55
55
  }
package/src/gitUtils.ts CHANGED
@@ -154,12 +154,12 @@ export async function getFileCommitDate(
154
154
  file,
155
155
  )}"`;
156
156
 
157
- const result = (await GitCommandQueue.add(() =>
158
- execa(command, {
157
+ const result = (await GitCommandQueue.add(() => {
158
+ return execa(command, {
159
159
  cwd: path.dirname(file),
160
160
  shell: true,
161
- }),
162
- ))!;
161
+ });
162
+ }))!;
163
163
 
164
164
  if (result.exitCode !== 0) {
165
165
  throw new Error(
@@ -15,10 +15,18 @@ import {
15
15
  import type {PluginOptions} from '@docusaurus/types';
16
16
 
17
17
  export type LastUpdateData = {
18
- /** A timestamp in **milliseconds**, usually read from `git log` */
19
- lastUpdatedAt?: number;
20
- /** The author's name, usually coming from `git log` */
21
- lastUpdatedBy?: string;
18
+ /**
19
+ * A timestamp in **milliseconds**, usually read from `git log`
20
+ * `undefined`: not read
21
+ * `null`: no value to read (usual for untracked files)
22
+ */
23
+ lastUpdatedAt: number | undefined | null;
24
+ /**
25
+ * The author's name, usually coming from `git log`
26
+ * `undefined`: not read
27
+ * `null`: no value to read (usual for untracked files)
28
+ */
29
+ lastUpdatedBy: string | undefined | null;
22
30
  };
23
31
 
24
32
  let showedGitRequirementError = false;
@@ -68,9 +76,15 @@ export const LAST_UPDATE_FALLBACK: LastUpdateData = {
68
76
  lastUpdatedBy: 'Author',
69
77
  };
70
78
 
79
+ // Not proud of this, but convenient for tests :/
80
+ export const LAST_UPDATE_UNTRACKED_GIT_FILEPATH = `file/path/${Math.random()}.mdx`;
81
+
71
82
  export async function getLastUpdate(
72
83
  filePath: string,
73
84
  ): Promise<LastUpdateData | null> {
85
+ if (filePath === LAST_UPDATE_UNTRACKED_GIT_FILEPATH) {
86
+ return null;
87
+ }
74
88
  if (
75
89
  process.env.NODE_ENV !== 'production' ||
76
90
  process.env.DOCUSAURUS_DISABLE_LAST_UPDATE === 'true'
@@ -103,7 +117,7 @@ export async function readLastUpdateData(
103
117
  const {showLastUpdateAuthor, showLastUpdateTime} = options;
104
118
 
105
119
  if (!showLastUpdateAuthor && !showLastUpdateTime) {
106
- return {};
120
+ return {lastUpdatedBy: undefined, lastUpdatedAt: undefined};
107
121
  }
108
122
 
109
123
  const frontMatterAuthor = lastUpdateFrontMatter?.author;
@@ -116,9 +130,21 @@ export async function readLastUpdateData(
116
130
  // If all the data is provided as front matter, we do not call it
117
131
  const getLastUpdateMemoized = _.memoize(() => getLastUpdate(filePath));
118
132
  const getLastUpdateBy = () =>
119
- getLastUpdateMemoized().then((update) => update?.lastUpdatedBy);
133
+ getLastUpdateMemoized().then((update) => {
134
+ // Important, see https://github.com/facebook/docusaurus/pull/11211
135
+ if (update === null) {
136
+ return null;
137
+ }
138
+ return update?.lastUpdatedBy;
139
+ });
120
140
  const getLastUpdateAt = () =>
121
- getLastUpdateMemoized().then((update) => update?.lastUpdatedAt);
141
+ getLastUpdateMemoized().then((update) => {
142
+ // Important, see https://github.com/facebook/docusaurus/pull/11211
143
+ if (update === null) {
144
+ return null;
145
+ }
146
+ return update?.lastUpdatedAt;
147
+ });
122
148
 
123
149
  const lastUpdatedBy = showLastUpdateAuthor
124
150
  ? frontMatterAuthor ?? (await getLastUpdateBy())