@teambit/objects 0.0.697 → 0.0.698
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/models/model-component.js +2 -1
- package/dist/models/model-component.js.map +1 -1
- package/dist/models/version.d.ts +7 -16
- package/dist/models/version.js +27 -24
- package/dist/models/version.js.map +1 -1
- package/models/model-component.ts +2 -1
- package/models/version.ts +28 -25
- package/package.json +12 -12
- /package/dist/{preview-1790863836364.js → preview-1790867894252.js} +0 -0
|
@@ -1193,7 +1193,8 @@ bit import ${this.id()}@${resolvedVersion} --objects --all-history`);
|
|
|
1193
1193
|
mainFile: version.mainFile,
|
|
1194
1194
|
dependencies: this.addDepsInfoFromDepsResolver(version.dependencies, extensions),
|
|
1195
1195
|
devDependencies: this.addDepsInfoFromDepsResolver(version.devDependencies, extensions),
|
|
1196
|
-
|
|
1196
|
+
// a new list, but the ids themselves are immutable, no need to clone them
|
|
1197
|
+
flattenedDependencies: _componentId().ComponentIdList.fromArray(version.flattenedDependencies),
|
|
1197
1198
|
packageDependencies: (0, _lodash().clone)(version.packageDependencies),
|
|
1198
1199
|
devPackageDependencies: (0, _lodash().clone)(version.devPackageDependencies),
|
|
1199
1200
|
peerPackageDependencies: (0, _lodash().clone)(version.peerPackageDependencies),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_lodash","data","require","_asyncMutex","semver","_interopRequireWildcard","_componentVersion","_bitError","_laneId","_componentId","_pMapSeries","_interopRequireDefault","_toolboxPromise","_harmonyModules","_toolboxArray","_legacyBitId","_legacy","_legacy2","_component","_legacy3","_legacyCli","_legacy4","_legacy5","_pkgModules","_component2","_legacy6","_objects","_scopeMeta","_versionHistory","_detachHeads","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","value","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","VERSION_ZERO","exports","Component","BitObject","constructor","props","name","scope","BitIdCompIdError","versions","orphanedVersions","lang","DEFAULT_LANGUAGE","deprecated","bindingPrefix","getBindingPrefixByDefaultScope","state","scopesList","head","schema","detachedHeads","DetachedHeads","populateVersionHistoryMutex","_populateVersionHistoryMutex","Mutex","versionArray","values","setVersion","tag","ref","setOrphanedVersion","Error","id","getRef","version","isTag","isHash","Ref","getHeadStr","toString","getHead","getHeadRegardlessOfLane","laneHeadLocal","getHeadAsTagIfExist","undefined","getTagOfRefIfExists","hasHead","Boolean","setHead","listVersions","sort","compare","reverse","listVersionsIncludeOrphaned","versionsIncludeOrphaned","hasVersion","repo","includeOrphaned","hasTagIncludeOrphaned","hasTag","versionParents","getAllVersionParents","modelComponent","heads","map","v","hash","some","startsWith","isHeadSnap","tagsHashes","includes","addScopeListItem","scopeListItem","url","date","find","setDivergeData","throws","fromCache","workspaceId","divergeData","remoteHead","laneId","calculatedRemoteHeadWhenOnLane","workspaceVersion","isOnLane","getDivergeData","targetHead","sourceHead","getDivergeDataForMergePending","laneHeadRemote","populateLocalAndRemoteHeads","lane","setLaneHeadLocal","toLaneId","remoteLanes","LaneId","from","DEFAULT_LANE","toComponentId","isNew","calculateRemote","forkedFrom","headFromFork","getCompHeadIncludeUpdateDependents","_getComparableVersionsObjects","otherComponent","local","otherLocalVersion","getLocalVersions","otherComponentVersions","pickBy","val","key","thisComponentVersions","compatibleWith","component","isEqual","diffWith","isEmpty","getHeadRegardlessOfLaneAsTagOrHash","returnVersionZeroForNoHead","headIncludeRemote","latestLocally","isTargetAhead","getRefOfAncestor","generationsToGoBack","BitError","versionHistory","getAndPopulateVersionHistory","getAncestor","latestVersion","getLatestVersion","latestVersionIfExist","isLatestGreaterThan","latest","gt","latestRef","latestHash","versionRef","versionHash","latestExisting","repository","versionStr","pop","loadVersionSync","collectLogs","shortHash","startFrom","objects","versionsInfo","getAllVersionsInfo","error","errorIsTypeOfMissingObject","scopeJson","logger","info","getCurrentLaneObject","scopeImporter","importWithoutDeps","ComponentIdList","fromArray","toVersionLatest","cache","includeVersionHistory","collectParents","reason","err","headVersion","load","removeAspect","extensions","findCoreExtension","Extensions","remove","removeRange","config","range","removeSnaps","snaps","deprecationAspect","deprecation","deprecationRange","toShortString","results","versionInfo","log","message","username","email","parents","parent","onLane","deleted","satisfies","hidden","sorted","a","b","collectVersions","Promise","all","versionNum","toConsumerComponent","findIn","getTag","switchHashesWithTagsIfExist","refs","getVersionToAdd","releaseType","DEFAULT_BIT_RELEASE_TYPE","exactVersion","incrementBy","preReleaseId","VersionAlreadyExists","validateVersion","considerOrphanedVersions","hasSameVersions","every","hasSameOrphanedVersions","addVersion","versionToAdd","previouslyUsedVersion","addToUpdateDependentsInLane","setHeadAsParent","detachHead","overrideHead","currentBitId","versionToAddRef","existingComponentInLane","getComponent","currentHead","addAsOnlyParent","existingHidden","findUpdateDependent","existingVisible","shouldBeHidden","removeComponent","addComponentToUpdateDependents","changeVersion","setOverrideUpdateDependents","removeComponentFromUpdateDependentsIfExist","addComponent","isDeleted","isRemoved","readmeComponent","fullName","setReadmeComponent","parentToSet","clearCurrent","markVersionAsLocal","increment","ver","incResult","SemVer","inc","isPreReleaseLike","DEFAULT_BIT_VERSION","result","join","toBitId","BitId","ComponentID","toBitIdWithLatestVersion","toComponentIdWithLatestVersion","fromObject","toComponentIdWithHead","toBitIdWithLatestVersionAllowNull","toObject","vers","obj","componentObject","remotes","headStr","loadVersion","VersionNotFound","VersionNotFoundOnFS","loadSync","collectVersionsObjects","throwForMissingLocalArtifacts","refsWithoutArtifacts","artifactsRefs","artifactsRefsFromExportedVersions","locallyChangedVersions","getLocalTagsOrHashes","locallyChangedHashes","versionsRefs","versionsObjects","versionObject","refsWithOptions","refsFromExtensions","getRefsFromExtensions","loadedRefs","loaded","loadManyRaw","code","path","loadManyRawIgnoreMissing","loadedExportedArtifacts","collectObjects","rawComponent","asRaw","collectRaw","ComponentObjects","buffer","removeVersion","objectRef","toComponentVersion","versionParsed","versionParser","NoHeadNoVersion","ComponentVersion","isDeprecated","specificVersion","deprecate","isInternal","internalizeAspect","internalize","internal","removed","Array","isArray","isLaneReadmeOf","lanesAspect","lanes","readme","scopeName","trace","componentVersion","getVersion","LATEST_VERSION","isSnap","resolvedVersion","loadFileInstance","ClassName","file","loadP","content","relativePath","base","contents","test","filesP","files","SourceFile","scopeMetaP","ScopeMeta","fromScopeName","resolve","scopeMeta","clone","consumerComponent","ConsumerComponent","defaultScope","mainFile","dependencies","addDepsInfoFromDepsResolver","devDependencies","flattenedDependencies","packageDependencies","devPackageDependencies","peerPackageDependencies","docs","license","License","deserialize","overrides","ComponentOverrides","loadFromScope","packageJsonChangedProps","buildStatus","cloned","getClone","depsResolverData","ext","dependency","packageName","matchedEntry","entry","validateBeforePersisting","componentStr","parse","validate","toBuffer","pretty","args","getStringifyArgs","str","JSON","stringify","validateBeforePersist","Buffer","clearStateData","hasLocalTag","localVersions","localHashes","getLocalHashes","snapsOnSourceOnly","hasDetachedHead","getAllHeads","mainHeadDivergeData","h","filtered","filterLeanLaneRefs","laneHead","keptRefs","pMapPool","isLaneOrigin","originLaneId","isLocallyMutated","squashed","unrelated","concurrency","concurrentComponentsLimit","isLocallyChangedRegardlessOfLanes","isLocallyChanged","isSourceAhead","getVersionHistory","emptyVersionHistory","VersionHistory","fromId","populateVersionHistoryIfMissingGracefully","updateRebasedVersionHistory","hasUpdated","versionData","getVersionData","addFromVersionsObjects","updateVersionHistory","debug","exitWhenFind","headExists","hasHash","getVersionObj","versionsToAdd","addParentsRecursively","pMapSeries","foundParent","parentVersion","ParentNotFound","headVer","HeadNotFound","runExclusive","added","getVersionParentsFromVersion","writeObjectsToTheFS","box","mapValues","SchemaName","Harmony","Legacy","fromBitId","bitId","isLegacy","ValidationError","hashDuplications","findDuplications"],"sources":["model-component.ts"],"sourcesContent":["import { forEach, isEmpty, pickBy, mapValues, isEqual, clone } from 'lodash';\nimport { Mutex } from 'async-mutex';\nimport * as semver from 'semver';\nimport { versionParser, isHash, isTag, isSnap, LATEST_VERSION } from '@teambit/component-version';\nimport { BitError } from '@teambit/bit-error';\nimport { LaneId, DEFAULT_LANE } from '@teambit/lane-id';\nimport { ComponentID, ComponentIdList } from '@teambit/component-id';\nimport pMapSeries from 'p-map-series';\nimport { pMapPool } from '@teambit/toolbox.promise.map-pool';\nimport { concurrentComponentsLimit } from '@teambit/harmony.modules.concurrency';\nimport type { LegacyComponentLog } from '@teambit/legacy-component-log';\nimport { findDuplications } from '@teambit/toolbox.array.duplications-finder';\nimport { BitId } from '@teambit/legacy-bit-id';\nimport { DEFAULT_BIT_RELEASE_TYPE, DEFAULT_BIT_VERSION, DEFAULT_LANGUAGE, Extensions } from '@teambit/legacy.constants';\nimport type { Dependencies, Dependency } from '@teambit/legacy.consumer-component';\nimport { ConsumerComponent, SchemaName } from '@teambit/legacy.consumer-component';\nimport { License, SourceFile, getRefsFromExtensions } from '@teambit/component.sources';\nimport { ComponentOverrides, getBindingPrefixByDefaultScope } from '@teambit/legacy.consumer-config';\nimport { ValidationError } from '@teambit/legacy.cli.error';\nimport { logger } from '@teambit/legacy.logger';\nimport { getStringifyArgs } from '@teambit/legacy.utils';\nimport { getLatestVersion, validateVersion } from '@teambit/pkg.modules.semver-helper';\nimport type { SnapsDistance } from '@teambit/component.snap-distance';\nimport {\n getDivergeData,\n getAllVersionParents,\n getAllVersionsInfo,\n getVersionParentsFromVersion,\n} from '@teambit/component.snap-distance';\nimport {\n ComponentObjects,\n ComponentVersion,\n HeadNotFound,\n ParentNotFound,\n VersionAlreadyExists,\n VersionNotFound,\n VersionNotFoundOnFS,\n NoHeadNoVersion,\n errorIsTypeOfMissingObject,\n BitIdCompIdError,\n} from '@teambit/legacy.scope';\nimport type { Repository } from '../objects';\nimport { BitObject, Ref } from '../objects';\nimport type Lane from './lane';\nimport ScopeMeta from './scopeMeta';\nimport type Source from './source';\nimport type Version from './version';\nimport type { VersionParents } from './version-history';\nimport VersionHistory from './version-history';\nimport type { ObjectItem } from '../objects/object-list';\nimport type { Scope } from '@teambit/legacy.scope';\nimport type { ExtensionDataList } from '@teambit/legacy.extension-data';\nimport { DetachedHeads } from './detach-heads';\n\ntype State = {\n versions?: {\n [version: string]: {\n local?: boolean; // whether a component was changed locally\n };\n };\n};\n\nexport type AddVersionOpts = {\n addToUpdateDependentsInLane?: boolean;\n\n /**\n * kind of rebase.\n * if true, set the head as the parent of the new version.\n * by default, the parent is the currently used version in .bitmap.\n * (this prop takes affect only when the component is checked out to an older version)\n */\n setHeadAsParent?: boolean;\n\n detachHead?: boolean;\n overrideHead?: boolean;\n};\n\ntype Versions = { [version: string]: Ref };\nexport type ScopeListItem = { url: string; name: string; date: string };\n\nexport type ComponentLog = LegacyComponentLog;\n\nexport type ComponentProps = {\n scope: string;\n name: string;\n versions?: Versions;\n orphanedVersions?: Versions;\n lang: string;\n deprecated: boolean;\n bindingPrefix: string;\n state?: State; // get deleted after export\n scopesList?: ScopeListItem[];\n head?: Ref;\n schema?: string | undefined;\n detachedHeads?: DetachedHeads;\n};\n\nexport const VERSION_ZERO = '0.0.0';\n\n/**\n * we can't rename the class as ModelComponent because old components are already saved in the model\n * with 'Component' in their headers. see object-registrar.types()\n */\n// TODO: FIX me .parser\nexport default class Component extends BitObject {\n scope: string;\n name: string;\n versions: Versions;\n orphanedVersions: Versions;\n lang: string;\n /**\n * @deprecated moved to the Version object inside teambit/deprecation aspect\n */\n deprecated: boolean;\n bindingPrefix: string;\n /**\n * @deprecated since 0.12.6 (long long ago :) probably can be removed)\n */\n local: boolean | null | undefined;\n state: State;\n scopesList: ScopeListItem[];\n head?: Ref;\n remoteHead?: Ref | null; // doesn't get saved in the scope, used to easier access the remote main head\n /**\n * doesn't get saved in the scope, used to easier access the local snap head data\n * when checked out to a lane, this prop is either Ref or null. otherwise (when on main), this prop is undefined.\n */\n laneHeadLocal?: Ref | null;\n /**\n * doesn't get saved in the scope, used to easier access the remote snap head data\n * when checked out to a lane, this prop is either Ref or null. otherwise (when on main), this prop is undefined.\n */\n laneHeadRemote?: Ref | null;\n\n /**\n * when checked out to a lane, calculate what should be the head on the remote.\n * if the laneHeadRemote is null, for example, when the lane is new, then used the the lane it was forked from.\n * it no head is found on the lane/forked, then use the component.head.\n */\n calculatedRemoteHeadWhenOnLane?: Ref | null;\n\n laneId?: LaneId; // doesn't get saved in the scope.\n laneDataIsPopulated = false; // doesn't get saved in the scope, used to improve performance of loading the lane data\n schema: string | undefined;\n detachedHeads: DetachedHeads;\n private divergeData?: SnapsDistance;\n private _populateVersionHistoryMutex?: Mutex;\n constructor(props: ComponentProps) {\n super();\n if (!props.name) throw new TypeError('Model Component constructor expects to get a name parameter');\n if (!props.scope) {\n throw new BitIdCompIdError(props.name);\n }\n this.scope = props.scope;\n this.name = props.name;\n this.versions = props.versions || {};\n this.orphanedVersions = props.orphanedVersions || {};\n this.lang = props.lang || DEFAULT_LANGUAGE;\n this.deprecated = props.deprecated || false;\n this.bindingPrefix = props.bindingPrefix || getBindingPrefixByDefaultScope(props.scope);\n this.state = props.state || {};\n this.scopesList = props.scopesList || [];\n this.head = props.head;\n this.schema = props.schema;\n this.detachedHeads = props.detachedHeads || new DetachedHeads();\n }\n\n private get populateVersionHistoryMutex() {\n if (!this._populateVersionHistoryMutex) {\n this._populateVersionHistoryMutex = new Mutex();\n }\n return this._populateVersionHistoryMutex;\n }\n\n get versionArray(): Ref[] {\n return Object.values(this.versions);\n }\n\n setVersion(tag: string, ref: Ref) {\n this.versions[tag] = ref;\n delete this.orphanedVersions[tag]; // just in case it's there.\n }\n\n setOrphanedVersion(tag: string, ref: Ref) {\n if (this.versions[tag]) {\n throw new Error(\n `unable to save orphanedVersion \"${tag}\" for \"${this.id()}\" because this tag is already part of the versions prop`\n );\n }\n this.orphanedVersions[tag] = ref;\n }\n\n getRef(version: string): Ref | null {\n if (isTag(version)) {\n return this.orphanedVersions[version] || this.versions[version];\n }\n if (isHash(version)) {\n return new Ref(version);\n }\n return null;\n }\n\n getHeadStr(): string | null {\n return this.head ? this.head.toString() : null;\n }\n\n getHead(): Ref | undefined {\n return this.head;\n }\n\n /**\n * returns the head hash. regardless of whether current lane is the default or not.\n * if on a lane, it returns the head of the component on the lane.\n */\n getHeadRegardlessOfLane(): Ref | undefined {\n return this.laneHeadLocal || this.getHead();\n }\n\n getHeadAsTagIfExist(): string | undefined {\n if (!this.head) return undefined;\n return this.getTagOfRefIfExists(this.head) || this.head.toString();\n }\n\n hasHead() {\n return Boolean(this.head);\n }\n\n setHead(head: Ref | undefined) {\n this.head = head;\n }\n\n listVersions(sort?: 'ASC' | 'DESC'): string[] {\n const versions = Object.keys(this.versions);\n if (!sort) return versions;\n if (sort === 'ASC') {\n return versions.sort(semver.compare);\n }\n\n return versions.sort(semver.compare).reverse();\n }\n\n listVersionsIncludeOrphaned(sort?: 'ASC' | 'DESC'): string[] {\n const versions = Object.keys(this.versionsIncludeOrphaned);\n if (!sort) return versions;\n if (sort === 'ASC') {\n return versions.sort(semver.compare);\n }\n\n return versions.sort(semver.compare).reverse();\n }\n\n async hasVersion(version: string, repo: Repository, includeOrphaned = true): Promise<boolean> {\n if (isTag(version)) {\n return includeOrphaned ? this.hasTagIncludeOrphaned(version) : this.hasTag(version);\n }\n const head = this.getHeadRegardlessOfLane();\n if (!head) {\n return false;\n }\n const versionParents = await getAllVersionParents({ repo, modelComponent: this, heads: [head] });\n // we use \"startsWith\" because it can be a short hash\n return versionParents.map((v) => v.hash).some((hash) => hash.toString().startsWith(version));\n }\n\n hasTag(version: string): boolean {\n return Boolean(this.versions[version]);\n }\n\n /**\n * a new object on every access, which is expensive for a component with many versions. to look up a single tag,\n * use `getRef` / `getTagOfRefIfExists` instead.\n */\n get versionsIncludeOrphaned(): Versions {\n // don't use lodash.merge, it's much faster but mutates `this.versions`.\n return { ...this.versions, ...this.orphanedVersions };\n }\n\n hasTagIncludeOrphaned(version: string): boolean {\n return Boolean(this.versions[version] || this.orphanedVersions[version]);\n }\n\n /**\n * whether the head is a snap (not a tag)\n */\n isHeadSnap() {\n const tagsHashes = this.versionArray.map((ref) => ref.toString());\n return this.head && !tagsHashes.includes(this.head.toString());\n }\n\n /**\n * add a new remote if it is not there already\n */\n addScopeListItem(scopeListItem: ScopeListItem): void {\n if (!scopeListItem.name || !scopeListItem.url || !scopeListItem.date) {\n throw new TypeError(\n `model-component.addRemote get an invalid remote. name: ${scopeListItem.name}, url: ${scopeListItem.url}, date: ${scopeListItem.date}`\n );\n }\n if (!this.scopesList.find((r) => r.url === scopeListItem.url)) {\n this.scopesList.push(scopeListItem);\n }\n }\n\n /**\n * on main - it checks local-head (or .bitmap version if given) vs remote-head.\n * on lane - it checks local-head on lane vs remote-head on lane.\n * however, to get an accurate `divergeData.snapsOnSourceOnly`, the above is not enough.\n * for example, comp-a@snap-x from lane-a is merged into lane-b. we don't want this snap-x to be \"local\", because\n * then, bit-status will show it as \"staged\" and bit-reset will remove it unexpectedly.\n * if we only check by the local-head and remote-head on lane, it'll be local because the remote-head of lane-b is empty.\n * to address this, we search all remote-refs files for this bit-id and during the local history traversal, if a hash\n * is found there, it'll stop the traversal and not mark it as remote.\n * in this example, during the merge, lane-a was fetched, and the remote-ref of this lane has snap-x as the head.\n */\n async setDivergeData(repo: Repository, throws = true, fromCache = true, workspaceId?: ComponentID): Promise<void> {\n if (!this.divergeData || !fromCache) {\n const remoteHead = (this.laneId ? this.calculatedRemoteHeadWhenOnLane : this.remoteHead) || null;\n // this is for detach-head scenario. it can happen on main only. we want to compare against the .bitmap\n // version (which is the detached head) and not the actual head.\n const workspaceVersion = !this.isOnLane() && workspaceId?.hasVersion() ? workspaceId.version : null;\n this.divergeData = await getDivergeData({\n repo,\n modelComponent: this,\n targetHead: remoteHead,\n sourceHead: workspaceVersion ? this.getRef(workspaceVersion) : undefined,\n throws,\n });\n }\n }\n\n isOnLane(): boolean {\n return Boolean(this.laneHeadLocal || this.laneHeadLocal === null);\n }\n\n /**\n * this is used (among others) by `bit status` to check whether snaps are local (staged), for `bit reset` to remove them\n * and for `bit export` to push them. for \"merge pending\" status, use `this.getDivergeDataForMergePending()`.\n */\n getDivergeData(): SnapsDistance {\n if (!this.divergeData)\n throw new Error(\n `getDivergeData() expects divergeData to be populate, please use this.setDivergeData() for id: ${this.id()}`\n );\n return this.divergeData;\n }\n\n /**\n * don't use modelComponent.getDivergeData() because in some scenarios when on a lane, it compares the head\n * on the lane against the head on the main, which could show the component as diverged incorrectly.\n */\n async getDivergeDataForMergePending(repo: Repository) {\n return getDivergeData({\n repo,\n modelComponent: this,\n targetHead: (this.laneId ? this.laneHeadRemote : this.remoteHead) || null,\n throws: false,\n });\n }\n\n async populateLocalAndRemoteHeads(repo: Repository, lane?: Lane) {\n this.setLaneHeadLocal(lane);\n if (lane) this.laneId = lane.toLaneId();\n if (!this.scope) {\n return; // no remote to update. it's local.\n }\n this.remoteHead = await repo.remoteLanes.getRef(LaneId.from(DEFAULT_LANE, this.scope), this.toComponentId());\n if (!lane) {\n return;\n }\n this.laneHeadRemote = lane.isNew ? null : await repo.remoteLanes.getRef(lane.toLaneId(), this.toComponentId());\n\n const calculateRemote = async () => {\n if (this.laneHeadRemote) return this.laneHeadRemote;\n if (lane.isNew && lane.forkedFrom) {\n // For any forked lane — same-scope or cross-scope (e.g. after `bit lane change-scope`) — use\n // the forked-from lane's head as the divergence baseline. The consumer has that ref locally\n // from when they ran `bit lane import` on the original lane. This is correct for both:\n // - same-scope forks: identical to the previous behavior.\n // - cross-scope forks: previously fell through to `this.remoteHead || this.head`, which can\n // crash with `TargetHeadNotFound` when the component's main-head Version isn't local\n // (common after a lean-lane import since main history doesn't live on the lane scope).\n // Returning the fork's head instead reports only true local snaps as staged — not the\n // entire history — which also keeps `bit reset` from over-removing.\n const headFromFork = await repo.remoteLanes.getRef(lane.forkedFrom, this.toComponentId());\n if (headFromFork) return headFromFork;\n if (lane.forkedFrom.scope !== lane.scope) {\n // Cross-scope fork and the forked-from ref isn't local. Returning null over-reports\n // the lane history as staged (divergence has no baseline), but falling through to\n // `this.remoteHead || this.head` would crash with TargetHeadNotFound when the main-\n // head Version is missing locally. The user can recover by running `bit lane fetch`\n // on the forked-from lane to populate the ref.\n return null;\n }\n // Same-scope fork without a fork ref — fall through to the standard fallback below.\n }\n // if no remote-ref was found, because it's checked out to a lane, it's safe to assume that\n // this.head should be on the original-remote. hence, FetchMissingHistory will retrieve it on lane-remote\n return this.remoteHead || this.head;\n };\n\n this.calculatedRemoteHeadWhenOnLane = await calculateRemote();\n }\n\n setLaneHeadLocal(lane?: Lane) {\n if (lane) {\n // include lane.updateDependents — hidden cascade entries need a lane-local head so the\n // export-pending detector picks them up after a workspace cascade snap.\n this.laneHeadLocal = lane.getCompHeadIncludeUpdateDependents(this.toComponentId()) || null;\n }\n }\n\n /**\n * returns only the versions that exist in both components (regardless whether the hash are the same)\n * e.g. this.component = [0.0.1, 0.0.2, 0.0.3], other component = [0.0.3, 0.0.4]. it returns only [0.0.3].\n * also, in case it is coming from 'bit import', the version must be locally changed.\n * otherwise, it doesn't matter whether the hashes are different.\n */\n _getComparableVersionsObjects(\n otherComponent: Component, // in case of merging, the otherComponent is the existing component, and \"this\" is the incoming component\n local: boolean // for 'bit import' the local is true, for 'bit export' the local is false\n ): { thisComponentVersions: Versions; otherComponentVersions: Versions } {\n const otherLocalVersion = otherComponent.getLocalVersions();\n const otherComponentVersions = pickBy(\n otherComponent.versions,\n (val, key) => Object.keys(this.versions).includes(key) && (!local || otherLocalVersion.includes(key))\n );\n const thisComponentVersions = pickBy(\n this.versions,\n (val, key) => Object.keys(otherComponentVersions).includes(key) && (!local || otherLocalVersion.includes(key))\n );\n return { thisComponentVersions, otherComponentVersions };\n }\n\n compatibleWith(component: Component, local: boolean): boolean {\n const { thisComponentVersions, otherComponentVersions } = this._getComparableVersionsObjects(component, local);\n return isEqual(thisComponentVersions, otherComponentVersions);\n }\n\n diffWith(component: Component, local: boolean): string[] {\n const { thisComponentVersions, otherComponentVersions } = this._getComparableVersionsObjects(component, local);\n return Object.keys(thisComponentVersions).filter(\n (version) => thisComponentVersions[version].hash !== otherComponentVersions[version].hash\n );\n }\n\n isEmpty() {\n return isEmpty(this.versions) && !this.hasHead();\n }\n\n /**\n * on main return main head, on lane, return lane head.\n * if the head is also a tag, return the tag, otherwise, return the hash.\n */\n getHeadRegardlessOfLaneAsTagOrHash(returnVersionZeroForNoHead = false): string {\n const head = this.getHeadRegardlessOfLane();\n if (!head) {\n if (!isEmpty(this.versions))\n throw new Error(`error: ${this.id()} has tags but no head, it might be originated from legacy`);\n if (returnVersionZeroForNoHead) return VERSION_ZERO;\n throw new Error(`getHeadRegardlessOfLaneAsTagOrHash() failed finding a head for ${this.id()}`);\n }\n return this.getTagOfRefIfExists(head) || head.toString();\n }\n\n /**\n * get the recent head. if locally is ahead, return the local head. otherwise, return the remote head.\n *\n * a user can be checked out to a lane, in which case, `this.laneHeadLocal` and `this.laneHeadRemote`\n * may be populated.\n * `this.head` may not be populated, e.g. when a component was created on\n * this lane and never got snapped on main.\n * it's impossible that `this.head.isEqual(this.laneHeadLocal)`, because when snapping it's either\n * on main, which goes to this.head OR on a lane, which goes to this.laneHeadLocal.\n */\n async headIncludeRemote(repo: Repository): Promise<string> {\n const latestLocally = this.getHeadRegardlessOfLaneAsTagOrHash(true);\n const remoteHead = this.laneHeadRemote || this.remoteHead;\n if (!remoteHead) return latestLocally;\n if (!this.getHeadRegardlessOfLane()) {\n return remoteHead.toString(); // in case a snap was created on another lane\n }\n\n // either a user is on main or a lane, check whether the remote is ahead of the local\n if (this.laneId && !this.laneHeadRemote) {\n // when on a lane, setDivergeData is using the `this.calculatedRemoteHeadWhenOnLane`,\n // which takes into account main-head and forked-head. here, we don't want this. we care only about the\n // remote-lane head.\n return latestLocally;\n }\n await this.setDivergeData(repo, false);\n const divergeData = this.getDivergeData();\n if (divergeData.isTargetAhead()) {\n return this.getTagOfRefIfExists(remoteHead) || remoteHead.toString();\n }\n return latestLocally;\n }\n\n async getRefOfAncestor(repo: Repository, generationsToGoBack: number): Promise<Ref> {\n const head = this.getHeadRegardlessOfLane();\n if (!head) throw new BitError(`getRefOfAncestor failed to find the head of ${this.id()}`);\n const versionHistory = await this.getAndPopulateVersionHistory(repo, head);\n return versionHistory.getAncestor(generationsToGoBack, head);\n }\n\n latestVersion(): string {\n if (isEmpty(this.versions)) return VERSION_ZERO;\n return getLatestVersion(this.listVersions());\n }\n\n latestVersionIfExist(): string | undefined {\n if (isEmpty(this.versions)) return undefined;\n return getLatestVersion(this.listVersions());\n }\n\n // @todo: make it readable, it's a mess\n isLatestGreaterThan(version: string | null | undefined): boolean {\n if (!version) throw TypeError('isLatestGreaterThan expect to get a Version');\n const latest = this.getHeadRegardlessOfLaneAsTagOrHash(true);\n if (this.isEmpty() && !this.calculatedRemoteHeadWhenOnLane) {\n return false; // in case a snap was created on another lane\n }\n if (isTag(latest) && isTag(version)) {\n return semver.gt(latest, version);\n }\n if (latest === version) return false;\n const latestRef = this.getRef(latest);\n if (!latestRef) throw new Error('isLatestGreaterThan, latestRef was not found');\n const latestHash = latestRef.toString();\n const versionRef = this.getRef(version);\n if (!versionRef) return true; // probably a child\n const versionHash = versionRef.toString();\n if (latestHash === versionHash) return false;\n return true;\n }\n\n /**\n * Return the lateset version which actuall exists in the scope\n * (exists means the object itself exists)\n * This relevant for cases when the component version array has few versions\n * but we don't have all the refs in the object\n *\n * @returns {number}\n * @memberof Component\n */\n latestExisting(repository: Repository): string {\n if (isEmpty(this.versions)) return VERSION_ZERO;\n const versions = this.listVersions('ASC');\n let version = null;\n let versionStr = null;\n while (!version && versions && versions.length) {\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n versionStr = versions.pop();\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n version = this.loadVersionSync(versionStr, repository, false);\n }\n return versionStr || VERSION_ZERO;\n }\n\n /**\n * get component log and sort by the timestamp in ascending order (from the earliest to the latest)\n */\n async collectLogs(scope: Scope, shortHash = false, startFrom?: Ref): Promise<ComponentLog[]> {\n const repo = scope.objects;\n let versionsInfo = await getAllVersionsInfo({ modelComponent: this, repo, throws: false, startFrom });\n\n // due to recent changes of getting version-history object rather than fetching the entire history, some version\n // objects might be missing. import the component from the remote\n if (\n versionsInfo.some((v) => v.error && errorIsTypeOfMissingObject(v.error)) &&\n this.scope !== repo.scopeJson.name\n ) {\n logger.info(`collectLogs is unable to find some objects for ${this.id()}. will try to import them`);\n try {\n const lane = await scope.getCurrentLaneObject();\n await scope.scopeImporter.importWithoutDeps(\n ComponentIdList.fromArray([this.toComponentId()]).toVersionLatest(),\n {\n cache: false,\n includeVersionHistory: true,\n collectParents: true,\n lane: lane || undefined,\n reason: 'to collect logs (including parents)',\n }\n );\n versionsInfo = await getAllVersionsInfo({ modelComponent: this, repo, throws: false, startFrom });\n // Lean-lane-scope fallback: if the lane is on a different scope from the component's\n // home scope (e.g. a feature lane for a component that lives on main in another scope),\n // older main snaps may not be on the lane scope. Re-fetch without lane so the fetcher\n // routes to the component's home scope and brings in the missing main history.\n if (\n lane &&\n lane.scope !== this.scope &&\n versionsInfo.some((v) => v.error && errorIsTypeOfMissingObject(v.error))\n ) {\n await scope.scopeImporter.importWithoutDeps(\n ComponentIdList.fromArray([this.toComponentId()]).toVersionLatest(),\n {\n cache: false,\n includeVersionHistory: true,\n collectParents: true,\n reason: 'to collect logs from component home scope (lean-lane-scope fallback)',\n }\n );\n versionsInfo = await getAllVersionsInfo({ modelComponent: this, repo, throws: false, startFrom });\n }\n } catch (err) {\n logger.error(`collectLogs failed to import ${this.id()} history`, err);\n }\n }\n\n const head = this.getHeadRegardlessOfLane();\n const headVersion = head ? ((await repo.load(head)) as unknown as Version) : undefined;\n const removeAspect = headVersion?.extensions.findCoreExtension(Extensions.remove);\n const removeRange = removeAspect?.config.range;\n const removeSnaps = removeAspect?.config.snaps || [];\n const deprecationAspect = headVersion?.extensions.findCoreExtension(Extensions.deprecation);\n const deprecationRange = deprecationAspect?.config.range;\n\n const getRef = (ref: Ref) => (shortHash ? ref.toShortString() : ref.toString());\n const results = versionsInfo.map((versionInfo) => {\n const log = versionInfo.version ? versionInfo.version.log : { message: '<no-data-available>' };\n return {\n ...log, // @ts-ignore\n username: log?.username || 'unknown',\n // @ts-ignore\n email: log?.email || 'unknown',\n tag: versionInfo.tag,\n hash: getRef(versionInfo.ref),\n parents: versionInfo.parents.map((parent) => getRef(parent)),\n onLane: versionInfo.onLane,\n deleted:\n (versionInfo.tag && removeRange && semver.satisfies(versionInfo.tag, removeRange)) ||\n (!versionInfo.tag && removeSnaps.includes(versionInfo.ref.toString())),\n deprecated: versionInfo.tag && deprecationRange && semver.satisfies(versionInfo.tag, deprecationRange),\n hidden: versionInfo.version?.hidden,\n };\n });\n // sort from earliest to latest\n const sorted = results.sort((a: ComponentLog, b: ComponentLog) => {\n // @ts-ignore\n if (a.date && b.date) return a.date - b.date;\n return 0;\n });\n return sorted;\n }\n\n collectVersions(repo: Repository): Promise<ConsumerComponent[]> {\n return Promise.all(\n this.listVersions().map((versionNum) => {\n return this.toConsumerComponent(versionNum, this.scope, repo);\n })\n );\n }\n\n getTagOfRefIfExists(ref: Ref): string | undefined {\n const findIn = (versions: Versions) => Object.keys(versions).find((tag) => versions[tag].isEqual(ref));\n return findIn(this.versions) || findIn(this.orphanedVersions);\n }\n\n getTag(version: string): string | undefined {\n if (isTag(version)) return version;\n const ref = Ref.from(version);\n return this.getTagOfRefIfExists(ref);\n }\n\n switchHashesWithTagsIfExist(refs: Ref[]): string[] {\n return refs.map((ref) => this.getTagOfRefIfExists(ref) || ref.toString());\n }\n\n /**\n * if exactVersion is defined, add exact version instead of using the semver mechanism\n */\n getVersionToAdd(\n releaseType: semver.ReleaseType = DEFAULT_BIT_RELEASE_TYPE,\n exactVersion?: string | null,\n incrementBy?: number,\n preReleaseId?: string\n ): string {\n if (exactVersion && this.versions[exactVersion]) {\n throw new VersionAlreadyExists(exactVersion, this.id());\n }\n const version = exactVersion || this.version(releaseType, incrementBy, preReleaseId);\n validateVersion(version);\n return version;\n }\n\n isEqual(component: Component, considerOrphanedVersions = true): boolean {\n if ((this.hasHead() && !component.hasHead()) || (!this.hasHead() && component.hasHead())) {\n return false; // only one of them has head\n }\n if (this.head && component.head && !this.head.isEqual(component.head)) {\n return false; // the head is not equal.\n }\n // the head is equal or they both don't have head. check the versions\n if (this.versionArray.length !== component.versionArray.length) {\n return false;\n }\n const hasSameVersions = Object.keys(this.versions).every(\n (tag) => component.versions[tag] && component.versions[tag].isEqual(this.versions[tag])\n );\n if (considerOrphanedVersions) {\n if (Object.keys(this.orphanedVersions).length !== Object.keys(component.orphanedVersions).length) {\n return false;\n }\n const hasSameOrphanedVersions = Object.keys(this.orphanedVersions).every(\n (tag) => component.orphanedVersions[tag] && component.orphanedVersions[tag].isEqual(this.orphanedVersions[tag])\n );\n if (!hasSameOrphanedVersions) {\n return false;\n }\n }\n\n return hasSameVersions;\n }\n\n // eslint-disable-next-line complexity\n addVersion(\n version: Version,\n versionToAdd: string,\n lane?: Lane,\n previouslyUsedVersion?: string,\n { addToUpdateDependentsInLane, setHeadAsParent, detachHead, overrideHead }: AddVersionOpts = {}\n ): string {\n if (detachHead && overrideHead) {\n throw new Error(`addVersion expects either detachHead or overrideHead to be true, not both`);\n }\n if (lane) {\n if (isTag(versionToAdd)) {\n throw new BitError(\n 'unable to tag when checked out to a lane, please switch to main, merge the lane and then tag again'\n );\n }\n const currentBitId = this.toComponentId();\n const versionToAddRef = Ref.from(versionToAdd);\n const parent = previouslyUsedVersion ? this.getRef(previouslyUsedVersion) : null;\n if (!parent) {\n const existingComponentInLane = lane.getComponent(currentBitId);\n const currentHead = (existingComponentInLane && existingComponentInLane.head) || this.getHead();\n if (currentHead) {\n throw new Error(\n `component ${currentBitId.toString()} has a head (${currentHead.toString()}) but previouslyUsedVersion is empty`\n );\n }\n }\n if (parent && !parent.isEqual(versionToAddRef)) {\n version.addAsOnlyParent(parent);\n }\n // When the caller didn't explicitly opt in or out, preserve the existing entry's bucket so\n // a merge-from-main producing a new snap for a hidden updateDependent keeps it hidden\n // rather than promoting it into workspace-tracked state.\n const existingHidden = lane.findUpdateDependent(currentBitId);\n const existingVisible = lane.getComponent(currentBitId);\n const shouldBeHidden = addToUpdateDependentsInLane ?? (Boolean(existingHidden) && !existingVisible);\n if (shouldBeHidden) {\n if (existingVisible) lane.removeComponent(currentBitId);\n lane.addComponentToUpdateDependents(currentBitId.changeVersion(versionToAddRef.toString()));\n // Only brand-new hidden insertions raise the wire flag — that's the `_snap --update-dependents`\n // path adding a component that wasn't already on the lane. Cascades update an existing\n // hidden entry (wasAlreadyHidden=true) and must NOT raise the flag, otherwise origin would\n // re-add entries the Cloud UI explicitly dropped.\n if (!existingHidden) lane.setOverrideUpdateDependents(true);\n } else {\n if (existingHidden) lane.removeComponentFromUpdateDependentsIfExist(currentBitId);\n lane.addComponent({\n id: currentBitId,\n head: versionToAddRef,\n isDeleted: version.isRemoved(),\n });\n }\n\n if (lane.readmeComponent && lane.readmeComponent.id.fullName === currentBitId.fullName) {\n lane.setReadmeComponent(currentBitId);\n }\n this.laneHeadLocal = versionToAddRef;\n return versionToAdd;\n }\n // user on main\n const head = this.getHead();\n const parent = previouslyUsedVersion ? this.getRef(previouslyUsedVersion) : null;\n if (\n head &&\n head.toString() !== versionToAdd &&\n !this.hasTag(versionToAdd) // happens with auto-snap\n ) {\n // if this is a tag and this tag exists, the same version was added before with a different hash.\n // adding the current head into the parent will result in a non-exist hash in the parent.\n // if this is a hash and it's the same hash as the current head, adding it as a parent\n // results in a parent and a version has the same hash.\n // @todo: fix it in a more elegant way\n const parentToSet = setHeadAsParent ? head : parent;\n version.addAsOnlyParent(parentToSet || head);\n }\n if (parent && head && !parent.isEqual(head) && !overrideHead) {\n if (detachHead) this.detachedHeads.setHead(version.hash());\n else\n throw new Error(`unable to add a new version for \"${this.id()}\" on main.\nthis version started from an older version (${previouslyUsedVersion}), and not from the head (${head}).\nplease run \"bit checkout head\" to be up to date, then snap/tag your changes.\nif this is done intentionally, you can use --detach-head (or --override-head if available), but make sure you understand the implications as this is an experimental feature that may not be fully stable.`);\n } else {\n this.setHead(version.hash());\n this.detachedHeads.clearCurrent();\n }\n if (isTag(versionToAdd)) {\n this.setVersion(versionToAdd, version.hash());\n }\n this.markVersionAsLocal(versionToAdd);\n return versionToAdd;\n }\n\n version(releaseType: semver.ReleaseType = DEFAULT_BIT_RELEASE_TYPE, incrementBy = 1, preReleaseId?: string): string {\n const increment = (ver: string) => {\n try {\n // don't use \"semver.inc\" function, it'll swallow the error and return null.\n const incResult = new semver.SemVer(ver).inc(releaseType, preReleaseId);\n return incResult.version;\n } catch (err: any) {\n throw new Error(`unable to increment version \"${ver}\" with releaseType \"${releaseType}\" and preReleaseId \"${preReleaseId}\".\nError from \"semver\": ${err.message}`);\n }\n };\n\n const latest = this.latestVersion();\n if (!latest) {\n const isPreReleaseLike = ['prerelease', 'premajor', 'preminor', 'prepatch'].includes(releaseType);\n return isPreReleaseLike ? increment(DEFAULT_BIT_VERSION) : DEFAULT_BIT_VERSION;\n }\n let result = increment(latest);\n if (incrementBy === 1) return result;\n for (let i = 1; i < incrementBy; i += 1) {\n result = increment(result);\n }\n return result;\n }\n\n id(): string {\n return this.scope ? [this.scope, this.name].join('/') : this.name;\n }\n\n /**\n * @deprecated use toComponentId() instead\n */\n toBitId(): BitId {\n return new BitId({ scope: this.scope, name: this.name });\n }\n\n toComponentId(): ComponentID {\n if (!this.scope) throw new Error(`ModelComponent: scope is missing from \"${this.name}\"`);\n return new ComponentID(this.toBitId());\n }\n\n /**\n * @deprecated use toComponentIdWithLatestVersion() instead\n */\n toBitIdWithLatestVersion(): BitId {\n return new BitId({ scope: this.scope, name: this.name, version: this.getHeadRegardlessOfLaneAsTagOrHash(true) });\n }\n\n toComponentIdWithLatestVersion(): ComponentID {\n return ComponentID.fromObject({\n scope: this.scope,\n name: this.name,\n version: this.getHeadRegardlessOfLaneAsTagOrHash(true),\n });\n }\n\n toComponentIdWithHead(): ComponentID {\n return ComponentID.fromObject({ scope: this.scope, name: this.name, version: this.head?.toString() });\n }\n\n toBitIdWithLatestVersionAllowNull(): ComponentID {\n const id = this.toComponentIdWithLatestVersion();\n return id.version === VERSION_ZERO ? id.changeVersion(undefined) : id;\n }\n\n toObject() {\n function versions(vers: Versions) {\n const obj = {};\n forEach(vers, (ref, version) => {\n obj[version] = ref.toString();\n });\n return obj;\n }\n\n const componentObject = {\n name: this.name,\n scope: this.scope,\n versions: versions(this.versions),\n lang: this.lang,\n deprecated: this.deprecated,\n bindingPrefix: this.bindingPrefix,\n remotes: this.scopesList,\n schema: this.schema,\n detachedHeads: this.detachedHeads.toObject(),\n };\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n if (this.local) componentObject.local = this.local;\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n if (!isEmpty(this.state)) componentObject.state = this.state;\n // @ts-ignore\n if (!isEmpty(this.orphanedVersions)) componentObject.orphanedVersions = versions(this.orphanedVersions);\n const headStr = this.getHeadStr();\n // @ts-ignore\n if (headStr) componentObject.head = headStr;\n\n return componentObject;\n }\n\n async loadVersion(versionStr: string, repository: Repository, throws = true): Promise<Version> {\n const versionRef = this.getRef(versionStr);\n if (!versionRef) throw new VersionNotFound(versionStr, this.id());\n const version = await repository.load(versionRef, false);\n if (!version && throws) throw new VersionNotFoundOnFS(versionStr, this.id());\n return version as Version;\n }\n\n loadVersionSync(version: string, repository: Repository, throws = true): Version {\n const versionRef = this.getRef(version);\n if (!versionRef) throw new VersionNotFound(version, this.id());\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n return versionRef.loadSync(repository, throws);\n }\n\n async collectVersionsObjects(\n repo: Repository,\n versions: string[],\n throwForMissingLocalArtifacts = false,\n workspaceId?: ComponentID\n ): Promise<ObjectItem[]> {\n const refsWithoutArtifacts: Ref[] = [];\n const artifactsRefs: Ref[] = [];\n const artifactsRefsFromExportedVersions: Ref[] = [];\n const locallyChangedVersions = await this.getLocalTagsOrHashes(repo, workspaceId);\n const locallyChangedHashes = locallyChangedVersions.map((v) => (isTag(v) ? (this.getRef(v) as Ref).hash : v));\n const versionsRefs = versions.map((version) => this.getRef(version) as Ref);\n refsWithoutArtifacts.push(...versionsRefs);\n\n const versionsObjects: Version[] = await Promise.all(\n versionsRefs.map((versionRef) => this.loadVersion(versionRef.toString(), repo))\n );\n versionsObjects.forEach((versionObject) => {\n const refs = versionObject.refsWithOptions(false, false);\n refsWithoutArtifacts.push(...refs);\n const refsFromExtensions = getRefsFromExtensions(versionObject.extensions);\n locallyChangedHashes.includes(versionObject.hash().toString())\n ? artifactsRefs.push(...refsFromExtensions)\n : artifactsRefsFromExportedVersions.push(...refsFromExtensions);\n });\n const loadedRefs: ObjectItem[] = [];\n try {\n const loaded = await repo.loadManyRaw(refsWithoutArtifacts);\n loadedRefs.push(...loaded);\n } catch (err: any) {\n if (err.code === 'ENOENT') {\n throw new Error(`unable to find an object file \"${err.path}\"\nfor a component \"${this.id()}\", versions: ${versions.join(', ')}`);\n }\n throw err;\n }\n try {\n const loaded = throwForMissingLocalArtifacts\n ? await repo.loadManyRaw(artifactsRefs)\n : await repo.loadManyRawIgnoreMissing(artifactsRefs);\n loadedRefs.push(...loaded);\n // ignore missing artifacts when exporting old versions that were exported in the past and are now exported to a\n // different scope. this is happening for example when exporting a lane that has components from different\n // remotes. it's ok to not have all artifacts from the other remotes to this remote.\n const loadedExportedArtifacts = await repo.loadManyRawIgnoreMissing(artifactsRefsFromExportedVersions);\n loadedRefs.push(...loadedExportedArtifacts);\n } catch (err: any) {\n if (err.code === 'ENOENT') {\n throw new Error(`unable to find an artifact object file \"${err.path}\"\nfor a component \"${this.id()}\", versions: ${versions.join(', ')}\nconsider using --ignore-missing-artifacts flag if you're sure the artifacts are in the remote`);\n }\n throw err;\n }\n return loadedRefs;\n }\n\n async collectObjects(repo: Repository): Promise<ComponentObjects> {\n try {\n const [rawComponent, objects] = await Promise.all([this.asRaw(repo), this.collectRaw(repo)]);\n return new ComponentObjects(\n rawComponent,\n objects.map((o) => o.buffer)\n );\n } catch (err: any) {\n if (err.code === 'ENOENT') {\n throw new Error(\n `fatal: an object of \"${this.id()}\" was not found at ${err.path}\\nplease try to re-import the component`\n );\n }\n throw err;\n }\n }\n\n /**\n * to delete a version from a component, don't call this method directly. Instead, use sources.removeVersion()\n */\n removeVersion(version: string): Ref {\n const objectRef = this.getRef(version);\n if (!objectRef) throw new Error(`removeVersion failed finding version ${version}`);\n delete this.versions[version];\n if (this.state.versions && this.state.versions[version]) delete this.state.versions[version];\n return objectRef;\n }\n\n toComponentVersion(versionStr?: string): ComponentVersion {\n const versionParsed = versionParser(versionStr);\n const versionNum = versionParsed.latest\n ? this.getHeadRegardlessOfLaneAsTagOrHash(true)\n : (versionParsed.versionNum as string);\n if (versionNum === VERSION_ZERO) {\n throw new NoHeadNoVersion(this.id());\n }\n if (isTag(versionNum) && !this.hasTagIncludeOrphaned(versionNum)) {\n throw new BitError(\n `the version ${versionNum} of \"${this.id()}\" does not exist in ${this.listVersionsIncludeOrphaned().join(\n '\\n'\n )}, versions array.`\n );\n }\n return new ComponentVersion(this, versionNum);\n }\n\n /**\n * if no \"specificVersion\" is given, it returns according to the head\n */\n async isDeprecated(repo: Repository, specificVersion?: string) {\n // backward compatibility\n if (this.deprecated) {\n return true;\n }\n const head = this.getHeadRegardlessOfLane();\n if (!head) {\n // it's legacy, or new. If legacy, the \"deprecated\" prop should do. if it's new, the workspace should\n // have the answer.\n return false;\n }\n const headVersion = (await repo.load(head)) as Version;\n if (!headVersion) {\n // the head Version doesn't exist locally, there is no way to know whether it's deprecated\n return null;\n }\n const deprecationAspect = headVersion.extensions.findCoreExtension(Extensions.deprecation);\n if (!deprecationAspect) {\n return false;\n }\n if (deprecationAspect.config.deprecate) {\n return true;\n }\n if (specificVersion && deprecationAspect.config.range) {\n const tag = this.getTag(specificVersion);\n if (!tag) return false; // it's a snap. \"range\" doesn't support deprecating snaps. only semver.\n return semver.satisfies(tag, deprecationAspect.config.range);\n }\n return false;\n }\n\n /**\n * whether the head is marked as internal. internal components are still versioned and exported,\n * but are hidden by default in the UI (workspace, scope and Bit Cloud).\n */\n async isInternal(repo: Repository): Promise<boolean | null> {\n const head = this.getHeadRegardlessOfLane();\n if (!head) {\n // it's new. the workspace should have the answer.\n return false;\n }\n const headVersion = (await repo.load(head)) as Version;\n if (!headVersion) {\n // the head Version doesn't exist locally, there is no way to know whether it's internal\n return null;\n }\n const internalizeAspect = headVersion.extensions.findCoreExtension(Extensions.internalize);\n if (!internalizeAspect) {\n return false;\n }\n return Boolean(internalizeAspect.config.internal);\n }\n\n async isRemoved(repo: Repository, specificVersion?: string): Promise<boolean | null> {\n const getHead = () => {\n if (!this.laneHeadLocal) return this.getHead();\n // you're checked out to a lane.\n if (!specificVersion) return this.laneHeadLocal;\n // it's possible that this specificVersion is from main.\n if (specificVersion === this.laneHeadLocal.toString()) return this.laneHeadLocal;\n return this.getHead();\n };\n const head = getHead();\n if (!head) {\n // it's new or only on lane\n return false;\n }\n const headVersion = (await repo.load(head)) as Version;\n if (!headVersion) {\n // the head Version doesn't exist locally, there is no way to know whether it's removed\n return null;\n }\n const removeAspect = headVersion.extensions.findCoreExtension(Extensions.remove);\n if (!removeAspect) {\n return false;\n }\n if (removeAspect.config.removed) {\n return true;\n }\n if (specificVersion) {\n if (removeAspect.config.range) {\n const tag = this.getTag(specificVersion);\n if (tag) return semver.satisfies(tag, removeAspect.config.range);\n }\n if (removeAspect.config.snaps && Array.isArray(removeAspect.config.snaps)) {\n return removeAspect.config.snaps.includes(specificVersion);\n }\n }\n return false;\n }\n\n async isLaneReadmeOf(repo: Repository): Promise<string[]> {\n const head = this.getHeadRegardlessOfLane();\n if (!head) {\n // we dont support lanes in legacy\n return [];\n }\n const version = (await repo.load(head)) as Version;\n if (!version) {\n // the head Version doesn't exist locally, there is no way to know whether it is a lane readme component\n return [];\n }\n const lanesAspect = version.extensions.findCoreExtension(Extensions.lanes);\n if (!lanesAspect || !lanesAspect.config.readme) {\n return [];\n }\n return Object.keys(lanesAspect.config.readme);\n }\n /**\n * convert a ModelComponent of a specific version to ConsumerComponent\n * @see sources.consumerComponentToVersion() for the opposite action.\n */\n async toConsumerComponent(versionStr: string, scopeName: string, repository: Repository): Promise<ConsumerComponent> {\n logger.trace(`model-component, converting ${this.id()}, version: ${versionStr} to ConsumerComponent`);\n let componentVersion = this.toComponentVersion(versionStr);\n const version: Version = await componentVersion.getVersion(repository);\n // in case the the version is a short-hash, it should be converted to a full hash.\n if (\n versionStr !== LATEST_VERSION &&\n !isTag(versionStr) &&\n !isSnap(versionStr) &&\n version.hash().toString() !== versionStr\n ) {\n componentVersion = new ComponentVersion(this, version.hash().toString());\n }\n const resolvedVersion = componentVersion.version;\n const loadFileInstance = (ClassName) => async (file) => {\n const loadP = file.file.load(repository);\n const content: Source = await loadP;\n if (!content)\n throw new BitError(\n `failed loading file ${file.relativePath} (ref: ${file.file.toString()}) from the model of ${this.id()}@${resolvedVersion}.\nThe Source object is missing from the local scope.\nTo fix, run:\nbit import ${this.id()}@${resolvedVersion} --objects --all-history`\n );\n return new ClassName({ base: '.', path: file.relativePath, contents: content.contents, test: file.test });\n };\n const filesP = version.files ? Promise.all(version.files.map(loadFileInstance(SourceFile))) : null;\n // @todo: this is weird. why the scopeMeta would be taken from the current scope and not he component scope?\n const scopeMetaP = scopeName ? ScopeMeta.fromScopeName(scopeName).load(repository) : Promise.resolve();\n const log = version.log || null;\n const [files, scopeMeta] = await Promise.all([filesP, scopeMetaP]);\n\n const extensions = version.extensions.clone();\n // when generating a new ConsumerComponent out of Version, it is critical to make sure that\n // all objects are cloned and not copied by reference. Otherwise, every time the\n // ConsumerComponent instance is changed, the Version will be changed as well, and since\n // the Version instance is saved in the Repository._cache, the next time a Version instance\n // is retrieved, it'll be different than the first time.\n const consumerComponent = new ConsumerComponent({\n name: this.name,\n version: componentVersion.version,\n scope: this.toComponentId()._legacy.scope,\n defaultScope: this.scope,\n lang: this.lang,\n bindingPrefix: this.bindingPrefix,\n mainFile: version.mainFile,\n dependencies: this.addDepsInfoFromDepsResolver(version.dependencies, extensions),\n devDependencies: this.addDepsInfoFromDepsResolver(version.devDependencies, extensions),\n flattenedDependencies: version.flattenedDependencies.clone(),\n packageDependencies: clone(version.packageDependencies),\n devPackageDependencies: clone(version.devPackageDependencies),\n peerPackageDependencies: clone(version.peerPackageDependencies),\n // @ts-ignore\n files,\n docs: version.docs,\n // @ts-ignore\n license: scopeMeta ? License.deserialize(scopeMeta.license) : undefined, // todo: make sure we have license in case of local scope\n log,\n overrides: ComponentOverrides.loadFromScope(version.overrides),\n packageJsonChangedProps: clone(version.packageJsonChangedProps),\n deprecated: this.deprecated,\n removed: version.isRemoved(),\n scopesList: clone(this.scopesList),\n schema: version.schema,\n extensions,\n buildStatus: version.buildStatus,\n });\n\n return consumerComponent;\n }\n\n private addDepsInfoFromDepsResolver(dependencies: Dependencies, extensions: ExtensionDataList): Dependency[] {\n const cloned = dependencies.getClone();\n const depsResolverData = extensions.find((ext) => ext.name === 'teambit.dependencies/dependency-resolver');\n if (!depsResolverData) return cloned;\n cloned.forEach((dependency) => {\n if (dependency.packageName) return;\n const matchedEntry = depsResolverData.data?.dependencies?.find((entry) => {\n return dependency.id.toString() === entry.id;\n });\n if (matchedEntry) {\n dependency.packageName = matchedEntry.packageName;\n }\n });\n return cloned;\n }\n\n // @todo: make sure it doesn't have the same ref twice, once as a version and once as a head\n refs(): Ref[] {\n const versions = Object.values(this.versionsIncludeOrphaned);\n if (this.head) versions.push(this.head);\n return versions;\n }\n\n validateBeforePersisting(componentStr: string): void {\n logger.trace(`validating component object: ${this.hash().hash} ${this.id()}`);\n const component = Component.parse(componentStr);\n component.validate();\n }\n\n toBuffer(pretty: boolean) {\n const args = getStringifyArgs(pretty);\n const obj = this.toObject();\n const str = JSON.stringify(obj, ...args);\n if (this.validateBeforePersist) this.validateBeforePersisting(str);\n return Buffer.from(str);\n }\n\n /**\n * Clear data that is relevant only for the local scope and should not be moved to the remote scope\n */\n clearStateData() {\n this.local = false; // backward compatibility for components created before 0.12.6\n this.state = {};\n }\n\n markVersionAsLocal(version: string) {\n if (!this.state.versions) this.state = { versions: {} };\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n if (!this.state.versions[version]) this.state.versions[version] = {};\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n this.state.versions[version].local = true;\n }\n\n /**\n * local versions that are not exported on the main lane.\n * @see `this.getLocalTagsOrHashes()`, to get local snaps on the current lane\n */\n getLocalVersions(): string[] {\n if (isEmpty(this.state) || isEmpty(this.state.versions)) return [];\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n return Object.keys(this.state.versions).filter((version) => this.state.versions[version].local);\n }\n\n hasLocalTag(tag: string): boolean {\n const localVersions = this.getLocalVersions();\n return localVersions.includes(tag);\n }\n\n async getLocalTagsOrHashes(repo: Repository, workspaceId?: ComponentID, lane?: Lane): Promise<string[]> {\n const localHashes = await this.getLocalHashes(repo, workspaceId, lane);\n if (!localHashes.length) return [];\n return this.switchHashesWithTagsIfExist(localHashes).reverse(); // reverse to get the older first\n }\n\n /**\n * Raw divergence (`snapsOnSourceOnly`). When `lane` is provided, applies the lean-lane filter:\n * drops refs whose Version is main-origin. Those refs already live on the component's home\n * scope (and on the destination too in the same-scope case), so `bit export` shouldn't be\n * re-pushing them. Pass `lane` from status/export/reset to share the same \"what's actually\n * local on this lane\" view.\n *\n * The lane's recorded head for this component is always kept, even if it's main-origin — the\n * lane object references it and the destination scope must be able to resolve the hash. Versions\n * marked `squashed` or `unrelated` are kept as well — they're locally-mutated and the\n * destination needs them to reconstruct the lane history.\n */\n async getLocalHashes(repo: Repository, workspaceId?: ComponentID, lane?: Lane): Promise<Ref[]> {\n await this.setDivergeData(repo, undefined, undefined, workspaceId);\n const divergeData = this.getDivergeData();\n const localHashes = divergeData.snapsOnSourceOnly;\n\n // When there's a detached head, divergeData only includes the detached head lineage.\n // We also need to include unexported versions from the main head lineage.\n const hasDetachedHead = this.detachedHeads && this.detachedHeads.getAllHeads().length > 0;\n if (hasDetachedHead && this.head) {\n // Calculate divergence from the main head as well\n const mainHeadDivergeData = await getDivergeData({\n repo,\n modelComponent: this,\n targetHead: (this.laneId ? this.calculatedRemoteHeadWhenOnLane : this.remoteHead) || null,\n sourceHead: this.head,\n throws: false,\n });\n // Add main head local versions that aren't already in localHashes\n for (const hash of mainHeadDivergeData.snapsOnSourceOnly) {\n if (!localHashes.find((h) => h.isEqual(hash))) {\n localHashes.push(hash);\n }\n }\n }\n\n if (!localHashes.length) return [];\n const filtered = lane ? await this.filterLeanLaneRefs(repo, lane, localHashes) : localHashes;\n return filtered.reverse(); // reverse to get the older first\n }\n\n private async filterLeanLaneRefs(repo: Repository, lane: Lane, refs: Ref[]): Promise<Ref[]> {\n const laneHead = lane.getCompHeadIncludeUpdateDependents(this.toComponentId());\n const keptRefs = await pMapPool(\n refs,\n async (ref) => {\n if (laneHead && ref.isEqual(laneHead)) return ref;\n const obj = (await ref.load(repo)) as Version | undefined;\n if (!obj) return null;\n const isLaneOrigin = Boolean(obj.originLaneId);\n const isLocallyMutated = Boolean(obj.squashed) || Boolean(obj.unrelated);\n if (!isLaneOrigin && !isLocallyMutated) return null;\n return ref;\n },\n { concurrency: concurrentComponentsLimit() }\n );\n return keptRefs.filter((ref): ref is Ref => ref !== null);\n }\n\n /**\n * for most cases, use `isLocallyChanged`, which takes into account lanes.\n * this is for cases when we only care about the versions exist in the `state` prop.\n */\n isLocallyChangedRegardlessOfLanes(): boolean {\n return Boolean(this.getLocalVersions().length);\n }\n\n /**\n * whether the component was locally changed, either by adding a new snap/tag or by merging\n * components from different lanes.\n */\n async isLocallyChanged(repo: Repository, lane?: Lane | null, workspaceId?: ComponentID): Promise<boolean> {\n if (lane) await this.populateLocalAndRemoteHeads(repo, lane);\n await this.setDivergeData(repo, undefined, undefined, workspaceId);\n const divergeData = this.getDivergeData();\n return divergeData.isSourceAhead();\n }\n\n async getVersionHistory(repo: Repository): Promise<VersionHistory> {\n const emptyVersionHistory = VersionHistory.fromId(this.name, this.scope);\n const versionHistory = await repo.load(emptyVersionHistory.hash());\n return (versionHistory || emptyVersionHistory) as VersionHistory;\n }\n\n async getAndPopulateVersionHistory(repo: Repository, head: Ref): Promise<VersionHistory> {\n const versionHistory = await this.getVersionHistory(repo);\n const { err } = await this.populateVersionHistoryIfMissingGracefully(repo, versionHistory, head);\n if (err) {\n logger.error(`rethrowing an error ${err.message}, current stuck`, new Error(err.message));\n throw err;\n }\n return versionHistory;\n }\n\n /**\n * careful! the `versions` passed here can belong to other components, not necessarily to this one.\n * that's why it checks whether the version-hash exists in the VersionHistory, and if it's not,\n * it won't update it.\n */\n async updateRebasedVersionHistory(repo: Repository, versions: Version[]): Promise<VersionHistory | undefined> {\n const versionHistory = await this.getVersionHistory(repo);\n const hasUpdated = versions.some((version) => {\n const versionData = versionHistory.getVersionData(version.hash());\n if (!versionData) return false;\n versionHistory.addFromVersionsObjects([version]);\n return true;\n });\n\n return hasUpdated ? versionHistory : undefined;\n }\n\n async updateVersionHistory(repo: Repository, versions: Version[]): Promise<VersionHistory> {\n const versionHistory = await this.getVersionHistory(repo);\n versionHistory.addFromVersionsObjects(versions);\n logger.debug(`updating version history of ${this.id()} with ${versions.length} versions`);\n return versionHistory;\n }\n\n async populateVersionHistoryIfMissingGracefully(\n repo: Repository,\n versionHistory: VersionHistory,\n head: Ref,\n /**\n * during traversal, if a hash is found in the VersionHistory it probably means that it has all history until this\n * point, so we can stop there for better performance. In some rare cases (e.g. the export was interrupted), we\n * need the ability of full traversal to repair the VersionHistory.\n */\n exitWhenFind = true\n ): Promise<{ err?: Error; added?: VersionParents[] }> {\n const headExists = versionHistory.hasHash(head);\n if (exitWhenFind && headExists) return {};\n const getVersionObj = async (ref: Ref) => (await ref.load(repo)) as Version | undefined;\n const versionsToAdd: Version[] = [];\n let err: Error | undefined;\n const addParentsRecursively = async (version: Version) => {\n await pMapSeries(version.parents, async (parent) => {\n const foundParent = versionHistory.hasHash(parent) || versionsToAdd.find((v) => v.hash().isEqual(parent));\n if (exitWhenFind && foundParent) {\n return;\n }\n const parentVersion = await getVersionObj(parent);\n if (!parentVersion) {\n const tag = this.getTagOfRefIfExists(parent);\n err = tag\n ? new VersionNotFound(tag, this.id())\n : new ParentNotFound(this.id(), version.hash().toString(), parent.toString());\n return;\n }\n versionsToAdd.push(parentVersion);\n await addParentsRecursively(parentVersion);\n });\n };\n const headVer = await getVersionObj(head);\n if (!headVer) {\n return { err: new HeadNotFound(this.id(), head.toString()) };\n }\n return this.populateVersionHistoryMutex.runExclusive(async () => {\n if (!headExists) versionsToAdd.push(headVer);\n await addParentsRecursively(headVer);\n const added = versionsToAdd.map((v) => getVersionParentsFromVersion(v));\n if (err) {\n return { err, added };\n }\n versionHistory.addFromVersionsObjects(versionsToAdd);\n logger.debug(\n `populateVersionHistoryIfMissingGracefully, updating ${this.id()} with ${versionsToAdd.length} versions`\n );\n await repo.writeObjectsToTheFS([versionHistory]);\n return { added };\n });\n }\n\n static parse(contents: string): Component {\n const rawComponent = JSON.parse(contents);\n return Component.from({\n name: rawComponent.box ? `${rawComponent.box}/${rawComponent.name}` : rawComponent.name,\n scope: rawComponent.scope,\n versions: mapValues(rawComponent.versions as Record<string, string>, (val) => Ref.from(val)),\n lang: rawComponent.lang,\n deprecated: rawComponent.deprecated,\n bindingPrefix: rawComponent.bindingPrefix,\n state: rawComponent.state,\n orphanedVersions: mapValues(rawComponent.orphanedVersions || {}, (val) => Ref.from(val)),\n scopesList: rawComponent.remotes,\n head: rawComponent.head ? Ref.from(rawComponent.head) : undefined,\n schema: rawComponent.schema || (rawComponent.head ? SchemaName.Harmony : SchemaName.Legacy),\n detachedHeads: DetachedHeads.fromObject(rawComponent.detachedHeads),\n });\n }\n\n static from(props: ComponentProps): Component {\n return new Component(props);\n }\n\n static fromBitId(bitId: ComponentID): Component {\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n return new Component({\n name: bitId.fullName,\n scope: bitId.scope,\n });\n }\n\n get isLegacy(): boolean {\n return !this.schema || this.schema === SchemaName.Legacy;\n }\n\n validate(): void {\n const message = `unable to save Component object \"${this.id()}\"`;\n if (!this.name) throw new BitError(`${message} the name is missing`);\n if (this.state && this.state.versions) {\n Object.keys(this.state.versions).forEach((version) => {\n if (isTag(version) && !this.hasTag(version)) {\n throw new ValidationError(`${message}, the version ${version} is marked as staged but is not available`);\n }\n });\n }\n const hashDuplications = findDuplications(this.versionArray.map((v) => v.toString()));\n if (hashDuplications.length) {\n throw new ValidationError(`${message}, the following hash(es) are duplicated ${hashDuplications.join(', ')}`);\n }\n Object.keys(this.orphanedVersions).forEach((version) => {\n if (this.versions[version]) {\n throw new ValidationError(\n `${message}, the version \"${version}\" exists in orphanedVersions but it exits also in \"versions\" prop`\n );\n }\n });\n if (!this.isLegacy && !this.head && this.versionArray.length) {\n // legacy don't have head. also, when snapping on a lane the first time, there is no head.\n // tags are done on default lane only, so if there are versions (tag), it must have head\n throw new ValidationError(`${message}, the \"head\" prop is missing`);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_lodash","data","require","_asyncMutex","semver","_interopRequireWildcard","_componentVersion","_bitError","_laneId","_componentId","_pMapSeries","_interopRequireDefault","_toolboxPromise","_harmonyModules","_toolboxArray","_legacyBitId","_legacy","_legacy2","_component","_legacy3","_legacyCli","_legacy4","_legacy5","_pkgModules","_component2","_legacy6","_objects","_scopeMeta","_versionHistory","_detachHeads","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","value","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","VERSION_ZERO","exports","Component","BitObject","constructor","props","name","scope","BitIdCompIdError","versions","orphanedVersions","lang","DEFAULT_LANGUAGE","deprecated","bindingPrefix","getBindingPrefixByDefaultScope","state","scopesList","head","schema","detachedHeads","DetachedHeads","populateVersionHistoryMutex","_populateVersionHistoryMutex","Mutex","versionArray","values","setVersion","tag","ref","setOrphanedVersion","Error","id","getRef","version","isTag","isHash","Ref","getHeadStr","toString","getHead","getHeadRegardlessOfLane","laneHeadLocal","getHeadAsTagIfExist","undefined","getTagOfRefIfExists","hasHead","Boolean","setHead","listVersions","sort","compare","reverse","listVersionsIncludeOrphaned","versionsIncludeOrphaned","hasVersion","repo","includeOrphaned","hasTagIncludeOrphaned","hasTag","versionParents","getAllVersionParents","modelComponent","heads","map","v","hash","some","startsWith","isHeadSnap","tagsHashes","includes","addScopeListItem","scopeListItem","url","date","find","setDivergeData","throws","fromCache","workspaceId","divergeData","remoteHead","laneId","calculatedRemoteHeadWhenOnLane","workspaceVersion","isOnLane","getDivergeData","targetHead","sourceHead","getDivergeDataForMergePending","laneHeadRemote","populateLocalAndRemoteHeads","lane","setLaneHeadLocal","toLaneId","remoteLanes","LaneId","from","DEFAULT_LANE","toComponentId","isNew","calculateRemote","forkedFrom","headFromFork","getCompHeadIncludeUpdateDependents","_getComparableVersionsObjects","otherComponent","local","otherLocalVersion","getLocalVersions","otherComponentVersions","pickBy","val","key","thisComponentVersions","compatibleWith","component","isEqual","diffWith","isEmpty","getHeadRegardlessOfLaneAsTagOrHash","returnVersionZeroForNoHead","headIncludeRemote","latestLocally","isTargetAhead","getRefOfAncestor","generationsToGoBack","BitError","versionHistory","getAndPopulateVersionHistory","getAncestor","latestVersion","getLatestVersion","latestVersionIfExist","isLatestGreaterThan","latest","gt","latestRef","latestHash","versionRef","versionHash","latestExisting","repository","versionStr","pop","loadVersionSync","collectLogs","shortHash","startFrom","objects","versionsInfo","getAllVersionsInfo","error","errorIsTypeOfMissingObject","scopeJson","logger","info","getCurrentLaneObject","scopeImporter","importWithoutDeps","ComponentIdList","fromArray","toVersionLatest","cache","includeVersionHistory","collectParents","reason","err","headVersion","load","removeAspect","extensions","findCoreExtension","Extensions","remove","removeRange","config","range","removeSnaps","snaps","deprecationAspect","deprecation","deprecationRange","toShortString","results","versionInfo","log","message","username","email","parents","parent","onLane","deleted","satisfies","hidden","sorted","a","b","collectVersions","Promise","all","versionNum","toConsumerComponent","findIn","getTag","switchHashesWithTagsIfExist","refs","getVersionToAdd","releaseType","DEFAULT_BIT_RELEASE_TYPE","exactVersion","incrementBy","preReleaseId","VersionAlreadyExists","validateVersion","considerOrphanedVersions","hasSameVersions","every","hasSameOrphanedVersions","addVersion","versionToAdd","previouslyUsedVersion","addToUpdateDependentsInLane","setHeadAsParent","detachHead","overrideHead","currentBitId","versionToAddRef","existingComponentInLane","getComponent","currentHead","addAsOnlyParent","existingHidden","findUpdateDependent","existingVisible","shouldBeHidden","removeComponent","addComponentToUpdateDependents","changeVersion","setOverrideUpdateDependents","removeComponentFromUpdateDependentsIfExist","addComponent","isDeleted","isRemoved","readmeComponent","fullName","setReadmeComponent","parentToSet","clearCurrent","markVersionAsLocal","increment","ver","incResult","SemVer","inc","isPreReleaseLike","DEFAULT_BIT_VERSION","result","join","toBitId","BitId","ComponentID","toBitIdWithLatestVersion","toComponentIdWithLatestVersion","fromObject","toComponentIdWithHead","toBitIdWithLatestVersionAllowNull","toObject","vers","obj","componentObject","remotes","headStr","loadVersion","VersionNotFound","VersionNotFoundOnFS","loadSync","collectVersionsObjects","throwForMissingLocalArtifacts","refsWithoutArtifacts","artifactsRefs","artifactsRefsFromExportedVersions","locallyChangedVersions","getLocalTagsOrHashes","locallyChangedHashes","versionsRefs","versionsObjects","versionObject","refsWithOptions","refsFromExtensions","getRefsFromExtensions","loadedRefs","loaded","loadManyRaw","code","path","loadManyRawIgnoreMissing","loadedExportedArtifacts","collectObjects","rawComponent","asRaw","collectRaw","ComponentObjects","buffer","removeVersion","objectRef","toComponentVersion","versionParsed","versionParser","NoHeadNoVersion","ComponentVersion","isDeprecated","specificVersion","deprecate","isInternal","internalizeAspect","internalize","internal","removed","Array","isArray","isLaneReadmeOf","lanesAspect","lanes","readme","scopeName","trace","componentVersion","getVersion","LATEST_VERSION","isSnap","resolvedVersion","loadFileInstance","ClassName","file","loadP","content","relativePath","base","contents","test","filesP","files","SourceFile","scopeMetaP","ScopeMeta","fromScopeName","resolve","scopeMeta","clone","consumerComponent","ConsumerComponent","defaultScope","mainFile","dependencies","addDepsInfoFromDepsResolver","devDependencies","flattenedDependencies","packageDependencies","devPackageDependencies","peerPackageDependencies","docs","license","License","deserialize","overrides","ComponentOverrides","loadFromScope","packageJsonChangedProps","buildStatus","cloned","getClone","depsResolverData","ext","dependency","packageName","matchedEntry","entry","validateBeforePersisting","componentStr","parse","validate","toBuffer","pretty","args","getStringifyArgs","str","JSON","stringify","validateBeforePersist","Buffer","clearStateData","hasLocalTag","localVersions","localHashes","getLocalHashes","snapsOnSourceOnly","hasDetachedHead","getAllHeads","mainHeadDivergeData","h","filtered","filterLeanLaneRefs","laneHead","keptRefs","pMapPool","isLaneOrigin","originLaneId","isLocallyMutated","squashed","unrelated","concurrency","concurrentComponentsLimit","isLocallyChangedRegardlessOfLanes","isLocallyChanged","isSourceAhead","getVersionHistory","emptyVersionHistory","VersionHistory","fromId","populateVersionHistoryIfMissingGracefully","updateRebasedVersionHistory","hasUpdated","versionData","getVersionData","addFromVersionsObjects","updateVersionHistory","debug","exitWhenFind","headExists","hasHash","getVersionObj","versionsToAdd","addParentsRecursively","pMapSeries","foundParent","parentVersion","ParentNotFound","headVer","HeadNotFound","runExclusive","added","getVersionParentsFromVersion","writeObjectsToTheFS","box","mapValues","SchemaName","Harmony","Legacy","fromBitId","bitId","isLegacy","ValidationError","hashDuplications","findDuplications"],"sources":["model-component.ts"],"sourcesContent":["import { forEach, isEmpty, pickBy, mapValues, isEqual, clone } from 'lodash';\nimport { Mutex } from 'async-mutex';\nimport * as semver from 'semver';\nimport { versionParser, isHash, isTag, isSnap, LATEST_VERSION } from '@teambit/component-version';\nimport { BitError } from '@teambit/bit-error';\nimport { LaneId, DEFAULT_LANE } from '@teambit/lane-id';\nimport { ComponentID, ComponentIdList } from '@teambit/component-id';\nimport pMapSeries from 'p-map-series';\nimport { pMapPool } from '@teambit/toolbox.promise.map-pool';\nimport { concurrentComponentsLimit } from '@teambit/harmony.modules.concurrency';\nimport type { LegacyComponentLog } from '@teambit/legacy-component-log';\nimport { findDuplications } from '@teambit/toolbox.array.duplications-finder';\nimport { BitId } from '@teambit/legacy-bit-id';\nimport { DEFAULT_BIT_RELEASE_TYPE, DEFAULT_BIT_VERSION, DEFAULT_LANGUAGE, Extensions } from '@teambit/legacy.constants';\nimport type { Dependencies, Dependency } from '@teambit/legacy.consumer-component';\nimport { ConsumerComponent, SchemaName } from '@teambit/legacy.consumer-component';\nimport { License, SourceFile, getRefsFromExtensions } from '@teambit/component.sources';\nimport { ComponentOverrides, getBindingPrefixByDefaultScope } from '@teambit/legacy.consumer-config';\nimport { ValidationError } from '@teambit/legacy.cli.error';\nimport { logger } from '@teambit/legacy.logger';\nimport { getStringifyArgs } from '@teambit/legacy.utils';\nimport { getLatestVersion, validateVersion } from '@teambit/pkg.modules.semver-helper';\nimport type { SnapsDistance } from '@teambit/component.snap-distance';\nimport {\n getDivergeData,\n getAllVersionParents,\n getAllVersionsInfo,\n getVersionParentsFromVersion,\n} from '@teambit/component.snap-distance';\nimport {\n ComponentObjects,\n ComponentVersion,\n HeadNotFound,\n ParentNotFound,\n VersionAlreadyExists,\n VersionNotFound,\n VersionNotFoundOnFS,\n NoHeadNoVersion,\n errorIsTypeOfMissingObject,\n BitIdCompIdError,\n} from '@teambit/legacy.scope';\nimport type { Repository } from '../objects';\nimport { BitObject, Ref } from '../objects';\nimport type Lane from './lane';\nimport ScopeMeta from './scopeMeta';\nimport type Source from './source';\nimport type Version from './version';\nimport type { VersionParents } from './version-history';\nimport VersionHistory from './version-history';\nimport type { ObjectItem } from '../objects/object-list';\nimport type { Scope } from '@teambit/legacy.scope';\nimport type { ExtensionDataList } from '@teambit/legacy.extension-data';\nimport { DetachedHeads } from './detach-heads';\n\ntype State = {\n versions?: {\n [version: string]: {\n local?: boolean; // whether a component was changed locally\n };\n };\n};\n\nexport type AddVersionOpts = {\n addToUpdateDependentsInLane?: boolean;\n\n /**\n * kind of rebase.\n * if true, set the head as the parent of the new version.\n * by default, the parent is the currently used version in .bitmap.\n * (this prop takes affect only when the component is checked out to an older version)\n */\n setHeadAsParent?: boolean;\n\n detachHead?: boolean;\n overrideHead?: boolean;\n};\n\ntype Versions = { [version: string]: Ref };\nexport type ScopeListItem = { url: string; name: string; date: string };\n\nexport type ComponentLog = LegacyComponentLog;\n\nexport type ComponentProps = {\n scope: string;\n name: string;\n versions?: Versions;\n orphanedVersions?: Versions;\n lang: string;\n deprecated: boolean;\n bindingPrefix: string;\n state?: State; // get deleted after export\n scopesList?: ScopeListItem[];\n head?: Ref;\n schema?: string | undefined;\n detachedHeads?: DetachedHeads;\n};\n\nexport const VERSION_ZERO = '0.0.0';\n\n/**\n * we can't rename the class as ModelComponent because old components are already saved in the model\n * with 'Component' in their headers. see object-registrar.types()\n */\n// TODO: FIX me .parser\nexport default class Component extends BitObject {\n scope: string;\n name: string;\n versions: Versions;\n orphanedVersions: Versions;\n lang: string;\n /**\n * @deprecated moved to the Version object inside teambit/deprecation aspect\n */\n deprecated: boolean;\n bindingPrefix: string;\n /**\n * @deprecated since 0.12.6 (long long ago :) probably can be removed)\n */\n local: boolean | null | undefined;\n state: State;\n scopesList: ScopeListItem[];\n head?: Ref;\n remoteHead?: Ref | null; // doesn't get saved in the scope, used to easier access the remote main head\n /**\n * doesn't get saved in the scope, used to easier access the local snap head data\n * when checked out to a lane, this prop is either Ref or null. otherwise (when on main), this prop is undefined.\n */\n laneHeadLocal?: Ref | null;\n /**\n * doesn't get saved in the scope, used to easier access the remote snap head data\n * when checked out to a lane, this prop is either Ref or null. otherwise (when on main), this prop is undefined.\n */\n laneHeadRemote?: Ref | null;\n\n /**\n * when checked out to a lane, calculate what should be the head on the remote.\n * if the laneHeadRemote is null, for example, when the lane is new, then used the the lane it was forked from.\n * it no head is found on the lane/forked, then use the component.head.\n */\n calculatedRemoteHeadWhenOnLane?: Ref | null;\n\n laneId?: LaneId; // doesn't get saved in the scope.\n laneDataIsPopulated = false; // doesn't get saved in the scope, used to improve performance of loading the lane data\n schema: string | undefined;\n detachedHeads: DetachedHeads;\n private divergeData?: SnapsDistance;\n private _populateVersionHistoryMutex?: Mutex;\n constructor(props: ComponentProps) {\n super();\n if (!props.name) throw new TypeError('Model Component constructor expects to get a name parameter');\n if (!props.scope) {\n throw new BitIdCompIdError(props.name);\n }\n this.scope = props.scope;\n this.name = props.name;\n this.versions = props.versions || {};\n this.orphanedVersions = props.orphanedVersions || {};\n this.lang = props.lang || DEFAULT_LANGUAGE;\n this.deprecated = props.deprecated || false;\n this.bindingPrefix = props.bindingPrefix || getBindingPrefixByDefaultScope(props.scope);\n this.state = props.state || {};\n this.scopesList = props.scopesList || [];\n this.head = props.head;\n this.schema = props.schema;\n this.detachedHeads = props.detachedHeads || new DetachedHeads();\n }\n\n private get populateVersionHistoryMutex() {\n if (!this._populateVersionHistoryMutex) {\n this._populateVersionHistoryMutex = new Mutex();\n }\n return this._populateVersionHistoryMutex;\n }\n\n get versionArray(): Ref[] {\n return Object.values(this.versions);\n }\n\n setVersion(tag: string, ref: Ref) {\n this.versions[tag] = ref;\n delete this.orphanedVersions[tag]; // just in case it's there.\n }\n\n setOrphanedVersion(tag: string, ref: Ref) {\n if (this.versions[tag]) {\n throw new Error(\n `unable to save orphanedVersion \"${tag}\" for \"${this.id()}\" because this tag is already part of the versions prop`\n );\n }\n this.orphanedVersions[tag] = ref;\n }\n\n getRef(version: string): Ref | null {\n if (isTag(version)) {\n return this.orphanedVersions[version] || this.versions[version];\n }\n if (isHash(version)) {\n return new Ref(version);\n }\n return null;\n }\n\n getHeadStr(): string | null {\n return this.head ? this.head.toString() : null;\n }\n\n getHead(): Ref | undefined {\n return this.head;\n }\n\n /**\n * returns the head hash. regardless of whether current lane is the default or not.\n * if on a lane, it returns the head of the component on the lane.\n */\n getHeadRegardlessOfLane(): Ref | undefined {\n return this.laneHeadLocal || this.getHead();\n }\n\n getHeadAsTagIfExist(): string | undefined {\n if (!this.head) return undefined;\n return this.getTagOfRefIfExists(this.head) || this.head.toString();\n }\n\n hasHead() {\n return Boolean(this.head);\n }\n\n setHead(head: Ref | undefined) {\n this.head = head;\n }\n\n listVersions(sort?: 'ASC' | 'DESC'): string[] {\n const versions = Object.keys(this.versions);\n if (!sort) return versions;\n if (sort === 'ASC') {\n return versions.sort(semver.compare);\n }\n\n return versions.sort(semver.compare).reverse();\n }\n\n listVersionsIncludeOrphaned(sort?: 'ASC' | 'DESC'): string[] {\n const versions = Object.keys(this.versionsIncludeOrphaned);\n if (!sort) return versions;\n if (sort === 'ASC') {\n return versions.sort(semver.compare);\n }\n\n return versions.sort(semver.compare).reverse();\n }\n\n async hasVersion(version: string, repo: Repository, includeOrphaned = true): Promise<boolean> {\n if (isTag(version)) {\n return includeOrphaned ? this.hasTagIncludeOrphaned(version) : this.hasTag(version);\n }\n const head = this.getHeadRegardlessOfLane();\n if (!head) {\n return false;\n }\n const versionParents = await getAllVersionParents({ repo, modelComponent: this, heads: [head] });\n // we use \"startsWith\" because it can be a short hash\n return versionParents.map((v) => v.hash).some((hash) => hash.toString().startsWith(version));\n }\n\n hasTag(version: string): boolean {\n return Boolean(this.versions[version]);\n }\n\n /**\n * a new object on every access, which is expensive for a component with many versions. to look up a single tag,\n * use `getRef` / `getTagOfRefIfExists` instead.\n */\n get versionsIncludeOrphaned(): Versions {\n // don't use lodash.merge, it's much faster but mutates `this.versions`.\n return { ...this.versions, ...this.orphanedVersions };\n }\n\n hasTagIncludeOrphaned(version: string): boolean {\n return Boolean(this.versions[version] || this.orphanedVersions[version]);\n }\n\n /**\n * whether the head is a snap (not a tag)\n */\n isHeadSnap() {\n const tagsHashes = this.versionArray.map((ref) => ref.toString());\n return this.head && !tagsHashes.includes(this.head.toString());\n }\n\n /**\n * add a new remote if it is not there already\n */\n addScopeListItem(scopeListItem: ScopeListItem): void {\n if (!scopeListItem.name || !scopeListItem.url || !scopeListItem.date) {\n throw new TypeError(\n `model-component.addRemote get an invalid remote. name: ${scopeListItem.name}, url: ${scopeListItem.url}, date: ${scopeListItem.date}`\n );\n }\n if (!this.scopesList.find((r) => r.url === scopeListItem.url)) {\n this.scopesList.push(scopeListItem);\n }\n }\n\n /**\n * on main - it checks local-head (or .bitmap version if given) vs remote-head.\n * on lane - it checks local-head on lane vs remote-head on lane.\n * however, to get an accurate `divergeData.snapsOnSourceOnly`, the above is not enough.\n * for example, comp-a@snap-x from lane-a is merged into lane-b. we don't want this snap-x to be \"local\", because\n * then, bit-status will show it as \"staged\" and bit-reset will remove it unexpectedly.\n * if we only check by the local-head and remote-head on lane, it'll be local because the remote-head of lane-b is empty.\n * to address this, we search all remote-refs files for this bit-id and during the local history traversal, if a hash\n * is found there, it'll stop the traversal and not mark it as remote.\n * in this example, during the merge, lane-a was fetched, and the remote-ref of this lane has snap-x as the head.\n */\n async setDivergeData(repo: Repository, throws = true, fromCache = true, workspaceId?: ComponentID): Promise<void> {\n if (!this.divergeData || !fromCache) {\n const remoteHead = (this.laneId ? this.calculatedRemoteHeadWhenOnLane : this.remoteHead) || null;\n // this is for detach-head scenario. it can happen on main only. we want to compare against the .bitmap\n // version (which is the detached head) and not the actual head.\n const workspaceVersion = !this.isOnLane() && workspaceId?.hasVersion() ? workspaceId.version : null;\n this.divergeData = await getDivergeData({\n repo,\n modelComponent: this,\n targetHead: remoteHead,\n sourceHead: workspaceVersion ? this.getRef(workspaceVersion) : undefined,\n throws,\n });\n }\n }\n\n isOnLane(): boolean {\n return Boolean(this.laneHeadLocal || this.laneHeadLocal === null);\n }\n\n /**\n * this is used (among others) by `bit status` to check whether snaps are local (staged), for `bit reset` to remove them\n * and for `bit export` to push them. for \"merge pending\" status, use `this.getDivergeDataForMergePending()`.\n */\n getDivergeData(): SnapsDistance {\n if (!this.divergeData)\n throw new Error(\n `getDivergeData() expects divergeData to be populate, please use this.setDivergeData() for id: ${this.id()}`\n );\n return this.divergeData;\n }\n\n /**\n * don't use modelComponent.getDivergeData() because in some scenarios when on a lane, it compares the head\n * on the lane against the head on the main, which could show the component as diverged incorrectly.\n */\n async getDivergeDataForMergePending(repo: Repository) {\n return getDivergeData({\n repo,\n modelComponent: this,\n targetHead: (this.laneId ? this.laneHeadRemote : this.remoteHead) || null,\n throws: false,\n });\n }\n\n async populateLocalAndRemoteHeads(repo: Repository, lane?: Lane) {\n this.setLaneHeadLocal(lane);\n if (lane) this.laneId = lane.toLaneId();\n if (!this.scope) {\n return; // no remote to update. it's local.\n }\n this.remoteHead = await repo.remoteLanes.getRef(LaneId.from(DEFAULT_LANE, this.scope), this.toComponentId());\n if (!lane) {\n return;\n }\n this.laneHeadRemote = lane.isNew ? null : await repo.remoteLanes.getRef(lane.toLaneId(), this.toComponentId());\n\n const calculateRemote = async () => {\n if (this.laneHeadRemote) return this.laneHeadRemote;\n if (lane.isNew && lane.forkedFrom) {\n // For any forked lane — same-scope or cross-scope (e.g. after `bit lane change-scope`) — use\n // the forked-from lane's head as the divergence baseline. The consumer has that ref locally\n // from when they ran `bit lane import` on the original lane. This is correct for both:\n // - same-scope forks: identical to the previous behavior.\n // - cross-scope forks: previously fell through to `this.remoteHead || this.head`, which can\n // crash with `TargetHeadNotFound` when the component's main-head Version isn't local\n // (common after a lean-lane import since main history doesn't live on the lane scope).\n // Returning the fork's head instead reports only true local snaps as staged — not the\n // entire history — which also keeps `bit reset` from over-removing.\n const headFromFork = await repo.remoteLanes.getRef(lane.forkedFrom, this.toComponentId());\n if (headFromFork) return headFromFork;\n if (lane.forkedFrom.scope !== lane.scope) {\n // Cross-scope fork and the forked-from ref isn't local. Returning null over-reports\n // the lane history as staged (divergence has no baseline), but falling through to\n // `this.remoteHead || this.head` would crash with TargetHeadNotFound when the main-\n // head Version is missing locally. The user can recover by running `bit lane fetch`\n // on the forked-from lane to populate the ref.\n return null;\n }\n // Same-scope fork without a fork ref — fall through to the standard fallback below.\n }\n // if no remote-ref was found, because it's checked out to a lane, it's safe to assume that\n // this.head should be on the original-remote. hence, FetchMissingHistory will retrieve it on lane-remote\n return this.remoteHead || this.head;\n };\n\n this.calculatedRemoteHeadWhenOnLane = await calculateRemote();\n }\n\n setLaneHeadLocal(lane?: Lane) {\n if (lane) {\n // include lane.updateDependents — hidden cascade entries need a lane-local head so the\n // export-pending detector picks them up after a workspace cascade snap.\n this.laneHeadLocal = lane.getCompHeadIncludeUpdateDependents(this.toComponentId()) || null;\n }\n }\n\n /**\n * returns only the versions that exist in both components (regardless whether the hash are the same)\n * e.g. this.component = [0.0.1, 0.0.2, 0.0.3], other component = [0.0.3, 0.0.4]. it returns only [0.0.3].\n * also, in case it is coming from 'bit import', the version must be locally changed.\n * otherwise, it doesn't matter whether the hashes are different.\n */\n _getComparableVersionsObjects(\n otherComponent: Component, // in case of merging, the otherComponent is the existing component, and \"this\" is the incoming component\n local: boolean // for 'bit import' the local is true, for 'bit export' the local is false\n ): { thisComponentVersions: Versions; otherComponentVersions: Versions } {\n const otherLocalVersion = otherComponent.getLocalVersions();\n const otherComponentVersions = pickBy(\n otherComponent.versions,\n (val, key) => Object.keys(this.versions).includes(key) && (!local || otherLocalVersion.includes(key))\n );\n const thisComponentVersions = pickBy(\n this.versions,\n (val, key) => Object.keys(otherComponentVersions).includes(key) && (!local || otherLocalVersion.includes(key))\n );\n return { thisComponentVersions, otherComponentVersions };\n }\n\n compatibleWith(component: Component, local: boolean): boolean {\n const { thisComponentVersions, otherComponentVersions } = this._getComparableVersionsObjects(component, local);\n return isEqual(thisComponentVersions, otherComponentVersions);\n }\n\n diffWith(component: Component, local: boolean): string[] {\n const { thisComponentVersions, otherComponentVersions } = this._getComparableVersionsObjects(component, local);\n return Object.keys(thisComponentVersions).filter(\n (version) => thisComponentVersions[version].hash !== otherComponentVersions[version].hash\n );\n }\n\n isEmpty() {\n return isEmpty(this.versions) && !this.hasHead();\n }\n\n /**\n * on main return main head, on lane, return lane head.\n * if the head is also a tag, return the tag, otherwise, return the hash.\n */\n getHeadRegardlessOfLaneAsTagOrHash(returnVersionZeroForNoHead = false): string {\n const head = this.getHeadRegardlessOfLane();\n if (!head) {\n if (!isEmpty(this.versions))\n throw new Error(`error: ${this.id()} has tags but no head, it might be originated from legacy`);\n if (returnVersionZeroForNoHead) return VERSION_ZERO;\n throw new Error(`getHeadRegardlessOfLaneAsTagOrHash() failed finding a head for ${this.id()}`);\n }\n return this.getTagOfRefIfExists(head) || head.toString();\n }\n\n /**\n * get the recent head. if locally is ahead, return the local head. otherwise, return the remote head.\n *\n * a user can be checked out to a lane, in which case, `this.laneHeadLocal` and `this.laneHeadRemote`\n * may be populated.\n * `this.head` may not be populated, e.g. when a component was created on\n * this lane and never got snapped on main.\n * it's impossible that `this.head.isEqual(this.laneHeadLocal)`, because when snapping it's either\n * on main, which goes to this.head OR on a lane, which goes to this.laneHeadLocal.\n */\n async headIncludeRemote(repo: Repository): Promise<string> {\n const latestLocally = this.getHeadRegardlessOfLaneAsTagOrHash(true);\n const remoteHead = this.laneHeadRemote || this.remoteHead;\n if (!remoteHead) return latestLocally;\n if (!this.getHeadRegardlessOfLane()) {\n return remoteHead.toString(); // in case a snap was created on another lane\n }\n\n // either a user is on main or a lane, check whether the remote is ahead of the local\n if (this.laneId && !this.laneHeadRemote) {\n // when on a lane, setDivergeData is using the `this.calculatedRemoteHeadWhenOnLane`,\n // which takes into account main-head and forked-head. here, we don't want this. we care only about the\n // remote-lane head.\n return latestLocally;\n }\n await this.setDivergeData(repo, false);\n const divergeData = this.getDivergeData();\n if (divergeData.isTargetAhead()) {\n return this.getTagOfRefIfExists(remoteHead) || remoteHead.toString();\n }\n return latestLocally;\n }\n\n async getRefOfAncestor(repo: Repository, generationsToGoBack: number): Promise<Ref> {\n const head = this.getHeadRegardlessOfLane();\n if (!head) throw new BitError(`getRefOfAncestor failed to find the head of ${this.id()}`);\n const versionHistory = await this.getAndPopulateVersionHistory(repo, head);\n return versionHistory.getAncestor(generationsToGoBack, head);\n }\n\n latestVersion(): string {\n if (isEmpty(this.versions)) return VERSION_ZERO;\n return getLatestVersion(this.listVersions());\n }\n\n latestVersionIfExist(): string | undefined {\n if (isEmpty(this.versions)) return undefined;\n return getLatestVersion(this.listVersions());\n }\n\n // @todo: make it readable, it's a mess\n isLatestGreaterThan(version: string | null | undefined): boolean {\n if (!version) throw TypeError('isLatestGreaterThan expect to get a Version');\n const latest = this.getHeadRegardlessOfLaneAsTagOrHash(true);\n if (this.isEmpty() && !this.calculatedRemoteHeadWhenOnLane) {\n return false; // in case a snap was created on another lane\n }\n if (isTag(latest) && isTag(version)) {\n return semver.gt(latest, version);\n }\n if (latest === version) return false;\n const latestRef = this.getRef(latest);\n if (!latestRef) throw new Error('isLatestGreaterThan, latestRef was not found');\n const latestHash = latestRef.toString();\n const versionRef = this.getRef(version);\n if (!versionRef) return true; // probably a child\n const versionHash = versionRef.toString();\n if (latestHash === versionHash) return false;\n return true;\n }\n\n /**\n * Return the lateset version which actuall exists in the scope\n * (exists means the object itself exists)\n * This relevant for cases when the component version array has few versions\n * but we don't have all the refs in the object\n *\n * @returns {number}\n * @memberof Component\n */\n latestExisting(repository: Repository): string {\n if (isEmpty(this.versions)) return VERSION_ZERO;\n const versions = this.listVersions('ASC');\n let version = null;\n let versionStr = null;\n while (!version && versions && versions.length) {\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n versionStr = versions.pop();\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n version = this.loadVersionSync(versionStr, repository, false);\n }\n return versionStr || VERSION_ZERO;\n }\n\n /**\n * get component log and sort by the timestamp in ascending order (from the earliest to the latest)\n */\n async collectLogs(scope: Scope, shortHash = false, startFrom?: Ref): Promise<ComponentLog[]> {\n const repo = scope.objects;\n let versionsInfo = await getAllVersionsInfo({ modelComponent: this, repo, throws: false, startFrom });\n\n // due to recent changes of getting version-history object rather than fetching the entire history, some version\n // objects might be missing. import the component from the remote\n if (\n versionsInfo.some((v) => v.error && errorIsTypeOfMissingObject(v.error)) &&\n this.scope !== repo.scopeJson.name\n ) {\n logger.info(`collectLogs is unable to find some objects for ${this.id()}. will try to import them`);\n try {\n const lane = await scope.getCurrentLaneObject();\n await scope.scopeImporter.importWithoutDeps(\n ComponentIdList.fromArray([this.toComponentId()]).toVersionLatest(),\n {\n cache: false,\n includeVersionHistory: true,\n collectParents: true,\n lane: lane || undefined,\n reason: 'to collect logs (including parents)',\n }\n );\n versionsInfo = await getAllVersionsInfo({ modelComponent: this, repo, throws: false, startFrom });\n // Lean-lane-scope fallback: if the lane is on a different scope from the component's\n // home scope (e.g. a feature lane for a component that lives on main in another scope),\n // older main snaps may not be on the lane scope. Re-fetch without lane so the fetcher\n // routes to the component's home scope and brings in the missing main history.\n if (\n lane &&\n lane.scope !== this.scope &&\n versionsInfo.some((v) => v.error && errorIsTypeOfMissingObject(v.error))\n ) {\n await scope.scopeImporter.importWithoutDeps(\n ComponentIdList.fromArray([this.toComponentId()]).toVersionLatest(),\n {\n cache: false,\n includeVersionHistory: true,\n collectParents: true,\n reason: 'to collect logs from component home scope (lean-lane-scope fallback)',\n }\n );\n versionsInfo = await getAllVersionsInfo({ modelComponent: this, repo, throws: false, startFrom });\n }\n } catch (err) {\n logger.error(`collectLogs failed to import ${this.id()} history`, err);\n }\n }\n\n const head = this.getHeadRegardlessOfLane();\n const headVersion = head ? ((await repo.load(head)) as unknown as Version) : undefined;\n const removeAspect = headVersion?.extensions.findCoreExtension(Extensions.remove);\n const removeRange = removeAspect?.config.range;\n const removeSnaps = removeAspect?.config.snaps || [];\n const deprecationAspect = headVersion?.extensions.findCoreExtension(Extensions.deprecation);\n const deprecationRange = deprecationAspect?.config.range;\n\n const getRef = (ref: Ref) => (shortHash ? ref.toShortString() : ref.toString());\n const results = versionsInfo.map((versionInfo) => {\n const log = versionInfo.version ? versionInfo.version.log : { message: '<no-data-available>' };\n return {\n ...log, // @ts-ignore\n username: log?.username || 'unknown',\n // @ts-ignore\n email: log?.email || 'unknown',\n tag: versionInfo.tag,\n hash: getRef(versionInfo.ref),\n parents: versionInfo.parents.map((parent) => getRef(parent)),\n onLane: versionInfo.onLane,\n deleted:\n (versionInfo.tag && removeRange && semver.satisfies(versionInfo.tag, removeRange)) ||\n (!versionInfo.tag && removeSnaps.includes(versionInfo.ref.toString())),\n deprecated: versionInfo.tag && deprecationRange && semver.satisfies(versionInfo.tag, deprecationRange),\n hidden: versionInfo.version?.hidden,\n };\n });\n // sort from earliest to latest\n const sorted = results.sort((a: ComponentLog, b: ComponentLog) => {\n // @ts-ignore\n if (a.date && b.date) return a.date - b.date;\n return 0;\n });\n return sorted;\n }\n\n collectVersions(repo: Repository): Promise<ConsumerComponent[]> {\n return Promise.all(\n this.listVersions().map((versionNum) => {\n return this.toConsumerComponent(versionNum, this.scope, repo);\n })\n );\n }\n\n getTagOfRefIfExists(ref: Ref): string | undefined {\n const findIn = (versions: Versions) => Object.keys(versions).find((tag) => versions[tag].isEqual(ref));\n return findIn(this.versions) || findIn(this.orphanedVersions);\n }\n\n getTag(version: string): string | undefined {\n if (isTag(version)) return version;\n const ref = Ref.from(version);\n return this.getTagOfRefIfExists(ref);\n }\n\n switchHashesWithTagsIfExist(refs: Ref[]): string[] {\n return refs.map((ref) => this.getTagOfRefIfExists(ref) || ref.toString());\n }\n\n /**\n * if exactVersion is defined, add exact version instead of using the semver mechanism\n */\n getVersionToAdd(\n releaseType: semver.ReleaseType = DEFAULT_BIT_RELEASE_TYPE,\n exactVersion?: string | null,\n incrementBy?: number,\n preReleaseId?: string\n ): string {\n if (exactVersion && this.versions[exactVersion]) {\n throw new VersionAlreadyExists(exactVersion, this.id());\n }\n const version = exactVersion || this.version(releaseType, incrementBy, preReleaseId);\n validateVersion(version);\n return version;\n }\n\n isEqual(component: Component, considerOrphanedVersions = true): boolean {\n if ((this.hasHead() && !component.hasHead()) || (!this.hasHead() && component.hasHead())) {\n return false; // only one of them has head\n }\n if (this.head && component.head && !this.head.isEqual(component.head)) {\n return false; // the head is not equal.\n }\n // the head is equal or they both don't have head. check the versions\n if (this.versionArray.length !== component.versionArray.length) {\n return false;\n }\n const hasSameVersions = Object.keys(this.versions).every(\n (tag) => component.versions[tag] && component.versions[tag].isEqual(this.versions[tag])\n );\n if (considerOrphanedVersions) {\n if (Object.keys(this.orphanedVersions).length !== Object.keys(component.orphanedVersions).length) {\n return false;\n }\n const hasSameOrphanedVersions = Object.keys(this.orphanedVersions).every(\n (tag) => component.orphanedVersions[tag] && component.orphanedVersions[tag].isEqual(this.orphanedVersions[tag])\n );\n if (!hasSameOrphanedVersions) {\n return false;\n }\n }\n\n return hasSameVersions;\n }\n\n // eslint-disable-next-line complexity\n addVersion(\n version: Version,\n versionToAdd: string,\n lane?: Lane,\n previouslyUsedVersion?: string,\n { addToUpdateDependentsInLane, setHeadAsParent, detachHead, overrideHead }: AddVersionOpts = {}\n ): string {\n if (detachHead && overrideHead) {\n throw new Error(`addVersion expects either detachHead or overrideHead to be true, not both`);\n }\n if (lane) {\n if (isTag(versionToAdd)) {\n throw new BitError(\n 'unable to tag when checked out to a lane, please switch to main, merge the lane and then tag again'\n );\n }\n const currentBitId = this.toComponentId();\n const versionToAddRef = Ref.from(versionToAdd);\n const parent = previouslyUsedVersion ? this.getRef(previouslyUsedVersion) : null;\n if (!parent) {\n const existingComponentInLane = lane.getComponent(currentBitId);\n const currentHead = (existingComponentInLane && existingComponentInLane.head) || this.getHead();\n if (currentHead) {\n throw new Error(\n `component ${currentBitId.toString()} has a head (${currentHead.toString()}) but previouslyUsedVersion is empty`\n );\n }\n }\n if (parent && !parent.isEqual(versionToAddRef)) {\n version.addAsOnlyParent(parent);\n }\n // When the caller didn't explicitly opt in or out, preserve the existing entry's bucket so\n // a merge-from-main producing a new snap for a hidden updateDependent keeps it hidden\n // rather than promoting it into workspace-tracked state.\n const existingHidden = lane.findUpdateDependent(currentBitId);\n const existingVisible = lane.getComponent(currentBitId);\n const shouldBeHidden = addToUpdateDependentsInLane ?? (Boolean(existingHidden) && !existingVisible);\n if (shouldBeHidden) {\n if (existingVisible) lane.removeComponent(currentBitId);\n lane.addComponentToUpdateDependents(currentBitId.changeVersion(versionToAddRef.toString()));\n // Only brand-new hidden insertions raise the wire flag — that's the `_snap --update-dependents`\n // path adding a component that wasn't already on the lane. Cascades update an existing\n // hidden entry (wasAlreadyHidden=true) and must NOT raise the flag, otherwise origin would\n // re-add entries the Cloud UI explicitly dropped.\n if (!existingHidden) lane.setOverrideUpdateDependents(true);\n } else {\n if (existingHidden) lane.removeComponentFromUpdateDependentsIfExist(currentBitId);\n lane.addComponent({\n id: currentBitId,\n head: versionToAddRef,\n isDeleted: version.isRemoved(),\n });\n }\n\n if (lane.readmeComponent && lane.readmeComponent.id.fullName === currentBitId.fullName) {\n lane.setReadmeComponent(currentBitId);\n }\n this.laneHeadLocal = versionToAddRef;\n return versionToAdd;\n }\n // user on main\n const head = this.getHead();\n const parent = previouslyUsedVersion ? this.getRef(previouslyUsedVersion) : null;\n if (\n head &&\n head.toString() !== versionToAdd &&\n !this.hasTag(versionToAdd) // happens with auto-snap\n ) {\n // if this is a tag and this tag exists, the same version was added before with a different hash.\n // adding the current head into the parent will result in a non-exist hash in the parent.\n // if this is a hash and it's the same hash as the current head, adding it as a parent\n // results in a parent and a version has the same hash.\n // @todo: fix it in a more elegant way\n const parentToSet = setHeadAsParent ? head : parent;\n version.addAsOnlyParent(parentToSet || head);\n }\n if (parent && head && !parent.isEqual(head) && !overrideHead) {\n if (detachHead) this.detachedHeads.setHead(version.hash());\n else\n throw new Error(`unable to add a new version for \"${this.id()}\" on main.\nthis version started from an older version (${previouslyUsedVersion}), and not from the head (${head}).\nplease run \"bit checkout head\" to be up to date, then snap/tag your changes.\nif this is done intentionally, you can use --detach-head (or --override-head if available), but make sure you understand the implications as this is an experimental feature that may not be fully stable.`);\n } else {\n this.setHead(version.hash());\n this.detachedHeads.clearCurrent();\n }\n if (isTag(versionToAdd)) {\n this.setVersion(versionToAdd, version.hash());\n }\n this.markVersionAsLocal(versionToAdd);\n return versionToAdd;\n }\n\n version(releaseType: semver.ReleaseType = DEFAULT_BIT_RELEASE_TYPE, incrementBy = 1, preReleaseId?: string): string {\n const increment = (ver: string) => {\n try {\n // don't use \"semver.inc\" function, it'll swallow the error and return null.\n const incResult = new semver.SemVer(ver).inc(releaseType, preReleaseId);\n return incResult.version;\n } catch (err: any) {\n throw new Error(`unable to increment version \"${ver}\" with releaseType \"${releaseType}\" and preReleaseId \"${preReleaseId}\".\nError from \"semver\": ${err.message}`);\n }\n };\n\n const latest = this.latestVersion();\n if (!latest) {\n const isPreReleaseLike = ['prerelease', 'premajor', 'preminor', 'prepatch'].includes(releaseType);\n return isPreReleaseLike ? increment(DEFAULT_BIT_VERSION) : DEFAULT_BIT_VERSION;\n }\n let result = increment(latest);\n if (incrementBy === 1) return result;\n for (let i = 1; i < incrementBy; i += 1) {\n result = increment(result);\n }\n return result;\n }\n\n id(): string {\n return this.scope ? [this.scope, this.name].join('/') : this.name;\n }\n\n /**\n * @deprecated use toComponentId() instead\n */\n toBitId(): BitId {\n return new BitId({ scope: this.scope, name: this.name });\n }\n\n toComponentId(): ComponentID {\n if (!this.scope) throw new Error(`ModelComponent: scope is missing from \"${this.name}\"`);\n return new ComponentID(this.toBitId());\n }\n\n /**\n * @deprecated use toComponentIdWithLatestVersion() instead\n */\n toBitIdWithLatestVersion(): BitId {\n return new BitId({ scope: this.scope, name: this.name, version: this.getHeadRegardlessOfLaneAsTagOrHash(true) });\n }\n\n toComponentIdWithLatestVersion(): ComponentID {\n return ComponentID.fromObject({\n scope: this.scope,\n name: this.name,\n version: this.getHeadRegardlessOfLaneAsTagOrHash(true),\n });\n }\n\n toComponentIdWithHead(): ComponentID {\n return ComponentID.fromObject({ scope: this.scope, name: this.name, version: this.head?.toString() });\n }\n\n toBitIdWithLatestVersionAllowNull(): ComponentID {\n const id = this.toComponentIdWithLatestVersion();\n return id.version === VERSION_ZERO ? id.changeVersion(undefined) : id;\n }\n\n toObject() {\n function versions(vers: Versions) {\n const obj = {};\n forEach(vers, (ref, version) => {\n obj[version] = ref.toString();\n });\n return obj;\n }\n\n const componentObject = {\n name: this.name,\n scope: this.scope,\n versions: versions(this.versions),\n lang: this.lang,\n deprecated: this.deprecated,\n bindingPrefix: this.bindingPrefix,\n remotes: this.scopesList,\n schema: this.schema,\n detachedHeads: this.detachedHeads.toObject(),\n };\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n if (this.local) componentObject.local = this.local;\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n if (!isEmpty(this.state)) componentObject.state = this.state;\n // @ts-ignore\n if (!isEmpty(this.orphanedVersions)) componentObject.orphanedVersions = versions(this.orphanedVersions);\n const headStr = this.getHeadStr();\n // @ts-ignore\n if (headStr) componentObject.head = headStr;\n\n return componentObject;\n }\n\n async loadVersion(versionStr: string, repository: Repository, throws = true): Promise<Version> {\n const versionRef = this.getRef(versionStr);\n if (!versionRef) throw new VersionNotFound(versionStr, this.id());\n const version = await repository.load(versionRef, false);\n if (!version && throws) throw new VersionNotFoundOnFS(versionStr, this.id());\n return version as Version;\n }\n\n loadVersionSync(version: string, repository: Repository, throws = true): Version {\n const versionRef = this.getRef(version);\n if (!versionRef) throw new VersionNotFound(version, this.id());\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n return versionRef.loadSync(repository, throws);\n }\n\n async collectVersionsObjects(\n repo: Repository,\n versions: string[],\n throwForMissingLocalArtifacts = false,\n workspaceId?: ComponentID\n ): Promise<ObjectItem[]> {\n const refsWithoutArtifacts: Ref[] = [];\n const artifactsRefs: Ref[] = [];\n const artifactsRefsFromExportedVersions: Ref[] = [];\n const locallyChangedVersions = await this.getLocalTagsOrHashes(repo, workspaceId);\n const locallyChangedHashes = locallyChangedVersions.map((v) => (isTag(v) ? (this.getRef(v) as Ref).hash : v));\n const versionsRefs = versions.map((version) => this.getRef(version) as Ref);\n refsWithoutArtifacts.push(...versionsRefs);\n\n const versionsObjects: Version[] = await Promise.all(\n versionsRefs.map((versionRef) => this.loadVersion(versionRef.toString(), repo))\n );\n versionsObjects.forEach((versionObject) => {\n const refs = versionObject.refsWithOptions(false, false);\n refsWithoutArtifacts.push(...refs);\n const refsFromExtensions = getRefsFromExtensions(versionObject.extensions);\n locallyChangedHashes.includes(versionObject.hash().toString())\n ? artifactsRefs.push(...refsFromExtensions)\n : artifactsRefsFromExportedVersions.push(...refsFromExtensions);\n });\n const loadedRefs: ObjectItem[] = [];\n try {\n const loaded = await repo.loadManyRaw(refsWithoutArtifacts);\n loadedRefs.push(...loaded);\n } catch (err: any) {\n if (err.code === 'ENOENT') {\n throw new Error(`unable to find an object file \"${err.path}\"\nfor a component \"${this.id()}\", versions: ${versions.join(', ')}`);\n }\n throw err;\n }\n try {\n const loaded = throwForMissingLocalArtifacts\n ? await repo.loadManyRaw(artifactsRefs)\n : await repo.loadManyRawIgnoreMissing(artifactsRefs);\n loadedRefs.push(...loaded);\n // ignore missing artifacts when exporting old versions that were exported in the past and are now exported to a\n // different scope. this is happening for example when exporting a lane that has components from different\n // remotes. it's ok to not have all artifacts from the other remotes to this remote.\n const loadedExportedArtifacts = await repo.loadManyRawIgnoreMissing(artifactsRefsFromExportedVersions);\n loadedRefs.push(...loadedExportedArtifacts);\n } catch (err: any) {\n if (err.code === 'ENOENT') {\n throw new Error(`unable to find an artifact object file \"${err.path}\"\nfor a component \"${this.id()}\", versions: ${versions.join(', ')}\nconsider using --ignore-missing-artifacts flag if you're sure the artifacts are in the remote`);\n }\n throw err;\n }\n return loadedRefs;\n }\n\n async collectObjects(repo: Repository): Promise<ComponentObjects> {\n try {\n const [rawComponent, objects] = await Promise.all([this.asRaw(repo), this.collectRaw(repo)]);\n return new ComponentObjects(\n rawComponent,\n objects.map((o) => o.buffer)\n );\n } catch (err: any) {\n if (err.code === 'ENOENT') {\n throw new Error(\n `fatal: an object of \"${this.id()}\" was not found at ${err.path}\\nplease try to re-import the component`\n );\n }\n throw err;\n }\n }\n\n /**\n * to delete a version from a component, don't call this method directly. Instead, use sources.removeVersion()\n */\n removeVersion(version: string): Ref {\n const objectRef = this.getRef(version);\n if (!objectRef) throw new Error(`removeVersion failed finding version ${version}`);\n delete this.versions[version];\n if (this.state.versions && this.state.versions[version]) delete this.state.versions[version];\n return objectRef;\n }\n\n toComponentVersion(versionStr?: string): ComponentVersion {\n const versionParsed = versionParser(versionStr);\n const versionNum = versionParsed.latest\n ? this.getHeadRegardlessOfLaneAsTagOrHash(true)\n : (versionParsed.versionNum as string);\n if (versionNum === VERSION_ZERO) {\n throw new NoHeadNoVersion(this.id());\n }\n if (isTag(versionNum) && !this.hasTagIncludeOrphaned(versionNum)) {\n throw new BitError(\n `the version ${versionNum} of \"${this.id()}\" does not exist in ${this.listVersionsIncludeOrphaned().join(\n '\\n'\n )}, versions array.`\n );\n }\n return new ComponentVersion(this, versionNum);\n }\n\n /**\n * if no \"specificVersion\" is given, it returns according to the head\n */\n async isDeprecated(repo: Repository, specificVersion?: string) {\n // backward compatibility\n if (this.deprecated) {\n return true;\n }\n const head = this.getHeadRegardlessOfLane();\n if (!head) {\n // it's legacy, or new. If legacy, the \"deprecated\" prop should do. if it's new, the workspace should\n // have the answer.\n return false;\n }\n const headVersion = (await repo.load(head)) as Version;\n if (!headVersion) {\n // the head Version doesn't exist locally, there is no way to know whether it's deprecated\n return null;\n }\n const deprecationAspect = headVersion.extensions.findCoreExtension(Extensions.deprecation);\n if (!deprecationAspect) {\n return false;\n }\n if (deprecationAspect.config.deprecate) {\n return true;\n }\n if (specificVersion && deprecationAspect.config.range) {\n const tag = this.getTag(specificVersion);\n if (!tag) return false; // it's a snap. \"range\" doesn't support deprecating snaps. only semver.\n return semver.satisfies(tag, deprecationAspect.config.range);\n }\n return false;\n }\n\n /**\n * whether the head is marked as internal. internal components are still versioned and exported,\n * but are hidden by default in the UI (workspace, scope and Bit Cloud).\n */\n async isInternal(repo: Repository): Promise<boolean | null> {\n const head = this.getHeadRegardlessOfLane();\n if (!head) {\n // it's new. the workspace should have the answer.\n return false;\n }\n const headVersion = (await repo.load(head)) as Version;\n if (!headVersion) {\n // the head Version doesn't exist locally, there is no way to know whether it's internal\n return null;\n }\n const internalizeAspect = headVersion.extensions.findCoreExtension(Extensions.internalize);\n if (!internalizeAspect) {\n return false;\n }\n return Boolean(internalizeAspect.config.internal);\n }\n\n async isRemoved(repo: Repository, specificVersion?: string): Promise<boolean | null> {\n const getHead = () => {\n if (!this.laneHeadLocal) return this.getHead();\n // you're checked out to a lane.\n if (!specificVersion) return this.laneHeadLocal;\n // it's possible that this specificVersion is from main.\n if (specificVersion === this.laneHeadLocal.toString()) return this.laneHeadLocal;\n return this.getHead();\n };\n const head = getHead();\n if (!head) {\n // it's new or only on lane\n return false;\n }\n const headVersion = (await repo.load(head)) as Version;\n if (!headVersion) {\n // the head Version doesn't exist locally, there is no way to know whether it's removed\n return null;\n }\n const removeAspect = headVersion.extensions.findCoreExtension(Extensions.remove);\n if (!removeAspect) {\n return false;\n }\n if (removeAspect.config.removed) {\n return true;\n }\n if (specificVersion) {\n if (removeAspect.config.range) {\n const tag = this.getTag(specificVersion);\n if (tag) return semver.satisfies(tag, removeAspect.config.range);\n }\n if (removeAspect.config.snaps && Array.isArray(removeAspect.config.snaps)) {\n return removeAspect.config.snaps.includes(specificVersion);\n }\n }\n return false;\n }\n\n async isLaneReadmeOf(repo: Repository): Promise<string[]> {\n const head = this.getHeadRegardlessOfLane();\n if (!head) {\n // we dont support lanes in legacy\n return [];\n }\n const version = (await repo.load(head)) as Version;\n if (!version) {\n // the head Version doesn't exist locally, there is no way to know whether it is a lane readme component\n return [];\n }\n const lanesAspect = version.extensions.findCoreExtension(Extensions.lanes);\n if (!lanesAspect || !lanesAspect.config.readme) {\n return [];\n }\n return Object.keys(lanesAspect.config.readme);\n }\n /**\n * convert a ModelComponent of a specific version to ConsumerComponent\n * @see sources.consumerComponentToVersion() for the opposite action.\n */\n async toConsumerComponent(versionStr: string, scopeName: string, repository: Repository): Promise<ConsumerComponent> {\n logger.trace(`model-component, converting ${this.id()}, version: ${versionStr} to ConsumerComponent`);\n let componentVersion = this.toComponentVersion(versionStr);\n const version: Version = await componentVersion.getVersion(repository);\n // in case the the version is a short-hash, it should be converted to a full hash.\n if (\n versionStr !== LATEST_VERSION &&\n !isTag(versionStr) &&\n !isSnap(versionStr) &&\n version.hash().toString() !== versionStr\n ) {\n componentVersion = new ComponentVersion(this, version.hash().toString());\n }\n const resolvedVersion = componentVersion.version;\n const loadFileInstance = (ClassName) => async (file) => {\n const loadP = file.file.load(repository);\n const content: Source = await loadP;\n if (!content)\n throw new BitError(\n `failed loading file ${file.relativePath} (ref: ${file.file.toString()}) from the model of ${this.id()}@${resolvedVersion}.\nThe Source object is missing from the local scope.\nTo fix, run:\nbit import ${this.id()}@${resolvedVersion} --objects --all-history`\n );\n return new ClassName({ base: '.', path: file.relativePath, contents: content.contents, test: file.test });\n };\n const filesP = version.files ? Promise.all(version.files.map(loadFileInstance(SourceFile))) : null;\n // @todo: this is weird. why the scopeMeta would be taken from the current scope and not he component scope?\n const scopeMetaP = scopeName ? ScopeMeta.fromScopeName(scopeName).load(repository) : Promise.resolve();\n const log = version.log || null;\n const [files, scopeMeta] = await Promise.all([filesP, scopeMetaP]);\n\n const extensions = version.extensions.clone();\n // when generating a new ConsumerComponent out of Version, it is critical to make sure that\n // all objects are cloned and not copied by reference. Otherwise, every time the\n // ConsumerComponent instance is changed, the Version will be changed as well, and since\n // the Version instance is saved in the Repository._cache, the next time a Version instance\n // is retrieved, it'll be different than the first time.\n const consumerComponent = new ConsumerComponent({\n name: this.name,\n version: componentVersion.version,\n scope: this.toComponentId()._legacy.scope,\n defaultScope: this.scope,\n lang: this.lang,\n bindingPrefix: this.bindingPrefix,\n mainFile: version.mainFile,\n dependencies: this.addDepsInfoFromDepsResolver(version.dependencies, extensions),\n devDependencies: this.addDepsInfoFromDepsResolver(version.devDependencies, extensions),\n // a new list, but the ids themselves are immutable, no need to clone them\n flattenedDependencies: ComponentIdList.fromArray(version.flattenedDependencies),\n packageDependencies: clone(version.packageDependencies),\n devPackageDependencies: clone(version.devPackageDependencies),\n peerPackageDependencies: clone(version.peerPackageDependencies),\n // @ts-ignore\n files,\n docs: version.docs,\n // @ts-ignore\n license: scopeMeta ? License.deserialize(scopeMeta.license) : undefined, // todo: make sure we have license in case of local scope\n log,\n overrides: ComponentOverrides.loadFromScope(version.overrides),\n packageJsonChangedProps: clone(version.packageJsonChangedProps),\n deprecated: this.deprecated,\n removed: version.isRemoved(),\n scopesList: clone(this.scopesList),\n schema: version.schema,\n extensions,\n buildStatus: version.buildStatus,\n });\n\n return consumerComponent;\n }\n\n private addDepsInfoFromDepsResolver(dependencies: Dependencies, extensions: ExtensionDataList): Dependency[] {\n const cloned = dependencies.getClone();\n const depsResolverData = extensions.find((ext) => ext.name === 'teambit.dependencies/dependency-resolver');\n if (!depsResolverData) return cloned;\n cloned.forEach((dependency) => {\n if (dependency.packageName) return;\n const matchedEntry = depsResolverData.data?.dependencies?.find((entry) => {\n return dependency.id.toString() === entry.id;\n });\n if (matchedEntry) {\n dependency.packageName = matchedEntry.packageName;\n }\n });\n return cloned;\n }\n\n // @todo: make sure it doesn't have the same ref twice, once as a version and once as a head\n refs(): Ref[] {\n const versions = Object.values(this.versionsIncludeOrphaned);\n if (this.head) versions.push(this.head);\n return versions;\n }\n\n validateBeforePersisting(componentStr: string): void {\n logger.trace(`validating component object: ${this.hash().hash} ${this.id()}`);\n const component = Component.parse(componentStr);\n component.validate();\n }\n\n toBuffer(pretty: boolean) {\n const args = getStringifyArgs(pretty);\n const obj = this.toObject();\n const str = JSON.stringify(obj, ...args);\n if (this.validateBeforePersist) this.validateBeforePersisting(str);\n return Buffer.from(str);\n }\n\n /**\n * Clear data that is relevant only for the local scope and should not be moved to the remote scope\n */\n clearStateData() {\n this.local = false; // backward compatibility for components created before 0.12.6\n this.state = {};\n }\n\n markVersionAsLocal(version: string) {\n if (!this.state.versions) this.state = { versions: {} };\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n if (!this.state.versions[version]) this.state.versions[version] = {};\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n this.state.versions[version].local = true;\n }\n\n /**\n * local versions that are not exported on the main lane.\n * @see `this.getLocalTagsOrHashes()`, to get local snaps on the current lane\n */\n getLocalVersions(): string[] {\n if (isEmpty(this.state) || isEmpty(this.state.versions)) return [];\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n return Object.keys(this.state.versions).filter((version) => this.state.versions[version].local);\n }\n\n hasLocalTag(tag: string): boolean {\n const localVersions = this.getLocalVersions();\n return localVersions.includes(tag);\n }\n\n async getLocalTagsOrHashes(repo: Repository, workspaceId?: ComponentID, lane?: Lane): Promise<string[]> {\n const localHashes = await this.getLocalHashes(repo, workspaceId, lane);\n if (!localHashes.length) return [];\n return this.switchHashesWithTagsIfExist(localHashes).reverse(); // reverse to get the older first\n }\n\n /**\n * Raw divergence (`snapsOnSourceOnly`). When `lane` is provided, applies the lean-lane filter:\n * drops refs whose Version is main-origin. Those refs already live on the component's home\n * scope (and on the destination too in the same-scope case), so `bit export` shouldn't be\n * re-pushing them. Pass `lane` from status/export/reset to share the same \"what's actually\n * local on this lane\" view.\n *\n * The lane's recorded head for this component is always kept, even if it's main-origin — the\n * lane object references it and the destination scope must be able to resolve the hash. Versions\n * marked `squashed` or `unrelated` are kept as well — they're locally-mutated and the\n * destination needs them to reconstruct the lane history.\n */\n async getLocalHashes(repo: Repository, workspaceId?: ComponentID, lane?: Lane): Promise<Ref[]> {\n await this.setDivergeData(repo, undefined, undefined, workspaceId);\n const divergeData = this.getDivergeData();\n const localHashes = divergeData.snapsOnSourceOnly;\n\n // When there's a detached head, divergeData only includes the detached head lineage.\n // We also need to include unexported versions from the main head lineage.\n const hasDetachedHead = this.detachedHeads && this.detachedHeads.getAllHeads().length > 0;\n if (hasDetachedHead && this.head) {\n // Calculate divergence from the main head as well\n const mainHeadDivergeData = await getDivergeData({\n repo,\n modelComponent: this,\n targetHead: (this.laneId ? this.calculatedRemoteHeadWhenOnLane : this.remoteHead) || null,\n sourceHead: this.head,\n throws: false,\n });\n // Add main head local versions that aren't already in localHashes\n for (const hash of mainHeadDivergeData.snapsOnSourceOnly) {\n if (!localHashes.find((h) => h.isEqual(hash))) {\n localHashes.push(hash);\n }\n }\n }\n\n if (!localHashes.length) return [];\n const filtered = lane ? await this.filterLeanLaneRefs(repo, lane, localHashes) : localHashes;\n return filtered.reverse(); // reverse to get the older first\n }\n\n private async filterLeanLaneRefs(repo: Repository, lane: Lane, refs: Ref[]): Promise<Ref[]> {\n const laneHead = lane.getCompHeadIncludeUpdateDependents(this.toComponentId());\n const keptRefs = await pMapPool(\n refs,\n async (ref) => {\n if (laneHead && ref.isEqual(laneHead)) return ref;\n const obj = (await ref.load(repo)) as Version | undefined;\n if (!obj) return null;\n const isLaneOrigin = Boolean(obj.originLaneId);\n const isLocallyMutated = Boolean(obj.squashed) || Boolean(obj.unrelated);\n if (!isLaneOrigin && !isLocallyMutated) return null;\n return ref;\n },\n { concurrency: concurrentComponentsLimit() }\n );\n return keptRefs.filter((ref): ref is Ref => ref !== null);\n }\n\n /**\n * for most cases, use `isLocallyChanged`, which takes into account lanes.\n * this is for cases when we only care about the versions exist in the `state` prop.\n */\n isLocallyChangedRegardlessOfLanes(): boolean {\n return Boolean(this.getLocalVersions().length);\n }\n\n /**\n * whether the component was locally changed, either by adding a new snap/tag or by merging\n * components from different lanes.\n */\n async isLocallyChanged(repo: Repository, lane?: Lane | null, workspaceId?: ComponentID): Promise<boolean> {\n if (lane) await this.populateLocalAndRemoteHeads(repo, lane);\n await this.setDivergeData(repo, undefined, undefined, workspaceId);\n const divergeData = this.getDivergeData();\n return divergeData.isSourceAhead();\n }\n\n async getVersionHistory(repo: Repository): Promise<VersionHistory> {\n const emptyVersionHistory = VersionHistory.fromId(this.name, this.scope);\n const versionHistory = await repo.load(emptyVersionHistory.hash());\n return (versionHistory || emptyVersionHistory) as VersionHistory;\n }\n\n async getAndPopulateVersionHistory(repo: Repository, head: Ref): Promise<VersionHistory> {\n const versionHistory = await this.getVersionHistory(repo);\n const { err } = await this.populateVersionHistoryIfMissingGracefully(repo, versionHistory, head);\n if (err) {\n logger.error(`rethrowing an error ${err.message}, current stuck`, new Error(err.message));\n throw err;\n }\n return versionHistory;\n }\n\n /**\n * careful! the `versions` passed here can belong to other components, not necessarily to this one.\n * that's why it checks whether the version-hash exists in the VersionHistory, and if it's not,\n * it won't update it.\n */\n async updateRebasedVersionHistory(repo: Repository, versions: Version[]): Promise<VersionHistory | undefined> {\n const versionHistory = await this.getVersionHistory(repo);\n const hasUpdated = versions.some((version) => {\n const versionData = versionHistory.getVersionData(version.hash());\n if (!versionData) return false;\n versionHistory.addFromVersionsObjects([version]);\n return true;\n });\n\n return hasUpdated ? versionHistory : undefined;\n }\n\n async updateVersionHistory(repo: Repository, versions: Version[]): Promise<VersionHistory> {\n const versionHistory = await this.getVersionHistory(repo);\n versionHistory.addFromVersionsObjects(versions);\n logger.debug(`updating version history of ${this.id()} with ${versions.length} versions`);\n return versionHistory;\n }\n\n async populateVersionHistoryIfMissingGracefully(\n repo: Repository,\n versionHistory: VersionHistory,\n head: Ref,\n /**\n * during traversal, if a hash is found in the VersionHistory it probably means that it has all history until this\n * point, so we can stop there for better performance. In some rare cases (e.g. the export was interrupted), we\n * need the ability of full traversal to repair the VersionHistory.\n */\n exitWhenFind = true\n ): Promise<{ err?: Error; added?: VersionParents[] }> {\n const headExists = versionHistory.hasHash(head);\n if (exitWhenFind && headExists) return {};\n const getVersionObj = async (ref: Ref) => (await ref.load(repo)) as Version | undefined;\n const versionsToAdd: Version[] = [];\n let err: Error | undefined;\n const addParentsRecursively = async (version: Version) => {\n await pMapSeries(version.parents, async (parent) => {\n const foundParent = versionHistory.hasHash(parent) || versionsToAdd.find((v) => v.hash().isEqual(parent));\n if (exitWhenFind && foundParent) {\n return;\n }\n const parentVersion = await getVersionObj(parent);\n if (!parentVersion) {\n const tag = this.getTagOfRefIfExists(parent);\n err = tag\n ? new VersionNotFound(tag, this.id())\n : new ParentNotFound(this.id(), version.hash().toString(), parent.toString());\n return;\n }\n versionsToAdd.push(parentVersion);\n await addParentsRecursively(parentVersion);\n });\n };\n const headVer = await getVersionObj(head);\n if (!headVer) {\n return { err: new HeadNotFound(this.id(), head.toString()) };\n }\n return this.populateVersionHistoryMutex.runExclusive(async () => {\n if (!headExists) versionsToAdd.push(headVer);\n await addParentsRecursively(headVer);\n const added = versionsToAdd.map((v) => getVersionParentsFromVersion(v));\n if (err) {\n return { err, added };\n }\n versionHistory.addFromVersionsObjects(versionsToAdd);\n logger.debug(\n `populateVersionHistoryIfMissingGracefully, updating ${this.id()} with ${versionsToAdd.length} versions`\n );\n await repo.writeObjectsToTheFS([versionHistory]);\n return { added };\n });\n }\n\n static parse(contents: string): Component {\n const rawComponent = JSON.parse(contents);\n return Component.from({\n name: rawComponent.box ? `${rawComponent.box}/${rawComponent.name}` : rawComponent.name,\n scope: rawComponent.scope,\n versions: mapValues(rawComponent.versions as Record<string, string>, (val) => Ref.from(val)),\n lang: rawComponent.lang,\n deprecated: rawComponent.deprecated,\n bindingPrefix: rawComponent.bindingPrefix,\n state: rawComponent.state,\n orphanedVersions: mapValues(rawComponent.orphanedVersions || {}, (val) => Ref.from(val)),\n scopesList: rawComponent.remotes,\n head: rawComponent.head ? Ref.from(rawComponent.head) : undefined,\n schema: rawComponent.schema || (rawComponent.head ? SchemaName.Harmony : SchemaName.Legacy),\n detachedHeads: DetachedHeads.fromObject(rawComponent.detachedHeads),\n });\n }\n\n static from(props: ComponentProps): Component {\n return new Component(props);\n }\n\n static fromBitId(bitId: ComponentID): Component {\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n return new Component({\n name: bitId.fullName,\n scope: bitId.scope,\n });\n }\n\n get isLegacy(): boolean {\n return !this.schema || this.schema === SchemaName.Legacy;\n }\n\n validate(): void {\n const message = `unable to save Component object \"${this.id()}\"`;\n if (!this.name) throw new BitError(`${message} the name is missing`);\n if (this.state && this.state.versions) {\n Object.keys(this.state.versions).forEach((version) => {\n if (isTag(version) && !this.hasTag(version)) {\n throw new ValidationError(`${message}, the version ${version} is marked as staged but is not available`);\n }\n });\n }\n const hashDuplications = findDuplications(this.versionArray.map((v) => v.toString()));\n if (hashDuplications.length) {\n throw new ValidationError(`${message}, the following hash(es) are duplicated ${hashDuplications.join(', ')}`);\n }\n Object.keys(this.orphanedVersions).forEach((version) => {\n if (this.versions[version]) {\n throw new ValidationError(\n `${message}, the version \"${version}\" exists in orphanedVersions but it exits also in \"versions\" prop`\n );\n }\n });\n if (!this.isLegacy && !this.head && this.versionArray.length) {\n // legacy don't have head. also, when snapping on a lane the first time, there is no head.\n // tags are done on default lane only, so if there are versions (tag), it must have head\n throw new ValidationError(`${message}, the \"head\" prop is missing`);\n }\n }\n}\n"],"mappings":";;;;;;AAAA,SAAAA,QAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,OAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAE,YAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,WAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,OAAA;EAAA,MAAAH,IAAA,GAAAI,uBAAA,CAAAH,OAAA;EAAAE,MAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAK,kBAAA;EAAA,MAAAL,IAAA,GAAAC,OAAA;EAAAI,iBAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAM,UAAA;EAAA,MAAAN,IAAA,GAAAC,OAAA;EAAAK,SAAA,YAAAA,CAAA;IAAA,OAAAN,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAO,QAAA;EAAA,MAAAP,IAAA,GAAAC,OAAA;EAAAM,OAAA,YAAAA,CAAA;IAAA,OAAAP,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAQ,aAAA;EAAA,MAAAR,IAAA,GAAAC,OAAA;EAAAO,YAAA,YAAAA,CAAA;IAAA,OAAAR,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAS,YAAA;EAAA,MAAAT,IAAA,GAAAU,sBAAA,CAAAT,OAAA;EAAAQ,WAAA,YAAAA,CAAA;IAAA,OAAAT,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAW,gBAAA;EAAA,MAAAX,IAAA,GAAAC,OAAA;EAAAU,eAAA,YAAAA,CAAA;IAAA,OAAAX,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAY,gBAAA;EAAA,MAAAZ,IAAA,GAAAC,OAAA;EAAAW,eAAA,YAAAA,CAAA;IAAA,OAAAZ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAa,cAAA;EAAA,MAAAb,IAAA,GAAAC,OAAA;EAAAY,aAAA,YAAAA,CAAA;IAAA,OAAAb,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAc,aAAA;EAAA,MAAAd,IAAA,GAAAC,OAAA;EAAAa,YAAA,YAAAA,CAAA;IAAA,OAAAd,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAe,QAAA;EAAA,MAAAf,IAAA,GAAAC,OAAA;EAAAc,OAAA,YAAAA,CAAA;IAAA,OAAAf,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAgB,SAAA;EAAA,MAAAhB,IAAA,GAAAC,OAAA;EAAAe,QAAA,YAAAA,CAAA;IAAA,OAAAhB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAiB,WAAA;EAAA,MAAAjB,IAAA,GAAAC,OAAA;EAAAgB,UAAA,YAAAA,CAAA;IAAA,OAAAjB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAkB,SAAA;EAAA,MAAAlB,IAAA,GAAAC,OAAA;EAAAiB,QAAA,YAAAA,CAAA;IAAA,OAAAlB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAmB,WAAA;EAAA,MAAAnB,IAAA,GAAAC,OAAA;EAAAkB,UAAA,YAAAA,CAAA;IAAA,OAAAnB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAoB,SAAA;EAAA,MAAApB,IAAA,GAAAC,OAAA;EAAAmB,QAAA,YAAAA,CAAA;IAAA,OAAApB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAqB,SAAA;EAAA,MAAArB,IAAA,GAAAC,OAAA;EAAAoB,QAAA,YAAAA,CAAA;IAAA,OAAArB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAsB,YAAA;EAAA,MAAAtB,IAAA,GAAAC,OAAA;EAAAqB,WAAA,YAAAA,CAAA;IAAA,OAAAtB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAuB,YAAA;EAAA,MAAAvB,IAAA,GAAAC,OAAA;EAAAsB,WAAA,YAAAA,CAAA;IAAA,OAAAvB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAMA,SAAAwB,SAAA;EAAA,MAAAxB,IAAA,GAAAC,OAAA;EAAAuB,QAAA,YAAAA,CAAA;IAAA,OAAAxB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAaA,SAAAyB,SAAA;EAAA,MAAAzB,IAAA,GAAAC,OAAA;EAAAwB,QAAA,YAAAA,CAAA;IAAA,OAAAzB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAA0B,WAAA;EAAA,MAAA1B,IAAA,GAAAU,sBAAA,CAAAT,OAAA;EAAAyB,UAAA,YAAAA,CAAA;IAAA,OAAA1B,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAIA,SAAA2B,gBAAA;EAAA,MAAA3B,IAAA,GAAAU,sBAAA,CAAAT,OAAA;EAAA0B,eAAA,YAAAA,CAAA;IAAA,OAAA3B,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAIA,SAAA4B,aAAA;EAAA,MAAA5B,IAAA,GAAAC,OAAA;EAAA2B,YAAA,YAAAA,CAAA;IAAA,OAAA5B,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAA+C,SAAAU,uBAAAmB,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAzB,wBAAAyB,CAAA,EAAAG,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAA7B,uBAAA,YAAAA,CAAAyB,CAAA,EAAAG,CAAA,SAAAA,CAAA,IAAAH,CAAA,IAAAA,CAAA,CAAAC,UAAA,SAAAD,CAAA,MAAAO,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAR,OAAA,EAAAF,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAS,CAAA,MAAAF,CAAA,GAAAJ,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAE,CAAA,CAAAI,GAAA,CAAAX,CAAA,UAAAO,CAAA,CAAAK,GAAA,CAAAZ,CAAA,GAAAO,CAAA,CAAAM,GAAA,CAAAb,CAAA,EAAAS,CAAA,gBAAAN,CAAA,IAAAH,CAAA,gBAAAG,CAAA,OAAAW,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAG,CAAA,OAAAK,CAAA,IAAAD,CAAA,GAAAS,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAG,CAAA,OAAAK,CAAA,CAAAI,GAAA,IAAAJ,CAAA,CAAAK,GAAA,IAAAN,CAAA,CAAAE,CAAA,EAAAN,CAAA,EAAAK,CAAA,IAAAC,CAAA,CAAAN,CAAA,IAAAH,CAAA,CAAAG,CAAA,WAAAM,CAAA,KAAAT,CAAA,EAAAG,CAAA;AAAA,SAAAgB,QAAAnB,CAAA,EAAAK,CAAA,QAAAF,CAAA,GAAAa,MAAA,CAAAI,IAAA,CAAApB,CAAA,OAAAgB,MAAA,CAAAK,qBAAA,QAAAd,CAAA,GAAAS,MAAA,CAAAK,qBAAA,CAAArB,CAAA,GAAAK,CAAA,KAAAE,CAAA,GAAAA,CAAA,CAAAe,MAAA,WAAAjB,CAAA,WAAAW,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAK,CAAA,EAAAkB,UAAA,OAAApB,CAAA,CAAAqB,IAAA,CAAAC,KAAA,CAAAtB,CAAA,EAAAI,CAAA,YAAAJ,CAAA;AAAA,SAAAuB,cAAA1B,CAAA,aAAAK,CAAA,MAAAA,CAAA,GAAAsB,SAAA,CAAAC,MAAA,EAAAvB,CAAA,UAAAF,CAAA,WAAAwB,SAAA,CAAAtB,CAAA,IAAAsB,SAAA,CAAAtB,CAAA,QAAAA,CAAA,OAAAc,OAAA,CAAAH,MAAA,CAAAb,CAAA,OAAA0B,OAAA,WAAAxB,CAAA,IAAAyB,eAAA,CAAA9B,CAAA,EAAAK,CAAA,EAAAF,CAAA,CAAAE,CAAA,SAAAW,MAAA,CAAAe,yBAAA,GAAAf,MAAA,CAAAgB,gBAAA,CAAAhC,CAAA,EAAAgB,MAAA,CAAAe,yBAAA,CAAA5B,CAAA,KAAAgB,OAAA,CAAAH,MAAA,CAAAb,CAAA,GAAA0B,OAAA,WAAAxB,CAAA,IAAAW,MAAA,CAAAC,cAAA,CAAAjB,CAAA,EAAAK,CAAA,EAAAW,MAAA,CAAAE,wBAAA,CAAAf,CAAA,EAAAE,CAAA,iBAAAL,CAAA;AAAA,SAAA8B,gBAAA9B,CAAA,EAAAK,CAAA,EAAAF,CAAA,YAAAE,CAAA,GAAA4B,cAAA,CAAA5B,CAAA,MAAAL,CAAA,GAAAgB,MAAA,CAAAC,cAAA,CAAAjB,CAAA,EAAAK,CAAA,IAAA6B,KAAA,EAAA/B,CAAA,EAAAoB,UAAA,MAAAY,YAAA,MAAAC,QAAA,UAAApC,CAAA,CAAAK,CAAA,IAAAF,CAAA,EAAAH,CAAA;AAAA,SAAAiC,eAAA9B,CAAA,QAAAK,CAAA,GAAA6B,YAAA,CAAAlC,CAAA,uCAAAK,CAAA,GAAAA,CAAA,GAAAA,CAAA;AAAA,SAAA6B,aAAAlC,CAAA,EAAAE,CAAA,2BAAAF,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAH,CAAA,GAAAG,CAAA,CAAAmC,MAAA,CAAAC,WAAA,kBAAAvC,CAAA,QAAAQ,CAAA,GAAAR,CAAA,CAAAe,IAAA,CAAAZ,CAAA,EAAAE,CAAA,uCAAAG,CAAA,SAAAA,CAAA,YAAAgC,SAAA,yEAAAnC,CAAA,GAAAoC,MAAA,GAAAC,MAAA,EAAAvC,CAAA;AA6CxC,MAAMwC,YAAY,GAAAC,OAAA,CAAAD,YAAA,GAAG,OAAO;;AAEnC;AACA;AACA;AACA;AACA;AACe,MAAME,SAAS,SAASC,oBAAS,CAAC;EA2C/CC,WAAWA,CAACC,KAAqB,EAAE;IACjC,KAAK,CAAC,CAAC;IAAClB,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAtCV;AACF;AACA;IAFEA,eAAA;IAAAA,eAAA;IAKA;AACF;AACA;IAFEA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAOyB;IACzB;AACF;AACA;AACA;IAHEA,eAAA;IAKA;AACF;AACA;AACA;IAHEA,eAAA;IAMA;AACF;AACA;AACA;AACA;IAJEA,eAAA;IAAAA,eAAA;IAOiB;IAAAA,eAAA,8BACK,KAAK;IAAE;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAO3B,IAAI,CAACkB,KAAK,CAACC,IAAI,EAAE,MAAM,IAAIT,SAAS,CAAC,6DAA6D,CAAC;IACnG,IAAI,CAACQ,KAAK,CAACE,KAAK,EAAE;MAChB,MAAM,KAAIC,2BAAgB,EAACH,KAAK,CAACC,IAAI,CAAC;IACxC;IACA,IAAI,CAACC,KAAK,GAAGF,KAAK,CAACE,KAAK;IACxB,IAAI,CAACD,IAAI,GAAGD,KAAK,CAACC,IAAI;IACtB,IAAI,CAACG,QAAQ,GAAGJ,KAAK,CAACI,QAAQ,IAAI,CAAC,CAAC;IACpC,IAAI,CAACC,gBAAgB,GAAGL,KAAK,CAACK,gBAAgB,IAAI,CAAC,CAAC;IACpD,IAAI,CAACC,IAAI,GAAGN,KAAK,CAACM,IAAI,IAAIC,0BAAgB;IAC1C,IAAI,CAACC,UAAU,GAAGR,KAAK,CAACQ,UAAU,IAAI,KAAK;IAC3C,IAAI,CAACC,aAAa,GAAGT,KAAK,CAACS,aAAa,IAAI,IAAAC,yCAA8B,EAACV,KAAK,CAACE,KAAK,CAAC;IACvF,IAAI,CAACS,KAAK,GAAGX,KAAK,CAACW,KAAK,IAAI,CAAC,CAAC;IAC9B,IAAI,CAACC,UAAU,GAAGZ,KAAK,CAACY,UAAU,IAAI,EAAE;IACxC,IAAI,CAACC,IAAI,GAAGb,KAAK,CAACa,IAAI;IACtB,IAAI,CAACC,MAAM,GAAGd,KAAK,CAACc,MAAM;IAC1B,IAAI,CAACC,aAAa,GAAGf,KAAK,CAACe,aAAa,IAAI,KAAIC,4BAAa,EAAC,CAAC;EACjE;EAEA,IAAYC,2BAA2BA,CAAA,EAAG;IACxC,IAAI,CAAC,IAAI,CAACC,4BAA4B,EAAE;MACtC,IAAI,CAACA,4BAA4B,GAAG,KAAIC,mBAAK,EAAC,CAAC;IACjD;IACA,OAAO,IAAI,CAACD,4BAA4B;EAC1C;EAEA,IAAIE,YAAYA,CAAA,EAAU;IACxB,OAAOpD,MAAM,CAACqD,MAAM,CAAC,IAAI,CAACjB,QAAQ,CAAC;EACrC;EAEAkB,UAAUA,CAACC,GAAW,EAAEC,GAAQ,EAAE;IAChC,IAAI,CAACpB,QAAQ,CAACmB,GAAG,CAAC,GAAGC,GAAG;IACxB,OAAO,IAAI,CAACnB,gBAAgB,CAACkB,GAAG,CAAC,CAAC,CAAC;EACrC;EAEAE,kBAAkBA,CAACF,GAAW,EAAEC,GAAQ,EAAE;IACxC,IAAI,IAAI,CAACpB,QAAQ,CAACmB,GAAG,CAAC,EAAE;MACtB,MAAM,IAAIG,KAAK,CACb,mCAAmCH,GAAG,UAAU,IAAI,CAACI,EAAE,CAAC,CAAC,yDAC3D,CAAC;IACH;IACA,IAAI,CAACtB,gBAAgB,CAACkB,GAAG,CAAC,GAAGC,GAAG;EAClC;EAEAI,MAAMA,CAACC,OAAe,EAAc;IAClC,IAAI,IAAAC,yBAAK,EAACD,OAAO,CAAC,EAAE;MAClB,OAAO,IAAI,CAACxB,gBAAgB,CAACwB,OAAO,CAAC,IAAI,IAAI,CAACzB,QAAQ,CAACyB,OAAO,CAAC;IACjE;IACA,IAAI,IAAAE,0BAAM,EAACF,OAAO,CAAC,EAAE;MACnB,OAAO,KAAIG,cAAG,EAACH,OAAO,CAAC;IACzB;IACA,OAAO,IAAI;EACb;EAEAI,UAAUA,CAAA,EAAkB;IAC1B,OAAO,IAAI,CAACpB,IAAI,GAAG,IAAI,CAACA,IAAI,CAACqB,QAAQ,CAAC,CAAC,GAAG,IAAI;EAChD;EAEAC,OAAOA,CAAA,EAAoB;IACzB,OAAO,IAAI,CAACtB,IAAI;EAClB;;EAEA;AACF;AACA;AACA;EACEuB,uBAAuBA,CAAA,EAAoB;IACzC,OAAO,IAAI,CAACC,aAAa,IAAI,IAAI,CAACF,OAAO,CAAC,CAAC;EAC7C;EAEAG,mBAAmBA,CAAA,EAAuB;IACxC,IAAI,CAAC,IAAI,CAACzB,IAAI,EAAE,OAAO0B,SAAS;IAChC,OAAO,IAAI,CAACC,mBAAmB,CAAC,IAAI,CAAC3B,IAAI,CAAC,IAAI,IAAI,CAACA,IAAI,CAACqB,QAAQ,CAAC,CAAC;EACpE;EAEAO,OAAOA,CAAA,EAAG;IACR,OAAOC,OAAO,CAAC,IAAI,CAAC7B,IAAI,CAAC;EAC3B;EAEA8B,OAAOA,CAAC9B,IAAqB,EAAE;IAC7B,IAAI,CAACA,IAAI,GAAGA,IAAI;EAClB;EAEA+B,YAAYA,CAACC,IAAqB,EAAY;IAC5C,MAAMzC,QAAQ,GAAGpC,MAAM,CAACI,IAAI,CAAC,IAAI,CAACgC,QAAQ,CAAC;IAC3C,IAAI,CAACyC,IAAI,EAAE,OAAOzC,QAAQ;IAC1B,IAAIyC,IAAI,KAAK,KAAK,EAAE;MAClB,OAAOzC,QAAQ,CAACyC,IAAI,CAACvH,MAAM,CAAD,CAAC,CAACwH,OAAO,CAAC;IACtC;IAEA,OAAO1C,QAAQ,CAACyC,IAAI,CAACvH,MAAM,CAAD,CAAC,CAACwH,OAAO,CAAC,CAACC,OAAO,CAAC,CAAC;EAChD;EAEAC,2BAA2BA,CAACH,IAAqB,EAAY;IAC3D,MAAMzC,QAAQ,GAAGpC,MAAM,CAACI,IAAI,CAAC,IAAI,CAAC6E,uBAAuB,CAAC;IAC1D,IAAI,CAACJ,IAAI,EAAE,OAAOzC,QAAQ;IAC1B,IAAIyC,IAAI,KAAK,KAAK,EAAE;MAClB,OAAOzC,QAAQ,CAACyC,IAAI,CAACvH,MAAM,CAAD,CAAC,CAACwH,OAAO,CAAC;IACtC;IAEA,OAAO1C,QAAQ,CAACyC,IAAI,CAACvH,MAAM,CAAD,CAAC,CAACwH,OAAO,CAAC,CAACC,OAAO,CAAC,CAAC;EAChD;EAEA,MAAMG,UAAUA,CAACrB,OAAe,EAAEsB,IAAgB,EAAEC,eAAe,GAAG,IAAI,EAAoB;IAC5F,IAAI,IAAAtB,yBAAK,EAACD,OAAO,CAAC,EAAE;MAClB,OAAOuB,eAAe,GAAG,IAAI,CAACC,qBAAqB,CAACxB,OAAO,CAAC,GAAG,IAAI,CAACyB,MAAM,CAACzB,OAAO,CAAC;IACrF;IACA,MAAMhB,IAAI,GAAG,IAAI,CAACuB,uBAAuB,CAAC,CAAC;IAC3C,IAAI,CAACvB,IAAI,EAAE;MACT,OAAO,KAAK;IACd;IACA,MAAM0C,cAAc,GAAG,MAAM,IAAAC,kCAAoB,EAAC;MAAEL,IAAI;MAAEM,cAAc,EAAE,IAAI;MAAEC,KAAK,EAAE,CAAC7C,IAAI;IAAE,CAAC,CAAC;IAChG;IACA,OAAO0C,cAAc,CAACI,GAAG,CAAEC,CAAC,IAAKA,CAAC,CAACC,IAAI,CAAC,CAACC,IAAI,CAAED,IAAI,IAAKA,IAAI,CAAC3B,QAAQ,CAAC,CAAC,CAAC6B,UAAU,CAAClC,OAAO,CAAC,CAAC;EAC9F;EAEAyB,MAAMA,CAACzB,OAAe,EAAW;IAC/B,OAAOa,OAAO,CAAC,IAAI,CAACtC,QAAQ,CAACyB,OAAO,CAAC,CAAC;EACxC;;EAEA;AACF;AACA;AACA;EACE,IAAIoB,uBAAuBA,CAAA,EAAa;IACtC;IACA,OAAAvE,aAAA,CAAAA,aAAA,KAAY,IAAI,CAAC0B,QAAQ,GAAK,IAAI,CAACC,gBAAgB;EACrD;EAEAgD,qBAAqBA,CAACxB,OAAe,EAAW;IAC9C,OAAOa,OAAO,CAAC,IAAI,CAACtC,QAAQ,CAACyB,OAAO,CAAC,IAAI,IAAI,CAACxB,gBAAgB,CAACwB,OAAO,CAAC,CAAC;EAC1E;;EAEA;AACF;AACA;EACEmC,UAAUA,CAAA,EAAG;IACX,MAAMC,UAAU,GAAG,IAAI,CAAC7C,YAAY,CAACuC,GAAG,CAAEnC,GAAG,IAAKA,GAAG,CAACU,QAAQ,CAAC,CAAC,CAAC;IACjE,OAAO,IAAI,CAACrB,IAAI,IAAI,CAACoD,UAAU,CAACC,QAAQ,CAAC,IAAI,CAACrD,IAAI,CAACqB,QAAQ,CAAC,CAAC,CAAC;EAChE;;EAEA;AACF;AACA;EACEiC,gBAAgBA,CAACC,aAA4B,EAAQ;IACnD,IAAI,CAACA,aAAa,CAACnE,IAAI,IAAI,CAACmE,aAAa,CAACC,GAAG,IAAI,CAACD,aAAa,CAACE,IAAI,EAAE;MACpE,MAAM,IAAI9E,SAAS,CACjB,0DAA0D4E,aAAa,CAACnE,IAAI,UAAUmE,aAAa,CAACC,GAAG,WAAWD,aAAa,CAACE,IAAI,EACtI,CAAC;IACH;IACA,IAAI,CAAC,IAAI,CAAC1D,UAAU,CAAC2D,IAAI,CAAElH,CAAC,IAAKA,CAAC,CAACgH,GAAG,KAAKD,aAAa,CAACC,GAAG,CAAC,EAAE;MAC7D,IAAI,CAACzD,UAAU,CAACpC,IAAI,CAAC4F,aAAa,CAAC;IACrC;EACF;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAMI,cAAcA,CAACrB,IAAgB,EAAEsB,MAAM,GAAG,IAAI,EAAEC,SAAS,GAAG,IAAI,EAAEC,WAAyB,EAAiB;IAChH,IAAI,CAAC,IAAI,CAACC,WAAW,IAAI,CAACF,SAAS,EAAE;MACnC,MAAMG,UAAU,GAAG,CAAC,IAAI,CAACC,MAAM,GAAG,IAAI,CAACC,8BAA8B,GAAG,IAAI,CAACF,UAAU,KAAK,IAAI;MAChG;MACA;MACA,MAAMG,gBAAgB,GAAG,CAAC,IAAI,CAACC,QAAQ,CAAC,CAAC,IAAIN,WAAW,EAAEzB,UAAU,CAAC,CAAC,GAAGyB,WAAW,CAAC9C,OAAO,GAAG,IAAI;MACnG,IAAI,CAAC+C,WAAW,GAAG,MAAM,IAAAM,4BAAc,EAAC;QACtC/B,IAAI;QACJM,cAAc,EAAE,IAAI;QACpB0B,UAAU,EAAEN,UAAU;QACtBO,UAAU,EAAEJ,gBAAgB,GAAG,IAAI,CAACpD,MAAM,CAACoD,gBAAgB,CAAC,GAAGzC,SAAS;QACxEkC;MACF,CAAC,CAAC;IACJ;EACF;EAEAQ,QAAQA,CAAA,EAAY;IAClB,OAAOvC,OAAO,CAAC,IAAI,CAACL,aAAa,IAAI,IAAI,CAACA,aAAa,KAAK,IAAI,CAAC;EACnE;;EAEA;AACF;AACA;AACA;EACE6C,cAAcA,CAAA,EAAkB;IAC9B,IAAI,CAAC,IAAI,CAACN,WAAW,EACnB,MAAM,IAAIlD,KAAK,CACb,iGAAiG,IAAI,CAACC,EAAE,CAAC,CAAC,EAC5G,CAAC;IACH,OAAO,IAAI,CAACiD,WAAW;EACzB;;EAEA;AACF;AACA;AACA;EACE,MAAMS,6BAA6BA,CAAClC,IAAgB,EAAE;IACpD,OAAO,IAAA+B,4BAAc,EAAC;MACpB/B,IAAI;MACJM,cAAc,EAAE,IAAI;MACpB0B,UAAU,EAAE,CAAC,IAAI,CAACL,MAAM,GAAG,IAAI,CAACQ,cAAc,GAAG,IAAI,CAACT,UAAU,KAAK,IAAI;MACzEJ,MAAM,EAAE;IACV,CAAC,CAAC;EACJ;EAEA,MAAMc,2BAA2BA,CAACpC,IAAgB,EAAEqC,IAAW,EAAE;IAC/D,IAAI,CAACC,gBAAgB,CAACD,IAAI,CAAC;IAC3B,IAAIA,IAAI,EAAE,IAAI,CAACV,MAAM,GAAGU,IAAI,CAACE,QAAQ,CAAC,CAAC;IACvC,IAAI,CAAC,IAAI,CAACxF,KAAK,EAAE;MACf,OAAO,CAAC;IACV;IACA,IAAI,CAAC2E,UAAU,GAAG,MAAM1B,IAAI,CAACwC,WAAW,CAAC/D,MAAM,CAACgE,gBAAM,CAACC,IAAI,CAACC,sBAAY,EAAE,IAAI,CAAC5F,KAAK,CAAC,EAAE,IAAI,CAAC6F,aAAa,CAAC,CAAC,CAAC;IAC5G,IAAI,CAACP,IAAI,EAAE;MACT;IACF;IACA,IAAI,CAACF,cAAc,GAAGE,IAAI,CAACQ,KAAK,GAAG,IAAI,GAAG,MAAM7C,IAAI,CAACwC,WAAW,CAAC/D,MAAM,CAAC4D,IAAI,CAACE,QAAQ,CAAC,CAAC,EAAE,IAAI,CAACK,aAAa,CAAC,CAAC,CAAC;IAE9G,MAAME,eAAe,GAAG,MAAAA,CAAA,KAAY;MAClC,IAAI,IAAI,CAACX,cAAc,EAAE,OAAO,IAAI,CAACA,cAAc;MACnD,IAAIE,IAAI,CAACQ,KAAK,IAAIR,IAAI,CAACU,UAAU,EAAE;QACjC;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,MAAMC,YAAY,GAAG,MAAMhD,IAAI,CAACwC,WAAW,CAAC/D,MAAM,CAAC4D,IAAI,CAACU,UAAU,EAAE,IAAI,CAACH,aAAa,CAAC,CAAC,CAAC;QACzF,IAAII,YAAY,EAAE,OAAOA,YAAY;QACrC,IAAIX,IAAI,CAACU,UAAU,CAAChG,KAAK,KAAKsF,IAAI,CAACtF,KAAK,EAAE;UACxC;UACA;UACA;UACA;UACA;UACA,OAAO,IAAI;QACb;QACA;MACF;MACA;MACA;MACA,OAAO,IAAI,CAAC2E,UAAU,IAAI,IAAI,CAAChE,IAAI;IACrC,CAAC;IAED,IAAI,CAACkE,8BAA8B,GAAG,MAAMkB,eAAe,CAAC,CAAC;EAC/D;EAEAR,gBAAgBA,CAACD,IAAW,EAAE;IAC5B,IAAIA,IAAI,EAAE;MACR;MACA;MACA,IAAI,CAACnD,aAAa,GAAGmD,IAAI,CAACY,kCAAkC,CAAC,IAAI,CAACL,aAAa,CAAC,CAAC,CAAC,IAAI,IAAI;IAC5F;EACF;;EAEA;AACF;AACA;AACA;AACA;AACA;EACEM,6BAA6BA,CAC3BC,cAAyB;EAAE;EAC3BC,KAAc,EACyD;IACvE,MAAMC,iBAAiB,GAAGF,cAAc,CAACG,gBAAgB,CAAC,CAAC;IAC3D,MAAMC,sBAAsB,GAAG,IAAAC,gBAAM,EACnCL,cAAc,CAAClG,QAAQ,EACvB,CAACwG,GAAG,EAAEC,GAAG,KAAK7I,MAAM,CAACI,IAAI,CAAC,IAAI,CAACgC,QAAQ,CAAC,CAAC8D,QAAQ,CAAC2C,GAAG,CAAC,KAAK,CAACN,KAAK,IAAIC,iBAAiB,CAACtC,QAAQ,CAAC2C,GAAG,CAAC,CACtG,CAAC;IACD,MAAMC,qBAAqB,GAAG,IAAAH,gBAAM,EAClC,IAAI,CAACvG,QAAQ,EACb,CAACwG,GAAG,EAAEC,GAAG,KAAK7I,MAAM,CAACI,IAAI,CAACsI,sBAAsB,CAAC,CAACxC,QAAQ,CAAC2C,GAAG,CAAC,KAAK,CAACN,KAAK,IAAIC,iBAAiB,CAACtC,QAAQ,CAAC2C,GAAG,CAAC,CAC/G,CAAC;IACD,OAAO;MAAEC,qBAAqB;MAAEJ;IAAuB,CAAC;EAC1D;EAEAK,cAAcA,CAACC,SAAoB,EAAET,KAAc,EAAW;IAC5D,MAAM;MAAEO,qBAAqB;MAAEJ;IAAuB,CAAC,GAAG,IAAI,CAACL,6BAA6B,CAACW,SAAS,EAAET,KAAK,CAAC;IAC9G,OAAO,IAAAU,iBAAO,EAACH,qBAAqB,EAAEJ,sBAAsB,CAAC;EAC/D;EAEAQ,QAAQA,CAACF,SAAoB,EAAET,KAAc,EAAY;IACvD,MAAM;MAAEO,qBAAqB;MAAEJ;IAAuB,CAAC,GAAG,IAAI,CAACL,6BAA6B,CAACW,SAAS,EAAET,KAAK,CAAC;IAC9G,OAAOvI,MAAM,CAACI,IAAI,CAAC0I,qBAAqB,CAAC,CAACxI,MAAM,CAC7CuD,OAAO,IAAKiF,qBAAqB,CAACjF,OAAO,CAAC,CAACgC,IAAI,KAAK6C,sBAAsB,CAAC7E,OAAO,CAAC,CAACgC,IACvF,CAAC;EACH;EAEAsD,OAAOA,CAAA,EAAG;IACR,OAAO,IAAAA,iBAAO,EAAC,IAAI,CAAC/G,QAAQ,CAAC,IAAI,CAAC,IAAI,CAACqC,OAAO,CAAC,CAAC;EAClD;;EAEA;AACF;AACA;AACA;EACE2E,kCAAkCA,CAACC,0BAA0B,GAAG,KAAK,EAAU;IAC7E,MAAMxG,IAAI,GAAG,IAAI,CAACuB,uBAAuB,CAAC,CAAC;IAC3C,IAAI,CAACvB,IAAI,EAAE;MACT,IAAI,CAAC,IAAAsG,iBAAO,EAAC,IAAI,CAAC/G,QAAQ,CAAC,EACzB,MAAM,IAAIsB,KAAK,CAAC,UAAU,IAAI,CAACC,EAAE,CAAC,CAAC,2DAA2D,CAAC;MACjG,IAAI0F,0BAA0B,EAAE,OAAO1H,YAAY;MACnD,MAAM,IAAI+B,KAAK,CAAC,kEAAkE,IAAI,CAACC,EAAE,CAAC,CAAC,EAAE,CAAC;IAChG;IACA,OAAO,IAAI,CAACa,mBAAmB,CAAC3B,IAAI,CAAC,IAAIA,IAAI,CAACqB,QAAQ,CAAC,CAAC;EAC1D;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAMoF,iBAAiBA,CAACnE,IAAgB,EAAmB;IACzD,MAAMoE,aAAa,GAAG,IAAI,CAACH,kCAAkC,CAAC,IAAI,CAAC;IACnE,MAAMvC,UAAU,GAAG,IAAI,CAACS,cAAc,IAAI,IAAI,CAACT,UAAU;IACzD,IAAI,CAACA,UAAU,EAAE,OAAO0C,aAAa;IACrC,IAAI,CAAC,IAAI,CAACnF,uBAAuB,CAAC,CAAC,EAAE;MACnC,OAAOyC,UAAU,CAAC3C,QAAQ,CAAC,CAAC,CAAC,CAAC;IAChC;;IAEA;IACA,IAAI,IAAI,CAAC4C,MAAM,IAAI,CAAC,IAAI,CAACQ,cAAc,EAAE;MACvC;MACA;MACA;MACA,OAAOiC,aAAa;IACtB;IACA,MAAM,IAAI,CAAC/C,cAAc,CAACrB,IAAI,EAAE,KAAK,CAAC;IACtC,MAAMyB,WAAW,GAAG,IAAI,CAACM,cAAc,CAAC,CAAC;IACzC,IAAIN,WAAW,CAAC4C,aAAa,CAAC,CAAC,EAAE;MAC/B,OAAO,IAAI,CAAChF,mBAAmB,CAACqC,UAAU,CAAC,IAAIA,UAAU,CAAC3C,QAAQ,CAAC,CAAC;IACtE;IACA,OAAOqF,aAAa;EACtB;EAEA,MAAME,gBAAgBA,CAACtE,IAAgB,EAAEuE,mBAA2B,EAAgB;IAClF,MAAM7G,IAAI,GAAG,IAAI,CAACuB,uBAAuB,CAAC,CAAC;IAC3C,IAAI,CAACvB,IAAI,EAAE,MAAM,KAAI8G,oBAAQ,EAAC,+CAA+C,IAAI,CAAChG,EAAE,CAAC,CAAC,EAAE,CAAC;IACzF,MAAMiG,cAAc,GAAG,MAAM,IAAI,CAACC,4BAA4B,CAAC1E,IAAI,EAAEtC,IAAI,CAAC;IAC1E,OAAO+G,cAAc,CAACE,WAAW,CAACJ,mBAAmB,EAAE7G,IAAI,CAAC;EAC9D;EAEAkH,aAAaA,CAAA,EAAW;IACtB,IAAI,IAAAZ,iBAAO,EAAC,IAAI,CAAC/G,QAAQ,CAAC,EAAE,OAAOT,YAAY;IAC/C,OAAO,IAAAqI,8BAAgB,EAAC,IAAI,CAACpF,YAAY,CAAC,CAAC,CAAC;EAC9C;EAEAqF,oBAAoBA,CAAA,EAAuB;IACzC,IAAI,IAAAd,iBAAO,EAAC,IAAI,CAAC/G,QAAQ,CAAC,EAAE,OAAOmC,SAAS;IAC5C,OAAO,IAAAyF,8BAAgB,EAAC,IAAI,CAACpF,YAAY,CAAC,CAAC,CAAC;EAC9C;;EAEA;EACAsF,mBAAmBA,CAACrG,OAAkC,EAAW;IAC/D,IAAI,CAACA,OAAO,EAAE,MAAMrC,SAAS,CAAC,6CAA6C,CAAC;IAC5E,MAAM2I,MAAM,GAAG,IAAI,CAACf,kCAAkC,CAAC,IAAI,CAAC;IAC5D,IAAI,IAAI,CAACD,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAACpC,8BAA8B,EAAE;MAC1D,OAAO,KAAK,CAAC,CAAC;IAChB;IACA,IAAI,IAAAjD,yBAAK,EAACqG,MAAM,CAAC,IAAI,IAAArG,yBAAK,EAACD,OAAO,CAAC,EAAE;MACnC,OAAOvG,MAAM,CAAD,CAAC,CAAC8M,EAAE,CAACD,MAAM,EAAEtG,OAAO,CAAC;IACnC;IACA,IAAIsG,MAAM,KAAKtG,OAAO,EAAE,OAAO,KAAK;IACpC,MAAMwG,SAAS,GAAG,IAAI,CAACzG,MAAM,CAACuG,MAAM,CAAC;IACrC,IAAI,CAACE,SAAS,EAAE,MAAM,IAAI3G,KAAK,CAAC,8CAA8C,CAAC;IAC/E,MAAM4G,UAAU,GAAGD,SAAS,CAACnG,QAAQ,CAAC,CAAC;IACvC,MAAMqG,UAAU,GAAG,IAAI,CAAC3G,MAAM,CAACC,OAAO,CAAC;IACvC,IAAI,CAAC0G,UAAU,EAAE,OAAO,IAAI,CAAC,CAAC;IAC9B,MAAMC,WAAW,GAAGD,UAAU,CAACrG,QAAQ,CAAC,CAAC;IACzC,IAAIoG,UAAU,KAAKE,WAAW,EAAE,OAAO,KAAK;IAC5C,OAAO,IAAI;EACb;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,cAAcA,CAACC,UAAsB,EAAU;IAC7C,IAAI,IAAAvB,iBAAO,EAAC,IAAI,CAAC/G,QAAQ,CAAC,EAAE,OAAOT,YAAY;IAC/C,MAAMS,QAAQ,GAAG,IAAI,CAACwC,YAAY,CAAC,KAAK,CAAC;IACzC,IAAIf,OAAO,GAAG,IAAI;IAClB,IAAI8G,UAAU,GAAG,IAAI;IACrB,OAAO,CAAC9G,OAAO,IAAIzB,QAAQ,IAAIA,QAAQ,CAACxB,MAAM,EAAE;MAC9C;MACA+J,UAAU,GAAGvI,QAAQ,CAACwI,GAAG,CAAC,CAAC;MAC3B;MACA/G,OAAO,GAAG,IAAI,CAACgH,eAAe,CAACF,UAAU,EAAED,UAAU,EAAE,KAAK,CAAC;IAC/D;IACA,OAAOC,UAAU,IAAIhJ,YAAY;EACnC;;EAEA;AACF;AACA;EACE,MAAMmJ,WAAWA,CAAC5I,KAAY,EAAE6I,SAAS,GAAG,KAAK,EAAEC,SAAe,EAA2B;IAC3F,MAAM7F,IAAI,GAAGjD,KAAK,CAAC+I,OAAO;IAC1B,IAAIC,YAAY,GAAG,MAAM,IAAAC,gCAAkB,EAAC;MAAE1F,cAAc,EAAE,IAAI;MAAEN,IAAI;MAAEsB,MAAM,EAAE,KAAK;MAAEuE;IAAU,CAAC,CAAC;;IAErG;IACA;IACA,IACEE,YAAY,CAACpF,IAAI,CAAEF,CAAC,IAAKA,CAAC,CAACwF,KAAK,IAAI,IAAAC,qCAA0B,EAACzF,CAAC,CAACwF,KAAK,CAAC,CAAC,IACxE,IAAI,CAAClJ,KAAK,KAAKiD,IAAI,CAACmG,SAAS,CAACrJ,IAAI,EAClC;MACAsJ,iBAAM,CAACC,IAAI,CAAC,kDAAkD,IAAI,CAAC7H,EAAE,CAAC,CAAC,2BAA2B,CAAC;MACnG,IAAI;QACF,MAAM6D,IAAI,GAAG,MAAMtF,KAAK,CAACuJ,oBAAoB,CAAC,CAAC;QAC/C,MAAMvJ,KAAK,CAACwJ,aAAa,CAACC,iBAAiB,CACzCC,8BAAe,CAACC,SAAS,CAAC,CAAC,IAAI,CAAC9D,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC+D,eAAe,CAAC,CAAC,EACnE;UACEC,KAAK,EAAE,KAAK;UACZC,qBAAqB,EAAE,IAAI;UAC3BC,cAAc,EAAE,IAAI;UACpBzE,IAAI,EAAEA,IAAI,IAAIjD,SAAS;UACvB2H,MAAM,EAAE;QACV,CACF,CAAC;QACDhB,YAAY,GAAG,MAAM,IAAAC,gCAAkB,EAAC;UAAE1F,cAAc,EAAE,IAAI;UAAEN,IAAI;UAAEsB,MAAM,EAAE,KAAK;UAAEuE;QAAU,CAAC,CAAC;QACjG;QACA;QACA;QACA;QACA,IACExD,IAAI,IACJA,IAAI,CAACtF,KAAK,KAAK,IAAI,CAACA,KAAK,IACzBgJ,YAAY,CAACpF,IAAI,CAAEF,CAAC,IAAKA,CAAC,CAACwF,KAAK,IAAI,IAAAC,qCAA0B,EAACzF,CAAC,CAACwF,KAAK,CAAC,CAAC,EACxE;UACA,MAAMlJ,KAAK,CAACwJ,aAAa,CAACC,iBAAiB,CACzCC,8BAAe,CAACC,SAAS,CAAC,CAAC,IAAI,CAAC9D,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC+D,eAAe,CAAC,CAAC,EACnE;YACEC,KAAK,EAAE,KAAK;YACZC,qBAAqB,EAAE,IAAI;YAC3BC,cAAc,EAAE,IAAI;YACpBC,MAAM,EAAE;UACV,CACF,CAAC;UACDhB,YAAY,GAAG,MAAM,IAAAC,gCAAkB,EAAC;YAAE1F,cAAc,EAAE,IAAI;YAAEN,IAAI;YAAEsB,MAAM,EAAE,KAAK;YAAEuE;UAAU,CAAC,CAAC;QACnG;MACF,CAAC,CAAC,OAAOmB,GAAG,EAAE;QACZZ,iBAAM,CAACH,KAAK,CAAC,gCAAgC,IAAI,CAACzH,EAAE,CAAC,CAAC,UAAU,EAAEwI,GAAG,CAAC;MACxE;IACF;IAEA,MAAMtJ,IAAI,GAAG,IAAI,CAACuB,uBAAuB,CAAC,CAAC;IAC3C,MAAMgI,WAAW,GAAGvJ,IAAI,GAAK,MAAMsC,IAAI,CAACkH,IAAI,CAACxJ,IAAI,CAAC,GAA2B0B,SAAS;IACtF,MAAM+H,YAAY,GAAGF,WAAW,EAAEG,UAAU,CAACC,iBAAiB,CAACC,oBAAU,CAACC,MAAM,CAAC;IACjF,MAAMC,WAAW,GAAGL,YAAY,EAAEM,MAAM,CAACC,KAAK;IAC9C,MAAMC,WAAW,GAAGR,YAAY,EAAEM,MAAM,CAACG,KAAK,IAAI,EAAE;IACpD,MAAMC,iBAAiB,GAAGZ,WAAW,EAAEG,UAAU,CAACC,iBAAiB,CAACC,oBAAU,CAACQ,WAAW,CAAC;IAC3F,MAAMC,gBAAgB,GAAGF,iBAAiB,EAAEJ,MAAM,CAACC,KAAK;IAExD,MAAMjJ,MAAM,GAAIJ,GAAQ,IAAMuH,SAAS,GAAGvH,GAAG,CAAC2J,aAAa,CAAC,CAAC,GAAG3J,GAAG,CAACU,QAAQ,CAAC,CAAE;IAC/E,MAAMkJ,OAAO,GAAGlC,YAAY,CAACvF,GAAG,CAAE0H,WAAW,IAAK;MAChD,MAAMC,GAAG,GAAGD,WAAW,CAACxJ,OAAO,GAAGwJ,WAAW,CAACxJ,OAAO,CAACyJ,GAAG,GAAG;QAAEC,OAAO,EAAE;MAAsB,CAAC;MAC9F,OAAA7M,aAAA,CAAAA,aAAA,KACK4M,GAAG;QAAE;QACRE,QAAQ,EAAEF,GAAG,EAAEE,QAAQ,IAAI,SAAS;QACpC;QACAC,KAAK,EAAEH,GAAG,EAAEG,KAAK,IAAI,SAAS;QAC9BlK,GAAG,EAAE8J,WAAW,CAAC9J,GAAG;QACpBsC,IAAI,EAAEjC,MAAM,CAACyJ,WAAW,CAAC7J,GAAG,CAAC;QAC7BkK,OAAO,EAAEL,WAAW,CAACK,OAAO,CAAC/H,GAAG,CAAEgI,MAAM,IAAK/J,MAAM,CAAC+J,MAAM,CAAC,CAAC;QAC5DC,MAAM,EAAEP,WAAW,CAACO,MAAM;QAC1BC,OAAO,EACJR,WAAW,CAAC9J,GAAG,IAAIoJ,WAAW,IAAIrP,MAAM,CAAD,CAAC,CAACwQ,SAAS,CAACT,WAAW,CAAC9J,GAAG,EAAEoJ,WAAW,CAAC,IAChF,CAACU,WAAW,CAAC9J,GAAG,IAAIuJ,WAAW,CAAC5G,QAAQ,CAACmH,WAAW,CAAC7J,GAAG,CAACU,QAAQ,CAAC,CAAC,CAAE;QACxE1B,UAAU,EAAE6K,WAAW,CAAC9J,GAAG,IAAI2J,gBAAgB,IAAI5P,MAAM,CAAD,CAAC,CAACwQ,SAAS,CAACT,WAAW,CAAC9J,GAAG,EAAE2J,gBAAgB,CAAC;QACtGa,MAAM,EAAEV,WAAW,CAACxJ,OAAO,EAAEkK;MAAM;IAEvC,CAAC,CAAC;IACF;IACA,MAAMC,MAAM,GAAGZ,OAAO,CAACvI,IAAI,CAAC,CAACoJ,CAAe,EAAEC,CAAe,KAAK;MAChE;MACA,IAAID,CAAC,CAAC3H,IAAI,IAAI4H,CAAC,CAAC5H,IAAI,EAAE,OAAO2H,CAAC,CAAC3H,IAAI,GAAG4H,CAAC,CAAC5H,IAAI;MAC5C,OAAO,CAAC;IACV,CAAC,CAAC;IACF,OAAO0H,MAAM;EACf;EAEAG,eAAeA,CAAChJ,IAAgB,EAAgC;IAC9D,OAAOiJ,OAAO,CAACC,GAAG,CAChB,IAAI,CAACzJ,YAAY,CAAC,CAAC,CAACe,GAAG,CAAE2I,UAAU,IAAK;MACtC,OAAO,IAAI,CAACC,mBAAmB,CAACD,UAAU,EAAE,IAAI,CAACpM,KAAK,EAAEiD,IAAI,CAAC;IAC/D,CAAC,CACH,CAAC;EACH;EAEAX,mBAAmBA,CAAChB,GAAQ,EAAsB;IAChD,MAAMgL,MAAM,GAAIpM,QAAkB,IAAKpC,MAAM,CAACI,IAAI,CAACgC,QAAQ,CAAC,CAACmE,IAAI,CAAEhD,GAAG,IAAKnB,QAAQ,CAACmB,GAAG,CAAC,CAAC0F,OAAO,CAACzF,GAAG,CAAC,CAAC;IACtG,OAAOgL,MAAM,CAAC,IAAI,CAACpM,QAAQ,CAAC,IAAIoM,MAAM,CAAC,IAAI,CAACnM,gBAAgB,CAAC;EAC/D;EAEAoM,MAAMA,CAAC5K,OAAe,EAAsB;IAC1C,IAAI,IAAAC,yBAAK,EAACD,OAAO,CAAC,EAAE,OAAOA,OAAO;IAClC,MAAML,GAAG,GAAGQ,cAAG,CAAC6D,IAAI,CAAChE,OAAO,CAAC;IAC7B,OAAO,IAAI,CAACW,mBAAmB,CAAChB,GAAG,CAAC;EACtC;EAEAkL,2BAA2BA,CAACC,IAAW,EAAY;IACjD,OAAOA,IAAI,CAAChJ,GAAG,CAAEnC,GAAG,IAAK,IAAI,CAACgB,mBAAmB,CAAChB,GAAG,CAAC,IAAIA,GAAG,CAACU,QAAQ,CAAC,CAAC,CAAC;EAC3E;;EAEA;AACF;AACA;EACE0K,eAAeA,CACbC,WAA+B,GAAGC,kCAAwB,EAC1DC,YAA4B,EAC5BC,WAAoB,EACpBC,YAAqB,EACb;IACR,IAAIF,YAAY,IAAI,IAAI,CAAC3M,QAAQ,CAAC2M,YAAY,CAAC,EAAE;MAC/C,MAAM,KAAIG,+BAAoB,EAACH,YAAY,EAAE,IAAI,CAACpL,EAAE,CAAC,CAAC,CAAC;IACzD;IACA,MAAME,OAAO,GAAGkL,YAAY,IAAI,IAAI,CAAClL,OAAO,CAACgL,WAAW,EAAEG,WAAW,EAAEC,YAAY,CAAC;IACpF,IAAAE,6BAAe,EAACtL,OAAO,CAAC;IACxB,OAAOA,OAAO;EAChB;EAEAoF,OAAOA,CAACD,SAAoB,EAAEoG,wBAAwB,GAAG,IAAI,EAAW;IACtE,IAAK,IAAI,CAAC3K,OAAO,CAAC,CAAC,IAAI,CAACuE,SAAS,CAACvE,OAAO,CAAC,CAAC,IAAM,CAAC,IAAI,CAACA,OAAO,CAAC,CAAC,IAAIuE,SAAS,CAACvE,OAAO,CAAC,CAAE,EAAE;MACxF,OAAO,KAAK,CAAC,CAAC;IAChB;IACA,IAAI,IAAI,CAAC5B,IAAI,IAAImG,SAAS,CAACnG,IAAI,IAAI,CAAC,IAAI,CAACA,IAAI,CAACoG,OAAO,CAACD,SAAS,CAACnG,IAAI,CAAC,EAAE;MACrE,OAAO,KAAK,CAAC,CAAC;IAChB;IACA;IACA,IAAI,IAAI,CAACO,YAAY,CAACxC,MAAM,KAAKoI,SAAS,CAAC5F,YAAY,CAACxC,MAAM,EAAE;MAC9D,OAAO,KAAK;IACd;IACA,MAAMyO,eAAe,GAAGrP,MAAM,CAACI,IAAI,CAAC,IAAI,CAACgC,QAAQ,CAAC,CAACkN,KAAK,CACrD/L,GAAG,IAAKyF,SAAS,CAAC5G,QAAQ,CAACmB,GAAG,CAAC,IAAIyF,SAAS,CAAC5G,QAAQ,CAACmB,GAAG,CAAC,CAAC0F,OAAO,CAAC,IAAI,CAAC7G,QAAQ,CAACmB,GAAG,CAAC,CACxF,CAAC;IACD,IAAI6L,wBAAwB,EAAE;MAC5B,IAAIpP,MAAM,CAACI,IAAI,CAAC,IAAI,CAACiC,gBAAgB,CAAC,CAACzB,MAAM,KAAKZ,MAAM,CAACI,IAAI,CAAC4I,SAAS,CAAC3G,gBAAgB,CAAC,CAACzB,MAAM,EAAE;QAChG,OAAO,KAAK;MACd;MACA,MAAM2O,uBAAuB,GAAGvP,MAAM,CAACI,IAAI,CAAC,IAAI,CAACiC,gBAAgB,CAAC,CAACiN,KAAK,CACrE/L,GAAG,IAAKyF,SAAS,CAAC3G,gBAAgB,CAACkB,GAAG,CAAC,IAAIyF,SAAS,CAAC3G,gBAAgB,CAACkB,GAAG,CAAC,CAAC0F,OAAO,CAAC,IAAI,CAAC5G,gBAAgB,CAACkB,GAAG,CAAC,CAChH,CAAC;MACD,IAAI,CAACgM,uBAAuB,EAAE;QAC5B,OAAO,KAAK;MACd;IACF;IAEA,OAAOF,eAAe;EACxB;;EAEA;EACAG,UAAUA,CACR3L,OAAgB,EAChB4L,YAAoB,EACpBjI,IAAW,EACXkI,qBAA8B,EAC9B;IAAEC,2BAA2B;IAAEC,eAAe;IAAEC,UAAU;IAAEC;EAA6B,CAAC,GAAG,CAAC,CAAC,EACvF;IACR,IAAID,UAAU,IAAIC,YAAY,EAAE;MAC9B,MAAM,IAAIpM,KAAK,CAAC,2EAA2E,CAAC;IAC9F;IACA,IAAI8D,IAAI,EAAE;MACR,IAAI,IAAA1D,yBAAK,EAAC2L,YAAY,CAAC,EAAE;QACvB,MAAM,KAAI9F,oBAAQ,EAChB,oGACF,CAAC;MACH;MACA,MAAMoG,YAAY,GAAG,IAAI,CAAChI,aAAa,CAAC,CAAC;MACzC,MAAMiI,eAAe,GAAGhM,cAAG,CAAC6D,IAAI,CAAC4H,YAAY,CAAC;MAC9C,MAAM9B,MAAM,GAAG+B,qBAAqB,GAAG,IAAI,CAAC9L,MAAM,CAAC8L,qBAAqB,CAAC,GAAG,IAAI;MAChF,IAAI,CAAC/B,MAAM,EAAE;QACX,MAAMsC,uBAAuB,GAAGzI,IAAI,CAAC0I,YAAY,CAACH,YAAY,CAAC;QAC/D,MAAMI,WAAW,GAAIF,uBAAuB,IAAIA,uBAAuB,CAACpN,IAAI,IAAK,IAAI,CAACsB,OAAO,CAAC,CAAC;QAC/F,IAAIgM,WAAW,EAAE;UACf,MAAM,IAAIzM,KAAK,CACb,aAAaqM,YAAY,CAAC7L,QAAQ,CAAC,CAAC,gBAAgBiM,WAAW,CAACjM,QAAQ,CAAC,CAAC,sCAC5E,CAAC;QACH;MACF;MACA,IAAIyJ,MAAM,IAAI,CAACA,MAAM,CAAC1E,OAAO,CAAC+G,eAAe,CAAC,EAAE;QAC9CnM,OAAO,CAACuM,eAAe,CAACzC,MAAM,CAAC;MACjC;MACA;MACA;MACA;MACA,MAAM0C,cAAc,GAAG7I,IAAI,CAAC8I,mBAAmB,CAACP,YAAY,CAAC;MAC7D,MAAMQ,eAAe,GAAG/I,IAAI,CAAC0I,YAAY,CAACH,YAAY,CAAC;MACvD,MAAMS,cAAc,GAAGb,2BAA2B,KAAKjL,OAAO,CAAC2L,cAAc,CAAC,IAAI,CAACE,eAAe,CAAC;MACnG,IAAIC,cAAc,EAAE;QAClB,IAAID,eAAe,EAAE/I,IAAI,CAACiJ,eAAe,CAACV,YAAY,CAAC;QACvDvI,IAAI,CAACkJ,8BAA8B,CAACX,YAAY,CAACY,aAAa,CAACX,eAAe,CAAC9L,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC3F;QACA;QACA;QACA;QACA,IAAI,CAACmM,cAAc,EAAE7I,IAAI,CAACoJ,2BAA2B,CAAC,IAAI,CAAC;MAC7D,CAAC,MAAM;QACL,IAAIP,cAAc,EAAE7I,IAAI,CAACqJ,0CAA0C,CAACd,YAAY,CAAC;QACjFvI,IAAI,CAACsJ,YAAY,CAAC;UAChBnN,EAAE,EAAEoM,YAAY;UAChBlN,IAAI,EAAEmN,eAAe;UACrBe,SAAS,EAAElN,OAAO,CAACmN,SAAS,CAAC;QAC/B,CAAC,CAAC;MACJ;MAEA,IAAIxJ,IAAI,CAACyJ,eAAe,IAAIzJ,IAAI,CAACyJ,eAAe,CAACtN,EAAE,CAACuN,QAAQ,KAAKnB,YAAY,CAACmB,QAAQ,EAAE;QACtF1J,IAAI,CAAC2J,kBAAkB,CAACpB,YAAY,CAAC;MACvC;MACA,IAAI,CAAC1L,aAAa,GAAG2L,eAAe;MACpC,OAAOP,YAAY;IACrB;IACA;IACA,MAAM5M,IAAI,GAAG,IAAI,CAACsB,OAAO,CAAC,CAAC;IAC3B,MAAMwJ,MAAM,GAAG+B,qBAAqB,GAAG,IAAI,CAAC9L,MAAM,CAAC8L,qBAAqB,CAAC,GAAG,IAAI;IAChF,IACE7M,IAAI,IACJA,IAAI,CAACqB,QAAQ,CAAC,CAAC,KAAKuL,YAAY,IAChC,CAAC,IAAI,CAACnK,MAAM,CAACmK,YAAY,CAAC,CAAC;IAAA,EAC3B;MACA;MACA;MACA;MACA;MACA;MACA,MAAM2B,WAAW,GAAGxB,eAAe,GAAG/M,IAAI,GAAG8K,MAAM;MACnD9J,OAAO,CAACuM,eAAe,CAACgB,WAAW,IAAIvO,IAAI,CAAC;IAC9C;IACA,IAAI8K,MAAM,IAAI9K,IAAI,IAAI,CAAC8K,MAAM,CAAC1E,OAAO,CAACpG,IAAI,CAAC,IAAI,CAACiN,YAAY,EAAE;MAC5D,IAAID,UAAU,EAAE,IAAI,CAAC9M,aAAa,CAAC4B,OAAO,CAACd,OAAO,CAACgC,IAAI,CAAC,CAAC,CAAC,CAAC,KAEzD,MAAM,IAAInC,KAAK,CAAC,oCAAoC,IAAI,CAACC,EAAE,CAAC,CAAC;AACrE,8CAA8C+L,qBAAqB,6BAA6B7M,IAAI;AACpG;AACA,2MAA2M,CAAC;IACxM,CAAC,MAAM;MACL,IAAI,CAAC8B,OAAO,CAACd,OAAO,CAACgC,IAAI,CAAC,CAAC,CAAC;MAC5B,IAAI,CAAC9C,aAAa,CAACsO,YAAY,CAAC,CAAC;IACnC;IACA,IAAI,IAAAvN,yBAAK,EAAC2L,YAAY,CAAC,EAAE;MACvB,IAAI,CAACnM,UAAU,CAACmM,YAAY,EAAE5L,OAAO,CAACgC,IAAI,CAAC,CAAC,CAAC;IAC/C;IACA,IAAI,CAACyL,kBAAkB,CAAC7B,YAAY,CAAC;IACrC,OAAOA,YAAY;EACrB;EAEA5L,OAAOA,CAACgL,WAA+B,GAAGC,kCAAwB,EAAEE,WAAW,GAAG,CAAC,EAAEC,YAAqB,EAAU;IAClH,MAAMsC,SAAS,GAAIC,GAAW,IAAK;MACjC,IAAI;QACF;QACA,MAAMC,SAAS,GAAG,KAAInU,MAAM,CAAD,CAAC,CAACoU,MAAM,EAACF,GAAG,CAAC,CAACG,GAAG,CAAC9C,WAAW,EAAEI,YAAY,CAAC;QACvE,OAAOwC,SAAS,CAAC5N,OAAO;MAC1B,CAAC,CAAC,OAAOsI,GAAQ,EAAE;QACjB,MAAM,IAAIzI,KAAK,CAAC,gCAAgC8N,GAAG,uBAAuB3C,WAAW,uBAAuBI,YAAY;AAChI,uBAAuB9C,GAAG,CAACoB,OAAO,EAAE,CAAC;MAC/B;IACF,CAAC;IAED,MAAMpD,MAAM,GAAG,IAAI,CAACJ,aAAa,CAAC,CAAC;IACnC,IAAI,CAACI,MAAM,EAAE;MACX,MAAMyH,gBAAgB,GAAG,CAAC,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC1L,QAAQ,CAAC2I,WAAW,CAAC;MACjG,OAAO+C,gBAAgB,GAAGL,SAAS,CAACM,6BAAmB,CAAC,GAAGA,6BAAmB;IAChF;IACA,IAAIC,MAAM,GAAGP,SAAS,CAACpH,MAAM,CAAC;IAC9B,IAAI6E,WAAW,KAAK,CAAC,EAAE,OAAO8C,MAAM;IACpC,KAAK,IAAItS,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGwP,WAAW,EAAExP,CAAC,IAAI,CAAC,EAAE;MACvCsS,MAAM,GAAGP,SAAS,CAACO,MAAM,CAAC;IAC5B;IACA,OAAOA,MAAM;EACf;EAEAnO,EAAEA,CAAA,EAAW;IACX,OAAO,IAAI,CAACzB,KAAK,GAAG,CAAC,IAAI,CAACA,KAAK,EAAE,IAAI,CAACD,IAAI,CAAC,CAAC8P,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC9P,IAAI;EACnE;;EAEA;AACF;AACA;EACE+P,OAAOA,CAAA,EAAU;IACf,OAAO,KAAIC,oBAAK,EAAC;MAAE/P,KAAK,EAAE,IAAI,CAACA,KAAK;MAAED,IAAI,EAAE,IAAI,CAACA;IAAK,CAAC,CAAC;EAC1D;EAEA8F,aAAaA,CAAA,EAAgB;IAC3B,IAAI,CAAC,IAAI,CAAC7F,KAAK,EAAE,MAAM,IAAIwB,KAAK,CAAC,0CAA0C,IAAI,CAACzB,IAAI,GAAG,CAAC;IACxF,OAAO,KAAIiQ,0BAAW,EAAC,IAAI,CAACF,OAAO,CAAC,CAAC,CAAC;EACxC;;EAEA;AACF;AACA;EACEG,wBAAwBA,CAAA,EAAU;IAChC,OAAO,KAAIF,oBAAK,EAAC;MAAE/P,KAAK,EAAE,IAAI,CAACA,KAAK;MAAED,IAAI,EAAE,IAAI,CAACA,IAAI;MAAE4B,OAAO,EAAE,IAAI,CAACuF,kCAAkC,CAAC,IAAI;IAAE,CAAC,CAAC;EAClH;EAEAgJ,8BAA8BA,CAAA,EAAgB;IAC5C,OAAOF,0BAAW,CAACG,UAAU,CAAC;MAC5BnQ,KAAK,EAAE,IAAI,CAACA,KAAK;MACjBD,IAAI,EAAE,IAAI,CAACA,IAAI;MACf4B,OAAO,EAAE,IAAI,CAACuF,kCAAkC,CAAC,IAAI;IACvD,CAAC,CAAC;EACJ;EAEAkJ,qBAAqBA,CAAA,EAAgB;IACnC,OAAOJ,0BAAW,CAACG,UAAU,CAAC;MAAEnQ,KAAK,EAAE,IAAI,CAACA,KAAK;MAAED,IAAI,EAAE,IAAI,CAACA,IAAI;MAAE4B,OAAO,EAAE,IAAI,CAAChB,IAAI,EAAEqB,QAAQ,CAAC;IAAE,CAAC,CAAC;EACvG;EAEAqO,iCAAiCA,CAAA,EAAgB;IAC/C,MAAM5O,EAAE,GAAG,IAAI,CAACyO,8BAA8B,CAAC,CAAC;IAChD,OAAOzO,EAAE,CAACE,OAAO,KAAKlC,YAAY,GAAGgC,EAAE,CAACgN,aAAa,CAACpM,SAAS,CAAC,GAAGZ,EAAE;EACvE;EAEA6O,QAAQA,CAAA,EAAG;IACT,SAASpQ,QAAQA,CAACqQ,IAAc,EAAE;MAChC,MAAMC,GAAG,GAAG,CAAC,CAAC;MACd,IAAA7R,iBAAO,EAAC4R,IAAI,EAAE,CAACjP,GAAG,EAAEK,OAAO,KAAK;QAC9B6O,GAAG,CAAC7O,OAAO,CAAC,GAAGL,GAAG,CAACU,QAAQ,CAAC,CAAC;MAC/B,CAAC,CAAC;MACF,OAAOwO,GAAG;IACZ;IAEA,MAAMC,eAAe,GAAG;MACtB1Q,IAAI,EAAE,IAAI,CAACA,IAAI;MACfC,KAAK,EAAE,IAAI,CAACA,KAAK;MACjBE,QAAQ,EAAEA,QAAQ,CAAC,IAAI,CAACA,QAAQ,CAAC;MACjCE,IAAI,EAAE,IAAI,CAACA,IAAI;MACfE,UAAU,EAAE,IAAI,CAACA,UAAU;MAC3BC,aAAa,EAAE,IAAI,CAACA,aAAa;MACjCmQ,OAAO,EAAE,IAAI,CAAChQ,UAAU;MACxBE,MAAM,EAAE,IAAI,CAACA,MAAM;MACnBC,aAAa,EAAE,IAAI,CAACA,aAAa,CAACyP,QAAQ,CAAC;IAC7C,CAAC;IACD;IACA,IAAI,IAAI,CAACjK,KAAK,EAAEoK,eAAe,CAACpK,KAAK,GAAG,IAAI,CAACA,KAAK;IAClD;IACA,IAAI,CAAC,IAAAY,iBAAO,EAAC,IAAI,CAACxG,KAAK,CAAC,EAAEgQ,eAAe,CAAChQ,KAAK,GAAG,IAAI,CAACA,KAAK;IAC5D;IACA,IAAI,CAAC,IAAAwG,iBAAO,EAAC,IAAI,CAAC9G,gBAAgB,CAAC,EAAEsQ,eAAe,CAACtQ,gBAAgB,GAAGD,QAAQ,CAAC,IAAI,CAACC,gBAAgB,CAAC;IACvG,MAAMwQ,OAAO,GAAG,IAAI,CAAC5O,UAAU,CAAC,CAAC;IACjC;IACA,IAAI4O,OAAO,EAAEF,eAAe,CAAC9P,IAAI,GAAGgQ,OAAO;IAE3C,OAAOF,eAAe;EACxB;EAEA,MAAMG,WAAWA,CAACnI,UAAkB,EAAED,UAAsB,EAAEjE,MAAM,GAAG,IAAI,EAAoB;IAC7F,MAAM8D,UAAU,GAAG,IAAI,CAAC3G,MAAM,CAAC+G,UAAU,CAAC;IAC1C,IAAI,CAACJ,UAAU,EAAE,MAAM,KAAIwI,0BAAe,EAACpI,UAAU,EAAE,IAAI,CAAChH,EAAE,CAAC,CAAC,CAAC;IACjE,MAAME,OAAO,GAAG,MAAM6G,UAAU,CAAC2B,IAAI,CAAC9B,UAAU,EAAE,KAAK,CAAC;IACxD,IAAI,CAAC1G,OAAO,IAAI4C,MAAM,EAAE,MAAM,KAAIuM,8BAAmB,EAACrI,UAAU,EAAE,IAAI,CAAChH,EAAE,CAAC,CAAC,CAAC;IAC5E,OAAOE,OAAO;EAChB;EAEAgH,eAAeA,CAAChH,OAAe,EAAE6G,UAAsB,EAAEjE,MAAM,GAAG,IAAI,EAAW;IAC/E,MAAM8D,UAAU,GAAG,IAAI,CAAC3G,MAAM,CAACC,OAAO,CAAC;IACvC,IAAI,CAAC0G,UAAU,EAAE,MAAM,KAAIwI,0BAAe,EAAClP,OAAO,EAAE,IAAI,CAACF,EAAE,CAAC,CAAC,CAAC;IAC9D;IACA,OAAO4G,UAAU,CAAC0I,QAAQ,CAACvI,UAAU,EAAEjE,MAAM,CAAC;EAChD;EAEA,MAAMyM,sBAAsBA,CAC1B/N,IAAgB,EAChB/C,QAAkB,EAClB+Q,6BAA6B,GAAG,KAAK,EACrCxM,WAAyB,EACF;IACvB,MAAMyM,oBAA2B,GAAG,EAAE;IACtC,MAAMC,aAAoB,GAAG,EAAE;IAC/B,MAAMC,iCAAwC,GAAG,EAAE;IACnD,MAAMC,sBAAsB,GAAG,MAAM,IAAI,CAACC,oBAAoB,CAACrO,IAAI,EAAEwB,WAAW,CAAC;IACjF,MAAM8M,oBAAoB,GAAGF,sBAAsB,CAAC5N,GAAG,CAAEC,CAAC,IAAM,IAAA9B,yBAAK,EAAC8B,CAAC,CAAC,GAAI,IAAI,CAAChC,MAAM,CAACgC,CAAC,CAAC,CAASC,IAAI,GAAGD,CAAE,CAAC;IAC7G,MAAM8N,YAAY,GAAGtR,QAAQ,CAACuD,GAAG,CAAE9B,OAAO,IAAK,IAAI,CAACD,MAAM,CAACC,OAAO,CAAQ,CAAC;IAC3EuP,oBAAoB,CAAC5S,IAAI,CAAC,GAAGkT,YAAY,CAAC;IAE1C,MAAMC,eAA0B,GAAG,MAAMvF,OAAO,CAACC,GAAG,CAClDqF,YAAY,CAAC/N,GAAG,CAAE4E,UAAU,IAAK,IAAI,CAACuI,WAAW,CAACvI,UAAU,CAACrG,QAAQ,CAAC,CAAC,EAAEiB,IAAI,CAAC,CAChF,CAAC;IACDwO,eAAe,CAAC9S,OAAO,CAAE+S,aAAa,IAAK;MACzC,MAAMjF,IAAI,GAAGiF,aAAa,CAACC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC;MACxDT,oBAAoB,CAAC5S,IAAI,CAAC,GAAGmO,IAAI,CAAC;MAClC,MAAMmF,kBAAkB,GAAG,IAAAC,kCAAqB,EAACH,aAAa,CAACrH,UAAU,CAAC;MAC1EkH,oBAAoB,CAACvN,QAAQ,CAAC0N,aAAa,CAAC/N,IAAI,CAAC,CAAC,CAAC3B,QAAQ,CAAC,CAAC,CAAC,GAC1DmP,aAAa,CAAC7S,IAAI,CAAC,GAAGsT,kBAAkB,CAAC,GACzCR,iCAAiC,CAAC9S,IAAI,CAAC,GAAGsT,kBAAkB,CAAC;IACnE,CAAC,CAAC;IACF,MAAME,UAAwB,GAAG,EAAE;IACnC,IAAI;MACF,MAAMC,MAAM,GAAG,MAAM9O,IAAI,CAAC+O,WAAW,CAACd,oBAAoB,CAAC;MAC3DY,UAAU,CAACxT,IAAI,CAAC,GAAGyT,MAAM,CAAC;IAC5B,CAAC,CAAC,OAAO9H,GAAQ,EAAE;MACjB,IAAIA,GAAG,CAACgI,IAAI,KAAK,QAAQ,EAAE;QACzB,MAAM,IAAIzQ,KAAK,CAAC,kCAAkCyI,GAAG,CAACiI,IAAI;AAClE,mBAAmB,IAAI,CAACzQ,EAAE,CAAC,CAAC,gBAAgBvB,QAAQ,CAAC2P,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;MAC5D;MACA,MAAM5F,GAAG;IACX;IACA,IAAI;MACF,MAAM8H,MAAM,GAAGd,6BAA6B,GACxC,MAAMhO,IAAI,CAAC+O,WAAW,CAACb,aAAa,CAAC,GACrC,MAAMlO,IAAI,CAACkP,wBAAwB,CAAChB,aAAa,CAAC;MACtDW,UAAU,CAACxT,IAAI,CAAC,GAAGyT,MAAM,CAAC;MAC1B;MACA;MACA;MACA,MAAMK,uBAAuB,GAAG,MAAMnP,IAAI,CAACkP,wBAAwB,CAACf,iCAAiC,CAAC;MACtGU,UAAU,CAACxT,IAAI,CAAC,GAAG8T,uBAAuB,CAAC;IAC7C,CAAC,CAAC,OAAOnI,GAAQ,EAAE;MACjB,IAAIA,GAAG,CAACgI,IAAI,KAAK,QAAQ,EAAE;QACzB,MAAM,IAAIzQ,KAAK,CAAC,2CAA2CyI,GAAG,CAACiI,IAAI;AAC3E,mBAAmB,IAAI,CAACzQ,EAAE,CAAC,CAAC,gBAAgBvB,QAAQ,CAAC2P,IAAI,CAAC,IAAI,CAAC;AAC/D,8FAA8F,CAAC;MACzF;MACA,MAAM5F,GAAG;IACX;IACA,OAAO6H,UAAU;EACnB;EAEA,MAAMO,cAAcA,CAACpP,IAAgB,EAA6B;IAChE,IAAI;MACF,MAAM,CAACqP,YAAY,EAAEvJ,OAAO,CAAC,GAAG,MAAMmD,OAAO,CAACC,GAAG,CAAC,CAAC,IAAI,CAACoG,KAAK,CAACtP,IAAI,CAAC,EAAE,IAAI,CAACuP,UAAU,CAACvP,IAAI,CAAC,CAAC,CAAC;MAC5F,OAAO,KAAIwP,2BAAgB,EACzBH,YAAY,EACZvJ,OAAO,CAACtF,GAAG,CAAEpG,CAAC,IAAKA,CAAC,CAACqV,MAAM,CAC7B,CAAC;IACH,CAAC,CAAC,OAAOzI,GAAQ,EAAE;MACjB,IAAIA,GAAG,CAACgI,IAAI,KAAK,QAAQ,EAAE;QACzB,MAAM,IAAIzQ,KAAK,CACb,wBAAwB,IAAI,CAACC,EAAE,CAAC,CAAC,sBAAsBwI,GAAG,CAACiI,IAAI,yCACjE,CAAC;MACH;MACA,MAAMjI,GAAG;IACX;EACF;;EAEA;AACF;AACA;EACE0I,aAAaA,CAAChR,OAAe,EAAO;IAClC,MAAMiR,SAAS,GAAG,IAAI,CAAClR,MAAM,CAACC,OAAO,CAAC;IACtC,IAAI,CAACiR,SAAS,EAAE,MAAM,IAAIpR,KAAK,CAAC,wCAAwCG,OAAO,EAAE,CAAC;IAClF,OAAO,IAAI,CAACzB,QAAQ,CAACyB,OAAO,CAAC;IAC7B,IAAI,IAAI,CAAClB,KAAK,CAACP,QAAQ,IAAI,IAAI,CAACO,KAAK,CAACP,QAAQ,CAACyB,OAAO,CAAC,EAAE,OAAO,IAAI,CAAClB,KAAK,CAACP,QAAQ,CAACyB,OAAO,CAAC;IAC5F,OAAOiR,SAAS;EAClB;EAEAC,kBAAkBA,CAACpK,UAAmB,EAAoB;IACxD,MAAMqK,aAAa,GAAG,IAAAC,iCAAa,EAACtK,UAAU,CAAC;IAC/C,MAAM2D,UAAU,GAAG0G,aAAa,CAAC7K,MAAM,GACnC,IAAI,CAACf,kCAAkC,CAAC,IAAI,CAAC,GAC5C4L,aAAa,CAAC1G,UAAqB;IACxC,IAAIA,UAAU,KAAK3M,YAAY,EAAE;MAC/B,MAAM,KAAIuT,0BAAe,EAAC,IAAI,CAACvR,EAAE,CAAC,CAAC,CAAC;IACtC;IACA,IAAI,IAAAG,yBAAK,EAACwK,UAAU,CAAC,IAAI,CAAC,IAAI,CAACjJ,qBAAqB,CAACiJ,UAAU,CAAC,EAAE;MAChE,MAAM,KAAI3E,oBAAQ,EAChB,eAAe2E,UAAU,QAAQ,IAAI,CAAC3K,EAAE,CAAC,CAAC,uBAAuB,IAAI,CAACqB,2BAA2B,CAAC,CAAC,CAAC+M,IAAI,CACtG,IACF,CAAC,mBACH,CAAC;IACH;IACA,OAAO,KAAIoD,2BAAgB,EAAC,IAAI,EAAE7G,UAAU,CAAC;EAC/C;;EAEA;AACF;AACA;EACE,MAAM8G,YAAYA,CAACjQ,IAAgB,EAAEkQ,eAAwB,EAAE;IAC7D;IACA,IAAI,IAAI,CAAC7S,UAAU,EAAE;MACnB,OAAO,IAAI;IACb;IACA,MAAMK,IAAI,GAAG,IAAI,CAACuB,uBAAuB,CAAC,CAAC;IAC3C,IAAI,CAACvB,IAAI,EAAE;MACT;MACA;MACA,OAAO,KAAK;IACd;IACA,MAAMuJ,WAAW,GAAI,MAAMjH,IAAI,CAACkH,IAAI,CAACxJ,IAAI,CAAa;IACtD,IAAI,CAACuJ,WAAW,EAAE;MAChB;MACA,OAAO,IAAI;IACb;IACA,MAAMY,iBAAiB,GAAGZ,WAAW,CAACG,UAAU,CAACC,iBAAiB,CAACC,oBAAU,CAACQ,WAAW,CAAC;IAC1F,IAAI,CAACD,iBAAiB,EAAE;MACtB,OAAO,KAAK;IACd;IACA,IAAIA,iBAAiB,CAACJ,MAAM,CAAC0I,SAAS,EAAE;MACtC,OAAO,IAAI;IACb;IACA,IAAID,eAAe,IAAIrI,iBAAiB,CAACJ,MAAM,CAACC,KAAK,EAAE;MACrD,MAAMtJ,GAAG,GAAG,IAAI,CAACkL,MAAM,CAAC4G,eAAe,CAAC;MACxC,IAAI,CAAC9R,GAAG,EAAE,OAAO,KAAK,CAAC,CAAC;MACxB,OAAOjG,MAAM,CAAD,CAAC,CAACwQ,SAAS,CAACvK,GAAG,EAAEyJ,iBAAiB,CAACJ,MAAM,CAACC,KAAK,CAAC;IAC9D;IACA,OAAO,KAAK;EACd;;EAEA;AACF;AACA;AACA;EACE,MAAM0I,UAAUA,CAACpQ,IAAgB,EAA2B;IAC1D,MAAMtC,IAAI,GAAG,IAAI,CAACuB,uBAAuB,CAAC,CAAC;IAC3C,IAAI,CAACvB,IAAI,EAAE;MACT;MACA,OAAO,KAAK;IACd;IACA,MAAMuJ,WAAW,GAAI,MAAMjH,IAAI,CAACkH,IAAI,CAACxJ,IAAI,CAAa;IACtD,IAAI,CAACuJ,WAAW,EAAE;MAChB;MACA,OAAO,IAAI;IACb;IACA,MAAMoJ,iBAAiB,GAAGpJ,WAAW,CAACG,UAAU,CAACC,iBAAiB,CAACC,oBAAU,CAACgJ,WAAW,CAAC;IAC1F,IAAI,CAACD,iBAAiB,EAAE;MACtB,OAAO,KAAK;IACd;IACA,OAAO9Q,OAAO,CAAC8Q,iBAAiB,CAAC5I,MAAM,CAAC8I,QAAQ,CAAC;EACnD;EAEA,MAAM1E,SAASA,CAAC7L,IAAgB,EAAEkQ,eAAwB,EAA2B;IACnF,MAAMlR,OAAO,GAAGA,CAAA,KAAM;MACpB,IAAI,CAAC,IAAI,CAACE,aAAa,EAAE,OAAO,IAAI,CAACF,OAAO,CAAC,CAAC;MAC9C;MACA,IAAI,CAACkR,eAAe,EAAE,OAAO,IAAI,CAAChR,aAAa;MAC/C;MACA,IAAIgR,eAAe,KAAK,IAAI,CAAChR,aAAa,CAACH,QAAQ,CAAC,CAAC,EAAE,OAAO,IAAI,CAACG,aAAa;MAChF,OAAO,IAAI,CAACF,OAAO,CAAC,CAAC;IACvB,CAAC;IACD,MAAMtB,IAAI,GAAGsB,OAAO,CAAC,CAAC;IACtB,IAAI,CAACtB,IAAI,EAAE;MACT;MACA,OAAO,KAAK;IACd;IACA,MAAMuJ,WAAW,GAAI,MAAMjH,IAAI,CAACkH,IAAI,CAACxJ,IAAI,CAAa;IACtD,IAAI,CAACuJ,WAAW,EAAE;MAChB;MACA,OAAO,IAAI;IACb;IACA,MAAME,YAAY,GAAGF,WAAW,CAACG,UAAU,CAACC,iBAAiB,CAACC,oBAAU,CAACC,MAAM,CAAC;IAChF,IAAI,CAACJ,YAAY,EAAE;MACjB,OAAO,KAAK;IACd;IACA,IAAIA,YAAY,CAACM,MAAM,CAAC+I,OAAO,EAAE;MAC/B,OAAO,IAAI;IACb;IACA,IAAIN,eAAe,EAAE;MACnB,IAAI/I,YAAY,CAACM,MAAM,CAACC,KAAK,EAAE;QAC7B,MAAMtJ,GAAG,GAAG,IAAI,CAACkL,MAAM,CAAC4G,eAAe,CAAC;QACxC,IAAI9R,GAAG,EAAE,OAAOjG,MAAM,CAAD,CAAC,CAACwQ,SAAS,CAACvK,GAAG,EAAE+I,YAAY,CAACM,MAAM,CAACC,KAAK,CAAC;MAClE;MACA,IAAIP,YAAY,CAACM,MAAM,CAACG,KAAK,IAAI6I,KAAK,CAACC,OAAO,CAACvJ,YAAY,CAACM,MAAM,CAACG,KAAK,CAAC,EAAE;QACzE,OAAOT,YAAY,CAACM,MAAM,CAACG,KAAK,CAAC7G,QAAQ,CAACmP,eAAe,CAAC;MAC5D;IACF;IACA,OAAO,KAAK;EACd;EAEA,MAAMS,cAAcA,CAAC3Q,IAAgB,EAAqB;IACxD,MAAMtC,IAAI,GAAG,IAAI,CAACuB,uBAAuB,CAAC,CAAC;IAC3C,IAAI,CAACvB,IAAI,EAAE;MACT;MACA,OAAO,EAAE;IACX;IACA,MAAMgB,OAAO,GAAI,MAAMsB,IAAI,CAACkH,IAAI,CAACxJ,IAAI,CAAa;IAClD,IAAI,CAACgB,OAAO,EAAE;MACZ;MACA,OAAO,EAAE;IACX;IACA,MAAMkS,WAAW,GAAGlS,OAAO,CAAC0I,UAAU,CAACC,iBAAiB,CAACC,oBAAU,CAACuJ,KAAK,CAAC;IAC1E,IAAI,CAACD,WAAW,IAAI,CAACA,WAAW,CAACnJ,MAAM,CAACqJ,MAAM,EAAE;MAC9C,OAAO,EAAE;IACX;IACA,OAAOjW,MAAM,CAACI,IAAI,CAAC2V,WAAW,CAACnJ,MAAM,CAACqJ,MAAM,CAAC;EAC/C;EACA;AACF;AACA;AACA;EACE,MAAM1H,mBAAmBA,CAAC5D,UAAkB,EAAEuL,SAAiB,EAAExL,UAAsB,EAA8B;IACnHa,iBAAM,CAAC4K,KAAK,CAAC,+BAA+B,IAAI,CAACxS,EAAE,CAAC,CAAC,cAAcgH,UAAU,uBAAuB,CAAC;IACrG,IAAIyL,gBAAgB,GAAG,IAAI,CAACrB,kBAAkB,CAACpK,UAAU,CAAC;IAC1D,MAAM9G,OAAgB,GAAG,MAAMuS,gBAAgB,CAACC,UAAU,CAAC3L,UAAU,CAAC;IACtE;IACA,IACEC,UAAU,KAAK2L,kCAAc,IAC7B,CAAC,IAAAxS,yBAAK,EAAC6G,UAAU,CAAC,IAClB,CAAC,IAAA4L,0BAAM,EAAC5L,UAAU,CAAC,IACnB9G,OAAO,CAACgC,IAAI,CAAC,CAAC,CAAC3B,QAAQ,CAAC,CAAC,KAAKyG,UAAU,EACxC;MACAyL,gBAAgB,GAAG,KAAIjB,2BAAgB,EAAC,IAAI,EAAEtR,OAAO,CAACgC,IAAI,CAAC,CAAC,CAAC3B,QAAQ,CAAC,CAAC,CAAC;IAC1E;IACA,MAAMsS,eAAe,GAAGJ,gBAAgB,CAACvS,OAAO;IAChD,MAAM4S,gBAAgB,GAAIC,SAAS,IAAK,MAAOC,IAAI,IAAK;MACtD,MAAMC,KAAK,GAAGD,IAAI,CAACA,IAAI,CAACtK,IAAI,CAAC3B,UAAU,CAAC;MACxC,MAAMmM,OAAe,GAAG,MAAMD,KAAK;MACnC,IAAI,CAACC,OAAO,EACV,MAAM,KAAIlN,oBAAQ,EAChB,uBAAuBgN,IAAI,CAACG,YAAY,UAAUH,IAAI,CAACA,IAAI,CAACzS,QAAQ,CAAC,CAAC,uBAAuB,IAAI,CAACP,EAAE,CAAC,CAAC,IAAI6S,eAAe;AACnI;AACA;AACA,aAAa,IAAI,CAAC7S,EAAE,CAAC,CAAC,IAAI6S,eAAe,0BACjC,CAAC;MACH,OAAO,IAAIE,SAAS,CAAC;QAAEK,IAAI,EAAE,GAAG;QAAE3C,IAAI,EAAEuC,IAAI,CAACG,YAAY;QAAEE,QAAQ,EAAEH,OAAO,CAACG,QAAQ;QAAEC,IAAI,EAAEN,IAAI,CAACM;MAAK,CAAC,CAAC;IAC3G,CAAC;IACD,MAAMC,MAAM,GAAGrT,OAAO,CAACsT,KAAK,GAAG/I,OAAO,CAACC,GAAG,CAACxK,OAAO,CAACsT,KAAK,CAACxR,GAAG,CAAC8Q,gBAAgB,CAACW,uBAAU,CAAC,CAAC,CAAC,GAAG,IAAI;IAClG;IACA,MAAMC,UAAU,GAAGnB,SAAS,GAAGoB,oBAAS,CAACC,aAAa,CAACrB,SAAS,CAAC,CAAC7J,IAAI,CAAC3B,UAAU,CAAC,GAAG0D,OAAO,CAACoJ,OAAO,CAAC,CAAC;IACtG,MAAMlK,GAAG,GAAGzJ,OAAO,CAACyJ,GAAG,IAAI,IAAI;IAC/B,MAAM,CAAC6J,KAAK,EAAEM,SAAS,CAAC,GAAG,MAAMrJ,OAAO,CAACC,GAAG,CAAC,CAAC6I,MAAM,EAAEG,UAAU,CAAC,CAAC;IAElE,MAAM9K,UAAU,GAAG1I,OAAO,CAAC0I,UAAU,CAACmL,KAAK,CAAC,CAAC;IAC7C;IACA;IACA;IACA;IACA;IACA,MAAMC,iBAAiB,GAAG,KAAIC,4BAAiB,EAAC;MAC9C3V,IAAI,EAAE,IAAI,CAACA,IAAI;MACf4B,OAAO,EAAEuS,gBAAgB,CAACvS,OAAO;MACjC3B,KAAK,EAAE,IAAI,CAAC6F,aAAa,CAAC,CAAC,CAAC7J,OAAO,CAACgE,KAAK;MACzC2V,YAAY,EAAE,IAAI,CAAC3V,KAAK;MACxBI,IAAI,EAAE,IAAI,CAACA,IAAI;MACfG,aAAa,EAAE,IAAI,CAACA,aAAa;MACjCqV,QAAQ,EAAEjU,OAAO,CAACiU,QAAQ;MAC1BC,YAAY,EAAE,IAAI,CAACC,2BAA2B,CAACnU,OAAO,CAACkU,YAAY,EAAExL,UAAU,CAAC;MAChF0L,eAAe,EAAE,IAAI,CAACD,2BAA2B,CAACnU,OAAO,CAACoU,eAAe,EAAE1L,UAAU,CAAC;MACtF;MACA2L,qBAAqB,EAAEtM,8BAAe,CAACC,SAAS,CAAChI,OAAO,CAACqU,qBAAqB,CAAC;MAC/EC,mBAAmB,EAAE,IAAAT,eAAK,EAAC7T,OAAO,CAACsU,mBAAmB,CAAC;MACvDC,sBAAsB,EAAE,IAAAV,eAAK,EAAC7T,OAAO,CAACuU,sBAAsB,CAAC;MAC7DC,uBAAuB,EAAE,IAAAX,eAAK,EAAC7T,OAAO,CAACwU,uBAAuB,CAAC;MAC/D;MACAlB,KAAK;MACLmB,IAAI,EAAEzU,OAAO,CAACyU,IAAI;MAClB;MACAC,OAAO,EAAEd,SAAS,GAAGe,oBAAO,CAACC,WAAW,CAAChB,SAAS,CAACc,OAAO,CAAC,GAAGhU,SAAS;MAAE;MACzE+I,GAAG;MACHoL,SAAS,EAAEC,6BAAkB,CAACC,aAAa,CAAC/U,OAAO,CAAC6U,SAAS,CAAC;MAC9DG,uBAAuB,EAAE,IAAAnB,eAAK,EAAC7T,OAAO,CAACgV,uBAAuB,CAAC;MAC/DrW,UAAU,EAAE,IAAI,CAACA,UAAU;MAC3BmT,OAAO,EAAE9R,OAAO,CAACmN,SAAS,CAAC,CAAC;MAC5BpO,UAAU,EAAE,IAAA8U,eAAK,EAAC,IAAI,CAAC9U,UAAU,CAAC;MAClCE,MAAM,EAAEe,OAAO,CAACf,MAAM;MACtByJ,UAAU;MACVuM,WAAW,EAAEjV,OAAO,CAACiV;IACvB,CAAC,CAAC;IAEF,OAAOnB,iBAAiB;EAC1B;EAEQK,2BAA2BA,CAACD,YAA0B,EAAExL,UAA6B,EAAgB;IAC3G,MAAMwM,MAAM,GAAGhB,YAAY,CAACiB,QAAQ,CAAC,CAAC;IACtC,MAAMC,gBAAgB,GAAG1M,UAAU,CAAChG,IAAI,CAAE2S,GAAG,IAAKA,GAAG,CAACjX,IAAI,KAAK,0CAA0C,CAAC;IAC1G,IAAI,CAACgX,gBAAgB,EAAE,OAAOF,MAAM;IACpCA,MAAM,CAAClY,OAAO,CAAEsY,UAAU,IAAK;MAC7B,IAAIA,UAAU,CAACC,WAAW,EAAE;MAC5B,MAAMC,YAAY,GAAGJ,gBAAgB,CAAC9b,IAAI,EAAE4a,YAAY,EAAExR,IAAI,CAAE+S,KAAK,IAAK;QACxE,OAAOH,UAAU,CAACxV,EAAE,CAACO,QAAQ,CAAC,CAAC,KAAKoV,KAAK,CAAC3V,EAAE;MAC9C,CAAC,CAAC;MACF,IAAI0V,YAAY,EAAE;QAChBF,UAAU,CAACC,WAAW,GAAGC,YAAY,CAACD,WAAW;MACnD;IACF,CAAC,CAAC;IACF,OAAOL,MAAM;EACf;;EAEA;EACApK,IAAIA,CAAA,EAAU;IACZ,MAAMvM,QAAQ,GAAGpC,MAAM,CAACqD,MAAM,CAAC,IAAI,CAAC4B,uBAAuB,CAAC;IAC5D,IAAI,IAAI,CAACpC,IAAI,EAAET,QAAQ,CAAC5B,IAAI,CAAC,IAAI,CAACqC,IAAI,CAAC;IACvC,OAAOT,QAAQ;EACjB;EAEAmX,wBAAwBA,CAACC,YAAoB,EAAQ;IACnDjO,iBAAM,CAAC4K,KAAK,CAAC,gCAAgC,IAAI,CAACtQ,IAAI,CAAC,CAAC,CAACA,IAAI,IAAI,IAAI,CAAClC,EAAE,CAAC,CAAC,EAAE,CAAC;IAC7E,MAAMqF,SAAS,GAAGnH,SAAS,CAAC4X,KAAK,CAACD,YAAY,CAAC;IAC/CxQ,SAAS,CAAC0Q,QAAQ,CAAC,CAAC;EACtB;EAEAC,QAAQA,CAACC,MAAe,EAAE;IACxB,MAAMC,IAAI,GAAG,IAAAC,2BAAgB,EAACF,MAAM,CAAC;IACrC,MAAMlH,GAAG,GAAG,IAAI,CAACF,QAAQ,CAAC,CAAC;IAC3B,MAAMuH,GAAG,GAAGC,IAAI,CAACC,SAAS,CAACvH,GAAG,EAAE,GAAGmH,IAAI,CAAC;IACxC,IAAI,IAAI,CAACK,qBAAqB,EAAE,IAAI,CAACX,wBAAwB,CAACQ,GAAG,CAAC;IAClE,OAAOI,MAAM,CAACtS,IAAI,CAACkS,GAAG,CAAC;EACzB;;EAEA;AACF;AACA;EACEK,cAAcA,CAAA,EAAG;IACf,IAAI,CAAC7R,KAAK,GAAG,KAAK,CAAC,CAAC;IACpB,IAAI,CAAC5F,KAAK,GAAG,CAAC,CAAC;EACjB;EAEA2O,kBAAkBA,CAACzN,OAAe,EAAE;IAClC,IAAI,CAAC,IAAI,CAAClB,KAAK,CAACP,QAAQ,EAAE,IAAI,CAACO,KAAK,GAAG;MAAEP,QAAQ,EAAE,CAAC;IAAE,CAAC;IACvD;IACA,IAAI,CAAC,IAAI,CAACO,KAAK,CAACP,QAAQ,CAACyB,OAAO,CAAC,EAAE,IAAI,CAAClB,KAAK,CAACP,QAAQ,CAACyB,OAAO,CAAC,GAAG,CAAC,CAAC;IACpE;IACA,IAAI,CAAClB,KAAK,CAACP,QAAQ,CAACyB,OAAO,CAAC,CAAC0E,KAAK,GAAG,IAAI;EAC3C;;EAEA;AACF;AACA;AACA;EACEE,gBAAgBA,CAAA,EAAa;IAC3B,IAAI,IAAAU,iBAAO,EAAC,IAAI,CAACxG,KAAK,CAAC,IAAI,IAAAwG,iBAAO,EAAC,IAAI,CAACxG,KAAK,CAACP,QAAQ,CAAC,EAAE,OAAO,EAAE;IAClE;IACA,OAAOpC,MAAM,CAACI,IAAI,CAAC,IAAI,CAACuC,KAAK,CAACP,QAAQ,CAAC,CAAC9B,MAAM,CAAEuD,OAAO,IAAK,IAAI,CAAClB,KAAK,CAACP,QAAQ,CAACyB,OAAO,CAAC,CAAC0E,KAAK,CAAC;EACjG;EAEA8R,WAAWA,CAAC9W,GAAW,EAAW;IAChC,MAAM+W,aAAa,GAAG,IAAI,CAAC7R,gBAAgB,CAAC,CAAC;IAC7C,OAAO6R,aAAa,CAACpU,QAAQ,CAAC3C,GAAG,CAAC;EACpC;EAEA,MAAMiQ,oBAAoBA,CAACrO,IAAgB,EAAEwB,WAAyB,EAAEa,IAAW,EAAqB;IACtG,MAAM+S,WAAW,GAAG,MAAM,IAAI,CAACC,cAAc,CAACrV,IAAI,EAAEwB,WAAW,EAAEa,IAAI,CAAC;IACtE,IAAI,CAAC+S,WAAW,CAAC3Z,MAAM,EAAE,OAAO,EAAE;IAClC,OAAO,IAAI,CAAC8N,2BAA2B,CAAC6L,WAAW,CAAC,CAACxV,OAAO,CAAC,CAAC,CAAC,CAAC;EAClE;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAMyV,cAAcA,CAACrV,IAAgB,EAAEwB,WAAyB,EAAEa,IAAW,EAAkB;IAC7F,MAAM,IAAI,CAAChB,cAAc,CAACrB,IAAI,EAAEZ,SAAS,EAAEA,SAAS,EAAEoC,WAAW,CAAC;IAClE,MAAMC,WAAW,GAAG,IAAI,CAACM,cAAc,CAAC,CAAC;IACzC,MAAMqT,WAAW,GAAG3T,WAAW,CAAC6T,iBAAiB;;IAEjD;IACA;IACA,MAAMC,eAAe,GAAG,IAAI,CAAC3X,aAAa,IAAI,IAAI,CAACA,aAAa,CAAC4X,WAAW,CAAC,CAAC,CAAC/Z,MAAM,GAAG,CAAC;IACzF,IAAI8Z,eAAe,IAAI,IAAI,CAAC7X,IAAI,EAAE;MAChC;MACA,MAAM+X,mBAAmB,GAAG,MAAM,IAAA1T,4BAAc,EAAC;QAC/C/B,IAAI;QACJM,cAAc,EAAE,IAAI;QACpB0B,UAAU,EAAE,CAAC,IAAI,CAACL,MAAM,GAAG,IAAI,CAACC,8BAA8B,GAAG,IAAI,CAACF,UAAU,KAAK,IAAI;QACzFO,UAAU,EAAE,IAAI,CAACvE,IAAI;QACrB4D,MAAM,EAAE;MACV,CAAC,CAAC;MACF;MACA,KAAK,MAAMZ,IAAI,IAAI+U,mBAAmB,CAACH,iBAAiB,EAAE;QACxD,IAAI,CAACF,WAAW,CAAChU,IAAI,CAAEsU,CAAC,IAAKA,CAAC,CAAC5R,OAAO,CAACpD,IAAI,CAAC,CAAC,EAAE;UAC7C0U,WAAW,CAAC/Z,IAAI,CAACqF,IAAI,CAAC;QACxB;MACF;IACF;IAEA,IAAI,CAAC0U,WAAW,CAAC3Z,MAAM,EAAE,OAAO,EAAE;IAClC,MAAMka,QAAQ,GAAGtT,IAAI,GAAG,MAAM,IAAI,CAACuT,kBAAkB,CAAC5V,IAAI,EAAEqC,IAAI,EAAE+S,WAAW,CAAC,GAAGA,WAAW;IAC5F,OAAOO,QAAQ,CAAC/V,OAAO,CAAC,CAAC,CAAC,CAAC;EAC7B;EAEA,MAAcgW,kBAAkBA,CAAC5V,IAAgB,EAAEqC,IAAU,EAAEmH,IAAW,EAAkB;IAC1F,MAAMqM,QAAQ,GAAGxT,IAAI,CAACY,kCAAkC,CAAC,IAAI,CAACL,aAAa,CAAC,CAAC,CAAC;IAC9E,MAAMkT,QAAQ,GAAG,MAAM,IAAAC,0BAAQ,EAC7BvM,IAAI,EACJ,MAAOnL,GAAG,IAAK;MACb,IAAIwX,QAAQ,IAAIxX,GAAG,CAACyF,OAAO,CAAC+R,QAAQ,CAAC,EAAE,OAAOxX,GAAG;MACjD,MAAMkP,GAAG,GAAI,MAAMlP,GAAG,CAAC6I,IAAI,CAAClH,IAAI,CAAyB;MACzD,IAAI,CAACuN,GAAG,EAAE,OAAO,IAAI;MACrB,MAAMyI,YAAY,GAAGzW,OAAO,CAACgO,GAAG,CAAC0I,YAAY,CAAC;MAC9C,MAAMC,gBAAgB,GAAG3W,OAAO,CAACgO,GAAG,CAAC4I,QAAQ,CAAC,IAAI5W,OAAO,CAACgO,GAAG,CAAC6I,SAAS,CAAC;MACxE,IAAI,CAACJ,YAAY,IAAI,CAACE,gBAAgB,EAAE,OAAO,IAAI;MACnD,OAAO7X,GAAG;IACZ,CAAC,EACD;MAAEgY,WAAW,EAAE,IAAAC,2CAAyB,EAAC;IAAE,CAC7C,CAAC;IACD,OAAOR,QAAQ,CAAC3a,MAAM,CAAEkD,GAAG,IAAiBA,GAAG,KAAK,IAAI,CAAC;EAC3D;;EAEA;AACF;AACA;AACA;EACEkY,iCAAiCA,CAAA,EAAY;IAC3C,OAAOhX,OAAO,CAAC,IAAI,CAAC+D,gBAAgB,CAAC,CAAC,CAAC7H,MAAM,CAAC;EAChD;;EAEA;AACF;AACA;AACA;EACE,MAAM+a,gBAAgBA,CAACxW,IAAgB,EAAEqC,IAAkB,EAAEb,WAAyB,EAAoB;IACxG,IAAIa,IAAI,EAAE,MAAM,IAAI,CAACD,2BAA2B,CAACpC,IAAI,EAAEqC,IAAI,CAAC;IAC5D,MAAM,IAAI,CAAChB,cAAc,CAACrB,IAAI,EAAEZ,SAAS,EAAEA,SAAS,EAAEoC,WAAW,CAAC;IAClE,MAAMC,WAAW,GAAG,IAAI,CAACM,cAAc,CAAC,CAAC;IACzC,OAAON,WAAW,CAACgV,aAAa,CAAC,CAAC;EACpC;EAEA,MAAMC,iBAAiBA,CAAC1W,IAAgB,EAA2B;IACjE,MAAM2W,mBAAmB,GAAGC,yBAAc,CAACC,MAAM,CAAC,IAAI,CAAC/Z,IAAI,EAAE,IAAI,CAACC,KAAK,CAAC;IACxE,MAAM0H,cAAc,GAAG,MAAMzE,IAAI,CAACkH,IAAI,CAACyP,mBAAmB,CAACjW,IAAI,CAAC,CAAC,CAAC;IAClE,OAAQ+D,cAAc,IAAIkS,mBAAmB;EAC/C;EAEA,MAAMjS,4BAA4BA,CAAC1E,IAAgB,EAAEtC,IAAS,EAA2B;IACvF,MAAM+G,cAAc,GAAG,MAAM,IAAI,CAACiS,iBAAiB,CAAC1W,IAAI,CAAC;IACzD,MAAM;MAAEgH;IAAI,CAAC,GAAG,MAAM,IAAI,CAAC8P,yCAAyC,CAAC9W,IAAI,EAAEyE,cAAc,EAAE/G,IAAI,CAAC;IAChG,IAAIsJ,GAAG,EAAE;MACPZ,iBAAM,CAACH,KAAK,CAAC,uBAAuBe,GAAG,CAACoB,OAAO,iBAAiB,EAAE,IAAI7J,KAAK,CAACyI,GAAG,CAACoB,OAAO,CAAC,CAAC;MACzF,MAAMpB,GAAG;IACX;IACA,OAAOvC,cAAc;EACvB;;EAEA;AACF;AACA;AACA;AACA;EACE,MAAMsS,2BAA2BA,CAAC/W,IAAgB,EAAE/C,QAAmB,EAAuC;IAC5G,MAAMwH,cAAc,GAAG,MAAM,IAAI,CAACiS,iBAAiB,CAAC1W,IAAI,CAAC;IACzD,MAAMgX,UAAU,GAAG/Z,QAAQ,CAAC0D,IAAI,CAAEjC,OAAO,IAAK;MAC5C,MAAMuY,WAAW,GAAGxS,cAAc,CAACyS,cAAc,CAACxY,OAAO,CAACgC,IAAI,CAAC,CAAC,CAAC;MACjE,IAAI,CAACuW,WAAW,EAAE,OAAO,KAAK;MAC9BxS,cAAc,CAAC0S,sBAAsB,CAAC,CAACzY,OAAO,CAAC,CAAC;MAChD,OAAO,IAAI;IACb,CAAC,CAAC;IAEF,OAAOsY,UAAU,GAAGvS,cAAc,GAAGrF,SAAS;EAChD;EAEA,MAAMgY,oBAAoBA,CAACpX,IAAgB,EAAE/C,QAAmB,EAA2B;IACzF,MAAMwH,cAAc,GAAG,MAAM,IAAI,CAACiS,iBAAiB,CAAC1W,IAAI,CAAC;IACzDyE,cAAc,CAAC0S,sBAAsB,CAACla,QAAQ,CAAC;IAC/CmJ,iBAAM,CAACiR,KAAK,CAAC,+BAA+B,IAAI,CAAC7Y,EAAE,CAAC,CAAC,SAASvB,QAAQ,CAACxB,MAAM,WAAW,CAAC;IACzF,OAAOgJ,cAAc;EACvB;EAEA,MAAMqS,yCAAyCA,CAC7C9W,IAAgB,EAChByE,cAA8B,EAC9B/G,IAAS;EACT;AACJ;AACA;AACA;AACA;EACI4Z,YAAY,GAAG,IAAI,EACiC;IACpD,MAAMC,UAAU,GAAG9S,cAAc,CAAC+S,OAAO,CAAC9Z,IAAI,CAAC;IAC/C,IAAI4Z,YAAY,IAAIC,UAAU,EAAE,OAAO,CAAC,CAAC;IACzC,MAAME,aAAa,GAAG,MAAOpZ,GAAQ,IAAM,MAAMA,GAAG,CAAC6I,IAAI,CAAClH,IAAI,CAAyB;IACvF,MAAM0X,aAAwB,GAAG,EAAE;IACnC,IAAI1Q,GAAsB;IAC1B,MAAM2Q,qBAAqB,GAAG,MAAOjZ,OAAgB,IAAK;MACxD,MAAM,IAAAkZ,qBAAU,EAAClZ,OAAO,CAAC6J,OAAO,EAAE,MAAOC,MAAM,IAAK;QAClD,MAAMqP,WAAW,GAAGpT,cAAc,CAAC+S,OAAO,CAAChP,MAAM,CAAC,IAAIkP,aAAa,CAACtW,IAAI,CAAEX,CAAC,IAAKA,CAAC,CAACC,IAAI,CAAC,CAAC,CAACoD,OAAO,CAAC0E,MAAM,CAAC,CAAC;QACzG,IAAI8O,YAAY,IAAIO,WAAW,EAAE;UAC/B;QACF;QACA,MAAMC,aAAa,GAAG,MAAML,aAAa,CAACjP,MAAM,CAAC;QACjD,IAAI,CAACsP,aAAa,EAAE;UAClB,MAAM1Z,GAAG,GAAG,IAAI,CAACiB,mBAAmB,CAACmJ,MAAM,CAAC;UAC5CxB,GAAG,GAAG5I,GAAG,GACL,KAAIwP,0BAAe,EAACxP,GAAG,EAAE,IAAI,CAACI,EAAE,CAAC,CAAC,CAAC,GACnC,KAAIuZ,yBAAc,EAAC,IAAI,CAACvZ,EAAE,CAAC,CAAC,EAAEE,OAAO,CAACgC,IAAI,CAAC,CAAC,CAAC3B,QAAQ,CAAC,CAAC,EAAEyJ,MAAM,CAACzJ,QAAQ,CAAC,CAAC,CAAC;UAC/E;QACF;QACA2Y,aAAa,CAACrc,IAAI,CAACyc,aAAa,CAAC;QACjC,MAAMH,qBAAqB,CAACG,aAAa,CAAC;MAC5C,CAAC,CAAC;IACJ,CAAC;IACD,MAAME,OAAO,GAAG,MAAMP,aAAa,CAAC/Z,IAAI,CAAC;IACzC,IAAI,CAACsa,OAAO,EAAE;MACZ,OAAO;QAAEhR,GAAG,EAAE,KAAIiR,uBAAY,EAAC,IAAI,CAACzZ,EAAE,CAAC,CAAC,EAAEd,IAAI,CAACqB,QAAQ,CAAC,CAAC;MAAE,CAAC;IAC9D;IACA,OAAO,IAAI,CAACjB,2BAA2B,CAACoa,YAAY,CAAC,YAAY;MAC/D,IAAI,CAACX,UAAU,EAAEG,aAAa,CAACrc,IAAI,CAAC2c,OAAO,CAAC;MAC5C,MAAML,qBAAqB,CAACK,OAAO,CAAC;MACpC,MAAMG,KAAK,GAAGT,aAAa,CAAClX,GAAG,CAAEC,CAAC,IAAK,IAAA2X,0CAA4B,EAAC3X,CAAC,CAAC,CAAC;MACvE,IAAIuG,GAAG,EAAE;QACP,OAAO;UAAEA,GAAG;UAAEmR;QAAM,CAAC;MACvB;MACA1T,cAAc,CAAC0S,sBAAsB,CAACO,aAAa,CAAC;MACpDtR,iBAAM,CAACiR,KAAK,CACV,uDAAuD,IAAI,CAAC7Y,EAAE,CAAC,CAAC,SAASkZ,aAAa,CAACjc,MAAM,WAC/F,CAAC;MACD,MAAMuE,IAAI,CAACqY,mBAAmB,CAAC,CAAC5T,cAAc,CAAC,CAAC;MAChD,OAAO;QAAE0T;MAAM,CAAC;IAClB,CAAC,CAAC;EACJ;EAEA,OAAO7D,KAAKA,CAACzC,QAAgB,EAAa;IACxC,MAAMxC,YAAY,GAAGwF,IAAI,CAACP,KAAK,CAACzC,QAAQ,CAAC;IACzC,OAAOnV,SAAS,CAACgG,IAAI,CAAC;MACpB5F,IAAI,EAAEuS,YAAY,CAACiJ,GAAG,GAAG,GAAGjJ,YAAY,CAACiJ,GAAG,IAAIjJ,YAAY,CAACvS,IAAI,EAAE,GAAGuS,YAAY,CAACvS,IAAI;MACvFC,KAAK,EAAEsS,YAAY,CAACtS,KAAK;MACzBE,QAAQ,EAAE,IAAAsb,mBAAS,EAAClJ,YAAY,CAACpS,QAAQ,EAA6BwG,GAAG,IAAK5E,cAAG,CAAC6D,IAAI,CAACe,GAAG,CAAC,CAAC;MAC5FtG,IAAI,EAAEkS,YAAY,CAAClS,IAAI;MACvBE,UAAU,EAAEgS,YAAY,CAAChS,UAAU;MACnCC,aAAa,EAAE+R,YAAY,CAAC/R,aAAa;MACzCE,KAAK,EAAE6R,YAAY,CAAC7R,KAAK;MACzBN,gBAAgB,EAAE,IAAAqb,mBAAS,EAAClJ,YAAY,CAACnS,gBAAgB,IAAI,CAAC,CAAC,EAAGuG,GAAG,IAAK5E,cAAG,CAAC6D,IAAI,CAACe,GAAG,CAAC,CAAC;MACxFhG,UAAU,EAAE4R,YAAY,CAAC5B,OAAO;MAChC/P,IAAI,EAAE2R,YAAY,CAAC3R,IAAI,GAAGmB,cAAG,CAAC6D,IAAI,CAAC2M,YAAY,CAAC3R,IAAI,CAAC,GAAG0B,SAAS;MACjEzB,MAAM,EAAE0R,YAAY,CAAC1R,MAAM,KAAK0R,YAAY,CAAC3R,IAAI,GAAG8a,qBAAU,CAACC,OAAO,GAAGD,qBAAU,CAACE,MAAM,CAAC;MAC3F9a,aAAa,EAAEC,4BAAa,CAACqP,UAAU,CAACmC,YAAY,CAACzR,aAAa;IACpE,CAAC,CAAC;EACJ;EAEA,OAAO8E,IAAIA,CAAC7F,KAAqB,EAAa;IAC5C,OAAO,IAAIH,SAAS,CAACG,KAAK,CAAC;EAC7B;EAEA,OAAO8b,SAASA,CAACC,KAAkB,EAAa;IAC9C;IACA,OAAO,IAAIlc,SAAS,CAAC;MACnBI,IAAI,EAAE8b,KAAK,CAAC7M,QAAQ;MACpBhP,KAAK,EAAE6b,KAAK,CAAC7b;IACf,CAAC,CAAC;EACJ;EAEA,IAAI8b,QAAQA,CAAA,EAAY;IACtB,OAAO,CAAC,IAAI,CAAClb,MAAM,IAAI,IAAI,CAACA,MAAM,KAAK6a,qBAAU,CAACE,MAAM;EAC1D;EAEAnE,QAAQA,CAAA,EAAS;IACf,MAAMnM,OAAO,GAAG,oCAAoC,IAAI,CAAC5J,EAAE,CAAC,CAAC,GAAG;IAChE,IAAI,CAAC,IAAI,CAAC1B,IAAI,EAAE,MAAM,KAAI0H,oBAAQ,EAAC,GAAG4D,OAAO,sBAAsB,CAAC;IACpE,IAAI,IAAI,CAAC5K,KAAK,IAAI,IAAI,CAACA,KAAK,CAACP,QAAQ,EAAE;MACrCpC,MAAM,CAACI,IAAI,CAAC,IAAI,CAACuC,KAAK,CAACP,QAAQ,CAAC,CAACvB,OAAO,CAAEgD,OAAO,IAAK;QACpD,IAAI,IAAAC,yBAAK,EAACD,OAAO,CAAC,IAAI,CAAC,IAAI,CAACyB,MAAM,CAACzB,OAAO,CAAC,EAAE;UAC3C,MAAM,KAAIoa,4BAAe,EAAC,GAAG1Q,OAAO,iBAAiB1J,OAAO,2CAA2C,CAAC;QAC1G;MACF,CAAC,CAAC;IACJ;IACA,MAAMqa,gBAAgB,GAAG,IAAAC,gCAAgB,EAAC,IAAI,CAAC/a,YAAY,CAACuC,GAAG,CAAEC,CAAC,IAAKA,CAAC,CAAC1B,QAAQ,CAAC,CAAC,CAAC,CAAC;IACrF,IAAIga,gBAAgB,CAACtd,MAAM,EAAE;MAC3B,MAAM,KAAIqd,4BAAe,EAAC,GAAG1Q,OAAO,2CAA2C2Q,gBAAgB,CAACnM,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAC/G;IACA/R,MAAM,CAACI,IAAI,CAAC,IAAI,CAACiC,gBAAgB,CAAC,CAACxB,OAAO,CAAEgD,OAAO,IAAK;MACtD,IAAI,IAAI,CAACzB,QAAQ,CAACyB,OAAO,CAAC,EAAE;QAC1B,MAAM,KAAIoa,4BAAe,EACvB,GAAG1Q,OAAO,kBAAkB1J,OAAO,mEACrC,CAAC;MACH;IACF,CAAC,CAAC;IACF,IAAI,CAAC,IAAI,CAACma,QAAQ,IAAI,CAAC,IAAI,CAACnb,IAAI,IAAI,IAAI,CAACO,YAAY,CAACxC,MAAM,EAAE;MAC5D;MACA;MACA,MAAM,KAAIqd,4BAAe,EAAC,GAAG1Q,OAAO,8BAA8B,CAAC;IACrE;EACF;AACF;AAAC3L,OAAA,CAAA1C,OAAA,GAAA2C,SAAA","ignoreList":[]}
|
package/dist/models/version.d.ts
CHANGED
|
@@ -189,6 +189,8 @@ export default class Version extends BitObject {
|
|
|
189
189
|
static depEdgeFromArray(depEdgeArr: string[]): DepEdge;
|
|
190
190
|
static flattenedEdgeToSource(flattenedEdges?: DepEdge[]): Source | undefined;
|
|
191
191
|
static dependenciesGraphToSource(dependenciesGraph?: DependenciesGraph): Source | undefined;
|
|
192
|
+
private filesToObject;
|
|
193
|
+
private logToObject;
|
|
192
194
|
toObject(): import("lodash").Dictionary<string | boolean | string[] | import("@teambit/component-id").ComponentIdObj[] | Doclet[] | Log[] | Record<string, any>[] | {
|
|
193
195
|
extensionId: ComponentID | import("@teambit/component-id").ComponentIdObj | undefined;
|
|
194
196
|
config: {
|
|
@@ -201,10 +203,10 @@ export default class Version extends BitObject {
|
|
|
201
203
|
name: string | undefined;
|
|
202
204
|
newExtensionId: ComponentID | undefined;
|
|
203
205
|
}[] | {
|
|
204
|
-
file:
|
|
205
|
-
relativePath:
|
|
206
|
-
name:
|
|
207
|
-
test:
|
|
206
|
+
file: string;
|
|
207
|
+
relativePath: string;
|
|
208
|
+
name: string;
|
|
209
|
+
test: boolean;
|
|
208
210
|
}[] | Record<string, any> | VersionOrigin | {
|
|
209
211
|
[key: string]: string;
|
|
210
212
|
} | {
|
|
@@ -216,14 +218,7 @@ export default class Version extends BitObject {
|
|
|
216
218
|
date: string;
|
|
217
219
|
username: string | undefined;
|
|
218
220
|
email: string | undefined;
|
|
219
|
-
previousParents?: undefined;
|
|
220
|
-
head?: undefined;
|
|
221
|
-
laneId?: undefined;
|
|
222
221
|
} | {
|
|
223
|
-
message?: undefined;
|
|
224
|
-
date?: undefined;
|
|
225
|
-
username?: undefined;
|
|
226
|
-
email?: undefined;
|
|
227
222
|
previousParents: string[];
|
|
228
223
|
laneId: {
|
|
229
224
|
scope: string;
|
|
@@ -231,17 +226,13 @@ export default class Version extends BitObject {
|
|
|
231
226
|
};
|
|
232
227
|
head?: undefined;
|
|
233
228
|
} | {
|
|
234
|
-
message?: undefined;
|
|
235
|
-
date?: undefined;
|
|
236
|
-
username?: undefined;
|
|
237
|
-
email?: undefined;
|
|
238
229
|
previousParents?: undefined;
|
|
239
230
|
head: string;
|
|
240
231
|
laneId: {
|
|
241
232
|
scope: string;
|
|
242
233
|
name: string;
|
|
243
234
|
};
|
|
244
|
-
} | ComponentOverridesData |
|
|
235
|
+
} | ComponentOverridesData | undefined>;
|
|
245
236
|
validateBeforePersisting(versionStr: string): void;
|
|
246
237
|
toBuffer(pretty: boolean): Buffer;
|
|
247
238
|
/**
|
package/dist/models/version.js
CHANGED
|
@@ -275,7 +275,6 @@ class Version extends _objects().BitObject {
|
|
|
275
275
|
});
|
|
276
276
|
}
|
|
277
277
|
id() {
|
|
278
|
-
const obj = this.toObject();
|
|
279
278
|
const getDependencies = deps => {
|
|
280
279
|
const clonedDependencies = deps.cloneAsString();
|
|
281
280
|
return clonedDependencies.map(dependency => {
|
|
@@ -295,17 +294,18 @@ class Version extends _objects().BitObject {
|
|
|
295
294
|
return !!val;
|
|
296
295
|
};
|
|
297
296
|
return JSON.stringify((0, _lodash().pickBy)({
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
297
|
+
// only what the hash needs, not `toObject()`, which serializes the whole version (e.g. a deep clone of all extensions)
|
|
298
|
+
mainFile: this.mainFile,
|
|
299
|
+
files: this.filesToObject(),
|
|
300
|
+
log: this.logToObject(),
|
|
301
301
|
dependencies: getDependencies(this.dependencies),
|
|
302
302
|
devDependencies: getDependencies(this.devDependencies),
|
|
303
303
|
extensionDependencies: getDependencies(this.extensionDependencies),
|
|
304
|
-
packageDependencies:
|
|
305
|
-
devPackageDependencies:
|
|
306
|
-
peerPackageDependencies:
|
|
307
|
-
bindingPrefix:
|
|
308
|
-
overrides:
|
|
304
|
+
packageDependencies: this.packageDependencies,
|
|
305
|
+
devPackageDependencies: this.devPackageDependencies,
|
|
306
|
+
peerPackageDependencies: this.peerPackageDependencies,
|
|
307
|
+
bindingPrefix: this.bindingPrefix,
|
|
308
|
+
overrides: this.overrides,
|
|
309
309
|
extensions: getExtensions(this.extensions)
|
|
310
310
|
}, filterFunction));
|
|
311
311
|
}
|
|
@@ -436,26 +436,29 @@ class Version extends _objects().BitObject {
|
|
|
436
436
|
const dependenciesGraphBuffer = Buffer.from(dependenciesGraph.serialize());
|
|
437
437
|
return _source().default.from(dependenciesGraphBuffer);
|
|
438
438
|
}
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
439
|
+
filesToObject() {
|
|
440
|
+
return this.files?.map(file => ({
|
|
441
|
+
file: file.file.toString(),
|
|
442
|
+
relativePath: file.relativePath,
|
|
443
|
+
name: file.name,
|
|
444
|
+
test: file.test
|
|
445
|
+
}));
|
|
446
|
+
}
|
|
447
|
+
logToObject() {
|
|
448
|
+
return {
|
|
449
|
+
message: this.log.message,
|
|
450
|
+
date: this.log.date,
|
|
451
|
+
username: this.log.username,
|
|
452
|
+
email: this.log.email
|
|
447
453
|
};
|
|
454
|
+
}
|
|
455
|
+
toObject() {
|
|
448
456
|
return (0, _lodash().pickBy)({
|
|
449
|
-
files: this.
|
|
457
|
+
files: this.filesToObject(),
|
|
450
458
|
mainFile: this.mainFile,
|
|
451
459
|
bindingPrefix: this.bindingPrefix,
|
|
452
460
|
schema: this.schema,
|
|
453
|
-
log:
|
|
454
|
-
message: this.log.message,
|
|
455
|
-
date: this.log.date,
|
|
456
|
-
username: this.log.username,
|
|
457
|
-
email: this.log.email
|
|
458
|
-
},
|
|
461
|
+
log: this.logToObject(),
|
|
459
462
|
docs: this.docs,
|
|
460
463
|
dependencies: this.dependencies.cloneAsObject(),
|
|
461
464
|
devDependencies: this.devDependencies.cloneAsObject(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_lodash","data","require","_componentVersion","_componentId","_laneId","_uuid","_legacy","_legacy2","_component","_legacy3","_legacy4","_legacy5","_toolboxCrypto","_objects","_legacy6","_source","_interopRequireDefault","_dependenciesGraph","_bit","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","Version","BitObject","constructor","props","mainFile","files","log","dependencies","Dependencies","devDependencies","peerDependencies","docs","flattenedDependencies","ComponentIdList","flattenedEdges","flattenedEdgesRef","dependenciesGraphRef","packageDependencies","devPackageDependencies","peerPackageDependencies","bindingPrefix","schema","overrides","packageJsonChangedProps","_hash","hash","parents","squashed","unrelated","extensions","ExtensionDataList","fromArray","buildStatus","componentId","bitVersion","modified","origin","hidden","batchId","validateVersion","getFlattenedEdges","repo","getWithBackwardCompatibility","throws","flattenedEdgesSource","load","flattenedEdgesJson","JSON","parse","contents","toString","map","item","Array","isArray","depEdgeFromArray","depEdgeFromObject","_flattenedEdges","loadDependenciesGraph","dependenciesGraphSource","DependenciesGraph","deserialize","nonEmptyFields","forEach","field","VersionInvalid","id","obj","toObject","getDependencies","deps","clonedDependencies","cloneAsString","dependency","getExtensions","sortedConfigOnly","sortById","toConfigArray","filterFunction","val","key","isEmpty","stringify","pickBy","extensionDependencies","calculateHash","Ref","makeHash","Error","extensionsBitIds","Dependency","lastModified","length","date","getAllFlattenedDependencies","getAllDependencies","depsIdsGroupedByType","getAllIds","getAllDependenciesCloned","getClone","getAllDependenciesIds","allDependencies","values","flat","getDependenciesIdsExcludeExtensions","updateFlattenedDependency","currentId","newId","getUpdated","updatedIds","depId","isEqual","refs","refsWithOptions","includeParents","includeArtifacts","allRefs","extractRefsFromFiles","file","push","artifacts","getRefsFromExtensions","refsWithoutParents","filter","ref","collectManyObjects","loadManyRaw","depEdgeToObject","depEdge","source","serialize","target","type","depEdgeObj","ComponentID","fromObject","depEdgeToArray","depEdgeArr","sourceStr","targetStr","fromString","flattenedEdgeToSource","undefined","flattenedEdgesObj","f","flattenedEdgesBuffer","Buffer","from","Source","dependenciesGraphToSource","dependenciesGraph","dependenciesGraphBuffer","_convertFileToObject","relativePath","name","test","message","username","email","cloneAsObject","dep","toModelObjects","p","previousParents","laneId","head","validateBeforePersisting","versionStr","logger","trace","version","validate","toBuffer","pretty","args","getStringifyArgs","str","validateBeforePersist","contentParsed","flattenedDevDependencies","_getDependencies","getRelativePath","importSpecifiers","importSpecifier","scope","BitIdCompIdError","relativePaths","parseFlattenedDeps","_groupFlattenedDependencies","flattenedDeps","flattenedDevDeps","parseFile","_getExtensions","exts","newExts","extension","extensionId","entry","ExtensionDataEntry","config","fromModelObject","LaneId","versionProps","fromComponent","component","pathNormalizeToLinux","get","componentOverridesData","getBitVersion","isSnap","setNewHash","sha1","v4","ignoreSharedDir","isSchemaSupport","SchemaFeature","sharedDir","isLegacy","SchemaName","Legacy","originLaneId","lane","originId","setDist","dist","DEFAULT_BUNDLE_FILENAME","hasParent","find","addParent","setSquashed","squashData","replaceMessage","addModifiedLog","Date","now","setUnrelated","externalHead","addAsOnlyParent","removeParent","removeAllParents","modelFilesToSourceFiles","repository","Promise","all","SourceFile","loadFromSourceFileModel","isRemoved","Boolean","findCoreExtension","Extensions","remove","removed","shouldRemoveFromMain","removeOnMain","validateVersionInstance","exports"],"sources":["version.ts"],"sourcesContent":["import { isEmpty, pickBy } from 'lodash';\nimport { isSnap } from '@teambit/component-version';\nimport { ComponentID, ComponentIdList } from '@teambit/component-id';\nimport { LaneId } from '@teambit/lane-id';\nimport { v4 } from 'uuid';\nimport type { BuildStatus } from '@teambit/legacy.constants';\nimport { DEFAULT_BUNDLE_FILENAME, Extensions } from '@teambit/legacy.constants';\nimport type { ConsumerComponent } from '@teambit/legacy.consumer-component';\nimport {\n isSchemaSupport,\n SchemaFeature,\n SchemaName,\n Dependencies,\n Dependency,\n} from '@teambit/legacy.consumer-component';\nimport { getRefsFromExtensions, SourceFile } from '@teambit/component.sources';\nimport type { ComponentOverridesData } from '@teambit/legacy.consumer-config';\nimport { ExtensionDataEntry, ExtensionDataList } from '@teambit/legacy.extension-data';\nimport type { Doclet } from '@teambit/semantics.doc-parser';\nimport { logger } from '@teambit/legacy.logger';\nimport type { PathLinux } from '@teambit/legacy.utils';\nimport { getStringifyArgs, pathNormalizeToLinux } from '@teambit/legacy.utils';\nimport { sha1 } from '@teambit/toolbox.crypto.sha1';\nimport type { Repository } from '../objects';\nimport { BitObject, Ref } from '../objects';\nimport type { ObjectItem } from '../objects/object-list';\nimport { BitIdCompIdError, VersionInvalid, validateVersionInstance } from '@teambit/legacy.scope';\nimport Source from './source';\nimport { DependenciesGraph } from './dependencies-graph';\nimport { getBitVersion } from '@teambit/bit.get-bit-version';\n\nexport type SourceFileModel = {\n name: string;\n relativePath: PathLinux;\n test: boolean;\n file: Ref;\n};\n\nexport type DistFileModel = SourceFileModel;\n\nexport type ArtifactFileModel = {\n relativePath: PathLinux;\n file: Ref;\n};\n\nexport type Log = {\n message: string;\n date: string;\n username: string | undefined;\n email: string | undefined;\n};\n\nexport type DepEdgeType = 'prod' | 'dev' | 'peer' | 'ext';\nexport type DepEdge = { source: ComponentID; target: ComponentID; type: DepEdgeType };\n\ntype ExternalHead = { head: Ref; laneId: LaneId };\ntype SquashData = { previousParents: Ref[]; laneId: LaneId };\ntype VersionOrigin = { id: { scope: string; name: string }; lane?: { scope: string; name: string; hash: string } };\n\nexport type VersionProps = {\n mainFile: PathLinux;\n files: Array<SourceFileModel>;\n log: Log;\n docs?: Doclet[];\n dependencies?: Dependency[];\n devDependencies?: Dependency[];\n peerDependencies?: Dependency[];\n flattenedDependencies?: ComponentIdList;\n _flattenedEdges?: DepEdge[];\n flattenedEdges?: DepEdge[];\n flattenedEdgesRef?: Ref;\n dependenciesGraphRef?: Ref;\n packageDependencies?: { [key: string]: string };\n devPackageDependencies?: { [key: string]: string };\n peerPackageDependencies?: { [key: string]: string };\n bindingPrefix: string;\n schema?: string;\n overrides: ComponentOverridesData;\n packageJsonChangedProps?: Record<string, any>;\n hash?: string;\n parents?: Ref[];\n squashed?: SquashData;\n unrelated?: ExternalHead;\n extensions?: ExtensionDataList;\n buildStatus?: BuildStatus;\n componentId?: ComponentID;\n bitVersion?: string;\n modified?: Log[];\n origin?: VersionOrigin;\n hidden?: boolean;\n batchId?: string;\n};\n\n/**\n * Represent a version model in the scope\n */\nexport default class Version extends BitObject {\n mainFile: PathLinux;\n files: Array<SourceFileModel>;\n log: Log;\n docs: Doclet[] | undefined;\n dependencies: Dependencies;\n devDependencies: Dependencies;\n peerDependencies: Dependencies;\n flattenedDependencies: ComponentIdList;\n dependenciesGraphRef?: Ref;\n _dependenciesGraph?: DependenciesGraph; // caching for the dependencies graph\n flattenedEdgesRef?: Ref; // ref to a BitObject Source file, which is a JSON object containing the flattened edge\n _flattenedEdges?: DepEdge[]; // caching for the flattenedEdges\n /**\n * @deprecated\n * to get the flattenedEdges, please use `this.getFlattenedEdges()`.\n * this function handles the backward compatibility and provides the flattened edges regardless whether it was saved\n * the `flattenedEdgesRef` introduced or after.\n *\n * the reason this is left here is not for backward compatibility, but for forward compatibility. meaning, if a\n * Version object created by the new version is parsed by an old version that doesn't support the flattenedEdgesRef,\n * then, it'll be able to still get the flattenedEdges by this prop.\n * this is causing duplication currently. the data is kept in both, `this.flattenedEdges` and the file stored in `flattenedEdgesRef`.\n * so it'll be best to delete this prop as soon as all scopes are deployed with the new version.\n * (around August 2023 should be safe)\n */\n private flattenedEdges: DepEdge[];\n packageDependencies: { [key: string]: string };\n devPackageDependencies: { [key: string]: string };\n peerPackageDependencies: { [key: string]: string };\n bindingPrefix: string;\n schema: string | undefined;\n overrides: ComponentOverridesData;\n packageJsonChangedProps: Record<string, any>;\n _hash: string; // reason for the underscore prefix is that we already have hash as a method\n parents: Ref[];\n squashed?: SquashData; // when a component is squashed during lane-merge\n unrelated?: ExternalHead; // when a component from a lane was created with the same name/scope as main, this ref points to the component of the lane\n extensions: ExtensionDataList;\n buildStatus?: BuildStatus;\n componentId?: ComponentID; // can help debugging errors when validating Version object\n bitVersion?: string;\n modified: Log[] = []; // currently mutation could happen as a result of either \"squash\" or \"sign\".\n // where this version was made: the component id it was snapped as, and the lane it was snapped on\n // (absent on main). set on every snap and tag, see SnappingMain.addSource. it is read as data, not\n // only as a debugging aid: Scope.isPartOfLaneHistoryOrMain tells a snap of a given lane from one of\n // main by it, and ModelComponent.filterLeanLaneRefs keeps the refs a lean lane scope owns by it.\n origin?: VersionOrigin;\n hidden?: boolean; // whether the version is hidden from commands such as \"bit log\", \"bit blame\". (needed for un-meaningful snaps, such as merged-lane snap prior to the tag)\n batchId?: string; // a shared UUID for all versions created in the same snap/tag operation\n\n constructor(props: VersionProps) {\n super();\n this.mainFile = props.mainFile;\n this.files = props.files;\n this.log = props.log;\n this.dependencies = new Dependencies(props.dependencies);\n this.devDependencies = new Dependencies(props.devDependencies);\n this.peerDependencies = new Dependencies(props.peerDependencies);\n this.docs = props.docs;\n this.flattenedDependencies = props.flattenedDependencies || new ComponentIdList();\n this.flattenedEdges = props.flattenedEdges || [];\n this.flattenedEdgesRef = props.flattenedEdgesRef;\n this.dependenciesGraphRef = props.dependenciesGraphRef;\n this.packageDependencies = props.packageDependencies || {};\n this.devPackageDependencies = props.devPackageDependencies || {};\n this.peerPackageDependencies = props.peerPackageDependencies || {};\n this.bindingPrefix = props.bindingPrefix;\n this.schema = props.schema;\n this.overrides = props.overrides || {};\n this.packageJsonChangedProps = props.packageJsonChangedProps || {};\n // @ts-ignore yes, props.hash can be undefined here, but it gets populated as soon as Version is created\n this._hash = props.hash;\n this.parents = props.parents || [];\n this.squashed = props.squashed;\n this.unrelated = props.unrelated;\n this.extensions = props.extensions || ExtensionDataList.fromArray([]);\n this.buildStatus = props.buildStatus;\n this.componentId = props.componentId;\n this.bitVersion = props.bitVersion;\n this.modified = props.modified || [];\n this.origin = props.origin;\n this.hidden = props.hidden;\n this.batchId = props.batchId;\n this.validateVersion();\n }\n\n /**\n * use only this method to get the flattened edges (graph of flattened dependencies).\n * it's backward compatible with the previous way this was stored on the Version object itself.\n */\n async getFlattenedEdges(repo: Repository): Promise<DepEdge[]> {\n const getWithBackwardCompatibility = async (): Promise<DepEdge[]> => {\n if (this.flattenedEdgesRef) {\n // it's possible that there is a ref but the file is not there.\n // it can happen if the remote-scope uses an older version that doesn't know to collect this ref.\n // in which case, the client will get the Version object with the ref prop, but not the Source object.\n const throws = false;\n const flattenedEdgesSource = (await repo.load(this.flattenedEdgesRef, throws)) as Source | undefined;\n if (flattenedEdgesSource) {\n const flattenedEdgesJson = JSON.parse(flattenedEdgesSource.contents.toString());\n return flattenedEdgesJson.map((item) =>\n Array.isArray(item) ? Version.depEdgeFromArray(item) : Version.depEdgeFromObject(item)\n );\n }\n }\n return this.flattenedEdges || [];\n };\n\n if (!this._flattenedEdges) {\n this._flattenedEdges = await getWithBackwardCompatibility();\n }\n\n return this._flattenedEdges;\n }\n\n async loadDependenciesGraph(repo: Repository): Promise<DependenciesGraph | undefined> {\n if (!this._dependenciesGraph) {\n if (this.dependenciesGraphRef) {\n // it's possible that there is a ref but the file is not there.\n // it can happen if the remote-scope uses an older version that doesn't know to collect this ref.\n // in which case, the client will get the Version object with the ref prop, but not the Source object.\n const throws = false;\n const dependenciesGraphSource = (await repo.load(this.dependenciesGraphRef, throws)) as Source | undefined;\n if (dependenciesGraphSource) {\n this._dependenciesGraph = DependenciesGraph.deserialize(dependenciesGraphSource.contents.toString());\n }\n }\n }\n return this._dependenciesGraph;\n }\n\n validateVersion() {\n const nonEmptyFields = ['mainFile', 'files'];\n nonEmptyFields.forEach((field) => {\n if (!this[field]) {\n throw new VersionInvalid(`failed creating a version object, the field \"${field}\" can't be empty`);\n }\n });\n }\n\n id() {\n const obj = this.toObject();\n\n const getDependencies = (deps: Dependencies) => {\n const clonedDependencies = deps.cloneAsString();\n return clonedDependencies.map((dependency) => {\n return {\n id: dependency.id,\n };\n });\n };\n\n const getExtensions = (extensions: ExtensionDataList) => {\n const sortedConfigOnly = extensions.sortById().toConfigArray();\n return sortedConfigOnly;\n };\n\n const filterFunction = (val, key) => {\n if (\n key === 'devDependencies' ||\n key === 'extensionDependencies' ||\n key === 'devPackageDependencies' ||\n key === 'peerPackageDependencies' ||\n key === 'overrides' ||\n key === 'extensions'\n ) {\n return !isEmpty(val);\n }\n return !!val;\n };\n\n return JSON.stringify(\n pickBy(\n {\n mainFile: obj.mainFile,\n files: obj.files,\n log: obj.log,\n dependencies: getDependencies(this.dependencies),\n devDependencies: getDependencies(this.devDependencies),\n extensionDependencies: getDependencies(this.extensionDependencies),\n packageDependencies: obj.packageDependencies,\n devPackageDependencies: obj.devPackageDependencies,\n peerPackageDependencies: obj.peerPackageDependencies,\n bindingPrefix: obj.bindingPrefix,\n overrides: obj.overrides,\n extensions: getExtensions(this.extensions),\n },\n filterFunction\n )\n );\n }\n\n calculateHash(): Ref {\n return new Ref(BitObject.makeHash(this.id()));\n }\n\n hash(): Ref {\n if (!this._hash) {\n throw new Error('hash is missing from a Version object');\n }\n return new Ref(this._hash);\n }\n\n get extensionDependencies() {\n return new Dependencies(this.extensions.extensionsBitIds.map((id) => new Dependency(id, [])));\n }\n\n lastModified(): string {\n if (!this.modified || !this.modified.length) return this.log.date;\n return this.modified[this.modified.length - 1].date;\n }\n\n getAllFlattenedDependencies(): ComponentIdList {\n return ComponentIdList.fromArray([...this.flattenedDependencies]);\n }\n\n getAllDependencies(): Dependency[] {\n return [\n ...this.dependencies.dependencies,\n ...this.devDependencies.dependencies,\n ...this.extensionDependencies.dependencies,\n ];\n }\n\n get depsIdsGroupedByType(): {\n dependencies: ComponentIdList;\n devDependencies: ComponentIdList;\n peerDependencies: ComponentIdList;\n extensionDependencies: ComponentIdList;\n } {\n return {\n dependencies: this.dependencies.getAllIds(),\n devDependencies: this.devDependencies.getAllIds(),\n peerDependencies: this.peerDependencies.getAllIds(),\n extensionDependencies: this.extensions.extensionsBitIds,\n };\n }\n\n getAllDependenciesCloned(): Dependencies {\n const dependencies = [...this.dependencies.getClone(), ...this.devDependencies.getClone()];\n return new Dependencies(dependencies);\n }\n\n getAllDependenciesIds(): ComponentIdList {\n const allDependencies = Object.values(this.depsIdsGroupedByType).flat();\n return ComponentIdList.fromArray(allDependencies);\n }\n\n getDependenciesIdsExcludeExtensions(): ComponentIdList {\n return ComponentIdList.fromArray([...this.dependencies.getAllIds(), ...this.devDependencies.getAllIds()]);\n }\n\n updateFlattenedDependency(currentId: ComponentID, newId: ComponentID) {\n const getUpdated = (flattenedDependencies: ComponentIdList): ComponentIdList => {\n const updatedIds = flattenedDependencies.map((depId) => {\n if (depId.isEqual(currentId)) return newId;\n return depId;\n });\n return ComponentIdList.fromArray(updatedIds);\n };\n this.flattenedDependencies = getUpdated(this.flattenedDependencies);\n }\n\n refs(): Ref[] {\n return this.refsWithOptions();\n }\n\n refsWithOptions(includeParents = true, includeArtifacts = true): Ref[] {\n const allRefs: Ref[] = [];\n const extractRefsFromFiles = (files) => {\n const refs = files ? files.map((file) => file.file) : [];\n return refs;\n };\n const files = extractRefsFromFiles(this.files);\n allRefs.push(...files);\n if (includeParents) {\n allRefs.push(...this.parents);\n }\n if (includeArtifacts) {\n const artifacts = getRefsFromExtensions(this.extensions);\n allRefs.push(...artifacts);\n }\n if (this.flattenedEdgesRef) allRefs.push(this.flattenedEdgesRef);\n if (this.dependenciesGraphRef) allRefs.push(this.dependenciesGraphRef);\n return allRefs;\n }\n\n refsWithoutParents(): Ref[] {\n const extractRefsFromFiles = (files) => {\n const refs = files ? files.map((file) => file.file) : [];\n return refs;\n };\n const files = extractRefsFromFiles(this.files);\n const artifacts = getRefsFromExtensions(this.extensions);\n return [...files, ...artifacts].filter((ref) => ref);\n }\n\n async collectManyObjects(repo: Repository, refs: Ref[]): Promise<ObjectItem[]> {\n return repo.loadManyRaw(refs);\n }\n\n static depEdgeToObject(depEdge: DepEdge): Record<string, any> {\n return {\n source: depEdge.source.serialize(),\n target: depEdge.target.serialize(),\n type: depEdge.type,\n };\n }\n static depEdgeFromObject(depEdgeObj: Record<string, any>): DepEdge {\n return {\n source: ComponentID.fromObject(depEdgeObj.source),\n target: ComponentID.fromObject(depEdgeObj.target),\n type: depEdgeObj.type,\n };\n }\n /**\n * until 1.9.86, we used depEdgeToObject.\n * this one makes this object much much smaller (for 604 edges, it's now 143KB, with the array format it's 6KB!)\n * this format has been supported (but not used) since v1.6.97.\n */\n static depEdgeToArray(depEdge: DepEdge): Record<string, any> {\n return [depEdge.source.toString(), depEdge.target.toString(), depEdge.type];\n }\n static depEdgeFromArray(depEdgeArr: string[]): DepEdge {\n const [sourceStr, targetStr, type] = depEdgeArr;\n return {\n source: ComponentID.fromString(sourceStr),\n target: ComponentID.fromString(targetStr),\n type: type as DepEdgeType,\n };\n }\n static flattenedEdgeToSource(flattenedEdges?: DepEdge[]): Source | undefined {\n if (!flattenedEdges) return undefined;\n // const flattenedEdgesObj = flattenedEdges.map((f) => Version.depEdgeToArray(f));\n const flattenedEdgesObj = flattenedEdges.map((f) => Version.depEdgeToObject(f));\n const flattenedEdgesBuffer = Buffer.from(JSON.stringify(flattenedEdgesObj));\n return Source.from(flattenedEdgesBuffer);\n }\n static dependenciesGraphToSource(dependenciesGraph?: DependenciesGraph): Source | undefined {\n if (!dependenciesGraph) return undefined;\n const dependenciesGraphBuffer = Buffer.from(dependenciesGraph.serialize());\n return Source.from(dependenciesGraphBuffer);\n }\n\n toObject() {\n const _convertFileToObject = (file) => {\n return {\n file: file.file.toString(),\n relativePath: file.relativePath,\n name: file.name,\n test: file.test,\n };\n };\n\n return pickBy(\n {\n files: this.files ? this.files.map(_convertFileToObject) : null,\n mainFile: this.mainFile,\n bindingPrefix: this.bindingPrefix,\n schema: this.schema,\n log: {\n message: this.log.message,\n date: this.log.date,\n username: this.log.username,\n email: this.log.email,\n },\n docs: this.docs,\n dependencies: this.dependencies.cloneAsObject(),\n devDependencies: this.devDependencies.cloneAsObject(),\n flattenedDependencies: this.flattenedDependencies.map((dep) => dep.toObject()),\n // @todo: uncomment this in the future, once all remotes are updated to support the backward compatibility.\n // flattenedDependencies: this.flattenedDependencies.map((dep) => dep.toString()),\n flattenedEdges: this.flattenedEdgesRef ? undefined : this.flattenedEdges.map((f) => Version.depEdgeToObject(f)),\n flattenedEdgesRef: this.flattenedEdgesRef?.toString(),\n dependenciesGraphRef: this.dependenciesGraphRef?.toString(),\n extensions: this.extensions.toModelObjects(),\n packageDependencies: this.packageDependencies,\n devPackageDependencies: this.devPackageDependencies,\n peerPackageDependencies: this.peerPackageDependencies,\n overrides: this.overrides,\n buildStatus: this.buildStatus,\n packageJsonChangedProps: this.packageJsonChangedProps,\n parents: this.parents.map((p) => p.toString()),\n squashed: this.squashed\n ? {\n previousParents: this.squashed.previousParents.map((p) => p.toString()),\n laneId: this.squashed.laneId.toObject(),\n }\n : undefined,\n unrelated: this.unrelated\n ? { head: this.unrelated.head.toString(), laneId: this.unrelated.laneId.toObject() }\n : undefined,\n bitVersion: this.bitVersion,\n modified: this.modified,\n origin: this.origin,\n hidden: this.hidden,\n batchId: this.batchId,\n },\n (val) => !!val\n );\n }\n\n validateBeforePersisting(versionStr: string): void {\n logger.trace(`validating version object, hash: ${this.hash().hash}`);\n const version = Version.parse(versionStr, this._hash);\n version.validate();\n }\n\n toBuffer(pretty: boolean): Buffer {\n const obj = this.toObject();\n const args = getStringifyArgs(pretty);\n const str = JSON.stringify(obj, ...args);\n if (this.validateBeforePersist) this.validateBeforePersisting(str);\n return Buffer.from(str);\n }\n /**\n * used by the super class BitObject\n */\n static parse(contents: string, hash: string): Version {\n const contentParsed = JSON.parse(contents);\n const {\n mainFile,\n files,\n bindingPrefix,\n schema,\n log,\n docs,\n dependencies,\n devDependencies,\n flattenedDependencies,\n flattenedDevDependencies,\n flattenedEdges,\n flattenedEdgesRef,\n dependenciesGraphRef,\n devPackageDependencies,\n peerPackageDependencies,\n packageDependencies,\n overrides,\n packageJsonChangedProps,\n extensions,\n buildStatus,\n parents,\n squashed,\n unrelated,\n bitVersion,\n modified,\n origin,\n hidden,\n batchId,\n } = contentParsed;\n\n const _getDependencies = (deps = []): Dependency[] => {\n const getRelativePath = (relativePath) => {\n if (relativePath.importSpecifiers) {\n // backward compatibility. Before the massive validation was added, an item of\n // relativePath.importSpecifiers array could be missing the mainFile property, which is\n // an invalid ImportSpecifier. (instead the mainFile it had another importSpecifiers object).\n relativePath.importSpecifiers = relativePath.importSpecifiers.filter(\n (importSpecifier) => importSpecifier.mainFile\n );\n if (!relativePath.importSpecifiers.length) delete relativePath.importSpecifiers;\n }\n\n return relativePath;\n };\n\n return deps.map((dependency: any) => {\n if (!dependency.id.scope) {\n throw new BitIdCompIdError(dependency.id.name);\n }\n return new Dependency(\n ComponentID.fromObject(dependency.id),\n Array.isArray(dependency.relativePaths)\n ? dependency.relativePaths.map(getRelativePath)\n : dependency.relativePaths\n );\n });\n };\n\n // Accept both string[] and object[] for backward compatibility\n const parseFlattenedDeps = (deps = []): ComponentID[] => {\n if (!deps.length) return [];\n if (typeof deps[0] === 'string') return deps.map((dep) => ComponentID.fromString(dep));\n return deps.map((dep) => ComponentID.fromObject(dep));\n };\n\n const _groupFlattenedDependencies = () => {\n // support backward compatibility. until v15, there was both flattenedDependencies and\n // flattenedDevDependencies. since then, these both were grouped to one flattenedDependencies\n const flattenedDeps = parseFlattenedDeps(flattenedDependencies);\n const flattenedDevDeps = parseFlattenedDeps(flattenedDevDependencies);\n return ComponentIdList.fromArray([...flattenedDeps, ...flattenedDevDeps]);\n };\n\n const parseFile = (file) => {\n return {\n file: Ref.from(file.file),\n relativePath: file.relativePath,\n name: file.name,\n test: file.test,\n };\n };\n const _getExtensions = (exts = []): ExtensionDataList => {\n if (exts.length) {\n const newExts = exts.map((extension: any) => {\n if (extension.extensionId) {\n const extensionId = ComponentID.fromObject(extension.extensionId);\n const entry = new ExtensionDataEntry(undefined, extensionId, undefined, extension.config, extension.data);\n return entry;\n }\n const entry = new ExtensionDataEntry(\n extension.id,\n undefined,\n extension.name,\n extension.config,\n extension.data\n );\n return entry;\n });\n return ExtensionDataList.fromModelObject(newExts);\n }\n return new ExtensionDataList();\n };\n\n return new Version({\n mainFile,\n files: files.map(parseFile),\n bindingPrefix,\n schema: schema || undefined,\n log: {\n // workaround for a bug where the log.message was saved as boolean when running `bit tag -m \"\"`\n // the bug was fixed since v0.1.27, but old objects might still have this bug\n message: typeof log.message !== 'string' ? '' : log.message,\n date: log.date,\n username: log.username,\n email: log.email,\n },\n docs,\n dependencies: _getDependencies(dependencies),\n devDependencies: _getDependencies(devDependencies),\n flattenedDependencies: _groupFlattenedDependencies(),\n // backward compatibility. before introducing `flattenedEdgesRef`, we only had `flattenedEdges`. see getFlattenedEdges() for more info.\n flattenedEdges: flattenedEdgesRef ? [] : flattenedEdges?.map((f) => Version.depEdgeFromObject(f)) || [],\n flattenedEdgesRef: flattenedEdgesRef ? Ref.from(flattenedEdgesRef) : undefined,\n dependenciesGraphRef: dependenciesGraphRef ? Ref.from(dependenciesGraphRef) : undefined,\n devPackageDependencies,\n peerPackageDependencies,\n packageDependencies,\n overrides,\n packageJsonChangedProps,\n hash,\n parents: parents ? parents.map((p) => Ref.from(p)) : [],\n squashed: squashed\n ? { previousParents: squashed.previousParents.map((r) => Ref.from(r)), laneId: new LaneId(squashed.laneId) }\n : undefined,\n unrelated: unrelated ? { head: Ref.from(unrelated.head), laneId: new LaneId(unrelated.laneId) } : undefined,\n extensions: _getExtensions(extensions),\n buildStatus,\n bitVersion,\n modified,\n origin,\n hidden,\n batchId,\n });\n }\n\n /**\n * used by raw-object.toRealObject()\n */\n static from(versionProps: VersionProps, hash: string): Version {\n return Version.parse(JSON.stringify(versionProps), hash);\n }\n\n /**\n * Create version model object from consumer component\n * @param {*} param0\n */\n static fromComponent({\n component,\n files,\n flattenedEdges,\n dependenciesGraph,\n }: {\n component: ConsumerComponent;\n files: Array<SourceFileModel>;\n flattenedEdges?: Source;\n dependenciesGraph?: Source;\n }) {\n const parseFile = (file) => {\n return {\n file: file.file.hash(),\n relativePath: file.relativePath,\n name: file.name,\n test: file.test,\n };\n };\n\n if (!component.log) throw new Error('Version.fromComponent - component.log is missing');\n const version = new Version({\n mainFile: pathNormalizeToLinux(component.mainFile),\n files: files.map(parseFile),\n bindingPrefix: component.bindingPrefix,\n log: component.log as Log,\n docs: component.docs,\n dependencies: component.dependencies.get(),\n devDependencies: component.devDependencies.get(),\n packageDependencies: component.packageDependencies,\n devPackageDependencies: component.devPackageDependencies,\n peerPackageDependencies: component.peerPackageDependencies,\n dependenciesGraphRef: dependenciesGraph?.hash(),\n flattenedDependencies: component.flattenedDependencies,\n // it's safe to remove this line once the version.flattenedEdges prop is deleted\n flattenedEdges: component.flattenedEdges,\n flattenedEdgesRef: flattenedEdges?.hash(),\n schema: component.schema,\n overrides: component.overrides.componentOverridesData,\n packageJsonChangedProps: component.packageJsonChangedProps,\n extensions: component.extensions,\n buildStatus: component.buildStatus,\n componentId: component.id,\n bitVersion: getBitVersion(),\n });\n if (isSnap(component.version)) {\n version._hash = component.version as string;\n } else {\n version.setNewHash();\n }\n\n return version;\n }\n\n setNewHash() {\n this._hash = sha1(v4());\n }\n\n get ignoreSharedDir(): boolean {\n return !isSchemaSupport(SchemaFeature.sharedDir, this.schema);\n }\n\n get isLegacy(): boolean {\n return !this.schema || this.schema === SchemaName.Legacy;\n }\n\n get originLaneId(): LaneId | undefined {\n return this.origin?.lane ? new LaneId({ name: this.origin.lane.name, scope: this.origin.lane.scope }) : undefined;\n }\n get originId(): ComponentID | undefined {\n return this.origin?.id\n ? ComponentID.fromObject({ scope: this.origin.id.scope, name: this.origin.id.name })\n : undefined;\n }\n\n setDist(dist: Source | undefined) {\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n this.dist = dist\n ? {\n file: dist.hash(),\n name: DEFAULT_BUNDLE_FILENAME,\n }\n : null;\n }\n\n hasParent(ref: Ref) {\n return this.parents.find((p) => p.toString() === ref.toString());\n }\n\n addParent(ref: Ref) {\n if (this.isLegacy) return;\n if (this.hasParent(ref)) {\n return; // make sure to not add twice\n }\n this.parents.push(ref);\n }\n\n setSquashed(squashData: SquashData, log: Log, replaceMessage?: string) {\n this.squashed = squashData;\n this.addModifiedLog(log);\n if (replaceMessage) {\n this.addModifiedLog({\n username: undefined,\n email: undefined,\n date: Date.now().toString(),\n message: `squashing: replacing the original log.message, which was: \"${this.log.message || '<empty>'}\"`,\n });\n this.log.message = replaceMessage;\n }\n }\n\n setUnrelated(externalHead: ExternalHead) {\n this.unrelated = externalHead;\n }\n\n addModifiedLog(log: Log) {\n this.modified.push(log);\n }\n\n addAsOnlyParent(ref: Ref) {\n if (this.isLegacy) return;\n this.parents = [ref];\n }\n\n removeParent(ref: Ref) {\n this.parents = this.parents.filter((p) => p.toString() !== ref.toString());\n }\n\n removeAllParents() {\n this.parents = [];\n }\n\n modelFilesToSourceFiles(repository: Repository): Promise<SourceFile[]> {\n return Promise.all(this.files.map((file) => SourceFile.loadFromSourceFileModel(file, repository)));\n }\n\n isRemoved(): boolean {\n return Boolean(this.extensions.findCoreExtension(Extensions.remove)?.config?.removed);\n }\n shouldRemoveFromMain(): boolean {\n return Boolean(this.extensions.findCoreExtension(Extensions.remove)?.config?.removeOnMain);\n }\n\n /**\n * Validate the version model properties, to make sure we are not inserting something\n * in the wrong format\n */\n validate(): void {\n validateVersionInstance(this);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_lodash","data","require","_componentVersion","_componentId","_laneId","_uuid","_legacy","_legacy2","_component","_legacy3","_legacy4","_legacy5","_toolboxCrypto","_objects","_legacy6","_source","_interopRequireDefault","_dependenciesGraph","_bit","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","Version","BitObject","constructor","props","mainFile","files","log","dependencies","Dependencies","devDependencies","peerDependencies","docs","flattenedDependencies","ComponentIdList","flattenedEdges","flattenedEdgesRef","dependenciesGraphRef","packageDependencies","devPackageDependencies","peerPackageDependencies","bindingPrefix","schema","overrides","packageJsonChangedProps","_hash","hash","parents","squashed","unrelated","extensions","ExtensionDataList","fromArray","buildStatus","componentId","bitVersion","modified","origin","hidden","batchId","validateVersion","getFlattenedEdges","repo","getWithBackwardCompatibility","throws","flattenedEdgesSource","load","flattenedEdgesJson","JSON","parse","contents","toString","map","item","Array","isArray","depEdgeFromArray","depEdgeFromObject","_flattenedEdges","loadDependenciesGraph","dependenciesGraphSource","DependenciesGraph","deserialize","nonEmptyFields","forEach","field","VersionInvalid","id","getDependencies","deps","clonedDependencies","cloneAsString","dependency","getExtensions","sortedConfigOnly","sortById","toConfigArray","filterFunction","val","key","isEmpty","stringify","pickBy","filesToObject","logToObject","extensionDependencies","calculateHash","Ref","makeHash","Error","extensionsBitIds","Dependency","lastModified","length","date","getAllFlattenedDependencies","getAllDependencies","depsIdsGroupedByType","getAllIds","getAllDependenciesCloned","getClone","getAllDependenciesIds","allDependencies","values","flat","getDependenciesIdsExcludeExtensions","updateFlattenedDependency","currentId","newId","getUpdated","updatedIds","depId","isEqual","refs","refsWithOptions","includeParents","includeArtifacts","allRefs","extractRefsFromFiles","file","push","artifacts","getRefsFromExtensions","refsWithoutParents","filter","ref","collectManyObjects","loadManyRaw","depEdgeToObject","depEdge","source","serialize","target","type","depEdgeObj","ComponentID","fromObject","depEdgeToArray","depEdgeArr","sourceStr","targetStr","fromString","flattenedEdgeToSource","undefined","flattenedEdgesObj","f","flattenedEdgesBuffer","Buffer","from","Source","dependenciesGraphToSource","dependenciesGraph","dependenciesGraphBuffer","relativePath","name","test","message","username","email","toObject","cloneAsObject","dep","toModelObjects","p","previousParents","laneId","head","validateBeforePersisting","versionStr","logger","trace","version","validate","toBuffer","pretty","obj","args","getStringifyArgs","str","validateBeforePersist","contentParsed","flattenedDevDependencies","_getDependencies","getRelativePath","importSpecifiers","importSpecifier","scope","BitIdCompIdError","relativePaths","parseFlattenedDeps","_groupFlattenedDependencies","flattenedDeps","flattenedDevDeps","parseFile","_getExtensions","exts","newExts","extension","extensionId","entry","ExtensionDataEntry","config","fromModelObject","LaneId","versionProps","fromComponent","component","pathNormalizeToLinux","get","componentOverridesData","getBitVersion","isSnap","setNewHash","sha1","v4","ignoreSharedDir","isSchemaSupport","SchemaFeature","sharedDir","isLegacy","SchemaName","Legacy","originLaneId","lane","originId","setDist","dist","DEFAULT_BUNDLE_FILENAME","hasParent","find","addParent","setSquashed","squashData","replaceMessage","addModifiedLog","Date","now","setUnrelated","externalHead","addAsOnlyParent","removeParent","removeAllParents","modelFilesToSourceFiles","repository","Promise","all","SourceFile","loadFromSourceFileModel","isRemoved","Boolean","findCoreExtension","Extensions","remove","removed","shouldRemoveFromMain","removeOnMain","validateVersionInstance","exports"],"sources":["version.ts"],"sourcesContent":["import { isEmpty, pickBy } from 'lodash';\nimport { isSnap } from '@teambit/component-version';\nimport { ComponentID, ComponentIdList } from '@teambit/component-id';\nimport { LaneId } from '@teambit/lane-id';\nimport { v4 } from 'uuid';\nimport type { BuildStatus } from '@teambit/legacy.constants';\nimport { DEFAULT_BUNDLE_FILENAME, Extensions } from '@teambit/legacy.constants';\nimport type { ConsumerComponent } from '@teambit/legacy.consumer-component';\nimport {\n isSchemaSupport,\n SchemaFeature,\n SchemaName,\n Dependencies,\n Dependency,\n} from '@teambit/legacy.consumer-component';\nimport { getRefsFromExtensions, SourceFile } from '@teambit/component.sources';\nimport type { ComponentOverridesData } from '@teambit/legacy.consumer-config';\nimport { ExtensionDataEntry, ExtensionDataList } from '@teambit/legacy.extension-data';\nimport type { Doclet } from '@teambit/semantics.doc-parser';\nimport { logger } from '@teambit/legacy.logger';\nimport type { PathLinux } from '@teambit/legacy.utils';\nimport { getStringifyArgs, pathNormalizeToLinux } from '@teambit/legacy.utils';\nimport { sha1 } from '@teambit/toolbox.crypto.sha1';\nimport type { Repository } from '../objects';\nimport { BitObject, Ref } from '../objects';\nimport type { ObjectItem } from '../objects/object-list';\nimport { BitIdCompIdError, VersionInvalid, validateVersionInstance } from '@teambit/legacy.scope';\nimport Source from './source';\nimport { DependenciesGraph } from './dependencies-graph';\nimport { getBitVersion } from '@teambit/bit.get-bit-version';\n\nexport type SourceFileModel = {\n name: string;\n relativePath: PathLinux;\n test: boolean;\n file: Ref;\n};\n\nexport type DistFileModel = SourceFileModel;\n\nexport type ArtifactFileModel = {\n relativePath: PathLinux;\n file: Ref;\n};\n\nexport type Log = {\n message: string;\n date: string;\n username: string | undefined;\n email: string | undefined;\n};\n\nexport type DepEdgeType = 'prod' | 'dev' | 'peer' | 'ext';\nexport type DepEdge = { source: ComponentID; target: ComponentID; type: DepEdgeType };\n\ntype ExternalHead = { head: Ref; laneId: LaneId };\ntype SquashData = { previousParents: Ref[]; laneId: LaneId };\ntype VersionOrigin = { id: { scope: string; name: string }; lane?: { scope: string; name: string; hash: string } };\n\nexport type VersionProps = {\n mainFile: PathLinux;\n files: Array<SourceFileModel>;\n log: Log;\n docs?: Doclet[];\n dependencies?: Dependency[];\n devDependencies?: Dependency[];\n peerDependencies?: Dependency[];\n flattenedDependencies?: ComponentIdList;\n _flattenedEdges?: DepEdge[];\n flattenedEdges?: DepEdge[];\n flattenedEdgesRef?: Ref;\n dependenciesGraphRef?: Ref;\n packageDependencies?: { [key: string]: string };\n devPackageDependencies?: { [key: string]: string };\n peerPackageDependencies?: { [key: string]: string };\n bindingPrefix: string;\n schema?: string;\n overrides: ComponentOverridesData;\n packageJsonChangedProps?: Record<string, any>;\n hash?: string;\n parents?: Ref[];\n squashed?: SquashData;\n unrelated?: ExternalHead;\n extensions?: ExtensionDataList;\n buildStatus?: BuildStatus;\n componentId?: ComponentID;\n bitVersion?: string;\n modified?: Log[];\n origin?: VersionOrigin;\n hidden?: boolean;\n batchId?: string;\n};\n\n/**\n * Represent a version model in the scope\n */\nexport default class Version extends BitObject {\n mainFile: PathLinux;\n files: Array<SourceFileModel>;\n log: Log;\n docs: Doclet[] | undefined;\n dependencies: Dependencies;\n devDependencies: Dependencies;\n peerDependencies: Dependencies;\n flattenedDependencies: ComponentIdList;\n dependenciesGraphRef?: Ref;\n _dependenciesGraph?: DependenciesGraph; // caching for the dependencies graph\n flattenedEdgesRef?: Ref; // ref to a BitObject Source file, which is a JSON object containing the flattened edge\n _flattenedEdges?: DepEdge[]; // caching for the flattenedEdges\n /**\n * @deprecated\n * to get the flattenedEdges, please use `this.getFlattenedEdges()`.\n * this function handles the backward compatibility and provides the flattened edges regardless whether it was saved\n * the `flattenedEdgesRef` introduced or after.\n *\n * the reason this is left here is not for backward compatibility, but for forward compatibility. meaning, if a\n * Version object created by the new version is parsed by an old version that doesn't support the flattenedEdgesRef,\n * then, it'll be able to still get the flattenedEdges by this prop.\n * this is causing duplication currently. the data is kept in both, `this.flattenedEdges` and the file stored in `flattenedEdgesRef`.\n * so it'll be best to delete this prop as soon as all scopes are deployed with the new version.\n * (around August 2023 should be safe)\n */\n private flattenedEdges: DepEdge[];\n packageDependencies: { [key: string]: string };\n devPackageDependencies: { [key: string]: string };\n peerPackageDependencies: { [key: string]: string };\n bindingPrefix: string;\n schema: string | undefined;\n overrides: ComponentOverridesData;\n packageJsonChangedProps: Record<string, any>;\n _hash: string; // reason for the underscore prefix is that we already have hash as a method\n parents: Ref[];\n squashed?: SquashData; // when a component is squashed during lane-merge\n unrelated?: ExternalHead; // when a component from a lane was created with the same name/scope as main, this ref points to the component of the lane\n extensions: ExtensionDataList;\n buildStatus?: BuildStatus;\n componentId?: ComponentID; // can help debugging errors when validating Version object\n bitVersion?: string;\n modified: Log[] = []; // currently mutation could happen as a result of either \"squash\" or \"sign\".\n // where this version was made: the component id it was snapped as, and the lane it was snapped on\n // (absent on main). set on every snap and tag, see SnappingMain.addSource. it is read as data, not\n // only as a debugging aid: Scope.isPartOfLaneHistoryOrMain tells a snap of a given lane from one of\n // main by it, and ModelComponent.filterLeanLaneRefs keeps the refs a lean lane scope owns by it.\n origin?: VersionOrigin;\n hidden?: boolean; // whether the version is hidden from commands such as \"bit log\", \"bit blame\". (needed for un-meaningful snaps, such as merged-lane snap prior to the tag)\n batchId?: string; // a shared UUID for all versions created in the same snap/tag operation\n\n constructor(props: VersionProps) {\n super();\n this.mainFile = props.mainFile;\n this.files = props.files;\n this.log = props.log;\n this.dependencies = new Dependencies(props.dependencies);\n this.devDependencies = new Dependencies(props.devDependencies);\n this.peerDependencies = new Dependencies(props.peerDependencies);\n this.docs = props.docs;\n this.flattenedDependencies = props.flattenedDependencies || new ComponentIdList();\n this.flattenedEdges = props.flattenedEdges || [];\n this.flattenedEdgesRef = props.flattenedEdgesRef;\n this.dependenciesGraphRef = props.dependenciesGraphRef;\n this.packageDependencies = props.packageDependencies || {};\n this.devPackageDependencies = props.devPackageDependencies || {};\n this.peerPackageDependencies = props.peerPackageDependencies || {};\n this.bindingPrefix = props.bindingPrefix;\n this.schema = props.schema;\n this.overrides = props.overrides || {};\n this.packageJsonChangedProps = props.packageJsonChangedProps || {};\n // @ts-ignore yes, props.hash can be undefined here, but it gets populated as soon as Version is created\n this._hash = props.hash;\n this.parents = props.parents || [];\n this.squashed = props.squashed;\n this.unrelated = props.unrelated;\n this.extensions = props.extensions || ExtensionDataList.fromArray([]);\n this.buildStatus = props.buildStatus;\n this.componentId = props.componentId;\n this.bitVersion = props.bitVersion;\n this.modified = props.modified || [];\n this.origin = props.origin;\n this.hidden = props.hidden;\n this.batchId = props.batchId;\n this.validateVersion();\n }\n\n /**\n * use only this method to get the flattened edges (graph of flattened dependencies).\n * it's backward compatible with the previous way this was stored on the Version object itself.\n */\n async getFlattenedEdges(repo: Repository): Promise<DepEdge[]> {\n const getWithBackwardCompatibility = async (): Promise<DepEdge[]> => {\n if (this.flattenedEdgesRef) {\n // it's possible that there is a ref but the file is not there.\n // it can happen if the remote-scope uses an older version that doesn't know to collect this ref.\n // in which case, the client will get the Version object with the ref prop, but not the Source object.\n const throws = false;\n const flattenedEdgesSource = (await repo.load(this.flattenedEdgesRef, throws)) as Source | undefined;\n if (flattenedEdgesSource) {\n const flattenedEdgesJson = JSON.parse(flattenedEdgesSource.contents.toString());\n return flattenedEdgesJson.map((item) =>\n Array.isArray(item) ? Version.depEdgeFromArray(item) : Version.depEdgeFromObject(item)\n );\n }\n }\n return this.flattenedEdges || [];\n };\n\n if (!this._flattenedEdges) {\n this._flattenedEdges = await getWithBackwardCompatibility();\n }\n\n return this._flattenedEdges;\n }\n\n async loadDependenciesGraph(repo: Repository): Promise<DependenciesGraph | undefined> {\n if (!this._dependenciesGraph) {\n if (this.dependenciesGraphRef) {\n // it's possible that there is a ref but the file is not there.\n // it can happen if the remote-scope uses an older version that doesn't know to collect this ref.\n // in which case, the client will get the Version object with the ref prop, but not the Source object.\n const throws = false;\n const dependenciesGraphSource = (await repo.load(this.dependenciesGraphRef, throws)) as Source | undefined;\n if (dependenciesGraphSource) {\n this._dependenciesGraph = DependenciesGraph.deserialize(dependenciesGraphSource.contents.toString());\n }\n }\n }\n return this._dependenciesGraph;\n }\n\n validateVersion() {\n const nonEmptyFields = ['mainFile', 'files'];\n nonEmptyFields.forEach((field) => {\n if (!this[field]) {\n throw new VersionInvalid(`failed creating a version object, the field \"${field}\" can't be empty`);\n }\n });\n }\n\n id() {\n const getDependencies = (deps: Dependencies) => {\n const clonedDependencies = deps.cloneAsString();\n return clonedDependencies.map((dependency) => {\n return {\n id: dependency.id,\n };\n });\n };\n\n const getExtensions = (extensions: ExtensionDataList) => {\n const sortedConfigOnly = extensions.sortById().toConfigArray();\n return sortedConfigOnly;\n };\n\n const filterFunction = (val, key) => {\n if (\n key === 'devDependencies' ||\n key === 'extensionDependencies' ||\n key === 'devPackageDependencies' ||\n key === 'peerPackageDependencies' ||\n key === 'overrides' ||\n key === 'extensions'\n ) {\n return !isEmpty(val);\n }\n return !!val;\n };\n\n return JSON.stringify(\n pickBy(\n {\n // only what the hash needs, not `toObject()`, which serializes the whole version (e.g. a deep clone of all extensions)\n mainFile: this.mainFile,\n files: this.filesToObject(),\n log: this.logToObject(),\n dependencies: getDependencies(this.dependencies),\n devDependencies: getDependencies(this.devDependencies),\n extensionDependencies: getDependencies(this.extensionDependencies),\n packageDependencies: this.packageDependencies,\n devPackageDependencies: this.devPackageDependencies,\n peerPackageDependencies: this.peerPackageDependencies,\n bindingPrefix: this.bindingPrefix,\n overrides: this.overrides,\n extensions: getExtensions(this.extensions),\n },\n filterFunction\n )\n );\n }\n\n calculateHash(): Ref {\n return new Ref(BitObject.makeHash(this.id()));\n }\n\n hash(): Ref {\n if (!this._hash) {\n throw new Error('hash is missing from a Version object');\n }\n return new Ref(this._hash);\n }\n\n get extensionDependencies() {\n return new Dependencies(this.extensions.extensionsBitIds.map((id) => new Dependency(id, [])));\n }\n\n lastModified(): string {\n if (!this.modified || !this.modified.length) return this.log.date;\n return this.modified[this.modified.length - 1].date;\n }\n\n getAllFlattenedDependencies(): ComponentIdList {\n return ComponentIdList.fromArray([...this.flattenedDependencies]);\n }\n\n getAllDependencies(): Dependency[] {\n return [\n ...this.dependencies.dependencies,\n ...this.devDependencies.dependencies,\n ...this.extensionDependencies.dependencies,\n ];\n }\n\n get depsIdsGroupedByType(): {\n dependencies: ComponentIdList;\n devDependencies: ComponentIdList;\n peerDependencies: ComponentIdList;\n extensionDependencies: ComponentIdList;\n } {\n return {\n dependencies: this.dependencies.getAllIds(),\n devDependencies: this.devDependencies.getAllIds(),\n peerDependencies: this.peerDependencies.getAllIds(),\n extensionDependencies: this.extensions.extensionsBitIds,\n };\n }\n\n getAllDependenciesCloned(): Dependencies {\n const dependencies = [...this.dependencies.getClone(), ...this.devDependencies.getClone()];\n return new Dependencies(dependencies);\n }\n\n getAllDependenciesIds(): ComponentIdList {\n const allDependencies = Object.values(this.depsIdsGroupedByType).flat();\n return ComponentIdList.fromArray(allDependencies);\n }\n\n getDependenciesIdsExcludeExtensions(): ComponentIdList {\n return ComponentIdList.fromArray([...this.dependencies.getAllIds(), ...this.devDependencies.getAllIds()]);\n }\n\n updateFlattenedDependency(currentId: ComponentID, newId: ComponentID) {\n const getUpdated = (flattenedDependencies: ComponentIdList): ComponentIdList => {\n const updatedIds = flattenedDependencies.map((depId) => {\n if (depId.isEqual(currentId)) return newId;\n return depId;\n });\n return ComponentIdList.fromArray(updatedIds);\n };\n this.flattenedDependencies = getUpdated(this.flattenedDependencies);\n }\n\n refs(): Ref[] {\n return this.refsWithOptions();\n }\n\n refsWithOptions(includeParents = true, includeArtifacts = true): Ref[] {\n const allRefs: Ref[] = [];\n const extractRefsFromFiles = (files) => {\n const refs = files ? files.map((file) => file.file) : [];\n return refs;\n };\n const files = extractRefsFromFiles(this.files);\n allRefs.push(...files);\n if (includeParents) {\n allRefs.push(...this.parents);\n }\n if (includeArtifacts) {\n const artifacts = getRefsFromExtensions(this.extensions);\n allRefs.push(...artifacts);\n }\n if (this.flattenedEdgesRef) allRefs.push(this.flattenedEdgesRef);\n if (this.dependenciesGraphRef) allRefs.push(this.dependenciesGraphRef);\n return allRefs;\n }\n\n refsWithoutParents(): Ref[] {\n const extractRefsFromFiles = (files) => {\n const refs = files ? files.map((file) => file.file) : [];\n return refs;\n };\n const files = extractRefsFromFiles(this.files);\n const artifacts = getRefsFromExtensions(this.extensions);\n return [...files, ...artifacts].filter((ref) => ref);\n }\n\n async collectManyObjects(repo: Repository, refs: Ref[]): Promise<ObjectItem[]> {\n return repo.loadManyRaw(refs);\n }\n\n static depEdgeToObject(depEdge: DepEdge): Record<string, any> {\n return {\n source: depEdge.source.serialize(),\n target: depEdge.target.serialize(),\n type: depEdge.type,\n };\n }\n static depEdgeFromObject(depEdgeObj: Record<string, any>): DepEdge {\n return {\n source: ComponentID.fromObject(depEdgeObj.source),\n target: ComponentID.fromObject(depEdgeObj.target),\n type: depEdgeObj.type,\n };\n }\n /**\n * until 1.9.86, we used depEdgeToObject.\n * this one makes this object much much smaller (for 604 edges, it's now 143KB, with the array format it's 6KB!)\n * this format has been supported (but not used) since v1.6.97.\n */\n static depEdgeToArray(depEdge: DepEdge): Record<string, any> {\n return [depEdge.source.toString(), depEdge.target.toString(), depEdge.type];\n }\n static depEdgeFromArray(depEdgeArr: string[]): DepEdge {\n const [sourceStr, targetStr, type] = depEdgeArr;\n return {\n source: ComponentID.fromString(sourceStr),\n target: ComponentID.fromString(targetStr),\n type: type as DepEdgeType,\n };\n }\n static flattenedEdgeToSource(flattenedEdges?: DepEdge[]): Source | undefined {\n if (!flattenedEdges) return undefined;\n // const flattenedEdgesObj = flattenedEdges.map((f) => Version.depEdgeToArray(f));\n const flattenedEdgesObj = flattenedEdges.map((f) => Version.depEdgeToObject(f));\n const flattenedEdgesBuffer = Buffer.from(JSON.stringify(flattenedEdgesObj));\n return Source.from(flattenedEdgesBuffer);\n }\n static dependenciesGraphToSource(dependenciesGraph?: DependenciesGraph): Source | undefined {\n if (!dependenciesGraph) return undefined;\n const dependenciesGraphBuffer = Buffer.from(dependenciesGraph.serialize());\n return Source.from(dependenciesGraphBuffer);\n }\n\n private filesToObject() {\n return this.files?.map((file) => ({\n file: file.file.toString(),\n relativePath: file.relativePath,\n name: file.name,\n test: file.test,\n }));\n }\n\n private logToObject() {\n return {\n message: this.log.message,\n date: this.log.date,\n username: this.log.username,\n email: this.log.email,\n };\n }\n\n toObject() {\n return pickBy(\n {\n files: this.filesToObject(),\n mainFile: this.mainFile,\n bindingPrefix: this.bindingPrefix,\n schema: this.schema,\n log: this.logToObject(),\n docs: this.docs,\n dependencies: this.dependencies.cloneAsObject(),\n devDependencies: this.devDependencies.cloneAsObject(),\n flattenedDependencies: this.flattenedDependencies.map((dep) => dep.toObject()),\n // @todo: uncomment this in the future, once all remotes are updated to support the backward compatibility.\n // flattenedDependencies: this.flattenedDependencies.map((dep) => dep.toString()),\n flattenedEdges: this.flattenedEdgesRef ? undefined : this.flattenedEdges.map((f) => Version.depEdgeToObject(f)),\n flattenedEdgesRef: this.flattenedEdgesRef?.toString(),\n dependenciesGraphRef: this.dependenciesGraphRef?.toString(),\n extensions: this.extensions.toModelObjects(),\n packageDependencies: this.packageDependencies,\n devPackageDependencies: this.devPackageDependencies,\n peerPackageDependencies: this.peerPackageDependencies,\n overrides: this.overrides,\n buildStatus: this.buildStatus,\n packageJsonChangedProps: this.packageJsonChangedProps,\n parents: this.parents.map((p) => p.toString()),\n squashed: this.squashed\n ? {\n previousParents: this.squashed.previousParents.map((p) => p.toString()),\n laneId: this.squashed.laneId.toObject(),\n }\n : undefined,\n unrelated: this.unrelated\n ? { head: this.unrelated.head.toString(), laneId: this.unrelated.laneId.toObject() }\n : undefined,\n bitVersion: this.bitVersion,\n modified: this.modified,\n origin: this.origin,\n hidden: this.hidden,\n batchId: this.batchId,\n },\n (val) => !!val\n );\n }\n\n validateBeforePersisting(versionStr: string): void {\n logger.trace(`validating version object, hash: ${this.hash().hash}`);\n const version = Version.parse(versionStr, this._hash);\n version.validate();\n }\n\n toBuffer(pretty: boolean): Buffer {\n const obj = this.toObject();\n const args = getStringifyArgs(pretty);\n const str = JSON.stringify(obj, ...args);\n if (this.validateBeforePersist) this.validateBeforePersisting(str);\n return Buffer.from(str);\n }\n /**\n * used by the super class BitObject\n */\n static parse(contents: string, hash: string): Version {\n const contentParsed = JSON.parse(contents);\n const {\n mainFile,\n files,\n bindingPrefix,\n schema,\n log,\n docs,\n dependencies,\n devDependencies,\n flattenedDependencies,\n flattenedDevDependencies,\n flattenedEdges,\n flattenedEdgesRef,\n dependenciesGraphRef,\n devPackageDependencies,\n peerPackageDependencies,\n packageDependencies,\n overrides,\n packageJsonChangedProps,\n extensions,\n buildStatus,\n parents,\n squashed,\n unrelated,\n bitVersion,\n modified,\n origin,\n hidden,\n batchId,\n } = contentParsed;\n\n const _getDependencies = (deps = []): Dependency[] => {\n const getRelativePath = (relativePath) => {\n if (relativePath.importSpecifiers) {\n // backward compatibility. Before the massive validation was added, an item of\n // relativePath.importSpecifiers array could be missing the mainFile property, which is\n // an invalid ImportSpecifier. (instead the mainFile it had another importSpecifiers object).\n relativePath.importSpecifiers = relativePath.importSpecifiers.filter(\n (importSpecifier) => importSpecifier.mainFile\n );\n if (!relativePath.importSpecifiers.length) delete relativePath.importSpecifiers;\n }\n\n return relativePath;\n };\n\n return deps.map((dependency: any) => {\n if (!dependency.id.scope) {\n throw new BitIdCompIdError(dependency.id.name);\n }\n return new Dependency(\n ComponentID.fromObject(dependency.id),\n Array.isArray(dependency.relativePaths)\n ? dependency.relativePaths.map(getRelativePath)\n : dependency.relativePaths\n );\n });\n };\n\n // Accept both string[] and object[] for backward compatibility\n const parseFlattenedDeps = (deps = []): ComponentID[] => {\n if (!deps.length) return [];\n if (typeof deps[0] === 'string') return deps.map((dep) => ComponentID.fromString(dep));\n return deps.map((dep) => ComponentID.fromObject(dep));\n };\n\n const _groupFlattenedDependencies = () => {\n // support backward compatibility. until v15, there was both flattenedDependencies and\n // flattenedDevDependencies. since then, these both were grouped to one flattenedDependencies\n const flattenedDeps = parseFlattenedDeps(flattenedDependencies);\n const flattenedDevDeps = parseFlattenedDeps(flattenedDevDependencies);\n return ComponentIdList.fromArray([...flattenedDeps, ...flattenedDevDeps]);\n };\n\n const parseFile = (file) => {\n return {\n file: Ref.from(file.file),\n relativePath: file.relativePath,\n name: file.name,\n test: file.test,\n };\n };\n const _getExtensions = (exts = []): ExtensionDataList => {\n if (exts.length) {\n const newExts = exts.map((extension: any) => {\n if (extension.extensionId) {\n const extensionId = ComponentID.fromObject(extension.extensionId);\n const entry = new ExtensionDataEntry(undefined, extensionId, undefined, extension.config, extension.data);\n return entry;\n }\n const entry = new ExtensionDataEntry(\n extension.id,\n undefined,\n extension.name,\n extension.config,\n extension.data\n );\n return entry;\n });\n return ExtensionDataList.fromModelObject(newExts);\n }\n return new ExtensionDataList();\n };\n\n return new Version({\n mainFile,\n files: files.map(parseFile),\n bindingPrefix,\n schema: schema || undefined,\n log: {\n // workaround for a bug where the log.message was saved as boolean when running `bit tag -m \"\"`\n // the bug was fixed since v0.1.27, but old objects might still have this bug\n message: typeof log.message !== 'string' ? '' : log.message,\n date: log.date,\n username: log.username,\n email: log.email,\n },\n docs,\n dependencies: _getDependencies(dependencies),\n devDependencies: _getDependencies(devDependencies),\n flattenedDependencies: _groupFlattenedDependencies(),\n // backward compatibility. before introducing `flattenedEdgesRef`, we only had `flattenedEdges`. see getFlattenedEdges() for more info.\n flattenedEdges: flattenedEdgesRef ? [] : flattenedEdges?.map((f) => Version.depEdgeFromObject(f)) || [],\n flattenedEdgesRef: flattenedEdgesRef ? Ref.from(flattenedEdgesRef) : undefined,\n dependenciesGraphRef: dependenciesGraphRef ? Ref.from(dependenciesGraphRef) : undefined,\n devPackageDependencies,\n peerPackageDependencies,\n packageDependencies,\n overrides,\n packageJsonChangedProps,\n hash,\n parents: parents ? parents.map((p) => Ref.from(p)) : [],\n squashed: squashed\n ? { previousParents: squashed.previousParents.map((r) => Ref.from(r)), laneId: new LaneId(squashed.laneId) }\n : undefined,\n unrelated: unrelated ? { head: Ref.from(unrelated.head), laneId: new LaneId(unrelated.laneId) } : undefined,\n extensions: _getExtensions(extensions),\n buildStatus,\n bitVersion,\n modified,\n origin,\n hidden,\n batchId,\n });\n }\n\n /**\n * used by raw-object.toRealObject()\n */\n static from(versionProps: VersionProps, hash: string): Version {\n return Version.parse(JSON.stringify(versionProps), hash);\n }\n\n /**\n * Create version model object from consumer component\n * @param {*} param0\n */\n static fromComponent({\n component,\n files,\n flattenedEdges,\n dependenciesGraph,\n }: {\n component: ConsumerComponent;\n files: Array<SourceFileModel>;\n flattenedEdges?: Source;\n dependenciesGraph?: Source;\n }) {\n const parseFile = (file) => {\n return {\n file: file.file.hash(),\n relativePath: file.relativePath,\n name: file.name,\n test: file.test,\n };\n };\n\n if (!component.log) throw new Error('Version.fromComponent - component.log is missing');\n const version = new Version({\n mainFile: pathNormalizeToLinux(component.mainFile),\n files: files.map(parseFile),\n bindingPrefix: component.bindingPrefix,\n log: component.log as Log,\n docs: component.docs,\n dependencies: component.dependencies.get(),\n devDependencies: component.devDependencies.get(),\n packageDependencies: component.packageDependencies,\n devPackageDependencies: component.devPackageDependencies,\n peerPackageDependencies: component.peerPackageDependencies,\n dependenciesGraphRef: dependenciesGraph?.hash(),\n flattenedDependencies: component.flattenedDependencies,\n // it's safe to remove this line once the version.flattenedEdges prop is deleted\n flattenedEdges: component.flattenedEdges,\n flattenedEdgesRef: flattenedEdges?.hash(),\n schema: component.schema,\n overrides: component.overrides.componentOverridesData,\n packageJsonChangedProps: component.packageJsonChangedProps,\n extensions: component.extensions,\n buildStatus: component.buildStatus,\n componentId: component.id,\n bitVersion: getBitVersion(),\n });\n if (isSnap(component.version)) {\n version._hash = component.version as string;\n } else {\n version.setNewHash();\n }\n\n return version;\n }\n\n setNewHash() {\n this._hash = sha1(v4());\n }\n\n get ignoreSharedDir(): boolean {\n return !isSchemaSupport(SchemaFeature.sharedDir, this.schema);\n }\n\n get isLegacy(): boolean {\n return !this.schema || this.schema === SchemaName.Legacy;\n }\n\n get originLaneId(): LaneId | undefined {\n return this.origin?.lane ? new LaneId({ name: this.origin.lane.name, scope: this.origin.lane.scope }) : undefined;\n }\n get originId(): ComponentID | undefined {\n return this.origin?.id\n ? ComponentID.fromObject({ scope: this.origin.id.scope, name: this.origin.id.name })\n : undefined;\n }\n\n setDist(dist: Source | undefined) {\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n this.dist = dist\n ? {\n file: dist.hash(),\n name: DEFAULT_BUNDLE_FILENAME,\n }\n : null;\n }\n\n hasParent(ref: Ref) {\n return this.parents.find((p) => p.toString() === ref.toString());\n }\n\n addParent(ref: Ref) {\n if (this.isLegacy) return;\n if (this.hasParent(ref)) {\n return; // make sure to not add twice\n }\n this.parents.push(ref);\n }\n\n setSquashed(squashData: SquashData, log: Log, replaceMessage?: string) {\n this.squashed = squashData;\n this.addModifiedLog(log);\n if (replaceMessage) {\n this.addModifiedLog({\n username: undefined,\n email: undefined,\n date: Date.now().toString(),\n message: `squashing: replacing the original log.message, which was: \"${this.log.message || '<empty>'}\"`,\n });\n this.log.message = replaceMessage;\n }\n }\n\n setUnrelated(externalHead: ExternalHead) {\n this.unrelated = externalHead;\n }\n\n addModifiedLog(log: Log) {\n this.modified.push(log);\n }\n\n addAsOnlyParent(ref: Ref) {\n if (this.isLegacy) return;\n this.parents = [ref];\n }\n\n removeParent(ref: Ref) {\n this.parents = this.parents.filter((p) => p.toString() !== ref.toString());\n }\n\n removeAllParents() {\n this.parents = [];\n }\n\n modelFilesToSourceFiles(repository: Repository): Promise<SourceFile[]> {\n return Promise.all(this.files.map((file) => SourceFile.loadFromSourceFileModel(file, repository)));\n }\n\n isRemoved(): boolean {\n return Boolean(this.extensions.findCoreExtension(Extensions.remove)?.config?.removed);\n }\n shouldRemoveFromMain(): boolean {\n return Boolean(this.extensions.findCoreExtension(Extensions.remove)?.config?.removeOnMain);\n }\n\n /**\n * Validate the version model properties, to make sure we are not inserting something\n * in the wrong format\n */\n validate(): void {\n validateVersionInstance(this);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1187,7 +1187,8 @@ bit import ${this.id()}@${resolvedVersion} --objects --all-history`
|
|
|
1187
1187
|
mainFile: version.mainFile,
|
|
1188
1188
|
dependencies: this.addDepsInfoFromDepsResolver(version.dependencies, extensions),
|
|
1189
1189
|
devDependencies: this.addDepsInfoFromDepsResolver(version.devDependencies, extensions),
|
|
1190
|
-
|
|
1190
|
+
// a new list, but the ids themselves are immutable, no need to clone them
|
|
1191
|
+
flattenedDependencies: ComponentIdList.fromArray(version.flattenedDependencies),
|
|
1191
1192
|
packageDependencies: clone(version.packageDependencies),
|
|
1192
1193
|
devPackageDependencies: clone(version.devPackageDependencies),
|
|
1193
1194
|
peerPackageDependencies: clone(version.peerPackageDependencies),
|
package/models/version.ts
CHANGED
|
@@ -236,8 +236,6 @@ export default class Version extends BitObject {
|
|
|
236
236
|
}
|
|
237
237
|
|
|
238
238
|
id() {
|
|
239
|
-
const obj = this.toObject();
|
|
240
|
-
|
|
241
239
|
const getDependencies = (deps: Dependencies) => {
|
|
242
240
|
const clonedDependencies = deps.cloneAsString();
|
|
243
241
|
return clonedDependencies.map((dependency) => {
|
|
@@ -269,17 +267,18 @@ export default class Version extends BitObject {
|
|
|
269
267
|
return JSON.stringify(
|
|
270
268
|
pickBy(
|
|
271
269
|
{
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
270
|
+
// only what the hash needs, not `toObject()`, which serializes the whole version (e.g. a deep clone of all extensions)
|
|
271
|
+
mainFile: this.mainFile,
|
|
272
|
+
files: this.filesToObject(),
|
|
273
|
+
log: this.logToObject(),
|
|
275
274
|
dependencies: getDependencies(this.dependencies),
|
|
276
275
|
devDependencies: getDependencies(this.devDependencies),
|
|
277
276
|
extensionDependencies: getDependencies(this.extensionDependencies),
|
|
278
|
-
packageDependencies:
|
|
279
|
-
devPackageDependencies:
|
|
280
|
-
peerPackageDependencies:
|
|
281
|
-
bindingPrefix:
|
|
282
|
-
overrides:
|
|
277
|
+
packageDependencies: this.packageDependencies,
|
|
278
|
+
devPackageDependencies: this.devPackageDependencies,
|
|
279
|
+
peerPackageDependencies: this.peerPackageDependencies,
|
|
280
|
+
bindingPrefix: this.bindingPrefix,
|
|
281
|
+
overrides: this.overrides,
|
|
283
282
|
extensions: getExtensions(this.extensions),
|
|
284
283
|
},
|
|
285
284
|
filterFunction
|
|
@@ -439,28 +438,32 @@ export default class Version extends BitObject {
|
|
|
439
438
|
return Source.from(dependenciesGraphBuffer);
|
|
440
439
|
}
|
|
441
440
|
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
441
|
+
private filesToObject() {
|
|
442
|
+
return this.files?.map((file) => ({
|
|
443
|
+
file: file.file.toString(),
|
|
444
|
+
relativePath: file.relativePath,
|
|
445
|
+
name: file.name,
|
|
446
|
+
test: file.test,
|
|
447
|
+
}));
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
private logToObject() {
|
|
451
|
+
return {
|
|
452
|
+
message: this.log.message,
|
|
453
|
+
date: this.log.date,
|
|
454
|
+
username: this.log.username,
|
|
455
|
+
email: this.log.email,
|
|
450
456
|
};
|
|
457
|
+
}
|
|
451
458
|
|
|
459
|
+
toObject() {
|
|
452
460
|
return pickBy(
|
|
453
461
|
{
|
|
454
|
-
files: this.
|
|
462
|
+
files: this.filesToObject(),
|
|
455
463
|
mainFile: this.mainFile,
|
|
456
464
|
bindingPrefix: this.bindingPrefix,
|
|
457
465
|
schema: this.schema,
|
|
458
|
-
log:
|
|
459
|
-
message: this.log.message,
|
|
460
|
-
date: this.log.date,
|
|
461
|
-
username: this.log.username,
|
|
462
|
-
email: this.log.email,
|
|
463
|
-
},
|
|
466
|
+
log: this.logToObject(),
|
|
464
467
|
docs: this.docs,
|
|
465
468
|
dependencies: this.dependencies.cloneAsObject(),
|
|
466
469
|
devDependencies: this.devDependencies.cloneAsObject(),
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teambit/objects",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.698",
|
|
4
4
|
"homepage": "https://bit.cloud/teambit/scope/objects",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"componentId": {
|
|
7
7
|
"scope": "teambit.scope",
|
|
8
8
|
"name": "objects",
|
|
9
|
-
"version": "0.0.
|
|
9
|
+
"version": "0.0.698"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@pnpm/lockfile.types": "1100.0.19",
|
|
@@ -22,33 +22,33 @@
|
|
|
22
22
|
"@teambit/harmony.modules.runtimes": "0.0.1",
|
|
23
23
|
"@teambit/component-id": "1.2.4",
|
|
24
24
|
"@teambit/legacy.utils": "0.0.52",
|
|
25
|
-
"@teambit/harmony.modules.get-basic-log": "0.0.173",
|
|
26
25
|
"@teambit/bit-error": "0.0.404",
|
|
27
26
|
"@teambit/component-version": "1.0.4",
|
|
28
|
-
"@teambit/component.snap-distance": "0.0.173",
|
|
29
|
-
"@teambit/config-store": "0.0.283",
|
|
30
27
|
"@teambit/lane-id": "0.0.312",
|
|
31
28
|
"@teambit/legacy.cli.error": "0.0.63",
|
|
32
29
|
"@teambit/legacy.constants": "0.0.46",
|
|
33
30
|
"@teambit/legacy.logger": "0.0.63",
|
|
34
|
-
"@teambit/legacy.scope": "0.0.172",
|
|
35
31
|
"@teambit/toolbox.crypto.sha1": "0.0.22",
|
|
36
|
-
"@teambit/component.sources": "0.0.224",
|
|
37
32
|
"@teambit/harmony.modules.concurrency": "0.0.47",
|
|
38
33
|
"@teambit/legacy-bit-id": "1.1.3",
|
|
39
34
|
"@teambit/legacy-component-log": "0.0.432",
|
|
40
|
-
"@teambit/legacy.consumer-component": "0.0.173",
|
|
41
|
-
"@teambit/legacy.consumer-config": "0.0.172",
|
|
42
|
-
"@teambit/legacy.extension-data": "0.0.174",
|
|
43
35
|
"@teambit/pkg.modules.semver-helper": "0.0.36",
|
|
44
36
|
"@teambit/toolbox.array.duplications-finder": "0.0.16",
|
|
45
37
|
"@teambit/toolbox.promise.map-pool": "0.0.21",
|
|
46
38
|
"@teambit/graph.cleargraph": "0.0.11",
|
|
47
39
|
"@teambit/bit.get-bit-version": "0.0.29",
|
|
48
|
-
"@teambit/semantics.doc-parser": "0.0.180",
|
|
49
40
|
"@teambit/harmony.modules.in-memory-cache": "0.0.51",
|
|
50
41
|
"@teambit/toolbox.fs.remove-empty-dir": "0.0.20",
|
|
51
|
-
"@teambit/
|
|
42
|
+
"@teambit/harmony.modules.get-basic-log": "0.0.174",
|
|
43
|
+
"@teambit/component.snap-distance": "0.0.174",
|
|
44
|
+
"@teambit/config-store": "0.0.284",
|
|
45
|
+
"@teambit/legacy.scope": "0.0.173",
|
|
46
|
+
"@teambit/component.sources": "0.0.225",
|
|
47
|
+
"@teambit/legacy.consumer-component": "0.0.174",
|
|
48
|
+
"@teambit/legacy.consumer-config": "0.0.173",
|
|
49
|
+
"@teambit/legacy.extension-data": "0.0.175",
|
|
50
|
+
"@teambit/semantics.doc-parser": "0.0.181",
|
|
51
|
+
"@teambit/graph": "1.0.1191"
|
|
52
52
|
},
|
|
53
53
|
"devDependencies": {
|
|
54
54
|
"@types/semver": "7.5.8",
|
|
File without changes
|