UNPKG

4.15 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, '__esModule', {
4 value: true
5});
6exports.default = void 0;
7
8function _jestUtil() {
9 const data = require('jest-util');
10
11 _jestUtil = function () {
12 return data;
13 };
14
15 return data;
16}
17
18var _constants = _interopRequireDefault(require('./constants'));
19
20var fastPath = _interopRequireWildcard(require('./lib/fast_path'));
21
22function _getRequireWildcardCache(nodeInterop) {
23 if (typeof WeakMap !== 'function') return null;
24 var cacheBabelInterop = new WeakMap();
25 var cacheNodeInterop = new WeakMap();
26 return (_getRequireWildcardCache = function (nodeInterop) {
27 return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
28 })(nodeInterop);
29}
30
31function _interopRequireWildcard(obj, nodeInterop) {
32 if (!nodeInterop && obj && obj.__esModule) {
33 return obj;
34 }
35 if (obj === null || (typeof obj !== 'object' && typeof obj !== 'function')) {
36 return {default: obj};
37 }
38 var cache = _getRequireWildcardCache(nodeInterop);
39 if (cache && cache.has(obj)) {
40 return cache.get(obj);
41 }
42 var newObj = {};
43 var hasPropertyDescriptor =
44 Object.defineProperty && Object.getOwnPropertyDescriptor;
45 for (var key in obj) {
46 if (key !== 'default' && Object.prototype.hasOwnProperty.call(obj, key)) {
47 var desc = hasPropertyDescriptor
48 ? Object.getOwnPropertyDescriptor(obj, key)
49 : null;
50 if (desc && (desc.get || desc.set)) {
51 Object.defineProperty(newObj, key, desc);
52 } else {
53 newObj[key] = obj[key];
54 }
55 }
56 }
57 newObj.default = obj;
58 if (cache) {
59 cache.set(obj, newObj);
60 }
61 return newObj;
62}
63
64function _interopRequireDefault(obj) {
65 return obj && obj.__esModule ? obj : {default: obj};
66}
67
68function _defineProperty(obj, key, value) {
69 if (key in obj) {
70 Object.defineProperty(obj, key, {
71 value: value,
72 enumerable: true,
73 configurable: true,
74 writable: true
75 });
76 } else {
77 obj[key] = value;
78 }
79 return obj;
80}
81
82class HasteFS {
83 constructor({rootDir, files}) {
84 _defineProperty(this, '_rootDir', void 0);
85
86 _defineProperty(this, '_files', void 0);
87
88 this._rootDir = rootDir;
89 this._files = files;
90 }
91
92 getModuleName(file) {
93 const fileMetadata = this._getFileData(file);
94
95 return (fileMetadata && fileMetadata[_constants.default.ID]) || null;
96 }
97
98 getSize(file) {
99 const fileMetadata = this._getFileData(file);
100
101 return (fileMetadata && fileMetadata[_constants.default.SIZE]) || null;
102 }
103
104 getDependencies(file) {
105 const fileMetadata = this._getFileData(file);
106
107 if (fileMetadata) {
108 return fileMetadata[_constants.default.DEPENDENCIES]
109 ? fileMetadata[_constants.default.DEPENDENCIES].split(
110 _constants.default.DEPENDENCY_DELIM
111 )
112 : [];
113 } else {
114 return null;
115 }
116 }
117
118 getSha1(file) {
119 const fileMetadata = this._getFileData(file);
120
121 return (fileMetadata && fileMetadata[_constants.default.SHA1]) || null;
122 }
123
124 exists(file) {
125 return this._getFileData(file) != null;
126 }
127
128 getAllFiles() {
129 return Array.from(this.getAbsoluteFileIterator());
130 }
131
132 getFileIterator() {
133 return this._files.keys();
134 }
135
136 *getAbsoluteFileIterator() {
137 for (const file of this.getFileIterator()) {
138 yield fastPath.resolve(this._rootDir, file);
139 }
140 }
141
142 matchFiles(pattern) {
143 if (!(pattern instanceof RegExp)) {
144 pattern = new RegExp(pattern);
145 }
146
147 const files = [];
148
149 for (const file of this.getAbsoluteFileIterator()) {
150 if (pattern.test(file)) {
151 files.push(file);
152 }
153 }
154
155 return files;
156 }
157
158 matchFilesWithGlob(globs, root) {
159 const files = new Set();
160 const matcher = (0, _jestUtil().globsToMatcher)(globs);
161
162 for (const file of this.getAbsoluteFileIterator()) {
163 const filePath = root ? fastPath.relative(root, file) : file;
164
165 if (matcher((0, _jestUtil().replacePathSepForGlob)(filePath))) {
166 files.add(file);
167 }
168 }
169
170 return files;
171 }
172
173 _getFileData(file) {
174 const relativePath = fastPath.relative(this._rootDir, file);
175 return this._files.get(relativePath);
176 }
177}
178
179exports.default = HasteFS;