1import logging
2
3import requests
4
5logger = logging.getLogger(__name__)
6
7
8class ImportmapGeneratorError(Exception):
9 pass
10
11
12class ImportmapGenerator:
13 def __init__(self, targets, development=False, provider="jspm"):
14 self.targets = targets
15 self.development = development
16 self.provider = provider
17
18 @classmethod
19 def from_config(cls, config, *args, **kwargs):
20 targets = []
21
22 for map in config["packages"]:
23 targets.append(map["source"])
24
25 return cls(targets, *args, **kwargs)
26
27 def get_env(self):
28 if self.development:
29 return ["browser", "module", "development"]
30 else:
31 return ["browser", "module"]
32
33 def generate(self):
34 response = requests.post(
35 "https://api.jspm.io/generate",
36 json={
37 "install": [self.targets],
38 "env": self.get_env(),
39 "provider": self.provider,
40 },
41 )
42 logger.info(response)
43
44 if "error" in response.json():
45 raise ImportmapGeneratorError(response.json()["error"])
46
47 response.raise_for_status()
48
49 return response.json()["map"]