@teambit/objects 0.0.0-a4451058a92c455ac20a7b4f122cb5773d6744aa → 0.0.0-a4a6e040675b16abb5e7800241270b914b402ba4

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.
@@ -270,20 +270,11 @@ class Version extends _objects().BitObject {
270
270
  }
271
271
  id() {
272
272
  const obj = this.toObject();
273
-
274
- // @todo: remove the entire dependencies.relativePaths from the ID (it's going to be a breaking change)
275
273
  const getDependencies = deps => {
276
274
  const clonedDependencies = deps.cloneAsString();
277
- // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
278
275
  return clonedDependencies.map(dependency => {
279
276
  return {
280
- id: dependency.id,
281
- relativePaths: dependency.relativePaths.map(relativePath => {
282
- return {
283
- sourceRelativePath: relativePath.sourceRelativePath,
284
- destinationRelativePath: relativePath.destinationRelativePath
285
- };
286
- })
277
+ id: dependency.id
287
278
  };
288
279
  });
289
280
  };
@@ -1 +1 @@
1
- {"version":3,"names":["_lodash","data","require","_componentVersion","_componentId","_laneId","_uuid","_legacy","_legacy2","_component","_legacy3","_legacy4","_legacy5","_toolboxCrypto","_objects","_legacy6","_source","_interopRequireDefault","_dependenciesGraph","_bit","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","Version","BitObject","constructor","props","mainFile","files","log","dependencies","Dependencies","devDependencies","peerDependencies","docs","flattenedDependencies","ComponentIdList","flattenedEdges","flattenedEdgesRef","dependenciesGraphRef","packageDependencies","devPackageDependencies","peerPackageDependencies","bindingPrefix","schema","overrides","packageJsonChangedProps","_hash","hash","parents","squashed","unrelated","extensions","ExtensionDataList","fromArray","buildStatus","componentId","bitVersion","modified","origin","hidden","validateVersion","getFlattenedEdges","repo","getWithBackwardCompatibility","throws","flattenedEdgesSource","load","flattenedEdgesJson","JSON","parse","contents","toString","map","item","Array","isArray","depEdgeFromArray","depEdgeFromObject","_flattenedEdges","loadDependenciesGraph","dependenciesGraphSource","DependenciesGraph","deserialize","nonEmptyFields","forEach","field","VersionInvalid","id","obj","toObject","getDependencies","deps","clonedDependencies","cloneAsString","dependency","relativePaths","relativePath","sourceRelativePath","destinationRelativePath","getExtensions","sortedConfigOnly","sortById","toConfigArray","filterFunction","val","key","isEmpty","stringify","pickBy","extensionDependencies","calculateHash","Ref","makeHash","Error","extensionsBitIds","Dependency","lastModified","length","date","getAllFlattenedDependencies","getAllDependencies","depsIdsGroupedByType","getAllIds","getAllDependenciesCloned","getClone","getAllDependenciesIds","allDependencies","values","flat","getDependenciesIdsExcludeExtensions","updateFlattenedDependency","currentId","newId","getUpdated","updatedIds","depId","isEqual","refs","refsWithOptions","includeParents","includeArtifacts","allRefs","extractRefsFromFiles","file","push","artifacts","getRefsFromExtensions","refsWithoutParents","filter","ref","collectManyObjects","loadManyRaw","depEdgeToObject","depEdge","source","serialize","target","type","depEdgeObj","ComponentID","fromObject","depEdgeToArray","depEdgeArr","sourceStr","targetStr","fromString","flattenedEdgeToSource","undefined","flattenedEdgesObj","f","flattenedEdgesBuffer","Buffer","from","Source","dependenciesGraphToSource","dependenciesGraph","dependenciesGraphBuffer","_convertFileToObject","name","test","message","username","email","cloneAsObject","dep","toModelObjects","p","previousParents","laneId","head","validateBeforePersisting","versionStr","logger","trace","version","validate","toBuffer","pretty","args","getStringifyArgs","str","validateBeforePersist","contentParsed","flattenedDevDependencies","_getDependencies","getRelativePath","importSpecifiers","importSpecifier","scope","BitIdCompIdError","parseFlattenedDeps","_groupFlattenedDependencies","flattenedDeps","flattenedDevDeps","parseFile","_getExtensions","exts","newExts","extension","extensionId","entry","ExtensionDataEntry","config","fromModelObject","LaneId","versionProps","fromComponent","component","pathNormalizeToLinux","get","componentOverridesData","getBitVersion","isSnap","setNewHash","sha1","v4","ignoreSharedDir","isSchemaSupport","SchemaFeature","sharedDir","isLegacy","SchemaName","Legacy","originLaneId","lane","originId","setDist","dist","DEFAULT_BUNDLE_FILENAME","hasParent","find","addParent","setSquashed","squashData","replaceMessage","addModifiedLog","Date","now","setUnrelated","externalHead","addAsOnlyParent","removeParent","removeAllParents","modelFilesToSourceFiles","repository","Promise","all","SourceFile","loadFromSourceFileModel","isRemoved","Boolean","findCoreExtension","Extensions","remove","removed","shouldRemoveFromMain","removeOnMain","validateVersionInstance","exports"],"sources":["version.ts"],"sourcesContent":["import { isEmpty, pickBy } from 'lodash';\nimport { isSnap } from '@teambit/component-version';\nimport { ComponentID, ComponentIdList } from '@teambit/component-id';\nimport { LaneId } from '@teambit/lane-id';\nimport { v4 } from 'uuid';\nimport type { BuildStatus } from '@teambit/legacy.constants';\nimport { DEFAULT_BUNDLE_FILENAME, Extensions } from '@teambit/legacy.constants';\nimport type { ConsumerComponent } from '@teambit/legacy.consumer-component';\nimport {\n isSchemaSupport,\n SchemaFeature,\n SchemaName,\n Dependencies,\n Dependency,\n} from '@teambit/legacy.consumer-component';\nimport { getRefsFromExtensions, SourceFile } from '@teambit/component.sources';\nimport type { ComponentOverridesData } from '@teambit/legacy.consumer-config';\nimport { ExtensionDataEntry, ExtensionDataList } from '@teambit/legacy.extension-data';\nimport type { Doclet } from '@teambit/semantics.doc-parser';\nimport { logger } from '@teambit/legacy.logger';\nimport type { PathLinux } from '@teambit/legacy.utils';\nimport { getStringifyArgs, pathNormalizeToLinux } from '@teambit/legacy.utils';\nimport { sha1 } from '@teambit/toolbox.crypto.sha1';\nimport type { Repository } from '../objects';\nimport { BitObject, Ref } from '../objects';\nimport type { ObjectItem } from '../objects/object-list';\nimport { BitIdCompIdError, VersionInvalid, validateVersionInstance } from '@teambit/legacy.scope';\nimport Source from './source';\nimport { DependenciesGraph } from './dependencies-graph';\nimport { getBitVersion } from '@teambit/bit.get-bit-version';\n\nexport type SourceFileModel = {\n name: string;\n relativePath: PathLinux;\n test: boolean;\n file: Ref;\n};\n\nexport type DistFileModel = SourceFileModel;\n\nexport type ArtifactFileModel = {\n relativePath: PathLinux;\n file: Ref;\n};\n\nexport type Log = {\n message: string;\n date: string;\n username: string | undefined;\n email: string | undefined;\n};\n\nexport type DepEdgeType = 'prod' | 'dev' | 'peer' | 'ext';\nexport type DepEdge = { source: ComponentID; target: ComponentID; type: DepEdgeType };\n\ntype ExternalHead = { head: Ref; laneId: LaneId };\ntype SquashData = { previousParents: Ref[]; laneId: LaneId };\ntype VersionOrigin = { id: { scope: string; name: string }; lane?: { scope: string; name: string; hash: string } };\n\nexport type VersionProps = {\n mainFile: PathLinux;\n files: Array<SourceFileModel>;\n log: Log;\n docs?: Doclet[];\n dependencies?: Dependency[];\n devDependencies?: Dependency[];\n peerDependencies?: Dependency[];\n flattenedDependencies?: ComponentIdList;\n _flattenedEdges?: DepEdge[];\n flattenedEdges?: DepEdge[];\n flattenedEdgesRef?: Ref;\n dependenciesGraphRef?: Ref;\n packageDependencies?: { [key: string]: string };\n devPackageDependencies?: { [key: string]: string };\n peerPackageDependencies?: { [key: string]: string };\n bindingPrefix: string;\n schema?: string;\n overrides: ComponentOverridesData;\n packageJsonChangedProps?: Record<string, any>;\n hash?: string;\n parents?: Ref[];\n squashed?: SquashData;\n unrelated?: ExternalHead;\n extensions?: ExtensionDataList;\n buildStatus?: BuildStatus;\n componentId?: ComponentID;\n bitVersion?: string;\n modified?: Log[];\n origin?: VersionOrigin;\n hidden?: boolean;\n};\n\n/**\n * Represent a version model in the scope\n */\nexport default class Version extends BitObject {\n mainFile: PathLinux;\n files: Array<SourceFileModel>;\n log: Log;\n docs: Doclet[] | undefined;\n dependencies: Dependencies;\n devDependencies: Dependencies;\n peerDependencies: Dependencies;\n flattenedDependencies: ComponentIdList;\n dependenciesGraphRef?: Ref;\n _dependenciesGraph?: DependenciesGraph; // caching for the dependencies graph\n flattenedEdgesRef?: Ref; // ref to a BitObject Source file, which is a JSON object containing the flattened edge\n _flattenedEdges?: DepEdge[]; // caching for the flattenedEdges\n /**\n * @deprecated\n * to get the flattenedEdges, please use `this.getFlattenedEdges()`.\n * this function handles the backward compatibility and provides the flattened edges regardless whether it was saved\n * the `flattenedEdgesRef` introduced or after.\n *\n * the reason this is left here is not for backward compatibility, but for forward compatibility. meaning, if a\n * Version object created by the new version is parsed by an old version that doesn't support the flattenedEdgesRef,\n * then, it'll be able to still get the flattenedEdges by this prop.\n * this is causing duplication currently. the data is kept in both, `this.flattenedEdges` and the file stored in `flattenedEdgesRef`.\n * so it'll be best to delete this prop as soon as all scopes are deployed with the new version.\n * (around August 2023 should be safe)\n */\n private flattenedEdges: DepEdge[];\n packageDependencies: { [key: string]: string };\n devPackageDependencies: { [key: string]: string };\n peerPackageDependencies: { [key: string]: string };\n bindingPrefix: string;\n schema: string | undefined;\n overrides: ComponentOverridesData;\n packageJsonChangedProps: Record<string, any>;\n _hash: string; // reason for the underscore prefix is that we already have hash as a method\n parents: Ref[];\n squashed?: SquashData; // when a component is squashed during lane-merge\n unrelated?: ExternalHead; // when a component from a lane was created with the same name/scope as main, this ref points to the component of the lane\n extensions: ExtensionDataList;\n buildStatus?: BuildStatus;\n componentId?: ComponentID; // can help debugging errors when validating Version object\n bitVersion?: string;\n modified: Log[] = []; // currently mutation could happen as a result of either \"squash\" or \"sign\".\n origin?: VersionOrigin; // for debugging purposes\n hidden?: boolean; // whether the version is hidden from commands such as \"bit log\", \"bit blame\". (needed for un-meaningful snaps, such as merged-lane snap prior to the tag)\n\n constructor(props: VersionProps) {\n super();\n this.mainFile = props.mainFile;\n this.files = props.files;\n this.log = props.log;\n this.dependencies = new Dependencies(props.dependencies);\n this.devDependencies = new Dependencies(props.devDependencies);\n this.peerDependencies = new Dependencies(props.peerDependencies);\n this.docs = props.docs;\n this.flattenedDependencies = props.flattenedDependencies || new ComponentIdList();\n this.flattenedEdges = props.flattenedEdges || [];\n this.flattenedEdgesRef = props.flattenedEdgesRef;\n this.dependenciesGraphRef = props.dependenciesGraphRef;\n this.packageDependencies = props.packageDependencies || {};\n this.devPackageDependencies = props.devPackageDependencies || {};\n this.peerPackageDependencies = props.peerPackageDependencies || {};\n this.bindingPrefix = props.bindingPrefix;\n this.schema = props.schema;\n this.overrides = props.overrides || {};\n this.packageJsonChangedProps = props.packageJsonChangedProps || {};\n // @ts-ignore yes, props.hash can be undefined here, but it gets populated as soon as Version is created\n this._hash = props.hash;\n this.parents = props.parents || [];\n this.squashed = props.squashed;\n this.unrelated = props.unrelated;\n this.extensions = props.extensions || ExtensionDataList.fromArray([]);\n this.buildStatus = props.buildStatus;\n this.componentId = props.componentId;\n this.bitVersion = props.bitVersion;\n this.modified = props.modified || [];\n this.origin = props.origin;\n this.hidden = props.hidden;\n this.validateVersion();\n }\n\n /**\n * use only this method to get the flattened edges (graph of flattened dependencies).\n * it's backward compatible with the previous way this was stored on the Version object itself.\n */\n async getFlattenedEdges(repo: Repository): Promise<DepEdge[]> {\n const getWithBackwardCompatibility = async (): Promise<DepEdge[]> => {\n if (this.flattenedEdgesRef) {\n // it's possible that there is a ref but the file is not there.\n // it can happen if the remote-scope uses an older version that doesn't know to collect this ref.\n // in which case, the client will get the Version object with the ref prop, but not the Source object.\n const throws = false;\n const flattenedEdgesSource = (await repo.load(this.flattenedEdgesRef, throws)) as Source | undefined;\n if (flattenedEdgesSource) {\n const flattenedEdgesJson = JSON.parse(flattenedEdgesSource.contents.toString());\n return flattenedEdgesJson.map((item) =>\n Array.isArray(item) ? Version.depEdgeFromArray(item) : Version.depEdgeFromObject(item)\n );\n }\n }\n return this.flattenedEdges || [];\n };\n\n if (!this._flattenedEdges) {\n this._flattenedEdges = await getWithBackwardCompatibility();\n }\n\n return this._flattenedEdges;\n }\n\n async loadDependenciesGraph(repo: Repository): Promise<DependenciesGraph | undefined> {\n if (!this._dependenciesGraph) {\n if (this.dependenciesGraphRef) {\n // it's possible that there is a ref but the file is not there.\n // it can happen if the remote-scope uses an older version that doesn't know to collect this ref.\n // in which case, the client will get the Version object with the ref prop, but not the Source object.\n const throws = false;\n const dependenciesGraphSource = (await repo.load(this.dependenciesGraphRef, throws)) as Source | undefined;\n if (dependenciesGraphSource) {\n this._dependenciesGraph = DependenciesGraph.deserialize(dependenciesGraphSource.contents.toString());\n }\n }\n }\n return this._dependenciesGraph;\n }\n\n validateVersion() {\n const nonEmptyFields = ['mainFile', 'files'];\n nonEmptyFields.forEach((field) => {\n if (!this[field]) {\n throw new VersionInvalid(`failed creating a version object, the field \"${field}\" can't be empty`);\n }\n });\n }\n\n id() {\n const obj = this.toObject();\n\n // @todo: remove the entire dependencies.relativePaths from the ID (it's going to be a breaking change)\n const getDependencies = (deps: Dependencies) => {\n const clonedDependencies = deps.cloneAsString();\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n return clonedDependencies.map((dependency: Dependency) => {\n return {\n id: dependency.id,\n relativePaths: dependency.relativePaths.map((relativePath) => {\n return {\n sourceRelativePath: relativePath.sourceRelativePath,\n destinationRelativePath: relativePath.destinationRelativePath,\n };\n }),\n };\n });\n };\n\n const getExtensions = (extensions: ExtensionDataList) => {\n const sortedConfigOnly = extensions.sortById().toConfigArray();\n return sortedConfigOnly;\n };\n\n const filterFunction = (val, key) => {\n if (\n key === 'devDependencies' ||\n key === 'extensionDependencies' ||\n key === 'devPackageDependencies' ||\n key === 'peerPackageDependencies' ||\n key === 'overrides' ||\n key === 'extensions'\n ) {\n return !isEmpty(val);\n }\n return !!val;\n };\n\n return JSON.stringify(\n pickBy(\n {\n mainFile: obj.mainFile,\n files: obj.files,\n log: obj.log,\n dependencies: getDependencies(this.dependencies),\n devDependencies: getDependencies(this.devDependencies),\n extensionDependencies: getDependencies(this.extensionDependencies),\n packageDependencies: obj.packageDependencies,\n devPackageDependencies: obj.devPackageDependencies,\n peerPackageDependencies: obj.peerPackageDependencies,\n bindingPrefix: obj.bindingPrefix,\n overrides: obj.overrides,\n extensions: getExtensions(this.extensions),\n },\n filterFunction\n )\n );\n }\n\n calculateHash(): Ref {\n return new Ref(BitObject.makeHash(this.id()));\n }\n\n hash(): Ref {\n if (!this._hash) {\n throw new Error('hash is missing from a Version object');\n }\n return new Ref(this._hash);\n }\n\n get extensionDependencies() {\n return new Dependencies(this.extensions.extensionsBitIds.map((id) => new Dependency(id, [])));\n }\n\n lastModified(): string {\n if (!this.modified || !this.modified.length) return this.log.date;\n return this.modified[this.modified.length - 1].date;\n }\n\n getAllFlattenedDependencies(): ComponentIdList {\n return ComponentIdList.fromArray([...this.flattenedDependencies]);\n }\n\n getAllDependencies(): Dependency[] {\n return [\n ...this.dependencies.dependencies,\n ...this.devDependencies.dependencies,\n ...this.extensionDependencies.dependencies,\n ];\n }\n\n get depsIdsGroupedByType(): {\n dependencies: ComponentIdList;\n devDependencies: ComponentIdList;\n peerDependencies: ComponentIdList;\n extensionDependencies: ComponentIdList;\n } {\n return {\n dependencies: this.dependencies.getAllIds(),\n devDependencies: this.devDependencies.getAllIds(),\n peerDependencies: this.peerDependencies.getAllIds(),\n extensionDependencies: this.extensions.extensionsBitIds,\n };\n }\n\n getAllDependenciesCloned(): Dependencies {\n const dependencies = [...this.dependencies.getClone(), ...this.devDependencies.getClone()];\n return new Dependencies(dependencies);\n }\n\n getAllDependenciesIds(): ComponentIdList {\n const allDependencies = Object.values(this.depsIdsGroupedByType).flat();\n return ComponentIdList.fromArray(allDependencies);\n }\n\n getDependenciesIdsExcludeExtensions(): ComponentIdList {\n return ComponentIdList.fromArray([...this.dependencies.getAllIds(), ...this.devDependencies.getAllIds()]);\n }\n\n updateFlattenedDependency(currentId: ComponentID, newId: ComponentID) {\n const getUpdated = (flattenedDependencies: ComponentIdList): ComponentIdList => {\n const updatedIds = flattenedDependencies.map((depId) => {\n if (depId.isEqual(currentId)) return newId;\n return depId;\n });\n return ComponentIdList.fromArray(updatedIds);\n };\n this.flattenedDependencies = getUpdated(this.flattenedDependencies);\n }\n\n refs(): Ref[] {\n return this.refsWithOptions();\n }\n\n refsWithOptions(includeParents = true, includeArtifacts = true): Ref[] {\n const allRefs: Ref[] = [];\n const extractRefsFromFiles = (files) => {\n const refs = files ? files.map((file) => file.file) : [];\n return refs;\n };\n const files = extractRefsFromFiles(this.files);\n allRefs.push(...files);\n if (includeParents) {\n allRefs.push(...this.parents);\n }\n if (includeArtifacts) {\n const artifacts = getRefsFromExtensions(this.extensions);\n allRefs.push(...artifacts);\n }\n if (this.flattenedEdgesRef) allRefs.push(this.flattenedEdgesRef);\n if (this.dependenciesGraphRef) allRefs.push(this.dependenciesGraphRef);\n return allRefs;\n }\n\n refsWithoutParents(): Ref[] {\n const extractRefsFromFiles = (files) => {\n const refs = files ? files.map((file) => file.file) : [];\n return refs;\n };\n const files = extractRefsFromFiles(this.files);\n const artifacts = getRefsFromExtensions(this.extensions);\n return [...files, ...artifacts].filter((ref) => ref);\n }\n\n async collectManyObjects(repo: Repository, refs: Ref[]): Promise<ObjectItem[]> {\n return repo.loadManyRaw(refs);\n }\n\n static depEdgeToObject(depEdge: DepEdge): Record<string, any> {\n return {\n source: depEdge.source.serialize(),\n target: depEdge.target.serialize(),\n type: depEdge.type,\n };\n }\n static depEdgeFromObject(depEdgeObj: Record<string, any>): DepEdge {\n return {\n source: ComponentID.fromObject(depEdgeObj.source),\n target: ComponentID.fromObject(depEdgeObj.target),\n type: depEdgeObj.type,\n };\n }\n /**\n * until 1.9.86, we used depEdgeToObject.\n * this one makes this object much much smaller (for 604 edges, it's now 143KB, with the array format it's 6KB!)\n * this format has been supported (but not used) since v1.6.97.\n */\n static depEdgeToArray(depEdge: DepEdge): Record<string, any> {\n return [depEdge.source.toString(), depEdge.target.toString(), depEdge.type];\n }\n static depEdgeFromArray(depEdgeArr: string[]): DepEdge {\n const [sourceStr, targetStr, type] = depEdgeArr;\n return {\n source: ComponentID.fromString(sourceStr),\n target: ComponentID.fromString(targetStr),\n type: type as DepEdgeType,\n };\n }\n static flattenedEdgeToSource(flattenedEdges?: DepEdge[]): Source | undefined {\n if (!flattenedEdges) return undefined;\n // const flattenedEdgesObj = flattenedEdges.map((f) => Version.depEdgeToArray(f));\n const flattenedEdgesObj = flattenedEdges.map((f) => Version.depEdgeToObject(f));\n const flattenedEdgesBuffer = Buffer.from(JSON.stringify(flattenedEdgesObj));\n return Source.from(flattenedEdgesBuffer);\n }\n static dependenciesGraphToSource(dependenciesGraph?: DependenciesGraph): Source | undefined {\n if (!dependenciesGraph) return undefined;\n const dependenciesGraphBuffer = Buffer.from(dependenciesGraph.serialize());\n return Source.from(dependenciesGraphBuffer);\n }\n\n toObject() {\n const _convertFileToObject = (file) => {\n return {\n file: file.file.toString(),\n relativePath: file.relativePath,\n name: file.name,\n test: file.test,\n };\n };\n\n return pickBy(\n {\n files: this.files ? this.files.map(_convertFileToObject) : null,\n mainFile: this.mainFile,\n bindingPrefix: this.bindingPrefix,\n schema: this.schema,\n log: {\n message: this.log.message,\n date: this.log.date,\n username: this.log.username,\n email: this.log.email,\n },\n docs: this.docs,\n dependencies: this.dependencies.cloneAsObject(),\n devDependencies: this.devDependencies.cloneAsObject(),\n flattenedDependencies: this.flattenedDependencies.map((dep) => dep.toObject()),\n // @todo: uncomment this in the future, once all remotes are updated to support the backward compatibility.\n // flattenedDependencies: this.flattenedDependencies.map((dep) => dep.toString()),\n flattenedEdges: this.flattenedEdgesRef ? undefined : this.flattenedEdges.map((f) => Version.depEdgeToObject(f)),\n flattenedEdgesRef: this.flattenedEdgesRef?.toString(),\n dependenciesGraphRef: this.dependenciesGraphRef?.toString(),\n extensions: this.extensions.toModelObjects(),\n packageDependencies: this.packageDependencies,\n devPackageDependencies: this.devPackageDependencies,\n peerPackageDependencies: this.peerPackageDependencies,\n overrides: this.overrides,\n buildStatus: this.buildStatus,\n packageJsonChangedProps: this.packageJsonChangedProps,\n parents: this.parents.map((p) => p.toString()),\n squashed: this.squashed\n ? {\n previousParents: this.squashed.previousParents.map((p) => p.toString()),\n laneId: this.squashed.laneId.toObject(),\n }\n : undefined,\n unrelated: this.unrelated\n ? { head: this.unrelated.head.toString(), laneId: this.unrelated.laneId.toObject() }\n : undefined,\n bitVersion: this.bitVersion,\n modified: this.modified,\n origin: this.origin,\n hidden: this.hidden,\n },\n (val) => !!val\n );\n }\n\n validateBeforePersisting(versionStr: string): void {\n logger.trace(`validating version object, hash: ${this.hash().hash}`);\n const version = Version.parse(versionStr, this._hash);\n version.validate();\n }\n\n toBuffer(pretty: boolean): Buffer {\n const obj = this.toObject();\n const args = getStringifyArgs(pretty);\n const str = JSON.stringify(obj, ...args);\n if (this.validateBeforePersist) this.validateBeforePersisting(str);\n return Buffer.from(str);\n }\n /**\n * used by the super class BitObject\n */\n static parse(contents: string, hash: string): Version {\n const contentParsed = JSON.parse(contents);\n const {\n mainFile,\n files,\n bindingPrefix,\n schema,\n log,\n docs,\n dependencies,\n devDependencies,\n flattenedDependencies,\n flattenedDevDependencies,\n flattenedEdges,\n flattenedEdgesRef,\n dependenciesGraphRef,\n devPackageDependencies,\n peerPackageDependencies,\n packageDependencies,\n overrides,\n packageJsonChangedProps,\n extensions,\n buildStatus,\n parents,\n squashed,\n unrelated,\n bitVersion,\n modified,\n origin,\n hidden,\n } = contentParsed;\n\n const _getDependencies = (deps = []): Dependency[] => {\n const getRelativePath = (relativePath) => {\n if (relativePath.importSpecifiers) {\n // backward compatibility. Before the massive validation was added, an item of\n // relativePath.importSpecifiers array could be missing the mainFile property, which is\n // an invalid ImportSpecifier. (instead the mainFile it had another importSpecifiers object).\n relativePath.importSpecifiers = relativePath.importSpecifiers.filter(\n (importSpecifier) => importSpecifier.mainFile\n );\n if (!relativePath.importSpecifiers.length) delete relativePath.importSpecifiers;\n }\n\n return relativePath;\n };\n\n return deps.map((dependency: any) => {\n if (!dependency.id.scope) {\n throw new BitIdCompIdError(dependency.id.name);\n }\n return new Dependency(\n ComponentID.fromObject(dependency.id),\n Array.isArray(dependency.relativePaths)\n ? dependency.relativePaths.map(getRelativePath)\n : dependency.relativePaths\n );\n });\n };\n\n // Accept both string[] and object[] for backward compatibility\n const parseFlattenedDeps = (deps = []): ComponentID[] => {\n if (!deps.length) return [];\n if (typeof deps[0] === 'string') return deps.map((dep) => ComponentID.fromString(dep));\n return deps.map((dep) => ComponentID.fromObject(dep));\n };\n\n const _groupFlattenedDependencies = () => {\n // support backward compatibility. until v15, there was both flattenedDependencies and\n // flattenedDevDependencies. since then, these both were grouped to one flattenedDependencies\n const flattenedDeps = parseFlattenedDeps(flattenedDependencies);\n const flattenedDevDeps = parseFlattenedDeps(flattenedDevDependencies);\n return ComponentIdList.fromArray([...flattenedDeps, ...flattenedDevDeps]);\n };\n\n const parseFile = (file) => {\n return {\n file: Ref.from(file.file),\n relativePath: file.relativePath,\n name: file.name,\n test: file.test,\n };\n };\n const _getExtensions = (exts = []): ExtensionDataList => {\n if (exts.length) {\n const newExts = exts.map((extension: any) => {\n if (extension.extensionId) {\n const extensionId = ComponentID.fromObject(extension.extensionId);\n const entry = new ExtensionDataEntry(undefined, extensionId, undefined, extension.config, extension.data);\n return entry;\n }\n const entry = new ExtensionDataEntry(\n extension.id,\n undefined,\n extension.name,\n extension.config,\n extension.data\n );\n return entry;\n });\n return ExtensionDataList.fromModelObject(newExts);\n }\n return new ExtensionDataList();\n };\n\n return new Version({\n mainFile,\n files: files.map(parseFile),\n bindingPrefix,\n schema: schema || undefined,\n log: {\n // workaround for a bug where the log.message was saved as boolean when running `bit tag -m \"\"`\n // the bug was fixed since v0.1.27, but old objects might still have this bug\n message: typeof log.message !== 'string' ? '' : log.message,\n date: log.date,\n username: log.username,\n email: log.email,\n },\n docs,\n dependencies: _getDependencies(dependencies),\n devDependencies: _getDependencies(devDependencies),\n flattenedDependencies: _groupFlattenedDependencies(),\n // backward compatibility. before introducing `flattenedEdgesRef`, we only had `flattenedEdges`. see getFlattenedEdges() for more info.\n flattenedEdges: flattenedEdgesRef ? [] : flattenedEdges?.map((f) => Version.depEdgeFromObject(f)) || [],\n flattenedEdgesRef: flattenedEdgesRef ? Ref.from(flattenedEdgesRef) : undefined,\n dependenciesGraphRef: dependenciesGraphRef ? Ref.from(dependenciesGraphRef) : undefined,\n devPackageDependencies,\n peerPackageDependencies,\n packageDependencies,\n overrides,\n packageJsonChangedProps,\n hash,\n parents: parents ? parents.map((p) => Ref.from(p)) : [],\n squashed: squashed\n ? { previousParents: squashed.previousParents.map((r) => Ref.from(r)), laneId: new LaneId(squashed.laneId) }\n : undefined,\n unrelated: unrelated ? { head: Ref.from(unrelated.head), laneId: new LaneId(unrelated.laneId) } : undefined,\n extensions: _getExtensions(extensions),\n buildStatus,\n bitVersion,\n modified,\n origin,\n hidden,\n });\n }\n\n /**\n * used by raw-object.toRealObject()\n */\n static from(versionProps: VersionProps, hash: string): Version {\n return Version.parse(JSON.stringify(versionProps), hash);\n }\n\n /**\n * Create version model object from consumer component\n * @param {*} param0\n */\n static fromComponent({\n component,\n files,\n flattenedEdges,\n dependenciesGraph,\n }: {\n component: ConsumerComponent;\n files: Array<SourceFileModel>;\n flattenedEdges?: Source;\n dependenciesGraph?: Source;\n }) {\n const parseFile = (file) => {\n return {\n file: file.file.hash(),\n relativePath: file.relativePath,\n name: file.name,\n test: file.test,\n };\n };\n\n if (!component.log) throw new Error('Version.fromComponent - component.log is missing');\n const version = new Version({\n mainFile: pathNormalizeToLinux(component.mainFile),\n files: files.map(parseFile),\n bindingPrefix: component.bindingPrefix,\n log: component.log as Log,\n docs: component.docs,\n dependencies: component.dependencies.get(),\n devDependencies: component.devDependencies.get(),\n packageDependencies: component.packageDependencies,\n devPackageDependencies: component.devPackageDependencies,\n peerPackageDependencies: component.peerPackageDependencies,\n dependenciesGraphRef: dependenciesGraph?.hash(),\n flattenedDependencies: component.flattenedDependencies,\n // it's safe to remove this line once the version.flattenedEdges prop is deleted\n flattenedEdges: component.flattenedEdges,\n flattenedEdgesRef: flattenedEdges?.hash(),\n schema: component.schema,\n overrides: component.overrides.componentOverridesData,\n packageJsonChangedProps: component.packageJsonChangedProps,\n extensions: component.extensions,\n buildStatus: component.buildStatus,\n componentId: component.id,\n bitVersion: getBitVersion(),\n });\n if (isSnap(component.version)) {\n version._hash = component.version as string;\n } else {\n version.setNewHash();\n }\n\n return version;\n }\n\n setNewHash() {\n this._hash = sha1(v4());\n }\n\n get ignoreSharedDir(): boolean {\n return !isSchemaSupport(SchemaFeature.sharedDir, this.schema);\n }\n\n get isLegacy(): boolean {\n return !this.schema || this.schema === SchemaName.Legacy;\n }\n\n get originLaneId(): LaneId | undefined {\n return this.origin?.lane ? new LaneId({ name: this.origin.lane.name, scope: this.origin.lane.scope }) : undefined;\n }\n get originId(): ComponentID | undefined {\n return this.origin?.id\n ? ComponentID.fromObject({ scope: this.origin.id.scope, name: this.origin.id.name })\n : undefined;\n }\n\n setDist(dist: Source | undefined) {\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n this.dist = dist\n ? {\n file: dist.hash(),\n name: DEFAULT_BUNDLE_FILENAME,\n }\n : null;\n }\n\n hasParent(ref: Ref) {\n return this.parents.find((p) => p.toString() === ref.toString());\n }\n\n addParent(ref: Ref) {\n if (this.isLegacy) return;\n if (this.hasParent(ref)) {\n return; // make sure to not add twice\n }\n this.parents.push(ref);\n }\n\n setSquashed(squashData: SquashData, log: Log, replaceMessage?: string) {\n this.squashed = squashData;\n this.addModifiedLog(log);\n if (replaceMessage) {\n this.addModifiedLog({\n username: undefined,\n email: undefined,\n date: Date.now().toString(),\n message: `squashing: replacing the original log.message, which was: \"${this.log.message || '<empty>'}\"`,\n });\n this.log.message = replaceMessage;\n }\n }\n\n setUnrelated(externalHead: ExternalHead) {\n this.unrelated = externalHead;\n }\n\n addModifiedLog(log: Log) {\n this.modified.push(log);\n }\n\n addAsOnlyParent(ref: Ref) {\n if (this.isLegacy) return;\n this.parents = [ref];\n }\n\n removeParent(ref: Ref) {\n this.parents = this.parents.filter((p) => p.toString() !== ref.toString());\n }\n\n removeAllParents() {\n this.parents = [];\n }\n\n modelFilesToSourceFiles(repository: Repository): Promise<SourceFile[]> {\n return Promise.all(this.files.map((file) => SourceFile.loadFromSourceFileModel(file, repository)));\n }\n\n isRemoved(): boolean {\n return Boolean(this.extensions.findCoreExtension(Extensions.remove)?.config?.removed);\n }\n shouldRemoveFromMain(): boolean {\n return Boolean(this.extensions.findCoreExtension(Extensions.remove)?.config?.removeOnMain);\n }\n\n /**\n * Validate the version model properties, to make sure we are not inserting something\n * in the wrong format\n */\n validate(): void {\n validateVersionInstance(this);\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_lodash","data","require","_componentVersion","_componentId","_laneId","_uuid","_legacy","_legacy2","_component","_legacy3","_legacy4","_legacy5","_toolboxCrypto","_objects","_legacy6","_source","_interopRequireDefault","_dependenciesGraph","_bit","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","Version","BitObject","constructor","props","mainFile","files","log","dependencies","Dependencies","devDependencies","peerDependencies","docs","flattenedDependencies","ComponentIdList","flattenedEdges","flattenedEdgesRef","dependenciesGraphRef","packageDependencies","devPackageDependencies","peerPackageDependencies","bindingPrefix","schema","overrides","packageJsonChangedProps","_hash","hash","parents","squashed","unrelated","extensions","ExtensionDataList","fromArray","buildStatus","componentId","bitVersion","modified","origin","hidden","validateVersion","getFlattenedEdges","repo","getWithBackwardCompatibility","throws","flattenedEdgesSource","load","flattenedEdgesJson","JSON","parse","contents","toString","map","item","Array","isArray","depEdgeFromArray","depEdgeFromObject","_flattenedEdges","loadDependenciesGraph","dependenciesGraphSource","DependenciesGraph","deserialize","nonEmptyFields","forEach","field","VersionInvalid","id","obj","toObject","getDependencies","deps","clonedDependencies","cloneAsString","dependency","getExtensions","sortedConfigOnly","sortById","toConfigArray","filterFunction","val","key","isEmpty","stringify","pickBy","extensionDependencies","calculateHash","Ref","makeHash","Error","extensionsBitIds","Dependency","lastModified","length","date","getAllFlattenedDependencies","getAllDependencies","depsIdsGroupedByType","getAllIds","getAllDependenciesCloned","getClone","getAllDependenciesIds","allDependencies","values","flat","getDependenciesIdsExcludeExtensions","updateFlattenedDependency","currentId","newId","getUpdated","updatedIds","depId","isEqual","refs","refsWithOptions","includeParents","includeArtifacts","allRefs","extractRefsFromFiles","file","push","artifacts","getRefsFromExtensions","refsWithoutParents","filter","ref","collectManyObjects","loadManyRaw","depEdgeToObject","depEdge","source","serialize","target","type","depEdgeObj","ComponentID","fromObject","depEdgeToArray","depEdgeArr","sourceStr","targetStr","fromString","flattenedEdgeToSource","undefined","flattenedEdgesObj","f","flattenedEdgesBuffer","Buffer","from","Source","dependenciesGraphToSource","dependenciesGraph","dependenciesGraphBuffer","_convertFileToObject","relativePath","name","test","message","username","email","cloneAsObject","dep","toModelObjects","p","previousParents","laneId","head","validateBeforePersisting","versionStr","logger","trace","version","validate","toBuffer","pretty","args","getStringifyArgs","str","validateBeforePersist","contentParsed","flattenedDevDependencies","_getDependencies","getRelativePath","importSpecifiers","importSpecifier","scope","BitIdCompIdError","relativePaths","parseFlattenedDeps","_groupFlattenedDependencies","flattenedDeps","flattenedDevDeps","parseFile","_getExtensions","exts","newExts","extension","extensionId","entry","ExtensionDataEntry","config","fromModelObject","LaneId","versionProps","fromComponent","component","pathNormalizeToLinux","get","componentOverridesData","getBitVersion","isSnap","setNewHash","sha1","v4","ignoreSharedDir","isSchemaSupport","SchemaFeature","sharedDir","isLegacy","SchemaName","Legacy","originLaneId","lane","originId","setDist","dist","DEFAULT_BUNDLE_FILENAME","hasParent","find","addParent","setSquashed","squashData","replaceMessage","addModifiedLog","Date","now","setUnrelated","externalHead","addAsOnlyParent","removeParent","removeAllParents","modelFilesToSourceFiles","repository","Promise","all","SourceFile","loadFromSourceFileModel","isRemoved","Boolean","findCoreExtension","Extensions","remove","removed","shouldRemoveFromMain","removeOnMain","validateVersionInstance","exports"],"sources":["version.ts"],"sourcesContent":["import { isEmpty, pickBy } from 'lodash';\nimport { isSnap } from '@teambit/component-version';\nimport { ComponentID, ComponentIdList } from '@teambit/component-id';\nimport { LaneId } from '@teambit/lane-id';\nimport { v4 } from 'uuid';\nimport type { BuildStatus } from '@teambit/legacy.constants';\nimport { DEFAULT_BUNDLE_FILENAME, Extensions } from '@teambit/legacy.constants';\nimport type { ConsumerComponent } from '@teambit/legacy.consumer-component';\nimport {\n isSchemaSupport,\n SchemaFeature,\n SchemaName,\n Dependencies,\n Dependency,\n} from '@teambit/legacy.consumer-component';\nimport { getRefsFromExtensions, SourceFile } from '@teambit/component.sources';\nimport type { ComponentOverridesData } from '@teambit/legacy.consumer-config';\nimport { ExtensionDataEntry, ExtensionDataList } from '@teambit/legacy.extension-data';\nimport type { Doclet } from '@teambit/semantics.doc-parser';\nimport { logger } from '@teambit/legacy.logger';\nimport type { PathLinux } from '@teambit/legacy.utils';\nimport { getStringifyArgs, pathNormalizeToLinux } from '@teambit/legacy.utils';\nimport { sha1 } from '@teambit/toolbox.crypto.sha1';\nimport type { Repository } from '../objects';\nimport { BitObject, Ref } from '../objects';\nimport type { ObjectItem } from '../objects/object-list';\nimport { BitIdCompIdError, VersionInvalid, validateVersionInstance } from '@teambit/legacy.scope';\nimport Source from './source';\nimport { DependenciesGraph } from './dependencies-graph';\nimport { getBitVersion } from '@teambit/bit.get-bit-version';\n\nexport type SourceFileModel = {\n name: string;\n relativePath: PathLinux;\n test: boolean;\n file: Ref;\n};\n\nexport type DistFileModel = SourceFileModel;\n\nexport type ArtifactFileModel = {\n relativePath: PathLinux;\n file: Ref;\n};\n\nexport type Log = {\n message: string;\n date: string;\n username: string | undefined;\n email: string | undefined;\n};\n\nexport type DepEdgeType = 'prod' | 'dev' | 'peer' | 'ext';\nexport type DepEdge = { source: ComponentID; target: ComponentID; type: DepEdgeType };\n\ntype ExternalHead = { head: Ref; laneId: LaneId };\ntype SquashData = { previousParents: Ref[]; laneId: LaneId };\ntype VersionOrigin = { id: { scope: string; name: string }; lane?: { scope: string; name: string; hash: string } };\n\nexport type VersionProps = {\n mainFile: PathLinux;\n files: Array<SourceFileModel>;\n log: Log;\n docs?: Doclet[];\n dependencies?: Dependency[];\n devDependencies?: Dependency[];\n peerDependencies?: Dependency[];\n flattenedDependencies?: ComponentIdList;\n _flattenedEdges?: DepEdge[];\n flattenedEdges?: DepEdge[];\n flattenedEdgesRef?: Ref;\n dependenciesGraphRef?: Ref;\n packageDependencies?: { [key: string]: string };\n devPackageDependencies?: { [key: string]: string };\n peerPackageDependencies?: { [key: string]: string };\n bindingPrefix: string;\n schema?: string;\n overrides: ComponentOverridesData;\n packageJsonChangedProps?: Record<string, any>;\n hash?: string;\n parents?: Ref[];\n squashed?: SquashData;\n unrelated?: ExternalHead;\n extensions?: ExtensionDataList;\n buildStatus?: BuildStatus;\n componentId?: ComponentID;\n bitVersion?: string;\n modified?: Log[];\n origin?: VersionOrigin;\n hidden?: boolean;\n};\n\n/**\n * Represent a version model in the scope\n */\nexport default class Version extends BitObject {\n mainFile: PathLinux;\n files: Array<SourceFileModel>;\n log: Log;\n docs: Doclet[] | undefined;\n dependencies: Dependencies;\n devDependencies: Dependencies;\n peerDependencies: Dependencies;\n flattenedDependencies: ComponentIdList;\n dependenciesGraphRef?: Ref;\n _dependenciesGraph?: DependenciesGraph; // caching for the dependencies graph\n flattenedEdgesRef?: Ref; // ref to a BitObject Source file, which is a JSON object containing the flattened edge\n _flattenedEdges?: DepEdge[]; // caching for the flattenedEdges\n /**\n * @deprecated\n * to get the flattenedEdges, please use `this.getFlattenedEdges()`.\n * this function handles the backward compatibility and provides the flattened edges regardless whether it was saved\n * the `flattenedEdgesRef` introduced or after.\n *\n * the reason this is left here is not for backward compatibility, but for forward compatibility. meaning, if a\n * Version object created by the new version is parsed by an old version that doesn't support the flattenedEdgesRef,\n * then, it'll be able to still get the flattenedEdges by this prop.\n * this is causing duplication currently. the data is kept in both, `this.flattenedEdges` and the file stored in `flattenedEdgesRef`.\n * so it'll be best to delete this prop as soon as all scopes are deployed with the new version.\n * (around August 2023 should be safe)\n */\n private flattenedEdges: DepEdge[];\n packageDependencies: { [key: string]: string };\n devPackageDependencies: { [key: string]: string };\n peerPackageDependencies: { [key: string]: string };\n bindingPrefix: string;\n schema: string | undefined;\n overrides: ComponentOverridesData;\n packageJsonChangedProps: Record<string, any>;\n _hash: string; // reason for the underscore prefix is that we already have hash as a method\n parents: Ref[];\n squashed?: SquashData; // when a component is squashed during lane-merge\n unrelated?: ExternalHead; // when a component from a lane was created with the same name/scope as main, this ref points to the component of the lane\n extensions: ExtensionDataList;\n buildStatus?: BuildStatus;\n componentId?: ComponentID; // can help debugging errors when validating Version object\n bitVersion?: string;\n modified: Log[] = []; // currently mutation could happen as a result of either \"squash\" or \"sign\".\n origin?: VersionOrigin; // for debugging purposes\n hidden?: boolean; // whether the version is hidden from commands such as \"bit log\", \"bit blame\". (needed for un-meaningful snaps, such as merged-lane snap prior to the tag)\n\n constructor(props: VersionProps) {\n super();\n this.mainFile = props.mainFile;\n this.files = props.files;\n this.log = props.log;\n this.dependencies = new Dependencies(props.dependencies);\n this.devDependencies = new Dependencies(props.devDependencies);\n this.peerDependencies = new Dependencies(props.peerDependencies);\n this.docs = props.docs;\n this.flattenedDependencies = props.flattenedDependencies || new ComponentIdList();\n this.flattenedEdges = props.flattenedEdges || [];\n this.flattenedEdgesRef = props.flattenedEdgesRef;\n this.dependenciesGraphRef = props.dependenciesGraphRef;\n this.packageDependencies = props.packageDependencies || {};\n this.devPackageDependencies = props.devPackageDependencies || {};\n this.peerPackageDependencies = props.peerPackageDependencies || {};\n this.bindingPrefix = props.bindingPrefix;\n this.schema = props.schema;\n this.overrides = props.overrides || {};\n this.packageJsonChangedProps = props.packageJsonChangedProps || {};\n // @ts-ignore yes, props.hash can be undefined here, but it gets populated as soon as Version is created\n this._hash = props.hash;\n this.parents = props.parents || [];\n this.squashed = props.squashed;\n this.unrelated = props.unrelated;\n this.extensions = props.extensions || ExtensionDataList.fromArray([]);\n this.buildStatus = props.buildStatus;\n this.componentId = props.componentId;\n this.bitVersion = props.bitVersion;\n this.modified = props.modified || [];\n this.origin = props.origin;\n this.hidden = props.hidden;\n this.validateVersion();\n }\n\n /**\n * use only this method to get the flattened edges (graph of flattened dependencies).\n * it's backward compatible with the previous way this was stored on the Version object itself.\n */\n async getFlattenedEdges(repo: Repository): Promise<DepEdge[]> {\n const getWithBackwardCompatibility = async (): Promise<DepEdge[]> => {\n if (this.flattenedEdgesRef) {\n // it's possible that there is a ref but the file is not there.\n // it can happen if the remote-scope uses an older version that doesn't know to collect this ref.\n // in which case, the client will get the Version object with the ref prop, but not the Source object.\n const throws = false;\n const flattenedEdgesSource = (await repo.load(this.flattenedEdgesRef, throws)) as Source | undefined;\n if (flattenedEdgesSource) {\n const flattenedEdgesJson = JSON.parse(flattenedEdgesSource.contents.toString());\n return flattenedEdgesJson.map((item) =>\n Array.isArray(item) ? Version.depEdgeFromArray(item) : Version.depEdgeFromObject(item)\n );\n }\n }\n return this.flattenedEdges || [];\n };\n\n if (!this._flattenedEdges) {\n this._flattenedEdges = await getWithBackwardCompatibility();\n }\n\n return this._flattenedEdges;\n }\n\n async loadDependenciesGraph(repo: Repository): Promise<DependenciesGraph | undefined> {\n if (!this._dependenciesGraph) {\n if (this.dependenciesGraphRef) {\n // it's possible that there is a ref but the file is not there.\n // it can happen if the remote-scope uses an older version that doesn't know to collect this ref.\n // in which case, the client will get the Version object with the ref prop, but not the Source object.\n const throws = false;\n const dependenciesGraphSource = (await repo.load(this.dependenciesGraphRef, throws)) as Source | undefined;\n if (dependenciesGraphSource) {\n this._dependenciesGraph = DependenciesGraph.deserialize(dependenciesGraphSource.contents.toString());\n }\n }\n }\n return this._dependenciesGraph;\n }\n\n validateVersion() {\n const nonEmptyFields = ['mainFile', 'files'];\n nonEmptyFields.forEach((field) => {\n if (!this[field]) {\n throw new VersionInvalid(`failed creating a version object, the field \"${field}\" can't be empty`);\n }\n });\n }\n\n id() {\n const obj = this.toObject();\n\n const getDependencies = (deps: Dependencies) => {\n const clonedDependencies = deps.cloneAsString();\n return clonedDependencies.map((dependency) => {\n return {\n id: dependency.id,\n };\n });\n };\n\n const getExtensions = (extensions: ExtensionDataList) => {\n const sortedConfigOnly = extensions.sortById().toConfigArray();\n return sortedConfigOnly;\n };\n\n const filterFunction = (val, key) => {\n if (\n key === 'devDependencies' ||\n key === 'extensionDependencies' ||\n key === 'devPackageDependencies' ||\n key === 'peerPackageDependencies' ||\n key === 'overrides' ||\n key === 'extensions'\n ) {\n return !isEmpty(val);\n }\n return !!val;\n };\n\n return JSON.stringify(\n pickBy(\n {\n mainFile: obj.mainFile,\n files: obj.files,\n log: obj.log,\n dependencies: getDependencies(this.dependencies),\n devDependencies: getDependencies(this.devDependencies),\n extensionDependencies: getDependencies(this.extensionDependencies),\n packageDependencies: obj.packageDependencies,\n devPackageDependencies: obj.devPackageDependencies,\n peerPackageDependencies: obj.peerPackageDependencies,\n bindingPrefix: obj.bindingPrefix,\n overrides: obj.overrides,\n extensions: getExtensions(this.extensions),\n },\n filterFunction\n )\n );\n }\n\n calculateHash(): Ref {\n return new Ref(BitObject.makeHash(this.id()));\n }\n\n hash(): Ref {\n if (!this._hash) {\n throw new Error('hash is missing from a Version object');\n }\n return new Ref(this._hash);\n }\n\n get extensionDependencies() {\n return new Dependencies(this.extensions.extensionsBitIds.map((id) => new Dependency(id, [])));\n }\n\n lastModified(): string {\n if (!this.modified || !this.modified.length) return this.log.date;\n return this.modified[this.modified.length - 1].date;\n }\n\n getAllFlattenedDependencies(): ComponentIdList {\n return ComponentIdList.fromArray([...this.flattenedDependencies]);\n }\n\n getAllDependencies(): Dependency[] {\n return [\n ...this.dependencies.dependencies,\n ...this.devDependencies.dependencies,\n ...this.extensionDependencies.dependencies,\n ];\n }\n\n get depsIdsGroupedByType(): {\n dependencies: ComponentIdList;\n devDependencies: ComponentIdList;\n peerDependencies: ComponentIdList;\n extensionDependencies: ComponentIdList;\n } {\n return {\n dependencies: this.dependencies.getAllIds(),\n devDependencies: this.devDependencies.getAllIds(),\n peerDependencies: this.peerDependencies.getAllIds(),\n extensionDependencies: this.extensions.extensionsBitIds,\n };\n }\n\n getAllDependenciesCloned(): Dependencies {\n const dependencies = [...this.dependencies.getClone(), ...this.devDependencies.getClone()];\n return new Dependencies(dependencies);\n }\n\n getAllDependenciesIds(): ComponentIdList {\n const allDependencies = Object.values(this.depsIdsGroupedByType).flat();\n return ComponentIdList.fromArray(allDependencies);\n }\n\n getDependenciesIdsExcludeExtensions(): ComponentIdList {\n return ComponentIdList.fromArray([...this.dependencies.getAllIds(), ...this.devDependencies.getAllIds()]);\n }\n\n updateFlattenedDependency(currentId: ComponentID, newId: ComponentID) {\n const getUpdated = (flattenedDependencies: ComponentIdList): ComponentIdList => {\n const updatedIds = flattenedDependencies.map((depId) => {\n if (depId.isEqual(currentId)) return newId;\n return depId;\n });\n return ComponentIdList.fromArray(updatedIds);\n };\n this.flattenedDependencies = getUpdated(this.flattenedDependencies);\n }\n\n refs(): Ref[] {\n return this.refsWithOptions();\n }\n\n refsWithOptions(includeParents = true, includeArtifacts = true): Ref[] {\n const allRefs: Ref[] = [];\n const extractRefsFromFiles = (files) => {\n const refs = files ? files.map((file) => file.file) : [];\n return refs;\n };\n const files = extractRefsFromFiles(this.files);\n allRefs.push(...files);\n if (includeParents) {\n allRefs.push(...this.parents);\n }\n if (includeArtifacts) {\n const artifacts = getRefsFromExtensions(this.extensions);\n allRefs.push(...artifacts);\n }\n if (this.flattenedEdgesRef) allRefs.push(this.flattenedEdgesRef);\n if (this.dependenciesGraphRef) allRefs.push(this.dependenciesGraphRef);\n return allRefs;\n }\n\n refsWithoutParents(): Ref[] {\n const extractRefsFromFiles = (files) => {\n const refs = files ? files.map((file) => file.file) : [];\n return refs;\n };\n const files = extractRefsFromFiles(this.files);\n const artifacts = getRefsFromExtensions(this.extensions);\n return [...files, ...artifacts].filter((ref) => ref);\n }\n\n async collectManyObjects(repo: Repository, refs: Ref[]): Promise<ObjectItem[]> {\n return repo.loadManyRaw(refs);\n }\n\n static depEdgeToObject(depEdge: DepEdge): Record<string, any> {\n return {\n source: depEdge.source.serialize(),\n target: depEdge.target.serialize(),\n type: depEdge.type,\n };\n }\n static depEdgeFromObject(depEdgeObj: Record<string, any>): DepEdge {\n return {\n source: ComponentID.fromObject(depEdgeObj.source),\n target: ComponentID.fromObject(depEdgeObj.target),\n type: depEdgeObj.type,\n };\n }\n /**\n * until 1.9.86, we used depEdgeToObject.\n * this one makes this object much much smaller (for 604 edges, it's now 143KB, with the array format it's 6KB!)\n * this format has been supported (but not used) since v1.6.97.\n */\n static depEdgeToArray(depEdge: DepEdge): Record<string, any> {\n return [depEdge.source.toString(), depEdge.target.toString(), depEdge.type];\n }\n static depEdgeFromArray(depEdgeArr: string[]): DepEdge {\n const [sourceStr, targetStr, type] = depEdgeArr;\n return {\n source: ComponentID.fromString(sourceStr),\n target: ComponentID.fromString(targetStr),\n type: type as DepEdgeType,\n };\n }\n static flattenedEdgeToSource(flattenedEdges?: DepEdge[]): Source | undefined {\n if (!flattenedEdges) return undefined;\n // const flattenedEdgesObj = flattenedEdges.map((f) => Version.depEdgeToArray(f));\n const flattenedEdgesObj = flattenedEdges.map((f) => Version.depEdgeToObject(f));\n const flattenedEdgesBuffer = Buffer.from(JSON.stringify(flattenedEdgesObj));\n return Source.from(flattenedEdgesBuffer);\n }\n static dependenciesGraphToSource(dependenciesGraph?: DependenciesGraph): Source | undefined {\n if (!dependenciesGraph) return undefined;\n const dependenciesGraphBuffer = Buffer.from(dependenciesGraph.serialize());\n return Source.from(dependenciesGraphBuffer);\n }\n\n toObject() {\n const _convertFileToObject = (file) => {\n return {\n file: file.file.toString(),\n relativePath: file.relativePath,\n name: file.name,\n test: file.test,\n };\n };\n\n return pickBy(\n {\n files: this.files ? this.files.map(_convertFileToObject) : null,\n mainFile: this.mainFile,\n bindingPrefix: this.bindingPrefix,\n schema: this.schema,\n log: {\n message: this.log.message,\n date: this.log.date,\n username: this.log.username,\n email: this.log.email,\n },\n docs: this.docs,\n dependencies: this.dependencies.cloneAsObject(),\n devDependencies: this.devDependencies.cloneAsObject(),\n flattenedDependencies: this.flattenedDependencies.map((dep) => dep.toObject()),\n // @todo: uncomment this in the future, once all remotes are updated to support the backward compatibility.\n // flattenedDependencies: this.flattenedDependencies.map((dep) => dep.toString()),\n flattenedEdges: this.flattenedEdgesRef ? undefined : this.flattenedEdges.map((f) => Version.depEdgeToObject(f)),\n flattenedEdgesRef: this.flattenedEdgesRef?.toString(),\n dependenciesGraphRef: this.dependenciesGraphRef?.toString(),\n extensions: this.extensions.toModelObjects(),\n packageDependencies: this.packageDependencies,\n devPackageDependencies: this.devPackageDependencies,\n peerPackageDependencies: this.peerPackageDependencies,\n overrides: this.overrides,\n buildStatus: this.buildStatus,\n packageJsonChangedProps: this.packageJsonChangedProps,\n parents: this.parents.map((p) => p.toString()),\n squashed: this.squashed\n ? {\n previousParents: this.squashed.previousParents.map((p) => p.toString()),\n laneId: this.squashed.laneId.toObject(),\n }\n : undefined,\n unrelated: this.unrelated\n ? { head: this.unrelated.head.toString(), laneId: this.unrelated.laneId.toObject() }\n : undefined,\n bitVersion: this.bitVersion,\n modified: this.modified,\n origin: this.origin,\n hidden: this.hidden,\n },\n (val) => !!val\n );\n }\n\n validateBeforePersisting(versionStr: string): void {\n logger.trace(`validating version object, hash: ${this.hash().hash}`);\n const version = Version.parse(versionStr, this._hash);\n version.validate();\n }\n\n toBuffer(pretty: boolean): Buffer {\n const obj = this.toObject();\n const args = getStringifyArgs(pretty);\n const str = JSON.stringify(obj, ...args);\n if (this.validateBeforePersist) this.validateBeforePersisting(str);\n return Buffer.from(str);\n }\n /**\n * used by the super class BitObject\n */\n static parse(contents: string, hash: string): Version {\n const contentParsed = JSON.parse(contents);\n const {\n mainFile,\n files,\n bindingPrefix,\n schema,\n log,\n docs,\n dependencies,\n devDependencies,\n flattenedDependencies,\n flattenedDevDependencies,\n flattenedEdges,\n flattenedEdgesRef,\n dependenciesGraphRef,\n devPackageDependencies,\n peerPackageDependencies,\n packageDependencies,\n overrides,\n packageJsonChangedProps,\n extensions,\n buildStatus,\n parents,\n squashed,\n unrelated,\n bitVersion,\n modified,\n origin,\n hidden,\n } = contentParsed;\n\n const _getDependencies = (deps = []): Dependency[] => {\n const getRelativePath = (relativePath) => {\n if (relativePath.importSpecifiers) {\n // backward compatibility. Before the massive validation was added, an item of\n // relativePath.importSpecifiers array could be missing the mainFile property, which is\n // an invalid ImportSpecifier. (instead the mainFile it had another importSpecifiers object).\n relativePath.importSpecifiers = relativePath.importSpecifiers.filter(\n (importSpecifier) => importSpecifier.mainFile\n );\n if (!relativePath.importSpecifiers.length) delete relativePath.importSpecifiers;\n }\n\n return relativePath;\n };\n\n return deps.map((dependency: any) => {\n if (!dependency.id.scope) {\n throw new BitIdCompIdError(dependency.id.name);\n }\n return new Dependency(\n ComponentID.fromObject(dependency.id),\n Array.isArray(dependency.relativePaths)\n ? dependency.relativePaths.map(getRelativePath)\n : dependency.relativePaths\n );\n });\n };\n\n // Accept both string[] and object[] for backward compatibility\n const parseFlattenedDeps = (deps = []): ComponentID[] => {\n if (!deps.length) return [];\n if (typeof deps[0] === 'string') return deps.map((dep) => ComponentID.fromString(dep));\n return deps.map((dep) => ComponentID.fromObject(dep));\n };\n\n const _groupFlattenedDependencies = () => {\n // support backward compatibility. until v15, there was both flattenedDependencies and\n // flattenedDevDependencies. since then, these both were grouped to one flattenedDependencies\n const flattenedDeps = parseFlattenedDeps(flattenedDependencies);\n const flattenedDevDeps = parseFlattenedDeps(flattenedDevDependencies);\n return ComponentIdList.fromArray([...flattenedDeps, ...flattenedDevDeps]);\n };\n\n const parseFile = (file) => {\n return {\n file: Ref.from(file.file),\n relativePath: file.relativePath,\n name: file.name,\n test: file.test,\n };\n };\n const _getExtensions = (exts = []): ExtensionDataList => {\n if (exts.length) {\n const newExts = exts.map((extension: any) => {\n if (extension.extensionId) {\n const extensionId = ComponentID.fromObject(extension.extensionId);\n const entry = new ExtensionDataEntry(undefined, extensionId, undefined, extension.config, extension.data);\n return entry;\n }\n const entry = new ExtensionDataEntry(\n extension.id,\n undefined,\n extension.name,\n extension.config,\n extension.data\n );\n return entry;\n });\n return ExtensionDataList.fromModelObject(newExts);\n }\n return new ExtensionDataList();\n };\n\n return new Version({\n mainFile,\n files: files.map(parseFile),\n bindingPrefix,\n schema: schema || undefined,\n log: {\n // workaround for a bug where the log.message was saved as boolean when running `bit tag -m \"\"`\n // the bug was fixed since v0.1.27, but old objects might still have this bug\n message: typeof log.message !== 'string' ? '' : log.message,\n date: log.date,\n username: log.username,\n email: log.email,\n },\n docs,\n dependencies: _getDependencies(dependencies),\n devDependencies: _getDependencies(devDependencies),\n flattenedDependencies: _groupFlattenedDependencies(),\n // backward compatibility. before introducing `flattenedEdgesRef`, we only had `flattenedEdges`. see getFlattenedEdges() for more info.\n flattenedEdges: flattenedEdgesRef ? [] : flattenedEdges?.map((f) => Version.depEdgeFromObject(f)) || [],\n flattenedEdgesRef: flattenedEdgesRef ? Ref.from(flattenedEdgesRef) : undefined,\n dependenciesGraphRef: dependenciesGraphRef ? Ref.from(dependenciesGraphRef) : undefined,\n devPackageDependencies,\n peerPackageDependencies,\n packageDependencies,\n overrides,\n packageJsonChangedProps,\n hash,\n parents: parents ? parents.map((p) => Ref.from(p)) : [],\n squashed: squashed\n ? { previousParents: squashed.previousParents.map((r) => Ref.from(r)), laneId: new LaneId(squashed.laneId) }\n : undefined,\n unrelated: unrelated ? { head: Ref.from(unrelated.head), laneId: new LaneId(unrelated.laneId) } : undefined,\n extensions: _getExtensions(extensions),\n buildStatus,\n bitVersion,\n modified,\n origin,\n hidden,\n });\n }\n\n /**\n * used by raw-object.toRealObject()\n */\n static from(versionProps: VersionProps, hash: string): Version {\n return Version.parse(JSON.stringify(versionProps), hash);\n }\n\n /**\n * Create version model object from consumer component\n * @param {*} param0\n */\n static fromComponent({\n component,\n files,\n flattenedEdges,\n dependenciesGraph,\n }: {\n component: ConsumerComponent;\n files: Array<SourceFileModel>;\n flattenedEdges?: Source;\n dependenciesGraph?: Source;\n }) {\n const parseFile = (file) => {\n return {\n file: file.file.hash(),\n relativePath: file.relativePath,\n name: file.name,\n test: file.test,\n };\n };\n\n if (!component.log) throw new Error('Version.fromComponent - component.log is missing');\n const version = new Version({\n mainFile: pathNormalizeToLinux(component.mainFile),\n files: files.map(parseFile),\n bindingPrefix: component.bindingPrefix,\n log: component.log as Log,\n docs: component.docs,\n dependencies: component.dependencies.get(),\n devDependencies: component.devDependencies.get(),\n packageDependencies: component.packageDependencies,\n devPackageDependencies: component.devPackageDependencies,\n peerPackageDependencies: component.peerPackageDependencies,\n dependenciesGraphRef: dependenciesGraph?.hash(),\n flattenedDependencies: component.flattenedDependencies,\n // it's safe to remove this line once the version.flattenedEdges prop is deleted\n flattenedEdges: component.flattenedEdges,\n flattenedEdgesRef: flattenedEdges?.hash(),\n schema: component.schema,\n overrides: component.overrides.componentOverridesData,\n packageJsonChangedProps: component.packageJsonChangedProps,\n extensions: component.extensions,\n buildStatus: component.buildStatus,\n componentId: component.id,\n bitVersion: getBitVersion(),\n });\n if (isSnap(component.version)) {\n version._hash = component.version as string;\n } else {\n version.setNewHash();\n }\n\n return version;\n }\n\n setNewHash() {\n this._hash = sha1(v4());\n }\n\n get ignoreSharedDir(): boolean {\n return !isSchemaSupport(SchemaFeature.sharedDir, this.schema);\n }\n\n get isLegacy(): boolean {\n return !this.schema || this.schema === SchemaName.Legacy;\n }\n\n get originLaneId(): LaneId | undefined {\n return this.origin?.lane ? new LaneId({ name: this.origin.lane.name, scope: this.origin.lane.scope }) : undefined;\n }\n get originId(): ComponentID | undefined {\n return this.origin?.id\n ? ComponentID.fromObject({ scope: this.origin.id.scope, name: this.origin.id.name })\n : undefined;\n }\n\n setDist(dist: Source | undefined) {\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n this.dist = dist\n ? {\n file: dist.hash(),\n name: DEFAULT_BUNDLE_FILENAME,\n }\n : null;\n }\n\n hasParent(ref: Ref) {\n return this.parents.find((p) => p.toString() === ref.toString());\n }\n\n addParent(ref: Ref) {\n if (this.isLegacy) return;\n if (this.hasParent(ref)) {\n return; // make sure to not add twice\n }\n this.parents.push(ref);\n }\n\n setSquashed(squashData: SquashData, log: Log, replaceMessage?: string) {\n this.squashed = squashData;\n this.addModifiedLog(log);\n if (replaceMessage) {\n this.addModifiedLog({\n username: undefined,\n email: undefined,\n date: Date.now().toString(),\n message: `squashing: replacing the original log.message, which was: \"${this.log.message || '<empty>'}\"`,\n });\n this.log.message = replaceMessage;\n }\n }\n\n setUnrelated(externalHead: ExternalHead) {\n this.unrelated = externalHead;\n }\n\n addModifiedLog(log: Log) {\n this.modified.push(log);\n }\n\n addAsOnlyParent(ref: Ref) {\n if (this.isLegacy) return;\n this.parents = [ref];\n }\n\n removeParent(ref: Ref) {\n this.parents = this.parents.filter((p) => p.toString() !== ref.toString());\n }\n\n removeAllParents() {\n this.parents = [];\n }\n\n modelFilesToSourceFiles(repository: Repository): Promise<SourceFile[]> {\n return Promise.all(this.files.map((file) => SourceFile.loadFromSourceFileModel(file, repository)));\n }\n\n isRemoved(): boolean {\n return Boolean(this.extensions.findCoreExtension(Extensions.remove)?.config?.removed);\n }\n shouldRemoveFromMain(): boolean {\n return Boolean(this.extensions.findCoreExtension(Extensions.remove)?.config?.removeOnMain);\n }\n\n /**\n * Validate the version model properties, to make sure we are not inserting something\n * in the wrong format\n */\n validate(): void {\n validateVersionInstance(this);\n }\n}\n"],"mappings":";;;;;;AAAA,SAAAA,QAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,OAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAE,kBAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,iBAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,aAAA;EAAA,MAAAH,IAAA,GAAAC,OAAA;EAAAE,YAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAI,QAAA;EAAA,MAAAJ,IAAA,GAAAC,OAAA;EAAAG,OAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAK,MAAA;EAAA,MAAAL,IAAA,GAAAC,OAAA;EAAAI,KAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAM,QAAA;EAAA,MAAAN,IAAA,GAAAC,OAAA;EAAAK,OAAA,YAAAA,CAAA;IAAA,OAAAN,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAO,SAAA;EAAA,MAAAP,IAAA,GAAAC,OAAA;EAAAM,QAAA,YAAAA,CAAA;IAAA,OAAAP,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAOA,SAAAQ,WAAA;EAAA,MAAAR,IAAA,GAAAC,OAAA;EAAAO,UAAA,YAAAA,CAAA;IAAA,OAAAR,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAS,SAAA;EAAA,MAAAT,IAAA,GAAAC,OAAA;EAAAQ,QAAA,YAAAA,CAAA;IAAA,OAAAT,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAU,SAAA;EAAA,MAAAV,IAAA,GAAAC,OAAA;EAAAS,QAAA,YAAAA,CAAA;IAAA,OAAAV,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAW,SAAA;EAAA,MAAAX,IAAA,GAAAC,OAAA;EAAAU,QAAA,YAAAA,CAAA;IAAA,OAAAX,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAY,eAAA;EAAA,MAAAZ,IAAA,GAAAC,OAAA;EAAAW,cAAA,YAAAA,CAAA;IAAA,OAAAZ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAa,SAAA;EAAA,MAAAb,IAAA,GAAAC,OAAA;EAAAY,QAAA,YAAAA,CAAA;IAAA,OAAAb,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAc,SAAA;EAAA,MAAAd,IAAA,GAAAC,OAAA;EAAAa,QAAA,YAAAA,CAAA;IAAA,OAAAd,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAe,QAAA;EAAA,MAAAf,IAAA,GAAAgB,sBAAA,CAAAf,OAAA;EAAAc,OAAA,YAAAA,CAAA;IAAA,OAAAf,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAiB,mBAAA;EAAA,MAAAjB,IAAA,GAAAC,OAAA;EAAAgB,kBAAA,YAAAA,CAAA;IAAA,OAAAjB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAkB,KAAA;EAAA,MAAAlB,IAAA,GAAAC,OAAA;EAAAiB,IAAA,YAAAA,CAAA;IAAA,OAAAlB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAA6D,SAAAgB,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAG,gBAAAH,CAAA,EAAAI,CAAA,EAAAC,CAAA,YAAAD,CAAA,GAAAE,cAAA,CAAAF,CAAA,MAAAJ,CAAA,GAAAO,MAAA,CAAAC,cAAA,CAAAR,CAAA,EAAAI,CAAA,IAAAK,KAAA,EAAAJ,CAAA,EAAAK,UAAA,MAAAC,YAAA,MAAAC,QAAA,UAAAZ,CAAA,CAAAI,CAAA,IAAAC,CAAA,EAAAL,CAAA;AAAA,SAAAM,eAAAD,CAAA,QAAAQ,CAAA,GAAAC,YAAA,CAAAT,CAAA,uCAAAQ,CAAA,GAAAA,CAAA,GAAAA,CAAA;AAAA,SAAAC,aAAAT,CAAA,EAAAD,CAAA,2BAAAC,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAL,CAAA,GAAAK,CAAA,CAAAU,MAAA,CAAAC,WAAA,kBAAAhB,CAAA,QAAAa,CAAA,GAAAb,CAAA,CAAAiB,IAAA,CAAAZ,CAAA,EAAAD,CAAA,uCAAAS,CAAA,SAAAA,CAAA,YAAAK,SAAA,yEAAAd,CAAA,GAAAe,MAAA,GAAAC,MAAA,EAAAf,CAAA;AA+D7D;AACA;AACA;AACe,MAAMgB,OAAO,SAASC,oBAAS,CAAC;EA4C3B;;EAElBC,WAAWA,CAACC,KAAmB,EAAE;IAC/B,KAAK,CAAC,CAAC;IAACrB,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IArC8B;IAAAA,eAAA;IACf;IAAAA,eAAA;IACI;IAC7B;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IAZEA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAqBe;IAAAA,eAAA;IAAAA,eAAA;IAEQ;IAAAA,eAAA;IACG;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAGC;IAAAA,eAAA;IAAAA,eAAA,mBAET,EAAE;IAAE;IAAAA,eAAA;IACE;IAAAA,eAAA;IAKtB,IAAI,CAACsB,QAAQ,GAAGD,KAAK,CAACC,QAAQ;IAC9B,IAAI,CAACC,KAAK,GAAGF,KAAK,CAACE,KAAK;IACxB,IAAI,CAACC,GAAG,GAAGH,KAAK,CAACG,GAAG;IACpB,IAAI,CAACC,YAAY,GAAG,KAAIC,uBAAY,EAACL,KAAK,CAACI,YAAY,CAAC;IACxD,IAAI,CAACE,eAAe,GAAG,KAAID,uBAAY,EAACL,KAAK,CAACM,eAAe,CAAC;IAC9D,IAAI,CAACC,gBAAgB,GAAG,KAAIF,uBAAY,EAACL,KAAK,CAACO,gBAAgB,CAAC;IAChE,IAAI,CAACC,IAAI,GAAGR,KAAK,CAACQ,IAAI;IACtB,IAAI,CAACC,qBAAqB,GAAGT,KAAK,CAACS,qBAAqB,IAAI,KAAIC,8BAAe,EAAC,CAAC;IACjF,IAAI,CAACC,cAAc,GAAGX,KAAK,CAACW,cAAc,IAAI,EAAE;IAChD,IAAI,CAACC,iBAAiB,GAAGZ,KAAK,CAACY,iBAAiB;IAChD,IAAI,CAACC,oBAAoB,GAAGb,KAAK,CAACa,oBAAoB;IACtD,IAAI,CAACC,mBAAmB,GAAGd,KAAK,CAACc,mBAAmB,IAAI,CAAC,CAAC;IAC1D,IAAI,CAACC,sBAAsB,GAAGf,KAAK,CAACe,sBAAsB,IAAI,CAAC,CAAC;IAChE,IAAI,CAACC,uBAAuB,GAAGhB,KAAK,CAACgB,uBAAuB,IAAI,CAAC,CAAC;IAClE,IAAI,CAACC,aAAa,GAAGjB,KAAK,CAACiB,aAAa;IACxC,IAAI,CAACC,MAAM,GAAGlB,KAAK,CAACkB,MAAM;IAC1B,IAAI,CAACC,SAAS,GAAGnB,KAAK,CAACmB,SAAS,IAAI,CAAC,CAAC;IACtC,IAAI,CAACC,uBAAuB,GAAGpB,KAAK,CAACoB,uBAAuB,IAAI,CAAC,CAAC;IAClE;IACA,IAAI,CAACC,KAAK,GAAGrB,KAAK,CAACsB,IAAI;IACvB,IAAI,CAACC,OAAO,GAAGvB,KAAK,CAACuB,OAAO,IAAI,EAAE;IAClC,IAAI,CAACC,QAAQ,GAAGxB,KAAK,CAACwB,QAAQ;IAC9B,IAAI,CAACC,SAAS,GAAGzB,KAAK,CAACyB,SAAS;IAChC,IAAI,CAACC,UAAU,GAAG1B,KAAK,CAAC0B,UAAU,IAAIC,4BAAiB,CAACC,SAAS,CAAC,EAAE,CAAC;IACrE,IAAI,CAACC,WAAW,GAAG7B,KAAK,CAAC6B,WAAW;IACpC,IAAI,CAACC,WAAW,GAAG9B,KAAK,CAAC8B,WAAW;IACpC,IAAI,CAACC,UAAU,GAAG/B,KAAK,CAAC+B,UAAU;IAClC,IAAI,CAACC,QAAQ,GAAGhC,KAAK,CAACgC,QAAQ,IAAI,EAAE;IACpC,IAAI,CAACC,MAAM,GAAGjC,KAAK,CAACiC,MAAM;IAC1B,IAAI,CAACC,MAAM,GAAGlC,KAAK,CAACkC,MAAM;IAC1B,IAAI,CAACC,eAAe,CAAC,CAAC;EACxB;;EAEA;AACF;AACA;AACA;EACE,MAAMC,iBAAiBA,CAACC,IAAgB,EAAsB;IAC5D,MAAMC,4BAA4B,GAAG,MAAAA,CAAA,KAAgC;MACnE,IAAI,IAAI,CAAC1B,iBAAiB,EAAE;QAC1B;QACA;QACA;QACA,MAAM2B,MAAM,GAAG,KAAK;QACpB,MAAMC,oBAAoB,GAAI,MAAMH,IAAI,CAACI,IAAI,CAAC,IAAI,CAAC7B,iBAAiB,EAAE2B,MAAM,CAAwB;QACpG,IAAIC,oBAAoB,EAAE;UACxB,MAAME,kBAAkB,GAAGC,IAAI,CAACC,KAAK,CAACJ,oBAAoB,CAACK,QAAQ,CAACC,QAAQ,CAAC,CAAC,CAAC;UAC/E,OAAOJ,kBAAkB,CAACK,GAAG,CAAEC,IAAI,IACjCC,KAAK,CAACC,OAAO,CAACF,IAAI,CAAC,GAAGnD,OAAO,CAACsD,gBAAgB,CAACH,IAAI,CAAC,GAAGnD,OAAO,CAACuD,iBAAiB,CAACJ,IAAI,CACvF,CAAC;QACH;MACF;MACA,OAAO,IAAI,CAACrC,cAAc,IAAI,EAAE;IAClC,CAAC;IAED,IAAI,CAAC,IAAI,CAAC0C,eAAe,EAAE;MACzB,IAAI,CAACA,eAAe,GAAG,MAAMf,4BAA4B,CAAC,CAAC;IAC7D;IAEA,OAAO,IAAI,CAACe,eAAe;EAC7B;EAEA,MAAMC,qBAAqBA,CAACjB,IAAgB,EAA0C;IACpF,IAAI,CAAC,IAAI,CAAC/D,kBAAkB,EAAE;MAC5B,IAAI,IAAI,CAACuC,oBAAoB,EAAE;QAC7B;QACA;QACA;QACA,MAAM0B,MAAM,GAAG,KAAK;QACpB,MAAMgB,uBAAuB,GAAI,MAAMlB,IAAI,CAACI,IAAI,CAAC,IAAI,CAAC5B,oBAAoB,EAAE0B,MAAM,CAAwB;QAC1G,IAAIgB,uBAAuB,EAAE;UAC3B,IAAI,CAACjF,kBAAkB,GAAGkF,sCAAiB,CAACC,WAAW,CAACF,uBAAuB,CAACV,QAAQ,CAACC,QAAQ,CAAC,CAAC,CAAC;QACtG;MACF;IACF;IACA,OAAO,IAAI,CAACxE,kBAAkB;EAChC;EAEA6D,eAAeA,CAAA,EAAG;IAChB,MAAMuB,cAAc,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC;IAC5CA,cAAc,CAACC,OAAO,CAAEC,KAAK,IAAK;MAChC,IAAI,CAAC,IAAI,CAACA,KAAK,CAAC,EAAE;QAChB,MAAM,KAAIC,yBAAc,EAAC,gDAAgDD,KAAK,kBAAkB,CAAC;MACnG;IACF,CAAC,CAAC;EACJ;EAEAE,EAAEA,CAAA,EAAG;IACH,MAAMC,GAAG,GAAG,IAAI,CAACC,QAAQ,CAAC,CAAC;IAE3B,MAAMC,eAAe,GAAIC,IAAkB,IAAK;MAC9C,MAAMC,kBAAkB,GAAGD,IAAI,CAACE,aAAa,CAAC,CAAC;MAC/C,OAAOD,kBAAkB,CAACpB,GAAG,CAAEsB,UAAU,IAAK;QAC5C,OAAO;UACLP,EAAE,EAAEO,UAAU,CAACP;QACjB,CAAC;MACH,CAAC,CAAC;IACJ,CAAC;IAED,MAAMQ,aAAa,GAAI5C,UAA6B,IAAK;MACvD,MAAM6C,gBAAgB,GAAG7C,UAAU,CAAC8C,QAAQ,CAAC,CAAC,CAACC,aAAa,CAAC,CAAC;MAC9D,OAAOF,gBAAgB;IACzB,CAAC;IAED,MAAMG,cAAc,GAAGA,CAACC,GAAG,EAAEC,GAAG,KAAK;MACnC,IACEA,GAAG,KAAK,iBAAiB,IACzBA,GAAG,KAAK,uBAAuB,IAC/BA,GAAG,KAAK,wBAAwB,IAChCA,GAAG,KAAK,yBAAyB,IACjCA,GAAG,KAAK,WAAW,IACnBA,GAAG,KAAK,YAAY,EACpB;QACA,OAAO,CAAC,IAAAC,iBAAO,EAACF,GAAG,CAAC;MACtB;MACA,OAAO,CAAC,CAACA,GAAG;IACd,CAAC;IAED,OAAOhC,IAAI,CAACmC,SAAS,CACnB,IAAAC,gBAAM,EACJ;MACE9E,QAAQ,EAAE8D,GAAG,CAAC9D,QAAQ;MACtBC,KAAK,EAAE6D,GAAG,CAAC7D,KAAK;MAChBC,GAAG,EAAE4D,GAAG,CAAC5D,GAAG;MACZC,YAAY,EAAE6D,eAAe,CAAC,IAAI,CAAC7D,YAAY,CAAC;MAChDE,eAAe,EAAE2D,eAAe,CAAC,IAAI,CAAC3D,eAAe,CAAC;MACtD0E,qBAAqB,EAAEf,eAAe,CAAC,IAAI,CAACe,qBAAqB,CAAC;MAClElE,mBAAmB,EAAEiD,GAAG,CAACjD,mBAAmB;MAC5CC,sBAAsB,EAAEgD,GAAG,CAAChD,sBAAsB;MAClDC,uBAAuB,EAAE+C,GAAG,CAAC/C,uBAAuB;MACpDC,aAAa,EAAE8C,GAAG,CAAC9C,aAAa;MAChCE,SAAS,EAAE4C,GAAG,CAAC5C,SAAS;MACxBO,UAAU,EAAE4C,aAAa,CAAC,IAAI,CAAC5C,UAAU;IAC3C,CAAC,EACDgD,cACF,CACF,CAAC;EACH;EAEAO,aAAaA,CAAA,EAAQ;IACnB,OAAO,KAAIC,cAAG,EAACpF,oBAAS,CAACqF,QAAQ,CAAC,IAAI,CAACrB,EAAE,CAAC,CAAC,CAAC,CAAC;EAC/C;EAEAxC,IAAIA,CAAA,EAAQ;IACV,IAAI,CAAC,IAAI,CAACD,KAAK,EAAE;MACf,MAAM,IAAI+D,KAAK,CAAC,uCAAuC,CAAC;IAC1D;IACA,OAAO,KAAIF,cAAG,EAAC,IAAI,CAAC7D,KAAK,CAAC;EAC5B;EAEA,IAAI2D,qBAAqBA,CAAA,EAAG;IAC1B,OAAO,KAAI3E,uBAAY,EAAC,IAAI,CAACqB,UAAU,CAAC2D,gBAAgB,CAACtC,GAAG,CAAEe,EAAE,IAAK,KAAIwB,qBAAU,EAACxB,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;EAC/F;EAEAyB,YAAYA,CAAA,EAAW;IACrB,IAAI,CAAC,IAAI,CAACvD,QAAQ,IAAI,CAAC,IAAI,CAACA,QAAQ,CAACwD,MAAM,EAAE,OAAO,IAAI,CAACrF,GAAG,CAACsF,IAAI;IACjE,OAAO,IAAI,CAACzD,QAAQ,CAAC,IAAI,CAACA,QAAQ,CAACwD,MAAM,GAAG,CAAC,CAAC,CAACC,IAAI;EACrD;EAEAC,2BAA2BA,CAAA,EAAoB;IAC7C,OAAOhF,8BAAe,CAACkB,SAAS,CAAC,CAAC,GAAG,IAAI,CAACnB,qBAAqB,CAAC,CAAC;EACnE;EAEAkF,kBAAkBA,CAAA,EAAiB;IACjC,OAAO,CACL,GAAG,IAAI,CAACvF,YAAY,CAACA,YAAY,EACjC,GAAG,IAAI,CAACE,eAAe,CAACF,YAAY,EACpC,GAAG,IAAI,CAAC4E,qBAAqB,CAAC5E,YAAY,CAC3C;EACH;EAEA,IAAIwF,oBAAoBA,CAAA,EAKtB;IACA,OAAO;MACLxF,YAAY,EAAE,IAAI,CAACA,YAAY,CAACyF,SAAS,CAAC,CAAC;MAC3CvF,eAAe,EAAE,IAAI,CAACA,eAAe,CAACuF,SAAS,CAAC,CAAC;MACjDtF,gBAAgB,EAAE,IAAI,CAACA,gBAAgB,CAACsF,SAAS,CAAC,CAAC;MACnDb,qBAAqB,EAAE,IAAI,CAACtD,UAAU,CAAC2D;IACzC,CAAC;EACH;EAEAS,wBAAwBA,CAAA,EAAiB;IACvC,MAAM1F,YAAY,GAAG,CAAC,GAAG,IAAI,CAACA,YAAY,CAAC2F,QAAQ,CAAC,CAAC,EAAE,GAAG,IAAI,CAACzF,eAAe,CAACyF,QAAQ,CAAC,CAAC,CAAC;IAC1F,OAAO,KAAI1F,uBAAY,EAACD,YAAY,CAAC;EACvC;EAEA4F,qBAAqBA,CAAA,EAAoB;IACvC,MAAMC,eAAe,GAAGlH,MAAM,CAACmH,MAAM,CAAC,IAAI,CAACN,oBAAoB,CAAC,CAACO,IAAI,CAAC,CAAC;IACvE,OAAOzF,8BAAe,CAACkB,SAAS,CAACqE,eAAe,CAAC;EACnD;EAEAG,mCAAmCA,CAAA,EAAoB;IACrD,OAAO1F,8BAAe,CAACkB,SAAS,CAAC,CAAC,GAAG,IAAI,CAACxB,YAAY,CAACyF,SAAS,CAAC,CAAC,EAAE,GAAG,IAAI,CAACvF,eAAe,CAACuF,SAAS,CAAC,CAAC,CAAC,CAAC;EAC3G;EAEAQ,yBAAyBA,CAACC,SAAsB,EAAEC,KAAkB,EAAE;IACpE,MAAMC,UAAU,GAAI/F,qBAAsC,IAAsB;MAC9E,MAAMgG,UAAU,GAAGhG,qBAAqB,CAACsC,GAAG,CAAE2D,KAAK,IAAK;QACtD,IAAIA,KAAK,CAACC,OAAO,CAACL,SAAS,CAAC,EAAE,OAAOC,KAAK;QAC1C,OAAOG,KAAK;MACd,CAAC,CAAC;MACF,OAAOhG,8BAAe,CAACkB,SAAS,CAAC6E,UAAU,CAAC;IAC9C,CAAC;IACD,IAAI,CAAChG,qBAAqB,GAAG+F,UAAU,CAAC,IAAI,CAAC/F,qBAAqB,CAAC;EACrE;EAEAmG,IAAIA,CAAA,EAAU;IACZ,OAAO,IAAI,CAACC,eAAe,CAAC,CAAC;EAC/B;EAEAA,eAAeA,CAACC,cAAc,GAAG,IAAI,EAAEC,gBAAgB,GAAG,IAAI,EAAS;IACrE,MAAMC,OAAc,GAAG,EAAE;IACzB,MAAMC,oBAAoB,GAAI/G,KAAK,IAAK;MACtC,MAAM0G,IAAI,GAAG1G,KAAK,GAAGA,KAAK,CAAC6C,GAAG,CAAEmE,IAAI,IAAKA,IAAI,CAACA,IAAI,CAAC,GAAG,EAAE;MACxD,OAAON,IAAI;IACb,CAAC;IACD,MAAM1G,KAAK,GAAG+G,oBAAoB,CAAC,IAAI,CAAC/G,KAAK,CAAC;IAC9C8G,OAAO,CAACG,IAAI,CAAC,GAAGjH,KAAK,CAAC;IACtB,IAAI4G,cAAc,EAAE;MAClBE,OAAO,CAACG,IAAI,CAAC,GAAG,IAAI,CAAC5F,OAAO,CAAC;IAC/B;IACA,IAAIwF,gBAAgB,EAAE;MACpB,MAAMK,SAAS,GAAG,IAAAC,kCAAqB,EAAC,IAAI,CAAC3F,UAAU,CAAC;MACxDsF,OAAO,CAACG,IAAI,CAAC,GAAGC,SAAS,CAAC;IAC5B;IACA,IAAI,IAAI,CAACxG,iBAAiB,EAAEoG,OAAO,CAACG,IAAI,CAAC,IAAI,CAACvG,iBAAiB,CAAC;IAChE,IAAI,IAAI,CAACC,oBAAoB,EAAEmG,OAAO,CAACG,IAAI,CAAC,IAAI,CAACtG,oBAAoB,CAAC;IACtE,OAAOmG,OAAO;EAChB;EAEAM,kBAAkBA,CAAA,EAAU;IAC1B,MAAML,oBAAoB,GAAI/G,KAAK,IAAK;MACtC,MAAM0G,IAAI,GAAG1G,KAAK,GAAGA,KAAK,CAAC6C,GAAG,CAAEmE,IAAI,IAAKA,IAAI,CAACA,IAAI,CAAC,GAAG,EAAE;MACxD,OAAON,IAAI;IACb,CAAC;IACD,MAAM1G,KAAK,GAAG+G,oBAAoB,CAAC,IAAI,CAAC/G,KAAK,CAAC;IAC9C,MAAMkH,SAAS,GAAG,IAAAC,kCAAqB,EAAC,IAAI,CAAC3F,UAAU,CAAC;IACxD,OAAO,CAAC,GAAGxB,KAAK,EAAE,GAAGkH,SAAS,CAAC,CAACG,MAAM,CAAEC,GAAG,IAAKA,GAAG,CAAC;EACtD;EAEA,MAAMC,kBAAkBA,CAACpF,IAAgB,EAAEuE,IAAW,EAAyB;IAC7E,OAAOvE,IAAI,CAACqF,WAAW,CAACd,IAAI,CAAC;EAC/B;EAEA,OAAOe,eAAeA,CAACC,OAAgB,EAAuB;IAC5D,OAAO;MACLC,MAAM,EAAED,OAAO,CAACC,MAAM,CAACC,SAAS,CAAC,CAAC;MAClCC,MAAM,EAAEH,OAAO,CAACG,MAAM,CAACD,SAAS,CAAC,CAAC;MAClCE,IAAI,EAAEJ,OAAO,CAACI;IAChB,CAAC;EACH;EACA,OAAO5E,iBAAiBA,CAAC6E,UAA+B,EAAW;IACjE,OAAO;MACLJ,MAAM,EAAEK,0BAAW,CAACC,UAAU,CAACF,UAAU,CAACJ,MAAM,CAAC;MACjDE,MAAM,EAAEG,0BAAW,CAACC,UAAU,CAACF,UAAU,CAACF,MAAM,CAAC;MACjDC,IAAI,EAAEC,UAAU,CAACD;IACnB,CAAC;EACH;EACA;AACF;AACA;AACA;AACA;EACE,OAAOI,cAAcA,CAACR,OAAgB,EAAuB;IAC3D,OAAO,CAACA,OAAO,CAACC,MAAM,CAAC/E,QAAQ,CAAC,CAAC,EAAE8E,OAAO,CAACG,MAAM,CAACjF,QAAQ,CAAC,CAAC,EAAE8E,OAAO,CAACI,IAAI,CAAC;EAC7E;EACA,OAAO7E,gBAAgBA,CAACkF,UAAoB,EAAW;IACrD,MAAM,CAACC,SAAS,EAAEC,SAAS,EAAEP,IAAI,CAAC,GAAGK,UAAU;IAC/C,OAAO;MACLR,MAAM,EAAEK,0BAAW,CAACM,UAAU,CAACF,SAAS,CAAC;MACzCP,MAAM,EAAEG,0BAAW,CAACM,UAAU,CAACD,SAAS,CAAC;MACzCP,IAAI,EAAEA;IACR,CAAC;EACH;EACA,OAAOS,qBAAqBA,CAAC9H,cAA0B,EAAsB;IAC3E,IAAI,CAACA,cAAc,EAAE,OAAO+H,SAAS;IACrC;IACA,MAAMC,iBAAiB,GAAGhI,cAAc,CAACoC,GAAG,CAAE6F,CAAC,IAAK/I,OAAO,CAAC8H,eAAe,CAACiB,CAAC,CAAC,CAAC;IAC/E,MAAMC,oBAAoB,GAAGC,MAAM,CAACC,IAAI,CAACpG,IAAI,CAACmC,SAAS,CAAC6D,iBAAiB,CAAC,CAAC;IAC3E,OAAOK,iBAAM,CAACD,IAAI,CAACF,oBAAoB,CAAC;EAC1C;EACA,OAAOI,yBAAyBA,CAACC,iBAAqC,EAAsB;IAC1F,IAAI,CAACA,iBAAiB,EAAE,OAAOR,SAAS;IACxC,MAAMS,uBAAuB,GAAGL,MAAM,CAACC,IAAI,CAACG,iBAAiB,CAACpB,SAAS,CAAC,CAAC,CAAC;IAC1E,OAAOkB,iBAAM,CAACD,IAAI,CAACI,uBAAuB,CAAC;EAC7C;EAEAnF,QAAQA,CAAA,EAAG;IACT,MAAMoF,oBAAoB,GAAIlC,IAAI,IAAK;MACrC,OAAO;QACLA,IAAI,EAAEA,IAAI,CAACA,IAAI,CAACpE,QAAQ,CAAC,CAAC;QAC1BuG,YAAY,EAAEnC,IAAI,CAACmC,YAAY;QAC/BC,IAAI,EAAEpC,IAAI,CAACoC,IAAI;QACfC,IAAI,EAAErC,IAAI,CAACqC;MACb,CAAC;IACH,CAAC;IAED,OAAO,IAAAxE,gBAAM,EACX;MACE7E,KAAK,EAAE,IAAI,CAACA,KAAK,GAAG,IAAI,CAACA,KAAK,CAAC6C,GAAG,CAACqG,oBAAoB,CAAC,GAAG,IAAI;MAC/DnJ,QAAQ,EAAE,IAAI,CAACA,QAAQ;MACvBgB,aAAa,EAAE,IAAI,CAACA,aAAa;MACjCC,MAAM,EAAE,IAAI,CAACA,MAAM;MACnBf,GAAG,EAAE;QACHqJ,OAAO,EAAE,IAAI,CAACrJ,GAAG,CAACqJ,OAAO;QACzB/D,IAAI,EAAE,IAAI,CAACtF,GAAG,CAACsF,IAAI;QACnBgE,QAAQ,EAAE,IAAI,CAACtJ,GAAG,CAACsJ,QAAQ;QAC3BC,KAAK,EAAE,IAAI,CAACvJ,GAAG,CAACuJ;MAClB,CAAC;MACDlJ,IAAI,EAAE,IAAI,CAACA,IAAI;MACfJ,YAAY,EAAE,IAAI,CAACA,YAAY,CAACuJ,aAAa,CAAC,CAAC;MAC/CrJ,eAAe,EAAE,IAAI,CAACA,eAAe,CAACqJ,aAAa,CAAC,CAAC;MACrDlJ,qBAAqB,EAAE,IAAI,CAACA,qBAAqB,CAACsC,GAAG,CAAE6G,GAAG,IAAKA,GAAG,CAAC5F,QAAQ,CAAC,CAAC,CAAC;MAC9E;MACA;MACArD,cAAc,EAAE,IAAI,CAACC,iBAAiB,GAAG8H,SAAS,GAAG,IAAI,CAAC/H,cAAc,CAACoC,GAAG,CAAE6F,CAAC,IAAK/I,OAAO,CAAC8H,eAAe,CAACiB,CAAC,CAAC,CAAC;MAC/GhI,iBAAiB,EAAE,IAAI,CAACA,iBAAiB,EAAEkC,QAAQ,CAAC,CAAC;MACrDjC,oBAAoB,EAAE,IAAI,CAACA,oBAAoB,EAAEiC,QAAQ,CAAC,CAAC;MAC3DpB,UAAU,EAAE,IAAI,CAACA,UAAU,CAACmI,cAAc,CAAC,CAAC;MAC5C/I,mBAAmB,EAAE,IAAI,CAACA,mBAAmB;MAC7CC,sBAAsB,EAAE,IAAI,CAACA,sBAAsB;MACnDC,uBAAuB,EAAE,IAAI,CAACA,uBAAuB;MACrDG,SAAS,EAAE,IAAI,CAACA,SAAS;MACzBU,WAAW,EAAE,IAAI,CAACA,WAAW;MAC7BT,uBAAuB,EAAE,IAAI,CAACA,uBAAuB;MACrDG,OAAO,EAAE,IAAI,CAACA,OAAO,CAACwB,GAAG,CAAE+G,CAAC,IAAKA,CAAC,CAAChH,QAAQ,CAAC,CAAC,CAAC;MAC9CtB,QAAQ,EAAE,IAAI,CAACA,QAAQ,GACnB;QACEuI,eAAe,EAAE,IAAI,CAACvI,QAAQ,CAACuI,eAAe,CAAChH,GAAG,CAAE+G,CAAC,IAAKA,CAAC,CAAChH,QAAQ,CAAC,CAAC,CAAC;QACvEkH,MAAM,EAAE,IAAI,CAACxI,QAAQ,CAACwI,MAAM,CAAChG,QAAQ,CAAC;MACxC,CAAC,GACD0E,SAAS;MACbjH,SAAS,EAAE,IAAI,CAACA,SAAS,GACrB;QAAEwI,IAAI,EAAE,IAAI,CAACxI,SAAS,CAACwI,IAAI,CAACnH,QAAQ,CAAC,CAAC;QAAEkH,MAAM,EAAE,IAAI,CAACvI,SAAS,CAACuI,MAAM,CAAChG,QAAQ,CAAC;MAAE,CAAC,GAClF0E,SAAS;MACb3G,UAAU,EAAE,IAAI,CAACA,UAAU;MAC3BC,QAAQ,EAAE,IAAI,CAACA,QAAQ;MACvBC,MAAM,EAAE,IAAI,CAACA,MAAM;MACnBC,MAAM,EAAE,IAAI,CAACA;IACf,CAAC,EACAyC,GAAG,IAAK,CAAC,CAACA,GACb,CAAC;EACH;EAEAuF,wBAAwBA,CAACC,UAAkB,EAAQ;IACjDC,iBAAM,CAACC,KAAK,CAAC,oCAAoC,IAAI,CAAC/I,IAAI,CAAC,CAAC,CAACA,IAAI,EAAE,CAAC;IACpE,MAAMgJ,OAAO,GAAGzK,OAAO,CAAC+C,KAAK,CAACuH,UAAU,EAAE,IAAI,CAAC9I,KAAK,CAAC;IACrDiJ,OAAO,CAACC,QAAQ,CAAC,CAAC;EACpB;EAEAC,QAAQA,CAACC,MAAe,EAAU;IAChC,MAAM1G,GAAG,GAAG,IAAI,CAACC,QAAQ,CAAC,CAAC;IAC3B,MAAM0G,IAAI,GAAG,IAAAC,2BAAgB,EAACF,MAAM,CAAC;IACrC,MAAMG,GAAG,GAAGjI,IAAI,CAACmC,SAAS,CAACf,GAAG,EAAE,GAAG2G,IAAI,CAAC;IACxC,IAAI,IAAI,CAACG,qBAAqB,EAAE,IAAI,CAACX,wBAAwB,CAACU,GAAG,CAAC;IAClE,OAAO9B,MAAM,CAACC,IAAI,CAAC6B,GAAG,CAAC;EACzB;EACA;AACF;AACA;EACE,OAAOhI,KAAKA,CAACC,QAAgB,EAAEvB,IAAY,EAAW;IACpD,MAAMwJ,aAAa,GAAGnI,IAAI,CAACC,KAAK,CAACC,QAAQ,CAAC;IAC1C,MAAM;MACJ5C,QAAQ;MACRC,KAAK;MACLe,aAAa;MACbC,MAAM;MACNf,GAAG;MACHK,IAAI;MACJJ,YAAY;MACZE,eAAe;MACfG,qBAAqB;MACrBsK,wBAAwB;MACxBpK,cAAc;MACdC,iBAAiB;MACjBC,oBAAoB;MACpBE,sBAAsB;MACtBC,uBAAuB;MACvBF,mBAAmB;MACnBK,SAAS;MACTC,uBAAuB;MACvBM,UAAU;MACVG,WAAW;MACXN,OAAO;MACPC,QAAQ;MACRC,SAAS;MACTM,UAAU;MACVC,QAAQ;MACRC,MAAM;MACNC;IACF,CAAC,GAAG4I,aAAa;IAEjB,MAAME,gBAAgB,GAAGA,CAAC9G,IAAI,GAAG,EAAE,KAAmB;MACpD,MAAM+G,eAAe,GAAI5B,YAAY,IAAK;QACxC,IAAIA,YAAY,CAAC6B,gBAAgB,EAAE;UACjC;UACA;UACA;UACA7B,YAAY,CAAC6B,gBAAgB,GAAG7B,YAAY,CAAC6B,gBAAgB,CAAC3D,MAAM,CACjE4D,eAAe,IAAKA,eAAe,CAAClL,QACvC,CAAC;UACD,IAAI,CAACoJ,YAAY,CAAC6B,gBAAgB,CAAC1F,MAAM,EAAE,OAAO6D,YAAY,CAAC6B,gBAAgB;QACjF;QAEA,OAAO7B,YAAY;MACrB,CAAC;MAED,OAAOnF,IAAI,CAACnB,GAAG,CAAEsB,UAAe,IAAK;QACnC,IAAI,CAACA,UAAU,CAACP,EAAE,CAACsH,KAAK,EAAE;UACxB,MAAM,KAAIC,2BAAgB,EAAChH,UAAU,CAACP,EAAE,CAACwF,IAAI,CAAC;QAChD;QACA,OAAO,KAAIhE,qBAAU,EACnB4C,0BAAW,CAACC,UAAU,CAAC9D,UAAU,CAACP,EAAE,CAAC,EACrCb,KAAK,CAACC,OAAO,CAACmB,UAAU,CAACiH,aAAa,CAAC,GACnCjH,UAAU,CAACiH,aAAa,CAACvI,GAAG,CAACkI,eAAe,CAAC,GAC7C5G,UAAU,CAACiH,aACjB,CAAC;MACH,CAAC,CAAC;IACJ,CAAC;;IAED;IACA,MAAMC,kBAAkB,GAAGA,CAACrH,IAAI,GAAG,EAAE,KAAoB;MACvD,IAAI,CAACA,IAAI,CAACsB,MAAM,EAAE,OAAO,EAAE;MAC3B,IAAI,OAAOtB,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,OAAOA,IAAI,CAACnB,GAAG,CAAE6G,GAAG,IAAK1B,0BAAW,CAACM,UAAU,CAACoB,GAAG,CAAC,CAAC;MACtF,OAAO1F,IAAI,CAACnB,GAAG,CAAE6G,GAAG,IAAK1B,0BAAW,CAACC,UAAU,CAACyB,GAAG,CAAC,CAAC;IACvD,CAAC;IAED,MAAM4B,2BAA2B,GAAGA,CAAA,KAAM;MACxC;MACA;MACA,MAAMC,aAAa,GAAGF,kBAAkB,CAAC9K,qBAAqB,CAAC;MAC/D,MAAMiL,gBAAgB,GAAGH,kBAAkB,CAACR,wBAAwB,CAAC;MACrE,OAAOrK,8BAAe,CAACkB,SAAS,CAAC,CAAC,GAAG6J,aAAa,EAAE,GAAGC,gBAAgB,CAAC,CAAC;IAC3E,CAAC;IAED,MAAMC,SAAS,GAAIzE,IAAI,IAAK;MAC1B,OAAO;QACLA,IAAI,EAAEhC,cAAG,CAAC6D,IAAI,CAAC7B,IAAI,CAACA,IAAI,CAAC;QACzBmC,YAAY,EAAEnC,IAAI,CAACmC,YAAY;QAC/BC,IAAI,EAAEpC,IAAI,CAACoC,IAAI;QACfC,IAAI,EAAErC,IAAI,CAACqC;MACb,CAAC;IACH,CAAC;IACD,MAAMqC,cAAc,GAAGA,CAACC,IAAI,GAAG,EAAE,KAAwB;MACvD,IAAIA,IAAI,CAACrG,MAAM,EAAE;QACf,MAAMsG,OAAO,GAAGD,IAAI,CAAC9I,GAAG,CAAEgJ,SAAc,IAAK;UAC3C,IAAIA,SAAS,CAACC,WAAW,EAAE;YACzB,MAAMA,WAAW,GAAG9D,0BAAW,CAACC,UAAU,CAAC4D,SAAS,CAACC,WAAW,CAAC;YACjE,MAAMC,KAAK,GAAG,KAAIC,6BAAkB,EAACxD,SAAS,EAAEsD,WAAW,EAAEtD,SAAS,EAAEqD,SAAS,CAACI,MAAM,EAAEJ,SAAS,CAAC1O,IAAI,CAAC;YACzG,OAAO4O,KAAK;UACd;UACA,MAAMA,KAAK,GAAG,KAAIC,6BAAkB,EAClCH,SAAS,CAACjI,EAAE,EACZ4E,SAAS,EACTqD,SAAS,CAACzC,IAAI,EACdyC,SAAS,CAACI,MAAM,EAChBJ,SAAS,CAAC1O,IACZ,CAAC;UACD,OAAO4O,KAAK;QACd,CAAC,CAAC;QACF,OAAOtK,4BAAiB,CAACyK,eAAe,CAACN,OAAO,CAAC;MACnD;MACA,OAAO,KAAInK,4BAAiB,EAAC,CAAC;IAChC,CAAC;IAED,OAAO,IAAI9B,OAAO,CAAC;MACjBI,QAAQ;MACRC,KAAK,EAAEA,KAAK,CAAC6C,GAAG,CAAC4I,SAAS,CAAC;MAC3B1K,aAAa;MACbC,MAAM,EAAEA,MAAM,IAAIwH,SAAS;MAC3BvI,GAAG,EAAE;QACH;QACA;QACAqJ,OAAO,EAAE,OAAOrJ,GAAG,CAACqJ,OAAO,KAAK,QAAQ,GAAG,EAAE,GAAGrJ,GAAG,CAACqJ,OAAO;QAC3D/D,IAAI,EAAEtF,GAAG,CAACsF,IAAI;QACdgE,QAAQ,EAAEtJ,GAAG,CAACsJ,QAAQ;QACtBC,KAAK,EAAEvJ,GAAG,CAACuJ;MACb,CAAC;MACDlJ,IAAI;MACJJ,YAAY,EAAE4K,gBAAgB,CAAC5K,YAAY,CAAC;MAC5CE,eAAe,EAAE0K,gBAAgB,CAAC1K,eAAe,CAAC;MAClDG,qBAAqB,EAAE+K,2BAA2B,CAAC,CAAC;MACpD;MACA7K,cAAc,EAAEC,iBAAiB,GAAG,EAAE,GAAGD,cAAc,EAAEoC,GAAG,CAAE6F,CAAC,IAAK/I,OAAO,CAACuD,iBAAiB,CAACwF,CAAC,CAAC,CAAC,IAAI,EAAE;MACvGhI,iBAAiB,EAAEA,iBAAiB,GAAGsE,cAAG,CAAC6D,IAAI,CAACnI,iBAAiB,CAAC,GAAG8H,SAAS;MAC9E7H,oBAAoB,EAAEA,oBAAoB,GAAGqE,cAAG,CAAC6D,IAAI,CAAClI,oBAAoB,CAAC,GAAG6H,SAAS;MACvF3H,sBAAsB;MACtBC,uBAAuB;MACvBF,mBAAmB;MACnBK,SAAS;MACTC,uBAAuB;MACvBE,IAAI;MACJC,OAAO,EAAEA,OAAO,GAAGA,OAAO,CAACwB,GAAG,CAAE+G,CAAC,IAAK5E,cAAG,CAAC6D,IAAI,CAACe,CAAC,CAAC,CAAC,GAAG,EAAE;MACvDtI,QAAQ,EAAEA,QAAQ,GACd;QAAEuI,eAAe,EAAEvI,QAAQ,CAACuI,eAAe,CAAChH,GAAG,CAAEnE,CAAC,IAAKsG,cAAG,CAAC6D,IAAI,CAACnK,CAAC,CAAC,CAAC;QAAEoL,MAAM,EAAE,KAAIqC,gBAAM,EAAC7K,QAAQ,CAACwI,MAAM;MAAE,CAAC,GAC1GtB,SAAS;MACbjH,SAAS,EAAEA,SAAS,GAAG;QAAEwI,IAAI,EAAE/E,cAAG,CAAC6D,IAAI,CAACtH,SAAS,CAACwI,IAAI,CAAC;QAAED,MAAM,EAAE,KAAIqC,gBAAM,EAAC5K,SAAS,CAACuI,MAAM;MAAE,CAAC,GAAGtB,SAAS;MAC3GhH,UAAU,EAAEkK,cAAc,CAAClK,UAAU,CAAC;MACtCG,WAAW;MACXE,UAAU;MACVC,QAAQ;MACRC,MAAM;MACNC;IACF,CAAC,CAAC;EACJ;;EAEA;AACF;AACA;EACE,OAAO6G,IAAIA,CAACuD,YAA0B,EAAEhL,IAAY,EAAW;IAC7D,OAAOzB,OAAO,CAAC+C,KAAK,CAACD,IAAI,CAACmC,SAAS,CAACwH,YAAY,CAAC,EAAEhL,IAAI,CAAC;EAC1D;;EAEA;AACF;AACA;AACA;EACE,OAAOiL,aAAaA,CAAC;IACnBC,SAAS;IACTtM,KAAK;IACLS,cAAc;IACduI;EAMF,CAAC,EAAE;IACD,MAAMyC,SAAS,GAAIzE,IAAI,IAAK;MAC1B,OAAO;QACLA,IAAI,EAAEA,IAAI,CAACA,IAAI,CAAC5F,IAAI,CAAC,CAAC;QACtB+H,YAAY,EAAEnC,IAAI,CAACmC,YAAY;QAC/BC,IAAI,EAAEpC,IAAI,CAACoC,IAAI;QACfC,IAAI,EAAErC,IAAI,CAACqC;MACb,CAAC;IACH,CAAC;IAED,IAAI,CAACiD,SAAS,CAACrM,GAAG,EAAE,MAAM,IAAIiF,KAAK,CAAC,kDAAkD,CAAC;IACvF,MAAMkF,OAAO,GAAG,IAAIzK,OAAO,CAAC;MAC1BI,QAAQ,EAAE,IAAAwM,+BAAoB,EAACD,SAAS,CAACvM,QAAQ,CAAC;MAClDC,KAAK,EAAEA,KAAK,CAAC6C,GAAG,CAAC4I,SAAS,CAAC;MAC3B1K,aAAa,EAAEuL,SAAS,CAACvL,aAAa;MACtCd,GAAG,EAAEqM,SAAS,CAACrM,GAAU;MACzBK,IAAI,EAAEgM,SAAS,CAAChM,IAAI;MACpBJ,YAAY,EAAEoM,SAAS,CAACpM,YAAY,CAACsM,GAAG,CAAC,CAAC;MAC1CpM,eAAe,EAAEkM,SAAS,CAAClM,eAAe,CAACoM,GAAG,CAAC,CAAC;MAChD5L,mBAAmB,EAAE0L,SAAS,CAAC1L,mBAAmB;MAClDC,sBAAsB,EAAEyL,SAAS,CAACzL,sBAAsB;MACxDC,uBAAuB,EAAEwL,SAAS,CAACxL,uBAAuB;MAC1DH,oBAAoB,EAAEqI,iBAAiB,EAAE5H,IAAI,CAAC,CAAC;MAC/Cb,qBAAqB,EAAE+L,SAAS,CAAC/L,qBAAqB;MACtD;MACAE,cAAc,EAAE6L,SAAS,CAAC7L,cAAc;MACxCC,iBAAiB,EAAED,cAAc,EAAEW,IAAI,CAAC,CAAC;MACzCJ,MAAM,EAAEsL,SAAS,CAACtL,MAAM;MACxBC,SAAS,EAAEqL,SAAS,CAACrL,SAAS,CAACwL,sBAAsB;MACrDvL,uBAAuB,EAAEoL,SAAS,CAACpL,uBAAuB;MAC1DM,UAAU,EAAE8K,SAAS,CAAC9K,UAAU;MAChCG,WAAW,EAAE2K,SAAS,CAAC3K,WAAW;MAClCC,WAAW,EAAE0K,SAAS,CAAC1I,EAAE;MACzB/B,UAAU,EAAE,IAAA6K,oBAAa,EAAC;IAC5B,CAAC,CAAC;IACF,IAAI,IAAAC,0BAAM,EAACL,SAAS,CAAClC,OAAO,CAAC,EAAE;MAC7BA,OAAO,CAACjJ,KAAK,GAAGmL,SAAS,CAAClC,OAAiB;IAC7C,CAAC,MAAM;MACLA,OAAO,CAACwC,UAAU,CAAC,CAAC;IACtB;IAEA,OAAOxC,OAAO;EAChB;EAEAwC,UAAUA,CAAA,EAAG;IACX,IAAI,CAACzL,KAAK,GAAG,IAAA0L,qBAAI,EAAC,IAAAC,UAAE,EAAC,CAAC,CAAC;EACzB;EAEA,IAAIC,eAAeA,CAAA,EAAY;IAC7B,OAAO,CAAC,IAAAC,0BAAe,EAACC,wBAAa,CAACC,SAAS,EAAE,IAAI,CAAClM,MAAM,CAAC;EAC/D;EAEA,IAAImM,QAAQA,CAAA,EAAY;IACtB,OAAO,CAAC,IAAI,CAACnM,MAAM,IAAI,IAAI,CAACA,MAAM,KAAKoM,qBAAU,CAACC,MAAM;EAC1D;EAEA,IAAIC,YAAYA,CAAA,EAAuB;IACrC,OAAO,IAAI,CAACvL,MAAM,EAAEwL,IAAI,GAAG,KAAIpB,gBAAM,EAAC;MAAE/C,IAAI,EAAE,IAAI,CAACrH,MAAM,CAACwL,IAAI,CAACnE,IAAI;MAAE8B,KAAK,EAAE,IAAI,CAACnJ,MAAM,CAACwL,IAAI,CAACrC;IAAM,CAAC,CAAC,GAAG1C,SAAS;EACnH;EACA,IAAIgF,QAAQA,CAAA,EAA4B;IACtC,OAAO,IAAI,CAACzL,MAAM,EAAE6B,EAAE,GAClBoE,0BAAW,CAACC,UAAU,CAAC;MAAEiD,KAAK,EAAE,IAAI,CAACnJ,MAAM,CAAC6B,EAAE,CAACsH,KAAK;MAAE9B,IAAI,EAAE,IAAI,CAACrH,MAAM,CAAC6B,EAAE,CAACwF;IAAK,CAAC,CAAC,GAClFZ,SAAS;EACf;EAEAiF,OAAOA,CAACC,IAAwB,EAAE;IAChC;IACA,IAAI,CAACA,IAAI,GAAGA,IAAI,GACZ;MACE1G,IAAI,EAAE0G,IAAI,CAACtM,IAAI,CAAC,CAAC;MACjBgI,IAAI,EAAEuE;IACR,CAAC,GACD,IAAI;EACV;EAEAC,SAASA,CAACtG,GAAQ,EAAE;IAClB,OAAO,IAAI,CAACjG,OAAO,CAACwM,IAAI,CAAEjE,CAAC,IAAKA,CAAC,CAAChH,QAAQ,CAAC,CAAC,KAAK0E,GAAG,CAAC1E,QAAQ,CAAC,CAAC,CAAC;EAClE;EAEAkL,SAASA,CAACxG,GAAQ,EAAE;IAClB,IAAI,IAAI,CAAC6F,QAAQ,EAAE;IACnB,IAAI,IAAI,CAACS,SAAS,CAACtG,GAAG,CAAC,EAAE;MACvB,OAAO,CAAC;IACV;IACA,IAAI,CAACjG,OAAO,CAAC4F,IAAI,CAACK,GAAG,CAAC;EACxB;EAEAyG,WAAWA,CAACC,UAAsB,EAAE/N,GAAQ,EAAEgO,cAAuB,EAAE;IACrE,IAAI,CAAC3M,QAAQ,GAAG0M,UAAU;IAC1B,IAAI,CAACE,cAAc,CAACjO,GAAG,CAAC;IACxB,IAAIgO,cAAc,EAAE;MAClB,IAAI,CAACC,cAAc,CAAC;QAClB3E,QAAQ,EAAEf,SAAS;QACnBgB,KAAK,EAAEhB,SAAS;QAChBjD,IAAI,EAAE4I,IAAI,CAACC,GAAG,CAAC,CAAC,CAACxL,QAAQ,CAAC,CAAC;QAC3B0G,OAAO,EAAE,8DAA8D,IAAI,CAACrJ,GAAG,CAACqJ,OAAO,IAAI,SAAS;MACtG,CAAC,CAAC;MACF,IAAI,CAACrJ,GAAG,CAACqJ,OAAO,GAAG2E,cAAc;IACnC;EACF;EAEAI,YAAYA,CAACC,YAA0B,EAAE;IACvC,IAAI,CAAC/M,SAAS,GAAG+M,YAAY;EAC/B;EAEAJ,cAAcA,CAACjO,GAAQ,EAAE;IACvB,IAAI,CAAC6B,QAAQ,CAACmF,IAAI,CAAChH,GAAG,CAAC;EACzB;EAEAsO,eAAeA,CAACjH,GAAQ,EAAE;IACxB,IAAI,IAAI,CAAC6F,QAAQ,EAAE;IACnB,IAAI,CAAC9L,OAAO,GAAG,CAACiG,GAAG,CAAC;EACtB;EAEAkH,YAAYA,CAAClH,GAAQ,EAAE;IACrB,IAAI,CAACjG,OAAO,GAAG,IAAI,CAACA,OAAO,CAACgG,MAAM,CAAEuC,CAAC,IAAKA,CAAC,CAAChH,QAAQ,CAAC,CAAC,KAAK0E,GAAG,CAAC1E,QAAQ,CAAC,CAAC,CAAC;EAC5E;EAEA6L,gBAAgBA,CAAA,EAAG;IACjB,IAAI,CAACpN,OAAO,GAAG,EAAE;EACnB;EAEAqN,uBAAuBA,CAACC,UAAsB,EAAyB;IACrE,OAAOC,OAAO,CAACC,GAAG,CAAC,IAAI,CAAC7O,KAAK,CAAC6C,GAAG,CAAEmE,IAAI,IAAK8H,uBAAU,CAACC,uBAAuB,CAAC/H,IAAI,EAAE2H,UAAU,CAAC,CAAC,CAAC;EACpG;EAEAK,SAASA,CAAA,EAAY;IACnB,OAAOC,OAAO,CAAC,IAAI,CAACzN,UAAU,CAAC0N,iBAAiB,CAACC,oBAAU,CAACC,MAAM,CAAC,EAAEnD,MAAM,EAAEoD,OAAO,CAAC;EACvF;EACAC,oBAAoBA,CAAA,EAAY;IAC9B,OAAOL,OAAO,CAAC,IAAI,CAACzN,UAAU,CAAC0N,iBAAiB,CAACC,oBAAU,CAACC,MAAM,CAAC,EAAEnD,MAAM,EAAEsD,YAAY,CAAC;EAC5F;;EAEA;AACF;AACA;AACA;EACElF,QAAQA,CAAA,EAAS;IACf,IAAAmF,kCAAuB,EAAC,IAAI,CAAC;EAC/B;AACF;AAACC,OAAA,CAAAjR,OAAA,GAAAmB,OAAA","ignoreList":[]}
@@ -103,21 +103,13 @@ describe('Version', () => {
103
103
  it('dependencies should be an array', () => {
104
104
  (0, _chai().expect)(dependencies).to.be.an('array').and.have.lengthOf(1);
105
105
  });
106
- it('dependencies should have properties id and relativePaths only', () => {
106
+ it('dependencies should have id property only (relativePaths removed)', () => {
107
107
  (0, _chai().expect)(dependencies[0]).to.haveOwnProperty('id');
108
- (0, _chai().expect)(dependencies[0]).to.haveOwnProperty('relativePaths');
108
+ (0, _chai().expect)(dependencies[0]).to.not.haveOwnProperty('relativePaths');
109
109
  (0, _chai().expect)(dependencies[0]).to.not.haveOwnProperty('nonExistProperty');
110
- (0, _chai().expect)(Object.keys(dependencies[0])).to.have.lengthOf(2);
111
- });
112
- it('relativePaths should be an array', () => {
113
- (0, _chai().expect)(dependencies[0].relativePaths).to.be.an('array').and.have.lengthOf(1);
114
- });
115
- it('relativePaths should have properties sourceRelativePath and destinationRelativePath only', () => {
116
- (0, _chai().expect)(dependencies[0].relativePaths[0]).to.haveOwnProperty('sourceRelativePath');
117
- (0, _chai().expect)(dependencies[0].relativePaths[0]).to.haveOwnProperty('destinationRelativePath');
118
- (0, _chai().expect)(dependencies[0].relativePaths[0]).to.not.haveOwnProperty('nonExistProperty');
119
- (0, _chai().expect)(Object.keys(dependencies[0].relativePaths[0])).to.have.lengthOf(2);
110
+ (0, _chai().expect)(Object.keys(dependencies[0])).to.have.lengthOf(1);
120
111
  });
112
+ // relativePaths tests removed - no longer included in Version.id() hash for Harmony components
121
113
  });
122
114
  });
123
115
  describe('hash()', () => {
@@ -1 +1 @@
1
- {"version":3,"names":["_chai","data","require","_versionModelExtended","_interopRequireDefault","_versionModelObject","_legacy","_version","_lodash","e","__esModule","default","getVersionWithDepsFixture","Version","parse","JSON","stringify","clone","versionWithDepsFixture","describe","version","idRaw","idParsed","before","versionFixture","id","it","expect","to","haveOwnProperty","not","dependencies","be","an","and","have","lengthOf","Object","keys","relativePaths","hash","versionFixtureHash","calculateHash","toString","equal","versionFromContent","validateFunc","beforeEach","validate","throw","errMsg","mainFile","undefined","files","file","name","relativePath","packageDependencies","lodash","userLib","devPackageDependencies","peerPackageDependencies","devDependencies","flattenedDependencies","changeVersion","log","bindingPrefix","packageJsonChangedProps","main","bin","overrides","exclude","scripts","schema","SchemaName","Harmony","compiler","dists","Legacy","customResolvedPaths"],"sources":["version.spec.ts"],"sourcesContent":["import { expect } from 'chai';\n\nimport versionWithDepsFixture from '../fixtures/version-model-extended.json';\nimport versionFixture from '../fixtures/version-model-object.json';\nimport { SchemaName } from '@teambit/legacy.consumer-component';\nimport Version from './version';\nimport { clone } from 'lodash';\n\nconst getVersionWithDepsFixture = () => {\n return Version.parse(JSON.stringify(clone(versionWithDepsFixture)), '12c830ed25854dc731b58e014c6b4960ccb59092');\n};\n\ndescribe('Version', () => {\n describe('id()', () => {\n describe('simple version', () => {\n let version;\n let idRaw;\n let idParsed;\n before(() => {\n // @ts-ignore\n version = new Version(versionFixture);\n idRaw = version.id();\n idParsed = JSON.parse(idRaw);\n });\n it('should have mainFile property', () => {\n expect(idParsed).to.haveOwnProperty('mainFile');\n });\n it('should have files property', () => {\n expect(idParsed).to.haveOwnProperty('files');\n });\n it('should have log property', () => {\n expect(idParsed).to.haveOwnProperty('log');\n });\n it('should have dependencies property', () => {\n expect(idParsed).to.haveOwnProperty('dependencies');\n });\n it('should have packageDependencies property', () => {\n expect(idParsed).to.haveOwnProperty('packageDependencies');\n });\n it('should have bindingPrefix property', () => {\n expect(idParsed).to.haveOwnProperty('bindingPrefix');\n });\n it('should not have docs property', () => {\n expect(idParsed).to.not.haveOwnProperty('docs');\n });\n it('should not have devDependencies property', () => {\n expect(idParsed).to.not.haveOwnProperty('devDependencies');\n });\n it('should not have flattenedDependencies property', () => {\n expect(idParsed).to.not.haveOwnProperty('flattenedDependencies');\n });\n it('should not have devPackageDependencies property', () => {\n expect(idParsed).to.not.haveOwnProperty('devPackageDependencies');\n });\n it('should not have peerPackageDependencies property', () => {\n expect(idParsed).to.not.haveOwnProperty('peerPackageDependencies');\n });\n });\n describe('version with dependencies', () => {\n let dependencies;\n before(() => {\n const version = getVersionWithDepsFixture();\n const idRaw = version.id();\n const idParsed = JSON.parse(idRaw);\n dependencies = idParsed.dependencies;\n });\n it('dependencies should be an array', () => {\n expect(dependencies).to.be.an('array').and.have.lengthOf(1);\n });\n it('dependencies should have properties id and relativePaths only', () => {\n expect(dependencies[0]).to.haveOwnProperty('id');\n expect(dependencies[0]).to.haveOwnProperty('relativePaths');\n expect(dependencies[0]).to.not.haveOwnProperty('nonExistProperty');\n expect(Object.keys(dependencies[0])).to.have.lengthOf(2);\n });\n it('relativePaths should be an array', () => {\n expect(dependencies[0].relativePaths).to.be.an('array').and.have.lengthOf(1);\n });\n it('relativePaths should have properties sourceRelativePath and destinationRelativePath only', () => {\n expect(dependencies[0].relativePaths[0]).to.haveOwnProperty('sourceRelativePath');\n expect(dependencies[0].relativePaths[0]).to.haveOwnProperty('destinationRelativePath');\n expect(dependencies[0].relativePaths[0]).to.not.haveOwnProperty('nonExistProperty');\n expect(Object.keys(dependencies[0].relativePaths[0])).to.have.lengthOf(2);\n });\n });\n });\n describe('hash()', () => {\n let version: Version;\n let hash;\n const versionFixtureHash = '4f67925a80b5e1f52dd1177196bf4c003d2f8798';\n before(() => {\n // @ts-ignore\n version = new Version(versionFixture);\n hash = version.calculateHash();\n });\n it('should have a correct hash string', () => {\n expect(hash.toString()).to.equal(versionFixtureHash);\n });\n it('should have a the same hash string also when loading the version from contents', () => {\n const versionFromContent = Version.parse(JSON.stringify(versionFixture), hash.toString());\n expect(versionFromContent.hash().toString()).to.equal(versionFixtureHash);\n });\n });\n describe('validate()', () => {\n let version;\n let validateFunc;\n beforeEach(() => {\n version = getVersionWithDepsFixture();\n validateFunc = () => version.validate();\n });\n it('should not throw when it has a valid version', () => {\n expect(validateFunc).to.not.throw();\n });\n it('should throw when mainFile is empty', () => {\n const errMsg = 'mainFile is missing';\n version.mainFile = null;\n expect(validateFunc).to.throw(errMsg);\n version.mainFile = '';\n expect(validateFunc).to.throw(errMsg);\n version.mainFile = undefined;\n expect(validateFunc).to.throw(errMsg);\n });\n it('should throw when mainFile path is absolute', () => {\n version.mainFile = '/tmp/main.js';\n expect(validateFunc).to.throw(`mainFile ${version.mainFile} is invalid`);\n });\n it('should throw when mainFile path is Windows format', () => {\n version.mainFile = 'a\\\\tmp.js';\n expect(validateFunc).to.throw(`mainFile ${version.mainFile} is invalid`);\n });\n it('should throw when the files are missing', () => {\n version.files = undefined;\n expect(validateFunc).to.throw('files are missing');\n version.files = null;\n expect(validateFunc).to.throw('files are missing');\n version.files = [];\n expect(validateFunc).to.throw('files are missing');\n });\n it('should throw when the file has no hash', () => {\n version.files[0].file = '';\n expect(validateFunc).to.throw('missing the hash');\n });\n it('should throw when the file has no name', () => {\n version.files[0].name = '';\n expect(validateFunc).to.throw('missing the name');\n });\n it('should throw when the file.name is not a string', () => {\n version.files[0].name = true;\n expect(validateFunc).to.throw('to be string, got boolean');\n });\n it('should throw when the file hash is not a string', () => {\n version.files[0].file.hash = [];\n expect(validateFunc).to.throw('to be string, got object');\n });\n it('should throw when the main file is not in the file lists', () => {\n version.files[0].relativePath = 'anotherFile.js';\n expect(validateFunc).to.throw('unable to find the mainFile');\n });\n it('should throw when the two files have the same name but different letter cases', () => {\n version.files[1] = clone(version.files[0]);\n version.files[1].relativePath = 'bar/Foo.ts';\n expect(validateFunc).to.throw('files are duplicated bar/foo.ts, bar/Foo.ts');\n });\n it('should throw for an invalid package version', () => {\n version.packageDependencies = { lodash: 34 };\n expect(validateFunc).to.throw('expected version of \"lodash\" to be string, got number');\n });\n it('should not throw for a package version which is a git url', () => {\n version.packageDependencies = { userLib: 'gitreadonly ssh://git@git.bit.io' };\n expect(validateFunc).to.not.throw();\n });\n it('should throw for invalid packageDependencies type', () => {\n version.packageDependencies = 'invalid packages';\n expect(validateFunc).to.throw('to be object, got string');\n });\n it('should throw for invalid devPackageDependencies type', () => {\n version.devPackageDependencies = [1, 2, 3];\n expect(validateFunc).to.throw('to be object, got array');\n });\n it('should throw for invalid peerPackageDependencies type', () => {\n version.peerPackageDependencies = true;\n expect(validateFunc).to.throw('to be object, got boolean');\n });\n it('should throw when dependencies are invalid', () => {\n version.dependencies = {};\n expect(validateFunc).to.throw('dependencies must be an instance of Dependencies, got object');\n });\n it('should throw when devDependencies are invalid', () => {\n version.devDependencies = {};\n expect(validateFunc).to.throw('devDependencies must be an instance of Dependencies, got object');\n });\n it('should throw when there are dependencies and the flattenDependencies are empty', () => {\n version.flattenedDependencies = [];\n expect(validateFunc).to.throw('it has dependencies but its flattenedDependencies is empty');\n });\n it('should throw when a flattenDependency is invalid', () => {\n version.flattenedDependencies = [1234];\n expect(validateFunc).to.throw('expected to be ComponentID, got number');\n });\n it('should throw when a flattenDependency does not have a version', () => {\n version.flattenedDependencies[0] = version.flattenedDependencies[0].changeVersion(null);\n expect(validateFunc).to.throw('does not have a version');\n });\n it('should throw when the log is empty', () => {\n version.log = undefined;\n expect(validateFunc).to.throw('log object is missing');\n });\n it('should throw when the log has an invalid type', () => {\n version.log = [];\n expect(validateFunc).to.throw('to be object, got array');\n });\n it('should throw when the bindingPrefix has an invalid type', () => {\n version.bindingPrefix = {};\n expect(validateFunc).to.throw('to be string, got object');\n });\n it('should throw when packageJsonChangedProps tries to override built-in package.json prop', () => {\n version.packageJsonChangedProps = { main: 'my-new-main.js' };\n expect(validateFunc).to.throw('the packageJsonChangedProps should not override the prop main');\n });\n it('should throw when packageJsonChangedProps is not an object', () => {\n version.packageJsonChangedProps = [1, 2, 3, 4];\n expect(validateFunc).to.throw('expected packageJsonChangedProps to be object, got array');\n });\n it('should throw when packageJsonChangedProps has a non-compliant npm value', () => {\n version.packageJsonChangedProps = { bin: 1234 };\n expect(validateFunc).to.throw('the generated package.json field \"bin\" is not compliant with npm requirements');\n });\n it('should not throw when packageJsonChangedProps has a compliant npm value', () => {\n version.packageJsonChangedProps = { bin: 'my-file.js' };\n expect(validateFunc).to.not.throw();\n });\n it('should throw when overrides has a \"system\" field (field that Bit uses internally for consumer overrides)', () => {\n version.overrides = { exclude: ['*'] };\n expect(validateFunc).to.throw('the \"overrides\" has a forbidden key \"exclude\"');\n });\n it('should throw when overrides has a package.json field that is non-compliant npm value', () => {\n version.overrides = { bin: 1234 };\n expect(validateFunc).to.throw(\n '\"overrides.bin\" is a package.json field but is not compliant with npm requirements'\n );\n });\n it('should not throw when overrides has a package.json field that is compliant npm value', () => {\n version.overrides = { bin: 'my-file.js' };\n expect(validateFunc).to.not.throw();\n });\n it('should show the original error from package-json-validator when overrides has a package.json field that is non-compliant npm value', () => {\n version.overrides = { scripts: false };\n expect(validateFunc).to.throw('Type for field scripts, was expected to be object, not boolean');\n });\n describe('Harmony schema', () => {\n beforeEach(() => {\n version.schema = SchemaName.Harmony;\n });\n it('should throw for having relativePaths on Harmony', () => {\n delete version.compiler;\n delete version.dists;\n expect(validateFunc).to.throw('the dependencies should not have relativePaths');\n });\n it('should throw for having relativePaths on any other version other than legacy', () => {\n version.schema = '2.0.0';\n delete version.compiler;\n delete version.dists;\n expect(validateFunc).to.throw('the dependencies should not have relativePaths');\n });\n it('should not throw for having relativePaths on legacy', () => {\n version.schema = SchemaName.Legacy;\n delete version.compiler;\n delete version.dists;\n expect(validateFunc).to.not.throw();\n });\n it('should throw for having customResolvedPaths on Harmony', () => {\n delete version.compiler;\n delete version.dists;\n version.dependencies.dependencies[0].relativePaths = [];\n version.customResolvedPaths = ['something'];\n expect(validateFunc).to.throw(\n 'the customResolvedPaths field is cannot have values according to schema \"1.0.0\"'\n );\n });\n it('should not throw when all is good', () => {\n delete version.compiler;\n delete version.dists;\n version.dependencies.dependencies[0].relativePaths = [];\n expect(validateFunc).to.not.throw();\n });\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_chai","data","require","_versionModelExtended","_interopRequireDefault","_versionModelObject","_legacy","_version","_lodash","e","__esModule","default","getVersionWithDepsFixture","Version","parse","JSON","stringify","clone","versionWithDepsFixture","describe","version","idRaw","idParsed","before","versionFixture","id","it","expect","to","haveOwnProperty","not","dependencies","be","an","and","have","lengthOf","Object","keys","hash","versionFixtureHash","calculateHash","toString","equal","versionFromContent","validateFunc","beforeEach","validate","throw","errMsg","mainFile","undefined","files","file","name","relativePath","packageDependencies","lodash","userLib","devPackageDependencies","peerPackageDependencies","devDependencies","flattenedDependencies","changeVersion","log","bindingPrefix","packageJsonChangedProps","main","bin","overrides","exclude","scripts","schema","SchemaName","Harmony","compiler","dists","Legacy","relativePaths","customResolvedPaths"],"sources":["version.spec.ts"],"sourcesContent":["import { expect } from 'chai';\n\nimport versionWithDepsFixture from '../fixtures/version-model-extended.json';\nimport versionFixture from '../fixtures/version-model-object.json';\nimport { SchemaName } from '@teambit/legacy.consumer-component';\nimport Version from './version';\nimport { clone } from 'lodash';\n\nconst getVersionWithDepsFixture = () => {\n return Version.parse(JSON.stringify(clone(versionWithDepsFixture)), '12c830ed25854dc731b58e014c6b4960ccb59092');\n};\n\ndescribe('Version', () => {\n describe('id()', () => {\n describe('simple version', () => {\n let version;\n let idRaw;\n let idParsed;\n before(() => {\n // @ts-ignore\n version = new Version(versionFixture);\n idRaw = version.id();\n idParsed = JSON.parse(idRaw);\n });\n it('should have mainFile property', () => {\n expect(idParsed).to.haveOwnProperty('mainFile');\n });\n it('should have files property', () => {\n expect(idParsed).to.haveOwnProperty('files');\n });\n it('should have log property', () => {\n expect(idParsed).to.haveOwnProperty('log');\n });\n it('should have dependencies property', () => {\n expect(idParsed).to.haveOwnProperty('dependencies');\n });\n it('should have packageDependencies property', () => {\n expect(idParsed).to.haveOwnProperty('packageDependencies');\n });\n it('should have bindingPrefix property', () => {\n expect(idParsed).to.haveOwnProperty('bindingPrefix');\n });\n it('should not have docs property', () => {\n expect(idParsed).to.not.haveOwnProperty('docs');\n });\n it('should not have devDependencies property', () => {\n expect(idParsed).to.not.haveOwnProperty('devDependencies');\n });\n it('should not have flattenedDependencies property', () => {\n expect(idParsed).to.not.haveOwnProperty('flattenedDependencies');\n });\n it('should not have devPackageDependencies property', () => {\n expect(idParsed).to.not.haveOwnProperty('devPackageDependencies');\n });\n it('should not have peerPackageDependencies property', () => {\n expect(idParsed).to.not.haveOwnProperty('peerPackageDependencies');\n });\n });\n describe('version with dependencies', () => {\n let dependencies;\n before(() => {\n const version = getVersionWithDepsFixture();\n const idRaw = version.id();\n const idParsed = JSON.parse(idRaw);\n dependencies = idParsed.dependencies;\n });\n it('dependencies should be an array', () => {\n expect(dependencies).to.be.an('array').and.have.lengthOf(1);\n });\n it('dependencies should have id property only (relativePaths removed)', () => {\n expect(dependencies[0]).to.haveOwnProperty('id');\n expect(dependencies[0]).to.not.haveOwnProperty('relativePaths');\n expect(dependencies[0]).to.not.haveOwnProperty('nonExistProperty');\n expect(Object.keys(dependencies[0])).to.have.lengthOf(1);\n });\n // relativePaths tests removed - no longer included in Version.id() hash for Harmony components\n });\n });\n describe('hash()', () => {\n let version: Version;\n let hash;\n const versionFixtureHash = '4f67925a80b5e1f52dd1177196bf4c003d2f8798';\n before(() => {\n // @ts-ignore\n version = new Version(versionFixture);\n hash = version.calculateHash();\n });\n it('should have a correct hash string', () => {\n expect(hash.toString()).to.equal(versionFixtureHash);\n });\n it('should have a the same hash string also when loading the version from contents', () => {\n const versionFromContent = Version.parse(JSON.stringify(versionFixture), hash.toString());\n expect(versionFromContent.hash().toString()).to.equal(versionFixtureHash);\n });\n });\n describe('validate()', () => {\n let version;\n let validateFunc;\n beforeEach(() => {\n version = getVersionWithDepsFixture();\n validateFunc = () => version.validate();\n });\n it('should not throw when it has a valid version', () => {\n expect(validateFunc).to.not.throw();\n });\n it('should throw when mainFile is empty', () => {\n const errMsg = 'mainFile is missing';\n version.mainFile = null;\n expect(validateFunc).to.throw(errMsg);\n version.mainFile = '';\n expect(validateFunc).to.throw(errMsg);\n version.mainFile = undefined;\n expect(validateFunc).to.throw(errMsg);\n });\n it('should throw when mainFile path is absolute', () => {\n version.mainFile = '/tmp/main.js';\n expect(validateFunc).to.throw(`mainFile ${version.mainFile} is invalid`);\n });\n it('should throw when mainFile path is Windows format', () => {\n version.mainFile = 'a\\\\tmp.js';\n expect(validateFunc).to.throw(`mainFile ${version.mainFile} is invalid`);\n });\n it('should throw when the files are missing', () => {\n version.files = undefined;\n expect(validateFunc).to.throw('files are missing');\n version.files = null;\n expect(validateFunc).to.throw('files are missing');\n version.files = [];\n expect(validateFunc).to.throw('files are missing');\n });\n it('should throw when the file has no hash', () => {\n version.files[0].file = '';\n expect(validateFunc).to.throw('missing the hash');\n });\n it('should throw when the file has no name', () => {\n version.files[0].name = '';\n expect(validateFunc).to.throw('missing the name');\n });\n it('should throw when the file.name is not a string', () => {\n version.files[0].name = true;\n expect(validateFunc).to.throw('to be string, got boolean');\n });\n it('should throw when the file hash is not a string', () => {\n version.files[0].file.hash = [];\n expect(validateFunc).to.throw('to be string, got object');\n });\n it('should throw when the main file is not in the file lists', () => {\n version.files[0].relativePath = 'anotherFile.js';\n expect(validateFunc).to.throw('unable to find the mainFile');\n });\n it('should throw when the two files have the same name but different letter cases', () => {\n version.files[1] = clone(version.files[0]);\n version.files[1].relativePath = 'bar/Foo.ts';\n expect(validateFunc).to.throw('files are duplicated bar/foo.ts, bar/Foo.ts');\n });\n it('should throw for an invalid package version', () => {\n version.packageDependencies = { lodash: 34 };\n expect(validateFunc).to.throw('expected version of \"lodash\" to be string, got number');\n });\n it('should not throw for a package version which is a git url', () => {\n version.packageDependencies = { userLib: 'gitreadonly ssh://git@git.bit.io' };\n expect(validateFunc).to.not.throw();\n });\n it('should throw for invalid packageDependencies type', () => {\n version.packageDependencies = 'invalid packages';\n expect(validateFunc).to.throw('to be object, got string');\n });\n it('should throw for invalid devPackageDependencies type', () => {\n version.devPackageDependencies = [1, 2, 3];\n expect(validateFunc).to.throw('to be object, got array');\n });\n it('should throw for invalid peerPackageDependencies type', () => {\n version.peerPackageDependencies = true;\n expect(validateFunc).to.throw('to be object, got boolean');\n });\n it('should throw when dependencies are invalid', () => {\n version.dependencies = {};\n expect(validateFunc).to.throw('dependencies must be an instance of Dependencies, got object');\n });\n it('should throw when devDependencies are invalid', () => {\n version.devDependencies = {};\n expect(validateFunc).to.throw('devDependencies must be an instance of Dependencies, got object');\n });\n it('should throw when there are dependencies and the flattenDependencies are empty', () => {\n version.flattenedDependencies = [];\n expect(validateFunc).to.throw('it has dependencies but its flattenedDependencies is empty');\n });\n it('should throw when a flattenDependency is invalid', () => {\n version.flattenedDependencies = [1234];\n expect(validateFunc).to.throw('expected to be ComponentID, got number');\n });\n it('should throw when a flattenDependency does not have a version', () => {\n version.flattenedDependencies[0] = version.flattenedDependencies[0].changeVersion(null);\n expect(validateFunc).to.throw('does not have a version');\n });\n it('should throw when the log is empty', () => {\n version.log = undefined;\n expect(validateFunc).to.throw('log object is missing');\n });\n it('should throw when the log has an invalid type', () => {\n version.log = [];\n expect(validateFunc).to.throw('to be object, got array');\n });\n it('should throw when the bindingPrefix has an invalid type', () => {\n version.bindingPrefix = {};\n expect(validateFunc).to.throw('to be string, got object');\n });\n it('should throw when packageJsonChangedProps tries to override built-in package.json prop', () => {\n version.packageJsonChangedProps = { main: 'my-new-main.js' };\n expect(validateFunc).to.throw('the packageJsonChangedProps should not override the prop main');\n });\n it('should throw when packageJsonChangedProps is not an object', () => {\n version.packageJsonChangedProps = [1, 2, 3, 4];\n expect(validateFunc).to.throw('expected packageJsonChangedProps to be object, got array');\n });\n it('should throw when packageJsonChangedProps has a non-compliant npm value', () => {\n version.packageJsonChangedProps = { bin: 1234 };\n expect(validateFunc).to.throw('the generated package.json field \"bin\" is not compliant with npm requirements');\n });\n it('should not throw when packageJsonChangedProps has a compliant npm value', () => {\n version.packageJsonChangedProps = { bin: 'my-file.js' };\n expect(validateFunc).to.not.throw();\n });\n it('should throw when overrides has a \"system\" field (field that Bit uses internally for consumer overrides)', () => {\n version.overrides = { exclude: ['*'] };\n expect(validateFunc).to.throw('the \"overrides\" has a forbidden key \"exclude\"');\n });\n it('should throw when overrides has a package.json field that is non-compliant npm value', () => {\n version.overrides = { bin: 1234 };\n expect(validateFunc).to.throw(\n '\"overrides.bin\" is a package.json field but is not compliant with npm requirements'\n );\n });\n it('should not throw when overrides has a package.json field that is compliant npm value', () => {\n version.overrides = { bin: 'my-file.js' };\n expect(validateFunc).to.not.throw();\n });\n it('should show the original error from package-json-validator when overrides has a package.json field that is non-compliant npm value', () => {\n version.overrides = { scripts: false };\n expect(validateFunc).to.throw('Type for field scripts, was expected to be object, not boolean');\n });\n describe('Harmony schema', () => {\n beforeEach(() => {\n version.schema = SchemaName.Harmony;\n });\n it('should throw for having relativePaths on Harmony', () => {\n delete version.compiler;\n delete version.dists;\n expect(validateFunc).to.throw('the dependencies should not have relativePaths');\n });\n it('should throw for having relativePaths on any other version other than legacy', () => {\n version.schema = '2.0.0';\n delete version.compiler;\n delete version.dists;\n expect(validateFunc).to.throw('the dependencies should not have relativePaths');\n });\n it('should not throw for having relativePaths on legacy', () => {\n version.schema = SchemaName.Legacy;\n delete version.compiler;\n delete version.dists;\n expect(validateFunc).to.not.throw();\n });\n it('should throw for having customResolvedPaths on Harmony', () => {\n delete version.compiler;\n delete version.dists;\n version.dependencies.dependencies[0].relativePaths = [];\n version.customResolvedPaths = ['something'];\n expect(validateFunc).to.throw(\n 'the customResolvedPaths field is cannot have values according to schema \"1.0.0\"'\n );\n });\n it('should not throw when all is good', () => {\n delete version.compiler;\n delete version.dists;\n version.dependencies.dependencies[0].relativePaths = [];\n expect(validateFunc).to.not.throw();\n });\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -10,8 +10,8 @@ import type { ObjectItem } from './object-list';
10
10
  import { ObjectList } from './object-list';
11
11
  import BitRawObject from './raw-object';
12
12
  import Ref from './ref';
13
- import type { ContentTransformer } from './repository-hooks';
14
13
  import type { InMemoryCache } from '@teambit/harmony.modules.in-memory-cache';
14
+ type ContentTransformer = (content: Buffer) => Buffer;
15
15
  export default class Repository {
16
16
  objects: {
17
17
  [key: string]: BitObject;
@@ -40,6 +40,18 @@ export default class Repository {
40
40
  static reset(scopePath: string): Promise<void>;
41
41
  static getPathByScopePath(scopePath: string): string;
42
42
  static onPostObjectsPersist: () => Promise<void>;
43
+ /**
44
+ * Hook for transforming content before objects are persisted to the filesystem.
45
+ * Note: This function cannot be async because it's used by the synchronous `loadSync` method
46
+ * which needs to maintain sync behavior for compatibility with existing code.
47
+ */
48
+ static onPreObjectPersist: (content: Buffer) => Buffer;
49
+ /**
50
+ * Hook for transforming content after objects are read from the filesystem.
51
+ * Note: This function cannot be async because it's used by the synchronous `loadSync` method
52
+ * which needs to maintain sync behavior for compatibility with existing code.
53
+ */
54
+ static onPostObjectRead: (content: Buffer) => Buffer;
43
55
  reLoadScopeIndex(): Promise<void>;
44
56
  /**
45
57
  * current scope index difference with <scope_folder>/index.json content, reload it
@@ -150,3 +162,4 @@ export default class Repository {
150
162
  readObjectsFromPendingDir(pendingDir: PathOsBasedAbsolute): Promise<ObjectList>;
151
163
  private hashPath;
152
164
  }
165
+ export {};
@@ -137,13 +137,6 @@ function _ref() {
137
137
  };
138
138
  return data;
139
139
  }
140
- function _repositoryHooks() {
141
- const data = require("./repository-hooks");
142
- _repositoryHooks = function () {
143
- return data;
144
- };
145
- return data;
146
- }
147
140
  function _harmonyModules2() {
148
141
  const data = require("@teambit/harmony.modules.in-memory-cache");
149
142
  _harmonyModules2 = function () {
@@ -180,8 +173,8 @@ class Repository {
180
173
  _defineProperty(this, "_persistMutex", void 0);
181
174
  this.scopePath = scopePath;
182
175
  this.scopeJson = scopeJson;
183
- this.onRead = (0, _repositoryHooks().onRead)(scopePath, scopeJson);
184
- this.onPersist = (0, _repositoryHooks().onPersist)(scopePath, scopeJson);
176
+ this.onRead = content => Repository.onPostObjectRead?.(content) || content;
177
+ this.onPersist = content => Repository.onPreObjectPersist?.(content) || content;
185
178
  this.cache = (0, _harmonyModules2().createInMemoryCache)({
186
179
  maxSize: (0, _harmonyModules2().getMaxSizeForObjects)()
187
180
  });
@@ -807,6 +800,18 @@ class Repository {
807
800
  }
808
801
  exports.default = Repository;
809
802
  _defineProperty(Repository, "onPostObjectsPersist", void 0);
803
+ /**
804
+ * Hook for transforming content before objects are persisted to the filesystem.
805
+ * Note: This function cannot be async because it's used by the synchronous `loadSync` method
806
+ * which needs to maintain sync behavior for compatibility with existing code.
807
+ */
808
+ _defineProperty(Repository, "onPreObjectPersist", void 0);
809
+ /**
810
+ * Hook for transforming content after objects are read from the filesystem.
811
+ * Note: This function cannot be async because it's used by the synchronous `loadSync` method
812
+ * which needs to maintain sync behavior for compatibility with existing code.
813
+ */
814
+ _defineProperty(Repository, "onPostObjectRead", void 0);
810
815
  async function removeFile(filePath, propagateDirs = false) {
811
816
  try {
812
817
  await _fsExtra().default.unlink(filePath);
@@ -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","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 type { 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 type { ChownOptions, PathOsBasedAbsolute } from '@teambit/legacy.utils';\nimport { glob, writeFile } from '@teambit/legacy.utils';\nimport { removeEmptyDir } from '@teambit/toolbox.fs.remove-empty-dir';\nimport { concurrentIOLimit } from '@teambit/harmony.modules.concurrency';\nimport type { Types, ScopeJson } from '@teambit/legacy.scope';\nimport { HashNotFound, OutdatedIndexJson, UnmergedComponents, RemoteLanes } from '@teambit/legacy.scope';\nimport type { IndexType, IndexItem } from './scope-index';\nimport { ScopeIndex } from './scope-index';\nimport BitObject from './object';\nimport type { ObjectItem } from './object-list';\nimport { ObjectList } from './object-list';\nimport BitRawObject from './raw-object';\nimport Ref from './ref';\nimport type { ContentTransformer } from './repository-hooks';\nimport { onPersist, onRead } from './repository-hooks';\nimport type { InMemoryCache } from '@teambit/harmony.modules.in-memory-cache';\nimport { getMaxSizeForObjects, 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 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","_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","content","onPostObjectRead","onPersist","onPreObjectPersist","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 type { 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 type { ChownOptions, PathOsBasedAbsolute } from '@teambit/legacy.utils';\nimport { glob, writeFile } from '@teambit/legacy.utils';\nimport { removeEmptyDir } from '@teambit/toolbox.fs.remove-empty-dir';\nimport { concurrentIOLimit } from '@teambit/harmony.modules.concurrency';\nimport type { Types, ScopeJson } from '@teambit/legacy.scope';\nimport { HashNotFound, OutdatedIndexJson, UnmergedComponents, RemoteLanes } from '@teambit/legacy.scope';\nimport type { IndexType, IndexItem } from './scope-index';\nimport { ScopeIndex } from './scope-index';\nimport BitObject from './object';\nimport type { ObjectItem } from './object-list';\nimport { ObjectList } from './object-list';\nimport BitRawObject from './raw-object';\nimport Ref from './ref';\nimport type { InMemoryCache } from '@teambit/harmony.modules.in-memory-cache';\nimport { getMaxSizeForObjects, createInMemoryCache } from '@teambit/harmony.modules.in-memory-cache';\nimport { ScopeMeta, Lane, ModelComponent } from '../models';\n\ntype ContentTransformer = (content: Buffer) => Buffer;\nconst OBJECTS_BACKUP_DIR = `${OBJECTS_DIR}.bak`;\nconst TRASH_DIR = 'trash';\n\nexport default class Repository {\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 = (content: Buffer) => Repository.onPostObjectRead?.(content) || content;\n this.onPersist = (content: Buffer) => Repository.onPreObjectPersist?.(content) || content;\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 /**\n * Hook for transforming content before objects are persisted to the filesystem.\n * Note: This function cannot be async because it's used by the synchronous `loadSync` method\n * which needs to maintain sync behavior for compatibility with existing code.\n */\n static onPreObjectPersist: (content: Buffer) => Buffer;\n\n /**\n * Hook for transforming content after objects are read from the filesystem.\n * Note: This function cannot be async because it's used by the synchronous `loadSync` method\n * which needs to maintain sync behavior for compatibility with existing code.\n */\n static onPostObjectRead: (content: Buffer) => Buffer;\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,21 +67,13 @@ describe('Version', () => {
67
67
  it('dependencies should be an array', () => {
68
68
  expect(dependencies).to.be.an('array').and.have.lengthOf(1);
69
69
  });
70
- it('dependencies should have properties id and relativePaths only', () => {
70
+ it('dependencies should have id property only (relativePaths removed)', () => {
71
71
  expect(dependencies[0]).to.haveOwnProperty('id');
72
- expect(dependencies[0]).to.haveOwnProperty('relativePaths');
72
+ expect(dependencies[0]).to.not.haveOwnProperty('relativePaths');
73
73
  expect(dependencies[0]).to.not.haveOwnProperty('nonExistProperty');
74
- expect(Object.keys(dependencies[0])).to.have.lengthOf(2);
75
- });
76
- it('relativePaths should be an array', () => {
77
- expect(dependencies[0].relativePaths).to.be.an('array').and.have.lengthOf(1);
78
- });
79
- it('relativePaths should have properties sourceRelativePath and destinationRelativePath only', () => {
80
- expect(dependencies[0].relativePaths[0]).to.haveOwnProperty('sourceRelativePath');
81
- expect(dependencies[0].relativePaths[0]).to.haveOwnProperty('destinationRelativePath');
82
- expect(dependencies[0].relativePaths[0]).to.not.haveOwnProperty('nonExistProperty');
83
- expect(Object.keys(dependencies[0].relativePaths[0])).to.have.lengthOf(2);
74
+ expect(Object.keys(dependencies[0])).to.have.lengthOf(1);
84
75
  });
76
+ // relativePaths tests removed - no longer included in Version.id() hash for Harmony components
85
77
  });
86
78
  });
87
79
  describe('hash()', () => {
package/models/version.ts CHANGED
@@ -231,19 +231,11 @@ export default class Version extends BitObject {
231
231
  id() {
232
232
  const obj = this.toObject();
233
233
 
234
- // @todo: remove the entire dependencies.relativePaths from the ID (it's going to be a breaking change)
235
234
  const getDependencies = (deps: Dependencies) => {
236
235
  const clonedDependencies = deps.cloneAsString();
237
- // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
238
- return clonedDependencies.map((dependency: Dependency) => {
236
+ return clonedDependencies.map((dependency) => {
239
237
  return {
240
238
  id: dependency.id,
241
- relativePaths: dependency.relativePaths.map((relativePath) => {
242
- return {
243
- sourceRelativePath: relativePath.sourceRelativePath,
244
- destinationRelativePath: relativePath.destinationRelativePath,
245
- };
246
- }),
247
239
  };
248
240
  });
249
241
  };
@@ -22,12 +22,11 @@ import type { ObjectItem } from './object-list';
22
22
  import { ObjectList } from './object-list';
23
23
  import BitRawObject from './raw-object';
24
24
  import Ref from './ref';
25
- import type { ContentTransformer } from './repository-hooks';
26
- import { onPersist, onRead } from './repository-hooks';
27
25
  import type { InMemoryCache } from '@teambit/harmony.modules.in-memory-cache';
28
26
  import { getMaxSizeForObjects, createInMemoryCache } from '@teambit/harmony.modules.in-memory-cache';
29
27
  import { ScopeMeta, Lane, ModelComponent } from '../models';
30
28
 
29
+ type ContentTransformer = (content: Buffer) => Buffer;
31
30
  const OBJECTS_BACKUP_DIR = `${OBJECTS_DIR}.bak`;
32
31
  const TRASH_DIR = 'trash';
33
32
 
@@ -46,8 +45,8 @@ export default class Repository {
46
45
  constructor(scopePath: string, scopeJson: ScopeJson) {
47
46
  this.scopePath = scopePath;
48
47
  this.scopeJson = scopeJson;
49
- this.onRead = onRead(scopePath, scopeJson);
50
- this.onPersist = onPersist(scopePath, scopeJson);
48
+ this.onRead = (content: Buffer) => Repository.onPostObjectRead?.(content) || content;
49
+ this.onPersist = (content: Buffer) => Repository.onPreObjectPersist?.(content) || content;
51
50
  this.cache = createInMemoryCache({ maxSize: getMaxSizeForObjects() });
52
51
  }
53
52
 
@@ -90,6 +89,20 @@ export default class Repository {
90
89
 
91
90
  static onPostObjectsPersist: () => Promise<void>;
92
91
 
92
+ /**
93
+ * Hook for transforming content before objects are persisted to the filesystem.
94
+ * Note: This function cannot be async because it's used by the synchronous `loadSync` method
95
+ * which needs to maintain sync behavior for compatibility with existing code.
96
+ */
97
+ static onPreObjectPersist: (content: Buffer) => Buffer;
98
+
99
+ /**
100
+ * Hook for transforming content after objects are read from the filesystem.
101
+ * Note: This function cannot be async because it's used by the synchronous `loadSync` method
102
+ * which needs to maintain sync behavior for compatibility with existing code.
103
+ */
104
+ static onPostObjectRead: (content: Buffer) => Buffer;
105
+
93
106
  async reLoadScopeIndex() {
94
107
  this.scopeIndex = await this.loadOptionallyCreateScopeIndex();
95
108
  }
package/package.json CHANGED
@@ -1,63 +1,62 @@
1
1
  {
2
2
  "name": "@teambit/objects",
3
- "version": "0.0.0-a4451058a92c455ac20a7b4f122cb5773d6744aa",
3
+ "version": "0.0.0-a4a6e040675b16abb5e7800241270b914b402ba4",
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": "a4451058a92c455ac20a7b4f122cb5773d6744aa"
9
+ "version": "a4a6e040675b16abb5e7800241270b914b402ba4"
10
10
  },
11
11
  "dependencies": {
12
- "@pnpm/dependency-path": "1001.1.0",
13
- "@pnpm/lockfile.types": "^1002.0.0",
12
+ "@pnpm/dependency-path": "1001.1.2",
13
+ "@pnpm/lockfile.types": "^1002.0.1",
14
14
  "semver": "7.7.1",
15
15
  "lodash": "4.17.21",
16
16
  "uuid": "8.3.2",
17
17
  "async-mutex": "0.3.1",
18
18
  "p-map-series": "2.1.0",
19
19
  "tar-stream": "2.2.0",
20
- "is-relative-path": "2.0.0",
21
20
  "fs-extra": "10.0.0",
22
21
  "uid-number": "0.0.6",
23
22
  "@teambit/harmony": "0.4.7",
24
- "@teambit/cli": "0.0.1266",
23
+ "@teambit/cli": "0.0.1283",
25
24
  "@teambit/component-id": "1.2.4",
26
- "@teambit/legacy.utils": "0.0.24",
27
- "@teambit/harmony.modules.get-basic-log": "0.0.70",
25
+ "@teambit/legacy.utils": "0.0.28",
26
+ "@teambit/harmony.modules.get-basic-log": "0.0.85",
28
27
  "@teambit/bit-error": "0.0.404",
29
28
  "@teambit/component-version": "1.0.4",
30
- "@teambit/component.snap-distance": "0.0.70",
31
- "@teambit/config-store": "0.0.146",
29
+ "@teambit/component.snap-distance": "0.0.85",
30
+ "@teambit/config-store": "0.0.163",
32
31
  "@teambit/lane-id": "0.0.312",
33
- "@teambit/legacy.cli.error": "0.0.25",
34
- "@teambit/legacy.constants": "0.0.15",
35
- "@teambit/legacy.logger": "0.0.25",
36
- "@teambit/legacy.scope": "0.0.69",
37
- "@teambit/toolbox.crypto.sha1": "0.0.8",
38
- "@teambit/component.sources": "0.0.121",
32
+ "@teambit/legacy.cli.error": "0.0.30",
33
+ "@teambit/legacy.constants": "0.0.19",
34
+ "@teambit/legacy.logger": "0.0.30",
35
+ "@teambit/legacy.scope": "0.0.84",
36
+ "@teambit/toolbox.crypto.sha1": "0.0.10",
37
+ "@teambit/component.sources": "0.0.136",
39
38
  "@teambit/legacy-bit-id": "1.1.3",
40
- "@teambit/legacy-component-log": "0.0.409",
41
- "@teambit/legacy.consumer-component": "0.0.70",
42
- "@teambit/legacy.consumer-config": "0.0.69",
43
- "@teambit/legacy.extension-data": "0.0.71",
44
- "@teambit/pkg.modules.semver-helper": "0.0.14",
39
+ "@teambit/legacy-component-log": "0.0.412",
40
+ "@teambit/legacy.consumer-component": "0.0.85",
41
+ "@teambit/legacy.consumer-config": "0.0.84",
42
+ "@teambit/legacy.extension-data": "0.0.86",
43
+ "@teambit/pkg.modules.semver-helper": "0.0.17",
45
44
  "@teambit/toolbox.array.duplications-finder": "0.0.3",
46
45
  "@teambit/graph.cleargraph": "0.0.11",
47
- "@teambit/bit.get-bit-version": "0.0.7",
48
- "@teambit/semantics.doc-parser": "0.0.77",
49
- "@teambit/harmony.modules.concurrency": "0.0.16",
50
- "@teambit/toolbox.promise.map-pool": "0.0.7",
51
- "@teambit/harmony.modules.in-memory-cache": "0.0.18",
52
- "@teambit/toolbox.fs.remove-empty-dir": "0.0.6",
53
- "@teambit/graph": "0.0.0-21d55a780eebd9148263c22086e934b16e28e94f"
46
+ "@teambit/bit.get-bit-version": "0.0.10",
47
+ "@teambit/semantics.doc-parser": "0.0.92",
48
+ "@teambit/harmony.modules.concurrency": "0.0.20",
49
+ "@teambit/toolbox.promise.map-pool": "0.0.9",
50
+ "@teambit/harmony.modules.in-memory-cache": "0.0.23",
51
+ "@teambit/toolbox.fs.remove-empty-dir": "0.0.8",
52
+ "@teambit/graph": "0.0.0-80b02c8d417d98d09f46e0f065317a66025baad0"
54
53
  },
55
54
  "devDependencies": {
56
55
  "@types/semver": "7.5.8",
57
56
  "@types/lodash": "4.14.165",
58
57
  "@types/uuid": "8.3.4",
59
58
  "@types/fs-extra": "9.0.7",
60
- "@teambit/harmony.envs.core-aspect-env": "0.0.77"
59
+ "@teambit/harmony.envs.core-aspect-env": "0.0.79"
61
60
  },
62
61
  "peerDependencies": {
63
62
  "chai": "5.2.1",
@@ -1,4 +0,0 @@
1
- import type { ScopeJson } from '@teambit/legacy.scope';
2
- export type ContentTransformer = (content: Buffer) => Buffer;
3
- export declare function onPersist(scopePath: string, scopeJson: ScopeJson): ContentTransformer;
4
- export declare function onRead(scopePath: string, scopeJson: ScopeJson): ContentTransformer;
@@ -1,56 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.onPersist = onPersist;
7
- exports.onRead = onRead;
8
- function _isRelativePath() {
9
- const data = _interopRequireDefault(require("is-relative-path"));
10
- _isRelativePath = function () {
11
- return data;
12
- };
13
- return data;
14
- }
15
- function _path() {
16
- const data = _interopRequireDefault(require("path"));
17
- _path = function () {
18
- return data;
19
- };
20
- return data;
21
- }
22
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
23
- function loadHooks(scopePath, scopeJson) {
24
- const hooksPath = scopeJson.hooksPath;
25
- if (hooksPath) {
26
- const hooksFinalPath = (0, _isRelativePath().default)(hooksPath) ? _path().default.join(scopePath, hooksPath) : hooksPath;
27
- // eslint-disable-next-line global-require, import/no-dynamic-require
28
- const hooks = require(hooksFinalPath);
29
- return hooks;
30
- }
31
- return undefined;
32
- }
33
- function onPersist(scopePath, scopeJson) {
34
- const defaultFunc = content => content;
35
- const hooks = loadHooks(scopePath, scopeJson);
36
- if (hooks) {
37
- const onReadFunction = hooks.onPersist;
38
- if (onReadFunction) {
39
- return onReadFunction;
40
- }
41
- }
42
- return defaultFunc;
43
- }
44
- function onRead(scopePath, scopeJson) {
45
- const defaultFunc = content => content;
46
- const hooks = loadHooks(scopePath, scopeJson);
47
- if (hooks) {
48
- const onReadFunction = hooks.onRead;
49
- if (onReadFunction) {
50
- return onReadFunction;
51
- }
52
- }
53
- return defaultFunc;
54
- }
55
-
56
- //# sourceMappingURL=repository-hooks.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_isRelativePath","data","_interopRequireDefault","require","_path","e","__esModule","default","loadHooks","scopePath","scopeJson","hooksPath","hooksFinalPath","isRelative","path","join","hooks","undefined","onPersist","defaultFunc","content","onReadFunction","onRead"],"sources":["repository-hooks.ts"],"sourcesContent":["import isRelative from 'is-relative-path';\nimport path from 'path';\n\nimport type { ScopeJson } from '@teambit/legacy.scope';\n\nexport type ContentTransformer = (content: Buffer) => Buffer;\n\nfunction loadHooks(scopePath: string, scopeJson: ScopeJson): any | undefined {\n const hooksPath = scopeJson.hooksPath;\n if (hooksPath) {\n const hooksFinalPath = isRelative(hooksPath) ? path.join(scopePath, hooksPath) : hooksPath;\n // eslint-disable-next-line global-require, import/no-dynamic-require\n const hooks = require(hooksFinalPath);\n return hooks;\n }\n return undefined;\n}\n\nexport function onPersist(scopePath: string, scopeJson: ScopeJson): ContentTransformer {\n const defaultFunc = (content) => content;\n const hooks = loadHooks(scopePath, scopeJson);\n if (hooks) {\n const onReadFunction = hooks.onPersist;\n if (onReadFunction) {\n return onReadFunction;\n }\n }\n return defaultFunc;\n}\n\nexport function onRead(scopePath: string, scopeJson: ScopeJson): ContentTransformer {\n const defaultFunc = (content) => content;\n\n const hooks = loadHooks(scopePath, scopeJson);\n if (hooks) {\n const onReadFunction = hooks.onRead;\n if (onReadFunction) {\n return onReadFunction;\n }\n }\n return defaultFunc;\n}\n"],"mappings":";;;;;;;AAAA,SAAAA,gBAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,eAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,MAAA;EAAA,MAAAH,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAC,KAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAwB,SAAAC,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAMxB,SAASG,SAASA,CAACC,SAAiB,EAAEC,SAAoB,EAAmB;EAC3E,MAAMC,SAAS,GAAGD,SAAS,CAACC,SAAS;EACrC,IAAIA,SAAS,EAAE;IACb,MAAMC,cAAc,GAAG,IAAAC,yBAAU,EAACF,SAAS,CAAC,GAAGG,eAAI,CAACC,IAAI,CAACN,SAAS,EAAEE,SAAS,CAAC,GAAGA,SAAS;IAC1F;IACA,MAAMK,KAAK,GAAGb,OAAO,CAACS,cAAc,CAAC;IACrC,OAAOI,KAAK;EACd;EACA,OAAOC,SAAS;AAClB;AAEO,SAASC,SAASA,CAACT,SAAiB,EAAEC,SAAoB,EAAsB;EACrF,MAAMS,WAAW,GAAIC,OAAO,IAAKA,OAAO;EACxC,MAAMJ,KAAK,GAAGR,SAAS,CAACC,SAAS,EAAEC,SAAS,CAAC;EAC7C,IAAIM,KAAK,EAAE;IACT,MAAMK,cAAc,GAAGL,KAAK,CAACE,SAAS;IACtC,IAAIG,cAAc,EAAE;MAClB,OAAOA,cAAc;IACvB;EACF;EACA,OAAOF,WAAW;AACpB;AAEO,SAASG,MAAMA,CAACb,SAAiB,EAAEC,SAAoB,EAAsB;EAClF,MAAMS,WAAW,GAAIC,OAAO,IAAKA,OAAO;EAExC,MAAMJ,KAAK,GAAGR,SAAS,CAACC,SAAS,EAAEC,SAAS,CAAC;EAC7C,IAAIM,KAAK,EAAE;IACT,MAAMK,cAAc,GAAGL,KAAK,CAACM,MAAM;IACnC,IAAID,cAAc,EAAE;MAClB,OAAOA,cAAc;IACvB;EACF;EACA,OAAOF,WAAW;AACpB","ignoreList":[]}
@@ -1,42 +0,0 @@
1
- import isRelative from 'is-relative-path';
2
- import path from 'path';
3
-
4
- import type { ScopeJson } from '@teambit/legacy.scope';
5
-
6
- export type ContentTransformer = (content: Buffer) => Buffer;
7
-
8
- function loadHooks(scopePath: string, scopeJson: ScopeJson): any | undefined {
9
- const hooksPath = scopeJson.hooksPath;
10
- if (hooksPath) {
11
- const hooksFinalPath = isRelative(hooksPath) ? path.join(scopePath, hooksPath) : hooksPath;
12
- // eslint-disable-next-line global-require, import/no-dynamic-require
13
- const hooks = require(hooksFinalPath);
14
- return hooks;
15
- }
16
- return undefined;
17
- }
18
-
19
- export function onPersist(scopePath: string, scopeJson: ScopeJson): ContentTransformer {
20
- const defaultFunc = (content) => content;
21
- const hooks = loadHooks(scopePath, scopeJson);
22
- if (hooks) {
23
- const onReadFunction = hooks.onPersist;
24
- if (onReadFunction) {
25
- return onReadFunction;
26
- }
27
- }
28
- return defaultFunc;
29
- }
30
-
31
- export function onRead(scopePath: string, scopeJson: ScopeJson): ContentTransformer {
32
- const defaultFunc = (content) => content;
33
-
34
- const hooks = loadHooks(scopePath, scopeJson);
35
- if (hooks) {
36
- const onReadFunction = hooks.onRead;
37
- if (onReadFunction) {
38
- return onReadFunction;
39
- }
40
- }
41
- return defaultFunc;
42
- }