@shuvi/utils 0.0.1-rc.9 → 1.0.0-rc.2
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/lib/deepmerge.js +1 -0
- package/lib/defer.d.ts +1 -1
- package/lib/defer.js +3 -2
- package/lib/escapeRegExp.js +1 -0
- package/lib/file.d.ts +5 -0
- package/lib/file.js +83 -0
- package/lib/fileWatcher.d.ts +4 -2
- package/lib/fileWatcher.js +5 -4
- package/lib/htmlescape.js +1 -0
- package/lib/index.d.ts +14 -0
- package/lib/index.js +44 -0
- package/lib/isEqual.d.ts +9 -0
- package/lib/isEqual.js +64 -0
- package/lib/logger.js +1 -1
- package/lib/nullish.d.ts +2 -0
- package/lib/nullish.js +3 -0
- package/lib/once.js +1 -0
- package/lib/recursiveCopy.d.ts +1 -1
- package/lib/recursiveCopy.js +35 -14
- package/lib/recursiveDelete.d.ts +1 -1
- package/lib/recursiveDelete.js +33 -12
- package/lib/recursiveReaddir.js +35 -14
- package/lib/resolve.d.ts +3 -2
- package/lib/resolve.js +25 -4
- package/lib/schemaUtils.js +2 -1
- package/lib/string.js +1 -0
- package/package.json +10 -9
- package/lib/detectTypescript.d.ts +0 -7
- package/lib/detectTypescript.js +0 -26
package/lib/deepmerge.js
CHANGED
package/lib/defer.d.ts
CHANGED
package/lib/defer.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
3
|
+
exports.createDefer = void 0;
|
|
4
|
+
function createDefer() {
|
|
4
5
|
let defer = {
|
|
5
6
|
resolve: null,
|
|
6
7
|
reject: null
|
|
@@ -11,4 +12,4 @@ function Defer() {
|
|
|
11
12
|
});
|
|
12
13
|
return defer;
|
|
13
14
|
}
|
|
14
|
-
exports.
|
|
15
|
+
exports.createDefer = createDefer;
|
package/lib/escapeRegExp.js
CHANGED
package/lib/file.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare function withExts(file: string, extensions: string[]): string[];
|
|
2
|
+
export declare const findFirstExistedFile: (files: string[]) => string | null;
|
|
3
|
+
export declare const resolveFile: (fileName: string) => string;
|
|
4
|
+
export declare const isDirectory: (dirname: string) => Promise<boolean>;
|
|
5
|
+
export declare const normalizePath: (filepath: string, baseDir: string) => string;
|
package/lib/file.js
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
+
exports.normalizePath = exports.isDirectory = exports.resolveFile = exports.findFirstExistedFile = exports.withExts = void 0;
|
|
36
|
+
const fs = __importStar(require("fs"));
|
|
37
|
+
const path = __importStar(require("path"));
|
|
38
|
+
function withExts(file, extensions) {
|
|
39
|
+
return extensions.map(ext => `${file}${ext}`);
|
|
40
|
+
}
|
|
41
|
+
exports.withExts = withExts;
|
|
42
|
+
const findFirstExistedFile = (files) => {
|
|
43
|
+
for (let index = 0; index < files.length; index++) {
|
|
44
|
+
const file = files[index];
|
|
45
|
+
if (fs.existsSync(file)) {
|
|
46
|
+
return file;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return null;
|
|
50
|
+
};
|
|
51
|
+
exports.findFirstExistedFile = findFirstExistedFile;
|
|
52
|
+
const resolveFile = (fileName) => {
|
|
53
|
+
if (path.extname(fileName))
|
|
54
|
+
return fileName;
|
|
55
|
+
const moduleFileExtensions = ['.ts', '.tsx', '.js', '.jsx'];
|
|
56
|
+
const files = withExts(fileName, moduleFileExtensions);
|
|
57
|
+
const file = (0, exports.findFirstExistedFile)(files);
|
|
58
|
+
if (file) {
|
|
59
|
+
return file;
|
|
60
|
+
}
|
|
61
|
+
if (fs.existsSync(fileName) && fs.statSync(fileName).isDirectory()) {
|
|
62
|
+
return (0, exports.resolveFile)(path.join(fileName, 'index'));
|
|
63
|
+
}
|
|
64
|
+
throw new Error(`cannot resolve actual file of module: ${fileName}`);
|
|
65
|
+
};
|
|
66
|
+
exports.resolveFile = resolveFile;
|
|
67
|
+
const isDirectory = (dirname) => __awaiter(void 0, void 0, void 0, function* () {
|
|
68
|
+
try {
|
|
69
|
+
const stats = yield fs.promises.lstat(dirname);
|
|
70
|
+
return stats.isDirectory();
|
|
71
|
+
}
|
|
72
|
+
catch (e) {
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
exports.isDirectory = isDirectory;
|
|
77
|
+
const normalizePath = (filepath, baseDir) => {
|
|
78
|
+
const absPath = path.isAbsolute(filepath)
|
|
79
|
+
? filepath
|
|
80
|
+
: path.join(baseDir, filepath);
|
|
81
|
+
return absPath.replace(/\\/g, '/');
|
|
82
|
+
};
|
|
83
|
+
exports.normalizePath = normalizePath;
|
package/lib/fileWatcher.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TimeInfo } from
|
|
1
|
+
import { TimeInfo } from 'watchpack';
|
|
2
2
|
export { TimeInfo };
|
|
3
3
|
export interface WatchEvent {
|
|
4
4
|
changes: string[];
|
|
@@ -8,6 +8,8 @@ export interface WatchEvent {
|
|
|
8
8
|
export interface WatchOptions {
|
|
9
9
|
files?: string[];
|
|
10
10
|
directories?: string[];
|
|
11
|
+
missing?: string[];
|
|
12
|
+
startTime?: number;
|
|
11
13
|
}
|
|
12
14
|
export declare type WatchCallback = (event: WatchEvent) => void;
|
|
13
|
-
export declare function watch({ files, directories }: WatchOptions, cb: WatchCallback): () => void;
|
|
15
|
+
export declare function watch({ files, directories, missing, startTime }: WatchOptions, cb: WatchCallback): () => void;
|
package/lib/fileWatcher.js
CHANGED
|
@@ -3,21 +3,22 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.watch = void 0;
|
|
6
7
|
const watchpack_1 = __importDefault(require("watchpack"));
|
|
7
8
|
const options = {
|
|
8
9
|
// options:
|
|
9
10
|
aggregateTimeout: 300,
|
|
10
11
|
// fire "aggregated" event when after a change for 1000ms no additional change occurred
|
|
11
12
|
// aggregated defaults to undefined, which doesn't fire an "aggregated" event
|
|
12
|
-
ignored: [
|
|
13
|
+
ignored: ['**/.git']
|
|
13
14
|
// ignored: "string" - a glob pattern for files or folders that should not be watched
|
|
14
15
|
// ignored: ["string", "string"] - multiple glob patterns that should be ignored
|
|
15
16
|
// ignored: /regexp/ - a regular expression for files or folders that should not be watched
|
|
16
17
|
// All subdirectories are ignored too
|
|
17
18
|
};
|
|
18
|
-
function watch({ files, directories }, cb) {
|
|
19
|
+
function watch({ files, directories, missing, startTime = Date.now() }, cb) {
|
|
19
20
|
const wp = new watchpack_1.default(options);
|
|
20
|
-
wp.on(
|
|
21
|
+
wp.on('aggregated', (changes, removals) => {
|
|
21
22
|
const knownFiles = wp.getTimeInfoEntries();
|
|
22
23
|
cb({
|
|
23
24
|
changes: Array.from(changes),
|
|
@@ -33,7 +34,7 @@ function watch({ files, directories }, cb) {
|
|
|
33
34
|
}
|
|
34
35
|
});
|
|
35
36
|
});
|
|
36
|
-
wp.watch({ files, directories });
|
|
37
|
+
wp.watch({ files, directories, missing, startTime });
|
|
37
38
|
return () => {
|
|
38
39
|
wp.close();
|
|
39
40
|
};
|
package/lib/htmlescape.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
// This utility is based on https://github.com/zertosh/htmlescape
|
|
3
3
|
// License: https://github.com/zertosh/htmlescape/blob/0527ca7156a524d256101bb310a9f970f63078ad/LICENSE
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.htmlEscapeContent = exports.htmlEscapeJsonString = void 0;
|
|
5
6
|
const JSON_ESCAPE_LOOKUP = {
|
|
6
7
|
'&': '\\u0026',
|
|
7
8
|
'>': '\\u003e',
|
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export { default as NOOP } from './noopFn';
|
|
2
|
+
export * from './defer';
|
|
3
|
+
export declare const EMPTY_OBJ: {};
|
|
4
|
+
export declare const extend: {
|
|
5
|
+
<T extends {}, U>(target: T, source: U): T & U;
|
|
6
|
+
<T_1 extends {}, U_1, V>(target: T_1, source1: U_1, source2: V): T_1 & U_1 & V;
|
|
7
|
+
<T_2 extends {}, U_2, V_1, W>(target: T_2, source1: U_2, source2: V_1, source3: W): T_2 & U_2 & V_1 & W;
|
|
8
|
+
(target: object, ...sources: any[]): any;
|
|
9
|
+
};
|
|
10
|
+
export declare const isArray: (arg: any) => arg is any[];
|
|
11
|
+
export declare const isObject: (val: unknown) => val is Record<any, any>;
|
|
12
|
+
export declare const isFunction: (val: unknown) => val is Function;
|
|
13
|
+
export declare const hasOwn: (val: object, key: string | symbol) => key is never;
|
|
14
|
+
export declare function getType(obj: any): string;
|
package/lib/index.js
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
17
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
|
+
};
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
exports.getType = exports.hasOwn = exports.isFunction = exports.isObject = exports.isArray = exports.extend = exports.EMPTY_OBJ = exports.NOOP = void 0;
|
|
21
|
+
var noopFn_1 = require("./noopFn");
|
|
22
|
+
Object.defineProperty(exports, "NOOP", { enumerable: true, get: function () { return __importDefault(noopFn_1).default; } });
|
|
23
|
+
__exportStar(require("./defer"), exports);
|
|
24
|
+
const hasOwnProperty = Object.prototype.hasOwnProperty;
|
|
25
|
+
const toString = Object.prototype.toString;
|
|
26
|
+
exports.EMPTY_OBJ = {};
|
|
27
|
+
exports.extend = Object.assign;
|
|
28
|
+
exports.isArray = Array.isArray;
|
|
29
|
+
const isObject = (val) => val !== null && typeof val === 'object';
|
|
30
|
+
exports.isObject = isObject;
|
|
31
|
+
const isFunction = (val) => typeof val === 'function';
|
|
32
|
+
exports.isFunction = isFunction;
|
|
33
|
+
const hasOwn = (val, key) => hasOwnProperty.call(val, key);
|
|
34
|
+
exports.hasOwn = hasOwn;
|
|
35
|
+
const objectRegExp = /^\[object (\S+)\]$/;
|
|
36
|
+
function getType(obj) {
|
|
37
|
+
var type = typeof obj;
|
|
38
|
+
if (type !== 'object') {
|
|
39
|
+
return type;
|
|
40
|
+
}
|
|
41
|
+
// inspect [[Class]] for objects
|
|
42
|
+
return toString.call(obj).replace(objectRegExp, '$1');
|
|
43
|
+
}
|
|
44
|
+
exports.getType = getType;
|
package/lib/isEqual.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Check if two objects or arrays are equal
|
|
3
|
+
* (c) 2021 Chris Ferdinandi, MIT License, https://gomakethings.com
|
|
4
|
+
* @param {*} obj1 The first item
|
|
5
|
+
* @param {*} obj2 The second item
|
|
6
|
+
* @return {Boolean} Returns true if they're equal in value
|
|
7
|
+
*/
|
|
8
|
+
declare function isEqual(obj1: any, obj2: any): boolean;
|
|
9
|
+
export default isEqual;
|
package/lib/isEqual.js
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/*!
|
|
4
|
+
* Check if two objects or arrays are equal
|
|
5
|
+
* (c) 2021 Chris Ferdinandi, MIT License, https://gomakethings.com
|
|
6
|
+
* @param {*} obj1 The first item
|
|
7
|
+
* @param {*} obj2 The second item
|
|
8
|
+
* @return {Boolean} Returns true if they're equal in value
|
|
9
|
+
*/
|
|
10
|
+
function isEqual(obj1, obj2) {
|
|
11
|
+
/**
|
|
12
|
+
* More accurately check the type of a JavaScript object
|
|
13
|
+
* @param {Object} obj The object
|
|
14
|
+
* @return {String} The object type
|
|
15
|
+
*/
|
|
16
|
+
function getType(obj) {
|
|
17
|
+
return Object.prototype.toString.call(obj).slice(8, -1).toLowerCase();
|
|
18
|
+
}
|
|
19
|
+
function areArraysEqual() {
|
|
20
|
+
// Check length
|
|
21
|
+
if (obj1.length !== obj2.length)
|
|
22
|
+
return false;
|
|
23
|
+
// Check each item in the array
|
|
24
|
+
for (let i = 0; i < obj1.length; i++) {
|
|
25
|
+
if (!isEqual(obj1[i], obj2[i]))
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
// If no errors, return true
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
function areObjectsEqual() {
|
|
32
|
+
if (Object.keys(obj1).length !== Object.keys(obj2).length)
|
|
33
|
+
return false;
|
|
34
|
+
// Check each item in the object
|
|
35
|
+
for (let key in obj1) {
|
|
36
|
+
if (Object.prototype.hasOwnProperty.call(obj1, key)) {
|
|
37
|
+
if (!isEqual(obj1[key], obj2[key]))
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
// If no errors, return true
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
function areFunctionsEqual() {
|
|
45
|
+
return obj1.toString() === obj2.toString();
|
|
46
|
+
}
|
|
47
|
+
function arePrimativesEqual() {
|
|
48
|
+
return obj1 === obj2;
|
|
49
|
+
}
|
|
50
|
+
// Get the object type
|
|
51
|
+
let type = getType(obj1);
|
|
52
|
+
// If the two items are not the same type, return false
|
|
53
|
+
if (type !== getType(obj2))
|
|
54
|
+
return false;
|
|
55
|
+
// Compare based on type
|
|
56
|
+
if (type === 'array')
|
|
57
|
+
return areArraysEqual();
|
|
58
|
+
if (type === 'object')
|
|
59
|
+
return areObjectsEqual();
|
|
60
|
+
if (type === 'function')
|
|
61
|
+
return areFunctionsEqual();
|
|
62
|
+
return arePrimativesEqual();
|
|
63
|
+
}
|
|
64
|
+
exports.default = isEqual;
|
package/lib/logger.js
CHANGED
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
const debug_1 = __importDefault(require("debug"));
|
|
7
7
|
class LoggerImpl {
|
|
8
8
|
constructor(namespace) {
|
|
9
|
-
this._debug = debug_1.default(namespace);
|
|
9
|
+
this._debug = (0, debug_1.default)(namespace);
|
|
10
10
|
}
|
|
11
11
|
debug(formatter, ...args) {
|
|
12
12
|
this._debug(formatter, ...args);
|
package/lib/nullish.d.ts
ADDED
package/lib/nullish.js
ADDED
package/lib/once.js
CHANGED
package/lib/recursiveCopy.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare function recursiveCopy(source: string, dest: string, { concurrency, filter
|
|
1
|
+
export declare function recursiveCopy(source: string, dest: string, { concurrency, filter }?: {
|
|
2
2
|
concurrency?: number;
|
|
3
3
|
filter?(path: string): boolean;
|
|
4
4
|
}): Promise<void>;
|
package/lib/recursiveCopy.js
CHANGED
|
@@ -1,4 +1,27 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
2
25
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
26
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
27
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -8,24 +31,22 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
31
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
32
|
});
|
|
10
33
|
};
|
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
34
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
|
|
16
|
-
const
|
|
35
|
+
exports.recursiveCopy = void 0;
|
|
36
|
+
const path = __importStar(require("path"));
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
17
38
|
const util_1 = require("util");
|
|
18
39
|
const async_sema_1 = require("async-sema");
|
|
19
|
-
const fsMkdir = util_1.promisify(
|
|
20
|
-
const fsStat = util_1.promisify(
|
|
21
|
-
const fsReaddir = util_1.promisify(
|
|
22
|
-
const fsCopyFile = util_1.promisify(
|
|
23
|
-
const COPYFILE_EXCL =
|
|
24
|
-
function recursiveCopy(source, dest, { concurrency = 255, filter = () => true
|
|
40
|
+
const fsMkdir = (0, util_1.promisify)(fs.mkdir);
|
|
41
|
+
const fsStat = (0, util_1.promisify)(fs.stat);
|
|
42
|
+
const fsReaddir = (0, util_1.promisify)(fs.readdir);
|
|
43
|
+
const fsCopyFile = (0, util_1.promisify)(fs.copyFile);
|
|
44
|
+
const COPYFILE_EXCL = fs.constants.COPYFILE_EXCL;
|
|
45
|
+
function recursiveCopy(source, dest, { concurrency = 255, filter = () => true } = {}) {
|
|
25
46
|
return __awaiter(this, void 0, void 0, function* () {
|
|
26
47
|
const cwdPath = process.cwd();
|
|
27
|
-
const from =
|
|
28
|
-
const to =
|
|
48
|
+
const from = path.resolve(cwdPath, source);
|
|
49
|
+
const to = path.resolve(cwdPath, dest);
|
|
29
50
|
const sema = new async_sema_1.Sema(concurrency);
|
|
30
51
|
function _copy(item) {
|
|
31
52
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -43,7 +64,7 @@ function recursiveCopy(source, dest, { concurrency = 255, filter = () => true, }
|
|
|
43
64
|
}
|
|
44
65
|
}
|
|
45
66
|
const files = yield fsReaddir(item);
|
|
46
|
-
yield Promise.all(files.map(file => _copy(
|
|
67
|
+
yield Promise.all(files.map(file => _copy(path.join(item, file))));
|
|
47
68
|
}
|
|
48
69
|
else if (stats.isFile() &&
|
|
49
70
|
// before we send the path to filter
|
package/lib/recursiveDelete.d.ts
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* @param {RegExp} options.ignore Ignore certain files, only the relative file path is considered, not the full path
|
|
7
7
|
* @param {string} options.rootDir Used to replace the initial path, only the relative path is left, it's faster than path.relative.
|
|
8
8
|
*/
|
|
9
|
-
export declare function recursiveDelete(dir: string, { filter, ignore, rootDir
|
|
9
|
+
export declare function recursiveDelete(dir: string, { filter, ignore, rootDir }?: {
|
|
10
10
|
filter?: RegExp;
|
|
11
11
|
ignore?: RegExp;
|
|
12
12
|
rootDir?: string;
|
package/lib/recursiveDelete.js
CHANGED
|
@@ -1,4 +1,27 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
2
25
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
26
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
27
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -8,18 +31,16 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
31
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
32
|
});
|
|
10
33
|
};
|
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
34
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
|
|
35
|
+
exports.recursiveDelete = void 0;
|
|
36
|
+
const fs = __importStar(require("fs"));
|
|
16
37
|
const path_1 = require("path");
|
|
17
38
|
const util_1 = require("util");
|
|
18
|
-
const fsReaddir = util_1.promisify(
|
|
19
|
-
const fsStat = util_1.promisify(
|
|
20
|
-
const fsRmdir = util_1.promisify(
|
|
21
|
-
const fsUnlink = util_1.promisify(
|
|
22
|
-
const sleep = util_1.promisify(setTimeout);
|
|
39
|
+
const fsReaddir = (0, util_1.promisify)(fs.readdir);
|
|
40
|
+
const fsStat = (0, util_1.promisify)(fs.stat);
|
|
41
|
+
const fsRmdir = (0, util_1.promisify)(fs.rmdir);
|
|
42
|
+
const fsUnlink = (0, util_1.promisify)(fs.unlink);
|
|
43
|
+
const sleep = (0, util_1.promisify)(setTimeout);
|
|
23
44
|
const unlinkFile = (p, t = 1) => __awaiter(void 0, void 0, void 0, function* () {
|
|
24
45
|
try {
|
|
25
46
|
yield fsUnlink(p);
|
|
@@ -47,7 +68,7 @@ const unlinkFile = (p, t = 1) => __awaiter(void 0, void 0, void 0, function* ()
|
|
|
47
68
|
* @param {RegExp} options.ignore Ignore certain files, only the relative file path is considered, not the full path
|
|
48
69
|
* @param {string} options.rootDir Used to replace the initial path, only the relative path is left, it's faster than path.relative.
|
|
49
70
|
*/
|
|
50
|
-
function recursiveDelete(dir, { filter, ignore, rootDir = dir
|
|
71
|
+
function recursiveDelete(dir, { filter, ignore, rootDir = dir } = {}) {
|
|
51
72
|
return __awaiter(this, void 0, void 0, function* () {
|
|
52
73
|
let result;
|
|
53
74
|
try {
|
|
@@ -60,7 +81,7 @@ function recursiveDelete(dir, { filter, ignore, rootDir = dir, } = {}) {
|
|
|
60
81
|
throw e;
|
|
61
82
|
}
|
|
62
83
|
yield Promise.all(result.map((part) => __awaiter(this, void 0, void 0, function* () {
|
|
63
|
-
const absolutePath = path_1.join(dir, part);
|
|
84
|
+
const absolutePath = (0, path_1.join)(dir, part);
|
|
64
85
|
const pathStat = yield fsStat(absolutePath).catch((e) => {
|
|
65
86
|
if (e.code !== 'ENOENT')
|
|
66
87
|
throw e;
|
|
@@ -79,7 +100,7 @@ function recursiveDelete(dir, { filter, ignore, rootDir = dir, } = {}) {
|
|
|
79
100
|
yield recursiveDelete(absolutePath, {
|
|
80
101
|
filter,
|
|
81
102
|
ignore,
|
|
82
|
-
rootDir: pp
|
|
103
|
+
rootDir: pp
|
|
83
104
|
});
|
|
84
105
|
return fsRmdir(absolutePath);
|
|
85
106
|
}
|
package/lib/recursiveReaddir.js
CHANGED
|
@@ -1,4 +1,27 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
2
25
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
26
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
27
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -8,17 +31,15 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
31
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
32
|
});
|
|
10
33
|
};
|
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
34
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
|
|
16
|
-
const
|
|
35
|
+
exports.recursiveReadDirSync = exports.recursiveReadDir = void 0;
|
|
36
|
+
const fs = __importStar(require("fs"));
|
|
37
|
+
const path = __importStar(require("path"));
|
|
17
38
|
const util_1 = require("util");
|
|
18
|
-
const fsReaddir = util_1.promisify(
|
|
19
|
-
const fsStat = util_1.promisify(
|
|
39
|
+
const fsReaddir = (0, util_1.promisify)(fs.readdir);
|
|
40
|
+
const fsStat = (0, util_1.promisify)(fs.stat);
|
|
20
41
|
function runTest(test, v) {
|
|
21
|
-
if (typeof test ===
|
|
42
|
+
if (typeof test === 'function') {
|
|
22
43
|
return test(v);
|
|
23
44
|
}
|
|
24
45
|
return test.test(v);
|
|
@@ -37,8 +58,8 @@ function recursiveReadDir(dir, { filter, ignore, rootDir = dir, arr = [] } = {})
|
|
|
37
58
|
return __awaiter(this, void 0, void 0, function* () {
|
|
38
59
|
const result = yield fsReaddir(dir);
|
|
39
60
|
yield Promise.all(result.map((part) => __awaiter(this, void 0, void 0, function* () {
|
|
40
|
-
const absolutePath =
|
|
41
|
-
const pp = absolutePath.replace(rootDir,
|
|
61
|
+
const absolutePath = path.join(dir, part);
|
|
62
|
+
const pp = absolutePath.replace(rootDir, '');
|
|
42
63
|
if (ignore && ignore.test(pp)) {
|
|
43
64
|
return;
|
|
44
65
|
}
|
|
@@ -67,12 +88,12 @@ exports.recursiveReadDir = recursiveReadDir;
|
|
|
67
88
|
* @returns {string[]} Promise array holding all relative paths
|
|
68
89
|
*/
|
|
69
90
|
function recursiveReadDirSync(dir, { filter, ignore, rootDir = dir, arr = [] } = {}) {
|
|
70
|
-
const result =
|
|
91
|
+
const result = fs.readdirSync(dir);
|
|
71
92
|
result.forEach((part) => {
|
|
72
|
-
const absolutePath =
|
|
93
|
+
const absolutePath = path.join(dir, part);
|
|
73
94
|
if (ignore && ignore.test(part))
|
|
74
95
|
return;
|
|
75
|
-
const pathStat =
|
|
96
|
+
const pathStat = fs.statSync(absolutePath);
|
|
76
97
|
if (pathStat.isDirectory()) {
|
|
77
98
|
recursiveReadDirSync(absolutePath, { filter, ignore, arr, rootDir });
|
|
78
99
|
return;
|
|
@@ -80,7 +101,7 @@ function recursiveReadDirSync(dir, { filter, ignore, rootDir = dir, arr = [] } =
|
|
|
80
101
|
if (filter && !filter.test(part)) {
|
|
81
102
|
return;
|
|
82
103
|
}
|
|
83
|
-
arr.push(absolutePath.replace(rootDir,
|
|
104
|
+
arr.push(absolutePath.replace(rootDir, ''));
|
|
84
105
|
});
|
|
85
106
|
return arr.sort();
|
|
86
107
|
}
|
package/lib/resolve.d.ts
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import
|
|
2
|
-
export
|
|
1
|
+
import * as _resolve from 'resolve';
|
|
2
|
+
export declare type ResolveOptions = _resolve.SyncOpts;
|
|
3
|
+
export declare const resolve: (id: string, opts?: _resolve.SyncOpts | undefined) => string;
|
package/lib/resolve.js
CHANGED
|
@@ -1,7 +1,28 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
4
24
|
};
|
|
5
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
|
|
7
|
-
|
|
26
|
+
exports.resolve = void 0;
|
|
27
|
+
const _resolve = __importStar(require("resolve"));
|
|
28
|
+
exports.resolve = _resolve.sync;
|
package/lib/schemaUtils.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validate = void 0;
|
|
3
4
|
const schema_utils_1 = require("schema-utils");
|
|
4
|
-
exports
|
|
5
|
+
Object.defineProperty(exports, "validate", { enumerable: true, get: function () { return schema_utils_1.validate; } });
|
package/lib/string.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shuvi/utils",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "1.0.0-rc.2",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "git+https://github.com/shuvijs/shuvi.git",
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
},
|
|
9
9
|
"author": "liximomo",
|
|
10
10
|
"license": "MIT",
|
|
11
|
+
"main": "lib/index.js",
|
|
11
12
|
"files": [
|
|
12
13
|
"lib"
|
|
13
14
|
],
|
|
@@ -21,17 +22,17 @@
|
|
|
21
22
|
"node": ">= 12.0.0"
|
|
22
23
|
},
|
|
23
24
|
"dependencies": {
|
|
24
|
-
"async-sema": "3.
|
|
25
|
-
"chalk": "4.
|
|
26
|
-
"debug": "4.
|
|
27
|
-
"resolve": "1.
|
|
25
|
+
"async-sema": "3.1.0",
|
|
26
|
+
"chalk": "4.1.0",
|
|
27
|
+
"debug": "4.3.1",
|
|
28
|
+
"resolve": "1.22.1",
|
|
28
29
|
"schema-utils": "^3.0.0",
|
|
29
30
|
"tiny-invariant": "1.1.0",
|
|
30
|
-
"watchpack": "2.
|
|
31
|
+
"watchpack": "2.1.0"
|
|
31
32
|
},
|
|
32
33
|
"devDependencies": {
|
|
33
34
|
"@types/debug": "^4.1.5",
|
|
34
|
-
"@types/resolve": "^1.
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
"@types/resolve": "^1.20.2",
|
|
36
|
+
"fs-extra": "9.0.1"
|
|
37
|
+
}
|
|
37
38
|
}
|
package/lib/detectTypescript.js
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const resolve_1 = __importDefault(require("resolve"));
|
|
7
|
-
const path_1 = __importDefault(require("path"));
|
|
8
|
-
const fs_1 = __importDefault(require("fs"));
|
|
9
|
-
const cache = Object.create(null);
|
|
10
|
-
function getTypeScriptInfo(projectRoot) {
|
|
11
|
-
let info = cache[projectRoot];
|
|
12
|
-
if (!info) {
|
|
13
|
-
let typeScriptPath;
|
|
14
|
-
try {
|
|
15
|
-
typeScriptPath = resolve_1.default.sync('typescript', {
|
|
16
|
-
basedir: projectRoot,
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
|
-
catch (_) { }
|
|
20
|
-
const tsConfigPath = path_1.default.join(projectRoot, 'tsconfig.json');
|
|
21
|
-
const useTypeScript = Boolean(typeScriptPath && fs_1.default.existsSync(tsConfigPath));
|
|
22
|
-
info = Object.assign({ useTypeScript }, (useTypeScript === true && { typeScriptPath, tsConfigPath }));
|
|
23
|
-
}
|
|
24
|
-
return info;
|
|
25
|
-
}
|
|
26
|
-
exports.getTypeScriptInfo = getTypeScriptInfo;
|