source: node_modules/@swagger-api/apidom-reference/es/resolve/resolvers/file/index-node.mjs@ d24f17c

main
Last change on this file since d24f17c was d24f17c, checked in by Aleksandar Panovski <apano77@…>, 15 months ago

Initial commit

  • Property mode set to 100644
File size: 1.1 KB
Line 
1import { readFile } from '#fs'; // eslint-disable-line import/order
2import { promisify } from '#util'; // eslint-disable-line import/order
3import stampit from 'stampit';
4import minimatch from 'minimatch';
5import Resolver from "../Resolver.mjs";
6import * as url from "../../../util/url.mjs";
7import ResolverError from "../../../errors/ResolverError.mjs";
8const FileResolver = stampit(Resolver, {
9 props: {
10 name: 'file',
11 fileAllowList: []
12 },
13 init({
14 fileAllowList = this.fileAllowList
15 }) {
16 this.fileAllowList = fileAllowList;
17 },
18 methods: {
19 canRead(file) {
20 return url.isFileSystemPath(file.uri) && this.fileAllowList.some(pattern => {
21 return typeof pattern === 'string' ? minimatch(file.uri, pattern, {
22 matchBase: true
23 }) : pattern.test(file.uri);
24 });
25 },
26 async read(file) {
27 const fileSystemPath = url.toFileSystemPath(file.uri);
28 try {
29 return await promisify(readFile)(fileSystemPath);
30 } catch (error) {
31 throw new ResolverError(`Error opening file "${file.uri}"`, {
32 cause: error
33 });
34 }
35 }
36 }
37});
38export default FileResolver;
Note: See TracBrowser for help on using the repository browser.