@modern-js/utils 1.3.8-canary.0 → 1.6.0
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGELOG.md +49 -0
- package/compiled/address/index.js +1 -0
- package/compiled/address/lib/address.d.ts +28 -0
- package/compiled/address/package.json +1 -0
- package/compiled/browserslist/index.js +1 -1
- package/compiled/dotenv/index.js +1 -0
- package/compiled/dotenv/license +23 -0
- package/compiled/dotenv/package.json +1 -0
- package/compiled/dotenv/types/index.d.ts +59 -0
- package/compiled/dotenv-expand/index.d.ts +15 -0
- package/compiled/dotenv-expand/index.js +1 -0
- package/compiled/dotenv-expand/license +24 -0
- package/compiled/dotenv-expand/package.json +1 -0
- package/compiled/fast-glob/@nodelib/fs.scandir/out/adapters/fs.d.ts +20 -0
- package/compiled/fast-glob/@nodelib/fs.scandir/out/index.d.ts +12 -0
- package/compiled/fast-glob/@nodelib/fs.scandir/out/providers/async.d.ts +7 -0
- package/compiled/fast-glob/@nodelib/fs.scandir/out/settings.d.ts +20 -0
- package/compiled/fast-glob/@nodelib/fs.scandir/out/types/index.d.ts +20 -0
- package/compiled/fast-glob/@nodelib/fs.stat/out/adapters/fs.d.ts +13 -0
- package/compiled/fast-glob/@nodelib/fs.stat/out/index.d.ts +12 -0
- package/compiled/fast-glob/@nodelib/fs.stat/out/providers/async.d.ts +4 -0
- package/compiled/fast-glob/@nodelib/fs.stat/out/settings.d.ts +16 -0
- package/compiled/fast-glob/@nodelib/fs.stat/out/types/index.d.ts +4 -0
- package/compiled/fast-glob/@nodelib/fs.walk/out/index.d.ts +14 -0
- package/compiled/fast-glob/@nodelib/fs.walk/out/providers/async.d.ts +12 -0
- package/compiled/fast-glob/@nodelib/fs.walk/out/readers/async.d.ts +30 -0
- package/compiled/fast-glob/@nodelib/fs.walk/out/readers/reader.d.ts +6 -0
- package/compiled/fast-glob/@nodelib/fs.walk/out/settings.d.ts +30 -0
- package/compiled/fast-glob/@nodelib/fs.walk/out/types/index.d.ts +8 -0
- package/compiled/fast-glob/index.js +37 -0
- package/compiled/fast-glob/license +21 -0
- package/compiled/fast-glob/out/index.d.ts +27 -0
- package/compiled/fast-glob/out/managers/tasks.d.ts +22 -0
- package/compiled/fast-glob/out/settings.d.ts +164 -0
- package/compiled/fast-glob/out/types/index.d.ts +31 -0
- package/compiled/fast-glob/package.json +1 -0
- package/compiled/globby/@nodelib/fs.scandir/out/adapters/fs.d.ts +20 -0
- package/compiled/globby/@nodelib/fs.scandir/out/index.d.ts +12 -0
- package/compiled/globby/@nodelib/fs.scandir/out/providers/async.d.ts +7 -0
- package/compiled/globby/@nodelib/fs.scandir/out/settings.d.ts +20 -0
- package/compiled/globby/@nodelib/fs.scandir/out/types/index.d.ts +20 -0
- package/compiled/globby/@nodelib/fs.stat/out/adapters/fs.d.ts +13 -0
- package/compiled/globby/@nodelib/fs.stat/out/index.d.ts +12 -0
- package/compiled/globby/@nodelib/fs.stat/out/providers/async.d.ts +4 -0
- package/compiled/globby/@nodelib/fs.stat/out/settings.d.ts +16 -0
- package/compiled/globby/@nodelib/fs.stat/out/types/index.d.ts +4 -0
- package/compiled/globby/@nodelib/fs.walk/out/index.d.ts +14 -0
- package/compiled/globby/@nodelib/fs.walk/out/providers/async.d.ts +12 -0
- package/compiled/globby/@nodelib/fs.walk/out/readers/async.d.ts +30 -0
- package/compiled/globby/@nodelib/fs.walk/out/readers/reader.d.ts +6 -0
- package/compiled/globby/@nodelib/fs.walk/out/settings.d.ts +30 -0
- package/compiled/globby/@nodelib/fs.walk/out/types/index.d.ts +8 -0
- package/compiled/globby/fast-glob/index.d.ts +27 -0
- package/compiled/globby/fast-glob/managers/tasks.d.ts +22 -0
- package/compiled/globby/fast-glob/settings.d.ts +164 -0
- package/compiled/globby/fast-glob/types/index.d.ts +31 -0
- package/compiled/globby/index.d.ts +186 -0
- package/compiled/globby/index.js +1 -0
- package/compiled/globby/license +9 -0
- package/compiled/globby/package.json +1 -0
- package/compiled/inquirer/index.d.ts +997 -0
- package/compiled/inquirer/index.js +9 -0
- package/compiled/inquirer/lib/objects/choice.d.ts +65 -0
- package/compiled/inquirer/lib/objects/choices.d.ts +206 -0
- package/compiled/inquirer/lib/objects/separator.d.ts +37 -0
- package/compiled/inquirer/lib/ui/baseUI.d.ts +37 -0
- package/compiled/inquirer/lib/ui/bottom-bar.d.ts +65 -0
- package/compiled/inquirer/lib/ui/prompt.d.ts +104 -0
- package/compiled/inquirer/license +22 -0
- package/compiled/inquirer/package.json +1 -0
- package/compiled/inquirer/through/index.d.ts +25 -0
- package/compiled/json5/index.js +1 -0
- package/compiled/json5/lib/index.d.ts +4 -0
- package/compiled/json5/lib/parse.d.ts +15 -0
- package/compiled/json5/lib/stringify.d.ts +89 -0
- package/compiled/json5/package.json +1 -0
- package/compiled/mime-types/index.d.ts +14 -0
- package/compiled/mime-types/index.js +14 -0
- package/compiled/mime-types/license +23 -0
- package/compiled/mime-types/package.json +1 -0
- package/compiled/minimist/index.d.ts +95 -0
- package/compiled/minimist/index.js +1 -0
- package/compiled/minimist/license +18 -0
- package/compiled/minimist/package.json +1 -0
- package/compiled/ora/cli-spinners/index.d.ts +125 -0
- package/compiled/ora/index.d.ts +277 -0
- package/compiled/ora/index.js +3 -0
- package/compiled/ora/license +9 -0
- package/compiled/ora/package.json +1 -0
- package/compiled/slash/index.d.ts +25 -0
- package/compiled/slash/index.js +1 -0
- package/compiled/slash/license +9 -0
- package/compiled/slash/package.json +1 -0
- package/compiled/url-join/index.d.ts +17 -0
- package/compiled/url-join/index.js +1 -0
- package/compiled/url-join/license +21 -0
- package/compiled/url-join/package.json +1 -0
- package/dist/analyzeProject.d.ts +1 -0
- package/dist/analyzeProject.js +40 -0
- package/dist/compiled.d.ts +33 -17
- package/dist/compiled.js +57 -21
- package/dist/constants.d.ts +1 -1
- package/dist/constants.js +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/prettyInstructions.js +3 -3
- package/dist/{ssrHelpers.d.ts → ssr.d.ts} +3 -0
- package/dist/{ssrHelpers.js → ssr.js} +0 -0
- package/dist/storage.js +1 -1
- package/package.json +12 -30
- package/dist/getCacheIdentifier.d.ts +0 -7
- package/dist/getCacheIdentifier.js +0 -24
- package/dist/js/modern/monorepo.js +0 -83
- package/dist/js/node/monorepo.js +0 -116
- package/dist/js/treeshaking/monorepo.js +0 -96
- package/dist/pkgUp.d.ts +0 -2
- package/dist/pkgUp.js +0 -8
- package/dist/types/FileSizeReporter.d.ts +0 -16
- package/dist/types/alias.d.ts +0 -21
- package/dist/types/applyOptionsChain.d.ts +0 -6
- package/dist/types/clearConsole.d.ts +0 -1
- package/dist/types/compatRequire.d.ts +0 -8
- package/dist/types/compiled.d.ts +0 -17
- package/dist/types/constants.d.ts +0 -222
- package/dist/types/debug.d.ts +0 -6
- package/dist/types/emptyDir.d.ts +0 -1
- package/dist/types/ensureAbsolutePath.d.ts +0 -7
- package/dist/types/findExists.d.ts +0 -6
- package/dist/types/format.d.ts +0 -16
- package/dist/types/generateMetaTags.d.ts +0 -16
- package/dist/types/getBrowserslist.d.ts +0 -2
- package/dist/types/getCacheIdentifier.d.ts +0 -7
- package/dist/types/getEntryOptions.d.ts +0 -1
- package/dist/types/getPackageManager.d.ts +0 -1
- package/dist/types/getPort.d.ts +0 -7
- package/dist/types/getServerConfig.d.ts +0 -1
- package/dist/types/import.d.ts +0 -5
- package/dist/types/index.d.ts +0 -32
- package/dist/types/is/index.d.ts +0 -34
- package/dist/types/is/node-env.d.ts +0 -4
- package/dist/types/is/platform.d.ts +0 -2
- package/dist/types/is/type.d.ts +0 -8
- package/dist/types/logger.d.ts +0 -63
- package/dist/types/monorepo.d.ts +0 -11
- package/dist/types/nodeEnv.d.ts +0 -3
- package/dist/types/path.d.ts +0 -3
- package/dist/types/prettyInstructions.d.ts +0 -6
- package/dist/types/printBuildError.d.ts +0 -8
- package/dist/types/readTsConfig.d.ts +0 -2
- package/dist/types/removeSlash.d.ts +0 -3
- package/dist/types/runtimeExports.d.ts +0 -4
- package/dist/types/wait.d.ts +0 -2
- package/dist/types/watch.d.ts +0 -8
- package/modern.config.js +0 -6
- package/tests/.eslintrc.js +0 -6
- package/tests/__snapshots__/prettyInstructions.test.ts.snap +0 -19
- package/tests/applyOptionsChain.test.ts +0 -100
- package/tests/compatRequire.test.ts +0 -32
- package/tests/debug.test.ts +0 -25
- package/tests/ensureAbsolutePath.test.ts +0 -16
- package/tests/findExists.test.ts +0 -22
- package/tests/fixtures/browserlist/develop/package.json +0 -11
- package/tests/fixtures/browserlist/dotfile/.browserslistrc +0 -3
- package/tests/fixtures/browserlist/pkg/package.json +0 -7
- package/tests/fixtures/compat-require/cjs.js +0 -1
- package/tests/fixtures/compat-require/empty.js +0 -1
- package/tests/fixtures/compat-require/esm.js +0 -5
- package/tests/fixtures/compat-require/foo.js +0 -3
- package/tests/fixtures/file-exists/a.ejs +0 -0
- package/tests/fixtures/file-exists/a.js/.gitkeep +0 -0
- package/tests/fixtures/file-exists/a.mjs +0 -0
- package/tests/fixtures/file-exists/a.ts +0 -0
- package/tests/format.test.ts +0 -60
- package/tests/generateMetaTags.test.ts +0 -19
- package/tests/getBrowserslist.test.ts +0 -32
- package/tests/getCacheIdentifier.test.ts +0 -37
- package/tests/getEntryOptions.test.ts +0 -53
- package/tests/index.test.ts +0 -18
- package/tests/is.test.ts +0 -27
- package/tests/isPlatform.test.ts +0 -19
- package/tests/isType.test.ts +0 -85
- package/tests/logger.test.ts +0 -53
- package/tests/prettyInstructions.test.ts +0 -139
- package/tests/removeSlash.test.ts +0 -19
- package/tests/tsconfig.json +0 -11
- package/tests/wait.ts +0 -38
@@ -1,100 +0,0 @@
|
|
1
|
-
import { applyOptionsChain } from '../src/applyOptionsChain';
|
2
|
-
|
3
|
-
describe('apply options chain', () => {
|
4
|
-
test(`should return default options`, () => {
|
5
|
-
expect(applyOptionsChain({ default: 'a' })).toEqual({ default: 'a' });
|
6
|
-
});
|
7
|
-
|
8
|
-
test(`should merge default options`, () => {
|
9
|
-
expect(
|
10
|
-
applyOptionsChain(
|
11
|
-
{ name: 'a' },
|
12
|
-
{
|
13
|
-
name: 'b',
|
14
|
-
custom: 'c',
|
15
|
-
},
|
16
|
-
),
|
17
|
-
).toEqual({
|
18
|
-
name: 'b',
|
19
|
-
custom: 'c',
|
20
|
-
});
|
21
|
-
});
|
22
|
-
|
23
|
-
test(`should support custom merge function`, () => {
|
24
|
-
const merge = (target: any, source: any) => {
|
25
|
-
for (const key in source) {
|
26
|
-
if (target.hasOwnProperty(key)) {
|
27
|
-
target[key] += source[key];
|
28
|
-
} else {
|
29
|
-
target[key] = source[key];
|
30
|
-
}
|
31
|
-
}
|
32
|
-
return target;
|
33
|
-
};
|
34
|
-
|
35
|
-
expect(
|
36
|
-
applyOptionsChain(
|
37
|
-
{
|
38
|
-
a: 1,
|
39
|
-
b: 'b',
|
40
|
-
},
|
41
|
-
{
|
42
|
-
a: 2,
|
43
|
-
b: 'b',
|
44
|
-
c: 'c',
|
45
|
-
},
|
46
|
-
{},
|
47
|
-
merge,
|
48
|
-
),
|
49
|
-
).toEqual({
|
50
|
-
a: 3,
|
51
|
-
b: 'bb',
|
52
|
-
c: 'c',
|
53
|
-
});
|
54
|
-
});
|
55
|
-
|
56
|
-
test(`should support funciton or object array`, () => {
|
57
|
-
const defaults = { a: 'a' };
|
58
|
-
|
59
|
-
const options = [
|
60
|
-
{ b: 'b' },
|
61
|
-
(o: any, { add }: { add: any }) => {
|
62
|
-
o.c = add(1, 2);
|
63
|
-
},
|
64
|
-
(o: any) => ({
|
65
|
-
...o,
|
66
|
-
d: 'd',
|
67
|
-
}),
|
68
|
-
{ e: 'e' },
|
69
|
-
];
|
70
|
-
expect(
|
71
|
-
applyOptionsChain(defaults, options as any, {
|
72
|
-
add: (a: any, b: any) => a + b,
|
73
|
-
}),
|
74
|
-
).toEqual({
|
75
|
-
a: 'a',
|
76
|
-
b: 'b',
|
77
|
-
c: 3,
|
78
|
-
d: 'd',
|
79
|
-
e: 'e',
|
80
|
-
});
|
81
|
-
});
|
82
|
-
|
83
|
-
test(`should throw error`, () => {
|
84
|
-
expect(() => {
|
85
|
-
applyOptionsChain(1, 2);
|
86
|
-
}).toThrow(/^applyOptionsChain error:/);
|
87
|
-
});
|
88
|
-
|
89
|
-
test(`should log warning about function result`, () => {
|
90
|
-
let outputs = '';
|
91
|
-
/* eslint-disable no-console */
|
92
|
-
console.log = jest.fn(input => (outputs += input));
|
93
|
-
/* eslint-enable no-console */
|
94
|
-
applyOptionsChain({ name: 'a' } as any, [() => 111]);
|
95
|
-
|
96
|
-
expect(outputs).toContain(
|
97
|
-
'Function should mutate the config and return nothing, Or return a cloned or merged version of config object.',
|
98
|
-
);
|
99
|
-
});
|
100
|
-
});
|
@@ -1,32 +0,0 @@
|
|
1
|
-
import path from 'path';
|
2
|
-
import { compatRequire, cleanRequireCache } from '../src/compatRequire';
|
3
|
-
|
4
|
-
describe('compat require', () => {
|
5
|
-
const fixturePath = path.resolve(__dirname, './fixtures/compat-require');
|
6
|
-
|
7
|
-
test(`should support default property`, () => {
|
8
|
-
expect(compatRequire(path.join(fixturePath, 'esm.js'))).toEqual({
|
9
|
-
name: 'esm',
|
10
|
-
});
|
11
|
-
});
|
12
|
-
|
13
|
-
test(`should support commonjs module`, () => {
|
14
|
-
expect(compatRequire(path.join(fixturePath, 'cjs.js'))).toEqual({
|
15
|
-
name: 'cjs',
|
16
|
-
});
|
17
|
-
});
|
18
|
-
|
19
|
-
test(`should return null`, () => {
|
20
|
-
expect(compatRequire(path.join(fixturePath, 'empty.js'))).toEqual(null);
|
21
|
-
});
|
22
|
-
|
23
|
-
test('should clearn cache after fn', () => {
|
24
|
-
const foo = module.require('./fixtures/compat-require/foo');
|
25
|
-
const requirePath = require.resolve('./fixtures/compat-require/foo.js');
|
26
|
-
expect(foo.name).toBe('foo');
|
27
|
-
expect(require.cache[requirePath]).toBeDefined();
|
28
|
-
cleanRequireCache([requirePath]);
|
29
|
-
jest.resetModules();
|
30
|
-
expect(require.cache[requirePath]).toBeUndefined();
|
31
|
-
});
|
32
|
-
});
|
package/tests/debug.test.ts
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
import { debug } from '../src/compiled';
|
2
|
-
import { stripAnsi } from '../src';
|
3
|
-
import { createDebugger } from '../src/debug';
|
4
|
-
|
5
|
-
describe('debug utility', () => {
|
6
|
-
test('should return file path', () => {
|
7
|
-
const debug1 = createDebugger('test');
|
8
|
-
|
9
|
-
const debug2 = createDebugger('test2');
|
10
|
-
|
11
|
-
debug.enable('modern-js:test2');
|
12
|
-
|
13
|
-
debug.log = (...args) => {
|
14
|
-
// XXX: args[0] 的内容有时候是 ' \x1B[38;5;167;1mmodern-js:test2 \x1B[0m22222' 这种格式
|
15
|
-
expect(stripAnsi(args[0])).toContain('modern-js:test2 22222');
|
16
|
-
};
|
17
|
-
|
18
|
-
debug1('11111');
|
19
|
-
debug2('22222');
|
20
|
-
|
21
|
-
expect(debug2.enabled).toBe(true);
|
22
|
-
|
23
|
-
expect(debug1.enabled).toBe(false);
|
24
|
-
});
|
25
|
-
});
|
@@ -1,16 +0,0 @@
|
|
1
|
-
import path from 'path';
|
2
|
-
import { ensureAbsolutePath } from '../src/ensureAbsolutePath';
|
3
|
-
|
4
|
-
describe('ensure absolute file path', () => {
|
5
|
-
test('should return filePath directly', () => {
|
6
|
-
expect(
|
7
|
-
path.isAbsolute(ensureAbsolutePath('/a/b', '/a/b/c/d/e.jsx')),
|
8
|
-
).toBeTruthy();
|
9
|
-
});
|
10
|
-
|
11
|
-
test(`should resolve absolute path`, () => {
|
12
|
-
expect(
|
13
|
-
path.isAbsolute(ensureAbsolutePath('/a/b', 'c/d/e.jsx')),
|
14
|
-
).toBeTruthy();
|
15
|
-
});
|
16
|
-
});
|
package/tests/findExists.test.ts
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
import path from 'path';
|
2
|
-
import { findExists } from '../src/findExists';
|
3
|
-
|
4
|
-
describe('find first exists file', () => {
|
5
|
-
const fixturePath = path.resolve(__dirname, './fixtures/file-exists');
|
6
|
-
|
7
|
-
test('should return file path', () => {
|
8
|
-
expect(
|
9
|
-
findExists(
|
10
|
-
['.js', '.ts', '.ejs', '.mjs'].map(ext =>
|
11
|
-
path.join(fixturePath, `a${ext}`),
|
12
|
-
),
|
13
|
-
),
|
14
|
-
).toEqual(path.join(fixturePath, 'a.ts'));
|
15
|
-
});
|
16
|
-
|
17
|
-
test('should return false when no file exists', () => {
|
18
|
-
expect(
|
19
|
-
findExists(['.jsx'].map(ext => path.join(fixturePath, `a${ext}`))),
|
20
|
-
).toBe(false);
|
21
|
-
});
|
22
|
-
});
|
@@ -1 +0,0 @@
|
|
1
|
-
module.exports = { name: 'cjs' };
|
@@ -1 +0,0 @@
|
|
1
|
-
module.exports = null;
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
package/tests/format.test.ts
DELETED
@@ -1,60 +0,0 @@
|
|
1
|
-
import { formatProxyOptions } from '../src/format';
|
2
|
-
|
3
|
-
describe('test format', () => {
|
4
|
-
it('should format correctly use simply options', async () => {
|
5
|
-
const proxy = {
|
6
|
-
'/simple': `http://localhost`,
|
7
|
-
};
|
8
|
-
|
9
|
-
const options = formatProxyOptions(proxy);
|
10
|
-
expect(options).toEqual([
|
11
|
-
{
|
12
|
-
context: '/simple',
|
13
|
-
changeOrigin: true,
|
14
|
-
logLevel: 'warn',
|
15
|
-
target: 'http://localhost',
|
16
|
-
},
|
17
|
-
]);
|
18
|
-
});
|
19
|
-
|
20
|
-
it('should format correctly use simply options', async () => {
|
21
|
-
const proxy = {
|
22
|
-
'/simple-obj': {
|
23
|
-
target: `http://localhost`,
|
24
|
-
},
|
25
|
-
};
|
26
|
-
const options = formatProxyOptions(proxy);
|
27
|
-
expect(options).toEqual([
|
28
|
-
{
|
29
|
-
context: '/simple-obj',
|
30
|
-
changeOrigin: true,
|
31
|
-
logLevel: 'warn',
|
32
|
-
target: 'http://localhost',
|
33
|
-
},
|
34
|
-
]);
|
35
|
-
});
|
36
|
-
|
37
|
-
it('should format correctly use simply options', async () => {
|
38
|
-
const proxy = {
|
39
|
-
context: '/context',
|
40
|
-
target: `http://localhost`,
|
41
|
-
};
|
42
|
-
const options = formatProxyOptions(proxy);
|
43
|
-
expect(options).toEqual([
|
44
|
-
{ context: '/context', target: 'http://localhost' },
|
45
|
-
]);
|
46
|
-
});
|
47
|
-
|
48
|
-
it('should format correctly use simply options', async () => {
|
49
|
-
const proxy = [
|
50
|
-
{
|
51
|
-
context: '/array',
|
52
|
-
target: `http://localhost`,
|
53
|
-
},
|
54
|
-
];
|
55
|
-
const options = formatProxyOptions(proxy);
|
56
|
-
expect(options).toEqual([
|
57
|
-
{ context: '/array', target: 'http://localhost' },
|
58
|
-
]);
|
59
|
-
});
|
60
|
-
});
|
@@ -1,19 +0,0 @@
|
|
1
|
-
import { generateMetaTags } from '../src/generateMetaTags';
|
2
|
-
|
3
|
-
describe('generateMetaTags', () => {
|
4
|
-
it('should return empty string when params is empty', () => {
|
5
|
-
expect(generateMetaTags()).toEqual('');
|
6
|
-
});
|
7
|
-
|
8
|
-
it('should generate meta tag correctly', () => {
|
9
|
-
const options = {
|
10
|
-
foo: {
|
11
|
-
name: 'viewport',
|
12
|
-
content: 'width=500, initial-scale=1',
|
13
|
-
},
|
14
|
-
};
|
15
|
-
expect(generateMetaTags(options).trim()).toEqual(
|
16
|
-
'<meta name="viewport" content="width=500, initial-scale=1">',
|
17
|
-
);
|
18
|
-
});
|
19
|
-
});
|
@@ -1,32 +0,0 @@
|
|
1
|
-
import path from 'path';
|
2
|
-
import { getBrowserslist, defaults } from '../src/getBrowserslist';
|
3
|
-
|
4
|
-
describe('get browserslist', () => {
|
5
|
-
const fixture = path.resolve(__dirname, './fixtures/browserlist');
|
6
|
-
|
7
|
-
test(`should load browserslist from package.json`, () => {
|
8
|
-
expect(getBrowserslist(path.join(fixture, 'pkg'))).toEqual([
|
9
|
-
'not IE 11',
|
10
|
-
'maintained node versions',
|
11
|
-
]);
|
12
|
-
});
|
13
|
-
|
14
|
-
test(`should load browerslist from .browserslistrc`, () => {
|
15
|
-
expect(getBrowserslist(path.join(fixture, 'dotfile'))).toEqual([
|
16
|
-
'defaults',
|
17
|
-
'not IE 11',
|
18
|
-
'maintained node versions',
|
19
|
-
]);
|
20
|
-
});
|
21
|
-
|
22
|
-
test(`should load browserslist base on environment`, () => {
|
23
|
-
process.env.NODE_ENV = 'development';
|
24
|
-
expect(getBrowserslist(path.join(fixture, 'develop'))).toEqual([
|
25
|
-
'last 1 chrome version',
|
26
|
-
]);
|
27
|
-
});
|
28
|
-
|
29
|
-
test(`should return default browserslist config`, () => {
|
30
|
-
expect(getBrowserslist(path.join(fixture))).toEqual(defaults);
|
31
|
-
});
|
32
|
-
});
|
@@ -1,37 +0,0 @@
|
|
1
|
-
import { getCacheIdentifier } from '../src/getCacheIdentifier';
|
2
|
-
|
3
|
-
describe('get cache identifier', () => {
|
4
|
-
test('should use package name and version', () => {
|
5
|
-
expect(
|
6
|
-
getCacheIdentifier([
|
7
|
-
{
|
8
|
-
name: 'package-a',
|
9
|
-
version: '0.1.0',
|
10
|
-
},
|
11
|
-
{
|
12
|
-
name: 'package-b',
|
13
|
-
version: '1.0.1',
|
14
|
-
},
|
15
|
-
]),
|
16
|
-
).toEqual(`test:package-a@0.1.0:package-b@1.0.1`);
|
17
|
-
});
|
18
|
-
|
19
|
-
test(`should return identifier with node environment`, () => {
|
20
|
-
const packages = [
|
21
|
-
{
|
22
|
-
name: 'a',
|
23
|
-
version: '0.1.0',
|
24
|
-
},
|
25
|
-
];
|
26
|
-
|
27
|
-
process.env.NODE_ENV = 'development';
|
28
|
-
expect(getCacheIdentifier(packages)).toEqual('development:a@0.1.0');
|
29
|
-
|
30
|
-
process.env.NODE_ENV = 'production';
|
31
|
-
expect(getCacheIdentifier(packages)).toEqual('production:a@0.1.0');
|
32
|
-
|
33
|
-
process.env.NODE_ENV = '';
|
34
|
-
|
35
|
-
expect(getCacheIdentifier(packages)).toEqual(`:a@0.1.0`);
|
36
|
-
});
|
37
|
-
});
|
@@ -1,53 +0,0 @@
|
|
1
|
-
import { getEntryOptions } from '../src/getEntryOptions';
|
2
|
-
|
3
|
-
describe('get entry options', () => {
|
4
|
-
test('should return default options', () => {
|
5
|
-
expect(getEntryOptions('page-a', 'default value')).toEqual('default value');
|
6
|
-
|
7
|
-
expect(
|
8
|
-
getEntryOptions('page-a', 'default value', { 'page-b': 'a' }),
|
9
|
-
).toEqual('default value');
|
10
|
-
});
|
11
|
-
|
12
|
-
test(`should return options from optionsByEntries`, () => {
|
13
|
-
expect(
|
14
|
-
getEntryOptions('page-a', 'default value', { 'page-a': 'a' }),
|
15
|
-
).toEqual('a');
|
16
|
-
});
|
17
|
-
|
18
|
-
test(`should compatible with main entry using packageName as key`, () => {
|
19
|
-
expect(
|
20
|
-
getEntryOptions(
|
21
|
-
'main',
|
22
|
-
'default value',
|
23
|
-
{ 'package-name': 'a' },
|
24
|
-
'package-name',
|
25
|
-
),
|
26
|
-
).toEqual('a');
|
27
|
-
});
|
28
|
-
|
29
|
-
expect(
|
30
|
-
getEntryOptions(
|
31
|
-
'page-a',
|
32
|
-
{ name: 'a' },
|
33
|
-
{
|
34
|
-
'page-a': {
|
35
|
-
name: 'page-a',
|
36
|
-
about: 'b',
|
37
|
-
},
|
38
|
-
},
|
39
|
-
),
|
40
|
-
).toEqual({
|
41
|
-
name: 'page-a',
|
42
|
-
about: 'b',
|
43
|
-
});
|
44
|
-
|
45
|
-
expect(
|
46
|
-
getEntryOptions<
|
47
|
-
| {
|
48
|
-
[name: string]: string;
|
49
|
-
}
|
50
|
-
| boolean
|
51
|
-
>('page-a', { name: 'a' }, { 'page-a': false }),
|
52
|
-
).toEqual(false);
|
53
|
-
});
|
package/tests/index.test.ts
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
import { canUseNpm, canUsePnpm, canUseYarn } from '../src';
|
2
|
-
|
3
|
-
jest.setTimeout(40000);
|
4
|
-
|
5
|
-
describe('test generator utils', () => {
|
6
|
-
test('test canUseNpm', async () => {
|
7
|
-
const npmAbility = await canUseNpm();
|
8
|
-
expect(typeof npmAbility === 'boolean').toBe(true);
|
9
|
-
});
|
10
|
-
test('test canUsePnpm', async () => {
|
11
|
-
const pnpmAbility = await canUsePnpm();
|
12
|
-
expect(typeof pnpmAbility === 'boolean').toBe(true);
|
13
|
-
});
|
14
|
-
test('test canUseYarn', async () => {
|
15
|
-
const yarnAbility = await canUseYarn();
|
16
|
-
expect(typeof yarnAbility === 'boolean').toBe(true);
|
17
|
-
});
|
18
|
-
});
|
package/tests/is.test.ts
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
import { isEmpty, isFastRefresh } from '../src/is';
|
2
|
-
|
3
|
-
describe('validate', () => {
|
4
|
-
it('should validate empty object correctly', () => {
|
5
|
-
expect(isEmpty({})).toBeTruthy();
|
6
|
-
expect(isEmpty({ foo: 'bar' })).toBeFalsy();
|
7
|
-
});
|
8
|
-
|
9
|
-
it('should validate fast refresh correctly', () => {
|
10
|
-
const { NODE_ENV, FAST_REFRESH } = process.env;
|
11
|
-
|
12
|
-
process.env.NODE_ENV = 'development';
|
13
|
-
process.env.FAST_REFRESH = 'true';
|
14
|
-
expect(isFastRefresh()).toBeTruthy();
|
15
|
-
|
16
|
-
process.env.NODE_ENV = 'production';
|
17
|
-
process.env.FAST_REFRESH = 'true';
|
18
|
-
expect(isFastRefresh()).toBeFalsy();
|
19
|
-
|
20
|
-
process.env.NODE_ENV = 'development';
|
21
|
-
process.env.FAST_REFRESH = 'false';
|
22
|
-
expect(isFastRefresh()).toBeFalsy();
|
23
|
-
|
24
|
-
process.env.NODE_ENV = NODE_ENV;
|
25
|
-
process.env.FAST_REFRESH = FAST_REFRESH;
|
26
|
-
});
|
27
|
-
});
|
package/tests/isPlatform.test.ts
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
import { isNodeJS, isBrowser } from '../src/is/platform';
|
2
|
-
|
3
|
-
describe('validate platform', () => {
|
4
|
-
it('should validate Node.js correctly', () => {
|
5
|
-
expect(isNodeJS()).toBeTruthy();
|
6
|
-
});
|
7
|
-
|
8
|
-
it('should validate browser correctly', () => {
|
9
|
-
const windowSpy = jest.spyOn(window, 'window', 'get');
|
10
|
-
|
11
|
-
windowSpy.mockImplementation((): any => undefined);
|
12
|
-
expect(isBrowser()).toBeFalsy();
|
13
|
-
|
14
|
-
windowSpy.mockImplementation((): any => global);
|
15
|
-
expect(isBrowser()).toBeTruthy();
|
16
|
-
|
17
|
-
windowSpy.mockRestore();
|
18
|
-
});
|
19
|
-
});
|
package/tests/isType.test.ts
DELETED
@@ -1,85 +0,0 @@
|
|
1
|
-
import {
|
2
|
-
isArray,
|
3
|
-
isObject,
|
4
|
-
isString,
|
5
|
-
isRegExp,
|
6
|
-
isPromise,
|
7
|
-
isUndefined,
|
8
|
-
isPlainObject,
|
9
|
-
} from '../src/is/type';
|
10
|
-
|
11
|
-
describe('validate type', () => {
|
12
|
-
it('should validate string correctly', () => {
|
13
|
-
expect(isString('')).toBeTruthy();
|
14
|
-
expect(isString('foo')).toBeTruthy();
|
15
|
-
expect(isString(null)).toBeFalsy();
|
16
|
-
expect(isString(123)).toBeFalsy();
|
17
|
-
});
|
18
|
-
|
19
|
-
it('should validate undefined correctly', () => {
|
20
|
-
expect(isUndefined(undefined)).toBeTruthy();
|
21
|
-
expect(isUndefined(null)).toBeFalsy();
|
22
|
-
expect(isUndefined('')).toBeFalsy();
|
23
|
-
expect(isUndefined(123)).toBeFalsy();
|
24
|
-
});
|
25
|
-
|
26
|
-
it('should validate array correctly', () => {
|
27
|
-
expect(isArray(undefined)).toBeFalsy();
|
28
|
-
expect(isArray(null)).toBeFalsy();
|
29
|
-
expect(isArray('')).toBeFalsy();
|
30
|
-
expect(isArray(123)).toBeFalsy();
|
31
|
-
expect(isArray({})).toBeFalsy();
|
32
|
-
expect(isArray([])).toBeTruthy();
|
33
|
-
});
|
34
|
-
|
35
|
-
it('should validate object correctly', () => {
|
36
|
-
expect(isObject(1)).toBeFalsy();
|
37
|
-
expect(isObject('1')).toBeFalsy();
|
38
|
-
expect(isObject(undefined)).toBeFalsy();
|
39
|
-
expect(isObject(null)).toBeFalsy();
|
40
|
-
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
41
|
-
expect(isObject(() => {})).toBeFalsy();
|
42
|
-
expect(isObject({})).toBeTruthy();
|
43
|
-
expect(isObject([])).toBeTruthy();
|
44
|
-
expect(isObject(/foo/)).toBeTruthy();
|
45
|
-
});
|
46
|
-
|
47
|
-
it('should validate plain object correctly', () => {
|
48
|
-
expect(isPlainObject(1)).toBeFalsy();
|
49
|
-
expect(isPlainObject('1')).toBeFalsy();
|
50
|
-
expect(isPlainObject(undefined)).toBeFalsy();
|
51
|
-
expect(isPlainObject(null)).toBeFalsy();
|
52
|
-
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
53
|
-
expect(isPlainObject(() => {})).toBeFalsy();
|
54
|
-
expect(isPlainObject({})).toBeTruthy();
|
55
|
-
expect(isPlainObject([])).toBeFalsy();
|
56
|
-
expect(isPlainObject(/foo/)).toBeFalsy();
|
57
|
-
});
|
58
|
-
|
59
|
-
it('should validate RegExp correctly', () => {
|
60
|
-
expect(isRegExp(1)).toBeFalsy();
|
61
|
-
expect(isRegExp('1')).toBeFalsy();
|
62
|
-
expect(isRegExp(undefined)).toBeFalsy();
|
63
|
-
expect(isRegExp(null)).toBeFalsy();
|
64
|
-
expect(isRegExp({})).toBeFalsy();
|
65
|
-
expect(isRegExp([])).toBeFalsy();
|
66
|
-
expect(isRegExp(/foo/)).toBeTruthy();
|
67
|
-
});
|
68
|
-
|
69
|
-
it('should validate Promise correctly', () => {
|
70
|
-
expect(isPromise(1)).toBeFalsy();
|
71
|
-
expect(isPromise('1')).toBeFalsy();
|
72
|
-
expect(isPromise(undefined)).toBeFalsy();
|
73
|
-
expect(isPromise(null)).toBeFalsy();
|
74
|
-
expect(isPromise({})).toBeFalsy();
|
75
|
-
expect(isPromise([])).toBeFalsy();
|
76
|
-
expect(isPromise(/foo/)).toBeFalsy();
|
77
|
-
expect(
|
78
|
-
isPromise(
|
79
|
-
new Promise<void>(resolve => {
|
80
|
-
resolve();
|
81
|
-
}),
|
82
|
-
),
|
83
|
-
).toBeTruthy();
|
84
|
-
});
|
85
|
-
});
|
package/tests/logger.test.ts
DELETED
@@ -1,53 +0,0 @@
|
|
1
|
-
import { logger } from '../src/logger';
|
2
|
-
|
3
|
-
describe('logger', () => {
|
4
|
-
test('should log', () => {
|
5
|
-
// eslint-disable-next-line no-console
|
6
|
-
console.log = jest.fn();
|
7
|
-
|
8
|
-
logger.log('this is a log message');
|
9
|
-
|
10
|
-
// eslint-disable-next-line no-console
|
11
|
-
expect((console.log as jest.Mock).mock.calls[0][0]).toBe(
|
12
|
-
'this is a log message',
|
13
|
-
);
|
14
|
-
|
15
|
-
logger.info('this is an info message');
|
16
|
-
|
17
|
-
logger.warn('this is a warn message');
|
18
|
-
|
19
|
-
logger.error(new Error('this is an error message'));
|
20
|
-
|
21
|
-
// eslint-disable-next-line no-console
|
22
|
-
expect(console.log as jest.Mock).toHaveBeenCalledTimes(4);
|
23
|
-
});
|
24
|
-
|
25
|
-
test('should create new logger', () => {
|
26
|
-
// eslint-disable-next-line no-console
|
27
|
-
console.log = jest.fn();
|
28
|
-
|
29
|
-
const customLogger = new logger.Logger({
|
30
|
-
config: {
|
31
|
-
displayLabel: true,
|
32
|
-
underlineLabel: false,
|
33
|
-
uppercaseLabel: false,
|
34
|
-
},
|
35
|
-
types: {
|
36
|
-
custom: {
|
37
|
-
color: 'blue',
|
38
|
-
label: 'custom',
|
39
|
-
level: 'info',
|
40
|
-
},
|
41
|
-
},
|
42
|
-
});
|
43
|
-
|
44
|
-
customLogger.custom('custom log');
|
45
|
-
|
46
|
-
const reg = new RegExp(`custom.*custom log$`);
|
47
|
-
// eslint-disable-next-line no-console
|
48
|
-
expect((console.log as jest.Mock).mock.calls[0][0]).toMatch(reg);
|
49
|
-
|
50
|
-
// eslint-disable-next-line no-console
|
51
|
-
expect(console.log as jest.Mock).toHaveBeenCalledTimes(1);
|
52
|
-
});
|
53
|
-
});
|