@codesandbox/sandpack-client
Version:
<img style="width:100%" src="https://user-images.githubusercontent.com/4838076/143581035-ebee5ba2-9cb1-4fe8-a05b-2f44bd69bb4b.gif" alt="Component toolkit for live running code editing experiences" />
66 lines • 2.25 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
var fs = require("fs");
var path = require("path");
var parser = require('gitignore-parser');
var symLinks = {};
var ignoreFiles = ['.git'];
var vscodeignores = {};
function rdSync(dpath, tree) {
var files = fs.readdirSync(dpath);
if (files.indexOf('.vscodeignore') > -1) {
vscodeignores[dpath] = parser.compile(fs.readFileSync(path.join(dpath, '.vscodeignore'), 'utf8'));
}
var vscodeignorePath = Object.keys(vscodeignores).find(function (f) { return dpath.indexOf(f) === 0; });
var vscodeignore = vscodeignorePath ? vscodeignores[vscodeignorePath] : undefined;
files.forEach(function (file) {
// ignore non-essential directories / files
if (ignoreFiles.indexOf(file) !== -1 || file[0] === '.') {
return;
}
var fpath = "".concat(dpath, "/").concat(file);
if (vscodeignore && vscodeignore.denies(fpath.replace(vscodeignorePath, ''))) {
return;
}
try {
// Avoid infinite loops.
var lstat = fs.lstatSync(fpath);
if (lstat.isSymbolicLink()) {
if (!symLinks[lstat.dev]) {
symLinks[lstat.dev] = {};
}
// Ignore if we've seen it before
if (symLinks[lstat.dev][lstat.ino]) {
return;
}
symLinks[lstat.dev][lstat.ino] = true;
}
var fstat = fs.statSync(fpath);
if (fstat.isDirectory()) {
var child = tree[file] = {};
rdSync(fpath, child);
}
else {
tree[file] = null;
}
}
catch (e) {
// Ignore and move on.
}
});
return tree;
}
var fsListing = JSON.stringify(rdSync(process.cwd(), {}));
if (process.argv.length === 3) {
var fname = process.argv[2];
var parent_1 = path.dirname(fname);
while (!fs.existsSync(parent_1)) {
fs.mkdirSync(parent_1);
parent_1 = path.dirname(parent_1);
}
fs.writeFileSync(fname, fsListing, { encoding: 'utf8' });
}
else {
console.log(fsListing);
}
;