vanilla-native-federation
Version:
A lightweight **runtime micro frontend orchestrator** that loads micro frontends built with native federation into any web page. It can cache dependencies across page reloads, making it perfect for traditional server-rendered hosts (PHP, Java, Rails, etc.
8 lines • 176 kB
Source Map (JSON)
{
"version": 3,
"sources": ["../../node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/debug.js", "../../node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/constants.js", "../../node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/re.js", "../../node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/parse-options.js", "../../node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/identifiers.js", "../../node_modules/.pnpm/semver@7.7.3/node_modules/semver/classes/semver.js", "../../node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/parse.js", "../../node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/valid.js", "../../node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/lrucache.js", "../../node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/compare.js", "../../node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/eq.js", "../../node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/neq.js", "../../node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/gt.js", "../../node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/gte.js", "../../node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/lt.js", "../../node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/lte.js", "../../node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/cmp.js", "../../node_modules/.pnpm/semver@7.7.3/node_modules/semver/classes/comparator.js", "../../node_modules/.pnpm/semver@7.7.3/node_modules/semver/classes/range.js", "../../node_modules/.pnpm/semver@7.7.3/node_modules/semver/functions/satisfies.js", "../../node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/min-version.js", "../../node_modules/.pnpm/semver@7.7.3/node_modules/semver/ranges/valid.js", "../../src/lib/native-federation.error.ts", "../../src/lib/utils/path.ts", "../../src/lib/2.app/flows/init/get-remote-entries.ts", "../../src/lib/2.app/flows/init/process-remote-entries.ts", "../../src/lib/1.domain/externals/external.contract.ts", "../../src/lib/2.app/flows/init/determine-shared-externals.ts", "../../src/lib/2.app/flows/init/generate-import-map.ts", "../../src/lib/2.app/flows/init/commit-changes.ts", "../../src/lib/2.app/flows/init/expose-module-loader.ts", "../../src/lib/5.di/flows/init.factory.ts", "../../src/lib/3.adapters/browser/browser.ts", "../../src/lib/3.adapters/checks/version.check.ts", "../../src/lib/3.adapters/http/manifest-provider.ts", "../../src/lib/3.adapters/http/remote-entry-provider.ts", "../../src/lib/utils/optional.ts", "../../src/lib/3.adapters/storage/remote-info.repository.ts", "../../src/lib/3.adapters/storage/scoped-externals.repository.ts", "../../src/lib/3.adapters/storage/shared-externals.repository.ts", "../../src/lib/5.di/driving.factory.ts", "../../src/lib/4.config/import-map/replace-in-dom.ts", "../../src/lib/4.config/import-map/use-default.ts", "../../src/lib/4.config/import-map/import-map.config.ts", "../../src/lib/4.config/host/host.config.ts", "../../src/lib/4.config/logging/noop.logger.ts", "../../src/lib/2.app/config/log.contract.ts", "../../src/lib/4.config/logging/log.handler.ts", "../../src/lib/4.config/logging/log.config.ts", "../../src/lib/utils/clone-entry.ts", "../../src/lib/4.config/storage/global-this.storage.ts", "../../src/lib/4.config/storage/storage.config.ts", "../../src/lib/4.config/mode/default.profile.ts", "../../src/lib/4.config/mode/mode.config.ts", "../../src/lib/5.di/config.factory.ts", "../../src/lib/2.app/flows/dynamic-init/convert-to-import-map.ts", "../../src/lib/2.app/flows/dynamic-init/get-remote-entry.ts", "../../src/lib/2.app/flows/dynamic-init/update-cache.ts", "../../src/lib/5.di/flows/dynamic-init.factory.ts", "../../src/lib/init-federation.ts"],
"sourcesContent": ["'use strict'\n\nconst debug = (\n typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n : () => {}\n\nmodule.exports = debug\n", "'use strict'\n\n// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\n// Max safe length for a build identifier. The max length minus 6 characters for\n// the shortest version with a build 0.0.0+BUILD.\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\nconst RELEASE_TYPES = [\n 'major',\n 'premajor',\n 'minor',\n 'preminor',\n 'patch',\n 'prepatch',\n 'prerelease',\n]\n\nmodule.exports = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 0b001,\n FLAG_LOOSE: 0b010,\n}\n", "'use strict'\n\nconst {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH,\n} = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst safeRe = exports.safeRe = []\nconst src = exports.src = []\nconst safeSrc = exports.safeSrc = []\nconst t = exports.t = {}\nlet R = 0\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]'\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nconst safeRegexReplacements = [\n ['\\\\s', 1],\n ['\\\\d', MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],\n]\n\nconst makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value\n .split(`${token}*`).join(`${token}{0,${max}}`)\n .split(`${token}+`).join(`${token}{1,${max}}`)\n }\n return value\n}\n\nconst createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value)\n const index = R++\n debug(name, index, value)\n t[name] = index\n src[index] = value\n safeSrc[index] = safe\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '\\\\d+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n// Non-numberic identifiers include numberic identifiers but can be longer.\n// Therefore non-numberic identifiers must go first.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NONNUMERICIDENTIFIER]\n}|${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NONNUMERICIDENTIFIER]\n}|${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:${src[t.PRERELEASE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:${src[t.PRERELEASELOOSE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCEPLAIN', `${'(^|[^\\\\d])' +\n '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`)\ncreateToken('COERCE', `${src[t.COERCEPLAIN]}(?:$|[^\\\\d])`)\ncreateToken('COERCEFULL', src[t.COERCEPLAIN] +\n `(?:${src[t.PRERELEASE]})?` +\n `(?:${src[t.BUILD]})?` +\n `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\ncreateToken('COERCERTLFULL', src[t.COERCEFULL], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAIN]})` +\n `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n", "'use strict'\n\n// parse out just the options we care about\nconst looseOption = Object.freeze({ loose: true })\nconst emptyOpts = Object.freeze({ })\nconst parseOptions = options => {\n if (!options) {\n return emptyOpts\n }\n\n if (typeof options !== 'object') {\n return looseOption\n }\n\n return options\n}\nmodule.exports = parseOptions\n", "'use strict'\n\nconst numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n if (typeof a === 'number' && typeof b === 'number') {\n return a === b ? 0 : a < b ? -1 : 1\n }\n\n const anum = numeric.test(a)\n const bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n compareIdentifiers,\n rcompareIdentifiers,\n}\n", "'use strict'\n\nconst debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n constructor (version, options) {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose &&\n version.includePrerelease === !!options.includePrerelease) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n )\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease\n\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n }\n\n format () {\n this.version = `${this.major}.${this.minor}.${this.patch}`\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join('.')}`\n }\n return this.version\n }\n\n toString () {\n return this.version\n }\n\n compare (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0\n }\n other = new SemVer(other, this.options)\n }\n\n if (other.version === this.version) {\n return 0\n }\n\n return this.compareMain(other) || this.comparePre(other)\n }\n\n compareMain (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n if (this.major < other.major) {\n return -1\n }\n if (this.major > other.major) {\n return 1\n }\n if (this.minor < other.minor) {\n return -1\n }\n if (this.minor > other.minor) {\n return 1\n }\n if (this.patch < other.patch) {\n return -1\n }\n if (this.patch > other.patch) {\n return 1\n }\n return 0\n }\n\n comparePre (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n let i = 0\n do {\n const a = this.prerelease[i]\n const b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n compareBuild (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n let i = 0\n do {\n const a = this.build[i]\n const b = other.build[i]\n debug('build compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc (release, identifier, identifierBase) {\n if (release.startsWith('pre')) {\n if (!identifier && identifierBase === false) {\n throw new Error('invalid increment argument: identifier is empty')\n }\n // Avoid an invalid semver results\n if (identifier) {\n const match = `-${identifier}`.match(this.options.loose ? re[t.PRERELEASELOOSE] : re[t.PRERELEASE])\n if (!match || match[1] !== identifier) {\n throw new Error(`invalid identifier: ${identifier}`)\n }\n }\n }\n\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier, identifierBase)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier, identifierBase)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier, identifierBase)\n this.inc('pre', identifier, identifierBase)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier, identifierBase)\n }\n this.inc('pre', identifier, identifierBase)\n break\n case 'release':\n if (this.prerelease.length === 0) {\n throw new Error(`version ${this.raw} is not a prerelease`)\n }\n this.prerelease.length = 0\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (\n this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0\n ) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre': {\n const base = Number(identifierBase) ? 1 : 0\n\n if (this.prerelease.length === 0) {\n this.prerelease = [base]\n } else {\n let i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n if (identifier === this.prerelease.join('.') && identifierBase === false) {\n throw new Error('invalid increment argument: identifier already exists')\n }\n this.prerelease.push(base)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n let prerelease = [identifier, base]\n if (identifierBase === false) {\n prerelease = [identifier]\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease\n }\n } else {\n this.prerelease = prerelease\n }\n }\n break\n }\n default:\n throw new Error(`invalid increment argument: ${release}`)\n }\n this.raw = this.format()\n if (this.build.length) {\n this.raw += `+${this.build.join('.')}`\n }\n return this\n }\n}\n\nmodule.exports = SemVer\n", "'use strict'\n\nconst SemVer = require('../classes/semver')\nconst parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version\n }\n try {\n return new SemVer(version, options)\n } catch (er) {\n if (!throwErrors) {\n return null\n }\n throw er\n }\n}\n\nmodule.exports = parse\n", "'use strict'\n\nconst parse = require('./parse')\nconst valid = (version, options) => {\n const v = parse(version, options)\n return v ? v.version : null\n}\nmodule.exports = valid\n", "'use strict'\n\nclass LRUCache {\n constructor () {\n this.max = 1000\n this.map = new Map()\n }\n\n get (key) {\n const value = this.map.get(key)\n if (value === undefined) {\n return undefined\n } else {\n // Remove the key from the map and add it to the end\n this.map.delete(key)\n this.map.set(key, value)\n return value\n }\n }\n\n delete (key) {\n return this.map.delete(key)\n }\n\n set (key, value) {\n const deleted = this.delete(key)\n\n if (!deleted && value !== undefined) {\n // If cache is full, delete the least recently used item\n if (this.map.size >= this.max) {\n const firstKey = this.map.keys().next().value\n this.delete(firstKey)\n }\n\n this.map.set(key, value)\n }\n\n return this\n }\n}\n\nmodule.exports = LRUCache\n", "'use strict'\n\nconst SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n", "'use strict'\n\nconst compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n", "'use strict'\n\nconst compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n", "'use strict'\n\nconst compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n", "'use strict'\n\nconst compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n", "'use strict'\n\nconst compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n", "'use strict'\n\nconst compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n", "'use strict'\n\nconst eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n switch (op) {\n case '===':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a === b\n\n case '!==':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError(`Invalid operator: ${op}`)\n }\n}\nmodule.exports = cmp\n", "'use strict'\n\nconst ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n static get ANY () {\n return ANY\n }\n\n constructor (comp, options) {\n options = parseOptions(options)\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n comp = comp.trim().split(/\\s+/).join(' ')\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n }\n\n parse (comp) {\n const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const m = comp.match(r)\n\n if (!m) {\n throw new TypeError(`Invalid comparator: ${comp}`)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n }\n\n toString () {\n return this.value\n }\n\n test (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n }\n\n intersects (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n return new Range(comp.value, options).test(this.value)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n return new Range(this.value, options).test(comp.semver)\n }\n\n options = parseOptions(options)\n\n // Special cases where nothing can possibly be lower\n if (options.includePrerelease &&\n (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {\n return false\n }\n if (!options.includePrerelease &&\n (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {\n return false\n }\n\n // Same direction increasing (> or >=)\n if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {\n return true\n }\n // Same direction decreasing (< or <=)\n if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {\n return true\n }\n // same SemVer and both sides are inclusive (<= or >=)\n if (\n (this.semver.version === comp.semver.version) &&\n this.operator.includes('=') && comp.operator.includes('=')) {\n return true\n }\n // opposite directions less than\n if (cmp(this.semver, '<', comp.semver, options) &&\n this.operator.startsWith('>') && comp.operator.startsWith('<')) {\n return true\n }\n // opposite directions greater than\n if (cmp(this.semver, '>', comp.semver, options) &&\n this.operator.startsWith('<') && comp.operator.startsWith('>')) {\n return true\n }\n return false\n }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst { safeRe: re, t } = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n", "'use strict'\n\nconst SPACE_CHARACTERS = /\\s+/g\n\n// hoisted class for cyclic dependency\nclass Range {\n constructor (range, options) {\n options = parseOptions(options)\n\n if (range instanceof Range) {\n if (\n range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease\n ) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value\n this.set = [[range]]\n this.formatted = undefined\n return this\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First reduce all whitespace as much as possible so we do not have to rely\n // on potentially slow regexes like \\s*. This is then stored and used for\n // future error messages as well.\n this.raw = range.trim().replace(SPACE_CHARACTERS, ' ')\n\n // First, split on ||\n this.set = this.raw\n .split('||')\n // map the range to a 2d array of comparators\n .map(r => this.parseRange(r.trim()))\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(c => c.length)\n\n if (!this.set.length) {\n throw new TypeError(`Invalid SemVer Range: ${this.raw}`)\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n const first = this.set[0]\n this.set = this.set.filter(c => !isNullSet(c[0]))\n if (this.set.length === 0) {\n this.set = [first]\n } else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n for (const c of this.set) {\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c]\n break\n }\n }\n }\n }\n\n this.formatted = undefined\n }\n\n get range () {\n if (this.formatted === undefined) {\n this.formatted = ''\n for (let i = 0; i < this.set.length; i++) {\n if (i > 0) {\n this.formatted += '||'\n }\n const comps = this.set[i]\n for (let k = 0; k < comps.length; k++) {\n if (k > 0) {\n this.formatted += ' '\n }\n this.formatted += comps[k].toString().trim()\n }\n }\n }\n return this.formatted\n }\n\n format () {\n return this.range\n }\n\n toString () {\n return this.range\n }\n\n parseRange (range) {\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n const memoOpts =\n (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |\n (this.options.loose && FLAG_LOOSE)\n const memoKey = memoOpts + ':' + range\n const cached = cache.get(memoKey)\n if (cached) {\n return cached\n }\n\n const loose = this.options.loose\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n debug('hyphen replace', range)\n\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range)\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n debug('tilde trim', range)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n debug('caret trim', range)\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n let rangeList = range\n .split(' ')\n .map(comp => parseComparator(comp, this.options))\n .join(' ')\n .split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(comp => replaceGTE0(comp, this.options))\n\n if (loose) {\n // in loose mode, throw out any that are not valid comparators\n rangeList = rangeList.filter(comp => {\n debug('loose invalid filter', comp, this.options)\n return !!comp.match(re[t.COMPARATORLOOSE])\n })\n }\n debug('range list', rangeList)\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n const rangeMap = new Map()\n const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n for (const comp of comparators) {\n if (isNullSet(comp)) {\n return [comp]\n }\n rangeMap.set(comp.value, comp)\n }\n if (rangeMap.size > 1 && rangeMap.has('')) {\n rangeMap.delete('')\n }\n\n const result = [...rangeMap.values()]\n cache.set(memoKey, result)\n return result\n }\n\n intersects (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some((thisComparators) => {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some((rangeComparators) => {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every((thisComparator) => {\n return rangeComparators.every((rangeComparator) => {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n test (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (let i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n }\n}\n\nmodule.exports = Range\n\nconst LRU = require('../internal/lrucache')\nconst cache = new LRU()\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n safeRe: re,\n t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace,\n} = require('../internal/re')\nconst { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n let result = true\n const remainingComparators = comparators.slice()\n let testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every((otherComparator) => {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n comp = comp.replace(re[t.BUILD], '')\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nconst replaceTildes = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceTilde(c, options))\n .join(' ')\n}\n\nconst replaceTilde = (comp, options) => {\n const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('tilde', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nconst replaceCarets = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceCaret(c, options))\n .join(' ')\n}\n\nconst replaceCaret = (comp, options) => {\n debug('caret', comp, options)\n const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('caret', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${+M + 1}.0.0-0`\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p\n } <${+M + 1}.0.0-0`\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nconst replaceXRanges = (comp, options) => {\n debug('replaceXRanges', comp, options)\n return comp\n .split(/\\s+/)\n .map((c) => replaceXRange(c, options))\n .join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n comp = comp.trim()\n const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n const xM = isX(M)\n const xm = xM || isX(m)\n const xp = xm || isX(p)\n const anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n if (gtlt === '<') {\n pr = '-0'\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp\n .trim()\n .replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n debug('replaceGTE0', comp, options)\n return comp\n .trim()\n .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\n// TODO build?\nconst hyphenReplace = incPr => ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr) => {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n } else if (fpr) {\n from = `>=${from}`\n } else {\n from = `>=${from}${incPr ? '-0' : ''}`\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`\n } else if (incPr) {\n to = `<${tM}.${tm}.${+tp + 1}-0`\n } else {\n to = `<=${to}`\n }\n\n return `${from} ${to}`.trim()\n}\n\nconst testSet = (set, version, options) => {\n for (let i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (let i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === Comparator.ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n const allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n", "'use strict'\n\nconst Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\nmodule.exports = satisfies\n", "'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst gt = require('../functions/gt')\n\nconst minVersion = (range, loose) => {\n range = new Range(range, loose)\n\n let minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let setMin = null\n comparators.forEach((comparator) => {\n // Clone to avoid manipulating the comparator's semver object.\n const compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!setMin || gt(compver, setMin)) {\n setMin = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error(`Unexpected operation: ${comparator.operator}`)\n }\n })\n if (setMin && (!minver || gt(minver, setMin))) {\n minver = setMin\n }\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\nmodule.exports = minVersion\n", "'use strict'\n\nconst Range = require('../classes/range')\nconst validRange = (range, options) => {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\nmodule.exports = validRange\n", "class NFError extends Error {\n constructor(message: string, cause?: Error) {\n super(message, cause);\n this.name = 'NFError';\n }\n}\n\nexport { NFError };\n", "function join(pathA: string, pathB: string): string {\n pathA = pathA.endsWith('/') ? pathA.slice(0, -1) : pathA;\n pathB = pathB.startsWith('/') ? pathB.slice(1) : pathB;\n return `${pathA}/${pathB}`;\n}\n\nfunction getScope(path: string) {\n if (!path) return '';\n\n const parts = path.split('/');\n\n if (parts[parts.length - 1] === '' || parts[parts.length - 1]!.includes('.')) {\n parts.pop();\n }\n if (parts.length < 1) return '';\n\n return `${parts.join('/')}/`;\n}\n\nexport { join, getScope };\n", "import type { RemoteEntry } from 'lib/1.domain/remote-entry/remote-entry.contract';\nimport type { Manifest, RemoteEntryUrl } from 'lib/1.domain/remote-entry/manifest.contract';\nimport type { RemoteName } from 'lib/1.domain/remote/remote-info.contract';\nimport type { ForGettingRemoteEntries } from '../../driver-ports/init/for-getting-remote-entries.port';\nimport type { DrivingContract } from '../../driving-ports/driving.contract';\nimport type { LoggingConfig } from '../../config/log.contract';\nimport { NFError } from 'lib/native-federation.error';\nimport type { ModeConfig } from '../../config/mode.contract';\nimport type { HostConfig } from '../../config/host.contract';\nimport * as _path from 'lib/utils/path';\n\nexport function createGetRemoteEntries(\n config: LoggingConfig & ModeConfig & HostConfig,\n ports: Pick<DrivingContract, 'remoteEntryProvider' | 'manifestProvider' | 'remoteInfoRepo'>\n): ForGettingRemoteEntries {\n /**\n * Step 1: Fetch the remoteEntry JSON objects:\n *\n * A Manifest or URL to a Manifest is used as the input. Based on the defined remotes\n * in the manifest, the library will download the remoteEntry.json files which contain the\n * metadata of the defined remotes (name, exposed modules and required dependencies a.k.a. externals)\n *\n * @param config\n * @param adapters\n * @returns A list of the remoteEntry json objects\n */\n return (remotesOrManifestUrl = {}) =>\n ports.manifestProvider\n .provide(remotesOrManifestUrl)\n .catch(e => {\n config.log.error(1, 'Could not fetch manifest.', e);\n return Promise.reject(new NFError('Failed to fetch manifest'));\n })\n .then(addHostRemoteEntry)\n .then(fetchRemoteEntries)\n .then(removeSkippedRemotes);\n\n function addHostRemoteEntry(manifest: Manifest): Manifest {\n if (!config.hostRemoteEntry) return manifest;\n\n const { name, url, cacheTag } = config.hostRemoteEntry;\n const urlWithCache = cacheTag ? `${url}?cacheTag=${cacheTag}` : url;\n\n return {\n ...manifest,\n [name]: urlWithCache,\n };\n }\n\n async function fetchRemoteEntries(manifest: Manifest): Promise<(RemoteEntry | false)[]> {\n const fetchPromises = Object.entries(manifest).map(([remoteName, remoteEntryUrl]) =>\n fetchRemoteEntry(remoteName, remoteEntryUrl)\n );\n return Promise.all(fetchPromises);\n }\n\n async function fetchRemoteEntry(\n remoteName: RemoteName,\n remoteEntryUrl: RemoteEntryUrl\n ): Promise<RemoteEntry | false> {\n let isOverride = false;\n let skip = false;\n\n ports.remoteInfoRepo.tryGet(remoteName).ifPresent(cachedRemoteInfo => {\n if (\n config.profile.overrideCachedRemotes !== 'never' &&\n (remoteEntryUrl !== _path.join(cachedRemoteInfo.scopeUrl, 'remoteEntry.json') ||\n config.profile.overrideCachedRemotesIfURLMatches)\n ) {\n config.log.debug(1, `Overriding existing remote '${remoteName}' with '${remoteEntryUrl}'.`);\n isOverride = true;\n } else {\n config.log.debug(1, `Found remote '${remoteName}' in storage, omitting fetch.`);\n skip = true;\n }\n });\n\n if (skip) return false;\n\n try {\n const remoteEntry = await ports.remoteEntryProvider.provide(remoteEntryUrl);\n\n config.log.debug(\n 1,\n `Fetched '${remoteEntry.name}' from '${remoteEntry.url}', exposing: ${JSON.stringify(remoteEntry.exposes)}`\n );\n\n return prepareRemoteEntry(remoteEntry, remoteName, isOverride);\n } catch (error) {\n if (config.strict.strictRemoteEntry) {\n config.log.error(1, `Could not fetch remote '${remoteName}'.`, error);\n return Promise.reject(new NFError(`Could not fetch remote '${remoteName}'`));\n }\n config.log.warn(1, `Could not fetch remote '${remoteName}'. skipping init.`, error);\n\n return Promise.resolve(false);\n }\n }\n\n function prepareRemoteEntry(\n remoteEntry: RemoteEntry,\n expectedRemoteName: string,\n isOverride: boolean\n ): RemoteEntry {\n if (isOverride) remoteEntry.override = isOverride;\n\n if (!!config.hostRemoteEntry && expectedRemoteName === config.hostRemoteEntry.name) {\n remoteEntry.host = true;\n remoteEntry.name = config.hostRemoteEntry!.name;\n }\n\n if (remoteEntry.name !== expectedRemoteName) {\n const errorDetails = `Fetched remote '${remoteEntry.name}' does not match requested '${expectedRemoteName}'.`;\n if (config.strict.strictRemoteEntry) {\n throw new NFError(errorDetails);\n }\n config.log.warn(1, `${errorDetails} Omitting expected name.`);\n }\n\n return remoteEntry;\n }\n\n function removeSkippedRemotes(remoteEntries: (RemoteEntry | false)[]): RemoteEntry[] {\n return remoteEntries.filter((entry): entry is RemoteEntry => entry !== false);\n }\n}\n", "import type { ForProcessingRemoteEntries } from '../../driver-ports/init/for-processing-remote-entries.port';\nimport {\n type RemoteName,\n type RemoteEntry,\n type RemoteInfo,\n type SharedInfo,\n type SharedVersionMeta,\n type ScopedVersion,\n type SharedVersionAction,\n type SharedExternal,\n} from 'lib/1.domain';\nimport type { DrivingContract } from '../../driving-ports/driving.contract';\nimport type { LoggingConfig } from '../../config/log.contract';\nimport * as _path from 'lib/utils/path';\nimport type { ModeConfig } from 'lib/2.app/config/mode.contract';\nimport { NFError } from 'lib/native-federation.error';\n\nexport function createProcessRemoteEntries(\n config: LoggingConfig & ModeConfig,\n ports: Pick<\n DrivingContract,\n 'remoteInfoRepo' | 'sharedExternalsRepo' | 'scopedExternalsRepo' | 'versionCheck'\n >\n): ForProcessingRemoteEntries {\n /**\n * Step 2: Process remoteEntry objects\n *\n * Extracts the externals and remote-info objects from the provided remoteEntry objects.\n * The metadata will be merged into the existing cache/storage but the changes are not persisted (yet).\n *\n * - For remotes and scoped externals that means a full replace.\n * - For shared externals that means merging the versions into the currently cached externals.\n *\n * @param config\n * @param adapters\n * @returns Promise<void>\n */\n return remoteEntries => {\n try {\n remoteEntries.forEach(remoteEntry => {\n if (remoteEntry?.override) removeCachedRemoteEntry(remoteEntry);\n addRemoteInfoToStorage(remoteEntry);\n addExternalsToStorage(remoteEntry);\n });\n return Promise.resolve(remoteEntries);\n } catch (e) {\n return Promise.reject(e);\n }\n };\n\n function removeCachedRemoteEntry(remoteEntry: RemoteEntry): void {\n ports.remoteInfoRepo.remove(remoteEntry.name);\n ports.scopedExternalsRepo.remove(remoteEntry.name);\n ports.sharedExternalsRepo.removeFromAllScopes(remoteEntry.name);\n }\n\n function addRemoteInfoToStorage({ name, url, exposes }: RemoteEntry): void {\n ports.remoteInfoRepo.addOrUpdate(name, {\n scopeUrl: _path.getScope(url),\n exposes: Object.values(exposes ?? []).map(m => ({\n moduleName: m.key,\n file: m.outFileName,\n })),\n } as RemoteInfo);\n }\n\n function addExternalsToStorage(remoteEntry: RemoteEntry): void {\n remoteEntry.shared.forEach(external => {\n if (!external.version || !ports.versionCheck.isValidSemver(external.version)) {\n const errorMsg = `[${remoteEntry.name}][${external.packageName}] Version '${external.version}' is not a valid version.`;\n\n if (config.strict.strictExternalVersion) {\n config.log.error(2, errorMsg);\n throw new NFError(`Could not process remote '${remoteEntry.name}'`);\n }\n config.log.warn(2, errorMsg);\n }\n if (external.singleton) {\n addSharedExternal(remoteEntry.name, external, remoteEntry);\n } else {\n addScopedExternal(remoteEntry.name, external);\n }\n });\n }\n\n function addSharedExternal(\n remoteName: RemoteName,\n sharedInfo: SharedInfo,\n remoteEntry: RemoteEntry\n ): void {\n let action: SharedVersionAction = 'skip';\n\n const tag =\n sharedInfo.version ?? ports.versionCheck.smallestVersion(sharedInfo.requiredVersion);\n const remote: SharedVersionMeta = {\n file: sharedInfo.outFileName,\n name: remoteName,\n strictVersion: sharedInfo.strictVersion,\n cached: false,\n requiredVersion: sharedInfo.requiredVersion || tag,\n };\n\n const scopeType = ports.sharedExternalsRepo.scopeType(sharedInfo.shareScope);\n\n if (scopeType === 'strict') {\n action = 'share';\n remote.requiredVersion = tag;\n }\n\n const cached: SharedExternal = ports.sharedExternalsRepo\n .tryGet(sharedInfo.packageName, sharedInfo.shareScope)\n .orElse({ dirty: false, versions: [] });\n\n const matchingVersion = cached.versions.find(version => version.tag === sharedInfo.version);\n let dirty = cached.dirty;\n\n if (!!matchingVersion) {\n if (\n remote.strictVersion &&\n matchingVersion.remotes[0]!.requiredVersion !== remote.requiredVersion\n ) {\n const errorMsg = `[${remoteName}][${sharedInfo.packageName}@${\n sharedInfo.version\n }] Required version-range '${\n remote.requiredVersion\n }' does not match cached version-range '${matchingVersion.remotes[0]!.requiredVersion}'`;\n if (config.strict.strictExternalCompatibility) {\n config.log.error(2, errorMsg);\n throw new NFError(`Could not process remote '${remoteEntry.name}'`);\n }\n config.log.warn(2, errorMsg);\n }\n\n if (!matchingVersion.host && !!remoteEntry?.host) {\n matchingVersion.host = true;\n matchingVersion.remotes.unshift(remote);\n } else matchingVersion.remotes.push(remote);\n } else {\n if (scopeType !== 'strict') dirty = true;\n cached.versions.push({ tag, action, host: !!remoteEntry?.host, remotes: [remote] });\n }\n\n ports.sharedExternalsRepo.addOrUpdate(\n sharedInfo.packageName,\n {\n dirty,\n versions: cached.versions.sort((a, b) => ports.versionCheck.compare(b.tag, a.tag)),\n },\n sharedInfo.shareScope\n );\n }\n\n function addScopedExternal(scope: string, sharedInfo: SharedInfo): void {\n ports.scopedExternalsRepo.addExternal(scope, sharedInfo.packageName, {\n tag: sharedInfo.version ?? ports.versionCheck.smallestVersion(sharedInfo.requiredVersion),\n file: sharedInfo.outFileName,\n } as ScopedVersion);\n }\n}\n", "import type { SharedVersion, ScopedVersion } from './version.contract';\n\nexport type ExternalName = string;\n\nexport type ScopedExternals = Record<string, ScopedExternal>;\n\nexport const GLOBAL_SCOPE = '__GLOBAL__';\n\nexport const STRICT_SCOPE = 'strict';\n\nexport type SharedExternal = {\n dirty: boolean;\n versions: SharedVersion[];\n};\n\nexport type shareScope = Record<string, SharedExternal>;\n\nexport type SharedExternals = Record<string, shareScope> & { [GLOBAL_SCOPE]: shareScope };\n\nexport type ScopedExternal = Record<string, ScopedVersion>;\n", "import type { ForDeterminingSharedExternals } from '../../driver-ports/init/for-determining-shared-externals.port';\nimport { GLOBAL_SCOPE, type SharedExternal } from 'lib/1.domain';\nimport { NFError } from 'lib/native-federation.error';\nimport type { DrivingContract } from '../../driving-ports/driving.contract';\nimport type { LoggingConfig } from '../../config/log.contract';\nimport type { ModeConfig } from '../../config/mode.contract';\n\nexport function createDetermineSharedExternals(\n config: LoggingConfig & ModeConfig,\n ports: Pick<DrivingContract, 'versionCheck' | 'sharedExternalsRepo'>\n): ForDeterminingSharedExternals {\n /**\n * Step 3: Determine which version is the optimal version to share.\n *\n * The shared external versions that were merged into the cache/storage caused the shared\n * external to be 'dirty', this step cleans all dirty externals in the storage by calculating\n * the most optimal version to share since only 1 version can be shared globally. All other\n * versions that are compatible are skipped and the incompatible ones are defined as scoped external.\n *\n * Check the docs for a full explanation of the dependency resolver.\n *\n * Priority:\n * 1) Latest external defined in 'host' remoteEntry (if available).\n * 2) If defined in config, prioritize latest available version.\n * 3) Find most optimal version, by comparing potential extra downloads per version.\n *\n * @param config\n * @param adapters\n * @returns\n */\n return () => {\n for (const shareScope of ports.sharedExternalsRepo.getScopes()) {\n const sharedExternals = ports.sharedExternalsRepo.getFromScope(shareScope);\n\n try {\n Object.entries(sharedExternals)\n .filter(([_, e]) => e.dirty)\n .forEach(([name, external]) =>\n ports.sharedExternalsRepo.addOrUpdate(\n name,\n setVersionActions(name, external),\n shareScope\n )\n );\n } catch (error) {\n config.log.error(\n 3,\n `[${shareScope ?? GLOBAL_SCOPE}] failed to determine shared externals.`,\n {\n sharedExternals,\n error,\n }\n );\n return Promise.reject(\n new NFError(\n `Could not determine shared externals in scope ${shareScope}.`,\n error as Error\n )\n );\n }\n }\n return Promise.resolve();\n };\n\n function setVersionActions(externalName: string, external: SharedExternal) {\n if (external.versions.length === 1) {\n external.versions[0]!.action = 'share';\n external.dirty = false;\n return external;\n }\n\n let sharedVersion = external.versions.find(v => v.host);\n\n if (!sharedVersion && config.profile.latestSharedExternal) {\n sharedVersion = external.versions[0];\n }\n\n if (!sharedVersion) {\n // find version with least extra downloads, sorted by SEMVER version (O^2 complexity)\n let leastExtraDownloads = Number.MAX_VALUE;\n external.versions.forEach(vA => {\n const extraDownloads = external.versions.filter(\n vB =>\n !vB.remotes[0]!.cached &&\n vB.remotes[0]!.strictVersion &&\n !ports.versionCheck.isCompatible(vA.tag, vB.remotes[0]!.requiredVersion)\n ).length;\n if (extraDownloads < leastExtraDownloads) {\n leastExtraDownloads = extraDownloads;\n sharedVersion = vA;\n }\n });\n }\n\n if (!sharedVersion) {\n throw new NFError(`[${externalName}] Could not determine shared version!`);\n }\n\n // Determine action of other versions based on chosen sharedVersion\n external.versions.forEach(v => {\n if (ports.versionCheck.isCompatible(sharedVersion!.tag, v.remotes[0]!.requiredVersion)) {\n v.action = 'skip';\n return;\n }\n\n if (config.strict.strictExternalCompatibility && v.remotes[0]!.strictVersion) {\n config.log.error(\n 3,\n `[${v.remotes[0]!.name}][${externalName}@${v.tag}] Is not compatible with requiredRange '${sharedVersion!.remotes[0]?.requiredVersion}' from remote '${sharedVersion!.remotes[0]!.name}'.`\n );\n\n throw new NFError(`External ${externalName}@${v.tag} could not be shared.`);\n }\n v.action = v.remotes[0]!.strictVersion ? 'scope' : 'skip';\n });\n\n sharedVersion.action = 'share';\n external.dirty = false;\n return external;\n }\n}\n", "import type { ForGeneratingImportMap } from '../../driver-ports/init/for-generating-import-map';\nimport type { DrivingContract } from '../../driving-ports/driving.contract';\nimport type { ImportMap, Imports } from 'lib/1.domain/import-map/import-map.contract';\nimport {\n GLOBAL_SCOPE,\n type RemoteName,\n type ScopedExternal,\n type RemoteInfo,\n type SharedExternal,\n type SharedVersion,\n} from 'lib/1.domain';\nimport type { LoggingConfig } from '../../config/log.contract';\nimport type { ModeConfig } from '../../config/mode.contract';\nimport * as _path from 'lib/utils/path';\nimport { NFError } from 'lib/native-federation.error';\n\nexport function createGenerateImportMap(\n config: LoggingConfig & ModeConfig,\n ports: Pick<DrivingContract, 'remoteInfoRepo' | 'scopedExternalsRepo' | 'sharedExternalsRepo'>\n): ForGeneratingImportMap {\n /**\n * Step 4: Generate an importMap from the cached remoteEntries\n *\n * The processed externals in the storage/cache (step 2 & 3) are used\n * to generate an importMap. The step returns the generated importMap object.\n */\n return () => {\n const importMap: ImportMap = { imports: {} };\n try {\n addScopedExternals(importMap);\n addshareScopeExternals(importMap);\n addGlobalSharedExternals(importMap);\n addRemoteInfos(importMap);\n return Promise.resolve(importMap);\n } catch (e) {\n return Promise.reject(e);\n }\n };\n\n /**\n * Step 4.1: Begin with appending smallest scope of shared dependencies\n * @param importMap\n * @returns\n */\n function addScopedExternals(importMap: ImportMap): ImportMap {\n const scopedExternals = ports.scopedExternalsRepo.getAll();\n\n for (const [remoteName, externals] of Object.entries(scopedExternals)) {\n const remote = ports.remoteInfoRepo.tryGet(remoteName).orThrow(() => {\n config.log.error(4, `[scoped][${remoteName}] Remote name not found in cache.`);\n return new NFError('Could not create ImportMap.');\n });\n addToScope(importMap, remote.scopeUrl, createScopeModules(externals, remote.scopeUrl));\n }\n\n return importMap;\n }\n\n function createScopeModules(externals: ScopedExternal, scope: string): Imports {\n const modules: Imports = {};\n\n for (const [external, version] of Object.entries(externals)) {\n modules[external] = _path.join(scope, version.file);\n }\n\n return modules;\n }\n\n /**\n * Step 4.2: Added the shareScope externals, overriding the scoped externals that are shared\n * @param importMap\n * @returns\n */\n function addshareScopeExternals(importMap: ImportMap): ImportMap {\n const shareScopes = ports.sharedExternalsRepo.getScopes({ includeGlobal: false });\n\n for (const shareScope of shareScopes) {\n processshareScope(importMap, shareScope);\n }\n\n return importMap;\n }\n\n function processshareScope(importMap: ImportMap, shareScope: string): void {\n const sharedExternals = ports.sharedExternalsRepo.getFromScope(shareScope);\n\n for (const [externalName, external] of Object.entries(sharedExternals)) {\n let override: SharedVersion | undefined | 'NOT_AVAILABLE' = undefined;\n let overrideScope: string | undefined = undefined;\n\n for (const version of external.versions) {\n if (version.action === 'scope') {\n for (const remote of version.remotes) {\n const remoteScope = getScope(externalName, shareScope, remote.name);\n addToScope(importMap, remoteScope, {\n [externalName]: _path.join(remoteScope, remote.file),\n });\n remote.cached = true;\n }\n continue;\n }\n\n const scope = getScope(externalName, shareScope, version.remotes[0]!.name);\n\n let targetFileUrl: string = _path.join(scope, version.remotes[0]!.file);\n version.remotes[0]!.cached = true;\n\n if (version.action === 'skip') {\n if (!override) {\n override = findOverride(external, shareScope, externalName) ?? 'NOT_AVAILABLE';\n }\n if (override !== 'NOT_AVAILABLE') {\n if (!overrideScope)\n overrideScope = getScope(externalName, shareScope, override.remotes[0]!.name);\n targetFileUrl = _path.join(overrideScope, override.remotes[0]!.file);\n override.remotes[0]!.cached = true;\n version.remotes[0]!.cached = false;\n }\n }\n version.remotes.forEach(r => {\n const scope = getScope(externalName, shareScope, r.name);\n addToScope(importMap, scope, { [externalName]: targetFileUrl });\n });\n }\n ports.sharedExternalsRepo.addOrUpdate(externalName, external, shareScope);\n }\n }\n\n function findOverride(\n external: SharedExternal,\n shareScope: string,\n externalName: string\n ): SharedVersion | undefined {\n const sharedVersions = external.versions.filter(v => v.action === 'share');\n const scopedExternalName = `${shareScope}.${externalName}`;\n\n if (sharedVersions.length > 1) {\n handleMultipleSharedVersions(scopedExternalName);\n }\n\n if (sharedVersions.length < 1) {\n if (config.strict.strictImportMap) {\n config.log.error(4, `[${shareScope}][${externalName}] shareScope has no override version.`);\n throw new NFError('Could not create ImportMap.');\n }\n config.log.debug(\n 4,\n `[${shareScope}][${externalName}] shareScope has no override version, scoping override versions.`\n );\n }\n\n return sharedVersions[0];\n }\n\n function handleMultipleSharedVersions(scopedExternalName: string): void {\n if (config.strict.strictImportMap) {\n config.log.error(\n 4,\n `[${scopedExternalName}] ShareScope external has multiple shared versions.`\n );\n throw new NFError('Could not create ImportMap.');\n }\n\n config.log.warn(4, `ShareScope external ${scopedExternalName} has multiple shared versions.`);\n }\n\n /**\n * Step 4.3: Added the globally shared externals.\n * @param importMap\n * @returns\n */\n function addGlobalSharedExternals(importMap: ImportMap): ImportMap {\n const sharedExternals = ports.sharedExternalsRepo.getFromScope();\n\n for (const [externalName, external] of Object.entries(sharedExternals)) {\n for (const version of external.versions) {\n if (version.action === 'skip') continue;\n if (version.action === 'scope') {\n for (const remote of version.remotes) {\n const remoteScope = getScope(externalName, GLOBAL_SCOPE, remote.name);\n addToScope(importMap, remoteScope, {\n [externalName]: _path.join(remoteScope, remote.file),\n });\n remote.cached = true;\n }\n continue;\n }\n\n if (importMap.imports[externalName]) {\n handleDuplicateGlobalExternal(externalName);\n continue;\n }\n\n const scope = getScope(externalName, GLOBAL_SCOPE, version.remotes[0]!.name);\n addToGlobal(importMap, { [externalName]: _path.join(scope, version.remotes[0]!.file) });\n version.remotes[0]!.cached = true;\n }\n ports.sharedExternalsRepo.addOrUpdate(externalName, external);\n }\n\n return importMap;\n }\n\n function handleDuplicateGlobalExternal(externalName: string): void {\n if (config.strict.strictImportMap) {\n config.log.error(4, `[${externalName}] Shared external has multiple shared versions.`);\n throw new NFError('Could not create ImportMap.');\n }\n\n config.log.warn(4, `Singleton external ${externalName} has multiple shared versions.`);\n }\n\n function addToScope(importMap: ImportMap, scope: string, imports: Imports): void {\n if (!importMap.scopes) importMap.scopes = {};\n if (!importMap.scopes[scope]) importMap.scopes[scope] = {};\n importMap.scopes[scope] = Object.assign(importMap.scopes[scope], imports);\n }\n function addToGlobal(importMap: ImportMap, imports: Imports): void {\n importMap.imports = Object.assign(importMap.imports, imports);\n }\n\n /**\n * Step 4.4: Added the remote-modules (into the global scope).\n * @param importMap\n * @returns\n */\n function addRemoteInfos(importMap: ImportMap): void {\n const remotes = ports.remoteInfoRepo.getAll();\n\n for (const [remoteName, remote] of Object.entries(remotes)) {\n addRemoteExposedModules(importMap, remoteName, remote);\n }\n }\n\n function addRemoteExposedModules(\n importMap: ImportMap,\n remoteName: string,\n remote: RemoteInfo\n ): void {\n for (const exposed of remote.exposes) {\n const moduleName = _path.join(remoteName, exposed.moduleName);\n const moduleUrl = _path.join(remote.scopeUrl, exposed.file);\n importMap.imports[moduleName] = moduleUrl;\n }\n }\n\n function getScope(externalName: string, shareScope: string, remoteName: RemoteName) {\n return ports.remoteInfoRepo\n .tryGet(remoteName)\n .map(remote => remote.scopeUrl)\n .orThrow(() => {\n config.log.error(\n 4,\n `[${shareScope}][${externalName}][${remoteName}] Remote name not found in cache.`\n );\n return new NFError('Could not create ImportMap.');\n });\n }\n}\n", "import type { DrivingContract } from '../../driving-ports/driving.contract';\nimport type { ForCommittingChanges } from '../../driver-ports/init/for-committing-changes.port';\nimport type { ImportMap } from 'lib/1.domain/import-map/import-map.contract';\nimport type { LoggingConfig } from 'lib/2.app/config';\n\nexport function createCommitChanges(\n config: LoggingConfig,\n ports: Pick<\n DrivingContract,\n 'remoteInfoRepo' | 'scopedExternalsRepo' | 'sharedExternalsRepo' | 'browser'\n >\n): ForCommittingChanges {\n /**\n * Step 5: Commit all changes\n *\n * The changes made to the storage/cache are persisted to storage, and the importmap is\n * inserted into the HTML DOM.\n *\n * This step only runs if all previous steps were succesful to prevent the persistence of\n * erroneous changes into storage which can corrupt other pages/routes of the host.\n *\n * @param adapters\n */\n return (importMap: ImportMap) =>\n Promise.resolve(importMap).then(addToBrowser).then(persistRepositoryChanges);\n\n function addToBrowser(importMap: ImportMap) {\n ports.browser.setImportMapFn(importMap);\n config.log.debug(5, 'Added import map to browser.', importMap);\n return importMap;\n }\n\n function persistRepositoryChanges() {\n ports.remoteInfoRepo.commit();\n ports.scopedExternalsRepo.commit();\n ports.sharedExternalsRepo.commit();\n return;\n }\n}\n", "import type { DrivingContract } from '../../driving-ports/driving.contract';\nimport type { ForExposingModuleLoader } from '../../driver-ports/init/for-exposing-module-loader.port';\nimport { NFError } from 'lib/native-federation.error';\nimport type { LoggingConfig } from '../../config/log.contract';\nimport * as _path from 'lib/utils/path';\n\nexport function createExposeModuleLoader(\n config: LoggingConfig,\n ports: Pick<DrivingContract, 'remoteInfoRepo' | 'browser'>\n): ForExposingModuleLoader {\n /**\n * Step 6: expose module loader\n *\n * The module loader can only be used after the importmap was generated and added to\n * the DOM, hence the module loader fn is exposed to the host after the final commit\n * step.\n *\n * The loadRemoteModule is also a callback that is returned as a promise by the initFederation\n * function. This way the loadRemoteModule can be shared througout the host application using\n * CustomEvents or by adding it to the global Window object for easy access.\n *\n * @param adapters\n */\n return () => Promise.resolve(loadRemoteModule);\n\n function loadRemoteModule(remoteName: string, exposedModule: string): Promise<unknown> {\n try {\n if (!ports.remoteInfoRepo.contains(remoteName)) {\n throw new NFError(`Remote '${remoteName}' is not initialized.`);\n }\n\n const remoteModuleUrl = ports.remoteInfoRepo\n .tryGetModule(remoteName, exposedModule)\n .orThrow(\n new NFError(\n `Exposed module '${exposedModule}' from remote '${remoteName}' not found in storage.`\n )\n );\n\n config.log.debug(6, `Loading initialized module '${remoteModuleUrl}'`);\n\n return ports.browser.importModule(remoteModuleUrl);\n } catch (error) {\n config.log.error(6, `Failed to load module ${_path.join(remoteName, exposedModule)}: `, {\n error,\n });\n\n return Promise.reject(\n new NFError(`Failed to load module ${_path.join(remoteName, exposedModule)}`)\n );\n }\n }\n}\n", "import type { FLOW_FACTORY } from 'lib/2.app/driver-ports/flow-factory.contract';\nimport type { InitDriversContract } from 'lib/2.app/driver-ports/init/drivers.contract';\nimport type { InitFlow } from 'lib/2.app/driver-ports/init/flow.contract';\nimport { createGetRemoteEntries } from '../../2.app/flows/init/get-remote-entries';\nimport { createProcessRemoteEntries } from '../../2.app/flows/init/process-remote-entries';\nimport { createDetermineSharedExternals } from '../../2.app/flows/init/determine-shared-externals';\nimport { createGenerateImportMap } from '../../2.app/flows/init/generate-import-map';\nimport { createCommitChanges } from '../../2.app/flows/init/commit-changes';\nimport { createExposeModuleLoader } from '../../2.app/flows/init/expose-module-loader';\nimport type { DrivingContract } from '../../2.app/driving-ports/driving.contract';\nimport type { ConfigContract } from '../../2.app/config/config.contract';\n\nexport const createInitDrivers = ({\n config,\n adapters,\n}: {\n config: ConfigContract;\n adapters: DrivingContract;\n}): InitDriversContract => ({\n getRemoteEntries: createGetRemoteEntries(config, adapters),\n processRemoteEntries: createProcessRemoteEntries(config, adapters),\n determineSharedExternals: createDetermineSharedExternals(config, adapters),\n generateImportMap: createGenerateImportMap(config, adapters),\n commitChanges: createCommitChanges(config, adapters),\n exposeModuleLoader: createExposeModuleLoader(config, adapters),\n});\n\nexport const INIT_FLOW_FACTORY = ({\n config,\n adapters,\n}: {\n config: ConfigContract;\n adapters: DrivingContract;\n}): FLOW_FACTORY<InitDriversContract> => {\n const flow = createInitDrivers({ config, adapters });\n\n return {\n flow,\n adapters,\n config,\n };\n};\n\nexport const createInitFlow = ({\n flow,\n adapters,\n config,\n}: FLOW_FACTORY<InitDriversContract>): InitFlow => {\n return remotesOrManifestUrl =>\n flow\n .getRemoteEntries(remotesOrManifestUrl)\n .then(flow.processRemoteEntries)\n .then(flow.determineSharedExternals)\n .then(flow.generateImportMap)\n .then(flow.commitChanges)\n .then(flow.exposeModuleLoader)\n .then(loadRemoteModule => ({\n config,\n adapters,\n loadRemoteModule,\n }));\n};\n", "import type { ForBrowserTasks } from 'lib/2.app/driving-ports/for-browser-tasks';\nimport type { ImportMapConfig } from 'lib/2.app/config/import-map.contract';\n\nconst createBrowser = (config: ImportMapConfig): ForBrowserTasks => {\n return {\n setImportMapFn: config.setImportMapFn,\n importModule: config.loadModuleFn,\n };\n};\n\nexport { createBrowser };\n", "import type { ForVersionChecking } from 'lib/2.app/driving-ports/for-version-checking.port';\nimport semverValid from 'semver/functions/valid';\nimport semverSatisfies from 'semver/functions/satisfies';\nimport semverCompare from 'semver/functions/compare';\nimport semverMinVersion from 'semver/ranges/min-version';\nimport semverValidRange from 'semver/ranges/valid';\n\nconst createVersionCheck = (): ForVersionChecking => {\n return {\n isValidSemver: function (version: string) {\n return semverValid(version) !== null;\n },\n isCompatible: function (version: string, range: string) {\n return semverSatisfies(version, range);\n },\n compare: function (versionA: string, versionB: string) {\n return semverCompare(versionA, versionB, true);\n },\n smallestVersion: function (versionRange: string) {\n if (!semverValidRange(versionRange)) return '0.0.0';\n const minVersion = semverMinVersion(versionRange);\n return minVersion?.raw ?? '0.0.0';\n },\n };\n};\n\nexport { createVersionCheck };\n", "import type { Manifest } from 'lib/1.domain';\nimport type { ForProvidingManifest } from 'lib/2.app/driving-ports/for-providing-manifest.port';\nimport { NFError } from 'lib/native-federation.error';\n\nconst createManifestProvider = (): ForProvidingManifest => {\n const mapToJson = (response: Response) => {\n if (!response.ok)\n return Promise.reject(new NFError(`${response.status} - ${response.statusText}`));\n return response.json() as Promise<Manifest>;\n };\n\n const formatError = (remoteEntryUrl: string) => (err: unknown) => {\n const msg = err instanceof Error ? err.message : String(err);\n throw new NFError(`Fetch of '${remoteEntryUrl}' returned ${msg}`);\n };\n\n return {\n provide: async function (remotesOrManifestUrl: string | Manifest) {\n if (typeof remotesOrManifestUrl !== 'string') return Promise.resolve(remotesOrManifestUrl);\n\n return fetch(remotesOrManifestUrl).then(mapToJson).catch(formatError(remotesOrManifestUrl));\n },\n };\n};\n\nexport { createManifestProvider };\n", "import type { RemoteEntry } from 'lib/1.domain/remote-entry/remote-entry.contract';\nimport type { ForProvidingRemoteEntries } from 'lib/2.app/driving-ports/for-providing-remote-entries.port';\nimport { NFError } from 'lib/native-federation.error';\n\nconst createRemoteEntryProvider = (): ForProvidingRemoteEntries => {\n const mapToJson = (response: Response) => {\n if (!response.ok)\n return Promise.reject(new Error(`${response.status} - ${response.statusText}`));\n return response.json() as Promise<RemoteEntry>;\n };\n\n const fillEmptyFields = (remoteEntryUrl: string) => (remoteEntry: RemoteEntry) => {\n if (!remoteEntry.exposes) remoteEntry.exposes = [];\n if (!remoteEntry.shared) remoteEntry.shared = [];\n if (!remoteEntry.url) remoteEntry.url = remoteEntryUrl;\n return remoteEntry;\n };\n\n const formatError = (remoteEntryUrl: string) => (err: unknown) => {\n const msg = err instanceof Error ? err.message : String(err);\n throw new NFError(`Fetch of '${remoteEntryUrl}' returned ${msg}`);\n };\n\n return {\n provide: async function (remoteEntryUrl: string) {\n return fetch(remoteEntryUrl)\n .then(mapToJson)\n .then(fillEmptyFields(remoteEntryUrl))\n .catch(formatError(remoteEntryUrl));\n },\n };\n};\n\nexport { createRemoteEntryProvider };\n", "export class Optional<T> {\n private constructor(private item?: T) {}\n\n public static of<T>(item?: T): Optional<T> {\n return new Optional(item);\n }\n public static empty<U>(): Optional<U> {\n return Optional.of<U>(undefined);\n }\n\n public isPresent() {\n return typeof this.item !== 'undefined' && this.item !== null;\n }\n public set<U>(other: U) {\n return Optional.of(other);\n }\n\n public ifPresent(callback: (_: T) => void): void {\n if (this.isPresent()) callback(this.item as T);\n }\n\n public map<U>(callback: (_: NonNullable<T>) => U | Optional<U>): Optional<U> {\n if (!this.isPresent()) return Optional.empty();\n\n const result = callback(this.item as NonNullable<T>);\n return result instanceof Optional ? result : Optional.of(result);\n }\n\n public orElse(other: Required<T>): NonNullable<T> {\n return this.isPresent() ? (this.item as NonNullable<T>) : (other as NonNullable<T>);\n }\n\n public orThrow(error: Error | string | (() => Error)): NonNullable<T> {\n if (this.isPresent()) return this.item as NonNullable<T>;\n if (typeof error === 'function') throw error();\n throw typeof error === 'string' ? new Error(error) : error;\n }\n\n public get(): T | undefined {\n return this.item;\n }\n}\n", "import type { RemoteInfo, RemoteName, Remotes } from 'lib/1.domain';\nimport type { StorageConfig, StorageEntry } from 'lib/2.app/config/storage.contract';\nimport type { ForRemoteInfoStorage } from 'lib/2.app/driving-ports/for-remote-info-storage.port';\nimport * as _path from 'lib/utils/path';\nimport { Optional } from 'lib/utils/optional';\n\nconst createRemoteInfoRepository = (config: StorageConfig): ForRemoteInfoStorage => {\n const STORAGE: StorageEntry<Remotes> = config.storage('remotes', {});\n if (config.clearStorage) STORAGE.clear();\n\n const _cache: Remotes = STORAGE.get() ?? {};\n\n return {\n contains: function (remoteName: RemoteName) {\n return !!_cache[remoteName];\n },\n remove: function (remoteName: RemoteName) {\n delete _cache[remoteName];\n return this;\n },\n addOrUpdate: function (remoteName: string, remote: RemoteInfo) {\n _cache[remoteName] = remote;\n return this;\n },\n tryGet: function (remoteName: RemoteName) {\n return Optional.of(_cache[remoteName]);\n },\n tryGetModule: function (remoteName: RemoteName, exposedModule: string) {\n return Optional.of(_cache[remoteName]?.exposes.find(m => m.moduleName === exposedModule)).map(\n m => _path.join(_cache[remoteName]!.scopeUrl, m.file)\n );\n },\n getAll: function () {\n return _cache;\n },\n commit: function () {\n STORAGE.set(_cache);\n return this;\n },\n };\n};\n\nexport { createRemoteInfoRepository };\n", "import type { ScopedExternals } from 'lib/1.domain/externals/external.contract';\nimport type { StorageConfig, StorageEntry } from 'lib/2.app/config/storage.contract';\nimport type { ForScopedExternalsStorage } from 'lib/2.app/driving-ports/for-scoped-externals-storage.port';\nimport type { RemoteName, ScopedVersion } from 'lib/1.domain';\nimport { Optional } from 'lib/utils/optional';\n\nconst createScopedExternalsRepository = (config: StorageConfig): ForScopedExternalsStorage => {\n const STORAGE: StorageEntry<ScopedExternals> = config.storage('scoped-externals', {});\n\n if (config.clearStorage) STORAGE.clear();\n\n const _cache: ScopedExternals = STORAGE.get() ?? {};\n\n return {\n addExternal: function (remoteName: RemoteName, external: string, version: ScopedVersion) {\n if (!_cache[remoteName]) _cache[remoteName] = {};\n _cache[remoteName][external] = version;\n return this;\n },\n remove: function (remoteName: RemoteName) {\n delete _cache[remoteName];\n return this;\n },\n getAll: function () {\n return _cache;\n },\n tryGet: function (remoteName: string) {\n return Optional.of(_cache[remoteName]);\n },\n commit: function () {\n STORAGE.set(_cache);\n return this;\n },\n };\n};\n\nexport { createScopedExternalsRepository };\n", "import {\n type SharedExternal,\n type SharedExternals,\n GLOBAL_SCOPE,\n STRICT_SCOPE,\n} from 'lib/1.domain/externals/external.contract';\nimport type { StorageConfig, StorageEntry } from 'lib/2.app/config/storage.contract';\nimport type { ForSharedExternalsStorage } from 'lib/2.app/driving-ports/for-shared-externals-storage.port';\nimport { Optional } from 'lib/utils/optional';\n\nconst createSharedExternalsRepository = (config: StorageConfig): ForSharedExternalsStorage => {\n const STORAGE: StorageEntry<SharedExternals> = config.storage<SharedExternals>(\n 'shared-externals',\n { [GLOBAL_SCOPE]: {} }\n );\n\n if (config.clearStorage) STORAGE.clear();\n\n const _cache: SharedExternals = STORAGE.get()!;\n\n return {\n getFromScope: function (shareScope?: string) {\n return { ..._cache[shareScope ?? GLOBAL_SCOPE] };\n },\n addOrUpdate: function (externalName: string, external: SharedExternal, shareScope?: string) {\n if (!_cache[shareScope ?? GLOBAL_SCOPE]) _cache[shareScope ?? GLOBAL_SCOPE] = {};\n _cache[shareScope ?? GLOBAL_SCOPE]![externalName] = external;\n return this;\n },\n getScopes: function (o = { includeGlobal: true }) {\n if (o.includeGlobal) return Object.keys(_cache);\n return Object.keys(_cache).filter(s => s !== GLOBAL_SCOPE);\n },\n removeFromAllScopes: function (remoteName: string) {\n Object.values(_cache).forEach(scope => {\n const removeExternals: string[] = [];\n\n Object.entries(scope).forEach(([name, external]) => {\n const removeVersionIdx: number[] = [];\n external.versions.forEach((version, i) => {\n const versionRemoteIDX = version.remotes.findIndex(r => r.name === remoteName);\n if (~versionRemoteIDX) {\n version.remotes.splice(versionRemoteIDX, 1);\n }\n\n if (version.remotes.length === 0) removeVersionIdx.push(i);\n });\n\n if (removeVersionIdx.length > 0) {\n for (let i = removeVersionIdx.length - 1; i >= 0; i--) {\n external.versions.splice(removeVersionIdx[i]!, 1);\n }\n external.dirty = true;\n\n if (external.versions.length === 0) removeExternals.push(name);\n }\n });\n removeExternals.forEach(name => delete scope[name]);\n });\n },\n scopeType: function (shareScope?: string) {\n switch (shareScope) {\n case GLOBAL_SCOPE:\n case null:\n case undefined:\n return 'global';\n case STRICT_SCOPE:\n return 'strict';\n default:\n return 'shareScope';\n }\n },\n tryGet: function (external: string, shareScope?: string) {\n return Optional.of(_cache[shareScope ?? GLOBAL_SCOPE]?.[external]);\n },\n commit: function () {\n STORAGE.set(_cache);\n return this;\n },\n };\n};\n\nexport { createSharedExternalsRepository };\n", "import type { DrivingContract } from 'lib/2.app/driving-ports/driving.contract';\nimport type { ConfigContract } from 'lib/2.app/config/config.contract';\nimport { createBrowser } from 'lib/3.adapters/browser/browser';\nimport { createVersionCheck } from 'lib/3.adapters/checks/version.check';\nimport { createManifestProvider } from 'lib/3.adapters/http/manifest-provider';\nimport { createRemoteEntryProvider } from 'lib/3.adapters/http/remote-entry-provider';\nimport { createRemoteInfoRepository } from 'lib/3.adapters/storage/remote-info.repository';\nimport { createScopedExternalsRepository } from 'lib/3.adapters/storage/scoped-externals.repository';\nimport { createSharedExternalsRepository } from 'lib/3.adapters/storage/shared-externals.repository';\n\nexport const createDriving = (\n config: ConfigContract\n): { adapters: DrivingContract; config: ConfigContract } => {\n const adapters = {\n versionCheck: createVersionCheck(),\n\n manifestProvider: createManifestProvider(),\n\n remoteEntryProvider: createRemoteEntryProvider(),\n\n remoteInfoRepo: createRemoteInfoRepository(config),\n scopedExternalsRepo: createScopedExternalsRepository(config),\n sharedExternalsRepo: createSharedExternalsRepository(config),\n\n browser: createBrowser(config),\n };\n return { adapters, config };\n};\n", "import type { ImportMap } from 'lib/1.domain';\nimport type { SetImportMap } from 'lib/2.app/config/import-map.contract';\n\nexport const replaceInDOM =\n (mapType: string): SetImportMap =>\n (importMap: ImportMap, opts = {}) => {\n if (opts?.override) {\n document.head\n .querySelectorAll(`script[type=\"${mapType}\"]`)\n .forEach(importMap => importMap.remove());\n }\n\n document.head.appendChild(\n Object.assign(document.createElement('script'), {\n type: mapType,\n innerHTML: JSON.stringify(importMap),\n })\n );\n return Promise.resolve(importMap);\n };\n", "import type { ImportMapConfig } from 'lib/2.app/config/import-map.contract';\nimport { replaceInDOM } from './replace-in-dom';\n\nconst useDefaultImportMap = (): ImportMapConfig => ({\n loadModuleFn: url => import(/* @vite-ignore */ url),\n setImportMapFn: replaceInDOM('importmap'),\n});\n\nexport { useDefaultImportMap };\n", "import type { ImportMapConfig, ImportMapOptions } from 'lib/2.app/config/import-map.contract';\nimport { useDefaultImportMap } from './use-default';\n\nexport const createImportMapConfig = (o: Partial<ImportMapOptions>): ImportMapConfig => {\n const fallback = useDefaultImportMap();\n return {\n setImportMapFn: o.setImportMapFn ?? fallback.setImportMapFn,\n loadModuleFn: o.loadModuleFn ?? fallback.loadModuleFn,\n };\n};\n", "import type { HostConfig, HostOptions } from 'lib/2.app/config/host.contract';\n\nexport const createHostConfig = (override: Partial<HostOptions>): HostConfig => {\n if (!override?.hostRemoteEntry) {\n return { hostRemoteEntry: false };\n }\n if (typeof override.hostRemoteEntry === 'string') {\n return {\n hostRemoteEntry: {\n name: '__NF-HOST__',\n url: override.hostRemoteEntry,\n },\n };\n }\n return {\n hostRemoteEntry: {\n name: '__NF-HOST__',\n ...override.hostRemoteEntry,\n },\n };\n};\n", "import type { Logger } from 'lib/2.app/config/log.contract';\n\nconst noopLogger: Logger = {\n debug: () => {},\n error: () => {},\n warn: () => {},\n};\n\nexport { noopLogger };\n", "export const LogLevel = {\n debug: 0,\n warn: 1,\n error: 2,\n};\n\nexport type LogType = keyof typeof LogLevel;\n\nexport type Logger = {\n error: (step: number, msg: string, details?: unknown) => void;\n warn: (step: number, msg: string, details?: unknown) => void;\n debug: (step: number, msg: string, details?: unknown) => void;\n};\n\nexport type LogHandler = Logger & {\n level: LogType;\n};\n\nexport type LoggingConfig = {\n log: LogHandler;\n};\n\nexport type LoggingOptions = {\n logger?: Logger;\n logLevel?: LogType;\n};\n", "import {\n type LogType,\n type LogHandler,\n type Logger,\n LogLevel,\n} from 'lib/2.app/config/log.contract';\n\nconst createLogHandler = (logger: Logger, logLevel: LogType): LogHandler => {\n const logTypes = Object.keys(LogLevel).filter(key => isNaN(Number(key))) as LogType[];\n\n return logTypes.reduce(\n (acc, logMessageType) => {\n return {\n ...acc,\n [logMessageType]: (step: number, message: string, details: unknown) => {\n if (LogLevel[logMessageType] >= LogLevel[logLevel]) {\n logger[logMessageType](step, message, details);\n }\n },\n };\n },\n { level: logLevel } as LogHandler\n );\n};\n\nexport { createLogHandler };\n", "import type { LoggingConfig, LoggingOptions } from 'lib/2.app/config/log.contract';\nimport { noopLogger } from './noop.logger';\nimport { createLogHandler } from './log.handler';\n\nexport const createLogConfig = ({ logger, logLevel }: LoggingOptions): LoggingConfig => ({\n log: createLogHandler(logger ?? noopLogger, logLevel ?? 'error'),\n});\n", "import type { StorageEntryKey } from 'lib/2.app/config/storage.contract';\nimport { NFError } from 'lib/native-federation.error';\n\ntype CloneEntry = <T>(name: StorageEntryKey, raw: T) => T;\n\nconst cloneEntry: CloneEntry = <T>(name: StorageEntryKey, raw: T) => {\n try {\n if (typeof structuredClone === 'function') {\n return structuredClone(raw);\n }\n } catch {\n /* structured clone is unavailable */\n }\n try {\n return JSON.parse(JSON.stringify(raw));\n } catch {\n /* object is not stringifyable */\n }\n throw new NFError(`Could not parse storage entry '${String(name)}'`);\n};\n\nexport { CloneEntry, cloneEntry };\n", "import { cloneEntry } from '../../utils/clone-entry';\nimport { type StorageEntryCreator, type StorageEntry } from 'lib/2.app/config/storage.contract';\n\nconst globalThisStorageEntry: StorageEntryCreator =\n (namespace: string) =>\n <TValue>(key: string, initialValue: TValue) => {\n if (!(globalThis as unknown as { [namespace]: unknown })[namespace]) {\n (globalThis as unknown as { [namespace]: unknown })[namespace] = {};\n }\n\n const storage = (globalThis as unknown as { [namespace]: { [P in typeof key]: TValue } })[\n namespace\n ]!;\n if (!storage[key]) storage[key] = initialValue;\n\n const entry: StorageEntry<TValue> = {\n get(): TValue {\n return cloneEntry(key, storage[key])!;\n },\n set(value: TValue): StorageEntry<TValue> {\n storage[key] = cloneEntry(key, value);\n return entry;\n },\n clear(): StorageEntry<TValue> {\n storage[key] = cloneEntry(key, initialValue);\n return this;\n },\n };\n\n return entry;\n };\n\nexport { globalThisStorageEntry };\n", "import type { StorageConfig, StorageOptions } from 'lib/2.app/config/storage.contract';\nimport { globalThisStorageEntry } from './global-this.storage';\n\nexport const createStorageConfig = (override: StorageOptions): StorageConfig => ({\n storage: override.storage\n ? override.storage(override.storageNamespace ?? '__NATIVE_FEDERATION__')\n : globalThisStorageEntry(override.storageNamespace ?? '__NATIVE_FEDERATION__'),\n clearStorage: override.clearStorage ?? false,\n});\n", "import type { ModeProfileConfig } from 'lib/2.app/config/mode.contract';\n\nexport const defaultProfile: ModeProfileConfig = {\n latestSharedExternal: false,\n overrideCachedRemotes: 'init-only',\n overrideCachedRemotesIfURLMatches: false,\n};\n", "import type { ModeConfig, ModeOptions } from 'lib/2.app/config/mode.contract';\nimport { defaultProfile } from './default.profile';\n\nexport const createModeConfig = (override: ModeOptions): ModeConfig => {\n const strictnessConfig =\n typeof override.strict === 'boolean'\n ? {\n strictRemoteEntry: override.strict,\n strictExternalCompatibility: override.strict,\n strictExternalVersion: override.strict,\n strictImportMap: override.strict,\n }\n : {\n strictRemoteEntry: override.strict?.strictRemoteEntry ?? false,\n strictExternalCompatibility: override.strict?.strictExternalCompatibility ?? false,\n strictExternalVersion: override.strict?.strictExternalVersion ?? false,\n strictImportMap: override.strict?.strictImportMap ?? false,\n };\n\n return {\n strict: strictnessConfig,\n profile: { ...defaultProfile, ...(override.profile ?? {}) },\n };\n};\n", "import type { ConfigContract, NFOptions } from 'lib/2.app/config/config.contract';\nimport { createImportMapConfig } from 'lib/4.config/import-map/import-map.config';\nimport { createHostConfig } from 'lib/4.config/host/host.config';\nimport { createLogConfig } from 'lib/4.config/logging/log.config';\nimport { createStorageConfig } from 'lib/4.config/storage/storage.config';\nimport { createModeConfig } from 'lib/4.config/mode/mode.config';\n\nexport const createConfigHandlers = (overrides: NFOptions): ConfigContract => ({\n ...createImportMapConfig(overrides),\n ...createHostConfig(overrides),\n ...createLogConfig(overrides),\n ...createStorageConfig(overrides),\n ...createModeConfig(overrides),\n});\n", "import type { ImportMap } from 'lib/1.domain/import-map/import-map.contract';\nimport type { RemoteEntry, SharedInfoActions } from 'lib/1.domain';\nimport type { LoggingConfig } from '../../config/log.contract';\nimport * as _path from 'lib/utils/path';\nimport type { ForConvertingToImportMap } from 'lib/2.app/driver-ports/dynamic-init/for-converting-to-import-map';\n\nexport function createConvertToImportMap({ log }: LoggingConfig): ForConvertingToImportMap {\n return ({ entry, actions }) => {\n const importMap: ImportMap = { imports: {} };\n\n addExternals(entry, actions, importMap);\n addRemoteInfos(entry, importMap);\n log.debug(9, `[${entry.name}] Processed actions:`, actions);\n return Promise.resolve(importMap);\n };\n\n function addExternals(\n remoteEntry: RemoteEntry,\n actions: SharedInfoActions,\n importMap: ImportMap\n ): void {\n if (!remoteEntry.shared) {\n return;\n }\n\n const remoteEntryScope = _path.getScope(remoteEntry.url);\n remoteEntry.shared.forEach(external => {\n // Scoped externals\n if (!external.singleton) {\n addToScopes(\n remoteEntryScope,\n external.packageName,\n _path.join(remoteEntryScope, external.outFileName),\n importMap\n );\n return;\n }\n\n if (!actions[external.packageName]) {\n log.warn(\n 9,\n `[${remoteEntry.name}] No action defined for shared external '${external.packageName}', skipping.`\n );\n return;\n }\n\n // Skipped shared externals\n if (actions[external.packageName]!.action === 'skip') {\n if (!external.shareScope) return;\n\n if (actions[external.packageName]!.override) {\n addToScopes(\n remoteEntryScope,\n external.packageName,\n actions[external.packageName]!.override!,\n importMap\n );\n return;\n }\n }\n\n // Scoped shared externals\n if (actions[external.packageName]!.action === 'scope') {\n addToScopes(\n remoteEntryScope,\n external.packageName,\n _path.join(remoteEntryScope, external.outFileName),\n importMap\n );\n return;\n }\n\n // Shared externals with shareScope\n if (external.shareScope) {\n addToScopes(\n remoteEntryScope,\n external.packageName,\n _path.join(remoteEntryScope, external.outFileName),\n importMap\n );\n return;\n }\n\n // Default case: shared globally\n importMap.imports[external.packageName] = _path.join(remoteEntryScope, external.outFileName);\n });\n }\n\n function addToScopes(\n scope: string,\n packageName: string,\n url: string,\n importMap: ImportMap\n ): void {\n if (!importMap.scopes) importMap.scopes = {};\n if (!importMap.scopes[scope]) importMap.scopes[scope] = {};\n importMap.scopes[scope][packageName] = url;\n }\n\n function addRemoteInfos(remoteEntry: RemoteEntry, importMap: ImportMap): void {\n if (!remoteEntry.exposes) return;\n const scope = _path.getScope(remoteEntry.url);\n\n remoteEntry.exposes.forEach(exposed => {\n const moduleName = _path.join(remoteEntry.name, exposed.key);\n const moduleUrl = _path.join(scope, exposed.outFileName);\n importMap.imports[moduleName] = moduleUrl;\n });\n }\n}\n", "import type { RemoteEntryUrl } from 'lib/1.domain/remote-entry/manifest.contract';\nimport type { RemoteName } from 'lib/1.domain/remote/remote-info.contract';\nimport type { DrivingContract } from '../../driving-ports/driving.contract';\nimport type { LoggingConfig } from '../../config/log.contract';\nimport { NFError } from 'lib/native-federation.error';\nimport type { ModeConfig } from '../../config/mode.contract';\nimport type { ForGettingRemoteEntry } from '../../driver-ports/dynamic-init/for-getting-remote-entry.port';\nimport { Optional } from 'lib/utils/optional';\nimport type { RemoteEntry } from 'lib/1.domain';\nimport * as _path from 'lib/utils/path';\n\nexport function createGetRemoteEntry(\n config: LoggingConfig & ModeConfig,\n ports: Pick<DrivingContract, 'remoteEntryProvider' | 'remoteInfoRepo'>\n): ForGettingRemoteEntry {\n return async (remoteEntryUrl: RemoteEntryUrl, remoteName?: RemoteName) => {\n if (!!remoteName && shouldSkipCachedRemote(remoteEntryUrl, remoteName)) {\n config.log.debug(7, `Found remote '${remoteName}' in storage, omitting fetch.`);\n return Optional.empty<RemoteEntry>();\n }\n\n try {\n const remoteEntry = await ports.remoteEntryProvider.provide(remoteEntryUrl);\n\n config.log.debug(\n 7,\n `[${remoteEntry.name}] Fetched from '${remoteEntry.url}', exposing: ${JSON.stringify(remoteEntry.exposes)}`\n );\n if (!!remoteName && remoteEntry.name !== remoteName) {\n const errorMsg = `Fetched remote '${remoteEntry.name}' does not match requested '${remoteName}'.`;\n if (config.strict.strictRemoteEntry) {\n config.log.error(7, errorMsg);\n throw new NFError('Could not fetch remote entry');\n }\n config.log.warn(7, errorMsg + ' Omitting expected name.');\n }\n\n if (ports.remoteInfoRepo.contains(remoteEntry.name)) {\n remoteEntry.override = true;\n config.log.debug(7, `Overriding existing remote '${remoteName}' with '${remoteEntryUrl}'.`);\n }\n return Optional.of(remoteEntry);\n } catch (error) {\n config.log.error(\n 7,\n `[${remoteName ?? 'unknown'}] Could not fetch remoteEntry from ${remoteEntryUrl}.`,\n error\n );\n return Promise.reject(\n new NFError(`[${remoteName ?? remoteEntryUrl}] Could not fetch remoteEntry.`)\n );\n }\n };\n\n function shouldSkipCachedRemote(remoteEntryUrl: string, remoteName: RemoteName): boolean {\n return ports.remoteInfoRepo\n .tryGet(remoteName)\n .map(\n cachedRemoteInfo =>\n config.profile.overrideCachedRemotes !== 'always' ||\n (!config.profile.overrideCachedRemotesIfURLMatches &&\n remoteEntryUrl === _path.join(cachedRemoteInfo.scopeUrl, 'remoteEntry.json'))\n )\n .orElse(false);\n }\n}\n", "import type { ForUpdatingCache } from '../../driver-ports/dynamic-init/for-updating-cache';\nimport {\n type ScopedVersion,\n type RemoteEntry,\n type RemoteInfo,\n type RemoteName,\n type SharedInfo,\n type SharedInfoActions,\n type SharedVersion,\n type SharedVersionAction,\n type SharedVersionMeta,\n type SharedExternal,\n GLOBAL_SCOPE,\n} from 'lib/1.domain';\nimport type { DrivingContract } from '../../driving-ports/driving.contract';\nimport type { LoggingConfig } from '../../config/log.contract';\nimport * as _path from 'lib/utils/path';\nimport { NFError } from 'lib/native-federation.error';\nimport type { ModeConfig } from 'lib/2.app/config/mode.contract';\n\nexport function createUpdateCache(\n config: LoggingConfig & ModeConfig,\n ports: Pick<\n DrivingContract,\n 'remoteInfoRepo' | 'sharedExternalsRepo' | 'scopedExternalsRepo' | 'versionCheck'\n >\n): ForUpdatingCache {\n return remoteEntry => {\n try {\n if (remoteEntry?.override) removeCachedRemoteEntry(remoteEntry);\n addRemoteInfoToStorage(remoteEntry);\n const actions = mergeExternalsIntoStorage(remoteEntry);\n\n return Promise.resolve({ entry: remoteEntry, actions });\n } catch (error) {\n return Promise.reject(error);\n }\n };\n\n function removeCachedRemoteEntry(remoteEntry: RemoteEntry): void {\n ports.remoteInfoRepo.remove(remoteEntry.name);\n ports.scopedExternalsRepo.remove(remoteEntry.name);\n ports.sharedExternalsRepo.removeFromAllScopes(remoteEntry.name);\n }\n\n function addRemoteInfoToStorage({ name, url, exposes }: RemoteEntry) {\n ports.remoteInfoRepo.addOrUpdate(name, {\n scopeUrl: _path.getScope(url),\n exposes: Object.values(exposes ?? []).map(m => ({\n moduleName: m.key,\n file: m.outFileName,\n })),\n } as RemoteInfo);\n }\n\n function mergeExternalsIntoStorage(remoteEntry: RemoteEntry): SharedInfoActions {\n const actions: SharedInfoActions = {};\n remoteEntry.shared.forEach(external => {\n if (!external.version || !ports.versionCheck.isValidSemver(external.version)) {\n const errorMsg = `[${remoteEntry.name}][${external.packageName}] Version '${external.version}' is not a valid version.`;\n\n if (config.strict.strictExternalVersion) {\n config.log.error(8, errorMsg);\n throw new NFError(`Could not process remote '${remoteEntry.name}'`);\n }\n config.log.warn(8, errorMsg);\n }\n\n if (external.singleton) {\n const { action, sharedVersion } = addSharedExternal(remoteEntry.name, external);\n actions[external.packageName] = { action };\n\n if (action === 'skip' && external.shareScope && sharedVersion?.remotes[0]?.file) {\n actions[external.packageName]!.override = ports.remoteInfoRepo\n .tryGet(sharedVersion.remotes[0]!.name)\n .map(remote => _path.join(remote.scopeUrl, sharedVersion.remotes[0]!.file))\n .orThrow(() => {\n config.log.error(\n 8,\n `[${external.shareScope ?? GLOBAL_SCOPE}][${remoteEntry.name}][${\n external.packageName\n }@${external.version}][override] Remote name not found in cache.`\n );\n return new NFError(\n `Could not find override url from remote ${sharedVersion.remotes[0]!.name}`\n );\n });\n }\n } else {\n addScopedExternal(remoteEntry.name, external);\n }\n });\n return actions;\n }\n\n function addSharedExternal(\n remoteName: RemoteName,\n sharedInfo: SharedInfo\n ): { action: SharedVersionAction; sharedVersion?: SharedVersion } {\n const cached: SharedExternal = ports.sharedExternalsRepo\n .tryGet(sharedInfo.packageName, sharedInfo.shareScope)\n .orElse({ dirty: false, versions: [] });\n\n let action: SharedVersionAction = 'skip';\n\n const tag =\n sharedInfo.version ?? ports.versionCheck.smallestVersion(sharedInfo.requiredVersion);\n const remote: SharedVersionMeta = {\n file: sharedInfo.outFileName,\n strictVersion: sharedInfo.strictVersion,\n requiredVersion: sharedInfo.requiredVersion || tag,\n name: remoteName,\n cached: false,\n };\n\n const scopeType = ports.sharedExternalsRepo.scopeType(sharedInfo.shareScope);\n\n if (scopeType === 'strict') {\n remote.requiredVersion = tag;\n action = 'share';\n }\n\n const sharedVersion = cached.versions.find(c => c.action === 'share');\n const isCompatible =\n !sharedVersion || ports.versionCheck.isCompatible(sharedVersion.tag, remote.requiredVersion);\n\n if (action === 'skip' && !isCompatible && remote.strictVersion) {\n action = 'scope';\n const errorMsg = `[${sharedInfo.shareScope ?? GLOBAL_SCOPE}][${remoteName}] ${\n sharedInfo.packageName\n }@${sharedInfo.version} Is not compatible with existing ${sharedInfo.packageName}@${\n sharedVersion!.tag\n } requiredRange '${sharedVersion!.remotes[0]?.requiredVersion}'`;\n\n if (config.strict.strictExternalCompatibility) {\n config.log.error(8, errorMsg);\n throw new NFError(`Could not process remote '${remoteName}'`);\n }\n config.log.warn(8, errorMsg);\n }\n\n const matchingVersion = cached.versions.find(cached => cached.tag === tag);\n\n if (!!matchingVersion) {\n if (\n remote.strictVersion &&\n matchingVersion.remotes[0]!.requiredVersion !== remote.requiredVersion\n ) {\n const errorMsg = `[${remoteName}][${sharedInfo.packageName}@${\n sharedInfo.version\n }] Required version '${remote.requiredVersion}' does not match existing '${\n matchingVersion.remotes[0]!.requiredVersion\n }'`;\n if (config.strict.strictExternalCompatibility) {\n config.log.error(8, errorMsg);\n throw new NFError(`Could not process remote '${remoteName}'`);\n }\n config.log.warn(8, errorMsg);\n }\n matchingVersion.remotes.push(remote);\n } else {\n if (!sharedVersion) action = 'share';\n remote.cached = action !== 'skip';\n cached.versions.push({ tag, action, host: false, remotes: [remote] });\n }\n\n ports.sharedExternalsRepo.addOrUpdate(\n sharedInfo.packageName,\n {\n dirty: cached.dirty,\n versions: cached.versions.sort((a, b) => ports.versionCheck.compare(b.tag, a.tag)),\n },\n sharedInfo.shareScope\n );\n\n return { action, sharedVersion };\n }\n\n function addScopedExternal(remoteName: RemoteName, sharedInfo: SharedInfo): void {\n ports.scopedExternalsRepo.addExternal(remoteName, sharedInfo.packageName, {\n tag: sharedInfo.version ?? ports.versionCheck.smallestVersion(sharedInfo.requiredVersion),\n file: sharedInfo.outFileName,\n } as ScopedVersion);\n }\n}\n", "import type { RemoteEntry } from 'lib/1.domain';\nimport type { DynamicInitFlow } from 'lib/2.app/driver-ports/dynamic-init/flow.contract';\nimport type { FLOW_FACTORY } from 'lib/2.app/driver-ports/flow-factory.contract';\nimport { createConvertToImportMap } from 'lib/2.app/flows/dynamic-init/convert-to-import-map';\nimport { createGetRemoteEntry } from 'lib/2.app/flows/dynamic-init/get-remote-entry';\nimport { createUpdateCache } from 'lib/2.app/flows/dynamic-init/update-cache';\nimport { createCommitChanges } from 'lib/2.app/flows/init/commit-changes';\nimport type { DynamicInitDriversContract } from 'lib/audit.index';\nimport type { DrivingContract } from '../../2.app/driving-ports/driving.contract';\nimport type { ConfigContract } from '../../2.app/config/config.contract';\n\nexport const createDynamicInitDrivers = ({\n config,\n adapters,\n}: {\n config: ConfigContract;\n adapters: DrivingContract;\n}): DynamicInitDriversContract => ({\n getRemoteEntry: createGetRemoteEntry(config, adapters),\n updateCache: createUpdateCache(config, adapters),\n convertToImportMap: createConvertToImportMap(config),\n commitChanges: createCommitChanges(config, adapters),\n});\n\nexport const DYNAMIC_INIT_FLOW_FACTORY = ({\n config,\n adapters,\n}: {\n config: ConfigContract;\n adapters: DrivingContract;\n}): FLOW_FACTORY<DynamicInitDriversContract> => {\n const flow = createDynamicInitDrivers({ config, adapters });\n\n return {\n flow,\n adapters,\n config,\n };\n};\n\nexport const createDynamicInitFlow = ({\n flow,\n adapters,\n config,\n}: FLOW_FACTORY<DynamicInitDriversContract>): DynamicInitFlow => {\n const processDynamicRemoteEntry = async (remoteEntry: RemoteEntry) => {\n return flow.updateCache(remoteEntry).then(flow.convertToImportMap).then(flow.commitChanges);\n };\n const initRemoteEntry: DynamicInitFlow = (remoteEntryUrl, remoteName) =>\n flow\n .getRemoteEntry(remoteEntryUrl, remoteName)\n .then(entry => entry.map(processDynamicRemoteEntry).orElse(Promise.resolve()))\n .then(() => ({\n config,\n adapters,\n initRemoteEntry,\n }));\n\n return initRemoteEntry;\n};\n", "import type { LoadRemoteModule, NativeFederationResult } from './init-federation.contract';\nimport type { NFOptions } from './2.app/config/config.contract';\nimport { createInitFlow, INIT_FLOW_FACTORY } from './5.di/flows/init.factory';\nimport { createDriving } from './5.di/driving.factory';\nimport { createConfigHandlers } from './5.di/config.factory';\nimport {\n createDynamicInitFlow,\n DYNAMIC_INIT_FLOW_FACTORY,\n} from './5.di/flows/dynamic-init.factory';\n\nconst initFederation = (\n remotesOrManifestUrl: string | Record<string, string>,\n options: NFOptions = {}\n): Promise<NativeFederationResult> => {\n const { adapters, config } = createDriving(createConfigHandlers(options));\n\n const stateDump = (msg: string) =>\n config.log.debug(0, msg, {\n remotes: { ...adapters.remoteInfoRepo.getAll() },\n 'shared-externals': adapters.sharedExternalsRepo\n .getScopes({ includeGlobal: true })\n .reduce(\n (acc, scope) => ({ ...acc, [scope]: adapters.sharedExternalsRepo.getFromScope(scope) }),\n {}\n ),\n 'scoped-externals': adapters.scopedExternalsRepo.getAll(),\n });\n\n const initFlow = createInitFlow(INIT_FLOW_FACTORY({ adapters, config }));\n const dynamicInitFlow = createDynamicInitFlow(DYNAMIC_INIT_FLOW_FACTORY({ config, adapters }));\n\n return initFlow(remotesOrManifestUrl)\n .then(({ loadRemoteModule }) => {\n const output = {\n config,\n adapters,\n loadRemoteModule,\n as: <TModule = unknown>() => ({\n loadRemoteModule: loadRemoteModule as LoadRemoteModule<TModule>,\n }),\n remote: <TModule = unknown>(remoteName: string) => ({\n loadModule: (exposedModule: string) =>\n loadRemoteModule(remoteName, exposedModule) as Promise<TModule>,\n }),\n };\n\n const initRemoteEntry = async (\n remoteEntryUrl: string,\n remoteName?: string\n ): Promise<NativeFederationResult> =>\n dynamicInitFlow(remoteEntryUrl, remoteName)\n .catch(e => {\n stateDump(`[dynamic-init][${remoteName ?? remoteEntryUrl}] STATE DUMP`);\n if (config.strict.strictRemoteEntry) return Promise.reject(e);\n else console.warn('Failed to initialize remote entry, continuing anyway.');\n return Promise.resolve();\n })\n .then(() => ({\n ...output,\n initRemoteEntry,\n }));\n\n return {\n ...output,\n initRemoteEntry,\n };\n })\n .catch(e => {\n stateDump(`[init] STATE DUMP`);\n return Promise.reject(e);\n });\n};\n\nexport { initFederation };\n"],
"mappings": "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",
"names": ["require_valid", "getScope", "scope", "import_valid", "semverValid", "semverSatisfies", "semverCompare", "semverValidRange", "semverMinVersion", "importMap", "cached"]
}