"use strict"; var _interopRequireWildcard = require("@babel/runtime-corejs3/helpers/interopRequireWildcard").default; var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default; exports.__esModule = true; exports.default = void 0; var _fs = require("#fs"); var _util = require("#util"); var _stampit = _interopRequireDefault(require("stampit")); var _minimatch = _interopRequireDefault(require("minimatch")); var _Resolver = _interopRequireDefault(require("../Resolver.cjs")); var url = _interopRequireWildcard(require("../../../util/url.cjs")); var _ResolverError = _interopRequireDefault(require("../../../errors/ResolverError.cjs")); // eslint-disable-line import/order // eslint-disable-line import/order const FileResolver = (0, _stampit.default)(_Resolver.default, { props: { name: 'file', fileAllowList: [] }, init({ fileAllowList = this.fileAllowList }) { this.fileAllowList = fileAllowList; }, methods: { canRead(file) { return url.isFileSystemPath(file.uri) && this.fileAllowList.some(pattern => { return typeof pattern === 'string' ? (0, _minimatch.default)(file.uri, pattern, { matchBase: true }) : pattern.test(file.uri); }); }, async read(file) { const fileSystemPath = url.toFileSystemPath(file.uri); try { return await (0, _util.promisify)(_fs.readFile)(fileSystemPath); } catch (error) { throw new _ResolverError.default(`Error opening file "${file.uri}"`, { cause: error }); } } } }); var _default = exports.default = FileResolver;