@docusaurus/types 2.0.0-beta.12faed89d → 2.0.0-beta.13

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/package.json CHANGED
@@ -1,8 +1,7 @@
1
1
  {
2
2
  "name": "@docusaurus/types",
3
- "version": "2.0.0-beta.12faed89d",
3
+ "version": "2.0.0-beta.13",
4
4
  "description": "Common types for Docusaurus packages.",
5
- "main": "./src/index.js",
6
5
  "types": "./src/index.d.ts",
7
6
  "publishConfig": {
8
7
  "access": "public"
@@ -18,10 +17,11 @@
18
17
  },
19
18
  "dependencies": {
20
19
  "commander": "^5.1.0",
21
- "joi": "^17.4.0",
20
+ "joi": "^17.4.2",
22
21
  "querystring": "0.2.0",
23
- "webpack": "^5.40.0",
22
+ "utility-types": "^3.10.0",
23
+ "webpack": "^5.61.0",
24
24
  "webpack-merge": "^5.8.0"
25
25
  },
26
- "gitHead": "1430dbacfbe9da59a17ce395ed29bdbddaf90049"
26
+ "gitHead": "b6ca12aedf10a10c2375f4f8b7e7380cfd7c7202"
27
27
  }
package/src/index.d.ts CHANGED
@@ -5,12 +5,11 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
- // ESLint doesn't understand types dependencies in d.ts
9
- // eslint-disable-next-line import/no-extraneous-dependencies
10
8
  import type {RuleSetRule, Configuration} from 'webpack';
11
9
  import type {Command} from 'commander';
12
10
  import type {ParsedUrlQueryInput} from 'querystring';
13
11
  import type Joi from 'joi';
12
+ import type {Overwrite, DeepPartial} from 'utility-types';
14
13
 
15
14
  // Convert webpack-merge webpack-merge enum to union type
16
15
  // For type retro-compatible webpack-merge upgrade: we used string literals before)
@@ -23,6 +22,7 @@ export type ThemeConfig = {
23
22
  [key: string]: unknown;
24
23
  };
25
24
 
25
+ // Docusaurus config, after validation/normalization
26
26
  export interface DocusaurusConfig {
27
27
  baseUrl: string;
28
28
  baseUrlIssueBanner: boolean;
@@ -39,6 +39,7 @@ export interface DocusaurusConfig {
39
39
  noIndex: boolean;
40
40
  organizationName?: string;
41
41
  projectName?: string;
42
+ deploymentBranch?: string;
42
43
  githubHost?: string;
43
44
  githubPort?: string;
44
45
  plugins?: PluginConfig[];
@@ -57,6 +58,7 @@ export interface DocusaurusConfig {
57
58
  )[];
58
59
  clientModules?: string[];
59
60
  ssrTemplate?: string;
61
+ staticDirectories: string[];
60
62
  stylesheets?: (
61
63
  | string
62
64
  | {
@@ -70,6 +72,19 @@ export interface DocusaurusConfig {
70
72
  };
71
73
  }
72
74
 
75
+ // Docusaurus config, as provided by the user (partial/unnormalized)
76
+ // This type is used to provide type-safety / IDE auto-complete on the config file
77
+ // See https://docusaurus.io/docs/typescript-support
78
+ export type Config = Overwrite<
79
+ Partial<DocusaurusConfig>,
80
+ {
81
+ title: Required<DocusaurusConfig['title']>;
82
+ url: Required<DocusaurusConfig['url']>;
83
+ baseUrl: Required<DocusaurusConfig['baseUrl']>;
84
+ i18n?: DeepPartial<DocusaurusConfig['i18n']>;
85
+ }
86
+ >;
87
+
73
88
  /**
74
89
  * - `type: 'package'`, plugin is in a different package.
75
90
  * - `type: 'project'`, plugin is in the same docusaurus project.
@@ -127,7 +142,10 @@ export interface DocusaurusContext {
127
142
  globalData: Record<string, unknown>;
128
143
  i18n: I18n;
129
144
  codeTranslations: Record<string, string>;
130
- isClient: boolean;
145
+
146
+ // Don't put mutable values here, to avoid triggering re-renders
147
+ // We could reconsider that choice if context selectors are implemented
148
+ // isBrowser: boolean; // Not here on purpose!
131
149
  }
132
150
 
133
151
  export interface Preset {
@@ -135,6 +153,14 @@ export interface Preset {
135
153
  themes?: PluginConfig[];
136
154
  }
137
155
 
156
+ export type PresetModule = {
157
+ <T>(context: LoadContext, presetOptions: T): Preset;
158
+ };
159
+
160
+ export type ImportedPresetModule = PresetModule & {
161
+ default?: PresetModule;
162
+ };
163
+
138
164
  export type PresetConfig =
139
165
  | [string, Record<string, unknown>]
140
166
  | [string]
@@ -195,17 +221,17 @@ export interface InjectedHtmlTags {
195
221
  export type HtmlTags = string | HtmlTagObject | (string | HtmlTagObject)[];
196
222
 
197
223
  export interface Props extends LoadContext, InjectedHtmlTags {
198
- siteMetadata: DocusaurusSiteMetadata;
199
- routes: RouteConfig[];
200
- routesPaths: string[];
201
- plugins: LoadedPlugin[];
224
+ readonly siteMetadata: DocusaurusSiteMetadata;
225
+ readonly routes: RouteConfig[];
226
+ readonly routesPaths: string[];
227
+ readonly plugins: LoadedPlugin[];
202
228
  }
203
229
 
204
230
  export interface PluginContentLoadedActions {
205
- addRoute(config: RouteConfig): void;
231
+ addRoute: (config: RouteConfig) => void;
206
232
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
207
- createData(name: string, data: any): Promise<string>;
208
- setGlobalData<T = unknown>(data: T): void;
233
+ createData: (name: string, data: any) => Promise<string>;
234
+ setGlobalData: <T = unknown>(data: T) => void;
209
235
  }
210
236
 
211
237
  export type AllContent = Record<
@@ -221,36 +247,32 @@ export type PostCssOptions = Record<string, unknown> & {plugins: unknown[]};
221
247
 
222
248
  export interface Plugin<Content = unknown> {
223
249
  name: string;
224
- loadContent?(): Promise<Content>;
225
- contentLoaded?({
250
+ loadContent?: () => Promise<Content>;
251
+ contentLoaded?: ({
226
252
  content,
227
253
  actions,
228
254
  }: {
229
255
  content: Content; // the content loaded by this plugin instance
230
256
  allContent: AllContent; // content loaded by ALL the plugins
231
257
  actions: PluginContentLoadedActions;
232
- }): void;
233
- routesLoaded?(routes: RouteConfig[]): void; // TODO remove soon, deprecated (alpha-60)
234
- postBuild?(props: Props): void;
235
- postStart?(props: Props): void;
258
+ }) => Promise<void>;
259
+ routesLoaded?: (routes: RouteConfig[]) => void; // TODO remove soon, deprecated (alpha-60)
260
+ postBuild?: (props: Props) => void;
261
+ postStart?: (props: Props) => void;
236
262
  // TODO refactor the configureWebpack API surface: use an object instead of multiple params (requires breaking change)
237
- configureWebpack?(
263
+ configureWebpack?: (
238
264
  config: Configuration,
239
265
  isServer: boolean,
240
266
  utils: ConfigureWebpackUtils,
241
267
  content: Content,
242
- ): Configuration & {mergeStrategy?: ConfigureWebpackFnMergeStrategy};
243
- configurePostCss?(options: PostCssOptions): PostCssOptions;
244
- getThemePath?(): string;
245
- getTypeScriptThemePath?(): string;
246
- getPathsToWatch?(): string[];
247
- getClientModules?(): string[];
248
- extendCli?(cli: Command): void;
249
- injectHtmlTags?({
250
- content,
251
- }: {
252
- content: Content;
253
- }): {
268
+ ) => Configuration & {mergeStrategy?: ConfigureWebpackFnMergeStrategy};
269
+ configurePostCss?: (options: PostCssOptions) => PostCssOptions;
270
+ getThemePath?: () => string;
271
+ getTypeScriptThemePath?: () => string;
272
+ getPathsToWatch?: () => string[];
273
+ getClientModules?: () => string[];
274
+ extendCli?: (cli: Command) => void;
275
+ injectHtmlTags?: ({content}: {content: Content}) => {
254
276
  headTags?: HtmlTags;
255
277
  preBodyTags?: HtmlTags;
256
278
  postBodyTags?: HtmlTags;
@@ -258,31 +280,31 @@ export interface Plugin<Content = unknown> {
258
280
  // TODO before/afterDevServer implementation
259
281
 
260
282
  // translations
261
- getTranslationFiles?({
283
+ getTranslationFiles?: ({
262
284
  content,
263
285
  }: {
264
286
  content: Content;
265
- }): Promise<TranslationFiles>;
266
- getDefaultCodeTranslationMessages?(): Promise<
287
+ }) => Promise<TranslationFiles>;
288
+ getDefaultCodeTranslationMessages?: () => Promise<
267
289
  Record<
268
290
  string, // id
269
291
  string // message
270
292
  >
271
293
  >;
272
- translateContent?({
294
+ translateContent?: ({
273
295
  content,
274
296
  translationFiles,
275
297
  }: {
276
298
  content: Content; // the content loaded by this plugin instance
277
299
  translationFiles: TranslationFiles;
278
- }): Content;
279
- translateThemeConfig?({
300
+ }) => Content;
301
+ translateThemeConfig?: ({
280
302
  themeConfig,
281
303
  translationFiles,
282
304
  }: {
283
305
  themeConfig: ThemeConfig;
284
306
  translationFiles: TranslationFiles;
285
- }): ThemeConfig;
307
+ }) => ThemeConfig;
286
308
  }
287
309
 
288
310
  export type InitializedPlugin<Content = unknown> = Plugin<Content> & {
@@ -296,9 +318,9 @@ export type LoadedPlugin<Content = unknown> = InitializedPlugin<Content> & {
296
318
 
297
319
  export type PluginModule = {
298
320
  <T, X>(context: LoadContext, options: T): Plugin<X>;
299
- validateOptions?<T>(data: OptionValidationContext<T>): T;
300
- validateThemeConfig?<T>(data: ThemeConfigValidationContext<T>): T;
301
- getSwizzleComponentList?(): string[];
321
+ validateOptions?: <T>(data: OptionValidationContext<T>) => T;
322
+ validateThemeConfig?: <T>(data: ThemeConfigValidationContext<T>) => T;
323
+ getSwizzleComponentList?: () => string[];
302
324
  };
303
325
 
304
326
  export type ImportedPluginModule = PluginModule & {
@@ -346,7 +368,7 @@ export interface RouteConfig {
346
368
  routes?: RouteConfig[];
347
369
  exact?: boolean;
348
370
  priority?: number;
349
- [propName: string]: any;
371
+ [propName: string]: unknown;
350
372
  }
351
373
 
352
374
  // Aliases used for Webpack resolution (when using docusaurus swizzle)
@@ -384,9 +406,7 @@ interface HtmlTagObject {
384
406
  * Attributes of the html tag
385
407
  * E.g. `{'disabled': true, 'value': 'demo', 'rel': 'preconnect'}`
386
408
  */
387
- attributes?: {
388
- [attributeName: string]: string | boolean;
389
- };
409
+ attributes?: Partial<Record<string, string | boolean>>;
390
410
  /**
391
411
  * The tag name e.g. `div`, `script`, `link`, `meta`
392
412
  */
@@ -420,4 +440,7 @@ export interface TOCItem {
420
440
  readonly value: string;
421
441
  readonly id: string;
422
442
  readonly children: TOCItem[];
443
+ readonly level: number;
423
444
  }
445
+
446
+ export type RouteChunksTree = {[x: string | number]: string | RouteChunksTree};
package/src/index.js DELETED
@@ -1,10 +0,0 @@
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
- /* eslint-disable */
9
- 'use strict';
10
- Object.defineProperty(exports, '__esModule', {value: true});