UNPKG

2.96 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.MultiResolver = void 0;
4const tslib_1 = require("tslib");
5const structUtils = tslib_1.__importStar(require("./structUtils"));
6class MultiResolver {
7 constructor(resolvers) {
8 this.resolvers = resolvers.filter(resolver => resolver);
9 }
10 supportsDescriptor(descriptor, opts) {
11 const resolver = this.tryResolverByDescriptor(descriptor, opts);
12 return !!resolver;
13 }
14 supportsLocator(locator, opts) {
15 const resolver = this.tryResolverByLocator(locator, opts);
16 return !!resolver;
17 }
18 shouldPersistResolution(locator, opts) {
19 const resolver = this.getResolverByLocator(locator, opts);
20 return resolver.shouldPersistResolution(locator, opts);
21 }
22 bindDescriptor(descriptor, fromLocator, opts) {
23 const resolver = this.getResolverByDescriptor(descriptor, opts);
24 return resolver.bindDescriptor(descriptor, fromLocator, opts);
25 }
26 getResolutionDependencies(descriptor, opts) {
27 const resolver = this.getResolverByDescriptor(descriptor, opts);
28 return resolver.getResolutionDependencies(descriptor, opts);
29 }
30 async getCandidates(descriptor, dependencies, opts) {
31 const resolver = this.getResolverByDescriptor(descriptor, opts);
32 return await resolver.getCandidates(descriptor, dependencies, opts);
33 }
34 async getSatisfying(descriptor, references, opts) {
35 const resolver = this.getResolverByDescriptor(descriptor, opts);
36 return resolver.getSatisfying(descriptor, references, opts);
37 }
38 async resolve(locator, opts) {
39 const resolver = this.getResolverByLocator(locator, opts);
40 return await resolver.resolve(locator, opts);
41 }
42 tryResolverByDescriptor(descriptor, opts) {
43 const resolver = this.resolvers.find(resolver => resolver.supportsDescriptor(descriptor, opts));
44 if (!resolver)
45 return null;
46 return resolver;
47 }
48 getResolverByDescriptor(descriptor, opts) {
49 const resolver = this.resolvers.find(resolver => resolver.supportsDescriptor(descriptor, opts));
50 if (!resolver)
51 throw new Error(`${structUtils.prettyDescriptor(opts.project.configuration, descriptor)} isn't supported by any available resolver`);
52 return resolver;
53 }
54 tryResolverByLocator(locator, opts) {
55 const resolver = this.resolvers.find(resolver => resolver.supportsLocator(locator, opts));
56 if (!resolver)
57 return null;
58 return resolver;
59 }
60 getResolverByLocator(locator, opts) {
61 const resolver = this.resolvers.find(resolver => resolver.supportsLocator(locator, opts));
62 if (!resolver)
63 throw new Error(`${structUtils.prettyLocator(opts.project.configuration, locator)} isn't supported by any available resolver`);
64 return resolver;
65 }
66}
67exports.MultiResolver = MultiResolver;