Files

140 lines
2.4 KiB
JavaScript

/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
'use strict';
const path = require('node:path');
const fakeFile = {
file: path.resolve(__dirname, '__tests__/hasteExampleHelper.js'),
moduleName: 'fakeModuleName',
sha1: 'fakeSha1',
};
const fakeJSON = 'fakeJSON';
const testPath = path.resolve(__dirname, '__tests__/hasteExample.test.js');
const allFiles = [fakeFile.file, testPath];
class HasteFS {
getModuleName(file) {
if (file === fakeFile.file) {
return fakeFile.moduleName;
}
return null;
}
getSize(file) {
return null;
}
getDependencies(file) {
if (file === testPath) {
return fakeFile.file;
}
return [];
}
getSha1(file) {
if (file === fakeFile.file) {
return fakeFile.sha1;
}
return null;
}
exists(file) {
return allFiles.includes(file);
}
getAllFiles() {
return allFiles;
}
getFileIterator() {
return allFiles;
}
getAbsoluteFileIterator() {
return allFiles;
}
matchFiles(pattern) {
if (!(pattern instanceof RegExp)) {
pattern = new RegExp(pattern);
}
const files = [];
for (const file of this.getAbsoluteFileIterator()) {
if (pattern.test(file)) {
files.push(file);
}
}
return files;
}
matchFilesWithGlob(globs, root) {
return [];
}
}
class ModuleMap {
getModule(name, platform, supportsNativePlatform, type) {
if (name === fakeFile.moduleName) {
return fakeFile.file;
}
return null;
}
getPackage() {
return null;
}
getMockModule() {
return undefined;
}
getRawModuleMap() {
return {};
}
toJSON() {
return fakeJSON;
}
}
class HasteMap {
constructor(options) {
this._cachePath = HasteMap.getCacheFilePath(
options.cacheDirectory,
options.id,
);
}
async build() {
return {
hasteFS: new HasteFS(),
moduleMap: new ModuleMap(),
};
}
static getCacheFilePath(tmpdir, id) {
return path.join(tmpdir, id);
}
getCacheFilePath() {
return this._cachePath;
}
static getModuleMapFromJSON(json) {
if (json === fakeJSON) {
return new ModuleMap();
}
throw new Error('Failed to parse serialized module map');
}
}
module.exports = HasteMap;