## SystemJS API ### Core API (s.js & system.js) #### System.constructor Type: `Function` This represents the System base class, which can be extended or reinstantiated to create a custom System instance. Example: ```js var clonedSystem = new System.constructor(); clonedSystem.import('x'); // imports in a custom context ``` #### System.import(id [, parentURL]) -> Promise(Module) Type: `Function` Loads a module by name taking an optional normalized parent URL argument. Promise resolves to the ES module namespace value. _Note: If provided, `parentURL` must be a valid URL, or URL resolution may break._ #### System.register(deps, declare) Type: `Function` Declaration function for defining modules of the `System.register` polyfill module format. [Read more on the format at the loader polyfill page](system-register.md) _Note: Named System.register is only supported through the named-register extra._ #### System.resolve(id [, parentURL]) -> string Type: `Function` Resolves a module specifier relative to an optional parent URL, returning the resolved URL. ### Registry API (system.js only) > Note: The registry API is **not recommended** for standard module loading workflows. It is designed more for tooling built around SystemJS such as hot-reloading workflows. If you find yourself wanting to define a module, rather try to restructure your module architecture around standard module import loading principles and import maps (and the same goes for named System.register). #### System.delete(id) -> Boolean Type: `Function` Deletes a module from the registry by ID. Returns true if the module was found in the registry before deletion. ```js System.delete('http://site.com/normalized/module/name.js'); ``` #### System.get(id) -> Module Type: `Function` Retrieve a loaded module from the registry by ID. ```js System.get('http://site.com/normalized/module/name.js').exportedFunction(); ``` Module records with an error state will return `null`. #### System.has(id) -> Boolean Type: `Function` Determine if a given ID is available in the loader registry. Module records that have an error state in the registry still return `true`, while module records with in-progress loads will return `false`. ```js System.has('http://site.com/normalized/module/name.js'); ``` #### System.set(id, module) -> Module Type: `Function` Sets a module in the registry by ID. Note that when using import maps, the id must be a URL. ```js System.set('http://site.com/normalized/module/name.js', { exportedFunction: value }); ``` `module` is an object of names to set as the named exports. If `module` is an existing Module Namespace, it will be used by reference. If you want to remap the url to a bare specifier, you can do so with an import map: ```html ``` #### System.entries() -> Iterator<[key, module]> Type: `Function` Allows you to retrieve all modules in the System registry. Each value will be an array with two values: a key and the module. ```js for (const [id, ns] of System.entries()) { console.log(id); // 'http://localhost/path-to-file.js' console.log(ns); // { exportName: 'value' } }; ```