UNPKG

import-maps-webpack-plugin

Version:

A plugin for providing static import maps support to Webpack.

29 lines 2.61 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ImportMapsWebpackPlugin = void 0; var webpack_virtual_modules_1 = __importDefault(require("webpack-virtual-modules")); var helpers_1 = require("./helpers"); var ImportMapsWebpackPlugin = /** @class */ (function () { function ImportMapsWebpackPlugin() { } ImportMapsWebpackPlugin.prototype.apply = function (compiler) { var root = process.cwd(); var dir = helpers_1.getPackageDir(root); var map = helpers_1.resolveImportMap(dir); var keys = Object.keys((map && map.imports) || {}); var localImports = keys.map(function (id) { return "{\n id: " + helpers_1.getHashFor(root, dir, map.imports[id]) + ",\n ref: " + JSON.stringify(id) + ",\n load: () => " + helpers_1.getImportFor(root, dir, map.imports[id]) + ",\n}"; }); var plugin = new webpack_virtual_modules_1.default(keys.reduce(function (prev, id) { prev[id] = "\n module.exports = require('importmap').resolve(" + JSON.stringify(id) + ");\n "; return prev; }, { 'node_modules/importmap.js': "\nif (!window.__importMaps) {\n const imports = [];\n window.__importMaps = true;\n window.__resolveImport = function (id) {\n for (const item of imports) {\n if (item.id === id) {\n return item;\n }\n }\n return {};\n };\n window.__registerImports = function (newImports) {\n newImports.forEach(i => {\n if (!imports.some(j => j.id === i.id)) {\n const item = {\n id: i.id,\n data: undefined,\n };\n item.loading = i.load().then(data => (item.data = data), err => console.error(err));\n imports.push(item);\n }\n });\n };\n}\nconst localImports = [" + localImports.join(',') + "];\nwindow.__registerImports(localImports);\nfunction getId(ref) {\n const [id] = localImports.filter(i => i.ref === ref).map(i => i.id);\n return id;\n}\nexports.ready = function (ref) {\n const refs = Array.isArray(ref) ? ref : (ref ? [ref] : localImports.map(i => i.ref));\n return Promise.all(refs.map(ref => window.__resolveImport(getId(ref)).loading));\n};\nexports.resolve = function (ref) {\n return window.__resolveImport(getId(ref)).data;\n}\n", })); plugin.apply(compiler); }; return ImportMapsWebpackPlugin; }()); exports.ImportMapsWebpackPlugin = ImportMapsWebpackPlugin; //# sourceMappingURL=index.js.map