Skip to content

Commit 2f7053e

Browse files
committed
fix: 🐛 add more meaningful log to importAny
1 parent 4c2d9d1 commit 2f7053e

17 files changed

+74
-64
lines changed

Diff for: src/autoProcess.ts

+1-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@ import {
77
Transformers,
88
Options,
99
} from './types';
10-
import { hasDepInstalled } from './modules/hasDepInstalled';
11-
import { concat } from './modules/concat';
10+
import { hasDepInstalled, concat } from './modules/utils';
1211
import { getTagInfo } from './modules/tagInfo';
1312
import {
1413
addLanguageAlias,

Diff for: src/modules/concat.ts

-9
This file was deleted.

Diff for: src/modules/getIncludePaths.ts

-8
This file was deleted.

Diff for: src/modules/hasDepInstalled.ts

-19
This file was deleted.

Diff for: src/modules/importAny.ts

-12
This file was deleted.

Diff for: src/modules/utils.ts

+58
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
import { dirname } from 'path';
2+
3+
export async function importAny(...modules: string[]) {
4+
try {
5+
const mod = await modules.reduce(
6+
(acc, moduleName) => acc.catch(() => import(moduleName)),
7+
Promise.reject(),
8+
);
9+
10+
return mod;
11+
} catch (e) {
12+
throw new Error(`Cannot find any of modules: ${modules}\n\n${e}`);
13+
}
14+
}
15+
16+
export function concat(...arrs: any[]): any[] {
17+
return arrs.reduce((acc: [], a) => {
18+
if (a) {
19+
return acc.concat(a);
20+
}
21+
22+
return acc;
23+
}, []);
24+
}
25+
26+
/** Paths used by preprocessors to resolve @imports */
27+
export function getIncludePaths(fromFilename: string, base: string[] = []) {
28+
return [
29+
...new Set([...base, 'node_modules', process.cwd(), dirname(fromFilename)]),
30+
];
31+
}
32+
33+
const cachedResult: Record<string, boolean> = {};
34+
35+
/**
36+
* Checks if a package is installed.
37+
*
38+
* @export
39+
* @param {string} dep
40+
* @returns boolean
41+
*/
42+
export async function hasDepInstalled(dep: string) {
43+
if (cachedResult[dep] != null) {
44+
return cachedResult[dep];
45+
}
46+
47+
let result = false;
48+
49+
try {
50+
await import(dep);
51+
52+
result = true;
53+
} catch (e) {
54+
result = false;
55+
}
56+
57+
return (cachedResult[dep] = result);
58+
}

Diff for: src/processors/babel.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { PreprocessorGroup, Options } from '../types';
2-
import { concat } from '../modules/concat';
2+
import { concat } from '../modules/utils';
33
import { getTagInfo } from '../modules/tagInfo';
44
import { prepareContent } from '../modules/prepareContent';
55

Diff for: src/processors/coffeescript.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { PreprocessorGroup, Options } from '../types';
22
import { getTagInfo } from '../modules/tagInfo';
3-
import { concat } from '../modules/concat';
3+
import { concat } from '../modules/utils';
44
import { prepareContent } from '../modules/prepareContent';
55

66
export default (options?: Options.Coffeescript): PreprocessorGroup => ({

Diff for: src/processors/less.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { PreprocessorGroup, Options } from '../types';
22
import { getTagInfo } from '../modules/tagInfo';
3-
import { concat } from '../modules/concat';
3+
import { concat } from '../modules/utils';
44
import { prepareContent } from '../modules/prepareContent';
55

66
export default (options?: Options.Less): PreprocessorGroup => ({

Diff for: src/processors/postcss.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { PreprocessorGroup, Options } from '../types';
22
import { getTagInfo } from '../modules/tagInfo';
3-
import { concat } from '../modules/concat';
3+
import { concat } from '../modules/utils';
44
import { prepareContent } from '../modules/prepareContent';
55

66
/** Adapted from https://github.com/TehShrike/svelte-preprocess-postcss */

Diff for: src/processors/scss.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { PreprocessorGroup, Options } from '../types';
22
import { getTagInfo } from '../modules/tagInfo';
3-
import { concat } from '../modules/concat';
3+
import { concat } from '../modules/utils';
44
import { prepareContent } from '../modules/prepareContent';
55

66
export default (options?: Options.Sass): PreprocessorGroup => ({

Diff for: src/processors/stylus.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Options, PreprocessorGroup } from '../types';
22
import { getTagInfo } from '../modules/tagInfo';
3-
import { concat } from '../modules/concat';
3+
import { concat } from '../modules/utils';
44
import { prepareContent } from '../modules/prepareContent';
55

66
export default (options?: Options.Stylus): PreprocessorGroup => ({

Diff for: src/processors/typescript.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Options, PreprocessorGroup } from '../types';
22
import { getTagInfo } from '../modules/tagInfo';
3-
import { concat } from '../modules/concat';
3+
import { concat } from '../modules/utils';
44
import { prepareContent } from '../modules/prepareContent';
55

66
export default (options?: Options.Typescript): PreprocessorGroup => ({

Diff for: src/transformers/less.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import less from 'less';
22

3-
import { getIncludePaths } from '../modules/getIncludePaths';
3+
import { getIncludePaths } from '../modules/utils';
44
import { Transformer, Options } from '../types';
55

66
const transformer: Transformer<Options.Less> = async ({

Diff for: src/transformers/scss.ts

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
import { Result } from 'sass';
22

33
import { Transformer, Processed, Options } from '../types';
4-
import { getIncludePaths } from '../modules/getIncludePaths';
5-
import { importAny } from '../modules/importAny';
4+
import { getIncludePaths, importAny } from '../modules/utils';
65

76
let sass: Options.Sass['implementation'];
87

Diff for: src/transformers/stylus.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import path from 'path';
22

33
import stylus from 'stylus';
44

5-
import { getIncludePaths } from '../modules/getIncludePaths';
5+
import { getIncludePaths } from '../modules/utils';
66
import { Transformer, Options } from '../types';
77

88
const transformer: Transformer<Options.Stylus> = ({

Diff for: test/modules.test.ts

+5-3
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@ import { resolve } from 'path';
22

33
import { getTestAppFilename, getFixtureContent } from './utils';
44
import { getTagInfo } from '../src/modules/tagInfo';
5-
import { importAny } from '../src/modules/importAny';
6-
import { getIncludePaths } from '../src/modules/getIncludePaths';
5+
import {
6+
importAny,
7+
getIncludePaths,
8+
hasDepInstalled,
9+
} from '../src/modules/utils';
710
import { globalifySelector } from '../src/modules/globalifySelector';
8-
import { hasDepInstalled } from '../src/modules/hasDepInstalled';
911

1012
describe('importAny', () => {
1113
it('should throw error when none exist', () => {

0 commit comments

Comments
 (0)