@teambit/objects 0.0.121 → 0.0.122
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/dependencies-graph.js +1 -2
- package/dist/models/dependencies-graph.js.map +1 -1
- package/dist/models/model-component.js +11 -7
- package/dist/models/model-component.js.map +1 -1
- package/dist/objects/repository.js +1 -2
- package/dist/objects/repository.js.map +1 -1
- package/dist/objects/scope-index.js +1 -2
- package/dist/objects/scope-index.js.map +1 -1
- package/models/model-component.ts +13 -6
- package/package.json +5 -5
- /package/dist/{preview-1746354885172.js → preview-1746587937169.js} +0 -0
@@ -18,8 +18,7 @@ function dp() {
|
|
18
18
|
};
|
19
19
|
return data;
|
20
20
|
}
|
21
|
-
function
|
22
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
21
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
23
22
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
24
23
|
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
25
24
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_semver","data","_interopRequireDefault","require","dp","_interopRequireWildcard","
|
1
|
+
{"version":3,"names":["_semver","data","_interopRequireDefault","require","dp","_interopRequireWildcard","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_defineProperty","_toPropertyKey","value","enumerable","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","DEPENDENCIES_GRAPH_SCHEMA_VERSION","DependenciesGraph","constructor","packages","edges","schemaVersion","serialize","JSON","stringify","fromEntries","entries","deserialize","parsed","parse","undefined","Map","merge","graph","directDependencies","findRootEdge","neighbours","directDep","existingDirectDeps","existingDirectDep","find","name","specifier","push","id","nodeIdLessThan","newPkgId","newPkgAttr","isEmpty","size","length","ROOT_EDGE_ID","exports","nodeId1","nodeId2","parsed1","version","parsed2","semver","lt"],"sources":["dependencies-graph.ts"],"sourcesContent":["import semver from 'semver';\nimport { PackageInfo } from '@pnpm/lockfile.types';\nimport * as dp from '@pnpm/dependency-path';\n\nexport type PackagesMap = Map<string, PackageAttributes>;\n\nexport type PackageAttributes = PackageInfo & {\n component?: {\n scope: string;\n name: string;\n };\n requiresBuild?: boolean;\n};\n\nexport type DependencyEdge = {\n id: string;\n neighbours: DependencyNeighbour[];\n attr?: {\n pkgId?: string;\n transitivePeerDependencies?: string[];\n };\n};\n\nexport type DependencyNeighbour = {\n id: string;\n /**\n * This is true when the dependency is from optionalDependencies.\n */\n optional?: boolean;\n name?: string;\n specifier?: string;\n lifecycle?: 'runtime' | 'dev';\n};\n\nconst DEPENDENCIES_GRAPH_SCHEMA_VERSION = '2.0';\n\nexport class DependenciesGraph {\n static ROOT_EDGE_ID = '.';\n\n schemaVersion: string;\n packages: PackagesMap;\n edges: DependencyEdge[];\n\n constructor({\n packages,\n edges,\n schemaVersion,\n }: {\n packages: PackagesMap;\n edges: DependencyEdge[];\n schemaVersion?: string;\n }) {\n this.packages = packages;\n this.edges = edges;\n this.schemaVersion = schemaVersion ?? DEPENDENCIES_GRAPH_SCHEMA_VERSION;\n }\n\n serialize(): string {\n return JSON.stringify({\n schemaVersion: this.schemaVersion,\n packages: Object.fromEntries(this.packages.entries()),\n edges: this.edges,\n });\n }\n\n static deserialize(data: string): DependenciesGraph | undefined {\n const parsed = JSON.parse(data);\n // If the schema version is not supported, then we just ignore the data\n if (parsed.schemaVersion !== DEPENDENCIES_GRAPH_SCHEMA_VERSION) {\n return undefined;\n }\n return new DependenciesGraph({\n schemaVersion: parsed.schemaVersion,\n edges: parsed.edges,\n packages: new Map(Object.entries(parsed.packages)),\n });\n }\n\n merge(graph: DependenciesGraph): void {\n const directDependencies = graph.findRootEdge()?.neighbours;\n if (directDependencies) {\n for (const directDep of directDependencies) {\n const existingDirectDeps = this.findRootEdge()?.neighbours;\n if (existingDirectDeps) {\n const existingDirectDep = existingDirectDeps.find(\n ({ name, specifier }) => name === directDep.name && specifier === directDep.specifier\n );\n if (existingDirectDep == null) {\n existingDirectDeps.push(directDep);\n } else if (existingDirectDep.id !== directDep.id && nodeIdLessThan(existingDirectDep.id, directDep.id)) {\n existingDirectDep.id = directDep.id;\n }\n }\n }\n }\n for (const [newPkgId, newPkgAttr] of graph.packages.entries()) {\n this.packages.set(newPkgId, newPkgAttr);\n }\n this.edges.push(...graph.edges);\n }\n\n isEmpty(): boolean {\n return this.packages.size === 0 && this.edges.length === 0;\n }\n\n /**\n * Returns the edge related to the root component\n */\n findRootEdge(): DependencyEdge | undefined {\n return this.edges.find(({ id }) => id === DependenciesGraph.ROOT_EDGE_ID);\n }\n}\n\nfunction nodeIdLessThan(nodeId1: string, nodeId2: string): boolean {\n const parsed1 = dp.parse(nodeId1);\n if (!parsed1?.version) return false;\n const parsed2 = dp.parse(nodeId2);\n if (!parsed2?.version) return false;\n return semver.lt(parsed1.version, parsed2.version);\n}\n"],"mappings":"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","ignoreList":[]}
|
@@ -180,8 +180,7 @@ function _harmonyModules() {
|
|
180
180
|
return data;
|
181
181
|
}
|
182
182
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
183
|
-
function
|
184
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
183
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
185
184
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
186
185
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
187
186
|
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
@@ -635,6 +634,7 @@ class Component extends _objects().BitObject {
|
|
635
634
|
const headVersion = head ? await repo.load(head) : undefined;
|
636
635
|
const removeAspect = headVersion?.extensions.findCoreExtension(_legacy().Extensions.remove);
|
637
636
|
const removeRange = removeAspect?.config.range;
|
637
|
+
const removeSnaps = removeAspect?.config.snaps || [];
|
638
638
|
const deprecationAspect = headVersion?.extensions.findCoreExtension(_legacy().Extensions.deprecation);
|
639
639
|
const deprecationRange = deprecationAspect?.config.range;
|
640
640
|
const getRef = ref => shortHash ? ref.toShortString() : ref.toString();
|
@@ -651,7 +651,7 @@ class Component extends _objects().BitObject {
|
|
651
651
|
hash: getRef(versionInfo.ref),
|
652
652
|
parents: versionInfo.parents.map(parent => getRef(parent)),
|
653
653
|
onLane: versionInfo.onLane,
|
654
|
-
deleted: versionInfo.tag && removeRange && semver().satisfies(versionInfo.tag, removeRange),
|
654
|
+
deleted: versionInfo.tag && removeRange && semver().satisfies(versionInfo.tag, removeRange) || !versionInfo.tag && removeSnaps.includes(versionInfo.ref.toString()),
|
655
655
|
deprecated: versionInfo.tag && deprecationRange && semver().satisfies(versionInfo.tag, deprecationRange),
|
656
656
|
hidden: versionInfo.version?.hidden
|
657
657
|
});
|
@@ -1040,10 +1040,14 @@ consider using --ignore-missing-artifacts flag if you're sure the artifacts are
|
|
1040
1040
|
if (removeAspect.config.removed) {
|
1041
1041
|
return true;
|
1042
1042
|
}
|
1043
|
-
if (specificVersion
|
1044
|
-
|
1045
|
-
|
1046
|
-
|
1043
|
+
if (specificVersion) {
|
1044
|
+
if (removeAspect.config.range) {
|
1045
|
+
const tag = this.getTag(specificVersion);
|
1046
|
+
if (tag) return semver().satisfies(tag, removeAspect.config.range);
|
1047
|
+
}
|
1048
|
+
if (removeAspect.config.snaps && Array.isArray(removeAspect.config.snaps)) {
|
1049
|
+
return removeAspect.config.snaps.includes(specificVersion);
|
1050
|
+
}
|
1047
1051
|
}
|
1048
1052
|
return false;
|
1049
1053
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_lodash","data","require","_asyncMutex","semver","_interopRequireWildcard","_componentVersion","_bitError","_laneId","_componentId","_pMapSeries","_interopRequireDefault","_toolboxArray","_legacyBitId","_legacy","_legacy2","_component","_legacy3","_legacyCli","_legacy4","_legacy5","_pkgModules","_component2","_legacy6","_objects","_scopeMeta","_versionHistory","_detachHeads","_harmonyModules","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","ownKeys","keys","getOwnPropertySymbols","o","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","versionsIncludeOrphaned","isHash","Ref","getHeadStr","toString","getHead","getHeadRegardlessOfLane","laneHeadLocal","getHeadAsTagIfExist","undefined","getTagOfRefIfExists","hasHead","Boolean","setHead","listVersions","sort","compare","reverse","listVersionsIncludeOrphaned","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","getComponentHead","_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","deprecationAspect","deprecation","deprecationRange","toShortString","results","versionInfo","log","message","username","email","parents","parent","onLane","deleted","satisfies","hidden","sorted","b","collectVersions","Promise","all","versionNum","toConsumerComponent","allTags","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","addComponentToUpdateDependents","changeVersion","setOverrideUpdateDependents","addComponent","isDeleted","isRemoved","readmeComponent","fullName","setReadmeComponent","parentToSet","isFeatureEnabled","DETACH_HEAD","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","removed","isLaneReadmeOf","lanesAspect","lanes","readme","scopeName","trace","componentVersion","getVersion","LATEST_VERSION","isSnap","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","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 { 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 { ConsumerComponent, SchemaName, Dependencies, Dependency } 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 {\n SnapsDistance,\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 { Repository, BitObject, Ref } from '../objects';\nimport Lane from './lane';\nimport ScopeMeta from './scopeMeta';\nimport Source from './source';\nimport Version from './version';\nimport VersionHistory, { VersionParents } from './version-history';\nimport { ObjectItem } from '../objects/object-list';\nimport type { Scope } from '@teambit/legacy.scope';\nimport { ExtensionDataList } from '@teambit/legacy.extension-data';\nimport { DetachedHeads } from './detach-heads';\nimport { DETACH_HEAD, isFeatureEnabled } from '@teambit/harmony.modules.feature-toggle';\n\ntype State = {\n versions?: {\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\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\n// @ts-ignore\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.versionsIncludeOrphaned[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 get versionsIncludeOrphaned(): Versions {\n // for bit-bin with 266 components, it takes about 1,700ms. don't use lodash.merge, it's much faster\n // 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 && lane.forkedFrom.scope === lane.scope) {\n // the last check is to make sure that if this lane will be exported to a different scope than the original\n // lane, all snaps of the original lane will be considered as local and will be exported later on.\n const headFromFork = await repo.remoteLanes.getRef(lane.forkedFrom, this.toComponentId());\n if (headFromFork) return headFromFork;\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 this.laneHeadLocal = lane.getComponentHead(this.toComponentId());\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 } 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 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: versionInfo.tag && removeRange && semver.satisfies(versionInfo.tag, removeRange),\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 // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n return this.toConsumerComponent(versionNum, this.scope, repo);\n })\n );\n }\n\n getTagOfRefIfExists(ref: Ref, allTags = this.versionsIncludeOrphaned): string | undefined {\n return Object.keys(allTags).find((versionRef) => allTags[versionRef].isEqual(ref));\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 // cache the this.versionsIncludeOrphaned results into \"allTags\", looks strange but it improved\n // the performance on bit-bin with 188 components during source.merge in 4 seconds.\n const allTags = this.versionsIncludeOrphaned;\n return refs.map((ref) => this.getTagOfRefIfExists(ref, allTags) || 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 if (addToUpdateDependentsInLane) {\n lane.addComponentToUpdateDependents(currentBitId.changeVersion(versionToAddRef.toString()));\n lane.setOverrideUpdateDependents(true);\n } else {\n lane.addComponent({ id: currentBitId, head: versionToAddRef, isDeleted: version.isRemoved() });\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 && isFeatureEnabled(DETACH_HEAD)) {\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}).\nif this is done intentionally, please re-run with --detach-head (or --override-head if available).\notherwise, please run \"bit checkout head\" to be up to date, then snap/tag your changes.`);\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) =>\n isTag(v) ? this.versionsIncludeOrphaned[v].hash : v\n );\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 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 && removeAspect.config.range) {\n const tag = this.getTag(specificVersion);\n if (!tag) return false; // it's a snap. \"range\" doesn't support snaps. only semver.\n return semver.satisfies(tag, removeAspect.config.range);\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 loadFileInstance = (ClassName) => async (file) => {\n const loadP = file.file.load(repository);\n const content: Source = await loadP;\n if (!content)\n throw new BitError(`failed loading file ${file.relativePath} from the model of ${this.id()}@${versionStr}`);\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 // @ts-ignore\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): Promise<string[]> {\n const localHashes = await this.getLocalHashes(repo, workspaceId);\n if (!localHashes.length) return [];\n return this.switchHashesWithTagsIfExist(localHashes).reverse(); // reverse to get the older first\n }\n\n async getLocalHashes(repo: Repository, workspaceId?: ComponentID): Promise<Ref[]> {\n await this.setDivergeData(repo, undefined, undefined, workspaceId);\n const divergeData = this.getDivergeData();\n const localHashes = divergeData.snapsOnSourceOnly;\n if (!localHashes.length) return [];\n return localHashes.reverse(); // reverse to get the older first\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;AAEA,SAAAW,cAAA;EAAA,MAAAX,IAAA,GAAAC,OAAA;EAAAU,aAAA,YAAAA,CAAA;IAAA,OAAAX,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAY,aAAA;EAAA,MAAAZ,IAAA,GAAAC,OAAA;EAAAW,YAAA,YAAAA,CAAA;IAAA,OAAAZ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAa,QAAA;EAAA,MAAAb,IAAA,GAAAC,OAAA;EAAAY,OAAA,YAAAA,CAAA;IAAA,OAAAb,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAc,SAAA;EAAA,MAAAd,IAAA,GAAAC,OAAA;EAAAa,QAAA,YAAAA,CAAA;IAAA,OAAAd,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAe,WAAA;EAAA,MAAAf,IAAA,GAAAC,OAAA;EAAAc,UAAA,YAAAA,CAAA;IAAA,OAAAf,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,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,SAAA;EAAA,MAAAnB,IAAA,GAAAC,OAAA;EAAAkB,QAAA,YAAAA,CAAA;IAAA,OAAAnB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAoB,YAAA;EAAA,MAAApB,IAAA,GAAAC,OAAA;EAAAmB,WAAA,YAAAA,CAAA;IAAA,OAAApB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAqB,YAAA;EAAA,MAAArB,IAAA,GAAAC,OAAA;EAAAoB,WAAA,YAAAA,CAAA;IAAA,OAAArB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAOA,SAAAsB,SAAA;EAAA,MAAAtB,IAAA,GAAAC,OAAA;EAAAqB,QAAA,YAAAA,CAAA;IAAA,OAAAtB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAYA,SAAAuB,SAAA;EAAA,MAAAvB,IAAA,GAAAC,OAAA;EAAAsB,QAAA,YAAAA,CAAA;IAAA,OAAAvB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAwB,WAAA;EAAA,MAAAxB,IAAA,GAAAU,sBAAA,CAAAT,OAAA;EAAAuB,UAAA,YAAAA,CAAA;IAAA,OAAAxB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAGA,SAAAyB,gBAAA;EAAA,MAAAzB,IAAA,GAAAU,sBAAA,CAAAT,OAAA;EAAAwB,eAAA,YAAAA,CAAA;IAAA,OAAAzB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAIA,SAAA0B,aAAA;EAAA,MAAA1B,IAAA,GAAAC,OAAA;EAAAyB,YAAA,YAAAA,CAAA;IAAA,OAAA1B,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAA2B,gBAAA;EAAA,MAAA3B,IAAA,GAAAC,OAAA;EAAA0B,eAAA,YAAAA,CAAA;IAAA,OAAA3B,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAwF,SAAAU,uBAAAkB,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAG,yBAAAH,CAAA,6BAAAI,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAD,wBAAA,YAAAA,CAAAH,CAAA,WAAAA,CAAA,GAAAM,CAAA,GAAAD,CAAA,KAAAL,CAAA;AAAA,SAAAxB,wBAAAwB,CAAA,EAAAK,CAAA,SAAAA,CAAA,IAAAL,CAAA,IAAAA,CAAA,CAAAC,UAAA,SAAAD,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAE,OAAA,EAAAF,CAAA,QAAAM,CAAA,GAAAH,wBAAA,CAAAE,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAC,GAAA,CAAAP,CAAA,UAAAM,CAAA,CAAAE,GAAA,CAAAR,CAAA,OAAAS,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAf,CAAA,oBAAAe,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAe,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAd,CAAA,EAAAe,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAf,CAAA,CAAAe,CAAA,YAAAN,CAAA,CAAAP,OAAA,GAAAF,CAAA,EAAAM,CAAA,IAAAA,CAAA,CAAAa,GAAA,CAAAnB,CAAA,EAAAS,CAAA,GAAAA,CAAA;AAAA,SAAAW,QAAApB,CAAA,EAAAK,CAAA,QAAAC,CAAA,GAAAM,MAAA,CAAAS,IAAA,CAAArB,CAAA,OAAAY,MAAA,CAAAU,qBAAA,QAAAC,CAAA,GAAAX,MAAA,CAAAU,qBAAA,CAAAtB,CAAA,GAAAK,CAAA,KAAAkB,CAAA,GAAAA,CAAA,CAAAC,MAAA,WAAAnB,CAAA,WAAAO,MAAA,CAAAE,wBAAA,CAAAd,CAAA,EAAAK,CAAA,EAAAoB,UAAA,OAAAnB,CAAA,CAAAoB,IAAA,CAAAC,KAAA,CAAArB,CAAA,EAAAiB,CAAA,YAAAjB,CAAA;AAAA,SAAAsB,cAAA5B,CAAA,aAAAK,CAAA,MAAAA,CAAA,GAAAwB,SAAA,CAAAC,MAAA,EAAAzB,CAAA,UAAAC,CAAA,WAAAuB,SAAA,CAAAxB,CAAA,IAAAwB,SAAA,CAAAxB,CAAA,QAAAA,CAAA,OAAAe,OAAA,CAAAR,MAAA,CAAAN,CAAA,OAAAyB,OAAA,WAAA1B,CAAA,IAAA2B,eAAA,CAAAhC,CAAA,EAAAK,CAAA,EAAAC,CAAA,CAAAD,CAAA,SAAAO,MAAA,CAAAqB,yBAAA,GAAArB,MAAA,CAAAsB,gBAAA,CAAAlC,CAAA,EAAAY,MAAA,CAAAqB,yBAAA,CAAA3B,CAAA,KAAAc,OAAA,CAAAR,MAAA,CAAAN,CAAA,GAAAyB,OAAA,WAAA1B,CAAA,IAAAO,MAAA,CAAAC,cAAA,CAAAb,CAAA,EAAAK,CAAA,EAAAO,MAAA,CAAAE,wBAAA,CAAAR,CAAA,EAAAD,CAAA,iBAAAL,CAAA;AAAA,SAAAgC,gBAAAhC,CAAA,EAAAK,CAAA,EAAAC,CAAA,YAAAD,CAAA,GAAA8B,cAAA,CAAA9B,CAAA,MAAAL,CAAA,GAAAY,MAAA,CAAAC,cAAA,CAAAb,CAAA,EAAAK,CAAA,IAAA+B,KAAA,EAAA9B,CAAA,EAAAmB,UAAA,MAAAY,YAAA,MAAAC,QAAA,UAAAtC,CAAA,CAAAK,CAAA,IAAAC,CAAA,EAAAN,CAAA;AAAA,SAAAmC,eAAA7B,CAAA,QAAAY,CAAA,GAAAqB,YAAA,CAAAjC,CAAA,uCAAAY,CAAA,GAAAA,CAAA,GAAAA,CAAA;AAAA,SAAAqB,aAAAjC,CAAA,EAAAD,CAAA,2BAAAC,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAN,CAAA,GAAAM,CAAA,CAAAkC,MAAA,CAAAC,WAAA,kBAAAzC,CAAA,QAAAkB,CAAA,GAAAlB,CAAA,CAAAiB,IAAA,CAAAX,CAAA,EAAAD,CAAA,uCAAAa,CAAA,SAAAA,CAAA,YAAAwB,SAAA,yEAAArC,CAAA,GAAAsC,MAAA,GAAAC,MAAA,EAAAtC,CAAA;AA8CjF,MAAMuC,YAAY,GAAAC,OAAA,CAAAD,YAAA,GAAG,OAAO;;AAEnC;AACA;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,OAAO1D,MAAM,CAAC2D,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,CAACE,uBAAuB,CAACF,OAAO,CAAC;IAC9C;IACA,IAAI,IAAAG,0BAAM,EAACH,OAAO,CAAC,EAAE;MACnB,OAAO,KAAII,cAAG,EAACJ,OAAO,CAAC;IACzB;IACA,OAAO,IAAI;EACb;EAEAK,UAAUA,CAAA,EAAkB;IAC1B,OAAO,IAAI,CAACrB,IAAI,GAAG,IAAI,CAACA,IAAI,CAACsB,QAAQ,CAAC,CAAC,GAAG,IAAI;EAChD;EAEAC,OAAOA,CAAA,EAAoB;IACzB,OAAO,IAAI,CAACvB,IAAI;EAClB;;EAEA;AACF;AACA;AACA;EACEwB,uBAAuBA,CAAA,EAAoB;IACzC,OAAO,IAAI,CAACC,aAAa,IAAI,IAAI,CAACF,OAAO,CAAC,CAAC;EAC7C;EAEAG,mBAAmBA,CAAA,EAAuB;IACxC,IAAI,CAAC,IAAI,CAAC1B,IAAI,EAAE,OAAO2B,SAAS;IAChC,OAAO,IAAI,CAACC,mBAAmB,CAAC,IAAI,CAAC5B,IAAI,CAAC,IAAI,IAAI,CAACA,IAAI,CAACsB,QAAQ,CAAC,CAAC;EACpE;EAEAO,OAAOA,CAAA,EAAG;IACR,OAAOC,OAAO,CAAC,IAAI,CAAC9B,IAAI,CAAC;EAC3B;EAEA+B,OAAOA,CAAC/B,IAAqB,EAAE;IAC7B,IAAI,CAACA,IAAI,GAAGA,IAAI;EAClB;EAEAgC,YAAYA,CAACC,IAAqB,EAAY;IAC5C,MAAM1C,QAAQ,GAAG1C,MAAM,CAACS,IAAI,CAAC,IAAI,CAACiC,QAAQ,CAAC;IAC3C,IAAI,CAAC0C,IAAI,EAAE,OAAO1C,QAAQ;IAC1B,IAAI0C,IAAI,KAAK,KAAK,EAAE;MAClB,OAAO1C,QAAQ,CAAC0C,IAAI,CAACzH,MAAM,CAAD,CAAC,CAAC0H,OAAO,CAAC;IACtC;IAEA,OAAO3C,QAAQ,CAAC0C,IAAI,CAACzH,MAAM,CAAD,CAAC,CAAC0H,OAAO,CAAC,CAACC,OAAO,CAAC,CAAC;EAChD;EAEAC,2BAA2BA,CAACH,IAAqB,EAAY;IAC3D,MAAM1C,QAAQ,GAAG1C,MAAM,CAACS,IAAI,CAAC,IAAI,CAAC4D,uBAAuB,CAAC;IAC1D,IAAI,CAACe,IAAI,EAAE,OAAO1C,QAAQ;IAC1B,IAAI0C,IAAI,KAAK,KAAK,EAAE;MAClB,OAAO1C,QAAQ,CAAC0C,IAAI,CAACzH,MAAM,CAAD,CAAC,CAAC0H,OAAO,CAAC;IACtC;IAEA,OAAO3C,QAAQ,CAAC0C,IAAI,CAACzH,MAAM,CAAD,CAAC,CAAC0H,OAAO,CAAC,CAACC,OAAO,CAAC,CAAC;EAChD;EAEA,MAAME,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,CAACwB,uBAAuB,CAAC,CAAC;IAC3C,IAAI,CAACxB,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,CAAC1B,QAAQ,CAAC,CAAC,CAAC4B,UAAU,CAAClC,OAAO,CAAC,CAAC;EAC9F;EAEAyB,MAAMA,CAACzB,OAAe,EAAW;IAC/B,OAAOc,OAAO,CAAC,IAAI,CAACvC,QAAQ,CAACyB,OAAO,CAAC,CAAC;EACxC;EAEA,IAAIE,uBAAuBA,CAAA,EAAa;IACtC;IACA;IACA,OAAArD,aAAA,CAAAA,aAAA,KAAY,IAAI,CAAC0B,QAAQ,GAAK,IAAI,CAACC,gBAAgB;EACrD;EAEAgD,qBAAqBA,CAACxB,OAAe,EAAW;IAC9C,OAAOc,OAAO,CAAC,IAAI,CAACvC,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,CAACW,QAAQ,CAAC,CAAC,CAAC;IACjE,OAAO,IAAI,CAACtB,IAAI,IAAI,CAACoD,UAAU,CAACC,QAAQ,CAAC,IAAI,CAACrD,IAAI,CAACsB,QAAQ,CAAC,CAAC,CAAC;EAChE;;EAEA;AACF;AACA;EACEgC,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,CAAEpH,CAAC,IAAKA,CAAC,CAACkH,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,GAAGxC,SAAS;QACxEiC;MACF,CAAC,CAAC;IACJ;EACF;EAEAQ,QAAQA,CAAA,EAAY;IAClB,OAAOtC,OAAO,CAAC,IAAI,CAACL,aAAa,IAAI,IAAI,CAACA,aAAa,KAAK,IAAI,CAAC;EACnE;;EAEA;AACF;AACA;AACA;EACE4C,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,IAAIV,IAAI,CAACU,UAAU,CAAChG,KAAK,KAAKsF,IAAI,CAACtF,KAAK,EAAE;QACzE;QACA;QACA,MAAMiG,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;MACvC;MACA;MACA;MACA,OAAO,IAAI,CAACtB,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,IAAI,CAAClD,aAAa,GAAGkD,IAAI,CAACY,gBAAgB,CAAC,IAAI,CAACL,aAAa,CAAC,CAAC,CAAC;IAClE;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,KAAKnJ,MAAM,CAACS,IAAI,CAAC,IAAI,CAACiC,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,KAAKnJ,MAAM,CAACS,IAAI,CAACuI,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,OAAO7I,MAAM,CAACS,IAAI,CAAC2I,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,CAACsC,OAAO,CAAC,CAAC;EAClD;;EAEA;AACF;AACA;AACA;EACE0E,kCAAkCA,CAACC,0BAA0B,GAAG,KAAK,EAAU;IAC7E,MAAMxG,IAAI,GAAG,IAAI,CAACwB,uBAAuB,CAAC,CAAC;IAC3C,IAAI,CAACxB,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,CAACc,mBAAmB,CAAC5B,IAAI,CAAC,IAAIA,IAAI,CAACsB,QAAQ,CAAC,CAAC;EAC1D;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAMmF,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,CAAClF,uBAAuB,CAAC,CAAC,EAAE;MACnC,OAAOwC,UAAU,CAAC1C,QAAQ,CAAC,CAAC,CAAC,CAAC;IAChC;;IAEA;IACA,IAAI,IAAI,CAAC2C,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,CAAC/E,mBAAmB,CAACoC,UAAU,CAAC,IAAIA,UAAU,CAAC1C,QAAQ,CAAC,CAAC;IACtE;IACA,OAAOoF,aAAa;EACtB;EAEA,MAAME,gBAAgBA,CAACtE,IAAgB,EAAEuE,mBAA2B,EAAgB;IAClF,MAAM7G,IAAI,GAAG,IAAI,CAACwB,uBAAuB,CAAC,CAAC;IAC3C,IAAI,CAACxB,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,CAACnF,YAAY,CAAC,CAAC,CAAC;EAC9C;EAEAoF,oBAAoBA,CAAA,EAAuB;IACzC,IAAI,IAAAd,iBAAO,EAAC,IAAI,CAAC/G,QAAQ,CAAC,EAAE,OAAOoC,SAAS;IAC5C,OAAO,IAAAwF,8BAAgB,EAAC,IAAI,CAACnF,YAAY,CAAC,CAAC,CAAC;EAC9C;;EAEA;EACAqF,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,OAAOxG,MAAM,CAAD,CAAC,CAAC+M,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,CAAClG,QAAQ,CAAC,CAAC;IACvC,MAAMoG,UAAU,GAAG,IAAI,CAAC3G,MAAM,CAACC,OAAO,CAAC;IACvC,IAAI,CAAC0G,UAAU,EAAE,OAAO,IAAI,CAAC,CAAC;IAC9B,MAAMC,WAAW,GAAGD,UAAU,CAACpG,QAAQ,CAAC,CAAC;IACzC,IAAImG,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,CAACyC,YAAY,CAAC,KAAK,CAAC;IACzC,IAAIhB,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,IAAIhD,SAAS;UACvB0H,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;MACnG,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,CAACwB,uBAAuB,CAAC,CAAC;IAC3C,MAAM+H,WAAW,GAAGvJ,IAAI,GAAK,MAAMsC,IAAI,CAACkH,IAAI,CAACxJ,IAAI,CAAC,GAA2B2B,SAAS;IACtF,MAAM8H,YAAY,GAAGF,WAAW,EAAEG,UAAU,CAACC,iBAAiB,CAACC,oBAAU,CAACC,MAAM,CAAC;IACjF,MAAMC,WAAW,GAAGL,YAAY,EAAEM,MAAM,CAACC,KAAK;IAC9C,MAAMC,iBAAiB,GAAGV,WAAW,EAAEG,UAAU,CAACC,iBAAiB,CAACC,oBAAU,CAACM,WAAW,CAAC;IAC3F,MAAMC,gBAAgB,GAAGF,iBAAiB,EAAEF,MAAM,CAACC,KAAK;IAExD,MAAMjJ,MAAM,GAAIJ,GAAQ,IAAMuH,SAAS,GAAGvH,GAAG,CAACyJ,aAAa,CAAC,CAAC,GAAGzJ,GAAG,CAACW,QAAQ,CAAC,CAAE;IAC/E,MAAM+I,OAAO,GAAGhC,YAAY,CAACvF,GAAG,CAAEwH,WAAW,IAAK;MAChD,MAAMC,GAAG,GAAGD,WAAW,CAACtJ,OAAO,GAAGsJ,WAAW,CAACtJ,OAAO,CAACuJ,GAAG,GAAG;QAAEC,OAAO,EAAE;MAAsB,CAAC;MAC9F,OAAA3M,aAAA,CAAAA,aAAA,KACK0M,GAAG;QAAE;QACRE,QAAQ,EAAEF,GAAG,EAAEE,QAAQ,IAAI,SAAS;QACpC;QACAC,KAAK,EAAEH,GAAG,EAAEG,KAAK,IAAI,SAAS;QAC9BhK,GAAG,EAAE4J,WAAW,CAAC5J,GAAG;QACpBsC,IAAI,EAAEjC,MAAM,CAACuJ,WAAW,CAAC3J,GAAG,CAAC;QAC7BgK,OAAO,EAAEL,WAAW,CAACK,OAAO,CAAC7H,GAAG,CAAE8H,MAAM,IAAK7J,MAAM,CAAC6J,MAAM,CAAC,CAAC;QAC5DC,MAAM,EAAEP,WAAW,CAACO,MAAM;QAC1BC,OAAO,EAAER,WAAW,CAAC5J,GAAG,IAAIoJ,WAAW,IAAItP,MAAM,CAAD,CAAC,CAACuQ,SAAS,CAACT,WAAW,CAAC5J,GAAG,EAAEoJ,WAAW,CAAC;QACzFnK,UAAU,EAAE2K,WAAW,CAAC5J,GAAG,IAAIyJ,gBAAgB,IAAI3P,MAAM,CAAD,CAAC,CAACuQ,SAAS,CAACT,WAAW,CAAC5J,GAAG,EAAEyJ,gBAAgB,CAAC;QACtGa,MAAM,EAAEV,WAAW,CAACtJ,OAAO,EAAEgK;MAAM;IAEvC,CAAC,CAAC;IACF;IACA,MAAMC,MAAM,GAAGZ,OAAO,CAACpI,IAAI,CAAC,CAACrF,CAAe,EAAEsO,CAAe,KAAK;MAChE;MACA,IAAItO,CAAC,CAAC6G,IAAI,IAAIyH,CAAC,CAACzH,IAAI,EAAE,OAAO7G,CAAC,CAAC6G,IAAI,GAAGyH,CAAC,CAACzH,IAAI;MAC5C,OAAO,CAAC;IACV,CAAC,CAAC;IACF,OAAOwH,MAAM;EACf;EAEAE,eAAeA,CAAC7I,IAAgB,EAAgC;IAC9D,OAAO8I,OAAO,CAACC,GAAG,CAChB,IAAI,CAACrJ,YAAY,CAAC,CAAC,CAACc,GAAG,CAAEwI,UAAU,IAAK;MACtC;MACA,OAAO,IAAI,CAACC,mBAAmB,CAACD,UAAU,EAAE,IAAI,CAACjM,KAAK,EAAEiD,IAAI,CAAC;IAC/D,CAAC,CACH,CAAC;EACH;EAEAV,mBAAmBA,CAACjB,GAAQ,EAAE6K,OAAO,GAAG,IAAI,CAACtK,uBAAuB,EAAsB;IACxF,OAAOrE,MAAM,CAACS,IAAI,CAACkO,OAAO,CAAC,CAAC9H,IAAI,CAAEgE,UAAU,IAAK8D,OAAO,CAAC9D,UAAU,CAAC,CAACtB,OAAO,CAACzF,GAAG,CAAC,CAAC;EACpF;EAEA8K,MAAMA,CAACzK,OAAe,EAAsB;IAC1C,IAAI,IAAAC,yBAAK,EAACD,OAAO,CAAC,EAAE,OAAOA,OAAO;IAClC,MAAML,GAAG,GAAGS,cAAG,CAAC4D,IAAI,CAAChE,OAAO,CAAC;IAC7B,OAAO,IAAI,CAACY,mBAAmB,CAACjB,GAAG,CAAC;EACtC;EAEA+K,2BAA2BA,CAACC,IAAW,EAAY;IACjD;IACA;IACA,MAAMH,OAAO,GAAG,IAAI,CAACtK,uBAAuB;IAC5C,OAAOyK,IAAI,CAAC7I,GAAG,CAAEnC,GAAG,IAAK,IAAI,CAACiB,mBAAmB,CAACjB,GAAG,EAAE6K,OAAO,CAAC,IAAI7K,GAAG,CAACW,QAAQ,CAAC,CAAC,CAAC;EACpF;;EAEA;AACF;AACA;EACEsK,eAAeA,CACbC,WAA+B,GAAGC,kCAAwB,EAC1DC,YAA4B,EAC5BC,WAAoB,EACpBC,YAAqB,EACb;IACR,IAAIF,YAAY,IAAI,IAAI,CAACxM,QAAQ,CAACwM,YAAY,CAAC,EAAE;MAC/C,MAAM,KAAIG,+BAAoB,EAACH,YAAY,EAAE,IAAI,CAACjL,EAAE,CAAC,CAAC,CAAC;IACzD;IACA,MAAME,OAAO,GAAG+K,YAAY,IAAI,IAAI,CAAC/K,OAAO,CAAC6K,WAAW,EAAEG,WAAW,EAAEC,YAAY,CAAC;IACpF,IAAAE,6BAAe,EAACnL,OAAO,CAAC;IACxB,OAAOA,OAAO;EAChB;EAEAoF,OAAOA,CAACD,SAAoB,EAAEiG,wBAAwB,GAAG,IAAI,EAAW;IACtE,IAAK,IAAI,CAACvK,OAAO,CAAC,CAAC,IAAI,CAACsE,SAAS,CAACtE,OAAO,CAAC,CAAC,IAAM,CAAC,IAAI,CAACA,OAAO,CAAC,CAAC,IAAIsE,SAAS,CAACtE,OAAO,CAAC,CAAE,EAAE;MACxF,OAAO,KAAK,CAAC,CAAC;IAChB;IACA,IAAI,IAAI,CAAC7B,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,MAAMsO,eAAe,GAAGxP,MAAM,CAACS,IAAI,CAAC,IAAI,CAACiC,QAAQ,CAAC,CAAC+M,KAAK,CACrD5L,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,IAAI0L,wBAAwB,EAAE;MAC5B,IAAIvP,MAAM,CAACS,IAAI,CAAC,IAAI,CAACkC,gBAAgB,CAAC,CAACzB,MAAM,KAAKlB,MAAM,CAACS,IAAI,CAAC6I,SAAS,CAAC3G,gBAAgB,CAAC,CAACzB,MAAM,EAAE;QAChG,OAAO,KAAK;MACd;MACA,MAAMwO,uBAAuB,GAAG1P,MAAM,CAACS,IAAI,CAAC,IAAI,CAACkC,gBAAgB,CAAC,CAAC8M,KAAK,CACrE5L,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,CAAC6L,uBAAuB,EAAE;QAC5B,OAAO,KAAK;MACd;IACF;IAEA,OAAOF,eAAe;EACxB;;EAEA;EACAG,UAAUA,CACRxL,OAAgB,EAChByL,YAAoB,EACpB9H,IAAW,EACX+H,qBAA8B,EAC9B;IAAEC,2BAA2B;IAAEC,eAAe;IAAEC,UAAU;IAAEC;EAA6B,CAAC,GAAG,CAAC,CAAC,EACvF;IACR,IAAID,UAAU,IAAIC,YAAY,EAAE;MAC9B,MAAM,IAAIjM,KAAK,CAAC,2EAA2E,CAAC;IAC9F;IACA,IAAI8D,IAAI,EAAE;MACR,IAAI,IAAA1D,yBAAK,EAACwL,YAAY,CAAC,EAAE;QACvB,MAAM,KAAI3F,oBAAQ,EAChB,oGACF,CAAC;MACH;MACA,MAAMiG,YAAY,GAAG,IAAI,CAAC7H,aAAa,CAAC,CAAC;MACzC,MAAM8H,eAAe,GAAG5L,cAAG,CAAC4D,IAAI,CAACyH,YAAY,CAAC;MAC9C,MAAM7B,MAAM,GAAG8B,qBAAqB,GAAG,IAAI,CAAC3L,MAAM,CAAC2L,qBAAqB,CAAC,GAAG,IAAI;MAChF,IAAI,CAAC9B,MAAM,EAAE;QACX,MAAMqC,uBAAuB,GAAGtI,IAAI,CAACuI,YAAY,CAACH,YAAY,CAAC;QAC/D,MAAMI,WAAW,GAAIF,uBAAuB,IAAIA,uBAAuB,CAACjN,IAAI,IAAK,IAAI,CAACuB,OAAO,CAAC,CAAC;QAC/F,IAAI4L,WAAW,EAAE;UACf,MAAM,IAAItM,KAAK,CACb,aAAakM,YAAY,CAACzL,QAAQ,CAAC,CAAC,gBAAgB6L,WAAW,CAAC7L,QAAQ,CAAC,CAAC,sCAC5E,CAAC;QACH;MACF;MACA,IAAIsJ,MAAM,IAAI,CAACA,MAAM,CAACxE,OAAO,CAAC4G,eAAe,CAAC,EAAE;QAC9ChM,OAAO,CAACoM,eAAe,CAACxC,MAAM,CAAC;MACjC;MACA,IAAI+B,2BAA2B,EAAE;QAC/BhI,IAAI,CAAC0I,8BAA8B,CAACN,YAAY,CAACO,aAAa,CAACN,eAAe,CAAC1L,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC3FqD,IAAI,CAAC4I,2BAA2B,CAAC,IAAI,CAAC;MACxC,CAAC,MAAM;QACL5I,IAAI,CAAC6I,YAAY,CAAC;UAAE1M,EAAE,EAAEiM,YAAY;UAAE/M,IAAI,EAAEgN,eAAe;UAAES,SAAS,EAAEzM,OAAO,CAAC0M,SAAS,CAAC;QAAE,CAAC,CAAC;MAChG;MAEA,IAAI/I,IAAI,CAACgJ,eAAe,IAAIhJ,IAAI,CAACgJ,eAAe,CAAC7M,EAAE,CAAC8M,QAAQ,KAAKb,YAAY,CAACa,QAAQ,EAAE;QACtFjJ,IAAI,CAACkJ,kBAAkB,CAACd,YAAY,CAAC;MACvC;MACA,IAAI,CAACtL,aAAa,GAAGuL,eAAe;MACpC,OAAOP,YAAY;IACrB;IACA;IACA,MAAMzM,IAAI,GAAG,IAAI,CAACuB,OAAO,CAAC,CAAC;IAC3B,MAAMqJ,MAAM,GAAG8B,qBAAqB,GAAG,IAAI,CAAC3L,MAAM,CAAC2L,qBAAqB,CAAC,GAAG,IAAI;IAChF,IACE1M,IAAI,IACJA,IAAI,CAACsB,QAAQ,CAAC,CAAC,KAAKmL,YAAY,IAChC,CAAC,IAAI,CAAChK,MAAM,CAACgK,YAAY,CAAC,CAAC;IAAA,EAC3B;MACA;MACA;MACA;MACA;MACA;MACA,MAAMqB,WAAW,GAAGlB,eAAe,GAAG5M,IAAI,GAAG4K,MAAM;MACnD5J,OAAO,CAACoM,eAAe,CAACU,WAAW,IAAI9N,IAAI,CAAC;IAC9C;IACA,IAAI4K,MAAM,IAAI5K,IAAI,IAAI,CAAC4K,MAAM,CAACxE,OAAO,CAACpG,IAAI,CAAC,IAAI,CAAC8M,YAAY,IAAI,IAAAiB,kCAAgB,EAACC,6BAAW,CAAC,EAAE;MAC7F,IAAInB,UAAU,EAAE,IAAI,CAAC3M,aAAa,CAAC6B,OAAO,CAACf,OAAO,CAACgC,IAAI,CAAC,CAAC,CAAC,CAAC,KAEzD,MAAM,IAAInC,KAAK,CAAC,oCAAoC,IAAI,CAACC,EAAE,CAAC,CAAC;AACrE,8CAA8C4L,qBAAqB,6BAA6B1M,IAAI;AACpG;AACA,wFAAwF,CAAC;IACrF,CAAC,MAAM;MACL,IAAI,CAAC+B,OAAO,CAACf,OAAO,CAACgC,IAAI,CAAC,CAAC,CAAC;MAC5B,IAAI,CAAC9C,aAAa,CAAC+N,YAAY,CAAC,CAAC;IACnC;IACA,IAAI,IAAAhN,yBAAK,EAACwL,YAAY,CAAC,EAAE;MACvB,IAAI,CAAChM,UAAU,CAACgM,YAAY,EAAEzL,OAAO,CAACgC,IAAI,CAAC,CAAC,CAAC;IAC/C;IACA,IAAI,CAACkL,kBAAkB,CAACzB,YAAY,CAAC;IACrC,OAAOA,YAAY;EACrB;EAEAzL,OAAOA,CAAC6K,WAA+B,GAAGC,kCAAwB,EAAEE,WAAW,GAAG,CAAC,EAAEC,YAAqB,EAAU;IAClH,MAAMkC,SAAS,GAAIC,GAAW,IAAK;MACjC,IAAI;QACF;QACA,MAAMC,SAAS,GAAG,KAAI7T,MAAM,CAAD,CAAC,CAAC8T,MAAM,EAACF,GAAG,CAAC,CAACG,GAAG,CAAC1C,WAAW,EAAEI,YAAY,CAAC;QACvE,OAAOoC,SAAS,CAACrN,OAAO;MAC1B,CAAC,CAAC,OAAOsI,GAAQ,EAAE;QACjB,MAAM,IAAIzI,KAAK,CAAC,gCAAgCuN,GAAG,uBAAuBvC,WAAW,uBAAuBI,YAAY;AAChI,uBAAuB3C,GAAG,CAACkB,OAAO,EAAE,CAAC;MAC/B;IACF,CAAC;IAED,MAAMlD,MAAM,GAAG,IAAI,CAACJ,aAAa,CAAC,CAAC;IACnC,IAAI,CAACI,MAAM,EAAE;MACX,MAAMkH,gBAAgB,GAAG,CAAC,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAACnL,QAAQ,CAACwI,WAAW,CAAC;MACjG,OAAO2C,gBAAgB,GAAGL,SAAS,CAACM,6BAAmB,CAAC,GAAGA,6BAAmB;IAChF;IACA,IAAIC,MAAM,GAAGP,SAAS,CAAC7G,MAAM,CAAC;IAC9B,IAAI0E,WAAW,KAAK,CAAC,EAAE,OAAO0C,MAAM;IACpC,KAAK,IAAIvR,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG6O,WAAW,EAAE7O,CAAC,IAAI,CAAC,EAAE;MACvCuR,MAAM,GAAGP,SAAS,CAACO,MAAM,CAAC;IAC5B;IACA,OAAOA,MAAM;EACf;EAEA5N,EAAEA,CAAA,EAAW;IACX,OAAO,IAAI,CAACzB,KAAK,GAAG,CAAC,IAAI,CAACA,KAAK,EAAE,IAAI,CAACD,IAAI,CAAC,CAACuP,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAACvP,IAAI;EACnE;;EAEA;AACF;AACA;EACEwP,OAAOA,CAAA,EAAU;IACf,OAAO,KAAIC,oBAAK,EAAC;MAAExP,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,KAAI0P,0BAAW,EAAC,IAAI,CAACF,OAAO,CAAC,CAAC,CAAC;EACxC;;EAEA;AACF;AACA;EACEG,wBAAwBA,CAAA,EAAU;IAChC,OAAO,KAAIF,oBAAK,EAAC;MAAExP,KAAK,EAAE,IAAI,CAACA,KAAK;MAAED,IAAI,EAAE,IAAI,CAACA,IAAI;MAAE4B,OAAO,EAAE,IAAI,CAACuF,kCAAkC,CAAC,IAAI;IAAE,CAAC,CAAC;EAClH;EAEAyI,8BAA8BA,CAAA,EAAgB;IAC5C,OAAOF,0BAAW,CAACG,UAAU,CAAC;MAC5B5P,KAAK,EAAE,IAAI,CAACA,KAAK;MACjBD,IAAI,EAAE,IAAI,CAACA,IAAI;MACf4B,OAAO,EAAE,IAAI,CAACuF,kCAAkC,CAAC,IAAI;IACvD,CAAC,CAAC;EACJ;EAEA2I,qBAAqBA,CAAA,EAAgB;IACnC,OAAOJ,0BAAW,CAACG,UAAU,CAAC;MAAE5P,KAAK,EAAE,IAAI,CAACA,KAAK;MAAED,IAAI,EAAE,IAAI,CAACA,IAAI;MAAE4B,OAAO,EAAE,IAAI,CAAChB,IAAI,EAAEsB,QAAQ,CAAC;IAAE,CAAC,CAAC;EACvG;EAEA6N,iCAAiCA,CAAA,EAAgB;IAC/C,MAAMrO,EAAE,GAAG,IAAI,CAACkO,8BAA8B,CAAC,CAAC;IAChD,OAAOlO,EAAE,CAACE,OAAO,KAAKlC,YAAY,GAAGgC,EAAE,CAACwM,aAAa,CAAC3L,SAAS,CAAC,GAAGb,EAAE;EACvE;EAEAsO,QAAQA,CAAA,EAAG;IACT,SAAS7P,QAAQA,CAAC8P,IAAc,EAAE;MAChC,MAAMC,GAAG,GAAG,CAAC,CAAC;MACd,IAAAtR,iBAAO,EAACqR,IAAI,EAAE,CAAC1O,GAAG,EAAEK,OAAO,KAAK;QAC9BsO,GAAG,CAACtO,OAAO,CAAC,GAAGL,GAAG,CAACW,QAAQ,CAAC,CAAC;MAC/B,CAAC,CAAC;MACF,OAAOgO,GAAG;IACZ;IAEA,MAAMC,eAAe,GAAG;MACtBnQ,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;MACjC4P,OAAO,EAAE,IAAI,CAACzP,UAAU;MACxBE,MAAM,EAAE,IAAI,CAACA,MAAM;MACnBC,aAAa,EAAE,IAAI,CAACA,aAAa,CAACkP,QAAQ,CAAC;IAC7C,CAAC;IACD;IACA,IAAI,IAAI,CAAC1J,KAAK,EAAE6J,eAAe,CAAC7J,KAAK,GAAG,IAAI,CAACA,KAAK;IAClD;IACA,IAAI,CAAC,IAAAY,iBAAO,EAAC,IAAI,CAACxG,KAAK,CAAC,EAAEyP,eAAe,CAACzP,KAAK,GAAG,IAAI,CAACA,KAAK;IAC5D;IACA,IAAI,CAAC,IAAAwG,iBAAO,EAAC,IAAI,CAAC9G,gBAAgB,CAAC,EAAE+P,eAAe,CAAC/P,gBAAgB,GAAGD,QAAQ,CAAC,IAAI,CAACC,gBAAgB,CAAC;IACvG,MAAMiQ,OAAO,GAAG,IAAI,CAACpO,UAAU,CAAC,CAAC;IACjC;IACA,IAAIoO,OAAO,EAAEF,eAAe,CAACvP,IAAI,GAAGyP,OAAO;IAE3C,OAAOF,eAAe;EACxB;EAEA,MAAMG,WAAWA,CAAC5H,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,KAAIiI,0BAAe,EAAC7H,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,KAAIgM,8BAAmB,EAAC9H,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,KAAIiI,0BAAe,EAAC3O,OAAO,EAAE,IAAI,CAACF,EAAE,CAAC,CAAC,CAAC;IAC9D;IACA,OAAO4G,UAAU,CAACmI,QAAQ,CAAChI,UAAU,EAAEjE,MAAM,CAAC;EAChD;EAEA,MAAMkM,sBAAsBA,CAC1BxN,IAAgB,EAChB/C,QAAkB,EAClBwQ,6BAA6B,GAAG,KAAK,EACrCjM,WAAyB,EACF;IACvB,MAAMkM,oBAA2B,GAAG,EAAE;IACtC,MAAMC,aAAoB,GAAG,EAAE;IAC/B,MAAMC,iCAAwC,GAAG,EAAE;IACnD,MAAMC,sBAAsB,GAAG,MAAM,IAAI,CAACC,oBAAoB,CAAC9N,IAAI,EAAEwB,WAAW,CAAC;IACjF,MAAMuM,oBAAoB,GAAGF,sBAAsB,CAACrN,GAAG,CAAEC,CAAC,IACxD,IAAA9B,yBAAK,EAAC8B,CAAC,CAAC,GAAG,IAAI,CAAC7B,uBAAuB,CAAC6B,CAAC,CAAC,CAACC,IAAI,GAAGD,CACpD,CAAC;IACD,MAAMuN,YAAY,GAAG/Q,QAAQ,CAACuD,GAAG,CAAE9B,OAAO,IAAK,IAAI,CAACD,MAAM,CAACC,OAAO,CAAQ,CAAC;IAC3EgP,oBAAoB,CAACrS,IAAI,CAAC,GAAG2S,YAAY,CAAC;IAE1C,MAAMC,eAA0B,GAAG,MAAMnF,OAAO,CAACC,GAAG,CAClDiF,YAAY,CAACxN,GAAG,CAAE4E,UAAU,IAAK,IAAI,CAACgI,WAAW,CAAChI,UAAU,CAACpG,QAAQ,CAAC,CAAC,EAAEgB,IAAI,CAAC,CAChF,CAAC;IACDiO,eAAe,CAACvS,OAAO,CAAEwS,aAAa,IAAK;MACzC,MAAM7E,IAAI,GAAG6E,aAAa,CAACC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC;MACxDT,oBAAoB,CAACrS,IAAI,CAAC,GAAGgO,IAAI,CAAC;MAClC,MAAM+E,kBAAkB,GAAG,IAAAC,kCAAqB,EAACH,aAAa,CAAC9G,UAAU,CAAC;MAC1E2G,oBAAoB,CAAChN,QAAQ,CAACmN,aAAa,CAACxN,IAAI,CAAC,CAAC,CAAC1B,QAAQ,CAAC,CAAC,CAAC,GAC1D2O,aAAa,CAACtS,IAAI,CAAC,GAAG+S,kBAAkB,CAAC,GACzCR,iCAAiC,CAACvS,IAAI,CAAC,GAAG+S,kBAAkB,CAAC;IACnE,CAAC,CAAC;IACF,MAAME,UAAwB,GAAG,EAAE;IACnC,IAAI;MACF,MAAMC,MAAM,GAAG,MAAMvO,IAAI,CAACwO,WAAW,CAACd,oBAAoB,CAAC;MAC3DY,UAAU,CAACjT,IAAI,CAAC,GAAGkT,MAAM,CAAC;IAC5B,CAAC,CAAC,OAAOvH,GAAQ,EAAE;MACjB,IAAIA,GAAG,CAACyH,IAAI,KAAK,QAAQ,EAAE;QACzB,MAAM,IAAIlQ,KAAK,CAAC,kCAAkCyI,GAAG,CAAC0H,IAAI;AAClE,mBAAmB,IAAI,CAAClQ,EAAE,CAAC,CAAC,gBAAgBvB,QAAQ,CAACoP,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;MAC5D;MACA,MAAMrF,GAAG;IACX;IACA,IAAI;MACF,MAAMuH,MAAM,GAAGd,6BAA6B,GACxC,MAAMzN,IAAI,CAACwO,WAAW,CAACb,aAAa,CAAC,GACrC,MAAM3N,IAAI,CAAC2O,wBAAwB,CAAChB,aAAa,CAAC;MACtDW,UAAU,CAACjT,IAAI,CAAC,GAAGkT,MAAM,CAAC;MAC1B;MACA;MACA;MACA,MAAMK,uBAAuB,GAAG,MAAM5O,IAAI,CAAC2O,wBAAwB,CAACf,iCAAiC,CAAC;MACtGU,UAAU,CAACjT,IAAI,CAAC,GAAGuT,uBAAuB,CAAC;IAC7C,CAAC,CAAC,OAAO5H,GAAQ,EAAE;MACjB,IAAIA,GAAG,CAACyH,IAAI,KAAK,QAAQ,EAAE;QACzB,MAAM,IAAIlQ,KAAK,CAAC,2CAA2CyI,GAAG,CAAC0H,IAAI;AAC3E,mBAAmB,IAAI,CAAClQ,EAAE,CAAC,CAAC,gBAAgBvB,QAAQ,CAACoP,IAAI,CAAC,IAAI,CAAC;AAC/D,8FAA8F,CAAC;MACzF;MACA,MAAMrF,GAAG;IACX;IACA,OAAOsH,UAAU;EACnB;EAEA,MAAMO,cAAcA,CAAC7O,IAAgB,EAA6B;IAChE,IAAI;MACF,MAAM,CAAC8O,YAAY,EAAEhJ,OAAO,CAAC,GAAG,MAAMgD,OAAO,CAACC,GAAG,CAAC,CAAC,IAAI,CAACgG,KAAK,CAAC/O,IAAI,CAAC,EAAE,IAAI,CAACgP,UAAU,CAAChP,IAAI,CAAC,CAAC,CAAC;MAC5F,OAAO,KAAIiP,2BAAgB,EACzBH,YAAY,EACZhJ,OAAO,CAACtF,GAAG,CAAEtF,CAAC,IAAKA,CAAC,CAACgU,MAAM,CAC7B,CAAC;IACH,CAAC,CAAC,OAAOlI,GAAQ,EAAE;MACjB,IAAIA,GAAG,CAACyH,IAAI,KAAK,QAAQ,EAAE;QACzB,MAAM,IAAIlQ,KAAK,CACb,wBAAwB,IAAI,CAACC,EAAE,CAAC,CAAC,sBAAsBwI,GAAG,CAAC0H,IAAI,yCACjE,CAAC;MACH;MACA,MAAM1H,GAAG;IACX;EACF;;EAEA;AACF;AACA;EACEmI,aAAaA,CAACzQ,OAAe,EAAO;IAClC,MAAM0Q,SAAS,GAAG,IAAI,CAAC3Q,MAAM,CAACC,OAAO,CAAC;IACtC,IAAI,CAAC0Q,SAAS,EAAE,MAAM,IAAI7Q,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,OAAO0Q,SAAS;EAClB;EAEAC,kBAAkBA,CAAC7J,UAAmB,EAAoB;IACxD,MAAM8J,aAAa,GAAG,IAAAC,iCAAa,EAAC/J,UAAU,CAAC;IAC/C,MAAMwD,UAAU,GAAGsG,aAAa,CAACtK,MAAM,GACnC,IAAI,CAACf,kCAAkC,CAAC,IAAI,CAAC,GAC5CqL,aAAa,CAACtG,UAAqB;IACxC,IAAIA,UAAU,KAAKxM,YAAY,EAAE;MAC/B,MAAM,KAAIgT,0BAAe,EAAC,IAAI,CAAChR,EAAE,CAAC,CAAC,CAAC;IACtC;IACA,IAAI,IAAAG,yBAAK,EAACqK,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC9I,qBAAqB,CAAC8I,UAAU,CAAC,EAAE;MAChE,MAAM,KAAIxE,oBAAQ,EAChB,eAAewE,UAAU,QAAQ,IAAI,CAACxK,EAAE,CAAC,CAAC,uBAAuB,IAAI,CAACsB,2BAA2B,CAAC,CAAC,CAACuM,IAAI,CACtG,IACF,CAAC,mBACH,CAAC;IACH;IACA,OAAO,KAAIoD,2BAAgB,EAAC,IAAI,EAAEzG,UAAU,CAAC;EAC/C;;EAEA;AACF;AACA;EACE,MAAM0G,YAAYA,CAAC1P,IAAgB,EAAE2P,eAAwB,EAAE;IAC7D;IACA,IAAI,IAAI,CAACtS,UAAU,EAAE;MACnB,OAAO,IAAI;IACb;IACA,MAAMK,IAAI,GAAG,IAAI,CAACwB,uBAAuB,CAAC,CAAC;IAC3C,IAAI,CAACxB,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,MAAMU,iBAAiB,GAAGV,WAAW,CAACG,UAAU,CAACC,iBAAiB,CAACC,oBAAU,CAACM,WAAW,CAAC;IAC1F,IAAI,CAACD,iBAAiB,EAAE;MACtB,OAAO,KAAK;IACd;IACA,IAAIA,iBAAiB,CAACF,MAAM,CAACmI,SAAS,EAAE;MACtC,OAAO,IAAI;IACb;IACA,IAAID,eAAe,IAAIhI,iBAAiB,CAACF,MAAM,CAACC,KAAK,EAAE;MACrD,MAAMtJ,GAAG,GAAG,IAAI,CAAC+K,MAAM,CAACwG,eAAe,CAAC;MACxC,IAAI,CAACvR,GAAG,EAAE,OAAO,KAAK,CAAC,CAAC;MACxB,OAAOlG,MAAM,CAAD,CAAC,CAACuQ,SAAS,CAACrK,GAAG,EAAEuJ,iBAAiB,CAACF,MAAM,CAACC,KAAK,CAAC;IAC9D;IACA,OAAO,KAAK;EACd;EAEA,MAAM0D,SAASA,CAACpL,IAAgB,EAAE2P,eAAwB,EAA2B;IACnF,MAAM1Q,OAAO,GAAGA,CAAA,KAAM;MACpB,IAAI,CAAC,IAAI,CAACE,aAAa,EAAE,OAAO,IAAI,CAACF,OAAO,CAAC,CAAC;MAC9C;MACA,IAAI,CAAC0Q,eAAe,EAAE,OAAO,IAAI,CAACxQ,aAAa;MAC/C;MACA,IAAIwQ,eAAe,KAAK,IAAI,CAACxQ,aAAa,CAACH,QAAQ,CAAC,CAAC,EAAE,OAAO,IAAI,CAACG,aAAa;MAChF,OAAO,IAAI,CAACF,OAAO,CAAC,CAAC;IACvB,CAAC;IACD,MAAMvB,IAAI,GAAGuB,OAAO,CAAC,CAAC;IACtB,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,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,CAACoI,OAAO,EAAE;MAC/B,OAAO,IAAI;IACb;IACA,IAAIF,eAAe,IAAIxI,YAAY,CAACM,MAAM,CAACC,KAAK,EAAE;MAChD,MAAMtJ,GAAG,GAAG,IAAI,CAAC+K,MAAM,CAACwG,eAAe,CAAC;MACxC,IAAI,CAACvR,GAAG,EAAE,OAAO,KAAK,CAAC,CAAC;MACxB,OAAOlG,MAAM,CAAD,CAAC,CAACuQ,SAAS,CAACrK,GAAG,EAAE+I,YAAY,CAACM,MAAM,CAACC,KAAK,CAAC;IACzD;IACA,OAAO,KAAK;EACd;EAEA,MAAMoI,cAAcA,CAAC9P,IAAgB,EAAqB;IACxD,MAAMtC,IAAI,GAAG,IAAI,CAACwB,uBAAuB,CAAC,CAAC;IAC3C,IAAI,CAACxB,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,MAAMqR,WAAW,GAAGrR,OAAO,CAAC0I,UAAU,CAACC,iBAAiB,CAACC,oBAAU,CAAC0I,KAAK,CAAC;IAC1E,IAAI,CAACD,WAAW,IAAI,CAACA,WAAW,CAACtI,MAAM,CAACwI,MAAM,EAAE;MAC9C,OAAO,EAAE;IACX;IACA,OAAO1V,MAAM,CAACS,IAAI,CAAC+U,WAAW,CAACtI,MAAM,CAACwI,MAAM,CAAC;EAC/C;EACA;AACF;AACA;AACA;EACE,MAAMhH,mBAAmBA,CAACzD,UAAkB,EAAE0K,SAAiB,EAAE3K,UAAsB,EAA8B;IACnHa,iBAAM,CAAC+J,KAAK,CAAC,+BAA+B,IAAI,CAAC3R,EAAE,CAAC,CAAC,cAAcgH,UAAU,uBAAuB,CAAC;IACrG,IAAI4K,gBAAgB,GAAG,IAAI,CAACf,kBAAkB,CAAC7J,UAAU,CAAC;IAC1D,MAAM9G,OAAgB,GAAG,MAAM0R,gBAAgB,CAACC,UAAU,CAAC9K,UAAU,CAAC;IACtE;IACA,IACEC,UAAU,KAAK8K,kCAAc,IAC7B,CAAC,IAAA3R,yBAAK,EAAC6G,UAAU,CAAC,IAClB,CAAC,IAAA+K,0BAAM,EAAC/K,UAAU,CAAC,IACnB9G,OAAO,CAACgC,IAAI,CAAC,CAAC,CAAC1B,QAAQ,CAAC,CAAC,KAAKwG,UAAU,EACxC;MACA4K,gBAAgB,GAAG,KAAIX,2BAAgB,EAAC,IAAI,EAAE/Q,OAAO,CAACgC,IAAI,CAAC,CAAC,CAAC1B,QAAQ,CAAC,CAAC,CAAC;IAC1E;IACA,MAAMwR,gBAAgB,GAAIC,SAAS,IAAK,MAAOC,IAAI,IAAK;MACtD,MAAMC,KAAK,GAAGD,IAAI,CAACA,IAAI,CAACxJ,IAAI,CAAC3B,UAAU,CAAC;MACxC,MAAMqL,OAAe,GAAG,MAAMD,KAAK;MACnC,IAAI,CAACC,OAAO,EACV,MAAM,KAAIpM,oBAAQ,EAAC,uBAAuBkM,IAAI,CAACG,YAAY,sBAAsB,IAAI,CAACrS,EAAE,CAAC,CAAC,IAAIgH,UAAU,EAAE,CAAC;MAC7G,OAAO,IAAIiL,SAAS,CAAC;QAAEK,IAAI,EAAE,GAAG;QAAEpC,IAAI,EAAEgC,IAAI,CAACG,YAAY;QAAEE,QAAQ,EAAEH,OAAO,CAACG,QAAQ;QAAEC,IAAI,EAAEN,IAAI,CAACM;MAAK,CAAC,CAAC;IAC3G,CAAC;IACD,MAAMC,MAAM,GAAGvS,OAAO,CAACwS,KAAK,GAAGpI,OAAO,CAACC,GAAG,CAACrK,OAAO,CAACwS,KAAK,CAAC1Q,GAAG,CAACgQ,gBAAgB,CAACW,uBAAU,CAAC,CAAC,CAAC,GAAG,IAAI;IAClG;IACA,MAAMC,UAAU,GAAGlB,SAAS,GAAGmB,oBAAS,CAACC,aAAa,CAACpB,SAAS,CAAC,CAAChJ,IAAI,CAAC3B,UAAU,CAAC,GAAGuD,OAAO,CAACyI,OAAO,CAAC,CAAC;IACtG,MAAMtJ,GAAG,GAAGvJ,OAAO,CAACuJ,GAAG,IAAI,IAAI;IAC/B;IACA,MAAM,CAACiJ,KAAK,EAAEM,SAAS,CAAC,GAAG,MAAM1I,OAAO,CAACC,GAAG,CAAC,CAACkI,MAAM,EAAEG,UAAU,CAAC,CAAC;IAElE,MAAMhK,UAAU,GAAG1I,OAAO,CAAC0I,UAAU,CAACqK,KAAK,CAAC,CAAC;IAC7C;IACA;IACA;IACA;IACA;IACA,MAAMC,iBAAiB,GAAG,KAAIC,4BAAiB,EAAC;MAC9C7U,IAAI,EAAE,IAAI,CAACA,IAAI;MACf4B,OAAO,EAAE0R,gBAAgB,CAAC1R,OAAO;MACjC3B,KAAK,EAAE,IAAI,CAAC6F,aAAa,CAAC,CAAC,CAAChK,OAAO,CAACmE,KAAK;MACzC6U,YAAY,EAAE,IAAI,CAAC7U,KAAK;MACxBI,IAAI,EAAE,IAAI,CAACA,IAAI;MACfG,aAAa,EAAE,IAAI,CAACA,aAAa;MACjCuU,QAAQ,EAAEnT,OAAO,CAACmT,QAAQ;MAC1BC,YAAY,EAAE,IAAI,CAACC,2BAA2B,CAACrT,OAAO,CAACoT,YAAY,EAAE1K,UAAU,CAAC;MAChF4K,eAAe,EAAE,IAAI,CAACD,2BAA2B,CAACrT,OAAO,CAACsT,eAAe,EAAE5K,UAAU,CAAC;MACtF6K,qBAAqB,EAAEvT,OAAO,CAACuT,qBAAqB,CAACR,KAAK,CAAC,CAAC;MAC5DS,mBAAmB,EAAE,IAAAT,eAAK,EAAC/S,OAAO,CAACwT,mBAAmB,CAAC;MACvDC,sBAAsB,EAAE,IAAAV,eAAK,EAAC/S,OAAO,CAACyT,sBAAsB,CAAC;MAC7DC,uBAAuB,EAAE,IAAAX,eAAK,EAAC/S,OAAO,CAAC0T,uBAAuB,CAAC;MAC/D;MACAlB,KAAK;MACLmB,IAAI,EAAE3T,OAAO,CAAC2T,IAAI;MAClB;MACAC,OAAO,EAAEd,SAAS,GAAGe,oBAAO,CAACC,WAAW,CAAChB,SAAS,CAACc,OAAO,CAAC,GAAGjT,SAAS;MAAE;MACzE4I,GAAG;MACHwK,SAAS,EAAEC,6BAAkB,CAACC,aAAa,CAACjU,OAAO,CAAC+T,SAAS,CAAC;MAC9DG,uBAAuB,EAAE,IAAAnB,eAAK,EAAC/S,OAAO,CAACkU,uBAAuB,CAAC;MAC/DvV,UAAU,EAAE,IAAI,CAACA,UAAU;MAC3BwS,OAAO,EAAEnR,OAAO,CAAC0M,SAAS,CAAC,CAAC;MAC5B3N,UAAU,EAAE,IAAAgU,eAAK,EAAC,IAAI,CAAChU,UAAU,CAAC;MAClCE,MAAM,EAAEe,OAAO,CAACf,MAAM;MACtByJ,UAAU;MACVyL,WAAW,EAAEnU,OAAO,CAACmU;IACvB,CAAC,CAAC;IAEF,OAAOnB,iBAAiB;EAC1B;EAEQK,2BAA2BA,CAACD,YAA0B,EAAE1K,UAA6B,EAAgB;IAC3G,MAAM0L,MAAM,GAAGhB,YAAY,CAACiB,QAAQ,CAAC,CAAC;IACtC,MAAMC,gBAAgB,GAAG5L,UAAU,CAAChG,IAAI,CAAE6R,GAAG,IAAKA,GAAG,CAACnW,IAAI,KAAK,0CAA0C,CAAC;IAC1G,IAAI,CAACkW,gBAAgB,EAAE,OAAOF,MAAM;IACpCA,MAAM,CAACpX,OAAO,CAAEwX,UAAU,IAAK;MAC7B,IAAIA,UAAU,CAACC,WAAW,EAAE;MAC5B,MAAMC,YAAY,GAAGJ,gBAAgB,CAACjb,IAAI,EAAE+Z,YAAY,EAAE1Q,IAAI,CAAEiS,KAAK,IAAK;QACxE,OAAOH,UAAU,CAAC1U,EAAE,CAACQ,QAAQ,CAAC,CAAC,KAAKqU,KAAK,CAAC7U,EAAE;MAC9C,CAAC,CAAC;MACF,IAAI4U,YAAY,EAAE;QAChBF,UAAU,CAACC,WAAW,GAAGC,YAAY,CAACD,WAAW;MACnD;IACF,CAAC,CAAC;IACF,OAAOL,MAAM;EACf;;EAEA;EACAzJ,IAAIA,CAAA,EAAU;IACZ,MAAMpM,QAAQ,GAAG1C,MAAM,CAAC2D,MAAM,CAAC,IAAI,CAACU,uBAAuB,CAAC;IAC5D,IAAI,IAAI,CAAClB,IAAI,EAAET,QAAQ,CAAC5B,IAAI,CAAC,IAAI,CAACqC,IAAI,CAAC;IACvC,OAAOT,QAAQ;EACjB;EAEAqW,wBAAwBA,CAACC,YAAoB,EAAQ;IACnDnN,iBAAM,CAAC+J,KAAK,CAAC,gCAAgC,IAAI,CAACzP,IAAI,CAAC,CAAC,CAACA,IAAI,IAAI,IAAI,CAAClC,EAAE,CAAC,CAAC,EAAE,CAAC;IAC7E,MAAMqF,SAAS,GAAGnH,SAAS,CAAC8W,KAAK,CAACD,YAAY,CAAC;IAC/C1P,SAAS,CAAC4P,QAAQ,CAAC,CAAC;EACtB;EAEAC,QAAQA,CAACC,MAAe,EAAE;IACxB,MAAMC,IAAI,GAAG,IAAAC,2BAAgB,EAACF,MAAM,CAAC;IACrC,MAAM3G,GAAG,GAAG,IAAI,CAACF,QAAQ,CAAC,CAAC;IAC3B,MAAMgH,GAAG,GAAGC,IAAI,CAACC,SAAS,CAAChH,GAAG,EAAE,GAAG4G,IAAI,CAAC;IACxC,IAAI,IAAI,CAACK,qBAAqB,EAAE,IAAI,CAACX,wBAAwB,CAACQ,GAAG,CAAC;IAClE,OAAOI,MAAM,CAACxR,IAAI,CAACoR,GAAG,CAAC;EACzB;;EAEA;AACF;AACA;EACEK,cAAcA,CAAA,EAAG;IACf,IAAI,CAAC/Q,KAAK,GAAG,KAAK,CAAC,CAAC;IACpB,IAAI,CAAC5F,KAAK,GAAG,CAAC,CAAC;EACjB;EAEAoO,kBAAkBA,CAAClN,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,OAAO1C,MAAM,CAACS,IAAI,CAAC,IAAI,CAACwC,KAAK,CAACP,QAAQ,CAAC,CAAC9B,MAAM,CAAEuD,OAAO,IAAK,IAAI,CAAClB,KAAK,CAACP,QAAQ,CAACyB,OAAO,CAAC,CAAC0E,KAAK,CAAC;EACjG;EAEAgR,WAAWA,CAAChW,GAAW,EAAW;IAChC,MAAMiW,aAAa,GAAG,IAAI,CAAC/Q,gBAAgB,CAAC,CAAC;IAC7C,OAAO+Q,aAAa,CAACtT,QAAQ,CAAC3C,GAAG,CAAC;EACpC;EAEA,MAAM0P,oBAAoBA,CAAC9N,IAAgB,EAAEwB,WAAyB,EAAqB;IACzF,MAAM8S,WAAW,GAAG,MAAM,IAAI,CAACC,cAAc,CAACvU,IAAI,EAAEwB,WAAW,CAAC;IAChE,IAAI,CAAC8S,WAAW,CAAC7Y,MAAM,EAAE,OAAO,EAAE;IAClC,OAAO,IAAI,CAAC2N,2BAA2B,CAACkL,WAAW,CAAC,CAACzU,OAAO,CAAC,CAAC,CAAC,CAAC;EAClE;EAEA,MAAM0U,cAAcA,CAACvU,IAAgB,EAAEwB,WAAyB,EAAkB;IAChF,MAAM,IAAI,CAACH,cAAc,CAACrB,IAAI,EAAEX,SAAS,EAAEA,SAAS,EAAEmC,WAAW,CAAC;IAClE,MAAMC,WAAW,GAAG,IAAI,CAACM,cAAc,CAAC,CAAC;IACzC,MAAMuS,WAAW,GAAG7S,WAAW,CAAC+S,iBAAiB;IACjD,IAAI,CAACF,WAAW,CAAC7Y,MAAM,EAAE,OAAO,EAAE;IAClC,OAAO6Y,WAAW,CAACzU,OAAO,CAAC,CAAC,CAAC,CAAC;EAChC;;EAEA;AACF;AACA;AACA;EACE4U,iCAAiCA,CAAA,EAAY;IAC3C,OAAOjV,OAAO,CAAC,IAAI,CAAC8D,gBAAgB,CAAC,CAAC,CAAC7H,MAAM,CAAC;EAChD;;EAEA;AACF;AACA;AACA;EACE,MAAMiZ,gBAAgBA,CAAC1U,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,EAAEX,SAAS,EAAEA,SAAS,EAAEmC,WAAW,CAAC;IAClE,MAAMC,WAAW,GAAG,IAAI,CAACM,cAAc,CAAC,CAAC;IACzC,OAAON,WAAW,CAACkT,aAAa,CAAC,CAAC;EACpC;EAEA,MAAMC,iBAAiBA,CAAC5U,IAAgB,EAA2B;IACjE,MAAM6U,mBAAmB,GAAGC,yBAAc,CAACC,MAAM,CAAC,IAAI,CAACjY,IAAI,EAAE,IAAI,CAACC,KAAK,CAAC;IACxE,MAAM0H,cAAc,GAAG,MAAMzE,IAAI,CAACkH,IAAI,CAAC2N,mBAAmB,CAACnU,IAAI,CAAC,CAAC,CAAC;IAClE,OAAQ+D,cAAc,IAAIoQ,mBAAmB;EAC/C;EAEA,MAAMnQ,4BAA4BA,CAAC1E,IAAgB,EAAEtC,IAAS,EAA2B;IACvF,MAAM+G,cAAc,GAAG,MAAM,IAAI,CAACmQ,iBAAiB,CAAC5U,IAAI,CAAC;IACzD,MAAM;MAAEgH;IAAI,CAAC,GAAG,MAAM,IAAI,CAACgO,yCAAyC,CAAChV,IAAI,EAAEyE,cAAc,EAAE/G,IAAI,CAAC;IAChG,IAAIsJ,GAAG,EAAE;MACPZ,iBAAM,CAACH,KAAK,CAAC,uBAAuBe,GAAG,CAACkB,OAAO,iBAAiB,EAAE,IAAI3J,KAAK,CAACyI,GAAG,CAACkB,OAAO,CAAC,CAAC;MACzF,MAAMlB,GAAG;IACX;IACA,OAAOvC,cAAc;EACvB;;EAEA;AACF;AACA;AACA;AACA;EACE,MAAMwQ,2BAA2BA,CAACjV,IAAgB,EAAE/C,QAAmB,EAAuC;IAC5G,MAAMwH,cAAc,GAAG,MAAM,IAAI,CAACmQ,iBAAiB,CAAC5U,IAAI,CAAC;IACzD,MAAMkV,UAAU,GAAGjY,QAAQ,CAAC0D,IAAI,CAAEjC,OAAO,IAAK;MAC5C,MAAMyW,WAAW,GAAG1Q,cAAc,CAAC2Q,cAAc,CAAC1W,OAAO,CAACgC,IAAI,CAAC,CAAC,CAAC;MACjE,IAAI,CAACyU,WAAW,EAAE,OAAO,KAAK;MAC9B1Q,cAAc,CAAC4Q,sBAAsB,CAAC,CAAC3W,OAAO,CAAC,CAAC;MAChD,OAAO,IAAI;IACb,CAAC,CAAC;IAEF,OAAOwW,UAAU,GAAGzQ,cAAc,GAAGpF,SAAS;EAChD;EAEA,MAAMiW,oBAAoBA,CAACtV,IAAgB,EAAE/C,QAAmB,EAA2B;IACzF,MAAMwH,cAAc,GAAG,MAAM,IAAI,CAACmQ,iBAAiB,CAAC5U,IAAI,CAAC;IACzDyE,cAAc,CAAC4Q,sBAAsB,CAACpY,QAAQ,CAAC;IAC/CmJ,iBAAM,CAACmP,KAAK,CAAC,+BAA+B,IAAI,CAAC/W,EAAE,CAAC,CAAC,SAASvB,QAAQ,CAACxB,MAAM,WAAW,CAAC;IACzF,OAAOgJ,cAAc;EACvB;EAEA,MAAMuQ,yCAAyCA,CAC7ChV,IAAgB,EAChByE,cAA8B,EAC9B/G,IAAS;EACT;AACJ;AACA;AACA;AACA;EACI8X,YAAY,GAAG,IAAI,EACiC;IACpD,MAAMC,UAAU,GAAGhR,cAAc,CAACiR,OAAO,CAAChY,IAAI,CAAC;IAC/C,IAAI8X,YAAY,IAAIC,UAAU,EAAE,OAAO,CAAC,CAAC;IACzC,MAAME,aAAa,GAAG,MAAOtX,GAAQ,IAAM,MAAMA,GAAG,CAAC6I,IAAI,CAAClH,IAAI,CAAyB;IACvF,MAAM4V,aAAwB,GAAG,EAAE;IACnC,IAAI5O,GAAsB;IAC1B,MAAM6O,qBAAqB,GAAG,MAAOnX,OAAgB,IAAK;MACxD,MAAM,IAAAoX,qBAAU,EAACpX,OAAO,CAAC2J,OAAO,EAAE,MAAOC,MAAM,IAAK;QAClD,MAAMyN,WAAW,GAAGtR,cAAc,CAACiR,OAAO,CAACpN,MAAM,CAAC,IAAIsN,aAAa,CAACxU,IAAI,CAAEX,CAAC,IAAKA,CAAC,CAACC,IAAI,CAAC,CAAC,CAACoD,OAAO,CAACwE,MAAM,CAAC,CAAC;QACzG,IAAIkN,YAAY,IAAIO,WAAW,EAAE;UAC/B;QACF;QACA,MAAMC,aAAa,GAAG,MAAML,aAAa,CAACrN,MAAM,CAAC;QACjD,IAAI,CAAC0N,aAAa,EAAE;UAClB,MAAM5X,GAAG,GAAG,IAAI,CAACkB,mBAAmB,CAACgJ,MAAM,CAAC;UAC5CtB,GAAG,GAAG5I,GAAG,GACL,KAAIiP,0BAAe,EAACjP,GAAG,EAAE,IAAI,CAACI,EAAE,CAAC,CAAC,CAAC,GACnC,KAAIyX,yBAAc,EAAC,IAAI,CAACzX,EAAE,CAAC,CAAC,EAAEE,OAAO,CAACgC,IAAI,CAAC,CAAC,CAAC1B,QAAQ,CAAC,CAAC,EAAEsJ,MAAM,CAACtJ,QAAQ,CAAC,CAAC,CAAC;UAC/E;QACF;QACA4W,aAAa,CAACva,IAAI,CAAC2a,aAAa,CAAC;QACjC,MAAMH,qBAAqB,CAACG,aAAa,CAAC;MAC5C,CAAC,CAAC;IACJ,CAAC;IACD,MAAME,OAAO,GAAG,MAAMP,aAAa,CAACjY,IAAI,CAAC;IACzC,IAAI,CAACwY,OAAO,EAAE;MACZ,OAAO;QAAElP,GAAG,EAAE,KAAImP,uBAAY,EAAC,IAAI,CAAC3X,EAAE,CAAC,CAAC,EAAEd,IAAI,CAACsB,QAAQ,CAAC,CAAC;MAAE,CAAC;IAC9D;IACA,OAAO,IAAI,CAAClB,2BAA2B,CAACsY,YAAY,CAAC,YAAY;MAC/D,IAAI,CAACX,UAAU,EAAEG,aAAa,CAACva,IAAI,CAAC6a,OAAO,CAAC;MAC5C,MAAML,qBAAqB,CAACK,OAAO,CAAC;MACpC,MAAMG,KAAK,GAAGT,aAAa,CAACpV,GAAG,CAAEC,CAAC,IAAK,IAAA6V,0CAA4B,EAAC7V,CAAC,CAAC,CAAC;MACvE,IAAIuG,GAAG,EAAE;QACP,OAAO;UAAEA,GAAG;UAAEqP;QAAM,CAAC;MACvB;MACA5R,cAAc,CAAC4Q,sBAAsB,CAACO,aAAa,CAAC;MACpDxP,iBAAM,CAACmP,KAAK,CACV,uDAAuD,IAAI,CAAC/W,EAAE,CAAC,CAAC,SAASoX,aAAa,CAACna,MAAM,WAC/F,CAAC;MACD,MAAMuE,IAAI,CAACuW,mBAAmB,CAAC,CAAC9R,cAAc,CAAC,CAAC;MAChD,OAAO;QAAE4R;MAAM,CAAC;IAClB,CAAC,CAAC;EACJ;EAEA,OAAO7C,KAAKA,CAACzC,QAAgB,EAAa;IACxC,MAAMjC,YAAY,GAAGiF,IAAI,CAACP,KAAK,CAACzC,QAAQ,CAAC;IACzC,OAAOrU,SAAS,CAACgG,IAAI,CAAC;MACpB5F,IAAI,EAAEgS,YAAY,CAAC0H,GAAG,GAAG,GAAG1H,YAAY,CAAC0H,GAAG,IAAI1H,YAAY,CAAChS,IAAI,EAAE,GAAGgS,YAAY,CAAChS,IAAI;MACvFC,KAAK,EAAE+R,YAAY,CAAC/R,KAAK;MACzBE,QAAQ,EAAE,IAAAwZ,mBAAS,EAAC3H,YAAY,CAAC7R,QAAQ,EAA6BwG,GAAG,IAAK3E,cAAG,CAAC4D,IAAI,CAACe,GAAG,CAAC,CAAC;MAC5FtG,IAAI,EAAE2R,YAAY,CAAC3R,IAAI;MACvBE,UAAU,EAAEyR,YAAY,CAACzR,UAAU;MACnCC,aAAa,EAAEwR,YAAY,CAACxR,aAAa;MACzCE,KAAK,EAAEsR,YAAY,CAACtR,KAAK;MACzBN,gBAAgB,EAAE,IAAAuZ,mBAAS,EAAC3H,YAAY,CAAC5R,gBAAgB,IAAI,CAAC,CAAC,EAAGuG,GAAG,IAAK3E,cAAG,CAAC4D,IAAI,CAACe,GAAG,CAAC,CAAC;MACxFhG,UAAU,EAAEqR,YAAY,CAAC5B,OAAO;MAChCxP,IAAI,EAAEoR,YAAY,CAACpR,IAAI,GAAGoB,cAAG,CAAC4D,IAAI,CAACoM,YAAY,CAACpR,IAAI,CAAC,GAAG2B,SAAS;MACjE1B,MAAM,EAAEmR,YAAY,CAACnR,MAAM,KAAKmR,YAAY,CAACpR,IAAI,GAAGgZ,qBAAU,CAACC,OAAO,GAAGD,qBAAU,CAACE,MAAM,CAAC;MAC3FhZ,aAAa,EAAEC,4BAAa,CAAC8O,UAAU,CAACmC,YAAY,CAAClR,aAAa;IACpE,CAAC,CAAC;EACJ;EAEA,OAAO8E,IAAIA,CAAC7F,KAAqB,EAAa;IAC5C,OAAO,IAAIH,SAAS,CAACG,KAAK,CAAC;EAC7B;EAEA,OAAOga,SAASA,CAACC,KAAkB,EAAa;IAC9C;IACA,OAAO,IAAIpa,SAAS,CAAC;MACnBI,IAAI,EAAEga,KAAK,CAACxL,QAAQ;MACpBvO,KAAK,EAAE+Z,KAAK,CAAC/Z;IACf,CAAC,CAAC;EACJ;EAEA,IAAIga,QAAQA,CAAA,EAAY;IACtB,OAAO,CAAC,IAAI,CAACpZ,MAAM,IAAI,IAAI,CAACA,MAAM,KAAK+Y,qBAAU,CAACE,MAAM;EAC1D;EAEAnD,QAAQA,CAAA,EAAS;IACf,MAAMvL,OAAO,GAAG,oCAAoC,IAAI,CAAC1J,EAAE,CAAC,CAAC,GAAG;IAChE,IAAI,CAAC,IAAI,CAAC1B,IAAI,EAAE,MAAM,KAAI0H,oBAAQ,EAAC,GAAG0D,OAAO,sBAAsB,CAAC;IACpE,IAAI,IAAI,CAAC1K,KAAK,IAAI,IAAI,CAACA,KAAK,CAACP,QAAQ,EAAE;MACrC1C,MAAM,CAACS,IAAI,CAAC,IAAI,CAACwC,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,KAAIsY,4BAAe,EAAC,GAAG9O,OAAO,iBAAiBxJ,OAAO,2CAA2C,CAAC;QAC1G;MACF,CAAC,CAAC;IACJ;IACA,MAAMuY,gBAAgB,GAAG,IAAAC,gCAAgB,EAAC,IAAI,CAACjZ,YAAY,CAACuC,GAAG,CAAEC,CAAC,IAAKA,CAAC,CAACzB,QAAQ,CAAC,CAAC,CAAC,CAAC;IACrF,IAAIiY,gBAAgB,CAACxb,MAAM,EAAE;MAC3B,MAAM,KAAIub,4BAAe,EAAC,GAAG9O,OAAO,2CAA2C+O,gBAAgB,CAAC5K,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAC/G;IACA9R,MAAM,CAACS,IAAI,CAAC,IAAI,CAACkC,gBAAgB,CAAC,CAACxB,OAAO,CAAEgD,OAAO,IAAK;MACtD,IAAI,IAAI,CAACzB,QAAQ,CAACyB,OAAO,CAAC,EAAE;QAC1B,MAAM,KAAIsY,4BAAe,EACvB,GAAG9O,OAAO,kBAAkBxJ,OAAO,mEACrC,CAAC;MACH;IACF,CAAC,CAAC;IACF,IAAI,CAAC,IAAI,CAACqY,QAAQ,IAAI,CAAC,IAAI,CAACrZ,IAAI,IAAI,IAAI,CAACO,YAAY,CAACxC,MAAM,EAAE;MAC5D;MACA;MACA,MAAM,KAAIub,4BAAe,EAAC,GAAG9O,OAAO,8BAA8B,CAAC;IACrE;EACF;AACF;AAACzL,OAAA,CAAA5C,OAAA,GAAA6C,SAAA","ignoreList":[]}
|
1
|
+
{"version":3,"names":["_lodash","data","require","_asyncMutex","semver","_interopRequireWildcard","_componentVersion","_bitError","_laneId","_componentId","_pMapSeries","_interopRequireDefault","_toolboxArray","_legacyBitId","_legacy","_legacy2","_component","_legacy3","_legacyCli","_legacy4","_legacy5","_pkgModules","_component2","_legacy6","_objects","_scopeMeta","_versionHistory","_detachHeads","_harmonyModules","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","versionsIncludeOrphaned","isHash","Ref","getHeadStr","toString","getHead","getHeadRegardlessOfLane","laneHeadLocal","getHeadAsTagIfExist","undefined","getTagOfRefIfExists","hasHead","Boolean","setHead","listVersions","sort","compare","reverse","listVersionsIncludeOrphaned","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","getComponentHead","_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","allTags","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","addComponentToUpdateDependents","changeVersion","setOverrideUpdateDependents","addComponent","isDeleted","isRemoved","readmeComponent","fullName","setReadmeComponent","parentToSet","isFeatureEnabled","DETACH_HEAD","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","removed","Array","isArray","isLaneReadmeOf","lanesAspect","lanes","readme","scopeName","trace","componentVersion","getVersion","LATEST_VERSION","isSnap","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","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 { 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 { ConsumerComponent, SchemaName, Dependencies, Dependency } 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 {\n SnapsDistance,\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 { Repository, BitObject, Ref } from '../objects';\nimport Lane from './lane';\nimport ScopeMeta from './scopeMeta';\nimport Source from './source';\nimport Version from './version';\nimport VersionHistory, { VersionParents } from './version-history';\nimport { ObjectItem } from '../objects/object-list';\nimport type { Scope } from '@teambit/legacy.scope';\nimport { ExtensionDataList } from '@teambit/legacy.extension-data';\nimport { DetachedHeads } from './detach-heads';\nimport { DETACH_HEAD, isFeatureEnabled } from '@teambit/harmony.modules.feature-toggle';\n\ntype State = {\n versions?: {\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\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\n// @ts-ignore\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.versionsIncludeOrphaned[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 get versionsIncludeOrphaned(): Versions {\n // for bit-bin with 266 components, it takes about 1,700ms. don't use lodash.merge, it's much faster\n // 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 && lane.forkedFrom.scope === lane.scope) {\n // the last check is to make sure that if this lane will be exported to a different scope than the original\n // lane, all snaps of the original lane will be considered as local and will be exported later on.\n const headFromFork = await repo.remoteLanes.getRef(lane.forkedFrom, this.toComponentId());\n if (headFromFork) return headFromFork;\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 this.laneHeadLocal = lane.getComponentHead(this.toComponentId());\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 } 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 // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n return this.toConsumerComponent(versionNum, this.scope, repo);\n })\n );\n }\n\n getTagOfRefIfExists(ref: Ref, allTags = this.versionsIncludeOrphaned): string | undefined {\n return Object.keys(allTags).find((versionRef) => allTags[versionRef].isEqual(ref));\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 // cache the this.versionsIncludeOrphaned results into \"allTags\", looks strange but it improved\n // the performance on bit-bin with 188 components during source.merge in 4 seconds.\n const allTags = this.versionsIncludeOrphaned;\n return refs.map((ref) => this.getTagOfRefIfExists(ref, allTags) || 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 if (addToUpdateDependentsInLane) {\n lane.addComponentToUpdateDependents(currentBitId.changeVersion(versionToAddRef.toString()));\n lane.setOverrideUpdateDependents(true);\n } else {\n lane.addComponent({ id: currentBitId, head: versionToAddRef, isDeleted: version.isRemoved() });\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 && isFeatureEnabled(DETACH_HEAD)) {\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}).\nif this is done intentionally, please re-run with --detach-head (or --override-head if available).\notherwise, please run \"bit checkout head\" to be up to date, then snap/tag your changes.`);\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) =>\n isTag(v) ? this.versionsIncludeOrphaned[v].hash : v\n );\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 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 loadFileInstance = (ClassName) => async (file) => {\n const loadP = file.file.load(repository);\n const content: Source = await loadP;\n if (!content)\n throw new BitError(`failed loading file ${file.relativePath} from the model of ${this.id()}@${versionStr}`);\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 // @ts-ignore\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): Promise<string[]> {\n const localHashes = await this.getLocalHashes(repo, workspaceId);\n if (!localHashes.length) return [];\n return this.switchHashesWithTagsIfExist(localHashes).reverse(); // reverse to get the older first\n }\n\n async getLocalHashes(repo: Repository, workspaceId?: ComponentID): Promise<Ref[]> {\n await this.setDivergeData(repo, undefined, undefined, workspaceId);\n const divergeData = this.getDivergeData();\n const localHashes = divergeData.snapsOnSourceOnly;\n if (!localHashes.length) return [];\n return localHashes.reverse(); // reverse to get the older first\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":[]}
|
@@ -158,8 +158,7 @@ function _models() {
|
|
158
158
|
};
|
159
159
|
return data;
|
160
160
|
}
|
161
|
-
function
|
162
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
161
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
163
162
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
164
163
|
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
165
164
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_fsExtra","data","_interopRequireDefault","require","_uidNumber","_asyncMutex","_lodash","_bitError","_componentVersion","path","_interopRequireWildcard","_toolboxPromise","_legacy","_legacy2","_legacy3","_toolboxFs","_harmonyModules","_legacy4","_scopeIndex","_object","_objectList","_rawObject","_ref","_repositoryHooks","_harmonyModules2","_models","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","_defineProperty","_toPropertyKey","value","enumerable","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","OBJECTS_BACKUP_DIR","OBJECTS_DIR","TRASH_DIR","Repository","constructor","scopePath","scopeJson","onRead","onPersist","cache","createInMemoryCache","maxSize","getMaxSizeForObjects","persistMutex","_persistMutex","Mutex","load","repository","init","scopeIndex","loadOptionallyCreateScopeIndex","remoteLanes","RemoteLanes","unmergedComponents","UnmergedComponents","create","ScopeIndex","reset","getPathByScopePath","join","reLoadScopeIndex","reloadScopeIndexIfNeed","force","latestScopeIndex","currentAllScopeIndexItems","getAll","latestAllScopeIndexItems","length","differenceWith","isEqual","ensureDir","fs","getPath","getBackupPath","dirName","backupPath","getTrashDir","getLicense","getPopulatedLicense","getScopeMetaObject","license","object","ScopeMeta","fromObject","name","ref","hash","buffer","compress","objectPath","hashPath","pathExists","hasMultiple","refs","concurrency","concurrentIOLimit","existingRefs","pMapPool","compact","throws","inMemoryObjects","objects","toString","HASH_SIZE","getFullRefFromShortHash","cached","getCache","fileContentsRaw","readFile","err","code","logger","error","message","trace","msg","assign","stack","Error","size","byteLength","fileContents","parsedObject","BitObject","parseObject","maxSizeToCache","setCache","list","types","listRefs","debug","map","loadGracefully","process","argv","includes","isTypeIncluded","obj","some","type","loadRefDeleteIfInvalid","loadRefOnlyIfType","push","onCompletedChunk","completed","moveOneObjectToTrash","undefined","typeNames","parseObjectOnlyIfType","cwd","matches","glob","str","replace","sep","isSnap","Ref","listRefsStartWith","shortHash","pathPrefix","listRawObjects","loadRaw","bitRawObject","BitRawObject","fromDeflatedBuffer","listObjectsFromIndex","indexType","filter","hashes","getHashesByQuery","getHashes","_getBitObjectsByHashes","getHashFromIndex","missingIndexItems","bitObjects","Promise","all","bitObject","indexItem","find","removeMany","item","write","missingStringified","toIdentifierString","OutdatedIndexJson","ModelComponent","Lane","added","addMany","raw","transformedContent","loadManyRaw","uniqRefs","uniqBy","loadManyRawIgnoreMissing","results","loadRawObject","loadSync","objectFile","readFileSync","parseSync","HashNotFound","removeFromCache","delete","clearCache","deleteAll","clearObjectsFromCache","backup","backupDir","objectsDir","emptyDirSync","copySync","add","forEach","removeObject","objectsToRemove","removeManyObjects","findMany","persist","validate","runExclusive","deleteObjectsFromFS","validateObjects","values","writeObjectsToTheFS","writeRemoteLanes","clearObjects","onPostObjectsPersist","catch","validateBeforePersist","_deleteOne","removed","moveObjectsToDir","dir","moveOneObjectToDir","moveObjectsToTrash","listTrash","getFromTrash","objectsFromTrash","trashObjPath","BitError","restoreFromTrash","restoreFromDir","overwrite","copy","currentPath","absDir","fullPath","move","deleteRecordsFromUnmergedComponents","compIds","removeMultipleComponents","count","_writeOne","pathToDelete","removeFile","contents","options","groupName","gid","resolveGroupId","writeFile","writeObjectsToPendingDir","objectList","pendingDir","objPath","readObjectsFromPendingDir","ObjectList","slice","exports","filePath","propagateDirs","unlink","parse","removeEmptyDir","resolve","reject","uidNumber","uid"],"sources":["repository.ts"],"sourcesContent":["import fs from 'fs-extra';\nimport uidNumber from 'uid-number';\nimport { Mutex } from 'async-mutex';\nimport { compact, uniqBy, differenceWith, isEqual } from 'lodash';\nimport { BitError } from '@teambit/bit-error';\nimport { ComponentID } from '@teambit/component-id';\nimport { HASH_SIZE, isSnap } from '@teambit/component-version';\nimport * as path from 'path';\nimport { pMapPool } from '@teambit/toolbox.promise.map-pool';\nimport { OBJECTS_DIR } from '@teambit/legacy.constants';\nimport { logger } from '@teambit/legacy.logger';\nimport { glob, writeFile, ChownOptions, PathOsBasedAbsolute } from '@teambit/legacy.utils';\nimport { removeEmptyDir } from '@teambit/toolbox.fs.remove-empty-dir';\nimport { concurrentIOLimit } from '@teambit/harmony.modules.concurrency';\nimport {\n Types,\n HashNotFound,\n OutdatedIndexJson,\n ScopeJson,\n UnmergedComponents,\n RemoteLanes,\n} from '@teambit/legacy.scope';\nimport { ScopeIndex, IndexType, IndexItem } from './scope-index';\nimport BitObject from './object';\nimport { ObjectItem, ObjectList } from './object-list';\nimport BitRawObject from './raw-object';\nimport Ref from './ref';\nimport { ContentTransformer, onPersist, onRead } from './repository-hooks';\nimport { getMaxSizeForObjects, InMemoryCache, createInMemoryCache } from '@teambit/harmony.modules.in-memory-cache';\nimport { ScopeMeta, Lane, ModelComponent } from '../models';\n\nconst OBJECTS_BACKUP_DIR = `${OBJECTS_DIR}.bak`;\nconst TRASH_DIR = 'trash';\n\nexport default class Repository {\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n objects: { [key: string]: BitObject } = {};\n objectsToRemove: Ref[] = [];\n scopeJson: ScopeJson;\n onRead: ContentTransformer;\n onPersist: ContentTransformer;\n scopePath: string;\n scopeIndex: ScopeIndex;\n protected cache: InMemoryCache<BitObject>;\n remoteLanes!: RemoteLanes;\n unmergedComponents!: UnmergedComponents;\n _persistMutex?: Mutex;\n constructor(scopePath: string, scopeJson: ScopeJson) {\n this.scopePath = scopePath;\n this.scopeJson = scopeJson;\n this.onRead = onRead(scopePath, scopeJson);\n this.onPersist = onPersist(scopePath, scopeJson);\n this.cache = createInMemoryCache({ maxSize: getMaxSizeForObjects() });\n }\n\n get persistMutex() {\n if (!this._persistMutex) {\n this._persistMutex = new Mutex();\n }\n return this._persistMutex;\n }\n\n static async load({ scopePath, scopeJson }: { scopePath: string; scopeJson: ScopeJson }): Promise<Repository> {\n const repository = new Repository(scopePath, scopeJson);\n await repository.init();\n return repository;\n }\n\n async init() {\n const scopeIndex = await this.loadOptionallyCreateScopeIndex();\n this.scopeIndex = scopeIndex;\n this.remoteLanes = new RemoteLanes(this.scopePath);\n this.unmergedComponents = await UnmergedComponents.load(this.scopePath);\n }\n\n static async create({ scopePath, scopeJson }: { scopePath: string; scopeJson: ScopeJson }): Promise<Repository> {\n const repository = new Repository(scopePath, scopeJson);\n const scopeIndex = ScopeIndex.create(scopePath);\n repository.scopeIndex = scopeIndex;\n repository.unmergedComponents = await UnmergedComponents.load(scopePath);\n repository.remoteLanes = new RemoteLanes(scopePath);\n return repository;\n }\n\n static reset(scopePath: string): Promise<void> {\n return ScopeIndex.reset(scopePath);\n }\n\n static getPathByScopePath(scopePath: string) {\n return path.join(scopePath, OBJECTS_DIR);\n }\n\n static onPostObjectsPersist: () => Promise<void>;\n\n async reLoadScopeIndex() {\n this.scopeIndex = await this.loadOptionallyCreateScopeIndex();\n }\n\n /**\n * current scope index difference with <scope_folder>/index.json content, reload it\n * @deprecated use Scope aspect `watchSystemFiles` instead, it's way more efficient.\n */\n public async reloadScopeIndexIfNeed(force = false) {\n const latestScopeIndex = await this.loadOptionallyCreateScopeIndex();\n if (force) {\n this.scopeIndex = latestScopeIndex;\n return;\n }\n\n const currentAllScopeIndexItems = this.scopeIndex.getAll();\n const latestAllScopeIndexItems = latestScopeIndex.getAll();\n\n if (currentAllScopeIndexItems.length !== latestAllScopeIndexItems.length) {\n this.scopeIndex = latestScopeIndex;\n return;\n }\n\n if (differenceWith(currentAllScopeIndexItems, latestAllScopeIndexItems, isEqual).length) {\n this.scopeIndex = latestScopeIndex;\n }\n }\n\n ensureDir() {\n return fs.ensureDir(this.getPath());\n }\n\n getPath() {\n return Repository.getPathByScopePath(this.scopePath);\n }\n\n getBackupPath(dirName?: string): string {\n const backupPath = path.join(this.scopePath, OBJECTS_BACKUP_DIR);\n return dirName ? path.join(backupPath, dirName) : backupPath;\n }\n\n getTrashDir() {\n return path.join(this.scopePath, TRASH_DIR);\n }\n\n getLicense(): Promise<string> {\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n return this.scopeJson.getPopulatedLicense();\n }\n\n async getScopeMetaObject(): Promise<ObjectItem> {\n const license = await this.getLicense();\n const object = ScopeMeta.fromObject({ license, name: this.scopeJson.name });\n return { ref: object.hash(), buffer: await object.compress() };\n }\n\n objectPath(ref: Ref): string {\n return path.join(this.getPath(), this.hashPath(ref));\n }\n\n async has(ref: Ref): Promise<boolean> {\n const objectPath = this.objectPath(ref);\n return fs.pathExists(objectPath);\n }\n\n async hasMultiple(refs: Ref[]): Promise<Ref[]> {\n const concurrency = concurrentIOLimit();\n const existingRefs = await pMapPool(\n refs,\n async (ref) => {\n const pathExists = await this.has(ref);\n return pathExists ? ref : null;\n },\n { concurrency }\n );\n return compact(existingRefs);\n }\n\n async load(ref: Ref, throws = false): Promise<BitObject> {\n // during tag, the updated objects are in `this.objects`.\n // `this.cache` is less reliable, because if it reaches its max, then it loads from the filesystem, which may not\n // be there yet (in case of \"version\" object), or may be out-of-date (in case of \"component\" object).\n const inMemoryObjects = this.objects[ref.hash.toString()];\n if (inMemoryObjects) return inMemoryObjects;\n if (ref.hash.length < HASH_SIZE) {\n ref = await this.getFullRefFromShortHash(ref);\n }\n const cached = this.getCache(ref);\n if (cached) {\n return cached;\n }\n let fileContentsRaw: Buffer;\n const objectPath = this.objectPath(ref);\n try {\n fileContentsRaw = await fs.readFile(objectPath);\n } catch (err: any) {\n if (err.code !== 'ENOENT') {\n logger.error(`Failed reading a ref file ${objectPath}. Error: ${err.message}`);\n throw err;\n }\n logger.trace(`Failed finding a ref file ${objectPath}.`);\n if (throws) {\n // if we just `throw err` we loose the stack trace.\n // see https://stackoverflow.com/questions/68022123/no-stack-in-fs-promises-readfile-enoent-error\n const msg = `fatal: failed finding an object file ${objectPath} in the filesystem at ${err.path}`;\n throw Object.assign(err, { stack: new Error(msg).stack });\n }\n // @ts-ignore @todo: fix! it should return BitObject | null.\n return null;\n }\n const size = fileContentsRaw.byteLength;\n const fileContents = this.onRead(fileContentsRaw);\n // uncomment to debug the transformed objects by onRead\n // console.log('transformedContent load', ref.toString(), BitObject.parseSync(fileContents).getType());\n const parsedObject = await BitObject.parseObject(fileContents, objectPath);\n const maxSizeToCache = 100 * 1024; // 100KB\n if (size < maxSizeToCache) {\n // don't cache big files (mainly artifacts) to prevent out-of-memory\n this.setCache(parsedObject);\n }\n return parsedObject;\n }\n\n /**\n * this is restricted to provide objects according to the given types. Otherwise, big scopes (>1GB) could crush.\n * example usage: `this.list([ModelComponent, Symlink, Lane])`\n */\n async list(types: Types): Promise<BitObject[]> {\n const refs = await this.listRefs();\n const concurrency = concurrentIOLimit();\n logger.debug(\n `Repository.list, ${refs.length} refs are going to be loaded, searching for types: ${types.map((t) => t.name).join(', ')}`\n );\n const objects: BitObject[] = [];\n const loadGracefully = process.argv.includes('--never-exported');\n const isTypeIncluded = (obj: BitObject) => types.some((type) => type.name === obj.constructor.name); // avoid using \"obj instanceof type\" for Harmony to call this function successfully\n await pMapPool(\n refs,\n async (ref) => {\n const object = loadGracefully\n ? await this.loadRefDeleteIfInvalid(ref)\n : await this.loadRefOnlyIfType(ref, types);\n if (!object) return;\n if (loadGracefully && !isTypeIncluded(object)) return;\n objects.push(object);\n },\n {\n concurrency,\n onCompletedChunk: (completed) => {\n if (completed % 1000 === 0) logger.debug(`Repository.list, completed ${completed} out of ${refs.length}`);\n },\n }\n );\n return objects;\n }\n\n async loadRefDeleteIfInvalid(ref: Ref) {\n try {\n return await this.load(ref, true);\n } catch (err: any) {\n // this is needed temporarily to allow `bit reset --never-exported` to fix the bit-id-comp-id error.\n // in a few months, we can remove this condition (around min 2024)\n if (err.constructor.name === 'BitIdCompIdError' || err.constructor.name === 'MissingScope') {\n logger.debug(`bit-id-comp-id error, moving an object to trash ${ref.toString()}`);\n await this.moveOneObjectToTrash(ref);\n return undefined;\n }\n throw err;\n }\n }\n\n async loadRefOnlyIfType(ref: Ref, types: Types): Promise<BitObject | null> {\n const objectPath = this.objectPath(ref);\n const fileContentsRaw = await fs.readFile(objectPath);\n const fileContents = this.onRead(fileContentsRaw);\n const typeNames = types.map((type) => type.name);\n const parsedObject = await BitObject.parseObjectOnlyIfType(fileContents, typeNames, objectPath);\n return parsedObject;\n }\n\n async listRefs(cwd = this.getPath()): Promise<Array<Ref>> {\n const matches = await glob(path.join('*', '*'), { cwd });\n const refs = matches.map((str) => {\n const hash = str.replace(path.sep, '');\n if (!isSnap(hash)) {\n logger.error(`fatal: the file \"${str}\" is not a valid bit object path`);\n return null;\n }\n return new Ref(hash);\n });\n return compact(refs);\n }\n\n async listRefsStartWith(shortHash: Ref): Promise<Array<Ref>> {\n const pathPrefix = this.hashPath(shortHash);\n const matches = await glob(`${pathPrefix}*`, { cwd: this.getPath() });\n const refs = matches.map((str) => {\n const hash = str.replace(path.sep, '');\n if (!isSnap(hash)) {\n logger.error(`fatal: the file \"${str}\" is not a valid bit object path`);\n return null;\n }\n return new Ref(hash);\n });\n return compact(refs);\n }\n\n async listRawObjects(): Promise<any> {\n const refs = await this.listRefs();\n const concurrency = concurrentIOLimit();\n return pMapPool(\n refs,\n async (ref) => {\n try {\n const buffer = await this.loadRaw(ref);\n const bitRawObject = await BitRawObject.fromDeflatedBuffer(buffer, ref.hash);\n return bitRawObject;\n } catch {\n logger.error(`Couldn't load the ref ${ref} this object is probably corrupted and should be delete`);\n return null;\n }\n },\n { concurrency }\n );\n }\n\n async listObjectsFromIndex(indexType: IndexType, filter?: Function): Promise<BitObject[]> {\n const hashes = filter ? this.scopeIndex.getHashesByQuery(indexType, filter) : this.scopeIndex.getHashes(indexType);\n return this._getBitObjectsByHashes(hashes);\n }\n\n getHashFromIndex(indexType: IndexType, filter: Function): string | null {\n const hashes = this.scopeIndex.getHashesByQuery(indexType, filter);\n if (hashes.length > 2) throw new Error('getHashFromIndex expect to get zero or one result');\n return hashes.length ? hashes[0] : null;\n }\n\n async _getBitObjectsByHashes(hashes: string[]): Promise<BitObject[]> {\n const missingIndexItems: IndexItem[] = [];\n const bitObjects = await Promise.all(\n hashes.map(async (hash) => {\n const bitObject = await this.load(new Ref(hash));\n if (!bitObject) {\n const indexItem = this.scopeIndex.find(hash);\n if (!indexItem) throw new Error(`_getBitObjectsByHashes failed finding ${hash}`);\n missingIndexItems.push(indexItem);\n return;\n }\n return bitObject;\n })\n );\n if (missingIndexItems.length) {\n this.scopeIndex.removeMany(missingIndexItems.map((item) => new Ref(item.hash)));\n await this.scopeIndex.write();\n const missingStringified = missingIndexItems.map((item) => item.toIdentifierString());\n throw new OutdatedIndexJson(missingStringified);\n }\n return compact(bitObjects);\n }\n\n async loadOptionallyCreateScopeIndex(): Promise<ScopeIndex> {\n try {\n const scopeIndex = await ScopeIndex.load(this.scopePath);\n return scopeIndex;\n } catch (err: any) {\n if (err.code === 'ENOENT') {\n const bitObjects: BitObject[] = await this.list([ModelComponent, Lane]);\n const scopeIndex = ScopeIndex.create(this.scopePath);\n const added = scopeIndex.addMany(bitObjects);\n if (added) await scopeIndex.write();\n return scopeIndex;\n }\n throw err;\n }\n }\n\n async loadRaw(ref: Ref): Promise<Buffer> {\n if (ref.hash.length < HASH_SIZE) {\n ref = await this.getFullRefFromShortHash(ref);\n }\n const raw = await fs.readFile(this.objectPath(ref));\n // Run hook to transform content pre reading\n const transformedContent = this.onRead(raw);\n // uncomment to debug the transformed objects by onRead\n // console.log('transformedContent loadRaw', ref.toString(), BitObject.parseSync(transformedContent).getType());\n return transformedContent;\n }\n\n async getFullRefFromShortHash(ref: Ref): Promise<Ref> {\n const refs = await this.listRefsStartWith(ref);\n if (refs.length > 1) {\n throw new Error(\n `found ${refs.length} objects with the same short hash ${ref.toString()}, please use longer hash`\n );\n }\n if (refs.length === 0) {\n throw new Error(`failed finding an object with the short hash ${ref.toString()}`);\n }\n return refs[0];\n }\n\n async loadManyRaw(refs: Ref[]): Promise<ObjectItem[]> {\n const concurrency = concurrentIOLimit();\n const uniqRefs = uniqBy(refs, 'hash');\n return pMapPool(uniqRefs, async (ref) => ({ ref, buffer: await this.loadRaw(ref) }), { concurrency });\n }\n\n async loadManyRawIgnoreMissing(refs: Ref[]): Promise<ObjectItem[]> {\n const concurrency = concurrentIOLimit();\n const results = await pMapPool(\n refs,\n async (ref) => {\n try {\n const buffer = await this.loadRaw(ref);\n return { ref, buffer };\n } catch (err: any) {\n if (err.code === 'ENOENT') return null;\n throw err;\n }\n },\n { concurrency }\n );\n return compact(results);\n }\n\n async loadRawObject(ref: Ref): Promise<BitRawObject> {\n const buffer = await this.loadRaw(ref);\n const bitRawObject = await BitRawObject.fromDeflatedBuffer(buffer, ref.hash);\n return bitRawObject as any as BitRawObject;\n }\n\n /**\n * prefer using `this.load()` for an async version, which also writes to the cache\n */\n loadSync(ref: Ref, throws = true): BitObject {\n try {\n const objectFile = fs.readFileSync(this.objectPath(ref));\n // Run hook to transform content pre reading\n const transformedContent = this.onRead(objectFile);\n return BitObject.parseSync(transformedContent);\n } catch {\n if (throws) {\n throw new HashNotFound(ref.toString());\n }\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n return null;\n }\n }\n\n setCache(object: BitObject) {\n this.cache.set(object.hash().toString(), object);\n return this;\n }\n\n getCache(ref: Ref): BitObject | undefined {\n return this.cache.get(ref.toString());\n }\n\n removeFromCache(ref: Ref) {\n this.cache.delete(ref.toString());\n }\n\n async clearCache() {\n logger.debug('repository.clearCache');\n this.cache.deleteAll();\n await this.init();\n }\n clearObjectsFromCache() {\n logger.debug('repository.clearObjectsFromCache');\n this.cache.deleteAll();\n }\n\n backup(dirName?: string) {\n const backupDir = this.getBackupPath(dirName);\n const objectsDir = this.getPath();\n logger.debug(`making a backup of all objects from ${objectsDir} to ${backupDir}`);\n fs.emptyDirSync(backupDir);\n fs.copySync(objectsDir, backupDir);\n }\n\n add(object: BitObject | null | undefined): Repository {\n // console.trace(`repository: adding object ${object?.hash().toString()}`);\n if (!object) return this;\n // leave the following commented log message, it is very useful for debugging but too verbose when not needed.\n // logger.debug(`repository: adding object ${object.hash().toString()} which consist of the following id: ${object.id()}`);\n this.objects[object.hash().toString()] = object;\n this.setCache(object);\n return this;\n }\n\n addMany(objects: BitObject[]): Repository {\n if (!objects || !objects.length) return this;\n objects.forEach((obj) => this.add(obj));\n return this;\n }\n\n removeObject(ref: Ref) {\n this.objectsToRemove.push(ref);\n }\n\n removeManyObjects(refs: Ref[]) {\n if (!refs || !refs.length) return;\n refs.forEach((ref) => this.removeObject(ref));\n }\n\n findMany(refs: Ref[]): Promise<BitObject[]> {\n return Promise.all(refs.map((ref) => this.load(ref)));\n }\n\n /**\n * important! use this method only for commands that are non running on an http server.\n *\n * it's better to remove/delete objects directly and not using the `objects` member.\n * it helps to avoid multiple processes running concurrently on an http server.\n *\n * persist objects changes (added and removed) into the filesystem\n * do not call this function multiple times in parallel, otherwise, it'll damage the index.json file.\n * call this function only once after you added and removed all applicable objects.\n */\n async persist(validate = true): Promise<void> {\n // do not let two requests enter this critical area, otherwise, refs/index.json/objects could\n // be corrupted\n logger.debug(`Repository.persist, going to acquire a lock`);\n await this.persistMutex.runExclusive(async () => {\n logger.debug(`Repository.persist, validate = ${validate.toString()}, a lock has been acquired`);\n await this.deleteObjectsFromFS(this.objectsToRemove);\n this.validateObjects(validate, Object.values(this.objects));\n await this.writeObjectsToTheFS(Object.values(this.objects));\n await this.writeRemoteLanes();\n await this.unmergedComponents.write();\n });\n logger.debug(`Repository.persist, completed. the lock has been released`);\n this.clearObjects();\n if (Repository.onPostObjectsPersist) {\n Repository.onPostObjectsPersist().catch((err) => {\n logger.error('fatal: onPostObjectsPersist encountered an error (this error does not stop the process)', err);\n });\n }\n }\n\n async writeRemoteLanes() {\n await this.remoteLanes.write();\n }\n\n /**\n * this is especially critical for http server, where one process lives long and serves multiple\n * exports. without this, the objects get accumulated over time and being rewritten over and over\n * again.\n */\n private clearObjects() {\n this.objects = {};\n this.objectsToRemove = [];\n }\n\n /**\n * normally, the validation step takes place just before the acutal writing of the file.\n * however, this can be an issue where a component has an invalid version. the component could\n * be saved before validating the version (see #1727). that's why we validate here before writing\n * anything to the filesystem.\n * the open question here is whether should we validate again before the actual writing or it\n * should be enough to validate here?\n * for now, it does validate again before saving, only to be 100% sure nothing happens in a few\n * lines of code until the actual writing. however, if the performance penalty is noticeable, we\n * can easily revert it by changing `bitObject.validateBeforePersist = false` line run regardless\n * the `validate` argument.\n */\n validateObjects(validate: boolean, objects: BitObject[]) {\n objects.forEach((bitObject) => {\n // @ts-ignore some BitObject classes have validate() method\n if (validate && bitObject.validate) {\n // @ts-ignore\n bitObject.validate();\n }\n if (!validate) {\n bitObject.validateBeforePersist = false;\n }\n });\n }\n\n async deleteObjectsFromFS(refs: Ref[]): Promise<void> {\n if (!refs.length) return;\n const uniqRefs = uniqBy(refs, 'hash');\n logger.debug(`Repository._deleteMany: deleting ${uniqRefs.length} objects`);\n const concurrency = concurrentIOLimit();\n await pMapPool(uniqRefs, (ref) => this._deleteOne(ref), { concurrency });\n const removed = this.scopeIndex.removeMany(uniqRefs);\n if (removed) await this.scopeIndex.write();\n }\n\n async moveObjectsToDir(refs: Ref[], dir: string): Promise<void> {\n if (!refs.length) return;\n const uniqRefs = uniqBy(refs, 'hash');\n logger.debug(`Repository.moveObjectsToDir: ${uniqRefs.length} objects`);\n const concurrency = concurrentIOLimit();\n await pMapPool(uniqRefs, (ref) => this.moveOneObjectToDir(ref, dir), { concurrency });\n const removed = this.scopeIndex.removeMany(uniqRefs);\n if (removed) await this.scopeIndex.write();\n }\n\n async moveObjectsToTrash(refs: Ref[]): Promise<void> {\n await this.moveObjectsToDir(refs, TRASH_DIR);\n }\n\n async listTrash(): Promise<Ref[]> {\n return this.listRefs(this.getTrashDir());\n }\n\n async getFromTrash(refs: Ref[]): Promise<BitObject[]> {\n const objectsFromTrash = await Promise.all(\n refs.map(async (ref) => {\n const trashObjPath = path.join(this.getTrashDir(), this.hashPath(ref));\n let buffer: Buffer;\n try {\n buffer = await fs.readFile(trashObjPath);\n } catch (err: any) {\n if (err.code === 'ENOENT') {\n throw new BitError(`unable to find the object ${ref.toString()} in the trash`);\n }\n throw err;\n }\n return BitObject.parseObject(buffer, trashObjPath);\n })\n );\n return objectsFromTrash;\n }\n\n async restoreFromTrash(refs: Ref[]) {\n logger.debug(`Repository.restoreFromTrash: ${refs.length} objects`);\n const objectsFromTrash = await this.getFromTrash(refs);\n await this.writeObjectsToTheFS(objectsFromTrash);\n }\n\n async restoreFromDir(dir: string, overwrite = false) {\n await fs.copy(path.join(this.scopePath, dir), this.getPath(), { overwrite });\n }\n\n private async moveOneObjectToDir(ref: Ref, dir: string) {\n const currentPath = this.objectPath(ref);\n const absDir = path.join(this.scopePath, dir);\n const fullPath = path.join(absDir, this.hashPath(ref));\n await fs.move(currentPath, fullPath, { overwrite: true });\n this.removeFromCache(ref);\n }\n\n private async moveOneObjectToTrash(ref: Ref) {\n await this.moveOneObjectToDir(ref, TRASH_DIR);\n }\n\n async deleteRecordsFromUnmergedComponents(compIds: ComponentID[]) {\n this.unmergedComponents.removeMultipleComponents(compIds);\n await this.unmergedComponents.write();\n }\n\n /**\n * write all objects to the FS and index the components/lanes/symlink objects\n */\n async writeObjectsToTheFS(objects: BitObject[]): Promise<void> {\n const count = objects.length;\n if (!count) return;\n logger.trace(`Repository.writeObjectsToTheFS: started writing ${count} objects`);\n const concurrency = concurrentIOLimit();\n await pMapPool(objects, (obj) => this._writeOne(obj), {\n concurrency,\n });\n logger.trace(`Repository.writeObjectsToTheFS: completed writing ${count} objects`);\n\n const added = this.scopeIndex.addMany(objects);\n if (added) await this.scopeIndex.write();\n }\n\n /**\n * do not call this method directly. always call this.removeObject() and once done with all objects,\n * call this.persist()\n */\n _deleteOne(ref: Ref): Promise<boolean> {\n this.removeFromCache(ref);\n const pathToDelete = this.objectPath(ref);\n logger.trace(`repository._deleteOne: deleting ${pathToDelete}`);\n return removeFile(pathToDelete, true);\n }\n\n /**\n * always prefer this.persist() or this.writeObjectsToTheFS()\n * this method doesn't write to scopeIndex. so using this method for ModelComponent or\n * Symlink makes the index outdated.\n */\n async _writeOne(object: BitObject): Promise<boolean> {\n const contents = await object.compress();\n const options: ChownOptions = {};\n if (this.scopeJson.groupName) options.gid = await resolveGroupId(this.scopeJson.groupName);\n const hash = object.hash();\n if (this.cache.has(hash.toString())) this.cache.set(hash.toString(), object); // update the cache\n const objectPath = this.objectPath(hash);\n logger.trace(`repository._writeOne: ${objectPath}`);\n // Run hook to transform content pre persisting\n const transformedContent = this.onPersist(contents);\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n return writeFile(objectPath, transformedContent, options);\n }\n\n async writeObjectsToPendingDir(objectList: ObjectList, pendingDir: PathOsBasedAbsolute) {\n const options: ChownOptions = {};\n if (this.scopeJson.groupName) options.gid = await resolveGroupId(this.scopeJson.groupName);\n await Promise.all(\n objectList.objects.map(async (object) => {\n const objPath = path.join(pendingDir, this.hashPath(object.ref));\n await writeFile(objPath, object.buffer, options);\n })\n );\n }\n\n async readObjectsFromPendingDir(pendingDir: PathOsBasedAbsolute) {\n const refs = await this.listRefs(pendingDir);\n const objects = await Promise.all(\n refs.map(async (ref) => {\n const buffer = await fs.readFile(path.join(pendingDir, this.hashPath(ref)));\n return { ref, buffer };\n })\n );\n return new ObjectList(objects);\n }\n\n private hashPath(ref: Ref) {\n const hash = ref.toString();\n return path.join(hash.slice(0, 2), hash.slice(2));\n }\n}\n\nasync function removeFile(filePath: string, propagateDirs = false): Promise<boolean> {\n try {\n await fs.unlink(filePath);\n } catch (err: any) {\n if (err.code === 'ENOENT') {\n // the file doesn't exist, that's fine, no need to do anything\n return false;\n }\n throw err;\n }\n if (!propagateDirs) return true;\n const { dir } = path.parse(filePath);\n await removeEmptyDir(dir);\n return true;\n}\n\nfunction resolveGroupId(groupName: string): Promise<number | null | undefined> {\n return new Promise((resolve, reject) => {\n uidNumber(null, groupName, (err, uid, gid) => {\n if (err) {\n logger.error('resolveGroupId', err);\n if (err.message.includes('EPERM')) {\n return reject(\n new BitError(\n `unable to resolve group id of \"${groupName}\", current user does not have sufficient permissions`\n )\n );\n }\n if (err.message.includes('group id does not exist')) {\n return reject(new BitError(`unable to resolve group id of \"${groupName}\", the group does not exist`));\n }\n return reject(new BitError(`unable to resolve group id of \"${groupName}\", got an error ${err.message}`));\n }\n // on Windows it'll always be null\n return resolve(gid);\n });\n });\n}\n"],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"names":["_fsExtra","data","_interopRequireDefault","require","_uidNumber","_asyncMutex","_lodash","_bitError","_componentVersion","path","_interopRequireWildcard","_toolboxPromise","_legacy","_legacy2","_legacy3","_toolboxFs","_harmonyModules","_legacy4","_scopeIndex","_object","_objectList","_rawObject","_ref","_repositoryHooks","_harmonyModules2","_models","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_defineProperty","_toPropertyKey","value","enumerable","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","OBJECTS_BACKUP_DIR","OBJECTS_DIR","TRASH_DIR","Repository","constructor","scopePath","scopeJson","onRead","onPersist","cache","createInMemoryCache","maxSize","getMaxSizeForObjects","persistMutex","_persistMutex","Mutex","load","repository","init","scopeIndex","loadOptionallyCreateScopeIndex","remoteLanes","RemoteLanes","unmergedComponents","UnmergedComponents","create","ScopeIndex","reset","getPathByScopePath","join","reLoadScopeIndex","reloadScopeIndexIfNeed","force","latestScopeIndex","currentAllScopeIndexItems","getAll","latestAllScopeIndexItems","length","differenceWith","isEqual","ensureDir","fs","getPath","getBackupPath","dirName","backupPath","getTrashDir","getLicense","getPopulatedLicense","getScopeMetaObject","license","object","ScopeMeta","fromObject","name","ref","hash","buffer","compress","objectPath","hashPath","pathExists","hasMultiple","refs","concurrency","concurrentIOLimit","existingRefs","pMapPool","compact","throws","inMemoryObjects","objects","toString","HASH_SIZE","getFullRefFromShortHash","cached","getCache","fileContentsRaw","readFile","err","code","logger","error","message","trace","msg","assign","stack","Error","size","byteLength","fileContents","parsedObject","BitObject","parseObject","maxSizeToCache","setCache","list","types","listRefs","debug","map","loadGracefully","process","argv","includes","isTypeIncluded","obj","some","type","loadRefDeleteIfInvalid","loadRefOnlyIfType","push","onCompletedChunk","completed","moveOneObjectToTrash","undefined","typeNames","parseObjectOnlyIfType","cwd","matches","glob","str","replace","sep","isSnap","Ref","listRefsStartWith","shortHash","pathPrefix","listRawObjects","loadRaw","bitRawObject","BitRawObject","fromDeflatedBuffer","listObjectsFromIndex","indexType","filter","hashes","getHashesByQuery","getHashes","_getBitObjectsByHashes","getHashFromIndex","missingIndexItems","bitObjects","Promise","all","bitObject","indexItem","find","removeMany","item","write","missingStringified","toIdentifierString","OutdatedIndexJson","ModelComponent","Lane","added","addMany","raw","transformedContent","loadManyRaw","uniqRefs","uniqBy","loadManyRawIgnoreMissing","results","loadRawObject","loadSync","objectFile","readFileSync","parseSync","HashNotFound","removeFromCache","delete","clearCache","deleteAll","clearObjectsFromCache","backup","backupDir","objectsDir","emptyDirSync","copySync","add","forEach","removeObject","objectsToRemove","removeManyObjects","findMany","persist","validate","runExclusive","deleteObjectsFromFS","validateObjects","values","writeObjectsToTheFS","writeRemoteLanes","clearObjects","onPostObjectsPersist","catch","validateBeforePersist","_deleteOne","removed","moveObjectsToDir","dir","moveOneObjectToDir","moveObjectsToTrash","listTrash","getFromTrash","objectsFromTrash","trashObjPath","BitError","restoreFromTrash","restoreFromDir","overwrite","copy","currentPath","absDir","fullPath","move","deleteRecordsFromUnmergedComponents","compIds","removeMultipleComponents","count","_writeOne","pathToDelete","removeFile","contents","options","groupName","gid","resolveGroupId","writeFile","writeObjectsToPendingDir","objectList","pendingDir","objPath","readObjectsFromPendingDir","ObjectList","slice","exports","filePath","propagateDirs","unlink","parse","removeEmptyDir","resolve","reject","uidNumber","uid"],"sources":["repository.ts"],"sourcesContent":["import fs from 'fs-extra';\nimport uidNumber from 'uid-number';\nimport { Mutex } from 'async-mutex';\nimport { compact, uniqBy, differenceWith, isEqual } from 'lodash';\nimport { BitError } from '@teambit/bit-error';\nimport { ComponentID } from '@teambit/component-id';\nimport { HASH_SIZE, isSnap } from '@teambit/component-version';\nimport * as path from 'path';\nimport { pMapPool } from '@teambit/toolbox.promise.map-pool';\nimport { OBJECTS_DIR } from '@teambit/legacy.constants';\nimport { logger } from '@teambit/legacy.logger';\nimport { glob, writeFile, ChownOptions, PathOsBasedAbsolute } from '@teambit/legacy.utils';\nimport { removeEmptyDir } from '@teambit/toolbox.fs.remove-empty-dir';\nimport { concurrentIOLimit } from '@teambit/harmony.modules.concurrency';\nimport {\n Types,\n HashNotFound,\n OutdatedIndexJson,\n ScopeJson,\n UnmergedComponents,\n RemoteLanes,\n} from '@teambit/legacy.scope';\nimport { ScopeIndex, IndexType, IndexItem } from './scope-index';\nimport BitObject from './object';\nimport { ObjectItem, ObjectList } from './object-list';\nimport BitRawObject from './raw-object';\nimport Ref from './ref';\nimport { ContentTransformer, onPersist, onRead } from './repository-hooks';\nimport { getMaxSizeForObjects, InMemoryCache, createInMemoryCache } from '@teambit/harmony.modules.in-memory-cache';\nimport { ScopeMeta, Lane, ModelComponent } from '../models';\n\nconst OBJECTS_BACKUP_DIR = `${OBJECTS_DIR}.bak`;\nconst TRASH_DIR = 'trash';\n\nexport default class Repository {\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n objects: { [key: string]: BitObject } = {};\n objectsToRemove: Ref[] = [];\n scopeJson: ScopeJson;\n onRead: ContentTransformer;\n onPersist: ContentTransformer;\n scopePath: string;\n scopeIndex: ScopeIndex;\n protected cache: InMemoryCache<BitObject>;\n remoteLanes!: RemoteLanes;\n unmergedComponents!: UnmergedComponents;\n _persistMutex?: Mutex;\n constructor(scopePath: string, scopeJson: ScopeJson) {\n this.scopePath = scopePath;\n this.scopeJson = scopeJson;\n this.onRead = onRead(scopePath, scopeJson);\n this.onPersist = onPersist(scopePath, scopeJson);\n this.cache = createInMemoryCache({ maxSize: getMaxSizeForObjects() });\n }\n\n get persistMutex() {\n if (!this._persistMutex) {\n this._persistMutex = new Mutex();\n }\n return this._persistMutex;\n }\n\n static async load({ scopePath, scopeJson }: { scopePath: string; scopeJson: ScopeJson }): Promise<Repository> {\n const repository = new Repository(scopePath, scopeJson);\n await repository.init();\n return repository;\n }\n\n async init() {\n const scopeIndex = await this.loadOptionallyCreateScopeIndex();\n this.scopeIndex = scopeIndex;\n this.remoteLanes = new RemoteLanes(this.scopePath);\n this.unmergedComponents = await UnmergedComponents.load(this.scopePath);\n }\n\n static async create({ scopePath, scopeJson }: { scopePath: string; scopeJson: ScopeJson }): Promise<Repository> {\n const repository = new Repository(scopePath, scopeJson);\n const scopeIndex = ScopeIndex.create(scopePath);\n repository.scopeIndex = scopeIndex;\n repository.unmergedComponents = await UnmergedComponents.load(scopePath);\n repository.remoteLanes = new RemoteLanes(scopePath);\n return repository;\n }\n\n static reset(scopePath: string): Promise<void> {\n return ScopeIndex.reset(scopePath);\n }\n\n static getPathByScopePath(scopePath: string) {\n return path.join(scopePath, OBJECTS_DIR);\n }\n\n static onPostObjectsPersist: () => Promise<void>;\n\n async reLoadScopeIndex() {\n this.scopeIndex = await this.loadOptionallyCreateScopeIndex();\n }\n\n /**\n * current scope index difference with <scope_folder>/index.json content, reload it\n * @deprecated use Scope aspect `watchSystemFiles` instead, it's way more efficient.\n */\n public async reloadScopeIndexIfNeed(force = false) {\n const latestScopeIndex = await this.loadOptionallyCreateScopeIndex();\n if (force) {\n this.scopeIndex = latestScopeIndex;\n return;\n }\n\n const currentAllScopeIndexItems = this.scopeIndex.getAll();\n const latestAllScopeIndexItems = latestScopeIndex.getAll();\n\n if (currentAllScopeIndexItems.length !== latestAllScopeIndexItems.length) {\n this.scopeIndex = latestScopeIndex;\n return;\n }\n\n if (differenceWith(currentAllScopeIndexItems, latestAllScopeIndexItems, isEqual).length) {\n this.scopeIndex = latestScopeIndex;\n }\n }\n\n ensureDir() {\n return fs.ensureDir(this.getPath());\n }\n\n getPath() {\n return Repository.getPathByScopePath(this.scopePath);\n }\n\n getBackupPath(dirName?: string): string {\n const backupPath = path.join(this.scopePath, OBJECTS_BACKUP_DIR);\n return dirName ? path.join(backupPath, dirName) : backupPath;\n }\n\n getTrashDir() {\n return path.join(this.scopePath, TRASH_DIR);\n }\n\n getLicense(): Promise<string> {\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n return this.scopeJson.getPopulatedLicense();\n }\n\n async getScopeMetaObject(): Promise<ObjectItem> {\n const license = await this.getLicense();\n const object = ScopeMeta.fromObject({ license, name: this.scopeJson.name });\n return { ref: object.hash(), buffer: await object.compress() };\n }\n\n objectPath(ref: Ref): string {\n return path.join(this.getPath(), this.hashPath(ref));\n }\n\n async has(ref: Ref): Promise<boolean> {\n const objectPath = this.objectPath(ref);\n return fs.pathExists(objectPath);\n }\n\n async hasMultiple(refs: Ref[]): Promise<Ref[]> {\n const concurrency = concurrentIOLimit();\n const existingRefs = await pMapPool(\n refs,\n async (ref) => {\n const pathExists = await this.has(ref);\n return pathExists ? ref : null;\n },\n { concurrency }\n );\n return compact(existingRefs);\n }\n\n async load(ref: Ref, throws = false): Promise<BitObject> {\n // during tag, the updated objects are in `this.objects`.\n // `this.cache` is less reliable, because if it reaches its max, then it loads from the filesystem, which may not\n // be there yet (in case of \"version\" object), or may be out-of-date (in case of \"component\" object).\n const inMemoryObjects = this.objects[ref.hash.toString()];\n if (inMemoryObjects) return inMemoryObjects;\n if (ref.hash.length < HASH_SIZE) {\n ref = await this.getFullRefFromShortHash(ref);\n }\n const cached = this.getCache(ref);\n if (cached) {\n return cached;\n }\n let fileContentsRaw: Buffer;\n const objectPath = this.objectPath(ref);\n try {\n fileContentsRaw = await fs.readFile(objectPath);\n } catch (err: any) {\n if (err.code !== 'ENOENT') {\n logger.error(`Failed reading a ref file ${objectPath}. Error: ${err.message}`);\n throw err;\n }\n logger.trace(`Failed finding a ref file ${objectPath}.`);\n if (throws) {\n // if we just `throw err` we loose the stack trace.\n // see https://stackoverflow.com/questions/68022123/no-stack-in-fs-promises-readfile-enoent-error\n const msg = `fatal: failed finding an object file ${objectPath} in the filesystem at ${err.path}`;\n throw Object.assign(err, { stack: new Error(msg).stack });\n }\n // @ts-ignore @todo: fix! it should return BitObject | null.\n return null;\n }\n const size = fileContentsRaw.byteLength;\n const fileContents = this.onRead(fileContentsRaw);\n // uncomment to debug the transformed objects by onRead\n // console.log('transformedContent load', ref.toString(), BitObject.parseSync(fileContents).getType());\n const parsedObject = await BitObject.parseObject(fileContents, objectPath);\n const maxSizeToCache = 100 * 1024; // 100KB\n if (size < maxSizeToCache) {\n // don't cache big files (mainly artifacts) to prevent out-of-memory\n this.setCache(parsedObject);\n }\n return parsedObject;\n }\n\n /**\n * this is restricted to provide objects according to the given types. Otherwise, big scopes (>1GB) could crush.\n * example usage: `this.list([ModelComponent, Symlink, Lane])`\n */\n async list(types: Types): Promise<BitObject[]> {\n const refs = await this.listRefs();\n const concurrency = concurrentIOLimit();\n logger.debug(\n `Repository.list, ${refs.length} refs are going to be loaded, searching for types: ${types.map((t) => t.name).join(', ')}`\n );\n const objects: BitObject[] = [];\n const loadGracefully = process.argv.includes('--never-exported');\n const isTypeIncluded = (obj: BitObject) => types.some((type) => type.name === obj.constructor.name); // avoid using \"obj instanceof type\" for Harmony to call this function successfully\n await pMapPool(\n refs,\n async (ref) => {\n const object = loadGracefully\n ? await this.loadRefDeleteIfInvalid(ref)\n : await this.loadRefOnlyIfType(ref, types);\n if (!object) return;\n if (loadGracefully && !isTypeIncluded(object)) return;\n objects.push(object);\n },\n {\n concurrency,\n onCompletedChunk: (completed) => {\n if (completed % 1000 === 0) logger.debug(`Repository.list, completed ${completed} out of ${refs.length}`);\n },\n }\n );\n return objects;\n }\n\n async loadRefDeleteIfInvalid(ref: Ref) {\n try {\n return await this.load(ref, true);\n } catch (err: any) {\n // this is needed temporarily to allow `bit reset --never-exported` to fix the bit-id-comp-id error.\n // in a few months, we can remove this condition (around min 2024)\n if (err.constructor.name === 'BitIdCompIdError' || err.constructor.name === 'MissingScope') {\n logger.debug(`bit-id-comp-id error, moving an object to trash ${ref.toString()}`);\n await this.moveOneObjectToTrash(ref);\n return undefined;\n }\n throw err;\n }\n }\n\n async loadRefOnlyIfType(ref: Ref, types: Types): Promise<BitObject | null> {\n const objectPath = this.objectPath(ref);\n const fileContentsRaw = await fs.readFile(objectPath);\n const fileContents = this.onRead(fileContentsRaw);\n const typeNames = types.map((type) => type.name);\n const parsedObject = await BitObject.parseObjectOnlyIfType(fileContents, typeNames, objectPath);\n return parsedObject;\n }\n\n async listRefs(cwd = this.getPath()): Promise<Array<Ref>> {\n const matches = await glob(path.join('*', '*'), { cwd });\n const refs = matches.map((str) => {\n const hash = str.replace(path.sep, '');\n if (!isSnap(hash)) {\n logger.error(`fatal: the file \"${str}\" is not a valid bit object path`);\n return null;\n }\n return new Ref(hash);\n });\n return compact(refs);\n }\n\n async listRefsStartWith(shortHash: Ref): Promise<Array<Ref>> {\n const pathPrefix = this.hashPath(shortHash);\n const matches = await glob(`${pathPrefix}*`, { cwd: this.getPath() });\n const refs = matches.map((str) => {\n const hash = str.replace(path.sep, '');\n if (!isSnap(hash)) {\n logger.error(`fatal: the file \"${str}\" is not a valid bit object path`);\n return null;\n }\n return new Ref(hash);\n });\n return compact(refs);\n }\n\n async listRawObjects(): Promise<any> {\n const refs = await this.listRefs();\n const concurrency = concurrentIOLimit();\n return pMapPool(\n refs,\n async (ref) => {\n try {\n const buffer = await this.loadRaw(ref);\n const bitRawObject = await BitRawObject.fromDeflatedBuffer(buffer, ref.hash);\n return bitRawObject;\n } catch {\n logger.error(`Couldn't load the ref ${ref} this object is probably corrupted and should be delete`);\n return null;\n }\n },\n { concurrency }\n );\n }\n\n async listObjectsFromIndex(indexType: IndexType, filter?: Function): Promise<BitObject[]> {\n const hashes = filter ? this.scopeIndex.getHashesByQuery(indexType, filter) : this.scopeIndex.getHashes(indexType);\n return this._getBitObjectsByHashes(hashes);\n }\n\n getHashFromIndex(indexType: IndexType, filter: Function): string | null {\n const hashes = this.scopeIndex.getHashesByQuery(indexType, filter);\n if (hashes.length > 2) throw new Error('getHashFromIndex expect to get zero or one result');\n return hashes.length ? hashes[0] : null;\n }\n\n async _getBitObjectsByHashes(hashes: string[]): Promise<BitObject[]> {\n const missingIndexItems: IndexItem[] = [];\n const bitObjects = await Promise.all(\n hashes.map(async (hash) => {\n const bitObject = await this.load(new Ref(hash));\n if (!bitObject) {\n const indexItem = this.scopeIndex.find(hash);\n if (!indexItem) throw new Error(`_getBitObjectsByHashes failed finding ${hash}`);\n missingIndexItems.push(indexItem);\n return;\n }\n return bitObject;\n })\n );\n if (missingIndexItems.length) {\n this.scopeIndex.removeMany(missingIndexItems.map((item) => new Ref(item.hash)));\n await this.scopeIndex.write();\n const missingStringified = missingIndexItems.map((item) => item.toIdentifierString());\n throw new OutdatedIndexJson(missingStringified);\n }\n return compact(bitObjects);\n }\n\n async loadOptionallyCreateScopeIndex(): Promise<ScopeIndex> {\n try {\n const scopeIndex = await ScopeIndex.load(this.scopePath);\n return scopeIndex;\n } catch (err: any) {\n if (err.code === 'ENOENT') {\n const bitObjects: BitObject[] = await this.list([ModelComponent, Lane]);\n const scopeIndex = ScopeIndex.create(this.scopePath);\n const added = scopeIndex.addMany(bitObjects);\n if (added) await scopeIndex.write();\n return scopeIndex;\n }\n throw err;\n }\n }\n\n async loadRaw(ref: Ref): Promise<Buffer> {\n if (ref.hash.length < HASH_SIZE) {\n ref = await this.getFullRefFromShortHash(ref);\n }\n const raw = await fs.readFile(this.objectPath(ref));\n // Run hook to transform content pre reading\n const transformedContent = this.onRead(raw);\n // uncomment to debug the transformed objects by onRead\n // console.log('transformedContent loadRaw', ref.toString(), BitObject.parseSync(transformedContent).getType());\n return transformedContent;\n }\n\n async getFullRefFromShortHash(ref: Ref): Promise<Ref> {\n const refs = await this.listRefsStartWith(ref);\n if (refs.length > 1) {\n throw new Error(\n `found ${refs.length} objects with the same short hash ${ref.toString()}, please use longer hash`\n );\n }\n if (refs.length === 0) {\n throw new Error(`failed finding an object with the short hash ${ref.toString()}`);\n }\n return refs[0];\n }\n\n async loadManyRaw(refs: Ref[]): Promise<ObjectItem[]> {\n const concurrency = concurrentIOLimit();\n const uniqRefs = uniqBy(refs, 'hash');\n return pMapPool(uniqRefs, async (ref) => ({ ref, buffer: await this.loadRaw(ref) }), { concurrency });\n }\n\n async loadManyRawIgnoreMissing(refs: Ref[]): Promise<ObjectItem[]> {\n const concurrency = concurrentIOLimit();\n const results = await pMapPool(\n refs,\n async (ref) => {\n try {\n const buffer = await this.loadRaw(ref);\n return { ref, buffer };\n } catch (err: any) {\n if (err.code === 'ENOENT') return null;\n throw err;\n }\n },\n { concurrency }\n );\n return compact(results);\n }\n\n async loadRawObject(ref: Ref): Promise<BitRawObject> {\n const buffer = await this.loadRaw(ref);\n const bitRawObject = await BitRawObject.fromDeflatedBuffer(buffer, ref.hash);\n return bitRawObject as any as BitRawObject;\n }\n\n /**\n * prefer using `this.load()` for an async version, which also writes to the cache\n */\n loadSync(ref: Ref, throws = true): BitObject {\n try {\n const objectFile = fs.readFileSync(this.objectPath(ref));\n // Run hook to transform content pre reading\n const transformedContent = this.onRead(objectFile);\n return BitObject.parseSync(transformedContent);\n } catch {\n if (throws) {\n throw new HashNotFound(ref.toString());\n }\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n return null;\n }\n }\n\n setCache(object: BitObject) {\n this.cache.set(object.hash().toString(), object);\n return this;\n }\n\n getCache(ref: Ref): BitObject | undefined {\n return this.cache.get(ref.toString());\n }\n\n removeFromCache(ref: Ref) {\n this.cache.delete(ref.toString());\n }\n\n async clearCache() {\n logger.debug('repository.clearCache');\n this.cache.deleteAll();\n await this.init();\n }\n clearObjectsFromCache() {\n logger.debug('repository.clearObjectsFromCache');\n this.cache.deleteAll();\n }\n\n backup(dirName?: string) {\n const backupDir = this.getBackupPath(dirName);\n const objectsDir = this.getPath();\n logger.debug(`making a backup of all objects from ${objectsDir} to ${backupDir}`);\n fs.emptyDirSync(backupDir);\n fs.copySync(objectsDir, backupDir);\n }\n\n add(object: BitObject | null | undefined): Repository {\n // console.trace(`repository: adding object ${object?.hash().toString()}`);\n if (!object) return this;\n // leave the following commented log message, it is very useful for debugging but too verbose when not needed.\n // logger.debug(`repository: adding object ${object.hash().toString()} which consist of the following id: ${object.id()}`);\n this.objects[object.hash().toString()] = object;\n this.setCache(object);\n return this;\n }\n\n addMany(objects: BitObject[]): Repository {\n if (!objects || !objects.length) return this;\n objects.forEach((obj) => this.add(obj));\n return this;\n }\n\n removeObject(ref: Ref) {\n this.objectsToRemove.push(ref);\n }\n\n removeManyObjects(refs: Ref[]) {\n if (!refs || !refs.length) return;\n refs.forEach((ref) => this.removeObject(ref));\n }\n\n findMany(refs: Ref[]): Promise<BitObject[]> {\n return Promise.all(refs.map((ref) => this.load(ref)));\n }\n\n /**\n * important! use this method only for commands that are non running on an http server.\n *\n * it's better to remove/delete objects directly and not using the `objects` member.\n * it helps to avoid multiple processes running concurrently on an http server.\n *\n * persist objects changes (added and removed) into the filesystem\n * do not call this function multiple times in parallel, otherwise, it'll damage the index.json file.\n * call this function only once after you added and removed all applicable objects.\n */\n async persist(validate = true): Promise<void> {\n // do not let two requests enter this critical area, otherwise, refs/index.json/objects could\n // be corrupted\n logger.debug(`Repository.persist, going to acquire a lock`);\n await this.persistMutex.runExclusive(async () => {\n logger.debug(`Repository.persist, validate = ${validate.toString()}, a lock has been acquired`);\n await this.deleteObjectsFromFS(this.objectsToRemove);\n this.validateObjects(validate, Object.values(this.objects));\n await this.writeObjectsToTheFS(Object.values(this.objects));\n await this.writeRemoteLanes();\n await this.unmergedComponents.write();\n });\n logger.debug(`Repository.persist, completed. the lock has been released`);\n this.clearObjects();\n if (Repository.onPostObjectsPersist) {\n Repository.onPostObjectsPersist().catch((err) => {\n logger.error('fatal: onPostObjectsPersist encountered an error (this error does not stop the process)', err);\n });\n }\n }\n\n async writeRemoteLanes() {\n await this.remoteLanes.write();\n }\n\n /**\n * this is especially critical for http server, where one process lives long and serves multiple\n * exports. without this, the objects get accumulated over time and being rewritten over and over\n * again.\n */\n private clearObjects() {\n this.objects = {};\n this.objectsToRemove = [];\n }\n\n /**\n * normally, the validation step takes place just before the acutal writing of the file.\n * however, this can be an issue where a component has an invalid version. the component could\n * be saved before validating the version (see #1727). that's why we validate here before writing\n * anything to the filesystem.\n * the open question here is whether should we validate again before the actual writing or it\n * should be enough to validate here?\n * for now, it does validate again before saving, only to be 100% sure nothing happens in a few\n * lines of code until the actual writing. however, if the performance penalty is noticeable, we\n * can easily revert it by changing `bitObject.validateBeforePersist = false` line run regardless\n * the `validate` argument.\n */\n validateObjects(validate: boolean, objects: BitObject[]) {\n objects.forEach((bitObject) => {\n // @ts-ignore some BitObject classes have validate() method\n if (validate && bitObject.validate) {\n // @ts-ignore\n bitObject.validate();\n }\n if (!validate) {\n bitObject.validateBeforePersist = false;\n }\n });\n }\n\n async deleteObjectsFromFS(refs: Ref[]): Promise<void> {\n if (!refs.length) return;\n const uniqRefs = uniqBy(refs, 'hash');\n logger.debug(`Repository._deleteMany: deleting ${uniqRefs.length} objects`);\n const concurrency = concurrentIOLimit();\n await pMapPool(uniqRefs, (ref) => this._deleteOne(ref), { concurrency });\n const removed = this.scopeIndex.removeMany(uniqRefs);\n if (removed) await this.scopeIndex.write();\n }\n\n async moveObjectsToDir(refs: Ref[], dir: string): Promise<void> {\n if (!refs.length) return;\n const uniqRefs = uniqBy(refs, 'hash');\n logger.debug(`Repository.moveObjectsToDir: ${uniqRefs.length} objects`);\n const concurrency = concurrentIOLimit();\n await pMapPool(uniqRefs, (ref) => this.moveOneObjectToDir(ref, dir), { concurrency });\n const removed = this.scopeIndex.removeMany(uniqRefs);\n if (removed) await this.scopeIndex.write();\n }\n\n async moveObjectsToTrash(refs: Ref[]): Promise<void> {\n await this.moveObjectsToDir(refs, TRASH_DIR);\n }\n\n async listTrash(): Promise<Ref[]> {\n return this.listRefs(this.getTrashDir());\n }\n\n async getFromTrash(refs: Ref[]): Promise<BitObject[]> {\n const objectsFromTrash = await Promise.all(\n refs.map(async (ref) => {\n const trashObjPath = path.join(this.getTrashDir(), this.hashPath(ref));\n let buffer: Buffer;\n try {\n buffer = await fs.readFile(trashObjPath);\n } catch (err: any) {\n if (err.code === 'ENOENT') {\n throw new BitError(`unable to find the object ${ref.toString()} in the trash`);\n }\n throw err;\n }\n return BitObject.parseObject(buffer, trashObjPath);\n })\n );\n return objectsFromTrash;\n }\n\n async restoreFromTrash(refs: Ref[]) {\n logger.debug(`Repository.restoreFromTrash: ${refs.length} objects`);\n const objectsFromTrash = await this.getFromTrash(refs);\n await this.writeObjectsToTheFS(objectsFromTrash);\n }\n\n async restoreFromDir(dir: string, overwrite = false) {\n await fs.copy(path.join(this.scopePath, dir), this.getPath(), { overwrite });\n }\n\n private async moveOneObjectToDir(ref: Ref, dir: string) {\n const currentPath = this.objectPath(ref);\n const absDir = path.join(this.scopePath, dir);\n const fullPath = path.join(absDir, this.hashPath(ref));\n await fs.move(currentPath, fullPath, { overwrite: true });\n this.removeFromCache(ref);\n }\n\n private async moveOneObjectToTrash(ref: Ref) {\n await this.moveOneObjectToDir(ref, TRASH_DIR);\n }\n\n async deleteRecordsFromUnmergedComponents(compIds: ComponentID[]) {\n this.unmergedComponents.removeMultipleComponents(compIds);\n await this.unmergedComponents.write();\n }\n\n /**\n * write all objects to the FS and index the components/lanes/symlink objects\n */\n async writeObjectsToTheFS(objects: BitObject[]): Promise<void> {\n const count = objects.length;\n if (!count) return;\n logger.trace(`Repository.writeObjectsToTheFS: started writing ${count} objects`);\n const concurrency = concurrentIOLimit();\n await pMapPool(objects, (obj) => this._writeOne(obj), {\n concurrency,\n });\n logger.trace(`Repository.writeObjectsToTheFS: completed writing ${count} objects`);\n\n const added = this.scopeIndex.addMany(objects);\n if (added) await this.scopeIndex.write();\n }\n\n /**\n * do not call this method directly. always call this.removeObject() and once done with all objects,\n * call this.persist()\n */\n _deleteOne(ref: Ref): Promise<boolean> {\n this.removeFromCache(ref);\n const pathToDelete = this.objectPath(ref);\n logger.trace(`repository._deleteOne: deleting ${pathToDelete}`);\n return removeFile(pathToDelete, true);\n }\n\n /**\n * always prefer this.persist() or this.writeObjectsToTheFS()\n * this method doesn't write to scopeIndex. so using this method for ModelComponent or\n * Symlink makes the index outdated.\n */\n async _writeOne(object: BitObject): Promise<boolean> {\n const contents = await object.compress();\n const options: ChownOptions = {};\n if (this.scopeJson.groupName) options.gid = await resolveGroupId(this.scopeJson.groupName);\n const hash = object.hash();\n if (this.cache.has(hash.toString())) this.cache.set(hash.toString(), object); // update the cache\n const objectPath = this.objectPath(hash);\n logger.trace(`repository._writeOne: ${objectPath}`);\n // Run hook to transform content pre persisting\n const transformedContent = this.onPersist(contents);\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n return writeFile(objectPath, transformedContent, options);\n }\n\n async writeObjectsToPendingDir(objectList: ObjectList, pendingDir: PathOsBasedAbsolute) {\n const options: ChownOptions = {};\n if (this.scopeJson.groupName) options.gid = await resolveGroupId(this.scopeJson.groupName);\n await Promise.all(\n objectList.objects.map(async (object) => {\n const objPath = path.join(pendingDir, this.hashPath(object.ref));\n await writeFile(objPath, object.buffer, options);\n })\n );\n }\n\n async readObjectsFromPendingDir(pendingDir: PathOsBasedAbsolute) {\n const refs = await this.listRefs(pendingDir);\n const objects = await Promise.all(\n refs.map(async (ref) => {\n const buffer = await fs.readFile(path.join(pendingDir, this.hashPath(ref)));\n return { ref, buffer };\n })\n );\n return new ObjectList(objects);\n }\n\n private hashPath(ref: Ref) {\n const hash = ref.toString();\n return path.join(hash.slice(0, 2), hash.slice(2));\n }\n}\n\nasync function removeFile(filePath: string, propagateDirs = false): Promise<boolean> {\n try {\n await fs.unlink(filePath);\n } catch (err: any) {\n if (err.code === 'ENOENT') {\n // the file doesn't exist, that's fine, no need to do anything\n return false;\n }\n throw err;\n }\n if (!propagateDirs) return true;\n const { dir } = path.parse(filePath);\n await removeEmptyDir(dir);\n return true;\n}\n\nfunction resolveGroupId(groupName: string): Promise<number | null | undefined> {\n return new Promise((resolve, reject) => {\n uidNumber(null, groupName, (err, uid, gid) => {\n if (err) {\n logger.error('resolveGroupId', err);\n if (err.message.includes('EPERM')) {\n return reject(\n new BitError(\n `unable to resolve group id of \"${groupName}\", current user does not have sufficient permissions`\n )\n );\n }\n if (err.message.includes('group id does not exist')) {\n return reject(new BitError(`unable to resolve group id of \"${groupName}\", the group does not exist`));\n }\n return reject(new BitError(`unable to resolve group id of \"${groupName}\", got an error ${err.message}`));\n }\n // on Windows it'll always be null\n return resolve(gid);\n });\n });\n}\n"],"mappings":"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","ignoreList":[]}
|
@@ -67,8 +67,7 @@ function _lodash() {
|
|
67
67
|
};
|
68
68
|
return data;
|
69
69
|
}
|
70
|
-
function
|
71
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
70
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
72
71
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
73
72
|
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
74
73
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_fsExtra","data","_interopRequireDefault","require","_asyncMutex","path","_interopRequireWildcard","_laneId","_legacy","_legacy2","_models","_lane","_lodash","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","_defineProperty","_toPropertyKey","value","enumerable","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","COMPONENTS_INDEX_FILENAME","ComponentItem","constructor","id","isSymlink","hash","toIdentifierString","scope","name","exports","LaneItem","toLaneId","LaneId","IndexType","ScopeIndex","indexPath","index","components","lanes","writeIndexMutex","_writeIndexMutex","Mutex","load","basePath","_composePath","indexRaw","fs","readJson","getIndexWithBackwardCompatibility","Array","isArray","indexObject","map","c","l","err","message","includes","InvalidIndexJson","create","reset","logger","debug","remove","write","runExclusive","writeJson","spaces","getAll","values","flat","getHashes","indexType","indexItem","getHashesByQuery","filter","getHashesIncludeSymlinks","addMany","bitObjects","added","bitObject","addOne","some","oneAdded","ModelComponent","Symlink","Lane","toString","found","find","isEqual","laneItem","push","_exist","componentItem","removeMany","refs","removed","ref","removeOne","removedOne","entity","keys","difference","deleteFile","getPath","isFileOnBitHub","Boolean","join"],"sources":["scope-index.ts"],"sourcesContent":["/* eslint max-classes-per-file: 0 */\nimport fs from 'fs-extra';\nimport { Mutex } from 'async-mutex';\nimport * as path from 'path';\nimport { LaneId } from '@teambit/lane-id';\nimport { logger } from '@teambit/legacy.logger';\nimport { InvalidIndexJson } from '@teambit/legacy.scope';\nimport { ModelComponent, Symlink } from '../models';\nimport Lane from '../models/lane';\nimport BitObject from './object';\nimport Ref from './ref';\nimport { difference } from 'lodash';\n\nconst COMPONENTS_INDEX_FILENAME = 'index.json';\n\nexport interface IndexItem {\n hash: string;\n toIdentifierString(): string;\n}\n\nexport class ComponentItem implements IndexItem {\n constructor(\n public id: { scope: string | null; name: string },\n public isSymlink: boolean,\n public hash: string\n ) {}\n\n toIdentifierString(): string {\n const scope = this.id.scope ? `${this.id.scope}/` : '';\n return `component \"${scope}${this.id.name}\"`;\n }\n}\n\nexport class LaneItem implements IndexItem {\n constructor(\n public id: { scope: string; name: string },\n public hash: string\n ) {}\n\n toIdentifierString() {\n const scope = this.id.scope ? `${this.id.scope}/` : '';\n return `lane \"${scope}${this.id.name}\"`;\n }\n\n toLaneId(): LaneId {\n return new LaneId({ name: this.id.name, scope: this.id.scope });\n }\n}\n\nexport enum IndexType {\n components = 'components',\n lanes = 'lanes',\n}\n\ntype Index = { [IndexType.components]: ComponentItem[]; [IndexType.lanes]: LaneItem[] };\n\nexport class ScopeIndex {\n indexPath: string;\n index: Index;\n _writeIndexMutex?: Mutex;\n constructor(indexPath: string, index: Index = { [IndexType.components]: [], [IndexType.lanes]: [] }) {\n this.indexPath = indexPath;\n this.index = index;\n }\n get writeIndexMutex() {\n if (!this._writeIndexMutex) {\n this._writeIndexMutex = new Mutex();\n }\n return this._writeIndexMutex;\n }\n static async load(basePath: string): Promise<ScopeIndex> {\n const indexPath = this._composePath(basePath);\n try {\n const indexRaw = await fs.readJson(indexPath);\n const getIndexWithBackwardCompatibility = (): Index => {\n if (Array.isArray(indexRaw)) {\n return { [IndexType.components]: indexRaw, [IndexType.lanes]: [] };\n }\n return indexRaw;\n };\n const indexObject = getIndexWithBackwardCompatibility();\n const index = {\n [IndexType.components]: indexObject[IndexType.components].map(\n (c) => new ComponentItem(c.id, c.isSymlink, c.hash)\n ),\n [IndexType.lanes]: indexObject[IndexType.lanes].map((l) => new LaneItem(l.id, l.hash)),\n };\n return new ScopeIndex(indexPath, index);\n } catch (err: any) {\n if (err.message.includes('Unexpected token')) {\n throw new InvalidIndexJson(indexPath, err.message);\n }\n throw err;\n }\n }\n static create(basePath: string): ScopeIndex {\n const indexPath = this._composePath(basePath);\n return new ScopeIndex(indexPath);\n }\n static async reset(basePath: string) {\n const indexPath = this._composePath(basePath);\n logger.debug(`ComponentsIndex, deleting the index file at ${indexPath}`);\n await fs.remove(indexPath);\n }\n async write() {\n // write only one at a time to avoid corrupting the json file.\n await this.writeIndexMutex.runExclusive(() => fs.writeJson(this.indexPath, this.index, { spaces: 2 }));\n }\n getAll(): IndexItem[] {\n return Object.values(this.index).flat();\n }\n\n getHashes(indexType: IndexType): string[] {\n // @ts-ignore how to tell TS that all this.index.prop are array?\n return this.index[indexType].map((indexItem: IndexItem) => indexItem.hash);\n }\n getHashesByQuery(indexType: IndexType, filter: Function): string[] {\n // @ts-ignore how to tell TS that all this.index.prop are array?\n return this.index[indexType].filter(filter).map((indexItem: IndexItem) => indexItem.hash);\n }\n getHashesIncludeSymlinks(): string[] {\n return this.index.components.map((indexItem) => indexItem.hash);\n }\n addMany(bitObjects: BitObject[]): boolean {\n const added = bitObjects.map((bitObject) => this.addOne(bitObject));\n return added.some((oneAdded) => oneAdded); // return true if one of the objects was added\n }\n addOne(bitObject: BitObject): boolean {\n if (!(bitObject instanceof ModelComponent) && !(bitObject instanceof Symlink) && !(bitObject instanceof Lane))\n return false;\n const hash = bitObject.hash().toString();\n\n if (bitObject instanceof Lane) {\n const found = this.find(hash) as LaneItem | undefined;\n if (found) {\n if ((found as LaneItem).toLaneId().isEqual(bitObject.toLaneId())) return false;\n found.id = bitObject.toLaneId();\n } else {\n const laneItem = new LaneItem(bitObject.toLaneId(), hash);\n this.index.lanes.push(laneItem);\n }\n return true;\n }\n if (bitObject instanceof ModelComponent || bitObject instanceof Symlink) {\n if (this._exist(hash)) return false;\n const componentItem = new ComponentItem(\n { scope: bitObject.scope || null, name: bitObject.name },\n bitObject instanceof Symlink,\n hash\n );\n this.index.components.push(componentItem);\n }\n return true;\n }\n removeMany(refs: Ref[]): boolean {\n const removed = refs.map((ref) => this.removeOne(ref.toString()));\n return removed.some((removedOne) => removedOne); // return true if one of the objects was removed\n }\n removeOne(hash: string): boolean {\n for (const entity of Object.keys(IndexType)) {\n const found = this.index[entity].find((indexItem) => indexItem.hash === hash);\n if (found) {\n this.index[entity] = difference(this.index[entity], [found]);\n return true;\n }\n }\n return false;\n }\n async deleteFile() {\n logger.debug(`ComponentsIndex, deleting the index file at ${this.indexPath}`);\n await fs.remove(this.indexPath);\n }\n getPath() {\n return this.indexPath;\n }\n /**\n * it's obviously not accurate. a local path might include 'bithub' as part of the path as well.\n * however, it's needed only for suppressing the error message when the indexJson is outdate,\n * so if it happens on a local scope it's okay.\n * for other purposes, don't rely on this.\n */\n isFileOnBitHub() {\n return this.indexPath.includes('/bithub/') || this.indexPath.includes('/tmp/scope-fs/');\n }\n find(hash: string): IndexItem | null {\n for (const entity of Object.keys(IndexType)) {\n const found = this.index[entity].find((indexItem) => indexItem.hash === hash);\n if (found) return found;\n }\n return null;\n }\n _exist(hash: string): boolean {\n return Boolean(this.find(hash));\n }\n static _composePath(basePath: string): string {\n return path.join(basePath, COMPONENTS_INDEX_FILENAME);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"names":["_fsExtra","data","_interopRequireDefault","require","_asyncMutex","path","_interopRequireWildcard","_laneId","_legacy","_legacy2","_models","_lane","_lodash","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_defineProperty","_toPropertyKey","value","enumerable","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","COMPONENTS_INDEX_FILENAME","ComponentItem","constructor","id","isSymlink","hash","toIdentifierString","scope","name","exports","LaneItem","toLaneId","LaneId","IndexType","ScopeIndex","indexPath","index","components","lanes","writeIndexMutex","_writeIndexMutex","Mutex","load","basePath","_composePath","indexRaw","fs","readJson","getIndexWithBackwardCompatibility","Array","isArray","indexObject","map","c","l","err","message","includes","InvalidIndexJson","create","reset","logger","debug","remove","write","runExclusive","writeJson","spaces","getAll","values","flat","getHashes","indexType","indexItem","getHashesByQuery","filter","getHashesIncludeSymlinks","addMany","bitObjects","added","bitObject","addOne","some","oneAdded","ModelComponent","Symlink","Lane","toString","found","find","isEqual","laneItem","push","_exist","componentItem","removeMany","refs","removed","ref","removeOne","removedOne","entity","keys","difference","deleteFile","getPath","isFileOnBitHub","Boolean","join"],"sources":["scope-index.ts"],"sourcesContent":["/* eslint max-classes-per-file: 0 */\nimport fs from 'fs-extra';\nimport { Mutex } from 'async-mutex';\nimport * as path from 'path';\nimport { LaneId } from '@teambit/lane-id';\nimport { logger } from '@teambit/legacy.logger';\nimport { InvalidIndexJson } from '@teambit/legacy.scope';\nimport { ModelComponent, Symlink } from '../models';\nimport Lane from '../models/lane';\nimport BitObject from './object';\nimport Ref from './ref';\nimport { difference } from 'lodash';\n\nconst COMPONENTS_INDEX_FILENAME = 'index.json';\n\nexport interface IndexItem {\n hash: string;\n toIdentifierString(): string;\n}\n\nexport class ComponentItem implements IndexItem {\n constructor(\n public id: { scope: string | null; name: string },\n public isSymlink: boolean,\n public hash: string\n ) {}\n\n toIdentifierString(): string {\n const scope = this.id.scope ? `${this.id.scope}/` : '';\n return `component \"${scope}${this.id.name}\"`;\n }\n}\n\nexport class LaneItem implements IndexItem {\n constructor(\n public id: { scope: string; name: string },\n public hash: string\n ) {}\n\n toIdentifierString() {\n const scope = this.id.scope ? `${this.id.scope}/` : '';\n return `lane \"${scope}${this.id.name}\"`;\n }\n\n toLaneId(): LaneId {\n return new LaneId({ name: this.id.name, scope: this.id.scope });\n }\n}\n\nexport enum IndexType {\n components = 'components',\n lanes = 'lanes',\n}\n\ntype Index = { [IndexType.components]: ComponentItem[]; [IndexType.lanes]: LaneItem[] };\n\nexport class ScopeIndex {\n indexPath: string;\n index: Index;\n _writeIndexMutex?: Mutex;\n constructor(indexPath: string, index: Index = { [IndexType.components]: [], [IndexType.lanes]: [] }) {\n this.indexPath = indexPath;\n this.index = index;\n }\n get writeIndexMutex() {\n if (!this._writeIndexMutex) {\n this._writeIndexMutex = new Mutex();\n }\n return this._writeIndexMutex;\n }\n static async load(basePath: string): Promise<ScopeIndex> {\n const indexPath = this._composePath(basePath);\n try {\n const indexRaw = await fs.readJson(indexPath);\n const getIndexWithBackwardCompatibility = (): Index => {\n if (Array.isArray(indexRaw)) {\n return { [IndexType.components]: indexRaw, [IndexType.lanes]: [] };\n }\n return indexRaw;\n };\n const indexObject = getIndexWithBackwardCompatibility();\n const index = {\n [IndexType.components]: indexObject[IndexType.components].map(\n (c) => new ComponentItem(c.id, c.isSymlink, c.hash)\n ),\n [IndexType.lanes]: indexObject[IndexType.lanes].map((l) => new LaneItem(l.id, l.hash)),\n };\n return new ScopeIndex(indexPath, index);\n } catch (err: any) {\n if (err.message.includes('Unexpected token')) {\n throw new InvalidIndexJson(indexPath, err.message);\n }\n throw err;\n }\n }\n static create(basePath: string): ScopeIndex {\n const indexPath = this._composePath(basePath);\n return new ScopeIndex(indexPath);\n }\n static async reset(basePath: string) {\n const indexPath = this._composePath(basePath);\n logger.debug(`ComponentsIndex, deleting the index file at ${indexPath}`);\n await fs.remove(indexPath);\n }\n async write() {\n // write only one at a time to avoid corrupting the json file.\n await this.writeIndexMutex.runExclusive(() => fs.writeJson(this.indexPath, this.index, { spaces: 2 }));\n }\n getAll(): IndexItem[] {\n return Object.values(this.index).flat();\n }\n\n getHashes(indexType: IndexType): string[] {\n // @ts-ignore how to tell TS that all this.index.prop are array?\n return this.index[indexType].map((indexItem: IndexItem) => indexItem.hash);\n }\n getHashesByQuery(indexType: IndexType, filter: Function): string[] {\n // @ts-ignore how to tell TS that all this.index.prop are array?\n return this.index[indexType].filter(filter).map((indexItem: IndexItem) => indexItem.hash);\n }\n getHashesIncludeSymlinks(): string[] {\n return this.index.components.map((indexItem) => indexItem.hash);\n }\n addMany(bitObjects: BitObject[]): boolean {\n const added = bitObjects.map((bitObject) => this.addOne(bitObject));\n return added.some((oneAdded) => oneAdded); // return true if one of the objects was added\n }\n addOne(bitObject: BitObject): boolean {\n if (!(bitObject instanceof ModelComponent) && !(bitObject instanceof Symlink) && !(bitObject instanceof Lane))\n return false;\n const hash = bitObject.hash().toString();\n\n if (bitObject instanceof Lane) {\n const found = this.find(hash) as LaneItem | undefined;\n if (found) {\n if ((found as LaneItem).toLaneId().isEqual(bitObject.toLaneId())) return false;\n found.id = bitObject.toLaneId();\n } else {\n const laneItem = new LaneItem(bitObject.toLaneId(), hash);\n this.index.lanes.push(laneItem);\n }\n return true;\n }\n if (bitObject instanceof ModelComponent || bitObject instanceof Symlink) {\n if (this._exist(hash)) return false;\n const componentItem = new ComponentItem(\n { scope: bitObject.scope || null, name: bitObject.name },\n bitObject instanceof Symlink,\n hash\n );\n this.index.components.push(componentItem);\n }\n return true;\n }\n removeMany(refs: Ref[]): boolean {\n const removed = refs.map((ref) => this.removeOne(ref.toString()));\n return removed.some((removedOne) => removedOne); // return true if one of the objects was removed\n }\n removeOne(hash: string): boolean {\n for (const entity of Object.keys(IndexType)) {\n const found = this.index[entity].find((indexItem) => indexItem.hash === hash);\n if (found) {\n this.index[entity] = difference(this.index[entity], [found]);\n return true;\n }\n }\n return false;\n }\n async deleteFile() {\n logger.debug(`ComponentsIndex, deleting the index file at ${this.indexPath}`);\n await fs.remove(this.indexPath);\n }\n getPath() {\n return this.indexPath;\n }\n /**\n * it's obviously not accurate. a local path might include 'bithub' as part of the path as well.\n * however, it's needed only for suppressing the error message when the indexJson is outdate,\n * so if it happens on a local scope it's okay.\n * for other purposes, don't rely on this.\n */\n isFileOnBitHub() {\n return this.indexPath.includes('/bithub/') || this.indexPath.includes('/tmp/scope-fs/');\n }\n find(hash: string): IndexItem | null {\n for (const entity of Object.keys(IndexType)) {\n const found = this.index[entity].find((indexItem) => indexItem.hash === hash);\n if (found) return found;\n }\n return null;\n }\n _exist(hash: string): boolean {\n return Boolean(this.find(hash));\n }\n static _composePath(basePath: string): string {\n return path.join(basePath, COMPONENTS_INDEX_FILENAME);\n }\n}\n"],"mappings":";;;;;;AACA,SAAAA,SAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,QAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,YAAA;EAAA,MAAAH,IAAA,GAAAE,OAAA;EAAAC,WAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAI,KAAA;EAAA,MAAAJ,IAAA,GAAAK,uBAAA,CAAAH,OAAA;EAAAE,IAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAM,QAAA;EAAA,MAAAN,IAAA,GAAAE,OAAA;EAAAI,OAAA,YAAAA,CAAA;IAAA,OAAAN,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAO,QAAA;EAAA,MAAAP,IAAA,GAAAE,OAAA;EAAAK,OAAA,YAAAA,CAAA;IAAA,OAAAP,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAQ,SAAA;EAAA,MAAAR,IAAA,GAAAE,OAAA;EAAAM,QAAA,YAAAA,CAAA;IAAA,OAAAR,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAS,QAAA;EAAA,MAAAT,IAAA,GAAAE,OAAA;EAAAO,OAAA,YAAAA,CAAA;IAAA,OAAAT,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAU,MAAA;EAAA,MAAAV,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAQ,KAAA,YAAAA,CAAA;IAAA,OAAAV,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAGA,SAAAW,QAAA;EAAA,MAAAX,IAAA,GAAAE,OAAA;EAAAS,OAAA,YAAAA,CAAA;IAAA,OAAAX,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAoC,SAAAK,wBAAAO,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAT,uBAAA,YAAAA,CAAAO,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAAA,SAAAZ,uBAAAW,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAK,UAAA,GAAAL,CAAA,KAAAU,OAAA,EAAAV,CAAA;AAAA,SAAAmB,gBAAAnB,CAAA,EAAAG,CAAA,EAAAF,CAAA,YAAAE,CAAA,GAAAiB,cAAA,CAAAjB,CAAA,MAAAH,CAAA,GAAAgB,MAAA,CAAAC,cAAA,CAAAjB,CAAA,EAAAG,CAAA,IAAAkB,KAAA,EAAApB,CAAA,EAAAqB,UAAA,MAAAC,YAAA,MAAAC,QAAA,UAAAxB,CAAA,CAAAG,CAAA,IAAAF,CAAA,EAAAD,CAAA;AAAA,SAAAoB,eAAAnB,CAAA,QAAAM,CAAA,GAAAkB,YAAA,CAAAxB,CAAA,uCAAAM,CAAA,GAAAA,CAAA,GAAAA,CAAA;AAAA,SAAAkB,aAAAxB,CAAA,EAAAE,CAAA,2BAAAF,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAD,CAAA,GAAAC,CAAA,CAAAyB,MAAA,CAAAC,WAAA,kBAAA3B,CAAA,QAAAO,CAAA,GAAAP,CAAA,CAAAe,IAAA,CAAAd,CAAA,EAAAE,CAAA,uCAAAI,CAAA,SAAAA,CAAA,YAAAqB,SAAA,yEAAAzB,CAAA,GAAA0B,MAAA,GAAAC,MAAA,EAAA7B,CAAA,KAXpC;AAaA,MAAM8B,yBAAyB,GAAG,YAAY;AAOvC,MAAMC,aAAa,CAAsB;EAC9CC,WAAWA,CACFC,EAA0C,EAC1CC,SAAkB,EAClBC,IAAY,EACnB;IAAA,KAHOF,EAA0C,GAA1CA,EAA0C;IAAA,KAC1CC,SAAkB,GAAlBA,SAAkB;IAAA,KAClBC,IAAY,GAAZA,IAAY;EAClB;EAEHC,kBAAkBA,CAAA,EAAW;IAC3B,MAAMC,KAAK,GAAG,IAAI,CAACJ,EAAE,CAACI,KAAK,GAAG,GAAG,IAAI,CAACJ,EAAE,CAACI,KAAK,GAAG,GAAG,EAAE;IACtD,OAAO,cAAcA,KAAK,GAAG,IAAI,CAACJ,EAAE,CAACK,IAAI,GAAG;EAC9C;AACF;AAACC,OAAA,CAAAR,aAAA,GAAAA,aAAA;AAEM,MAAMS,QAAQ,CAAsB;EACzCR,WAAWA,CACFC,EAAmC,EACnCE,IAAY,EACnB;IAAA,KAFOF,EAAmC,GAAnCA,EAAmC;IAAA,KACnCE,IAAY,GAAZA,IAAY;EAClB;EAEHC,kBAAkBA,CAAA,EAAG;IACnB,MAAMC,KAAK,GAAG,IAAI,CAACJ,EAAE,CAACI,KAAK,GAAG,GAAG,IAAI,CAACJ,EAAE,CAACI,KAAK,GAAG,GAAG,EAAE;IACtD,OAAO,SAASA,KAAK,GAAG,IAAI,CAACJ,EAAE,CAACK,IAAI,GAAG;EACzC;EAEAG,QAAQA,CAAA,EAAW;IACjB,OAAO,KAAIC,gBAAM,EAAC;MAAEJ,IAAI,EAAE,IAAI,CAACL,EAAE,CAACK,IAAI;MAAED,KAAK,EAAE,IAAI,CAACJ,EAAE,CAACI;IAAM,CAAC,CAAC;EACjE;AACF;AAACE,OAAA,CAAAC,QAAA,GAAAA,QAAA;AAAA,IAEWG,SAAS,GAAAJ,OAAA,CAAAI,SAAA,0BAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAAA,OAATA,SAAS;AAAA;AAOd,MAAMC,UAAU,CAAC;EAItBZ,WAAWA,CAACa,SAAiB,EAAEC,KAAY,GAAG;IAAE,CAACH,SAAS,CAACI,UAAU,GAAG,EAAE;IAAE,CAACJ,SAAS,CAACK,KAAK,GAAG;EAAG,CAAC,EAAE;IAAA9B,eAAA;IAAAA,eAAA;IAAAA,eAAA;IACnG,IAAI,CAAC2B,SAAS,GAAGA,SAAS;IAC1B,IAAI,CAACC,KAAK,GAAGA,KAAK;EACpB;EACA,IAAIG,eAAeA,CAAA,EAAG;IACpB,IAAI,CAAC,IAAI,CAACC,gBAAgB,EAAE;MAC1B,IAAI,CAACA,gBAAgB,GAAG,KAAIC,mBAAK,EAAC,CAAC;IACrC;IACA,OAAO,IAAI,CAACD,gBAAgB;EAC9B;EACA,aAAaE,IAAIA,CAACC,QAAgB,EAAuB;IACvD,MAAMR,SAAS,GAAG,IAAI,CAACS,YAAY,CAACD,QAAQ,CAAC;IAC7C,IAAI;MACF,MAAME,QAAQ,GAAG,MAAMC,kBAAE,CAACC,QAAQ,CAACZ,SAAS,CAAC;MAC7C,MAAMa,iCAAiC,GAAGA,CAAA,KAAa;QACrD,IAAIC,KAAK,CAACC,OAAO,CAACL,QAAQ,CAAC,EAAE;UAC3B,OAAO;YAAE,CAACZ,SAAS,CAACI,UAAU,GAAGQ,QAAQ;YAAE,CAACZ,SAAS,CAACK,KAAK,GAAG;UAAG,CAAC;QACpE;QACA,OAAOO,QAAQ;MACjB,CAAC;MACD,MAAMM,WAAW,GAAGH,iCAAiC,CAAC,CAAC;MACvD,MAAMZ,KAAK,GAAG;QACZ,CAACH,SAAS,CAACI,UAAU,GAAGc,WAAW,CAAClB,SAAS,CAACI,UAAU,CAAC,CAACe,GAAG,CAC1DC,CAAC,IAAK,IAAIhC,aAAa,CAACgC,CAAC,CAAC9B,EAAE,EAAE8B,CAAC,CAAC7B,SAAS,EAAE6B,CAAC,CAAC5B,IAAI,CACpD,CAAC;QACD,CAACQ,SAAS,CAACK,KAAK,GAAGa,WAAW,CAAClB,SAAS,CAACK,KAAK,CAAC,CAACc,GAAG,CAAEE,CAAC,IAAK,IAAIxB,QAAQ,CAACwB,CAAC,CAAC/B,EAAE,EAAE+B,CAAC,CAAC7B,IAAI,CAAC;MACvF,CAAC;MACD,OAAO,IAAIS,UAAU,CAACC,SAAS,EAAEC,KAAK,CAAC;IACzC,CAAC,CAAC,OAAOmB,GAAQ,EAAE;MACjB,IAAIA,GAAG,CAACC,OAAO,CAACC,QAAQ,CAAC,kBAAkB,CAAC,EAAE;QAC5C,MAAM,KAAIC,2BAAgB,EAACvB,SAAS,EAAEoB,GAAG,CAACC,OAAO,CAAC;MACpD;MACA,MAAMD,GAAG;IACX;EACF;EACA,OAAOI,MAAMA,CAAChB,QAAgB,EAAc;IAC1C,MAAMR,SAAS,GAAG,IAAI,CAACS,YAAY,CAACD,QAAQ,CAAC;IAC7C,OAAO,IAAIT,UAAU,CAACC,SAAS,CAAC;EAClC;EACA,aAAayB,KAAKA,CAACjB,QAAgB,EAAE;IACnC,MAAMR,SAAS,GAAG,IAAI,CAACS,YAAY,CAACD,QAAQ,CAAC;IAC7CkB,gBAAM,CAACC,KAAK,CAAC,+CAA+C3B,SAAS,EAAE,CAAC;IACxE,MAAMW,kBAAE,CAACiB,MAAM,CAAC5B,SAAS,CAAC;EAC5B;EACA,MAAM6B,KAAKA,CAAA,EAAG;IACZ;IACA,MAAM,IAAI,CAACzB,eAAe,CAAC0B,YAAY,CAAC,MAAMnB,kBAAE,CAACoB,SAAS,CAAC,IAAI,CAAC/B,SAAS,EAAE,IAAI,CAACC,KAAK,EAAE;MAAE+B,MAAM,EAAE;IAAE,CAAC,CAAC,CAAC;EACxG;EACAC,MAAMA,CAAA,EAAgB;IACpB,OAAO/D,MAAM,CAACgE,MAAM,CAAC,IAAI,CAACjC,KAAK,CAAC,CAACkC,IAAI,CAAC,CAAC;EACzC;EAEAC,SAASA,CAACC,SAAoB,EAAY;IACxC;IACA,OAAO,IAAI,CAACpC,KAAK,CAACoC,SAAS,CAAC,CAACpB,GAAG,CAAEqB,SAAoB,IAAKA,SAAS,CAAChD,IAAI,CAAC;EAC5E;EACAiD,gBAAgBA,CAACF,SAAoB,EAAEG,MAAgB,EAAY;IACjE;IACA,OAAO,IAAI,CAACvC,KAAK,CAACoC,SAAS,CAAC,CAACG,MAAM,CAACA,MAAM,CAAC,CAACvB,GAAG,CAAEqB,SAAoB,IAAKA,SAAS,CAAChD,IAAI,CAAC;EAC3F;EACAmD,wBAAwBA,CAAA,EAAa;IACnC,OAAO,IAAI,CAACxC,KAAK,CAACC,UAAU,CAACe,GAAG,CAAEqB,SAAS,IAAKA,SAAS,CAAChD,IAAI,CAAC;EACjE;EACAoD,OAAOA,CAACC,UAAuB,EAAW;IACxC,MAAMC,KAAK,GAAGD,UAAU,CAAC1B,GAAG,CAAE4B,SAAS,IAAK,IAAI,CAACC,MAAM,CAACD,SAAS,CAAC,CAAC;IACnE,OAAOD,KAAK,CAACG,IAAI,CAAEC,QAAQ,IAAKA,QAAQ,CAAC,CAAC,CAAC;EAC7C;EACAF,MAAMA,CAACD,SAAoB,EAAW;IACpC,IAAI,EAAEA,SAAS,YAAYI,wBAAc,CAAC,IAAI,EAAEJ,SAAS,YAAYK,iBAAO,CAAC,IAAI,EAAEL,SAAS,YAAYM,eAAI,CAAC,EAC3G,OAAO,KAAK;IACd,MAAM7D,IAAI,GAAGuD,SAAS,CAACvD,IAAI,CAAC,CAAC,CAAC8D,QAAQ,CAAC,CAAC;IAExC,IAAIP,SAAS,YAAYM,eAAI,EAAE;MAC7B,MAAME,KAAK,GAAG,IAAI,CAACC,IAAI,CAAChE,IAAI,CAAyB;MACrD,IAAI+D,KAAK,EAAE;QACT,IAAKA,KAAK,CAAczD,QAAQ,CAAC,CAAC,CAAC2D,OAAO,CAACV,SAAS,CAACjD,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK;QAC9EyD,KAAK,CAACjE,EAAE,GAAGyD,SAAS,CAACjD,QAAQ,CAAC,CAAC;MACjC,CAAC,MAAM;QACL,MAAM4D,QAAQ,GAAG,IAAI7D,QAAQ,CAACkD,SAAS,CAACjD,QAAQ,CAAC,CAAC,EAAEN,IAAI,CAAC;QACzD,IAAI,CAACW,KAAK,CAACE,KAAK,CAACsD,IAAI,CAACD,QAAQ,CAAC;MACjC;MACA,OAAO,IAAI;IACb;IACA,IAAIX,SAAS,YAAYI,wBAAc,IAAIJ,SAAS,YAAYK,iBAAO,EAAE;MACvE,IAAI,IAAI,CAACQ,MAAM,CAACpE,IAAI,CAAC,EAAE,OAAO,KAAK;MACnC,MAAMqE,aAAa,GAAG,IAAIzE,aAAa,CACrC;QAAEM,KAAK,EAAEqD,SAAS,CAACrD,KAAK,IAAI,IAAI;QAAEC,IAAI,EAAEoD,SAAS,CAACpD;MAAK,CAAC,EACxDoD,SAAS,YAAYK,iBAAO,EAC5B5D,IACF,CAAC;MACD,IAAI,CAACW,KAAK,CAACC,UAAU,CAACuD,IAAI,CAACE,aAAa,CAAC;IAC3C;IACA,OAAO,IAAI;EACb;EACAC,UAAUA,CAACC,IAAW,EAAW;IAC/B,MAAMC,OAAO,GAAGD,IAAI,CAAC5C,GAAG,CAAE8C,GAAG,IAAK,IAAI,CAACC,SAAS,CAACD,GAAG,CAACX,QAAQ,CAAC,CAAC,CAAC,CAAC;IACjE,OAAOU,OAAO,CAACf,IAAI,CAAEkB,UAAU,IAAKA,UAAU,CAAC,CAAC,CAAC;EACnD;EACAD,SAASA,CAAC1E,IAAY,EAAW;IAC/B,KAAK,MAAM4E,MAAM,IAAIhG,MAAM,CAACiG,IAAI,CAACrE,SAAS,CAAC,EAAE;MAC3C,MAAMuD,KAAK,GAAG,IAAI,CAACpD,KAAK,CAACiE,MAAM,CAAC,CAACZ,IAAI,CAAEhB,SAAS,IAAKA,SAAS,CAAChD,IAAI,KAAKA,IAAI,CAAC;MAC7E,IAAI+D,KAAK,EAAE;QACT,IAAI,CAACpD,KAAK,CAACiE,MAAM,CAAC,GAAG,IAAAE,oBAAU,EAAC,IAAI,CAACnE,KAAK,CAACiE,MAAM,CAAC,EAAE,CAACb,KAAK,CAAC,CAAC;QAC5D,OAAO,IAAI;MACb;IACF;IACA,OAAO,KAAK;EACd;EACA,MAAMgB,UAAUA,CAAA,EAAG;IACjB3C,gBAAM,CAACC,KAAK,CAAC,+CAA+C,IAAI,CAAC3B,SAAS,EAAE,CAAC;IAC7E,MAAMW,kBAAE,CAACiB,MAAM,CAAC,IAAI,CAAC5B,SAAS,CAAC;EACjC;EACAsE,OAAOA,CAAA,EAAG;IACR,OAAO,IAAI,CAACtE,SAAS;EACvB;EACA;AACF;AACA;AACA;AACA;AACA;EACEuE,cAAcA,CAAA,EAAG;IACf,OAAO,IAAI,CAACvE,SAAS,CAACsB,QAAQ,CAAC,UAAU,CAAC,IAAI,IAAI,CAACtB,SAAS,CAACsB,QAAQ,CAAC,gBAAgB,CAAC;EACzF;EACAgC,IAAIA,CAAChE,IAAY,EAAoB;IACnC,KAAK,MAAM4E,MAAM,IAAIhG,MAAM,CAACiG,IAAI,CAACrE,SAAS,CAAC,EAAE;MAC3C,MAAMuD,KAAK,GAAG,IAAI,CAACpD,KAAK,CAACiE,MAAM,CAAC,CAACZ,IAAI,CAAEhB,SAAS,IAAKA,SAAS,CAAChD,IAAI,KAAKA,IAAI,CAAC;MAC7E,IAAI+D,KAAK,EAAE,OAAOA,KAAK;IACzB;IACA,OAAO,IAAI;EACb;EACAK,MAAMA,CAACpE,IAAY,EAAW;IAC5B,OAAOkF,OAAO,CAAC,IAAI,CAAClB,IAAI,CAAChE,IAAI,CAAC,CAAC;EACjC;EACA,OAAOmB,YAAYA,CAACD,QAAgB,EAAU;IAC5C,OAAO9D,IAAI,CAAD,CAAC,CAAC+H,IAAI,CAACjE,QAAQ,EAAEvB,yBAAyB,CAAC;EACvD;AACF;AAACS,OAAA,CAAAK,UAAA,GAAAA,UAAA","ignoreList":[]}
|
@@ -569,6 +569,7 @@ export default class Component extends BitObject {
|
|
569
569
|
const headVersion = head ? ((await repo.load(head)) as unknown as Version) : undefined;
|
570
570
|
const removeAspect = headVersion?.extensions.findCoreExtension(Extensions.remove);
|
571
571
|
const removeRange = removeAspect?.config.range;
|
572
|
+
const removeSnaps = removeAspect?.config.snaps || [];
|
572
573
|
const deprecationAspect = headVersion?.extensions.findCoreExtension(Extensions.deprecation);
|
573
574
|
const deprecationRange = deprecationAspect?.config.range;
|
574
575
|
|
@@ -584,7 +585,9 @@ export default class Component extends BitObject {
|
|
584
585
|
hash: getRef(versionInfo.ref),
|
585
586
|
parents: versionInfo.parents.map((parent) => getRef(parent)),
|
586
587
|
onLane: versionInfo.onLane,
|
587
|
-
deleted:
|
588
|
+
deleted:
|
589
|
+
(versionInfo.tag && removeRange && semver.satisfies(versionInfo.tag, removeRange)) ||
|
590
|
+
(!versionInfo.tag && removeSnaps.includes(versionInfo.ref.toString())),
|
588
591
|
deprecated: versionInfo.tag && deprecationRange && semver.satisfies(versionInfo.tag, deprecationRange),
|
589
592
|
hidden: versionInfo.version?.hidden,
|
590
593
|
};
|
@@ -753,7 +756,7 @@ otherwise, please run "bit checkout head" to be up to date, then snap/tag your c
|
|
753
756
|
const increment = (ver: string) => {
|
754
757
|
try {
|
755
758
|
// don't use "semver.inc" function, it'll swallow the error and return null.
|
756
|
-
const incResult = new semver.SemVer(ver).inc(releaseType, preReleaseId)
|
759
|
+
const incResult = new semver.SemVer(ver).inc(releaseType, preReleaseId);
|
757
760
|
return incResult.version;
|
758
761
|
} catch (err: any) {
|
759
762
|
throw new Error(`unable to increment version "${ver}" with releaseType "${releaseType}" and preReleaseId "${preReleaseId}".
|
@@ -1027,10 +1030,14 @@ consider using --ignore-missing-artifacts flag if you're sure the artifacts are
|
|
1027
1030
|
if (removeAspect.config.removed) {
|
1028
1031
|
return true;
|
1029
1032
|
}
|
1030
|
-
if (specificVersion
|
1031
|
-
|
1032
|
-
|
1033
|
-
|
1033
|
+
if (specificVersion) {
|
1034
|
+
if (removeAspect.config.range) {
|
1035
|
+
const tag = this.getTag(specificVersion);
|
1036
|
+
if (tag) return semver.satisfies(tag, removeAspect.config.range);
|
1037
|
+
}
|
1038
|
+
if (removeAspect.config.snaps && Array.isArray(removeAspect.config.snaps)) {
|
1039
|
+
return removeAspect.config.snaps.includes(specificVersion);
|
1040
|
+
}
|
1034
1041
|
}
|
1035
1042
|
return false;
|
1036
1043
|
}
|
package/package.json
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
{
|
2
2
|
"name": "@teambit/objects",
|
3
|
-
"version": "0.0.
|
3
|
+
"version": "0.0.122",
|
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.122"
|
10
10
|
},
|
11
11
|
"dependencies": {
|
12
12
|
"@pnpm/dependency-path": "900.0.0",
|
@@ -27,11 +27,11 @@
|
|
27
27
|
"@teambit/lane-id": "0.0.312",
|
28
28
|
"@teambit/legacy-bit-id": "1.1.3",
|
29
29
|
"@teambit/graph.cleargraph": "0.0.11",
|
30
|
-
"@teambit/cli": "0.0.
|
30
|
+
"@teambit/cli": "0.0.1192",
|
31
31
|
"@teambit/legacy.utils": "0.0.21",
|
32
32
|
"@teambit/harmony.modules.get-basic-log": "0.0.50",
|
33
33
|
"@teambit/component.snap-distance": "0.0.50",
|
34
|
-
"@teambit/config-store": "0.0.
|
34
|
+
"@teambit/config-store": "0.0.72",
|
35
35
|
"@teambit/legacy.cli.error": "0.0.19",
|
36
36
|
"@teambit/legacy.constants": "0.0.11",
|
37
37
|
"@teambit/legacy.logger": "0.0.19",
|
@@ -47,7 +47,7 @@
|
|
47
47
|
"@teambit/toolbox.array.duplications-finder": "0.0.3",
|
48
48
|
"@teambit/bit.get-bit-version": "0.0.5",
|
49
49
|
"@teambit/semantics.doc-parser": "0.0.57",
|
50
|
-
"@teambit/graph": "1.0.
|
50
|
+
"@teambit/graph": "1.0.615",
|
51
51
|
"@teambit/harmony.modules.concurrency": "0.0.12",
|
52
52
|
"@teambit/toolbox.promise.map-pool": "0.0.6",
|
53
53
|
"@teambit/harmony.modules.in-memory-cache": "0.0.13",
|
File without changes
|