Skip to content

Commit d1b32fc

Browse files
committed
refactor: Push codeblock generation to the right place
1 parent 50e5ae4 commit d1b32fc

2 files changed

Lines changed: 21 additions & 45 deletions

File tree

src/dependency.ts

Lines changed: 6 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,12 @@ import { LoaderOptions } from "./types";
2020

2121
class DocGenDependency extends NullDependency {
2222
public static Template: NullDependency.Template;
23-
private componentDocs: docGen.ComponentDoc[];
23+
private codeBlock: string;
2424

25-
constructor(request: string, componentDocs: docGen.ComponentDoc[]) {
25+
constructor(request: string, codeBlock: string) {
2626
super(request);
2727

28-
this.componentDocs = componentDocs;
28+
this.codeBlock = codeBlock;
2929
}
3030

3131
// TODO: Note if you want that modules correctly invalidate and cache you need to add updateHash to your Dependency and hash the type info (because that might change depending on outside factors (other modules)
@@ -35,45 +35,11 @@ makeSerializable(
3535
DocGenDependency,
3636
"react-docgen-typescript-plugin/dist/dependency"
3737
);
38-
39-
type Options = {
40-
parser: docGen.FileParser;
41-
docgenOptions: LoaderOptions;
42-
};
43-
4438
class DocGenTemplate extends NullDependency.Template {
45-
private options: Options;
46-
47-
constructor(options: Options) {
48-
super();
49-
50-
this.options = options;
51-
}
52-
53-
apply(
54-
dependency: NullDependency,
55-
source: ReplaceSource,
56-
{ module }: { module: Module }
57-
): void {
58-
const { userRequest } = module;
59-
60-
if (!dependency.componentDocs.length) {
61-
return;
39+
apply(dependency: NullDependency, source: ReplaceSource): void {
40+
if (dependency.codeBlock) {
41+
source.insert(0, dependency.codeBlock);
6242
}
63-
64-
source.insert(
65-
0,
66-
generateDocgenCodeBlock({
67-
filename: userRequest,
68-
source: userRequest,
69-
componentDocs: dependency.componentDocs,
70-
docgenCollectionName:
71-
this.options.docgenOptions.docgenCollectionName ||
72-
"STORYBOOK_REACT_CLASSES",
73-
setDisplayName: this.options.docgenOptions.setDisplayName || true,
74-
typePropName: this.options.docgenOptions.typePropName || "type",
75-
}).substring(userRequest.length)
76-
);
7743
}
7844
}
7945

src/plugin.ts

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import { matcher } from "micromatch";
99

1010
import { LoaderOptions } from "./types";
1111
import DocGenDependency from "./dependency";
12+
import { generateDocgenCodeBlock } from "./generateDocgenCodeBlock";
1213

1314
const debugExclude = createDebug("docgen:exclude");
1415

@@ -109,10 +110,8 @@ export default class DocgenPlugin {
109110
// eslint-disable-next-line
110111
// @ts-ignore TODO: Figure out why this isn't allowed
111112
DocGenDependency,
112-
new DocGenDependency.Template({
113-
parser: this.parser,
114-
docgenOptions: this.docgenOptions,
115-
})
113+
// TODO: Use ConstDependency.Template instead?
114+
new DocGenDependency.Template()
116115
);
117116

118117
// eslint-disable-next-line
@@ -138,10 +137,21 @@ export default class DocgenPlugin {
138137
return;
139138
}
140139

140+
const componentDocs = this.parser.parse(nameForCondition);
141+
141142
module.addDependency(
142143
new DocGenDependency(
143144
module.request,
144-
this.parser.parse(nameForCondition)
145+
generateDocgenCodeBlock({
146+
filename: nameForCondition,
147+
source: nameForCondition,
148+
componentDocs,
149+
docgenCollectionName:
150+
this.docgenOptions.docgenCollectionName ||
151+
"STORYBOOK_REACT_CLASSES",
152+
setDisplayName: this.docgenOptions.setDisplayName || true,
153+
typePropName: this.docgenOptions.typePropName || "type",
154+
}).substring(module.userRequest.length)
145155
)
146156
);
147157
});

0 commit comments

Comments
 (0)