1 | "use strict";
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.default = void 0;
|
7 |
|
8 | var _logger = require("@parcel/logger");
|
9 |
|
10 | var _diagnostic = _interopRequireWildcard(require("@parcel/diagnostic"));
|
11 |
|
12 | var _path = _interopRequireDefault(require("path"));
|
13 |
|
14 | var _url = _interopRequireDefault(require("url"));
|
15 |
|
16 | var _ReporterRunner = require("./ReporterRunner");
|
17 |
|
18 | var _Dependency = _interopRequireDefault(require("./public/Dependency"));
|
19 |
|
20 | var _PluginOptions = _interopRequireDefault(require("./public/PluginOptions"));
|
21 |
|
22 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
23 |
|
24 | function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
|
25 |
|
26 | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
27 |
|
28 | function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
29 |
|
30 | class ResolverRunner {
|
31 | constructor({
|
32 | config,
|
33 | options
|
34 | }) {
|
35 | _defineProperty(this, "config", void 0);
|
36 |
|
37 | _defineProperty(this, "options", void 0);
|
38 |
|
39 | _defineProperty(this, "pluginOptions", void 0);
|
40 |
|
41 | this.config = config;
|
42 | this.options = options;
|
43 | this.pluginOptions = new _PluginOptions.default(this.options);
|
44 | }
|
45 |
|
46 | async getThrowableDiagnostic(dependency, message) {
|
47 | let diagnostic = {
|
48 | message,
|
49 | origin: '@parcel/resolver-default'
|
50 | };
|
51 |
|
52 | if (dependency.loc && dependency.sourcePath) {
|
53 | diagnostic.filePath = dependency.sourcePath;
|
54 | diagnostic.codeFrame = {
|
55 | code: await this.options.inputFS.readFile(dependency.sourcePath, 'utf8'),
|
56 | codeHighlights: dependency.loc ? [{
|
57 | start: dependency.loc.start,
|
58 | end: dependency.loc.end
|
59 | }] : []
|
60 | };
|
61 | }
|
62 |
|
63 | return new _diagnostic.default({
|
64 | diagnostic
|
65 | });
|
66 | }
|
67 |
|
68 | async resolve(dependency) {
|
69 | let dep = new _Dependency.default(dependency);
|
70 | (0, _ReporterRunner.report)({
|
71 | type: 'buildProgress',
|
72 | phase: 'resolving',
|
73 | dependency: dep
|
74 | });
|
75 | let resolvers = await this.config.getResolvers();
|
76 | let pipeline;
|
77 | let filePath;
|
78 | let validPipelines = new Set(this.config.getNamedPipelines());
|
79 |
|
80 | if (
|
81 |
|
82 | !_path.default.isAbsolute(dependency.moduleSpecifier) && dependency.moduleSpecifier.includes(':')) {
|
83 | [pipeline, filePath] = dependency.moduleSpecifier.split(':');
|
84 |
|
85 | if (!validPipelines.has(pipeline)) {
|
86 | if (dep.isURL) {
|
87 |
|
88 |
|
89 | return null;
|
90 | } else {
|
91 | throw new Error(`Unknown pipeline ${pipeline}.`);
|
92 | }
|
93 | }
|
94 | } else {
|
95 | if (dependency.isURL && dependency.moduleSpecifier.startsWith('//')) {
|
96 |
|
97 | return null;
|
98 | }
|
99 |
|
100 | filePath = dependency.moduleSpecifier;
|
101 | }
|
102 |
|
103 | if (dependency.isURL) {
|
104 | let parsed = _url.default.parse(filePath);
|
105 |
|
106 | if (typeof parsed.pathname !== 'string') {
|
107 | throw new Error(`Received URL without a pathname ${filePath}.`);
|
108 | }
|
109 |
|
110 | filePath = decodeURIComponent(parsed.pathname);
|
111 |
|
112 | if (!pipeline) {
|
113 | pipeline = 'url';
|
114 | }
|
115 | }
|
116 |
|
117 | for (let resolver of resolvers) {
|
118 | try {
|
119 | let result = await resolver.plugin.resolve({
|
120 | filePath,
|
121 | dependency: dep,
|
122 | options: this.pluginOptions,
|
123 | logger: new _logger.PluginLogger({
|
124 | origin: resolver.name
|
125 | })
|
126 | });
|
127 |
|
128 | if (result && result.isExcluded) {
|
129 | return null;
|
130 | }
|
131 |
|
132 | if (result && result.filePath) {
|
133 | var _pipeline;
|
134 |
|
135 | return {
|
136 | filePath: result.filePath,
|
137 | sideEffects: result.sideEffects,
|
138 | code: result.code,
|
139 | env: dependency.env,
|
140 | pipeline: (_pipeline = pipeline) !== null && _pipeline !== void 0 ? _pipeline : dependency.pipeline
|
141 | };
|
142 | }
|
143 | } catch (e) {
|
144 | throw new _diagnostic.default({
|
145 | diagnostic: (0, _diagnostic.errorToDiagnostic)(e, resolver.name)
|
146 | });
|
147 | }
|
148 | }
|
149 |
|
150 | if (dep.isOptional) {
|
151 | return null;
|
152 | }
|
153 |
|
154 | let dir = dependency.sourcePath ? _path.default.dirname(dependency.sourcePath) : '<none>';
|
155 | let err = await this.getThrowableDiagnostic(dependency, `Cannot find module '${dependency.moduleSpecifier}' from '${dir}'`);
|
156 | err.code = 'MODULE_NOT_FOUND';
|
157 | throw err;
|
158 | }
|
159 |
|
160 | }
|
161 |
|
162 | exports.default = ResolverRunner; |
\ | No newline at end of file |