Plain is headed towards 1.0! Subscribe for development updates →

 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"]