@storm-stack/core
Version:
A build toolkit and runtime used by Storm Software in TypeScript applications
254 lines (251 loc) • 7.58 kB
JavaScript
;
var chunk3ONWID2V_cjs = require('./chunk-3ONWID2V.cjs');
var isFile = require('@stryke/path/is-file');
var joinPaths = require('@stryke/path/join-paths');
var isFunction = require('@stryke/type-checks/is-function');
var FILE_PREFIX = "file://";
function toFilePath(pathOrUrl) {
if (!pathOrUrl) {
throw new Error("No Path or URL provided to Virtual File System");
}
let result = pathOrUrl.toString();
if (result.startsWith(FILE_PREFIX)) {
result = result.slice(FILE_PREFIX.length);
}
return result;
}
chunk3ONWID2V_cjs.__name(toFilePath, "toFilePath");
var FS_METHODS = [
"mkdir",
"mkdirSync",
"rmdir",
"rmdirSync",
"unlink",
"unlinkSync",
"existsSync",
"realpathSync",
"writeFileSync",
"readFileSync",
"readdirSync",
"createWriteStream",
"WriteStream",
"createReadStream",
"ReadStream"
];
var FS_PROMISE_METHODS = [
"mkdir",
"rm",
"rmdir",
"unlink",
"writeFile",
"readFile",
"readdir",
"stat",
"lstat"
];
function cloneFS(originalFS) {
const clonedFS = {
...originalFS,
promises: {
...originalFS.promises ?? {}
}
};
for (const method of FS_METHODS) {
if (originalFS[method]) {
clonedFS[method] = originalFS[method];
}
}
originalFS.promises ??= {};
for (const method of FS_PROMISE_METHODS) {
if (originalFS.promises[method]) {
clonedFS.promises ??= {};
clonedFS.promises[method] = originalFS.promises[method];
clonedFS[method] = originalFS.promises[method];
}
}
for (const prop in clonedFS) {
if (isFunction.isFunction(clonedFS[prop])) {
clonedFS[prop] = clonedFS[prop].bind(originalFS);
if (isFunction.isFunction(clonedFS.promises[prop])) {
clonedFS.promises[prop] = clonedFS.promises[prop].bind(originalFS);
}
}
}
for (const prop in clonedFS.promises) {
if (isFunction.isFunction(clonedFS.promises[prop])) {
clonedFS.promises[prop] = clonedFS.promises[prop].bind(originalFS);
}
}
return clonedFS;
}
chunk3ONWID2V_cjs.__name(cloneFS, "cloneFS");
function patchFS(originalFS, vfs) {
const clonedFS = cloneFS(originalFS);
originalFS.mkdirSync = vfs.mkdirSync.bind(vfs);
originalFS.mkdir = vfs.mkdir.bind(vfs);
originalFS.promises.mkdir = vfs.mkdir.bind(vfs);
originalFS.unlinkSync = vfs.unlinkSync.bind(vfs);
originalFS.promises.rm = vfs.rm.bind(vfs);
originalFS.promises.unlink = vfs.unlink.bind(vfs);
originalFS.existsSync = vfs.existsSync.bind(vfs);
originalFS.realpathSync = vfs.realpathSync.bind(vfs);
originalFS.writeFileSync = vfs.writeFileSync.bind(vfs);
originalFS.promises.writeFile = vfs.writeFile.bind(vfs);
originalFS.readFileSync = vfs.readFileSync.bind(vfs);
originalFS.promises.readFile = vfs.readFile.bind(vfs);
originalFS.readdirSync = vfs.readdirSync.bind(vfs);
originalFS.promises.readdir = vfs.readdir.bind(vfs);
Object.defineProperty(originalFS, "statSync", {
value: vfs.statSync.bind(vfs)
});
originalFS.stat = vfs.statSync.bind(vfs);
originalFS.promises.stat = vfs.stat.bind(vfs);
Object.defineProperty(originalFS, "lstatSync", {
value: vfs.lstatSync.bind(vfs)
});
originalFS.lstat = vfs.lstatSync.bind(vfs);
originalFS.promises.lstat = vfs.lstat.bind(vfs);
return () => {
originalFS.mkdirSync = clonedFS.mkdirSync;
originalFS.mkdir = clonedFS.mkdir;
originalFS.promises.mkdir = clonedFS.promises.mkdir;
originalFS.unlinkSync = clonedFS.unlinkSync;
originalFS.promises.rm = clonedFS.promises.rm;
originalFS.promises.unlink = clonedFS.promises.unlink;
originalFS.existsSync = clonedFS.existsSync;
originalFS.realpathSync = clonedFS.realpathSync;
originalFS.writeFileSync = clonedFS.writeFileSync;
originalFS.promises.writeFile = clonedFS.promises.writeFile;
originalFS.readFileSync = clonedFS.readFileSync;
originalFS.promises.readFile = clonedFS.promises.readFile;
originalFS.readdirSync = clonedFS.readdirSync;
originalFS.promises.readdir = clonedFS.promises.readdir;
Object.defineProperty(originalFS, "statSync", {
value: clonedFS.statSync
});
originalFS.stat = clonedFS.stat;
originalFS.promises.stat = clonedFS.promises.stat;
Object.defineProperty(originalFS, "lstatSync", {
value: clonedFS.lstatSync
});
originalFS.lstat = clonedFS.lstat;
originalFS.promises.lstat = clonedFS.promises.lstat;
};
}
chunk3ONWID2V_cjs.__name(patchFS, "patchFS");
var FILENAME_LOWERCASE_REGEX = /[^\u0130\u0131\u00DFa-z0-9\\/:\-_. ]+/g;
function toLowerCase(x) {
return x.toLowerCase();
}
chunk3ONWID2V_cjs.__name(toLowerCase, "toLowerCase");
function toFileNameLowerCase(x) {
return FILENAME_LOWERCASE_REGEX.test(x) ? x.replace(FILENAME_LOWERCASE_REGEX, toLowerCase) : x;
}
chunk3ONWID2V_cjs.__name(toFileNameLowerCase, "toFileNameLowerCase");
function checkAbsolute(request, vfs) {
if (!isFile.isAbsolutePath(request)) {
return false;
}
if (vfs.pathExistsSync(request)) {
return request;
}
const result = checkVariants(request, vfs);
if (result) {
return result;
}
return false;
}
chunk3ONWID2V_cjs.__name(checkAbsolute, "checkAbsolute");
function checkRelative(context, request, vfs, options = {}) {
const file = options.parentPath ? joinPaths.joinPaths(options.parentPath, request) : request;
if (vfs.pathExistsSync(file)) {
return file;
}
const result = checkVariants(request, vfs, options.parentPath);
if (result) {
return result;
}
return false;
}
chunk3ONWID2V_cjs.__name(checkRelative, "checkRelative");
function checkVariants(request, vfs, parentPath) {
const path = parentPath ? joinPaths.joinPaths(parentPath, request) : request;
let file = checkExtensions(path, vfs);
if (file) {
return file;
}
file = checkIndex(path, vfs);
if (file) {
return file;
}
return false;
}
chunk3ONWID2V_cjs.__name(checkVariants, "checkVariants");
function checkIndex(request, vfs) {
let file = joinPaths.joinPaths(request, "index");
if (vfs.fileExistsSync(file)) {
return file;
}
file = checkExtensions(file, vfs);
if (file) {
return file;
}
return false;
}
chunk3ONWID2V_cjs.__name(checkIndex, "checkIndex");
function checkExtensions(request, vfs) {
let file = `${request}.ts`;
if (vfs.fileExistsSync(file)) {
return file;
}
file = `${request}.mts`;
if (vfs.fileExistsSync(file)) {
return file;
}
file = `${request}.cts`;
if (vfs.fileExistsSync(file)) {
return file;
}
file = `${request}.tsx`;
if (vfs.fileExistsSync(file)) {
return file;
}
file = `${request}.js`;
if (vfs.fileExistsSync(file)) {
return file;
}
file = `${request}.mjs`;
if (vfs.fileExistsSync(file)) {
return file;
}
file = `${request}.cjs`;
if (vfs.fileExistsSync(file)) {
return file;
}
file = `${request}.jsx`;
if (vfs.fileExistsSync(file)) {
return file;
}
file = `${request}.json`;
if (vfs.fileExistsSync(file)) {
return file;
}
file = `${request}.d.ts`;
if (vfs.fileExistsSync(file)) {
return file;
}
return false;
}
chunk3ONWID2V_cjs.__name(checkExtensions, "checkExtensions");
exports.FILE_PREFIX = FILE_PREFIX;
exports.checkAbsolute = checkAbsolute;
exports.checkExtensions = checkExtensions;
exports.checkIndex = checkIndex;
exports.checkRelative = checkRelative;
exports.checkVariants = checkVariants;
exports.cloneFS = cloneFS;
exports.patchFS = patchFS;
exports.toFileNameLowerCase = toFileNameLowerCase;
exports.toFilePath = toFilePath;
//# sourceMappingURL=chunk-XTI73WJP.cjs.map
//# sourceMappingURL=chunk-XTI73WJP.cjs.map