UNPKG

2.04 kBJavaScriptView Raw
1"use strict";
2/**
3 * @license
4 * Copyright (c) 2016 The Polymer Project Authors. All rights reserved.
5 * This code may only be used under the BSD style license found at
6 * http://polymer.github.io/LICENSE.txt
7 * The complete set of authors may be found at
8 * http://polymer.github.io/AUTHORS.txt
9 * The complete set of contributors may be found at
10 * http://polymer.github.io/CONTRIBUTORS.txt
11 * Code distributed by Google as part of the polymer project is also
12 * subject to an additional IP rights grant found at
13 * http://polymer.github.io/PATENTS.txt
14 */
15Object.defineProperty(exports, "__esModule", { value: true });
16const url_resolver_1 = require("./url-resolver");
17/**
18 * Resolves a URL using multiple resolvers.
19 */
20class MultiUrlResolver extends url_resolver_1.UrlResolver {
21 constructor(_resolvers) {
22 super();
23 this._resolvers = _resolvers;
24 }
25 /**
26 * Returns the first resolved URL (which is not undefined.)
27 */
28 resolve(firstUrl, secondUrl, import_) {
29 for (const resolver of this._resolvers) {
30 const resolved = secondUrl === undefined ?
31 resolver.resolve(firstUrl) :
32 resolver.resolve(firstUrl, secondUrl, import_);
33 if (resolved !== undefined) {
34 return resolved;
35 }
36 }
37 return undefined;
38 }
39 relative(fromOrTo, maybeTo, kind) {
40 const [from, to] = (maybeTo === undefined) ? [undefined, fromOrTo] : [fromOrTo, maybeTo];
41 for (const resolver of this._resolvers) {
42 if (resolver.resolve(this.brandAsPackageRelative(to)) === undefined) {
43 continue;
44 }
45 if (from === undefined) {
46 return resolver.relative(to);
47 }
48 else {
49 return resolver.relative(from, to, kind);
50 }
51 }
52 throw new Error(`Could not get relative url, with no configured url resolvers`);
53 }
54}
55exports.MultiUrlResolver = MultiUrlResolver;
56//# sourceMappingURL=multi-url-resolver.js.map
\No newline at end of file