UNPKG

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