Skip to content

Commit 9552634

Browse files
committed
Removed string type of FiletypeOptions
1 parent fd21423 commit 9552634

File tree

2 files changed

+29
-43
lines changed

2 files changed

+29
-43
lines changed

src/requireCssModule.js

+20-28
Original file line numberDiff line numberDiff line change
@@ -19,56 +19,48 @@ import type {
1919
} from './types';
2020

2121
type FileTypeOptions = {|
22-
syntax: string,
23-
plugins: Array<string>
22+
+syntax: string,
23+
// eslint-disable-next-line no-undef
24+
+plugins?: $ReadOnlyArray<string>
2425
|};
2526

26-
const getFiletypeOptions = (cssSourceFilePath: string, filetypes: Object): ?(string|FileTypeOptions) => {
27+
const getFiletypeOptions = (cssSourceFilePath: string, filetypes: {[key: string]: FileTypeOptions}): ?FileTypeOptions => {
2728
const extension = cssSourceFilePath.substr(cssSourceFilePath.lastIndexOf('.'));
2829
const filetype = filetypes ? filetypes[extension] : null;
2930

3031
return filetype;
3132
};
3233

33-
const getSyntax = (filetypeOptions: ?(string|FileTypeOptions)) => {
34+
const getSyntax = (filetypeOptions: FileTypeOptions): ?(Function|Object) => {
3435
if (!filetypeOptions) {
3536
return null;
3637
}
3738

38-
if (typeof filetypeOptions === 'string') {
39-
// eslint-disable-next-line import/no-dynamic-require, global-require
40-
return require(filetypeOptions);
41-
}
42-
43-
if (typeof filetypeOptions === 'object') {
44-
// eslint-disable-next-line import/no-dynamic-require, global-require
45-
return require(filetypeOptions.syntax);
46-
}
47-
48-
return null;
39+
// eslint-disable-next-line import/no-dynamic-require, global-require
40+
return require(filetypeOptions.syntax);
4941
};
5042

51-
const getExtraPlugins = (filetypeOptions: ?(string|FileTypeOptions)): Array<any> => {
52-
if (!filetypeOptions) {
43+
// eslint-disable-next-line no-undef
44+
const getExtraPlugins = (filetypeOptions: ?FileTypeOptions): $ReadOnlyArray<any> => {
45+
if (!filetypeOptions || !filetypeOptions.plugins) {
5346
return [];
5447
}
5548

56-
if (typeof filetypeOptions === 'object') {
57-
return filetypeOptions.plugins.map((plugin) => {
58-
// eslint-disable-next-line import/no-dynamic-require, global-require
59-
return require(plugin);
60-
});
61-
}
62-
63-
return [];
49+
return filetypeOptions.plugins.map((plugin) => {
50+
// eslint-disable-next-line import/no-dynamic-require, global-require
51+
return require(plugin);
52+
});
6453
};
6554

66-
const getTokens = (runner, cssSourceFilePath: string, filetypeOptions: ?(string|FileTypeOptions)): StyleModuleMapType => {
55+
const getTokens = (runner, cssSourceFilePath: string, filetypeOptions: ?FileTypeOptions): StyleModuleMapType => {
6756
const options: Object = {
68-
from: cssSourceFilePath,
69-
syntax: getSyntax(filetypeOptions)
57+
from: cssSourceFilePath
7058
};
7159

60+
if (filetypeOptions) {
61+
options.syntax = getSyntax(filetypeOptions);
62+
}
63+
7264
const lazyResult = runner
7365
.process(readFileSync(cssSourceFilePath, 'utf-8'), options);
7466

src/schemas/optionsSchema.json

+9-15
Original file line numberDiff line numberDiff line change
@@ -11,25 +11,19 @@
1111
"additionalProperties": false,
1212
"patternProperties": {
1313
"\\..*": {
14-
"oneOf": [
15-
{
14+
"type": "object",
15+
"additionalProperties": false,
16+
"properties": {
17+
"syntax": {
1618
"type": "string"
1719
},
18-
{
19-
"type": "object",
20-
"additionalProperties": false,
21-
"properties": {
22-
"syntax": {
23-
"type": "string"
24-
},
25-
"plugins": {
26-
"type": "array",
27-
"items": { "type": "string" },
28-
"minItems": 1
29-
}
20+
"plugins": {
21+
"type": "array",
22+
"items": {
23+
"type": "string"
3024
}
3125
}
32-
]
26+
}
3327
}
3428
},
3529
"type": "object"

0 commit comments

Comments
 (0)