@teambit/objects 0.0.727 → 0.0.729
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/models/model-component.d.ts +7 -9
- package/dist/models/model-component.js +2 -11
- package/dist/models/model-component.js.map +1 -1
- package/dist/models/scopeMeta.d.ts +1 -1
- package/dist/models/scopeMeta.js +1 -3
- package/dist/models/scopeMeta.js.map +1 -1
- package/dist/models/version.d.ts +0 -1
- package/dist/models/version.js +0 -7
- package/dist/models/version.js.map +1 -1
- package/dist/objects/object.js +0 -2
- package/dist/objects/object.js.map +1 -1
- package/dist/objects/raw-object.d.ts +2 -3
- package/dist/objects/raw-object.js +0 -4
- package/dist/objects/raw-object.js.map +1 -1
- package/dist/objects/repository.d.ts +1 -1
- package/dist/objects/repository.js +1 -2
- package/dist/objects/repository.js.map +1 -1
- package/dist/objects/scope-index.spec.js +1 -12
- package/dist/objects/scope-index.spec.js.map +1 -1
- package/models/model-component.ts +23 -20
- package/models/scopeMeta.ts +2 -4
- package/models/version.ts +1 -11
- package/objects/object.ts +1 -2
- package/objects/raw-object.ts +8 -13
- package/objects/repository.ts +2 -3
- package/objects/scope-index.spec.ts +1 -9
- package/package.json +27 -27
- /package/dist/{preview-1793039364231.js → preview-1793061341922.js} +0 -0
package/dist/models/scopeMeta.js
CHANGED
|
@@ -47,14 +47,12 @@ class ScopeMeta extends _objects().BitObject {
|
|
|
47
47
|
return Buffer.from(this.toString(pretty));
|
|
48
48
|
}
|
|
49
49
|
static fromScopeName(name) {
|
|
50
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
51
50
|
return ScopeMeta.fromObject({
|
|
52
51
|
name
|
|
53
52
|
}).hash();
|
|
54
53
|
}
|
|
55
54
|
static parse(propsStr) {
|
|
56
|
-
|
|
57
|
-
return this.fromObject(JSON.parse(propsStr));
|
|
55
|
+
return this.fromObject(JSON.parse(propsStr.toString()));
|
|
58
56
|
}
|
|
59
57
|
static fromObject(props) {
|
|
60
58
|
return new ScopeMeta(props);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_legacy","data","require","_objects","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","ScopeMeta","BitObject","constructor","props","license","name","toObject","toString","pretty","args","getStringifyArgs","JSON","stringify","id","toBuffer","Buffer","from","fromScopeName","fromObject","hash","parse","propsStr","exports","default"],"sources":["scopeMeta.ts"],"sourcesContent":["import { getStringifyArgs } from '@teambit/legacy.utils';\nimport { BitObject } from '../objects';\nimport type Ref from '../objects/ref';\n\ntype ScopeMetaProps = {\n name: string;\n license
|
|
1
|
+
{"version":3,"names":["_legacy","data","require","_objects","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","ScopeMeta","BitObject","constructor","props","license","name","toObject","toString","pretty","args","getStringifyArgs","JSON","stringify","id","toBuffer","Buffer","from","fromScopeName","fromObject","hash","parse","propsStr","exports","default"],"sources":["scopeMeta.ts"],"sourcesContent":["import { getStringifyArgs } from '@teambit/legacy.utils';\nimport { BitObject } from '../objects';\nimport type Ref from '../objects/ref';\n\ntype ScopeMetaProps = {\n name: string;\n license?: string | null;\n};\n\n// TODO: fix parse\nexport default class ScopeMeta extends BitObject {\n license: string | null | undefined;\n name: string;\n\n constructor(props: ScopeMetaProps) {\n super();\n this.license = props.license;\n this.name = props.name;\n }\n\n toObject(): Record<string, any> {\n return {\n license: this.license,\n name: this.name,\n };\n }\n\n toString(pretty: boolean): string {\n const args = getStringifyArgs(pretty);\n return JSON.stringify(this.toObject(), ...args);\n }\n\n id(): string {\n return this.name;\n }\n\n toBuffer(pretty): Buffer {\n return Buffer.from(this.toString(pretty));\n }\n\n static fromScopeName(name: string): Ref {\n return ScopeMeta.fromObject({ name }).hash();\n }\n\n static parse(propsStr: string | Buffer): ScopeMeta {\n return this.fromObject(JSON.parse(propsStr.toString()));\n }\n\n static fromObject(props: ScopeMetaProps): ScopeMeta {\n return new ScopeMeta(props);\n }\n\n static from(props: ScopeMetaProps): ScopeMeta {\n return ScopeMeta.fromObject(props);\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,SAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,QAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAuC,SAAAG,gBAAAC,CAAA,EAAAC,CAAA,EAAAC,CAAA,YAAAD,CAAA,GAAAE,cAAA,CAAAF,CAAA,MAAAD,CAAA,GAAAI,MAAA,CAAAC,cAAA,CAAAL,CAAA,EAAAC,CAAA,IAAAK,KAAA,EAAAJ,CAAA,EAAAK,UAAA,MAAAC,YAAA,MAAAC,QAAA,UAAAT,CAAA,CAAAC,CAAA,IAAAC,CAAA,EAAAF,CAAA;AAAA,SAAAG,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,MAAAF,CAAA,GAAAE,CAAA,CAAAU,MAAA,CAAAC,WAAA,kBAAAb,CAAA,QAAAU,CAAA,GAAAV,CAAA,CAAAc,IAAA,CAAAZ,CAAA,EAAAD,CAAA,uCAAAS,CAAA,SAAAA,CAAA,YAAAK,SAAA,yEAAAd,CAAA,GAAAe,MAAA,GAAAC,MAAA,EAAAf,CAAA;AAQvC;AACe,MAAMgB,SAAS,SAASC,oBAAS,CAAC;EAI/CC,WAAWA,CAACC,KAAqB,EAAE;IACjC,KAAK,CAAC,CAAC;IAACtB,eAAA;IAAAA,eAAA;IACR,IAAI,CAACuB,OAAO,GAAGD,KAAK,CAACC,OAAO;IAC5B,IAAI,CAACC,IAAI,GAAGF,KAAK,CAACE,IAAI;EACxB;EAEAC,QAAQA,CAAA,EAAwB;IAC9B,OAAO;MACLF,OAAO,EAAE,IAAI,CAACA,OAAO;MACrBC,IAAI,EAAE,IAAI,CAACA;IACb,CAAC;EACH;EAEAE,QAAQA,CAACC,MAAe,EAAU;IAChC,MAAMC,IAAI,GAAG,IAAAC,0BAAgB,EAACF,MAAM,CAAC;IACrC,OAAOG,IAAI,CAACC,SAAS,CAAC,IAAI,CAACN,QAAQ,CAAC,CAAC,EAAE,GAAGG,IAAI,CAAC;EACjD;EAEAI,EAAEA,CAAA,EAAW;IACX,OAAO,IAAI,CAACR,IAAI;EAClB;EAEAS,QAAQA,CAACN,MAAM,EAAU;IACvB,OAAOO,MAAM,CAACC,IAAI,CAAC,IAAI,CAACT,QAAQ,CAACC,MAAM,CAAC,CAAC;EAC3C;EAEA,OAAOS,aAAaA,CAACZ,IAAY,EAAO;IACtC,OAAOL,SAAS,CAACkB,UAAU,CAAC;MAAEb;IAAK,CAAC,CAAC,CAACc,IAAI,CAAC,CAAC;EAC9C;EAEA,OAAOC,KAAKA,CAACC,QAAyB,EAAa;IACjD,OAAO,IAAI,CAACH,UAAU,CAACP,IAAI,CAACS,KAAK,CAACC,QAAQ,CAACd,QAAQ,CAAC,CAAC,CAAC,CAAC;EACzD;EAEA,OAAOW,UAAUA,CAACf,KAAqB,EAAa;IAClD,OAAO,IAAIH,SAAS,CAACG,KAAK,CAAC;EAC7B;EAEA,OAAOa,IAAIA,CAACb,KAAqB,EAAa;IAC5C,OAAOH,SAAS,CAACkB,UAAU,CAACf,KAAK,CAAC;EACpC;AACF;AAACmB,OAAA,CAAAC,OAAA,GAAAvB,SAAA","ignoreList":[]}
|
package/dist/models/version.d.ts
CHANGED
|
@@ -293,7 +293,6 @@ export default class Version extends BitObject {
|
|
|
293
293
|
get isLegacy(): boolean;
|
|
294
294
|
get originLaneId(): LaneId | undefined;
|
|
295
295
|
get originId(): ComponentID | undefined;
|
|
296
|
-
setDist(dist: Source | undefined): void;
|
|
297
296
|
hasParent(ref: Ref): Ref | undefined;
|
|
298
297
|
addParent(ref: Ref): void;
|
|
299
298
|
setSquashed(squashData: SquashData, log: Log, replaceMessage?: string): void;
|
package/dist/models/version.js
CHANGED
|
@@ -859,13 +859,6 @@ class Version extends _objects().BitObject {
|
|
|
859
859
|
name: this.origin.id.name
|
|
860
860
|
}) : undefined;
|
|
861
861
|
}
|
|
862
|
-
setDist(dist) {
|
|
863
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
864
|
-
this.dist = dist ? {
|
|
865
|
-
file: dist.hash(),
|
|
866
|
-
name: _legacy().DEFAULT_BUNDLE_FILENAME
|
|
867
|
-
} : null;
|
|
868
|
-
}
|
|
869
862
|
hasParent(ref) {
|
|
870
863
|
return this.parents.find(p => p.toString() === ref.toString());
|
|
871
864
|
}
|
|
@@ -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","flattenedIdsCache","Map","flattenedIdStrsCache","MAX_CACHED_FLATTENED_IDS","cachedFlattenedIds","flattenedEdgesCache","WeakMap","MAX_CACHED_FLATTENED_EDGES","cachedFlattenedEdges","countCachedFlattenedId","clear","getFlattenedId","dep","id","get","ComponentID","fromString","set","box","fromObject","byName","scope","byVersion","name","version","getFlattenedEdge","source","target","type","byTarget","byType","edge","warnedFlattenedDependenciesGetter","Version","BitObject","constructor","props","mainFile","files","log","dependencies","Dependencies","devDependencies","peerDependencies","docs","flattenedDependencies","flattenedDependenciesRef","flattenedEdges","flattenedEdgesRef","dependenciesGraphRef","packageDependencies","devPackageDependencies","peerPackageDependencies","bindingPrefix","schema","overrides","packageJsonChangedProps","_hash","hash","parents","squashed","unrelated","extensions","ExtensionDataList","fromArray","buildStatus","componentId","bitVersion","modified","origin","hidden","batchId","validateVersion","getFlattenedEdges","repo","getWithBackwardCompatibility","throws","flattenedEdgesSource","load","flattenedEdgesJson","JSON","parse","contents","toString","map","item","Array","isArray","depEdgeFromArray","depEdgeFromObject","_flattenedEdges","loadDependenciesGraph","dependenciesGraphSource","DependenciesGraph","deserialize","nonEmptyFields","forEach","field","VersionInvalid","getDependencies","deps","clonedDependencies","cloneAsString","dependency","getExtensions","sortedConfigOnly","sortById","toConfigArray","filterFunction","val","key","isEmpty","stringify","pickBy","filesToObject","logToObject","extensionDependencies","calculateHash","Ref","makeHash","Error","extensionsBitIds","Dependency","lastModified","length","date","logger","warn","stack","getLoadedFlattenedDependencies","_flattenedDependencies","ComponentIdList","flattenedDependencyIds","undefined","getFlattenedDependenciesIfLoaded","loadFlattenedDependencies","objects","setFlattenedDependenciesFromSource","loadFlattenedDependenciesSync","getFromMemory","loadSync","ids","moveFlattenedDependenciesToSource","Source","from","Buffer","getAllDependencies","depsIdsGroupedByType","getAllIds","getAllDependenciesCloned","getClone","getAllDependenciesIds","allDependencies","values","flat","getDependenciesIdsExcludeExtensions","refs","refsWithOptions","includeParents","includeArtifacts","allRefs","extractRefsFromFiles","file","push","artifacts","getRefsFromExtensions","refsWithoutParents","filter","ref","collectManyObjects","loadManyRaw","depEdgeToObject","depEdge","serialize","depEdgeObj","depEdgeToArray","depEdgeArr","sourceStr","targetStr","flattenedEdgeToSource","flattenedEdgesObj","f","flattenedEdgesBuffer","dependenciesGraphToSource","dependenciesGraph","dependenciesGraphBuffer","relativePath","test","message","username","email","toObject","cloneAsObject","toModelObjects","p","previousParents","laneId","head","validateBeforePersisting","versionStr","trace","validate","toBuffer","pretty","obj","args","getStringifyArgs","str","validateBeforePersist","contentParsed","flattenedDevDependencies","_getDependencies","getRelativePath","importSpecifiers","importSpecifier","BitIdCompIdError","relativePaths","parseFile","_getExtensions","exts","newExts","extension","extensionId","entry","ExtensionDataEntry","config","fromModelObject","LaneId","versionProps","fromComponent","component","pathNormalizeToLinux","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\n// the same flattened dependencies repeat across versions. in a typical scope, hundreds of thousands of entries are a\n// few thousand unique ids. ids are immutable, so the versions share them instead of each holding its own copies.\n// an id object is looked up by its parts (scope, then name, then version). building a key string for each entry instead\n// is slower than creating a new id.\nconst flattenedIdsCache = new Map<string, Map<string, Map<string, ComponentID>>>();\nconst flattenedIdStrsCache = new Map<string, ComponentID>();\nconst MAX_CACHED_FLATTENED_IDS = 100_000;\nlet cachedFlattenedIds = 0;\nlet flattenedEdgesCache = new WeakMap<ComponentID, Map<ComponentID, Map<DepEdgeType, DepEdge>>>();\nconst MAX_CACHED_FLATTENED_EDGES = 100_000;\nlet cachedFlattenedEdges = 0;\n\nfunction countCachedFlattenedId() {\n if (cachedFlattenedIds >= MAX_CACHED_FLATTENED_IDS) {\n flattenedIdsCache.clear();\n flattenedIdStrsCache.clear();\n cachedFlattenedIds = 0;\n flattenedEdgesCache = new WeakMap();\n cachedFlattenedEdges = 0;\n }\n cachedFlattenedIds += 1;\n}\n\nfunction getFlattenedId(dep: string | Record<string, any>): ComponentID {\n if (typeof dep === 'string') {\n let id = flattenedIdStrsCache.get(dep);\n if (!id) {\n countCachedFlattenedId();\n id = ComponentID.fromString(dep);\n flattenedIdStrsCache.set(dep, id);\n }\n return id;\n }\n if (dep.box) return ComponentID.fromObject(dep as any); // legacy ids, rare. not worth another level.\n let byName = flattenedIdsCache.get(dep.scope);\n if (!byName) {\n byName = new Map();\n flattenedIdsCache.set(dep.scope, byName);\n }\n let byVersion = byName.get(dep.name);\n if (!byVersion) {\n byVersion = new Map();\n byName.set(dep.name, byVersion);\n }\n let id = byVersion.get(dep.version);\n if (!id) {\n countCachedFlattenedId();\n id = ComponentID.fromObject(dep as any);\n byVersion.set(dep.version, id);\n }\n return id;\n}\n\nfunction getFlattenedEdge(source: ComponentID, target: ComponentID, type: DepEdgeType): DepEdge {\n if (cachedFlattenedEdges >= MAX_CACHED_FLATTENED_EDGES) {\n flattenedEdgesCache = new WeakMap();\n cachedFlattenedEdges = 0;\n }\n let byTarget = flattenedEdgesCache.get(source);\n if (!byTarget) {\n byTarget = new Map();\n flattenedEdgesCache.set(source, byTarget);\n }\n let byType = byTarget.get(target);\n if (!byType) {\n byType = new Map();\n byTarget.set(target, byType);\n }\n let edge = byType.get(type);\n if (!edge) {\n cachedFlattenedEdges += 1;\n edge = { source, target, type };\n byType.set(type, edge);\n }\n return edge;\n}\n\n// the deprecated `Version.flattenedDependencies` getter warns only once per process.\nlet warnedFlattenedDependenciesGetter = false;\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\n// anything objects can be loaded from by their ref: the scope repository, or the objects received from a remote.\nexport type ObjectsLoader = { load(ref: Ref, throws?: boolean): Promise<BitObject | undefined> };\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 flattenedDependenciesRef?: Ref;\n _flattenedEdges?: DepEdge[];\n flattenedEdges?: DepEdge[];\n flattenedEdgesRef?: Ref;\n dependenciesGraphRef?: Ref;\n packageDependencies?: { [key: string]: string };\n devPackageDependencies?: { [key: string]: string };\n peerPackageDependencies?: { [key: string]: string };\n bindingPrefix: string;\n schema?: string;\n overrides: ComponentOverridesData;\n packageJsonChangedProps?: Record<string, any>;\n hash?: string;\n parents?: Ref[];\n squashed?: SquashData;\n unrelated?: ExternalHead;\n extensions?: ExtensionDataList;\n buildStatus?: BuildStatus;\n componentId?: ComponentID;\n bitVersion?: string;\n modified?: Log[];\n origin?: VersionOrigin;\n hidden?: boolean;\n batchId?: string;\n};\n\n/**\n * Represent a version model in the scope\n */\nexport default class Version extends BitObject {\n mainFile: PathLinux;\n files: Array<SourceFileModel>;\n log: Log;\n docs: Doclet[] | undefined;\n dependencies: Dependencies;\n devDependencies: Dependencies;\n peerDependencies: Dependencies;\n private _flattenedDependencies?: ComponentIdList;\n // the flattened dependencies of a parsed Version. the list is built on first access, most commands never read it.\n private flattenedDependencyIds?: ComponentID[];\n /**\n * ref to a Source object with the flattened dependencies, as a JSON array of id strings. when it's set, the Version\n * itself has no flattened dependencies, and they have to be loaded with `loadFlattenedDependencies()`.\n */\n flattenedDependenciesRef?: Ref;\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()`, which supports both formats.\n * this holds the edges of old Versions, which were saved inside the Version, before `flattenedEdgesRef` was\n * introduced. Versions that have `flattenedEdgesRef` don't save the edges here (see `toObject()`).\n */\n private flattenedEdges: DepEdge[];\n packageDependencies: { [key: string]: string };\n devPackageDependencies: { [key: string]: string };\n peerPackageDependencies: { [key: string]: string };\n bindingPrefix: string;\n schema: string | undefined;\n overrides: ComponentOverridesData;\n packageJsonChangedProps: Record<string, any>;\n _hash: string; // reason for the underscore prefix is that we already have hash as a method\n parents: Ref[];\n squashed?: SquashData; // when a component is squashed during lane-merge\n unrelated?: ExternalHead; // when a component from a lane was created with the same name/scope as main, this ref points to the component of the lane\n extensions: ExtensionDataList;\n buildStatus?: BuildStatus;\n componentId?: ComponentID; // can help debugging errors when validating Version object\n bitVersion?: string;\n modified: Log[] = []; // currently mutation could happen as a result of either \"squash\" or \"sign\".\n // where this version was made: the component id it was snapped as, and the lane it was snapped on\n // (absent on main). set on every snap and tag, see SnappingMain.addSource. it is read as data, not\n // only as a debugging aid: Scope.isPartOfLaneHistoryOrMain tells a snap of a given lane from one of\n // main by it, and ModelComponent.filterLeanLaneRefs keeps the refs a lean lane scope owns by it.\n origin?: VersionOrigin;\n hidden?: boolean; // whether the version is hidden from commands such as \"bit log\", \"bit blame\". (needed for un-meaningful snaps, such as merged-lane snap prior to the tag)\n batchId?: string; // a shared UUID for all versions created in the same snap/tag operation\n\n constructor(props: VersionProps) {\n super();\n this.mainFile = props.mainFile;\n this.files = props.files;\n this.log = props.log;\n this.dependencies = new Dependencies(props.dependencies);\n this.devDependencies = new Dependencies(props.devDependencies);\n this.peerDependencies = new Dependencies(props.peerDependencies);\n this.docs = props.docs;\n if (props.flattenedDependencies) this.flattenedDependencies = props.flattenedDependencies;\n this.flattenedDependenciesRef = props.flattenedDependenciesRef;\n this.flattenedEdges = props.flattenedEdges || [];\n this.flattenedEdgesRef = props.flattenedEdgesRef;\n this.dependenciesGraphRef = props.dependenciesGraphRef;\n this.packageDependencies = props.packageDependencies || {};\n this.devPackageDependencies = props.devPackageDependencies || {};\n this.peerPackageDependencies = props.peerPackageDependencies || {};\n this.bindingPrefix = props.bindingPrefix;\n this.schema = props.schema;\n this.overrides = props.overrides || {};\n this.packageJsonChangedProps = props.packageJsonChangedProps || {};\n // @ts-ignore yes, props.hash can be undefined here, but it gets populated as soon as Version is created\n this._hash = props.hash;\n this.parents = props.parents || [];\n this.squashed = props.squashed;\n this.unrelated = props.unrelated;\n this.extensions = props.extensions || ExtensionDataList.fromArray([]);\n this.buildStatus = props.buildStatus;\n this.componentId = props.componentId;\n this.bitVersion = props.bitVersion;\n this.modified = props.modified || [];\n this.origin = props.origin;\n this.hidden = props.hidden;\n this.batchId = props.batchId;\n this.validateVersion();\n }\n\n /**\n * use only this method to get the flattened edges (graph of flattened dependencies).\n * it's backward compatible with the previous way this was stored on the Version object itself.\n */\n async getFlattenedEdges(repo: Repository): Promise<DepEdge[]> {\n const getWithBackwardCompatibility = async (): Promise<DepEdge[]> => {\n if (this.flattenedEdgesRef) {\n // it's possible that there is a ref but the file is not there.\n // it can happen if the remote-scope uses an older version that doesn't know to collect this ref.\n // in which case, the client will get the Version object with the ref prop, but not the Source object.\n const throws = false;\n const flattenedEdgesSource = (await repo.load(this.flattenedEdgesRef, throws)) as Source | undefined;\n if (flattenedEdgesSource) {\n const flattenedEdgesJson = JSON.parse(flattenedEdgesSource.contents.toString());\n return flattenedEdgesJson.map((item) =>\n Array.isArray(item) ? Version.depEdgeFromArray(item) : Version.depEdgeFromObject(item)\n );\n }\n }\n return this.flattenedEdges || [];\n };\n\n if (!this._flattenedEdges) {\n this._flattenedEdges = await getWithBackwardCompatibility();\n }\n\n return this._flattenedEdges;\n }\n\n async loadDependenciesGraph(repo: Repository): Promise<DependenciesGraph | undefined> {\n if (!this._dependenciesGraph) {\n if (this.dependenciesGraphRef) {\n // it's possible that there is a ref but the file is not there.\n // it can happen if the remote-scope uses an older version that doesn't know to collect this ref.\n // in which case, the client will get the Version object with the ref prop, but not the Source object.\n const throws = false;\n const dependenciesGraphSource = (await repo.load(this.dependenciesGraphRef, throws)) as Source | undefined;\n if (dependenciesGraphSource) {\n this._dependenciesGraph = DependenciesGraph.deserialize(dependenciesGraphSource.contents.toString());\n }\n }\n }\n return this._dependenciesGraph;\n }\n\n validateVersion() {\n const nonEmptyFields = ['mainFile', 'files'];\n nonEmptyFields.forEach((field) => {\n if (!this[field]) {\n throw new VersionInvalid(`failed creating a version object, the field \"${field}\" can't be empty`);\n }\n });\n }\n\n id() {\n const getDependencies = (deps: Dependencies) => {\n const clonedDependencies = deps.cloneAsString();\n return clonedDependencies.map((dependency) => {\n return {\n id: dependency.id,\n };\n });\n };\n\n const getExtensions = (extensions: ExtensionDataList) => {\n const sortedConfigOnly = extensions.sortById().toConfigArray();\n return sortedConfigOnly;\n };\n\n const filterFunction = (val, key) => {\n if (\n key === 'devDependencies' ||\n key === 'extensionDependencies' ||\n key === 'devPackageDependencies' ||\n key === 'peerPackageDependencies' ||\n key === 'overrides' ||\n key === 'extensions'\n ) {\n return !isEmpty(val);\n }\n return !!val;\n };\n\n return JSON.stringify(\n pickBy(\n {\n // only what the hash needs, not `toObject()`, which serializes the whole version (e.g. a deep clone of all extensions)\n mainFile: this.mainFile,\n files: this.filesToObject(),\n log: this.logToObject(),\n dependencies: getDependencies(this.dependencies),\n devDependencies: getDependencies(this.devDependencies),\n extensionDependencies: getDependencies(this.extensionDependencies),\n packageDependencies: this.packageDependencies,\n devPackageDependencies: this.devPackageDependencies,\n peerPackageDependencies: this.peerPackageDependencies,\n bindingPrefix: this.bindingPrefix,\n overrides: this.overrides,\n extensions: getExtensions(this.extensions),\n },\n filterFunction\n )\n );\n }\n\n calculateHash(): Ref {\n return new Ref(BitObject.makeHash(this.id()));\n }\n\n hash(): Ref {\n if (!this._hash) {\n throw new Error('hash is missing from a Version object');\n }\n return new Ref(this._hash);\n }\n\n get extensionDependencies() {\n return new Dependencies(this.extensions.extensionsBitIds.map((id) => new Dependency(id, [])));\n }\n\n lastModified(): string {\n if (!this.modified || !this.modified.length) return this.log.date;\n return this.modified[this.modified.length - 1].date;\n }\n\n /**\n * @deprecated use `await version.loadFlattenedDependencies(repo)`, which supports both formats. this getter throws\n * when the flattened dependencies are stored in a separate object (`flattenedDependenciesRef`) and weren't loaded.\n * bit doesn't write this format yet, so until it does (around Oct 2027), the getter keeps working.\n */\n get flattenedDependencies(): ComponentIdList {\n if (!warnedFlattenedDependenciesGetter) {\n warnedFlattenedDependenciesGetter = true;\n logger.warn(\n `Version.flattenedDependencies is deprecated and will throw for newer versions, use \"await version.loadFlattenedDependencies(repo)\" instead`,\n new Error().stack\n );\n }\n return this.getLoadedFlattenedDependencies();\n }\n\n /**\n * the flattened dependencies, when they're stored in the Version itself or were loaded already. throws otherwise,\n * when they're stored in a separate object (`flattenedDependenciesRef`), use `loadFlattenedDependencies()`.\n */\n getLoadedFlattenedDependencies(): ComponentIdList {\n if (!this._flattenedDependencies) {\n if (this.flattenedDependenciesRef) {\n throw new Error(\n `the flattened dependencies of version ${this._hash} are stored in the object ${this.flattenedDependenciesRef.toString()}, load them with loadFlattenedDependencies()`\n );\n }\n this._flattenedDependencies = ComponentIdList.fromArray(this.flattenedDependencyIds || []);\n this.flattenedDependencyIds = undefined;\n }\n return this._flattenedDependencies;\n }\n\n /**\n * a new list is saved in the Version itself, so a ref to a separate object, if there was one, is dropped.\n */\n set flattenedDependencies(flattenedDependencies: ComponentIdList) {\n this._flattenedDependencies = flattenedDependencies;\n this.flattenedDependencyIds = undefined;\n this.flattenedDependenciesRef = undefined;\n }\n\n /**\n * the flattened dependencies, if they're available without loading a separate object. otherwise, undefined.\n */\n getFlattenedDependenciesIfLoaded(): ComponentIdList | undefined {\n if (this.flattenedDependenciesRef && !this._flattenedDependencies) return undefined;\n return this.getLoadedFlattenedDependencies();\n }\n\n /**\n * use this to get the flattened dependencies. it supports both formats: stored in the Version itself, or stored in\n * a separate Source object (`flattenedDependenciesRef`). `objects` is usually the scope repository, but can be any\n * container of the objects, such as the objects received from a remote.\n */\n async loadFlattenedDependencies(objects: ObjectsLoader): Promise<ComponentIdList> {\n if (this._flattenedDependencies || !this.flattenedDependenciesRef) return this.getLoadedFlattenedDependencies();\n const source = (await objects.load(this.flattenedDependenciesRef, false)) as Source | undefined;\n return this.setFlattenedDependenciesFromSource(source);\n }\n\n /**\n * same as `loadFlattenedDependencies()`, for code that can't be async.\n */\n loadFlattenedDependenciesSync(repo: Repository): ComponentIdList {\n if (this._flattenedDependencies || !this.flattenedDependenciesRef) return this.getLoadedFlattenedDependencies();\n // objects added during tag, or fetched from a remote without being imported, are only in memory, not on the disk.\n const source = (repo.getFromMemory(this.flattenedDependenciesRef) ||\n repo.loadSync(this.flattenedDependenciesRef, false)) as Source | undefined;\n return this.setFlattenedDependenciesFromSource(source);\n }\n\n private setFlattenedDependenciesFromSource(source?: Source): ComponentIdList {\n if (!source) {\n // unlike the flattened edges, there is no fallback here. an empty list would be wrong, not just less efficient.\n throw new Error(\n `unable to find the object ${this.flattenedDependenciesRef?.toString()} with the flattened dependencies of version ${this._hash}`\n );\n }\n const ids: string[] = JSON.parse(source.contents.toString());\n // not by the setter, which would drop the ref.\n this._flattenedDependencies = ComponentIdList.fromArray(ids.map(getFlattenedId));\n this.flattenedDependencyIds = undefined;\n return this._flattenedDependencies;\n }\n\n /**\n * moves the flattened dependencies out of this Version into a new Source object, which the caller has to persist.\n */\n moveFlattenedDependenciesToSource(): Source | undefined {\n const flattenedDependencies = this.getLoadedFlattenedDependencies();\n if (!flattenedDependencies.length) return undefined;\n const source = Source.from(Buffer.from(JSON.stringify(flattenedDependencies.map((id) => id.toString()))));\n this.flattenedDependenciesRef = source.hash();\n return source;\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 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 if (this.flattenedDependenciesRef) allRefs.push(this.flattenedDependenciesRef);\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 getFlattenedEdge(getFlattenedId(depEdgeObj.source), getFlattenedId(depEdgeObj.target), depEdgeObj.type);\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 getFlattenedEdge(getFlattenedId(sourceStr), getFlattenedId(targetStr), type as DepEdgeType);\n }\n static flattenedEdgeToSource(flattenedEdges?: DepEdge[]): Source | undefined {\n if (!flattenedEdges) return undefined;\n // const flattenedEdgesObj = flattenedEdges.map((f) => Version.depEdgeToArray(f));\n const flattenedEdgesObj = flattenedEdges.map((f) => Version.depEdgeToObject(f));\n const flattenedEdgesBuffer = Buffer.from(JSON.stringify(flattenedEdgesObj));\n return Source.from(flattenedEdgesBuffer);\n }\n static dependenciesGraphToSource(dependenciesGraph?: DependenciesGraph): Source | undefined {\n if (!dependenciesGraph) return undefined;\n const dependenciesGraphBuffer = Buffer.from(dependenciesGraph.serialize());\n return Source.from(dependenciesGraphBuffer);\n }\n\n private filesToObject() {\n return this.files?.map((file) => ({\n file: file.file.toString(),\n relativePath: file.relativePath,\n name: file.name,\n test: file.test,\n }));\n }\n\n private logToObject() {\n return {\n message: this.log.message,\n date: this.log.date,\n username: this.log.username,\n email: this.log.email,\n };\n }\n\n toObject() {\n return pickBy(\n {\n files: this.filesToObject(),\n mainFile: this.mainFile,\n bindingPrefix: this.bindingPrefix,\n schema: this.schema,\n log: this.logToObject(),\n docs: this.docs,\n dependencies: this.dependencies.cloneAsObject(),\n devDependencies: this.devDependencies.cloneAsObject(),\n flattenedDependencies: this.flattenedDependenciesRef\n ? undefined\n : this.getLoadedFlattenedDependencies().map((dep) => dep.toObject()),\n flattenedDependenciesRef: this.flattenedDependenciesRef?.toString(),\n flattenedEdges: this.flattenedEdgesRef ? undefined : this.flattenedEdges.map((f) => Version.depEdgeToObject(f)),\n flattenedEdgesRef: this.flattenedEdgesRef?.toString(),\n dependenciesGraphRef: this.dependenciesGraphRef?.toString(),\n extensions: this.extensions.toModelObjects(),\n packageDependencies: this.packageDependencies,\n devPackageDependencies: this.devPackageDependencies,\n peerPackageDependencies: this.peerPackageDependencies,\n overrides: this.overrides,\n buildStatus: this.buildStatus,\n packageJsonChangedProps: this.packageJsonChangedProps,\n parents: this.parents.map((p) => p.toString()),\n squashed: this.squashed\n ? {\n previousParents: this.squashed.previousParents.map((p) => p.toString()),\n laneId: this.squashed.laneId.toObject(),\n }\n : undefined,\n unrelated: this.unrelated\n ? { head: this.unrelated.head.toString(), laneId: this.unrelated.laneId.toObject() }\n : undefined,\n bitVersion: this.bitVersion,\n modified: this.modified,\n origin: this.origin,\n hidden: this.hidden,\n batchId: this.batchId,\n },\n (val) => !!val\n );\n }\n\n validateBeforePersisting(versionStr: string): void {\n logger.trace(`validating version object, hash: ${this.hash().hash}`);\n const version = Version.parse(versionStr, this._hash);\n version.validate();\n }\n\n toBuffer(pretty: boolean): Buffer {\n const obj = this.toObject();\n const args = getStringifyArgs(pretty);\n const str = JSON.stringify(obj, ...args);\n if (this.validateBeforePersist) this.validateBeforePersisting(str);\n return Buffer.from(str);\n }\n /**\n * used by the super class BitObject\n */\n static parse(contents: string, hash: string): Version {\n const contentParsed = JSON.parse(contents);\n const {\n mainFile,\n files,\n bindingPrefix,\n schema,\n log,\n docs,\n dependencies,\n devDependencies,\n flattenedDependencies,\n flattenedDevDependencies,\n flattenedDependenciesRef,\n flattenedEdges,\n flattenedEdgesRef,\n dependenciesGraphRef,\n devPackageDependencies,\n peerPackageDependencies,\n packageDependencies,\n overrides,\n packageJsonChangedProps,\n extensions,\n buildStatus,\n parents,\n squashed,\n unrelated,\n bitVersion,\n modified,\n origin,\n hidden,\n batchId,\n } = contentParsed;\n\n const _getDependencies = (deps = []): Dependency[] => {\n const getRelativePath = (relativePath) => {\n if (relativePath.importSpecifiers) {\n // backward compatibility. Before the massive validation was added, an item of\n // relativePath.importSpecifiers array could be missing the mainFile property, which is\n // an invalid ImportSpecifier. (instead the mainFile it had another importSpecifiers object).\n relativePath.importSpecifiers = relativePath.importSpecifiers.filter(\n (importSpecifier) => importSpecifier.mainFile\n );\n if (!relativePath.importSpecifiers.length) delete relativePath.importSpecifiers;\n }\n\n return relativePath;\n };\n\n return deps.map((dependency: any) => {\n if (!dependency.id.scope) {\n throw new BitIdCompIdError(dependency.id.name);\n }\n return new Dependency(\n ComponentID.fromObject(dependency.id),\n Array.isArray(dependency.relativePaths)\n ? dependency.relativePaths.map(getRelativePath)\n : dependency.relativePaths\n );\n });\n };\n\n 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 const version = 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 // 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 flattenedDependenciesRef: flattenedDependenciesRef ? Ref.from(flattenedDependenciesRef) : undefined,\n devPackageDependencies,\n peerPackageDependencies,\n packageDependencies,\n overrides,\n packageJsonChangedProps,\n hash,\n parents: parents ? parents.map((p) => Ref.from(p)) : [],\n squashed: squashed\n ? { previousParents: squashed.previousParents.map((r) => Ref.from(r)), laneId: new LaneId(squashed.laneId) }\n : undefined,\n unrelated: unrelated ? { head: Ref.from(unrelated.head), laneId: new LaneId(unrelated.laneId) } : undefined,\n extensions: _getExtensions(extensions),\n buildStatus,\n bitVersion,\n modified,\n origin,\n hidden,\n batchId,\n });\n // until v15, there were both flattenedDependencies and flattenedDevDependencies. since then, they're grouped into\n // flattenedDependencies. an entry is either an id string or an id object.\n version.flattenedDependencyIds = [...(flattenedDependencies || []), ...(flattenedDevDependencies || [])].map(\n getFlattenedId\n );\n return version;\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 // not saved in the Version when `flattenedEdgesRef` is set, see `toObject()`.\n flattenedEdges: 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","flattenedIdsCache","Map","flattenedIdStrsCache","MAX_CACHED_FLATTENED_IDS","cachedFlattenedIds","flattenedEdgesCache","WeakMap","MAX_CACHED_FLATTENED_EDGES","cachedFlattenedEdges","countCachedFlattenedId","clear","getFlattenedId","dep","id","get","ComponentID","fromString","set","box","fromObject","byName","scope","byVersion","name","version","getFlattenedEdge","source","target","type","byTarget","byType","edge","warnedFlattenedDependenciesGetter","Version","BitObject","constructor","props","mainFile","files","log","dependencies","Dependencies","devDependencies","peerDependencies","docs","flattenedDependencies","flattenedDependenciesRef","flattenedEdges","flattenedEdgesRef","dependenciesGraphRef","packageDependencies","devPackageDependencies","peerPackageDependencies","bindingPrefix","schema","overrides","packageJsonChangedProps","_hash","hash","parents","squashed","unrelated","extensions","ExtensionDataList","fromArray","buildStatus","componentId","bitVersion","modified","origin","hidden","batchId","validateVersion","getFlattenedEdges","repo","getWithBackwardCompatibility","throws","flattenedEdgesSource","load","flattenedEdgesJson","JSON","parse","contents","toString","map","item","Array","isArray","depEdgeFromArray","depEdgeFromObject","_flattenedEdges","loadDependenciesGraph","dependenciesGraphSource","DependenciesGraph","deserialize","nonEmptyFields","forEach","field","VersionInvalid","getDependencies","deps","clonedDependencies","cloneAsString","dependency","getExtensions","sortedConfigOnly","sortById","toConfigArray","filterFunction","val","key","isEmpty","stringify","pickBy","filesToObject","logToObject","extensionDependencies","calculateHash","Ref","makeHash","Error","extensionsBitIds","Dependency","lastModified","length","date","logger","warn","stack","getLoadedFlattenedDependencies","_flattenedDependencies","ComponentIdList","flattenedDependencyIds","undefined","getFlattenedDependenciesIfLoaded","loadFlattenedDependencies","objects","setFlattenedDependenciesFromSource","loadFlattenedDependenciesSync","getFromMemory","loadSync","ids","moveFlattenedDependenciesToSource","Source","from","Buffer","getAllDependencies","depsIdsGroupedByType","getAllIds","getAllDependenciesCloned","getClone","getAllDependenciesIds","allDependencies","values","flat","getDependenciesIdsExcludeExtensions","refs","refsWithOptions","includeParents","includeArtifacts","allRefs","extractRefsFromFiles","file","push","artifacts","getRefsFromExtensions","refsWithoutParents","filter","ref","collectManyObjects","loadManyRaw","depEdgeToObject","depEdge","serialize","depEdgeObj","depEdgeToArray","depEdgeArr","sourceStr","targetStr","flattenedEdgeToSource","flattenedEdgesObj","f","flattenedEdgesBuffer","dependenciesGraphToSource","dependenciesGraph","dependenciesGraphBuffer","relativePath","test","message","username","email","toObject","cloneAsObject","toModelObjects","p","previousParents","laneId","head","validateBeforePersisting","versionStr","trace","validate","toBuffer","pretty","obj","args","getStringifyArgs","str","validateBeforePersist","contentParsed","flattenedDevDependencies","_getDependencies","getRelativePath","importSpecifiers","importSpecifier","BitIdCompIdError","relativePaths","parseFile","_getExtensions","exts","newExts","extension","extensionId","entry","ExtensionDataEntry","config","fromModelObject","LaneId","versionProps","fromComponent","component","pathNormalizeToLinux","componentOverridesData","getBitVersion","isSnap","setNewHash","sha1","v4","ignoreSharedDir","isSchemaSupport","SchemaFeature","sharedDir","isLegacy","SchemaName","Legacy","originLaneId","lane","originId","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 { 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\n// the same flattened dependencies repeat across versions. in a typical scope, hundreds of thousands of entries are a\n// few thousand unique ids. ids are immutable, so the versions share them instead of each holding its own copies.\n// an id object is looked up by its parts (scope, then name, then version). building a key string for each entry instead\n// is slower than creating a new id.\nconst flattenedIdsCache = new Map<string, Map<string, Map<string, ComponentID>>>();\nconst flattenedIdStrsCache = new Map<string, ComponentID>();\nconst MAX_CACHED_FLATTENED_IDS = 100_000;\nlet cachedFlattenedIds = 0;\nlet flattenedEdgesCache = new WeakMap<ComponentID, Map<ComponentID, Map<DepEdgeType, DepEdge>>>();\nconst MAX_CACHED_FLATTENED_EDGES = 100_000;\nlet cachedFlattenedEdges = 0;\n\nfunction countCachedFlattenedId() {\n if (cachedFlattenedIds >= MAX_CACHED_FLATTENED_IDS) {\n flattenedIdsCache.clear();\n flattenedIdStrsCache.clear();\n cachedFlattenedIds = 0;\n flattenedEdgesCache = new WeakMap();\n cachedFlattenedEdges = 0;\n }\n cachedFlattenedIds += 1;\n}\n\nfunction getFlattenedId(dep: string | Record<string, any>): ComponentID {\n if (typeof dep === 'string') {\n let id = flattenedIdStrsCache.get(dep);\n if (!id) {\n countCachedFlattenedId();\n id = ComponentID.fromString(dep);\n flattenedIdStrsCache.set(dep, id);\n }\n return id;\n }\n if (dep.box) return ComponentID.fromObject(dep as any); // legacy ids, rare. not worth another level.\n let byName = flattenedIdsCache.get(dep.scope);\n if (!byName) {\n byName = new Map();\n flattenedIdsCache.set(dep.scope, byName);\n }\n let byVersion = byName.get(dep.name);\n if (!byVersion) {\n byVersion = new Map();\n byName.set(dep.name, byVersion);\n }\n let id = byVersion.get(dep.version);\n if (!id) {\n countCachedFlattenedId();\n id = ComponentID.fromObject(dep as any);\n byVersion.set(dep.version, id);\n }\n return id;\n}\n\nfunction getFlattenedEdge(source: ComponentID, target: ComponentID, type: DepEdgeType): DepEdge {\n if (cachedFlattenedEdges >= MAX_CACHED_FLATTENED_EDGES) {\n flattenedEdgesCache = new WeakMap();\n cachedFlattenedEdges = 0;\n }\n let byTarget = flattenedEdgesCache.get(source);\n if (!byTarget) {\n byTarget = new Map();\n flattenedEdgesCache.set(source, byTarget);\n }\n let byType = byTarget.get(target);\n if (!byType) {\n byType = new Map();\n byTarget.set(target, byType);\n }\n let edge = byType.get(type);\n if (!edge) {\n cachedFlattenedEdges += 1;\n edge = { source, target, type };\n byType.set(type, edge);\n }\n return edge;\n}\n\n// the deprecated `Version.flattenedDependencies` getter warns only once per process.\nlet warnedFlattenedDependenciesGetter = false;\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\n// anything objects can be loaded from by their ref: the scope repository, or the objects received from a remote.\nexport type ObjectsLoader = { load(ref: Ref, throws?: boolean): Promise<BitObject | undefined> };\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 flattenedDependenciesRef?: Ref;\n _flattenedEdges?: DepEdge[];\n flattenedEdges?: DepEdge[];\n flattenedEdgesRef?: Ref;\n dependenciesGraphRef?: Ref;\n packageDependencies?: { [key: string]: string };\n devPackageDependencies?: { [key: string]: string };\n peerPackageDependencies?: { [key: string]: string };\n bindingPrefix: string;\n schema?: string;\n overrides: ComponentOverridesData;\n packageJsonChangedProps?: Record<string, any>;\n hash?: string;\n parents?: Ref[];\n squashed?: SquashData;\n unrelated?: ExternalHead;\n extensions?: ExtensionDataList;\n buildStatus?: BuildStatus;\n componentId?: ComponentID;\n bitVersion?: string;\n modified?: Log[];\n origin?: VersionOrigin;\n hidden?: boolean;\n batchId?: string;\n};\n\n/**\n * Represent a version model in the scope\n */\nexport default class Version extends BitObject {\n mainFile: PathLinux;\n files: Array<SourceFileModel>;\n log: Log;\n docs: Doclet[] | undefined;\n dependencies: Dependencies;\n devDependencies: Dependencies;\n peerDependencies: Dependencies;\n private _flattenedDependencies?: ComponentIdList;\n // the flattened dependencies of a parsed Version. the list is built on first access, most commands never read it.\n private flattenedDependencyIds?: ComponentID[];\n /**\n * ref to a Source object with the flattened dependencies, as a JSON array of id strings. when it's set, the Version\n * itself has no flattened dependencies, and they have to be loaded with `loadFlattenedDependencies()`.\n */\n flattenedDependenciesRef?: Ref;\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()`, which supports both formats.\n * this holds the edges of old Versions, which were saved inside the Version, before `flattenedEdgesRef` was\n * introduced. Versions that have `flattenedEdgesRef` don't save the edges here (see `toObject()`).\n */\n private flattenedEdges: DepEdge[];\n packageDependencies: { [key: string]: string };\n devPackageDependencies: { [key: string]: string };\n peerPackageDependencies: { [key: string]: string };\n bindingPrefix: string;\n schema: string | undefined;\n overrides: ComponentOverridesData;\n packageJsonChangedProps: Record<string, any>;\n _hash: string; // reason for the underscore prefix is that we already have hash as a method\n parents: Ref[];\n squashed?: SquashData; // when a component is squashed during lane-merge\n unrelated?: ExternalHead; // when a component from a lane was created with the same name/scope as main, this ref points to the component of the lane\n extensions: ExtensionDataList;\n buildStatus?: BuildStatus;\n componentId?: ComponentID; // can help debugging errors when validating Version object\n bitVersion?: string;\n modified: Log[] = []; // currently mutation could happen as a result of either \"squash\" or \"sign\".\n // where this version was made: the component id it was snapped as, and the lane it was snapped on\n // (absent on main). set on every snap and tag, see SnappingMain.addSource. it is read as data, not\n // only as a debugging aid: Scope.isPartOfLaneHistoryOrMain tells a snap of a given lane from one of\n // main by it, and ModelComponent.filterLeanLaneRefs keeps the refs a lean lane scope owns by it.\n origin?: VersionOrigin;\n hidden?: boolean; // whether the version is hidden from commands such as \"bit log\", \"bit blame\". (needed for un-meaningful snaps, such as merged-lane snap prior to the tag)\n batchId?: string; // a shared UUID for all versions created in the same snap/tag operation\n\n constructor(props: VersionProps) {\n super();\n this.mainFile = props.mainFile;\n this.files = props.files;\n this.log = props.log;\n this.dependencies = new Dependencies(props.dependencies);\n this.devDependencies = new Dependencies(props.devDependencies);\n this.peerDependencies = new Dependencies(props.peerDependencies);\n this.docs = props.docs;\n if (props.flattenedDependencies) this.flattenedDependencies = props.flattenedDependencies;\n this.flattenedDependenciesRef = props.flattenedDependenciesRef;\n this.flattenedEdges = props.flattenedEdges || [];\n this.flattenedEdgesRef = props.flattenedEdgesRef;\n this.dependenciesGraphRef = props.dependenciesGraphRef;\n this.packageDependencies = props.packageDependencies || {};\n this.devPackageDependencies = props.devPackageDependencies || {};\n this.peerPackageDependencies = props.peerPackageDependencies || {};\n this.bindingPrefix = props.bindingPrefix;\n this.schema = props.schema;\n this.overrides = props.overrides || {};\n this.packageJsonChangedProps = props.packageJsonChangedProps || {};\n // @ts-ignore yes, props.hash can be undefined here, but it gets populated as soon as Version is created\n this._hash = props.hash;\n this.parents = props.parents || [];\n this.squashed = props.squashed;\n this.unrelated = props.unrelated;\n this.extensions = props.extensions || ExtensionDataList.fromArray([]);\n this.buildStatus = props.buildStatus;\n this.componentId = props.componentId;\n this.bitVersion = props.bitVersion;\n this.modified = props.modified || [];\n this.origin = props.origin;\n this.hidden = props.hidden;\n this.batchId = props.batchId;\n this.validateVersion();\n }\n\n /**\n * use only this method to get the flattened edges (graph of flattened dependencies).\n * it's backward compatible with the previous way this was stored on the Version object itself.\n */\n async getFlattenedEdges(repo: Repository): Promise<DepEdge[]> {\n const getWithBackwardCompatibility = async (): Promise<DepEdge[]> => {\n if (this.flattenedEdgesRef) {\n // it's possible that there is a ref but the file is not there.\n // it can happen if the remote-scope uses an older version that doesn't know to collect this ref.\n // in which case, the client will get the Version object with the ref prop, but not the Source object.\n const throws = false;\n const flattenedEdgesSource = (await repo.load(this.flattenedEdgesRef, throws)) as Source | undefined;\n if (flattenedEdgesSource) {\n const flattenedEdgesJson = JSON.parse(flattenedEdgesSource.contents.toString());\n return flattenedEdgesJson.map((item) =>\n Array.isArray(item) ? Version.depEdgeFromArray(item) : Version.depEdgeFromObject(item)\n );\n }\n }\n return this.flattenedEdges || [];\n };\n\n if (!this._flattenedEdges) {\n this._flattenedEdges = await getWithBackwardCompatibility();\n }\n\n return this._flattenedEdges;\n }\n\n async loadDependenciesGraph(repo: Repository): Promise<DependenciesGraph | undefined> {\n if (!this._dependenciesGraph) {\n if (this.dependenciesGraphRef) {\n // it's possible that there is a ref but the file is not there.\n // it can happen if the remote-scope uses an older version that doesn't know to collect this ref.\n // in which case, the client will get the Version object with the ref prop, but not the Source object.\n const throws = false;\n const dependenciesGraphSource = (await repo.load(this.dependenciesGraphRef, throws)) as Source | undefined;\n if (dependenciesGraphSource) {\n this._dependenciesGraph = DependenciesGraph.deserialize(dependenciesGraphSource.contents.toString());\n }\n }\n }\n return this._dependenciesGraph;\n }\n\n validateVersion() {\n const nonEmptyFields = ['mainFile', 'files'];\n nonEmptyFields.forEach((field) => {\n if (!this[field]) {\n throw new VersionInvalid(`failed creating a version object, the field \"${field}\" can't be empty`);\n }\n });\n }\n\n id() {\n const getDependencies = (deps: Dependencies) => {\n const clonedDependencies = deps.cloneAsString();\n return clonedDependencies.map((dependency) => {\n return {\n id: dependency.id,\n };\n });\n };\n\n const getExtensions = (extensions: ExtensionDataList) => {\n const sortedConfigOnly = extensions.sortById().toConfigArray();\n return sortedConfigOnly;\n };\n\n const filterFunction = (val, key) => {\n if (\n key === 'devDependencies' ||\n key === 'extensionDependencies' ||\n key === 'devPackageDependencies' ||\n key === 'peerPackageDependencies' ||\n key === 'overrides' ||\n key === 'extensions'\n ) {\n return !isEmpty(val);\n }\n return !!val;\n };\n\n return JSON.stringify(\n pickBy(\n {\n // only what the hash needs, not `toObject()`, which serializes the whole version (e.g. a deep clone of all extensions)\n mainFile: this.mainFile,\n files: this.filesToObject(),\n log: this.logToObject(),\n dependencies: getDependencies(this.dependencies),\n devDependencies: getDependencies(this.devDependencies),\n extensionDependencies: getDependencies(this.extensionDependencies),\n packageDependencies: this.packageDependencies,\n devPackageDependencies: this.devPackageDependencies,\n peerPackageDependencies: this.peerPackageDependencies,\n bindingPrefix: this.bindingPrefix,\n overrides: this.overrides,\n extensions: getExtensions(this.extensions),\n },\n filterFunction\n )\n );\n }\n\n calculateHash(): Ref {\n return new Ref(BitObject.makeHash(this.id()));\n }\n\n hash(): Ref {\n if (!this._hash) {\n throw new Error('hash is missing from a Version object');\n }\n return new Ref(this._hash);\n }\n\n get extensionDependencies() {\n return new Dependencies(this.extensions.extensionsBitIds.map((id) => new Dependency(id, [])));\n }\n\n lastModified(): string {\n if (!this.modified || !this.modified.length) return this.log.date;\n return this.modified[this.modified.length - 1].date;\n }\n\n /**\n * @deprecated use `await version.loadFlattenedDependencies(repo)`, which supports both formats. this getter throws\n * when the flattened dependencies are stored in a separate object (`flattenedDependenciesRef`) and weren't loaded.\n * bit doesn't write this format yet, so until it does (around Oct 2027), the getter keeps working.\n */\n get flattenedDependencies(): ComponentIdList {\n if (!warnedFlattenedDependenciesGetter) {\n warnedFlattenedDependenciesGetter = true;\n logger.warn(\n `Version.flattenedDependencies is deprecated and will throw for newer versions, use \"await version.loadFlattenedDependencies(repo)\" instead`,\n new Error().stack\n );\n }\n return this.getLoadedFlattenedDependencies();\n }\n\n /**\n * the flattened dependencies, when they're stored in the Version itself or were loaded already. throws otherwise,\n * when they're stored in a separate object (`flattenedDependenciesRef`), use `loadFlattenedDependencies()`.\n */\n getLoadedFlattenedDependencies(): ComponentIdList {\n if (!this._flattenedDependencies) {\n if (this.flattenedDependenciesRef) {\n throw new Error(\n `the flattened dependencies of version ${this._hash} are stored in the object ${this.flattenedDependenciesRef.toString()}, load them with loadFlattenedDependencies()`\n );\n }\n this._flattenedDependencies = ComponentIdList.fromArray(this.flattenedDependencyIds || []);\n this.flattenedDependencyIds = undefined;\n }\n return this._flattenedDependencies;\n }\n\n /**\n * a new list is saved in the Version itself, so a ref to a separate object, if there was one, is dropped.\n */\n set flattenedDependencies(flattenedDependencies: ComponentIdList) {\n this._flattenedDependencies = flattenedDependencies;\n this.flattenedDependencyIds = undefined;\n this.flattenedDependenciesRef = undefined;\n }\n\n /**\n * the flattened dependencies, if they're available without loading a separate object. otherwise, undefined.\n */\n getFlattenedDependenciesIfLoaded(): ComponentIdList | undefined {\n if (this.flattenedDependenciesRef && !this._flattenedDependencies) return undefined;\n return this.getLoadedFlattenedDependencies();\n }\n\n /**\n * use this to get the flattened dependencies. it supports both formats: stored in the Version itself, or stored in\n * a separate Source object (`flattenedDependenciesRef`). `objects` is usually the scope repository, but can be any\n * container of the objects, such as the objects received from a remote.\n */\n async loadFlattenedDependencies(objects: ObjectsLoader): Promise<ComponentIdList> {\n if (this._flattenedDependencies || !this.flattenedDependenciesRef) return this.getLoadedFlattenedDependencies();\n const source = (await objects.load(this.flattenedDependenciesRef, false)) as Source | undefined;\n return this.setFlattenedDependenciesFromSource(source);\n }\n\n /**\n * same as `loadFlattenedDependencies()`, for code that can't be async.\n */\n loadFlattenedDependenciesSync(repo: Repository): ComponentIdList {\n if (this._flattenedDependencies || !this.flattenedDependenciesRef) return this.getLoadedFlattenedDependencies();\n // objects added during tag, or fetched from a remote without being imported, are only in memory, not on the disk.\n const source = (repo.getFromMemory(this.flattenedDependenciesRef) ||\n repo.loadSync(this.flattenedDependenciesRef, false)) as Source | undefined;\n return this.setFlattenedDependenciesFromSource(source);\n }\n\n private setFlattenedDependenciesFromSource(source?: Source): ComponentIdList {\n if (!source) {\n // unlike the flattened edges, there is no fallback here. an empty list would be wrong, not just less efficient.\n throw new Error(\n `unable to find the object ${this.flattenedDependenciesRef?.toString()} with the flattened dependencies of version ${this._hash}`\n );\n }\n const ids: string[] = JSON.parse(source.contents.toString());\n // not by the setter, which would drop the ref.\n this._flattenedDependencies = ComponentIdList.fromArray(ids.map(getFlattenedId));\n this.flattenedDependencyIds = undefined;\n return this._flattenedDependencies;\n }\n\n /**\n * moves the flattened dependencies out of this Version into a new Source object, which the caller has to persist.\n */\n moveFlattenedDependenciesToSource(): Source | undefined {\n const flattenedDependencies = this.getLoadedFlattenedDependencies();\n if (!flattenedDependencies.length) return undefined;\n const source = Source.from(Buffer.from(JSON.stringify(flattenedDependencies.map((id) => id.toString()))));\n this.flattenedDependenciesRef = source.hash();\n return source;\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 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 if (this.flattenedDependenciesRef) allRefs.push(this.flattenedDependenciesRef);\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 getFlattenedEdge(getFlattenedId(depEdgeObj.source), getFlattenedId(depEdgeObj.target), depEdgeObj.type);\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 getFlattenedEdge(getFlattenedId(sourceStr), getFlattenedId(targetStr), type as DepEdgeType);\n }\n static flattenedEdgeToSource(flattenedEdges?: DepEdge[]): Source | undefined {\n if (!flattenedEdges) return undefined;\n // const flattenedEdgesObj = flattenedEdges.map((f) => Version.depEdgeToArray(f));\n const flattenedEdgesObj = flattenedEdges.map((f) => Version.depEdgeToObject(f));\n const flattenedEdgesBuffer = Buffer.from(JSON.stringify(flattenedEdgesObj));\n return Source.from(flattenedEdgesBuffer);\n }\n static dependenciesGraphToSource(dependenciesGraph?: DependenciesGraph): Source | undefined {\n if (!dependenciesGraph) return undefined;\n const dependenciesGraphBuffer = Buffer.from(dependenciesGraph.serialize());\n return Source.from(dependenciesGraphBuffer);\n }\n\n private filesToObject() {\n return this.files?.map((file) => ({\n file: file.file.toString(),\n relativePath: file.relativePath,\n name: file.name,\n test: file.test,\n }));\n }\n\n private logToObject() {\n return {\n message: this.log.message,\n date: this.log.date,\n username: this.log.username,\n email: this.log.email,\n };\n }\n\n toObject() {\n return pickBy(\n {\n files: this.filesToObject(),\n mainFile: this.mainFile,\n bindingPrefix: this.bindingPrefix,\n schema: this.schema,\n log: this.logToObject(),\n docs: this.docs,\n dependencies: this.dependencies.cloneAsObject(),\n devDependencies: this.devDependencies.cloneAsObject(),\n flattenedDependencies: this.flattenedDependenciesRef\n ? undefined\n : this.getLoadedFlattenedDependencies().map((dep) => dep.toObject()),\n flattenedDependenciesRef: this.flattenedDependenciesRef?.toString(),\n flattenedEdges: this.flattenedEdgesRef ? undefined : this.flattenedEdges.map((f) => Version.depEdgeToObject(f)),\n flattenedEdgesRef: this.flattenedEdgesRef?.toString(),\n dependenciesGraphRef: this.dependenciesGraphRef?.toString(),\n extensions: this.extensions.toModelObjects(),\n packageDependencies: this.packageDependencies,\n devPackageDependencies: this.devPackageDependencies,\n peerPackageDependencies: this.peerPackageDependencies,\n overrides: this.overrides,\n buildStatus: this.buildStatus,\n packageJsonChangedProps: this.packageJsonChangedProps,\n parents: this.parents.map((p) => p.toString()),\n squashed: this.squashed\n ? {\n previousParents: this.squashed.previousParents.map((p) => p.toString()),\n laneId: this.squashed.laneId.toObject(),\n }\n : undefined,\n unrelated: this.unrelated\n ? { head: this.unrelated.head.toString(), laneId: this.unrelated.laneId.toObject() }\n : undefined,\n bitVersion: this.bitVersion,\n modified: this.modified,\n origin: this.origin,\n hidden: this.hidden,\n batchId: this.batchId,\n },\n (val) => !!val\n );\n }\n\n validateBeforePersisting(versionStr: string): void {\n logger.trace(`validating version object, hash: ${this.hash().hash}`);\n const version = Version.parse(versionStr, this._hash);\n version.validate();\n }\n\n toBuffer(pretty: boolean): Buffer {\n const obj = this.toObject();\n const args = getStringifyArgs(pretty);\n const str = JSON.stringify(obj, ...args);\n if (this.validateBeforePersist) this.validateBeforePersisting(str);\n return Buffer.from(str);\n }\n /**\n * used by the super class BitObject\n */\n static parse(contents: string, hash: string): Version {\n const contentParsed = JSON.parse(contents);\n const {\n mainFile,\n files,\n bindingPrefix,\n schema,\n log,\n docs,\n dependencies,\n devDependencies,\n flattenedDependencies,\n flattenedDevDependencies,\n flattenedDependenciesRef,\n flattenedEdges,\n flattenedEdgesRef,\n dependenciesGraphRef,\n devPackageDependencies,\n peerPackageDependencies,\n packageDependencies,\n overrides,\n packageJsonChangedProps,\n extensions,\n buildStatus,\n parents,\n squashed,\n unrelated,\n bitVersion,\n modified,\n origin,\n hidden,\n batchId,\n } = contentParsed;\n\n const _getDependencies = (deps = []): Dependency[] => {\n const getRelativePath = (relativePath) => {\n if (relativePath.importSpecifiers) {\n // backward compatibility. Before the massive validation was added, an item of\n // relativePath.importSpecifiers array could be missing the mainFile property, which is\n // an invalid ImportSpecifier. (instead the mainFile it had another importSpecifiers object).\n relativePath.importSpecifiers = relativePath.importSpecifiers.filter(\n (importSpecifier) => importSpecifier.mainFile\n );\n if (!relativePath.importSpecifiers.length) delete relativePath.importSpecifiers;\n }\n\n return relativePath;\n };\n\n return deps.map((dependency: any) => {\n if (!dependency.id.scope) {\n throw new BitIdCompIdError(dependency.id.name);\n }\n return new Dependency(\n ComponentID.fromObject(dependency.id),\n Array.isArray(dependency.relativePaths)\n ? dependency.relativePaths.map(getRelativePath)\n : dependency.relativePaths\n );\n });\n };\n\n 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 const version = 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 // 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 flattenedDependenciesRef: flattenedDependenciesRef ? Ref.from(flattenedDependenciesRef) : undefined,\n devPackageDependencies,\n peerPackageDependencies,\n packageDependencies,\n overrides,\n packageJsonChangedProps,\n hash,\n parents: parents ? parents.map((p) => Ref.from(p)) : [],\n squashed: squashed\n ? { previousParents: squashed.previousParents.map((r) => Ref.from(r)), laneId: new LaneId(squashed.laneId) }\n : undefined,\n unrelated: unrelated ? { head: Ref.from(unrelated.head), laneId: new LaneId(unrelated.laneId) } : undefined,\n extensions: _getExtensions(extensions),\n buildStatus,\n bitVersion,\n modified,\n origin,\n hidden,\n batchId,\n });\n // until v15, there were both flattenedDependencies and flattenedDevDependencies. since then, they're grouped into\n // flattenedDependencies. an entry is either an id string or an id object.\n version.flattenedDependencyIds = [...(flattenedDependencies || []), ...(flattenedDevDependencies || [])].map(\n getFlattenedId\n );\n return version;\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 // not saved in the Version when `flattenedEdgesRef` is set, see `toObject()`.\n flattenedEdges: 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 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":[]}
|
package/dist/objects/object.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_zlib","data","require","_legacy","_legacy2","_toolboxCrypto","_legacy3","_ref","_interopRequireDefault","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","parse","buffer","type","hash","contents","extractHeaderAndContent","types","UnknownObjectType","firstNullByteLocation","indexOf","NULL_BYTE","headers","slice","toString","split","SPACE_DELIMITER","length","BitObject","constructor","id","Error","toBuffer","pretty","refs","getType","name","getHeader","collectRefs","repo","refsCollection","objectType","objectId","addRefs","object","objs","Promise","all","map","ref","load","err","code","path","push","obj","collectRaw","loadManyRaw","asRaw","loadRaw","collect","objects","loadSync","forEach","Ref","makeHash","compress","compressWithSize","serialized","serialize","deflate","inflatedSize","byteLength","Buffer","concat","from","parseObject","fileContents","filePath","parseObjectWithSize","inflate","parseObjectOnlyIfType","typeNames","includes","parseObjectTypeFromChunk","chunk","inflateSync","finishFlush","constants","Z_SYNC_FLUSH","parseObjectType","parseSync","str","sha1","exports"],"sources":["object.ts"],"sourcesContent":["import { constants, inflateSync } from 'zlib';\n\nimport { NULL_BYTE, SPACE_DELIMITER } from '@teambit/legacy.constants';\nimport { deflate, inflate } from '@teambit/legacy.utils';\nimport { sha1 } from '@teambit/toolbox.crypto.sha1';\nimport { UnknownObjectType, typesObj as types } from '@teambit/legacy.scope';\nimport type { ObjectItem } from './object-list';\nimport Ref from './ref';\nimport type Repository from './repository';\n\nfunction parse(buffer: Buffer): BitObject {\n const { type, hash, contents } = extractHeaderAndContent(buffer);\n if (!types[type]) throw new UnknownObjectType(type);\n return types[type].parse(contents, hash);\n}\n\nfunction extractHeaderAndContent(buffer: Buffer): { type: string; hash: string; contents: Buffer } {\n const firstNullByteLocation = buffer.indexOf(NULL_BYTE);\n const headers = buffer.slice(0, firstNullByteLocation).toString();\n const [type, hash] = headers.split(SPACE_DELIMITER);\n const contents = buffer.slice(firstNullByteLocation + 1, buffer.length);\n return { type, hash, contents };\n}\n\nexport default class BitObject {\n validateBeforePersist = true; // validate the object before persisting\n id(): string | Buffer {\n throw new Error('id() was not implemented...');\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n toBuffer(pretty?: boolean): Buffer {\n throw new Error('toBuffer() was not implemented...');\n }\n\n refs(): Ref[] {\n return [];\n }\n\n getType(): string {\n return this.constructor.name;\n }\n\n getHeader(buffer: Buffer): string {\n return `${this.getType()} ${this.hash().toString()} ${buffer.toString().length}${NULL_BYTE}`;\n }\n\n async collectRefs(repo: Repository): Promise<Ref[]> {\n const refsCollection = [];\n const objectType = this.getType();\n const objectId = objectType === 'Component' ? `Component ${this.id()}` : objectType;\n\n async function addRefs(object: BitObject) {\n const refs = object.refs();\n let objs;\n try {\n objs = await Promise.all(refs.map((ref) => ref.load(repo, true)));\n } catch (err: any) {\n if (err.code === 'ENOENT') {\n throw new Error(`failed finding an object file required by ${object.constructor.name} object, originated from ${objectId}\npath: ${err.path}`);\n }\n throw err;\n }\n\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n refsCollection.push(...refs);\n await Promise.all(objs.map((obj) => addRefs(obj)));\n }\n\n await addRefs(this);\n return refsCollection;\n }\n\n async collectRaw(repo: Repository): Promise<ObjectItem[]> {\n const refs = await this.collectRefs(repo);\n return repo.loadManyRaw(refs);\n }\n\n asRaw(repo: Repository): Promise<Buffer> {\n return repo.loadRaw(this.hash());\n }\n\n collect(repo: Repository): BitObject[] {\n const objects: BitObject[] = [];\n\n function addRefs(object: BitObject) {\n const objs = object.refs().map((ref) => {\n return ref.loadSync(repo);\n });\n\n objects.push(...objs);\n objs.forEach((obj) => addRefs(obj));\n }\n\n addRefs(this);\n return objects;\n }\n\n /**\n * indexing method\n */\n hash(): Ref {\n // console.log(`sha ${sha1(this.id())}, id ${this.id()}`); // uncomment when debugging hash issues\n return new Ref(BitObject.makeHash(this.id()));\n }\n\n async compress(): Promise<Buffer> {\n return (await this.compressWithSize()).buffer;\n }\n\n /**\n * same as `compress`, but also returns the size of the uncompressed content.\n */\n async compressWithSize(): Promise<{ buffer: Buffer; inflatedSize: number }> {\n const serialized = this.serialize();\n return { buffer: await deflate(serialized), inflatedSize: serialized.byteLength };\n }\n\n serialize(): Buffer {\n const buffer = this.toBuffer();\n return Buffer.concat([Buffer.from(this.getHeader(buffer)), buffer] as unknown as Uint8Array[]);\n }\n\n /**\n * see `this.parseSync` for the sync version\n */\n static async parseObject(fileContents: Buffer, filePath?: string): Promise<BitObject> {\n return (await BitObject.parseObjectWithSize(fileContents, filePath)).object;\n }\n\n /**\n * same as `parseObject`, but also returns the size of the inflated content.\n */\n static async parseObjectWithSize(\n fileContents: Buffer,\n filePath?: string\n ): Promise<{ object: BitObject; inflatedSize: number }> {\n const buffer = await inflate(fileContents, filePath);\n return { object: parse(buffer), inflatedSize: buffer.byteLength };\n }\n\n /**\n * same as `parseObject`, however, if the type is not one of the given \"typeNames\", it returns null.\n * the performance improvement is huge compare to \"parseObject\", as it doesn't parse the object if not needed.\n */\n static async parseObjectOnlyIfType(\n fileContents: Buffer,\n typeNames: string[],\n filePath?: string\n ): Promise<BitObject | null> {\n const buffer = await inflate(fileContents, filePath);\n const { type } = extractHeaderAndContent(buffer);\n if (typeNames.includes(type)) return parse(buffer);\n return null;\n }\n\n /**\n * extract only the object type out of the first chunk of a compressed object file.\n *\n * the type is the first token of the header, which sits at the very beginning of the inflated\n * buffer, so there's no need to inflate the entire object. `Z_SYNC_FLUSH` tells zlib to return\n * whatever it managed to inflate instead of throwing on the truncated input.\n * returns null when the header is not fully contained in the given chunk, in which case the\n * caller should fall back to inflating the whole file. a header that is there but names a type\n * nothing is registered under throws instead: reading it as a type of its own would let a\n * damaged object pass for classified, and the caller acts on the inventory being complete.\n *\n * the chunk is a `Uint8Array` rather than a `Buffer` because newer `@types/node` make `Buffer`\n * generic, which no longer matches zlib's `InputType` under the typescript version our envs ship.\n */\n static parseObjectTypeFromChunk(chunk: Uint8Array): string | null {\n let buffer: Buffer;\n try {\n buffer = inflateSync(chunk, { finishFlush: constants.Z_SYNC_FLUSH });\n } catch {\n return null;\n }\n const firstNullByteLocation = buffer.indexOf(NULL_BYTE);\n if (firstNullByteLocation === -1) return null;\n const [type] = buffer.slice(0, firstNullByteLocation).toString().split(SPACE_DELIMITER);\n if (!type) return null;\n if (!types[type]) throw new UnknownObjectType(type);\n return type;\n }\n\n /**\n * same as `parseObjectTypeFromChunk`, only it gets the entire (inflated) object.\n */\n static async parseObjectType(fileContents: Buffer, filePath?: string): Promise<string> {\n const buffer = await inflate(fileContents, filePath);\n const { type } = extractHeaderAndContent(buffer);\n if (!types[type]) throw new UnknownObjectType(type);\n return type;\n }\n\n /**\n * prefer using `this.parseObject()`, unless it must be sync.\n */\n static parseSync(fileContents: Buffer): BitObject {\n // @ts-ignore todo: fix after merging #9359\n const buffer = inflateSync(fileContents);\n return parse(buffer);\n }\n\n static makeHash(str: string | Buffer): string {\n return sha1(str);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_zlib","data","require","_legacy","_legacy2","_toolboxCrypto","_legacy3","_ref","_interopRequireDefault","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","parse","buffer","type","hash","contents","extractHeaderAndContent","types","UnknownObjectType","firstNullByteLocation","indexOf","NULL_BYTE","headers","slice","toString","split","SPACE_DELIMITER","length","BitObject","constructor","id","Error","toBuffer","pretty","refs","getType","name","getHeader","collectRefs","repo","refsCollection","objectType","objectId","addRefs","object","objs","Promise","all","map","ref","load","err","code","path","push","obj","collectRaw","loadManyRaw","asRaw","loadRaw","collect","objects","loadSync","forEach","Ref","makeHash","compress","compressWithSize","serialized","serialize","deflate","inflatedSize","byteLength","Buffer","concat","from","parseObject","fileContents","filePath","parseObjectWithSize","inflate","parseObjectOnlyIfType","typeNames","includes","parseObjectTypeFromChunk","chunk","inflateSync","finishFlush","constants","Z_SYNC_FLUSH","parseObjectType","parseSync","str","sha1","exports"],"sources":["object.ts"],"sourcesContent":["import { constants, inflateSync } from 'zlib';\n\nimport { NULL_BYTE, SPACE_DELIMITER } from '@teambit/legacy.constants';\nimport { deflate, inflate } from '@teambit/legacy.utils';\nimport { sha1 } from '@teambit/toolbox.crypto.sha1';\nimport { UnknownObjectType, typesObj as types } from '@teambit/legacy.scope';\nimport type { ObjectItem } from './object-list';\nimport Ref from './ref';\nimport type Repository from './repository';\n\nfunction parse(buffer: Buffer): BitObject {\n const { type, hash, contents } = extractHeaderAndContent(buffer);\n if (!types[type]) throw new UnknownObjectType(type);\n return types[type].parse(contents, hash);\n}\n\nfunction extractHeaderAndContent(buffer: Buffer): { type: string; hash: string; contents: Buffer } {\n const firstNullByteLocation = buffer.indexOf(NULL_BYTE);\n const headers = buffer.slice(0, firstNullByteLocation).toString();\n const [type, hash] = headers.split(SPACE_DELIMITER);\n const contents = buffer.slice(firstNullByteLocation + 1, buffer.length);\n return { type, hash, contents };\n}\n\nexport default class BitObject {\n validateBeforePersist = true; // validate the object before persisting\n id(): string | Buffer {\n throw new Error('id() was not implemented...');\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n toBuffer(pretty?: boolean): Buffer {\n throw new Error('toBuffer() was not implemented...');\n }\n\n refs(): Ref[] {\n return [];\n }\n\n getType(): string {\n return this.constructor.name;\n }\n\n getHeader(buffer: Buffer): string {\n return `${this.getType()} ${this.hash().toString()} ${buffer.toString().length}${NULL_BYTE}`;\n }\n\n async collectRefs(repo: Repository): Promise<Ref[]> {\n const refsCollection: Ref[] = [];\n const objectType = this.getType();\n const objectId = objectType === 'Component' ? `Component ${this.id()}` : objectType;\n\n async function addRefs(object: BitObject) {\n const refs = object.refs();\n let objs;\n try {\n objs = await Promise.all(refs.map((ref) => ref.load(repo, true)));\n } catch (err: any) {\n if (err.code === 'ENOENT') {\n throw new Error(`failed finding an object file required by ${object.constructor.name} object, originated from ${objectId}\npath: ${err.path}`);\n }\n throw err;\n }\n\n refsCollection.push(...refs);\n await Promise.all(objs.map((obj) => addRefs(obj)));\n }\n\n await addRefs(this);\n return refsCollection;\n }\n\n async collectRaw(repo: Repository): Promise<ObjectItem[]> {\n const refs = await this.collectRefs(repo);\n return repo.loadManyRaw(refs);\n }\n\n asRaw(repo: Repository): Promise<Buffer> {\n return repo.loadRaw(this.hash());\n }\n\n collect(repo: Repository): BitObject[] {\n const objects: BitObject[] = [];\n\n function addRefs(object: BitObject) {\n const objs = object.refs().map((ref) => {\n return ref.loadSync(repo);\n });\n\n objects.push(...objs);\n objs.forEach((obj) => addRefs(obj));\n }\n\n addRefs(this);\n return objects;\n }\n\n /**\n * indexing method\n */\n hash(): Ref {\n // console.log(`sha ${sha1(this.id())}, id ${this.id()}`); // uncomment when debugging hash issues\n return new Ref(BitObject.makeHash(this.id()));\n }\n\n async compress(): Promise<Buffer> {\n return (await this.compressWithSize()).buffer;\n }\n\n /**\n * same as `compress`, but also returns the size of the uncompressed content.\n */\n async compressWithSize(): Promise<{ buffer: Buffer; inflatedSize: number }> {\n const serialized = this.serialize();\n return { buffer: await deflate(serialized), inflatedSize: serialized.byteLength };\n }\n\n serialize(): Buffer {\n const buffer = this.toBuffer();\n return Buffer.concat([Buffer.from(this.getHeader(buffer)), buffer] as unknown as Uint8Array[]);\n }\n\n /**\n * see `this.parseSync` for the sync version\n */\n static async parseObject(fileContents: Buffer, filePath?: string): Promise<BitObject> {\n return (await BitObject.parseObjectWithSize(fileContents, filePath)).object;\n }\n\n /**\n * same as `parseObject`, but also returns the size of the inflated content.\n */\n static async parseObjectWithSize(\n fileContents: Buffer,\n filePath?: string\n ): Promise<{ object: BitObject; inflatedSize: number }> {\n const buffer = await inflate(fileContents, filePath);\n return { object: parse(buffer), inflatedSize: buffer.byteLength };\n }\n\n /**\n * same as `parseObject`, however, if the type is not one of the given \"typeNames\", it returns null.\n * the performance improvement is huge compare to \"parseObject\", as it doesn't parse the object if not needed.\n */\n static async parseObjectOnlyIfType(\n fileContents: Buffer,\n typeNames: string[],\n filePath?: string\n ): Promise<BitObject | null> {\n const buffer = await inflate(fileContents, filePath);\n const { type } = extractHeaderAndContent(buffer);\n if (typeNames.includes(type)) return parse(buffer);\n return null;\n }\n\n /**\n * extract only the object type out of the first chunk of a compressed object file.\n *\n * the type is the first token of the header, which sits at the very beginning of the inflated\n * buffer, so there's no need to inflate the entire object. `Z_SYNC_FLUSH` tells zlib to return\n * whatever it managed to inflate instead of throwing on the truncated input.\n * returns null when the header is not fully contained in the given chunk, in which case the\n * caller should fall back to inflating the whole file. a header that is there but names a type\n * nothing is registered under throws instead: reading it as a type of its own would let a\n * damaged object pass for classified, and the caller acts on the inventory being complete.\n *\n * the chunk is a `Uint8Array` rather than a `Buffer` because newer `@types/node` make `Buffer`\n * generic, which no longer matches zlib's `InputType` under the typescript version our envs ship.\n */\n static parseObjectTypeFromChunk(chunk: Uint8Array): string | null {\n let buffer: Buffer;\n try {\n buffer = inflateSync(chunk, { finishFlush: constants.Z_SYNC_FLUSH });\n } catch {\n return null;\n }\n const firstNullByteLocation = buffer.indexOf(NULL_BYTE);\n if (firstNullByteLocation === -1) return null;\n const [type] = buffer.slice(0, firstNullByteLocation).toString().split(SPACE_DELIMITER);\n if (!type) return null;\n if (!types[type]) throw new UnknownObjectType(type);\n return type;\n }\n\n /**\n * same as `parseObjectTypeFromChunk`, only it gets the entire (inflated) object.\n */\n static async parseObjectType(fileContents: Buffer, filePath?: string): Promise<string> {\n const buffer = await inflate(fileContents, filePath);\n const { type } = extractHeaderAndContent(buffer);\n if (!types[type]) throw new UnknownObjectType(type);\n return type;\n }\n\n /**\n * prefer using `this.parseObject()`, unless it must be sync.\n */\n static parseSync(fileContents: Buffer): BitObject {\n // @ts-ignore todo: fix after merging #9359\n const buffer = inflateSync(fileContents);\n return parse(buffer);\n }\n\n static makeHash(str: string | Buffer): string {\n return sha1(str);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,18 +1,17 @@
|
|
|
1
|
-
import type BitObject from './object';
|
|
2
1
|
export default class BitRawObject {
|
|
3
2
|
headers: string[];
|
|
4
3
|
type: string;
|
|
5
4
|
content: Buffer;
|
|
6
5
|
parsedContent: any;
|
|
7
6
|
_ref: string;
|
|
8
|
-
constructor(buffer
|
|
7
|
+
constructor(buffer?: Buffer, ref?: string | null, type?: string | null, content?: Buffer | null, parsedContent?: any | null);
|
|
9
8
|
getParsedContent(): any;
|
|
10
9
|
getString(pretty: boolean): string | Buffer<ArrayBufferLike>;
|
|
11
10
|
set ref(ref: string);
|
|
12
11
|
get ref(): string;
|
|
13
12
|
get id(): string;
|
|
14
13
|
refs(): string[];
|
|
15
|
-
static fromDeflatedBuffer(fileContents: Buffer, ref: string | null | undefined): Promise<
|
|
14
|
+
static fromDeflatedBuffer(fileContents: Buffer, ref: string | null | undefined): Promise<BitRawObject>;
|
|
16
15
|
/**
|
|
17
16
|
* Build a real object (model) from a parsed content (can be the original parsed conents or a provided one)
|
|
18
17
|
* We use the provided version during the migration process when we change the parsed content outside
|
|
@@ -52,9 +52,7 @@ class BitRawObject {
|
|
|
52
52
|
this.content = content || contentFromBuffer;
|
|
53
53
|
this.headers = headers ? headers.split(_legacy().SPACE_DELIMITER) : undefined;
|
|
54
54
|
const typeFromHeader = this.headers ? this.headers[0] : undefined;
|
|
55
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
56
55
|
this.type = type || typeFromHeader;
|
|
57
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
58
56
|
this._ref = ref;
|
|
59
57
|
this.parsedContent = parsedContent || this.getParsedContent();
|
|
60
58
|
}
|
|
@@ -121,7 +119,6 @@ class BitRawObject {
|
|
|
121
119
|
return [];
|
|
122
120
|
}
|
|
123
121
|
static async fromDeflatedBuffer(fileContents, ref) {
|
|
124
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
125
122
|
return (0, _legacy2().inflate)(fileContents).then(buffer => new BitRawObject(buffer, ref));
|
|
126
123
|
}
|
|
127
124
|
|
|
@@ -136,7 +133,6 @@ class BitRawObject {
|
|
|
136
133
|
clone() {
|
|
137
134
|
const parsedContent = this.parsedContent ? (0, _lodash().clone)(this.parsedContent) : undefined;
|
|
138
135
|
// TODO: Should also clone the buffers (content)
|
|
139
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
140
136
|
return new BitRawObject(undefined, this._ref, this.type, this.content, parsedContent);
|
|
141
137
|
}
|
|
142
138
|
}
|