@teambit/merging 0.0.252 → 0.0.253
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config-merge-result.d.ts +11 -0
- package/dist/config-merge-result.js +78 -0
- package/dist/config-merge-result.js.map +1 -0
- package/dist/config-merge-result.spec.d.ts +1 -0
- package/dist/config-merge-result.spec.js +39 -0
- package/dist/config-merge-result.spec.js.map +1 -0
- package/dist/config-merger.d.ts +58 -0
- package/dist/config-merger.js +588 -0
- package/dist/config-merger.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -1
- package/dist/merge-cmd.d.ts +4 -1
- package/dist/merge-cmd.js +13 -3
- package/dist/merge-cmd.js.map +1 -1
- package/dist/merging.main.runtime.d.ts +2 -0
- package/dist/merging.main.runtime.js +68 -8
- package/dist/merging.main.runtime.js.map +1 -1
- package/dist/{preview-1671506809302.js → preview-1671593083147.js} +0 -0
- package/package-tar/teambit-merging-0.0.253.tgz +0 -0
- package/package.json +20 -12
- package/package-tar/teambit-merging-0.0.252.tgz +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["ConfigMerger","constructor","compIdStr","workspaceIds","currentAspects","baseAspects","otherAspects","currentLabel","otherLabel","merge","populateEnvs","results","map","currentExt","id","stringId","handledExtIds","includes","push","baseExt","findExtension","otherExt","mergePerStrategy","basicConflictGenerator","currentConfig","getConfig","otherConfig","otherAspectsNotHandledResults","mergedConfig","envResult","envStrategy","ConfigMergeResult","compact","getEnvId","ext","envsAspect","findCoreExtension","EnvsAspect","Error","env","config","data","currentEnv","otherEnv","baseEnv","undefined","currentEnvAspect","version","extensionId","rawConfig","otherEnvAspect","baseEnvAspect","mergeStrategyParams","baseConfig","isIdInWorkspace","basicConfigMerge","areConfigsEqual","configA","configB","JSON","stringify","depResolverResult","depResolverStrategy","mergeStrategyConfigParams","conflict","repeat","formatConfig","conf","confStr","confStrSplit","split","shift","pop","join","params","DependencyResolverAspect","mergedPolicy","dependencies","devDependencies","peerDependencies","conflictedPolicy","isMerged","hasConflict","conflictIndicator","nonPolicyConfigToMerged","nonPolicyConfigConflict","handleConfigMerge","allKeys","uniq","Object","keys","otherKeys","filter","key","forEach","policy","depType","depName","name","force","current","other","currentPolicy","otherPolicy","allPolicyKeys","concat","length","pkgName","currentVal","otherVal","baseVal","isEnv","lifecycleToDepType","runtime","dev","peer","hasConfigForDep","find","d","addSerializedDepToPolicy","dep","lifecycle","getAutoDeps","source","idWithoutVersion","__type","existingPolicy","p","dependencyId","getPolicyVer","value","semver","valid","startsWith","currentData","otherData","currentAndOtherData","uniqBy","baseData","depData","currentDep","otherDep","currentId","currentVer","otherVer","baseDep","baseVer","isRange","satisfies","conflictStr","mergedConfigSplit","conflictLines","line","unshift","Boolean","c","toStringWithoutVersion","omit"],"sources":["config-merger.ts"],"sourcesContent":["import { ComponentID } from '@teambit/component-id';\nimport semver from 'semver';\nimport { DependencyResolverAspect, isRange, SerializedDependency } from '@teambit/dependency-resolver';\nimport { EnvsAspect } from '@teambit/envs';\nimport { ExtensionDataEntry, ExtensionDataList } from '@teambit/legacy/dist/consumer/config/extension-data';\nimport { compact, omit, uniq, uniqBy } from 'lodash';\nimport { ConfigMergeResult } from './config-merge-result';\n\ntype GenericConfigOrRemoved = Record<string, any> | '-';\n\ntype EnvData = { id: string; version?: string; config?: GenericConfigOrRemoved };\n\ntype SerializedDependencyWithPolicy = SerializedDependency & { policy?: string };\n\nexport type MergeStrategyResult = {\n id: string;\n mergedConfig?: GenericConfigOrRemoved;\n conflict?: string;\n};\ntype MergeStrategyParamsWithRemoved = {\n id: string;\n currentConfig: GenericConfigOrRemoved;\n otherConfig: GenericConfigOrRemoved;\n baseConfig?: GenericConfigOrRemoved;\n};\ntype MergeStrategyParams = {\n id: string;\n currentExt: ExtensionDataEntry;\n otherExt: ExtensionDataEntry;\n baseExt?: ExtensionDataEntry;\n};\n\n/**\n * perform 3-way merge of component configuration (aspects).\n * normally this is needed when merging one lane into another. the component may have different aspects config in each lane.\n * the baseAspects are the aspects of the component in the diversion point (the common ancestor of the two lanes).\n * the currentAspects are the aspects of the component in the current lane.\n * the otherAspects are the aspects of the component in the other lane. this is the lane we merge into the current lane.\n *\n * the basic merging strategy is a simple comparison between the aspect-configs, if they're different, we have a conflict.\n * we have two special cases:\n *\n * 1. dependency-resolver: we do a deeper check for the policy, we compare each dependency separately. also, we take\n * into account not only the config, but also the data. this is needed because some dependencies are automatically\n * added by Bit (from the import statements in the code) and they're not in the config. the final config has the deps\n * from both sources, the config and the data. The way we know to differentiate between them is by the \"force\" prop.\n * the config has always force: true.\n *\n * 2. envs: if we don't treat it specially, the user will need to make the change not only in the envs aspect, but also\n * in the deps-resolver (because the env is added as a devDependency) and also in the aspect itself (because\n * teambit.envs/env has only the id and not the version). to make it simpler, we ignore the envs in the deps-resolver\n * we ignore the individual aspect that is the env itself. we only show teambit.envs/env and we put the env id and\n * version. later, when the component is loaded, we split the id and the version and put them in the correct places.\n * see workspace.componentExtension / adjustEnvsOnConfigMerge for more details.\n */\nexport class ConfigMerger {\n private currentEnv: EnvData;\n private otherEnv: EnvData;\n private baseEnv?: EnvData;\n private handledExtIds: string[] = [];\n constructor(\n private compIdStr: string,\n private workspaceIds: ComponentID[],\n private currentAspects: ExtensionDataList,\n private baseAspects: ExtensionDataList,\n private otherAspects: ExtensionDataList,\n private currentLabel: string,\n private otherLabel: string\n ) {}\n\n merge(): ConfigMergeResult {\n this.populateEnvs();\n const results = this.currentAspects.map((currentExt) => {\n const id = currentExt.stringId;\n if (this.handledExtIds.includes(id)) return null;\n this.handledExtIds.push(id);\n const baseExt = this.baseAspects.findExtension(id, true);\n const otherExt = this.otherAspects.findExtension(id, true);\n if (otherExt) {\n // try to 3-way-merge\n return this.mergePerStrategy({ id, currentExt, otherExt, baseExt });\n }\n // exist in current but not in other\n if (baseExt) {\n // was removed on other\n return this.basicConflictGenerator({ id, currentConfig: this.getConfig(currentExt), otherConfig: '-' });\n }\n // exist in current but not in other and base, so it got created on current. nothing to do.\n return null;\n });\n const otherAspectsNotHandledResults = this.otherAspects.map((otherExt) => {\n const id = otherExt.stringId;\n if (this.handledExtIds.includes(id)) return null;\n this.handledExtIds.push(id);\n const baseExt = this.baseAspects.findExtension(id, true);\n if (baseExt) {\n // was removed on current\n return this.basicConflictGenerator({ id, currentConfig: '-', otherConfig: this.getConfig(otherExt) });\n }\n // exist in other but not in current and base, so it got created on other.\n return { id, mergedConfig: this.getConfig(otherExt) };\n });\n const envResult = this.envStrategy();\n return new ConfigMergeResult(this.compIdStr, compact([...results, ...otherAspectsNotHandledResults, envResult]));\n }\n\n private populateEnvs() {\n // populate ids\n const getEnvId = (ext: ExtensionDataList) => {\n const envsAspect = ext.findCoreExtension(EnvsAspect.id);\n if (!envsAspect) throw new Error(`unable to find ${EnvsAspect.id} aspect for ${this.compIdStr}`);\n const env = envsAspect.config.env || envsAspect.data.id;\n if (!env)\n throw new Error(`unable to find env for ${this.compIdStr}, the config and data of ${EnvsAspect.id} are empty}`);\n return env;\n };\n const currentEnv = getEnvId(this.currentAspects);\n this.currentEnv = { id: currentEnv };\n const otherEnv = getEnvId(this.otherAspects);\n this.otherEnv = { id: otherEnv };\n const baseEnv = this.baseAspects ? getEnvId(this.baseAspects) : undefined;\n if (baseEnv) this.baseEnv = { id: baseEnv };\n\n // populate version\n const currentEnvAspect = this.currentAspects.findExtension(currentEnv, true);\n if (currentEnvAspect) {\n this.handledExtIds.push(currentEnvAspect.stringId);\n this.currentEnv.version = currentEnvAspect.extensionId?.version;\n this.currentEnv.config = currentEnvAspect.rawConfig;\n }\n const otherEnvAspect = this.otherAspects.findExtension(otherEnv, true);\n if (otherEnvAspect) {\n this.handledExtIds.push(otherEnvAspect.stringId);\n this.otherEnv.version = otherEnvAspect.extensionId?.version;\n this.otherEnv.config = otherEnvAspect.rawConfig;\n }\n if (this.baseEnv) {\n const baseEnvAspect = this.baseAspects.findExtension(baseEnv, true);\n if (baseEnvAspect) {\n this.baseEnv.version = baseEnvAspect.extensionId?.version;\n this.baseEnv.config = baseEnvAspect.rawConfig;\n }\n }\n }\n\n private envStrategy(): MergeStrategyResult | null {\n const mergeStrategyParams: MergeStrategyParamsWithRemoved = {\n id: EnvsAspect.id,\n currentConfig: {\n env: this.currentEnv.version ? `${this.currentEnv.id}@${this.currentEnv.version}` : this.currentEnv.id,\n },\n otherConfig: { env: this.otherEnv.version ? `${this.otherEnv.id}@${this.otherEnv.version}` : this.otherEnv.id },\n };\n if (this.baseEnv) {\n mergeStrategyParams.baseConfig = {\n env: this.baseEnv?.version ? `${this.baseEnv.id}@${this.baseEnv.version}` : this.baseEnv?.id,\n };\n }\n if (this.currentEnv.id === this.otherEnv.id && this.currentEnv.version === this.otherEnv.version) {\n return null;\n }\n if (this.isIdInWorkspace(this.currentEnv.id)) {\n // the env currently used is part of the workspace, that's what the user needs. don't try to resolve anything.\n return null;\n }\n return this.basicConfigMerge(mergeStrategyParams);\n }\n\n private areConfigsEqual(configA: GenericConfigOrRemoved, configB: GenericConfigOrRemoved) {\n return JSON.stringify(configA) === JSON.stringify(configB);\n }\n\n private mergePerStrategy(mergeStrategyParams: MergeStrategyParams): MergeStrategyResult | null {\n const { id, currentExt, otherExt, baseExt } = mergeStrategyParams;\n const depResolverResult = this.depResolverStrategy(mergeStrategyParams);\n if (depResolverResult) {\n return depResolverResult;\n }\n const currentConfig = this.getConfig(currentExt);\n const otherConfig = this.getConfig(otherExt);\n const baseConfig = baseExt ? this.getConfig(baseExt) : undefined;\n\n return this.basicConfigMerge({ id, currentConfig, otherConfig, baseConfig });\n }\n\n private basicConfigMerge(mergeStrategyParams: MergeStrategyParamsWithRemoved) {\n const { id, currentConfig, otherConfig, baseConfig } = mergeStrategyParams;\n if (this.areConfigsEqual(currentConfig, otherConfig)) {\n return null;\n }\n if (baseConfig && this.areConfigsEqual(baseConfig, otherConfig)) {\n // was changed on current\n return null;\n }\n if (baseConfig && this.areConfigsEqual(baseConfig, currentConfig)) {\n // was changed on other\n return { id, mergedConfig: otherConfig };\n }\n // either no baseConfig, or baseConfig is also different from both: other and local. that's a conflict.\n const mergeStrategyConfigParams = { id, currentConfig, otherConfig, baseConfig };\n return this.basicConflictGenerator(mergeStrategyConfigParams);\n }\n\n private basicConflictGenerator({\n id,\n currentConfig,\n otherConfig,\n }: MergeStrategyParamsWithRemoved): MergeStrategyResult {\n // uncomment to debug\n // console.log('basicConflictGenerator', this.compIdStr, id, 'currentConfig', currentConfig, 'otherConfig', otherConfig);\n let conflict: string;\n if (currentConfig === '-') {\n conflict = `${'<'.repeat(7)} ${this.currentLabel}\n=======\n\"${id}\": ${JSON.stringify(otherConfig, undefined, 2)}\n${'>'.repeat(7)} ${this.otherLabel}`;\n } else if (otherConfig === '-') {\n conflict = `${'<'.repeat(7)} ${this.currentLabel}\n\"${id}\": ${JSON.stringify(otherConfig, undefined, 2)}\n=======\n${'>'.repeat(7)} ${this.otherLabel}`;\n } else {\n const formatConfig = (conf: GenericConfigOrRemoved) => {\n const confStr = JSON.stringify(conf, undefined, 2);\n const confStrSplit = confStr.split('\\n');\n confStrSplit.shift(); // remove first {\n confStrSplit.pop(); // remove last }\n return confStrSplit.join('\\n');\n };\n conflict = `\"${id}\": {\n${'<'.repeat(7)} ${this.currentLabel}\n${formatConfig(currentConfig)}\n=======\n${formatConfig(otherConfig)}\n${'>'.repeat(7)} ${this.otherLabel}\n}`;\n }\n\n return { id, conflict };\n }\n\n private depResolverStrategy(params: MergeStrategyParams): MergeStrategyResult | undefined {\n if (params.id !== DependencyResolverAspect.id) return undefined;\n const { currentExt, otherExt, baseExt } = params;\n\n const currentConfig = this.getConfig(currentExt);\n const otherConfig = this.getConfig(otherExt);\n const baseConfig = baseExt ? this.getConfig(baseExt) : undefined;\n // const mergeStrategyConfigParams = { id, currentConfig, otherConfig, baseConfig };\n\n const mergedPolicy = {\n dependencies: [],\n devDependencies: [],\n peerDependencies: [],\n };\n const conflictedPolicy = {\n dependencies: [],\n devDependencies: [],\n peerDependencies: [],\n };\n let isMerged = false;\n let hasConflict = false;\n const conflictIndicator = 'CONFLICT::';\n const nonPolicyConfigToMerged = {};\n const nonPolicyConfigConflict = {};\n const handleConfigMerge = () => {\n if (this.areConfigsEqual(currentConfig, otherConfig)) {\n return;\n }\n if (baseConfig && this.areConfigsEqual(baseConfig, otherConfig)) {\n // was changed on current\n return;\n }\n if (currentConfig === '-' || otherConfig === '-') {\n throw new Error('not implemented. Is it possible to have it as minus?');\n }\n const allKeys = uniq([...Object.keys(currentConfig), ...Object.keys(otherConfig)]);\n const otherKeys = allKeys.filter((key) => key !== 'policy');\n if (baseConfig && this.areConfigsEqual(baseConfig, currentConfig)) {\n // was changed on other\n otherKeys.forEach((key) => {\n if (otherConfig[key]) {\n nonPolicyConfigToMerged[key] = otherConfig[key];\n }\n });\n if (otherConfig.policy) {\n ['dependencies', 'devDependencies', 'peerDependencies'].forEach((depType) => {\n if (!otherConfig.policy[depType]) return;\n Object.keys(otherConfig.policy[depType]).forEach((depName) => {\n mergedPolicy[depType].push({\n name: depName,\n version: otherConfig.policy[depType][depName],\n force: true,\n });\n });\n });\n }\n isMerged = true;\n return;\n }\n\n // either no baseConfig, or baseConfig is also different from both: other and local. that's a conflict.\n // we have to differentiate between a conflict in the policy, which might be merged with conflict with dependencies data.\n // and a conflict with other fields of config.\n otherKeys.forEach((key) => {\n if (JSON.stringify(currentConfig[key]) === JSON.stringify(otherConfig[key])) {\n return;\n }\n if (baseConfig && JSON.stringify(baseConfig[key]) === JSON.stringify(otherConfig[key])) {\n // was changed on current\n return;\n }\n if (baseConfig && JSON.stringify(baseConfig[key]) === JSON.stringify(currentConfig[key])) {\n // was changed on other\n nonPolicyConfigToMerged[key] = otherConfig[key];\n return;\n }\n // conflict\n nonPolicyConfigConflict[key] = { current: currentConfig[key], other: otherConfig[key] };\n });\n\n if (!currentConfig.policy && !otherConfig.policy) return;\n\n ['dependencies', 'devDependencies', 'peerDependencies'].forEach((depType) => {\n const currentPolicy = currentConfig.policy?.[depType];\n const otherPolicy = otherConfig.policy?.[depType];\n const allPolicyKeys = uniq(Object.keys(currentPolicy || {}).concat(Object.keys(otherPolicy || {})));\n if (!allPolicyKeys.length) return;\n\n allPolicyKeys.forEach((pkgName) => {\n const currentVal = currentPolicy?.[pkgName];\n const otherVal = otherPolicy?.[pkgName];\n const baseVal = baseConfig !== '-' && baseConfig?.policy?.[depType]?.[pkgName];\n if (this.isEnv(pkgName)) {\n // ignore the envs\n return;\n }\n if (currentVal === otherVal) {\n // mergedPolicy[depType][pkgName] = currentVal;\n return;\n }\n if (baseVal === otherVal) {\n // mergedPolicy[depType][pkgName] = currentVal;\n return;\n }\n if (baseVal === currentVal) {\n mergedPolicy[depType].push({\n name: pkgName,\n version: otherVal,\n force: true,\n });\n isMerged = true;\n return;\n }\n // either no baseVal, or baseVal is also different from both: other and local. that's a conflict.\n hasConflict = true;\n conflictedPolicy[depType].push({\n name: pkgName,\n version: `${conflictIndicator}${currentVal}::${otherVal}::`,\n force: true,\n });\n });\n });\n };\n\n handleConfigMerge();\n\n const lifecycleToDepType = {\n runtime: 'dependencies',\n dev: 'devDependencies',\n peer: 'peerDependencies',\n };\n const hasConfigForDep = (depType: string, depName: string) => mergedPolicy[depType].find((d) => d.name === depName);\n const addSerializedDepToPolicy = (dep: SerializedDependencyWithPolicy) => {\n const depType = lifecycleToDepType[dep.lifecycle];\n\n if (hasConfigForDep(depType, dep.id)) {\n return; // there is already config for it.\n }\n mergedPolicy[depType].push({\n name: dep.id,\n version: dep.policy || dep.version,\n force: false,\n });\n isMerged = true;\n };\n\n const getAutoDeps = (ext: ExtensionDataList): SerializedDependencyWithPolicy[] => {\n const data = ext.findCoreExtension(DependencyResolverAspect.id)?.data.dependencies;\n if (!data) return [];\n const policy = ext.findCoreExtension(DependencyResolverAspect.id)?.data.policy || [];\n return data\n .filter((d) => d.source === 'auto')\n .map((d) => {\n const idWithoutVersion = d.__type === 'package' ? d.id : d.id.split('@')[0];\n const existingPolicy = policy.find((p) => p.dependencyId === idWithoutVersion);\n const getPolicyVer = () => {\n if (d.__type === 'package') return undefined; // for packages, the policy is already the version\n if (existingPolicy) return existingPolicy.value.version; // currently it's missing, will be implemented by @Gilad\n if (!semver.valid(d.version)) return d.version; // could be a hash\n // default to `^` or ~ if starts with zero, until we save the policy from the workspace during tag/snap.\n return d.version.startsWith('0.') ? `~${d.version}` : `^${d.version}`;\n };\n return {\n ...d,\n id: idWithoutVersion,\n policy: getPolicyVer(),\n };\n });\n };\n\n const currentData = getAutoDeps(this.currentAspects);\n const otherData = getAutoDeps(this.otherAspects);\n const currentAndOtherData = uniqBy(currentData.concat(otherData), (d) => d.id);\n const baseData = getAutoDeps(this.baseAspects);\n\n // uncomment to debug\n // console.log('\\n\\n**************', this.compIdStr, '**************');\n // console.log('currentData', currentData.length, '\\n', currentData.map((d) => `${d.__type} ${d.id} ${d.version}`).join('\\n'));\n // console.log('otherData', otherData.length, '\\n', otherData.map((d) => `${d.__type} ${d.id} ${d.version}`).join('\\n'));\n // console.log('otherData', baseData.length, '\\n', baseData.map((d) => `${d.__type} ${d.id} ${d.version}`).join('\\n'));\n // console.log('** END **\\n\\n');\n\n currentAndOtherData.forEach((depData) => {\n if (this.isEnv(depData.id)) {\n // ignore the envs\n return;\n }\n const currentDep = currentData.find((d) => d.id === depData.id);\n const otherDep = otherData.find((d) => d.id === depData.id);\n if (!otherDep) {\n return;\n }\n if (!currentDep) {\n // only on other\n addSerializedDepToPolicy(otherDep);\n return;\n }\n const currentId = currentDep.id;\n const currentVer = currentDep.policy || currentDep.version;\n const otherVer = otherDep.policy || otherDep.version;\n if (currentVer === otherVer) {\n return;\n }\n const baseDep = baseData.find((d) => d.id === currentId);\n const baseVer = baseDep?.policy || baseDep?.version;\n if (baseVer && baseVer === otherVer) {\n return;\n }\n if (currentDep.__type === 'component' && this.isIdInWorkspace(currentId)) {\n // dependencies that exist in the workspace, should be ignored. they'll be resolved later to the version in the ws.\n return;\n }\n if (baseVer && baseVer === currentVer) {\n addSerializedDepToPolicy(otherDep);\n return;\n }\n // either no baseVal, or baseVal is also different from both: other and local. that's probably a conflict.\n const depType = lifecycleToDepType[currentDep.lifecycle];\n if (hasConfigForDep(depType, currentDep.id)) {\n return; // there is already config for it.\n }\n // try to resolve according to semver\n if (\n currentDep.policy &&\n otherDep.policy &&\n isRange(currentDep.policy, currentDep.id) &&\n isRange(otherDep.policy, otherDep.id)\n ) {\n if (semver.satisfies(currentDep.version, otherDep.policy)) {\n return;\n }\n if (semver.satisfies(otherDep.version, currentDep.policy)) {\n addSerializedDepToPolicy(otherDep);\n return;\n }\n }\n hasConflict = true;\n conflictedPolicy[depType].push({\n name: currentDep.id,\n version: `${conflictIndicator}${currentVer}::${otherVer}::`,\n force: false,\n });\n });\n\n ['dependencies', 'devDependencies', 'peerDependencies'].forEach((depType) => {\n if (!mergedPolicy[depType].length) delete mergedPolicy[depType];\n if (!conflictedPolicy[depType].length) delete conflictedPolicy[depType];\n });\n\n let conflictStr: string | undefined;\n if (hasConflict) {\n const mergedConfigSplit = JSON.stringify({ policy: conflictedPolicy }, undefined, 2).split('\\n');\n const conflictLines = mergedConfigSplit.map((line) => {\n if (!line.includes(conflictIndicator)) return line;\n const [, currentVal, otherVal] = line.split('::');\n return `${'<'.repeat(7)} ${this.currentLabel}\n \"version\": \"${currentVal}\",\n=======\n \"version\": \"${otherVal}\",\n${'>'.repeat(7)} ${this.otherLabel}`;\n });\n // replace the first line with line with the id\n conflictLines.shift();\n conflictLines.unshift(`\"${params.id}\": {`);\n conflictStr = conflictLines.join('\\n');\n }\n const config = isMerged ? { ...nonPolicyConfigToMerged, policy: mergedPolicy } : undefined;\n\n return { id: params.id, mergedConfig: config, conflict: conflictStr };\n }\n\n private isIdInWorkspace(id: string): boolean {\n return Boolean(this.workspaceIds.find((c) => c.toStringWithoutVersion() === id));\n }\n\n private isEnv(id: string) {\n return id === this.currentEnv.id || id === this.otherEnv.id;\n }\n\n private getConfig(ext: ExtensionDataEntry) {\n if (ext.rawConfig === '-') return ext.rawConfig;\n return omit(ext.rawConfig, ['__specific']);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAA0D;AAAA;AA0B1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,YAAY,CAAC;EAKxBC,WAAW,CACDC,SAAiB,EACjBC,YAA2B,EAC3BC,cAAiC,EACjCC,WAA8B,EAC9BC,YAA+B,EAC/BC,YAAoB,EACpBC,UAAkB,EAC1B;IAAA,KAPQN,SAAiB,GAAjBA,SAAiB;IAAA,KACjBC,YAA2B,GAA3BA,YAA2B;IAAA,KAC3BC,cAAiC,GAAjCA,cAAiC;IAAA,KACjCC,WAA8B,GAA9BA,WAA8B;IAAA,KAC9BC,YAA+B,GAA/BA,YAA+B;IAAA,KAC/BC,YAAoB,GAApBA,YAAoB;IAAA,KACpBC,UAAkB,GAAlBA,UAAkB;IAAA;IAAA;IAAA;IAAA,uDARM,EAAE;EASjC;EAEHC,KAAK,GAAsB;IACzB,IAAI,CAACC,YAAY,EAAE;IACnB,MAAMC,OAAO,GAAG,IAAI,CAACP,cAAc,CAACQ,GAAG,CAAEC,UAAU,IAAK;MACtD,MAAMC,EAAE,GAAGD,UAAU,CAACE,QAAQ;MAC9B,IAAI,IAAI,CAACC,aAAa,CAACC,QAAQ,CAACH,EAAE,CAAC,EAAE,OAAO,IAAI;MAChD,IAAI,CAACE,aAAa,CAACE,IAAI,CAACJ,EAAE,CAAC;MAC3B,MAAMK,OAAO,GAAG,IAAI,CAACd,WAAW,CAACe,aAAa,CAACN,EAAE,EAAE,IAAI,CAAC;MACxD,MAAMO,QAAQ,GAAG,IAAI,CAACf,YAAY,CAACc,aAAa,CAACN,EAAE,EAAE,IAAI,CAAC;MAC1D,IAAIO,QAAQ,EAAE;QACZ;QACA,OAAO,IAAI,CAACC,gBAAgB,CAAC;UAAER,EAAE;UAAED,UAAU;UAAEQ,QAAQ;UAAEF;QAAQ,CAAC,CAAC;MACrE;MACA;MACA,IAAIA,OAAO,EAAE;QACX;QACA,OAAO,IAAI,CAACI,sBAAsB,CAAC;UAAET,EAAE;UAAEU,aAAa,EAAE,IAAI,CAACC,SAAS,CAACZ,UAAU,CAAC;UAAEa,WAAW,EAAE;QAAI,CAAC,CAAC;MACzG;MACA;MACA,OAAO,IAAI;IACb,CAAC,CAAC;IACF,MAAMC,6BAA6B,GAAG,IAAI,CAACrB,YAAY,CAACM,GAAG,CAAES,QAAQ,IAAK;MACxE,MAAMP,EAAE,GAAGO,QAAQ,CAACN,QAAQ;MAC5B,IAAI,IAAI,CAACC,aAAa,CAACC,QAAQ,CAACH,EAAE,CAAC,EAAE,OAAO,IAAI;MAChD,IAAI,CAACE,aAAa,CAACE,IAAI,CAACJ,EAAE,CAAC;MAC3B,MAAMK,OAAO,GAAG,IAAI,CAACd,WAAW,CAACe,aAAa,CAACN,EAAE,EAAE,IAAI,CAAC;MACxD,IAAIK,OAAO,EAAE;QACX;QACA,OAAO,IAAI,CAACI,sBAAsB,CAAC;UAAET,EAAE;UAAEU,aAAa,EAAE,GAAG;UAAEE,WAAW,EAAE,IAAI,CAACD,SAAS,CAACJ,QAAQ;QAAE,CAAC,CAAC;MACvG;MACA;MACA,OAAO;QAAEP,EAAE;QAAEc,YAAY,EAAE,IAAI,CAACH,SAAS,CAACJ,QAAQ;MAAE,CAAC;IACvD,CAAC,CAAC;IACF,MAAMQ,SAAS,GAAG,IAAI,CAACC,WAAW,EAAE;IACpC,OAAO,KAAIC,sCAAiB,EAAC,IAAI,CAAC7B,SAAS,EAAE,IAAA8B,iBAAO,EAAC,CAAC,GAAGrB,OAAO,EAAE,GAAGgB,6BAA6B,EAAEE,SAAS,CAAC,CAAC,CAAC;EAClH;EAEQnB,YAAY,GAAG;IACrB;IACA,MAAMuB,QAAQ,GAAIC,GAAsB,IAAK;MAC3C,MAAMC,UAAU,GAAGD,GAAG,CAACE,iBAAiB,CAACC,kBAAU,CAACvB,EAAE,CAAC;MACvD,IAAI,CAACqB,UAAU,EAAE,MAAM,IAAIG,KAAK,CAAE,kBAAiBD,kBAAU,CAACvB,EAAG,eAAc,IAAI,CAACZ,SAAU,EAAC,CAAC;MAChG,MAAMqC,GAAG,GAAGJ,UAAU,CAACK,MAAM,CAACD,GAAG,IAAIJ,UAAU,CAACM,IAAI,CAAC3B,EAAE;MACvD,IAAI,CAACyB,GAAG,EACN,MAAM,IAAID,KAAK,CAAE,0BAAyB,IAAI,CAACpC,SAAU,4BAA2BmC,kBAAU,CAACvB,EAAG,aAAY,CAAC;MACjH,OAAOyB,GAAG;IACZ,CAAC;IACD,MAAMG,UAAU,GAAGT,QAAQ,CAAC,IAAI,CAAC7B,cAAc,CAAC;IAChD,IAAI,CAACsC,UAAU,GAAG;MAAE5B,EAAE,EAAE4B;IAAW,CAAC;IACpC,MAAMC,QAAQ,GAAGV,QAAQ,CAAC,IAAI,CAAC3B,YAAY,CAAC;IAC5C,IAAI,CAACqC,QAAQ,GAAG;MAAE7B,EAAE,EAAE6B;IAAS,CAAC;IAChC,MAAMC,OAAO,GAAG,IAAI,CAACvC,WAAW,GAAG4B,QAAQ,CAAC,IAAI,CAAC5B,WAAW,CAAC,GAAGwC,SAAS;IACzE,IAAID,OAAO,EAAE,IAAI,CAACA,OAAO,GAAG;MAAE9B,EAAE,EAAE8B;IAAQ,CAAC;;IAE3C;IACA,MAAME,gBAAgB,GAAG,IAAI,CAAC1C,cAAc,CAACgB,aAAa,CAACsB,UAAU,EAAE,IAAI,CAAC;IAC5E,IAAII,gBAAgB,EAAE;MAAA;MACpB,IAAI,CAAC9B,aAAa,CAACE,IAAI,CAAC4B,gBAAgB,CAAC/B,QAAQ,CAAC;MAClD,IAAI,CAAC2B,UAAU,CAACK,OAAO,4BAAGD,gBAAgB,CAACE,WAAW,0DAA5B,sBAA8BD,OAAO;MAC/D,IAAI,CAACL,UAAU,CAACF,MAAM,GAAGM,gBAAgB,CAACG,SAAS;IACrD;IACA,MAAMC,cAAc,GAAG,IAAI,CAAC5C,YAAY,CAACc,aAAa,CAACuB,QAAQ,EAAE,IAAI,CAAC;IACtE,IAAIO,cAAc,EAAE;MAAA;MAClB,IAAI,CAAClC,aAAa,CAACE,IAAI,CAACgC,cAAc,CAACnC,QAAQ,CAAC;MAChD,IAAI,CAAC4B,QAAQ,CAACI,OAAO,4BAAGG,cAAc,CAACF,WAAW,0DAA1B,sBAA4BD,OAAO;MAC3D,IAAI,CAACJ,QAAQ,CAACH,MAAM,GAAGU,cAAc,CAACD,SAAS;IACjD;IACA,IAAI,IAAI,CAACL,OAAO,EAAE;MAChB,MAAMO,aAAa,GAAG,IAAI,CAAC9C,WAAW,CAACe,aAAa,CAACwB,OAAO,EAAE,IAAI,CAAC;MACnE,IAAIO,aAAa,EAAE;QAAA;QACjB,IAAI,CAACP,OAAO,CAACG,OAAO,4BAAGI,aAAa,CAACH,WAAW,0DAAzB,sBAA2BD,OAAO;QACzD,IAAI,CAACH,OAAO,CAACJ,MAAM,GAAGW,aAAa,CAACF,SAAS;MAC/C;IACF;EACF;EAEQnB,WAAW,GAA+B;IAChD,MAAMsB,mBAAmD,GAAG;MAC1DtC,EAAE,EAAEuB,kBAAU,CAACvB,EAAE;MACjBU,aAAa,EAAE;QACbe,GAAG,EAAE,IAAI,CAACG,UAAU,CAACK,OAAO,GAAI,GAAE,IAAI,CAACL,UAAU,CAAC5B,EAAG,IAAG,IAAI,CAAC4B,UAAU,CAACK,OAAQ,EAAC,GAAG,IAAI,CAACL,UAAU,CAAC5B;MACtG,CAAC;MACDY,WAAW,EAAE;QAAEa,GAAG,EAAE,IAAI,CAACI,QAAQ,CAACI,OAAO,GAAI,GAAE,IAAI,CAACJ,QAAQ,CAAC7B,EAAG,IAAG,IAAI,CAAC6B,QAAQ,CAACI,OAAQ,EAAC,GAAG,IAAI,CAACJ,QAAQ,CAAC7B;MAAG;IAChH,CAAC;IACD,IAAI,IAAI,CAAC8B,OAAO,EAAE;MAAA;MAChBQ,mBAAmB,CAACC,UAAU,GAAG;QAC/Bd,GAAG,EAAE,qBAAI,CAACK,OAAO,0CAAZ,cAAcG,OAAO,GAAI,GAAE,IAAI,CAACH,OAAO,CAAC9B,EAAG,IAAG,IAAI,CAAC8B,OAAO,CAACG,OAAQ,EAAC,qBAAG,IAAI,CAACH,OAAO,mDAAZ,eAAc9B;MAC5F,CAAC;IACH;IACA,IAAI,IAAI,CAAC4B,UAAU,CAAC5B,EAAE,KAAK,IAAI,CAAC6B,QAAQ,CAAC7B,EAAE,IAAI,IAAI,CAAC4B,UAAU,CAACK,OAAO,KAAK,IAAI,CAACJ,QAAQ,CAACI,OAAO,EAAE;MAChG,OAAO,IAAI;IACb;IACA,IAAI,IAAI,CAACO,eAAe,CAAC,IAAI,CAACZ,UAAU,CAAC5B,EAAE,CAAC,EAAE;MAC5C;MACA,OAAO,IAAI;IACb;IACA,OAAO,IAAI,CAACyC,gBAAgB,CAACH,mBAAmB,CAAC;EACnD;EAEQI,eAAe,CAACC,OAA+B,EAAEC,OAA+B,EAAE;IACxF,OAAOC,IAAI,CAACC,SAAS,CAACH,OAAO,CAAC,KAAKE,IAAI,CAACC,SAAS,CAACF,OAAO,CAAC;EAC5D;EAEQpC,gBAAgB,CAAC8B,mBAAwC,EAA8B;IAC7F,MAAM;MAAEtC,EAAE;MAAED,UAAU;MAAEQ,QAAQ;MAAEF;IAAQ,CAAC,GAAGiC,mBAAmB;IACjE,MAAMS,iBAAiB,GAAG,IAAI,CAACC,mBAAmB,CAACV,mBAAmB,CAAC;IACvE,IAAIS,iBAAiB,EAAE;MACrB,OAAOA,iBAAiB;IAC1B;IACA,MAAMrC,aAAa,GAAG,IAAI,CAACC,SAAS,CAACZ,UAAU,CAAC;IAChD,MAAMa,WAAW,GAAG,IAAI,CAACD,SAAS,CAACJ,QAAQ,CAAC;IAC5C,MAAMgC,UAAU,GAAGlC,OAAO,GAAG,IAAI,CAACM,SAAS,CAACN,OAAO,CAAC,GAAG0B,SAAS;IAEhE,OAAO,IAAI,CAACU,gBAAgB,CAAC;MAAEzC,EAAE;MAAEU,aAAa;MAAEE,WAAW;MAAE2B;IAAW,CAAC,CAAC;EAC9E;EAEQE,gBAAgB,CAACH,mBAAmD,EAAE;IAC5E,MAAM;MAAEtC,EAAE;MAAEU,aAAa;MAAEE,WAAW;MAAE2B;IAAW,CAAC,GAAGD,mBAAmB;IAC1E,IAAI,IAAI,CAACI,eAAe,CAAChC,aAAa,EAAEE,WAAW,CAAC,EAAE;MACpD,OAAO,IAAI;IACb;IACA,IAAI2B,UAAU,IAAI,IAAI,CAACG,eAAe,CAACH,UAAU,EAAE3B,WAAW,CAAC,EAAE;MAC/D;MACA,OAAO,IAAI;IACb;IACA,IAAI2B,UAAU,IAAI,IAAI,CAACG,eAAe,CAACH,UAAU,EAAE7B,aAAa,CAAC,EAAE;MACjE;MACA,OAAO;QAAEV,EAAE;QAAEc,YAAY,EAAEF;MAAY,CAAC;IAC1C;IACA;IACA,MAAMqC,yBAAyB,GAAG;MAAEjD,EAAE;MAAEU,aAAa;MAAEE,WAAW;MAAE2B;IAAW,CAAC;IAChF,OAAO,IAAI,CAAC9B,sBAAsB,CAACwC,yBAAyB,CAAC;EAC/D;EAEQxC,sBAAsB,CAAC;IAC7BT,EAAE;IACFU,aAAa;IACbE;EAC8B,CAAC,EAAuB;IACtD;IACA;IACA,IAAIsC,QAAgB;IACpB,IAAIxC,aAAa,KAAK,GAAG,EAAE;MACzBwC,QAAQ,GAAI,GAAE,GAAG,CAACC,MAAM,CAAC,CAAC,CAAE,IAAG,IAAI,CAAC1D,YAAa;AACvD;AACA,GAAGO,EAAG,MAAK6C,IAAI,CAACC,SAAS,CAAClC,WAAW,EAAEmB,SAAS,EAAE,CAAC,CAAE;AACrD,EAAE,GAAG,CAACoB,MAAM,CAAC,CAAC,CAAE,IAAG,IAAI,CAACzD,UAAW,EAAC;IAChC,CAAC,MAAM,IAAIkB,WAAW,KAAK,GAAG,EAAE;MAC9BsC,QAAQ,GAAI,GAAE,GAAG,CAACC,MAAM,CAAC,CAAC,CAAE,IAAG,IAAI,CAAC1D,YAAa;AACvD,GAAGO,EAAG,MAAK6C,IAAI,CAACC,SAAS,CAAClC,WAAW,EAAEmB,SAAS,EAAE,CAAC,CAAE;AACrD;AACA,EAAE,GAAG,CAACoB,MAAM,CAAC,CAAC,CAAE,IAAG,IAAI,CAACzD,UAAW,EAAC;IAChC,CAAC,MAAM;MACL,MAAM0D,YAAY,GAAIC,IAA4B,IAAK;QACrD,MAAMC,OAAO,GAAGT,IAAI,CAACC,SAAS,CAACO,IAAI,EAAEtB,SAAS,EAAE,CAAC,CAAC;QAClD,MAAMwB,YAAY,GAAGD,OAAO,CAACE,KAAK,CAAC,IAAI,CAAC;QACxCD,YAAY,CAACE,KAAK,EAAE,CAAC,CAAC;QACtBF,YAAY,CAACG,GAAG,EAAE,CAAC,CAAC;QACpB,OAAOH,YAAY,CAACI,IAAI,CAAC,IAAI,CAAC;MAChC,CAAC;MACDT,QAAQ,GAAI,IAAGlD,EAAG;AACxB,EAAE,GAAG,CAACmD,MAAM,CAAC,CAAC,CAAE,IAAG,IAAI,CAAC1D,YAAa;AACrC,EAAE2D,YAAY,CAAC1C,aAAa,CAAE;AAC9B;AACA,EAAE0C,YAAY,CAACxC,WAAW,CAAE;AAC5B,EAAE,GAAG,CAACuC,MAAM,CAAC,CAAC,CAAE,IAAG,IAAI,CAACzD,UAAW;AACnC,EAAE;IACE;IAEA,OAAO;MAAEM,EAAE;MAAEkD;IAAS,CAAC;EACzB;EAEQF,mBAAmB,CAACY,MAA2B,EAAmC;IACxF,IAAIA,MAAM,CAAC5D,EAAE,KAAK6D,8CAAwB,CAAC7D,EAAE,EAAE,OAAO+B,SAAS;IAC/D,MAAM;MAAEhC,UAAU;MAAEQ,QAAQ;MAAEF;IAAQ,CAAC,GAAGuD,MAAM;IAEhD,MAAMlD,aAAa,GAAG,IAAI,CAACC,SAAS,CAACZ,UAAU,CAAC;IAChD,MAAMa,WAAW,GAAG,IAAI,CAACD,SAAS,CAACJ,QAAQ,CAAC;IAC5C,MAAMgC,UAAU,GAAGlC,OAAO,GAAG,IAAI,CAACM,SAAS,CAACN,OAAO,CAAC,GAAG0B,SAAS;IAChE;;IAEA,MAAM+B,YAAY,GAAG;MACnBC,YAAY,EAAE,EAAE;MAChBC,eAAe,EAAE,EAAE;MACnBC,gBAAgB,EAAE;IACpB,CAAC;IACD,MAAMC,gBAAgB,GAAG;MACvBH,YAAY,EAAE,EAAE;MAChBC,eAAe,EAAE,EAAE;MACnBC,gBAAgB,EAAE;IACpB,CAAC;IACD,IAAIE,QAAQ,GAAG,KAAK;IACpB,IAAIC,WAAW,GAAG,KAAK;IACvB,MAAMC,iBAAiB,GAAG,YAAY;IACtC,MAAMC,uBAAuB,GAAG,CAAC,CAAC;IAClC,MAAMC,uBAAuB,GAAG,CAAC,CAAC;IAClC,MAAMC,iBAAiB,GAAG,MAAM;MAC9B,IAAI,IAAI,CAAC9B,eAAe,CAAChC,aAAa,EAAEE,WAAW,CAAC,EAAE;QACpD;MACF;MACA,IAAI2B,UAAU,IAAI,IAAI,CAACG,eAAe,CAACH,UAAU,EAAE3B,WAAW,CAAC,EAAE;QAC/D;QACA;MACF;MACA,IAAIF,aAAa,KAAK,GAAG,IAAIE,WAAW,KAAK,GAAG,EAAE;QAChD,MAAM,IAAIY,KAAK,CAAC,sDAAsD,CAAC;MACzE;MACA,MAAMiD,OAAO,GAAG,IAAAC,cAAI,EAAC,CAAC,GAAGC,MAAM,CAACC,IAAI,CAAClE,aAAa,CAAC,EAAE,GAAGiE,MAAM,CAACC,IAAI,CAAChE,WAAW,CAAC,CAAC,CAAC;MAClF,MAAMiE,SAAS,GAAGJ,OAAO,CAACK,MAAM,CAAEC,GAAG,IAAKA,GAAG,KAAK,QAAQ,CAAC;MAC3D,IAAIxC,UAAU,IAAI,IAAI,CAACG,eAAe,CAACH,UAAU,EAAE7B,aAAa,CAAC,EAAE;QACjE;QACAmE,SAAS,CAACG,OAAO,CAAED,GAAG,IAAK;UACzB,IAAInE,WAAW,CAACmE,GAAG,CAAC,EAAE;YACpBT,uBAAuB,CAACS,GAAG,CAAC,GAAGnE,WAAW,CAACmE,GAAG,CAAC;UACjD;QACF,CAAC,CAAC;QACF,IAAInE,WAAW,CAACqE,MAAM,EAAE;UACtB,CAAC,cAAc,EAAE,iBAAiB,EAAE,kBAAkB,CAAC,CAACD,OAAO,CAAEE,OAAO,IAAK;YAC3E,IAAI,CAACtE,WAAW,CAACqE,MAAM,CAACC,OAAO,CAAC,EAAE;YAClCP,MAAM,CAACC,IAAI,CAAChE,WAAW,CAACqE,MAAM,CAACC,OAAO,CAAC,CAAC,CAACF,OAAO,CAAEG,OAAO,IAAK;cAC5DrB,YAAY,CAACoB,OAAO,CAAC,CAAC9E,IAAI,CAAC;gBACzBgF,IAAI,EAAED,OAAO;gBACblD,OAAO,EAAErB,WAAW,CAACqE,MAAM,CAACC,OAAO,CAAC,CAACC,OAAO,CAAC;gBAC7CE,KAAK,EAAE;cACT,CAAC,CAAC;YACJ,CAAC,CAAC;UACJ,CAAC,CAAC;QACJ;QACAlB,QAAQ,GAAG,IAAI;QACf;MACF;;MAEA;MACA;MACA;MACAU,SAAS,CAACG,OAAO,CAAED,GAAG,IAAK;QACzB,IAAIlC,IAAI,CAACC,SAAS,CAACpC,aAAa,CAACqE,GAAG,CAAC,CAAC,KAAKlC,IAAI,CAACC,SAAS,CAAClC,WAAW,CAACmE,GAAG,CAAC,CAAC,EAAE;UAC3E;QACF;QACA,IAAIxC,UAAU,IAAIM,IAAI,CAACC,SAAS,CAACP,UAAU,CAACwC,GAAG,CAAC,CAAC,KAAKlC,IAAI,CAACC,SAAS,CAAClC,WAAW,CAACmE,GAAG,CAAC,CAAC,EAAE;UACtF;UACA;QACF;QACA,IAAIxC,UAAU,IAAIM,IAAI,CAACC,SAAS,CAACP,UAAU,CAACwC,GAAG,CAAC,CAAC,KAAKlC,IAAI,CAACC,SAAS,CAACpC,aAAa,CAACqE,GAAG,CAAC,CAAC,EAAE;UACxF;UACAT,uBAAuB,CAACS,GAAG,CAAC,GAAGnE,WAAW,CAACmE,GAAG,CAAC;UAC/C;QACF;QACA;QACAR,uBAAuB,CAACQ,GAAG,CAAC,GAAG;UAAEO,OAAO,EAAE5E,aAAa,CAACqE,GAAG,CAAC;UAAEQ,KAAK,EAAE3E,WAAW,CAACmE,GAAG;QAAE,CAAC;MACzF,CAAC,CAAC;MAEF,IAAI,CAACrE,aAAa,CAACuE,MAAM,IAAI,CAACrE,WAAW,CAACqE,MAAM,EAAE;MAElD,CAAC,cAAc,EAAE,iBAAiB,EAAE,kBAAkB,CAAC,CAACD,OAAO,CAAEE,OAAO,IAAK;QAAA;QAC3E,MAAMM,aAAa,4BAAG9E,aAAa,CAACuE,MAAM,0DAApB,sBAAuBC,OAAO,CAAC;QACrD,MAAMO,WAAW,0BAAG7E,WAAW,CAACqE,MAAM,wDAAlB,oBAAqBC,OAAO,CAAC;QACjD,MAAMQ,aAAa,GAAG,IAAAhB,cAAI,EAACC,MAAM,CAACC,IAAI,CAACY,aAAa,IAAI,CAAC,CAAC,CAAC,CAACG,MAAM,CAAChB,MAAM,CAACC,IAAI,CAACa,WAAW,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACnG,IAAI,CAACC,aAAa,CAACE,MAAM,EAAE;QAE3BF,aAAa,CAACV,OAAO,CAAEa,OAAO,IAAK;UAAA;UACjC,MAAMC,UAAU,GAAGN,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAGK,OAAO,CAAC;UAC3C,MAAME,QAAQ,GAAGN,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAGI,OAAO,CAAC;UACvC,MAAMG,OAAO,GAAGzD,UAAU,KAAK,GAAG,KAAIA,UAAU,aAAVA,UAAU,6CAAVA,UAAU,CAAE0C,MAAM,gFAAlB,mBAAqBC,OAAO,CAAC,0DAA7B,sBAAgCW,OAAO,CAAC;UAC9E,IAAI,IAAI,CAACI,KAAK,CAACJ,OAAO,CAAC,EAAE;YACvB;YACA;UACF;UACA,IAAIC,UAAU,KAAKC,QAAQ,EAAE;YAC3B;YACA;UACF;UACA,IAAIC,OAAO,KAAKD,QAAQ,EAAE;YACxB;YACA;UACF;UACA,IAAIC,OAAO,KAAKF,UAAU,EAAE;YAC1BhC,YAAY,CAACoB,OAAO,CAAC,CAAC9E,IAAI,CAAC;cACzBgF,IAAI,EAAES,OAAO;cACb5D,OAAO,EAAE8D,QAAQ;cACjBV,KAAK,EAAE;YACT,CAAC,CAAC;YACFlB,QAAQ,GAAG,IAAI;YACf;UACF;UACA;UACAC,WAAW,GAAG,IAAI;UAClBF,gBAAgB,CAACgB,OAAO,CAAC,CAAC9E,IAAI,CAAC;YAC7BgF,IAAI,EAAES,OAAO;YACb5D,OAAO,EAAG,GAAEoC,iBAAkB,GAAEyB,UAAW,KAAIC,QAAS,IAAG;YAC3DV,KAAK,EAAE;UACT,CAAC,CAAC;QACJ,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ,CAAC;IAEDb,iBAAiB,EAAE;IAEnB,MAAM0B,kBAAkB,GAAG;MACzBC,OAAO,EAAE,cAAc;MACvBC,GAAG,EAAE,iBAAiB;MACtBC,IAAI,EAAE;IACR,CAAC;IACD,MAAMC,eAAe,GAAG,CAACpB,OAAe,EAAEC,OAAe,KAAKrB,YAAY,CAACoB,OAAO,CAAC,CAACqB,IAAI,CAAEC,CAAC,IAAKA,CAAC,CAACpB,IAAI,KAAKD,OAAO,CAAC;IACnH,MAAMsB,wBAAwB,GAAIC,GAAmC,IAAK;MACxE,MAAMxB,OAAO,GAAGgB,kBAAkB,CAACQ,GAAG,CAACC,SAAS,CAAC;MAEjD,IAAIL,eAAe,CAACpB,OAAO,EAAEwB,GAAG,CAAC1G,EAAE,CAAC,EAAE;QACpC,OAAO,CAAC;MACV;;MACA8D,YAAY,CAACoB,OAAO,CAAC,CAAC9E,IAAI,CAAC;QACzBgF,IAAI,EAAEsB,GAAG,CAAC1G,EAAE;QACZiC,OAAO,EAAEyE,GAAG,CAACzB,MAAM,IAAIyB,GAAG,CAACzE,OAAO;QAClCoD,KAAK,EAAE;MACT,CAAC,CAAC;MACFlB,QAAQ,GAAG,IAAI;IACjB,CAAC;IAED,MAAMyC,WAAW,GAAIxF,GAAsB,IAAuC;MAAA;MAChF,MAAMO,IAAI,4BAAGP,GAAG,CAACE,iBAAiB,CAACuC,8CAAwB,CAAC7D,EAAE,CAAC,0DAAlD,sBAAoD2B,IAAI,CAACoC,YAAY;MAClF,IAAI,CAACpC,IAAI,EAAE,OAAO,EAAE;MACpB,MAAMsD,MAAM,GAAG,2BAAA7D,GAAG,CAACE,iBAAiB,CAACuC,8CAAwB,CAAC7D,EAAE,CAAC,2DAAlD,uBAAoD2B,IAAI,CAACsD,MAAM,KAAI,EAAE;MACpF,OAAOtD,IAAI,CACRmD,MAAM,CAAE0B,CAAC,IAAKA,CAAC,CAACK,MAAM,KAAK,MAAM,CAAC,CAClC/G,GAAG,CAAE0G,CAAC,IAAK;QACV,MAAMM,gBAAgB,GAAGN,CAAC,CAACO,MAAM,KAAK,SAAS,GAAGP,CAAC,CAACxG,EAAE,GAAGwG,CAAC,CAACxG,EAAE,CAACwD,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC3E,MAAMwD,cAAc,GAAG/B,MAAM,CAACsB,IAAI,CAAEU,CAAC,IAAKA,CAAC,CAACC,YAAY,KAAKJ,gBAAgB,CAAC;QAC9E,MAAMK,YAAY,GAAG,MAAM;UACzB,IAAIX,CAAC,CAACO,MAAM,KAAK,SAAS,EAAE,OAAOhF,SAAS,CAAC,CAAC;UAC9C,IAAIiF,cAAc,EAAE,OAAOA,cAAc,CAACI,KAAK,CAACnF,OAAO,CAAC,CAAC;UACzD,IAAI,CAACoF,iBAAM,CAACC,KAAK,CAACd,CAAC,CAACvE,OAAO,CAAC,EAAE,OAAOuE,CAAC,CAACvE,OAAO,CAAC,CAAC;UAChD;UACA,OAAOuE,CAAC,CAACvE,OAAO,CAACsF,UAAU,CAAC,IAAI,CAAC,GAAI,IAAGf,CAAC,CAACvE,OAAQ,EAAC,GAAI,IAAGuE,CAAC,CAACvE,OAAQ,EAAC;QACvE,CAAC;QACD,uCACKuE,CAAC;UACJxG,EAAE,EAAE8G,gBAAgB;UACpB7B,MAAM,EAAEkC,YAAY;QAAE;MAE1B,CAAC,CAAC;IACN,CAAC;IAED,MAAMK,WAAW,GAAGZ,WAAW,CAAC,IAAI,CAACtH,cAAc,CAAC;IACpD,MAAMmI,SAAS,GAAGb,WAAW,CAAC,IAAI,CAACpH,YAAY,CAAC;IAChD,MAAMkI,mBAAmB,GAAG,IAAAC,gBAAM,EAACH,WAAW,CAAC7B,MAAM,CAAC8B,SAAS,CAAC,EAAGjB,CAAC,IAAKA,CAAC,CAACxG,EAAE,CAAC;IAC9E,MAAM4H,QAAQ,GAAGhB,WAAW,CAAC,IAAI,CAACrH,WAAW,CAAC;;IAE9C;IACA;IACA;IACA;IACA;IACA;;IAEAmI,mBAAmB,CAAC1C,OAAO,CAAE6C,OAAO,IAAK;MACvC,IAAI,IAAI,CAAC5B,KAAK,CAAC4B,OAAO,CAAC7H,EAAE,CAAC,EAAE;QAC1B;QACA;MACF;MACA,MAAM8H,UAAU,GAAGN,WAAW,CAACjB,IAAI,CAAEC,CAAC,IAAKA,CAAC,CAACxG,EAAE,KAAK6H,OAAO,CAAC7H,EAAE,CAAC;MAC/D,MAAM+H,QAAQ,GAAGN,SAAS,CAAClB,IAAI,CAAEC,CAAC,IAAKA,CAAC,CAACxG,EAAE,KAAK6H,OAAO,CAAC7H,EAAE,CAAC;MAC3D,IAAI,CAAC+H,QAAQ,EAAE;QACb;MACF;MACA,IAAI,CAACD,UAAU,EAAE;QACf;QACArB,wBAAwB,CAACsB,QAAQ,CAAC;QAClC;MACF;MACA,MAAMC,SAAS,GAAGF,UAAU,CAAC9H,EAAE;MAC/B,MAAMiI,UAAU,GAAGH,UAAU,CAAC7C,MAAM,IAAI6C,UAAU,CAAC7F,OAAO;MAC1D,MAAMiG,QAAQ,GAAGH,QAAQ,CAAC9C,MAAM,IAAI8C,QAAQ,CAAC9F,OAAO;MACpD,IAAIgG,UAAU,KAAKC,QAAQ,EAAE;QAC3B;MACF;MACA,MAAMC,OAAO,GAAGP,QAAQ,CAACrB,IAAI,CAAEC,CAAC,IAAKA,CAAC,CAACxG,EAAE,KAAKgI,SAAS,CAAC;MACxD,MAAMI,OAAO,GAAG,CAAAD,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAElD,MAAM,MAAIkD,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAElG,OAAO;MACnD,IAAImG,OAAO,IAAIA,OAAO,KAAKF,QAAQ,EAAE;QACnC;MACF;MACA,IAAIJ,UAAU,CAACf,MAAM,KAAK,WAAW,IAAI,IAAI,CAACvE,eAAe,CAACwF,SAAS,CAAC,EAAE;QACxE;QACA;MACF;MACA,IAAII,OAAO,IAAIA,OAAO,KAAKH,UAAU,EAAE;QACrCxB,wBAAwB,CAACsB,QAAQ,CAAC;QAClC;MACF;MACA;MACA,MAAM7C,OAAO,GAAGgB,kBAAkB,CAAC4B,UAAU,CAACnB,SAAS,CAAC;MACxD,IAAIL,eAAe,CAACpB,OAAO,EAAE4C,UAAU,CAAC9H,EAAE,CAAC,EAAE;QAC3C,OAAO,CAAC;MACV;MACA;MACA,IACE8H,UAAU,CAAC7C,MAAM,IACjB8C,QAAQ,CAAC9C,MAAM,IACf,IAAAoD,6BAAO,EAACP,UAAU,CAAC7C,MAAM,EAAE6C,UAAU,CAAC9H,EAAE,CAAC,IACzC,IAAAqI,6BAAO,EAACN,QAAQ,CAAC9C,MAAM,EAAE8C,QAAQ,CAAC/H,EAAE,CAAC,EACrC;QACA,IAAIqH,iBAAM,CAACiB,SAAS,CAACR,UAAU,CAAC7F,OAAO,EAAE8F,QAAQ,CAAC9C,MAAM,CAAC,EAAE;UACzD;QACF;QACA,IAAIoC,iBAAM,CAACiB,SAAS,CAACP,QAAQ,CAAC9F,OAAO,EAAE6F,UAAU,CAAC7C,MAAM,CAAC,EAAE;UACzDwB,wBAAwB,CAACsB,QAAQ,CAAC;UAClC;QACF;MACF;MACA3D,WAAW,GAAG,IAAI;MAClBF,gBAAgB,CAACgB,OAAO,CAAC,CAAC9E,IAAI,CAAC;QAC7BgF,IAAI,EAAE0C,UAAU,CAAC9H,EAAE;QACnBiC,OAAO,EAAG,GAAEoC,iBAAkB,GAAE4D,UAAW,KAAIC,QAAS,IAAG;QAC3D7C,KAAK,EAAE;MACT,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,CAAC,cAAc,EAAE,iBAAiB,EAAE,kBAAkB,CAAC,CAACL,OAAO,CAAEE,OAAO,IAAK;MAC3E,IAAI,CAACpB,YAAY,CAACoB,OAAO,CAAC,CAACU,MAAM,EAAE,OAAO9B,YAAY,CAACoB,OAAO,CAAC;MAC/D,IAAI,CAAChB,gBAAgB,CAACgB,OAAO,CAAC,CAACU,MAAM,EAAE,OAAO1B,gBAAgB,CAACgB,OAAO,CAAC;IACzE,CAAC,CAAC;IAEF,IAAIqD,WAA+B;IACnC,IAAInE,WAAW,EAAE;MACf,MAAMoE,iBAAiB,GAAG3F,IAAI,CAACC,SAAS,CAAC;QAAEmC,MAAM,EAAEf;MAAiB,CAAC,EAAEnC,SAAS,EAAE,CAAC,CAAC,CAACyB,KAAK,CAAC,IAAI,CAAC;MAChG,MAAMiF,aAAa,GAAGD,iBAAiB,CAAC1I,GAAG,CAAE4I,IAAI,IAAK;QACpD,IAAI,CAACA,IAAI,CAACvI,QAAQ,CAACkE,iBAAiB,CAAC,EAAE,OAAOqE,IAAI;QAClD,MAAM,GAAG5C,UAAU,EAAEC,QAAQ,CAAC,GAAG2C,IAAI,CAAClF,KAAK,CAAC,IAAI,CAAC;QACjD,OAAQ,GAAE,GAAG,CAACL,MAAM,CAAC,CAAC,CAAE,IAAG,IAAI,CAAC1D,YAAa;AACrD,sBAAsBqG,UAAW;AACjC;AACA,sBAAsBC,QAAS;AAC/B,EAAE,GAAG,CAAC5C,MAAM,CAAC,CAAC,CAAE,IAAG,IAAI,CAACzD,UAAW,EAAC;MAC9B,CAAC,CAAC;MACF;MACA+I,aAAa,CAAChF,KAAK,EAAE;MACrBgF,aAAa,CAACE,OAAO,CAAE,IAAG/E,MAAM,CAAC5D,EAAG,MAAK,CAAC;MAC1CuI,WAAW,GAAGE,aAAa,CAAC9E,IAAI,CAAC,IAAI,CAAC;IACxC;IACA,MAAMjC,MAAM,GAAGyC,QAAQ,mCAAQG,uBAAuB;MAAEW,MAAM,EAAEnB;IAAY,KAAK/B,SAAS;IAE1F,OAAO;MAAE/B,EAAE,EAAE4D,MAAM,CAAC5D,EAAE;MAAEc,YAAY,EAAEY,MAAM;MAAEwB,QAAQ,EAAEqF;IAAY,CAAC;EACvE;EAEQ/F,eAAe,CAACxC,EAAU,EAAW;IAC3C,OAAO4I,OAAO,CAAC,IAAI,CAACvJ,YAAY,CAACkH,IAAI,CAAEsC,CAAC,IAAKA,CAAC,CAACC,sBAAsB,EAAE,KAAK9I,EAAE,CAAC,CAAC;EAClF;EAEQiG,KAAK,CAACjG,EAAU,EAAE;IACxB,OAAOA,EAAE,KAAK,IAAI,CAAC4B,UAAU,CAAC5B,EAAE,IAAIA,EAAE,KAAK,IAAI,CAAC6B,QAAQ,CAAC7B,EAAE;EAC7D;EAEQW,SAAS,CAACS,GAAuB,EAAE;IACzC,IAAIA,GAAG,CAACe,SAAS,KAAK,GAAG,EAAE,OAAOf,GAAG,CAACe,SAAS;IAC/C,OAAO,IAAA4G,cAAI,EAAC3H,GAAG,CAACe,SAAS,EAAE,CAAC,YAAY,CAAC,CAAC;EAC5C;AACF;AAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { MergingAspect } from './merging.aspect';
|
|
2
2
|
export { mergeReport } from './merge-cmd';
|
|
3
3
|
export type { MergingMain, ComponentMergeStatus } from './merging.main.runtime';
|
|
4
|
+
export { ConfigMergeResult } from './config-merge-result';
|
|
4
5
|
export default MergingAspect;
|
|
5
6
|
export { MergingAspect };
|
package/dist/index.js
CHANGED
|
@@ -3,6 +3,12 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
Object.defineProperty(exports, "ConfigMergeResult", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _configMergeResult().ConfigMergeResult;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
6
12
|
Object.defineProperty(exports, "MergingAspect", {
|
|
7
13
|
enumerable: true,
|
|
8
14
|
get: function () {
|
|
@@ -30,6 +36,13 @@ function _mergeCmd() {
|
|
|
30
36
|
};
|
|
31
37
|
return data;
|
|
32
38
|
}
|
|
39
|
+
function _configMergeResult() {
|
|
40
|
+
const data = require("./config-merge-result");
|
|
41
|
+
_configMergeResult = function () {
|
|
42
|
+
return data;
|
|
43
|
+
};
|
|
44
|
+
return data;
|
|
45
|
+
}
|
|
33
46
|
var _default = _merging().MergingAspect;
|
|
34
47
|
exports.default = _default;
|
|
35
48
|
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["MergingAspect"],"sources":["index.ts"],"sourcesContent":["import { MergingAspect } from './merging.aspect';\n\nexport { mergeReport } from './merge-cmd';\nexport type { MergingMain, ComponentMergeStatus } from './merging.main.runtime';\nexport default MergingAspect;\nexport { MergingAspect };\n"],"mappings":"
|
|
1
|
+
{"version":3,"names":["MergingAspect"],"sources":["index.ts"],"sourcesContent":["import { MergingAspect } from './merging.aspect';\n\nexport { mergeReport } from './merge-cmd';\nexport type { MergingMain, ComponentMergeStatus } from './merging.main.runtime';\nexport { ConfigMergeResult } from './config-merge-result';\nexport default MergingAspect;\nexport { MergingAspect };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAA0D,eAC3CA,wBAAa;AAAA"}
|
package/dist/merge-cmd.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Command, CommandOptions } from '@teambit/cli';
|
|
2
2
|
import { ApplyVersionResults } from '@teambit/legacy/dist/consumer/versions-ops/merge-version';
|
|
3
3
|
import { MergingMain } from './merging.main.runtime';
|
|
4
|
+
import { ConfigMergeResult } from './config-merge-result';
|
|
4
5
|
export declare class MergeCmd implements Command {
|
|
5
6
|
private merging;
|
|
6
7
|
name: string;
|
|
@@ -25,4 +26,6 @@ export declare class MergeCmd implements Command {
|
|
|
25
26
|
skipDependencyInstallation?: boolean;
|
|
26
27
|
}): Promise<string>;
|
|
27
28
|
}
|
|
28
|
-
export declare function mergeReport({ components, failedComponents, version, mergeSnapResults, mergeSnapError, leftUnresolvedConflicts, verbose, }: ApplyVersionResults
|
|
29
|
+
export declare function mergeReport({ components, failedComponents, version, mergeSnapResults, mergeSnapError, leftUnresolvedConflicts, verbose, configMergeResults, }: ApplyVersionResults & {
|
|
30
|
+
configMergeResults?: ConfigMergeResult[];
|
|
31
|
+
}): string;
|
package/dist/merge-cmd.js
CHANGED
|
@@ -125,7 +125,8 @@ function mergeReport({
|
|
|
125
125
|
mergeSnapResults,
|
|
126
126
|
mergeSnapError,
|
|
127
127
|
leftUnresolvedConflicts,
|
|
128
|
-
verbose
|
|
128
|
+
verbose,
|
|
129
|
+
configMergeResults
|
|
129
130
|
}) {
|
|
130
131
|
const getSuccessOutput = () => {
|
|
131
132
|
if (!components || !components.length) return '';
|
|
@@ -136,11 +137,20 @@ function mergeReport({
|
|
|
136
137
|
};
|
|
137
138
|
const getConflictSummary = () => {
|
|
138
139
|
if (!components || !components.length || !leftUnresolvedConflicts) return '';
|
|
139
|
-
const title = `\nfiles with conflicts summary\n`;
|
|
140
|
+
const title = `\n\nfiles with conflicts summary\n`;
|
|
140
141
|
const suggestion = `\n\nthe merge process wasn't completed due to the conflicts above. fix them manually and then run "bit install".
|
|
141
142
|
once ready, snap/tag the components to complete the merge.`;
|
|
142
143
|
return _chalk().default.underline(title) + (0, _mergeVersion().conflictSummaryReport)(components) + _chalk().default.yellow(suggestion);
|
|
143
144
|
};
|
|
145
|
+
const configMergeWithConflicts = (configMergeResults === null || configMergeResults === void 0 ? void 0 : configMergeResults.filter(c => c.hasConflicts())) || [];
|
|
146
|
+
const getConfigMergeConflictSummary = () => {
|
|
147
|
+
if (!configMergeWithConflicts.length) return '';
|
|
148
|
+
const comps = configMergeWithConflicts.map(c => c.compIdStr).join('\n');
|
|
149
|
+
const title = `\n\ncomponents with config-merge conflicts\n`;
|
|
150
|
+
const suggestion = `\nconflicts were found while trying to merge the config. fix them manually by editing the ${_constants().MergeConfigFilename} file in the component's dir.
|
|
151
|
+
once ready, snap/tag the components to complete the merge.`;
|
|
152
|
+
return _chalk().default.underline(title) + comps + _chalk().default.yellow(suggestion);
|
|
153
|
+
};
|
|
144
154
|
const getSnapsOutput = () => {
|
|
145
155
|
if (mergeSnapError) {
|
|
146
156
|
return `
|
|
@@ -193,7 +203,7 @@ ${mergeSnapError.message}
|
|
|
193
203
|
const autoSnappedStr = `\nTotal Snapped: ${_chalk().default.bold(autoSnapped.toString())}`;
|
|
194
204
|
return newLines + title + mergedStr + unchangedLegitimatelyStr + failedToMergeStr + autoSnappedStr;
|
|
195
205
|
};
|
|
196
|
-
return getSuccessOutput() + getFailureOutput() + getSnapsOutput() + getConflictSummary() + getSummary();
|
|
206
|
+
return getSuccessOutput() + getFailureOutput() + getSnapsOutput() + getConfigMergeConflictSummary() + getConflictSummary() + getSummary();
|
|
197
207
|
}
|
|
198
208
|
|
|
199
209
|
//# sourceMappingURL=merge-cmd.js.map
|
package/dist/merge-cmd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["MergeCmd","constructor","merging","WILDCARD_HELP","report","values","ours","theirs","manual","abort","resolve","build","noSnap","verbose","message","skipDependencyInstallation","isFeatureEnabled","BUILD_ON_CI","Boolean","mergeStrategy","getMergeStrategy","BitError","components","failedComponents","version","resolvedComponents","abortedComponents","mergeSnapResults","mergeSnapError","merge","title","componentsStr","map","c","id","toStringWithoutVersion","join","chalk","underline","green","mergeReport","leftUnresolvedConflicts","getSuccessOutput","length","bold","applyVersionReport","getConflictSummary","suggestion","conflictSummaryReport","yellow","getSnapsOutput","snappedComponents","autoSnappedResults","outputComponents","comps","component","componentOutput","toString","autoTag","filter","result","triggeredBy","searchWithoutScopeAndVersion","autoTagComp","a","AUTO_SNAPPED_MSG","getFailureOutput","body","compact","failedComponent","unchangedLegitimately","color","failureMessage","getSummary","merged","f","failedToMerge","autoSnapped","newLines","mergedStr","unchangedLegitimatelyStr","failedToMergeStr","autoSnappedStr"],"sources":["merge-cmd.ts"],"sourcesContent":["import chalk from 'chalk';\nimport { Command, CommandOptions } from '@teambit/cli';\nimport { compact } from 'lodash';\nimport { WILDCARD_HELP, AUTO_SNAPPED_MSG } from '@teambit/legacy/dist/constants';\nimport {\n ApplyVersionResults,\n conflictSummaryReport,\n getMergeStrategy,\n applyVersionReport,\n} from '@teambit/legacy/dist/consumer/versions-ops/merge-version';\nimport { isFeatureEnabled, BUILD_ON_CI } from '@teambit/legacy/dist/api/consumer/lib/feature-toggle';\nimport { BitError } from '@teambit/bit-error';\nimport { MergingMain } from './merging.main.runtime';\n\nexport class MergeCmd implements Command {\n name = 'merge [values...]';\n description = 'merge changes of different component versions';\n helpUrl = 'docs/components/merging-changes';\n group = 'development';\n extendedDescription = `merge changes of different component versions\n \\`bit merge <version> [ids...]\\` => merge changes of the given version into the checked out version\n \\`bit merge [ids...]\\` => EXPERIMENTAL. merge changes of the remote head into local, optionally use '--abort' or '--resolve'\n ${WILDCARD_HELP('merge 0.0.1')}`;\n alias = '';\n options = [\n ['', 'ours', 'in case of a conflict, override the used version with the current modification'],\n ['', 'theirs', 'in case of a conflict, override the current modification with the specified version'],\n ['', 'manual', 'in case of a conflict, leave the files with a conflict state to resolve them manually later'],\n ['', 'abort', 'EXPERIMENTAL. in case of an unresolved merge, revert to the state before the merge began'],\n ['', 'resolve', 'EXPERIMENTAL. mark an unresolved merge as resolved and create a new snap with the changes'],\n ['', 'no-snap', 'EXPERIMENTAL. do not auto snap in case the merge completed without conflicts'],\n ['', 'build', 'in case of snap during the merge, run the build-pipeline (similar to bit snap --build)'],\n ['', 'verbose', 'show details of components that were not merged legitimately'],\n ['', 'skip-dependency-installation', 'do not install packages of the imported components'],\n ['m', 'message <message>', 'EXPERIMENTAL. override the default message for the auto snap'],\n ] as CommandOptions;\n loader = true;\n\n constructor(private merging: MergingMain) {}\n\n async report(\n [values = []]: [string[]],\n {\n ours = false,\n theirs = false,\n manual = false,\n abort = false,\n resolve = false,\n build = false,\n noSnap = false,\n verbose = false,\n message,\n skipDependencyInstallation = false,\n }: {\n ours?: boolean;\n theirs?: boolean;\n manual?: boolean;\n abort?: boolean;\n resolve?: boolean;\n build?: boolean;\n noSnap?: boolean;\n verbose?: boolean;\n message: string;\n skipDependencyInstallation?: boolean;\n }\n ) {\n build = isFeatureEnabled(BUILD_ON_CI) ? Boolean(build) : true;\n const mergeStrategy = getMergeStrategy(ours, theirs, manual);\n if (abort && resolve) throw new BitError('unable to use \"abort\" and \"resolve\" flags together');\n if (noSnap && message) throw new BitError('unable to use \"noSnap\" and \"message\" flags together');\n const {\n components,\n failedComponents,\n version,\n resolvedComponents,\n abortedComponents,\n mergeSnapResults,\n mergeSnapError,\n }: ApplyVersionResults = await this.merging.merge(\n values,\n mergeStrategy as any,\n abort,\n resolve,\n noSnap,\n message,\n build,\n skipDependencyInstallation\n );\n if (resolvedComponents) {\n const title = 'successfully resolved component(s)\\n';\n const componentsStr = resolvedComponents.map((c) => c.id.toStringWithoutVersion()).join('\\n');\n return chalk.underline(title) + chalk.green(componentsStr);\n }\n if (abortedComponents) {\n const title = 'successfully aborted the merge of the following component(s)\\n';\n const componentsStr = abortedComponents.map((c) => c.id.toStringWithoutVersion()).join('\\n');\n return chalk.underline(title) + chalk.green(componentsStr);\n }\n\n return mergeReport({\n components,\n failedComponents,\n version,\n mergeSnapResults,\n mergeSnapError,\n verbose,\n });\n }\n}\n\nexport function mergeReport({\n components,\n failedComponents,\n version,\n mergeSnapResults,\n mergeSnapError,\n leftUnresolvedConflicts,\n verbose,\n}: ApplyVersionResults): string {\n const getSuccessOutput = () => {\n if (!components || !components.length) return '';\n // @ts-ignore version is set in case of merge command\n const title = `successfully merged components${version ? `from version ${chalk.bold(version)}` : ''}\\n`;\n // @ts-ignore components is set in case of merge command\n return chalk.underline(title) + chalk.green(applyVersionReport(components));\n };\n\n const getConflictSummary = () => {\n if (!components || !components.length || !leftUnresolvedConflicts) return '';\n const title = `\\nfiles with conflicts summary\\n`;\n const suggestion = `\\n\\nthe merge process wasn't completed due to the conflicts above. fix them manually and then run \"bit install\".\nonce ready, snap/tag the components to complete the merge.`;\n return chalk.underline(title) + conflictSummaryReport(components) + chalk.yellow(suggestion);\n };\n\n const getSnapsOutput = () => {\n if (mergeSnapError) {\n return `\n${chalk.bold(\n 'snapping the merged components had failed with the following error, please fix the issues and snap manually'\n)}\n${mergeSnapError.message}\n`;\n }\n if (!mergeSnapResults || !mergeSnapResults.snappedComponents) return '';\n const { snappedComponents, autoSnappedResults } = mergeSnapResults;\n const outputComponents = (comps) => {\n return comps\n .map((component) => {\n let componentOutput = ` > ${component.id.toString()}`;\n const autoTag = autoSnappedResults.filter((result) =>\n result.triggeredBy.searchWithoutScopeAndVersion(component.id)\n );\n if (autoTag.length) {\n const autoTagComp = autoTag.map((a) => a.component.id.toString());\n componentOutput += `\\n ${AUTO_SNAPPED_MSG}: ${autoTagComp.join(', ')}`;\n }\n return componentOutput;\n })\n .join('\\n');\n };\n\n return `\\n${chalk.underline(\n 'merge-snapped components'\n )}\\n(${'components that snapped as a result of the merge'})\\n${outputComponents(snappedComponents)}\\n`;\n };\n\n const getFailureOutput = () => {\n if (!failedComponents || !failedComponents.length) return '';\n const title = '\\nthe merge has been skipped on the following component(s)';\n const body = compact(\n failedComponents.map((failedComponent) => {\n if (!verbose && failedComponent.unchangedLegitimately) return null;\n const color = failedComponent.unchangedLegitimately ? 'white' : 'red';\n return `${chalk.bold(failedComponent.id.toString())} - ${chalk[color](failedComponent.failureMessage)}`;\n })\n ).join('\\n');\n if (!body) {\n return `${chalk.bold(`\\nthe merge has been skipped on ${failedComponents.length} component(s) legitimately`)}\n(use --verbose to list them next time)`;\n }\n return `\\n${chalk.underline(title)}\\n${body}\\n\\n`;\n };\n\n const getSummary = () => {\n const merged = components?.length || 0;\n const unchangedLegitimately = failedComponents?.filter((f) => f.unchangedLegitimately).length || 0;\n const failedToMerge = failedComponents?.filter((f) => !f.unchangedLegitimately).length || 0;\n const autoSnapped =\n (mergeSnapResults?.snappedComponents.length || 0) + (mergeSnapResults?.autoSnappedResults.length || 0);\n\n const newLines = '\\n\\n';\n const title = chalk.bold.underline('Merge Summary');\n const mergedStr = `\\nTotal Merged: ${chalk.bold(merged.toString())}`;\n const unchangedLegitimatelyStr = `\\nTotal Unchanged: ${chalk.bold(unchangedLegitimately.toString())}`;\n const failedToMergeStr = `\\nTotal Failed: ${chalk.bold(failedToMerge.toString())}`;\n const autoSnappedStr = `\\nTotal Snapped: ${chalk.bold(autoSnapped.toString())}`;\n\n return newLines + title + mergedStr + unchangedLegitimatelyStr + failedToMergeStr + autoSnappedStr;\n };\n\n return getSuccessOutput() + getFailureOutput() + getSnapsOutput() + getConflictSummary() + getSummary();\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["MergeCmd","constructor","merging","WILDCARD_HELP","report","values","ours","theirs","manual","abort","resolve","build","noSnap","verbose","message","skipDependencyInstallation","isFeatureEnabled","BUILD_ON_CI","Boolean","mergeStrategy","getMergeStrategy","BitError","components","failedComponents","version","resolvedComponents","abortedComponents","mergeSnapResults","mergeSnapError","merge","title","componentsStr","map","c","id","toStringWithoutVersion","join","chalk","underline","green","mergeReport","leftUnresolvedConflicts","configMergeResults","getSuccessOutput","length","bold","applyVersionReport","getConflictSummary","suggestion","conflictSummaryReport","yellow","configMergeWithConflicts","filter","hasConflicts","getConfigMergeConflictSummary","comps","compIdStr","MergeConfigFilename","getSnapsOutput","snappedComponents","autoSnappedResults","outputComponents","component","componentOutput","toString","autoTag","result","triggeredBy","searchWithoutScopeAndVersion","autoTagComp","a","AUTO_SNAPPED_MSG","getFailureOutput","body","compact","failedComponent","unchangedLegitimately","color","failureMessage","getSummary","merged","f","failedToMerge","autoSnapped","newLines","mergedStr","unchangedLegitimatelyStr","failedToMergeStr","autoSnappedStr"],"sources":["merge-cmd.ts"],"sourcesContent":["import chalk from 'chalk';\nimport { Command, CommandOptions } from '@teambit/cli';\nimport { compact } from 'lodash';\nimport { WILDCARD_HELP, AUTO_SNAPPED_MSG, MergeConfigFilename } from '@teambit/legacy/dist/constants';\nimport {\n ApplyVersionResults,\n conflictSummaryReport,\n getMergeStrategy,\n applyVersionReport,\n} from '@teambit/legacy/dist/consumer/versions-ops/merge-version';\nimport { isFeatureEnabled, BUILD_ON_CI } from '@teambit/legacy/dist/api/consumer/lib/feature-toggle';\nimport { BitError } from '@teambit/bit-error';\nimport { MergingMain } from './merging.main.runtime';\nimport { ConfigMergeResult } from './config-merge-result';\n\nexport class MergeCmd implements Command {\n name = 'merge [values...]';\n description = 'merge changes of different component versions';\n helpUrl = 'docs/components/merging-changes';\n group = 'development';\n extendedDescription = `merge changes of different component versions\n \\`bit merge <version> [ids...]\\` => merge changes of the given version into the checked out version\n \\`bit merge [ids...]\\` => EXPERIMENTAL. merge changes of the remote head into local, optionally use '--abort' or '--resolve'\n ${WILDCARD_HELP('merge 0.0.1')}`;\n alias = '';\n options = [\n ['', 'ours', 'in case of a conflict, override the used version with the current modification'],\n ['', 'theirs', 'in case of a conflict, override the current modification with the specified version'],\n ['', 'manual', 'in case of a conflict, leave the files with a conflict state to resolve them manually later'],\n ['', 'abort', 'EXPERIMENTAL. in case of an unresolved merge, revert to the state before the merge began'],\n ['', 'resolve', 'EXPERIMENTAL. mark an unresolved merge as resolved and create a new snap with the changes'],\n ['', 'no-snap', 'EXPERIMENTAL. do not auto snap in case the merge completed without conflicts'],\n ['', 'build', 'in case of snap during the merge, run the build-pipeline (similar to bit snap --build)'],\n ['', 'verbose', 'show details of components that were not merged legitimately'],\n ['', 'skip-dependency-installation', 'do not install packages of the imported components'],\n ['m', 'message <message>', 'EXPERIMENTAL. override the default message for the auto snap'],\n ] as CommandOptions;\n loader = true;\n\n constructor(private merging: MergingMain) {}\n\n async report(\n [values = []]: [string[]],\n {\n ours = false,\n theirs = false,\n manual = false,\n abort = false,\n resolve = false,\n build = false,\n noSnap = false,\n verbose = false,\n message,\n skipDependencyInstallation = false,\n }: {\n ours?: boolean;\n theirs?: boolean;\n manual?: boolean;\n abort?: boolean;\n resolve?: boolean;\n build?: boolean;\n noSnap?: boolean;\n verbose?: boolean;\n message: string;\n skipDependencyInstallation?: boolean;\n }\n ) {\n build = isFeatureEnabled(BUILD_ON_CI) ? Boolean(build) : true;\n const mergeStrategy = getMergeStrategy(ours, theirs, manual);\n if (abort && resolve) throw new BitError('unable to use \"abort\" and \"resolve\" flags together');\n if (noSnap && message) throw new BitError('unable to use \"noSnap\" and \"message\" flags together');\n const {\n components,\n failedComponents,\n version,\n resolvedComponents,\n abortedComponents,\n mergeSnapResults,\n mergeSnapError,\n }: ApplyVersionResults = await this.merging.merge(\n values,\n mergeStrategy as any,\n abort,\n resolve,\n noSnap,\n message,\n build,\n skipDependencyInstallation\n );\n if (resolvedComponents) {\n const title = 'successfully resolved component(s)\\n';\n const componentsStr = resolvedComponents.map((c) => c.id.toStringWithoutVersion()).join('\\n');\n return chalk.underline(title) + chalk.green(componentsStr);\n }\n if (abortedComponents) {\n const title = 'successfully aborted the merge of the following component(s)\\n';\n const componentsStr = abortedComponents.map((c) => c.id.toStringWithoutVersion()).join('\\n');\n return chalk.underline(title) + chalk.green(componentsStr);\n }\n\n return mergeReport({\n components,\n failedComponents,\n version,\n mergeSnapResults,\n mergeSnapError,\n verbose,\n });\n }\n}\n\nexport function mergeReport({\n components,\n failedComponents,\n version,\n mergeSnapResults,\n mergeSnapError,\n leftUnresolvedConflicts,\n verbose,\n configMergeResults,\n}: ApplyVersionResults & { configMergeResults?: ConfigMergeResult[] }): string {\n const getSuccessOutput = () => {\n if (!components || !components.length) return '';\n // @ts-ignore version is set in case of merge command\n const title = `successfully merged components${version ? `from version ${chalk.bold(version)}` : ''}\\n`;\n // @ts-ignore components is set in case of merge command\n return chalk.underline(title) + chalk.green(applyVersionReport(components));\n };\n\n const getConflictSummary = () => {\n if (!components || !components.length || !leftUnresolvedConflicts) return '';\n const title = `\\n\\nfiles with conflicts summary\\n`;\n const suggestion = `\\n\\nthe merge process wasn't completed due to the conflicts above. fix them manually and then run \"bit install\".\nonce ready, snap/tag the components to complete the merge.`;\n return chalk.underline(title) + conflictSummaryReport(components) + chalk.yellow(suggestion);\n };\n\n const configMergeWithConflicts = configMergeResults?.filter((c) => c.hasConflicts()) || [];\n const getConfigMergeConflictSummary = () => {\n if (!configMergeWithConflicts.length) return '';\n const comps = configMergeWithConflicts.map((c) => c.compIdStr).join('\\n');\n const title = `\\n\\ncomponents with config-merge conflicts\\n`;\n const suggestion = `\\nconflicts were found while trying to merge the config. fix them manually by editing the ${MergeConfigFilename} file in the component's dir.\nonce ready, snap/tag the components to complete the merge.`;\n return chalk.underline(title) + comps + chalk.yellow(suggestion);\n };\n\n const getSnapsOutput = () => {\n if (mergeSnapError) {\n return `\n${chalk.bold(\n 'snapping the merged components had failed with the following error, please fix the issues and snap manually'\n)}\n${mergeSnapError.message}\n`;\n }\n if (!mergeSnapResults || !mergeSnapResults.snappedComponents) return '';\n const { snappedComponents, autoSnappedResults } = mergeSnapResults;\n const outputComponents = (comps) => {\n return comps\n .map((component) => {\n let componentOutput = ` > ${component.id.toString()}`;\n const autoTag = autoSnappedResults.filter((result) =>\n result.triggeredBy.searchWithoutScopeAndVersion(component.id)\n );\n if (autoTag.length) {\n const autoTagComp = autoTag.map((a) => a.component.id.toString());\n componentOutput += `\\n ${AUTO_SNAPPED_MSG}: ${autoTagComp.join(', ')}`;\n }\n return componentOutput;\n })\n .join('\\n');\n };\n\n return `\\n${chalk.underline(\n 'merge-snapped components'\n )}\\n(${'components that snapped as a result of the merge'})\\n${outputComponents(snappedComponents)}\\n`;\n };\n\n const getFailureOutput = () => {\n if (!failedComponents || !failedComponents.length) return '';\n const title = '\\nthe merge has been skipped on the following component(s)';\n const body = compact(\n failedComponents.map((failedComponent) => {\n if (!verbose && failedComponent.unchangedLegitimately) return null;\n const color = failedComponent.unchangedLegitimately ? 'white' : 'red';\n return `${chalk.bold(failedComponent.id.toString())} - ${chalk[color](failedComponent.failureMessage)}`;\n })\n ).join('\\n');\n if (!body) {\n return `${chalk.bold(`\\nthe merge has been skipped on ${failedComponents.length} component(s) legitimately`)}\n(use --verbose to list them next time)`;\n }\n return `\\n${chalk.underline(title)}\\n${body}\\n\\n`;\n };\n\n const getSummary = () => {\n const merged = components?.length || 0;\n const unchangedLegitimately = failedComponents?.filter((f) => f.unchangedLegitimately).length || 0;\n const failedToMerge = failedComponents?.filter((f) => !f.unchangedLegitimately).length || 0;\n const autoSnapped =\n (mergeSnapResults?.snappedComponents.length || 0) + (mergeSnapResults?.autoSnappedResults.length || 0);\n\n const newLines = '\\n\\n';\n const title = chalk.bold.underline('Merge Summary');\n const mergedStr = `\\nTotal Merged: ${chalk.bold(merged.toString())}`;\n const unchangedLegitimatelyStr = `\\nTotal Unchanged: ${chalk.bold(unchangedLegitimately.toString())}`;\n const failedToMergeStr = `\\nTotal Failed: ${chalk.bold(failedToMerge.toString())}`;\n const autoSnappedStr = `\\nTotal Snapped: ${chalk.bold(autoSnapped.toString())}`;\n\n return newLines + title + mergedStr + unchangedLegitimatelyStr + failedToMergeStr + autoSnappedStr;\n };\n\n return (\n getSuccessOutput() +\n getFailureOutput() +\n getSnapsOutput() +\n getConfigMergeConflictSummary() +\n getConflictSummary() +\n getSummary()\n );\n}\n"],"mappings":"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"}
|
|
@@ -13,6 +13,7 @@ import { MergeResultsThreeWay } from '@teambit/legacy/dist/consumer/versions-ops
|
|
|
13
13
|
import { CheckoutMain } from '@teambit/checkout';
|
|
14
14
|
import { SnapsDistance } from '@teambit/legacy/dist/scope/component-ops/snaps-distance';
|
|
15
15
|
import { InstallMain } from '@teambit/install';
|
|
16
|
+
import { ConfigMergeResult } from './config-merge-result';
|
|
16
17
|
declare type ResolveUnrelatedData = {
|
|
17
18
|
strategy: MergeStrategy;
|
|
18
19
|
head: Ref;
|
|
@@ -26,6 +27,7 @@ export declare type ComponentMergeStatus = {
|
|
|
26
27
|
mergeResults?: MergeResultsThreeWay | null;
|
|
27
28
|
divergeData?: SnapsDistance;
|
|
28
29
|
resolvedUnrelated?: ResolveUnrelatedData;
|
|
30
|
+
configMergeResult?: ConfigMergeResult;
|
|
29
31
|
};
|
|
30
32
|
export declare type ComponentMergeStatusBeforeMergeAttempt = {
|
|
31
33
|
currentComponent?: ConsumerComponent | null;
|
|
@@ -23,6 +23,20 @@ function _cli() {
|
|
|
23
23
|
};
|
|
24
24
|
return data;
|
|
25
25
|
}
|
|
26
|
+
function _path() {
|
|
27
|
+
const data = _interopRequireDefault(require("path"));
|
|
28
|
+
_path = function () {
|
|
29
|
+
return data;
|
|
30
|
+
};
|
|
31
|
+
return data;
|
|
32
|
+
}
|
|
33
|
+
function _fsExtra() {
|
|
34
|
+
const data = _interopRequireDefault(require("fs-extra"));
|
|
35
|
+
_fsExtra = function () {
|
|
36
|
+
return data;
|
|
37
|
+
};
|
|
38
|
+
return data;
|
|
39
|
+
}
|
|
26
40
|
function _workspace() {
|
|
27
41
|
const data = _interopRequireWildcard(require("@teambit/workspace"));
|
|
28
42
|
_workspace = function () {
|
|
@@ -177,6 +191,13 @@ function _componentId() {
|
|
|
177
191
|
};
|
|
178
192
|
return data;
|
|
179
193
|
}
|
|
194
|
+
function _constants() {
|
|
195
|
+
const data = require("@teambit/legacy/dist/constants");
|
|
196
|
+
_constants = function () {
|
|
197
|
+
return data;
|
|
198
|
+
};
|
|
199
|
+
return data;
|
|
200
|
+
}
|
|
180
201
|
function _install() {
|
|
181
202
|
const data = require("@teambit/install");
|
|
182
203
|
_install = function () {
|
|
@@ -198,6 +219,13 @@ function _merging() {
|
|
|
198
219
|
};
|
|
199
220
|
return data;
|
|
200
221
|
}
|
|
222
|
+
function _configMerger() {
|
|
223
|
+
const data = require("./config-merger");
|
|
224
|
+
_configMerger = function () {
|
|
225
|
+
return data;
|
|
226
|
+
};
|
|
227
|
+
return data;
|
|
228
|
+
}
|
|
201
229
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
202
230
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
203
231
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
@@ -298,7 +326,8 @@ class MergingMain {
|
|
|
298
326
|
currentComponent,
|
|
299
327
|
id,
|
|
300
328
|
mergeResults,
|
|
301
|
-
resolvedUnrelated
|
|
329
|
+
resolvedUnrelated,
|
|
330
|
+
configMergeResult
|
|
302
331
|
}) => {
|
|
303
332
|
const modelComponent = await consumer.scope.getModelComponent(id);
|
|
304
333
|
const updatedLaneId = laneId.isDefault() ? _laneId().LaneId.from(laneId.name, id.scope) : laneId;
|
|
@@ -310,7 +339,8 @@ class MergingMain {
|
|
|
310
339
|
remoteHead: modelComponent.getRef(id.version),
|
|
311
340
|
laneId: updatedLaneId,
|
|
312
341
|
localLane,
|
|
313
|
-
resolvedUnrelated
|
|
342
|
+
resolvedUnrelated,
|
|
343
|
+
configMergeResult
|
|
314
344
|
});
|
|
315
345
|
});
|
|
316
346
|
if (localLane) consumer.scope.objects.add(localLane);
|
|
@@ -318,8 +348,12 @@ class MergingMain {
|
|
|
318
348
|
|
|
319
349
|
await consumer.scope.objects.unmergedComponents.write();
|
|
320
350
|
await consumer.writeBitMap();
|
|
351
|
+
const componentsHasConfigMergeConflicts = allComponentsStatus.some(c => {
|
|
352
|
+
var _c$configMergeResult;
|
|
353
|
+
return (_c$configMergeResult = c.configMergeResult) === null || _c$configMergeResult === void 0 ? void 0 : _c$configMergeResult.hasConflicts();
|
|
354
|
+
});
|
|
321
355
|
const leftUnresolvedConflicts = componentWithConflict && mergeStrategy === 'manual';
|
|
322
|
-
if (!skipDependencyInstallation && !leftUnresolvedConflicts) {
|
|
356
|
+
if (!skipDependencyInstallation && !leftUnresolvedConflicts && !componentsHasConfigMergeConflicts) {
|
|
323
357
|
try {
|
|
324
358
|
await this.install.install(undefined, {
|
|
325
359
|
dedupe: true,
|
|
@@ -334,7 +368,7 @@ class MergingMain {
|
|
|
334
368
|
const getSnapOrTagResults = async () => {
|
|
335
369
|
// if one of the component has conflict, don't snap-merge. otherwise, some of the components would be snap-merged
|
|
336
370
|
// and some not. besides the fact that it could by mistake tag dependent, it's a confusing state. better not snap.
|
|
337
|
-
if (noSnap || leftUnresolvedConflicts) {
|
|
371
|
+
if (noSnap || leftUnresolvedConflicts || componentsHasConfigMergeConflicts) {
|
|
338
372
|
return null;
|
|
339
373
|
}
|
|
340
374
|
if (tag) {
|
|
@@ -405,6 +439,7 @@ class MergingMain {
|
|
|
405
439
|
}
|
|
406
440
|
};
|
|
407
441
|
const results = await getComponentsStatusNeedMerge();
|
|
442
|
+
// throw new Error('stop!')
|
|
408
443
|
results.push(...compStatusNotNeedMerge);
|
|
409
444
|
return results;
|
|
410
445
|
}
|
|
@@ -600,22 +635,30 @@ class MergingMain {
|
|
|
600
635
|
if (!divergeData) throw new Error(`getDivergedMergeStatus, divergeData is missing for ${id.toString()}`);
|
|
601
636
|
if (!currentComponent) throw new Error(`getDivergedMergeStatus, currentComponent is missing for ${id.toString()}`);
|
|
602
637
|
const baseSnap = divergeData.commonSnapBeforeDiverge; // must be set when isTrueMerge
|
|
638
|
+
// uncomment for debugging
|
|
639
|
+
// console.log('id', id.toStringWithoutVersion(), 'baseSnap', baseSnap.toString(), 'current', currentId.version, 'other', otherLaneHead.toString());
|
|
603
640
|
const baseComponent = await modelComponent.loadVersion(baseSnap.toString(), repo);
|
|
604
641
|
const otherComponent = await modelComponent.loadVersion(otherLaneHead.toString(), repo);
|
|
605
642
|
const currentLaneName = (localLane === null || localLane === void 0 ? void 0 : localLane.toLaneId().toString()) || 'main';
|
|
643
|
+
const currentLabel = `${currentId.version} (${currentLaneName === otherLaneName ? 'current' : currentLaneName})`;
|
|
644
|
+
const otherLabel = `${otherLaneHead.toString()} (${otherLaneName === currentLaneName ? 'incoming' : otherLaneName})`;
|
|
645
|
+
const workspaceIds = await this.workspace.listIds();
|
|
646
|
+
const configMerger = new (_configMerger().ConfigMerger)(id.toStringWithoutVersion(), workspaceIds, currentComponent.extensions, baseComponent.extensions, otherComponent.extensions, currentLabel, otherLabel);
|
|
647
|
+
const configMergeResult = configMerger.merge();
|
|
606
648
|
const mergeResults = await (0, _threeWayMerge().default)({
|
|
607
649
|
consumer,
|
|
608
650
|
otherComponent,
|
|
609
|
-
otherLabel
|
|
651
|
+
otherLabel,
|
|
610
652
|
currentComponent,
|
|
611
|
-
currentLabel
|
|
653
|
+
currentLabel,
|
|
612
654
|
baseComponent
|
|
613
655
|
});
|
|
614
656
|
return {
|
|
615
657
|
currentComponent,
|
|
616
658
|
id,
|
|
617
659
|
mergeResults,
|
|
618
|
-
divergeData
|
|
660
|
+
divergeData,
|
|
661
|
+
configMergeResult
|
|
619
662
|
};
|
|
620
663
|
}
|
|
621
664
|
async applyVersion({
|
|
@@ -626,7 +669,8 @@ class MergingMain {
|
|
|
626
669
|
remoteHead,
|
|
627
670
|
laneId,
|
|
628
671
|
localLane,
|
|
629
|
-
resolvedUnrelated
|
|
672
|
+
resolvedUnrelated,
|
|
673
|
+
configMergeResult
|
|
630
674
|
}) {
|
|
631
675
|
const consumer = this.workspace.consumer;
|
|
632
676
|
let filesStatus = {};
|
|
@@ -710,6 +754,22 @@ class MergingMain {
|
|
|
710
754
|
});
|
|
711
755
|
|
|
712
756
|
await manyComponentsWriter.writeAll();
|
|
757
|
+
if (configMergeResult) {
|
|
758
|
+
if (!componentWithDependencies.component.writtenPath) {
|
|
759
|
+
throw new Error(`componentWithDependencies.component.writtenPath is missing for ${id.toString()}`);
|
|
760
|
+
}
|
|
761
|
+
const configMergeConflictFile = configMergeResult.generateMergeConflictFile();
|
|
762
|
+
if (configMergeConflictFile) {
|
|
763
|
+
const configMergePath = _path().default.join(consumer.getPath(), componentWithDependencies.component.writtenPath, _constants().MergeConfigFilename);
|
|
764
|
+
await _fsExtra().default.outputFile(configMergePath, configMergeConflictFile);
|
|
765
|
+
}
|
|
766
|
+
const successfullyMergedConfig = configMergeResult.getSuccessfullyMergedConfig();
|
|
767
|
+
if (successfullyMergedConfig) {
|
|
768
|
+
unmergedComponent.mergedConfig = successfullyMergedConfig;
|
|
769
|
+
// no need to `unmergedComponents.addEntry` here. it'll be added in the next lines inside `if (mergeResults)`.
|
|
770
|
+
// because if `configMergeResult` is set, `mergeResults` must be set as well. both happen on diverge.
|
|
771
|
+
}
|
|
772
|
+
}
|
|
713
773
|
|
|
714
774
|
// if mergeResults, the head snap is going to be updated on a later phase when snapping with two parents
|
|
715
775
|
// otherwise, update the head of the current lane or main
|