UNPKG

2.63 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.resolveDirectory = exports.walkSync = exports.relativePath = exports.absolutePath = void 0;
4var fs = require('fs-extra');
5var path = require('path');
6var isbinaryfile = require('isbinaryfile');
7var pathModule = require('path');
8/**
9 * returns the absolute path of the given @arg path
10 *
11 * @param {String} path - relative path (Unix style which is the one used by Remix IDE)
12 * @param {String} sharedFolder - absolute shared path. platform dependent representation.
13 * @return {String} platform dependent absolute path (/home/user1/.../... for unix, c:\user\...\... for windows)
14 */
15function absolutePath(path, sharedFolder) {
16 path = normalizePath(path);
17 if (path.indexOf(sharedFolder) !== 0) {
18 path = pathModule.resolve(sharedFolder, path);
19 }
20 return path;
21}
22exports.absolutePath = absolutePath;
23/**
24 * return the relative path of the given @arg path
25 *
26 * @param {String} path - absolute platform dependent path
27 * @param {String} sharedFolder - absolute shared path. platform dependent representation
28 * @return {String} relative path (Unix style which is the one used by Remix IDE)
29 */
30function relativePath(path, sharedFolder) {
31 var relative = pathModule.relative(sharedFolder, path);
32 return normalizePath(relative);
33}
34exports.relativePath = relativePath;
35function normalizePath(path) {
36 if (process.platform === 'win32') {
37 return path.replace(/\\/g, '/');
38 }
39 return path;
40}
41function walkSync(dir, filelist, sharedFolder) {
42 var files = fs.readdirSync(dir);
43 filelist = filelist || {};
44 files.forEach(function (file) {
45 var subElement = path.join(dir, file);
46 if (!fs.lstatSync(subElement).isSymbolicLink()) {
47 if (fs.statSync(subElement).isDirectory()) {
48 filelist = walkSync(subElement, filelist, sharedFolder);
49 }
50 else {
51 var relative = relativePath(subElement, sharedFolder);
52 filelist[relative] = isbinaryfile.sync(subElement);
53 }
54 }
55 });
56 return filelist;
57}
58exports.walkSync = walkSync;
59function resolveDirectory(dir, sharedFolder) {
60 var ret = {};
61 var files = fs.readdirSync(dir);
62 files.forEach(function (file) {
63 var subElement = path.join(dir, file);
64 if (!fs.lstatSync(subElement).isSymbolicLink()) {
65 var relative = relativePath(subElement, sharedFolder);
66 ret[relative] = { isDirectory: fs.statSync(subElement).isDirectory() };
67 }
68 });
69 return ret;
70}
71exports.resolveDirectory = resolveDirectory;